@tai42/studio-sdk 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +15 -0
- package/README.md +318 -0
- package/SECURITY.md +51 -0
- package/dist/components/badge.d.ts +13 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +14 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/checkbox.d.ts +24 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +31 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/code-block.d.ts +7 -0
- package/dist/components/code-block.d.ts.map +1 -0
- package/dist/components/code-block.js +23 -0
- package/dist/components/code-block.js.map +1 -0
- package/dist/components/completion-input.d.ts +31 -0
- package/dist/components/completion-input.d.ts.map +1 -0
- package/dist/components/completion-input.js +61 -0
- package/dist/components/completion-input.js.map +1 -0
- package/dist/components/components.css +2212 -0
- package/dist/components/confirm-dialog.d.ts +40 -0
- package/dist/components/confirm-dialog.d.ts.map +1 -0
- package/dist/components/confirm-dialog.js +11 -0
- package/dist/components/confirm-dialog.js.map +1 -0
- package/dist/components/control-styles.d.ts +12 -0
- package/dist/components/control-styles.d.ts.map +1 -0
- package/dist/components/control-styles.js +14 -0
- package/dist/components/control-styles.js.map +1 -0
- package/dist/components/copy-field.d.ts +8 -0
- package/dist/components/copy-field.d.ts.map +1 -0
- package/dist/components/copy-field.js +106 -0
- package/dist/components/copy-field.js.map +1 -0
- package/dist/components/dialog.d.ts +21 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +25 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.d.ts +22 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +32 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/error-boundary.d.ts +33 -0
- package/dist/components/error-boundary.d.ts.map +1 -0
- package/dist/components/error-boundary.js +36 -0
- package/dist/components/error-boundary.js.map +1 -0
- package/dist/components/extension-combo-builder.d.ts +70 -0
- package/dist/components/extension-combo-builder.d.ts.map +1 -0
- package/dist/components/extension-combo-builder.js +154 -0
- package/dist/components/extension-combo-builder.js.map +1 -0
- package/dist/components/extension-grouping.d.ts +65 -0
- package/dist/components/extension-grouping.d.ts.map +1 -0
- package/dist/components/extension-grouping.js +78 -0
- package/dist/components/extension-grouping.js.map +1 -0
- package/dist/components/extension-picker.d.ts +35 -0
- package/dist/components/extension-picker.d.ts.map +1 -0
- package/dist/components/extension-picker.js +31 -0
- package/dist/components/extension-picker.js.map +1 -0
- package/dist/components/external-link.d.ts +19 -0
- package/dist/components/external-link.d.ts.map +1 -0
- package/dist/components/external-link.js +12 -0
- package/dist/components/external-link.js.map +1 -0
- package/dist/components/field.d.ts +64 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +56 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/fleet-report.d.ts +39 -0
- package/dist/components/fleet-report.d.ts.map +1 -0
- package/dist/components/fleet-report.js +50 -0
- package/dist/components/fleet-report.js.map +1 -0
- package/dist/components/fonts.css +22 -0
- package/dist/components/icons.d.ts +142 -0
- package/dist/components/icons.d.ts.map +1 -0
- package/dist/components/icons.js +139 -0
- package/dist/components/icons.js.map +1 -0
- package/dist/components/inputs.d.ts +52 -0
- package/dist/components/inputs.d.ts.map +1 -0
- package/dist/components/inputs.js +35 -0
- package/dist/components/inputs.js.map +1 -0
- package/dist/components/json-diff.d.ts +40 -0
- package/dist/components/json-diff.d.ts.map +1 -0
- package/dist/components/json-diff.js +119 -0
- package/dist/components/json-diff.js.map +1 -0
- package/dist/components/json-tree.d.ts +8 -0
- package/dist/components/json-tree.d.ts.map +1 -0
- package/dist/components/json-tree.js +70 -0
- package/dist/components/json-tree.js.map +1 -0
- package/dist/components/modal-focus.d.ts +15 -0
- package/dist/components/modal-focus.d.ts.map +1 -0
- package/dist/components/modal-focus.js +136 -0
- package/dist/components/modal-focus.js.map +1 -0
- package/dist/components/page-header.d.ts +56 -0
- package/dist/components/page-header.d.ts.map +1 -0
- package/dist/components/page-header.js +24 -0
- package/dist/components/page-header.js.map +1 -0
- package/dist/components/primitives.d.ts +186 -0
- package/dist/components/primitives.d.ts.map +1 -0
- package/dist/components/primitives.js +204 -0
- package/dist/components/primitives.js.map +1 -0
- package/dist/components/progress-bar.d.ts +29 -0
- package/dist/components/progress-bar.d.ts.map +1 -0
- package/dist/components/progress-bar.js +48 -0
- package/dist/components/progress-bar.js.map +1 -0
- package/dist/components/radio-group.d.ts +37 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +56 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/reveal-input.d.ts +13 -0
- package/dist/components/reveal-input.d.ts.map +1 -0
- package/dist/components/reveal-input.js +31 -0
- package/dist/components/reveal-input.js.map +1 -0
- package/dist/components/scroll-region.d.ts +85 -0
- package/dist/components/scroll-region.d.ts.map +1 -0
- package/dist/components/scroll-region.js +574 -0
- package/dist/components/scroll-region.js.map +1 -0
- package/dist/components/select.d.ts +53 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +33 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/table.d.ts +59 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +20 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +15 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +13 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tags.d.ts +46 -0
- package/dist/components/tags.d.ts.map +1 -0
- package/dist/components/tags.js +68 -0
- package/dist/components/tags.js.map +1 -0
- package/dist/components/tokens.css +392 -0
- package/dist/components/tokens.d.ts +15 -0
- package/dist/components/tokens.d.ts.map +1 -0
- package/dist/components/tokens.js +101 -0
- package/dist/components/tokens.js.map +1 -0
- package/dist/components/tool-picker.d.ts +24 -0
- package/dist/components/tool-picker.d.ts.map +1 -0
- package/dist/components/tool-picker.js +97 -0
- package/dist/components/tool-picker.js.map +1 -0
- package/dist/components/tooltip.d.ts +17 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +18 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/components/version-history-panel.d.ts +71 -0
- package/dist/components/version-history-panel.d.ts.map +1 -0
- package/dist/components/version-history-panel.js +148 -0
- package/dist/components/version-history-panel.js.map +1 -0
- package/dist/download.d.ts +7 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +18 -0
- package/dist/download.js.map +1 -0
- package/dist/element-slot.d.ts +4 -0
- package/dist/element-slot.d.ts.map +1 -0
- package/dist/element-slot.js +20 -0
- package/dist/element-slot.js.map +1 -0
- package/dist/elicitation/ElicitationForm.d.ts +34 -0
- package/dist/elicitation/ElicitationForm.d.ts.map +1 -0
- package/dist/elicitation/ElicitationForm.js +24 -0
- package/dist/elicitation/ElicitationForm.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/extension-combos.d.ts +13 -0
- package/dist/extension-combos.d.ts.map +1 -0
- package/dist/extension-combos.js +9 -0
- package/dist/extension-combos.js.map +1 -0
- package/dist/hooks/useApi.d.ts +1222 -0
- package/dist/hooks/useApi.d.ts.map +1 -0
- package/dist/hooks/useApi.js +22 -0
- package/dist/hooks/useApi.js.map +1 -0
- package/dist/hooks/useAuth.d.ts +13 -0
- package/dist/hooks/useAuth.d.ts.map +1 -0
- package/dist/hooks/useAuth.js +53 -0
- package/dist/hooks/useAuth.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +10 -0
- package/dist/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/hooks/useBreakpoint.js +66 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useCapabilities.d.ts +88 -0
- package/dist/hooks/useCapabilities.d.ts.map +1 -0
- package/dist/hooks/useCapabilities.js +203 -0
- package/dist/hooks/useCapabilities.js.map +1 -0
- package/dist/hooks/useSse.d.ts +13 -0
- package/dist/hooks/useSse.d.ts.map +1 -0
- package/dist/hooks/useSse.js +298 -0
- package/dist/hooks/useSse.js.map +1 -0
- package/dist/hooks/useTheme.d.ts +20 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/hooks/useTheme.js +97 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/hooks/useUnauthorized.d.ts +3 -0
- package/dist/hooks/useUnauthorized.d.ts.map +1 -0
- package/dist/hooks/useUnauthorized.js +18 -0
- package/dist/hooks/useUnauthorized.js.map +1 -0
- package/dist/host.d.ts +11 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +10 -0
- package/dist/host.js.map +1 -0
- package/dist/index.d.ts +118 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +91 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/context.d.ts +25 -0
- package/dist/navigation/context.d.ts.map +1 -0
- package/dist/navigation/context.js +45 -0
- package/dist/navigation/context.js.map +1 -0
- package/dist/navigation/index.d.ts +4 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +2 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/types.d.ts +97 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +16 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/plugin/host-state.d.ts +45 -0
- package/dist/plugin/host-state.d.ts.map +1 -0
- package/dist/plugin/host-state.js +62 -0
- package/dist/plugin/host-state.js.map +1 -0
- package/dist/plugin/registry.d.ts +35 -0
- package/dist/plugin/registry.d.ts.map +1 -0
- package/dist/plugin/registry.js +129 -0
- package/dist/plugin/registry.js.map +1 -0
- package/dist/plugin/types.d.ts +165 -0
- package/dist/plugin/types.d.ts.map +1 -0
- package/dist/plugin/types.js +2 -0
- package/dist/plugin/types.js.map +1 -0
- package/dist/plugin/version.d.ts +34 -0
- package/dist/plugin/version.d.ts.map +1 -0
- package/dist/plugin/version.js +37 -0
- package/dist/plugin/version.js.map +1 -0
- package/dist/query-keys.d.ts +31 -0
- package/dist/query-keys.d.ts.map +1 -0
- package/dist/query-keys.js +31 -0
- package/dist/query-keys.js.map +1 -0
- package/dist/schema-editor/SchemaEditor.d.ts +43 -0
- package/dist/schema-editor/SchemaEditor.d.ts.map +1 -0
- package/dist/schema-editor/SchemaEditor.js +106 -0
- package/dist/schema-editor/SchemaEditor.js.map +1 -0
- package/dist/schema-editor/index.d.ts +10 -0
- package/dist/schema-editor/index.d.ts.map +1 -0
- package/dist/schema-editor/index.js +8 -0
- package/dist/schema-editor/index.js.map +1 -0
- package/dist/schema-editor/lint.d.ts +37 -0
- package/dist/schema-editor/lint.d.ts.map +1 -0
- package/dist/schema-editor/lint.js +49 -0
- package/dist/schema-editor/lint.js.map +1 -0
- package/dist/schema-form/SchemaForm.d.ts +70 -0
- package/dist/schema-form/SchemaForm.d.ts.map +1 -0
- package/dist/schema-form/SchemaForm.js +13 -0
- package/dist/schema-form/SchemaForm.js.map +1 -0
- package/dist/schema-form/array-field.d.ts +20 -0
- package/dist/schema-form/array-field.d.ts.map +1 -0
- package/dist/schema-form/array-field.js +39 -0
- package/dist/schema-form/array-field.js.map +1 -0
- package/dist/schema-form/classify.d.ts +87 -0
- package/dist/schema-form/classify.d.ts.map +1 -0
- package/dist/schema-form/classify.js +199 -0
- package/dist/schema-form/classify.js.map +1 -0
- package/dist/schema-form/context.d.ts +4 -0
- package/dist/schema-form/context.d.ts.map +1 -0
- package/dist/schema-form/context.js +14 -0
- package/dist/schema-form/context.js.map +1 -0
- package/dist/schema-form/default-value.d.ts +8 -0
- package/dist/schema-form/default-value.d.ts.map +1 -0
- package/dist/schema-form/default-value.js +64 -0
- package/dist/schema-form/default-value.js.map +1 -0
- package/dist/schema-form/enum-field.d.ts +19 -0
- package/dist/schema-form/enum-field.d.ts.map +1 -0
- package/dist/schema-form/enum-field.js +26 -0
- package/dist/schema-form/enum-field.js.map +1 -0
- package/dist/schema-form/field-group.d.ts +9 -0
- package/dist/schema-form/field-group.d.ts.map +1 -0
- package/dist/schema-form/field-group.js +32 -0
- package/dist/schema-form/field-group.js.map +1 -0
- package/dist/schema-form/field-node.d.ts +24 -0
- package/dist/schema-form/field-node.d.ts.map +1 -0
- package/dist/schema-form/field-node.js +51 -0
- package/dist/schema-form/field-node.js.map +1 -0
- package/dist/schema-form/index.d.ts +13 -0
- package/dist/schema-form/index.d.ts.map +1 -0
- package/dist/schema-form/index.js +11 -0
- package/dist/schema-form/index.js.map +1 -0
- package/dist/schema-form/media-field.d.ts +24 -0
- package/dist/schema-form/media-field.d.ts.map +1 -0
- package/dist/schema-form/media-field.js +169 -0
- package/dist/schema-form/media-field.js.map +1 -0
- package/dist/schema-form/media.d.ts +40 -0
- package/dist/schema-form/media.d.ts.map +1 -0
- package/dist/schema-form/media.js +65 -0
- package/dist/schema-form/media.js.map +1 -0
- package/dist/schema-form/object-fields.d.ts +20 -0
- package/dist/schema-form/object-fields.d.ts.map +1 -0
- package/dist/schema-form/object-fields.js +24 -0
- package/dist/schema-form/object-fields.js.map +1 -0
- package/dist/schema-form/resolve.d.ts +41 -0
- package/dist/schema-form/resolve.d.ts.map +1 -0
- package/dist/schema-form/resolve.js +102 -0
- package/dist/schema-form/resolve.js.map +1 -0
- package/dist/schema-form/string-field.d.ts +20 -0
- package/dist/schema-form/string-field.d.ts.map +1 -0
- package/dist/schema-form/string-field.js +68 -0
- package/dist/schema-form/string-field.js.map +1 -0
- package/dist/schema-form/styles.d.ts +18 -0
- package/dist/schema-form/styles.d.ts.map +1 -0
- package/dist/schema-form/styles.js +18 -0
- package/dist/schema-form/styles.js.map +1 -0
- package/dist/schema-form/types.d.ts +67 -0
- package/dist/schema-form/types.d.ts.map +1 -0
- package/dist/schema-form/types.js +10 -0
- package/dist/schema-form/types.js.map +1 -0
- package/dist/schema-form/union-field.d.ts +24 -0
- package/dist/schema-form/union-field.d.ts.map +1 -0
- package/dist/schema-form/union-field.js +55 -0
- package/dist/schema-form/union-field.js.map +1 -0
- package/dist/schema-form/union.d.ts +4 -0
- package/dist/schema-form/union.d.ts.map +1 -0
- package/dist/schema-form/union.js +68 -0
- package/dist/schema-form/union.js.map +1 -0
- package/dist/schema-form/unsupported-notice.d.ts +18 -0
- package/dist/schema-form/unsupported-notice.d.ts.map +1 -0
- package/dist/schema-form/unsupported-notice.js +8 -0
- package/dist/schema-form/unsupported-notice.js.map +1 -0
- package/dist/schema-form/validate.d.ts +18 -0
- package/dist/schema-form/validate.d.ts.map +1 -0
- package/dist/schema-form/validate.js +162 -0
- package/dist/schema-form/validate.js.map +1 -0
- package/dist/structured-output/StructuredOutput.d.ts +27 -0
- package/dist/structured-output/StructuredOutput.d.ts.map +1 -0
- package/dist/structured-output/StructuredOutput.js +41 -0
- package/dist/structured-output/StructuredOutput.js.map +1 -0
- package/dist/testing.d.ts +80 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +207 -0
- package/dist/testing.js.map +1 -0
- package/package.json +101 -0
- package/src/components/badge.tsx +31 -0
- package/src/components/checkbox.tsx +93 -0
- package/src/components/code-block.tsx +37 -0
- package/src/components/completion-input.tsx +137 -0
- package/src/components/components.css +2212 -0
- package/src/components/confirm-dialog.tsx +77 -0
- package/src/components/control-styles.ts +14 -0
- package/src/components/copy-field.tsx +178 -0
- package/src/components/dialog.tsx +76 -0
- package/src/components/drawer.tsx +83 -0
- package/src/components/error-boundary.tsx +56 -0
- package/src/components/extension-combo-builder.tsx +305 -0
- package/src/components/extension-grouping.ts +116 -0
- package/src/components/extension-picker.tsx +97 -0
- package/src/components/external-link.tsx +40 -0
- package/src/components/field.tsx +169 -0
- package/src/components/fleet-report.tsx +136 -0
- package/src/components/fonts.css +22 -0
- package/src/components/icons.tsx +504 -0
- package/src/components/inputs.tsx +125 -0
- package/src/components/json-diff.tsx +192 -0
- package/src/components/json-tree.tsx +129 -0
- package/src/components/modal-focus.ts +150 -0
- package/src/components/page-header.tsx +107 -0
- package/src/components/primitives.tsx +489 -0
- package/src/components/progress-bar.tsx +100 -0
- package/src/components/radio-group.tsx +160 -0
- package/src/components/reveal-input.tsx +87 -0
- package/src/components/scroll-region.tsx +703 -0
- package/src/components/select.tsx +149 -0
- package/src/components/table.tsx +94 -0
- package/src/components/tabs.tsx +51 -0
- package/src/components/tags.tsx +137 -0
- package/src/components/tokens.css +392 -0
- package/src/components/tokens.ts +102 -0
- package/src/components/tool-picker.tsx +175 -0
- package/src/components/tooltip.tsx +46 -0
- package/src/components/version-history-panel.tsx +407 -0
- package/src/css.d.ts +2 -0
- package/src/download.ts +17 -0
- package/src/element-slot.ts +22 -0
- package/src/elicitation/ElicitationForm.tsx +87 -0
- package/src/errors.ts +12 -0
- package/src/extension-combos.ts +18 -0
- package/src/hooks/useApi.ts +27 -0
- package/src/hooks/useAuth.ts +67 -0
- package/src/hooks/useBreakpoint.ts +78 -0
- package/src/hooks/useCapabilities.ts +242 -0
- package/src/hooks/useSse.ts +314 -0
- package/src/hooks/useTheme.ts +133 -0
- package/src/hooks/useUnauthorized.ts +20 -0
- package/src/host.ts +15 -0
- package/src/index.ts +267 -0
- package/src/navigation/context.tsx +90 -0
- package/src/navigation/index.ts +9 -0
- package/src/navigation/types.ts +90 -0
- package/src/plugin/host-state.ts +93 -0
- package/src/plugin/registry.ts +174 -0
- package/src/plugin/types.ts +178 -0
- package/src/plugin/version.ts +44 -0
- package/src/query-keys.ts +34 -0
- package/src/schema-editor/SchemaEditor.tsx +186 -0
- package/src/schema-editor/index.ts +9 -0
- package/src/schema-editor/lint.ts +70 -0
- package/src/schema-form/SchemaForm.tsx +107 -0
- package/src/schema-form/array-field.tsx +110 -0
- package/src/schema-form/classify.ts +302 -0
- package/src/schema-form/context.ts +17 -0
- package/src/schema-form/default-value.ts +65 -0
- package/src/schema-form/enum-field.tsx +65 -0
- package/src/schema-form/field-group.tsx +71 -0
- package/src/schema-form/field-node.tsx +161 -0
- package/src/schema-form/index.ts +12 -0
- package/src/schema-form/media-field.tsx +281 -0
- package/src/schema-form/media.ts +69 -0
- package/src/schema-form/object-fields.tsx +74 -0
- package/src/schema-form/resolve.ts +114 -0
- package/src/schema-form/string-field.tsx +161 -0
- package/src/schema-form/styles.ts +20 -0
- package/src/schema-form/types.ts +71 -0
- package/src/schema-form/union-field.tsx +122 -0
- package/src/schema-form/union.ts +78 -0
- package/src/schema-form/unsupported-notice.tsx +39 -0
- package/src/schema-form/validate.ts +183 -0
- package/src/structured-output/StructuredOutput.tsx +81 -0
- package/src/testing.ts +235 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `Select` — a design-system wrapper over Radix Select (an accessible listbox with
|
|
4
|
+
* a `combobox` trigger). Options are passed declaratively — either a flat
|
|
5
|
+
* `options` run or labelled `groups`, never both — and the trigger auto-wires to
|
|
6
|
+
* an enclosing `Field`.
|
|
7
|
+
*
|
|
8
|
+
* Every surface is a class — `tai-select-trigger` for the control, and
|
|
9
|
+
* `tai-select-content` / `tai-select-item` for the popup, which is where the
|
|
10
|
+
* shared keyboard-highlight rule lives. The disclosure mark is the design
|
|
11
|
+
* system's `ChevronDownIcon`, decorative behind the trigger's own name.
|
|
12
|
+
*/
|
|
13
|
+
import * as RadixSelect from '@radix-ui/react-select';
|
|
14
|
+
import { SELECT_TRIGGER_CLASS } from './control-styles';
|
|
15
|
+
import { useFieldControl } from './field';
|
|
16
|
+
import { CheckIcon, ChevronDownIcon } from './icons';
|
|
17
|
+
function OptionItem({ option }) {
|
|
18
|
+
return (_jsxs(RadixSelect.Item, { className: "tai-select-item", value: option.value, disabled: option.disabled, children: [_jsx(RadixSelect.ItemText, { children: option.label }), _jsx(RadixSelect.ItemIndicator, { className: "tai-select-item-indicator", children: _jsx(CheckIcon, {}) })] }));
|
|
19
|
+
}
|
|
20
|
+
export function Select(props) {
|
|
21
|
+
const { value, defaultValue, onValueChange, placeholder = 'Select…', disabled, name, 'aria-label': ariaLabel, } = props;
|
|
22
|
+
const field = useFieldControl();
|
|
23
|
+
// Untyped JavaScript is the only caller that reaches this. Rendering one list
|
|
24
|
+
// and dropping the other would lose every entry in the discarded one silently,
|
|
25
|
+
// and an empty listbox reads as "there is nothing to choose".
|
|
26
|
+
if ((props.options === undefined) === (props.groups === undefined)) {
|
|
27
|
+
throw new Error('Select renders exactly one of `options` or `groups`; it was given both, or neither.');
|
|
28
|
+
}
|
|
29
|
+
return (_jsxs(RadixSelect.Root, { value: value, defaultValue: defaultValue, onValueChange: onValueChange, disabled: disabled, name: name, children: [_jsxs(RadixSelect.Trigger, { id: field.id, className: SELECT_TRIGGER_CLASS, "aria-label": field.id === undefined ? ariaLabel : undefined, "aria-describedby": field['aria-describedby'], "aria-invalid": field['aria-invalid'], children: [_jsx(RadixSelect.Value, { placeholder: placeholder }), _jsx(RadixSelect.Icon, { "aria-hidden": "true", children: _jsx(ChevronDownIcon, {}) })] }), _jsx(RadixSelect.Portal, { children: _jsx(RadixSelect.Content, { className: "tai-select-content", position: "popper", sideOffset: 4, children: _jsx(RadixSelect.Viewport, { className: "tai-select-viewport", children: props.groups !== undefined
|
|
30
|
+
? props.groups.map((group) => (_jsxs(RadixSelect.Group, { children: [_jsx(RadixSelect.Label, { className: "tai-select-group-label tai-label", children: group.label }), group.options.map((option) => (_jsx(OptionItem, { option: option }, option.value)))] }, group.label)))
|
|
31
|
+
: props.options.map((option) => _jsx(OptionItem, { option: option }, option.value)) }) }) })] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic table primitives — thin wrappers over the native table elements.
|
|
3
|
+
* They keep the real `table`/`row`/`columnheader`/`cell` roles so assistive
|
|
4
|
+
* tech and tests read a proper table. Only the root carries a class: the header
|
|
5
|
+
* and cell rules in the stylesheet are descendants of `.tai-table`, so a cell
|
|
6
|
+
* cannot drift out of the system by forgetting one.
|
|
7
|
+
*
|
|
8
|
+
* A numeric column opts in with `numeric`, which stamps `data-numeric="true"` —
|
|
9
|
+
* the hook the stylesheet right-aligns on tabular figures so digits line up.
|
|
10
|
+
*
|
|
11
|
+
* Each wrapper FORWARDS a consumer `ref` to the native element it renders — the
|
|
12
|
+
* attribute spread carries it, the same way it carries every other native prop —
|
|
13
|
+
* so a caller that has to measure or scroll a cell is not forced back to a raw
|
|
14
|
+
* `<td>` and out of the system.
|
|
15
|
+
*/
|
|
16
|
+
import type { HTMLAttributes, Ref, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';
|
|
17
|
+
export interface TableProps extends HTMLAttributes<HTMLTableElement> {
|
|
18
|
+
readonly children?: ReactNode;
|
|
19
|
+
/** A consumer ref for the `<table>` itself. */
|
|
20
|
+
readonly ref?: Ref<HTMLTableElement>;
|
|
21
|
+
}
|
|
22
|
+
export declare function Table({ children, className, ...props }: TableProps): import("react").JSX.Element;
|
|
23
|
+
/** `<thead>` and `<tbody>` take the same surface: the native one. */
|
|
24
|
+
export interface TableSectionProps extends HTMLAttributes<HTMLTableSectionElement> {
|
|
25
|
+
readonly children?: ReactNode;
|
|
26
|
+
/** A consumer ref for the section element itself. */
|
|
27
|
+
readonly ref?: Ref<HTMLTableSectionElement>;
|
|
28
|
+
}
|
|
29
|
+
export declare function THead({ children, ...props }: TableSectionProps): import("react").JSX.Element;
|
|
30
|
+
export declare function TBody({ children, ...props }: TableSectionProps): import("react").JSX.Element;
|
|
31
|
+
export interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
32
|
+
readonly children?: ReactNode;
|
|
33
|
+
/** A consumer ref for the `<tr>` itself. */
|
|
34
|
+
readonly ref?: Ref<HTMLTableRowElement>;
|
|
35
|
+
}
|
|
36
|
+
export declare function TR({ children, ...props }: TableRowProps): import("react").JSX.Element;
|
|
37
|
+
/** Right-align a column of digits on tabular figures. */
|
|
38
|
+
export interface NumericColumnProps {
|
|
39
|
+
readonly numeric?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A header cell. `scope` defaults to `col` because that is what a `<th>` in the
|
|
43
|
+
* header row IS, and without it nothing associates the cell with the column
|
|
44
|
+
* below it: a screen reader announcing a data cell has no header to name it.
|
|
45
|
+
* A row header — the leading cell of a body row — passes `scope="row"`.
|
|
46
|
+
*/
|
|
47
|
+
export interface THProps extends ThHTMLAttributes<HTMLTableCellElement>, NumericColumnProps {
|
|
48
|
+
readonly children?: ReactNode;
|
|
49
|
+
/** A consumer ref for the `<th>` itself. */
|
|
50
|
+
readonly ref?: Ref<HTMLTableCellElement>;
|
|
51
|
+
}
|
|
52
|
+
export declare function TH({ children, numeric, scope, ...props }: THProps): import("react").JSX.Element;
|
|
53
|
+
export interface TDProps extends TdHTMLAttributes<HTMLTableCellElement>, NumericColumnProps {
|
|
54
|
+
readonly children?: ReactNode;
|
|
55
|
+
/** A consumer ref for the `<td>` itself. */
|
|
56
|
+
readonly ref?: Ref<HTMLTableCellElement>;
|
|
57
|
+
}
|
|
58
|
+
export declare function TD({ children, numeric, ...props }: TDProps): import("react").JSX.Element;
|
|
59
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAEhG,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACtC;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,+BAMlE;AAED,qEAAqE;AACrE,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,uBAAuB,CAAC;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,uBAAuB,CAAC,CAAC;CAC7C;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,+BAE9D;AAED,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,+BAE9D;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;CACzC;AAED,wBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAEvD;AAED,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAQ,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,kBAAkB;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;CAC1C;AAED,wBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAe,EAAE,KAAa,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,+BAMjF;AAED,MAAM,WAAW,OAAQ,SAAQ,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,kBAAkB;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;CAC1C;AAED,wBAAgB,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,OAAO,+BAMlE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function Table({ children, className, ...props }) {
|
|
3
|
+
return (_jsx("table", { ...props, className: className === undefined ? 'tai-table' : `tai-table ${className}`, children: children }));
|
|
4
|
+
}
|
|
5
|
+
export function THead({ children, ...props }) {
|
|
6
|
+
return _jsx("thead", { ...props, children: children });
|
|
7
|
+
}
|
|
8
|
+
export function TBody({ children, ...props }) {
|
|
9
|
+
return _jsx("tbody", { ...props, children: children });
|
|
10
|
+
}
|
|
11
|
+
export function TR({ children, ...props }) {
|
|
12
|
+
return _jsx("tr", { ...props, children: children });
|
|
13
|
+
}
|
|
14
|
+
export function TH({ children, numeric = false, scope = 'col', ...props }) {
|
|
15
|
+
return (_jsx("th", { ...props, scope: scope, "data-numeric": numeric ? 'true' : undefined, children: children }));
|
|
16
|
+
}
|
|
17
|
+
export function TD({ children, numeric = false, ...props }) {
|
|
18
|
+
return (_jsx("td", { ...props, "data-numeric": numeric ? 'true' : undefined, children: children }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/components/table.tsx"],"names":[],"mappings":";AAuBA,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,EAAc;IACjE,OAAO,CACL,mBAAW,KAAK,EAAE,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,SAAS,EAAE,YAC1F,QAAQ,GACH,CACT,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IAC7D,OAAO,mBAAW,KAAK,YAAG,QAAQ,GAAS,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAqB;IAC7D,OAAO,mBAAW,KAAK,YAAG,QAAQ,GAAS,CAAC;AAC9C,CAAC;AAQD,MAAM,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAiB;IACtD,OAAO,gBAAQ,KAAK,YAAG,QAAQ,GAAM,CAAC;AACxC,CAAC;AAmBD,MAAM,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,KAAK,EAAW;IAChF,OAAO,CACL,gBAAQ,KAAK,EAAE,KAAK,EAAE,KAAK,kBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YACpE,QAAQ,GACN,CACN,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,KAAK,EAAW;IACjE,OAAO,CACL,gBAAQ,KAAK,kBAAgB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YACtD,QAAQ,GACN,CACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface TabItem {
|
|
3
|
+
readonly value: string;
|
|
4
|
+
readonly label: string;
|
|
5
|
+
readonly content: ReactNode;
|
|
6
|
+
readonly disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface TabsProps {
|
|
9
|
+
readonly items: readonly TabItem[];
|
|
10
|
+
readonly value?: string;
|
|
11
|
+
readonly defaultValue?: string;
|
|
12
|
+
readonly onValueChange?: (value: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function Tabs({ items, value, defaultValue, onValueChange }: TabsProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,SAAS,+BA2B5E"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `Tabs` — a wrapper over Radix Tabs (roles `tablist` / `tab` / `tabpanel`,
|
|
4
|
+
* arrow-key roving focus). Panels are declared inline per item. The selected
|
|
5
|
+
* tab's accent rail and heavier label come from `.tai-tab[data-state='active']`
|
|
6
|
+
* in the stylesheet, keyed off the `data-state` Radix stamps on each trigger.
|
|
7
|
+
*/
|
|
8
|
+
import * as RadixTabs from '@radix-ui/react-tabs';
|
|
9
|
+
export function Tabs({ items, value, defaultValue, onValueChange }) {
|
|
10
|
+
const firstValue = items[0]?.value;
|
|
11
|
+
return (_jsxs(RadixTabs.Root, { value: value, defaultValue: defaultValue ?? firstValue, onValueChange: onValueChange, children: [_jsx(RadixTabs.List, { className: "tai-tablist", children: items.map((item) => (_jsx(RadixTabs.Trigger, { value: item.value, disabled: item.disabled, className: "tai-tab", children: item.label }, item.value))) }), items.map((item) => (_jsx(RadixTabs.Content, { value: item.value, className: "tai-tabpanel", children: item.content }, item.value)))] }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAiBlD,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAa;IAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;IACnC,OAAO,CACL,MAAC,SAAS,CAAC,IAAI,IACb,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,IAAI,UAAU,EACxC,aAAa,EAAE,aAAa,aAE5B,KAAC,SAAS,CAAC,IAAI,IAAC,SAAS,EAAC,aAAa,YACpC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,CAAC,OAAO,IAEhB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,SAAS,YAElB,IAAI,CAAC,KAAK,IALN,IAAI,CAAC,KAAK,CAMG,CACrB,CAAC,GACa,EAChB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,CAAC,OAAO,IAAkB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAC,cAAc,YAC5E,IAAI,CAAC,OAAO,IADS,IAAI,CAAC,KAAK,CAEd,CACrB,CAAC,IACa,CAClB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tag rendering + authoring, shared across features. `TagChips` displays a list of
|
|
3
|
+
* labels as escaped chips (server strings are arbitrary — React escapes every one,
|
|
4
|
+
* never an HTML sink). `TagsInput` is the controlled add/remove editor.
|
|
5
|
+
*
|
|
6
|
+
* A tag is a `tai-chip tai-chip-static`: it reads, it is not a control. The
|
|
7
|
+
* control beside it is the `tai-icon-btn` that removes it, which carries the
|
|
8
|
+
* accessible name ("Remove tag <tag>") because its `CloseIcon` is decorative.
|
|
9
|
+
*
|
|
10
|
+
* These live in the SDK because more than one feature (presets, agents, and the
|
|
11
|
+
* version-history panel's per-version tag editor) needs the same control; a single
|
|
12
|
+
* canonical copy keeps the affordance identical everywhere.
|
|
13
|
+
*/
|
|
14
|
+
import { type ReactNode } from 'react';
|
|
15
|
+
export interface TagChipsProps {
|
|
16
|
+
readonly tags: readonly string[];
|
|
17
|
+
}
|
|
18
|
+
/** Read-only chips for a list of tags. Renders nothing when there are none. */
|
|
19
|
+
export declare function TagChips({ tags }: TagChipsProps): ReactNode;
|
|
20
|
+
export interface TagsInputProps {
|
|
21
|
+
readonly value: readonly string[];
|
|
22
|
+
readonly onChange: (next: string[]) => void;
|
|
23
|
+
readonly disabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The draft input's accessible name when no enclosing `Field` supplies one.
|
|
26
|
+
* Forwarded to the input as a native attribute — see the docblock below.
|
|
27
|
+
*/
|
|
28
|
+
readonly 'aria-label'?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Controlled tag editor. The caller owns the `value` list; `onChange` receives the
|
|
32
|
+
* next list on every add/remove. A blank or duplicate entry is ignored (never a
|
|
33
|
+
* silent duplicate chip). Enter or comma commits the draft chip.
|
|
34
|
+
*
|
|
35
|
+
* The draft input is a NATIVE-ATTRIBUTE PASS-THROUGH (the family `inputs.tsx`
|
|
36
|
+
* documents): inside a `Field` it renders the SDK's `TextInput`, which spreads
|
|
37
|
+
* `useFieldControl()` and so claims the Field's control id, taking the Field's
|
|
38
|
+
* visible label as its name; mounted OUTSIDE a `Field` it is named by a caller
|
|
39
|
+
* `aria-label`, which the editor forwards to that same input. Without one a bare
|
|
40
|
+
* editor is unnamed — the published component owns the naming route rather than
|
|
41
|
+
* assuming a `Field` is always present. When a `Field` DOES name it, a caller
|
|
42
|
+
* `aria-label` still has to CONTAIN that visible label (WCAG 2.5.3, Label in
|
|
43
|
+
* Name); `components/field-group.test.ts` enforces that at every call site.
|
|
44
|
+
*/
|
|
45
|
+
export declare function TagsInput({ value, onChange, disabled, 'aria-label': ariaLabel, }: TagsInputProps): ReactNode;
|
|
46
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/components/tags.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AASrE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,GAAG,SAAS,CAW3D;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,YAAY,EAAE,SAAS,GACxB,EAAE,cAAc,GAAG,SAAS,CAiE5B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Tag rendering + authoring, shared across features. `TagChips` displays a list of
|
|
4
|
+
* labels as escaped chips (server strings are arbitrary — React escapes every one,
|
|
5
|
+
* never an HTML sink). `TagsInput` is the controlled add/remove editor.
|
|
6
|
+
*
|
|
7
|
+
* A tag is a `tai-chip tai-chip-static`: it reads, it is not a control. The
|
|
8
|
+
* control beside it is the `tai-icon-btn` that removes it, which carries the
|
|
9
|
+
* accessible name ("Remove tag <tag>") because its `CloseIcon` is decorative.
|
|
10
|
+
*
|
|
11
|
+
* These live in the SDK because more than one feature (presets, agents, and the
|
|
12
|
+
* version-history panel's per-version tag editor) needs the same control; a single
|
|
13
|
+
* canonical copy keeps the affordance identical everywhere.
|
|
14
|
+
*/
|
|
15
|
+
import { useState } from 'react';
|
|
16
|
+
import { CloseIcon } from './icons';
|
|
17
|
+
import { Button } from './primitives';
|
|
18
|
+
import { TextInput } from './inputs';
|
|
19
|
+
/** A tag and its remove control read as one unit, tighter than the row default. */
|
|
20
|
+
const tagGroupStyle = { gap: 'var(--tai-space-1)' };
|
|
21
|
+
/** Read-only chips for a list of tags. Renders nothing when there are none. */
|
|
22
|
+
export function TagChips({ tags }) {
|
|
23
|
+
if (tags.length === 0)
|
|
24
|
+
return null;
|
|
25
|
+
return (_jsx("span", { className: "tai-row", style: tagGroupStyle, children: tags.map((tag) => (_jsx("span", { className: "tai-chip tai-chip-static", children: tag }, tag))) }));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Controlled tag editor. The caller owns the `value` list; `onChange` receives the
|
|
29
|
+
* next list on every add/remove. A blank or duplicate entry is ignored (never a
|
|
30
|
+
* silent duplicate chip). Enter or comma commits the draft chip.
|
|
31
|
+
*
|
|
32
|
+
* The draft input is a NATIVE-ATTRIBUTE PASS-THROUGH (the family `inputs.tsx`
|
|
33
|
+
* documents): inside a `Field` it renders the SDK's `TextInput`, which spreads
|
|
34
|
+
* `useFieldControl()` and so claims the Field's control id, taking the Field's
|
|
35
|
+
* visible label as its name; mounted OUTSIDE a `Field` it is named by a caller
|
|
36
|
+
* `aria-label`, which the editor forwards to that same input. Without one a bare
|
|
37
|
+
* editor is unnamed — the published component owns the naming route rather than
|
|
38
|
+
* assuming a `Field` is always present. When a `Field` DOES name it, a caller
|
|
39
|
+
* `aria-label` still has to CONTAIN that visible label (WCAG 2.5.3, Label in
|
|
40
|
+
* Name); `components/field-group.test.ts` enforces that at every call site.
|
|
41
|
+
*/
|
|
42
|
+
export function TagsInput({ value, onChange, disabled, 'aria-label': ariaLabel, }) {
|
|
43
|
+
const [draft, setDraft] = useState('');
|
|
44
|
+
const add = () => {
|
|
45
|
+
const tag = draft.trim();
|
|
46
|
+
if (tag === '' || value.includes(tag)) {
|
|
47
|
+
setDraft('');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
onChange([...value, tag]);
|
|
51
|
+
setDraft('');
|
|
52
|
+
};
|
|
53
|
+
const remove = (tag) => {
|
|
54
|
+
onChange(value.filter((existing) => existing !== tag));
|
|
55
|
+
};
|
|
56
|
+
return (_jsxs("div", { className: "tai-stack tai-stack-2", children: [_jsxs("div", { className: "tai-row", children: [_jsx("div", { style: { flex: 1 }, children: _jsx(TextInput, { value: draft, onChange: (event) => {
|
|
57
|
+
setDraft(event.target.value);
|
|
58
|
+
}, onKeyDown: (event) => {
|
|
59
|
+
// Enter or comma commits the draft chip.
|
|
60
|
+
if (event.key === 'Enter' || event.key === ',') {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
add();
|
|
63
|
+
}
|
|
64
|
+
}, placeholder: "Add a tag\u2026", "aria-label": ariaLabel, disabled: disabled }) }), _jsx(Button, { type: "button", onClick: add, disabled: disabled, children: "Add tag" })] }), value.length > 0 ? (_jsx("div", { className: "tai-row", children: value.map((tag) => (_jsxs("span", { className: "tai-row", style: tagGroupStyle, children: [_jsx("span", { className: "tai-chip tai-chip-static", children: tag }), _jsx("button", { type: "button", className: "tai-icon-btn", "aria-label": `Remove tag ${tag}`, onClick: () => {
|
|
65
|
+
remove(tag);
|
|
66
|
+
}, disabled: disabled, children: _jsx(CloseIcon, {}) })] }, tag))) })) : null] }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.js","sourceRoot":"","sources":["../../src/components/tags.tsx"],"names":[],"mappings":"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"}
|