@signalflare-ai/ui 0.5.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/CHANGELOG.md +96 -0
- package/README.md +527 -0
- package/ai/USAGE.md +200 -0
- package/ai/component-registry.json +7103 -0
- package/ai/component-registry.md +3046 -0
- package/ai/schemas.ts +1230 -0
- package/bin/intent.js +23 -0
- package/bin/sf.js +34 -0
- package/dist/.build-complete +1 -0
- package/dist/ai/schemas.d.ts +7056 -0
- package/dist/ai/schemas.d.ts.map +1 -0
- package/dist/ai-actions-DG1dhDMP.js +57 -0
- package/dist/ai-actions-DG1dhDMP.js.map +1 -0
- package/dist/ai-agent-card-BbtL4NII.js +171 -0
- package/dist/ai-agent-card-BbtL4NII.js.map +1 -0
- package/dist/ai-approval-Mb7-BY6i.js +184 -0
- package/dist/ai-approval-Mb7-BY6i.js.map +1 -0
- package/dist/ai-code-block-BI_z0UVR.js +110 -0
- package/dist/ai-code-block-BI_z0UVR.js.map +1 -0
- package/dist/ai-conversation-DYtExcrw.js +184 -0
- package/dist/ai-conversation-DYtExcrw.js.map +1 -0
- package/dist/ai-info-banner-BpzauUAY.js +76 -0
- package/dist/ai-info-banner-BpzauUAY.js.map +1 -0
- package/dist/ai-loader-Cr3eQkNS.js +134 -0
- package/dist/ai-loader-Cr3eQkNS.js.map +1 -0
- package/dist/ai-message-CV8SBoHM.js +286 -0
- package/dist/ai-message-CV8SBoHM.js.map +1 -0
- package/dist/ai-mission-header-ByYkJ6YP.js +171 -0
- package/dist/ai-mission-header-ByYkJ6YP.js.map +1 -0
- package/dist/ai-prompt-input-Bo1YuJly.js +769 -0
- package/dist/ai-prompt-input-Bo1YuJly.js.map +1 -0
- package/dist/ai-question-Dp1g9k2o.js +149 -0
- package/dist/ai-question-Dp1g9k2o.js.map +1 -0
- package/dist/ai-reasoning-UAmNx_LD.js +270 -0
- package/dist/ai-reasoning-UAmNx_LD.js.map +1 -0
- package/dist/ai-response-BWoVsNQG.js +42 -0
- package/dist/ai-response-BWoVsNQG.js.map +1 -0
- package/dist/ai-shimmer-BpOmfonu.js +43 -0
- package/dist/ai-shimmer-BpOmfonu.js.map +1 -0
- package/dist/ai-status-badge-WhbKVeqn.js +63 -0
- package/dist/ai-status-badge-WhbKVeqn.js.map +1 -0
- package/dist/ai-streaming-text-ClL7FwvD.js +81 -0
- package/dist/ai-streaming-text-ClL7FwvD.js.map +1 -0
- package/dist/ai-subagent-BruGN1UE.js +133 -0
- package/dist/ai-subagent-BruGN1UE.js.map +1 -0
- package/dist/ai-suggestion-CNsCZj5P.js +55 -0
- package/dist/ai-suggestion-CNsCZj5P.js.map +1 -0
- package/dist/ai-task-list-B9CpMDYN.js +120 -0
- package/dist/ai-task-list-B9CpMDYN.js.map +1 -0
- package/dist/ai-timeline-Bb5ntsr3.js +373 -0
- package/dist/ai-timeline-Bb5ntsr3.js.map +1 -0
- package/dist/ai-tool-BGH8nQ_D.js +437 -0
- package/dist/ai-tool-BGH8nQ_D.js.map +1 -0
- package/dist/ai-usage-bar-BI-p-JBk.js +70 -0
- package/dist/ai-usage-bar-BI-p-JBk.js.map +1 -0
- package/dist/badge-D_eaA6wv.js +128 -0
- package/dist/badge-D_eaA6wv.js.map +1 -0
- package/dist/banner-B_6oBrsu.js +54 -0
- package/dist/banner-B_6oBrsu.js.map +1 -0
- package/dist/breadcrumbs-BlmeYfgq.js +128 -0
- package/dist/breadcrumbs-BlmeYfgq.js.map +1 -0
- package/dist/button-De0267YU.js +170 -0
- package/dist/button-De0267YU.js.map +1 -0
- package/dist/catalog.js +506 -0
- package/dist/catalog.js.map +1 -0
- package/dist/chart-Bes4MN3C.js +618 -0
- package/dist/chart-Bes4MN3C.js.map +1 -0
- package/dist/checkbox-CPX7lBaU.js +153 -0
- package/dist/checkbox-CPX7lBaU.js.map +1 -0
- package/dist/clipboard-text-92YeCybc.js +176 -0
- package/dist/clipboard-text-92YeCybc.js.map +1 -0
- package/dist/cn-YROP2_ox.js +25 -0
- package/dist/cn-YROP2_ox.js.map +1 -0
- package/dist/code-DE1Yy1Cu.js +97 -0
- package/dist/code-DE1Yy1Cu.js.map +1 -0
- package/dist/collapsible-DWsXeXmS.js +72 -0
- package/dist/collapsible-DWsXeXmS.js.map +1 -0
- package/dist/combobox-B0bLdsX8.js +197 -0
- package/dist/combobox-B0bLdsX8.js.map +1 -0
- package/dist/command-line/cli.js +823 -0
- package/dist/command-palette-CBTY8EiF.js +484 -0
- package/dist/command-palette-CBTY8EiF.js.map +1 -0
- package/dist/components/ai-actions.js +3 -0
- package/dist/components/ai-agent-card.js +3 -0
- package/dist/components/ai-approval.js +3 -0
- package/dist/components/ai-code-block.js +3 -0
- package/dist/components/ai-conversation.js +3 -0
- package/dist/components/ai-info-banner.js +3 -0
- package/dist/components/ai-loader.js +3 -0
- package/dist/components/ai-message.js +3 -0
- package/dist/components/ai-mission-header.js +3 -0
- package/dist/components/ai-prompt-input.js +3 -0
- package/dist/components/ai-question.js +3 -0
- package/dist/components/ai-reasoning.js +3 -0
- package/dist/components/ai-response.js +3 -0
- package/dist/components/ai-shimmer.js +3 -0
- package/dist/components/ai-status-badge.js +3 -0
- package/dist/components/ai-streaming-text.js +3 -0
- package/dist/components/ai-subagent.js +3 -0
- package/dist/components/ai-suggestion.js +3 -0
- package/dist/components/ai-task-list.js +3 -0
- package/dist/components/ai-timeline.js +3 -0
- package/dist/components/ai-tool.js +3 -0
- package/dist/components/ai-usage-bar.js +3 -0
- package/dist/components/badge.js +3 -0
- package/dist/components/banner.js +3 -0
- package/dist/components/breadcrumbs.js +3 -0
- package/dist/components/button.js +3 -0
- package/dist/components/chart.js +3 -0
- package/dist/components/checkbox.js +3 -0
- package/dist/components/clipboard-text.js +3 -0
- package/dist/components/code.js +3 -0
- package/dist/components/collapsible.js +3 -0
- package/dist/components/combobox.js +3 -0
- package/dist/components/command-palette.js +3 -0
- package/dist/components/data-grid.js +3 -0
- package/dist/components/date-picker.js +3 -0
- package/dist/components/date-range-picker.js +3 -0
- package/dist/components/dialog.js +3 -0
- package/dist/components/dropdown.js +3 -0
- package/dist/components/empty.js +3 -0
- package/dist/components/field.js +3 -0
- package/dist/components/filters.js +3 -0
- package/dist/components/flow.js +3 -0
- package/dist/components/grid.js +3 -0
- package/dist/components/input.js +4 -0
- package/dist/components/label.js +3 -0
- package/dist/components/layer-card.js +3 -0
- package/dist/components/link.js +92 -0
- package/dist/components/link.js.map +1 -0
- package/dist/components/loader.js +4 -0
- package/dist/components/menubar.js +3 -0
- package/dist/components/meter.js +3 -0
- package/dist/components/pagination.js +3 -0
- package/dist/components/popover.js +3 -0
- package/dist/components/radio.js +3 -0
- package/dist/components/select.js +3 -0
- package/dist/components/sensitive-input.js +3 -0
- package/dist/components/sidebar.js +3 -0
- package/dist/components/signalflare-ai-logo.js +3 -0
- package/dist/components/surface.js +3 -0
- package/dist/components/switch.js +3 -0
- package/dist/components/table.js +3 -0
- package/dist/components/tabs.js +3 -0
- package/dist/components/text.js +3 -0
- package/dist/components/theme-toggle.js +3 -0
- package/dist/components/toast.js +3 -0
- package/dist/components/tooltip.js +3 -0
- package/dist/components/use-agent-harness.js +3 -0
- package/dist/data-grid-UJ9ja5cu.js +305 -0
- package/dist/data-grid-UJ9ja5cu.js.map +1 -0
- package/dist/date-picker-ebekkC3R.js +57 -0
- package/dist/date-picker-ebekkC3R.js.map +1 -0
- package/dist/date-range-picker-D75LLINc.js +347 -0
- package/dist/date-range-picker-D75LLINc.js.map +1 -0
- package/dist/dialog-CyHEQXEY.js +104 -0
- package/dist/dialog-CyHEQXEY.js.map +1 -0
- package/dist/dist-BNlyONdD.js +3546 -0
- package/dist/dist-BNlyONdD.js.map +1 -0
- package/dist/dropdown-J5T4pHaR.js +202 -0
- package/dist/dropdown-J5T4pHaR.js.map +1 -0
- package/dist/empty-D2TypIId.js +90 -0
- package/dist/empty-D2TypIId.js.map +1 -0
- package/dist/favicon.svg +4 -0
- package/dist/field-Y_UK1_Cg.js +57 -0
- package/dist/field-Y_UK1_Cg.js.map +1 -0
- package/dist/filters-BdBogf7D.js +682 -0
- package/dist/filters-BdBogf7D.js.map +1 -0
- package/dist/flow-BRsYUCJa.js +741 -0
- package/dist/flow-BRsYUCJa.js.map +1 -0
- package/dist/genui.js +40 -0
- package/dist/genui.js.map +1 -0
- package/dist/grid-qUAN9hFx.js +119 -0
- package/dist/grid-qUAN9hFx.js.map +1 -0
- package/dist/highlight-to-react-ClEfL81q.js +57 -0
- package/dist/highlight-to-react-ClEfL81q.js.map +1 -0
- package/dist/index.js +215 -0
- package/dist/index.js.map +1 -0
- package/dist/input-BxQAnXki.js +81 -0
- package/dist/input-BxQAnXki.js.map +1 -0
- package/dist/input-Cn25I4o5.js +121 -0
- package/dist/input-Cn25I4o5.js.map +1 -0
- package/dist/label-QtJxtJ4u.js +70 -0
- package/dist/label-QtJxtJ4u.js.map +1 -0
- package/dist/layer-card-BME0eljh.js +44 -0
- package/dist/layer-card-BME0eljh.js.map +1 -0
- package/dist/link-provider-BUZKXaNE.js +25 -0
- package/dist/link-provider-BUZKXaNE.js.map +1 -0
- package/dist/loader-DAcc-Uag.js +84 -0
- package/dist/loader-DAcc-Uag.js.map +1 -0
- package/dist/logo.svg +1 -0
- package/dist/menubar-C8NzAjfd.js +102 -0
- package/dist/menubar-C8NzAjfd.js.map +1 -0
- package/dist/meter-CpmTenEr.js +37 -0
- package/dist/meter-CpmTenEr.js.map +1 -0
- package/dist/pagination-C_YqCy8l.js +117 -0
- package/dist/pagination-C_YqCy8l.js.map +1 -0
- package/dist/popover-BRQZ2b6z.js +147 -0
- package/dist/popover-BRQZ2b6z.js.map +1 -0
- package/dist/primitives/accordion.js +2 -0
- package/dist/primitives/alert-dialog.js +2 -0
- package/dist/primitives/autocomplete.js +2 -0
- package/dist/primitives/avatar.js +2 -0
- package/dist/primitives/button.js +2 -0
- package/dist/primitives/checkbox-group.js +2 -0
- package/dist/primitives/checkbox.js +2 -0
- package/dist/primitives/collapsible.js +2 -0
- package/dist/primitives/combobox.js +2 -0
- package/dist/primitives/context-menu.js +2 -0
- package/dist/primitives/csp-provider.js +2 -0
- package/dist/primitives/dialog.js +2 -0
- package/dist/primitives/direction-provider.js +2 -0
- package/dist/primitives/drawer.js +2 -0
- package/dist/primitives/field.js +2 -0
- package/dist/primitives/fieldset.js +2 -0
- package/dist/primitives/form.js +2 -0
- package/dist/primitives/input.js +2 -0
- package/dist/primitives/menu.js +2 -0
- package/dist/primitives/menubar.js +2 -0
- package/dist/primitives/meter.js +2 -0
- package/dist/primitives/navigation-menu.js +2 -0
- package/dist/primitives/number-field.js +2 -0
- package/dist/primitives/popover.js +2 -0
- package/dist/primitives/preview-card.js +2 -0
- package/dist/primitives/progress.js +2 -0
- package/dist/primitives/radio-group.js +2 -0
- package/dist/primitives/radio.js +2 -0
- package/dist/primitives/scroll-area.js +2 -0
- package/dist/primitives/select.js +2 -0
- package/dist/primitives/separator.js +2 -0
- package/dist/primitives/slider.js +2 -0
- package/dist/primitives/switch.js +2 -0
- package/dist/primitives/tabs.js +2 -0
- package/dist/primitives/toast.js +2 -0
- package/dist/primitives/toggle-group.js +2 -0
- package/dist/primitives/toggle.js +2 -0
- package/dist/primitives/toolbar.js +2 -0
- package/dist/primitives/tooltip.js +2 -0
- package/dist/primitives.js +40 -0
- package/dist/radio-B7zg1wUI.js +101 -0
- package/dist/radio-B7zg1wUI.js.map +1 -0
- package/dist/registry.js +1 -0
- package/dist/select-9p721G00.js +95 -0
- package/dist/select-9p721G00.js.map +1 -0
- package/dist/sensitive-input-D5je2NLl.js +248 -0
- package/dist/sensitive-input-D5je2NLl.js.map +1 -0
- package/dist/sidebar-DOwBrq57.js +964 -0
- package/dist/sidebar-DOwBrq57.js.map +1 -0
- package/dist/signalflare-ai-logo-DDhxMJD6.js +260 -0
- package/dist/signalflare-ai-logo-DDhxMJD6.js.map +1 -0
- package/dist/skeleton-line-Do3UmGk9.js +36 -0
- package/dist/skeleton-line-Do3UmGk9.js.map +1 -0
- package/dist/src/blocks/agent-harness/agent-harness.d.ts +177 -0
- package/dist/src/blocks/agent-harness/agent-harness.d.ts.map +1 -0
- package/dist/src/blocks/agent-harness/agent-harness.tsx +1122 -0
- package/dist/src/blocks/agent-harness/index.d.ts +2 -0
- package/dist/src/blocks/agent-harness/index.d.ts.map +1 -0
- package/dist/src/blocks/commander/commander.d.ts +101 -0
- package/dist/src/blocks/commander/commander.d.ts.map +1 -0
- package/dist/src/blocks/commander/commander.tsx +477 -0
- package/dist/src/blocks/commander/index.d.ts +2 -0
- package/dist/src/blocks/commander/index.d.ts.map +1 -0
- package/dist/src/blocks/delete-resource/delete-resource.d.ts +46 -0
- package/dist/src/blocks/delete-resource/delete-resource.d.ts.map +1 -0
- package/dist/src/blocks/delete-resource/delete-resource.tsx +214 -0
- package/dist/src/blocks/delete-resource/index.d.ts +2 -0
- package/dist/src/blocks/delete-resource/index.d.ts.map +1 -0
- package/dist/src/blocks/map-block/index.d.ts +2 -0
- package/dist/src/blocks/map-block/index.d.ts.map +1 -0
- package/dist/src/blocks/map-block/map-block.d.ts +79 -0
- package/dist/src/blocks/map-block/map-block.d.ts.map +1 -0
- package/dist/src/blocks/map-block/map-block.tsx +522 -0
- package/dist/src/blocks/page-header/index.d.ts +2 -0
- package/dist/src/blocks/page-header/index.d.ts.map +1 -0
- package/dist/src/blocks/page-header/page-header.d.ts +38 -0
- package/dist/src/blocks/page-header/page-header.d.ts.map +1 -0
- package/dist/src/blocks/page-header/page-header.tsx +96 -0
- package/dist/src/blocks/resource-list/index.d.ts +2 -0
- package/dist/src/blocks/resource-list/index.d.ts.map +1 -0
- package/dist/src/blocks/resource-list/resource-list.d.ts +18 -0
- package/dist/src/blocks/resource-list/resource-list.d.ts.map +1 -0
- package/dist/src/blocks/resource-list/resource-list.test.tsx +27 -0
- package/dist/src/blocks/resource-list/resource-list.tsx +65 -0
- package/dist/src/catalog/catalog.d.ts +75 -0
- package/dist/src/catalog/catalog.d.ts.map +1 -0
- package/dist/src/catalog/data.d.ts +44 -0
- package/dist/src/catalog/data.d.ts.map +1 -0
- package/dist/src/catalog/index.d.ts +35 -0
- package/dist/src/catalog/index.d.ts.map +1 -0
- package/dist/src/catalog/sf-components.d.ts +8 -0
- package/dist/src/catalog/sf-components.d.ts.map +1 -0
- package/dist/src/catalog/sf-registry.d.ts +4 -0
- package/dist/src/catalog/sf-registry.d.ts.map +1 -0
- package/dist/src/catalog/types.d.ts +226 -0
- package/dist/src/catalog/types.d.ts.map +1 -0
- package/dist/src/catalog/visibility.d.ts +37 -0
- package/dist/src/catalog/visibility.d.ts.map +1 -0
- package/dist/src/command-line/build-cli.d.ts +7 -0
- package/dist/src/command-line/build-cli.d.ts.map +1 -0
- package/dist/src/command-line/cli.d.ts +13 -0
- package/dist/src/command-line/cli.d.ts.map +1 -0
- package/dist/src/command-line/commands/add.d.ts +10 -0
- package/dist/src/command-line/commands/add.d.ts.map +1 -0
- package/dist/src/command-line/commands/ai.d.ts +10 -0
- package/dist/src/command-line/commands/ai.d.ts.map +1 -0
- package/dist/src/command-line/commands/blocks.d.ts +10 -0
- package/dist/src/command-line/commands/blocks.d.ts.map +1 -0
- package/dist/src/command-line/commands/doc.d.ts +14 -0
- package/dist/src/command-line/commands/doc.d.ts.map +1 -0
- package/dist/src/command-line/commands/init.d.ts +18 -0
- package/dist/src/command-line/commands/init.d.ts.map +1 -0
- package/dist/src/command-line/commands/ls.d.ts +10 -0
- package/dist/src/command-line/commands/ls.d.ts.map +1 -0
- package/dist/src/command-line/commands/migrate.d.ts +10 -0
- package/dist/src/command-line/commands/migrate.d.ts.map +1 -0
- package/dist/src/command-line/utils/config.d.ts +42 -0
- package/dist/src/command-line/utils/config.d.ts.map +1 -0
- package/dist/src/command-line/utils/transformer.d.ts +21 -0
- package/dist/src/command-line/utils/transformer.d.ts.map +1 -0
- package/dist/src/components/ai-actions/ai-actions.d.ts +35 -0
- package/dist/src/components/ai-actions/ai-actions.d.ts.map +1 -0
- package/dist/src/components/ai-actions/index.d.ts +2 -0
- package/dist/src/components/ai-actions/index.d.ts.map +1 -0
- package/dist/src/components/ai-agent-card/ai-agent-card.d.ts +82 -0
- package/dist/src/components/ai-agent-card/ai-agent-card.d.ts.map +1 -0
- package/dist/src/components/ai-agent-card/index.d.ts +2 -0
- package/dist/src/components/ai-agent-card/index.d.ts.map +1 -0
- package/dist/src/components/ai-approval/ai-approval.d.ts +102 -0
- package/dist/src/components/ai-approval/ai-approval.d.ts.map +1 -0
- package/dist/src/components/ai-approval/index.d.ts +2 -0
- package/dist/src/components/ai-approval/index.d.ts.map +1 -0
- package/dist/src/components/ai-code-block/ai-code-block.d.ts +48 -0
- package/dist/src/components/ai-code-block/ai-code-block.d.ts.map +1 -0
- package/dist/src/components/ai-code-block/index.d.ts +2 -0
- package/dist/src/components/ai-code-block/index.d.ts.map +1 -0
- package/dist/src/components/ai-conversation/ai-conversation.d.ts +125 -0
- package/dist/src/components/ai-conversation/ai-conversation.d.ts.map +1 -0
- package/dist/src/components/ai-conversation/index.d.ts +2 -0
- package/dist/src/components/ai-conversation/index.d.ts.map +1 -0
- package/dist/src/components/ai-info-banner/ai-info-banner.d.ts +55 -0
- package/dist/src/components/ai-info-banner/ai-info-banner.d.ts.map +1 -0
- package/dist/src/components/ai-info-banner/index.d.ts +2 -0
- package/dist/src/components/ai-info-banner/index.d.ts.map +1 -0
- package/dist/src/components/ai-loader/ai-loader.d.ts +44 -0
- package/dist/src/components/ai-loader/ai-loader.d.ts.map +1 -0
- package/dist/src/components/ai-loader/index.d.ts +2 -0
- package/dist/src/components/ai-loader/index.d.ts.map +1 -0
- package/dist/src/components/ai-message/ai-message.d.ts +97 -0
- package/dist/src/components/ai-message/ai-message.d.ts.map +1 -0
- package/dist/src/components/ai-message/index.d.ts +2 -0
- package/dist/src/components/ai-message/index.d.ts.map +1 -0
- package/dist/src/components/ai-mission-header/ai-mission-header.d.ts +62 -0
- package/dist/src/components/ai-mission-header/ai-mission-header.d.ts.map +1 -0
- package/dist/src/components/ai-mission-header/index.d.ts +2 -0
- package/dist/src/components/ai-mission-header/index.d.ts.map +1 -0
- package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts +260 -0
- package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -0
- package/dist/src/components/ai-prompt-input/index.d.ts +2 -0
- package/dist/src/components/ai-prompt-input/index.d.ts.map +1 -0
- package/dist/src/components/ai-question/ai-question.d.ts +73 -0
- package/dist/src/components/ai-question/ai-question.d.ts.map +1 -0
- package/dist/src/components/ai-question/index.d.ts +2 -0
- package/dist/src/components/ai-question/index.d.ts.map +1 -0
- package/dist/src/components/ai-reasoning/ai-reasoning.d.ts +107 -0
- package/dist/src/components/ai-reasoning/ai-reasoning.d.ts.map +1 -0
- package/dist/src/components/ai-reasoning/index.d.ts +2 -0
- package/dist/src/components/ai-reasoning/index.d.ts.map +1 -0
- package/dist/src/components/ai-response/ai-response.d.ts +26 -0
- package/dist/src/components/ai-response/ai-response.d.ts.map +1 -0
- package/dist/src/components/ai-response/index.d.ts +2 -0
- package/dist/src/components/ai-response/index.d.ts.map +1 -0
- package/dist/src/components/ai-shimmer/ai-shimmer.d.ts +29 -0
- package/dist/src/components/ai-shimmer/ai-shimmer.d.ts.map +1 -0
- package/dist/src/components/ai-shimmer/index.d.ts +2 -0
- package/dist/src/components/ai-shimmer/index.d.ts.map +1 -0
- package/dist/src/components/ai-status-badge/ai-status-badge.d.ts +46 -0
- package/dist/src/components/ai-status-badge/ai-status-badge.d.ts.map +1 -0
- package/dist/src/components/ai-status-badge/index.d.ts +2 -0
- package/dist/src/components/ai-status-badge/index.d.ts.map +1 -0
- package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts +27 -0
- package/dist/src/components/ai-streaming-text/ai-streaming-text.d.ts.map +1 -0
- package/dist/src/components/ai-streaming-text/index.d.ts +2 -0
- package/dist/src/components/ai-streaming-text/index.d.ts.map +1 -0
- package/dist/src/components/ai-subagent/ai-subagent.d.ts +74 -0
- package/dist/src/components/ai-subagent/ai-subagent.d.ts.map +1 -0
- package/dist/src/components/ai-subagent/index.d.ts +2 -0
- package/dist/src/components/ai-subagent/index.d.ts.map +1 -0
- package/dist/src/components/ai-suggestion/ai-suggestion.d.ts +40 -0
- package/dist/src/components/ai-suggestion/ai-suggestion.d.ts.map +1 -0
- package/dist/src/components/ai-suggestion/index.d.ts +2 -0
- package/dist/src/components/ai-suggestion/index.d.ts.map +1 -0
- package/dist/src/components/ai-task-list/ai-task-list.d.ts +61 -0
- package/dist/src/components/ai-task-list/ai-task-list.d.ts.map +1 -0
- package/dist/src/components/ai-task-list/index.d.ts +2 -0
- package/dist/src/components/ai-task-list/index.d.ts.map +1 -0
- package/dist/src/components/ai-timeline/ai-timeline.d.ts +130 -0
- package/dist/src/components/ai-timeline/ai-timeline.d.ts.map +1 -0
- package/dist/src/components/ai-timeline/index.d.ts +2 -0
- package/dist/src/components/ai-timeline/index.d.ts.map +1 -0
- package/dist/src/components/ai-tool/ai-tool.d.ts +138 -0
- package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -0
- package/dist/src/components/ai-tool/index.d.ts +2 -0
- package/dist/src/components/ai-tool/index.d.ts.map +1 -0
- package/dist/src/components/ai-usage-bar/ai-usage-bar.d.ts +38 -0
- package/dist/src/components/ai-usage-bar/ai-usage-bar.d.ts.map +1 -0
- package/dist/src/components/ai-usage-bar/index.d.ts +2 -0
- package/dist/src/components/ai-usage-bar/index.d.ts.map +1 -0
- package/dist/src/components/badge/badge.d.ts +129 -0
- package/dist/src/components/badge/badge.d.ts.map +1 -0
- package/dist/src/components/badge/index.d.ts +2 -0
- package/dist/src/components/badge/index.d.ts.map +1 -0
- package/dist/src/components/banner/banner.d.ts +80 -0
- package/dist/src/components/banner/banner.d.ts.map +1 -0
- package/dist/src/components/banner/index.d.ts +2 -0
- package/dist/src/components/banner/index.d.ts.map +1 -0
- package/dist/src/components/breadcrumbs/breadcrumbs.d.ts +78 -0
- package/dist/src/components/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/src/components/breadcrumbs/index.d.ts +2 -0
- package/dist/src/components/breadcrumbs/index.d.ts.map +1 -0
- package/dist/src/components/button/button.d.ts +212 -0
- package/dist/src/components/button/button.d.ts.map +1 -0
- package/dist/src/components/button/index.d.ts +2 -0
- package/dist/src/components/button/index.d.ts.map +1 -0
- package/dist/src/components/chart/color.d.ts +98 -0
- package/dist/src/components/chart/color.d.ts.map +1 -0
- package/dist/src/components/chart/echart.d.ts +135 -0
- package/dist/src/components/chart/echart.d.ts.map +1 -0
- package/dist/src/components/chart/index.d.ts +5 -0
- package/dist/src/components/chart/index.d.ts.map +1 -0
- package/dist/src/components/chart/legend.d.ts +42 -0
- package/dist/src/components/chart/legend.d.ts.map +1 -0
- package/dist/src/components/chart/timeseries-chart.d.ts +119 -0
- package/dist/src/components/chart/timeseries-chart.d.ts.map +1 -0
- package/dist/src/components/checkbox/checkbox.d.ts +174 -0
- package/dist/src/components/checkbox/checkbox.d.ts.map +1 -0
- package/dist/src/components/checkbox/index.d.ts +2 -0
- package/dist/src/components/checkbox/index.d.ts.map +1 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts +86 -0
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -0
- package/dist/src/components/clipboard-text/index.d.ts +2 -0
- package/dist/src/components/clipboard-text/index.d.ts.map +1 -0
- package/dist/src/components/code/code.d.ts +165 -0
- package/dist/src/components/code/code.d.ts.map +1 -0
- package/dist/src/components/code/index.d.ts +4 -0
- package/dist/src/components/code/index.d.ts.map +1 -0
- package/dist/src/components/collapsible/collapsible.d.ts +72 -0
- package/dist/src/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/src/components/collapsible/index.d.ts +2 -0
- package/dist/src/components/collapsible/index.d.ts.map +1 -0
- package/dist/src/components/combobox/combobox.d.ts +188 -0
- package/dist/src/components/combobox/combobox.d.ts.map +1 -0
- package/dist/src/components/combobox/index.d.ts +2 -0
- package/dist/src/components/combobox/index.d.ts.map +1 -0
- package/dist/src/components/command-palette/command-palette.d.ts +260 -0
- package/dist/src/components/command-palette/command-palette.d.ts.map +1 -0
- package/dist/src/components/command-palette/index.d.ts +3 -0
- package/dist/src/components/command-palette/index.d.ts.map +1 -0
- package/dist/src/components/command-palette/types.d.ts +149 -0
- package/dist/src/components/command-palette/types.d.ts.map +1 -0
- package/dist/src/components/data-grid/data-grid.d.ts +78 -0
- package/dist/src/components/data-grid/data-grid.d.ts.map +1 -0
- package/dist/src/components/data-grid/index.d.ts +3 -0
- package/dist/src/components/data-grid/index.d.ts.map +1 -0
- package/dist/src/components/data-grid/types.d.ts +236 -0
- package/dist/src/components/data-grid/types.d.ts.map +1 -0
- package/dist/src/components/date-picker/date-picker.d.ts +65 -0
- package/dist/src/components/date-picker/date-picker.d.ts.map +1 -0
- package/dist/src/components/date-picker/index.d.ts +4 -0
- package/dist/src/components/date-picker/index.d.ts.map +1 -0
- package/dist/src/components/date-range-picker/date-range-picker.d.ts +125 -0
- package/dist/src/components/date-range-picker/date-range-picker.d.ts.map +1 -0
- package/dist/src/components/date-range-picker/index.d.ts +5 -0
- package/dist/src/components/date-range-picker/index.d.ts.map +1 -0
- package/dist/src/components/dialog/dialog.d.ts +189 -0
- package/dist/src/components/dialog/dialog.d.ts.map +1 -0
- package/dist/src/components/dialog/index.d.ts +2 -0
- package/dist/src/components/dialog/index.d.ts.map +1 -0
- package/dist/src/components/dropdown/dropdown.d.ts +91 -0
- package/dist/src/components/dropdown/dropdown.d.ts.map +1 -0
- package/dist/src/components/dropdown/index.d.ts +2 -0
- package/dist/src/components/dropdown/index.d.ts.map +1 -0
- package/dist/src/components/empty/empty.d.ts +69 -0
- package/dist/src/components/empty/empty.d.ts.map +1 -0
- package/dist/src/components/empty/index.d.ts +2 -0
- package/dist/src/components/empty/index.d.ts.map +1 -0
- package/dist/src/components/field/field.d.ts +68 -0
- package/dist/src/components/field/field.d.ts.map +1 -0
- package/dist/src/components/field/index.d.ts +2 -0
- package/dist/src/components/field/index.d.ts.map +1 -0
- package/dist/src/components/filters/filters.d.ts +54 -0
- package/dist/src/components/filters/filters.d.ts.map +1 -0
- package/dist/src/components/filters/helpers.d.ts +56 -0
- package/dist/src/components/filters/helpers.d.ts.map +1 -0
- package/dist/src/components/filters/index.d.ts +3 -0
- package/dist/src/components/filters/index.d.ts.map +1 -0
- package/dist/src/components/filters/types.d.ts +148 -0
- package/dist/src/components/filters/types.d.ts.map +1 -0
- package/dist/src/components/flow/connectors.d.ts +35 -0
- package/dist/src/components/flow/connectors.d.ts.map +1 -0
- package/dist/src/components/flow/diagram.d.ts +62 -0
- package/dist/src/components/flow/diagram.d.ts.map +1 -0
- package/dist/src/components/flow/index.d.ts +26 -0
- package/dist/src/components/flow/index.d.ts.map +1 -0
- package/dist/src/components/flow/node.d.ts +52 -0
- package/dist/src/components/flow/node.d.ts.map +1 -0
- package/dist/src/components/flow/parallel.d.ts +5 -0
- package/dist/src/components/flow/parallel.d.ts.map +1 -0
- package/dist/src/components/flow/use-children.d.ts +69 -0
- package/dist/src/components/flow/use-children.d.ts.map +1 -0
- package/dist/src/components/grid/grid.d.ts +135 -0
- package/dist/src/components/grid/grid.d.ts.map +1 -0
- package/dist/src/components/grid/index.d.ts +2 -0
- package/dist/src/components/grid/index.d.ts.map +1 -0
- package/dist/src/components/input/index.d.ts +4 -0
- package/dist/src/components/input/index.d.ts.map +1 -0
- package/dist/src/components/input/input-area.d.ts +65 -0
- package/dist/src/components/input/input-area.d.ts.map +1 -0
- package/dist/src/components/input/input-group.d.ts +39 -0
- package/dist/src/components/input/input-group.d.ts.map +1 -0
- package/dist/src/components/input/input.d.ts +172 -0
- package/dist/src/components/input/input.d.ts.map +1 -0
- package/dist/src/components/label/index.d.ts +2 -0
- package/dist/src/components/label/index.d.ts.map +1 -0
- package/dist/src/components/label/label.d.ts +67 -0
- package/dist/src/components/label/label.d.ts.map +1 -0
- package/dist/src/components/layer-card/index.d.ts +2 -0
- package/dist/src/components/layer-card/index.d.ts.map +1 -0
- package/dist/src/components/layer-card/layer-card.d.ts +29 -0
- package/dist/src/components/layer-card/layer-card.d.ts.map +1 -0
- package/dist/src/components/link/index.d.ts +2 -0
- package/dist/src/components/link/index.d.ts.map +1 -0
- package/dist/src/components/link/link.d.ts +55 -0
- package/dist/src/components/link/link.d.ts.map +1 -0
- package/dist/src/components/loader/index.d.ts +3 -0
- package/dist/src/components/loader/index.d.ts.map +1 -0
- package/dist/src/components/loader/loader.d.ts +65 -0
- package/dist/src/components/loader/loader.d.ts.map +1 -0
- package/dist/src/components/loader/skeleton-line.d.ts +10 -0
- package/dist/src/components/loader/skeleton-line.d.ts.map +1 -0
- package/dist/src/components/menubar/index.d.ts +3 -0
- package/dist/src/components/menubar/index.d.ts.map +1 -0
- package/dist/src/components/menubar/menubar.d.ts +66 -0
- package/dist/src/components/menubar/menubar.d.ts.map +1 -0
- package/dist/src/components/menubar/use-menu-navigation.d.ts +8 -0
- package/dist/src/components/menubar/use-menu-navigation.d.ts.map +1 -0
- package/dist/src/components/meter/index.d.ts +2 -0
- package/dist/src/components/meter/index.d.ts.map +1 -0
- package/dist/src/components/meter/meter.d.ts +44 -0
- package/dist/src/components/meter/meter.d.ts.map +1 -0
- package/dist/src/components/pagination/index.d.ts +2 -0
- package/dist/src/components/pagination/index.d.ts.map +1 -0
- package/dist/src/components/pagination/pagination.d.ts +60 -0
- package/dist/src/components/pagination/pagination.d.ts.map +1 -0
- package/dist/src/components/popover/index.d.ts +3 -0
- package/dist/src/components/popover/index.d.ts.map +1 -0
- package/dist/src/components/popover/popover.d.ts +138 -0
- package/dist/src/components/popover/popover.d.ts.map +1 -0
- package/dist/src/components/radio/index.d.ts +2 -0
- package/dist/src/components/radio/index.d.ts.map +1 -0
- package/dist/src/components/radio/radio.d.ts +163 -0
- package/dist/src/components/radio/radio.d.ts.map +1 -0
- package/dist/src/components/select/index.d.ts +2 -0
- package/dist/src/components/select/index.d.ts.map +1 -0
- package/dist/src/components/select/select.d.ts +150 -0
- package/dist/src/components/select/select.d.ts.map +1 -0
- package/dist/src/components/sensitive-input/index.d.ts +2 -0
- package/dist/src/components/sensitive-input/index.d.ts.map +1 -0
- package/dist/src/components/sensitive-input/sensitive-input.d.ts +94 -0
- package/dist/src/components/sensitive-input/sensitive-input.d.ts.map +1 -0
- package/dist/src/components/sidebar/index.d.ts +2 -0
- package/dist/src/components/sidebar/index.d.ts.map +1 -0
- package/dist/src/components/sidebar/sidebar.d.ts +556 -0
- package/dist/src/components/sidebar/sidebar.d.ts.map +1 -0
- package/dist/src/components/signalflare-ai-logo/index.d.ts +2 -0
- package/dist/src/components/signalflare-ai-logo/index.d.ts.map +1 -0
- package/dist/src/components/signalflare-ai-logo/signalflare-ai-logo.d.ts +171 -0
- package/dist/src/components/signalflare-ai-logo/signalflare-ai-logo.d.ts.map +1 -0
- package/dist/src/components/surface/index.d.ts +2 -0
- package/dist/src/components/surface/index.d.ts.map +1 -0
- package/dist/src/components/surface/surface.d.ts +60 -0
- package/dist/src/components/surface/surface.d.ts.map +1 -0
- package/dist/src/components/switch/index.d.ts +2 -0
- package/dist/src/components/switch/index.d.ts.map +1 -0
- package/dist/src/components/switch/switch.d.ts +169 -0
- package/dist/src/components/switch/switch.d.ts.map +1 -0
- package/dist/src/components/table/index.d.ts +2 -0
- package/dist/src/components/table/index.d.ts.map +1 -0
- package/dist/src/components/table/table.d.ts +89 -0
- package/dist/src/components/table/table.d.ts.map +1 -0
- package/dist/src/components/tabs/index.d.ts +3 -0
- package/dist/src/components/tabs/index.d.ts.map +1 -0
- package/dist/src/components/tabs/tabs.d.ts +105 -0
- package/dist/src/components/tabs/tabs.d.ts.map +1 -0
- package/dist/src/components/text/index.d.ts +2 -0
- package/dist/src/components/text/index.d.ts.map +1 -0
- package/dist/src/components/text/text.d.ts +181 -0
- package/dist/src/components/text/text.d.ts.map +1 -0
- package/dist/src/components/theme-toggle/index.d.ts +2 -0
- package/dist/src/components/theme-toggle/index.d.ts.map +1 -0
- package/dist/src/components/theme-toggle/theme-toggle.d.ts +68 -0
- package/dist/src/components/theme-toggle/theme-toggle.d.ts.map +1 -0
- package/dist/src/components/toast/index.d.ts +5 -0
- package/dist/src/components/toast/index.d.ts.map +1 -0
- package/dist/src/components/toast/toast.d.ts +152 -0
- package/dist/src/components/toast/toast.d.ts.map +1 -0
- package/dist/src/components/tooltip/index.d.ts +2 -0
- package/dist/src/components/tooltip/index.d.ts.map +1 -0
- package/dist/src/components/tooltip/tooltip.d.ts +82 -0
- package/dist/src/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/src/components/use-agent-harness/index.d.ts +2 -0
- package/dist/src/components/use-agent-harness/index.d.ts.map +1 -0
- package/dist/src/components/use-agent-harness/use-agent-harness.d.ts +642 -0
- package/dist/src/components/use-agent-harness/use-agent-harness.d.ts.map +1 -0
- package/dist/src/genui/genui.d.ts +17 -0
- package/dist/src/genui/genui.d.ts.map +1 -0
- package/dist/src/genui/index.d.ts +19 -0
- package/dist/src/genui/index.d.ts.map +1 -0
- package/dist/src/index.d.ts +102 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/lib/utils.d.ts +2 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/primitives/accordion.d.ts +13 -0
- package/dist/src/primitives/accordion.d.ts.map +1 -0
- package/dist/src/primitives/alert-dialog.d.ts +13 -0
- package/dist/src/primitives/alert-dialog.d.ts.map +1 -0
- package/dist/src/primitives/autocomplete.d.ts +13 -0
- package/dist/src/primitives/autocomplete.d.ts.map +1 -0
- package/dist/src/primitives/avatar.d.ts +13 -0
- package/dist/src/primitives/avatar.d.ts.map +1 -0
- package/dist/src/primitives/button.d.ts +13 -0
- package/dist/src/primitives/button.d.ts.map +1 -0
- package/dist/src/primitives/checkbox-group.d.ts +13 -0
- package/dist/src/primitives/checkbox-group.d.ts.map +1 -0
- package/dist/src/primitives/checkbox.d.ts +13 -0
- package/dist/src/primitives/checkbox.d.ts.map +1 -0
- package/dist/src/primitives/collapsible.d.ts +13 -0
- package/dist/src/primitives/collapsible.d.ts.map +1 -0
- package/dist/src/primitives/combobox.d.ts +13 -0
- package/dist/src/primitives/combobox.d.ts.map +1 -0
- package/dist/src/primitives/context-menu.d.ts +13 -0
- package/dist/src/primitives/context-menu.d.ts.map +1 -0
- package/dist/src/primitives/csp-provider.d.ts +13 -0
- package/dist/src/primitives/csp-provider.d.ts.map +1 -0
- package/dist/src/primitives/dialog.d.ts +13 -0
- package/dist/src/primitives/dialog.d.ts.map +1 -0
- package/dist/src/primitives/direction-provider.d.ts +13 -0
- package/dist/src/primitives/direction-provider.d.ts.map +1 -0
- package/dist/src/primitives/drawer.d.ts +13 -0
- package/dist/src/primitives/drawer.d.ts.map +1 -0
- package/dist/src/primitives/field.d.ts +13 -0
- package/dist/src/primitives/field.d.ts.map +1 -0
- package/dist/src/primitives/fieldset.d.ts +13 -0
- package/dist/src/primitives/fieldset.d.ts.map +1 -0
- package/dist/src/primitives/form.d.ts +13 -0
- package/dist/src/primitives/form.d.ts.map +1 -0
- package/dist/src/primitives/index.d.ts +54 -0
- package/dist/src/primitives/index.d.ts.map +1 -0
- package/dist/src/primitives/input.d.ts +13 -0
- package/dist/src/primitives/input.d.ts.map +1 -0
- package/dist/src/primitives/menu.d.ts +13 -0
- package/dist/src/primitives/menu.d.ts.map +1 -0
- package/dist/src/primitives/menubar.d.ts +13 -0
- package/dist/src/primitives/menubar.d.ts.map +1 -0
- package/dist/src/primitives/meter.d.ts +13 -0
- package/dist/src/primitives/meter.d.ts.map +1 -0
- package/dist/src/primitives/navigation-menu.d.ts +13 -0
- package/dist/src/primitives/navigation-menu.d.ts.map +1 -0
- package/dist/src/primitives/number-field.d.ts +13 -0
- package/dist/src/primitives/number-field.d.ts.map +1 -0
- package/dist/src/primitives/popover.d.ts +13 -0
- package/dist/src/primitives/popover.d.ts.map +1 -0
- package/dist/src/primitives/preview-card.d.ts +13 -0
- package/dist/src/primitives/preview-card.d.ts.map +1 -0
- package/dist/src/primitives/progress.d.ts +13 -0
- package/dist/src/primitives/progress.d.ts.map +1 -0
- package/dist/src/primitives/radio-group.d.ts +13 -0
- package/dist/src/primitives/radio-group.d.ts.map +1 -0
- package/dist/src/primitives/radio.d.ts +13 -0
- package/dist/src/primitives/radio.d.ts.map +1 -0
- package/dist/src/primitives/scroll-area.d.ts +13 -0
- package/dist/src/primitives/scroll-area.d.ts.map +1 -0
- package/dist/src/primitives/select.d.ts +13 -0
- package/dist/src/primitives/select.d.ts.map +1 -0
- package/dist/src/primitives/separator.d.ts +13 -0
- package/dist/src/primitives/separator.d.ts.map +1 -0
- package/dist/src/primitives/slider.d.ts +13 -0
- package/dist/src/primitives/slider.d.ts.map +1 -0
- package/dist/src/primitives/switch.d.ts +13 -0
- package/dist/src/primitives/switch.d.ts.map +1 -0
- package/dist/src/primitives/tabs.d.ts +13 -0
- package/dist/src/primitives/tabs.d.ts.map +1 -0
- package/dist/src/primitives/toast.d.ts +13 -0
- package/dist/src/primitives/toast.d.ts.map +1 -0
- package/dist/src/primitives/toggle-group.d.ts +13 -0
- package/dist/src/primitives/toggle-group.d.ts.map +1 -0
- package/dist/src/primitives/toggle.d.ts +13 -0
- package/dist/src/primitives/toggle.d.ts.map +1 -0
- package/dist/src/primitives/toolbar.d.ts +13 -0
- package/dist/src/primitives/toolbar.d.ts.map +1 -0
- package/dist/src/primitives/tooltip.d.ts +13 -0
- package/dist/src/primitives/tooltip.d.ts.map +1 -0
- package/dist/src/registry/index.d.ts +8 -0
- package/dist/src/registry/index.d.ts.map +1 -0
- package/dist/src/registry/types.d.ts +191 -0
- package/dist/src/registry/types.d.ts.map +1 -0
- package/dist/src/utils/cn.d.ts +4 -0
- package/dist/src/utils/cn.d.ts.map +1 -0
- package/dist/src/utils/highlight-to-react.d.ts +12 -0
- package/dist/src/utils/highlight-to-react.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/link-provider.d.ts +12 -0
- package/dist/src/utils/link-provider.d.ts.map +1 -0
- package/dist/src/utils/prop-examples.d.ts +36 -0
- package/dist/src/utils/prop-examples.d.ts.map +1 -0
- package/dist/styles/sf-binding.css +255 -0
- package/dist/styles/sf-standalone.css +2 -0
- package/dist/styles/sf.css +596 -0
- package/dist/styles/theme-fedramp.css +22 -0
- package/dist/styles/theme-minimal.css +127 -0
- package/dist/styles/theme-navigator.css +137 -0
- package/dist/styles/theme-sf.css +191 -0
- package/dist/surface-BduI7Ehl.js +18 -0
- package/dist/surface-BduI7Ehl.js.map +1 -0
- package/dist/switch-CzZBRBL7.js +169 -0
- package/dist/switch-CzZBRBL7.js.map +1 -0
- package/dist/table-CIMx0Oq0.js +200 -0
- package/dist/table-CIMx0Oq0.js.map +1 -0
- package/dist/tabs-1cHrYoel.js +54 -0
- package/dist/tabs-1cHrYoel.js.map +1 -0
- package/dist/text-KJmGkwnf.js +103 -0
- package/dist/text-KJmGkwnf.js.map +1 -0
- package/dist/theme-toggle-Dpgnoj_Q.js +129 -0
- package/dist/theme-toggle-Dpgnoj_Q.js.map +1 -0
- package/dist/toast-Nw28a5Cx.js +161 -0
- package/dist/toast-Nw28a5Cx.js.map +1 -0
- package/dist/tooltip-Cb7QW-7H.js +79 -0
- package/dist/tooltip-Cb7QW-7H.js.map +1 -0
- package/dist/use-agent-harness-DZzcn96L.js +929 -0
- package/dist/use-agent-harness-DZzcn96L.js.map +1 -0
- package/dist/utils.js +4 -0
- package/package.json +620 -0
- package/scripts/component-registry/cache.ts +124 -0
- package/scripts/component-registry/discovery.ts +464 -0
- package/scripts/component-registry/example-cleanup.ts +168 -0
- package/scripts/component-registry/index.test.ts +678 -0
- package/scripts/component-registry/index.ts +931 -0
- package/scripts/component-registry/markdown-generator.ts +222 -0
- package/scripts/component-registry/metadata.ts +653 -0
- package/scripts/component-registry/props-filter.ts +313 -0
- package/scripts/component-registry/schema-generator.ts +332 -0
- package/scripts/component-registry/sub-components.ts +350 -0
- package/scripts/component-registry/types.ts +156 -0
- package/scripts/component-registry/utils.ts +280 -0
- package/scripts/component-registry/variant-parser.ts +262 -0
- package/scripts/css-build.ts +117 -0
- package/scripts/generate-primitives.ts +178 -0
- package/scripts/theme-generator/config.ts +538 -0
- package/scripts/theme-generator/generate-css.ts +256 -0
- package/scripts/theme-generator/index.ts +161 -0
- package/scripts/theme-generator/migrate.ts +584 -0
- package/scripts/theme-generator/types.ts +86 -0
- package/skills/component-selection/SKILL.md +64 -0
- package/skills/installing-blocks/SKILL.md +47 -0
- package/skills/theming-and-tokens/SKILL.md +62 -0
|
@@ -0,0 +1,3046 @@
|
|
|
1
|
+
# SF Component Registry
|
|
2
|
+
|
|
3
|
+
> Auto-generated component metadata for AI/agent consumption.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### AiActions
|
|
8
|
+
|
|
9
|
+
Container for a row of AI message action buttons.
|
|
10
|
+
|
|
11
|
+
**Type:** component
|
|
12
|
+
|
|
13
|
+
**Import:** `import { AiActions } from "@signalflare-ai/ui";`
|
|
14
|
+
|
|
15
|
+
**Category:** Other
|
|
16
|
+
|
|
17
|
+
**Props:**
|
|
18
|
+
|
|
19
|
+
- `children`: ReactNode
|
|
20
|
+
- `className`: string
|
|
21
|
+
- `id`: string
|
|
22
|
+
- `lang`: string
|
|
23
|
+
- `title`: string
|
|
24
|
+
|
|
25
|
+
**Colors (sf tokens used):**
|
|
26
|
+
|
|
27
|
+
`text-sf-default`, `text-sf-subtle`
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
### AiAgentCard
|
|
32
|
+
|
|
33
|
+
`AiAgentCard` — compact card showing one agent's status in a commander dashboard. Displays: agent icon, name, status indicator, current task, model, duration, and tool call count. Clickable for selection.
|
|
34
|
+
|
|
35
|
+
**Type:** component
|
|
36
|
+
|
|
37
|
+
**Import:** `import { AiAgentCard } from "@signalflare-ai/ui";`
|
|
38
|
+
|
|
39
|
+
**Category:** Other
|
|
40
|
+
|
|
41
|
+
**Props:**
|
|
42
|
+
|
|
43
|
+
- `name`: string (required)
|
|
44
|
+
- `agentType`: string
|
|
45
|
+
Agent type ID — used for icon mapping.
|
|
46
|
+
- `status`: enum [default: idle]
|
|
47
|
+
- `"idle"`: Agent is idle, not yet started
|
|
48
|
+
- `"running"`: Agent is actively working
|
|
49
|
+
- `"completed"`: Agent finished successfully
|
|
50
|
+
- `"error"`: Agent encountered an error
|
|
51
|
+
- `modelId`: string
|
|
52
|
+
Model ID being used (e.g. "claude-haiku-3.5").
|
|
53
|
+
- `currentTask`: string
|
|
54
|
+
What the agent is currently doing.
|
|
55
|
+
- `duration`: number
|
|
56
|
+
Total elapsed duration in ms.
|
|
57
|
+
- `toolCallCount`: number
|
|
58
|
+
Number of tool calls made.
|
|
59
|
+
- `selected`: boolean
|
|
60
|
+
Whether this card is currently selected/active.
|
|
61
|
+
- `icon`: React.ElementType
|
|
62
|
+
Custom icon override.
|
|
63
|
+
- `size`: enum [default: md]
|
|
64
|
+
- `"sm"`: Compact card for dense grids
|
|
65
|
+
- `"md"`: Default card size
|
|
66
|
+
- `disabled`: boolean
|
|
67
|
+
- `type`: enum
|
|
68
|
+
- `value`: string | string[] | number
|
|
69
|
+
- `className`: string
|
|
70
|
+
- `id`: string
|
|
71
|
+
- `lang`: string
|
|
72
|
+
- `title`: string
|
|
73
|
+
|
|
74
|
+
**Colors (sf tokens used):**
|
|
75
|
+
|
|
76
|
+
`bg-sf-brand`, `bg-sf-danger`, `bg-sf-elevated`, `bg-sf-fill`, `bg-sf-recessed`, `bg-sf-success`, `bg-sf-tint`, `border-sf-line`, `ring-sf-ring`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-inactive`, `text-sf-subtle`, `text-sf-success`
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### AiApproval
|
|
81
|
+
|
|
82
|
+
Approval card for tool calls and plan submissions. Maps to harness events: `tool_approval_required`, `plan_approval_required`, `plan_approved`.
|
|
83
|
+
|
|
84
|
+
**Type:** component
|
|
85
|
+
|
|
86
|
+
**Import:** `import { AiApproval } from "@signalflare-ai/ui";`
|
|
87
|
+
|
|
88
|
+
**Category:** Other
|
|
89
|
+
|
|
90
|
+
**Props:**
|
|
91
|
+
|
|
92
|
+
- `kind`: enum [default: tool]
|
|
93
|
+
- `"tool"`: Tool call approval
|
|
94
|
+
- `"plan"`: Plan approval
|
|
95
|
+
- `status`: enum [default: pending]
|
|
96
|
+
- `"pending"`: Awaiting user decision
|
|
97
|
+
- `"approved"`: Approved by user
|
|
98
|
+
- `"rejected"`: Rejected by user
|
|
99
|
+
- `title`: string (required)
|
|
100
|
+
Title text shown in the header.
|
|
101
|
+
- `description`: string
|
|
102
|
+
Optional description below the title.
|
|
103
|
+
- `icon`: React.ElementType
|
|
104
|
+
Custom icon. Defaults to shield (tool) or list (plan).
|
|
105
|
+
- `items`: AiApprovalItem[]
|
|
106
|
+
For plan approvals: list of steps/items in the plan. For tool approvals: can show tool name, parameters, etc.
|
|
107
|
+
- `approveLabel`: string
|
|
108
|
+
Label for the approve button. Default: `"Approve"`.
|
|
109
|
+
- `rejectLabel`: string
|
|
110
|
+
Label for the reject button. Default: `"Reject"`.
|
|
111
|
+
- `showFeedback`: boolean
|
|
112
|
+
Show a text input for rejection feedback. Default: `false`.
|
|
113
|
+
- `children`: ReactNode
|
|
114
|
+
- `className`: string
|
|
115
|
+
- `id`: string
|
|
116
|
+
- `lang`: string
|
|
117
|
+
|
|
118
|
+
**Colors (sf tokens used):**
|
|
119
|
+
|
|
120
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-elevated`, `border-sf-line`, `border-sf-ring`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-inactive`, `text-sf-subtle`, `text-sf-success`
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### AiCodeBlock
|
|
125
|
+
|
|
126
|
+
Displays a code block with monospace formatting and an optional copy button. Does not include a syntax highlighter — avoids the heavy `react-syntax-highlighter` dependency. Wrap with `AiCodeBlockCopyButton` for clipboard support.
|
|
127
|
+
|
|
128
|
+
**Type:** component
|
|
129
|
+
|
|
130
|
+
**Import:** `import { AiCodeBlock } from "@signalflare-ai/ui";`
|
|
131
|
+
|
|
132
|
+
**Category:** Other
|
|
133
|
+
|
|
134
|
+
**Props:**
|
|
135
|
+
|
|
136
|
+
- `code`: string (required)
|
|
137
|
+
The raw code string to display and make copyable.
|
|
138
|
+
- `language`: string
|
|
139
|
+
Language identifier for syntax highlighting (display only, no highlighting applied).
|
|
140
|
+
- `showLineNumbers`: boolean
|
|
141
|
+
Show line numbers.
|
|
142
|
+
- `children`: ReactNode
|
|
143
|
+
- `className`: string
|
|
144
|
+
- `id`: string
|
|
145
|
+
- `lang`: string
|
|
146
|
+
- `title`: string
|
|
147
|
+
|
|
148
|
+
**Colors (sf tokens used):**
|
|
149
|
+
|
|
150
|
+
`bg-sf-recessed`, `border-sf-line`, `text-sf-default`, `text-sf-inactive`, `text-sf-subtle`
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### AiConversation
|
|
155
|
+
|
|
156
|
+
Outer scroll container for a conversation. Sticks to the bottom as new messages are added. Pair with `AiConversationContent` and optionally `AiConversationScrollButton`.
|
|
157
|
+
|
|
158
|
+
**Type:** component
|
|
159
|
+
|
|
160
|
+
**Import:** `import { AiConversation } from "@signalflare-ai/ui";`
|
|
161
|
+
|
|
162
|
+
**Category:** Other
|
|
163
|
+
|
|
164
|
+
**Props:**
|
|
165
|
+
|
|
166
|
+
- `children`: ReactNode
|
|
167
|
+
- `className`: string
|
|
168
|
+
- `id`: string
|
|
169
|
+
- `lang`: string
|
|
170
|
+
- `title`: string
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### AiInfoBanner
|
|
175
|
+
|
|
176
|
+
Inline conversation banner for system notices. Renders as a compact, horizontally centered divider-like notice rather than a chat bubble. Maps to harness events: `error`, `info`, `mode_changed`, `model_changed`.
|
|
177
|
+
|
|
178
|
+
**Type:** component
|
|
179
|
+
|
|
180
|
+
**Import:** `import { AiInfoBanner } from "@signalflare-ai/ui";`
|
|
181
|
+
|
|
182
|
+
**Category:** Other
|
|
183
|
+
|
|
184
|
+
**Props:**
|
|
185
|
+
|
|
186
|
+
- `level`: enum [default: info]
|
|
187
|
+
- `"info"`: Informational notice
|
|
188
|
+
- `"error"`: Error notice
|
|
189
|
+
- `"change"`: State change notice (model/mode switch)
|
|
190
|
+
- `icon`: React.ElementType
|
|
191
|
+
Custom icon override.
|
|
192
|
+
- `children`: ReactNode
|
|
193
|
+
- `className`: string
|
|
194
|
+
- `id`: string
|
|
195
|
+
- `lang`: string
|
|
196
|
+
- `title`: string
|
|
197
|
+
|
|
198
|
+
**Colors (sf tokens used):**
|
|
199
|
+
|
|
200
|
+
`border-sf-danger`, `border-sf-info`, `border-sf-line`, `text-sf-danger`, `text-sf-info`, `text-sf-subtle`
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### AiLoader
|
|
205
|
+
|
|
206
|
+
Spinning radial loader for AI streaming states.
|
|
207
|
+
|
|
208
|
+
**Type:** component
|
|
209
|
+
|
|
210
|
+
**Import:** `import { AiLoader } from "@signalflare-ai/ui";`
|
|
211
|
+
|
|
212
|
+
**Category:** Other
|
|
213
|
+
|
|
214
|
+
**Props:**
|
|
215
|
+
|
|
216
|
+
- `children`: ReactNode
|
|
217
|
+
- `className`: string
|
|
218
|
+
- `id`: string
|
|
219
|
+
- `lang`: string
|
|
220
|
+
- `title`: string
|
|
221
|
+
- `size`: enum [default: base]
|
|
222
|
+
- `"sm"`: Small — 12px
|
|
223
|
+
- `"base"`: Default — 16px
|
|
224
|
+
- `"lg"`: Large — 20px
|
|
225
|
+
|
|
226
|
+
**Colors (sf tokens used):**
|
|
227
|
+
|
|
228
|
+
`text-sf-subtle`
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
### AiMessage
|
|
233
|
+
|
|
234
|
+
Root message container. Sets layout, group class, and role context.
|
|
235
|
+
|
|
236
|
+
**Type:** component
|
|
237
|
+
|
|
238
|
+
**Import:** `import { AiMessage } from "@signalflare-ai/ui";`
|
|
239
|
+
|
|
240
|
+
**Category:** Other
|
|
241
|
+
|
|
242
|
+
**Props:**
|
|
243
|
+
|
|
244
|
+
- `from`: enum (required) [default: assistant]
|
|
245
|
+
- `"user"`: User message — right-aligned with max width
|
|
246
|
+
- `"assistant"`: Assistant message — full width left-aligned
|
|
247
|
+
- `"system"`: System message — full width
|
|
248
|
+
- `children`: ReactNode
|
|
249
|
+
- `className`: string
|
|
250
|
+
- `id`: string
|
|
251
|
+
- `lang`: string
|
|
252
|
+
- `title`: string
|
|
253
|
+
|
|
254
|
+
**Colors (sf tokens used):**
|
|
255
|
+
|
|
256
|
+
`bg-sf-control`, `bg-sf-overlay`, `bg-sf-tint`, `text-sf-default`, `text-sf-subtle`
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
### AiMissionHeader
|
|
261
|
+
|
|
262
|
+
`AiMissionHeader` — top bar for the Commander dashboard. Shows: mission title, progress bar (from task list), agent count, live elapsed time, token usage, and an abort button while running.
|
|
263
|
+
|
|
264
|
+
**Type:** component
|
|
265
|
+
|
|
266
|
+
**Import:** `import { AiMissionHeader } from "@signalflare-ai/ui";`
|
|
267
|
+
|
|
268
|
+
**Category:** Other
|
|
269
|
+
|
|
270
|
+
**Props:**
|
|
271
|
+
|
|
272
|
+
- `title`: string
|
|
273
|
+
The mission goal or title.
|
|
274
|
+
- `taskList`: AgentTaskList
|
|
275
|
+
Task list for progress calculation.
|
|
276
|
+
- `usage`: AgentUsage
|
|
277
|
+
Token/cost usage summary.
|
|
278
|
+
- `activeAgentCount`: number
|
|
279
|
+
Number of agents currently active.
|
|
280
|
+
- `totalAgentCount`: number
|
|
281
|
+
Total number of agents that have run or are running.
|
|
282
|
+
- `startedAt`: number
|
|
283
|
+
Wall-clock ms when the mission started.
|
|
284
|
+
- `endedAt`: number
|
|
285
|
+
Wall-clock ms when the mission ended. Undefined while still running.
|
|
286
|
+
- `isRunning`: boolean
|
|
287
|
+
Whether the mission is currently running.
|
|
288
|
+
- `variant`: enum [default: default]
|
|
289
|
+
- `"default"`: Full header with all stats
|
|
290
|
+
- `"compact"`: Single-row compact header
|
|
291
|
+
- `className`: string
|
|
292
|
+
- `id`: string
|
|
293
|
+
- `lang`: string
|
|
294
|
+
- `children`: ReactNode
|
|
295
|
+
|
|
296
|
+
**Colors (sf tokens used):**
|
|
297
|
+
|
|
298
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-danger`, `bg-sf-fill`, `border-sf-line`, `ring-sf-ring`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-subtle`, `text-sf-success`
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
### AiQuestion
|
|
303
|
+
|
|
304
|
+
Agent question card. Renders when the agent uses the `ask_user` built-in tool and needs a response before continuing. Maps to harness event: `ask_question`.
|
|
305
|
+
|
|
306
|
+
**Type:** component
|
|
307
|
+
|
|
308
|
+
**Import:** `import { AiQuestion } from "@signalflare-ai/ui";`
|
|
309
|
+
|
|
310
|
+
**Category:** Other
|
|
311
|
+
|
|
312
|
+
**Props:**
|
|
313
|
+
|
|
314
|
+
- `questionId`: string (required)
|
|
315
|
+
Unique identifier for this question (maps to harness `questionId`).
|
|
316
|
+
- `question`: string (required)
|
|
317
|
+
The question text.
|
|
318
|
+
- `header`: string
|
|
319
|
+
Optional header/context label.
|
|
320
|
+
- `status`: enum [default: pending]
|
|
321
|
+
- `"pending"`: Waiting for answer
|
|
322
|
+
- `"answered"`: User has answered
|
|
323
|
+
- `options`: AiQuestionOption[]
|
|
324
|
+
Available choice options.
|
|
325
|
+
- `allowCustom`: boolean
|
|
326
|
+
Allow freeform text input (custom answer). Default: `true`. When options are provided, this adds a text field below them.
|
|
327
|
+
- `icon`: React.ElementType
|
|
328
|
+
Custom icon for the question header.
|
|
329
|
+
- `answeredWith`: string
|
|
330
|
+
The answer that was submitted (shown when `status="answered"`).
|
|
331
|
+
- `children`: ReactNode
|
|
332
|
+
- `className`: string
|
|
333
|
+
- `id`: string
|
|
334
|
+
- `lang`: string
|
|
335
|
+
|
|
336
|
+
**Colors (sf tokens used):**
|
|
337
|
+
|
|
338
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-tint`, `border-sf-brand`, `border-sf-line`, `border-sf-ring`, `text-sf-brand`, `text-sf-default`, `text-sf-inactive`, `text-sf-inverse`, `text-sf-subtle`, `text-sf-success`
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
### AiReasoning
|
|
343
|
+
|
|
344
|
+
Collapsible reasoning block. Supports three display variants: - `"default"` — expandable card with auto-open on stream start - `"inline"` — compact single-line with left accent border - `"minimal"` — pill-shaped status badge
|
|
345
|
+
|
|
346
|
+
**Type:** component
|
|
347
|
+
|
|
348
|
+
**Import:** `import { AiReasoning } from "@signalflare-ai/ui";`
|
|
349
|
+
|
|
350
|
+
**Category:** Other
|
|
351
|
+
|
|
352
|
+
**Props:**
|
|
353
|
+
|
|
354
|
+
- `variant`: enum [default: default]
|
|
355
|
+
- `"default"`: Expandable card with collapsible reasoning text and duration
|
|
356
|
+
- `"inline"`: Compact single-line display with left accent border
|
|
357
|
+
- `"minimal"`: Pill-shaped status badge
|
|
358
|
+
- `isStreaming`: boolean
|
|
359
|
+
Whether reasoning is currently streaming.
|
|
360
|
+
- `duration`: number
|
|
361
|
+
Duration in seconds (passed in or self-tracked when streaming).
|
|
362
|
+
- `defaultExpanded`: boolean
|
|
363
|
+
Default expanded state.
|
|
364
|
+
- `open`: boolean
|
|
365
|
+
Controlled open state.
|
|
366
|
+
- `autoCloseDelay`: number
|
|
367
|
+
Delay in ms before auto-closing after streaming ends. Set to 0 to disable.
|
|
368
|
+
- `icon`: React.ElementType
|
|
369
|
+
Custom icon override. Defaults to `SparkleIcon` (streaming) or `BrainIcon` (done). Use to distinguish observation/reflection blocks from standard reasoning.
|
|
370
|
+
- `label`: string
|
|
371
|
+
Custom label override. Defaults to `"Thinking..."` (streaming) or `"Reasoning"` (done). Use to label observational memory blocks: `"Observing..."`, `"Reflecting..."`, etc.
|
|
372
|
+
- `streamingLabel`: string
|
|
373
|
+
Custom streaming label. When provided, used instead of `label` while `isStreaming` is true. Falls back to `label`, then to the default `"Thinking..."`.
|
|
374
|
+
- `className`: string
|
|
375
|
+
- `id`: string
|
|
376
|
+
- `lang`: string
|
|
377
|
+
- `title`: string
|
|
378
|
+
- `children`: ReactNode
|
|
379
|
+
|
|
380
|
+
**Colors (sf tokens used):**
|
|
381
|
+
|
|
382
|
+
`bg-sf-tint`, `border-sf-line`, `text-sf-subtle`
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
### AiResponse
|
|
387
|
+
|
|
388
|
+
Renders AI-generated markdown using Streamdown. Supports streaming animation, syntax-highlighted code, tables, and more. Pass `isAnimating={true}` while streaming and `false` once complete to get character-by-character reveal animation.
|
|
389
|
+
|
|
390
|
+
**Type:** component
|
|
391
|
+
|
|
392
|
+
**Import:** `import { AiResponse } from "@signalflare-ai/ui";`
|
|
393
|
+
|
|
394
|
+
**Category:** Other
|
|
395
|
+
|
|
396
|
+
**Props:**
|
|
397
|
+
|
|
398
|
+
- `className`: string
|
|
399
|
+
Additional CSS classes
|
|
400
|
+
- `children`: ReactNode
|
|
401
|
+
Child elements
|
|
402
|
+
|
|
403
|
+
**Colors (sf tokens used):**
|
|
404
|
+
|
|
405
|
+
`text-sf-default`
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
### AiShimmer
|
|
410
|
+
|
|
411
|
+
AiShimmer component
|
|
412
|
+
|
|
413
|
+
**Type:** component
|
|
414
|
+
|
|
415
|
+
**Import:** `import { AiShimmer } from "@signalflare-ai/ui";`
|
|
416
|
+
|
|
417
|
+
**Category:** Other
|
|
418
|
+
|
|
419
|
+
**Props:**
|
|
420
|
+
|
|
421
|
+
- `children`: string (required)
|
|
422
|
+
Text content to animate.
|
|
423
|
+
- `as`: React.ElementType
|
|
424
|
+
HTML element or component to render as.
|
|
425
|
+
- `className`: string
|
|
426
|
+
Additional CSS classes merged via `cn()`.
|
|
427
|
+
- `duration`: number
|
|
428
|
+
Animation duration in seconds.
|
|
429
|
+
- `spread`: number
|
|
430
|
+
Shimmer width multiplier relative to text length.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### AiStatusBadge
|
|
435
|
+
|
|
436
|
+
Compact pill-shaped badge showing an icon, label, and a status indicator. Used by minimal variants of AiToolCall and AiReasoning.
|
|
437
|
+
|
|
438
|
+
**Type:** component
|
|
439
|
+
|
|
440
|
+
**Import:** `import { AiStatusBadge } from "@signalflare-ai/ui";`
|
|
441
|
+
|
|
442
|
+
**Category:** Other
|
|
443
|
+
|
|
444
|
+
**Props:**
|
|
445
|
+
|
|
446
|
+
- `icon`: React.ElementType
|
|
447
|
+
Icon component rendered on the left.
|
|
448
|
+
- `label`: string (required)
|
|
449
|
+
Label text displayed in the badge.
|
|
450
|
+
- `status`: enum [default: idle]
|
|
451
|
+
- `"idle"`: Default idle state — no status icon shown
|
|
452
|
+
- `"running"`: Actively running — spinner icon shown
|
|
453
|
+
- `"success"`: Completed successfully — check icon shown
|
|
454
|
+
- `"error"`: Failed with an error — X icon shown
|
|
455
|
+
- `info`: string
|
|
456
|
+
Additional info text (e.g. "2/3") shown after the label.
|
|
457
|
+
- `children`: ReactNode
|
|
458
|
+
- `className`: string
|
|
459
|
+
- `id`: string
|
|
460
|
+
- `lang`: string
|
|
461
|
+
- `title`: string
|
|
462
|
+
|
|
463
|
+
**Colors (sf tokens used):**
|
|
464
|
+
|
|
465
|
+
`bg-sf-tint`, `text-sf-brand`, `text-sf-danger`, `text-sf-subtle`, `text-sf-success`
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
### AiStreamingText
|
|
470
|
+
|
|
471
|
+
AiStreamingText component
|
|
472
|
+
|
|
473
|
+
**Type:** component
|
|
474
|
+
|
|
475
|
+
**Import:** `import { AiStreamingText } from "@signalflare-ai/ui";`
|
|
476
|
+
|
|
477
|
+
**Category:** Other
|
|
478
|
+
|
|
479
|
+
**Props:**
|
|
480
|
+
|
|
481
|
+
- `className`: string
|
|
482
|
+
Additional CSS classes
|
|
483
|
+
- `children`: ReactNode
|
|
484
|
+
Child elements
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
### AiSubagent
|
|
489
|
+
|
|
490
|
+
Collapsible wrapper for nested subagent activity. Shows the subagent name, status, model, and duration in a header, with all subagent output (text, tool calls, etc.) in a collapsible body. Maps to harness events: `subagent_start`, `subagent_text_delta`, `subagent_tool_start`, `subagent_tool_end`, `subagent_end`, `subagent_model_changed`.
|
|
491
|
+
|
|
492
|
+
**Type:** component
|
|
493
|
+
|
|
494
|
+
**Import:** `import { AiSubagent } from "@signalflare-ai/ui";`
|
|
495
|
+
|
|
496
|
+
**Category:** Other
|
|
497
|
+
|
|
498
|
+
**Props:**
|
|
499
|
+
|
|
500
|
+
- `agentType`: string
|
|
501
|
+
Subagent type ID (e.g. `"explore"`, `"execute"`).
|
|
502
|
+
- `name`: string
|
|
503
|
+
Human-readable name for this subagent.
|
|
504
|
+
- `status`: enum [default: running]
|
|
505
|
+
- `"running"`: Subagent is actively processing
|
|
506
|
+
- `"completed"`: Subagent finished successfully
|
|
507
|
+
- `"error"`: Subagent encountered an error
|
|
508
|
+
- `modelId`: string
|
|
509
|
+
Current model ID being used (e.g. `"claude-haiku-3.5"`).
|
|
510
|
+
- `duration`: number
|
|
511
|
+
Duration in milliseconds.
|
|
512
|
+
- `icon`: React.ElementType
|
|
513
|
+
Custom icon. Defaults to `RobotIcon`.
|
|
514
|
+
- `defaultExpanded`: boolean
|
|
515
|
+
Whether the subagent content is expanded by default.
|
|
516
|
+
- `open`: boolean
|
|
517
|
+
Controlled open state.
|
|
518
|
+
- `children`: ReactNode
|
|
519
|
+
- `className`: string
|
|
520
|
+
- `id`: string
|
|
521
|
+
- `lang`: string
|
|
522
|
+
- `title`: string
|
|
523
|
+
|
|
524
|
+
**Colors (sf tokens used):**
|
|
525
|
+
|
|
526
|
+
`bg-sf-tint`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-subtle`, `text-sf-success`
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
### AiSuggestions
|
|
531
|
+
|
|
532
|
+
Horizontally scrollable container for suggestion pills. Position it relative to your prompt input (e.g. `bottom-full`).
|
|
533
|
+
|
|
534
|
+
**Type:** component
|
|
535
|
+
|
|
536
|
+
**Import:** `import { AiSuggestions } from "@signalflare-ai/ui";`
|
|
537
|
+
|
|
538
|
+
**Category:** Other
|
|
539
|
+
|
|
540
|
+
**Props:**
|
|
541
|
+
|
|
542
|
+
- `children`: ReactNode
|
|
543
|
+
- `className`: string
|
|
544
|
+
- `id`: string
|
|
545
|
+
- `lang`: string
|
|
546
|
+
- `title`: string
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
### AiTaskList
|
|
551
|
+
|
|
552
|
+
Task progress list. Renders structured tasks from the harness `task_write` tool. Typically rendered inside the `PromptInputBackLayer` or inline in conversation. Maps to harness event: `task_updated`.
|
|
553
|
+
|
|
554
|
+
**Type:** component
|
|
555
|
+
|
|
556
|
+
**Import:** `import { AiTaskList } from "@signalflare-ai/ui";`
|
|
557
|
+
|
|
558
|
+
**Category:** Other
|
|
559
|
+
|
|
560
|
+
**Props:**
|
|
561
|
+
|
|
562
|
+
- `tasks`: AiTaskItem[] (required)
|
|
563
|
+
List of tasks.
|
|
564
|
+
- `title`: string
|
|
565
|
+
Optional title above the task list.
|
|
566
|
+
- `icon`: React.ElementType
|
|
567
|
+
Custom icon for the title area.
|
|
568
|
+
- `showProgress`: boolean
|
|
569
|
+
Show a progress summary (e.g. "3 / 7 done"). Default: `true`.
|
|
570
|
+
- `children`: ReactNode
|
|
571
|
+
- `className`: string
|
|
572
|
+
- `id`: string
|
|
573
|
+
- `lang`: string
|
|
574
|
+
|
|
575
|
+
**Colors (sf tokens used):**
|
|
576
|
+
|
|
577
|
+
`bg-sf-brand`, `bg-sf-danger`, `bg-sf-subtle`, `bg-sf-tint`, `bg-sf-warning`, `text-sf-brand`, `text-sf-default`, `text-sf-subtle`, `text-sf-success`
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
### AiTimeline
|
|
582
|
+
|
|
583
|
+
`AiTimeline` — horizontal swim-lane timeline for commander-level orchestration. Displays multiple `AiTimelineLane` children on a shared time axis. Supports live updating (a "now" marker follows the live edge), panning, and zoom via `pixelsPerSecond`.
|
|
584
|
+
|
|
585
|
+
**Type:** component
|
|
586
|
+
|
|
587
|
+
**Import:** `import { AiTimeline } from "@signalflare-ai/ui";`
|
|
588
|
+
|
|
589
|
+
**Category:** Other
|
|
590
|
+
|
|
591
|
+
**Props:**
|
|
592
|
+
|
|
593
|
+
- `timeOrigin`: number
|
|
594
|
+
Wall-clock ms for the timeline origin (t=0). Defaults to the startMs of the first block across all lanes.
|
|
595
|
+
- `pixelsPerSecond`: number
|
|
596
|
+
Pixels per second of elapsed time. Controls horizontal zoom level.
|
|
597
|
+
- `showNowMarker`: boolean
|
|
598
|
+
Whether to show a pulsing "now" marker at the live edge.
|
|
599
|
+
- `nowMs`: number
|
|
600
|
+
Current timestamp in ms. Used to render the "now" marker and open-ended block widths. Pass a stable `useState` value to prevent hydration shifts. When omitted, `Date.now()` is called at render time (fine for live views driven by a ticking parent, not suitable for SSR).
|
|
601
|
+
- `density`: enum [default: comfortable]
|
|
602
|
+
- `"comfortable"`: Taller lanes with more padding
|
|
603
|
+
- `"compact"`: Tight lanes for dense views
|
|
604
|
+
- `children`: ReactNode
|
|
605
|
+
Children should be `AiTimelineLane` components.
|
|
606
|
+
- `className`: string
|
|
607
|
+
- `id`: string
|
|
608
|
+
- `lang`: string
|
|
609
|
+
- `title`: string
|
|
610
|
+
|
|
611
|
+
**Colors (sf tokens used):**
|
|
612
|
+
|
|
613
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-danger`, `bg-sf-elevated`, `bg-sf-fill`, `bg-sf-info`, `bg-sf-line`, `bg-sf-recessed`, `bg-sf-warning`, `border-sf-line`, `ring-sf-ring`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-inactive`, `text-sf-inverse`, `text-sf-strong`, `text-sf-subtle`, `text-sf-success`
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
### AiToolCall
|
|
618
|
+
|
|
619
|
+
Renders a single tool call. Supports three display variants: - `"default"` — expandable card with collapsible input/output - `"inline"` — compact single-line with left accent border - `"minimal"` — pill-shaped status badge
|
|
620
|
+
|
|
621
|
+
**Type:** component
|
|
622
|
+
|
|
623
|
+
**Import:** `import { AiToolCall } from "@signalflare-ai/ui";`
|
|
624
|
+
|
|
625
|
+
**Category:** Other
|
|
626
|
+
|
|
627
|
+
**Props:**
|
|
628
|
+
|
|
629
|
+
- `variant`: enum [default: default]
|
|
630
|
+
- `"default"`: Expandable card with collapsible input/output sections
|
|
631
|
+
- `"inline"`: Compact single-line display with left accent border
|
|
632
|
+
- `"minimal"`: Pill-shaped status badge
|
|
633
|
+
- `duration`: number
|
|
634
|
+
Duration in milliseconds.
|
|
635
|
+
- `summary`: string
|
|
636
|
+
Summary text shown alongside the tool name.
|
|
637
|
+
- `icon`: React.ElementType
|
|
638
|
+
Custom icon override.
|
|
639
|
+
- `approvalState`: enum
|
|
640
|
+
Approval state for tools requiring confirmation.
|
|
641
|
+
- `defaultExpanded`: boolean
|
|
642
|
+
Default expanded state for the collapsible.
|
|
643
|
+
- `className`: string
|
|
644
|
+
- `id`: string
|
|
645
|
+
- `lang`: string
|
|
646
|
+
- `title`: string
|
|
647
|
+
- `children`: ReactNode
|
|
648
|
+
|
|
649
|
+
**Colors (sf tokens used):**
|
|
650
|
+
|
|
651
|
+
`bg-sf-brand`, `bg-sf-danger`, `bg-sf-line`, `bg-sf-recessed`, `bg-sf-success`, `bg-sf-tint`, `bg-sf-warning`, `border-sf-elevated`, `border-sf-line`, `text-sf-brand`, `text-sf-danger`, `text-sf-subtle`, `text-sf-success`, `text-sf-warning`
|
|
652
|
+
|
|
653
|
+
---
|
|
654
|
+
|
|
655
|
+
### AiUsageBar
|
|
656
|
+
|
|
657
|
+
Compact token usage display bar. Shows input/output token counts, total, optional cost, and model identifier. Maps to harness event: `usage_update`.
|
|
658
|
+
|
|
659
|
+
**Type:** component
|
|
660
|
+
|
|
661
|
+
**Import:** `import { AiUsageBar } from "@signalflare-ai/ui";`
|
|
662
|
+
|
|
663
|
+
**Category:** Other
|
|
664
|
+
|
|
665
|
+
**Props:**
|
|
666
|
+
|
|
667
|
+
- `inputTokens`: number
|
|
668
|
+
Input/prompt token count.
|
|
669
|
+
- `outputTokens`: number
|
|
670
|
+
Output/completion token count.
|
|
671
|
+
- `totalTokens`: number
|
|
672
|
+
Total token count. Computed from input + output if not provided.
|
|
673
|
+
- `cost`: number
|
|
674
|
+
Estimated cost in USD.
|
|
675
|
+
- `modelId`: string
|
|
676
|
+
Model ID being used (shown as label).
|
|
677
|
+
- `icon`: React.ElementType
|
|
678
|
+
Custom icon. Defaults to `LightningIcon`.
|
|
679
|
+
- `children`: ReactNode
|
|
680
|
+
- `className`: string
|
|
681
|
+
- `id`: string
|
|
682
|
+
- `lang`: string
|
|
683
|
+
- `title`: string
|
|
684
|
+
|
|
685
|
+
**Colors (sf tokens used):**
|
|
686
|
+
|
|
687
|
+
`text-sf-inactive`, `text-sf-subtle`
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
### Badge
|
|
692
|
+
|
|
693
|
+
Small status label for categorizing or highlighting content. Supports icons, loading state, status dots, dismiss, tooltip, and interactive (button/link) modes.
|
|
694
|
+
|
|
695
|
+
**Type:** component
|
|
696
|
+
|
|
697
|
+
**Import:** `import { Badge } from "@signalflare-ai/ui";`
|
|
698
|
+
|
|
699
|
+
**Category:** Display
|
|
700
|
+
|
|
701
|
+
**Props:**
|
|
702
|
+
|
|
703
|
+
- `variant`: enum [default: primary]
|
|
704
|
+
- `"primary"`: Default high-emphasis badge for important labels
|
|
705
|
+
- `"secondary"`: Subtle badge for secondary information
|
|
706
|
+
- `"destructive"`: Error or danger state indicator
|
|
707
|
+
- `"outline"`: Bordered badge with transparent background
|
|
708
|
+
- `"beta"`: Indicates beta or experimental features
|
|
709
|
+
- `"success"`: Positive status indicator
|
|
710
|
+
- `"warning"`: Caution or attention indicator
|
|
711
|
+
- `"info"`: Informational badge
|
|
712
|
+
- `"ghost"`: Text-only badge with no background or border
|
|
713
|
+
- `className`: string
|
|
714
|
+
Additional CSS classes merged via `cn()`.
|
|
715
|
+
- `children`: ReactNode
|
|
716
|
+
Content rendered inside the badge.
|
|
717
|
+
- `icon`: React.ElementType
|
|
718
|
+
Icon component rendered alongside the text.
|
|
719
|
+
- `iconPosition`: enum
|
|
720
|
+
Position of the icon relative to the text.
|
|
721
|
+
- `loading`: boolean
|
|
722
|
+
Shows a loading spinner, replacing the icon slot.
|
|
723
|
+
- `dot`: enum
|
|
724
|
+
Renders a small colored status dot before the text.
|
|
725
|
+
- `tooltip`: ReactNode
|
|
726
|
+
Wraps the badge in a Tooltip with this content. Requires a TooltipProvider ancestor.
|
|
727
|
+
- `href`: string
|
|
728
|
+
|
|
729
|
+
**Colors (sf tokens used):**
|
|
730
|
+
|
|
731
|
+
`bg-sf-brand`, `bg-sf-contrast`, `bg-sf-danger`, `bg-sf-fill`, `bg-sf-info`, `bg-sf-subtle`, `bg-sf-success`, `bg-sf-warning`, `border-sf-brand`, `border-sf-fill`, `text-sf-default`, `text-sf-inverse`, `text-sf-link`, `text-sf-strong`, `text-sf-success`, `text-sf-warning`
|
|
732
|
+
|
|
733
|
+
---
|
|
734
|
+
|
|
735
|
+
### Banner
|
|
736
|
+
|
|
737
|
+
Full-width message bar for informational, warning, or error notices.
|
|
738
|
+
|
|
739
|
+
**Type:** component
|
|
740
|
+
|
|
741
|
+
**Import:** `import { Banner } from "@signalflare-ai/ui";`
|
|
742
|
+
|
|
743
|
+
**Category:** Feedback
|
|
744
|
+
|
|
745
|
+
**Props:**
|
|
746
|
+
|
|
747
|
+
- `icon`: ReactNode
|
|
748
|
+
Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`).
|
|
749
|
+
- `text`: string
|
|
750
|
+
- `children`: ReactNode
|
|
751
|
+
Banner message content. Accepts strings or custom React elements.
|
|
752
|
+
- `variant`: enum [default: default]
|
|
753
|
+
- `"default"`: Informational banner for general messages
|
|
754
|
+
- `"alert"`: Warning banner for cautionary messages
|
|
755
|
+
- `"error"`: Error banner for critical issues
|
|
756
|
+
- `className`: string
|
|
757
|
+
Additional CSS classes merged via `cn()`.
|
|
758
|
+
|
|
759
|
+
**Colors (sf tokens used):**
|
|
760
|
+
|
|
761
|
+
`bg-sf-danger`, `bg-sf-danger-tint`, `bg-sf-info`, `bg-sf-info-tint`, `bg-sf-warning`, `bg-sf-warning-tint`, `border-sf-danger`, `border-sf-info`, `border-sf-warning`, `text-sf-danger`, `text-sf-link`, `text-sf-warning`
|
|
762
|
+
|
|
763
|
+
---
|
|
764
|
+
|
|
765
|
+
### Breadcrumbs
|
|
766
|
+
|
|
767
|
+
Breadcrumbs component
|
|
768
|
+
|
|
769
|
+
**Type:** component
|
|
770
|
+
|
|
771
|
+
**Import:** `import { Breadcrumbs } from "@signalflare-ai/ui";`
|
|
772
|
+
|
|
773
|
+
**Category:** Display
|
|
774
|
+
|
|
775
|
+
**Props:**
|
|
776
|
+
|
|
777
|
+
- `size`: enum [default: base]
|
|
778
|
+
- `"sm"`: Compact breadcrumbs for dense UIs
|
|
779
|
+
- `"base"`: Default breadcrumbs size
|
|
780
|
+
- `children`: ReactNode
|
|
781
|
+
- `className`: string
|
|
782
|
+
Additional CSS classes merged via `cn()`.
|
|
783
|
+
|
|
784
|
+
**Colors (sf tokens used):**
|
|
785
|
+
|
|
786
|
+
`text-sf-inactive`, `text-sf-subtle`, `text-sf-success`
|
|
787
|
+
|
|
788
|
+
**Sub-Components:**
|
|
789
|
+
|
|
790
|
+
This is a compound component. Use these sub-components:
|
|
791
|
+
|
|
792
|
+
#### Breadcrumbs.Link
|
|
793
|
+
|
|
794
|
+
Link sub-component
|
|
795
|
+
|
|
796
|
+
Props:
|
|
797
|
+
- `href`: string (required)
|
|
798
|
+
- `icon`: React.ReactNode
|
|
799
|
+
|
|
800
|
+
#### Breadcrumbs.Current
|
|
801
|
+
|
|
802
|
+
Current sub-component
|
|
803
|
+
|
|
804
|
+
Props:
|
|
805
|
+
- `loading`: boolean
|
|
806
|
+
- `icon`: React.ReactNode
|
|
807
|
+
|
|
808
|
+
#### Breadcrumbs.Separator
|
|
809
|
+
|
|
810
|
+
Separator sub-component
|
|
811
|
+
|
|
812
|
+
#### Breadcrumbs.Clipboard
|
|
813
|
+
|
|
814
|
+
Clipboard sub-component
|
|
815
|
+
|
|
816
|
+
Props:
|
|
817
|
+
- `text`: string (required)
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
### Button
|
|
823
|
+
|
|
824
|
+
Primary action trigger. Supports multiple variants, sizes, shapes, icons, and loading state.
|
|
825
|
+
|
|
826
|
+
**Type:** component
|
|
827
|
+
|
|
828
|
+
**Import:** `import { Button } from "@signalflare-ai/ui";`
|
|
829
|
+
|
|
830
|
+
**Category:** Action
|
|
831
|
+
|
|
832
|
+
**Props:**
|
|
833
|
+
|
|
834
|
+
- `shape`: enum [default: base]
|
|
835
|
+
- `"base"`: Default rectangular button shape
|
|
836
|
+
- `"square"`: Square button for icon-only actions
|
|
837
|
+
- `"circle"`: Circular button for icon-only actions
|
|
838
|
+
- `size`: enum [default: base]
|
|
839
|
+
- `"xs"`: Extra small button for compact UIs
|
|
840
|
+
- `"sm"`: Small button for secondary actions
|
|
841
|
+
- `"base"`: Default button size
|
|
842
|
+
- `"lg"`: Large button for primary CTAs
|
|
843
|
+
- `variant`: enum [default: secondary]
|
|
844
|
+
- `"primary"`: High-emphasis button for primary actions
|
|
845
|
+
- `"secondary"`: Default button style for most actions
|
|
846
|
+
- `"ghost"`: Minimal button with no background
|
|
847
|
+
- `"destructive"`: Danger button for destructive actions like delete
|
|
848
|
+
- `"secondary-destructive"`: Secondary button with destructive text for less prominent dangerous actions
|
|
849
|
+
- `"outline"`: Bordered button with transparent background
|
|
850
|
+
|
|
851
|
+
**State Classes:**
|
|
852
|
+
- `"primary"`:
|
|
853
|
+
- `hover`: `hover:bg-sf-brand-hover`
|
|
854
|
+
- `focus`: `focus:bg-sf-brand-hover`
|
|
855
|
+
- `disabled`: `disabled:bg-sf-brand/50`
|
|
856
|
+
- `"secondary"`:
|
|
857
|
+
- `not-disabled`: `not-disabled:hover:border-secondary! not-disabled:hover:bg-sf-control`
|
|
858
|
+
- `disabled`: `disabled:bg-sf-control/50 disabled:!text-sf-default/70`
|
|
859
|
+
- `data-state`: `data-[state=open]:bg-sf-control`
|
|
860
|
+
- `"ghost"`:
|
|
861
|
+
- `hover`: `hover:bg-sf-tint`
|
|
862
|
+
- `"destructive"`:
|
|
863
|
+
- `hover`: `hover:bg-sf-danger/70`
|
|
864
|
+
- `"secondary-destructive"`:
|
|
865
|
+
- `not-disabled`: `not-disabled:hover:border-secondary! not-disabled:hover:bg-sf-control`
|
|
866
|
+
- `disabled`: `disabled:bg-sf-control/50 disabled:!text-sf-danger/70`
|
|
867
|
+
- `data-state`: `data-[state=open]:bg-sf-control`
|
|
868
|
+
- `children`: ReactNode
|
|
869
|
+
- `className`: string
|
|
870
|
+
- `icon`: ReactNode
|
|
871
|
+
Icon from `@phosphor-icons/react` or a React element. Rendered before children.
|
|
872
|
+
- `loading`: boolean
|
|
873
|
+
Shows a loading spinner and disables interaction.
|
|
874
|
+
- `id`: string
|
|
875
|
+
- `lang`: string
|
|
876
|
+
- `title`: string
|
|
877
|
+
- `disabled`: boolean
|
|
878
|
+
- `name`: string
|
|
879
|
+
- `type`: enum
|
|
880
|
+
- `value`: string | string[] | number
|
|
881
|
+
|
|
882
|
+
**Colors (sf tokens used):**
|
|
883
|
+
|
|
884
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-brand-hover`, `bg-sf-control`, `bg-sf-danger`, `bg-sf-tint`, `ring-sf-line`, `ring-sf-ring`, `text-sf-danger`, `text-sf-default`, `text-sf-subtle`
|
|
885
|
+
|
|
886
|
+
---
|
|
887
|
+
|
|
888
|
+
### Checkbox
|
|
889
|
+
|
|
890
|
+
Checkbox component
|
|
891
|
+
|
|
892
|
+
**Type:** component
|
|
893
|
+
|
|
894
|
+
**Import:** `import { Checkbox } from "@signalflare-ai/ui";`
|
|
895
|
+
|
|
896
|
+
**Category:** Input
|
|
897
|
+
|
|
898
|
+
**Props:**
|
|
899
|
+
|
|
900
|
+
- `variant`: enum [default: default]
|
|
901
|
+
- `"default"`: Default checkbox appearance
|
|
902
|
+
- `"error"`: Error state for validation failures
|
|
903
|
+
|
|
904
|
+
**State Classes:**
|
|
905
|
+
- `"default"`:
|
|
906
|
+
- `focus`: `[&:focus-within>span]:ring-sf-ring`
|
|
907
|
+
- `hover`: `[&:hover>span]:ring-sf-ring`
|
|
908
|
+
- `label`: ReactNode
|
|
909
|
+
Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
|
|
910
|
+
- `labelTooltip`: ReactNode
|
|
911
|
+
Tooltip content to display next to the label via an info icon
|
|
912
|
+
- `controlFirst`: boolean
|
|
913
|
+
When true (default), checkbox appears before label. When false, label appears before checkbox.
|
|
914
|
+
- `checked`: boolean
|
|
915
|
+
Whether the checkbox is checked (controlled)
|
|
916
|
+
- `indeterminate`: boolean
|
|
917
|
+
Whether the checkbox is in indeterminate state
|
|
918
|
+
- `disabled`: boolean
|
|
919
|
+
Whether the checkbox is disabled
|
|
920
|
+
- `name`: string
|
|
921
|
+
Name for form submission
|
|
922
|
+
- `required`: boolean
|
|
923
|
+
Whether the field is required
|
|
924
|
+
- `className`: string
|
|
925
|
+
Additional class name
|
|
926
|
+
- `onValueChange`: (checked: boolean) => void
|
|
927
|
+
Callback when checkbox value changes
|
|
928
|
+
|
|
929
|
+
**Colors (sf tokens used):**
|
|
930
|
+
|
|
931
|
+
`bg-sf-base`, `bg-sf-contrast`, `border-sf-line`, `ring-sf-contrast`, `ring-sf-danger`, `ring-sf-line`, `ring-sf-ring`, `text-sf-danger`, `text-sf-default`, `text-sf-inverse`, `text-sf-subtle`
|
|
932
|
+
|
|
933
|
+
**Styling:**
|
|
934
|
+
|
|
935
|
+
- **Dimensions:** `h-4 w-4`
|
|
936
|
+
- **Border Radius:** `rounded-sm`
|
|
937
|
+
- **Base Tokens:** `bg-sf-base`, `ring-sf-line`
|
|
938
|
+
- **States:**
|
|
939
|
+
- `checked`: `bg-sf-contrast`, `text-sf-inverse`
|
|
940
|
+
- `indeterminate`: `bg-sf-contrast`, `text-sf-inverse`
|
|
941
|
+
- `error`: `ring-sf-danger`
|
|
942
|
+
- `hover`: `ring-sf-ring`
|
|
943
|
+
- `focus`: `ring-sf-ring`
|
|
944
|
+
- `disabled`: `opacity-50`, `cursor-not-allowed`
|
|
945
|
+
- **Icons:**
|
|
946
|
+
- `ph-check` (checked) size 12
|
|
947
|
+
- `ph-minus` (indeterminate) size 12
|
|
948
|
+
|
|
949
|
+
**Sub-Components:**
|
|
950
|
+
|
|
951
|
+
This is a compound component. Use these sub-components:
|
|
952
|
+
|
|
953
|
+
#### Checkbox.Item
|
|
954
|
+
|
|
955
|
+
Item sub-component
|
|
956
|
+
|
|
957
|
+
#### Checkbox.Group
|
|
958
|
+
|
|
959
|
+
Group sub-component
|
|
960
|
+
|
|
961
|
+
Props:
|
|
962
|
+
- `legend`: string (required)
|
|
963
|
+
- `children`: ReactNode (required)
|
|
964
|
+
- `error`: string
|
|
965
|
+
- `description`: ReactNode
|
|
966
|
+
- `value`: string[]
|
|
967
|
+
- `allValues`: string[]
|
|
968
|
+
- `disabled`: boolean
|
|
969
|
+
- `controlFirst`: boolean
|
|
970
|
+
- `className`: string
|
|
971
|
+
|
|
972
|
+
|
|
973
|
+
---
|
|
974
|
+
|
|
975
|
+
### ClipboardText
|
|
976
|
+
|
|
977
|
+
Read-only text field with a one-click copy-to-clipboard button.
|
|
978
|
+
|
|
979
|
+
**Type:** component
|
|
980
|
+
|
|
981
|
+
**Import:** `import { ClipboardText } from "@signalflare-ai/ui";`
|
|
982
|
+
|
|
983
|
+
**Category:** Action
|
|
984
|
+
|
|
985
|
+
**Props:**
|
|
986
|
+
|
|
987
|
+
- `size`: enum [default: lg]
|
|
988
|
+
- `"sm"`: Small clipboard text for compact UIs
|
|
989
|
+
- `"base"`: Default clipboard text size
|
|
990
|
+
- `"lg"`: Large clipboard text for prominent display
|
|
991
|
+
- `text`: string (required)
|
|
992
|
+
The text to display and copy to clipboard.
|
|
993
|
+
- `className`: string
|
|
994
|
+
Additional CSS classes merged via `cn()`.
|
|
995
|
+
- `tooltip`: object
|
|
996
|
+
Tooltip config. Shows tooltip on hover, anchored toast on click.
|
|
997
|
+
- `labels`: object
|
|
998
|
+
Accessible labels for i18n.
|
|
999
|
+
|
|
1000
|
+
**Colors (sf tokens used):**
|
|
1001
|
+
|
|
1002
|
+
`bg-sf-base`, `border-sf-line`, `outline-sf-fill`, `text-sf-default`
|
|
1003
|
+
|
|
1004
|
+
**Styling:**
|
|
1005
|
+
|
|
1006
|
+
- **Base Tokens:** `bg-sf-base`, `text-sf-default`, `ring-sf-line`, `border-sf-fill`
|
|
1007
|
+
- **States:**
|
|
1008
|
+
- `input`: `bg-sf-control`, `text-sf-default`, `ring-sf-line`
|
|
1009
|
+
- `text`: `bg-sf-base`, `font-mono`
|
|
1010
|
+
- `button`: `border-sf-fill`
|
|
1011
|
+
- **Icons:**
|
|
1012
|
+
- `ph-clipboard` (default) size 16
|
|
1013
|
+
- `ph-check` (copied) size 16
|
|
1014
|
+
- **Input Styles:**
|
|
1015
|
+
- Base: `bg-sf-control text-sf-default ring ring-sf-line`
|
|
1016
|
+
- Sizes:
|
|
1017
|
+
- `xs`: `h-5 gap-1 rounded-sm px-1.5 text-xs`
|
|
1018
|
+
- `sm`: `h-6.5 gap-1 rounded-md px-2 text-xs`
|
|
1019
|
+
- `base`: `h-9 gap-1.5 rounded-lg px-3 text-base`
|
|
1020
|
+
- `lg`: `h-10 gap-2 rounded-lg px-4 text-base`
|
|
1021
|
+
- **Size Variants:**
|
|
1022
|
+
- `sm`:
|
|
1023
|
+
- Height: 26px
|
|
1024
|
+
- Classes: `text-xs`
|
|
1025
|
+
- Button Size: `sm`
|
|
1026
|
+
- Dimensions:
|
|
1027
|
+
- paddingX: 8
|
|
1028
|
+
- gap: 1
|
|
1029
|
+
- borderRadius: 6
|
|
1030
|
+
- fontSize: 12
|
|
1031
|
+
- `base`:
|
|
1032
|
+
- Height: 36px
|
|
1033
|
+
- Classes: `text-sm`
|
|
1034
|
+
- Button Size: `base`
|
|
1035
|
+
- Dimensions:
|
|
1036
|
+
- paddingX: 12
|
|
1037
|
+
- gap: 6
|
|
1038
|
+
- borderRadius: 8
|
|
1039
|
+
- fontSize: 14
|
|
1040
|
+
- `lg`:
|
|
1041
|
+
- Height: 40px
|
|
1042
|
+
- Classes: `text-sm`
|
|
1043
|
+
- Button Size: `lg`
|
|
1044
|
+
- Dimensions:
|
|
1045
|
+
- paddingX: 16
|
|
1046
|
+
- gap: 8
|
|
1047
|
+
- borderRadius: 8
|
|
1048
|
+
- fontSize: 14
|
|
1049
|
+
|
|
1050
|
+
---
|
|
1051
|
+
|
|
1052
|
+
### Code
|
|
1053
|
+
|
|
1054
|
+
Code component
|
|
1055
|
+
|
|
1056
|
+
**Type:** component
|
|
1057
|
+
|
|
1058
|
+
**Import:** `import { Code } from "@signalflare-ai/ui";`
|
|
1059
|
+
|
|
1060
|
+
**Category:** Display
|
|
1061
|
+
|
|
1062
|
+
**Props:**
|
|
1063
|
+
|
|
1064
|
+
- `lang`: enum [default: ts]
|
|
1065
|
+
- `"ts"`: TypeScript code
|
|
1066
|
+
- `"tsx"`: TypeScript JSX code
|
|
1067
|
+
- `"jsonc"`: JSON with comments
|
|
1068
|
+
- `"bash"`: Shell/Bash commands
|
|
1069
|
+
- `"css"`: CSS styles
|
|
1070
|
+
- `code`: string (required)
|
|
1071
|
+
The code string to display.
|
|
1072
|
+
- `values`: Record<string, { value: string; highlight?: boolean }>
|
|
1073
|
+
Template values for `{{key}}` interpolation. Values with `highlight: true` are visually emphasized.
|
|
1074
|
+
- `className`: string
|
|
1075
|
+
Additional CSS classes merged via `cn()`.
|
|
1076
|
+
|
|
1077
|
+
**Colors (sf tokens used):**
|
|
1078
|
+
|
|
1079
|
+
`bg-sf-recessed`, `border-sf-line`, `text-sf-default`
|
|
1080
|
+
|
|
1081
|
+
**Styling:**
|
|
1082
|
+
|
|
1083
|
+
- **Dimensions:** `[object Object]`
|
|
1084
|
+
- **Base Tokens:** `text-sf-default`
|
|
1085
|
+
|
|
1086
|
+
**Sub-Components:**
|
|
1087
|
+
|
|
1088
|
+
This is a compound component. Use these sub-components:
|
|
1089
|
+
|
|
1090
|
+
#### Code.Block
|
|
1091
|
+
|
|
1092
|
+
Block sub-component
|
|
1093
|
+
|
|
1094
|
+
Props:
|
|
1095
|
+
- `code`: string (required)
|
|
1096
|
+
- `lang`: CodeLang
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
---
|
|
1100
|
+
|
|
1101
|
+
### Collapsible
|
|
1102
|
+
|
|
1103
|
+
Collapsible component for showing/hiding content. Features: - Animated chevron indicator (rotates 180° when open) - Accessible with aria-expanded and aria-controls - Content panel with left border accent
|
|
1104
|
+
|
|
1105
|
+
**Type:** component
|
|
1106
|
+
|
|
1107
|
+
**Import:** `import { Collapsible } from "@signalflare-ai/ui";`
|
|
1108
|
+
|
|
1109
|
+
**Category:** Display
|
|
1110
|
+
|
|
1111
|
+
**Props:**
|
|
1112
|
+
|
|
1113
|
+
- `children`: ReactNode
|
|
1114
|
+
- `label`: string (required)
|
|
1115
|
+
Text label displayed in the trigger button
|
|
1116
|
+
- `open`: boolean
|
|
1117
|
+
Whether the collapsible content is visible
|
|
1118
|
+
- `className`: string
|
|
1119
|
+
Additional CSS classes for the content panel
|
|
1120
|
+
- `onOpenChange`: (open: boolean) => void
|
|
1121
|
+
Callback when collapsed state changes
|
|
1122
|
+
|
|
1123
|
+
**Colors (sf tokens used):**
|
|
1124
|
+
|
|
1125
|
+
`border-sf-fill`, `text-sf-link`
|
|
1126
|
+
|
|
1127
|
+
---
|
|
1128
|
+
|
|
1129
|
+
### Combobox
|
|
1130
|
+
|
|
1131
|
+
Combobox — autocomplete input with filterable dropdown list. Compound component: `Combobox` (Root), `.TriggerInput`, `.TriggerValue`, `.TriggerMultipleWithInput`, `.Content`, `.Item`, `.Chip`, `.Input`, `.Empty`, `.GroupLabel`, `.Group`, `.List`, `.Collection`.
|
|
1132
|
+
|
|
1133
|
+
**Type:** component
|
|
1134
|
+
|
|
1135
|
+
**Import:** `import { Combobox } from "@signalflare-ai/ui";`
|
|
1136
|
+
|
|
1137
|
+
**Category:** Input
|
|
1138
|
+
|
|
1139
|
+
**Props:**
|
|
1140
|
+
|
|
1141
|
+
- `inputSide`: enum [default: right]
|
|
1142
|
+
- `"right"`: Input positioned inline to the right of chips
|
|
1143
|
+
- `"top"`: Input positioned above chips
|
|
1144
|
+
- `items`: T[] (required)
|
|
1145
|
+
Array of items to display in the dropdown
|
|
1146
|
+
- `value`: T | T[]
|
|
1147
|
+
Currently selected value(s)
|
|
1148
|
+
- `children`: ReactNode
|
|
1149
|
+
Combobox content (trigger, content, items)
|
|
1150
|
+
- `className`: string
|
|
1151
|
+
Additional CSS classes
|
|
1152
|
+
- `label`: ReactNode
|
|
1153
|
+
Label content for the combobox (enables Field wrapper) - can be a string or any React node
|
|
1154
|
+
- `required`: boolean
|
|
1155
|
+
Whether the combobox is required
|
|
1156
|
+
- `labelTooltip`: ReactNode
|
|
1157
|
+
Tooltip content to display next to the label via an info icon
|
|
1158
|
+
- `description`: ReactNode
|
|
1159
|
+
Helper text displayed below the combobox
|
|
1160
|
+
- `error`: string | object
|
|
1161
|
+
Error message or validation error object
|
|
1162
|
+
- `onValueChange`: (value: T | T[]) => void
|
|
1163
|
+
Callback when selection changes
|
|
1164
|
+
- `multiple`: boolean
|
|
1165
|
+
Allow multiple selections
|
|
1166
|
+
- `isItemEqualToValue`: (item: T, value: T) => boolean
|
|
1167
|
+
Custom equality function for comparing items
|
|
1168
|
+
|
|
1169
|
+
**Colors (sf tokens used):**
|
|
1170
|
+
|
|
1171
|
+
`bg-sf-control`, `bg-sf-fill-hover`, `bg-sf-overlay`, `fill-sf-ring`, `ring-sf-line`, `text-sf-default`, `text-sf-subtle`
|
|
1172
|
+
|
|
1173
|
+
**Sub-Components:**
|
|
1174
|
+
|
|
1175
|
+
This is a compound component. Use these sub-components:
|
|
1176
|
+
|
|
1177
|
+
#### Combobox.Content
|
|
1178
|
+
|
|
1179
|
+
Content sub-component
|
|
1180
|
+
|
|
1181
|
+
Props:
|
|
1182
|
+
- `className`: string
|
|
1183
|
+
- `align`: ComboboxBase.Positioner.Props["align"]
|
|
1184
|
+
- `alignOffset`: ComboboxBase.Positioner.Props["alignOffset"]
|
|
1185
|
+
- `side`: ComboboxBase.Positioner.Props["side"]
|
|
1186
|
+
- `sideOffset`: ComboboxBase.Positioner.Props["sideOffset"]
|
|
1187
|
+
|
|
1188
|
+
#### Combobox.TriggerValue
|
|
1189
|
+
|
|
1190
|
+
TriggerValue sub-component
|
|
1191
|
+
|
|
1192
|
+
#### Combobox.TriggerInput
|
|
1193
|
+
|
|
1194
|
+
TriggerInput sub-component
|
|
1195
|
+
|
|
1196
|
+
#### Combobox.TriggerMultipleWithInput
|
|
1197
|
+
|
|
1198
|
+
TriggerMultipleWithInput sub-component
|
|
1199
|
+
|
|
1200
|
+
#### Combobox.Chip
|
|
1201
|
+
|
|
1202
|
+
Chip sub-component
|
|
1203
|
+
|
|
1204
|
+
#### Combobox.Item
|
|
1205
|
+
|
|
1206
|
+
Item sub-component
|
|
1207
|
+
|
|
1208
|
+
#### Combobox.Input
|
|
1209
|
+
|
|
1210
|
+
Input sub-component
|
|
1211
|
+
|
|
1212
|
+
#### Combobox.Empty
|
|
1213
|
+
|
|
1214
|
+
Empty sub-component
|
|
1215
|
+
|
|
1216
|
+
#### Combobox.GroupLabel
|
|
1217
|
+
|
|
1218
|
+
GroupLabel sub-component
|
|
1219
|
+
|
|
1220
|
+
#### Combobox.Group
|
|
1221
|
+
|
|
1222
|
+
Group sub-component
|
|
1223
|
+
|
|
1224
|
+
#### Combobox.List
|
|
1225
|
+
|
|
1226
|
+
List sub-component
|
|
1227
|
+
|
|
1228
|
+
#### Combobox.Collection
|
|
1229
|
+
|
|
1230
|
+
Renders filtered list items. Use when you need more control over item rendering.
|
|
1231
|
+
|
|
1232
|
+
Props:
|
|
1233
|
+
- `children`: (item: T, index: number) => ReactNode (required) - Function that receives each filtered item and returns a node
|
|
1234
|
+
|
|
1235
|
+
Usage:
|
|
1236
|
+
```tsx
|
|
1237
|
+
<Combobox.Collection>
|
|
1238
|
+
{(item, index) => (
|
|
1239
|
+
<Combobox.Item key={index} value={item}>
|
|
1240
|
+
{item.label}
|
|
1241
|
+
</Combobox.Item>
|
|
1242
|
+
)}
|
|
1243
|
+
</Combobox.Collection>
|
|
1244
|
+
```
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
---
|
|
1248
|
+
|
|
1249
|
+
### CommandPalette
|
|
1250
|
+
|
|
1251
|
+
CommandPalette — accessible command palette / spotlight search overlay. Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`), `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`, `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`. Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.
|
|
1252
|
+
|
|
1253
|
+
**Type:** component
|
|
1254
|
+
|
|
1255
|
+
**Import:** `import { CommandPalette } from "@signalflare-ai/ui";`
|
|
1256
|
+
|
|
1257
|
+
**Category:** Navigation
|
|
1258
|
+
|
|
1259
|
+
**Props:**
|
|
1260
|
+
|
|
1261
|
+
- `open`: boolean (required)
|
|
1262
|
+
Whether the dialog is open
|
|
1263
|
+
- `children`: ReactNode
|
|
1264
|
+
Child content - typically one or more Panel components
|
|
1265
|
+
|
|
1266
|
+
**Colors (sf tokens used):**
|
|
1267
|
+
|
|
1268
|
+
`bg-sf-elevated`, `bg-sf-overlay`, `bg-sf-warning`, `ring-sf-line`, `text-sf-default`, `text-sf-strong`, `text-sf-subtle`
|
|
1269
|
+
|
|
1270
|
+
---
|
|
1271
|
+
|
|
1272
|
+
### DataGrid
|
|
1273
|
+
|
|
1274
|
+
DataGrid component
|
|
1275
|
+
|
|
1276
|
+
**Type:** component
|
|
1277
|
+
|
|
1278
|
+
**Import:** `import { DataGrid } from "@signalflare-ai/ui";`
|
|
1279
|
+
|
|
1280
|
+
**Category:** Other
|
|
1281
|
+
|
|
1282
|
+
**Props:**
|
|
1283
|
+
|
|
1284
|
+
- `layout`: enum [default: auto]
|
|
1285
|
+
- `"auto"`: Auto column sizing - columns resize based on content
|
|
1286
|
+
- `"fixed"`: Fixed column sizing - columns have equal width
|
|
1287
|
+
- `className`: string
|
|
1288
|
+
Additional CSS classes
|
|
1289
|
+
- `children`: ReactNode
|
|
1290
|
+
Child elements
|
|
1291
|
+
|
|
1292
|
+
**Colors (sf tokens used):**
|
|
1293
|
+
|
|
1294
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-line`, `bg-sf-overlay`, `bg-sf-tint`, `border-sf-line`, `text-sf-brand`, `text-sf-subtle`
|
|
1295
|
+
|
|
1296
|
+
**Sub-Components:**
|
|
1297
|
+
|
|
1298
|
+
This is a compound component. Use these sub-components:
|
|
1299
|
+
|
|
1300
|
+
#### DataGrid.Toolbar
|
|
1301
|
+
|
|
1302
|
+
Toolbar sub-component
|
|
1303
|
+
|
|
1304
|
+
#### DataGrid.Content
|
|
1305
|
+
|
|
1306
|
+
Content sub-component
|
|
1307
|
+
|
|
1308
|
+
#### DataGrid.Pagination
|
|
1309
|
+
|
|
1310
|
+
Pagination sub-component
|
|
1311
|
+
|
|
1312
|
+
#### DataGrid.ColumnToggle
|
|
1313
|
+
|
|
1314
|
+
ColumnToggle sub-component
|
|
1315
|
+
|
|
1316
|
+
#### DataGrid.Empty
|
|
1317
|
+
|
|
1318
|
+
Empty sub-component
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
---
|
|
1322
|
+
|
|
1323
|
+
### DatePicker
|
|
1324
|
+
|
|
1325
|
+
DatePicker — a date selection calendar. Built on [react-day-picker](https://daypicker.dev) with SF styling. Supports three selection modes: single, multiple, and range.
|
|
1326
|
+
|
|
1327
|
+
**Type:** component
|
|
1328
|
+
|
|
1329
|
+
**Import:** `import { DatePicker } from "@signalflare-ai/ui";`
|
|
1330
|
+
|
|
1331
|
+
**Category:** Other
|
|
1332
|
+
|
|
1333
|
+
**Props:**
|
|
1334
|
+
|
|
1335
|
+
- `className`: string
|
|
1336
|
+
Additional CSS classes
|
|
1337
|
+
- `children`: ReactNode
|
|
1338
|
+
Child elements
|
|
1339
|
+
|
|
1340
|
+
**Colors (sf tokens used):**
|
|
1341
|
+
|
|
1342
|
+
`bg-sf-base`
|
|
1343
|
+
|
|
1344
|
+
---
|
|
1345
|
+
|
|
1346
|
+
### DateRangePicker
|
|
1347
|
+
|
|
1348
|
+
DateRangePicker — dual-calendar date range selector. Renders two side-by-side month calendars with click-to-select start/end dates, hover preview of the range, a timezone footer, and a reset button.
|
|
1349
|
+
|
|
1350
|
+
**Type:** component
|
|
1351
|
+
|
|
1352
|
+
**Import:** `import { DateRangePicker } from "@signalflare-ai/ui";`
|
|
1353
|
+
|
|
1354
|
+
**Category:** Input
|
|
1355
|
+
|
|
1356
|
+
**Props:**
|
|
1357
|
+
|
|
1358
|
+
- `size`: enum [default: base]
|
|
1359
|
+
- `"sm"`: Compact calendar for tight spaces
|
|
1360
|
+
- `"base"`: Default calendar size
|
|
1361
|
+
- `"lg"`: Large calendar for prominent date selection
|
|
1362
|
+
- `variant`: enum [default: default]
|
|
1363
|
+
- `"default"`: Default calendar appearance
|
|
1364
|
+
- `"subtle"`: Subtle calendar with minimal background
|
|
1365
|
+
- `timezone`: string
|
|
1366
|
+
Display timezone string shown in the footer.
|
|
1367
|
+
- `className`: string
|
|
1368
|
+
Additional CSS classes merged via `cn()`.
|
|
1369
|
+
- `onStartDateChange`: (date: Date | null) => void
|
|
1370
|
+
Callback when start date changes
|
|
1371
|
+
- `onEndDateChange`: (date: Date | null) => void
|
|
1372
|
+
Callback when end date changes
|
|
1373
|
+
|
|
1374
|
+
**Colors (sf tokens used):**
|
|
1375
|
+
|
|
1376
|
+
`bg-sf-base`, `bg-sf-contrast`, `bg-sf-fill`, `bg-sf-interact`, `bg-sf-overlay`, `text-sf-default`, `text-sf-inverse`, `text-sf-strong`, `text-sf-subtle`
|
|
1377
|
+
|
|
1378
|
+
**Styling:**
|
|
1379
|
+
|
|
1380
|
+
- **Size Variants:**
|
|
1381
|
+
- `sm`:
|
|
1382
|
+
- Classes: `p-3 gap-2`
|
|
1383
|
+
- Dimensions:
|
|
1384
|
+
- calendarWidth: 168
|
|
1385
|
+
- cellHeight: 22
|
|
1386
|
+
- cellWidth: 24
|
|
1387
|
+
- textSize: 12
|
|
1388
|
+
- iconSize: 14
|
|
1389
|
+
- padding: 12
|
|
1390
|
+
- gap: 8
|
|
1391
|
+
- `base`:
|
|
1392
|
+
- Classes: `p-4 gap-2.5`
|
|
1393
|
+
- Dimensions:
|
|
1394
|
+
- calendarWidth: 196
|
|
1395
|
+
- cellHeight: 26
|
|
1396
|
+
- cellWidth: 28
|
|
1397
|
+
- textSize: 14
|
|
1398
|
+
- iconSize: 16
|
|
1399
|
+
- padding: 16
|
|
1400
|
+
- gap: 10
|
|
1401
|
+
- `lg`:
|
|
1402
|
+
- Classes: `p-5 gap-3`
|
|
1403
|
+
- Dimensions:
|
|
1404
|
+
- calendarWidth: 252
|
|
1405
|
+
- cellHeight: 32
|
|
1406
|
+
- cellWidth: 36
|
|
1407
|
+
- textSize: 16
|
|
1408
|
+
- iconSize: 18
|
|
1409
|
+
- padding: 20
|
|
1410
|
+
- gap: 12
|
|
1411
|
+
|
|
1412
|
+
---
|
|
1413
|
+
|
|
1414
|
+
### Dialog
|
|
1415
|
+
|
|
1416
|
+
Dialog component
|
|
1417
|
+
|
|
1418
|
+
**Type:** component
|
|
1419
|
+
|
|
1420
|
+
**Import:** `import { Dialog } from "@signalflare-ai/ui";`
|
|
1421
|
+
|
|
1422
|
+
**Category:** Overlay
|
|
1423
|
+
|
|
1424
|
+
**Props:**
|
|
1425
|
+
|
|
1426
|
+
- `className`: string
|
|
1427
|
+
Additional CSS classes merged via `cn()`.
|
|
1428
|
+
- `children`: ReactNode
|
|
1429
|
+
Dialog content (typically Title, Description, Close, and action buttons).
|
|
1430
|
+
- `size`: enum [default: base]
|
|
1431
|
+
- `"base"`: Default dialog width
|
|
1432
|
+
- `"sm"`: Small dialog for simple confirmations
|
|
1433
|
+
- `"lg"`: Large dialog for complex content
|
|
1434
|
+
- `"xl"`: Extra large dialog for detailed views
|
|
1435
|
+
|
|
1436
|
+
**Colors (sf tokens used):**
|
|
1437
|
+
|
|
1438
|
+
`bg-sf-elevated`, `bg-sf-overlay`, `text-sf-default`, `text-sf-subtle`
|
|
1439
|
+
|
|
1440
|
+
**Styling:**
|
|
1441
|
+
|
|
1442
|
+
- **Dimensions:** `[object Object]`
|
|
1443
|
+
|
|
1444
|
+
**Sub-Components:**
|
|
1445
|
+
|
|
1446
|
+
This is a compound component. Use these sub-components:
|
|
1447
|
+
|
|
1448
|
+
#### Dialog.Root
|
|
1449
|
+
|
|
1450
|
+
Root sub-component
|
|
1451
|
+
|
|
1452
|
+
#### Dialog.Trigger
|
|
1453
|
+
|
|
1454
|
+
Trigger sub-component
|
|
1455
|
+
|
|
1456
|
+
#### Dialog.Title
|
|
1457
|
+
|
|
1458
|
+
Title sub-component
|
|
1459
|
+
|
|
1460
|
+
#### Dialog.Description
|
|
1461
|
+
|
|
1462
|
+
Description sub-component
|
|
1463
|
+
|
|
1464
|
+
#### Dialog.Close
|
|
1465
|
+
|
|
1466
|
+
Close sub-component
|
|
1467
|
+
|
|
1468
|
+
|
|
1469
|
+
---
|
|
1470
|
+
|
|
1471
|
+
### DropdownMenu
|
|
1472
|
+
|
|
1473
|
+
DropdownMenu — accessible dropdown menu anchored to a trigger. Compound component: `DropdownMenu` (Root), `.Trigger`, `.Content`, `.Item`, `.CheckboxItem`, `.RadioGroup`, `.RadioItem`, `.RadioItemIndicator`, `.Sub`, `.SubTrigger`, `.SubContent`, `.Label`, `.Separator`, `.Shortcut`, `.Group`. Built on `@base-ui/react/menu`.
|
|
1474
|
+
|
|
1475
|
+
**Type:** component
|
|
1476
|
+
|
|
1477
|
+
**Import:** `import { DropdownMenu } from "@signalflare-ai/ui";`
|
|
1478
|
+
|
|
1479
|
+
**Category:** Overlay
|
|
1480
|
+
|
|
1481
|
+
**Props:**
|
|
1482
|
+
|
|
1483
|
+
- `variant`: enum [default: default]
|
|
1484
|
+
- `"default"`: Default dropdown item appearance
|
|
1485
|
+
- `"danger"`: Destructive action item
|
|
1486
|
+
|
|
1487
|
+
**Colors (sf tokens used):**
|
|
1488
|
+
|
|
1489
|
+
`bg-sf-control`, `bg-sf-danger`, `bg-sf-line`, `bg-sf-overlay`, `bg-sf-tint`, `ring-sf-line`, `text-sf-danger`, `text-sf-default`
|
|
1490
|
+
|
|
1491
|
+
**Sub-Components:**
|
|
1492
|
+
|
|
1493
|
+
This is a compound component. Use these sub-components:
|
|
1494
|
+
|
|
1495
|
+
#### DropdownMenu.Trigger
|
|
1496
|
+
|
|
1497
|
+
Trigger sub-component
|
|
1498
|
+
|
|
1499
|
+
#### DropdownMenu.Portal
|
|
1500
|
+
|
|
1501
|
+
Portal sub-component (wraps DropdownMenuPrimitive)
|
|
1502
|
+
|
|
1503
|
+
#### DropdownMenu.Sub
|
|
1504
|
+
|
|
1505
|
+
Sub sub-component (wraps DropdownMenuPrimitive)
|
|
1506
|
+
|
|
1507
|
+
#### DropdownMenu.SubTrigger
|
|
1508
|
+
|
|
1509
|
+
SubTrigger sub-component
|
|
1510
|
+
|
|
1511
|
+
#### DropdownMenu.SubContent
|
|
1512
|
+
|
|
1513
|
+
SubContent sub-component
|
|
1514
|
+
|
|
1515
|
+
#### DropdownMenu.Content
|
|
1516
|
+
|
|
1517
|
+
Content sub-component
|
|
1518
|
+
|
|
1519
|
+
#### DropdownMenu.Item
|
|
1520
|
+
|
|
1521
|
+
Item sub-component
|
|
1522
|
+
|
|
1523
|
+
#### DropdownMenu.CheckboxItem
|
|
1524
|
+
|
|
1525
|
+
CheckboxItem sub-component
|
|
1526
|
+
|
|
1527
|
+
#### DropdownMenu.RadioGroup
|
|
1528
|
+
|
|
1529
|
+
RadioGroup sub-component (wraps DropdownMenuPrimitive)
|
|
1530
|
+
|
|
1531
|
+
#### DropdownMenu.RadioItem
|
|
1532
|
+
|
|
1533
|
+
RadioItem sub-component
|
|
1534
|
+
|
|
1535
|
+
#### DropdownMenu.RadioItemIndicator
|
|
1536
|
+
|
|
1537
|
+
RadioItemIndicator sub-component
|
|
1538
|
+
|
|
1539
|
+
#### DropdownMenu.Label
|
|
1540
|
+
|
|
1541
|
+
Label sub-component
|
|
1542
|
+
|
|
1543
|
+
#### DropdownMenu.Separator
|
|
1544
|
+
|
|
1545
|
+
Separator sub-component
|
|
1546
|
+
|
|
1547
|
+
#### DropdownMenu.Shortcut
|
|
1548
|
+
|
|
1549
|
+
Shortcut sub-component
|
|
1550
|
+
|
|
1551
|
+
#### DropdownMenu.Group
|
|
1552
|
+
|
|
1553
|
+
Group sub-component (wraps DropdownMenuPrimitive)
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
---
|
|
1557
|
+
|
|
1558
|
+
### Empty
|
|
1559
|
+
|
|
1560
|
+
Placeholder shown when a list, table, or page has no content to display.
|
|
1561
|
+
|
|
1562
|
+
**Type:** component
|
|
1563
|
+
|
|
1564
|
+
**Import:** `import { Empty } from "@signalflare-ai/ui";`
|
|
1565
|
+
|
|
1566
|
+
**Category:** Display
|
|
1567
|
+
|
|
1568
|
+
**Props:**
|
|
1569
|
+
|
|
1570
|
+
- `size`: enum [default: base]
|
|
1571
|
+
- `"sm"`: Compact empty state for smaller containers
|
|
1572
|
+
- `"base"`: Default empty state size
|
|
1573
|
+
- `"lg"`: Large empty state for prominent placement
|
|
1574
|
+
- `icon`: ReactNode
|
|
1575
|
+
Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`).
|
|
1576
|
+
- `title`: string (required)
|
|
1577
|
+
Primary heading text for the empty state.
|
|
1578
|
+
- `description`: string
|
|
1579
|
+
Secondary description text displayed below the title.
|
|
1580
|
+
- `commandLine`: string
|
|
1581
|
+
Shell command displayed in a copyable code block.
|
|
1582
|
+
- `contents`: ReactNode
|
|
1583
|
+
Additional content (buttons, links) rendered below the description.
|
|
1584
|
+
- `className`: string
|
|
1585
|
+
Additional CSS classes merged via `cn()`.
|
|
1586
|
+
|
|
1587
|
+
**Colors (sf tokens used):**
|
|
1588
|
+
|
|
1589
|
+
`bg-sf-control`, `bg-sf-overlay`, `border-sf-fill`, `border-sf-interact`, `text-sf-brand`, `text-sf-default`, `text-sf-inactive`, `text-sf-strong`, `text-sf-success`
|
|
1590
|
+
|
|
1591
|
+
---
|
|
1592
|
+
|
|
1593
|
+
### Field
|
|
1594
|
+
|
|
1595
|
+
Form field wrapper that provides a label, optional description, and error display around any form control. Built on Base UI Field primitives.
|
|
1596
|
+
|
|
1597
|
+
**Type:** component
|
|
1598
|
+
|
|
1599
|
+
**Import:** `import { Field } from "@signalflare-ai/ui";`
|
|
1600
|
+
|
|
1601
|
+
**Category:** Input
|
|
1602
|
+
|
|
1603
|
+
**Props:**
|
|
1604
|
+
|
|
1605
|
+
- `controlFirst`: boolean
|
|
1606
|
+
When `true`, places the control before the label (for checkbox/switch layouts).
|
|
1607
|
+
- `children`: ReactNode
|
|
1608
|
+
The form control element(s) to wrap (Input, Select, Checkbox, etc.).
|
|
1609
|
+
- `label`: ReactNode
|
|
1610
|
+
The label content — can be a string or any React node.
|
|
1611
|
+
- `required`: boolean
|
|
1612
|
+
When explicitly `false`, shows gray "(optional)" text after the label. When `true` or `undefined`, no indicator is shown.
|
|
1613
|
+
- `labelTooltip`: ReactNode
|
|
1614
|
+
Tooltip content displayed next to the label via an info icon.
|
|
1615
|
+
- `error`: object
|
|
1616
|
+
Validation error with a message and a browser `ValidityState` match key.
|
|
1617
|
+
- `description`: ReactNode
|
|
1618
|
+
Helper text displayed below the control (hidden when `error` is present).
|
|
1619
|
+
|
|
1620
|
+
**Colors (sf tokens used):**
|
|
1621
|
+
|
|
1622
|
+
`text-sf-danger`, `text-sf-default`, `text-sf-subtle`
|
|
1623
|
+
|
|
1624
|
+
---
|
|
1625
|
+
|
|
1626
|
+
### Filters
|
|
1627
|
+
|
|
1628
|
+
Filters component for building and managing active filter conditions. Supports multiple filter types (text, select, multiselect, custom), operators, and an "Add Filter" popover interface. Designed to work standalone or with DataGrid for advanced data filtering.
|
|
1629
|
+
|
|
1630
|
+
**Type:** component
|
|
1631
|
+
|
|
1632
|
+
**Import:** `import { Filters } from "@signalflare-ai/ui";`
|
|
1633
|
+
|
|
1634
|
+
**Category:** Other
|
|
1635
|
+
|
|
1636
|
+
**Props:**
|
|
1637
|
+
|
|
1638
|
+
- `filters`: Filter[] (required)
|
|
1639
|
+
Active filters array
|
|
1640
|
+
- `fields`: FilterFieldConfig[] (required)
|
|
1641
|
+
Available field configurations
|
|
1642
|
+
- `size`: enum [default: default]
|
|
1643
|
+
- `"sm"`: Small filter items
|
|
1644
|
+
- `"default"`: Default filter items
|
|
1645
|
+
- `"lg"`: Large filter items
|
|
1646
|
+
- `trigger`: ReactNode
|
|
1647
|
+
Custom trigger element (replaces default "Add Filter" button)
|
|
1648
|
+
- `showSearchInput`: boolean
|
|
1649
|
+
Whether to show a search input in the add filter menu
|
|
1650
|
+
- `allowMultiple`: boolean
|
|
1651
|
+
Whether to allow multiple filters on the same field
|
|
1652
|
+
- `enableShortcut`: boolean
|
|
1653
|
+
Whether to enable keyboard shortcut (Cmd/Ctrl + K) to open add filter
|
|
1654
|
+
- `shortcutKey`: string
|
|
1655
|
+
Keyboard shortcut key (default: "k")
|
|
1656
|
+
- `shortcutLabel`: string
|
|
1657
|
+
Label shown in the shortcut tooltip
|
|
1658
|
+
- `i18n`: Partial<FilterI18nConfig>
|
|
1659
|
+
i18n configuration for labels
|
|
1660
|
+
- `className`: string
|
|
1661
|
+
Additional CSS classes
|
|
1662
|
+
- `menuPopupClassName`: string
|
|
1663
|
+
CSS classes for the filter menu popup
|
|
1664
|
+
|
|
1665
|
+
**Colors (sf tokens used):**
|
|
1666
|
+
|
|
1667
|
+
`bg-sf-fill`, `bg-sf-line`, `bg-sf-overlay`, `bg-sf-tint`, `border-sf-line`, `text-sf-brand`, `text-sf-danger`, `text-sf-default`, `text-sf-strong`, `text-sf-subtle`
|
|
1668
|
+
|
|
1669
|
+
---
|
|
1670
|
+
|
|
1671
|
+
### Grid
|
|
1672
|
+
|
|
1673
|
+
Responsive CSS grid layout container with preset column configurations.
|
|
1674
|
+
|
|
1675
|
+
**Type:** component
|
|
1676
|
+
|
|
1677
|
+
**Import:** `import { Grid } from "@signalflare-ai/ui";`
|
|
1678
|
+
|
|
1679
|
+
**Category:** Layout
|
|
1680
|
+
|
|
1681
|
+
**Props:**
|
|
1682
|
+
|
|
1683
|
+
- `children`: ReactNode
|
|
1684
|
+
Grid items to render.
|
|
1685
|
+
- `className`: string
|
|
1686
|
+
Additional CSS classes merged via `cn()`.
|
|
1687
|
+
- `id`: string
|
|
1688
|
+
- `lang`: string
|
|
1689
|
+
- `title`: string
|
|
1690
|
+
- `mobileDivider`: boolean
|
|
1691
|
+
Show dividers between grid items on mobile (only works with `"4up"` variant).
|
|
1692
|
+
- `gap`: enum [default: base]
|
|
1693
|
+
- `"none"`: No gap between grid items
|
|
1694
|
+
- `"sm"`: Small gap between grid items
|
|
1695
|
+
- `"base"`: Default responsive gap between grid items
|
|
1696
|
+
- `"lg"`: Large gap between grid items
|
|
1697
|
+
- `variant`: enum
|
|
1698
|
+
- `"2up"`: Grid items stack on small screens, display side-by-side on medium screens and up
|
|
1699
|
+
- `"side-by-side"`: Grid items always displayed side-by-side
|
|
1700
|
+
- `"2-1"`: Two-thirds / one-third split (66%/33%) on medium screens and up
|
|
1701
|
+
- `"1-2"`: One-third / two-thirds split (33%/66%) on medium screens and up
|
|
1702
|
+
- `"1-3up"`: Grid items stack on small screens, expand to 3 across on large screens
|
|
1703
|
+
- `"3up"`: Grid items stack on small screens, 2 across on medium, 3 across on large
|
|
1704
|
+
- `"4up"`: Grid items stack on small screens, progressively increase columns at larger breakpoints
|
|
1705
|
+
- `"6up"`: Grid items start at 2 across, expand to 6 across on XL
|
|
1706
|
+
- `"1-2-4up"`: Grid items stack on small screens, 2 across on medium, 4 across on large
|
|
1707
|
+
|
|
1708
|
+
**Colors (sf tokens used):**
|
|
1709
|
+
|
|
1710
|
+
`border-sf-line`
|
|
1711
|
+
|
|
1712
|
+
---
|
|
1713
|
+
|
|
1714
|
+
### Input
|
|
1715
|
+
|
|
1716
|
+
Input component
|
|
1717
|
+
|
|
1718
|
+
**Type:** component
|
|
1719
|
+
|
|
1720
|
+
**Import:** `import { Input } from "@signalflare-ai/ui";`
|
|
1721
|
+
|
|
1722
|
+
**Category:** Input
|
|
1723
|
+
|
|
1724
|
+
**Props:**
|
|
1725
|
+
|
|
1726
|
+
- `label`: ReactNode
|
|
1727
|
+
Label content for the input (enables Field wrapper) - can be a string or any React node
|
|
1728
|
+
- `labelTooltip`: ReactNode
|
|
1729
|
+
Tooltip content to display next to the label via an info icon
|
|
1730
|
+
- `description`: ReactNode
|
|
1731
|
+
Helper text displayed below the input
|
|
1732
|
+
- `error`: string | object
|
|
1733
|
+
Error message or validation error object
|
|
1734
|
+
- `size`: enum [default: base]
|
|
1735
|
+
- `"xs"`: Extra small input for compact UIs
|
|
1736
|
+
- `"sm"`: Small input for secondary fields
|
|
1737
|
+
- `"base"`: Default input size
|
|
1738
|
+
- `"lg"`: Large input for prominent fields
|
|
1739
|
+
- `variant`: enum [default: default]
|
|
1740
|
+
- `"default"`: Default input appearance
|
|
1741
|
+
- `"error"`: Error state for validation failures
|
|
1742
|
+
|
|
1743
|
+
**State Classes:**
|
|
1744
|
+
- `"default"`:
|
|
1745
|
+
- `focus`: `focus:ring-sf-ring`
|
|
1746
|
+
- `"error"`:
|
|
1747
|
+
- `focus`: `focus:ring-sf-danger`
|
|
1748
|
+
|
|
1749
|
+
**Colors (sf tokens used):**
|
|
1750
|
+
|
|
1751
|
+
`bg-sf-control`, `ring-sf-danger`, `ring-sf-line`, `ring-sf-ring`, `text-sf-default`, `text-sf-subtle`
|
|
1752
|
+
|
|
1753
|
+
**Styling:**
|
|
1754
|
+
|
|
1755
|
+
- **Dimensions:** `[object Object]`
|
|
1756
|
+
|
|
1757
|
+
---
|
|
1758
|
+
|
|
1759
|
+
### Label
|
|
1760
|
+
|
|
1761
|
+
Label component for form fields. Provides a standardized way to display labels with optional indicators: - Optional indicator: gray "(optional)" text when `showOptional={true}` - Tooltip: info icon with hover tooltip for additional context
|
|
1762
|
+
|
|
1763
|
+
**Type:** component
|
|
1764
|
+
|
|
1765
|
+
**Import:** `import { Label } from "@signalflare-ai/ui";`
|
|
1766
|
+
|
|
1767
|
+
**Category:** Other
|
|
1768
|
+
|
|
1769
|
+
**Props:**
|
|
1770
|
+
|
|
1771
|
+
- `children`: ReactNode
|
|
1772
|
+
The label content — can be a string or any React node.
|
|
1773
|
+
- `showOptional`: boolean
|
|
1774
|
+
When `true`, shows gray "(optional)" text after the label.
|
|
1775
|
+
- `tooltip`: ReactNode
|
|
1776
|
+
Tooltip content displayed next to the label via an info icon.
|
|
1777
|
+
- `className`: string
|
|
1778
|
+
Additional CSS classes merged via `cn()`.
|
|
1779
|
+
- `htmlFor`: string
|
|
1780
|
+
The id of the form element this label is associated with
|
|
1781
|
+
- `asContent`: boolean
|
|
1782
|
+
When true, only renders the inline content (indicators, tooltip) without the outer label element with font styling. Useful when composed inside another label element that already provides the text styling.
|
|
1783
|
+
|
|
1784
|
+
**Colors (sf tokens used):**
|
|
1785
|
+
|
|
1786
|
+
`text-sf-default`, `text-sf-strong`
|
|
1787
|
+
|
|
1788
|
+
---
|
|
1789
|
+
|
|
1790
|
+
### LayerCard
|
|
1791
|
+
|
|
1792
|
+
LayerCard component
|
|
1793
|
+
|
|
1794
|
+
**Type:** component
|
|
1795
|
+
|
|
1796
|
+
**Import:** `import { LayerCard } from "@signalflare-ai/ui";`
|
|
1797
|
+
|
|
1798
|
+
**Category:** Display
|
|
1799
|
+
|
|
1800
|
+
**Props:**
|
|
1801
|
+
|
|
1802
|
+
- `children`: ReactNode
|
|
1803
|
+
- `className`: string
|
|
1804
|
+
Additional CSS classes merged via `cn()`.
|
|
1805
|
+
|
|
1806
|
+
**Colors (sf tokens used):**
|
|
1807
|
+
|
|
1808
|
+
`bg-sf-base`, `bg-sf-elevated`, `ring-sf-fill`, `ring-sf-line`, `text-sf-strong`
|
|
1809
|
+
|
|
1810
|
+
**Styling:**
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
**Sub-Components:**
|
|
1814
|
+
|
|
1815
|
+
This is a compound component. Use these sub-components:
|
|
1816
|
+
|
|
1817
|
+
#### LayerCard.Primary
|
|
1818
|
+
|
|
1819
|
+
Primary sub-component
|
|
1820
|
+
|
|
1821
|
+
#### LayerCard.Secondary
|
|
1822
|
+
|
|
1823
|
+
Secondary sub-component
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
---
|
|
1827
|
+
|
|
1828
|
+
### Link
|
|
1829
|
+
|
|
1830
|
+
Link component
|
|
1831
|
+
|
|
1832
|
+
**Type:** component
|
|
1833
|
+
|
|
1834
|
+
**Import:** `import { Link } from "@signalflare-ai/ui";`
|
|
1835
|
+
|
|
1836
|
+
**Category:** Other
|
|
1837
|
+
|
|
1838
|
+
**Props:**
|
|
1839
|
+
|
|
1840
|
+
- `variant`: enum [default: inline]
|
|
1841
|
+
- `"inline"`: Inline text link that flows with content
|
|
1842
|
+
- `"current"`: Link that inherits color from parent text
|
|
1843
|
+
- `"plain"`: Link without underline decoration
|
|
1844
|
+
|
|
1845
|
+
**State Classes:**
|
|
1846
|
+
- `"plain"`:
|
|
1847
|
+
- `hover`: `hover:text-primary/70`
|
|
1848
|
+
- `to`: string
|
|
1849
|
+
- `children`: ReactNode
|
|
1850
|
+
- `className`: string
|
|
1851
|
+
- `id`: string
|
|
1852
|
+
- `lang`: string
|
|
1853
|
+
- `title`: string
|
|
1854
|
+
- `download`: unknown
|
|
1855
|
+
- `href`: string
|
|
1856
|
+
- `hrefLang`: string
|
|
1857
|
+
- `media`: string
|
|
1858
|
+
- `ping`: string
|
|
1859
|
+
- `target`: React.HTMLAttributeAnchorTarget
|
|
1860
|
+
- `type`: string
|
|
1861
|
+
- `referrerPolicy`: enum
|
|
1862
|
+
- `render`: ReactNode
|
|
1863
|
+
Allows you to replace the component’s HTML element with a different tag, or compose it with another component.
|
|
1864
|
+
|
|
1865
|
+
Accepts a `ReactElement` or a function that returns the element to render.
|
|
1866
|
+
|
|
1867
|
+
**Sub-Components:**
|
|
1868
|
+
|
|
1869
|
+
This is a compound component. Use these sub-components:
|
|
1870
|
+
|
|
1871
|
+
#### Link.ExternalIcon
|
|
1872
|
+
|
|
1873
|
+
ExternalIcon sub-component
|
|
1874
|
+
|
|
1875
|
+
|
|
1876
|
+
---
|
|
1877
|
+
|
|
1878
|
+
### Loader
|
|
1879
|
+
|
|
1880
|
+
Animated circular spinner for indicating loading states. Uses CSS keyframe animations for broad compatibility.
|
|
1881
|
+
|
|
1882
|
+
**Type:** component
|
|
1883
|
+
|
|
1884
|
+
**Import:** `import { Loader } from "@signalflare-ai/ui";`
|
|
1885
|
+
|
|
1886
|
+
**Category:** Feedback
|
|
1887
|
+
|
|
1888
|
+
**Props:**
|
|
1889
|
+
|
|
1890
|
+
- `className`: string
|
|
1891
|
+
Additional CSS classes merged via `cn()`.
|
|
1892
|
+
- `size`: enum [default: base]
|
|
1893
|
+
- `"sm"`: Small loader for inline use
|
|
1894
|
+
- `"base"`: Default loader size
|
|
1895
|
+
- `"lg"`: Large loader for prominent loading states
|
|
1896
|
+
|
|
1897
|
+
---
|
|
1898
|
+
|
|
1899
|
+
### MenuBar
|
|
1900
|
+
|
|
1901
|
+
MenuBar — horizontal icon-button toolbar with keyboard arrow-key navigation. Each option renders as a `<button>` with a Tooltip. The active option is visually highlighted with an elevated background.
|
|
1902
|
+
|
|
1903
|
+
**Type:** component
|
|
1904
|
+
|
|
1905
|
+
**Import:** `import { MenuBar } from "@signalflare-ai/ui";`
|
|
1906
|
+
|
|
1907
|
+
**Category:** Navigation
|
|
1908
|
+
|
|
1909
|
+
**Props:**
|
|
1910
|
+
|
|
1911
|
+
- `className`: string
|
|
1912
|
+
Additional CSS classes merged via `cn()`.
|
|
1913
|
+
- `isActive`: number | boolean | string
|
|
1914
|
+
The currently active option value — matched against option index or `id`.
|
|
1915
|
+
- `options`: MenuOptionProps[] (required)
|
|
1916
|
+
Array of menu option configurations.
|
|
1917
|
+
- `optionIds`: boolean
|
|
1918
|
+
When true, each option's `id` field is used for matching instead of its array index.
|
|
1919
|
+
|
|
1920
|
+
**Colors (sf tokens used):**
|
|
1921
|
+
|
|
1922
|
+
`bg-sf-base`, `bg-sf-fill`, `border-sf-fill`
|
|
1923
|
+
|
|
1924
|
+
**Styling:**
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
---
|
|
1928
|
+
|
|
1929
|
+
### Meter
|
|
1930
|
+
|
|
1931
|
+
Progress bar showing a measured value within a known range (e.g. quota usage).
|
|
1932
|
+
|
|
1933
|
+
**Type:** component
|
|
1934
|
+
|
|
1935
|
+
**Import:** `import { Meter } from "@signalflare-ai/ui";`
|
|
1936
|
+
|
|
1937
|
+
**Category:** Display
|
|
1938
|
+
|
|
1939
|
+
**Props:**
|
|
1940
|
+
|
|
1941
|
+
- `customValue`: string
|
|
1942
|
+
Custom formatted value text (e.g. "750 / 1,000") displayed instead of percentage.
|
|
1943
|
+
- `label`: string (required)
|
|
1944
|
+
Label text displayed above the meter track.
|
|
1945
|
+
- `showValue`: boolean
|
|
1946
|
+
Whether to display the percentage value next to the label.
|
|
1947
|
+
- `trackClassName`: string
|
|
1948
|
+
Additional CSS classes for the track (background bar).
|
|
1949
|
+
- `indicatorClassName`: string
|
|
1950
|
+
Additional CSS classes for the indicator (filled bar).
|
|
1951
|
+
- `value`: number
|
|
1952
|
+
Current value of the meter
|
|
1953
|
+
- `max`: number
|
|
1954
|
+
Maximum value of the meter (default: 100)
|
|
1955
|
+
- `min`: number
|
|
1956
|
+
Minimum value of the meter (default: 0)
|
|
1957
|
+
|
|
1958
|
+
**Colors (sf tokens used):**
|
|
1959
|
+
|
|
1960
|
+
`bg-sf-fill`, `text-sf-default`, `text-sf-strong`
|
|
1961
|
+
|
|
1962
|
+
---
|
|
1963
|
+
|
|
1964
|
+
### Pagination
|
|
1965
|
+
|
|
1966
|
+
Page navigation controls with page count display.
|
|
1967
|
+
|
|
1968
|
+
**Type:** component
|
|
1969
|
+
|
|
1970
|
+
**Import:** `import { Pagination } from "@signalflare-ai/ui";`
|
|
1971
|
+
|
|
1972
|
+
**Category:** Navigation
|
|
1973
|
+
|
|
1974
|
+
**Props:**
|
|
1975
|
+
|
|
1976
|
+
- `controls`: enum [default: full]
|
|
1977
|
+
- `"full"`: Full pagination controls with first, previous, page input, next, and last buttons
|
|
1978
|
+
- `"simple"`: Simple pagination controls with only previous and next buttons
|
|
1979
|
+
- `setPage`: (page: number) => void (required)
|
|
1980
|
+
Callback when page changes
|
|
1981
|
+
- `page`: number
|
|
1982
|
+
Current page number (1-indexed).
|
|
1983
|
+
- `perPage`: number
|
|
1984
|
+
Number of items displayed per page.
|
|
1985
|
+
- `totalCount`: number
|
|
1986
|
+
Total number of items across all pages.
|
|
1987
|
+
- `text`: object
|
|
1988
|
+
Method to provide custom pagination text
|
|
1989
|
+
|
|
1990
|
+
**Colors (sf tokens used):**
|
|
1991
|
+
|
|
1992
|
+
`text-sf-strong`
|
|
1993
|
+
|
|
1994
|
+
**Styling:**
|
|
1995
|
+
|
|
1996
|
+
|
|
1997
|
+
---
|
|
1998
|
+
|
|
1999
|
+
### Popover
|
|
2000
|
+
|
|
2001
|
+
Popover component for displaying accessible popup content anchored to a trigger.
|
|
2002
|
+
|
|
2003
|
+
**Type:** component
|
|
2004
|
+
|
|
2005
|
+
**Import:** `import { Popover } from "@signalflare-ai/ui";`
|
|
2006
|
+
|
|
2007
|
+
**Category:** Overlay
|
|
2008
|
+
|
|
2009
|
+
**Props:**
|
|
2010
|
+
|
|
2011
|
+
- `side`: enum [default: bottom]
|
|
2012
|
+
- `"top"`: Popover appears above the trigger
|
|
2013
|
+
- `"bottom"`: Popover appears below the trigger
|
|
2014
|
+
- `"left"`: Popover appears to the left of the trigger
|
|
2015
|
+
- `"right"`: Popover appears to the right of the trigger
|
|
2016
|
+
|
|
2017
|
+
**Colors (sf tokens used):**
|
|
2018
|
+
|
|
2019
|
+
`bg-sf-elevated`, `fill-sf-elevated`, `fill-sf-tip-shadow`, `fill-sf-tip-stroke`, `outline-sf-fill`, `text-sf-default`, `text-sf-subtle`
|
|
2020
|
+
|
|
2021
|
+
**Sub-Components:**
|
|
2022
|
+
|
|
2023
|
+
This is a compound component. Use these sub-components:
|
|
2024
|
+
|
|
2025
|
+
#### Popover.Trigger
|
|
2026
|
+
|
|
2027
|
+
Trigger sub-component
|
|
2028
|
+
|
|
2029
|
+
#### Popover.Content
|
|
2030
|
+
|
|
2031
|
+
Content sub-component
|
|
2032
|
+
|
|
2033
|
+
#### Popover.Title
|
|
2034
|
+
|
|
2035
|
+
Title sub-component
|
|
2036
|
+
|
|
2037
|
+
#### Popover.Description
|
|
2038
|
+
|
|
2039
|
+
Description sub-component
|
|
2040
|
+
|
|
2041
|
+
#### Popover.Close
|
|
2042
|
+
|
|
2043
|
+
Close sub-component
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
---
|
|
2047
|
+
|
|
2048
|
+
### PromptInput
|
|
2049
|
+
|
|
2050
|
+
Prompt input form. Can be self-managed or controlled via `PromptInputProvider`.
|
|
2051
|
+
|
|
2052
|
+
**Type:** component
|
|
2053
|
+
|
|
2054
|
+
**Import:** `import { PromptInput } from "@signalflare-ai/ui";`
|
|
2055
|
+
|
|
2056
|
+
**Category:** Other
|
|
2057
|
+
|
|
2058
|
+
**Props:**
|
|
2059
|
+
|
|
2060
|
+
- `globalDrop`: boolean
|
|
2061
|
+
When true, accept drops anywhere on document. Default false.
|
|
2062
|
+
- `maxFiles`: number
|
|
2063
|
+
Maximum number of attached files.
|
|
2064
|
+
- `maxFileSize`: number
|
|
2065
|
+
Maximum file size in bytes.
|
|
2066
|
+
- `backLayer`: ReactNode
|
|
2067
|
+
Content rendered in the collapsible back layer (e.g. HITL approvals, task lists). When provided the prompt input is wrapped in a LayerCard shell with a header row containing a chevron toggle. Use `PromptInputBackLayer` to compose structured content for this slot.
|
|
2068
|
+
- `backLayerTitle`: string
|
|
2069
|
+
Title shown in the back layer header row. Defaults to `"Context"`.
|
|
2070
|
+
- `backLayerOpen`: boolean
|
|
2071
|
+
Controls whether the back layer is visible. Pair with `onBackLayerOpenChange` for a controlled pattern.
|
|
2072
|
+
- `autoOpenBackLayerWhen`: boolean
|
|
2073
|
+
Automatically opens the back layer when this condition is true. Useful for showing pending approvals/questions without manual toggle.
|
|
2074
|
+
- `className`: string
|
|
2075
|
+
- `id`: string
|
|
2076
|
+
- `lang`: string
|
|
2077
|
+
- `title`: string
|
|
2078
|
+
- `children`: ReactNode
|
|
2079
|
+
|
|
2080
|
+
**Colors (sf tokens used):**
|
|
2081
|
+
|
|
2082
|
+
`bg-sf-base`, `bg-sf-elevated`, `bg-sf-overlay`, `bg-sf-tint`, `ring-sf-line`, `ring-sf-ring`, `text-sf-brand`, `text-sf-default`, `text-sf-inactive`, `text-sf-subtle`
|
|
2083
|
+
|
|
2084
|
+
---
|
|
2085
|
+
|
|
2086
|
+
### Radio
|
|
2087
|
+
|
|
2088
|
+
Radio — radio button group for single-select choices. Compound component: `Radio.Group` (with built-in Fieldset) and `Radio.Item`. Built on `@base-ui/react/radio-group` + `@base-ui/react/radio`.
|
|
2089
|
+
|
|
2090
|
+
**Type:** component
|
|
2091
|
+
|
|
2092
|
+
**Import:** `import { Radio } from "@signalflare-ai/ui";`
|
|
2093
|
+
|
|
2094
|
+
**Category:** Input
|
|
2095
|
+
|
|
2096
|
+
**Props:**
|
|
2097
|
+
|
|
2098
|
+
- `legend`: string (required)
|
|
2099
|
+
Legend text for the group (required for accessibility)
|
|
2100
|
+
- `children`: ReactNode
|
|
2101
|
+
Child Radio.Item components
|
|
2102
|
+
- `orientation`: enum
|
|
2103
|
+
Layout direction of the radio items
|
|
2104
|
+
- `error`: string
|
|
2105
|
+
Error message for the group
|
|
2106
|
+
- `description`: ReactNode
|
|
2107
|
+
Helper text for the group
|
|
2108
|
+
- `value`: string
|
|
2109
|
+
Value of the radio that should be selected (controlled)
|
|
2110
|
+
- `disabled`: boolean
|
|
2111
|
+
Whether all radios in the group are disabled
|
|
2112
|
+
- `controlPosition`: enum
|
|
2113
|
+
Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
|
|
2114
|
+
- `name`: string
|
|
2115
|
+
Form submission name for the radio group
|
|
2116
|
+
- `className`: string
|
|
2117
|
+
Additional CSS classes
|
|
2118
|
+
|
|
2119
|
+
**Colors (sf tokens used):**
|
|
2120
|
+
|
|
2121
|
+
`bg-sf-base`, `bg-sf-contrast`, `border-sf-line`, `ring-sf-danger`, `ring-sf-line`, `ring-sf-ring`, `text-sf-danger`, `text-sf-default`, `text-sf-subtle`
|
|
2122
|
+
|
|
2123
|
+
---
|
|
2124
|
+
|
|
2125
|
+
### Select
|
|
2126
|
+
|
|
2127
|
+
Select component
|
|
2128
|
+
|
|
2129
|
+
**Type:** component
|
|
2130
|
+
|
|
2131
|
+
**Import:** `import { Select } from "@signalflare-ai/ui";`
|
|
2132
|
+
|
|
2133
|
+
**Category:** Input
|
|
2134
|
+
|
|
2135
|
+
**Props:**
|
|
2136
|
+
|
|
2137
|
+
- `className`: string
|
|
2138
|
+
Additional CSS classes merged via `cn()`.
|
|
2139
|
+
- `label`: ReactNode
|
|
2140
|
+
Label content for the select (enables Field wrapper) — can be a string or any React node.
|
|
2141
|
+
- `hideLabel`: boolean
|
|
2142
|
+
Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper.
|
|
2143
|
+
- `placeholder`: string
|
|
2144
|
+
Placeholder text shown when no value is selected.
|
|
2145
|
+
- `loading`: boolean
|
|
2146
|
+
When `true`, shows a skeleton loader in place of the selected value.
|
|
2147
|
+
- `disabled`: boolean
|
|
2148
|
+
Whether the select is disabled.
|
|
2149
|
+
- `required`: boolean
|
|
2150
|
+
Whether the select is required. When `false`, shows "(optional)" text.
|
|
2151
|
+
- `labelTooltip`: ReactNode
|
|
2152
|
+
Tooltip content displayed next to the label via an info icon.
|
|
2153
|
+
- `value`: string
|
|
2154
|
+
Currently selected value (controlled mode).
|
|
2155
|
+
- `children`: ReactNode
|
|
2156
|
+
`Select.Option` elements to render in the dropdown.
|
|
2157
|
+
- `description`: ReactNode
|
|
2158
|
+
Helper text displayed below the select.
|
|
2159
|
+
- `error`: string | object
|
|
2160
|
+
Error message string or validation error object with `match` key.
|
|
2161
|
+
- `onValueChange`: (value: string) => void
|
|
2162
|
+
Callback when selection changes
|
|
2163
|
+
- `defaultValue`: string
|
|
2164
|
+
Initial value for uncontrolled mode
|
|
2165
|
+
|
|
2166
|
+
**Colors (sf tokens used):**
|
|
2167
|
+
|
|
2168
|
+
`bg-sf-control`, `bg-sf-overlay`, `ring-sf-line`, `ring-sf-ring`, `text-sf-default`
|
|
2169
|
+
|
|
2170
|
+
**Styling:**
|
|
2171
|
+
|
|
2172
|
+
|
|
2173
|
+
**Sub-Components:**
|
|
2174
|
+
|
|
2175
|
+
This is a compound component. Use these sub-components:
|
|
2176
|
+
|
|
2177
|
+
#### Select.Option
|
|
2178
|
+
|
|
2179
|
+
Option sub-component
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
---
|
|
2183
|
+
|
|
2184
|
+
### SensitiveInput
|
|
2185
|
+
|
|
2186
|
+
Password/secret input that masks its value by default and reveals on click. Includes a built-in copy-to-clipboard button on hover.
|
|
2187
|
+
|
|
2188
|
+
**Type:** component
|
|
2189
|
+
|
|
2190
|
+
**Import:** `import { SensitiveInput } from "@signalflare-ai/ui";`
|
|
2191
|
+
|
|
2192
|
+
**Category:** Other
|
|
2193
|
+
|
|
2194
|
+
**Props:**
|
|
2195
|
+
|
|
2196
|
+
- `alt`: string
|
|
2197
|
+
- `autoComplete`: React.HTMLInputAutoCompleteAttribute
|
|
2198
|
+
- `checked`: boolean
|
|
2199
|
+
- `disabled`: boolean
|
|
2200
|
+
- `height`: number | string
|
|
2201
|
+
- `list`: string
|
|
2202
|
+
- `name`: string
|
|
2203
|
+
- `placeholder`: string
|
|
2204
|
+
- `readOnly`: boolean
|
|
2205
|
+
- `required`: boolean
|
|
2206
|
+
- `width`: number | string
|
|
2207
|
+
- `className`: string
|
|
2208
|
+
- `id`: string
|
|
2209
|
+
- `lang`: string
|
|
2210
|
+
- `title`: string
|
|
2211
|
+
- `children`: ReactNode
|
|
2212
|
+
- `value`: string
|
|
2213
|
+
Controlled value
|
|
2214
|
+
- `size`: enum [default: base]
|
|
2215
|
+
Size of the input.
|
|
2216
|
+
- `"xs"` — Extra small for compact UIs
|
|
2217
|
+
- `"sm"` — Small for secondary fields
|
|
2218
|
+
- `"base"` — Default input size
|
|
2219
|
+
- `"lg"` — Large for prominent fields
|
|
2220
|
+
- `variant`: enum [default: default]
|
|
2221
|
+
Style variant of the input.
|
|
2222
|
+
- `"default"` — Default input appearance
|
|
2223
|
+
- `"error"` — Error state for validation failures
|
|
2224
|
+
- `label`: ReactNode
|
|
2225
|
+
Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node
|
|
2226
|
+
- `labelTooltip`: ReactNode
|
|
2227
|
+
Tooltip content to display next to the label via an info icon
|
|
2228
|
+
- `description`: ReactNode
|
|
2229
|
+
Helper text displayed below the input
|
|
2230
|
+
- `error`: string | object
|
|
2231
|
+
Error message or validation error object
|
|
2232
|
+
|
|
2233
|
+
**Colors (sf tokens used):**
|
|
2234
|
+
|
|
2235
|
+
`bg-sf-brand`, `bg-sf-control`, `outline-sf-ring`, `text-sf-default`, `text-sf-subtle`
|
|
2236
|
+
|
|
2237
|
+
---
|
|
2238
|
+
|
|
2239
|
+
### Sidebar
|
|
2240
|
+
|
|
2241
|
+
Sidebar — responsive navigation panel with expand/collapse support. Compound component: `Sidebar` (root `<aside>`), `.Provider`, `.Header`, `.Content`, `.Footer`, `.Group`, `.GroupLabel`, `.GroupContent`, `.Menu`, `.MenuItem`, `.MenuButton`, `.MenuAction`, `.MenuBadge`, `.MenuSub`, `.MenuSubItem`, `.MenuSubButton`, `.Separator`, `.Input`, `.Trigger`, `.Rail`, `.MenuChevron`, `.Collapsible`, `.CollapsibleTrigger`, `.CollapsibleContent`. Built on `@base-ui/react/collapsible` + `@base-ui/react/dialog`.
|
|
2242
|
+
|
|
2243
|
+
**Type:** component
|
|
2244
|
+
|
|
2245
|
+
**Import:** `import { Sidebar } from "@signalflare-ai/ui";`
|
|
2246
|
+
|
|
2247
|
+
**Category:** Other
|
|
2248
|
+
|
|
2249
|
+
**Props:**
|
|
2250
|
+
|
|
2251
|
+
- `defaultOpen`: boolean
|
|
2252
|
+
Initial open state when uncontrolled.
|
|
2253
|
+
- `open`: boolean
|
|
2254
|
+
Controlled open state.
|
|
2255
|
+
- `variant`: enum [default: sidebar]
|
|
2256
|
+
- `"sidebar"`: Standard sidebar with border separator
|
|
2257
|
+
- `"floating"`: Floating sidebar with shadow and rounded corners
|
|
2258
|
+
- `"inset"`: Inset sidebar within the content area
|
|
2259
|
+
- `side`: enum [default: left]
|
|
2260
|
+
- `"left"`: Left-aligned sidebar
|
|
2261
|
+
- `"right"`: Right-aligned sidebar
|
|
2262
|
+
- `collapsible`: enum [default: icon]
|
|
2263
|
+
- `"icon"`: Collapses to show icons only
|
|
2264
|
+
- `"offcanvas"`: Slides off screen when collapsed
|
|
2265
|
+
- `"none"`: Cannot be collapsed
|
|
2266
|
+
- `resizable`: boolean
|
|
2267
|
+
Enable drag-to-resize on the sidebar edge.
|
|
2268
|
+
- `defaultWidth`: number
|
|
2269
|
+
Initial width in pixels when resizable.
|
|
2270
|
+
- `minWidth`: number
|
|
2271
|
+
Minimum width in pixels when resizing.
|
|
2272
|
+
- `maxWidth`: number
|
|
2273
|
+
Maximum width in pixels when resizing.
|
|
2274
|
+
- `children`: ReactNode
|
|
2275
|
+
Content — typically `<Sidebar>` + main content.
|
|
2276
|
+
- `className`: string
|
|
2277
|
+
Additional CSS classes for the wrapper div.
|
|
2278
|
+
|
|
2279
|
+
**Colors (sf tokens used):**
|
|
2280
|
+
|
|
2281
|
+
`bg-sf-base`, `bg-sf-brand`, `bg-sf-line`, `bg-sf-overlay`, `bg-sf-recessed`, `bg-sf-tint`, `border-sf-line`, `ring-sf-line`, `ring-sf-ring`, `text-sf-default`, `text-sf-strong`, `text-sf-subtle`
|
|
2282
|
+
|
|
2283
|
+
**Styling:**
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
**Sub-Components:**
|
|
2287
|
+
|
|
2288
|
+
This is a compound component. Use these sub-components:
|
|
2289
|
+
|
|
2290
|
+
#### Sidebar.Provider
|
|
2291
|
+
|
|
2292
|
+
Provider sub-component
|
|
2293
|
+
|
|
2294
|
+
Props:
|
|
2295
|
+
- `defaultOpen`: boolean
|
|
2296
|
+
- `open`: boolean
|
|
2297
|
+
- `variant`: SidebarVariant
|
|
2298
|
+
- `side`: SidebarSide
|
|
2299
|
+
- `collapsible`: "icon" | "offcanvas" | "none"
|
|
2300
|
+
- `resizable`: boolean
|
|
2301
|
+
- `defaultWidth`: number
|
|
2302
|
+
- `minWidth`: number
|
|
2303
|
+
- `maxWidth`: number
|
|
2304
|
+
- `children`: ReactNode (required)
|
|
2305
|
+
- `className`: string
|
|
2306
|
+
|
|
2307
|
+
#### Sidebar.Header
|
|
2308
|
+
|
|
2309
|
+
Header sub-component
|
|
2310
|
+
|
|
2311
|
+
#### Sidebar.Content
|
|
2312
|
+
|
|
2313
|
+
Content sub-component
|
|
2314
|
+
|
|
2315
|
+
#### Sidebar.Footer
|
|
2316
|
+
|
|
2317
|
+
Footer sub-component
|
|
2318
|
+
|
|
2319
|
+
#### Sidebar.Group
|
|
2320
|
+
|
|
2321
|
+
Group sub-component
|
|
2322
|
+
|
|
2323
|
+
#### Sidebar.GroupLabel
|
|
2324
|
+
|
|
2325
|
+
GroupLabel sub-component
|
|
2326
|
+
|
|
2327
|
+
#### Sidebar.GroupContent
|
|
2328
|
+
|
|
2329
|
+
GroupContent sub-component
|
|
2330
|
+
|
|
2331
|
+
#### Sidebar.Menu
|
|
2332
|
+
|
|
2333
|
+
Menu sub-component
|
|
2334
|
+
|
|
2335
|
+
#### Sidebar.MenuItem
|
|
2336
|
+
|
|
2337
|
+
MenuItem sub-component
|
|
2338
|
+
|
|
2339
|
+
#### Sidebar.MenuButton
|
|
2340
|
+
|
|
2341
|
+
MenuButton sub-component
|
|
2342
|
+
|
|
2343
|
+
#### Sidebar.MenuAction
|
|
2344
|
+
|
|
2345
|
+
MenuAction sub-component
|
|
2346
|
+
|
|
2347
|
+
#### Sidebar.MenuBadge
|
|
2348
|
+
|
|
2349
|
+
MenuBadge sub-component
|
|
2350
|
+
|
|
2351
|
+
#### Sidebar.MenuSub
|
|
2352
|
+
|
|
2353
|
+
MenuSub sub-component
|
|
2354
|
+
|
|
2355
|
+
#### Sidebar.MenuSubItem
|
|
2356
|
+
|
|
2357
|
+
MenuSubItem sub-component
|
|
2358
|
+
|
|
2359
|
+
#### Sidebar.MenuSubButton
|
|
2360
|
+
|
|
2361
|
+
MenuSubButton sub-component
|
|
2362
|
+
|
|
2363
|
+
#### Sidebar.Separator
|
|
2364
|
+
|
|
2365
|
+
Separator sub-component
|
|
2366
|
+
|
|
2367
|
+
#### Sidebar.Input
|
|
2368
|
+
|
|
2369
|
+
Input sub-component
|
|
2370
|
+
|
|
2371
|
+
#### Sidebar.Trigger
|
|
2372
|
+
|
|
2373
|
+
Trigger sub-component
|
|
2374
|
+
|
|
2375
|
+
#### Sidebar.Rail
|
|
2376
|
+
|
|
2377
|
+
Rail sub-component
|
|
2378
|
+
|
|
2379
|
+
#### Sidebar.ResizeHandle
|
|
2380
|
+
|
|
2381
|
+
ResizeHandle sub-component
|
|
2382
|
+
|
|
2383
|
+
#### Sidebar.MenuChevron
|
|
2384
|
+
|
|
2385
|
+
MenuChevron sub-component
|
|
2386
|
+
|
|
2387
|
+
#### Sidebar.Collapsible
|
|
2388
|
+
|
|
2389
|
+
Collapsible sub-component
|
|
2390
|
+
|
|
2391
|
+
#### Sidebar.CollapsibleTrigger
|
|
2392
|
+
|
|
2393
|
+
CollapsibleTrigger sub-component
|
|
2394
|
+
|
|
2395
|
+
#### Sidebar.CollapsibleContent
|
|
2396
|
+
|
|
2397
|
+
CollapsibleContent sub-component
|
|
2398
|
+
|
|
2399
|
+
|
|
2400
|
+
---
|
|
2401
|
+
|
|
2402
|
+
### SignalFlareAILogo
|
|
2403
|
+
|
|
2404
|
+
SignalFlare AI logo component.
|
|
2405
|
+
|
|
2406
|
+
**Type:** component
|
|
2407
|
+
|
|
2408
|
+
**Import:** `import { SignalFlareAILogo } from "@signalflare-ai/ui";`
|
|
2409
|
+
|
|
2410
|
+
**Category:** Other
|
|
2411
|
+
|
|
2412
|
+
**Props:**
|
|
2413
|
+
|
|
2414
|
+
- `children`: ReactNode
|
|
2415
|
+
- `className`: string
|
|
2416
|
+
- `height`: number | string
|
|
2417
|
+
- `id`: string
|
|
2418
|
+
- `lang`: string
|
|
2419
|
+
- `media`: string
|
|
2420
|
+
- `method`: string
|
|
2421
|
+
- `name`: string
|
|
2422
|
+
- `target`: string
|
|
2423
|
+
- `type`: string
|
|
2424
|
+
- `width`: number | string
|
|
2425
|
+
- `accentHeight`: number | string
|
|
2426
|
+
- `accumulate`: enum
|
|
2427
|
+
- `additive`: enum
|
|
2428
|
+
- `alignmentBaseline`: enum
|
|
2429
|
+
- `allowReorder`: enum
|
|
2430
|
+
- `alphabetic`: number | string
|
|
2431
|
+
- `amplitude`: number | string
|
|
2432
|
+
- `arabicForm`: enum
|
|
2433
|
+
- `ascent`: number | string
|
|
2434
|
+
- `attributeName`: string
|
|
2435
|
+
- `attributeType`: string
|
|
2436
|
+
- `autoReverse`: Booleanish
|
|
2437
|
+
- `azimuth`: number | string
|
|
2438
|
+
- `baseFrequency`: number | string
|
|
2439
|
+
- `baselineShift`: number | string
|
|
2440
|
+
- `baseProfile`: number | string
|
|
2441
|
+
- `bbox`: number | string
|
|
2442
|
+
- `begin`: number | string
|
|
2443
|
+
- `bias`: number | string
|
|
2444
|
+
- `by`: number | string
|
|
2445
|
+
- `calcMode`: number | string
|
|
2446
|
+
- `capHeight`: number | string
|
|
2447
|
+
- `clip`: number | string
|
|
2448
|
+
- `clipPath`: string
|
|
2449
|
+
- `clipPathUnits`: number | string
|
|
2450
|
+
- `clipRule`: number | string
|
|
2451
|
+
- `colorInterpolation`: number | string
|
|
2452
|
+
- `colorInterpolationFilters`: enum
|
|
2453
|
+
- `colorProfile`: number | string
|
|
2454
|
+
- `colorRendering`: number | string
|
|
2455
|
+
- `contentScriptType`: number | string
|
|
2456
|
+
- `contentStyleType`: number | string
|
|
2457
|
+
- `cursor`: number | string
|
|
2458
|
+
- `cx`: number | string
|
|
2459
|
+
- `cy`: number | string
|
|
2460
|
+
- `d`: string
|
|
2461
|
+
- `decelerate`: number | string
|
|
2462
|
+
- `descent`: number | string
|
|
2463
|
+
- `diffuseConstant`: number | string
|
|
2464
|
+
- `direction`: number | string
|
|
2465
|
+
- `display`: number | string
|
|
2466
|
+
- `divisor`: number | string
|
|
2467
|
+
- `dominantBaseline`: enum
|
|
2468
|
+
- `dur`: number | string
|
|
2469
|
+
- `dx`: number | string
|
|
2470
|
+
- `dy`: number | string
|
|
2471
|
+
- `edgeMode`: number | string
|
|
2472
|
+
- `elevation`: number | string
|
|
2473
|
+
- `enableBackground`: number | string
|
|
2474
|
+
- `end`: number | string
|
|
2475
|
+
- `exponent`: number | string
|
|
2476
|
+
- `externalResourcesRequired`: Booleanish
|
|
2477
|
+
- `fill`: string
|
|
2478
|
+
- `fillOpacity`: number | string
|
|
2479
|
+
- `fillRule`: enum
|
|
2480
|
+
- `filter`: string
|
|
2481
|
+
- `filterRes`: number | string
|
|
2482
|
+
- `filterUnits`: number | string
|
|
2483
|
+
- `floodColor`: number | string
|
|
2484
|
+
- `floodOpacity`: number | string
|
|
2485
|
+
- `focusable`: Booleanish | string
|
|
2486
|
+
- `fontFamily`: string
|
|
2487
|
+
- `fontSize`: number | string
|
|
2488
|
+
- `fontSizeAdjust`: number | string
|
|
2489
|
+
- `fontStretch`: number | string
|
|
2490
|
+
- `fontStyle`: number | string
|
|
2491
|
+
- `fontVariant`: number | string
|
|
2492
|
+
- `fontWeight`: number | string
|
|
2493
|
+
- `format`: number | string
|
|
2494
|
+
- `fr`: number | string
|
|
2495
|
+
- `from`: number | string
|
|
2496
|
+
- `fx`: number | string
|
|
2497
|
+
- `fy`: number | string
|
|
2498
|
+
- `g1`: number | string
|
|
2499
|
+
- `g2`: number | string
|
|
2500
|
+
- `glyphName`: number | string
|
|
2501
|
+
- `glyphOrientationHorizontal`: number | string
|
|
2502
|
+
- `glyphOrientationVertical`: number | string
|
|
2503
|
+
- `glyphRef`: number | string
|
|
2504
|
+
- `gradientTransform`: string
|
|
2505
|
+
- `gradientUnits`: string
|
|
2506
|
+
- `hanging`: number | string
|
|
2507
|
+
- `horizAdvX`: number | string
|
|
2508
|
+
- `horizOriginX`: number | string
|
|
2509
|
+
- `href`: string
|
|
2510
|
+
- `ideographic`: number | string
|
|
2511
|
+
- `imageRendering`: number | string
|
|
2512
|
+
- `in2`: number | string
|
|
2513
|
+
- `in`: string
|
|
2514
|
+
- `intercept`: number | string
|
|
2515
|
+
- `k1`: number | string
|
|
2516
|
+
- `k2`: number | string
|
|
2517
|
+
- `k3`: number | string
|
|
2518
|
+
- `k4`: number | string
|
|
2519
|
+
- `k`: number | string
|
|
2520
|
+
- `kernelMatrix`: number | string
|
|
2521
|
+
- `kernelUnitLength`: number | string
|
|
2522
|
+
- `kerning`: number | string
|
|
2523
|
+
- `keyPoints`: number | string
|
|
2524
|
+
- `keySplines`: number | string
|
|
2525
|
+
- `keyTimes`: number | string
|
|
2526
|
+
- `lengthAdjust`: number | string
|
|
2527
|
+
- `letterSpacing`: number | string
|
|
2528
|
+
- `lightingColor`: number | string
|
|
2529
|
+
- `limitingConeAngle`: number | string
|
|
2530
|
+
- `local`: number | string
|
|
2531
|
+
- `markerEnd`: string
|
|
2532
|
+
- `markerHeight`: number | string
|
|
2533
|
+
- `markerMid`: string
|
|
2534
|
+
- `markerStart`: string
|
|
2535
|
+
- `markerUnits`: number | string
|
|
2536
|
+
- `markerWidth`: number | string
|
|
2537
|
+
- `mask`: string
|
|
2538
|
+
- `maskContentUnits`: number | string
|
|
2539
|
+
- `maskUnits`: number | string
|
|
2540
|
+
- `mathematical`: number | string
|
|
2541
|
+
- `mode`: number | string
|
|
2542
|
+
- `numOctaves`: number | string
|
|
2543
|
+
- `offset`: number | string
|
|
2544
|
+
- `opacity`: number | string
|
|
2545
|
+
- `operator`: number | string
|
|
2546
|
+
- `order`: number | string
|
|
2547
|
+
- `orient`: number | string
|
|
2548
|
+
- `orientation`: number | string
|
|
2549
|
+
- `origin`: number | string
|
|
2550
|
+
- `overflow`: number | string
|
|
2551
|
+
- `overlinePosition`: number | string
|
|
2552
|
+
- `overlineThickness`: number | string
|
|
2553
|
+
- `paintOrder`: number | string
|
|
2554
|
+
- `panose1`: number | string
|
|
2555
|
+
- `path`: string
|
|
2556
|
+
- `pathLength`: number | string
|
|
2557
|
+
- `patternContentUnits`: string
|
|
2558
|
+
- `patternTransform`: number | string
|
|
2559
|
+
- `patternUnits`: string
|
|
2560
|
+
- `pointerEvents`: number | string
|
|
2561
|
+
- `points`: string
|
|
2562
|
+
- `pointsAtX`: number | string
|
|
2563
|
+
- `pointsAtY`: number | string
|
|
2564
|
+
- `pointsAtZ`: number | string
|
|
2565
|
+
- `preserveAlpha`: Booleanish
|
|
2566
|
+
- `preserveAspectRatio`: string
|
|
2567
|
+
- `primitiveUnits`: number | string
|
|
2568
|
+
- `r`: number | string
|
|
2569
|
+
- `radius`: number | string
|
|
2570
|
+
- `refX`: number | string
|
|
2571
|
+
- `refY`: number | string
|
|
2572
|
+
- `renderingIntent`: number | string
|
|
2573
|
+
- `repeatCount`: number | string
|
|
2574
|
+
- `repeatDur`: number | string
|
|
2575
|
+
- `requiredExtensions`: number | string
|
|
2576
|
+
- `requiredFeatures`: number | string
|
|
2577
|
+
- `restart`: number | string
|
|
2578
|
+
- `result`: string
|
|
2579
|
+
- `rotate`: number | string
|
|
2580
|
+
- `rx`: number | string
|
|
2581
|
+
- `ry`: number | string
|
|
2582
|
+
- `scale`: number | string
|
|
2583
|
+
- `seed`: number | string
|
|
2584
|
+
- `shapeRendering`: number | string
|
|
2585
|
+
- `slope`: number | string
|
|
2586
|
+
- `spacing`: number | string
|
|
2587
|
+
- `specularConstant`: number | string
|
|
2588
|
+
- `specularExponent`: number | string
|
|
2589
|
+
- `speed`: number | string
|
|
2590
|
+
- `spreadMethod`: string
|
|
2591
|
+
- `startOffset`: number | string
|
|
2592
|
+
- `stdDeviation`: number | string
|
|
2593
|
+
- `stemh`: number | string
|
|
2594
|
+
- `stemv`: number | string
|
|
2595
|
+
- `stitchTiles`: number | string
|
|
2596
|
+
- `stopColor`: string
|
|
2597
|
+
- `stopOpacity`: number | string
|
|
2598
|
+
- `strikethroughPosition`: number | string
|
|
2599
|
+
- `strikethroughThickness`: number | string
|
|
2600
|
+
- `string`: number | string
|
|
2601
|
+
- `stroke`: string
|
|
2602
|
+
- `strokeDasharray`: string | number
|
|
2603
|
+
- `strokeDashoffset`: string | number
|
|
2604
|
+
- `strokeLinecap`: enum
|
|
2605
|
+
- `strokeLinejoin`: enum
|
|
2606
|
+
- `strokeMiterlimit`: number | string
|
|
2607
|
+
- `strokeOpacity`: number | string
|
|
2608
|
+
- `strokeWidth`: number | string
|
|
2609
|
+
- `surfaceScale`: number | string
|
|
2610
|
+
- `systemLanguage`: number | string
|
|
2611
|
+
- `tableValues`: number | string
|
|
2612
|
+
- `targetX`: number | string
|
|
2613
|
+
- `targetY`: number | string
|
|
2614
|
+
- `textAnchor`: enum
|
|
2615
|
+
- `textDecoration`: number | string
|
|
2616
|
+
- `textLength`: number | string
|
|
2617
|
+
- `textRendering`: number | string
|
|
2618
|
+
- `to`: number | string
|
|
2619
|
+
- `transform`: string
|
|
2620
|
+
- `u1`: number | string
|
|
2621
|
+
- `u2`: number | string
|
|
2622
|
+
- `underlinePosition`: number | string
|
|
2623
|
+
- `underlineThickness`: number | string
|
|
2624
|
+
- `unicode`: number | string
|
|
2625
|
+
- `unicodeBidi`: number | string
|
|
2626
|
+
- `unicodeRange`: number | string
|
|
2627
|
+
- `unitsPerEm`: number | string
|
|
2628
|
+
- `vAlphabetic`: number | string
|
|
2629
|
+
- `values`: string
|
|
2630
|
+
- `vectorEffect`: number | string
|
|
2631
|
+
- `version`: string
|
|
2632
|
+
- `vertAdvY`: number | string
|
|
2633
|
+
- `vertOriginX`: number | string
|
|
2634
|
+
- `vertOriginY`: number | string
|
|
2635
|
+
- `vHanging`: number | string
|
|
2636
|
+
- `vIdeographic`: number | string
|
|
2637
|
+
- `viewBox`: string
|
|
2638
|
+
- `viewTarget`: number | string
|
|
2639
|
+
- `visibility`: number | string
|
|
2640
|
+
- `vMathematical`: number | string
|
|
2641
|
+
- `widths`: number | string
|
|
2642
|
+
- `wordSpacing`: number | string
|
|
2643
|
+
- `writingMode`: number | string
|
|
2644
|
+
- `x1`: number | string
|
|
2645
|
+
- `x2`: number | string
|
|
2646
|
+
- `x`: number | string
|
|
2647
|
+
- `xChannelSelector`: string
|
|
2648
|
+
- `xHeight`: number | string
|
|
2649
|
+
- `xlinkActuate`: string
|
|
2650
|
+
- `xlinkArcrole`: string
|
|
2651
|
+
- `xlinkHref`: string
|
|
2652
|
+
- `xlinkRole`: string
|
|
2653
|
+
- `xlinkShow`: string
|
|
2654
|
+
- `xlinkTitle`: string
|
|
2655
|
+
- `xlinkType`: string
|
|
2656
|
+
- `xmlBase`: string
|
|
2657
|
+
- `xmlLang`: string
|
|
2658
|
+
- `xmlns`: string
|
|
2659
|
+
- `xmlnsXlink`: string
|
|
2660
|
+
- `xmlSpace`: string
|
|
2661
|
+
- `y1`: number | string
|
|
2662
|
+
- `y2`: number | string
|
|
2663
|
+
- `y`: number | string
|
|
2664
|
+
- `yChannelSelector`: string
|
|
2665
|
+
- `z`: number | string
|
|
2666
|
+
- `zoomAndPan`: string
|
|
2667
|
+
- `variant`: enum [default: full]
|
|
2668
|
+
- `"glyph"`: Map pin icon only (logomark)
|
|
2669
|
+
- `"full"`: Full logo with icon, wordmark, and decorative element
|
|
2670
|
+
|
|
2671
|
+
**Colors (sf tokens used):**
|
|
2672
|
+
|
|
2673
|
+
`bg-sf-base`, `ring-sf-line`, `text-sf-default`
|
|
2674
|
+
|
|
2675
|
+
---
|
|
2676
|
+
|
|
2677
|
+
### Surface
|
|
2678
|
+
|
|
2679
|
+
Surface component
|
|
2680
|
+
|
|
2681
|
+
**Type:** component
|
|
2682
|
+
|
|
2683
|
+
**Import:** `import { Surface } from "@signalflare-ai/ui";`
|
|
2684
|
+
|
|
2685
|
+
**Category:** Layout
|
|
2686
|
+
|
|
2687
|
+
**Props:**
|
|
2688
|
+
|
|
2689
|
+
- `as`: React.ElementType
|
|
2690
|
+
The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
|
|
2691
|
+
- `className`: string
|
|
2692
|
+
Additional CSS classes merged via `cn()`.
|
|
2693
|
+
- `children`: ReactNode
|
|
2694
|
+
Content rendered inside the surface.
|
|
2695
|
+
|
|
2696
|
+
**Colors (sf tokens used):**
|
|
2697
|
+
|
|
2698
|
+
`bg-sf-base`, `ring-sf-line`
|
|
2699
|
+
|
|
2700
|
+
---
|
|
2701
|
+
|
|
2702
|
+
### Switch
|
|
2703
|
+
|
|
2704
|
+
Switch component
|
|
2705
|
+
|
|
2706
|
+
**Type:** component
|
|
2707
|
+
|
|
2708
|
+
**Import:** `import { Switch } from "@signalflare-ai/ui";`
|
|
2709
|
+
|
|
2710
|
+
**Category:** Input
|
|
2711
|
+
|
|
2712
|
+
**Props:**
|
|
2713
|
+
|
|
2714
|
+
- `variant`: enum [default: default]
|
|
2715
|
+
- `"default"`: Default switch appearance
|
|
2716
|
+
- `"error"`: Error state for validation failures
|
|
2717
|
+
- `label`: ReactNode
|
|
2718
|
+
Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
|
|
2719
|
+
- `labelTooltip`: ReactNode
|
|
2720
|
+
Tooltip content to display next to the label via an info icon
|
|
2721
|
+
- `required`: boolean
|
|
2722
|
+
Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
|
|
2723
|
+
- `controlFirst`: boolean
|
|
2724
|
+
When true (default), switch appears before label. When false, label appears before switch.
|
|
2725
|
+
- `size`: enum [default: base]
|
|
2726
|
+
- `"sm"`: Small switch for compact UIs
|
|
2727
|
+
- `"base"`: Default switch size
|
|
2728
|
+
- `"lg"`: Large switch for prominent toggles
|
|
2729
|
+
- `checked`: boolean
|
|
2730
|
+
- `disabled`: boolean
|
|
2731
|
+
- `transitioning`: boolean
|
|
2732
|
+
- `name`: string
|
|
2733
|
+
- `type`: enum
|
|
2734
|
+
- `value`: string | string[] | number
|
|
2735
|
+
- `className`: string
|
|
2736
|
+
- `id`: string
|
|
2737
|
+
- `lang`: string
|
|
2738
|
+
- `title`: string
|
|
2739
|
+
- `onClick`: (event: React.MouseEvent) => void (required)
|
|
2740
|
+
Callback when switch is clicked
|
|
2741
|
+
|
|
2742
|
+
**Colors (sf tokens used):**
|
|
2743
|
+
|
|
2744
|
+
`bg-sf-brand`, `bg-sf-brand-hover`, `bg-sf-danger`, `bg-sf-interact`, `bg-sf-recessed`, `border-sf-line`, `ring-sf-danger`, `text-sf-danger`, `text-sf-default`, `text-sf-subtle`
|
|
2745
|
+
|
|
2746
|
+
**Sub-Components:**
|
|
2747
|
+
|
|
2748
|
+
This is a compound component. Use these sub-components:
|
|
2749
|
+
|
|
2750
|
+
#### Switch.Item
|
|
2751
|
+
|
|
2752
|
+
Item sub-component
|
|
2753
|
+
|
|
2754
|
+
#### Switch.Group
|
|
2755
|
+
|
|
2756
|
+
Group sub-component
|
|
2757
|
+
|
|
2758
|
+
Props:
|
|
2759
|
+
- `legend`: string (required)
|
|
2760
|
+
- `children`: ReactNode (required)
|
|
2761
|
+
- `error`: string
|
|
2762
|
+
- `description`: ReactNode
|
|
2763
|
+
- `disabled`: boolean
|
|
2764
|
+
- `controlFirst`: boolean
|
|
2765
|
+
- `className`: string
|
|
2766
|
+
|
|
2767
|
+
|
|
2768
|
+
---
|
|
2769
|
+
|
|
2770
|
+
### Table
|
|
2771
|
+
|
|
2772
|
+
Table — semantic HTML table with styled rows, cells, and selection support. Compound component: `Table` (Root), `.Header`, `.Head`, `.Body`, `.Row`, `.Cell`, `.Footer`, `.CheckCell`, `.CheckHead`, `.ResizeHandle`.
|
|
2773
|
+
|
|
2774
|
+
**Type:** component
|
|
2775
|
+
|
|
2776
|
+
**Import:** `import { Table } from "@signalflare-ai/ui";`
|
|
2777
|
+
|
|
2778
|
+
**Category:** Other
|
|
2779
|
+
|
|
2780
|
+
**Props:**
|
|
2781
|
+
|
|
2782
|
+
- `layout`: enum [default: auto]
|
|
2783
|
+
- `"auto"`: Auto table layout - columns resize based on content
|
|
2784
|
+
- `"fixed"`: Fixed table layout - columns have equal width, controlled via colgroup
|
|
2785
|
+
- `variant`: enum [default: default]
|
|
2786
|
+
- `"default"`: Default row variant
|
|
2787
|
+
- `"selected"`: Selected row variant
|
|
2788
|
+
- `className`: string
|
|
2789
|
+
Additional CSS classes
|
|
2790
|
+
- `children`: ReactNode
|
|
2791
|
+
Child elements
|
|
2792
|
+
|
|
2793
|
+
**Colors (sf tokens used):**
|
|
2794
|
+
|
|
2795
|
+
`bg-sf-base`, `bg-sf-ring`, `bg-sf-tint`, `border-sf-fill`, `text-sf-default`
|
|
2796
|
+
|
|
2797
|
+
**Sub-Components:**
|
|
2798
|
+
|
|
2799
|
+
This is a compound component. Use these sub-components:
|
|
2800
|
+
|
|
2801
|
+
#### Table.Header
|
|
2802
|
+
|
|
2803
|
+
Header sub-component
|
|
2804
|
+
|
|
2805
|
+
#### Table.Head
|
|
2806
|
+
|
|
2807
|
+
Head sub-component
|
|
2808
|
+
|
|
2809
|
+
#### Table.Row
|
|
2810
|
+
|
|
2811
|
+
Row sub-component
|
|
2812
|
+
|
|
2813
|
+
#### Table.Body
|
|
2814
|
+
|
|
2815
|
+
Body sub-component
|
|
2816
|
+
|
|
2817
|
+
#### Table.Cell
|
|
2818
|
+
|
|
2819
|
+
Cell sub-component
|
|
2820
|
+
|
|
2821
|
+
#### Table.CheckCell
|
|
2822
|
+
|
|
2823
|
+
CheckCell sub-component
|
|
2824
|
+
|
|
2825
|
+
#### Table.CheckHead
|
|
2826
|
+
|
|
2827
|
+
CheckHead sub-component
|
|
2828
|
+
|
|
2829
|
+
#### Table.Footer
|
|
2830
|
+
|
|
2831
|
+
Footer sub-component
|
|
2832
|
+
|
|
2833
|
+
#### Table.ResizeHandle
|
|
2834
|
+
|
|
2835
|
+
ResizeHandle sub-component
|
|
2836
|
+
|
|
2837
|
+
|
|
2838
|
+
---
|
|
2839
|
+
|
|
2840
|
+
### Tabs
|
|
2841
|
+
|
|
2842
|
+
Tab navigation component with segmented, underline, or pill style. Built on Base UI Tabs with animated active indicator.
|
|
2843
|
+
|
|
2844
|
+
**Type:** component
|
|
2845
|
+
|
|
2846
|
+
**Import:** `import { Tabs } from "@signalflare-ai/ui";`
|
|
2847
|
+
|
|
2848
|
+
**Category:** Navigation
|
|
2849
|
+
|
|
2850
|
+
**Props:**
|
|
2851
|
+
|
|
2852
|
+
- `tabs`: TabsItem[]
|
|
2853
|
+
Array of tab items to render.
|
|
2854
|
+
- `value`: string
|
|
2855
|
+
Controlled value. When set, component becomes controlled.
|
|
2856
|
+
- `selectedValue`: string
|
|
2857
|
+
Default selected value for uncontrolled mode. Ignored when `value` is set.
|
|
2858
|
+
- `activateOnFocus`: boolean
|
|
2859
|
+
When `true`, tabs are activated immediately upon receiving focus via arrow keys. When `false` (default), tabs receive focus but require Enter/Space to activate.
|
|
2860
|
+
- `className`: string
|
|
2861
|
+
Additional CSS classes for the root element.
|
|
2862
|
+
- `listClassName`: string
|
|
2863
|
+
Additional CSS classes for the tab list element.
|
|
2864
|
+
- `indicatorClassName`: string
|
|
2865
|
+
Additional CSS classes for the indicator element.
|
|
2866
|
+
- `variant`: enum [default: segmented]
|
|
2867
|
+
Tab style.
|
|
2868
|
+
- `"segmented"` — Pill-shaped indicator on a filled track
|
|
2869
|
+
- `"underline"` — Underline indicator below tab text
|
|
2870
|
+
- `"pill"` — Fully rounded tabs, only selected has background
|
|
2871
|
+
- `onValueChange`: (value: string) => void
|
|
2872
|
+
Callback when active tab changes
|
|
2873
|
+
|
|
2874
|
+
**Colors (sf tokens used):**
|
|
2875
|
+
|
|
2876
|
+
`bg-sf-brand`, `bg-sf-overlay`, `bg-sf-tint`, `border-sf-line`, `border-sf-tint`, `ring-sf-fill-hover`, `ring-sf-ring`, `text-sf-default`, `text-sf-strong`, `text-sf-subtle`
|
|
2877
|
+
|
|
2878
|
+
**Styling:**
|
|
2879
|
+
|
|
2880
|
+
|
|
2881
|
+
---
|
|
2882
|
+
|
|
2883
|
+
### Text
|
|
2884
|
+
|
|
2885
|
+
Text component
|
|
2886
|
+
|
|
2887
|
+
**Type:** component
|
|
2888
|
+
|
|
2889
|
+
**Import:** `import { Text } from "@signalflare-ai/ui";`
|
|
2890
|
+
|
|
2891
|
+
**Category:** Display
|
|
2892
|
+
|
|
2893
|
+
**Props:**
|
|
2894
|
+
|
|
2895
|
+
- `variant`: enum [default: body]
|
|
2896
|
+
- `"heading1"`: Large heading for page titles
|
|
2897
|
+
- `"heading2"`: Medium heading for section titles
|
|
2898
|
+
- `"heading3"`: Small heading for subsections
|
|
2899
|
+
- `"body"`: Default body text
|
|
2900
|
+
- `"secondary"`: Muted text for secondary information
|
|
2901
|
+
- `"success"`: Success state text
|
|
2902
|
+
- `"error"`: Error state text
|
|
2903
|
+
- `"mono"`: Monospace text for code
|
|
2904
|
+
- `"mono-secondary"`: Muted monospace text
|
|
2905
|
+
- `size`: enum [default: base]
|
|
2906
|
+
- `"xs"`: Extra small text
|
|
2907
|
+
- `"sm"`: Small text
|
|
2908
|
+
- `"base"`: Default text size
|
|
2909
|
+
- `"lg"`: Large text
|
|
2910
|
+
- `bold`: boolean
|
|
2911
|
+
Whether to use bold font weight (only applies to body variants).
|
|
2912
|
+
- `as`: React.ElementType
|
|
2913
|
+
The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
|
|
2914
|
+
- `children`: ReactNode
|
|
2915
|
+
Text content.
|
|
2916
|
+
|
|
2917
|
+
**Colors (sf tokens used):**
|
|
2918
|
+
|
|
2919
|
+
`text-sf-danger`, `text-sf-default`, `text-sf-link`, `text-sf-subtle`
|
|
2920
|
+
|
|
2921
|
+
**Styling:**
|
|
2922
|
+
|
|
2923
|
+
|
|
2924
|
+
---
|
|
2925
|
+
|
|
2926
|
+
### ThemeToggle
|
|
2927
|
+
|
|
2928
|
+
Theme toggle button. Cycles through light → dark → system (follows OS) modes. Reads from and writes to `localStorage` under the key `"theme"`. When set to `"system"` the key is removed so the OS preference takes over automatically. Applies the resolved mode to `document.documentElement.dataset.mode`.
|
|
2929
|
+
|
|
2930
|
+
**Type:** component
|
|
2931
|
+
|
|
2932
|
+
**Import:** `import { ThemeToggle } from "@signalflare-ai/ui";`
|
|
2933
|
+
|
|
2934
|
+
**Category:** Other
|
|
2935
|
+
|
|
2936
|
+
**Props:**
|
|
2937
|
+
|
|
2938
|
+
- `className`: string
|
|
2939
|
+
Additional CSS classes merged via `cn()`.
|
|
2940
|
+
- `mode`: enum [default: system]
|
|
2941
|
+
- `"light"`: Light mode
|
|
2942
|
+
- `"dark"`: Dark mode
|
|
2943
|
+
- `"system"`: Follow system preference
|
|
2944
|
+
- `cycle`: SFThemeMode[]
|
|
2945
|
+
Cycle order for clicking. Defaults to `["light", "dark", "system"]`. Remove `"system"` to limit to a simple light/dark toggle.
|
|
2946
|
+
- `tooltip`: boolean
|
|
2947
|
+
Show a tooltip labelling the current action. Defaults to true.
|
|
2948
|
+
|
|
2949
|
+
**Colors (sf tokens used):**
|
|
2950
|
+
|
|
2951
|
+
`text-sf-default`, `text-sf-subtle`
|
|
2952
|
+
|
|
2953
|
+
---
|
|
2954
|
+
|
|
2955
|
+
### Toasty
|
|
2956
|
+
|
|
2957
|
+
Toasty — toast notification provider and viewport. Renders a `Toast.Provider` with a fixed-position viewport in the bottom-right corner. Toasts stack with smooth enter/exit animations, swipe-to-dismiss, and expand-on-hover. Built on `@base-ui/react/toast`.
|
|
2958
|
+
|
|
2959
|
+
**Type:** component
|
|
2960
|
+
|
|
2961
|
+
**Import:** `import { Toasty } from "@signalflare-ai/ui";`
|
|
2962
|
+
|
|
2963
|
+
**Category:** Feedback
|
|
2964
|
+
|
|
2965
|
+
**Props:**
|
|
2966
|
+
|
|
2967
|
+
- `variant`: enum [default: default]
|
|
2968
|
+
- `"default"`: Default toast style
|
|
2969
|
+
- `"error"`: Error toast for critical issues
|
|
2970
|
+
- `"warning"`: Warning toast for cautionary messages
|
|
2971
|
+
- `className`: string
|
|
2972
|
+
Additional CSS classes
|
|
2973
|
+
- `children`: ReactNode
|
|
2974
|
+
Child elements
|
|
2975
|
+
|
|
2976
|
+
**Colors (sf tokens used):**
|
|
2977
|
+
|
|
2978
|
+
`bg-sf-contrast`, `bg-sf-control`, `bg-sf-fill-hover`, `border-sf-fill`, `text-sf-default`, `text-sf-strong`, `text-sf-subtle`
|
|
2979
|
+
|
|
2980
|
+
**Styling:**
|
|
2981
|
+
|
|
2982
|
+
|
|
2983
|
+
---
|
|
2984
|
+
|
|
2985
|
+
### Tooltip
|
|
2986
|
+
|
|
2987
|
+
Accessible popup that shows additional information on hover/focus. Wrap your app or section with `<TooltipProvider>` to enable delay grouping.
|
|
2988
|
+
|
|
2989
|
+
**Type:** component
|
|
2990
|
+
|
|
2991
|
+
**Import:** `import { Tooltip } from "@signalflare-ai/ui";`
|
|
2992
|
+
|
|
2993
|
+
**Category:** Overlay
|
|
2994
|
+
|
|
2995
|
+
**Props:**
|
|
2996
|
+
|
|
2997
|
+
- `side`: enum [default: top]
|
|
2998
|
+
- `"top"`: Tooltip appears above the trigger
|
|
2999
|
+
- `"bottom"`: Tooltip appears below the trigger
|
|
3000
|
+
- `"left"`: Tooltip appears to the left of the trigger
|
|
3001
|
+
- `"right"`: Tooltip appears to the right of the trigger
|
|
3002
|
+
- `className`: string
|
|
3003
|
+
Additional CSS classes
|
|
3004
|
+
- `children`: ReactNode
|
|
3005
|
+
Child elements
|
|
3006
|
+
- `content`: ReactNode (required)
|
|
3007
|
+
Content to display in the tooltip
|
|
3008
|
+
|
|
3009
|
+
**Colors (sf tokens used):**
|
|
3010
|
+
|
|
3011
|
+
`bg-sf-elevated`, `fill-sf-elevated`, `fill-sf-tip-shadow`, `fill-sf-tip-stroke`, `outline-sf-fill`, `text-sf-default`
|
|
3012
|
+
|
|
3013
|
+
---
|
|
3014
|
+
|
|
3015
|
+
### InputArea
|
|
3016
|
+
|
|
3017
|
+
Multi-line textarea input with Input variants and InputArea-specific dimensions
|
|
3018
|
+
|
|
3019
|
+
**Type:** component
|
|
3020
|
+
|
|
3021
|
+
**Import:** `import { InputArea } from "@signalflare-ai/ui (synthetic - uses Input component)";`
|
|
3022
|
+
|
|
3023
|
+
**Category:** Input
|
|
3024
|
+
|
|
3025
|
+
**Props:**
|
|
3026
|
+
|
|
3027
|
+
|
|
3028
|
+
**Styling:**
|
|
3029
|
+
|
|
3030
|
+
- **Size Variants:**
|
|
3031
|
+
- `xs`:
|
|
3032
|
+
- `sm`:
|
|
3033
|
+
- `base`:
|
|
3034
|
+
- `lg`:
|
|
3035
|
+
|
|
3036
|
+
## Quick Reference
|
|
3037
|
+
|
|
3038
|
+
**Components by Category:**
|
|
3039
|
+
- **Other:** AiActions, AiAgentCard, AiApproval, AiCodeBlock, AiConversation, AiInfoBanner, AiLoader, AiMessage, AiMissionHeader, AiQuestion, AiReasoning, AiResponse, AiShimmer, AiStatusBadge, AiStreamingText, AiSubagent, AiSuggestions, AiTaskList, AiTimeline, AiToolCall, AiUsageBar, DataGrid, DatePicker, Filters, Label, Link, PromptInput, SensitiveInput, Sidebar, SignalFlareAILogo, Table, ThemeToggle, AgentHarness, Commander, DeleteResource, Map
|
|
3040
|
+
- **Display:** Badge, Breadcrumbs, Code, Collapsible, Empty, LayerCard, Meter, Text
|
|
3041
|
+
- **Feedback:** Banner, Loader, Toasty
|
|
3042
|
+
- **Action:** Button, ClipboardText
|
|
3043
|
+
- **Input:** Checkbox, Combobox, DateRangePicker, Field, Input, Radio, Select, Switch
|
|
3044
|
+
- **Navigation:** CommandPalette, MenuBar, Pagination, Tabs
|
|
3045
|
+
- **Overlay:** Dialog, DropdownMenu, Popover, Tooltip
|
|
3046
|
+
- **Layout:** Grid, Surface, PageHeader, ResourceListPage
|