@omniviewdev/base-ui 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -241,6 +241,11 @@ declare const AlertDialogTrigger: {
241
241
  export declare interface AlertDialogTriggerProps extends Omit<ComponentPropsWithoutRef<typeof AlertDialog_2.Trigger>, 'color'>, StyledComponentProps {
242
242
  }
243
243
 
244
+ export declare function applyQueryEdit(text: string, edit: QueryEdit): {
245
+ text: string;
246
+ selection: number;
247
+ };
248
+
244
249
  export declare const AppShell: AppShellCompound;
245
250
 
246
251
  declare type AppShellCompound = typeof AppShellRoot & {
@@ -1135,6 +1140,9 @@ declare type CommandListCompound = typeof CommandListRoot & {
1135
1140
  ItemIcon: typeof CommandListItemIcon;
1136
1141
  ItemLabel: typeof CommandListItemLabel;
1137
1142
  ItemDescription: typeof CommandListItemDescription;
1143
+ ItemContent: typeof CommandListItemContent;
1144
+ ItemMeta: typeof CommandListItemMeta;
1145
+ ItemDisabledReason: typeof CommandListItemDisabledReason;
1138
1146
  ItemShortcut: typeof CommandListItemShortcut;
1139
1147
  Empty: typeof CommandListEmpty;
1140
1148
  Loading: typeof CommandListLoading;
@@ -1164,8 +1172,14 @@ declare interface CommandListInputProps extends Omit<SearchInputProps, 'value' |
1164
1172
 
1165
1173
  declare const CommandListItem: ForwardRefExoticComponent<CommandListItemProps & RefAttributes<HTMLDivElement>>;
1166
1174
 
1175
+ /** Compound item layout: label, metadata, and shortcut first, description below. */
1176
+ declare const CommandListItemContent: ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & RefAttributes<HTMLDivElement>>;
1177
+
1167
1178
  declare const CommandListItemDescription: ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & RefAttributes<HTMLSpanElement>>;
1168
1179
 
1180
+ /** Unlike descriptions, disabled reasons wrap so the explanation stays visible. */
1181
+ declare const CommandListItemDisabledReason: ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & RefAttributes<HTMLSpanElement>>;
1182
+
1169
1183
  declare const CommandListItemIcon: ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & RefAttributes<HTMLSpanElement>>;
1170
1184
 
1171
1185
  declare const CommandListItemLabel: ForwardRefExoticComponent<CommandListItemLabelProps & RefAttributes<HTMLSpanElement>>;
@@ -1174,6 +1188,8 @@ declare interface CommandListItemLabelProps extends HTMLAttributes<HTMLSpanEleme
1174
1188
  highlights?: HighlightRange[];
1175
1189
  }
1176
1190
 
1191
+ declare const CommandListItemMeta: ForwardRefExoticComponent<HTMLAttributes<HTMLSpanElement> & RefAttributes<HTMLSpanElement>>;
1192
+
1177
1193
  export declare interface CommandListItemProps extends Omit<HTMLAttributes<HTMLDivElement>, 'color'> {
1178
1194
  itemKey: Key_2;
1179
1195
  disabled?: boolean;
@@ -2019,6 +2035,23 @@ export declare interface EmptyStateProps extends HTMLAttributes<HTMLDivElement>
2019
2035
  size?: 'sm' | 'md' | 'lg';
2020
2036
  }
2021
2037
 
2038
+ /** Composition only. Hosts retain query leases, routing, rendering and all query semantics. */
2039
+ export declare function ExploreWorkspace({ title, scope, query, variables, grouping, results, saveActions, status, inspector, loading, className, }: ExploreWorkspaceProps): JSX.Element;
2040
+
2041
+ export declare interface ExploreWorkspaceProps {
2042
+ title?: string;
2043
+ scope: ReactNode;
2044
+ query: ReactNode;
2045
+ variables?: ReactNode;
2046
+ grouping?: ReactNode;
2047
+ results: ReactNode;
2048
+ saveActions?: ReactNode;
2049
+ status?: ReactNode;
2050
+ inspector?: ReactNode;
2051
+ loading?: boolean;
2052
+ className?: string;
2053
+ }
2054
+
2022
2055
  /** Any element that has a string `.value` and can receive focus. */
2023
2056
  export declare interface FieldElement {
2024
2057
  value: string;
@@ -2274,15 +2307,16 @@ export declare interface HighlightRange {
2274
2307
  end: number;
2275
2308
  }
2276
2309
 
2277
- export declare const Hotkey: <C extends HotkeyElement = "kbd">(props: TypographyBaseProps & TruncationProps & {
2278
- as?: C | undefined;
2279
- } & Omit<PropsWithoutRef<ComponentProps<C>>, "color" | "as" | "truncate" | keyof TypographyBaseProps> & {
2280
- ref?: PolymorphicRef<C> | undefined;
2281
- }) => ReactElement | null;
2310
+ export declare function Hotkey<E extends HotkeyElement = 'kbd'>({ keys, children, ...props }: HotkeyProps<E> & {
2311
+ ref?: PolymorphicRef<E>;
2312
+ }): JSX.Element;
2282
2313
 
2283
2314
  declare type HotkeyElement = 'kbd' | 'span';
2284
2315
 
2285
- export declare type HotkeyProps<E extends HotkeyElement = HotkeyElement> = PolymorphicComponentProps<E, TypographyBaseProps & TruncationProps>;
2316
+ export declare type HotkeyProps<E extends HotkeyElement = HotkeyElement> = PolymorphicComponentProps<E, TypographyBaseProps & TruncationProps & {
2317
+ /** Keys pressed together, rendered with a plus separator by default. */
2318
+ keys?: readonly string[];
2319
+ }>;
2286
2320
 
2287
2321
  export declare const IconButton: ForwardRefExoticComponent<Omit<IconButtonProps, "ref"> & RefAttributes<HTMLElement>>;
2288
2322
 
@@ -2326,6 +2360,15 @@ export declare interface ImageProps extends Omit<ImgHTMLAttributes<HTMLImageElem
2326
2360
  borderRadius?: ImageBorderRadius;
2327
2361
  }
2328
2362
 
2363
+ export declare type IndexFootprint = {
2364
+ kind: 'actual' | 'estimated';
2365
+ value: string;
2366
+ basis: string;
2367
+ } | {
2368
+ kind: 'unavailable' | 'not-applicable';
2369
+ reason: string;
2370
+ };
2371
+
2329
2372
  /** Internal props injected by StepperRoot via Children.map. */
2330
2373
  declare interface InjectedStepProps {
2331
2374
  /* Excluded from this release type: _index */
@@ -2367,6 +2410,25 @@ declare const InputRoot: ForwardRefExoticComponent<Omit<InputRootProps, "ref"> &
2367
2410
  export declare interface InputRootProps extends Field.Root.Props, StyledComponentProps {
2368
2411
  }
2369
2412
 
2413
+ export declare interface InspectorAsyncContext {
2414
+ /** Abort stops waiting for this request. The host decides whether underlying work can stop. */
2415
+ signal: AbortSignal;
2416
+ }
2417
+
2418
+ /** Presentation contracts only. The host owns planning, validation, matching and index lifecycle. */
2419
+ export declare interface InspectorDiagnostic {
2420
+ id: string;
2421
+ severity: 'info' | 'warning' | 'error';
2422
+ message: string;
2423
+ }
2424
+
2425
+ export declare interface InspectorEvidence {
2426
+ label: string;
2427
+ kind: 'actual' | 'estimated' | 'unavailable';
2428
+ value: string;
2429
+ basis: string;
2430
+ }
2431
+
2370
2432
  export declare function isBuiltInThemeId(id: string): id is BuiltInThemeId;
2371
2433
 
2372
2434
  /** True if the `year` is a leap year (Gregorian calendar). */
@@ -2887,6 +2949,428 @@ export declare interface ProgressProps extends Omit<HTMLAttributes<HTMLDivElemen
2887
2949
  size?: ComponentSize;
2888
2950
  }
2889
2951
 
2952
+ /** Both drafts are retained. Only an explicit successful host conversion changes mode. */
2953
+ export declare function QueryAuthoring({ value, onChange, contextKey, fields, request, renderEditor, toBuilder, toCode, onRun, onCancel, onRefresh, onClear, running, disabled, availability, state, scopes, scope, onScopeChange, inputProps, builderProps, labels, actions, children, className, }: QueryAuthoringProps): JSX.Element;
2954
+
2955
+ export declare interface QueryAuthoringLabels {
2956
+ code?: string;
2957
+ builder?: string;
2958
+ run?: string;
2959
+ clear?: string;
2960
+ }
2961
+
2962
+ export declare interface QueryAuthoringProps {
2963
+ value: QueryAuthoringValue;
2964
+ onChange: (value: QueryAuthoringValue) => void;
2965
+ contextKey: string;
2966
+ fields: QueryBuilderProps['fields'];
2967
+ request?: QueryLanguageService;
2968
+ /** Render the host's code editor without introducing a base-ui/editor dependency. */
2969
+ renderEditor?: (props: QueryEditorRenderProps) => ReactNode;
2970
+ toBuilder?: (document: QueryDocument, context: QueryConversionContext) => Promise<QueryConversionResult<QueryGroup>>;
2971
+ toCode?: (builder: QueryGroup, context: QueryConversionContext) => Promise<QueryConversionResult<string>>;
2972
+ onRun?: (value: QueryAuthoringValue) => void;
2973
+ onCancel?: () => void;
2974
+ onRefresh?: () => void;
2975
+ onClear?: () => void;
2976
+ running?: boolean;
2977
+ disabled?: boolean;
2978
+ availability?: QueryAvailability;
2979
+ state?: QueryPresentationState;
2980
+ scopes?: readonly QueryScopeOption[];
2981
+ scope?: string;
2982
+ onScopeChange?: (scope: string) => void;
2983
+ inputProps?: Pick<QueryInputProps, 'rows' | 'label' | 'placeholder' | 'debounceMs' | 'maxSuggestions'>;
2984
+ builderProps?: Omit<QueryBuilderProps, 'value' | 'onChange' | 'fields' | 'contextKey' | 'availability' | 'disabled'>;
2985
+ labels?: QueryAuthoringLabels;
2986
+ actions?: ReactNode;
2987
+ children?: ReactNode;
2988
+ className?: string;
2989
+ }
2990
+
2991
+ export declare interface QueryAuthoringValue {
2992
+ mode: 'code' | 'builder';
2993
+ code: QueryDocument;
2994
+ builder: QueryGroup;
2995
+ }
2996
+
2997
+ export declare interface QueryAvailability {
2998
+ status: 'ready' | 'loading' | 'error' | 'denied' | 'unavailable';
2999
+ message?: string;
3000
+ }
3001
+
3002
+ export declare function QueryBuilder({ value, onChange, fields, contextKey, disabled, availability, allowNegation, diagnostics, analyze, preview, explanation, examples, className, }: QueryBuilderProps): JSX.Element;
3003
+
3004
+ export declare interface QueryBuilderAnalysis {
3005
+ status: QueryServiceStatus;
3006
+ message?: string;
3007
+ diagnostics: readonly QueryBuilderDiagnostic[];
3008
+ preview?: string;
3009
+ explanation?: string;
3010
+ }
3011
+
3012
+ export declare interface QueryBuilderDiagnostic {
3013
+ nodeId?: string;
3014
+ message: string;
3015
+ severity: 'error' | 'warning' | 'info';
3016
+ }
3017
+
3018
+ export declare interface QueryBuilderProps {
3019
+ value: QueryGroup;
3020
+ onChange: (value: QueryGroup) => void;
3021
+ fields: readonly QueryField[];
3022
+ contextKey?: string;
3023
+ disabled?: boolean;
3024
+ availability?: QueryAvailability;
3025
+ diagnostics?: readonly QueryBuilderDiagnostic[];
3026
+ /** Host-authorized operation. Negation is whole-clause/group NOT, never inequality. */
3027
+ allowNegation?: boolean;
3028
+ analyze?: (value: QueryGroup, context: QueryConversionContext) => Promise<QueryBuilderAnalysis>;
3029
+ preview?: string;
3030
+ explanation?: string;
3031
+ examples?: readonly {
3032
+ label: string;
3033
+ description: string;
3034
+ value: QueryGroup;
3035
+ }[];
3036
+ className?: string;
3037
+ }
3038
+
3039
+ export declare interface QueryClause {
3040
+ kind: 'clause';
3041
+ id: string;
3042
+ field?: string;
3043
+ operator?: string;
3044
+ value?: QueryValue;
3045
+ negated?: boolean;
3046
+ }
3047
+
3048
+ export declare interface QueryCompletion {
3049
+ id: string;
3050
+ label: string;
3051
+ kind: 'field' | 'operator' | 'value' | 'parameter' | 'function';
3052
+ type?: string;
3053
+ description?: string;
3054
+ /** Presentation-only candidate matching and host relevance order. */
3055
+ filterText?: string;
3056
+ sortText?: string;
3057
+ /** Snippets use Monaco/LSP tab-stop syntax; plain edits are the default. */
3058
+ insertTextFormat?: 'plain' | 'snippet';
3059
+ /** Host-provided union/branch applicability. Never inferred by the component. */
3060
+ condition?: string;
3061
+ detail?: string;
3062
+ disabledReason?: string;
3063
+ edit: QueryEdit;
3064
+ }
3065
+
3066
+ export declare interface QueryConversionContext {
3067
+ contextKey: string;
3068
+ signal: AbortSignal;
3069
+ }
3070
+
3071
+ export declare type QueryConversionResult<T> = {
3072
+ status: 'ready';
3073
+ value: T;
3074
+ message?: string;
3075
+ } | {
3076
+ status: 'unsupported' | 'error' | 'denied' | 'unavailable';
3077
+ message: string;
3078
+ };
3079
+
3080
+ export declare interface QueryDiagnostic {
3081
+ id: string;
3082
+ severity: 'error' | 'warning' | 'info' | 'hint';
3083
+ message: string;
3084
+ range: QueryRange;
3085
+ fix?: QueryEdit;
3086
+ }
3087
+
3088
+ export declare interface QueryDocument {
3089
+ text: string;
3090
+ version: number;
3091
+ /** Optional editor-owned identity; authoring adapters must isolate distinct models. */
3092
+ uri?: string;
3093
+ }
3094
+
3095
+ export declare interface QueryEdit {
3096
+ range: QueryRange;
3097
+ text: string;
3098
+ }
3099
+
3100
+ /** Dependency-injected code surface. Base UI owns controls and drafts, never Monaco. */
3101
+ export declare interface QueryEditorRenderProps {
3102
+ document: QueryDocument;
3103
+ onChange: (text: string) => void;
3104
+ contextKey: string;
3105
+ request?: QueryLanguageService;
3106
+ availability?: QueryAvailability;
3107
+ disabled?: boolean;
3108
+ onSubmit?: () => void;
3109
+ label?: string;
3110
+ placeholder?: string;
3111
+ debounceMs?: number;
3112
+ maxSuggestions?: number;
3113
+ }
3114
+
3115
+ export declare interface QueryExplain {
3116
+ queryLabel: string;
3117
+ scope: string;
3118
+ coverage: string;
3119
+ freshness: string;
3120
+ selectionReason: string;
3121
+ measuredAt?: string;
3122
+ stages: readonly {
3123
+ id: string;
3124
+ label: string;
3125
+ description: string;
3126
+ indexIds: readonly string[];
3127
+ work: readonly InspectorEvidence[];
3128
+ }[];
3129
+ diagnostics: readonly InspectorDiagnostic[];
3130
+ }
3131
+
3132
+ export declare function QueryExplainPanel({ explain, state, message }: QueryExplainPanelProps): JSX.Element;
3133
+
3134
+ export declare interface QueryExplainPanelProps {
3135
+ explain?: QueryExplain;
3136
+ state?: 'ready' | 'loading' | 'denied' | 'unavailable';
3137
+ message?: string;
3138
+ }
3139
+
3140
+ export declare interface QueryField {
3141
+ id: string;
3142
+ label: string;
3143
+ type: string;
3144
+ description?: string;
3145
+ condition?: string;
3146
+ disabledReason?: string;
3147
+ operators: readonly QueryOperator[];
3148
+ }
3149
+
3150
+ export declare interface QueryGroup {
3151
+ kind: 'group';
3152
+ id: string;
3153
+ combinator: 'and' | 'or';
3154
+ children: readonly QueryNode[];
3155
+ negated?: boolean;
3156
+ }
3157
+
3158
+ export declare interface QueryHoverResponse {
3159
+ documentVersion: number;
3160
+ contextKey: string;
3161
+ status: QueryServiceStatus;
3162
+ message?: string;
3163
+ /** Untrusted Markdown documentation for a checked source range. */
3164
+ hover?: {
3165
+ range: QueryRange;
3166
+ contents: string;
3167
+ };
3168
+ }
3169
+
3170
+ export declare type QueryHoverService = (request: QueryLanguageRequest) => Promise<QueryHoverResponse>;
3171
+
3172
+ /** Compact native editing mechanics: no CEL parser, schema walker, Monaco model or worker. */
3173
+ export declare function QueryInput({ document, onChange, contextKey, request, onSubmit, label, placeholder, disabled, readOnly, availability, debounceMs, maxSuggestions, rows, className, }: QueryInputProps): JSX.Element;
3174
+
3175
+ export declare interface QueryInputProps {
3176
+ document: QueryDocument;
3177
+ onChange: (text: string) => void;
3178
+ contextKey: string;
3179
+ request?: QueryLanguageService;
3180
+ onSubmit?: () => void;
3181
+ label?: string;
3182
+ placeholder?: string;
3183
+ disabled?: boolean;
3184
+ readOnly?: boolean;
3185
+ availability?: QueryAvailability;
3186
+ debounceMs?: number;
3187
+ /** Bounded visible suggestions; the service must also enforce its own response limit. */
3188
+ maxSuggestions?: number;
3189
+ rows?: number;
3190
+ className?: string;
3191
+ }
3192
+
3193
+ export declare interface QueryLanguageRequest {
3194
+ document: QueryDocument;
3195
+ cursor: {
3196
+ offset: number;
3197
+ unit: 'utf8-byte';
3198
+ };
3199
+ contextKey: string;
3200
+ signal: AbortSignal;
3201
+ }
3202
+
3203
+ export declare interface QueryLanguageResponse {
3204
+ documentVersion: number;
3205
+ contextKey: string;
3206
+ status: QueryServiceStatus;
3207
+ message?: string;
3208
+ completions: readonly QueryCompletion[];
3209
+ diagnostics: readonly QueryDiagnostic[];
3210
+ /** Suggestions are bounded observations, not exhaustive inventory/schema facts. */
3211
+ incomplete?: boolean;
3212
+ }
3213
+
3214
+ export declare type QueryLanguageService = (request: QueryLanguageRequest) => Promise<QueryLanguageResponse>;
3215
+
3216
+ export declare type QueryNode = QueryClause | QueryGroup;
3217
+
3218
+ export declare interface QueryOperator {
3219
+ id: string;
3220
+ label: string;
3221
+ description?: string;
3222
+ /** Omit for host-defined state clauses such as present/absent/null. */
3223
+ value?: QueryValueDefinition;
3224
+ disabledReason?: string;
3225
+ }
3226
+
3227
+ export declare interface QueryOptionRequest {
3228
+ contextKey: string;
3229
+ search: string;
3230
+ signal: AbortSignal;
3231
+ }
3232
+
3233
+ export declare interface QueryOptionResponse {
3234
+ contextKey: string;
3235
+ status: QueryServiceStatus;
3236
+ options: readonly QueryValueOption[];
3237
+ message?: string;
3238
+ incomplete?: boolean;
3239
+ }
3240
+
3241
+ export declare interface QueryPresentationState {
3242
+ status: 'idle' | 'loading' | 'live' | 'snapshot' | 'stale' | 'partial' | 'error' | 'denied' | 'unavailable';
3243
+ message: string;
3244
+ detail?: ReactNode;
3245
+ }
3246
+
3247
+ /** Local presentation contracts, not a host wire protocol. Source offsets are zero-based,
3248
+ * half-open UTF-8 byte offsets. The adapter converts DOM UTF-16 offsets explicitly. */
3249
+ export declare interface QueryRange {
3250
+ start: number;
3251
+ end: number;
3252
+ unit: 'utf8-byte';
3253
+ }
3254
+
3255
+ export declare interface QueryScopeOption {
3256
+ id: string;
3257
+ label: string;
3258
+ description?: string;
3259
+ disabledReason?: string;
3260
+ }
3261
+
3262
+ export declare type QueryServiceStatus = 'ready' | 'empty' | 'error' | 'denied' | 'unavailable';
3263
+
3264
+ export declare interface QuerySignatureResponse {
3265
+ documentVersion: number;
3266
+ contextKey: string;
3267
+ status: QueryServiceStatus;
3268
+ message?: string;
3269
+ signature?: {
3270
+ label: string;
3271
+ documentation?: string;
3272
+ parameters: readonly {
3273
+ label: string;
3274
+ documentation?: string;
3275
+ }[];
3276
+ activeParameter: number;
3277
+ };
3278
+ }
3279
+
3280
+ export declare type QuerySignatureService = (request: QueryLanguageRequest) => Promise<QuerySignatureResponse>;
3281
+
3282
+ /** Numeric and timestamp drafts remain text. Host validation/admission owns conversion,
3283
+ * exactness, ranges, timezone policy, nullability, defaults and execution binding. */
3284
+ export declare type QueryValue = {
3285
+ kind: 'string' | 'integer' | 'number' | 'timestamp';
3286
+ value: string;
3287
+ } | {
3288
+ kind: 'boolean';
3289
+ value: boolean;
3290
+ } | {
3291
+ kind: 'enum';
3292
+ value: string;
3293
+ } | {
3294
+ kind: 'list';
3295
+ value: readonly string[];
3296
+ } | {
3297
+ kind: 'record';
3298
+ value: Readonly<Record<string, QueryValue | undefined>>;
3299
+ };
3300
+
3301
+ /** Host-defined compound inputs preserve correlations (for example a tag key/value
3302
+ * pair). Their field IDs are opaque and do not imply paths or query semantics. */
3303
+ export declare type QueryValueDefinition = QueryValueDefinitionBase & ({
3304
+ kind: Exclude<QueryValue['kind'], 'record'>;
3305
+ } | {
3306
+ kind: 'record';
3307
+ fields: readonly {
3308
+ id: string;
3309
+ label: string;
3310
+ definition: QueryValueDefinition;
3311
+ required?: boolean;
3312
+ }[];
3313
+ });
3314
+
3315
+ declare interface QueryValueDefinitionBase {
3316
+ placeholder?: string;
3317
+ description?: string;
3318
+ options?: readonly QueryValueOption[];
3319
+ loadOptions?: (request: QueryOptionRequest) => Promise<QueryOptionResponse>;
3320
+ /** Host explanation of supported constraints, rendered without reimplementing validation. */
3321
+ constraint?: string;
3322
+ }
3323
+
3324
+ /** Renders host-declared types. Numeric drafts never pass through Number/parseInt. */
3325
+ export declare function QueryValueInput({ definition, value, onChange, contextKey, label, disabled, sensitive, required, error, }: QueryValueInputProps): JSX.Element;
3326
+
3327
+ export declare interface QueryValueInputProps {
3328
+ definition: QueryValueDefinition;
3329
+ value?: QueryValue;
3330
+ onChange: (value: QueryValue | undefined) => void;
3331
+ contextKey?: string;
3332
+ label?: string;
3333
+ disabled?: boolean;
3334
+ sensitive?: boolean;
3335
+ required?: boolean;
3336
+ error?: string;
3337
+ }
3338
+
3339
+ export declare interface QueryValueOption {
3340
+ id: string;
3341
+ label: string;
3342
+ value: string;
3343
+ description?: string;
3344
+ disabledReason?: string;
3345
+ }
3346
+
3347
+ export declare interface QueryVariable {
3348
+ id: string;
3349
+ label: string;
3350
+ definition: QueryValueDefinition;
3351
+ description?: string;
3352
+ required?: boolean;
3353
+ sensitive?: boolean;
3354
+ disabledReason?: string;
3355
+ defaultValue?: QueryValue;
3356
+ error?: string;
3357
+ }
3358
+
3359
+ /** Editing drafts only: the host owns defaults, constraints, dependency cycles and binding.
3360
+ * Values never interpolate into query text and sensitive values are never serialized here. */
3361
+ export declare function QueryVariables({ variables, value, onChange, contextKey, availability, disabled, diagnostics, }: QueryVariablesProps): JSX.Element;
3362
+
3363
+ export declare interface QueryVariablesProps {
3364
+ variables: readonly QueryVariable[];
3365
+ value: Readonly<Record<string, QueryValue | undefined>>;
3366
+ onChange: (value: Readonly<Record<string, QueryValue | undefined>>) => void;
3367
+ /** Include dependency/scope/permission revisions to cancel outdated value lookups. */
3368
+ contextKey?: string;
3369
+ availability?: QueryAvailability;
3370
+ disabled?: boolean;
3371
+ diagnostics?: readonly string[];
3372
+ }
3373
+
2890
3374
  export declare const Quote: <C extends QuoteElement = "q">(props: TypographyBaseProps & TruncationProps & {
2891
3375
  as?: C | undefined;
2892
3376
  } & Omit<PropsWithoutRef<ComponentProps<C>>, "color" | "as" | "truncate" | keyof TypographyBaseProps> & {
@@ -2970,6 +3454,118 @@ export declare interface RegisteredTheme extends ThemeSummary {
2970
3454
  definition: ThemeDefinition;
2971
3455
  }
2972
3456
 
3457
+ export declare type RelationshipCardinality = 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
3458
+
3459
+ export declare interface RelationshipCatalog {
3460
+ sourceTypes: readonly RelationshipTypeOption[];
3461
+ targetTypes: readonly RelationshipTypeOption[];
3462
+ scopeMappings: readonly {
3463
+ id: string;
3464
+ label: string;
3465
+ description: string;
3466
+ state: 'available' | 'denied' | 'unavailable';
3467
+ }[];
3468
+ /** Host-supplied operators; compatibility is validated by the host, never inferred here. */
3469
+ operators: readonly {
3470
+ id: string;
3471
+ label: string;
3472
+ description: string;
3473
+ }[];
3474
+ }
3475
+
3476
+ export declare interface RelationshipCondition {
3477
+ id: string;
3478
+ sourceFieldId: string;
3479
+ operatorId: string;
3480
+ targetFieldId: string;
3481
+ }
3482
+
3483
+ export declare interface RelationshipEndpoint {
3484
+ label: string;
3485
+ /** Opaque host navigation target, not an inferred identity. Omit for protected endpoints. */
3486
+ navigationId?: string;
3487
+ }
3488
+
3489
+ export declare interface RelationshipFieldOption {
3490
+ id: string;
3491
+ label: string;
3492
+ type: string;
3493
+ }
3494
+
3495
+ export declare function RelationshipPreview({ preview, state, message, onNavigate, }: RelationshipPreviewProps): JSX.Element;
3496
+
3497
+ export declare interface RelationshipPreviewData {
3498
+ scope: string;
3499
+ coverage: string;
3500
+ limit: number;
3501
+ truncated: boolean;
3502
+ summary: string;
3503
+ diagnostics: readonly InspectorDiagnostic[];
3504
+ edges: readonly {
3505
+ id: string;
3506
+ source: RelationshipEndpoint;
3507
+ target?: RelationshipEndpoint;
3508
+ state: 'matched' | 'unmatched' | 'ambiguous' | 'denied' | 'unavailable';
3509
+ detail: string;
3510
+ provenance: {
3511
+ origin: 'provider' | 'user';
3512
+ ruleLabel: string;
3513
+ condition: string;
3514
+ scopeMapping: string;
3515
+ };
3516
+ }[];
3517
+ }
3518
+
3519
+ export declare interface RelationshipPreviewProps {
3520
+ preview?: RelationshipPreviewData;
3521
+ state?: 'ready' | 'loading' | 'denied' | 'unavailable';
3522
+ message?: string;
3523
+ onNavigate?: (navigationId: string) => void;
3524
+ }
3525
+
3526
+ export declare interface RelationshipRuleDraft {
3527
+ id: string;
3528
+ name: string;
3529
+ sourceTypeId: string;
3530
+ targetTypeId: string;
3531
+ scopeMappingId: string;
3532
+ cardinality: RelationshipCardinality;
3533
+ conditions: readonly RelationshipCondition[];
3534
+ enabled: boolean;
3535
+ origin: 'user' | 'provider';
3536
+ }
3537
+
3538
+ export declare function RelationshipRuleEditor({ draft, catalog, onChange, onSave, onPreview, onSetEnabled, validation, preview, previewIsCurrent, onNavigate, state, message, }: RelationshipRuleEditorProps): JSX.Element;
3539
+
3540
+ export declare interface RelationshipRuleEditorProps {
3541
+ draft: RelationshipRuleDraft;
3542
+ catalog: RelationshipCatalog;
3543
+ onChange: (draft: RelationshipRuleDraft) => void;
3544
+ onSave: (draft: RelationshipRuleDraft, context: InspectorAsyncContext) => Promise<void>;
3545
+ onPreview: (draft: RelationshipRuleDraft, context: InspectorAsyncContext) => Promise<void>;
3546
+ onSetEnabled: (enabled: boolean, context: InspectorAsyncContext) => Promise<void>;
3547
+ /** Must describe the current controlled draft. Unknown/pending drafts cannot be saved. */
3548
+ validation: RelationshipValidation;
3549
+ preview?: RelationshipPreviewData;
3550
+ /** The host confirms the preview belongs to this exact draft/access context. Defaults to false. */
3551
+ previewIsCurrent?: boolean;
3552
+ onNavigate?: (navigationId: string) => void;
3553
+ state?: 'ready' | 'loading' | 'denied' | 'unavailable';
3554
+ message?: string;
3555
+ }
3556
+
3557
+ export declare interface RelationshipTypeOption {
3558
+ id: string;
3559
+ label: string;
3560
+ provider: string;
3561
+ fields: readonly RelationshipFieldOption[];
3562
+ }
3563
+
3564
+ export declare interface RelationshipValidation {
3565
+ state: 'unchecked' | 'pending' | 'valid' | 'invalid' | 'denied' | 'unavailable';
3566
+ diagnostics: readonly InspectorDiagnostic[];
3567
+ }
3568
+
2973
3569
  export declare type ReorderMeta = {
2974
3570
  id: TabId;
2975
3571
  from: number;
@@ -2997,6 +3593,200 @@ export declare interface ResizableSplitPaneProps extends HTMLAttributes<HTMLDivE
2997
3593
  children: [ReactNode, ReactNode];
2998
3594
  }
2999
3595
 
3596
+ export declare function ResourceGroupingControls({ fields, value, onChange, loading, error, disabled, className, }: ResourceGroupingControlsProps): JSX.Element;
3597
+
3598
+ export declare interface ResourceGroupingControlsProps {
3599
+ fields: readonly ResourceGroupingField[];
3600
+ value: ResourceGroupingValue;
3601
+ onChange: (value: ResourceGroupingValue) => void;
3602
+ loading?: boolean;
3603
+ error?: string;
3604
+ disabled?: boolean;
3605
+ className?: string;
3606
+ }
3607
+
3608
+ export declare interface ResourceGroupingField {
3609
+ id: string;
3610
+ label: string;
3611
+ groupable: boolean;
3612
+ splittable: boolean;
3613
+ reason?: string;
3614
+ applicability?: string;
3615
+ }
3616
+
3617
+ export declare interface ResourceGroupingValue {
3618
+ groupBy: readonly string[];
3619
+ splitBy: readonly string[];
3620
+ }
3621
+
3622
+ export declare type ResourceIndexAction = {
3623
+ kind: 'create';
3624
+ definition: ResourceIndexDefinition;
3625
+ } | {
3626
+ kind: 'rebuild' | 'drop';
3627
+ indexId: string;
3628
+ } | {
3629
+ kind: 'cancel';
3630
+ operationId: string;
3631
+ };
3632
+
3633
+ export declare interface ResourceIndexAdvice {
3634
+ id: string;
3635
+ viewLabel: string;
3636
+ queryLabel: string;
3637
+ proposalId?: string;
3638
+ indexIds: readonly string[];
3639
+ recommendation: string;
3640
+ confidence: string;
3641
+ basis: string;
3642
+ benefit: InspectorEvidence;
3643
+ memory: IndexFootprint;
3644
+ disk: IndexFootprint;
3645
+ writeCost: InspectorEvidence;
3646
+ beforeAfter?: {
3647
+ before: string;
3648
+ after: string;
3649
+ basis: string;
3650
+ };
3651
+ }
3652
+
3653
+ export declare interface ResourceIndexDefinition {
3654
+ id: string;
3655
+ label: string;
3656
+ provider: string;
3657
+ resourceType: string;
3658
+ scope: string;
3659
+ path: string;
3660
+ valueType: string;
3661
+ schema: string;
3662
+ storage: 'memory' | 'persisted';
3663
+ dataPolicy: string;
3664
+ }
3665
+
3666
+ export declare interface ResourceIndexInventory extends ResourceIndexDefinition {
3667
+ kind: 'metadata' | 'document';
3668
+ state: 'ready' | 'building' | 'catching-up' | 'stale' | 'failed' | 'canceled' | 'unavailable' | 'denied';
3669
+ coverage: string;
3670
+ freshness: string;
3671
+ generation?: string;
3672
+ memory: IndexFootprint;
3673
+ disk: IndexFootprint;
3674
+ quota?: string;
3675
+ references: readonly {
3676
+ id: string;
3677
+ label: string;
3678
+ queryLabel: string;
3679
+ }[];
3680
+ fallback: string;
3681
+ failure?: string;
3682
+ operation?: {
3683
+ id: string;
3684
+ label: string;
3685
+ progress?: number;
3686
+ cancellable: boolean;
3687
+ };
3688
+ /** Host-authorized actions; absence never means allowed. */
3689
+ actions: readonly ('rebuild' | 'drop')[];
3690
+ }
3691
+
3692
+ export declare function ResourceIndexManager({ indexes, proposals, advice, onAction, state, message, }: ResourceIndexManagerProps): JSX.Element;
3693
+
3694
+ export declare interface ResourceIndexManagerProps {
3695
+ indexes: readonly ResourceIndexInventory[];
3696
+ /** Host-admitted create definitions, including schema/scope/storage/data policy. */
3697
+ proposals: readonly ResourceIndexDefinition[];
3698
+ advice: readonly ResourceIndexAdvice[];
3699
+ onAction: (action: ResourceIndexAction, context: InspectorAsyncContext) => Promise<void>;
3700
+ state?: 'ready' | 'loading' | 'denied' | 'unavailable';
3701
+ message?: string;
3702
+ }
3703
+
3704
+ export declare interface ResourceNavigationResult<TResource> {
3705
+ label: string;
3706
+ provenance: string;
3707
+ resource: TResource;
3708
+ disabledReason?: string;
3709
+ }
3710
+
3711
+ export declare function ResourceResultNavigation<TResource, TContext>({ result, context, requestKey, onNavigate, }: ResourceResultNavigationProps<TResource, TContext>): JSX.Element;
3712
+
3713
+ export declare interface ResourceResultNavigationProps<TResource, TContext> {
3714
+ result: ResourceNavigationResult<TResource>;
3715
+ /** Passed intact to the host so opening a drawer/route can retain the originating workspace. */
3716
+ context: TContext;
3717
+ /** Host destination/context generation. Change to cancel a pending navigation; object identity is irrelevant. */
3718
+ requestKey: string | number;
3719
+ onNavigate: (result: ResourceNavigationResult<TResource>, context: TContext, signal: AbortSignal) => Promise<WorkspaceActionResult>;
3720
+ }
3721
+
3722
+ export declare function ResourceScopePicker({ targets, value, onChange, loading, error, disabled, className, }: ResourceScopePickerProps): JSX.Element;
3723
+
3724
+ export declare interface ResourceScopePickerProps {
3725
+ targets: readonly ResourceScopeTarget[];
3726
+ value: readonly ResourceScopeSelection[];
3727
+ onChange: (value: readonly ResourceScopeSelection[]) => void;
3728
+ loading?: boolean;
3729
+ error?: string;
3730
+ disabled?: boolean;
3731
+ className?: string;
3732
+ }
3733
+
3734
+ /** Empty/missing dimensions stay unresolved; this control never broadens them. */
3735
+ export declare interface ResourceScopeSelection {
3736
+ targetId: string;
3737
+ dimensions: Readonly<Record<string, readonly string[] | 'any'>>;
3738
+ }
3739
+
3740
+ /** Host catalog identifiers are opaque; display labels never become resource identity. */
3741
+ export declare interface ResourceScopeTarget {
3742
+ id: string;
3743
+ provider: string;
3744
+ connection: string;
3745
+ resourceType: string;
3746
+ description?: string;
3747
+ status?: 'ready' | 'loading' | 'partial' | 'denied' | 'offline' | 'unsupported';
3748
+ reason?: string;
3749
+ dimensions?: readonly {
3750
+ id: string;
3751
+ label: string;
3752
+ allowAny?: boolean;
3753
+ values: readonly {
3754
+ id: string;
3755
+ label: string;
3756
+ disabledReason?: string;
3757
+ }[];
3758
+ }[];
3759
+ }
3760
+
3761
+ /** The host supplies already bounded/ranked results; no client filtering or indexing. */
3762
+ export declare interface ResourceSearchItem<TPayload> {
3763
+ id: string;
3764
+ kind: 'command' | 'setting' | 'navigation' | 'resource';
3765
+ label: string;
3766
+ description?: string;
3767
+ provenance?: string;
3768
+ disabledReason?: string;
3769
+ payload: TPayload;
3770
+ decoration?: ReactNode;
3771
+ }
3772
+
3773
+ export declare function ResourceSearchResults<TPayload>({ query, onQueryChange, items, onActivate, onDismiss, loading, error, status, scopeStatus, stale, }: ResourceSearchResultsProps<TPayload>): JSX.Element;
3774
+
3775
+ export declare interface ResourceSearchResultsProps<TPayload> {
3776
+ query: string;
3777
+ onQueryChange: (query: string) => void;
3778
+ items: readonly ResourceSearchItem<TPayload>[];
3779
+ onActivate: (item: ResourceSearchItem<TPayload>, signal: AbortSignal) => Promise<WorkspaceActionResult>;
3780
+ onDismiss?: () => void;
3781
+ loading?: boolean;
3782
+ error?: string;
3783
+ /** Host-supplied permission, freshness, partial-source and bounded-result explanations. */
3784
+ status?: ReactNode;
3785
+ scopeStatus?: ReactNode;
3786
+ /** The host can disable older results while replacing its query generation. */
3787
+ stale?: boolean;
3788
+ }
3789
+
3000
3790
  /** A span value can be a plain number or a per-breakpoint responsive object. */
3001
3791
  export declare type ResponsiveSpan = number | Partial<Record<GridBreakpoint, number>>;
3002
3792
 
@@ -3053,6 +3843,66 @@ export declare interface RowListRootProps extends ListRootProps {
3053
3843
  onSortChange?: (sort: SortState) => void;
3054
3844
  }
3055
3845
 
3846
+ /** Presentation requests only: the host owns document schemas, semantics and persistence. */
3847
+ export declare type SavedResourceAction<TDraft> = {
3848
+ type: 'create';
3849
+ name: string;
3850
+ draft: TDraft;
3851
+ } | {
3852
+ type: 'rename';
3853
+ id: string;
3854
+ name: string;
3855
+ } | {
3856
+ type: 'select';
3857
+ id: string | null;
3858
+ } | {
3859
+ type: 'save';
3860
+ id: string;
3861
+ name: string;
3862
+ draft: TDraft;
3863
+ } | {
3864
+ type: 'reset';
3865
+ id: string | null;
3866
+ } | {
3867
+ type: 'delete';
3868
+ id: string;
3869
+ } | {
3870
+ type: 'import';
3871
+ document: string;
3872
+ } | {
3873
+ type: 'export';
3874
+ id: string;
3875
+ };
3876
+
3877
+ export declare interface SavedResourceItem {
3878
+ id: string;
3879
+ name: string;
3880
+ status?: 'ready' | 'conflict' | 'corrupt' | 'unsupported' | 'denied' | 'unavailable';
3881
+ reason?: string;
3882
+ }
3883
+
3884
+ export declare function SavedResourceManager<TDraft>({ kind, items, selectedId, nameDraft, onNameDraftChange, importDraft, onImportDraftChange, draft, dirty, onAction, status, loading, disabled, disabledReason, children, className, }: SavedResourceManagerProps<TDraft>): JSX.Element;
3885
+
3886
+ export declare interface SavedResourceManagerProps<TDraft> {
3887
+ kind: 'query' | 'view' | 'preset';
3888
+ items: readonly SavedResourceItem[];
3889
+ selectedId: string | null;
3890
+ nameDraft: string;
3891
+ onNameDraftChange: (name: string) => void;
3892
+ importDraft: string;
3893
+ onImportDraftChange: (document: string) => void;
3894
+ /** Opaque configuration. Never interpreted, serialized, or validated by this component. */
3895
+ draft: TDraft;
3896
+ dirty: boolean;
3897
+ onAction: (action: SavedResourceAction<TDraft>, signal: AbortSignal) => Promise<WorkspaceActionResult>;
3898
+ status?: WorkspaceActionResult;
3899
+ loading?: boolean;
3900
+ disabled?: boolean;
3901
+ disabledReason?: string;
3902
+ children?: ReactNode;
3903
+ className?: string;
3904
+ }
3905
+
3056
3906
  export declare const ScrollArea: ForwardRefExoticComponent<ScrollAreaProps & RefAttributes<HTMLDivElement>>;
3057
3907
 
3058
3908
  export declare type ScrollAreaOrientation = 'vertical' | 'horizontal' | 'both';
@@ -3085,6 +3935,14 @@ export declare interface SearchInputProps extends Omit<InputControlProps, 'start
3085
3935
  rootProps?: Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'color'>;
3086
3936
  }
3087
3937
 
3938
+ /** Opens a search surface using the same shell and sizing as a text input. */
3939
+ export declare const SearchTrigger: ForwardRefExoticComponent<SearchTriggerProps & RefAttributes<HTMLButtonElement>>;
3940
+
3941
+ export declare interface SearchTriggerProps extends Omit<ComponentPropsWithoutRef<'button'>, 'color' | 'children'>, StyledComponentProps {
3942
+ placeholder?: string;
3943
+ shortcut?: ReactNode;
3944
+ }
3945
+
3088
3946
  declare const SecondarySidebar: ForwardRefExoticComponent<AppShellSecondarySidebarProps & RefAttributes<HTMLElement>>;
3089
3947
 
3090
3948
  export declare interface Section {
@@ -4873,6 +5731,10 @@ export declare function useTreeItem(store: TreeStore, key: Key_3, textValue?: st
4873
5731
 
4874
5732
  export declare function useTreeStoreContext(): TreeStore;
4875
5733
 
5734
+ export declare function utf16ToUtf8(text: string, offset: number): number;
5735
+
5736
+ export declare function utf8ToUtf16(text: string, offset: number): number;
5737
+
4876
5738
  /** Validation function. Return a FieldErrors map (empty or all-undefined = valid). */
4877
5739
  export declare type ValidateItem = (key: Key, values: Record<string, string>) => FieldErrors | Promise<FieldErrors>;
4878
5740
 
@@ -4893,6 +5755,127 @@ export declare interface ValidateSectionsResult {
4893
5755
 
4894
5756
  export declare function validateThemeDefinition(input: unknown, supportsColor?: SupportsColor): ThemeDefinition;
4895
5757
 
5758
+ /**
5759
+ * Controlled, keyed layout with pointer and keyboard arrangement. Renderers own
5760
+ * acquisition/lifetimes; preview does not silently unmount panels or pause data.
5761
+ */
5762
+ export declare function ViewLayout<TItem extends ViewLayoutItem>({ items, onItemsChange, renderItem, onConfigure, editing, disabled, readOnly, columns, rowHeight, maxRowSpan, emptyContent, className, onFocusCapture, ...props }: ViewLayoutProps<TItem>): JSX.Element;
5763
+
5764
+ /** Presentation geometry only, not a persisted saved-view document. */
5765
+ export declare interface ViewLayoutItem {
5766
+ id: string;
5767
+ title: string;
5768
+ columnSpan: number;
5769
+ rowSpan: number;
5770
+ }
5771
+
5772
+ export declare interface ViewLayoutProps<TItem extends ViewLayoutItem = ViewLayoutItem> extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
5773
+ items: readonly TItem[];
5774
+ onItemsChange: (items: TItem[]) => void;
5775
+ renderItem: (item: TItem) => ReactNode;
5776
+ onConfigure?: (id: string) => void;
5777
+ editing?: boolean;
5778
+ /** Prevent layout/configuration changes without disabling rendered panel content. */
5779
+ disabled?: boolean;
5780
+ /** Keep editing controls discoverable, but prevent layout/configuration changes. */
5781
+ readOnly?: boolean;
5782
+ columns?: 1 | 2 | 3 | 4 | 6 | 12;
5783
+ rowHeight?: number;
5784
+ maxRowSpan?: number;
5785
+ emptyContent?: ReactNode;
5786
+ }
5787
+
5788
+ export declare interface VisualizationBindingDiagnostic {
5789
+ slotId?: string;
5790
+ severity: 'error' | 'warning' | 'info';
5791
+ message: string;
5792
+ }
5793
+
5794
+ export declare function VisualizationBindingEditor({ slots, fields, value, onChange, diagnostics, disabled, visualizationId, visualizations, onVisualizationChange, children, className, ...props }: VisualizationBindingEditorProps): JSX.Element;
5795
+
5796
+ export declare interface VisualizationBindingEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
5797
+ slots: readonly VisualizationBindingSlot[];
5798
+ /** Host-projected choices. IDs are opaque: this component never resolves paths or compatibility. */
5799
+ fields: readonly VisualizationFieldOption[];
5800
+ value: VisualizationBindings;
5801
+ onChange: (bindings: VisualizationBindings) => void;
5802
+ diagnostics?: readonly VisualizationBindingDiagnostic[];
5803
+ disabled?: boolean;
5804
+ visualizationId?: string;
5805
+ visualizations?: readonly VisualizationOption[];
5806
+ onVisualizationChange?: (id: string) => void;
5807
+ }
5808
+
5809
+ export declare type VisualizationBindings = Readonly<Record<string, string | undefined>>;
5810
+
5811
+ export declare interface VisualizationBindingSlot {
5812
+ id: string;
5813
+ label: string;
5814
+ description?: string;
5815
+ required?: boolean;
5816
+ }
5817
+
5818
+ /** Values have already been selected/validated by the caller. Exact integers can remain strings. */
5819
+ export declare type VisualizationDisplayValue = string | number | boolean | null | readonly VisualizationDisplayValue[] | {
5820
+ readonly [key: string]: VisualizationDisplayValue;
5821
+ };
5822
+
5823
+ export declare interface VisualizationField {
5824
+ id: string;
5825
+ label: string;
5826
+ value: VisualizationFieldValue;
5827
+ }
5828
+
5829
+ export declare interface VisualizationFieldOption {
5830
+ id: string;
5831
+ label: string;
5832
+ type: string;
5833
+ description?: string;
5834
+ disabledReason?: string;
5835
+ }
5836
+
5837
+ /** Bounded presentation only: does not parse field paths, evaluate selectors or fetch resources. */
5838
+ export declare function VisualizationFields({ fields, presentation, className, ...props }: VisualizationFieldsProps): JSX.Element;
5839
+
5840
+ export declare interface VisualizationFieldsProps extends HTMLAttributes<HTMLDivElement> {
5841
+ fields: readonly VisualizationField[];
5842
+ presentation?: 'stat' | 'list' | 'key-value';
5843
+ }
5844
+
5845
+ export declare type VisualizationFieldValue = {
5846
+ status: 'ready';
5847
+ value: VisualizationDisplayValue;
5848
+ } | {
5849
+ status: 'missing' | 'type-error' | 'unavailable' | 'denied';
5850
+ message: string;
5851
+ };
5852
+
5853
+ export declare interface VisualizationOption {
5854
+ id: string;
5855
+ label: string;
5856
+ description?: string;
5857
+ disabledReason?: string;
5858
+ }
5859
+
5860
+ /** Non-ready content is not mounted; each panel fails independently. */
5861
+ export declare function VisualizationPanel({ title, status, description, detail, actions, children, className, ...props }: VisualizationPanelProps): JSX.Element;
5862
+
5863
+ export declare interface VisualizationPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'color'> {
5864
+ title: string;
5865
+ status: VisualizationStatus;
5866
+ description?: string;
5867
+ /** Safe, host-provided diagnostic; never derives or requests protected data. */
5868
+ detail?: string;
5869
+ actions?: ReactNode;
5870
+ }
5871
+
5872
+ export declare type VisualizationStatus = 'ready' | 'loading' | 'empty' | 'error' | 'unavailable' | 'denied';
5873
+
4896
5874
  declare type WeekStart = 0 | 1 | 2 | 3 | 4 | 5 | 6;
4897
5875
 
5876
+ export declare type WorkspaceActionResult = {
5877
+ status: 'success' | 'conflict' | 'corrupt' | 'unsupported' | 'denied' | 'unavailable' | 'error';
5878
+ message?: string;
5879
+ };
5880
+
4898
5881
  export { }