@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/blocks/delete-resource/delete-resource.tsx"],"sourcesContent":["import {\n CheckIcon,\n CopyIcon,\n WarningCircleIcon,\n XIcon,\n} from \"@phosphor-icons/react\";\nimport { useState, useCallback, useEffect } from \"react\";\n\nimport { Banner } from \"../../components/banner\";\nimport { Button } from \"../../components/button\";\nimport {\n Dialog,\n DialogRoot,\n DialogTitle,\n DialogClose,\n} from \"../../components/dialog\";\nimport { Input } from \"../../components/input\";\nimport { cn } from \"../../utils/cn\";\n\nexport const SF_DELETE_RESOURCE_VARIANTS = {\n size: {\n sm: {\n classes: \"\",\n description: \"Small dialog for simple delete confirmations\",\n },\n base: {\n classes: \"\",\n description: \"Default delete confirmation dialog size\",\n },\n },\n} as const;\n\nexport const SF_DELETE_RESOURCE_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\nexport type SFDeleteResourceSize =\n keyof typeof SF_DELETE_RESOURCE_VARIANTS.size;\n\nexport interface SFDeleteResourceVariantsProps {\n size?: SFDeleteResourceSize;\n}\n\nexport interface DeleteResourceProps extends SFDeleteResourceVariantsProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when open state changes */\n onOpenChange: (open: boolean) => void;\n /** The type of resource being deleted (e.g., \"Zone\", \"Worker\", \"KV Namespace\") */\n resourceType: string;\n /** The name of the specific resource being deleted */\n resourceName: string;\n /** Callback when delete is confirmed */\n onDelete: () => void | Promise<void>;\n /** Whether the delete action is in progress */\n isDeleting?: boolean;\n /** Whether the confirmation input should be case-sensitive (default: true) */\n caseSensitive?: boolean;\n /** Custom delete button text (defaults to \"Delete {resourceType}\") */\n deleteButtonText?: string;\n /** Additional className for the dialog */\n className?: string;\n /** Error message to display if the delete action fails */\n errorMessage?: string;\n}\n\nexport function DeleteResource({\n open,\n onOpenChange,\n resourceType,\n resourceName,\n onDelete,\n isDeleting = false,\n caseSensitive = true,\n deleteButtonText,\n size = SF_DELETE_RESOURCE_DEFAULT_VARIANTS.size,\n errorMessage,\n className,\n}: DeleteResourceProps) {\n const [confirmationInput, setConfirmationInput] = useState(\"\");\n const [copied, setCopied] = useState(false);\n\n useEffect(() => {\n if (!open) {\n setConfirmationInput(\"\");\n setCopied(false);\n }\n }, [open]);\n\n const normalizeForComparison = useCallback(\n (str: string) => (caseSensitive ? str : str.toLowerCase()),\n [caseSensitive]\n );\n\n const isConfirmed =\n normalizeForComparison(confirmationInput) ===\n normalizeForComparison(resourceName);\n\n const handleDelete = useCallback(async () => {\n if (!isConfirmed || isDeleting) return;\n await onDelete();\n }, [isConfirmed, isDeleting, onDelete]);\n\n const handleCopy = useCallback(async () => {\n await navigator.clipboard.writeText(resourceName);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }, [resourceName]);\n\n return (\n <DialogRoot open={open} onOpenChange={onOpenChange}>\n <Dialog size={size} className={cn(\"p-0\", className)}>\n <div className=\"flex items-center justify-between border-b border-sf-line px-6 py-4\">\n <DialogTitle className=\"text-lg font-semibold\">\n Delete {resourceName}\n </DialogTitle>\n <DialogClose\n render={(props) => (\n <Button\n {...props}\n variant=\"ghost\"\n shape=\"square\"\n size=\"sm\"\n aria-label=\"Close\"\n disabled={isDeleting}\n >\n <XIcon size={18} />\n </Button>\n )}\n />\n </div>\n\n <div className=\"flex flex-col p-6 gap-4\">\n <div className=\"flex flex-col gap-2\">\n {errorMessage && (\n <Banner icon={<WarningCircleIcon />} variant=\"error\">\n {errorMessage}\n </Banner>\n )}\n <p className=\"text-base text-sf-subtle max-w-prose text-pretty\">\n This action cannot be undone. This will permanently delete the{\" \"}\n <span className=\"font-medium text-sf-default\">\n {resourceName}\n </span>{\" \"}\n {resourceType.toLowerCase()}.\n </p>\n </div>\n\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-1.5 text-base\">\n <span>\n Type{\" \"}\n <button\n className=\"font-mono text-sm inline font-semibold bg-sf-tint hover:bg-sf-fill rounded-md px-2 py-1 group hover:cursor-pointer\"\n onClick={handleCopy}\n aria-label={`Copy ${resourceName} to clipboard`}\n >\n {resourceName}\n\n {copied ? (\n <CheckIcon\n size={12}\n weight=\"bold\"\n className=\"inline ml-1.5\"\n />\n ) : (\n <CopyIcon\n size={12}\n weight=\"bold\"\n className=\"inline text-sf-subtle group-hover:text-sf-default ml-1.5\"\n />\n )}\n </button>{\" \"}\n to confirm:\n </span>\n </div>\n <Input\n placeholder={resourceName}\n value={confirmationInput}\n onChange={(e) => setConfirmationInput(e.target.value)}\n disabled={isDeleting}\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck={false}\n aria-label={`Type ${resourceName} to confirm deletion`}\n className=\"w-full\"\n />\n </div>\n </div>\n\n <div className=\"flex justify-end gap-3 border-t border-sf-line px-6 py-4\">\n <DialogClose\n render={(props) => (\n <Button {...props} variant=\"secondary\" disabled={isDeleting}>\n Cancel\n </Button>\n )}\n />\n <Button\n variant=\"destructive\"\n onClick={handleDelete}\n disabled={!isConfirmed || isDeleting}\n loading={isDeleting}\n >\n {deleteButtonText || `Delete ${resourceType}`}\n </Button>\n </div>\n </Dialog>\n </DialogRoot>\n );\n}\n\nDeleteResource.displayName = \"DeleteResource\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,IAAa,8BAA8B,EACzC,MAAM;CACJ,IAAI;EACF,SAAS;EACT,aAAa;EACd;CACD,MAAM;EACJ,SAAS;EACT,aAAa;EACd;CACF,EACF;AAED,IAAa,sCAAsC,EACjD,MAAM,QACP;AAgCD,SAAgB,eAAe,EAC7B,MACA,cACA,cACA,cACA,UACA,aAAa,OACb,gBAAgB,MAChB,kBACA,OAAO,oCAAoC,MAC3C,cACA,aACsB;CACtB,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,GAAG;CAC9D,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;AAE3C,iBAAgB;AACd,MAAI,CAAC,MAAM;AACT,wBAAqB,GAAG;AACxB,aAAU,MAAM;;IAEjB,CAAC,KAAK,CAAC;CAEV,MAAM,yBAAyB,aAC5B,QAAiB,gBAAgB,MAAM,IAAI,aAAa,EACzD,CAAC,cAAc,CAChB;CAED,MAAM,cACJ,uBAAuB,kBAAkB,KACzC,uBAAuB,aAAa;CAEtC,MAAM,eAAe,YAAY,YAAY;AAC3C,MAAI,CAAC,eAAe,WAAY;AAChC,QAAM,UAAU;IACf;EAAC;EAAa;EAAY;EAAS,CAAC;CAEvC,MAAM,aAAa,YAAY,YAAY;AACzC,QAAM,UAAU,UAAU,UAAU,aAAa;AACjD,YAAU,KAAK;AACf,mBAAiB,UAAU,MAAM,EAAE,KAAK;IACvC,CAAC,aAAa,CAAC;AAElB,QACE,oBAAC,YAAD;EAAkB;EAAoB;YACpC,qBAAC,QAAD;GAAc;GAAM,WAAW,GAAG,OAAO,UAAU;aAAnD;IACE,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,qBAAC,aAAD;MAAa,WAAU;gBAAvB,CAA+C,WACrC,aACI;SACd,oBAAC,aAAD,EACE,SAAS,UACP,oBAAC,QAAD;MACE,GAAI;MACJ,SAAQ;MACR,OAAM;MACN,MAAK;MACL,cAAW;MACX,UAAU;gBAEV,oBAAC,OAAD,EAAO,MAAM,IAAM,CAAA;MACZ,CAAA,EAEX,CAAA,CACE;;IAEN,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,qBAAC,OAAD;MAAK,WAAU;gBAAf,CACG,gBACC,oBAAC,QAAD;OAAQ,MAAM,oBAAC,mBAAD,EAAqB,CAAA;OAAE,SAAQ;iBAC1C;OACM,CAAA,EAEX,qBAAC,KAAD;OAAG,WAAU;iBAAb;QAAgE;QACC;QAC/D,oBAAC,QAAD;SAAM,WAAU;mBACb;SACI,CAAA;QAAC;QACP,aAAa,aAAa;QAAC;QAC1B;SACA;SAEN,qBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,oBAAC,OAAD;OAAK,WAAU;iBACb,qBAAC,QAAD,EAAA,UAAA;QAAM;QACC;QACL,qBAAC,UAAD;SACE,WAAU;SACV,SAAS;SACT,cAAY,QAAQ,aAAa;mBAHnC,CAKG,cAEA,SACC,oBAAC,WAAD;UACE,MAAM;UACN,QAAO;UACP,WAAU;UACV,CAAA,GAEF,oBAAC,UAAD;UACE,MAAM;UACN,QAAO;UACP,WAAU;UACV,CAAA,CAEG;;QAAC;QAAI;QAET,EAAA,CAAA;OACH,CAAA,EACN,oBAAC,OAAD;OACE,aAAa;OACb,OAAO;OACP,WAAW,MAAM,qBAAqB,EAAE,OAAO,MAAM;OACrD,UAAU;OACV,cAAa;OACb,aAAY;OACZ,gBAAe;OACf,YAAY;OACZ,cAAY,QAAQ,aAAa;OACjC,WAAU;OACV,CAAA,CACE;QACF;;IAEN,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,aAAD,EACE,SAAS,UACP,oBAAC,QAAD;MAAQ,GAAI;MAAO,SAAQ;MAAY,UAAU;gBAAY;MAEpD,CAAA,EAEX,CAAA,EACF,oBAAC,QAAD;MACE,SAAQ;MACR,SAAS;MACT,UAAU,CAAC,eAAe;MAC1B,SAAS;gBAER,oBAAoB,UAAU;MACxB,CAAA,CACL;;IACC;;EACE,CAAA;;AAIjB,eAAe,cAAc"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-YROP2_ox.js";
|
|
3
|
+
import { t as Field } from "./field-Y_UK1_Cg.js";
|
|
4
|
+
import { forwardRef } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { Input } from "@base-ui/react/input";
|
|
7
|
+
//#region src/components/input/input.tsx
|
|
8
|
+
/** Input size and variant definitions mapping names to their Tailwind classes. */
|
|
9
|
+
var SF_INPUT_VARIANTS = {
|
|
10
|
+
size: {
|
|
11
|
+
xs: {
|
|
12
|
+
classes: "h-5 gap-1 rounded-sm px-1.5 text-xs",
|
|
13
|
+
description: "Extra small input for compact UIs"
|
|
14
|
+
},
|
|
15
|
+
sm: {
|
|
16
|
+
classes: "h-6.5 gap-1 rounded-md px-2 text-xs",
|
|
17
|
+
description: "Small input for secondary fields"
|
|
18
|
+
},
|
|
19
|
+
base: {
|
|
20
|
+
classes: "h-9 gap-1.5 rounded-lg px-3 text-base",
|
|
21
|
+
description: "Default input size"
|
|
22
|
+
},
|
|
23
|
+
lg: {
|
|
24
|
+
classes: "h-10 gap-2 rounded-lg px-4 text-base",
|
|
25
|
+
description: "Large input for prominent fields"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
variant: {
|
|
29
|
+
default: {
|
|
30
|
+
classes: "focus:ring-sf-ring",
|
|
31
|
+
description: "Default input appearance"
|
|
32
|
+
},
|
|
33
|
+
error: {
|
|
34
|
+
classes: "!ring-sf-danger focus:ring-sf-danger",
|
|
35
|
+
description: "Error state for validation failures"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var SF_INPUT_DEFAULT_VARIANTS = {
|
|
40
|
+
size: "base",
|
|
41
|
+
variant: "default"
|
|
42
|
+
};
|
|
43
|
+
function inputVariants({ variant = SF_INPUT_DEFAULT_VARIANTS.variant, size = SF_INPUT_DEFAULT_VARIANTS.size, parentFocusIndicator = false, focusIndicator = false } = {}) {
|
|
44
|
+
return cn("border-0 bg-sf-control text-sf-default ring ring-sf-line", "outline-none placeholder:text-sf-subtle disabled:text-sf-subtle", SF_INPUT_VARIANTS.size[size].classes, SF_INPUT_VARIANTS.variant[variant].classes, parentFocusIndicator && "[&:has(:focus-within)]:ring-sf-ring", focusIndicator && "focus:ring-sf-ring");
|
|
45
|
+
}
|
|
46
|
+
var Input$1 = forwardRef((props, ref) => {
|
|
47
|
+
const { className, size = "base", variant = "default", label, labelTooltip, description, error, ...inputProps } = props;
|
|
48
|
+
const { required } = inputProps;
|
|
49
|
+
if (process.env.NODE_ENV !== "production") {
|
|
50
|
+
const hasLabel = Boolean(label);
|
|
51
|
+
const hasPlaceholderAndAriaLabel = Boolean(inputProps.placeholder && inputProps["aria-label"]);
|
|
52
|
+
const hasAriaLabelledBy = Boolean(inputProps["aria-labelledby"]);
|
|
53
|
+
if (!hasLabel && !hasPlaceholderAndAriaLabel && !hasAriaLabelledBy) console.warn("[SF Input]: Input must have an accessible name. Provide either:\n - label prop: <Input label='Email' />\n - placeholder + aria-label: <Input placeholder='Email' aria-label='Email address' />\n - aria-labelledby for custom label association");
|
|
54
|
+
}
|
|
55
|
+
const input = /* @__PURE__ */ jsx(Input, {
|
|
56
|
+
ref,
|
|
57
|
+
className: cn(inputVariants({
|
|
58
|
+
size,
|
|
59
|
+
variant,
|
|
60
|
+
focusIndicator: true
|
|
61
|
+
}), className),
|
|
62
|
+
...inputProps
|
|
63
|
+
});
|
|
64
|
+
if (label) return /* @__PURE__ */ jsx(Field, {
|
|
65
|
+
label,
|
|
66
|
+
required,
|
|
67
|
+
labelTooltip,
|
|
68
|
+
description,
|
|
69
|
+
error: error ? typeof error === "string" ? {
|
|
70
|
+
message: error,
|
|
71
|
+
match: true
|
|
72
|
+
} : error : void 0,
|
|
73
|
+
children: input
|
|
74
|
+
});
|
|
75
|
+
return input;
|
|
76
|
+
});
|
|
77
|
+
Input$1.displayName = "Input";
|
|
78
|
+
//#endregion
|
|
79
|
+
export { SF_INPUT_VARIANTS as n, inputVariants as r, Input$1 as t };
|
|
80
|
+
|
|
81
|
+
//# sourceMappingURL=input-BxQAnXki.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-BxQAnXki.js","names":[],"sources":["../src/components/input/input.tsx"],"sourcesContent":["import { Input as BaseInput } from \"@base-ui/react/input\";\nimport {\n forwardRef,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { Field, type FieldErrorMatch } from \"../field/field\";\n\n/** Input size and variant definitions mapping names to their Tailwind classes. */\nexport const SF_INPUT_VARIANTS = {\n size: {\n xs: {\n classes: \"h-5 gap-1 rounded-sm px-1.5 text-xs\",\n description: \"Extra small input for compact UIs\",\n },\n sm: {\n classes: \"h-6.5 gap-1 rounded-md px-2 text-xs\",\n description: \"Small input for secondary fields\",\n },\n base: {\n classes: \"h-9 gap-1.5 rounded-lg px-3 text-base\",\n description: \"Default input size\",\n },\n lg: {\n classes: \"h-10 gap-2 rounded-lg px-4 text-base\",\n description: \"Large input for prominent fields\",\n },\n },\n variant: {\n default: {\n classes: \"focus:ring-sf-ring\",\n description: \"Default input appearance\",\n },\n error: {\n classes: \"!ring-sf-danger focus:ring-sf-danger\",\n description: \"Error state for validation failures\",\n },\n },\n} as const;\n\nexport const SF_INPUT_DEFAULT_VARIANTS = {\n size: \"base\",\n variant: \"default\",\n} as const;\n\nexport const SF_INPUT_STYLING = {\n dimensions: {\n xs: { height: 20, paddingX: 6, fontSize: 12, borderRadius: 2, width: 160 },\n sm: { height: 26, paddingX: 8, fontSize: 12, borderRadius: 6, width: 200 },\n base: {\n height: 36,\n paddingX: 12,\n fontSize: 16,\n borderRadius: 8,\n width: 280,\n },\n lg: { height: 40, paddingX: 16, fontSize: 16, borderRadius: 8, width: 320 },\n },\n baseTokens: {\n background: \"color-secondary\",\n text: \"text-color-surface\",\n placeholder: \"text-color-muted\",\n ring: \"color-border\",\n },\n stateTokens: {\n focus: { ring: \"color-active\" },\n error: { ring: \"color-error\" },\n disabled: { opacity: 0.5, text: \"text-color-muted\" },\n },\n} as const;\n\n// Derived types from SF_INPUT_VARIANTS\nexport type SFInputSize = keyof typeof SF_INPUT_VARIANTS.size;\nexport type SFInputVariant = keyof typeof SF_INPUT_VARIANTS.variant;\n\nexport interface SFInputVariantsProps {\n /**\n * Input size.\n * - `\"xs\"` — Extra small for compact UIs\n * - `\"sm\"` — Small for secondary fields\n * - `\"base\"` — Default size\n * - `\"lg\"` — Large for prominent fields\n * @default \"base\"\n */\n size?: SFInputSize;\n /**\n * Visual variant.\n * - `\"default\"` — Standard input\n * - `\"error\"` — Error state for validation failures\n * @default \"default\"\n */\n variant?: SFInputVariant;\n parentFocusIndicator?: boolean;\n focusIndicator?: boolean;\n}\n\n// Omit native `size` attribute (number) to avoid conflict with our custom `size` variant\ntype BaseInputProps = Omit<ComponentPropsWithoutRef<typeof BaseInput>, \"size\">;\n\nexport function inputVariants({\n variant = SF_INPUT_DEFAULT_VARIANTS.variant,\n size = SF_INPUT_DEFAULT_VARIANTS.size,\n parentFocusIndicator = false,\n focusIndicator = false,\n}: SFInputVariantsProps = {}) {\n return cn(\n // Base styles\n \"border-0 bg-sf-control text-sf-default ring ring-sf-line\",\n // Disabled state and placeholder styles\n \"outline-none placeholder:text-sf-subtle disabled:text-sf-subtle\",\n // Apply size styles from SF_INPUT_VARIANTS\n SF_INPUT_VARIANTS.size[size].classes,\n // Apply variant styles from SF_INPUT_VARIANTS\n SF_INPUT_VARIANTS.variant[variant].classes,\n // Focus state handling\n parentFocusIndicator && \"[&:has(:focus-within)]:ring-sf-ring\",\n focusIndicator && \"focus:ring-sf-ring\"\n );\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>((props, ref) => {\n const {\n className,\n size = \"base\",\n variant = \"default\",\n label,\n labelTooltip,\n description,\n error,\n ...inputProps\n } = props;\n\n // Extract required from inputProps to pass to Field for label decoration\n const { required } = inputProps;\n\n // A11y enforcement: warn in dev if no accessible name provided\n if (process.env.NODE_ENV !== \"production\") {\n const hasLabel = Boolean(label);\n const hasPlaceholderAndAriaLabel = Boolean(\n inputProps.placeholder && inputProps[\"aria-label\"]\n );\n const hasAriaLabelledBy = Boolean(inputProps[\"aria-labelledby\"]);\n\n if (!hasLabel && !hasPlaceholderAndAriaLabel && !hasAriaLabelledBy) {\n console.warn(\n \"[SF Input]: Input must have an accessible name. Provide either:\\n\" +\n \" - label prop: <Input label='Email' />\\n\" +\n \" - placeholder + aria-label: <Input placeholder='Email' aria-label='Email address' />\\n\" +\n \" - aria-labelledby for custom label association\"\n );\n }\n }\n\n const input = (\n <BaseInput\n ref={ref}\n className={cn(\n inputVariants({ size, variant, focusIndicator: true }),\n className\n )}\n {...inputProps}\n />\n );\n\n // Render with Field wrapper if label is provided\n if (label) {\n return (\n <Field\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n description={description}\n error={\n error\n ? typeof error === \"string\"\n ? { message: error, match: true }\n : error\n : undefined\n }\n >\n {input}\n </Field>\n );\n }\n\n // Render bare input without Field wrapper\n return input;\n});\n\nInput.displayName = \"Input\";\n\n/**\n * Input component props with accessibility guidance.\n *\n * **Accessible Name Required:** Input should have one of:\n * 1. `label` prop (recommended) - enables Field wrapper with label/description/error\n * 2. `placeholder` + `aria-label` - for bare inputs with visual placeholder\n * 3. `aria-labelledby` - for custom label association\n *\n * Missing accessible names will trigger console warnings in development.\n *\n * @example\n * // Recommended: Built-in Field wrapper\n * <Input label=\"Email\" placeholder=\"you@example.com\" />\n *\n * @example\n * // Bare input with placeholder and aria-label\n * <Input placeholder=\"Search...\" aria-label=\"Search products\" />\n *\n * @example\n * // Custom label association\n * <label id=\"email-label\">Email</label>\n * <Input aria-labelledby=\"email-label\" />\n *\n * @example\n * // With description and error\n * <Input\n * label=\"Password\"\n * description=\"Must be at least 8 characters\"\n * error=\"Password is too short\"\n * variant=\"error\"\n * />\n */\nexport type InputProps = Pick<SFInputVariantsProps, \"size\" | \"variant\"> &\n BaseInputProps & {\n /** Label content for the input (enables Field wrapper) - can be a string or any React node */\n label?: ReactNode;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /** Helper text displayed below the input */\n description?: ReactNode;\n /** Error message or validation error object */\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n };\n"],"mappings":";;;;;;;;AAWA,IAAa,oBAAoB;CAC/B,MAAM;EACJ,IAAI;GACF,SAAS;GACT,aAAa;GACd;EACD,IAAI;GACF,SAAS;GACT,aAAa;GACd;EACD,MAAM;GACJ,SAAS;GACT,aAAa;GACd;EACD,IAAI;GACF,SAAS;GACT,aAAa;GACd;EACF;CACD,SAAS;EACP,SAAS;GACP,SAAS;GACT,aAAa;GACd;EACD,OAAO;GACL,SAAS;GACT,aAAa;GACd;EACF;CACF;AAED,IAAa,4BAA4B;CACvC,MAAM;CACN,SAAS;CACV;AAwDD,SAAgB,cAAc,EAC5B,UAAU,0BAA0B,SACpC,OAAO,0BAA0B,MACjC,uBAAuB,OACvB,iBAAiB,UACO,EAAE,EAAE;AAC5B,QAAO,GAEL,4DAEA,mEAEA,kBAAkB,KAAK,MAAM,SAE7B,kBAAkB,QAAQ,SAAS,SAEnC,wBAAwB,uCACxB,kBAAkB,qBACnB;;AAGH,IAAa,UAAQ,YAA0C,OAAO,QAAQ;CAC5E,MAAM,EACJ,WACA,OAAO,QACP,UAAU,WACV,OACA,cACA,aACA,OACA,GAAG,eACD;CAGJ,MAAM,EAAE,aAAa;AAGrB,KAAA,QAAA,IAAA,aAA6B,cAAc;EACzC,MAAM,WAAW,QAAQ,MAAM;EAC/B,MAAM,6BAA6B,QACjC,WAAW,eAAe,WAAW,cACtC;EACD,MAAM,oBAAoB,QAAQ,WAAW,mBAAmB;AAEhE,MAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,kBAC/C,SAAQ,KACN,qPAID;;CAIL,MAAM,QACJ,oBAAC,OAAD;EACO;EACL,WAAW,GACT,cAAc;GAAE;GAAM;GAAS,gBAAgB;GAAM,CAAC,EACtD,UACD;EACD,GAAI;EACJ,CAAA;AAIJ,KAAI,MACF,QACE,oBAAC,OAAD;EACS;EACG;EACI;EACD;EACb,OACE,QACI,OAAO,UAAU,WACf;GAAE,SAAS;GAAO,OAAO;GAAM,GAC/B,QACF,KAAA;YAGL;EACK,CAAA;AAKZ,QAAO;EACP;AAEF,QAAM,cAAc"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-YROP2_ox.js";
|
|
3
|
+
import { t as Button$1 } from "./button-De0267YU.js";
|
|
4
|
+
import { t as Field } from "./field-Y_UK1_Cg.js";
|
|
5
|
+
import { r as inputVariants, t as Input$1 } from "./input-BxQAnXki.js";
|
|
6
|
+
import * as React$1 from "react";
|
|
7
|
+
import { useCallback, useContext } from "react";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
//#region src/components/input/input-area.tsx
|
|
10
|
+
var InputArea = React$1.forwardRef((props, ref) => {
|
|
11
|
+
const { className, onValueChange, size = "base", variant = "default", onChange, label, labelTooltip, description, error, ...inputProps } = props;
|
|
12
|
+
const { required } = inputProps;
|
|
13
|
+
const handleChange = useCallback((event) => {
|
|
14
|
+
onChange?.(event);
|
|
15
|
+
onValueChange?.(event.target.value);
|
|
16
|
+
}, [onChange, onValueChange]);
|
|
17
|
+
const textarea = /* @__PURE__ */ jsx("textarea", {
|
|
18
|
+
ref,
|
|
19
|
+
className: cn(inputVariants({
|
|
20
|
+
size,
|
|
21
|
+
variant,
|
|
22
|
+
focusIndicator: true
|
|
23
|
+
}), "h-auto py-2", className),
|
|
24
|
+
onChange: handleChange,
|
|
25
|
+
...inputProps
|
|
26
|
+
});
|
|
27
|
+
if (label) return /* @__PURE__ */ jsx(Field, {
|
|
28
|
+
label,
|
|
29
|
+
required,
|
|
30
|
+
labelTooltip,
|
|
31
|
+
description,
|
|
32
|
+
error: error ? typeof error === "string" ? {
|
|
33
|
+
message: error,
|
|
34
|
+
match: true
|
|
35
|
+
} : error : void 0,
|
|
36
|
+
children: textarea
|
|
37
|
+
});
|
|
38
|
+
return textarea;
|
|
39
|
+
});
|
|
40
|
+
InputArea.displayName = "InputArea";
|
|
41
|
+
/** Alias for InputArea — provided for discoverability when migrating from other libraries */
|
|
42
|
+
var Textarea = InputArea;
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region src/components/input/input-group.tsx
|
|
45
|
+
var SF_INPUT_GROUP_DEFAULT_VARIANTS = { focusMode: "container" };
|
|
46
|
+
var InputGroupContext = React$1.createContext(null);
|
|
47
|
+
function Root({ size, children, className, focusMode = SF_INPUT_GROUP_DEFAULT_VARIANTS.focusMode }) {
|
|
48
|
+
const inputId = React$1.useId();
|
|
49
|
+
const descriptionId = React$1.useId();
|
|
50
|
+
const contextValue = React$1.useMemo(() => ({
|
|
51
|
+
size,
|
|
52
|
+
inputId,
|
|
53
|
+
descriptionId,
|
|
54
|
+
focusMode
|
|
55
|
+
}), [
|
|
56
|
+
size,
|
|
57
|
+
inputId,
|
|
58
|
+
descriptionId,
|
|
59
|
+
focusMode
|
|
60
|
+
]);
|
|
61
|
+
const isIndividualFocus = focusMode === "individual";
|
|
62
|
+
return /* @__PURE__ */ jsx(InputGroupContext.Provider, {
|
|
63
|
+
value: contextValue,
|
|
64
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
65
|
+
className: cn(inputVariants({
|
|
66
|
+
size,
|
|
67
|
+
parentFocusIndicator: !isIndividualFocus
|
|
68
|
+
}), "flex w-full gap-0 border-0 px-0", isIndividualFocus ? "overflow-visible" : "overflow-hidden shadow-xs ring ring-sf-line focus-within:ring-sf-ring", className),
|
|
69
|
+
children
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function Label({ children }) {
|
|
74
|
+
const context = useContext(InputGroupContext);
|
|
75
|
+
const isIndividualFocus = context?.focusMode === "individual";
|
|
76
|
+
return /* @__PURE__ */ jsx("label", {
|
|
77
|
+
htmlFor: context?.inputId,
|
|
78
|
+
className: cn("flex h-full items-center p-0 px-2 text-sf-subtle", isIndividualFocus && "first:rounded-l-[inherit] last:rounded-r-[inherit]"),
|
|
79
|
+
children
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function Input(props) {
|
|
83
|
+
const context = useContext(InputGroupContext);
|
|
84
|
+
const isIndividualFocus = context?.focusMode === "individual";
|
|
85
|
+
return /* @__PURE__ */ jsx(Input$1, {
|
|
86
|
+
id: context?.inputId,
|
|
87
|
+
"aria-describedby": context?.descriptionId,
|
|
88
|
+
size: context?.size,
|
|
89
|
+
...props,
|
|
90
|
+
className: cn("flex h-full items-center rounded-none border-0 bg-sf-base font-sans", "grow px-2", isIndividualFocus ? "relative ring ring-sf-line first:rounded-l-[inherit] last:rounded-r-[inherit] focus:z-10 focus:outline" : "focus:border-sf-fill", props.className)
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function Description({ children }) {
|
|
94
|
+
const context = useContext(InputGroupContext);
|
|
95
|
+
const isIndividualFocus = context?.focusMode === "individual";
|
|
96
|
+
return /* @__PURE__ */ jsx("span", {
|
|
97
|
+
id: context?.descriptionId,
|
|
98
|
+
className: cn("flex h-full items-center p-0 px-2 text-sf-subtle", isIndividualFocus && "first:rounded-l-[inherit] last:rounded-r-[inherit]"),
|
|
99
|
+
children
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function Button({ children, className, ...props }) {
|
|
103
|
+
const context = useContext(InputGroupContext);
|
|
104
|
+
const isIndividualFocus = context?.focusMode === "individual";
|
|
105
|
+
return /* @__PURE__ */ jsx(Button$1, {
|
|
106
|
+
...props,
|
|
107
|
+
size: context?.size,
|
|
108
|
+
className: cn("h-full! rounded-none disabled:bg-sf-overlay disabled:text-sf-inactive!", isIndividualFocus && "relative ring ring-sf-line first:rounded-l-[inherit] last:rounded-r-[inherit] focus:z-10 focus:outline", className),
|
|
109
|
+
children
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
var InputGroup = Object.assign(Root, {
|
|
113
|
+
Label,
|
|
114
|
+
Input,
|
|
115
|
+
Button,
|
|
116
|
+
Description
|
|
117
|
+
});
|
|
118
|
+
//#endregion
|
|
119
|
+
export { InputArea as n, Textarea as r, InputGroup as t };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=input-Cn25I4o5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-Cn25I4o5.js","names":[],"sources":["../src/components/input/input-area.tsx","../src/components/input/input-group.tsx"],"sourcesContent":["import { useCallback, type ReactNode } from \"react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { Field as SFField, type FieldErrorMatch } from \"../field/field\";\nimport { inputVariants } from \"./input\";\n\nexport const InputArea = React.forwardRef<HTMLTextAreaElement, InputAreaProps>(\n (props, ref) => {\n const {\n className,\n onValueChange,\n size = \"base\",\n variant = \"default\",\n onChange,\n label,\n labelTooltip,\n description,\n error,\n ...inputProps\n } = props;\n\n // Extract required from inputProps to pass to Field for label decoration\n const { required } = inputProps;\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(event);\n onValueChange?.(event.target.value);\n },\n [onChange, onValueChange]\n );\n\n const textarea = (\n <textarea\n ref={ref}\n className={cn(\n inputVariants({ size, variant, focusIndicator: true }),\n \"h-auto py-2\", // Input variant always come with size, but it does not apply for textarea\n className\n )}\n onChange={handleChange}\n {...inputProps}\n />\n );\n\n // Render with Field wrapper if label is provided\n if (label) {\n return (\n <SFField\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n description={description}\n error={\n error\n ? typeof error === \"string\"\n ? { message: error, match: true }\n : error\n : undefined\n }\n >\n {textarea}\n </SFField>\n );\n }\n\n // Render bare textarea without Field wrapper\n return textarea;\n }\n);\n\nInputArea.displayName = \"InputArea\";\n\n/** Alias for InputArea — provided for discoverability when migrating from other libraries */\nexport const Textarea = InputArea;\n\n/**\n * InputArea component props\n * @property {ReactNode} [label] - Label content for the textarea (enables Field wrapper)\n * @property {ReactNode} [description] - Helper text displayed below the textarea\n * @property {string | { message: ReactNode, match: FieldErrorMatch }} [error] - Error message or validation error object\n */\nexport type InputAreaProps = {\n onValueChange?: (value: string) => void;\n variant?: \"default\" | \"error\";\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\";\n // Then other custom props\n children?: React.ReactNode;\n className?: string;\n /** Label content for the textarea (enables Field wrapper) - can be a string or any React node */\n label?: ReactNode;\n /** Tooltip content to display next to the label via an info icon */\n labelTooltip?: ReactNode;\n /** Helper text displayed below the textarea */\n description?: ReactNode;\n /** Error message or validation error object */\n error?: string | { message: ReactNode; match: FieldErrorMatch };\n\n // Finally, spread the native input props (least important)\n} & Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\">;\n","import { type PropsWithChildren, useContext } from \"react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { type ButtonProps, Button as ButtonExternal } from \"../button/button\";\nimport {\n Input as InputExternal,\n type InputProps,\n inputVariants,\n} from \"./input\";\n\nexport const SF_INPUT_GROUP_VARIANTS = {\n focusMode: {\n container: {\n classes: \"\",\n description: \"Focus indicator on container (default behavior)\",\n },\n individual: {\n classes: \"\",\n description: \"Focus indicators on individual elements\",\n },\n },\n} as const;\n\nexport const SF_INPUT_GROUP_DEFAULT_VARIANTS = {\n focusMode: \"container\",\n} as const;\n\nexport type SFInputGroupFocusMode =\n keyof typeof SF_INPUT_GROUP_VARIANTS.focusMode;\n\nexport interface SFInputGroupVariantsProps {\n focusMode?: SFInputGroupFocusMode;\n}\n\ninterface InputGroupRootProps extends SFInputGroupVariantsProps {\n className?: string;\n size?: \"xs\" | \"sm\" | \"base\" | \"lg\" | undefined;\n}\n\ninterface InputGroupContextValue extends InputGroupRootProps {\n inputId: string;\n descriptionId: string;\n}\n\nconst InputGroupContext = React.createContext<InputGroupContextValue | null>(\n null\n);\n\nfunction Root({\n size,\n children,\n className,\n focusMode = SF_INPUT_GROUP_DEFAULT_VARIANTS.focusMode,\n}: PropsWithChildren<InputGroupRootProps>) {\n const inputId = React.useId();\n const descriptionId = React.useId();\n const contextValue = React.useMemo(\n () => ({ size, inputId, descriptionId, focusMode }),\n [size, inputId, descriptionId, focusMode]\n );\n\n const isIndividualFocus = focusMode === \"individual\";\n\n return (\n <InputGroupContext.Provider value={contextValue}>\n <div\n className={cn(\n inputVariants({ size, parentFocusIndicator: !isIndividualFocus }),\n \"flex w-full gap-0 border-0 px-0\",\n isIndividualFocus\n ? \"overflow-visible\"\n : \"overflow-hidden shadow-xs ring ring-sf-line focus-within:ring-sf-ring\",\n className\n )}\n >\n {children}\n </div>\n </InputGroupContext.Provider>\n );\n}\n\nfunction Label({ children }: PropsWithChildren<{}>) {\n const context = useContext(InputGroupContext);\n const isIndividualFocus = context?.focusMode === \"individual\";\n\n return (\n <label\n htmlFor={context?.inputId}\n className={cn(\n \"flex h-full items-center p-0 px-2 text-sf-subtle\",\n isIndividualFocus &&\n \"first:rounded-l-[inherit] last:rounded-r-[inherit]\"\n )}\n >\n {children}\n </label>\n );\n}\n\nfunction Input(props: InputProps) {\n const context = useContext(InputGroupContext);\n const isIndividualFocus = context?.focusMode === \"individual\";\n\n return (\n <InputExternal\n id={context?.inputId}\n aria-describedby={context?.descriptionId}\n size={context?.size}\n {...props}\n className={cn(\n \"flex h-full items-center rounded-none border-0 bg-sf-base font-sans\",\n \"grow px-2\",\n isIndividualFocus\n ? \"relative ring ring-sf-line first:rounded-l-[inherit] last:rounded-r-[inherit] focus:z-10 focus:outline\"\n : \"focus:border-sf-fill\",\n props.className\n )}\n />\n );\n}\n\nfunction Description({ children }: PropsWithChildren<{}>) {\n const context = useContext(InputGroupContext);\n const isIndividualFocus = context?.focusMode === \"individual\";\n\n return (\n <span\n id={context?.descriptionId}\n className={cn(\n \"flex h-full items-center p-0 px-2 text-sf-subtle\",\n isIndividualFocus &&\n \"first:rounded-l-[inherit] last:rounded-r-[inherit]\"\n )}\n >\n {children}\n </span>\n );\n}\n\nfunction Button({\n children,\n className,\n ...props\n}: PropsWithChildren<ButtonProps>) {\n const context = useContext(InputGroupContext);\n const isIndividualFocus = context?.focusMode === \"individual\";\n\n return (\n <ButtonExternal\n {...props}\n size={context?.size}\n className={cn(\n \"h-full! rounded-none disabled:bg-sf-overlay disabled:text-sf-inactive!\",\n isIndividualFocus &&\n \"relative ring ring-sf-line first:rounded-l-[inherit] last:rounded-r-[inherit] focus:z-10 focus:outline\",\n className\n )}\n >\n {children}\n </ButtonExternal>\n );\n}\n\nexport const InputGroup = Object.assign(Root, {\n Label,\n Input,\n Button,\n Description,\n});\n"],"mappings":";;;;;;;;;AAOA,IAAa,YAAY,QAAM,YAC5B,OAAO,QAAQ;CACd,MAAM,EACJ,WACA,eACA,OAAO,QACP,UAAU,WACV,UACA,OACA,cACA,aACA,OACA,GAAG,eACD;CAGJ,MAAM,EAAE,aAAa;CACrB,MAAM,eAAe,aAClB,UAAkD;AACjD,aAAW,MAAM;AACjB,kBAAgB,MAAM,OAAO,MAAM;IAErC,CAAC,UAAU,cAAc,CAC1B;CAED,MAAM,WACJ,oBAAC,YAAD;EACO;EACL,WAAW,GACT,cAAc;GAAE;GAAM;GAAS,gBAAgB;GAAM,CAAC,EACtD,eACA,UACD;EACD,UAAU;EACV,GAAI;EACJ,CAAA;AAIJ,KAAI,MACF,QACE,oBAAC,OAAD;EACS;EACG;EACI;EACD;EACb,OACE,QACI,OAAO,UAAU,WACf;GAAE,SAAS;GAAO,OAAO;GAAM,GAC/B,QACF,KAAA;YAGL;EACO,CAAA;AAKd,QAAO;EAEV;AAED,UAAU,cAAc;;AAGxB,IAAa,WAAW;;;AClDxB,IAAa,kCAAkC,EAC7C,WAAW,aACZ;AAmBD,IAAM,oBAAoB,QAAM,cAC9B,KACD;AAED,SAAS,KAAK,EACZ,MACA,UACA,WACA,YAAY,gCAAgC,aACH;CACzC,MAAM,UAAU,QAAM,OAAO;CAC7B,MAAM,gBAAgB,QAAM,OAAO;CACnC,MAAM,eAAe,QAAM,eAClB;EAAE;EAAM;EAAS;EAAe;EAAW,GAClD;EAAC;EAAM;EAAS;EAAe;EAAU,CAC1C;CAED,MAAM,oBAAoB,cAAc;AAExC,QACE,oBAAC,kBAAkB,UAAnB;EAA4B,OAAO;YACjC,oBAAC,OAAD;GACE,WAAW,GACT,cAAc;IAAE;IAAM,sBAAsB,CAAC;IAAmB,CAAC,EACjE,mCACA,oBACI,qBACA,yEACJ,UACD;GAEA;GACG,CAAA;EACqB,CAAA;;AAIjC,SAAS,MAAM,EAAE,YAAmC;CAClD,MAAM,UAAU,WAAW,kBAAkB;CAC7C,MAAM,oBAAoB,SAAS,cAAc;AAEjD,QACE,oBAAC,SAAD;EACE,SAAS,SAAS;EAClB,WAAW,GACT,oDACA,qBACE,qDACH;EAEA;EACK,CAAA;;AAIZ,SAAS,MAAM,OAAmB;CAChC,MAAM,UAAU,WAAW,kBAAkB;CAC7C,MAAM,oBAAoB,SAAS,cAAc;AAEjD,QACE,oBAAC,SAAD;EACE,IAAI,SAAS;EACb,oBAAkB,SAAS;EAC3B,MAAM,SAAS;EACf,GAAI;EACJ,WAAW,GACT,uEACA,aACA,oBACI,2GACA,wBACJ,MAAM,UACP;EACD,CAAA;;AAIN,SAAS,YAAY,EAAE,YAAmC;CACxD,MAAM,UAAU,WAAW,kBAAkB;CAC7C,MAAM,oBAAoB,SAAS,cAAc;AAEjD,QACE,oBAAC,QAAD;EACE,IAAI,SAAS;EACb,WAAW,GACT,oDACA,qBACE,qDACH;EAEA;EACI,CAAA;;AAIX,SAAS,OAAO,EACd,UACA,WACA,GAAG,SAC8B;CACjC,MAAM,UAAU,WAAW,kBAAkB;CAC7C,MAAM,oBAAoB,SAAS,cAAc;AAEjD,QACE,oBAAC,UAAD;EACE,GAAI;EACJ,MAAM,SAAS;EACf,WAAW,GACT,0EACA,qBACE,0GACF,UACD;EAEA;EACc,CAAA;;AAIrB,IAAa,aAAa,OAAO,OAAO,MAAM;CAC5C;CACA;CACA;CACA;CACD,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-YROP2_ox.js";
|
|
3
|
+
import { t as Tooltip } from "./tooltip-Cb7QW-7H.js";
|
|
4
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Info } from "@phosphor-icons/react";
|
|
6
|
+
//#region src/components/label/label.tsx
|
|
7
|
+
/** Label variant definitions (currently empty, reserved for future additions). */
|
|
8
|
+
var SF_LABEL_VARIANTS = {};
|
|
9
|
+
var SF_LABEL_DEFAULT_VARIANTS = {};
|
|
10
|
+
function labelVariants(_props = {}) {
|
|
11
|
+
return cn("text-base font-medium text-sf-default");
|
|
12
|
+
}
|
|
13
|
+
function labelContentVariants() {
|
|
14
|
+
return cn("inline-flex items-center gap-1");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Label component for form fields.
|
|
18
|
+
*
|
|
19
|
+
* Provides a standardized way to display labels with optional indicators:
|
|
20
|
+
* - Optional indicator: gray "(optional)" text when `showOptional={true}`
|
|
21
|
+
* - Tooltip: info icon with hover tooltip for additional context
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Basic label
|
|
25
|
+
* <Label>Email</Label>
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // Optional field with indicator
|
|
29
|
+
* <Label showOptional>Middle Name</Label>
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* // With tooltip
|
|
33
|
+
* <Label tooltip="We'll use this to send you updates">Email</Label>
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // With ReactNode children
|
|
37
|
+
* <Label>
|
|
38
|
+
* <span>Custom label with <strong>bold</strong> text</span>
|
|
39
|
+
* </Label>
|
|
40
|
+
*/
|
|
41
|
+
function Label({ children, showOptional = false, tooltip, className, htmlFor, asContent = false }) {
|
|
42
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
43
|
+
children,
|
|
44
|
+
showOptional && /* @__PURE__ */ jsx("span", {
|
|
45
|
+
className: "font-normal text-sf-strong",
|
|
46
|
+
children: "(optional)"
|
|
47
|
+
}),
|
|
48
|
+
tooltip && /* @__PURE__ */ jsx(Tooltip, {
|
|
49
|
+
content: tooltip,
|
|
50
|
+
children: /* @__PURE__ */ jsx(Info, {
|
|
51
|
+
className: "size-4 cursor-help text-sf-strong",
|
|
52
|
+
"aria-label": "More information"
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
] });
|
|
56
|
+
if (asContent) return /* @__PURE__ */ jsx("span", {
|
|
57
|
+
className: cn(labelContentVariants(), className),
|
|
58
|
+
children: content
|
|
59
|
+
});
|
|
60
|
+
return /* @__PURE__ */ jsx("label", {
|
|
61
|
+
htmlFor,
|
|
62
|
+
className: cn(labelVariants(), labelContentVariants(), className),
|
|
63
|
+
children: content
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
Label.displayName = "Label";
|
|
67
|
+
//#endregion
|
|
68
|
+
export { labelVariants as a, labelContentVariants as i, SF_LABEL_DEFAULT_VARIANTS as n, SF_LABEL_VARIANTS as r, Label as t };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=label-QtJxtJ4u.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label-QtJxtJ4u.js","names":[],"sources":["../src/components/label/label.tsx"],"sourcesContent":["import { Info } from \"@phosphor-icons/react\";\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { Tooltip } from \"../tooltip\";\n\n/** Label variant definitions (currently empty, reserved for future additions). */\nexport const SF_LABEL_VARIANTS = {\n // Label currently has no variant options but structure is ready for future additions\n} as const;\n\nexport const SF_LABEL_DEFAULT_VARIANTS = {} as const;\n\n// Derived types from SF_LABEL_VARIANTS\nexport interface SFLabelVariantsProps {}\n\nexport function labelVariants(_props: SFLabelVariantsProps = {}) {\n return cn(\n // Base styles - when used standalone, apply text styling\n // When used inside Field, the parent FieldBase.Label provides these styles\n \"text-base font-medium text-sf-default\"\n );\n}\n\nexport function labelContentVariants() {\n return cn(\n // Content wrapper styles - always applied\n \"inline-flex items-center gap-1\"\n );\n}\n\n/**\n * Label component props.\n *\n * @example\n * ```tsx\n * <Label>Email</Label>\n * <Label showOptional>Middle Name</Label>\n * <Label tooltip=\"We'll use this to send you updates\">Email</Label>\n * ```\n */\nexport interface LabelProps extends SFLabelVariantsProps {\n /** The label content — can be a string or any React node. */\n children: ReactNode;\n /** When `true`, shows gray \"(optional)\" text after the label. */\n showOptional?: boolean;\n /** Tooltip content displayed next to the label via an info icon. */\n tooltip?: ReactNode;\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** The id of the form element this label is associated with */\n htmlFor?: string;\n /**\n * When true, only renders the inline content (indicators, tooltip) without\n * the outer label element with font styling. Useful when composed inside another\n * label element that already provides the text styling.\n * @default false\n */\n asContent?: boolean;\n}\n\n/**\n * Label component for form fields.\n *\n * Provides a standardized way to display labels with optional indicators:\n * - Optional indicator: gray \"(optional)\" text when `showOptional={true}`\n * - Tooltip: info icon with hover tooltip for additional context\n *\n * @example\n * // Basic label\n * <Label>Email</Label>\n *\n * @example\n * // Optional field with indicator\n * <Label showOptional>Middle Name</Label>\n *\n * @example\n * // With tooltip\n * <Label tooltip=\"We'll use this to send you updates\">Email</Label>\n *\n * @example\n * // With ReactNode children\n * <Label>\n * <span>Custom label with <strong>bold</strong> text</span>\n * </Label>\n */\nexport function Label({\n children,\n showOptional = false,\n tooltip,\n className,\n htmlFor,\n asContent = false,\n}: LabelProps) {\n const content = (\n <>\n {children}\n {showOptional && (\n <span className=\"font-normal text-sf-strong\">(optional)</span>\n )}\n {tooltip && (\n <Tooltip content={tooltip}>\n <Info\n className=\"size-4 cursor-help text-sf-strong\"\n aria-label=\"More information\"\n />\n </Tooltip>\n )}\n </>\n );\n\n // When used as content inside another styled element, just render inline\n if (asContent) {\n return (\n <span className={cn(labelContentVariants(), className)}>{content}</span>\n );\n }\n\n // When used standalone, render as <label> for accessibility\n return (\n <label\n htmlFor={htmlFor}\n className={cn(labelVariants(), labelContentVariants(), className)}\n >\n {content}\n </label>\n );\n}\n\nLabel.displayName = \"Label\";\n"],"mappings":";;;;;;;AAOA,IAAa,oBAAoB,EAEhC;AAED,IAAa,4BAA4B,EAAE;AAK3C,SAAgB,cAAc,SAA+B,EAAE,EAAE;AAC/D,QAAO,GAGL,wCACD;;AAGH,SAAgB,uBAAuB;AACrC,QAAO,GAEL,iCACD;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DH,SAAgB,MAAM,EACpB,UACA,eAAe,OACf,SACA,WACA,SACA,YAAY,SACC;CACb,MAAM,UACJ,qBAAA,UAAA,EAAA,UAAA;EACG;EACA,gBACC,oBAAC,QAAD;GAAM,WAAU;aAA6B;GAAiB,CAAA;EAE/D,WACC,oBAAC,SAAD;GAAS,SAAS;aAChB,oBAAC,MAAD;IACE,WAAU;IACV,cAAW;IACX,CAAA;GACM,CAAA;EAEX,EAAA,CAAA;AAIL,KAAI,UACF,QACE,oBAAC,QAAD;EAAM,WAAW,GAAG,sBAAsB,EAAE,UAAU;YAAG;EAAe,CAAA;AAK5E,QACE,oBAAC,SAAD;EACW;EACT,WAAW,GAAG,eAAe,EAAE,sBAAsB,EAAE,UAAU;YAEhE;EACK,CAAA;;AAIZ,MAAM,cAAc"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-YROP2_ox.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/layer-card/layer-card.tsx
|
|
5
|
+
function layerCardVariants(_props = {}) {
|
|
6
|
+
return cn("flex w-full flex-col overflow-hidden rounded-lg bg-sf-base text-base ring ring-sf-line");
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Elevated card with primary/secondary content layers for dashboard widgets.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <LayerCard>
|
|
14
|
+
* <LayerCard.Secondary>Getting Started</LayerCard.Secondary>
|
|
15
|
+
* <LayerCard.Primary>Quick start guide</LayerCard.Primary>
|
|
16
|
+
* </LayerCard>
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function LayerCardRoot({ children, className }) {
|
|
20
|
+
return /* @__PURE__ */ jsx("div", {
|
|
21
|
+
className: cn(layerCardVariants(), className),
|
|
22
|
+
children
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function LayerCardSecondary({ children, className }) {
|
|
26
|
+
return /* @__PURE__ */ jsx("div", {
|
|
27
|
+
className: cn("flex items-center gap-2 p-2 text-base font-medium text-sf-strong", className),
|
|
28
|
+
children
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function LayerCardPrimary({ children, className }) {
|
|
32
|
+
return /* @__PURE__ */ jsx("div", {
|
|
33
|
+
className: cn("flex flex-col gap-2 overflow-hidden rounded-lg bg-sf-elevated p-4 pr-3 text-inherit no-underline ring ring-sf-fill", className),
|
|
34
|
+
children
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
var LayerCard = Object.assign(LayerCardRoot, {
|
|
38
|
+
Primary: LayerCardPrimary,
|
|
39
|
+
Secondary: LayerCardSecondary
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { LayerCard as t };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=layer-card-BME0eljh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-card-BME0eljh.js","names":[],"sources":["../src/components/layer-card/layer-card.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\n\n/** LayerCard variant definitions (currently empty, reserved for future additions). */\nexport const SF_LAYER_CARD_VARIANTS = {\n // LayerCard currently has no variant options but structure is ready for future additions\n} as const;\n\nexport const SF_LAYER_CARD_DEFAULT_VARIANTS = {} as const;\n\n// Derived types from SF_LAYER_CARD_VARIANTS\nexport interface SFLayerCardVariantsProps {}\n\nexport function layerCardVariants(_props: SFLayerCardVariantsProps = {}) {\n return cn(\n // Base styles\n \"flex w-full flex-col overflow-hidden rounded-lg bg-sf-base text-base ring ring-sf-line\"\n );\n}\n\n/**\n * LayerCard component props.\n *\n * @example\n * ```tsx\n * <LayerCard>\n * <LayerCard.Secondary>Next Steps</LayerCard.Secondary>\n * <LayerCard.Primary>Get started with SF</LayerCard.Primary>\n * </LayerCard>\n * ```\n */\nexport type LayerCardProps = PropsWithChildren<\n SFLayerCardVariantsProps & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n }\n>;\n\n/**\n * Elevated card with primary/secondary content layers for dashboard widgets.\n *\n * @example\n * ```tsx\n * <LayerCard>\n * <LayerCard.Secondary>Getting Started</LayerCard.Secondary>\n * <LayerCard.Primary>Quick start guide</LayerCard.Primary>\n * </LayerCard>\n * ```\n */\nfunction LayerCardRoot({ children, className }: LayerCardProps) {\n return <div className={cn(layerCardVariants(), className)}>{children}</div>;\n}\n\nfunction LayerCardSecondary({ children, className }: LayerCardProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 p-2 text-base font-medium text-sf-strong\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction LayerCardPrimary({ children, className }: LayerCardProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-2 overflow-hidden rounded-lg bg-sf-elevated p-4 pr-3 text-inherit no-underline ring ring-sf-fill\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\ntype LayerCardComponent = FC<LayerCardProps> & {\n Primary: FC<LayerCardProps>;\n Secondary: FC<LayerCardProps>;\n};\n\nconst LayerCard = Object.assign(LayerCardRoot, {\n Primary: LayerCardPrimary,\n Secondary: LayerCardSecondary,\n}) as LayerCardComponent;\n\nexport { LayerCard };\n"],"mappings":";;;;AAcA,SAAgB,kBAAkB,SAAmC,EAAE,EAAE;AACvE,QAAO,GAEL,yFACD;;;;;;;;;;;;;AAgCH,SAAS,cAAc,EAAE,UAAU,aAA6B;AAC9D,QAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,mBAAmB,EAAE,UAAU;EAAG;EAAe,CAAA;;AAG7E,SAAS,mBAAmB,EAAE,UAAU,aAA6B;AACnE,QACE,oBAAC,OAAD;EACE,WAAW,GACT,oEACA,UACD;EAEA;EACG,CAAA;;AAIV,SAAS,iBAAiB,EAAE,UAAU,aAA6B;AACjE,QACE,oBAAC,OAAD;EACE,WAAW,GACT,sHACA,UACD;EAEA;EACG,CAAA;;AASV,IAAM,YAAY,OAAO,OAAO,eAAe;CAC7C,SAAS;CACT,WAAW;CACZ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, forwardRef, useContext } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/utils/link-provider.tsx
|
|
5
|
+
var DefaultLinkComponent = forwardRef(function DefaultAnchor({ to, href, ...rest }, ref) {
|
|
6
|
+
return /* @__PURE__ */ jsx("a", {
|
|
7
|
+
ref,
|
|
8
|
+
href: href ?? to ?? void 0,
|
|
9
|
+
...rest
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
var LinkComponentContext = createContext(DefaultLinkComponent);
|
|
13
|
+
function useLinkComponent() {
|
|
14
|
+
return useContext(LinkComponentContext);
|
|
15
|
+
}
|
|
16
|
+
function LinkProvider({ component, children }) {
|
|
17
|
+
return /* @__PURE__ */ jsx(LinkComponentContext.Provider, {
|
|
18
|
+
value: component ?? DefaultLinkComponent,
|
|
19
|
+
children
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { useLinkComponent as n, LinkProvider as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=link-provider-BUZKXaNE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-provider-BUZKXaNE.js","names":[],"sources":["../src/utils/link-provider.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n type AnchorHTMLAttributes,\n type ForwardRefExoticComponent,\n type ReactNode,\n type RefAttributes,\n useContext,\n} from \"react\";\n\ntype LinkComponentProps = AnchorHTMLAttributes<HTMLAnchorElement> & {\n to?: string;\n};\n\nconst DefaultLinkComponent = forwardRef<HTMLAnchorElement, LinkComponentProps>(\n function DefaultAnchor({ to, href, ...rest }, ref) {\n // Children and other content props are passed via ...rest spread\n // oxlint-disable-next-line anchor-has-content\n return <a ref={ref} href={href ?? to ?? undefined} {...rest} />;\n }\n);\n\ntype ForwardLinkComponent = ForwardRefExoticComponent<\n LinkComponentProps & RefAttributes<HTMLAnchorElement>\n>;\n\nconst LinkComponentContext =\n createContext<ForwardLinkComponent>(DefaultLinkComponent);\n\nexport function useLinkComponent() {\n return useContext(LinkComponentContext);\n}\n\nexport function LinkProvider({\n component,\n children,\n}: {\n component?: ForwardLinkComponent;\n children: ReactNode;\n}) {\n return (\n <LinkComponentContext.Provider value={component ?? DefaultLinkComponent}>\n {children}\n </LinkComponentContext.Provider>\n );\n}\n\nexport type { LinkComponentProps };\n"],"mappings":";;;;AAcA,IAAM,uBAAuB,WAC3B,SAAS,cAAc,EAAE,IAAI,MAAM,GAAG,QAAQ,KAAK;AAGjD,QAAO,oBAAC,KAAD;EAAQ;EAAK,MAAM,QAAQ,MAAM,KAAA;EAAW,GAAI;EAAQ,CAAA;EAElE;AAMD,IAAM,uBACJ,cAAoC,qBAAqB;AAE3D,SAAgB,mBAAmB;AACjC,QAAO,WAAW,qBAAqB;;AAGzC,SAAgB,aAAa,EAC3B,WACA,YAIC;AACD,QACE,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO,aAAa;EAChD;EAC6B,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/loader/loader.tsx
|
|
4
|
+
/** Loader size variant definitions mapping sizes to their pixel values. */
|
|
5
|
+
var SF_LOADER_VARIANTS = { size: {
|
|
6
|
+
sm: {
|
|
7
|
+
value: 16,
|
|
8
|
+
description: "Small loader for inline use"
|
|
9
|
+
},
|
|
10
|
+
base: {
|
|
11
|
+
value: 24,
|
|
12
|
+
description: "Default loader size"
|
|
13
|
+
},
|
|
14
|
+
lg: {
|
|
15
|
+
value: 32,
|
|
16
|
+
description: "Large loader for prominent loading states"
|
|
17
|
+
}
|
|
18
|
+
} };
|
|
19
|
+
var SF_LOADER_DEFAULT_VARIANTS = { size: "base" };
|
|
20
|
+
function loaderVariants({ size = SF_LOADER_DEFAULT_VARIANTS.size } = {}) {
|
|
21
|
+
if (typeof size === "number") return size;
|
|
22
|
+
return SF_LOADER_VARIANTS.size[size].value;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Animated circular spinner for indicating loading states.
|
|
26
|
+
* Uses CSS keyframe animations for broad compatibility.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```tsx
|
|
30
|
+
* <Loader />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
var Loader = ({ className, size = SF_LOADER_DEFAULT_VARIANTS.size }) => {
|
|
34
|
+
const sizeValue = loaderVariants({ size });
|
|
35
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
36
|
+
width: "24",
|
|
37
|
+
height: "24",
|
|
38
|
+
viewBox: "0 0 24 24",
|
|
39
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
40
|
+
stroke: "currentColor",
|
|
41
|
+
className,
|
|
42
|
+
style: {
|
|
43
|
+
height: sizeValue,
|
|
44
|
+
width: sizeValue
|
|
45
|
+
},
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ jsx("style", { children: `
|
|
48
|
+
@keyframes sf-loader-spin { to { transform: rotate(360deg); } }
|
|
49
|
+
@keyframes sf-loader-dash {
|
|
50
|
+
0% { stroke-dasharray: 0 150; stroke-dashoffset: 0; }
|
|
51
|
+
50% { stroke-dasharray: 42 150; stroke-dashoffset: -16; }
|
|
52
|
+
100% { stroke-dasharray: 42 150; stroke-dashoffset: -59; }
|
|
53
|
+
}
|
|
54
|
+
.sf-loader-arc {
|
|
55
|
+
transform-origin: 12px 12px;
|
|
56
|
+
animation: sf-loader-spin 2s linear infinite,
|
|
57
|
+
sf-loader-dash 1.5s ease-in-out infinite;
|
|
58
|
+
}
|
|
59
|
+
` }),
|
|
60
|
+
/* @__PURE__ */ jsx("circle", {
|
|
61
|
+
cx: "12",
|
|
62
|
+
cy: "12",
|
|
63
|
+
r: "9.5",
|
|
64
|
+
fill: "none",
|
|
65
|
+
strokeWidth: "2",
|
|
66
|
+
strokeLinecap: "round",
|
|
67
|
+
className: "sf-loader-arc"
|
|
68
|
+
}),
|
|
69
|
+
/* @__PURE__ */ jsx("circle", {
|
|
70
|
+
cx: "12",
|
|
71
|
+
cy: "12",
|
|
72
|
+
r: "9.5",
|
|
73
|
+
fill: "none",
|
|
74
|
+
opacity: .1,
|
|
75
|
+
strokeWidth: "2",
|
|
76
|
+
strokeLinecap: "round"
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { Loader as t };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=loader-DAcc-Uag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader-DAcc-Uag.js","names":[],"sources":["../src/components/loader/loader.tsx"],"sourcesContent":["/** Loader size variant definitions mapping sizes to their pixel values. */\nexport const SF_LOADER_VARIANTS = {\n size: {\n sm: {\n value: 16,\n description: \"Small loader for inline use\",\n },\n base: {\n value: 24,\n description: \"Default loader size\",\n },\n lg: {\n value: 32,\n description: \"Large loader for prominent loading states\",\n },\n },\n} as const;\n\nexport const SF_LOADER_DEFAULT_VARIANTS = {\n size: \"base\",\n} as const;\n\n// Derived types from SF_LOADER_VARIANTS\nexport type SFLoaderSize = keyof typeof SF_LOADER_VARIANTS.size;\n\nexport interface SFLoaderVariantsProps {\n /**\n * Size of the loader. Use a preset name or a custom pixel number.\n * - `\"sm\"` — 16px, small loader for inline use\n * - `\"base\"` — 24px, default loader size\n * - `\"lg\"` — 32px, large loader for prominent loading states\n * @default \"base\"\n */\n size?: SFLoaderSize | number;\n}\n\nexport function loaderVariants({\n size = SF_LOADER_DEFAULT_VARIANTS.size,\n}: SFLoaderVariantsProps = {}): number {\n if (typeof size === \"number\") return size;\n return SF_LOADER_VARIANTS.size[size].value;\n}\n\n/**\n * Loader component props.\n *\n * @example\n * ```tsx\n * <Loader />\n * <Loader size=\"sm\" />\n * <Loader size={24} />\n * ```\n */\nexport interface LoaderProps {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /**\n * Size of the spinner. Use a preset name or a custom pixel number.\n * - `\"sm\"` — 16px, for inline use\n * - `\"base\"` — 24px, default size\n * - `\"lg\"` — 32px, for prominent loading states\n * @default \"base\"\n */\n size?: SFLoaderSize | number;\n}\n\n/**\n * Animated circular spinner for indicating loading states.\n * Uses CSS keyframe animations for broad compatibility.\n *\n * @example\n * ```tsx\n * <Loader />\n * ```\n */\nexport const Loader = ({\n className,\n size = SF_LOADER_DEFAULT_VARIANTS.size,\n}: LoaderProps) => {\n const sizeValue = loaderVariants({ size });\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n className={className}\n style={{ height: sizeValue, width: sizeValue }}\n >\n <style>{`\n @keyframes sf-loader-spin { to { transform: rotate(360deg); } }\n @keyframes sf-loader-dash {\n 0% { stroke-dasharray: 0 150; stroke-dashoffset: 0; }\n 50% { stroke-dasharray: 42 150; stroke-dashoffset: -16; }\n 100% { stroke-dasharray: 42 150; stroke-dashoffset: -59; }\n }\n .sf-loader-arc {\n transform-origin: 12px 12px;\n animation: sf-loader-spin 2s linear infinite,\n sf-loader-dash 1.5s ease-in-out infinite;\n }\n `}</style>\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9.5\"\n fill=\"none\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n className=\"sf-loader-arc\"\n />\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9.5\"\n fill=\"none\"\n opacity={0.1}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n};\n"],"mappings":";;;;AACA,IAAa,qBAAqB,EAChC,MAAM;CACJ,IAAI;EACF,OAAO;EACP,aAAa;EACd;CACD,MAAM;EACJ,OAAO;EACP,aAAa;EACd;CACD,IAAI;EACF,OAAO;EACP,aAAa;EACd;CACF,EACF;AAED,IAAa,6BAA6B,EACxC,MAAM,QACP;AAgBD,SAAgB,eAAe,EAC7B,OAAO,2BAA2B,SACT,EAAE,EAAU;AACrC,KAAI,OAAO,SAAS,SAAU,QAAO;AACrC,QAAO,mBAAmB,KAAK,MAAM;;;;;;;;;;;AAmCvC,IAAa,UAAU,EACrB,WACA,OAAO,2BAA2B,WACjB;CACjB,MAAM,YAAY,eAAe,EAAE,MAAM,CAAC;AAC1C,QACE,qBAAC,OAAD;EACE,OAAM;EACN,QAAO;EACP,SAAQ;EACR,OAAM;EACN,QAAO;EACI;EACX,OAAO;GAAE,QAAQ;GAAW,OAAO;GAAW;YAPhD;GASE,oBAAC,SAAD,EAAA,UAAQ;;;;;;;;;;;;SAYE,CAAA;GACV,oBAAC,UAAD;IACE,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;IACL,aAAY;IACZ,eAAc;IACd,WAAU;IACV,CAAA;GACF,oBAAC,UAAD;IACE,IAAG;IACH,IAAG;IACH,GAAE;IACF,MAAK;IACL,SAAS;IACT,aAAY;IACZ,eAAc;IACd,CAAA;GACE"}
|
package/dist/logo.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" id="uuid-ef41d386-2acd-4375-81c8-90a2a61421af" viewBox="0 0 286.96 55.03"><defs><style> .cls-1 { fill: #4188ff; } .cls-2 { fill: #00a7a8; } </style></defs><path class="cls-2" d="M285.05,10.58c-1-.7-2.22-1-3.45-.78-1.22.22-2.3.89-3.04,1.89-.74,1-1.04,2.26-.85,3.48s.85,2.3,1.85,3.04c1,.7,2.22,1,3.45.78,1.22-.22,2.3-.89,3.04-1.89s1.04-2.26.85-3.48c-.22-1.22-.89-2.33-1.85-3.04Z"></path><path class="cls-2" d="M273.11,39.83v-7.89c0-1.78-.41-3.26-1.22-4.48-.78-1.22-1.93-2.15-3.41-2.78-1.48-.63-3.26-.96-5.33-.96-3.15,0-5.56.63-7.3,1.85s-2.78,2.89-3.19,4.96l6.22,1.48c.26-1.22.7-2.04,1.37-2.52.7-.48,1.52-.74,2.45-.74s1.7.3,2.26.93c.59.59.85,1.37.85,2.37v.63l-7.45,1.56c-2,.41-3.48,1.11-4.45,2.15-.93,1-1.37,2.3-1.37,3.85,0,1.3.3,2.37.85,3.26.59.85,1.44,1.52,2.56,2,1.07.44,2.37.7,3.85.7,1.26,0,2.48-.19,3.63-.59,1.19-.41,2.11-1.04,2.85-1.85.22-.26.41-.52.56-.82.11.37.26.74.48,1.07.48.7,1.15,1.26,2.04,1.63.85.33,1.85.52,2.96.52,1.22,0,2.3-.19,3.15-.59l.44-4.19c-.33.11-.74.19-1.26.19-1.04-.07-1.56-.63-1.56-1.74h.02ZM265.51,39.38c-.19.44-.48.85-.82,1.19-.33.3-.74.52-1.22.63-.44.15-.89.22-1.37.22-.63,0-1.19-.15-1.63-.48-.44-.33-.7-.78-.7-1.41,0-.67.19-1.15.59-1.48.44-.33,1.07-.59,1.93-.78l3.48-.74v1.19c.07.67-.04,1.22-.26,1.67h0Z"></path><path class="cls-2" d="M244.91,38.31c-1.33,0-2.37.33-3.15,1.04-.78.7-1.19,1.67-1.19,2.89s.37,2.15,1.19,2.85c.78.7,1.82,1.04,3.15,1.04s2.41-.33,3.15-1.04c.78-.7,1.19-1.63,1.19-2.85s-.37-2.19-1.19-2.89c-.74-.67-1.82-1.04-3.15-1.04Z"></path><path class="cls-2" d="M286.11,24.16h-7.34v21.56h7.34v-21.56Z"></path><path class="cls-1" d="M33.33,14.64c-1.48,0-2.59.3-3.26.85s-1,1.44-1,2.67.33,2.11,1,2.67,1.74.85,3.26.85,2.56-.26,3.22-.82c.7-.59,1.04-1.48,1.04-2.67s-.33-2.11-1.04-2.67c-.7-.59-1.78-.89-3.22-.89h0Z"></path><path class="cls-1" d="M112.39,39.83v-7.89c0-1.78-.41-3.26-1.22-4.48-.78-1.22-1.93-2.15-3.41-2.78-1.48-.63-3.26-.96-5.33-.96-3.15,0-5.56.63-7.3,1.85s-2.78,2.89-3.19,4.96l6.22,1.48c.26-1.22.7-2.04,1.37-2.52.7-.48,1.52-.74,2.45-.74s1.7.3,2.26.93c.59.59.85,1.37.85,2.37v.63l-7.45,1.56c-2,.41-3.48,1.11-4.45,2.15-.93,1-1.37,2.3-1.37,3.85,0,1.3.3,2.37.85,3.26.59.85,1.44,1.52,2.56,2,1.07.44,2.37.7,3.85.7,1.26,0,2.48-.19,3.63-.59,1.19-.41,2.11-1.04,2.85-1.85.22-.26.41-.52.56-.82.11.37.26.74.48,1.07.48.7,1.15,1.26,2.04,1.63.85.33,1.85.52,2.96.52,1.22,0,2.3-.19,3.15-.59l.44-4.19c-.33.11-.74.19-1.26.19-1.04-.07-1.56-.63-1.56-1.74h.02ZM104.84,39.38c-.19.44-.48.85-.82,1.19-.33.3-.74.52-1.22.63-.44.15-.89.22-1.37.22-.63,0-1.19-.15-1.63-.48-.44-.33-.7-.78-.7-1.41,0-.67.19-1.15.59-1.48.44-.33,1.07-.59,1.93-.78l3.48-.74v1.19c.04.67-.07,1.22-.26,1.67h0Z"></path><path class="cls-1" d="M84.38,24.6c-1.07-.59-2.37-.85-3.89-.85-1.37,0-2.63.26-3.74.82-1.07.52-2,1.3-2.78,2.33-.33.48-.59,1-.85,1.59l-.22-4.33h-6.56v21.6h7.34v-11.45c0-1.22.19-2.19.52-2.89s.82-1.22,1.41-1.56c.59-.33,1.26-.52,1.93-.52.89,0,1.63.3,2.19.85.59.59.85,1.59.85,3.11v12.45h7.34v-14.37c0-1.7-.33-3.11-.96-4.22-.56-1.15-1.44-1.96-2.56-2.56h-.02Z"></path><path class="cls-1" d="M10.84,22.93c.67-.22,1.52-.33,2.59-.33,1.82,0,3.41.33,4.82,1,1.44.63,2.78,1.59,4,2.89l3.63-4.82c-1.48-1.59-3.26-2.78-5.3-3.59-2-.85-4.33-1.26-7-1.26s-4.78.41-6.59,1.22c-1.85.82-3.26,1.93-4.22,3.33-.96,1.37-1.48,2.96-1.48,4.74,0,1.59.37,2.89,1.07,3.96.7,1.04,1.7,1.89,2.93,2.52,1.26.59,2.7,1.07,4.3,1.48l5.26,1.15c1.22.3,2.04.63,2.45,1.07.44.41.63.93.63,1.52s-.15,1-.48,1.41-.82.7-1.52.93c-.67.19-1.48.3-2.52.3-1.3,0-2.56-.19-3.85-.56-1.22-.37-2.37-.89-3.45-1.52-1.04-.67-1.93-1.41-2.63-2.26l-3.48,4.96c.96,1,2.11,1.89,3.48,2.67,1.37.78,2.93,1.37,4.67,1.82,1.74.41,3.52.59,5.45.59,2.33,0,4.41-.33,6.22-1.04,1.82-.7,3.22-1.78,4.26-3.15,1.04-1.41,1.56-3.11,1.56-5.15s-.67-3.78-2-5.04c-1.33-1.26-3.41-2.22-6.26-2.89l-4.78-1.07c-1.26-.3-2.19-.63-2.78-1.04-.56-.44-.82-.96-.82-1.56,0-.52.15-.96.44-1.37s.78-.7,1.41-.93v.02Z"></path><path class="cls-1" d="M36.96,24.16h-7.3v21.56h7.34v-21.56h-.04Z"></path><path class="cls-1" d="M62.64,23.19c.19,0,.33,0,.52.04.19,0,.33.04.52.07l-.59-4.93c-.11-.04-.26-.04-.37-.04h-.3c-1.37,0-2.52.33-3.45,1.04-.89.7-1.56,1.59-2,2.67-.3.7-.44,1.44-.56,2.22-1.33-.37-2.82-.52-4.52-.52-2.22,0-4.11.3-5.67.85-1.56.59-2.74,1.41-3.59,2.52-.82,1.07-1.22,2.37-1.22,3.96,0,2.33.89,4.11,2.63,5.41.26.19.56.37.85.52-.67.22-1.26.56-1.78.96-1.07.85-1.63,2-1.63,3.37s.44,2.48,1.3,3.26c.48.44,1.07.82,1.85,1.07-1.15.19-2,.52-2.63,1-.96.74-1.48,1.7-1.48,2.93,0,1.67.85,3,2.59,3.96s4.56,1.48,8.45,1.48c2.41,0,4.48-.3,6.26-.93,1.78-.59,3.15-1.44,4.15-2.63.96-1.19,1.48-2.67,1.48-4.45,0-1.96-.67-3.45-2.04-4.48-1.33-1.07-3.22-1.59-5.74-1.59h-6.85c-.82,0-1.41-.11-1.82-.33-.41-.26-.59-.63-.59-1.11,0-.44.22-.85.7-1.15.19-.15.44-.22.78-.33,1.19.26,2.52.37,4,.37,2.19,0,4.04-.26,5.59-.82,1.56-.59,2.74-1.41,3.52-2.52.85-1.07,1.26-2.41,1.26-3.96s-.41-2.89-1.26-3.96c-.52-.67-1.15-1.26-1.96-1.74.15-.48.37-.89.74-1.26.67-.67,1.59-.96,2.85-.96h0ZM47.86,46.68h7.71c.85,0,1.41.11,1.74.33.33.26.48.59.48,1.04s-.22.82-.7,1.11c-.44.33-1.15.59-2.07.78-.89.19-2.04.3-3.41.3-1.74,0-3.11-.19-4.11-.56-.96-.33-1.48-.85-1.48-1.52,0-.44.15-.78.48-1.07.37-.26.82-.41,1.37-.41h0ZM54.15,33.34c-.59.56-1.37.82-2.3.82s-1.74-.26-2.33-.82-.85-1.3-.85-2.3.3-1.78.85-2.33c.59-.56,1.37-.82,2.33-.82s1.67.26,2.3.82c.59.56.93,1.33.93,2.33-.04,1-.33,1.78-.93,2.3Z"></path><path class="cls-1" d="M132.7,45.76h7.41v-10.97h11.74v-5.74h-11.74v-6.04h14.71v-5.74h-22.12v28.49h0Z"></path><path class="cls-1" d="M127.4,41.05c-.74,0-1.3-.19-1.59-.59-.33-.41-.48-1.07-.48-2.04V15.01h-7.34v24.34c0,2.41.52,4.15,1.56,5.22s2.7,1.59,5,1.59c.82,0,1.63-.11,2.45-.3.85-.19,1.52-.44,2.04-.78l.48-4.41c-.41.11-.74.19-1.04.26-.3.07-.67.11-1.07.11h0Z"></path><path class="cls-1" d="M167.89,41.05c-.74,0-1.3-.19-1.59-.59-.33-.41-.48-1.07-.48-2.04V15.01h-7.34v24.34c0,2.41.52,4.15,1.56,5.22s2.7,1.59,5,1.59c.82,0,1.63-.11,2.45-.3.85-.19,1.52-.44,2.04-.78l.48-4.41c-.41.11-.74.19-1.04.26-.26.07-.63.11-1.07.11h0Z"></path><path class="cls-1" d="M232.24,25.08c-1.59-.89-3.52-1.33-5.78-1.33s-4.19.44-5.89,1.33-3,2.19-3.96,3.85c-.96,1.67-1.41,3.67-1.41,6.04s.48,4.37,1.41,6.04c.96,1.67,2.3,2.96,4,3.85,1.74.89,3.82,1.33,6.22,1.33,1.48,0,2.93-.22,4.26-.63,1.37-.44,2.56-1.07,3.52-1.89,1-.85,1.7-1.93,2.11-3.15l-5.85-1.93c-.33.78-.82,1.37-1.48,1.82-.63.44-1.48.63-2.59.63-.96,0-1.82-.19-2.52-.56-.7-.41-1.22-1.04-1.59-1.89-.19-.48-.37-1.07-.44-1.74h14.71c.04-.33.11-.78.11-1.3.04-.52.04-1.04.04-1.56,0-2-.41-3.74-1.26-5.26-.74-1.59-1.96-2.82-3.59-3.67l-.02.02ZM224.13,29.53c.67-.44,1.44-.63,2.37-.63,1.3,0,2.26.44,2.85,1.37.44.67.74,1.56.85,2.63h-7.85c.07-.48.19-.93.3-1.33.33-.93.82-1.63,1.48-2.04Z"></path><path class="cls-1" d="M192.38,39.83v-7.89c0-1.78-.41-3.26-1.22-4.48-.78-1.22-1.93-2.15-3.41-2.78-1.48-.63-3.26-.96-5.33-.96-3.15,0-5.56.63-7.3,1.85s-2.78,2.89-3.19,4.96l6.22,1.48c.26-1.22.7-2.04,1.37-2.52.7-.48,1.52-.74,2.45-.74s1.7.3,2.26.93c.59.59.85,1.37.85,2.37v.63l-7.45,1.56c-2,.41-3.48,1.11-4.45,2.15-.93,1-1.37,2.3-1.37,3.85,0,1.3.3,2.37.85,3.26.59.85,1.44,1.52,2.56,2,1.07.44,2.37.7,3.85.7,1.26,0,2.48-.19,3.63-.59,1.19-.41,2.11-1.04,2.85-1.85.22-.26.41-.52.56-.82.11.37.26.74.48,1.07.48.7,1.15,1.26,2.04,1.63.85.33,1.85.52,2.96.52,1.22,0,2.3-.19,3.15-.59l.44-4.19c-.33.11-.74.19-1.26.19-1.07-.07-1.56-.63-1.56-1.74h.02ZM184.78,39.38c-.19.44-.48.85-.82,1.19-.33.3-.74.52-1.22.63-.44.15-.89.22-1.37.22-.63,0-1.19-.15-1.63-.48-.44-.33-.7-.78-.7-1.41,0-.67.19-1.15.59-1.48.44-.33,1.07-.59,1.93-.78l3.48-.74v1.19c.04.67-.07,1.22-.26,1.67h0Z"></path><path class="cls-1" d="M211.35,23.75c-1.67,0-3.04.44-4.15,1.33-1.07.89-1.89,2.15-2.41,3.74l-.3-4.67h-6.48v21.56h7.34v-10.86c0-1.11.22-2.04.63-2.78.44-.74,1.07-1.3,1.82-1.67s1.56-.56,2.41-.56c.63,0,1.15.04,1.59.11.44.04.85.15,1.11.26l.74-6.04c-.22-.15-.56-.26-.96-.33-.33-.07-.78-.11-1.33-.11v.02Z"></path><path class="cls-2" d="M184.7,18.26v-.02c-5.88-1.14-11.76-2.28-17.64-3.43,0-.05,0-.1-.02-.15,9.65-3.57,19.3-7.15,29.02-10.75-.23-.12-.35-.05-.47,0-3.14.95-6.28,1.9-9.43,2.86-7.19,2.18-14.39,4.35-21.58,6.54-.49.15-.62.15-.52-.44.51-3,.98-6,1.45-9.01.2-1.25.39-2.51.58-3.76-.04,0-.07-.02-.11-.03,0-.02,0-.04,0-.06v.06h-.03c-1.09,3.57-2.19,7.14-3.33,10.87-.37-1.35-.68-2.52-1-3.69-.05,0-.1.01-.15.02v4.36s-.1.03-.15.04c-1.76-2.54-3.53-5.09-5.29-7.63-.03.03-.06.06-.09.09,1.61,3.19,3.22,6.39,4.88,9.68-6.91-.65-13.65-1.29-20.4-1.93v.07h-.12l.12.02v.02c5.89,1.14,11.79,2.29,17.69,3.43v.13c-9.77,3.62-19.55,7.25-29.38,10.89.17.12.27.04.37.01,3-.91,6-1.81,8.99-2.72,7.48-2.26,14.97-4.53,22.45-6.79.23-.07.67-.44.55.29-.59,3.55-1.15,7.11-1.72,10.67-.12.74-.22,1.48-.33,2.21.03,0,.06.01.1.02v.08l.02-.08h.03c1.09-3.56,2.18-7.11,3.32-10.84.37,1.35.68,2.52,1,3.69l.14-.02v-4.34c.05-.02.11-.03.16-.05,1.76,2.54,3.52,5.07,5.29,7.61.03-.02.07-.04.1-.07-1.61-3.2-3.22-6.39-4.88-9.68,6.9.65,13.65,1.29,20.4,1.93v-.07h.13l-.13-.02h-.03Z"></path></svg>
|