@cohesivesystems/presentation-react-shadcn 0.1.0-alpha.1
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/LICENSE +55 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts +58 -0
- package/dist/document-workspace-surface-slot-renderers.d.ts.map +1 -0
- package/dist/document-workspace-surface-slot-renderers.js +206 -0
- package/dist/document-workspace-surface-slot-renderers.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts +8 -0
- package/dist/navigation-shell-frame-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-frame-renderer-registry.js +2 -0
- package/dist/navigation-shell-frame-renderer-registry.js.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts +9 -0
- package/dist/navigation-shell-slot-renderer-registry.d.ts.map +1 -0
- package/dist/navigation-shell-slot-renderer-registry.js +2 -0
- package/dist/navigation-shell-slot-renderer-registry.js.map +1 -0
- package/dist/page-host-unavailable-renderer.d.ts +10 -0
- package/dist/page-host-unavailable-renderer.d.ts.map +1 -0
- package/dist/page-host-unavailable-renderer.js +27 -0
- package/dist/page-host-unavailable-renderer.js.map +1 -0
- package/dist/presentation-action-group.d.ts +99 -0
- package/dist/presentation-action-group.d.ts.map +1 -0
- package/dist/presentation-action-group.js +214 -0
- package/dist/presentation-action-group.js.map +1 -0
- package/dist/presentation-badge-target-interpreter.d.ts +26 -0
- package/dist/presentation-badge-target-interpreter.d.ts.map +1 -0
- package/dist/presentation-badge-target-interpreter.js +17 -0
- package/dist/presentation-badge-target-interpreter.js.map +1 -0
- package/dist/presentation-component-groups.d.ts +968 -0
- package/dist/presentation-component-groups.d.ts.map +1 -0
- package/dist/presentation-component-groups.js +505 -0
- package/dist/presentation-component-groups.js.map +1 -0
- package/dist/presentation-component-system-diagnostics.d.ts +27 -0
- package/dist/presentation-component-system-diagnostics.d.ts.map +1 -0
- package/dist/presentation-component-system-diagnostics.js +399 -0
- package/dist/presentation-component-system-diagnostics.js.map +1 -0
- package/dist/presentation-component-system.d.ts +31 -0
- package/dist/presentation-component-system.d.ts.map +1 -0
- package/dist/presentation-component-system.js +61 -0
- package/dist/presentation-component-system.js.map +1 -0
- package/dist/presentation-icon-diagnostics.d.ts +12 -0
- package/dist/presentation-icon-diagnostics.d.ts.map +1 -0
- package/dist/presentation-icon-diagnostics.js +17 -0
- package/dist/presentation-icon-diagnostics.js.map +1 -0
- package/dist/presentation-icon-registry.d.ts +28 -0
- package/dist/presentation-icon-registry.d.ts.map +1 -0
- package/dist/presentation-icon-registry.js +80 -0
- package/dist/presentation-icon-registry.js.map +1 -0
- package/dist/presentation-projection-trace-panel.d.ts +10 -0
- package/dist/presentation-projection-trace-panel.d.ts.map +1 -0
- package/dist/presentation-projection-trace-panel.js +48 -0
- package/dist/presentation-projection-trace-panel.js.map +1 -0
- package/dist/presentation-routed-surface-host.d.ts +19 -0
- package/dist/presentation-routed-surface-host.d.ts.map +1 -0
- package/dist/presentation-routed-surface-host.js +12 -0
- package/dist/presentation-routed-surface-host.js.map +1 -0
- package/dist/presentation-shadcn-component-system.d.ts +22 -0
- package/dist/presentation-shadcn-component-system.d.ts.map +1 -0
- package/dist/presentation-shadcn-component-system.js +2 -0
- package/dist/presentation-shadcn-component-system.js.map +1 -0
- package/dist/presentation-standard-renderers.d.ts +168 -0
- package/dist/presentation-standard-renderers.d.ts.map +1 -0
- package/dist/presentation-standard-renderers.js +440 -0
- package/dist/presentation-standard-renderers.js.map +1 -0
- package/dist/presentation-surface-renderer.d.ts +23 -0
- package/dist/presentation-surface-renderer.d.ts.map +1 -0
- package/dist/presentation-surface-renderer.js +119 -0
- package/dist/presentation-surface-renderer.js.map +1 -0
- package/dist/presentation-value-renderers.d.ts +10 -0
- package/dist/presentation-value-renderers.d.ts.map +1 -0
- package/dist/presentation-value-renderers.js +14 -0
- package/dist/presentation-value-renderers.js.map +1 -0
- package/dist/process-task-icons.d.ts +49 -0
- package/dist/process-task-icons.d.ts.map +1 -0
- package/dist/process-task-icons.js +154 -0
- package/dist/process-task-icons.js.map +1 -0
- package/dist/projected-activity-state.d.ts +17 -0
- package/dist/projected-activity-state.d.ts.map +1 -0
- package/dist/projected-activity-state.js +22 -0
- package/dist/projected-activity-state.js.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts +4 -0
- package/dist/projected-collection-action-runtime-diagnostics.d.ts.map +1 -0
- package/dist/projected-collection-action-runtime-diagnostics.js +9 -0
- package/dist/projected-collection-action-runtime-diagnostics.js.map +1 -0
- package/dist/projected-collection-view.d.ts +90 -0
- package/dist/projected-collection-view.d.ts.map +1 -0
- package/dist/projected-collection-view.js +532 -0
- package/dist/projected-collection-view.js.map +1 -0
- package/dist/projected-document-action-status-notices.d.ts +15 -0
- package/dist/projected-document-action-status-notices.d.ts.map +1 -0
- package/dist/projected-document-action-status-notices.js +33 -0
- package/dist/projected-document-action-status-notices.js.map +1 -0
- package/dist/projected-document-badges.d.ts +24 -0
- package/dist/projected-document-badges.d.ts.map +1 -0
- package/dist/projected-document-badges.js +53 -0
- package/dist/projected-document-badges.js.map +1 -0
- package/dist/projected-document-editor-surface.d.ts +46 -0
- package/dist/projected-document-editor-surface.d.ts.map +1 -0
- package/dist/projected-document-editor-surface.js +399 -0
- package/dist/projected-document-editor-surface.js.map +1 -0
- package/dist/projected-document-workspace-notices.d.ts +24 -0
- package/dist/projected-document-workspace-notices.d.ts.map +1 -0
- package/dist/projected-document-workspace-notices.js +14 -0
- package/dist/projected-document-workspace-notices.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts +25 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js +41 -0
- package/dist/projected-document-workspace-prompt-child-view-registry.js.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts +32 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.d.ts.map +1 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js +77 -0
- package/dist/projected-document-workspace-prompt-child-view-renderers.js.map +1 -0
- package/dist/projected-document-workspace-shell.d.ts +100 -0
- package/dist/projected-document-workspace-shell.d.ts.map +1 -0
- package/dist/projected-document-workspace-shell.js +153 -0
- package/dist/projected-document-workspace-shell.js.map +1 -0
- package/dist/projected-document-workspace.d.ts +39 -0
- package/dist/projected-document-workspace.d.ts.map +1 -0
- package/dist/projected-document-workspace.js +63 -0
- package/dist/projected-document-workspace.js.map +1 -0
- package/dist/projected-field-value-rendering.d.ts +94 -0
- package/dist/projected-field-value-rendering.d.ts.map +1 -0
- package/dist/projected-field-value-rendering.js +377 -0
- package/dist/projected-field-value-rendering.js.map +1 -0
- package/dist/projected-inline-list.d.ts +20 -0
- package/dist/projected-inline-list.d.ts.map +1 -0
- package/dist/projected-inline-list.js +149 -0
- package/dist/projected-inline-list.js.map +1 -0
- package/dist/projected-input-form.d.ts +143 -0
- package/dist/projected-input-form.d.ts.map +1 -0
- package/dist/projected-input-form.js +612 -0
- package/dist/projected-input-form.js.map +1 -0
- package/dist/projected-metric-dashboard.d.ts +26 -0
- package/dist/projected-metric-dashboard.d.ts.map +1 -0
- package/dist/projected-metric-dashboard.js +20 -0
- package/dist/projected-metric-dashboard.js.map +1 -0
- package/dist/projected-metric-strip.d.ts +20 -0
- package/dist/projected-metric-strip.d.ts.map +1 -0
- package/dist/projected-metric-strip.js +131 -0
- package/dist/projected-metric-strip.js.map +1 -0
- package/dist/projected-navigation-shell-view-host.d.ts +34 -0
- package/dist/projected-navigation-shell-view-host.d.ts.map +1 -0
- package/dist/projected-navigation-shell-view-host.js +75 -0
- package/dist/projected-navigation-shell-view-host.js.map +1 -0
- package/dist/projected-navigation-shell.d.ts +33 -0
- package/dist/projected-navigation-shell.d.ts.map +1 -0
- package/dist/projected-navigation-shell.js +112 -0
- package/dist/projected-navigation-shell.js.map +1 -0
- package/dist/projected-presentation-badges.d.ts +34 -0
- package/dist/projected-presentation-badges.d.ts.map +1 -0
- package/dist/projected-presentation-badges.js +22 -0
- package/dist/projected-presentation-badges.js.map +1 -0
- package/dist/projected-presentation-diagnostics.d.ts +10 -0
- package/dist/projected-presentation-diagnostics.d.ts.map +1 -0
- package/dist/projected-presentation-diagnostics.js +40 -0
- package/dist/projected-presentation-diagnostics.js.map +1 -0
- package/dist/projected-presentation-flow-layer.d.ts +33 -0
- package/dist/projected-presentation-flow-layer.d.ts.map +1 -0
- package/dist/projected-presentation-flow-layer.js +71 -0
- package/dist/projected-presentation-flow-layer.js.map +1 -0
- package/dist/projected-process-task-notices.d.ts +37 -0
- package/dist/projected-process-task-notices.d.ts.map +1 -0
- package/dist/projected-process-task-notices.js +225 -0
- package/dist/projected-process-task-notices.js.map +1 -0
- package/dist/projected-prompt-child-view-renderer.d.ts +101 -0
- package/dist/projected-prompt-child-view-renderer.d.ts.map +1 -0
- package/dist/projected-prompt-child-view-renderer.js +442 -0
- package/dist/projected-prompt-child-view-renderer.js.map +1 -0
- package/dist/projected-prompt-document-preview.d.ts +39 -0
- package/dist/projected-prompt-document-preview.d.ts.map +1 -0
- package/dist/projected-prompt-document-preview.js +50 -0
- package/dist/projected-prompt-document-preview.js.map +1 -0
- package/dist/projected-prompt-view.d.ts +35 -0
- package/dist/projected-prompt-view.d.ts.map +1 -0
- package/dist/projected-prompt-view.js +292 -0
- package/dist/projected-prompt-view.js.map +1 -0
- package/dist/projected-query-form.d.ts +56 -0
- package/dist/projected-query-form.d.ts.map +1 -0
- package/dist/projected-query-form.js +100 -0
- package/dist/projected-query-form.js.map +1 -0
- package/dist/projected-record-details.d.ts +20 -0
- package/dist/projected-record-details.d.ts.map +1 -0
- package/dist/projected-record-details.js +60 -0
- package/dist/projected-record-details.js.map +1 -0
- package/dist/projected-routed-surface-runtime.d.ts +86 -0
- package/dist/projected-routed-surface-runtime.d.ts.map +1 -0
- package/dist/projected-routed-surface-runtime.js +332 -0
- package/dist/projected-routed-surface-runtime.js.map +1 -0
- package/dist/projected-tabs-view.d.ts +21 -0
- package/dist/projected-tabs-view.d.ts.map +1 -0
- package/dist/projected-tabs-view.js +140 -0
- package/dist/projected-tabs-view.js.map +1 -0
- package/dist/projected-view-chrome.d.ts +15 -0
- package/dist/projected-view-chrome.d.ts.map +1 -0
- package/dist/projected-view-chrome.js +67 -0
- package/dist/projected-view-chrome.js.map +1 -0
- package/dist/projected-view-surface.d.ts +34 -0
- package/dist/projected-view-surface.d.ts.map +1 -0
- package/dist/projected-view-surface.js +40 -0
- package/dist/projected-view-surface.js.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts +26 -0
- package/dist/standard-collection-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-collection-chrome-slot-renderers.js +250 -0
- package/dist/standard-collection-chrome-slot-renderers.js.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts +57 -0
- package/dist/standard-view-chrome-slot-renderers.d.ts.map +1 -0
- package/dist/standard-view-chrome-slot-renderers.js +614 -0
- package/dist/standard-view-chrome-slot-renderers.js.map +1 -0
- package/package.json +68 -0
- package/src/document-workspace-surface-slot-renderers.tsx +395 -0
- package/src/index.ts +53 -0
- package/src/navigation-shell-frame-renderer-registry.ts +29 -0
- package/src/navigation-shell-slot-renderer-registry.ts +46 -0
- package/src/page-host-unavailable-renderer.tsx +79 -0
- package/src/presentation-action-group.tsx +475 -0
- package/src/presentation-badge-target-interpreter.ts +54 -0
- package/src/presentation-component-groups.ts +2505 -0
- package/src/presentation-component-system-diagnostics.ts +848 -0
- package/src/presentation-component-system.ts +365 -0
- package/src/presentation-icon-diagnostics.ts +53 -0
- package/src/presentation-icon-registry.tsx +181 -0
- package/src/presentation-projection-trace-panel.tsx +140 -0
- package/src/presentation-routed-surface-host.tsx +48 -0
- package/src/presentation-shadcn-component-system.ts +102 -0
- package/src/presentation-standard-renderers.tsx +1290 -0
- package/src/presentation-surface-renderer.tsx +263 -0
- package/src/presentation-value-renderers.tsx +40 -0
- package/src/process-task-icons.tsx +258 -0
- package/src/projected-activity-state.tsx +63 -0
- package/src/projected-collection-action-runtime-diagnostics.ts +22 -0
- package/src/projected-collection-view.tsx +1273 -0
- package/src/projected-document-action-status-notices.tsx +66 -0
- package/src/projected-document-badges.tsx +134 -0
- package/src/projected-document-editor-surface.tsx +808 -0
- package/src/projected-document-workspace-notices.tsx +77 -0
- package/src/projected-document-workspace-prompt-child-view-registry.ts +99 -0
- package/src/projected-document-workspace-prompt-child-view-renderers.tsx +205 -0
- package/src/projected-document-workspace-shell.tsx +427 -0
- package/src/projected-document-workspace.tsx +216 -0
- package/src/projected-field-value-rendering.tsx +704 -0
- package/src/projected-inline-list.tsx +434 -0
- package/src/projected-input-form.tsx +1218 -0
- package/src/projected-metric-dashboard.tsx +106 -0
- package/src/projected-metric-strip.tsx +244 -0
- package/src/projected-navigation-shell-view-host.tsx +177 -0
- package/src/projected-navigation-shell.tsx +219 -0
- package/src/projected-presentation-badges.tsx +95 -0
- package/src/projected-presentation-diagnostics.tsx +120 -0
- package/src/projected-presentation-flow-layer.tsx +186 -0
- package/src/projected-process-task-notices.tsx +501 -0
- package/src/projected-prompt-child-view-renderer.tsx +698 -0
- package/src/projected-prompt-document-preview.tsx +197 -0
- package/src/projected-prompt-view.tsx +592 -0
- package/src/projected-query-form.tsx +286 -0
- package/src/projected-record-details.tsx +133 -0
- package/src/projected-routed-surface-runtime.tsx +713 -0
- package/src/projected-tabs-view.tsx +308 -0
- package/src/projected-view-chrome.tsx +148 -0
- package/src/projected-view-surface.tsx +131 -0
- package/src/standard-collection-chrome-slot-renderers.tsx +391 -0
- package/src/standard-view-chrome-slot-renderers.tsx +1064 -0
|
@@ -0,0 +1,968 @@
|
|
|
1
|
+
import { type ChangeEvent, type ExoticComponent, type ComponentType, type CSSProperties, type MouseEventHandler, type ReactNode } from 'react';
|
|
2
|
+
import type { InputFormDefinition, InputFormFieldDefinition, InputFormGroupDefinition, ViewChromeSlotDefinition, ViewRegionDefinition } from '@cohesivesystems/presentation-contracts';
|
|
3
|
+
import type { PresentationActionButtonSize, PresentationActionButtonVariant } from '@cohesivesystems/presentation-tailwind';
|
|
4
|
+
/** Props accepted by action buttons projected from presentation actions. */
|
|
5
|
+
export interface PresentationActionButtonProps {
|
|
6
|
+
readonly 'aria-label'?: string;
|
|
7
|
+
readonly 'aria-pressed'?: boolean;
|
|
8
|
+
readonly 'data-presentation-action-id'?: string;
|
|
9
|
+
readonly 'data-presentation-collection-slot-id'?: string;
|
|
10
|
+
readonly 'data-presentation-view-id'?: string;
|
|
11
|
+
readonly children?: ReactNode;
|
|
12
|
+
readonly className?: string;
|
|
13
|
+
readonly disabled?: boolean;
|
|
14
|
+
readonly onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
15
|
+
readonly size?: PresentationActionButtonSize;
|
|
16
|
+
readonly title?: string;
|
|
17
|
+
readonly type?: 'button' | 'reset' | 'submit';
|
|
18
|
+
readonly variant?: PresentationActionButtonVariant;
|
|
19
|
+
}
|
|
20
|
+
/** Action component group used by renderers that need command or intent buttons. */
|
|
21
|
+
export interface PresentationActionComponentSystemComponents {
|
|
22
|
+
readonly ActionButton: (props: PresentationActionButtonProps) => ReactNode;
|
|
23
|
+
}
|
|
24
|
+
/** Visual variants supported by badge primitives in the shadcn adapter layer. */
|
|
25
|
+
export type PresentationBadgeVariant = 'default' | 'destructive' | 'ghost' | 'link' | 'outline' | 'secondary';
|
|
26
|
+
/** Props accepted by semantic badge renderers. */
|
|
27
|
+
export interface PresentationBadgeProps {
|
|
28
|
+
readonly children?: ReactNode;
|
|
29
|
+
readonly className?: string;
|
|
30
|
+
readonly variant?: PresentationBadgeVariant;
|
|
31
|
+
}
|
|
32
|
+
/** Badge component group shared by presentation renderers that need compact labels. */
|
|
33
|
+
export interface PresentationBadgeComponentSystemComponents {
|
|
34
|
+
readonly Badge: (props: PresentationBadgeProps) => ReactNode;
|
|
35
|
+
}
|
|
36
|
+
/** Props for navigation links after route targets have been projected to frontend paths. */
|
|
37
|
+
export interface PresentationNavigationLinkProps {
|
|
38
|
+
readonly children?: ReactNode;
|
|
39
|
+
readonly className?: string;
|
|
40
|
+
readonly isActive?: boolean;
|
|
41
|
+
readonly to: string;
|
|
42
|
+
}
|
|
43
|
+
/** Navigation component group used to render projected route links. */
|
|
44
|
+
export interface PresentationNavigationComponentSystemComponents {
|
|
45
|
+
readonly NavigationLink: (props: PresentationNavigationLinkProps) => ReactNode;
|
|
46
|
+
}
|
|
47
|
+
/** Minimal router link contract required by the navigation adapter. */
|
|
48
|
+
export interface PresentationNavigationRouterLinkProps {
|
|
49
|
+
readonly children?: ReactNode;
|
|
50
|
+
readonly className?: string;
|
|
51
|
+
readonly to: string;
|
|
52
|
+
}
|
|
53
|
+
/** Button style options used to derive class names for navigation links. */
|
|
54
|
+
export interface PresentationNavigationButtonClassNameOptions {
|
|
55
|
+
readonly size: 'sm';
|
|
56
|
+
readonly variant: 'ghost' | 'secondary';
|
|
57
|
+
}
|
|
58
|
+
/** Primitive dependencies required to build the action component group. */
|
|
59
|
+
export interface CreateShadcnActionComponentsOptions {
|
|
60
|
+
readonly Button: ComponentType<PresentationActionButtonProps>;
|
|
61
|
+
}
|
|
62
|
+
/** Primitive dependencies required to build the badge component group. */
|
|
63
|
+
export interface CreateShadcnBadgeComponentsOptions {
|
|
64
|
+
readonly Badge: ComponentType<PresentationBadgeProps>;
|
|
65
|
+
}
|
|
66
|
+
/** Primitive dependencies required to build the navigation component group. */
|
|
67
|
+
export interface CreateShadcnNavigationComponentsOptions {
|
|
68
|
+
readonly Link: ComponentType<PresentationNavigationRouterLinkProps>;
|
|
69
|
+
readonly buttonClassName: (options: PresentationNavigationButtonClassNameOptions) => string;
|
|
70
|
+
}
|
|
71
|
+
/** Adapter contract for the underlying tabs root primitive. */
|
|
72
|
+
export interface PresentationTabsRootPrimitiveProps {
|
|
73
|
+
readonly children?: ReactNode;
|
|
74
|
+
readonly className?: string;
|
|
75
|
+
readonly 'data-presentation-view-id'?: string;
|
|
76
|
+
readonly onValueChange: (value: string) => void;
|
|
77
|
+
readonly value: string;
|
|
78
|
+
}
|
|
79
|
+
/** Adapter contract for the underlying tabs list primitive. */
|
|
80
|
+
export interface PresentationTabsListPrimitiveProps {
|
|
81
|
+
readonly children?: ReactNode;
|
|
82
|
+
readonly className?: string;
|
|
83
|
+
readonly 'data-presentation-view-id'?: string;
|
|
84
|
+
}
|
|
85
|
+
/** Adapter contract for an underlying tabs content primitive. */
|
|
86
|
+
export interface PresentationTabsContentPrimitiveProps {
|
|
87
|
+
readonly children?: ReactNode;
|
|
88
|
+
readonly className?: string;
|
|
89
|
+
readonly 'data-presentation-region-id'?: string;
|
|
90
|
+
readonly 'data-presentation-view-id'?: string;
|
|
91
|
+
readonly forceMount?: true;
|
|
92
|
+
readonly value: string;
|
|
93
|
+
}
|
|
94
|
+
/** Adapter contract for an underlying tabs trigger primitive. */
|
|
95
|
+
export interface PresentationTabsTriggerPrimitiveProps {
|
|
96
|
+
readonly children?: ReactNode;
|
|
97
|
+
readonly className?: string;
|
|
98
|
+
readonly 'data-presentation-region-id'?: string;
|
|
99
|
+
readonly 'data-presentation-view-id'?: string;
|
|
100
|
+
readonly value: string;
|
|
101
|
+
}
|
|
102
|
+
/** Primitive dependencies required to build semantic tab components. */
|
|
103
|
+
export interface CreateShadcnTabsComponentsOptions {
|
|
104
|
+
readonly Tabs: ComponentType<PresentationTabsRootPrimitiveProps>;
|
|
105
|
+
readonly TabsContent: ComponentType<PresentationTabsContentPrimitiveProps>;
|
|
106
|
+
readonly TabsList: ComponentType<PresentationTabsListPrimitiveProps>;
|
|
107
|
+
readonly TabsTrigger: ComponentType<PresentationTabsTriggerPrimitiveProps>;
|
|
108
|
+
}
|
|
109
|
+
/** Props for a semantic multi-choice toggle group control. */
|
|
110
|
+
export interface PresentationChoiceToggleGroupProps {
|
|
111
|
+
readonly 'aria-label'?: string;
|
|
112
|
+
readonly children?: ReactNode;
|
|
113
|
+
readonly className?: string;
|
|
114
|
+
readonly onValueChange?: (value: string[]) => void;
|
|
115
|
+
readonly value?: readonly string[];
|
|
116
|
+
}
|
|
117
|
+
/** Props for an individual semantic choice toggle option. */
|
|
118
|
+
export interface PresentationChoiceToggleItemProps {
|
|
119
|
+
readonly 'aria-label'?: string;
|
|
120
|
+
readonly children?: ReactNode;
|
|
121
|
+
readonly className?: string;
|
|
122
|
+
readonly value: string;
|
|
123
|
+
}
|
|
124
|
+
/** Props for a boolean input control projected from a presentation field. */
|
|
125
|
+
export interface PresentationCheckboxControlProps {
|
|
126
|
+
readonly 'aria-label': string;
|
|
127
|
+
readonly checked: boolean;
|
|
128
|
+
readonly className?: string;
|
|
129
|
+
readonly onCheckedChange: (checked: boolean) => void;
|
|
130
|
+
}
|
|
131
|
+
/** Props for date-time filter controls exposed to presentation form renderers. */
|
|
132
|
+
export interface PresentationDateTimeFilterControlProps<TDateTimeFilterValue = unknown> {
|
|
133
|
+
readonly emptyLabel?: string;
|
|
134
|
+
readonly incrementMinutes?: number;
|
|
135
|
+
readonly label?: string;
|
|
136
|
+
readonly onValueChange: (value: TDateTimeFilterValue) => void;
|
|
137
|
+
readonly showTimezone?: boolean;
|
|
138
|
+
readonly value: TDateTimeFilterValue;
|
|
139
|
+
}
|
|
140
|
+
/** Adapter contract for the date-time primitive consumed by form controls. */
|
|
141
|
+
export interface PresentationDateTimeFilterPrimitiveProps<TDateTimeFilterValue> {
|
|
142
|
+
readonly emptyLabel?: string;
|
|
143
|
+
readonly incrementMinutes?: number;
|
|
144
|
+
readonly label?: string;
|
|
145
|
+
readonly onChange: (value: TDateTimeFilterValue) => void;
|
|
146
|
+
readonly showTimezone?: boolean;
|
|
147
|
+
readonly value: TDateTimeFilterValue;
|
|
148
|
+
}
|
|
149
|
+
/** Props for labels rendered next to projected form fields. */
|
|
150
|
+
export interface PresentationFormFieldLabelProps {
|
|
151
|
+
readonly children?: ReactNode;
|
|
152
|
+
readonly className?: string;
|
|
153
|
+
}
|
|
154
|
+
/** Props for the root element of an input form projected from backend presentation IR. */
|
|
155
|
+
export interface PresentationInputFormProps {
|
|
156
|
+
readonly children?: ReactNode;
|
|
157
|
+
readonly className?: string;
|
|
158
|
+
readonly form: InputFormDefinition;
|
|
159
|
+
readonly viewId?: string | null;
|
|
160
|
+
}
|
|
161
|
+
/** Props for a form action row bound to a projected input form. */
|
|
162
|
+
export interface PresentationInputFormActionRowProps {
|
|
163
|
+
readonly children?: ReactNode;
|
|
164
|
+
readonly className?: string;
|
|
165
|
+
readonly form: InputFormDefinition;
|
|
166
|
+
}
|
|
167
|
+
/** Props for grouping one field's control content. */
|
|
168
|
+
export interface PresentationInputFormControlGroupProps {
|
|
169
|
+
readonly children?: ReactNode;
|
|
170
|
+
readonly className?: string;
|
|
171
|
+
readonly field: InputFormFieldDefinition;
|
|
172
|
+
}
|
|
173
|
+
/** Props for a slot that receives a projected form control. */
|
|
174
|
+
export interface PresentationInputFormControlSlotProps {
|
|
175
|
+
readonly children?: ReactNode;
|
|
176
|
+
readonly className?: string;
|
|
177
|
+
readonly field: InputFormFieldDefinition;
|
|
178
|
+
}
|
|
179
|
+
/** Props for the composed label, control, and message of one input field. */
|
|
180
|
+
export interface PresentationInputFormFieldProps {
|
|
181
|
+
readonly className?: string;
|
|
182
|
+
readonly control: ReactNode;
|
|
183
|
+
readonly field: InputFormFieldDefinition;
|
|
184
|
+
readonly label: ReactNode;
|
|
185
|
+
readonly message?: ReactNode;
|
|
186
|
+
}
|
|
187
|
+
/** Props for validation or helper text associated with a projected field. */
|
|
188
|
+
export interface PresentationInputFormFieldMessageProps {
|
|
189
|
+
readonly children?: ReactNode;
|
|
190
|
+
readonly className?: string;
|
|
191
|
+
readonly field: InputFormFieldDefinition;
|
|
192
|
+
readonly tone?: 'default' | 'error' | 'warning';
|
|
193
|
+
}
|
|
194
|
+
/** Props for a named group within a projected input form. */
|
|
195
|
+
export interface PresentationInputFormGroupProps {
|
|
196
|
+
readonly children?: ReactNode;
|
|
197
|
+
readonly className?: string;
|
|
198
|
+
readonly group: InputFormGroupDefinition;
|
|
199
|
+
}
|
|
200
|
+
/** Props for the container that renders all groups in a projected input form. */
|
|
201
|
+
export interface PresentationInputFormGroupsProps {
|
|
202
|
+
readonly children?: ReactNode;
|
|
203
|
+
readonly className?: string;
|
|
204
|
+
readonly form: InputFormDefinition;
|
|
205
|
+
}
|
|
206
|
+
/** Option contract for select controls projected from presentation choices. */
|
|
207
|
+
export interface PresentationSelectControlOption {
|
|
208
|
+
readonly label: string;
|
|
209
|
+
readonly value: string;
|
|
210
|
+
}
|
|
211
|
+
/** Props for a select control bound to a string presentation field value. */
|
|
212
|
+
export interface PresentationSelectControlProps {
|
|
213
|
+
readonly 'aria-label': string;
|
|
214
|
+
readonly className?: string;
|
|
215
|
+
readonly disabled?: boolean;
|
|
216
|
+
readonly onValueChange: (value: string) => void;
|
|
217
|
+
readonly options: readonly PresentationSelectControlOption[];
|
|
218
|
+
readonly value: string;
|
|
219
|
+
}
|
|
220
|
+
/** Props for a text-like input control bound to a presentation field value. */
|
|
221
|
+
export interface PresentationTextInputControlProps {
|
|
222
|
+
readonly 'aria-label': string;
|
|
223
|
+
readonly className?: string;
|
|
224
|
+
readonly onValueChange: (value: string) => void;
|
|
225
|
+
readonly placeholder?: string;
|
|
226
|
+
readonly type?: string;
|
|
227
|
+
readonly value: string;
|
|
228
|
+
}
|
|
229
|
+
/** Adapter contract for the underlying multi-select toggle group primitive. */
|
|
230
|
+
export interface PresentationChoiceToggleGroupPrimitiveProps {
|
|
231
|
+
readonly 'aria-label'?: string;
|
|
232
|
+
readonly children?: ReactNode;
|
|
233
|
+
readonly className?: string;
|
|
234
|
+
readonly onValueChange?: (value: string[]) => void;
|
|
235
|
+
readonly type: 'multiple';
|
|
236
|
+
readonly value: string[];
|
|
237
|
+
}
|
|
238
|
+
/** Adapter contract for the underlying text input primitive. */
|
|
239
|
+
export interface PresentationInputPrimitiveProps {
|
|
240
|
+
readonly 'aria-label': string;
|
|
241
|
+
readonly className?: string;
|
|
242
|
+
readonly onChange: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
243
|
+
readonly placeholder?: string;
|
|
244
|
+
readonly type?: string;
|
|
245
|
+
readonly value: string;
|
|
246
|
+
}
|
|
247
|
+
/** Primitive dependencies required to build semantic form components. */
|
|
248
|
+
export interface CreateShadcnFormComponentsOptions<TDateTimeFilterValue = unknown> {
|
|
249
|
+
readonly Button: ComponentType<PresentationActionButtonProps>;
|
|
250
|
+
readonly DateTimeFilter: ComponentType<PresentationDateTimeFilterPrimitiveProps<TDateTimeFilterValue>>;
|
|
251
|
+
readonly Input: ComponentType<PresentationInputPrimitiveProps>;
|
|
252
|
+
readonly Label: ComponentType<PresentationFormFieldLabelProps>;
|
|
253
|
+
readonly ToggleGroup: ComponentType<PresentationChoiceToggleGroupPrimitiveProps>;
|
|
254
|
+
readonly ToggleGroupItem: ComponentType<PresentationChoiceToggleItemProps>;
|
|
255
|
+
}
|
|
256
|
+
/** Props for collection chrome regions such as summaries, details, and query slots. */
|
|
257
|
+
export interface PresentationCollectionChromeSlotProps {
|
|
258
|
+
readonly children?: ReactNode;
|
|
259
|
+
readonly className?: string;
|
|
260
|
+
readonly slotId?: string;
|
|
261
|
+
readonly viewId?: string | null;
|
|
262
|
+
}
|
|
263
|
+
/** Props for collection pagination state and navigation actions. */
|
|
264
|
+
export interface PresentationCollectionPaginationBarProps {
|
|
265
|
+
readonly canGoNextPage: boolean;
|
|
266
|
+
readonly canGoPreviousPage: boolean;
|
|
267
|
+
readonly className?: string;
|
|
268
|
+
readonly firstIcon?: ReactNode;
|
|
269
|
+
readonly isFetching: boolean;
|
|
270
|
+
readonly loadingIcon?: ReactNode;
|
|
271
|
+
readonly nextIcon?: ReactNode;
|
|
272
|
+
readonly onFirstPage: () => void;
|
|
273
|
+
readonly onNextPage: () => void;
|
|
274
|
+
readonly onPreviousPage: () => void;
|
|
275
|
+
readonly pageLabel: string;
|
|
276
|
+
readonly pageSizeLabel: string;
|
|
277
|
+
readonly previousIcon?: ReactNode;
|
|
278
|
+
readonly shownLabel: string;
|
|
279
|
+
readonly slotId?: string | null;
|
|
280
|
+
readonly totalLabel: string;
|
|
281
|
+
readonly viewId?: string | null;
|
|
282
|
+
}
|
|
283
|
+
/** Props for row-level action containers in collection projections. */
|
|
284
|
+
export interface PresentationCollectionRowActionsProps {
|
|
285
|
+
readonly children?: ReactNode;
|
|
286
|
+
readonly className?: string;
|
|
287
|
+
readonly rowLabel?: string | null;
|
|
288
|
+
readonly slotId?: string;
|
|
289
|
+
}
|
|
290
|
+
/** Props for action toolbars shown when collection rows are selected. */
|
|
291
|
+
export interface PresentationCollectionSelectionActionToolbarProps {
|
|
292
|
+
readonly actions?: ReactNode;
|
|
293
|
+
readonly className?: string;
|
|
294
|
+
readonly selectedCount: number;
|
|
295
|
+
readonly selectedLabel: string;
|
|
296
|
+
readonly slotId?: string | null;
|
|
297
|
+
}
|
|
298
|
+
/** Collection chrome component group for projected query, summary, body, detail, and action slots. */
|
|
299
|
+
export interface PresentationCollectionChromeComponentSystemComponents {
|
|
300
|
+
readonly CollectionBodySlot: (props: PresentationCollectionChromeSlotProps) => ReactNode;
|
|
301
|
+
readonly CollectionDetailSlot: (props: PresentationCollectionChromeSlotProps) => ReactNode;
|
|
302
|
+
readonly CollectionPaginationBar: (props: PresentationCollectionPaginationBarProps) => ReactNode;
|
|
303
|
+
readonly CollectionQueryFormSlot: (props: PresentationCollectionChromeSlotProps) => ReactNode;
|
|
304
|
+
readonly CollectionRowActions: (props: PresentationCollectionRowActionsProps) => ReactNode;
|
|
305
|
+
readonly CollectionSelectionActionToolbar: (props: PresentationCollectionSelectionActionToolbarProps) => ReactNode;
|
|
306
|
+
readonly CollectionSummarySlot: (props: PresentationCollectionChromeSlotProps) => ReactNode;
|
|
307
|
+
}
|
|
308
|
+
/** Primitive dependencies required to build collection chrome components. */
|
|
309
|
+
export interface CreateShadcnCollectionChromeComponentsOptions {
|
|
310
|
+
readonly Button: ComponentType<PresentationActionButtonProps>;
|
|
311
|
+
}
|
|
312
|
+
/** Supported layout modes for rendering collection tables with optional detail content. */
|
|
313
|
+
export type PresentationCollectionDetailLayoutMode = 'drawer' | 'none' | 'side-panel' | 'stack';
|
|
314
|
+
/** Props for arranging a collection table with its projected detail view. */
|
|
315
|
+
export interface PresentationCollectionDetailLayoutProps {
|
|
316
|
+
readonly detail: ReactNode;
|
|
317
|
+
readonly mode: PresentationCollectionDetailLayoutMode;
|
|
318
|
+
readonly table: ReactNode;
|
|
319
|
+
}
|
|
320
|
+
/** Generic data table renderer contract supplied by collection adapters. */
|
|
321
|
+
export type PresentationDataTableRenderer = <TData extends object>(props: never & {
|
|
322
|
+
readonly __data?: TData;
|
|
323
|
+
}) => ReactNode;
|
|
324
|
+
/** Props for a row action menu wrapper and trigger. */
|
|
325
|
+
export interface PresentationRowActionMenuProps {
|
|
326
|
+
readonly children?: ReactNode;
|
|
327
|
+
readonly trigger: ReactNode;
|
|
328
|
+
}
|
|
329
|
+
/** Props for the interactive trigger of a row action menu. */
|
|
330
|
+
export interface PresentationRowActionMenuTriggerProps {
|
|
331
|
+
readonly 'aria-label': string;
|
|
332
|
+
readonly children?: ReactNode;
|
|
333
|
+
}
|
|
334
|
+
/** Props for one executable item in a row action menu. */
|
|
335
|
+
export interface PresentationRowActionMenuItemProps {
|
|
336
|
+
readonly actionId?: string | null;
|
|
337
|
+
readonly children?: ReactNode;
|
|
338
|
+
readonly collectionSlotId?: string | null;
|
|
339
|
+
readonly disabled?: boolean;
|
|
340
|
+
readonly onClick?: MouseEventHandler<HTMLButtonElement>;
|
|
341
|
+
readonly viewId?: string | null;
|
|
342
|
+
}
|
|
343
|
+
/** Style options used to derive row action menu trigger classes. */
|
|
344
|
+
export interface PresentationRowActionMenuTriggerClassNameOptions {
|
|
345
|
+
readonly size: 'icon-sm';
|
|
346
|
+
readonly variant: 'ghost';
|
|
347
|
+
}
|
|
348
|
+
/** Collection component group for tables, detail layout, and row actions. */
|
|
349
|
+
export interface PresentationCollectionComponentSystemComponents<TDataTableRenderer extends PresentationDataTableRenderer = PresentationDataTableRenderer> {
|
|
350
|
+
readonly CollectionDetailLayout: (props: PresentationCollectionDetailLayoutProps) => ReactNode;
|
|
351
|
+
readonly DataTable: TDataTableRenderer;
|
|
352
|
+
readonly RowActionMenu: (props: PresentationRowActionMenuProps) => ReactNode;
|
|
353
|
+
readonly RowActionMenuItem: (props: PresentationRowActionMenuItemProps) => ReactNode;
|
|
354
|
+
readonly RowActionMenuTrigger: (props: PresentationRowActionMenuTriggerProps) => ReactNode;
|
|
355
|
+
}
|
|
356
|
+
/** Primitive dependencies required to build collection components. */
|
|
357
|
+
export interface CreateShadcnCollectionComponentsOptions<TDataTableRenderer extends PresentationDataTableRenderer = PresentationDataTableRenderer> {
|
|
358
|
+
readonly CollectionDetailLayout: (props: PresentationCollectionDetailLayoutProps) => ReactNode;
|
|
359
|
+
readonly DataTable: TDataTableRenderer;
|
|
360
|
+
readonly rowActionMenuTriggerClassName: (options: PresentationRowActionMenuTriggerClassNameOptions) => string;
|
|
361
|
+
}
|
|
362
|
+
/** Props for a view surface that frames projected presentation content. */
|
|
363
|
+
export interface PresentationViewSurfaceProps {
|
|
364
|
+
readonly action?: ReactNode;
|
|
365
|
+
readonly children?: ReactNode;
|
|
366
|
+
readonly className?: string;
|
|
367
|
+
readonly collapsible?: boolean;
|
|
368
|
+
readonly collapsed?: boolean;
|
|
369
|
+
readonly collapseLabel?: string;
|
|
370
|
+
readonly contentClassName?: string;
|
|
371
|
+
readonly contentTopInset?: PresentationViewSurfaceContentTopInset | null;
|
|
372
|
+
readonly defaultCollapsed?: boolean;
|
|
373
|
+
readonly description?: string;
|
|
374
|
+
readonly eyebrow?: string;
|
|
375
|
+
readonly onCollapsedChange?: (collapsed: boolean) => void;
|
|
376
|
+
readonly title?: string;
|
|
377
|
+
readonly verticalResize?: boolean | PresentationViewSurfaceVerticalResizeOptions | null;
|
|
378
|
+
readonly viewId?: string | null;
|
|
379
|
+
}
|
|
380
|
+
/** Controls the top inset applied between view surface chrome and content. */
|
|
381
|
+
export type PresentationViewSurfaceContentTopInset = 'default' | 'none';
|
|
382
|
+
/** Defines vertical resize behavior for projected view surfaces. */
|
|
383
|
+
export interface PresentationViewSurfaceVerticalResizeOptions {
|
|
384
|
+
/** Selects one resize affordance for changing the surface height. */
|
|
385
|
+
readonly control?: PresentationViewSurfaceVerticalResizeControl;
|
|
386
|
+
readonly defaultHeightRem?: number;
|
|
387
|
+
readonly enabled?: boolean;
|
|
388
|
+
readonly maxHeightRem?: number;
|
|
389
|
+
readonly minHeightRem?: number;
|
|
390
|
+
readonly stepRem?: number;
|
|
391
|
+
}
|
|
392
|
+
/** Mutually exclusive resize controls exposed by projected view surfaces. */
|
|
393
|
+
export type PresentationViewSurfaceVerticalResizeControl = 'drag-handle' | 'header-buttons';
|
|
394
|
+
/** Props for chrome content placed around a view surface by semantic placement. */
|
|
395
|
+
export interface PresentationViewSurfaceChromePlacementProps {
|
|
396
|
+
readonly children?: ReactNode;
|
|
397
|
+
readonly className?: string;
|
|
398
|
+
readonly placement: string | number;
|
|
399
|
+
readonly viewId?: string | null;
|
|
400
|
+
}
|
|
401
|
+
/** Props for composing main content with before, after, and footer chrome. */
|
|
402
|
+
export interface PresentationViewSurfaceContentProps {
|
|
403
|
+
readonly afterContentChrome?: ReactNode;
|
|
404
|
+
readonly beforeContentChrome?: ReactNode;
|
|
405
|
+
readonly children?: ReactNode;
|
|
406
|
+
readonly footerChrome?: ReactNode;
|
|
407
|
+
readonly viewId?: string | null;
|
|
408
|
+
}
|
|
409
|
+
/** Props for merging primary view actions with additional header chrome. */
|
|
410
|
+
export interface PresentationViewSurfaceHeaderActionsProps {
|
|
411
|
+
readonly action?: ReactNode;
|
|
412
|
+
readonly chrome?: ReactNode;
|
|
413
|
+
readonly className?: string;
|
|
414
|
+
readonly viewId?: string | null;
|
|
415
|
+
}
|
|
416
|
+
/** Surface component group used to frame projected views and their chrome. */
|
|
417
|
+
export interface PresentationSurfaceComponentSystemComponents {
|
|
418
|
+
readonly ViewSurface: (props: PresentationViewSurfaceProps) => ReactNode;
|
|
419
|
+
readonly ViewSurfaceChromePlacement: (props: PresentationViewSurfaceChromePlacementProps) => ReactNode;
|
|
420
|
+
readonly ViewSurfaceContent: (props: PresentationViewSurfaceContentProps) => ReactNode;
|
|
421
|
+
readonly ViewSurfaceHeaderActions: (props: PresentationViewSurfaceHeaderActionsProps) => ReactNode;
|
|
422
|
+
}
|
|
423
|
+
/** Primitive dependencies required to build view surface components. */
|
|
424
|
+
export interface CreateShadcnSurfaceComponentsOptions {
|
|
425
|
+
readonly Surface: ComponentType<PresentationViewSurfaceProps>;
|
|
426
|
+
}
|
|
427
|
+
/** Props for the document workspace detail panel shown beside a tree or surface. */
|
|
428
|
+
export interface PresentationDocumentWorkspaceDetailPanelProps {
|
|
429
|
+
readonly children?: ReactNode;
|
|
430
|
+
readonly className?: string;
|
|
431
|
+
readonly contentClassName?: string;
|
|
432
|
+
readonly emptyClassName?: string;
|
|
433
|
+
readonly emptyLabel?: string;
|
|
434
|
+
readonly headerClassName?: string;
|
|
435
|
+
readonly headerContentClassName?: string;
|
|
436
|
+
readonly icon?: ReactNode;
|
|
437
|
+
readonly subtitle?: string;
|
|
438
|
+
readonly subtitleClassName?: string;
|
|
439
|
+
readonly title?: string;
|
|
440
|
+
readonly titleClassName?: string;
|
|
441
|
+
}
|
|
442
|
+
/** Props for the root document workspace shell. */
|
|
443
|
+
export interface PresentationDocumentWorkspaceShellProps {
|
|
444
|
+
readonly children?: ReactNode;
|
|
445
|
+
readonly className?: string;
|
|
446
|
+
readonly contentClassName?: string;
|
|
447
|
+
readonly viewId?: string | null;
|
|
448
|
+
}
|
|
449
|
+
/** Resolved rendering options for a document workspace surface slot. */
|
|
450
|
+
export interface PresentationDocumentWorkspaceSurfaceSlotRenderOptions {
|
|
451
|
+
readonly chromeHeaderClassName?: string;
|
|
452
|
+
readonly className?: string;
|
|
453
|
+
readonly collapsible?: boolean;
|
|
454
|
+
readonly contentClassName?: string;
|
|
455
|
+
}
|
|
456
|
+
/** Props for a named document workspace surface slot declared by backend presentation IR. */
|
|
457
|
+
export interface PresentationDocumentWorkspaceSurfaceSlotProps {
|
|
458
|
+
readonly children?: ReactNode;
|
|
459
|
+
readonly regionId?: string | null;
|
|
460
|
+
readonly renderSurface?: (options: PresentationDocumentWorkspaceSurfaceSlotRenderOptions) => ReactNode;
|
|
461
|
+
readonly role?: string | number | null;
|
|
462
|
+
readonly slot: string;
|
|
463
|
+
readonly viewId?: string | null;
|
|
464
|
+
}
|
|
465
|
+
/** Props for a document workspace layout group projected from layout semantics. */
|
|
466
|
+
export interface PresentationDocumentWorkspaceLayoutGroupProps {
|
|
467
|
+
readonly children?: ReactNode;
|
|
468
|
+
readonly className?: string;
|
|
469
|
+
readonly layoutNodeId?: string | null;
|
|
470
|
+
readonly orientation?: string | number | null;
|
|
471
|
+
readonly style?: CSSProperties;
|
|
472
|
+
readonly workspaceViewId?: string | null;
|
|
473
|
+
}
|
|
474
|
+
/** Props for one pane in a projected document workspace layout. */
|
|
475
|
+
export interface PresentationDocumentWorkspaceLayoutPaneProps {
|
|
476
|
+
readonly children?: ReactNode;
|
|
477
|
+
readonly className?: string;
|
|
478
|
+
readonly contentClassName?: string;
|
|
479
|
+
readonly layoutNodeId?: string | null;
|
|
480
|
+
readonly title: ReactNode;
|
|
481
|
+
readonly titleClassName?: string;
|
|
482
|
+
readonly viewId?: string | null;
|
|
483
|
+
readonly workspaceViewId?: string | null;
|
|
484
|
+
}
|
|
485
|
+
/** Badge metadata rendered inside a document workspace node label. */
|
|
486
|
+
export interface PresentationDocumentWorkspaceNodeLabelBadge {
|
|
487
|
+
readonly className?: string;
|
|
488
|
+
readonly label: string;
|
|
489
|
+
}
|
|
490
|
+
/** Props for labels attached to tree or graph nodes in a document workspace. */
|
|
491
|
+
export interface PresentationDocumentWorkspaceNodeLabelProps {
|
|
492
|
+
readonly badges?: readonly PresentationDocumentWorkspaceNodeLabelBadge[];
|
|
493
|
+
readonly className?: string;
|
|
494
|
+
readonly icon?: ReactNode;
|
|
495
|
+
readonly label: string;
|
|
496
|
+
readonly labelClassName?: string;
|
|
497
|
+
}
|
|
498
|
+
/** Props for one item in a document workspace tree. */
|
|
499
|
+
export interface PresentationDocumentWorkspaceTreeItemProps {
|
|
500
|
+
readonly children?: ReactNode;
|
|
501
|
+
readonly itemId: string;
|
|
502
|
+
readonly label: ReactNode;
|
|
503
|
+
}
|
|
504
|
+
/** Props for lightweight document workspace status content. */
|
|
505
|
+
export interface PresentationDocumentWorkspaceStatusProps {
|
|
506
|
+
readonly children?: ReactNode;
|
|
507
|
+
readonly className?: string;
|
|
508
|
+
}
|
|
509
|
+
/** Label-value pair rendered by the document workspace details table. */
|
|
510
|
+
export interface PresentationDocumentWorkspaceTableDetail {
|
|
511
|
+
readonly label: string;
|
|
512
|
+
readonly value: ReactNode;
|
|
513
|
+
}
|
|
514
|
+
/** Props for tabular document workspace metadata. */
|
|
515
|
+
export interface PresentationDocumentWorkspaceTableProps {
|
|
516
|
+
readonly details: readonly PresentationDocumentWorkspaceTableDetail[];
|
|
517
|
+
readonly labelCellClassName?: string;
|
|
518
|
+
readonly rowClassName?: string;
|
|
519
|
+
readonly tableClassName?: string;
|
|
520
|
+
readonly valueCellClassName?: string;
|
|
521
|
+
readonly valueTextClassName?: string;
|
|
522
|
+
}
|
|
523
|
+
/** Props for split tree/detail layout in document workspaces. */
|
|
524
|
+
export interface PresentationDocumentWorkspaceTreeLayoutProps {
|
|
525
|
+
readonly className?: string;
|
|
526
|
+
readonly detail: ReactNode;
|
|
527
|
+
readonly detailDefaultSize?: number | string;
|
|
528
|
+
readonly detailId: string;
|
|
529
|
+
readonly detailMinSize?: number | string;
|
|
530
|
+
readonly splitterClassName?: string;
|
|
531
|
+
readonly splitterHandleClassName?: string;
|
|
532
|
+
readonly tree: ReactNode;
|
|
533
|
+
readonly treeDefaultSize?: number | string;
|
|
534
|
+
readonly treeId: string;
|
|
535
|
+
readonly treeMinSize?: number | string;
|
|
536
|
+
}
|
|
537
|
+
/** Props for controlled tree state in document workspace navigation. */
|
|
538
|
+
export interface PresentationDocumentWorkspaceTreeViewProps {
|
|
539
|
+
readonly ariaLabel: string;
|
|
540
|
+
readonly children?: ReactNode;
|
|
541
|
+
readonly expandedItemIds: readonly string[];
|
|
542
|
+
readonly onExpandedItemIdsChange: (itemIds: readonly string[]) => void;
|
|
543
|
+
readonly onSelectedItemIdChange: (itemId: string | null) => void;
|
|
544
|
+
readonly selectedItemId: string | null;
|
|
545
|
+
}
|
|
546
|
+
/** Adapter contract for the split-pane group primitive used by tree layouts. */
|
|
547
|
+
export interface PresentationDocumentWorkspaceTreeLayoutGroupPrimitiveProps {
|
|
548
|
+
readonly children?: ReactNode;
|
|
549
|
+
readonly className?: string;
|
|
550
|
+
readonly orientation: 'horizontal';
|
|
551
|
+
}
|
|
552
|
+
/** Adapter contract for split-pane panels used by tree layouts. */
|
|
553
|
+
export interface PresentationDocumentWorkspaceTreeLayoutPanelPrimitiveProps {
|
|
554
|
+
readonly children?: ReactNode;
|
|
555
|
+
readonly defaultSize: number | string;
|
|
556
|
+
readonly id: string;
|
|
557
|
+
readonly minSize: number | string;
|
|
558
|
+
}
|
|
559
|
+
/** Adapter contract for the split-pane separator used by tree layouts. */
|
|
560
|
+
export interface PresentationDocumentWorkspaceTreeLayoutSeparatorPrimitiveProps {
|
|
561
|
+
readonly children?: ReactNode;
|
|
562
|
+
readonly className?: string;
|
|
563
|
+
}
|
|
564
|
+
/** Primitive dependencies required to build a document workspace tree layout. */
|
|
565
|
+
export interface CreateShadcnDocumentWorkspaceTreeLayoutOptions {
|
|
566
|
+
readonly Group: ComponentType<PresentationDocumentWorkspaceTreeLayoutGroupPrimitiveProps>;
|
|
567
|
+
readonly Panel: ComponentType<PresentationDocumentWorkspaceTreeLayoutPanelPrimitiveProps>;
|
|
568
|
+
readonly Separator: ComponentType<PresentationDocumentWorkspaceTreeLayoutSeparatorPrimitiveProps>;
|
|
569
|
+
}
|
|
570
|
+
/** Adapter contract for the underlying document tree item primitive. */
|
|
571
|
+
export interface PresentationDocumentWorkspaceTreeItemPrimitiveProps {
|
|
572
|
+
readonly children?: ReactNode;
|
|
573
|
+
readonly itemId: string;
|
|
574
|
+
readonly label: ReactNode;
|
|
575
|
+
}
|
|
576
|
+
/** Primitive dependency required to build document workspace tree items. */
|
|
577
|
+
export interface CreateShadcnDocumentWorkspaceTreeItemOptions {
|
|
578
|
+
readonly TreeItem: ComponentType<PresentationDocumentWorkspaceTreeItemPrimitiveProps>;
|
|
579
|
+
}
|
|
580
|
+
/** Adapter contract for the underlying controlled document tree view primitive. */
|
|
581
|
+
export interface PresentationDocumentWorkspaceTreeViewPrimitiveProps<TSx = unknown> {
|
|
582
|
+
readonly 'aria-label': string;
|
|
583
|
+
readonly children?: ReactNode;
|
|
584
|
+
readonly expandedItems: string[];
|
|
585
|
+
readonly onExpandedItemsChange: (event: unknown, itemIds: string[]) => void;
|
|
586
|
+
readonly onSelectedItemsChange: (event: unknown, itemId: string | string[] | null) => void;
|
|
587
|
+
readonly selectedItems: string | null;
|
|
588
|
+
readonly sx?: TSx;
|
|
589
|
+
}
|
|
590
|
+
/** Primitive dependency and optional style object for document workspace tree views. */
|
|
591
|
+
export interface CreateShadcnDocumentWorkspaceTreeViewOptions<TSx = unknown> {
|
|
592
|
+
readonly TreeView: ComponentType<PresentationDocumentWorkspaceTreeViewPrimitiveProps<TSx>>;
|
|
593
|
+
readonly sx?: TSx;
|
|
594
|
+
}
|
|
595
|
+
/** JSON document component contract that supports regular and exotic React components. */
|
|
596
|
+
export type PresentationDocumentWorkspaceJsonComponent<TProps extends object> = ComponentType<TProps> | ExoticComponent<TProps>;
|
|
597
|
+
/** Primitive dependency required to render JSON document diffs. */
|
|
598
|
+
export interface CreateShadcnJsonDocumentDiffOptions<TProps extends object> {
|
|
599
|
+
readonly JsonDocumentDiff: PresentationDocumentWorkspaceJsonComponent<TProps>;
|
|
600
|
+
}
|
|
601
|
+
/** Primitive dependency and fallback configuration for lazy JSON document editors. */
|
|
602
|
+
export interface CreateShadcnJsonDocumentEditorOptions<TProps extends object> {
|
|
603
|
+
readonly fallbackClassName: (props: TProps) => string;
|
|
604
|
+
readonly fallbackLabel?: ReactNode;
|
|
605
|
+
readonly JsonDocumentEditor: PresentationDocumentWorkspaceJsonComponent<TProps>;
|
|
606
|
+
}
|
|
607
|
+
/** Context used to resolve styling and behavior for a document workspace surface slot. */
|
|
608
|
+
export interface PresentationDocumentWorkspaceSurfaceSlotOptionsContext {
|
|
609
|
+
readonly role?: string | number | null;
|
|
610
|
+
readonly slot: string;
|
|
611
|
+
}
|
|
612
|
+
/** Document workspace component group for semantic document navigation, surfaces, and JSON tools. */
|
|
613
|
+
export interface PresentationDocumentWorkspaceComponentSystemComponents<TTreeControlsProps extends object = object, TJsonDocumentDiffProps extends object = object, TJsonDocumentEditorProps extends object = object> {
|
|
614
|
+
readonly DocumentWorkspaceDetailPanel: (props: PresentationDocumentWorkspaceDetailPanelProps) => ReactNode;
|
|
615
|
+
readonly DocumentWorkspaceLayoutGroup: (props: PresentationDocumentWorkspaceLayoutGroupProps) => ReactNode;
|
|
616
|
+
readonly DocumentWorkspaceLayoutPane: (props: PresentationDocumentWorkspaceLayoutPaneProps) => ReactNode;
|
|
617
|
+
readonly DocumentWorkspaceNodeLabel: (props: PresentationDocumentWorkspaceNodeLabelProps) => ReactNode;
|
|
618
|
+
readonly DocumentWorkspaceShell: (props: PresentationDocumentWorkspaceShellProps) => ReactNode;
|
|
619
|
+
readonly DocumentWorkspaceSurfaceSlot: (props: PresentationDocumentWorkspaceSurfaceSlotProps) => ReactNode;
|
|
620
|
+
readonly DocumentWorkspaceTreeControls: (props: TTreeControlsProps) => ReactNode;
|
|
621
|
+
readonly DocumentWorkspaceTreeItem: (props: PresentationDocumentWorkspaceTreeItemProps) => ReactNode;
|
|
622
|
+
readonly DocumentWorkspaceStatus: (props: PresentationDocumentWorkspaceStatusProps) => ReactNode;
|
|
623
|
+
readonly DocumentWorkspaceTable: (props: PresentationDocumentWorkspaceTableProps) => ReactNode;
|
|
624
|
+
readonly DocumentWorkspaceTreeLayout: (props: PresentationDocumentWorkspaceTreeLayoutProps) => ReactNode;
|
|
625
|
+
readonly DocumentWorkspaceTreeView: (props: PresentationDocumentWorkspaceTreeViewProps) => ReactNode;
|
|
626
|
+
readonly JsonDocumentDiff: (props: TJsonDocumentDiffProps) => ReactNode;
|
|
627
|
+
readonly JsonDocumentEditor: (props: TJsonDocumentEditorProps) => ReactNode;
|
|
628
|
+
}
|
|
629
|
+
/** Dependencies required to build the document workspace component group. */
|
|
630
|
+
export interface CreateShadcnDocumentWorkspaceComponentsOptions<TTreeControlsProps extends object = object, TJsonDocumentDiffProps extends object = object, TJsonDocumentEditorProps extends object = object> {
|
|
631
|
+
readonly Badge: ComponentType<PresentationBadgeProps>;
|
|
632
|
+
readonly DocumentWorkspaceTreeControls: (props: TTreeControlsProps) => ReactNode;
|
|
633
|
+
readonly DocumentWorkspaceTreeItem: (props: PresentationDocumentWorkspaceTreeItemProps) => ReactNode;
|
|
634
|
+
readonly DocumentWorkspaceTreeLayout: (props: PresentationDocumentWorkspaceTreeLayoutProps) => ReactNode;
|
|
635
|
+
readonly DocumentWorkspaceTreeView: (props: PresentationDocumentWorkspaceTreeViewProps) => ReactNode;
|
|
636
|
+
readonly JsonDocumentDiff: (props: TJsonDocumentDiffProps) => ReactNode;
|
|
637
|
+
readonly JsonDocumentEditor: (props: TJsonDocumentEditorProps) => ReactNode;
|
|
638
|
+
readonly resolveSurfaceSlotOptions: (context: PresentationDocumentWorkspaceSurfaceSlotOptionsContext) => PresentationDocumentWorkspaceSurfaceSlotRenderOptions;
|
|
639
|
+
}
|
|
640
|
+
/** Props for status or empty-state feedback blocks. */
|
|
641
|
+
export interface PresentationStatusBlockProps {
|
|
642
|
+
readonly className?: string;
|
|
643
|
+
readonly label: ReactNode;
|
|
644
|
+
readonly tone?: 'default' | 'error';
|
|
645
|
+
}
|
|
646
|
+
/** Feedback component group for status and error messaging. */
|
|
647
|
+
export interface PresentationFeedbackComponentSystemComponents {
|
|
648
|
+
readonly StatusBlock: (props: PresentationStatusBlockProps) => ReactNode;
|
|
649
|
+
}
|
|
650
|
+
/** Props for a single metric projected from view chrome or record data. */
|
|
651
|
+
export interface PresentationMetricItemProps {
|
|
652
|
+
readonly className?: string;
|
|
653
|
+
readonly icon?: ReactNode;
|
|
654
|
+
readonly id: string;
|
|
655
|
+
readonly label: ReactNode;
|
|
656
|
+
readonly value: ReactNode;
|
|
657
|
+
readonly variant?: 'number' | 'text';
|
|
658
|
+
}
|
|
659
|
+
/** Props for a container of projected metric items. */
|
|
660
|
+
export interface PresentationMetricStripProps {
|
|
661
|
+
readonly children?: ReactNode;
|
|
662
|
+
readonly className?: string;
|
|
663
|
+
}
|
|
664
|
+
/** Metric component group for compact key-value summaries. */
|
|
665
|
+
export interface PresentationMetricComponentSystemComponents {
|
|
666
|
+
readonly MetricItem: (props: PresentationMetricItemProps) => ReactNode;
|
|
667
|
+
readonly MetricStrip: (props: PresentationMetricStripProps) => ReactNode;
|
|
668
|
+
}
|
|
669
|
+
/** Semantic color tones available to field value renderers. */
|
|
670
|
+
export type PresentationFieldValueTone = 'amber' | 'red' | 'sky' | 'slate' | 'teal' | 'violet';
|
|
671
|
+
/** Props for rendering code-like field values. */
|
|
672
|
+
export interface PresentationFieldValueCodeProps {
|
|
673
|
+
readonly className?: string;
|
|
674
|
+
readonly value: string;
|
|
675
|
+
}
|
|
676
|
+
/** Props for rendering compound field values with badges and supporting lines. */
|
|
677
|
+
export interface PresentationFieldValueCompositeProps {
|
|
678
|
+
readonly className?: string;
|
|
679
|
+
readonly inlineBadges?: readonly ReactNode[];
|
|
680
|
+
readonly primaryValue?: ReactNode;
|
|
681
|
+
readonly supportingValues?: readonly ReactNode[];
|
|
682
|
+
}
|
|
683
|
+
/** Props for rendering missing or empty field values. */
|
|
684
|
+
export interface PresentationFieldValueEmptyProps {
|
|
685
|
+
readonly className?: string;
|
|
686
|
+
readonly label: ReactNode;
|
|
687
|
+
}
|
|
688
|
+
/** Props for rendering formatted JSON field values. */
|
|
689
|
+
export interface PresentationFieldValueJsonProps {
|
|
690
|
+
readonly className?: string;
|
|
691
|
+
readonly formattedValue: string;
|
|
692
|
+
readonly tone?: PresentationFieldValueTone;
|
|
693
|
+
}
|
|
694
|
+
/** Props for rendering scalar field values. */
|
|
695
|
+
export interface PresentationFieldValueScalarProps {
|
|
696
|
+
readonly children?: ReactNode;
|
|
697
|
+
readonly className?: string;
|
|
698
|
+
readonly title?: string;
|
|
699
|
+
readonly tone?: PresentationFieldValueTone;
|
|
700
|
+
}
|
|
701
|
+
/** Props for secondary field value lines. */
|
|
702
|
+
export interface PresentationFieldValueSupportingValueProps {
|
|
703
|
+
readonly children?: ReactNode;
|
|
704
|
+
readonly className?: string;
|
|
705
|
+
}
|
|
706
|
+
/** Field value component group for scalar, JSON, code, empty, and composite values. */
|
|
707
|
+
export interface PresentationFieldValueComponentSystemComponents {
|
|
708
|
+
readonly FieldValueCode: (props: PresentationFieldValueCodeProps) => ReactNode;
|
|
709
|
+
readonly FieldValueComposite: (props: PresentationFieldValueCompositeProps) => ReactNode;
|
|
710
|
+
readonly FieldValueEmpty: (props: PresentationFieldValueEmptyProps) => ReactNode;
|
|
711
|
+
readonly FieldValueJson: (props: PresentationFieldValueJsonProps) => ReactNode;
|
|
712
|
+
readonly FieldValueScalar: (props: PresentationFieldValueScalarProps) => ReactNode;
|
|
713
|
+
readonly FieldValueSupportingValue: (props: PresentationFieldValueSupportingValueProps) => ReactNode;
|
|
714
|
+
}
|
|
715
|
+
/** Props for a record detail container projected from presentation record semantics. */
|
|
716
|
+
export interface PresentationRecordDetailsProps {
|
|
717
|
+
readonly children?: ReactNode;
|
|
718
|
+
readonly className?: string;
|
|
719
|
+
readonly viewId?: string | null;
|
|
720
|
+
}
|
|
721
|
+
/** Props for empty-state content in record detail views. */
|
|
722
|
+
export interface PresentationRecordDetailEmptyStateProps {
|
|
723
|
+
readonly className?: string;
|
|
724
|
+
readonly label: ReactNode;
|
|
725
|
+
readonly viewId?: string | null;
|
|
726
|
+
}
|
|
727
|
+
/** Props for one field row in a record detail view. */
|
|
728
|
+
export interface PresentationRecordDetailFieldProps {
|
|
729
|
+
readonly actions?: ReactNode;
|
|
730
|
+
readonly className?: string;
|
|
731
|
+
readonly fieldId: string;
|
|
732
|
+
readonly hideLabel?: boolean;
|
|
733
|
+
readonly label: ReactNode;
|
|
734
|
+
readonly value: ReactNode;
|
|
735
|
+
}
|
|
736
|
+
/** Record component group for detail tables and field rows. */
|
|
737
|
+
export interface PresentationRecordComponentSystemComponents {
|
|
738
|
+
readonly RecordDetailEmptyState: (props: PresentationRecordDetailEmptyStateProps) => ReactNode;
|
|
739
|
+
readonly RecordDetailField: (props: PresentationRecordDetailFieldProps) => ReactNode;
|
|
740
|
+
readonly RecordDetails: (props: PresentationRecordDetailsProps) => ReactNode;
|
|
741
|
+
}
|
|
742
|
+
/** Form component group for projected input forms and their controls. */
|
|
743
|
+
export interface PresentationFormComponentSystemComponents<TDateTimeFilterValue = unknown> {
|
|
744
|
+
readonly CheckboxControl: (props: PresentationCheckboxControlProps) => ReactNode;
|
|
745
|
+
readonly ChoiceToggleGroup: (props: PresentationChoiceToggleGroupProps) => ReactNode;
|
|
746
|
+
readonly ChoiceToggleItem: (props: PresentationChoiceToggleItemProps) => ReactNode;
|
|
747
|
+
readonly DateTimeFilterControl: (props: PresentationDateTimeFilterControlProps<TDateTimeFilterValue>) => ReactNode;
|
|
748
|
+
readonly FormActionButton: (props: PresentationActionButtonProps) => ReactNode;
|
|
749
|
+
readonly FormFieldLabel: (props: PresentationFormFieldLabelProps) => ReactNode;
|
|
750
|
+
readonly InputForm: (props: PresentationInputFormProps) => ReactNode;
|
|
751
|
+
readonly InputFormActionRow: (props: PresentationInputFormActionRowProps) => ReactNode;
|
|
752
|
+
readonly InputFormControlGroup: (props: PresentationInputFormControlGroupProps) => ReactNode;
|
|
753
|
+
readonly InputFormControlSlot: (props: PresentationInputFormControlSlotProps) => ReactNode;
|
|
754
|
+
readonly InputFormField: (props: PresentationInputFormFieldProps) => ReactNode;
|
|
755
|
+
readonly InputFormFieldMessage: (props: PresentationInputFormFieldMessageProps) => ReactNode;
|
|
756
|
+
readonly InputFormGroup: (props: PresentationInputFormGroupProps) => ReactNode;
|
|
757
|
+
readonly InputFormGroups: (props: PresentationInputFormGroupsProps) => ReactNode;
|
|
758
|
+
readonly SelectControl: (props: PresentationSelectControlProps) => ReactNode;
|
|
759
|
+
readonly TextInputControl: (props: PresentationTextInputControlProps) => ReactNode;
|
|
760
|
+
}
|
|
761
|
+
/** Props for the semantic tabs layout projected from view regions. */
|
|
762
|
+
export interface PresentationTabsLayoutProps {
|
|
763
|
+
readonly children?: ReactNode;
|
|
764
|
+
readonly className?: string;
|
|
765
|
+
readonly onValueChange: (value: string) => void;
|
|
766
|
+
readonly value: string;
|
|
767
|
+
readonly viewId?: string | null;
|
|
768
|
+
}
|
|
769
|
+
/** Props for the list container of projected tabs. */
|
|
770
|
+
export interface PresentationTabsListProps {
|
|
771
|
+
readonly children?: ReactNode;
|
|
772
|
+
readonly className?: string;
|
|
773
|
+
readonly viewId?: string | null;
|
|
774
|
+
}
|
|
775
|
+
/** Props for a tab panel bound to a projected view region. */
|
|
776
|
+
export interface PresentationTabsPanelProps {
|
|
777
|
+
readonly children?: ReactNode;
|
|
778
|
+
readonly className?: string;
|
|
779
|
+
readonly region: ViewRegionDefinition;
|
|
780
|
+
readonly value: string;
|
|
781
|
+
readonly viewId?: string | null;
|
|
782
|
+
}
|
|
783
|
+
/** Props for a tab trigger bound to a projected view region. */
|
|
784
|
+
export interface PresentationTabsTriggerProps {
|
|
785
|
+
readonly children?: ReactNode;
|
|
786
|
+
readonly className?: string;
|
|
787
|
+
readonly isActive?: boolean;
|
|
788
|
+
readonly region: ViewRegionDefinition;
|
|
789
|
+
readonly value: string;
|
|
790
|
+
readonly viewId?: string | null;
|
|
791
|
+
}
|
|
792
|
+
/** Tabs component group for rendering view regions as controlled tabs. */
|
|
793
|
+
export interface PresentationTabsComponentSystemComponents {
|
|
794
|
+
readonly TabsLayout: (props: PresentationTabsLayoutProps) => ReactNode;
|
|
795
|
+
readonly TabsList: (props: PresentationTabsListProps) => ReactNode;
|
|
796
|
+
readonly TabsPanel: (props: PresentationTabsPanelProps) => ReactNode;
|
|
797
|
+
readonly TabsTrigger: (props: PresentationTabsTriggerProps) => ReactNode;
|
|
798
|
+
}
|
|
799
|
+
/** Props for modal prompt shells projected from presentation flows. */
|
|
800
|
+
export interface PresentationPromptModalProps {
|
|
801
|
+
readonly ariaLabelledBy: string;
|
|
802
|
+
readonly children?: ReactNode;
|
|
803
|
+
readonly className?: string;
|
|
804
|
+
readonly description?: ReactNode;
|
|
805
|
+
readonly footer?: ReactNode;
|
|
806
|
+
readonly headerActions?: ReactNode;
|
|
807
|
+
readonly onBackdropMouseDown?: MouseEventHandler<HTMLDivElement>;
|
|
808
|
+
readonly role?: string;
|
|
809
|
+
readonly title: ReactNode;
|
|
810
|
+
readonly titleId: string;
|
|
811
|
+
}
|
|
812
|
+
/** Props for prompt header actions and close affordances. */
|
|
813
|
+
export interface PresentationPromptHeaderActionsProps {
|
|
814
|
+
readonly actions?: ReactNode;
|
|
815
|
+
readonly className?: string;
|
|
816
|
+
readonly closeButton?: ReactNode;
|
|
817
|
+
readonly viewId?: string | null;
|
|
818
|
+
}
|
|
819
|
+
/** Props for prompt body content. */
|
|
820
|
+
export interface PresentationPromptContentProps {
|
|
821
|
+
readonly children?: ReactNode;
|
|
822
|
+
readonly className?: string;
|
|
823
|
+
readonly viewId?: string | null;
|
|
824
|
+
}
|
|
825
|
+
/** Props for prompt footer content. */
|
|
826
|
+
export interface PresentationPromptFooterProps {
|
|
827
|
+
readonly children?: ReactNode;
|
|
828
|
+
readonly className?: string;
|
|
829
|
+
readonly viewId?: string | null;
|
|
830
|
+
}
|
|
831
|
+
/** Props for a projected prompt region. */
|
|
832
|
+
export interface PresentationPromptRegionProps {
|
|
833
|
+
readonly children?: ReactNode;
|
|
834
|
+
readonly className?: string;
|
|
835
|
+
readonly region: ViewRegionDefinition;
|
|
836
|
+
readonly viewId?: string | null;
|
|
837
|
+
}
|
|
838
|
+
/** Prompt component group for modal flow and prompt rendering. */
|
|
839
|
+
export interface PresentationPromptComponentSystemComponents {
|
|
840
|
+
readonly PromptContent: (props: PresentationPromptContentProps) => ReactNode;
|
|
841
|
+
readonly PromptFooter: (props: PresentationPromptFooterProps) => ReactNode;
|
|
842
|
+
readonly PromptHeaderActions: (props: PresentationPromptHeaderActionsProps) => ReactNode;
|
|
843
|
+
readonly PromptModal: (props: PresentationPromptModalProps) => ReactNode;
|
|
844
|
+
readonly PromptRegion: (props: PresentationPromptRegionProps) => ReactNode;
|
|
845
|
+
}
|
|
846
|
+
/** Props for notices describing process tasks and available actions. */
|
|
847
|
+
export interface PresentationProcessTaskNoticeProps {
|
|
848
|
+
readonly actions?: ReactNode;
|
|
849
|
+
readonly className?: string;
|
|
850
|
+
readonly description?: ReactNode;
|
|
851
|
+
readonly icon?: ReactNode;
|
|
852
|
+
readonly title: ReactNode;
|
|
853
|
+
}
|
|
854
|
+
/** Process component group for workflow/task presentation elements. */
|
|
855
|
+
export interface PresentationProcessComponentSystemComponents {
|
|
856
|
+
readonly ProcessTaskNotice: (props: PresentationProcessTaskNoticeProps) => ReactNode;
|
|
857
|
+
}
|
|
858
|
+
/** Props for a projected view chrome action slot. */
|
|
859
|
+
export interface PresentationViewChromeActionSlotProps {
|
|
860
|
+
readonly children?: ReactNode;
|
|
861
|
+
readonly className?: string;
|
|
862
|
+
readonly slotId?: string;
|
|
863
|
+
readonly viewId?: string | null;
|
|
864
|
+
}
|
|
865
|
+
/** Props for badge strips projected into view chrome. */
|
|
866
|
+
export interface PresentationViewChromeBadgeStripProps {
|
|
867
|
+
readonly badges: readonly ReactNode[];
|
|
868
|
+
readonly className?: string;
|
|
869
|
+
readonly slotId?: string;
|
|
870
|
+
readonly viewId?: string | null;
|
|
871
|
+
}
|
|
872
|
+
/** Props for metric strips projected into view chrome. */
|
|
873
|
+
export interface PresentationViewChromeMetricStripProps {
|
|
874
|
+
readonly children?: ReactNode;
|
|
875
|
+
readonly className?: string;
|
|
876
|
+
readonly message?: ReactNode;
|
|
877
|
+
readonly slotId?: string | null;
|
|
878
|
+
readonly viewId?: string | null;
|
|
879
|
+
}
|
|
880
|
+
/** Props for an arbitrary projected view chrome slot. */
|
|
881
|
+
export interface PresentationViewChromeSlotProps {
|
|
882
|
+
readonly children?: ReactNode;
|
|
883
|
+
readonly className?: string;
|
|
884
|
+
readonly placement?: string | number | null;
|
|
885
|
+
readonly slot: ViewChromeSlotDefinition;
|
|
886
|
+
readonly viewId?: string | null;
|
|
887
|
+
}
|
|
888
|
+
/** Item contract for layout and view switches rendered in chrome. */
|
|
889
|
+
export interface PresentationViewChromeSwitchItem {
|
|
890
|
+
readonly icon?: ReactNode;
|
|
891
|
+
readonly id: string;
|
|
892
|
+
readonly isActive: boolean;
|
|
893
|
+
readonly label: ReactNode;
|
|
894
|
+
readonly onSelect: () => void;
|
|
895
|
+
}
|
|
896
|
+
/** Props for controlled switch groups in view chrome. */
|
|
897
|
+
export interface PresentationViewChromeSwitchProps {
|
|
898
|
+
readonly ariaLabel: string;
|
|
899
|
+
readonly className?: string;
|
|
900
|
+
readonly items: readonly PresentationViewChromeSwitchItem[];
|
|
901
|
+
readonly slotId?: string;
|
|
902
|
+
readonly viewId?: string | null;
|
|
903
|
+
}
|
|
904
|
+
/** View chrome component group for actions, badges, metrics, slots, and switches. */
|
|
905
|
+
export interface PresentationViewChromeComponentSystemComponents {
|
|
906
|
+
readonly ActionSlot: (props: PresentationViewChromeActionSlotProps) => ReactNode;
|
|
907
|
+
readonly BadgeStrip: (props: PresentationViewChromeBadgeStripProps) => ReactNode;
|
|
908
|
+
readonly LayoutSwitch: (props: PresentationViewChromeSwitchProps) => ReactNode;
|
|
909
|
+
readonly MetricStripSlot: (props: PresentationViewChromeMetricStripProps) => ReactNode;
|
|
910
|
+
readonly ViewChromeSlot: (props: PresentationViewChromeSlotProps) => ReactNode;
|
|
911
|
+
readonly ViewSwitch: (props: PresentationViewChromeSwitchProps) => ReactNode;
|
|
912
|
+
}
|
|
913
|
+
/** Props required from the button primitive used by view chrome switches. */
|
|
914
|
+
export interface PresentationViewChromeSwitchButtonProps {
|
|
915
|
+
readonly 'aria-pressed'?: boolean;
|
|
916
|
+
readonly children?: ReactNode;
|
|
917
|
+
readonly onClick?: () => void;
|
|
918
|
+
readonly size?: 'sm';
|
|
919
|
+
readonly type?: 'button';
|
|
920
|
+
readonly variant?: 'ghost' | 'secondary';
|
|
921
|
+
}
|
|
922
|
+
/** Primitive dependency required to build view chrome components. */
|
|
923
|
+
export interface CreateShadcnViewChromeComponentsOptions {
|
|
924
|
+
readonly Button: ComponentType<PresentationViewChromeSwitchButtonProps>;
|
|
925
|
+
}
|
|
926
|
+
/** Creates the action component group from a compatible button primitive. */
|
|
927
|
+
export declare function createShadcnActionComponents({ Button, }: CreateShadcnActionComponentsOptions): PresentationActionComponentSystemComponents;
|
|
928
|
+
/** Creates the badge component group from a compatible badge primitive. */
|
|
929
|
+
export declare function createShadcnBadgeComponents({ Badge, }: CreateShadcnBadgeComponentsOptions): PresentationBadgeComponentSystemComponents;
|
|
930
|
+
/** Creates navigation components that style router links as action-like buttons. */
|
|
931
|
+
export declare function createShadcnNavigationComponents({ buttonClassName, Link, }: CreateShadcnNavigationComponentsOptions): PresentationNavigationComponentSystemComponents;
|
|
932
|
+
/** Creates feedback components with default shadcn/Tailwind styling. */
|
|
933
|
+
export declare function createShadcnFeedbackComponents(): PresentationFeedbackComponentSystemComponents;
|
|
934
|
+
/** Creates metric components for compact semantic summaries. */
|
|
935
|
+
export declare function createShadcnMetricComponents(): PresentationMetricComponentSystemComponents;
|
|
936
|
+
/** Creates form components from shadcn-compatible form primitives. */
|
|
937
|
+
export declare function createShadcnFormComponents<TDateTimeFilterValue = unknown>({ Button, DateTimeFilter, Input, Label, ToggleGroup, ToggleGroupItem, }: CreateShadcnFormComponentsOptions<TDateTimeFilterValue>): PresentationFormComponentSystemComponents<TDateTimeFilterValue>;
|
|
938
|
+
/** Creates collection chrome components for query, summary, body, detail, pagination, and selection slots. */
|
|
939
|
+
export declare function createShadcnCollectionChromeComponents({ Button, }: CreateShadcnCollectionChromeComponentsOptions): PresentationCollectionChromeComponentSystemComponents;
|
|
940
|
+
/** Creates collection components around an injected data table and detail layout. */
|
|
941
|
+
export declare function createShadcnCollectionComponents<TDataTableRenderer extends PresentationDataTableRenderer = PresentationDataTableRenderer>({ CollectionDetailLayout, DataTable, rowActionMenuTriggerClassName, }: CreateShadcnCollectionComponentsOptions<TDataTableRenderer>): PresentationCollectionComponentSystemComponents<TDataTableRenderer>;
|
|
942
|
+
/** Creates surface components that compose projected view content with chrome. */
|
|
943
|
+
export declare function createShadcnSurfaceComponents({ Surface, }: CreateShadcnSurfaceComponentsOptions): PresentationSurfaceComponentSystemComponents;
|
|
944
|
+
/** Creates document workspace components from tree, layout, badge, and JSON primitives. */
|
|
945
|
+
export declare function createShadcnDocumentWorkspaceComponents<TTreeControlsProps extends object = object, TJsonDocumentDiffProps extends object = object, TJsonDocumentEditorProps extends object = object>({ Badge, DocumentWorkspaceTreeControls, DocumentWorkspaceTreeItem, DocumentWorkspaceTreeLayout, DocumentWorkspaceTreeView, JsonDocumentDiff, JsonDocumentEditor, resolveSurfaceSlotOptions, }: CreateShadcnDocumentWorkspaceComponentsOptions<TTreeControlsProps, TJsonDocumentDiffProps, TJsonDocumentEditorProps>): PresentationDocumentWorkspaceComponentSystemComponents<TTreeControlsProps, TJsonDocumentDiffProps, TJsonDocumentEditorProps>;
|
|
946
|
+
/** Creates a split tree/detail layout adapter for document workspaces. */
|
|
947
|
+
export declare function createShadcnDocumentWorkspaceTreeLayout({ Group, Panel, Separator, }: CreateShadcnDocumentWorkspaceTreeLayoutOptions): ({ className, detail, detailDefaultSize, detailId, detailMinSize, splitterClassName, splitterHandleClassName, tree, treeDefaultSize, treeId, treeMinSize, }: PresentationDocumentWorkspaceTreeLayoutProps) => import("react").ReactElement<PresentationDocumentWorkspaceTreeLayoutGroupPrimitiveProps, string | import("react").JSXElementConstructor<any>>;
|
|
948
|
+
/** Creates a document workspace tree item adapter. */
|
|
949
|
+
export declare function createShadcnDocumentWorkspaceTreeItem({ TreeItem, }: CreateShadcnDocumentWorkspaceTreeItemOptions): ({ children, itemId, label }: PresentationDocumentWorkspaceTreeItemProps) => import("react").ReactElement<PresentationDocumentWorkspaceTreeItemPrimitiveProps, string | import("react").JSXElementConstructor<any>>;
|
|
950
|
+
/** Creates a controlled document workspace tree view adapter. */
|
|
951
|
+
export declare function createShadcnDocumentWorkspaceTreeView<TSx = unknown>({ sx, TreeView, }: CreateShadcnDocumentWorkspaceTreeViewOptions<TSx>): ({ ariaLabel, children, expandedItemIds, onExpandedItemIdsChange, onSelectedItemIdChange, selectedItemId, }: PresentationDocumentWorkspaceTreeViewProps) => import("react").ReactElement<PresentationDocumentWorkspaceTreeViewPrimitiveProps<TSx>, string | import("react").JSXElementConstructor<any>>;
|
|
952
|
+
/** Wraps a JSON diff component so it fits the document workspace component contract. */
|
|
953
|
+
export declare function createShadcnJsonDocumentDiff<TProps extends object>({ JsonDocumentDiff, }: CreateShadcnJsonDocumentDiffOptions<TProps>): (props: TProps) => import("react").ReactElement<TProps, string | import("react").JSXElementConstructor<any>>;
|
|
954
|
+
/** Wraps a lazy JSON editor component in Suspense with a configurable fallback. */
|
|
955
|
+
export declare function createShadcnJsonDocumentEditor<TProps extends object>({ fallbackClassName, fallbackLabel, JsonDocumentEditor, }: CreateShadcnJsonDocumentEditorOptions<TProps>): (props: TProps) => import("react").FunctionComponentElement<import("react").SuspenseProps>;
|
|
956
|
+
/** Creates field value components for record and collection projections. */
|
|
957
|
+
export declare function createShadcnFieldValueComponents(): PresentationFieldValueComponentSystemComponents;
|
|
958
|
+
/** Creates record detail components for projected field/value tables. */
|
|
959
|
+
export declare function createShadcnRecordComponents(): PresentationRecordComponentSystemComponents;
|
|
960
|
+
/** Creates tabs components from shadcn-compatible tabs primitives. */
|
|
961
|
+
export declare function createShadcnTabsComponents({ Tabs, TabsContent, TabsList, TabsTrigger, }: CreateShadcnTabsComponentsOptions): PresentationTabsComponentSystemComponents;
|
|
962
|
+
/** Creates process components for projected workflow/task notices. */
|
|
963
|
+
export declare function createShadcnProcessComponents(): PresentationProcessComponentSystemComponents;
|
|
964
|
+
/** Creates prompt components for modal presentation flows. */
|
|
965
|
+
export declare function createShadcnPromptComponents(): PresentationPromptComponentSystemComponents;
|
|
966
|
+
/** Creates view chrome components for projected actions, badges, metrics, and switches. */
|
|
967
|
+
export declare function createShadcnViewChromeComponents({ Button, }: CreateShadcnViewChromeComponentsOptions): PresentationViewChromeComponentSystemComponents;
|
|
968
|
+
//# sourceMappingURL=presentation-component-groups.d.ts.map
|