@flanksource/clicky-ui 0.3.15 → 0.3.17
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/NOTICE.md +10 -0
- package/dist/ai.cjs +33 -4
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +31 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +6 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +7 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +92 -170
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -111
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +95 -173
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxActions.cjs +70 -0
- package/dist/components/ComboboxActions.cjs.map +1 -0
- package/dist/components/ComboboxActions.d.ts +8 -0
- package/dist/components/ComboboxActions.d.ts.map +1 -0
- package/dist/components/ComboboxActions.js +70 -0
- package/dist/components/ComboboxActions.js.map +1 -0
- package/dist/components/ComboboxMenu.cjs +160 -0
- package/dist/components/ComboboxMenu.cjs.map +1 -0
- package/dist/components/ComboboxMenu.d.ts +22 -0
- package/dist/components/ComboboxMenu.d.ts.map +1 -0
- package/dist/components/ComboboxMenu.js +160 -0
- package/dist/components/ComboboxMenu.js.map +1 -0
- package/dist/components/EndpointSelector.cjs +407 -0
- package/dist/components/EndpointSelector.cjs.map +1 -0
- package/dist/components/EndpointSelector.d.ts +3 -0
- package/dist/components/EndpointSelector.d.ts.map +1 -0
- package/dist/components/EndpointSelector.js +407 -0
- package/dist/components/EndpointSelector.js.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +52 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -0
- package/dist/components/FilterBar.cjs +12 -0
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +12 -0
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +11 -12
- package/dist/components/InputField.cjs.map +1 -1
- package/dist/components/InputField.d.ts +7 -0
- package/dist/components/InputField.d.ts.map +1 -1
- package/dist/components/InputField.js +12 -13
- package/dist/components/InputField.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +22 -16
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +22 -16
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +3 -3
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -3
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +150 -77
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +151 -78
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/WorkloadPicker.cjs +2 -1
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +6 -1
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +2 -1
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/combobox-types.d.ts +107 -0
- package/dist/components/combobox-types.d.ts.map +1 -0
- package/dist/components/combobox-utils.cjs +21 -0
- package/dist/components/combobox-utils.cjs.map +1 -0
- package/dist/components/combobox-utils.d.ts +15 -0
- package/dist/components/combobox-utils.d.ts.map +1 -0
- package/dist/components/combobox-utils.js +21 -0
- package/dist/components/combobox-utils.js.map +1 -0
- package/dist/components/endpoint-port.cjs +12 -0
- package/dist/components/endpoint-port.cjs.map +1 -0
- package/dist/components/endpoint-port.d.ts +4 -0
- package/dist/components/endpoint-port.d.ts.map +1 -0
- package/dist/components/endpoint-port.js +12 -0
- package/dist/components/endpoint-port.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +12 -23
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +12 -23
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-discriminator.cjs +6 -2
- package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
- package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
- package/dist/components/json-schema-form-discriminator.js +6 -2
- package/dist/components/json-schema-form-discriminator.js.map +1 -1
- package/dist/components/json-schema-form-error-display.cjs +50 -0
- package/dist/components/json-schema-form-error-display.cjs.map +1 -0
- package/dist/components/json-schema-form-error-display.d.ts +12 -0
- package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
- package/dist/components/json-schema-form-error-display.js +50 -0
- package/dist/components/json-schema-form-error-display.js.map +1 -0
- package/dist/components/json-schema-form-error-types.d.ts +26 -0
- package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.cjs +169 -0
- package/dist/components/json-schema-form-errors.cjs.map +1 -0
- package/dist/components/json-schema-form-errors.d.ts +14 -0
- package/dist/components/json-schema-form-errors.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.js +169 -0
- package/dist/components/json-schema-form-errors.js.map +1 -0
- package/dist/components/json-schema-form-object.cjs +12 -2
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +12 -2
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-refs.cjs +84 -19
- package/dist/components/json-schema-form-refs.cjs.map +1 -1
- package/dist/components/json-schema-form-refs.d.ts.map +1 -1
- package/dist/components/json-schema-form-refs.js +84 -19
- package/dist/components/json-schema-form-refs.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +33 -10
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +34 -11
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +16 -4
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +17 -5
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -3
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +13 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +8 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +15 -2
- package/dist/components.js.map +1 -1
- package/dist/data/DataTable.cjs +205 -14
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +41 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.cjs +21 -0
- package/dist/data/DataTable.grouping.cjs.map +1 -0
- package/dist/data/DataTable.grouping.d.ts +26 -0
- package/dist/data/DataTable.grouping.d.ts.map +1 -0
- package/dist/data/DataTable.grouping.js +21 -0
- package/dist/data/DataTable.grouping.js.map +1 -0
- package/dist/data/DataTable.js +205 -14
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Markdown.cjs +45 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +45 -1
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +4 -3
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.d.ts +6 -2
- package/dist/data/MarkdownEditor.d.ts.map +1 -1
- package/dist/data/MarkdownEditor.js +4 -3
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/ServerTimingBadge.cjs +64 -0
- package/dist/data/ServerTimingBadge.cjs.map +1 -0
- package/dist/data/ServerTimingBadge.d.ts +9 -0
- package/dist/data/ServerTimingBadge.d.ts.map +1 -0
- package/dist/data/ServerTimingBadge.js +64 -0
- package/dist/data/ServerTimingBadge.js.map +1 -0
- package/dist/data/StatStrip.cjs +99 -0
- package/dist/data/StatStrip.cjs.map +1 -0
- package/dist/data/StatStrip.d.ts +41 -0
- package/dist/data/StatStrip.d.ts.map +1 -0
- package/dist/data/StatStrip.js +99 -0
- package/dist/data/StatStrip.js.map +1 -0
- package/dist/data/TaskManager.cjs +20 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +3 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +20 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +49 -0
- package/dist/data/TaskManagerButton.cjs.map +1 -0
- package/dist/data/TaskManagerButton.d.ts +8 -0
- package/dist/data/TaskManagerButton.d.ts.map +1 -0
- package/dist/data/TaskManagerButton.js +49 -0
- package/dist/data/TaskManagerButton.js.map +1 -0
- package/dist/data/TaskProcessDetails.cjs +113 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -0
- package/dist/data/TaskProcessDetails.d.ts +6 -0
- package/dist/data/TaskProcessDetails.d.ts.map +1 -0
- package/dist/data/TaskProcessDetails.js +113 -0
- package/dist/data/TaskProcessDetails.js.map +1 -0
- package/dist/data/TaskProgress.cjs +106 -19
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +4 -2
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +107 -20
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +43 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/Tree.cjs +91 -82
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +3 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +91 -82
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts +2 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +18 -141
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +2 -40
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +15 -138
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.models.cjs +11 -0
- package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.models.d.ts +3 -0
- package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.models.js +11 -0
- package/dist/data/ai/ChatWindow.models.js.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.js +57 -0
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs +14 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts +5 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.js +14 -0
- package/dist/data/ai/ChatWindow.thread-status.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread.cjs +68 -0
- package/dist/data/ai/ChatWindow.thread.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread.d.ts +16 -0
- package/dist/data/ai/ChatWindow.thread.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread.js +68 -0
- package/dist/data/ai/ChatWindow.thread.js.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
- package/dist/data/ai/ChatWindow.types.d.ts +41 -0
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
- package/dist/data/ai/ContextBadges.cjs +76 -46
- package/dist/data/ai/ContextBadges.cjs.map +1 -1
- package/dist/data/ai/ContextBadges.d.ts.map +1 -1
- package/dist/data/ai/ContextBadges.js +77 -47
- package/dist/data/ai/ContextBadges.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +2 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs +7 -0
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +18 -2
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js +7 -0
- package/dist/data/ai/PromptPicker/types.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +171 -91
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +9 -9
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +175 -95
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +47 -0
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts +17 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.js +47 -0
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -0
- package/dist/data/ai/RuntimeBar.cjs +408 -0
- package/dist/data/ai/RuntimeBar.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.d.ts +20 -0
- package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.js +408 -0
- package/dist/data/ai/RuntimeBar.js.map +1 -0
- package/dist/data/ai/RuntimeBar.model.cjs +14 -0
- package/dist/data/ai/RuntimeBar.model.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.model.d.ts +10 -0
- package/dist/data/ai/RuntimeBar.model.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.model.js +14 -0
- package/dist/data/ai/RuntimeBar.model.js.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.cjs +359 -0
- package/dist/data/ai/RuntimeBarCombo.cjs.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts +22 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.js +359 -0
- package/dist/data/ai/RuntimeBarCombo.js.map +1 -0
- package/dist/data/ai/SessionChatComposer.cjs +56 -0
- package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
- package/dist/data/ai/SessionChatComposer.d.ts +24 -0
- package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
- package/dist/data/ai/SessionChatComposer.js +56 -0
- package/dist/data/ai/SessionChatComposer.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +222 -382
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.cjs +377 -0
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
- package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.js +377 -0
- package/dist/data/ai/SessionInspector.collection.js.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +9 -4
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.files.cjs +162 -0
- package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.files.d.ts +5 -0
- package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.files.js +162 -0
- package/dist/data/ai/SessionInspector.files.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
- package/dist/data/ai/SessionInspector.js +224 -384
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +125 -0
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.model.d.ts +14 -0
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.model.js +125 -0
- package/dist/data/ai/SessionInspector.model.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +265 -0
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panels.js +265 -0
- package/dist/data/ai/SessionInspector.panels.js.map +1 -0
- package/dist/data/ai/SessionInspector.plan.cjs +77 -0
- package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
- package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.plan.js +77 -0
- package/dist/data/ai/SessionInspector.plan.js.map +1 -0
- package/dist/data/ai/SessionInspector.summary.cjs +182 -0
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.summary.js +182 -0
- package/dist/data/ai/SessionInspector.summary.js.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.js +94 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
- package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
- package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +86 -121
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +8 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +118 -0
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.header.d.ts +11 -0
- package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.header.js +118 -0
- package/dist/data/ai/SessionViewer.header.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +87 -122
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +111 -39
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +6 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +111 -39
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
- package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.js +15 -0
- package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
- package/dist/data/ai/SessionViewer.rows.cjs +37 -424
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +31 -418
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.js +65 -0
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.js +404 -0
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +11 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts +2 -0
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +2 -1
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +2 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/agent-action-icons.cjs +7 -10
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts +1 -2
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +8 -11
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/context.cjs.map +1 -1
- package/dist/data/ai/context.d.ts +4 -0
- package/dist/data/ai/context.d.ts.map +1 -1
- package/dist/data/ai/context.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/claude.cjs +252 -0
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude.js +252 -0
- package/dist/data/ai/examples/sessions/claude.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex.cjs +236 -0
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex.js +236 -0
- package/dist/data/ai/examples/sessions/codex.js.map +1 -0
- package/dist/data/ai/examples/sessions/index.cjs +21 -0
- package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/index.d.ts +10 -0
- package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/index.js +21 -0
- package/dist/data/ai/examples/sessions/index.js.map +1 -0
- package/dist/data/ai/index.d.ts +9 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +12 -1
- package/dist/data/ai/model-capabilities.cjs.map +1 -1
- package/dist/data/ai/model-capabilities.d.ts +2 -6
- package/dist/data/ai/model-capabilities.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.js +12 -1
- package/dist/data/ai/model-capabilities.js.map +1 -1
- package/dist/data/ai/runtime-mode.cjs +72 -1
- package/dist/data/ai/runtime-mode.cjs.map +1 -1
- package/dist/data/ai/runtime-mode.d.ts +28 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -1
- package/dist/data/ai/runtime-mode.js +73 -2
- package/dist/data/ai/runtime-mode.js.map +1 -1
- package/dist/data/cells/EntityCell.cjs +64 -0
- package/dist/data/cells/EntityCell.cjs.map +1 -0
- package/dist/data/cells/EntityCell.d.ts +27 -0
- package/dist/data/cells/EntityCell.d.ts.map +1 -0
- package/dist/data/cells/EntityCell.js +64 -0
- package/dist/data/cells/EntityCell.js.map +1 -0
- package/dist/data/chat/Attachment.cjs +53 -13
- package/dist/data/chat/Attachment.cjs.map +1 -1
- package/dist/data/chat/Attachment.d.ts +9 -3
- package/dist/data/chat/Attachment.d.ts.map +1 -1
- package/dist/data/chat/Attachment.js +54 -14
- package/dist/data/chat/Attachment.js.map +1 -1
- package/dist/data/chat/Chat.cjs +113 -36
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +11 -4
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +111 -34
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +240 -66
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +11 -3
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +241 -67
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +55 -3
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +5 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +55 -3
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/ModelSelector.cjs +8 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +9 -11
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/PromptInput.cjs +56 -5
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +10 -1
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +57 -6
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/approval.cjs +21 -0
- package/dist/data/chat/approval.cjs.map +1 -0
- package/dist/data/chat/approval.d.ts +11 -0
- package/dist/data/chat/approval.d.ts.map +1 -0
- package/dist/data/chat/approval.js +21 -0
- package/dist/data/chat/approval.js.map +1 -0
- package/dist/data/chat/attachment-upload.cjs +33 -0
- package/dist/data/chat/attachment-upload.cjs.map +1 -0
- package/dist/data/chat/attachment-upload.d.ts +21 -0
- package/dist/data/chat/attachment-upload.d.ts.map +1 -0
- package/dist/data/chat/attachment-upload.js +33 -0
- package/dist/data/chat/attachment-upload.js.map +1 -0
- package/dist/data/chat/effort-icons.cjs +36 -6
- package/dist/data/chat/effort-icons.cjs.map +1 -1
- package/dist/data/chat/effort-icons.d.ts +6 -3
- package/dist/data/chat/effort-icons.d.ts.map +1 -1
- package/dist/data/chat/effort-icons.js +37 -7
- package/dist/data/chat/effort-icons.js.map +1 -1
- package/dist/data/chat/index.d.ts +3 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/models.cjs +8 -0
- package/dist/data/chat/models.cjs.map +1 -0
- package/dist/data/chat/models.d.ts +11 -0
- package/dist/data/chat/models.d.ts.map +1 -0
- package/dist/data/chat/models.js +8 -0
- package/dist/data/chat/models.js.map +1 -0
- package/dist/data/chat/provider-icons.cjs +49 -16
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +2 -0
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +50 -17
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +21 -0
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/examples/markdown-preview-mock.cjs +45 -0
- package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
- package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
- package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
- package/dist/data/examples/markdown-preview-mock.js +45 -0
- package/dist/data/examples/markdown-preview-mock.js.map +1 -0
- package/dist/data/examples/markdown-syntax.cjs +36 -0
- package/dist/data/examples/markdown-syntax.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.d.ts +12 -0
- package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
- package/dist/data/examples/markdown-syntax.js +36 -0
- package/dist/data/examples/markdown-syntax.js.map +1 -0
- package/dist/data/examples/markdown-syntax.md.cjs +4 -0
- package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.md.js +5 -0
- package/dist/data/examples/markdown-syntax.md.js.map +1 -0
- package/dist/data/server-timing.cjs +120 -0
- package/dist/data/server-timing.cjs.map +1 -0
- package/dist/data/server-timing.d.ts +11 -0
- package/dist/data/server-timing.d.ts.map +1 -0
- package/dist/data/server-timing.js +120 -0
- package/dist/data/server-timing.js.map +1 -0
- package/dist/data/task-process-details.cjs +48 -0
- package/dist/data/task-process-details.cjs.map +1 -0
- package/dist/data/task-process-details.d.ts +5 -0
- package/dist/data/task-process-details.d.ts.map +1 -0
- package/dist/data/task-process-details.js +48 -0
- package/dist/data/task-process-details.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +37 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +9 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +37 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-hotkey.cjs +98 -0
- package/dist/hooks/use-hotkey.cjs.map +1 -0
- package/dist/hooks/use-hotkey.d.ts +42 -0
- package/dist/hooks/use-hotkey.d.ts.map +1 -0
- package/dist/hooks/use-hotkey.js +98 -0
- package/dist/hooks/use-hotkey.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +23 -1
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +23 -1
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks.cjs +4 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiBank.cjs +15 -0
- package/dist/icons/components/UiBank.cjs.map +1 -0
- package/dist/icons/components/UiBank.d.ts +15 -0
- package/dist/icons/components/UiBank.d.ts.map +1 -0
- package/dist/icons/components/UiBank.js +15 -0
- package/dist/icons/components/UiBank.js.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
- package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.js +15 -0
- package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
- package/dist/icons/components/UiCloudUpload.cjs +15 -0
- package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
- package/dist/icons/components/UiCloudUpload.d.ts +15 -0
- package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
- package/dist/icons/components/UiCloudUpload.js +15 -0
- package/dist/icons/components/UiCloudUpload.js.map +1 -0
- package/dist/icons/components/UiLedger.cjs +15 -0
- package/dist/icons/components/UiLedger.cjs.map +1 -0
- package/dist/icons/components/UiLedger.d.ts +15 -0
- package/dist/icons/components/UiLedger.d.ts.map +1 -0
- package/dist/icons/components/UiLedger.js +15 -0
- package/dist/icons/components/UiLedger.js.map +1 -0
- package/dist/icons/components/UiReceipt.cjs +15 -0
- package/dist/icons/components/UiReceipt.cjs.map +1 -0
- package/dist/icons/components/UiReceipt.d.ts +15 -0
- package/dist/icons/components/UiReceipt.d.ts.map +1 -0
- package/dist/icons/components/UiReceipt.js +15 -0
- package/dist/icons/components/UiReceipt.js.map +1 -0
- package/dist/icons/index.d.ts +10 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +15 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +54 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +56 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +270 -238
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +9 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.debug.cjs +53 -0
- package/dist/layout/AppShell.debug.cjs.map +1 -0
- package/dist/layout/AppShell.debug.d.ts +6 -0
- package/dist/layout/AppShell.debug.d.ts.map +1 -0
- package/dist/layout/AppShell.debug.js +53 -0
- package/dist/layout/AppShell.debug.js.map +1 -0
- package/dist/layout/AppShell.js +269 -237
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +90 -0
- package/dist/layout/AppShell.nav.cjs.map +1 -0
- package/dist/layout/AppShell.nav.d.ts +7 -0
- package/dist/layout/AppShell.nav.d.ts.map +1 -0
- package/dist/layout/AppShell.nav.js +90 -0
- package/dist/layout/AppShell.nav.js.map +1 -0
- package/dist/layout/AppSidebar.cjs +35 -5
- package/dist/layout/AppSidebar.cjs.map +1 -1
- package/dist/layout/AppSidebar.d.ts +4 -1
- package/dist/layout/AppSidebar.d.ts.map +1 -1
- package/dist/layout/AppSidebar.js +35 -5
- package/dist/layout/AppSidebar.js.map +1 -1
- package/dist/layout/Panel.cjs +25 -41
- package/dist/layout/Panel.cjs.map +1 -1
- package/dist/layout/Panel.d.ts +2 -1
- package/dist/layout/Panel.d.ts.map +1 -1
- package/dist/layout/Panel.js +26 -42
- package/dist/layout/Panel.js.map +1 -1
- package/dist/layout/PanelFrame.cjs +56 -0
- package/dist/layout/PanelFrame.cjs.map +1 -0
- package/dist/layout/PanelFrame.d.ts +15 -0
- package/dist/layout/PanelFrame.d.ts.map +1 -0
- package/dist/layout/PanelFrame.js +56 -0
- package/dist/layout/PanelFrame.js.map +1 -0
- package/dist/layout/Section.cjs +51 -41
- package/dist/layout/Section.cjs.map +1 -1
- package/dist/layout/Section.d.ts +3 -2
- package/dist/layout/Section.d.ts.map +1 -1
- package/dist/layout/Section.js +51 -41
- package/dist/layout/Section.js.map +1 -1
- package/dist/layout/content-width.cjs +8 -0
- package/dist/layout/content-width.cjs.map +1 -0
- package/dist/layout/content-width.d.ts +3 -0
- package/dist/layout/content-width.d.ts.map +1 -0
- package/dist/layout/content-width.js +8 -0
- package/dist/layout/content-width.js.map +1 -0
- package/dist/overlay/CommandPalette.cjs +207 -0
- package/dist/overlay/CommandPalette.cjs.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +71 -0
- package/dist/overlay/CommandPalette.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.js +207 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/CommandPalette.model.cjs +70 -0
- package/dist/overlay/CommandPalette.model.cjs.map +1 -0
- package/dist/overlay/CommandPalette.model.d.ts +71 -0
- package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.model.js +70 -0
- package/dist/overlay/CommandPalette.model.js.map +1 -0
- package/dist/overlay/CommandPaletteList.cjs +88 -0
- package/dist/overlay/CommandPaletteList.cjs.map +1 -0
- package/dist/overlay/CommandPaletteList.d.ts +23 -0
- package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteList.js +88 -0
- package/dist/overlay/CommandPaletteList.js.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
- package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.js +36 -0
- package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
- package/dist/overlay/HoverCard.cjs.map +1 -1
- package/dist/overlay/HoverCard.d.ts +2 -2
- package/dist/overlay/HoverCard.d.ts.map +1 -1
- package/dist/overlay/HoverCard.js.map +1 -1
- package/dist/overlay/Modal.cjs +12 -5
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +12 -5
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.js +1 -1
- package/dist/overlay/zIndex.cjs +2 -0
- package/dist/overlay/zIndex.cjs.map +1 -1
- package/dist/overlay/zIndex.js +2 -0
- package/dist/overlay/zIndex.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +6 -0
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +6 -0
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +45 -71
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +12 -2
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +46 -72
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +42 -0
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +2 -1
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +42 -0
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +2 -1
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +2 -1
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +15 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +15 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppSidebar.js","sources":["../../src/layout/AppSidebar.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiSidebar } from \"../icons\";\nimport type { RenderLink } from \"../rpc/EndpointList\";\nimport { useRouter } from \"../rpc/router\";\n\n// AppSidebar / AppLayout are a router-agnostic application shell: a collapsible\n// left navigation rail driven by declarative sections, plus a flex layout that\n// pairs it with an optional header and the routed content. Navigation and active\n// state come from the RouterAdapter (see ../rpc/router) — by default a plain\n// <a href={to}> browser adapter, or the host's react-router/memory adapter via\n// RouterProvider. The `pathname` and `renderLink` props still override the\n// adapter for cases where a rail's active state is independent of the URL.\n//\n// A section may carry flat `items` and/or collapsible `groups`. Groups are for\n// high-cardinality clusters (e.g. provider surfaces) that benefit from being\n// folded away; their open/closed state persists per `group.key`.\n\nexport interface AppNavItem {\n /** Stable key; also used as the React key. */\n key: string;\n title: string;\n /** Destination passed to renderLink (or href for external items). */\n to: string;\n icon?: ReactNode;\n /** Render a plain anchor (new-tab style) instead of a routed link. */\n external?: boolean;\n /** Optional trailing adornment (count, status dot, etc.). */\n badge?: ReactNode;\n}\n\nexport interface AppNavGroup {\n /** Stable key; also the persistence key for collapsed state. */\n key: string;\n label: string;\n icon?: ReactNode;\n /** Collapsed on first render until the user toggles it. */\n defaultCollapsed?: boolean;\n items?: AppNavItem[];\n /** Nested groups (one extra level, e.g. Providers > Xero). */\n groups?: AppNavGroup[];\n}\n\nexport interface AppNavSection {\n /** Section heading; omitted for the leading section. */\n label?: string;\n items?: AppNavItem[];\n /** Collapsible groups rendered after the flat items. */\n groups?: AppNavGroup[];\n}\n\nexport interface AppSidebarProps {\n sections: AppNavSection[];\n /** Current path for active-state. Defaults to the RouterAdapter's pathname. */\n pathname?: string;\n /** Render routed links. Defaults to the RouterAdapter's renderLink (a plain\n * <a href={to}> unless a RouterProvider supplies a router Link). */\n renderLink?: RenderLink;\n /** Branding shown at the top of the expanded rail (logo/title). */\n header?: ReactNode;\n /** Pinned to the bottom of the rail (theme switcher, version, etc.). */\n footer?: ReactNode;\n /** localStorage key persisting the rail collapsed state. */\n collapsedStorageKey?: string;\n /** localStorage key persisting per-group collapsed state. */\n groupCollapsedStorageKey?: string;\n /** Override the default prefix-match active test. */\n isActive?: (pathname: string, to: string) => boolean;\n className?: string;\n}\n\nconst DEFAULT_COLLAPSE_KEY = \"clicky-ui:app-sidebar:collapsed\";\nconst DEFAULT_GROUP_COLLAPSE_KEY = \"clicky-ui:app-sidebar:groups\";\n\nfunction defaultIsActive(pathname: string, to: string): boolean {\n if (to === \"/\") return pathname === \"/\";\n return pathname === to || pathname.startsWith(`${to}/`);\n}\n\nfunction useCollapsed(storageKey: string): [boolean, () => void] {\n const [collapsed, setCollapsed] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.localStorage.getItem(storageKey) === \"true\";\n });\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(storageKey, String(collapsed));\n }, [collapsed, storageKey]);\n return [collapsed, () => setCollapsed((c) => !c)];\n}\n\ninterface GroupState {\n isCollapsed: (key: string, fallback: boolean) => boolean;\n toggle: (key: string, fallback: boolean) => void;\n}\n\nfunction readGroupState(storageKey: string): Record<string, boolean> {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" ? (parsed as Record<string, boolean>) : {};\n } catch {\n return {};\n }\n}\n\nfunction useGroupCollapsed(storageKey: string): GroupState {\n const [state, setState] = useState<Record<string, boolean>>(() => readGroupState(storageKey));\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(state));\n } catch {\n // Sidebar state is a UX nicety; private-mode storage failures are safe to swallow.\n }\n }, [state, storageKey]);\n return {\n isCollapsed: (key, fallback) => state[key] ?? fallback,\n toggle: (key, fallback) => setState((prev) => ({ ...prev, [key]: !(prev[key] ?? fallback) })),\n };\n}\n\nfunction flattenGroupItems(groups: AppNavGroup[]): AppNavItem[] {\n const out: AppNavItem[] = [];\n for (const group of groups) {\n if (group.items) out.push(...group.items);\n if (group.groups) out.push(...flattenGroupItems(group.groups));\n }\n return out;\n}\n\nexport function AppSidebar({\n sections,\n pathname: pathnameProp,\n renderLink: renderLinkProp,\n header,\n footer,\n collapsedStorageKey = DEFAULT_COLLAPSE_KEY,\n groupCollapsedStorageKey = DEFAULT_GROUP_COLLAPSE_KEY,\n isActive = defaultIsActive,\n className,\n}: AppSidebarProps) {\n const router = useRouter();\n const pathname = pathnameProp ?? router.pathname;\n const renderLink = renderLinkProp ?? router.renderLink;\n const [collapsed, toggleCollapsed] = useCollapsed(collapsedStorageKey);\n const groupState = useGroupCollapsed(groupCollapsedStorageKey);\n return (\n <nav\n className={cn(\n \"flex shrink-0 flex-col overflow-hidden border-r border-border bg-muted/30 transition-[width] duration-200\",\n collapsed ? \"w-16\" : \"w-64\",\n className,\n )}\n >\n <div\n className={cn(\n \"flex shrink-0 items-center border-b border-border py-3\",\n collapsed ? \"justify-center px-2\" : \"justify-between px-4\",\n )}\n >\n {!collapsed && <div className=\"min-w-0 flex-1\">{header}</div>}\n <button\n type=\"button\"\n onClick={toggleCollapsed}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n title={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n >\n <Icon icon={UiSidebar} className=\"h-4 w-4\" />\n </button>\n </div>\n\n <div className={cn(\"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto py-2\", collapsed ? \"px-2\" : \"px-3\")}>\n {sections.map((section, i) => (\n <div key={section.label ?? `section-${i}`} className=\"flex flex-col\">\n {section.label && <SectionLabel collapsed={collapsed}>{section.label}</SectionLabel>}\n {section.items?.map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed={collapsed}\n renderLink={renderLink}\n />\n ))}\n {section.groups?.map((group) =>\n collapsed ? (\n flattenGroupItems([group]).map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed\n renderLink={renderLink}\n />\n ))\n ) : (\n <SidebarGroup\n key={group.key}\n group={group}\n pathname={pathname}\n isActive={isActive}\n renderLink={renderLink}\n groupState={groupState}\n />\n ),\n )}\n </div>\n ))}\n </div>\n\n {footer && <div className={cn(\"mt-auto border-t border-border py-3\", collapsed ? \"px-2\" : \"px-4\")}>{footer}</div>}\n </nav>\n );\n}\n\nfunction SidebarGroup({\n group,\n pathname,\n isActive,\n renderLink,\n groupState,\n}: {\n group: AppNavGroup;\n pathname: string;\n isActive: (pathname: string, to: string) => boolean;\n renderLink: RenderLink;\n groupState: GroupState;\n}) {\n const fallback = group.defaultCollapsed ?? false;\n const collapsed = groupState.isCollapsed(group.key, fallback);\n return (\n <div className=\"flex flex-col\">\n <button\n type=\"button\"\n onClick={() => groupState.toggle(group.key, fallback)}\n aria-expanded={!collapsed}\n className=\"flex items-center gap-2 rounded-md px-3 py-1.5 text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground transition-colors hover:bg-accent/40\"\n >\n {group.icon && <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">{group.icon}</span>}\n <span className=\"flex-1 truncate text-left\">{group.label}</span>\n <span aria-hidden className=\"text-[0.65rem] opacity-60\">\n {collapsed ? \"▸\" : \"▾\"}\n </span>\n </button>\n {!collapsed && (\n <div className=\"ml-2 mt-0.5 flex flex-col gap-0.5 border-l border-border/60 pl-2\">\n {group.items?.map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed={false}\n renderLink={renderLink}\n />\n ))}\n {group.groups?.map((sub) => (\n <SidebarGroup\n key={sub.key}\n group={sub}\n pathname={pathname}\n isActive={isActive}\n renderLink={renderLink}\n groupState={groupState}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction SidebarItem({\n item,\n active,\n collapsed,\n renderLink,\n}: {\n item: AppNavItem;\n active: boolean;\n collapsed: boolean;\n renderLink: RenderLink;\n}) {\n const className = cn(\n \"flex items-center gap-2.5 rounded-md px-3 py-1.5 text-[13px] text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n collapsed && \"justify-center px-0\",\n active && \"bg-accent font-medium text-accent-foreground\",\n );\n const title = collapsed ? item.title : undefined;\n const children = (\n <>\n {item.icon && <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">{item.icon}</span>}\n {!collapsed && <span className=\"flex-1 truncate\">{item.title}</span>}\n {!collapsed && item.badge}\n </>\n );\n\n if (item.external) {\n return (\n <a href={item.to} className={className} title={title} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n }\n return renderLink({ key: item.key, to: item.to, className, children, ...(title ? { title } : {}) });\n}\n\nfunction SectionLabel({ children, collapsed }: { children: ReactNode; collapsed: boolean }) {\n if (collapsed) {\n return <div className=\"mx-2 mb-1 mt-3 border-t border-border first:mt-2\" />;\n }\n return (\n <div className=\"mb-0.5 mt-3 px-3 text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground first:mt-2\">\n {children}\n </div>\n );\n}\n\nexport interface AppLayoutProps {\n sidebar: ReactNode;\n header?: ReactNode;\n children: ReactNode;\n className?: string;\n}\n\n/** Flex shell pairing the sidebar rail with an optional header and the routed\n * content area. The content area scrolls independently of the rail. */\nexport function AppLayout({ sidebar, header, children, className }: AppLayoutProps) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full overflow-hidden bg-background\", className)}>\n {sidebar}\n <div className=\"flex min-w-0 flex-1 flex-col\">\n {header}\n <main className=\"min-h-0 min-w-0 flex-1 overflow-y-auto\">{children}</main>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AppSidebar.js","sources":["../../src/layout/AppSidebar.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon } from \"../data/Icon\";\nimport { UiSidebar } from \"../icons\";\nimport type { RenderLink } from \"../rpc/EndpointList\";\nimport { useRouter } from \"../rpc/router\";\nimport {\n contentWidthClassName,\n type ContentWidth,\n} from \"./content-width\";\n\n// AppSidebar / AppLayout are a router-agnostic application shell: a collapsible\n// left navigation rail driven by declarative sections, plus a flex layout that\n// pairs it with an optional header and the routed content. Navigation and active\n// state come from the RouterAdapter (see ../rpc/router) — by default a plain\n// <a href={to}> browser adapter, or the host's react-router/memory adapter via\n// RouterProvider. The `pathname` and `renderLink` props still override the\n// adapter for cases where a rail's active state is independent of the URL.\n//\n// A section may carry flat `items` and/or collapsible `groups`. Groups are for\n// high-cardinality clusters (e.g. provider surfaces) that benefit from being\n// folded away; their open/closed state persists per `group.key`.\n\nexport interface AppNavItem {\n /** Stable key; also used as the React key. */\n key: string;\n title: string;\n /** Destination passed to renderLink (or href for external items). */\n to: string;\n icon?: ReactNode;\n /** Render a plain anchor (new-tab style) instead of a routed link. */\n external?: boolean;\n /** Optional trailing adornment (count, status dot, etc.). */\n badge?: ReactNode;\n}\n\nexport interface AppNavGroup {\n /** Stable key; also the persistence key for collapsed state. */\n key: string;\n label: string;\n icon?: ReactNode;\n /** Collapsed on first render until the user toggles it. */\n defaultCollapsed?: boolean;\n items?: AppNavItem[];\n /** Nested groups (one extra level, e.g. Providers > Xero). */\n groups?: AppNavGroup[];\n}\n\nexport interface AppNavSection {\n /** Section heading; omitted for the leading section. */\n label?: string;\n items?: AppNavItem[];\n /** Collapsible groups rendered after the flat items. */\n groups?: AppNavGroup[];\n}\n\nexport interface AppSidebarProps {\n sections: AppNavSection[];\n /** Current path for active-state. Defaults to the RouterAdapter's pathname. */\n pathname?: string;\n /** Render routed links. Defaults to the RouterAdapter's renderLink (a plain\n * <a href={to}> unless a RouterProvider supplies a router Link). */\n renderLink?: RenderLink;\n /** Branding shown at the top of the expanded rail (logo/title). */\n header?: ReactNode;\n /** Pinned to the bottom of the rail (theme switcher, version, etc.). */\n footer?: ReactNode;\n /** localStorage key persisting the rail collapsed state. */\n collapsedStorageKey?: string;\n /** localStorage key persisting per-group collapsed state. */\n groupCollapsedStorageKey?: string;\n /** Override the default prefix-match active test. */\n isActive?: (pathname: string, to: string) => boolean;\n className?: string;\n}\n\nconst DEFAULT_COLLAPSE_KEY = \"clicky-ui:app-sidebar:collapsed\";\nconst DEFAULT_GROUP_COLLAPSE_KEY = \"clicky-ui:app-sidebar:groups\";\n\nfunction defaultIsActive(pathname: string, to: string): boolean {\n if (to === \"/\") return pathname === \"/\";\n return pathname === to || pathname.startsWith(`${to}/`);\n}\n\nfunction useCollapsed(storageKey: string): [boolean, () => void] {\n const [collapsed, setCollapsed] = useState<boolean>(() => {\n if (typeof window === \"undefined\") return false;\n return window.localStorage.getItem(storageKey) === \"true\";\n });\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(storageKey, String(collapsed));\n }, [collapsed, storageKey]);\n return [collapsed, () => setCollapsed((c) => !c)];\n}\n\ninterface GroupState {\n isCollapsed: (key: string, fallback: boolean) => boolean;\n toggle: (key: string, fallback: boolean) => void;\n}\n\nfunction readGroupState(storageKey: string): Record<string, boolean> {\n if (typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(storageKey);\n if (!raw) return {};\n const parsed = JSON.parse(raw);\n return parsed && typeof parsed === \"object\" ? (parsed as Record<string, boolean>) : {};\n } catch {\n return {};\n }\n}\n\nfunction useGroupCollapsed(storageKey: string): GroupState {\n const [state, setState] = useState<Record<string, boolean>>(() => readGroupState(storageKey));\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(storageKey, JSON.stringify(state));\n } catch {\n // Sidebar state is a UX nicety; private-mode storage failures are safe to swallow.\n }\n }, [state, storageKey]);\n return {\n isCollapsed: (key, fallback) => state[key] ?? fallback,\n toggle: (key, fallback) => setState((prev) => ({ ...prev, [key]: !(prev[key] ?? fallback) })),\n };\n}\n\nfunction flattenGroupItems(groups: AppNavGroup[]): AppNavItem[] {\n const out: AppNavItem[] = [];\n for (const group of groups) {\n if (group.items) out.push(...group.items);\n if (group.groups) out.push(...flattenGroupItems(group.groups));\n }\n return out;\n}\n\nexport function AppSidebar({\n sections,\n pathname: pathnameProp,\n renderLink: renderLinkProp,\n header,\n footer,\n collapsedStorageKey = DEFAULT_COLLAPSE_KEY,\n groupCollapsedStorageKey = DEFAULT_GROUP_COLLAPSE_KEY,\n isActive = defaultIsActive,\n className,\n}: AppSidebarProps) {\n const router = useRouter();\n const pathname = pathnameProp ?? router.pathname;\n const renderLink = renderLinkProp ?? router.renderLink;\n const [collapsed, toggleCollapsed] = useCollapsed(collapsedStorageKey);\n const groupState = useGroupCollapsed(groupCollapsedStorageKey);\n return (\n <nav\n className={cn(\n \"flex shrink-0 flex-col overflow-hidden border-r border-border bg-muted/30 transition-[width] duration-200\",\n collapsed ? \"w-16\" : \"w-64\",\n className,\n )}\n >\n <div\n className={cn(\n \"flex shrink-0 items-center border-b border-border py-3\",\n collapsed ? \"justify-center px-2\" : \"justify-between px-4\",\n )}\n >\n {!collapsed && <div className=\"min-w-0 flex-1\">{header}</div>}\n <button\n type=\"button\"\n onClick={toggleCollapsed}\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n title={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\"\n >\n <Icon icon={UiSidebar} className=\"h-4 w-4\" />\n </button>\n </div>\n\n <div className={cn(\"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto py-2\", collapsed ? \"px-2\" : \"px-3\")}>\n {sections.map((section, i) => (\n <div key={section.label ?? `section-${i}`} className=\"flex flex-col\">\n {section.label && <SectionLabel collapsed={collapsed}>{section.label}</SectionLabel>}\n {section.items?.map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed={collapsed}\n renderLink={renderLink}\n />\n ))}\n {section.groups?.map((group) =>\n collapsed ? (\n flattenGroupItems([group]).map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed\n renderLink={renderLink}\n />\n ))\n ) : (\n <SidebarGroup\n key={group.key}\n group={group}\n pathname={pathname}\n isActive={isActive}\n renderLink={renderLink}\n groupState={groupState}\n />\n ),\n )}\n </div>\n ))}\n </div>\n\n {footer && <div className={cn(\"mt-auto border-t border-border py-3\", collapsed ? \"px-2\" : \"px-4\")}>{footer}</div>}\n </nav>\n );\n}\n\nfunction SidebarGroup({\n group,\n pathname,\n isActive,\n renderLink,\n groupState,\n}: {\n group: AppNavGroup;\n pathname: string;\n isActive: (pathname: string, to: string) => boolean;\n renderLink: RenderLink;\n groupState: GroupState;\n}) {\n const fallback = group.defaultCollapsed ?? false;\n const collapsed = groupState.isCollapsed(group.key, fallback);\n return (\n <div className=\"flex flex-col\">\n <button\n type=\"button\"\n onClick={() => groupState.toggle(group.key, fallback)}\n aria-expanded={!collapsed}\n className=\"flex items-center gap-2 rounded-md px-3 py-1.5 text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground transition-colors hover:bg-accent/40\"\n >\n {group.icon && <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">{group.icon}</span>}\n <span className=\"flex-1 truncate text-left\">{group.label}</span>\n <span aria-hidden className=\"text-[0.65rem] opacity-60\">\n {collapsed ? \"▸\" : \"▾\"}\n </span>\n </button>\n {!collapsed && (\n <div className=\"ml-2 mt-0.5 flex flex-col gap-0.5 border-l border-border/60 pl-2\">\n {group.items?.map((item) => (\n <SidebarItem\n key={item.key}\n item={item}\n active={isActive(pathname, item.to)}\n collapsed={false}\n renderLink={renderLink}\n />\n ))}\n {group.groups?.map((sub) => (\n <SidebarGroup\n key={sub.key}\n group={sub}\n pathname={pathname}\n isActive={isActive}\n renderLink={renderLink}\n groupState={groupState}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction SidebarItem({\n item,\n active,\n collapsed,\n renderLink,\n}: {\n item: AppNavItem;\n active: boolean;\n collapsed: boolean;\n renderLink: RenderLink;\n}) {\n const className = cn(\n \"flex items-center gap-2.5 rounded-md px-3 py-1.5 text-[13px] text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground\",\n collapsed && \"justify-center px-0\",\n active && \"bg-accent font-medium text-accent-foreground\",\n );\n const title = collapsed ? item.title : undefined;\n const children = (\n <>\n {item.icon && <span className=\"flex h-4 w-4 shrink-0 items-center justify-center\">{item.icon}</span>}\n {!collapsed && <span className=\"flex-1 truncate\">{item.title}</span>}\n {!collapsed && item.badge}\n </>\n );\n\n if (item.external) {\n return (\n <a href={item.to} className={className} title={title} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n );\n }\n return renderLink({ key: item.key, to: item.to, className, children, ...(title ? { title } : {}) });\n}\n\nfunction SectionLabel({ children, collapsed }: { children: ReactNode; collapsed: boolean }) {\n if (collapsed) {\n return <div className=\"mx-2 mb-1 mt-3 border-t border-border first:mt-2\" />;\n }\n return (\n <div className=\"mb-0.5 mt-3 px-3 text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground first:mt-2\">\n {children}\n </div>\n );\n}\n\nexport interface AppLayoutProps {\n sidebar: ReactNode;\n header?: ReactNode;\n children: ReactNode;\n /** Centers content at responsive wide breakpoints, or allows it to fill the workspace. */\n contentWidth?: ContentWidth;\n className?: string;\n}\n\n/** Flex shell pairing the sidebar rail with an optional header and the routed\n * content area. The content area scrolls independently of the rail. */\nexport function AppLayout({\n sidebar,\n header,\n children,\n contentWidth = \"contained\",\n className,\n}: AppLayoutProps) {\n return (\n <div className={cn(\"flex h-full min-h-0 w-full overflow-hidden bg-background\", className)}>\n {sidebar}\n <div\n data-slot=\"app-layout-column\"\n className=\"@container/app-content flex min-w-0 flex-1 flex-col\"\n >\n {header && (\n <div\n data-slot=\"app-layout-header-content\"\n data-content-width={contentWidth}\n className={contentWidthClassName(contentWidth)}\n >\n {header}\n </div>\n )}\n <main className=\"min-h-0 min-w-0 flex-1 overflow-y-auto\">\n <div\n data-slot=\"app-layout-content\"\n data-content-width={contentWidth}\n className={contentWidthClassName(contentWidth)}\n >\n {children}\n </div>\n </main>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/layout/Panel.cjs
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const utils = require("../lib/utils.cjs");
|
|
5
4
|
const Icon = require("../data/Icon.cjs");
|
|
6
|
-
const
|
|
7
|
-
default: "",
|
|
8
|
-
danger: "border-l-2 border-l-red-500",
|
|
9
|
-
warning: "border-l-2 border-l-yellow-500",
|
|
10
|
-
success: "border-l-2 border-l-green-500",
|
|
11
|
-
info: "border-l-2 border-l-blue-500"
|
|
12
|
-
};
|
|
5
|
+
const PanelFrame = require("./PanelFrame.cjs");
|
|
13
6
|
function Panel({
|
|
14
7
|
title,
|
|
15
8
|
icon,
|
|
@@ -24,41 +17,32 @@ function Panel({
|
|
|
24
17
|
children
|
|
25
18
|
}) {
|
|
26
19
|
const hasHeader = title !== void 0 || icon !== void 0 || actions !== void 0;
|
|
27
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
28
|
-
|
|
20
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
21
|
+
PanelFrame.PanelFrame,
|
|
29
22
|
{
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
className: utils.cn(
|
|
40
|
-
"flex items-center gap-2 px-density-3 py-density-2 border-b border-border",
|
|
41
|
-
headerClassName
|
|
23
|
+
...hasHeader ? {
|
|
24
|
+
header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
26
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
Icon.Icon,
|
|
28
|
+
{
|
|
29
|
+
...typeof icon === "string" ? { name: icon } : { icon },
|
|
30
|
+
className: "text-base text-muted-foreground"
|
|
31
|
+
}
|
|
42
32
|
),
|
|
43
|
-
children:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn(padded && "px-density-3 py-density-2", bodyClassName), children }),
|
|
60
|
-
footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-density-3 py-density-2 border-t border-border", children: footer })
|
|
61
|
-
]
|
|
33
|
+
title !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-sm font-medium text-card-foreground", children: title }),
|
|
34
|
+
count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center justify-center rounded-full bg-muted px-1.5 text-[11px] font-semibold text-muted-foreground", children: count })
|
|
35
|
+
] }),
|
|
36
|
+
actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions })
|
|
37
|
+
] })
|
|
38
|
+
} : {},
|
|
39
|
+
...footer !== void 0 ? { footer } : {},
|
|
40
|
+
tone,
|
|
41
|
+
padded,
|
|
42
|
+
...className !== void 0 ? { className } : {},
|
|
43
|
+
...headerClassName !== void 0 ? { headerClassName } : {},
|
|
44
|
+
...bodyClassName !== void 0 ? { bodyClassName } : {},
|
|
45
|
+
children
|
|
62
46
|
}
|
|
63
47
|
);
|
|
64
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.cjs","sources":["../../src/layout/Panel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Panel.cjs","sources":["../../src/layout/Panel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\nimport { PanelFrame, type PanelTone } from \"./PanelFrame\";\n\nexport type { PanelTone } from \"./PanelFrame\";\n\nexport type PanelProps = {\n /** Header title. Omit (with no icon/count/actions) to render a headerless card. */\n title?: ReactNode;\n /** Optional leading icon. */\n icon?: string | StaticIconComponent;\n /** Optional count pill shown after the title. */\n count?: number;\n /** Right-aligned header content (copy buttons, summaries, links). */\n actions?: ReactNode;\n /** Optional footer row below the body. */\n footer?: ReactNode;\n /** Semantic left-border accent. */\n tone?: PanelTone;\n /** Pad the body. Defaults to true; pass false for flush row lists. */\n padded?: boolean;\n /** Classes applied to the panel root. */\n className?: string;\n /** Classes applied to the header row. */\n headerClassName?: string;\n /** Classes applied to the body. */\n bodyClassName?: string;\n /** Panel content. */\n children: ReactNode;\n};\n\n/**\n * A non-collapsible carded surface with an optional header. Use for content\n * panels (checks, results, comments) where {@link Section}'s disclosure\n * behaviour isn't wanted. Sits on `bg-card` with a border and rounded corners.\n */\nexport function Panel({\n title,\n icon,\n count,\n actions,\n footer,\n tone = \"default\",\n padded = true,\n className,\n headerClassName,\n bodyClassName,\n children,\n}: PanelProps) {\n const hasHeader =\n title !== undefined || icon !== undefined || actions !== undefined;\n return (\n <PanelFrame\n {...(hasHeader\n ? {\n header: (\n <>\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {icon && (\n <Icon\n {...(typeof icon === \"string\"\n ? { name: icon }\n : { icon })}\n className=\"text-base text-muted-foreground\"\n />\n )}\n {title !== undefined && (\n <span className=\"truncate text-sm font-medium text-card-foreground\">\n {title}\n </span>\n )}\n {count !== undefined && (\n <span className=\"inline-flex items-center justify-center rounded-full bg-muted px-1.5 text-[11px] font-semibold text-muted-foreground\">\n {count}\n </span>\n )}\n </div>\n {actions && (\n <div className=\"flex shrink-0 items-center gap-1\">\n {actions}\n </div>\n )}\n </>\n ),\n }\n : {})}\n {...(footer !== undefined ? { footer } : {})}\n tone={tone}\n padded={padded}\n {...(className !== undefined ? { className } : {})}\n {...(headerClassName !== undefined ? { headerClassName } : {})}\n {...(bodyClassName !== undefined ? { bodyClassName } : {})}\n >\n {children}\n </PanelFrame>\n );\n}\n"],"names":["jsx","PanelFrame","jsxs","Fragment","Icon"],"mappings":";;;;;AAoCO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAe;AACb,QAAM,YACJ,UAAU,UAAa,SAAS,UAAa,YAAY;AAC3D,SACEA,2BAAAA;AAAAA,IAACC,WAAAA;AAAAA,IAAA;AAAA,MACE,GAAI,YACD;AAAA,QACE,QACEC,2BAAAA,KAAAC,qBAAA,EACE,UAAA;AAAA,UAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CACZ,UAAA;AAAA,YAAA,QACCF,2BAAAA;AAAAA,cAACI,KAAAA;AAAAA,cAAA;AAAA,gBACE,GAAI,OAAO,SAAS,WACjB,EAAE,MAAM,KAAA,IACR,EAAE,KAAA;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAGb,UAAU,UACTJ,2BAAAA,IAAC,QAAA,EAAK,WAAU,qDACb,UAAA,OACH;AAAA,YAED,UAAU,UACTA,2BAAAA,IAAC,QAAA,EAAK,WAAU,wHACb,UAAA,MAAA,CACH;AAAA,UAAA,GAEJ;AAAA,UACC,WACCA,2BAAAA,IAAC,OAAA,EAAI,WAAU,oCACZ,UAAA,QAAA,CACH;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA,IAGJ,CAAA;AAAA,MACH,GAAI,WAAW,SAAY,EAAE,OAAA,IAAW,CAAA;AAAA,MACzC;AAAA,MACA;AAAA,MACC,GAAI,cAAc,SAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAC9C,GAAI,oBAAoB,SAAY,EAAE,gBAAA,IAAoB,CAAA;AAAA,MAC1D,GAAI,kBAAkB,SAAY,EAAE,cAAA,IAAkB,CAAA;AAAA,MAEtD;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
|
package/dist/layout/Panel.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { StaticIconComponent } from '../data/Icon';
|
|
3
|
-
|
|
3
|
+
import { PanelTone } from './PanelFrame';
|
|
4
|
+
export type { PanelTone } from './PanelFrame';
|
|
4
5
|
export type PanelProps = {
|
|
5
6
|
/** Header title. Omit (with no icon/count/actions) to render a headerless card. */
|
|
6
7
|
title?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../src/layout/Panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../src/layout/Panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG;IACvB,mFAAmF;IACnF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mCAAmC;IACnC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,OAAO,EACP,MAAM,EACN,IAAgB,EAChB,MAAa,EACb,SAAS,EACT,eAAe,EACf,aAAa,EACb,QAAQ,GACT,EAAE,UAAU,2CAgDZ"}
|
package/dist/layout/Panel.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import { jsxs,
|
|
2
|
-
import { cn } from "../lib/utils.js";
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
2
|
import { Icon } from "../data/Icon.js";
|
|
4
|
-
|
|
5
|
-
default: "",
|
|
6
|
-
danger: "border-l-2 border-l-red-500",
|
|
7
|
-
warning: "border-l-2 border-l-yellow-500",
|
|
8
|
-
success: "border-l-2 border-l-green-500",
|
|
9
|
-
info: "border-l-2 border-l-blue-500"
|
|
10
|
-
};
|
|
3
|
+
import { PanelFrame } from "./PanelFrame.js";
|
|
11
4
|
function Panel({
|
|
12
5
|
title,
|
|
13
6
|
icon,
|
|
@@ -22,41 +15,32 @@ function Panel({
|
|
|
22
15
|
children
|
|
23
16
|
}) {
|
|
24
17
|
const hasHeader = title !== void 0 || icon !== void 0 || actions !== void 0;
|
|
25
|
-
return /* @__PURE__ */
|
|
26
|
-
|
|
18
|
+
return /* @__PURE__ */ jsx(
|
|
19
|
+
PanelFrame,
|
|
27
20
|
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
className: cn(
|
|
38
|
-
"flex items-center gap-2 px-density-3 py-density-2 border-b border-border",
|
|
39
|
-
headerClassName
|
|
21
|
+
...hasHeader ? {
|
|
22
|
+
header: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
24
|
+
icon && /* @__PURE__ */ jsx(
|
|
25
|
+
Icon,
|
|
26
|
+
{
|
|
27
|
+
...typeof icon === "string" ? { name: icon } : { icon },
|
|
28
|
+
className: "text-base text-muted-foreground"
|
|
29
|
+
}
|
|
40
30
|
),
|
|
41
|
-
children:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
),
|
|
57
|
-
/* @__PURE__ */ jsx("div", { className: cn(padded && "px-density-3 py-density-2", bodyClassName), children }),
|
|
58
|
-
footer && /* @__PURE__ */ jsx("div", { className: "px-density-3 py-density-2 border-t border-border", children: footer })
|
|
59
|
-
]
|
|
31
|
+
title !== void 0 && /* @__PURE__ */ jsx("span", { className: "truncate text-sm font-medium text-card-foreground", children: title }),
|
|
32
|
+
count !== void 0 && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center rounded-full bg-muted px-1.5 text-[11px] font-semibold text-muted-foreground", children: count })
|
|
33
|
+
] }),
|
|
34
|
+
actions && /* @__PURE__ */ jsx("div", { className: "flex shrink-0 items-center gap-1", children: actions })
|
|
35
|
+
] })
|
|
36
|
+
} : {},
|
|
37
|
+
...footer !== void 0 ? { footer } : {},
|
|
38
|
+
tone,
|
|
39
|
+
padded,
|
|
40
|
+
...className !== void 0 ? { className } : {},
|
|
41
|
+
...headerClassName !== void 0 ? { headerClassName } : {},
|
|
42
|
+
...bodyClassName !== void 0 ? { bodyClassName } : {},
|
|
43
|
+
children
|
|
60
44
|
}
|
|
61
45
|
);
|
|
62
46
|
}
|
package/dist/layout/Panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.js","sources":["../../src/layout/Panel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"Panel.js","sources":["../../src/layout/Panel.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Icon, type StaticIconComponent } from \"../data/Icon\";\nimport { PanelFrame, type PanelTone } from \"./PanelFrame\";\n\nexport type { PanelTone } from \"./PanelFrame\";\n\nexport type PanelProps = {\n /** Header title. Omit (with no icon/count/actions) to render a headerless card. */\n title?: ReactNode;\n /** Optional leading icon. */\n icon?: string | StaticIconComponent;\n /** Optional count pill shown after the title. */\n count?: number;\n /** Right-aligned header content (copy buttons, summaries, links). */\n actions?: ReactNode;\n /** Optional footer row below the body. */\n footer?: ReactNode;\n /** Semantic left-border accent. */\n tone?: PanelTone;\n /** Pad the body. Defaults to true; pass false for flush row lists. */\n padded?: boolean;\n /** Classes applied to the panel root. */\n className?: string;\n /** Classes applied to the header row. */\n headerClassName?: string;\n /** Classes applied to the body. */\n bodyClassName?: string;\n /** Panel content. */\n children: ReactNode;\n};\n\n/**\n * A non-collapsible carded surface with an optional header. Use for content\n * panels (checks, results, comments) where {@link Section}'s disclosure\n * behaviour isn't wanted. Sits on `bg-card` with a border and rounded corners.\n */\nexport function Panel({\n title,\n icon,\n count,\n actions,\n footer,\n tone = \"default\",\n padded = true,\n className,\n headerClassName,\n bodyClassName,\n children,\n}: PanelProps) {\n const hasHeader =\n title !== undefined || icon !== undefined || actions !== undefined;\n return (\n <PanelFrame\n {...(hasHeader\n ? {\n header: (\n <>\n <div className=\"flex min-w-0 flex-1 items-center gap-2\">\n {icon && (\n <Icon\n {...(typeof icon === \"string\"\n ? { name: icon }\n : { icon })}\n className=\"text-base text-muted-foreground\"\n />\n )}\n {title !== undefined && (\n <span className=\"truncate text-sm font-medium text-card-foreground\">\n {title}\n </span>\n )}\n {count !== undefined && (\n <span className=\"inline-flex items-center justify-center rounded-full bg-muted px-1.5 text-[11px] font-semibold text-muted-foreground\">\n {count}\n </span>\n )}\n </div>\n {actions && (\n <div className=\"flex shrink-0 items-center gap-1\">\n {actions}\n </div>\n )}\n </>\n ),\n }\n : {})}\n {...(footer !== undefined ? { footer } : {})}\n tone={tone}\n padded={padded}\n {...(className !== undefined ? { className } : {})}\n {...(headerClassName !== undefined ? { headerClassName } : {})}\n {...(bodyClassName !== undefined ? { bodyClassName } : {})}\n >\n {children}\n </PanelFrame>\n );\n}\n"],"names":[],"mappings":";;;AAoCO,SAAS,MAAM;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAe;AACb,QAAM,YACJ,UAAU,UAAa,SAAS,UAAa,YAAY;AAC3D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAI,YACD;AAAA,QACE,QACE,qBAAA,UAAA,EACE,UAAA;AAAA,UAAA,qBAAC,OAAA,EAAI,WAAU,0CACZ,UAAA;AAAA,YAAA,QACC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACE,GAAI,OAAO,SAAS,WACjB,EAAE,MAAM,KAAA,IACR,EAAE,KAAA;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAGb,UAAU,UACT,oBAAC,QAAA,EAAK,WAAU,qDACb,UAAA,OACH;AAAA,YAED,UAAU,UACT,oBAAC,QAAA,EAAK,WAAU,wHACb,UAAA,MAAA,CACH;AAAA,UAAA,GAEJ;AAAA,UACC,WACC,oBAAC,OAAA,EAAI,WAAU,oCACZ,UAAA,QAAA,CACH;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA,IAGJ,CAAA;AAAA,MACH,GAAI,WAAW,SAAY,EAAE,OAAA,IAAW,CAAA;AAAA,MACzC;AAAA,MACA;AAAA,MACC,GAAI,cAAc,SAAY,EAAE,UAAA,IAAc,CAAA;AAAA,MAC9C,GAAI,oBAAoB,SAAY,EAAE,gBAAA,IAAoB,CAAA;AAAA,MAC1D,GAAI,kBAAkB,SAAY,EAAE,cAAA,IAAkB,CAAA;AAAA,MAEtD;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const utils = require("../lib/utils.cjs");
|
|
5
|
+
const toneRing = {
|
|
6
|
+
default: "",
|
|
7
|
+
danger: "border-l-2 border-l-red-500",
|
|
8
|
+
warning: "border-l-2 border-l-yellow-500",
|
|
9
|
+
success: "border-l-2 border-l-green-500",
|
|
10
|
+
info: "border-l-2 border-l-blue-500"
|
|
11
|
+
};
|
|
12
|
+
function PanelFrame({
|
|
13
|
+
header,
|
|
14
|
+
footer,
|
|
15
|
+
tone = "default",
|
|
16
|
+
padded = true,
|
|
17
|
+
bodyVisible = true,
|
|
18
|
+
className,
|
|
19
|
+
headerClassName,
|
|
20
|
+
bodyClassName,
|
|
21
|
+
children
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: utils.cn(
|
|
27
|
+
"overflow-hidden rounded-md border border-border bg-card",
|
|
28
|
+
toneRing[tone],
|
|
29
|
+
className
|
|
30
|
+
),
|
|
31
|
+
children: [
|
|
32
|
+
header !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: utils.cn(
|
|
36
|
+
"flex items-center gap-2 px-density-3 py-density-2",
|
|
37
|
+
bodyVisible && "border-b border-border",
|
|
38
|
+
headerClassName
|
|
39
|
+
),
|
|
40
|
+
children: header
|
|
41
|
+
}
|
|
42
|
+
),
|
|
43
|
+
bodyVisible && /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: utils.cn(padded && "px-density-3 py-density-2", bodyClassName),
|
|
47
|
+
children
|
|
48
|
+
}
|
|
49
|
+
),
|
|
50
|
+
bodyVisible && footer !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-border px-density-3 py-density-2", children: footer })
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
exports.PanelFrame = PanelFrame;
|
|
56
|
+
//# sourceMappingURL=PanelFrame.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelFrame.cjs","sources":["../../src/layout/PanelFrame.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport type PanelTone = \"default\" | \"danger\" | \"warning\" | \"success\" | \"info\";\n\nexport type PanelFrameProps = {\n header?: ReactNode;\n footer?: ReactNode;\n tone?: PanelTone;\n padded?: boolean;\n bodyVisible?: boolean;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n children: ReactNode;\n};\n\nconst toneRing: Record<PanelTone, string> = {\n default: \"\",\n danger: \"border-l-2 border-l-red-500\",\n warning: \"border-l-2 border-l-yellow-500\",\n success: \"border-l-2 border-l-green-500\",\n info: \"border-l-2 border-l-blue-500\",\n};\n\nexport function PanelFrame({\n header,\n footer,\n tone = \"default\",\n padded = true,\n bodyVisible = true,\n className,\n headerClassName,\n bodyClassName,\n children,\n}: PanelFrameProps) {\n return (\n <div\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-card\",\n toneRing[tone],\n className,\n )}\n >\n {header !== undefined && (\n <div\n className={cn(\n \"flex items-center gap-2 px-density-3 py-density-2\",\n bodyVisible && \"border-b border-border\",\n headerClassName,\n )}\n >\n {header}\n </div>\n )}\n {bodyVisible && (\n <div\n className={cn(padded && \"px-density-3 py-density-2\", bodyClassName)}\n >\n {children}\n </div>\n )}\n {bodyVisible && footer !== undefined && (\n <div className=\"border-t border-border px-density-3 py-density-2\">\n {footer}\n </div>\n )}\n </div>\n );\n}\n"],"names":["jsxs","cn","jsx"],"mappings":";;;;AAiBA,MAAM,WAAsC;AAAA,EAC1C,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,SAAS,IAAI;AAAA,QACb;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,WAAW,UACVC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD,MAAAA;AAAAA,cACT;AAAA,cACA,eAAe;AAAA,cACf;AAAA,YAAA;AAAA,YAGD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,eACCC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWD,MAAAA,GAAG,UAAU,6BAA6B,aAAa;AAAA,YAEjE;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,eAAe,WAAW,yCACxB,OAAA,EAAI,WAAU,oDACZ,UAAA,OAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type PanelTone = "default" | "danger" | "warning" | "success" | "info";
|
|
3
|
+
export type PanelFrameProps = {
|
|
4
|
+
header?: ReactNode;
|
|
5
|
+
footer?: ReactNode;
|
|
6
|
+
tone?: PanelTone;
|
|
7
|
+
padded?: boolean;
|
|
8
|
+
bodyVisible?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
headerClassName?: string;
|
|
11
|
+
bodyClassName?: string;
|
|
12
|
+
children: ReactNode;
|
|
13
|
+
};
|
|
14
|
+
export declare function PanelFrame({ header, footer, tone, padded, bodyVisible, className, headerClassName, bodyClassName, children, }: PanelFrameProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=PanelFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelFrame.d.ts","sourceRoot":"","sources":["../../src/layout/PanelFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9E,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAUF,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAM,EACN,IAAgB,EAChB,MAAa,EACb,WAAkB,EAClB,SAAS,EACT,eAAe,EACf,aAAa,EACb,QAAQ,GACT,EAAE,eAAe,2CAkCjB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/utils.js";
|
|
3
|
+
const toneRing = {
|
|
4
|
+
default: "",
|
|
5
|
+
danger: "border-l-2 border-l-red-500",
|
|
6
|
+
warning: "border-l-2 border-l-yellow-500",
|
|
7
|
+
success: "border-l-2 border-l-green-500",
|
|
8
|
+
info: "border-l-2 border-l-blue-500"
|
|
9
|
+
};
|
|
10
|
+
function PanelFrame({
|
|
11
|
+
header,
|
|
12
|
+
footer,
|
|
13
|
+
tone = "default",
|
|
14
|
+
padded = true,
|
|
15
|
+
bodyVisible = true,
|
|
16
|
+
className,
|
|
17
|
+
headerClassName,
|
|
18
|
+
bodyClassName,
|
|
19
|
+
children
|
|
20
|
+
}) {
|
|
21
|
+
return /* @__PURE__ */ jsxs(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
className: cn(
|
|
25
|
+
"overflow-hidden rounded-md border border-border bg-card",
|
|
26
|
+
toneRing[tone],
|
|
27
|
+
className
|
|
28
|
+
),
|
|
29
|
+
children: [
|
|
30
|
+
header !== void 0 && /* @__PURE__ */ jsx(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: cn(
|
|
34
|
+
"flex items-center gap-2 px-density-3 py-density-2",
|
|
35
|
+
bodyVisible && "border-b border-border",
|
|
36
|
+
headerClassName
|
|
37
|
+
),
|
|
38
|
+
children: header
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
bodyVisible && /* @__PURE__ */ jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: cn(padded && "px-density-3 py-density-2", bodyClassName),
|
|
45
|
+
children
|
|
46
|
+
}
|
|
47
|
+
),
|
|
48
|
+
bodyVisible && footer !== void 0 && /* @__PURE__ */ jsx("div", { className: "border-t border-border px-density-3 py-density-2", children: footer })
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
PanelFrame
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=PanelFrame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelFrame.js","sources":["../../src/layout/PanelFrame.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport type PanelTone = \"default\" | \"danger\" | \"warning\" | \"success\" | \"info\";\n\nexport type PanelFrameProps = {\n header?: ReactNode;\n footer?: ReactNode;\n tone?: PanelTone;\n padded?: boolean;\n bodyVisible?: boolean;\n className?: string;\n headerClassName?: string;\n bodyClassName?: string;\n children: ReactNode;\n};\n\nconst toneRing: Record<PanelTone, string> = {\n default: \"\",\n danger: \"border-l-2 border-l-red-500\",\n warning: \"border-l-2 border-l-yellow-500\",\n success: \"border-l-2 border-l-green-500\",\n info: \"border-l-2 border-l-blue-500\",\n};\n\nexport function PanelFrame({\n header,\n footer,\n tone = \"default\",\n padded = true,\n bodyVisible = true,\n className,\n headerClassName,\n bodyClassName,\n children,\n}: PanelFrameProps) {\n return (\n <div\n className={cn(\n \"overflow-hidden rounded-md border border-border bg-card\",\n toneRing[tone],\n className,\n )}\n >\n {header !== undefined && (\n <div\n className={cn(\n \"flex items-center gap-2 px-density-3 py-density-2\",\n bodyVisible && \"border-b border-border\",\n headerClassName,\n )}\n >\n {header}\n </div>\n )}\n {bodyVisible && (\n <div\n className={cn(padded && \"px-density-3 py-density-2\", bodyClassName)}\n >\n {children}\n </div>\n )}\n {bodyVisible && footer !== undefined && (\n <div className=\"border-t border-border px-density-3 py-density-2\">\n {footer}\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;AAiBA,MAAM,WAAsC;AAAA,EAC1C,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,SAAS,IAAI;AAAA,QACb;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,WAAW,UACV;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,eAAe;AAAA,cACf;AAAA,YAAA;AAAA,YAGD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,eACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,GAAG,UAAU,6BAA6B,aAAa;AAAA,YAEjE;AAAA,UAAA;AAAA,QAAA;AAAA,QAGJ,eAAe,WAAW,8BACxB,OAAA,EAAI,WAAU,oDACZ,UAAA,OAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
package/dist/layout/Section.cjs
CHANGED
|
@@ -4,15 +4,9 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const utils = require("../lib/utils.cjs");
|
|
6
6
|
const Icon = require("../data/Icon.cjs");
|
|
7
|
+
const PanelFrame = require("./PanelFrame.cjs");
|
|
7
8
|
const UiChevronDown = require("../icons/components/UiChevronDown.cjs");
|
|
8
9
|
const UiChevronRight = require("../icons/components/UiChevronRight.cjs");
|
|
9
|
-
const toneRing = {
|
|
10
|
-
default: "",
|
|
11
|
-
danger: "border-l-2 border-red-500",
|
|
12
|
-
warning: "border-l-2 border-yellow-500",
|
|
13
|
-
success: "border-l-2 border-green-500",
|
|
14
|
-
info: "border-l-2 border-blue-500"
|
|
15
|
-
};
|
|
16
10
|
function Section({
|
|
17
11
|
title,
|
|
18
12
|
summary,
|
|
@@ -43,47 +37,63 @@ function Section({
|
|
|
43
37
|
className: "text-muted-foreground text-xs"
|
|
44
38
|
}
|
|
45
39
|
),
|
|
46
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { ...typeof icon === "string" ? { name: icon } : { icon }, className: "text-base" }),
|
|
47
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-sm flex-1 truncate", children: title })
|
|
48
|
-
] });
|
|
49
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("rounded-md border border-border bg-background", toneRing[tone], className), children: [
|
|
50
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
51
|
-
"div",
|
|
52
|
-
{
|
|
53
|
-
className: utils.cn(
|
|
54
|
-
"w-full flex items-center gap-2 px-density-3 py-density-2 text-left",
|
|
55
|
-
headerClassName
|
|
56
|
-
),
|
|
57
|
-
children: [
|
|
58
|
-
collapsible ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
59
|
-
"button",
|
|
60
|
-
{
|
|
61
|
-
type: "button",
|
|
62
|
-
onClick: toggle,
|
|
63
|
-
"aria-expanded": open,
|
|
64
|
-
className: "flex flex-1 min-w-0 items-center gap-2 text-left rounded-sm hover:bg-accent/50 transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
65
|
-
children: leading
|
|
66
|
-
}
|
|
67
|
-
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 min-w-0 items-center gap-2", children: leading }),
|
|
68
|
-
summary && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground shrink-0", children: summary })
|
|
69
|
-
]
|
|
70
|
-
}
|
|
71
|
-
),
|
|
72
|
-
open && /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils.cn("px-density-3 py-density-2 border-t border-border", bodyClassName), children })
|
|
73
|
-
] });
|
|
74
|
-
}
|
|
75
|
-
function DetailEmptyState({ icon, label, description, className }) {
|
|
76
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("p-density-6 text-center text-muted-foreground", className), children: [
|
|
77
40
|
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
78
41
|
Icon.Icon,
|
|
79
42
|
{
|
|
80
43
|
...typeof icon === "string" ? { name: icon } : { icon },
|
|
81
|
-
className: "text-
|
|
44
|
+
className: "text-base"
|
|
82
45
|
}
|
|
83
46
|
),
|
|
84
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
85
|
-
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs mt-density-1 opacity-70", children: description })
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-sm flex-1 truncate", children: title })
|
|
86
48
|
] });
|
|
49
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
50
|
+
PanelFrame.PanelFrame,
|
|
51
|
+
{
|
|
52
|
+
header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
53
|
+
collapsible ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
54
|
+
"button",
|
|
55
|
+
{
|
|
56
|
+
type: "button",
|
|
57
|
+
onClick: toggle,
|
|
58
|
+
"aria-expanded": open,
|
|
59
|
+
className: "flex min-w-0 flex-1 items-center gap-2 rounded-sm text-left transition-colors hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
60
|
+
children: leading
|
|
61
|
+
}
|
|
62
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: leading }),
|
|
63
|
+
summary && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: summary })
|
|
64
|
+
] }),
|
|
65
|
+
tone,
|
|
66
|
+
bodyVisible: open,
|
|
67
|
+
className: utils.cn("overflow-visible bg-background", className),
|
|
68
|
+
headerClassName: utils.cn("w-full text-left", headerClassName),
|
|
69
|
+
...bodyClassName !== void 0 ? { bodyClassName } : {},
|
|
70
|
+
children
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
function DetailEmptyState({
|
|
75
|
+
icon,
|
|
76
|
+
label,
|
|
77
|
+
description,
|
|
78
|
+
className
|
|
79
|
+
}) {
|
|
80
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
81
|
+
"div",
|
|
82
|
+
{
|
|
83
|
+
className: utils.cn("p-density-6 text-center text-muted-foreground", className),
|
|
84
|
+
children: [
|
|
85
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
+
Icon.Icon,
|
|
87
|
+
{
|
|
88
|
+
...typeof icon === "string" ? { name: icon } : { icon },
|
|
89
|
+
className: "text-3xl mb-density-2"
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: label }),
|
|
93
|
+
description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs mt-density-1 opacity-70", children: description })
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
);
|
|
87
97
|
}
|
|
88
98
|
exports.DetailEmptyState = DetailEmptyState;
|
|
89
99
|
exports.Section = Section;
|