@signalflare-ai/ui 0.5.0 → 1.1.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 +129 -1
- package/ai/USAGE.md +64 -0
- package/ai/component-registry.json +563 -619
- package/ai/component-registry.md +224 -85
- package/ai/schemas.ts +545 -102
- package/bin/sf.js +2 -3
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +1659 -5532
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/{ai-actions-DG1dhDMP.js → ai-actions-DSVeQn4e.js} +1 -1
- package/dist/{ai-actions-DG1dhDMP.js.map → ai-actions-DSVeQn4e.js.map} +1 -1
- package/dist/{ai-agent-card-BbtL4NII.js → ai-agent-card-BXHwhWAU.js} +1 -1
- package/dist/{ai-agent-card-BbtL4NII.js.map → ai-agent-card-BXHwhWAU.js.map} +1 -1
- package/dist/{ai-approval-Mb7-BY6i.js → ai-approval-aa0qvjFN.js} +1 -1
- package/dist/{ai-approval-Mb7-BY6i.js.map → ai-approval-aa0qvjFN.js.map} +1 -1
- package/dist/{ai-code-block-BI_z0UVR.js → ai-code-block-BgtIxtZZ.js} +1 -1
- package/dist/{ai-code-block-BI_z0UVR.js.map → ai-code-block-BgtIxtZZ.js.map} +1 -1
- package/dist/{ai-conversation-DYtExcrw.js → ai-conversation-CArP7C8K.js} +1 -1
- package/dist/{ai-conversation-DYtExcrw.js.map → ai-conversation-CArP7C8K.js.map} +1 -1
- package/dist/{ai-info-banner-BpzauUAY.js → ai-info-banner-uFxHHwBA.js} +1 -1
- package/dist/{ai-info-banner-BpzauUAY.js.map → ai-info-banner-uFxHHwBA.js.map} +1 -1
- package/dist/{ai-message-CV8SBoHM.js → ai-message-BjnFznXy.js} +1 -1
- package/dist/{ai-message-CV8SBoHM.js.map → ai-message-BjnFznXy.js.map} +1 -1
- package/dist/{ai-mission-header-ByYkJ6YP.js → ai-mission-header-08__gULL.js} +1 -1
- package/dist/{ai-mission-header-ByYkJ6YP.js.map → ai-mission-header-08__gULL.js.map} +1 -1
- package/dist/ai-part-group-DBtgTgAn.js +277 -0
- package/dist/ai-part-group-DBtgTgAn.js.map +1 -0
- package/dist/ai-prompt-input-CuluUzpf.js +1996 -0
- package/dist/ai-prompt-input-CuluUzpf.js.map +1 -0
- package/dist/{ai-question-Dp1g9k2o.js → ai-question-CHHoDJMg.js} +1 -1
- package/dist/{ai-question-Dp1g9k2o.js.map → ai-question-CHHoDJMg.js.map} +1 -1
- package/dist/{ai-reasoning-UAmNx_LD.js → ai-reasoning-CnL6ZSr5.js} +84 -5
- package/dist/ai-reasoning-CnL6ZSr5.js.map +1 -0
- package/dist/{ai-response-BWoVsNQG.js → ai-response-BEUg3xvd.js} +13 -16
- package/dist/ai-response-BEUg3xvd.js.map +1 -0
- package/dist/{ai-shimmer-BpOmfonu.js → ai-shimmer-By5_L05p.js} +1 -1
- package/dist/{ai-shimmer-BpOmfonu.js.map → ai-shimmer-By5_L05p.js.map} +1 -1
- package/dist/{ai-status-badge-WhbKVeqn.js → ai-status-badge-BGYGWYF6.js} +1 -1
- package/dist/{ai-status-badge-WhbKVeqn.js.map → ai-status-badge-BGYGWYF6.js.map} +1 -1
- package/dist/{ai-streaming-text-ClL7FwvD.js → ai-streaming-text-CMfoThV0.js} +1 -1
- package/dist/{ai-streaming-text-ClL7FwvD.js.map → ai-streaming-text-CMfoThV0.js.map} +1 -1
- package/dist/{ai-subagent-BruGN1UE.js → ai-subagent-DcPRqkAA.js} +1 -1
- package/dist/{ai-subagent-BruGN1UE.js.map → ai-subagent-DcPRqkAA.js.map} +1 -1
- package/dist/{ai-suggestion-CNsCZj5P.js → ai-suggestion-MgeCg5Ar.js} +1 -1
- package/dist/{ai-suggestion-CNsCZj5P.js.map → ai-suggestion-MgeCg5Ar.js.map} +1 -1
- package/dist/{ai-task-list-B9CpMDYN.js → ai-task-list-Da9zIm00.js} +9 -12
- package/dist/ai-task-list-Da9zIm00.js.map +1 -0
- package/dist/{ai-timeline-Bb5ntsr3.js → ai-timeline-Cwu045IR.js} +1 -1
- package/dist/ai-timeline-Cwu045IR.js.map +1 -0
- package/dist/{ai-tool-BGH8nQ_D.js → ai-tool-Cn1O4xjP.js} +168 -11
- package/dist/ai-tool-Cn1O4xjP.js.map +1 -0
- package/dist/{ai-usage-bar-BI-p-JBk.js → ai-usage-bar-DjS12DMp.js} +1 -1
- package/dist/{ai-usage-bar-BI-p-JBk.js.map → ai-usage-bar-DjS12DMp.js.map} +1 -1
- package/dist/catalog.js +3 -3
- package/dist/catalog.js.map +1 -1
- package/dist/{chart-Bes4MN3C.js → chart-BK3sVPnD.js} +442 -248
- package/dist/chart-BK3sVPnD.js.map +1 -0
- package/dist/{checkbox-CPX7lBaU.js → checkbox-DYhUmZNw.js} +4 -4
- package/dist/checkbox-DYhUmZNw.js.map +1 -0
- package/dist/{clipboard-text-92YeCybc.js → clipboard-text-ssybngLw.js} +2 -2
- package/dist/{clipboard-text-92YeCybc.js.map → clipboard-text-ssybngLw.js.map} +1 -1
- package/dist/{code-DE1Yy1Cu.js → code-Cx-QSoOT.js} +2 -2
- package/dist/{code-DE1Yy1Cu.js.map → code-Cx-QSoOT.js.map} +1 -1
- package/dist/{combobox-B0bLdsX8.js → combobox-C0iW6a0r.js} +2 -2
- package/dist/{combobox-B0bLdsX8.js.map → combobox-C0iW6a0r.js.map} +1 -1
- package/dist/command-line/cli.js +22 -27
- package/dist/{command-palette-CBTY8EiF.js → command-palette-DGzioeki.js} +2 -2
- package/dist/command-palette-DGzioeki.js.map +1 -0
- package/dist/components/ai-actions.js +1 -1
- package/dist/components/ai-agent-card.js +1 -1
- package/dist/components/ai-approval.js +1 -1
- package/dist/components/ai-code-block.js +1 -1
- package/dist/components/ai-conversation.js +1 -1
- package/dist/components/ai-info-banner.js +1 -1
- package/dist/components/ai-message.js +1 -1
- package/dist/components/ai-mission-header.js +1 -1
- package/dist/components/ai-part-group.js +3 -0
- package/dist/components/ai-prompt-input.js +2 -2
- package/dist/components/ai-question.js +1 -1
- package/dist/components/ai-reasoning.js +1 -1
- package/dist/components/ai-response.js +1 -1
- package/dist/components/ai-shimmer.js +1 -1
- package/dist/components/ai-status-badge.js +1 -1
- package/dist/components/ai-streaming-text.js +1 -1
- package/dist/components/ai-subagent.js +1 -1
- package/dist/components/ai-suggestion.js +1 -1
- package/dist/components/ai-task-list.js +1 -1
- package/dist/components/ai-timeline.js +1 -1
- package/dist/components/ai-tool.js +1 -1
- package/dist/components/ai-usage-bar.js +1 -1
- package/dist/components/chart.js +3 -2
- package/dist/components/checkbox.js +1 -1
- package/dist/components/clipboard-text.js +1 -1
- package/dist/components/code.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/command-palette.js +1 -1
- package/dist/components/data-grid.js +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/filters.js +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/link.js +2 -2
- package/dist/components/link.js.map +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/radio.js +1 -1
- package/dist/components/select.js +1 -1
- package/dist/components/sensitive-input.js +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sparkline.js +3 -0
- package/dist/components/stat-card.js +3 -0
- package/dist/components/table.js +1 -1
- package/dist/components/text-roll.js +3 -0
- package/dist/components/theme-toggle.js +1 -1
- package/dist/components/use-agent-harness.js +1 -1
- package/dist/{data-grid-UJ9ja5cu.js → data-grid-CG76N_hK.js} +6 -6
- package/dist/data-grid-CG76N_hK.js.map +1 -0
- package/dist/{date-picker-ebekkC3R.js → date-picker-Dqg9L4xu.js} +2 -2
- package/dist/{date-picker-ebekkC3R.js.map → date-picker-Dqg9L4xu.js.map} +1 -1
- package/dist/{dist-BNlyONdD.js → dist-1-gcEL2L.js} +224 -135
- package/dist/dist-1-gcEL2L.js.map +1 -0
- package/dist/{dropdown-J5T4pHaR.js → dropdown-qnEYRFXZ.js} +2 -2
- package/dist/{dropdown-J5T4pHaR.js.map → dropdown-qnEYRFXZ.js.map} +1 -1
- package/dist/echart-DURZEyai.js +314 -0
- package/dist/echart-DURZEyai.js.map +1 -0
- package/dist/{filters-BdBogf7D.js → filters-Bw_U6ZTx.js} +5 -5
- package/dist/filters-Bw_U6ZTx.js.map +1 -0
- package/dist/flow-BRsYUCJa.js.map +1 -1
- package/dist/genui.js +2 -2
- package/dist/genui.js.map +1 -1
- package/dist/index.js +45 -42
- package/dist/index.js.map +1 -1
- package/dist/{input-BxQAnXki.js → input-DXYUjGgD.js} +2 -2
- package/dist/{input-BxQAnXki.js.map → input-DXYUjGgD.js.map} +1 -1
- package/dist/{input-Cn25I4o5.js → input-DddtBN-g.js} +2 -2
- package/dist/{input-Cn25I4o5.js.map → input-DddtBN-g.js.map} +1 -1
- package/dist/layer-card-BME0eljh.js.map +1 -1
- package/dist/{pagination-C_YqCy8l.js → pagination-BVqdlONY.js} +2 -2
- package/dist/{pagination-C_YqCy8l.js.map → pagination-BVqdlONY.js.map} +1 -1
- package/dist/primitives/otp-field.js +2 -0
- package/dist/primitives.js +1 -0
- package/dist/{radio-B7zg1wUI.js → radio-BNSwOt3B.js} +3 -3
- package/dist/radio-BNSwOt3B.js.map +1 -0
- package/dist/{select-9p721G00.js → select-1w2aebGQ.js} +2 -2
- package/dist/select-1w2aebGQ.js.map +1 -0
- package/dist/{sensitive-input-D5je2NLl.js → sensitive-input-82Cez3vj.js} +2 -2
- package/dist/{sensitive-input-D5je2NLl.js.map → sensitive-input-82Cez3vj.js.map} +1 -1
- package/dist/{sidebar-DOwBrq57.js → sidebar-CAsCmSpM.js} +3 -3
- package/dist/sidebar-CAsCmSpM.js.map +1 -0
- package/dist/sparkline-DdbeM4Ai.js +108 -0
- package/dist/sparkline-DdbeM4Ai.js.map +1 -0
- package/dist/src/blocks/agent-harness/agent-harness.d.ts +30 -9
- package/dist/src/blocks/agent-harness/agent-harness.d.ts.map +1 -1
- package/dist/src/blocks/agent-harness/agent-harness.stories.tsx +114 -0
- package/dist/src/blocks/agent-harness/agent-harness.tsx +144 -63
- package/dist/src/blocks/commander/commander.stories.tsx +31 -0
- package/dist/src/blocks/dashboard-grid/dashboard-grid.d.ts +48 -0
- package/dist/src/blocks/dashboard-grid/dashboard-grid.d.ts.map +1 -0
- package/dist/src/blocks/dashboard-grid/dashboard-grid.stories.tsx +19 -0
- package/dist/src/blocks/dashboard-grid/dashboard-grid.tsx +110 -0
- package/dist/src/blocks/dashboard-grid/index.d.ts +2 -0
- package/dist/src/blocks/dashboard-grid/index.d.ts.map +1 -0
- package/dist/src/blocks/delete-resource/delete-resource.stories.tsx +31 -0
- package/dist/src/blocks/map-block/map-block.stories.tsx +41 -0
- package/dist/src/blocks/metrics-overview/index.d.ts +2 -0
- package/dist/src/blocks/metrics-overview/index.d.ts.map +1 -0
- package/dist/src/blocks/metrics-overview/metrics-overview.d.ts +67 -0
- package/dist/src/blocks/metrics-overview/metrics-overview.d.ts.map +1 -0
- package/dist/src/blocks/metrics-overview/metrics-overview.stories.tsx +26 -0
- package/dist/src/blocks/metrics-overview/metrics-overview.tsx +139 -0
- package/dist/src/blocks/page-header/page-header.stories.tsx +56 -0
- package/dist/src/blocks/resource-list/resource-list.stories.tsx +31 -0
- package/dist/src/catalog/catalog.d.ts +1 -1
- package/dist/src/catalog/index.d.ts +1 -1
- package/dist/src/catalog/types.d.ts +1 -1
- package/dist/src/command-line/build-cli.d.ts +1 -1
- package/dist/src/command-line/cli.d.ts +1 -1
- package/dist/src/command-line/commands/add.d.ts +1 -1
- package/dist/src/command-line/commands/add.d.ts.map +1 -1
- package/dist/src/command-line/commands/ai.d.ts.map +1 -1
- package/dist/src/command-line/commands/blocks.d.ts +1 -1
- package/dist/src/command-line/commands/blocks.d.ts.map +1 -1
- package/dist/src/command-line/commands/doc.d.ts +1 -1
- package/dist/src/command-line/commands/doc.d.ts.map +1 -1
- package/dist/src/command-line/commands/ls.d.ts +1 -1
- package/dist/src/command-line/commands/ls.d.ts.map +1 -1
- package/dist/src/command-line/commands/migrate.d.ts +3 -3
- package/dist/src/command-line/commands/migrate.d.ts.map +1 -1
- package/dist/src/command-line/utils/config.d.ts +1 -1
- package/dist/src/command-line/utils/transformer.d.ts +1 -1
- package/dist/src/components/ai-part-group/ai-part-group.d.ts +134 -0
- package/dist/src/components/ai-part-group/ai-part-group.d.ts.map +1 -0
- package/dist/src/components/ai-part-group/index.d.ts +2 -0
- package/dist/src/components/ai-part-group/index.d.ts.map +1 -0
- package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts +241 -8
- package/dist/src/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
- package/dist/src/components/ai-prompt-input/controller.d.ts +49 -0
- package/dist/src/components/ai-prompt-input/controller.d.ts.map +1 -0
- package/dist/src/components/ai-prompt-input/index.d.ts +3 -1
- package/dist/src/components/ai-prompt-input/index.d.ts.map +1 -1
- package/dist/src/components/ai-prompt-input/types.d.ts +102 -0
- package/dist/src/components/ai-prompt-input/types.d.ts.map +1 -0
- package/dist/src/components/ai-reasoning/ai-reasoning.d.ts +17 -1
- package/dist/src/components/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/src/components/ai-response/ai-response.d.ts +1 -2
- package/dist/src/components/ai-response/ai-response.d.ts.map +1 -1
- package/dist/src/components/ai-task-list/ai-task-list.d.ts.map +1 -1
- package/dist/src/components/ai-tool/ai-tool.d.ts +17 -1
- package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -1
- package/dist/src/components/chart/area-chart.d.ts +69 -0
- package/dist/src/components/chart/area-chart.d.ts.map +1 -0
- package/dist/src/components/chart/bar-chart.d.ts +60 -0
- package/dist/src/components/chart/bar-chart.d.ts.map +1 -0
- package/dist/src/components/chart/color.d.ts +56 -0
- package/dist/src/components/chart/color.d.ts.map +1 -1
- package/dist/src/components/chart/echart.d.ts.map +1 -1
- package/dist/src/components/chart/index.d.ts +5 -0
- package/dist/src/components/chart/index.d.ts.map +1 -1
- package/dist/src/components/chart/pie-chart.d.ts +64 -0
- package/dist/src/components/chart/pie-chart.d.ts.map +1 -0
- package/dist/src/components/chart/scatter-chart.d.ts +57 -0
- package/dist/src/components/chart/scatter-chart.d.ts.map +1 -0
- package/dist/src/components/chart/stacked-bar-chart.d.ts +59 -0
- package/dist/src/components/chart/stacked-bar-chart.d.ts.map +1 -0
- package/dist/src/components/chart/timeseries-chart.d.ts.map +1 -1
- package/dist/src/components/code/code.d.ts +1 -1
- package/dist/src/components/command-palette/command-palette.d.ts +1 -1
- package/dist/src/components/data-grid/data-grid.d.ts.map +1 -1
- package/dist/src/components/data-grid/index.d.ts +1 -1
- package/dist/src/components/data-grid/index.d.ts.map +1 -1
- package/dist/src/components/data-grid/types.d.ts.map +1 -1
- package/dist/src/components/date-picker/date-picker.d.ts +2 -2
- package/dist/src/components/filters/filters.d.ts.map +1 -1
- package/dist/src/components/filters/helpers.d.ts.map +1 -1
- package/dist/src/components/filters/types.d.ts.map +1 -1
- package/dist/src/components/layer-card/layer-card.d.ts +1 -1
- package/dist/src/components/link/link.d.ts +2 -2
- package/dist/src/components/radio/radio.d.ts +1 -1
- package/dist/src/components/select/select.d.ts +1 -1
- package/dist/src/components/sidebar/sidebar.d.ts +2 -2
- package/dist/src/components/sparkline/index.d.ts +2 -0
- package/dist/src/components/sparkline/index.d.ts.map +1 -0
- package/dist/src/components/sparkline/sparkline.d.ts +52 -0
- package/dist/src/components/sparkline/sparkline.d.ts.map +1 -0
- package/dist/src/components/stat-card/index.d.ts +2 -0
- package/dist/src/components/{ai-loader → stat-card}/index.d.ts.map +1 -1
- package/dist/src/components/stat-card/stat-card.d.ts +80 -0
- package/dist/src/components/stat-card/stat-card.d.ts.map +1 -0
- package/dist/src/components/text-roll/index.d.ts +2 -0
- package/dist/src/components/text-roll/index.d.ts.map +1 -0
- package/dist/src/components/text-roll/text-roll.d.ts +49 -0
- package/dist/src/components/text-roll/text-roll.d.ts.map +1 -0
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/components/use-agent-harness/use-agent-harness.d.ts +2 -2
- package/dist/src/genui/genui.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/primitives/index.d.ts +1 -0
- package/dist/src/primitives/index.d.ts.map +1 -1
- package/dist/src/primitives/otp-field.d.ts +13 -0
- package/dist/src/primitives/otp-field.d.ts.map +1 -0
- package/dist/src/registry/index.d.ts +1 -1
- package/dist/src/registry/types.d.ts +1 -1
- package/dist/stat-card-CEZscNh8.js +103 -0
- package/dist/stat-card-CEZscNh8.js.map +1 -0
- package/dist/styles/sf-binding.css +28 -62
- package/dist/styles/sf-standalone.css +2 -2
- package/dist/styles/shadcn.css +120 -0
- package/dist/styles/theme-blue-tint.css +98 -0
- package/dist/styles/theme-fedramp.css +3 -12
- package/dist/styles/theme-minimal.css +26 -104
- package/dist/styles/theme-sf.css +96 -114
- package/dist/{table-CIMx0Oq0.js → table-Rv4JMy0B.js} +2 -2
- package/dist/{table-CIMx0Oq0.js.map → table-Rv4JMy0B.js.map} +1 -1
- package/dist/text-roll-BZ3I1umc.js +79 -0
- package/dist/text-roll-BZ3I1umc.js.map +1 -0
- package/dist/{theme-toggle-Dpgnoj_Q.js → theme-toggle-Bhu681D7.js} +1 -1
- package/dist/{theme-toggle-Dpgnoj_Q.js.map → theme-toggle-Bhu681D7.js.map} +1 -1
- package/dist/{use-agent-harness-DZzcn96L.js → use-agent-harness-BMyF8pTq.js} +5 -5
- package/dist/use-agent-harness-BMyF8pTq.js.map +1 -0
- package/package.json +48 -19
- package/scripts/component-registry/discovery.ts +2 -2
- package/scripts/component-registry/index.ts +3 -3
- package/scripts/component-registry/props-filter.ts +1 -1
- package/scripts/component-registry/utils.ts +5 -5
- package/scripts/component-registry/variant-parser.ts +124 -19
- package/scripts/convert-demos-to-stories.ts +253 -0
- package/scripts/css-build.ts +4 -3
- package/scripts/generate-primitives.ts +11 -3
- package/scripts/theme-generator/config.ts +339 -71
- package/scripts/theme-generator/generate-css.ts +17 -3
- package/scripts/theme-generator/index.ts +3 -3
- package/scripts/theme-generator/migrate.ts +1 -1
- package/dist/ai-loader-Cr3eQkNS.js +0 -134
- package/dist/ai-loader-Cr3eQkNS.js.map +0 -1
- package/dist/ai-prompt-input-Bo1YuJly.js +0 -769
- package/dist/ai-prompt-input-Bo1YuJly.js.map +0 -1
- package/dist/ai-reasoning-UAmNx_LD.js.map +0 -1
- package/dist/ai-response-BWoVsNQG.js.map +0 -1
- package/dist/ai-task-list-B9CpMDYN.js.map +0 -1
- package/dist/ai-timeline-Bb5ntsr3.js.map +0 -1
- package/dist/ai-tool-BGH8nQ_D.js.map +0 -1
- package/dist/chart-Bes4MN3C.js.map +0 -1
- package/dist/checkbox-CPX7lBaU.js.map +0 -1
- package/dist/command-palette-CBTY8EiF.js.map +0 -1
- package/dist/components/ai-loader.js +0 -3
- package/dist/data-grid-UJ9ja5cu.js.map +0 -1
- package/dist/dist-BNlyONdD.js.map +0 -1
- package/dist/filters-BdBogf7D.js.map +0 -1
- package/dist/radio-B7zg1wUI.js.map +0 -1
- package/dist/select-9p721G00.js.map +0 -1
- package/dist/sidebar-DOwBrq57.js.map +0 -1
- package/dist/src/components/ai-loader/ai-loader.d.ts +0 -44
- package/dist/src/components/ai-loader/ai-loader.d.ts.map +0 -1
- package/dist/src/components/ai-loader/index.d.ts +0 -2
- package/dist/styles/theme-navigator.css +0 -137
- package/dist/use-agent-harness-DZzcn96L.js.map +0 -1
package/ai/schemas.ts
CHANGED
|
@@ -100,8 +100,12 @@ export const ActionSchema = z.object({
|
|
|
100
100
|
name: z.string(),
|
|
101
101
|
params: z.record(z.string(), DynamicValueSchema).optional(),
|
|
102
102
|
confirm: ActionConfirmSchema.optional(),
|
|
103
|
-
onSuccess: z
|
|
104
|
-
|
|
103
|
+
onSuccess: z
|
|
104
|
+
.object({ set: z.record(z.string(), DynamicValueSchema) })
|
|
105
|
+
.optional(),
|
|
106
|
+
onError: z
|
|
107
|
+
.object({ set: z.record(z.string(), DynamicValueSchema) })
|
|
108
|
+
.optional(),
|
|
105
109
|
});
|
|
106
110
|
|
|
107
111
|
export type Action = z.infer<typeof ActionSchema>;
|
|
@@ -111,7 +115,9 @@ export type Action = z.infer<typeof ActionSchema>;
|
|
|
111
115
|
// =============================================================================
|
|
112
116
|
|
|
113
117
|
export const AiActionsPropsSchema = z.object({
|
|
114
|
-
children: z
|
|
118
|
+
children: z
|
|
119
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
120
|
+
.optional(),
|
|
115
121
|
className: z.string().optional(),
|
|
116
122
|
id: z.string().optional(),
|
|
117
123
|
lang: z.string().optional(),
|
|
@@ -148,7 +154,9 @@ export const AiApprovalPropsSchema = z.object({
|
|
|
148
154
|
approveLabel: z.string().optional(), // Label for the approve button. Default: `"Approve"`.
|
|
149
155
|
rejectLabel: z.string().optional(), // Label for the reject button. Default: `"Reject"`.
|
|
150
156
|
showFeedback: z.boolean().optional(), // Show a text input for rejection feedback. Default: `false`.
|
|
151
|
-
children: z
|
|
157
|
+
children: z
|
|
158
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
159
|
+
.optional(),
|
|
152
160
|
className: z.string().optional(),
|
|
153
161
|
id: z.string().optional(),
|
|
154
162
|
lang: z.string().optional(),
|
|
@@ -158,7 +166,9 @@ export const AiCodeBlockPropsSchema = z.object({
|
|
|
158
166
|
code: z.string(), // The raw code string to display and make copyable.
|
|
159
167
|
language: z.string().optional(), // Language identifier for syntax highlighting (display only, no highlighting applied).
|
|
160
168
|
showLineNumbers: z.boolean().optional(), // Show line numbers.
|
|
161
|
-
children: z
|
|
169
|
+
children: z
|
|
170
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
171
|
+
.optional(),
|
|
162
172
|
className: z.string().optional(),
|
|
163
173
|
id: z.string().optional(),
|
|
164
174
|
lang: z.string().optional(),
|
|
@@ -166,7 +176,9 @@ export const AiCodeBlockPropsSchema = z.object({
|
|
|
166
176
|
});
|
|
167
177
|
|
|
168
178
|
export const AiConversationPropsSchema = z.object({
|
|
169
|
-
children: z
|
|
179
|
+
children: z
|
|
180
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
181
|
+
.optional(),
|
|
170
182
|
className: z.string().optional(),
|
|
171
183
|
id: z.string().optional(),
|
|
172
184
|
lang: z.string().optional(),
|
|
@@ -176,25 +188,20 @@ export const AiConversationPropsSchema = z.object({
|
|
|
176
188
|
export const AiInfoBannerPropsSchema = z.object({
|
|
177
189
|
level: z.enum(["info", "error", "change"]).optional(), // Banner level controls icon and color treatment.
|
|
178
190
|
icon: z.unknown().optional(), // Custom icon override.
|
|
179
|
-
children: z
|
|
191
|
+
children: z
|
|
192
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
193
|
+
.optional(),
|
|
180
194
|
className: z.string().optional(),
|
|
181
195
|
id: z.string().optional(),
|
|
182
196
|
lang: z.string().optional(),
|
|
183
197
|
title: z.string().optional(),
|
|
184
198
|
});
|
|
185
199
|
|
|
186
|
-
export const AiLoaderPropsSchema = z.object({
|
|
187
|
-
children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(),
|
|
188
|
-
className: z.string().optional(),
|
|
189
|
-
id: z.string().optional(),
|
|
190
|
-
lang: z.string().optional(),
|
|
191
|
-
title: z.string().optional(),
|
|
192
|
-
size: z.enum(["sm", "base", "lg"]).optional(), // Icon size. - `"sm"` — 12px - `"base"` — 16px (default) - `"lg"` — 20px
|
|
193
|
-
});
|
|
194
|
-
|
|
195
200
|
export const AiMessagePropsSchema = z.object({
|
|
196
201
|
from: z.enum(["user", "assistant", "system"]), // Message sender role — controls layout and group class.
|
|
197
|
-
children: z
|
|
202
|
+
children: z
|
|
203
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
204
|
+
.optional(),
|
|
198
205
|
className: z.string().optional(),
|
|
199
206
|
id: z.string().optional(),
|
|
200
207
|
lang: z.string().optional(),
|
|
@@ -214,7 +221,21 @@ export const AiMissionHeaderPropsSchema = z.object({
|
|
|
214
221
|
className: z.string().optional(),
|
|
215
222
|
id: z.string().optional(),
|
|
216
223
|
lang: z.string().optional(),
|
|
217
|
-
children: z
|
|
224
|
+
children: z
|
|
225
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
226
|
+
.optional(),
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
export const AiPartGroupPropsSchema = z.object({
|
|
230
|
+
groupKey: z.string(), // Stable identifier — usually the parent message id. Required so the group can persist its frozen snapshot across re-mounts (scroll-back into a virtualized list re-renders without restarting animations).
|
|
231
|
+
complete: z.boolean().optional(), // Set to `true` once the parent stream has finished. Triggers the group to snapshot its current children and from then on render only the static collapsed summary — ephemeral children never re-mount.
|
|
232
|
+
title: z.string().optional(), // Title shown in the collapsed summary line. Falls back to the first reasoning text snippet, then to a step count.
|
|
233
|
+
children: z
|
|
234
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
235
|
+
.optional(),
|
|
236
|
+
className: z.string().optional(),
|
|
237
|
+
id: z.string().optional(),
|
|
238
|
+
lang: z.string().optional(),
|
|
218
239
|
});
|
|
219
240
|
|
|
220
241
|
export const AiQuestionPropsSchema = z.object({
|
|
@@ -226,14 +247,16 @@ export const AiQuestionPropsSchema = z.object({
|
|
|
226
247
|
allowCustom: z.boolean().optional(), // Allow freeform text input (custom answer). Default: `true`. When options are provided, this adds a text field below them.
|
|
227
248
|
icon: z.unknown().optional(), // Custom icon for the question header.
|
|
228
249
|
answeredWith: z.string().optional(), // The answer that was submitted (shown when `status="answered"`).
|
|
229
|
-
children: z
|
|
250
|
+
children: z
|
|
251
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
252
|
+
.optional(),
|
|
230
253
|
className: z.string().optional(),
|
|
231
254
|
id: z.string().optional(),
|
|
232
255
|
lang: z.string().optional(),
|
|
233
256
|
});
|
|
234
257
|
|
|
235
258
|
export const AiReasoningPropsSchema = z.object({
|
|
236
|
-
variant: z.enum(["default", "inline", "minimal"]).optional(), // Display variant.
|
|
259
|
+
variant: z.enum(["default", "inline", "minimal", "ephemeral"]).optional(), // Display variant.
|
|
237
260
|
isStreaming: z.boolean().optional(), // Whether reasoning is currently streaming.
|
|
238
261
|
duration: z.number().optional(), // Duration in seconds (passed in or self-tracked when streaming).
|
|
239
262
|
defaultExpanded: z.boolean().optional(), // Default expanded state.
|
|
@@ -242,16 +265,22 @@ export const AiReasoningPropsSchema = z.object({
|
|
|
242
265
|
icon: z.unknown().optional(), // Custom icon override. Defaults to `SparkleIcon` (streaming) or `BrainIcon` (done). Use to distinguish observation/reflection blocks from standard reasoning.
|
|
243
266
|
label: z.string().optional(), // Custom label override. Defaults to `"Thinking..."` (streaming) or `"Reasoning"` (done). Use to label observational memory blocks: `"Observing..."`, `"Reflecting..."`, etc.
|
|
244
267
|
streamingLabel: z.string().optional(), // Custom streaming label. When provided, used instead of `label` while `isStreaming` is true. Falls back to `label`, then to the default `"Thinking..."`.
|
|
268
|
+
dismissDelay: z.number().optional(), // For `variant="ephemeral"`: ms to keep the completed row visible before fading out. Set to `0` to disable auto-dismiss.
|
|
269
|
+
persist: z.boolean().optional(), // For `variant="ephemeral"`: when `true`, the row never auto-dismisses. User-expanded rows are pinned automatically.
|
|
245
270
|
className: z.string().optional(),
|
|
246
271
|
id: z.string().optional(),
|
|
247
272
|
lang: z.string().optional(),
|
|
248
273
|
title: z.string().optional(),
|
|
249
|
-
children: z
|
|
274
|
+
children: z
|
|
275
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
276
|
+
.optional(),
|
|
250
277
|
});
|
|
251
278
|
|
|
252
279
|
export const AiResponsePropsSchema = z.object({
|
|
253
280
|
className: z.string().optional(), // Additional CSS classes
|
|
254
|
-
children: z
|
|
281
|
+
children: z
|
|
282
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
283
|
+
.optional(), // Child elements
|
|
255
284
|
});
|
|
256
285
|
|
|
257
286
|
export const AiShimmerPropsSchema = z.object({
|
|
@@ -267,7 +296,9 @@ export const AiStatusBadgePropsSchema = z.object({
|
|
|
267
296
|
label: z.string(), // Label text displayed in the badge.
|
|
268
297
|
status: z.enum(["idle", "running", "success", "error"]).optional(), // Current status — determines the status icon on the right.
|
|
269
298
|
info: z.string().optional(), // Additional info text (e.g. "2/3") shown after the label.
|
|
270
|
-
children: z
|
|
299
|
+
children: z
|
|
300
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
301
|
+
.optional(),
|
|
271
302
|
className: z.string().optional(),
|
|
272
303
|
id: z.string().optional(),
|
|
273
304
|
lang: z.string().optional(),
|
|
@@ -276,7 +307,9 @@ export const AiStatusBadgePropsSchema = z.object({
|
|
|
276
307
|
|
|
277
308
|
export const AiStreamingTextPropsSchema = z.object({
|
|
278
309
|
className: z.string().optional(), // Additional CSS classes
|
|
279
|
-
children: z
|
|
310
|
+
children: z
|
|
311
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
312
|
+
.optional(), // Child elements
|
|
280
313
|
});
|
|
281
314
|
|
|
282
315
|
export const AiSubagentPropsSchema = z.object({
|
|
@@ -288,7 +321,9 @@ export const AiSubagentPropsSchema = z.object({
|
|
|
288
321
|
icon: z.unknown().optional(), // Custom icon. Defaults to `RobotIcon`.
|
|
289
322
|
defaultExpanded: z.boolean().optional(), // Whether the subagent content is expanded by default.
|
|
290
323
|
open: z.boolean().optional(), // Controlled open state.
|
|
291
|
-
children: z
|
|
324
|
+
children: z
|
|
325
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
326
|
+
.optional(),
|
|
292
327
|
className: z.string().optional(),
|
|
293
328
|
id: z.string().optional(),
|
|
294
329
|
lang: z.string().optional(),
|
|
@@ -296,7 +331,9 @@ export const AiSubagentPropsSchema = z.object({
|
|
|
296
331
|
});
|
|
297
332
|
|
|
298
333
|
export const AiSuggestionsPropsSchema = z.object({
|
|
299
|
-
children: z
|
|
334
|
+
children: z
|
|
335
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
336
|
+
.optional(),
|
|
300
337
|
className: z.string().optional(),
|
|
301
338
|
id: z.string().optional(),
|
|
302
339
|
lang: z.string().optional(),
|
|
@@ -308,7 +345,9 @@ export const AiTaskListPropsSchema = z.object({
|
|
|
308
345
|
title: z.string().optional(), // Optional title above the task list.
|
|
309
346
|
icon: z.unknown().optional(), // Custom icon for the title area.
|
|
310
347
|
showProgress: z.boolean().optional(), // Show a progress summary (e.g. "3 / 7 done"). Default: `true`.
|
|
311
|
-
children: z
|
|
348
|
+
children: z
|
|
349
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
350
|
+
.optional(),
|
|
312
351
|
className: z.string().optional(),
|
|
313
352
|
id: z.string().optional(),
|
|
314
353
|
lang: z.string().optional(),
|
|
@@ -320,7 +359,9 @@ export const AiTimelinePropsSchema = z.object({
|
|
|
320
359
|
showNowMarker: z.boolean().optional(), // Whether to show a pulsing "now" marker at the live edge.
|
|
321
360
|
nowMs: z.number().optional(), // Current timestamp in ms. Used to render the "now" marker and open-ended block widths. Pass a stable `useState` value to prevent hydration shifts. When omitted, `Date.now()` is called at render time (fine for live views driven by a ticking parent, not suitable for SSR).
|
|
322
361
|
density: z.enum(["comfortable", "compact"]).optional(), // Lane density variant.
|
|
323
|
-
children: z
|
|
362
|
+
children: z
|
|
363
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
364
|
+
.optional(), // Children should be `AiTimelineLane` components.
|
|
324
365
|
className: z.string().optional(),
|
|
325
366
|
id: z.string().optional(),
|
|
326
367
|
lang: z.string().optional(),
|
|
@@ -328,17 +369,21 @@ export const AiTimelinePropsSchema = z.object({
|
|
|
328
369
|
});
|
|
329
370
|
|
|
330
371
|
export const AiToolCallPropsSchema = z.object({
|
|
331
|
-
variant: z.enum(["default", "inline", "minimal"]).optional(), // Display variant.
|
|
372
|
+
variant: z.enum(["default", "inline", "minimal", "ephemeral"]).optional(), // Display variant.
|
|
332
373
|
duration: z.number().optional(), // Duration in milliseconds.
|
|
333
374
|
summary: z.string().optional(), // Summary text shown alongside the tool name.
|
|
334
375
|
icon: z.unknown().optional(), // Custom icon override.
|
|
335
376
|
approvalState: z.enum(["awaiting", "approved", "declined"]).optional(), // Approval state for tools requiring confirmation.
|
|
336
377
|
defaultExpanded: z.boolean().optional(), // Default expanded state for the collapsible.
|
|
378
|
+
dismissDelay: z.number().optional(), // For `variant="ephemeral"`: ms to keep the completed row visible before fading out. Set to `0` to disable auto-dismiss.
|
|
379
|
+
persist: z.boolean().optional(), // For `variant="ephemeral"`: when `true`, the row never auto-dismisses. Errors and user-expanded rows are pinned automatically.
|
|
337
380
|
className: z.string().optional(),
|
|
338
381
|
id: z.string().optional(),
|
|
339
382
|
lang: z.string().optional(),
|
|
340
383
|
title: z.string().optional(),
|
|
341
|
-
children: z
|
|
384
|
+
children: z
|
|
385
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
386
|
+
.optional(),
|
|
342
387
|
});
|
|
343
388
|
|
|
344
389
|
export const AiUsageBarPropsSchema = z.object({
|
|
@@ -348,7 +393,9 @@ export const AiUsageBarPropsSchema = z.object({
|
|
|
348
393
|
cost: z.number().optional(), // Estimated cost in USD.
|
|
349
394
|
modelId: z.string().optional(), // Model ID being used (shown as label).
|
|
350
395
|
icon: z.unknown().optional(), // Custom icon. Defaults to `LightningIcon`.
|
|
351
|
-
children: z
|
|
396
|
+
children: z
|
|
397
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
398
|
+
.optional(),
|
|
352
399
|
className: z.string().optional(),
|
|
353
400
|
id: z.string().optional(),
|
|
354
401
|
lang: z.string().optional(),
|
|
@@ -356,38 +403,73 @@ export const AiUsageBarPropsSchema = z.object({
|
|
|
356
403
|
});
|
|
357
404
|
|
|
358
405
|
export const BadgePropsSchema = z.object({
|
|
359
|
-
variant: z
|
|
406
|
+
variant: z
|
|
407
|
+
.enum([
|
|
408
|
+
"primary",
|
|
409
|
+
"secondary",
|
|
410
|
+
"destructive",
|
|
411
|
+
"outline",
|
|
412
|
+
"beta",
|
|
413
|
+
"success",
|
|
414
|
+
"warning",
|
|
415
|
+
"info",
|
|
416
|
+
"ghost",
|
|
417
|
+
])
|
|
418
|
+
.optional(), // Visual style of the badge. - `"primary"` — High-emphasis badge for important labels - `"secondary"` — Subtle badge for secondary information - `"destructive"` — Error or danger state indicator - `"outline"` — Bordered badge with transparent background - `"beta"` — Dashed-border badge for beta/experimental features - `"success"` — Positive status indicator - `"warning"` — Caution or attention indicator - `"info"` — Informational badge - `"ghost"` — Text-only badge with no background or border
|
|
360
419
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
361
|
-
children: z
|
|
420
|
+
children: z
|
|
421
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
422
|
+
.optional(), // Content rendered inside the badge.
|
|
362
423
|
icon: z.unknown().optional(), // Icon component rendered alongside the text.
|
|
363
424
|
iconPosition: z.enum(["left", "right"]).optional(), // Position of the icon relative to the text.
|
|
364
425
|
loading: z.boolean().optional(), // Shows a loading spinner, replacing the icon slot.
|
|
365
426
|
dot: z.enum(["green", "red", "yellow", "blue", "gray"]).optional(), // Renders a small colored status dot before the text.
|
|
366
|
-
tooltip: z
|
|
427
|
+
tooltip: z
|
|
428
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
429
|
+
.optional(), // Wraps the badge in a Tooltip with this content. Requires a TooltipProvider ancestor.
|
|
367
430
|
href: z.string().optional(),
|
|
368
431
|
});
|
|
369
432
|
|
|
370
433
|
export const BannerPropsSchema = z.object({
|
|
371
|
-
icon: z
|
|
434
|
+
icon: z
|
|
435
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
436
|
+
.optional(), // Icon element rendered before the banner text (e.g. from `@phosphor-icons/react`).
|
|
372
437
|
text: z.string().optional(),
|
|
373
|
-
children: z
|
|
438
|
+
children: z
|
|
439
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
440
|
+
.optional(), // Banner message content. Accepts strings or custom React elements.
|
|
374
441
|
variant: z.enum(["default", "alert", "error"]).optional(), // Visual style of the banner. - `"default"` — Informational blue banner for general messages - `"alert"` — Warning yellow banner for cautionary messages - `"error"` — Error red banner for critical issues
|
|
375
442
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
376
443
|
});
|
|
377
444
|
|
|
378
445
|
export const BreadcrumbsPropsSchema = z.object({
|
|
379
446
|
size: z.enum(["sm", "base"]).optional(), // Size of the breadcrumbs. - `"sm"` — Compact breadcrumbs for dense UIs - `"base"` — Default breadcrumbs size
|
|
380
|
-
children: z
|
|
447
|
+
children: z
|
|
448
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
449
|
+
.optional(),
|
|
381
450
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
382
451
|
});
|
|
383
452
|
|
|
384
453
|
export const ButtonPropsSchema = z.object({
|
|
385
454
|
shape: z.enum(["base", "square", "circle"]).optional(),
|
|
386
455
|
size: z.enum(["xs", "sm", "base", "lg"]).optional(),
|
|
387
|
-
variant: z
|
|
388
|
-
|
|
456
|
+
variant: z
|
|
457
|
+
.enum([
|
|
458
|
+
"primary",
|
|
459
|
+
"secondary",
|
|
460
|
+
"ghost",
|
|
461
|
+
"destructive",
|
|
462
|
+
"secondary-destructive",
|
|
463
|
+
"outline",
|
|
464
|
+
])
|
|
465
|
+
.optional(),
|
|
466
|
+
children: z
|
|
467
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
468
|
+
.optional(),
|
|
389
469
|
className: z.string().optional(),
|
|
390
|
-
icon: z
|
|
470
|
+
icon: z
|
|
471
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
472
|
+
.optional(), // Icon from `@phosphor-icons/react` or a React element. Rendered before children.
|
|
391
473
|
loading: z.boolean().optional(), // Shows a loading spinner and disables interaction.
|
|
392
474
|
id: z.string().optional(),
|
|
393
475
|
lang: z.string().optional(),
|
|
@@ -400,8 +482,12 @@ export const ButtonPropsSchema = z.object({
|
|
|
400
482
|
|
|
401
483
|
export const CheckboxPropsSchema = z.object({
|
|
402
484
|
variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
|
|
403
|
-
label: z
|
|
404
|
-
|
|
485
|
+
label: z
|
|
486
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
487
|
+
.optional(), // Label content for the checkbox (enables built-in Field wrapper) - can be a string or any React node
|
|
488
|
+
labelTooltip: z
|
|
489
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
490
|
+
.optional(), // Tooltip content to display next to the label via an info icon
|
|
405
491
|
controlFirst: z.boolean().optional(), // When true (default), checkbox appears before label. When false, label appears before checkbox.
|
|
406
492
|
checked: z.boolean().optional(), // Whether the checkbox is checked (controlled)
|
|
407
493
|
indeterminate: z.boolean().optional(), // Whether the checkbox is in indeterminate state
|
|
@@ -428,7 +514,9 @@ export const CodePropsSchema = z.object({
|
|
|
428
514
|
});
|
|
429
515
|
|
|
430
516
|
export const CollapsiblePropsSchema = z.object({
|
|
431
|
-
children: z
|
|
517
|
+
children: z
|
|
518
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
519
|
+
.optional(),
|
|
432
520
|
label: z.string(), // Text label displayed in the trigger button
|
|
433
521
|
open: z.boolean().optional(), // Whether the collapsible content is visible
|
|
434
522
|
className: z.string().optional(), // Additional CSS classes for the content panel
|
|
@@ -439,12 +527,20 @@ export const ComboboxPropsSchema = z.object({
|
|
|
439
527
|
inputSide: z.enum(["right", "top"]).optional(), // Position of the text input relative to chips in multi-select mode. - `"right"` — Input inline to the right of chips - `"top"` — Input above chips
|
|
440
528
|
items: z.array(z.unknown()), // Array of items to display in the dropdown
|
|
441
529
|
value: z.array(z.unknown()).optional(), // Currently selected value(s)
|
|
442
|
-
children: z
|
|
530
|
+
children: z
|
|
531
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
532
|
+
.optional(), // Combobox content (trigger, content, items)
|
|
443
533
|
className: z.string().optional(), // Additional CSS classes
|
|
444
|
-
label: z
|
|
534
|
+
label: z
|
|
535
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
536
|
+
.optional(), // Label content for the combobox (enables Field wrapper) - can be a string or any React node
|
|
445
537
|
required: z.boolean().optional(), // Whether the combobox is required
|
|
446
|
-
labelTooltip: z
|
|
447
|
-
|
|
538
|
+
labelTooltip: z
|
|
539
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
540
|
+
.optional(), // Tooltip content to display next to the label via an info icon
|
|
541
|
+
description: z
|
|
542
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
543
|
+
.optional(), // Helper text displayed below the combobox
|
|
448
544
|
error: z.unknown().optional(), // Error message or validation error object
|
|
449
545
|
onValueChange: z.unknown().optional(), // Callback when selection changes
|
|
450
546
|
multiple: z.boolean().optional(), // Allow multiple selections
|
|
@@ -453,18 +549,24 @@ export const ComboboxPropsSchema = z.object({
|
|
|
453
549
|
|
|
454
550
|
export const CommandPalettePropsSchema = z.object({
|
|
455
551
|
open: z.boolean(), // Whether the dialog is open
|
|
456
|
-
children: z
|
|
552
|
+
children: z
|
|
553
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
554
|
+
.optional(), // Child content - typically one or more Panel components
|
|
457
555
|
});
|
|
458
556
|
|
|
459
557
|
export const DataGridPropsSchema = z.object({
|
|
460
558
|
layout: z.enum(["auto", "fixed"]).optional(),
|
|
461
559
|
className: z.string().optional(), // Additional CSS classes
|
|
462
|
-
children: z
|
|
560
|
+
children: z
|
|
561
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
562
|
+
.optional(), // Child elements
|
|
463
563
|
});
|
|
464
564
|
|
|
465
565
|
export const DatePickerPropsSchema = z.object({
|
|
466
566
|
className: z.string().optional(), // Additional CSS classes
|
|
467
|
-
children: z
|
|
567
|
+
children: z
|
|
568
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
569
|
+
.optional(), // Child elements
|
|
468
570
|
});
|
|
469
571
|
|
|
470
572
|
export const DateRangePickerPropsSchema = z.object({
|
|
@@ -478,7 +580,9 @@ export const DateRangePickerPropsSchema = z.object({
|
|
|
478
580
|
|
|
479
581
|
export const DialogPropsSchema = z.object({
|
|
480
582
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
481
|
-
children: z
|
|
583
|
+
children: z
|
|
584
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
585
|
+
.optional(), // Dialog content (typically Title, Description, Close, and action buttons).
|
|
482
586
|
size: z.enum(["base", "sm", "lg", "xl"]).optional(), // Dialog width. - `"sm"` — Small (min 288px) for simple confirmations - `"base"` — Default (min 384px) - `"lg"` — Large (min 512px) for complex content - `"xl"` — Extra large (min 768px) for detailed views
|
|
483
587
|
});
|
|
484
588
|
|
|
@@ -488,29 +592,43 @@ export const DropdownMenuPropsSchema = z.object({
|
|
|
488
592
|
|
|
489
593
|
export const EmptyPropsSchema = z.object({
|
|
490
594
|
size: z.enum(["sm", "base", "lg"]).optional(), // Size of the empty state container. - `"sm"` — Compact empty state for smaller containers - `"base"` — Default empty state size - `"lg"` — Large empty state for prominent placement
|
|
491
|
-
icon: z
|
|
595
|
+
icon: z
|
|
596
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
597
|
+
.optional(), // Decorative icon displayed above the title (e.g. from `@phosphor-icons/react`).
|
|
492
598
|
title: z.string(), // Primary heading text for the empty state.
|
|
493
599
|
description: z.string().optional(), // Secondary description text displayed below the title.
|
|
494
600
|
commandLine: z.string().optional(), // Shell command displayed in a copyable code block.
|
|
495
|
-
contents: z
|
|
601
|
+
contents: z
|
|
602
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
603
|
+
.optional(), // Additional content (buttons, links) rendered below the description.
|
|
496
604
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
497
605
|
});
|
|
498
606
|
|
|
499
607
|
export const FieldPropsSchema = z.object({
|
|
500
608
|
controlFirst: z.boolean().optional(), // When `true`, places the control before the label (for checkbox/switch layouts).
|
|
501
|
-
children: z
|
|
502
|
-
|
|
609
|
+
children: z
|
|
610
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
611
|
+
.optional(), // The form control element(s) to wrap (Input, Select, Checkbox, etc.).
|
|
612
|
+
label: z
|
|
613
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
614
|
+
.optional(), // The label content — can be a string or any React node.
|
|
503
615
|
required: z.boolean().optional(), // When explicitly `false`, shows gray "(optional)" text after the label. When `true` or `undefined`, no indicator is shown.
|
|
504
|
-
labelTooltip: z
|
|
616
|
+
labelTooltip: z
|
|
617
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
618
|
+
.optional(), // Tooltip content displayed next to the label via an info icon.
|
|
505
619
|
error: z.unknown().optional(), // Validation error with a message and a browser `ValidityState` match key.
|
|
506
|
-
description: z
|
|
620
|
+
description: z
|
|
621
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
622
|
+
.optional(), // Helper text displayed below the control (hidden when `error` is present).
|
|
507
623
|
});
|
|
508
624
|
|
|
509
625
|
export const FiltersPropsSchema = z.object({
|
|
510
626
|
filters: z.array(z.unknown()), // Active filters array
|
|
511
627
|
fields: z.array(z.unknown()), // Available field configurations
|
|
512
628
|
size: z.enum(["sm", "default", "lg"]).optional(), // Size variant for filter pills
|
|
513
|
-
trigger: z
|
|
629
|
+
trigger: z
|
|
630
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
631
|
+
.optional(), // Custom trigger element (replaces default "Add Filter" button)
|
|
514
632
|
showSearchInput: z.boolean().optional(), // Whether to show a search input in the add filter menu
|
|
515
633
|
allowMultiple: z.boolean().optional(), // Whether to allow multiple filters on the same field
|
|
516
634
|
enableShortcut: z.boolean().optional(), // Whether to enable keyboard shortcut (Cmd/Ctrl + K) to open add filter
|
|
@@ -522,20 +640,40 @@ export const FiltersPropsSchema = z.object({
|
|
|
522
640
|
});
|
|
523
641
|
|
|
524
642
|
export const GridPropsSchema = z.object({
|
|
525
|
-
children: z
|
|
643
|
+
children: z
|
|
644
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
645
|
+
.optional(), // Grid items to render.
|
|
526
646
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
527
647
|
id: z.string().optional(),
|
|
528
648
|
lang: z.string().optional(),
|
|
529
649
|
title: z.string().optional(),
|
|
530
650
|
mobileDivider: z.boolean().optional(), // Show dividers between grid items on mobile (only works with `"4up"` variant).
|
|
531
651
|
gap: z.enum(["none", "sm", "base", "lg"]).optional(), // Gap size between grid items. - `"none"` — No gap - `"sm"` — 12px gap - `"base"` — Responsive gap (8px → 24px → 32px) - `"lg"` — 32px gap
|
|
532
|
-
variant: z
|
|
652
|
+
variant: z
|
|
653
|
+
.enum([
|
|
654
|
+
"2up",
|
|
655
|
+
"side-by-side",
|
|
656
|
+
"2-1",
|
|
657
|
+
"1-2",
|
|
658
|
+
"1-3up",
|
|
659
|
+
"3up",
|
|
660
|
+
"4up",
|
|
661
|
+
"6up",
|
|
662
|
+
"1-2-4up",
|
|
663
|
+
])
|
|
664
|
+
.optional(), // Responsive column layout variant. - `"2up"` — 1 col → 2 cols at md - `"side-by-side"` — Always 2 cols - `"2-1"` — 66%/33% split at md - `"1-2"` — 33%/66% split at md - `"3up"` — 1 → 2 → 3 cols - `"4up"` — 1 → 2 → 3 → 4 cols - `"6up"` — 2 → 3 → 4 → 6 cols - `"1-2-4up"` — 1 → 2 → 4 cols
|
|
533
665
|
});
|
|
534
666
|
|
|
535
667
|
export const InputPropsSchema = z.object({
|
|
536
|
-
label: z
|
|
537
|
-
|
|
538
|
-
|
|
668
|
+
label: z
|
|
669
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
670
|
+
.optional(), // Label content for the input (enables Field wrapper) - can be a string or any React node
|
|
671
|
+
labelTooltip: z
|
|
672
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
673
|
+
.optional(), // Tooltip content to display next to the label via an info icon
|
|
674
|
+
description: z
|
|
675
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
676
|
+
.optional(), // Helper text displayed below the input
|
|
539
677
|
error: z.unknown().optional(), // Error message or validation error object
|
|
540
678
|
size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Input size. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default size - `"lg"` — Large for prominent fields
|
|
541
679
|
variant: z.enum(["default", "error"]).optional(), // Visual variant. - `"default"` — Standard input - `"error"` — Error state for validation failures
|
|
@@ -544,23 +682,31 @@ export const InputPropsSchema = z.object({
|
|
|
544
682
|
export const InputAreaPropsSchema = z.object({});
|
|
545
683
|
|
|
546
684
|
export const LabelPropsSchema = z.object({
|
|
547
|
-
children: z
|
|
685
|
+
children: z
|
|
686
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
687
|
+
.optional(), // The label content — can be a string or any React node.
|
|
548
688
|
showOptional: z.boolean().optional(), // When `true`, shows gray "(optional)" text after the label.
|
|
549
|
-
tooltip: z
|
|
689
|
+
tooltip: z
|
|
690
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
691
|
+
.optional(), // Tooltip content displayed next to the label via an info icon.
|
|
550
692
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
551
693
|
htmlFor: z.string().optional(), // The id of the form element this label is associated with
|
|
552
694
|
asContent: z.boolean().optional(), // When true, only renders the inline content (indicators, tooltip) without the outer label element with font styling. Useful when composed inside another label element that already provides the text styling.
|
|
553
695
|
});
|
|
554
696
|
|
|
555
697
|
export const LayerCardPropsSchema = z.object({
|
|
556
|
-
children: z
|
|
698
|
+
children: z
|
|
699
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
700
|
+
.optional(),
|
|
557
701
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
558
702
|
});
|
|
559
703
|
|
|
560
704
|
export const LinkPropsSchema = z.object({
|
|
561
705
|
variant: z.enum(["inline", "current", "plain"]).optional(), // Visual style of the link. - `"inline"` — Inline text link that flows with content - `"current"` — Link that inherits color from parent text - `"plain"` — Link without underline decoration
|
|
562
706
|
to: z.string().optional(),
|
|
563
|
-
children: z
|
|
707
|
+
children: z
|
|
708
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
709
|
+
.optional(),
|
|
564
710
|
className: z.string().optional(),
|
|
565
711
|
id: z.string().optional(),
|
|
566
712
|
lang: z.string().optional(),
|
|
@@ -572,8 +718,22 @@ export const LinkPropsSchema = z.object({
|
|
|
572
718
|
ping: z.string().optional(),
|
|
573
719
|
target: z.unknown().optional(),
|
|
574
720
|
type: z.string().optional(),
|
|
575
|
-
referrerPolicy: z
|
|
576
|
-
|
|
721
|
+
referrerPolicy: z
|
|
722
|
+
.enum([
|
|
723
|
+
"",
|
|
724
|
+
"no-referrer",
|
|
725
|
+
"no-referrer-when-downgrade",
|
|
726
|
+
"origin",
|
|
727
|
+
"origin-when-cross-origin",
|
|
728
|
+
"same-origin",
|
|
729
|
+
"strict-origin",
|
|
730
|
+
"strict-origin-when-cross-origin",
|
|
731
|
+
"unsafe-url",
|
|
732
|
+
])
|
|
733
|
+
.optional(),
|
|
734
|
+
render: z
|
|
735
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
736
|
+
.optional(), // Allows you to replace the component's HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render.
|
|
577
737
|
});
|
|
578
738
|
|
|
579
739
|
export const LoaderPropsSchema = z.object({
|
|
@@ -616,7 +776,9 @@ export const PromptInputPropsSchema = z.object({
|
|
|
616
776
|
globalDrop: z.boolean().optional(), // When true, accept drops anywhere on document. Default false.
|
|
617
777
|
maxFiles: z.number().optional(), // Maximum number of attached files.
|
|
618
778
|
maxFileSize: z.number().optional(), // Maximum file size in bytes.
|
|
619
|
-
backLayer: z
|
|
779
|
+
backLayer: z
|
|
780
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
781
|
+
.optional(), // Content rendered in the collapsible back layer (e.g. HITL approvals, task lists). When provided the prompt input is wrapped in a LayerCard shell with a header row containing a chevron toggle. Use `PromptInputBackLayer` to compose structured content for this slot.
|
|
620
782
|
backLayerTitle: z.string().optional(), // Title shown in the back layer header row. Defaults to `"Context"`.
|
|
621
783
|
backLayerOpen: z.boolean().optional(), // Controls whether the back layer is visible. Pair with `onBackLayerOpenChange` for a controlled pattern.
|
|
622
784
|
autoOpenBackLayerWhen: z.boolean().optional(), // Automatically opens the back layer when this condition is true. Useful for showing pending approvals/questions without manual toggle.
|
|
@@ -624,15 +786,21 @@ export const PromptInputPropsSchema = z.object({
|
|
|
624
786
|
id: z.string().optional(),
|
|
625
787
|
lang: z.string().optional(),
|
|
626
788
|
title: z.string().optional(),
|
|
627
|
-
children: z
|
|
789
|
+
children: z
|
|
790
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
791
|
+
.optional(),
|
|
628
792
|
});
|
|
629
793
|
|
|
630
794
|
export const RadioPropsSchema = z.object({
|
|
631
795
|
legend: z.string(), // Legend text for the group (required for accessibility)
|
|
632
|
-
children: z
|
|
796
|
+
children: z
|
|
797
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
798
|
+
.optional(), // Child Radio.Item components
|
|
633
799
|
orientation: z.enum(["vertical", "horizontal"]).optional(), // Layout direction of the radio items
|
|
634
800
|
error: z.string().optional(), // Error message for the group
|
|
635
|
-
description: z
|
|
801
|
+
description: z
|
|
802
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
803
|
+
.optional(), // Helper text for the group
|
|
636
804
|
value: z.string().optional(), // Value of the radio that should be selected (controlled)
|
|
637
805
|
disabled: z.boolean().optional(), // Whether all radios in the group are disabled
|
|
638
806
|
controlPosition: z.enum(["start", "end"]).optional(), // Position of radio control relative to label: "start" (default) puts radio before label, "end" puts label before radio
|
|
@@ -642,16 +810,24 @@ export const RadioPropsSchema = z.object({
|
|
|
642
810
|
|
|
643
811
|
export const SelectPropsSchema = z.object({
|
|
644
812
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
645
|
-
label: z
|
|
813
|
+
label: z
|
|
814
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
815
|
+
.optional(), // Label content for the select (enables Field wrapper) — can be a string or any React node.
|
|
646
816
|
hideLabel: z.boolean().optional(), // Visually hide the label while keeping it accessible to screen readers. Set to `false` to show a visible label above the select via the Field wrapper.
|
|
647
817
|
placeholder: z.string().optional(), // Placeholder text shown when no value is selected.
|
|
648
818
|
loading: z.boolean().optional(), // When `true`, shows a skeleton loader in place of the selected value.
|
|
649
819
|
disabled: z.boolean().optional(), // Whether the select is disabled.
|
|
650
820
|
required: z.boolean().optional(), // Whether the select is required. When `false`, shows "(optional)" text.
|
|
651
|
-
labelTooltip: z
|
|
821
|
+
labelTooltip: z
|
|
822
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
823
|
+
.optional(), // Tooltip content displayed next to the label via an info icon.
|
|
652
824
|
value: z.string().optional(), // Currently selected value (controlled mode).
|
|
653
|
-
children: z
|
|
654
|
-
|
|
825
|
+
children: z
|
|
826
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
827
|
+
.optional(), // `Select.Option` elements to render in the dropdown.
|
|
828
|
+
description: z
|
|
829
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
830
|
+
.optional(), // Helper text displayed below the select.
|
|
655
831
|
error: z.unknown().optional(), // Error message string or validation error object with `match` key.
|
|
656
832
|
onValueChange: z.unknown().optional(), // Callback when selection changes
|
|
657
833
|
defaultValue: z.string().optional(), // Initial value for uncontrolled mode
|
|
@@ -673,13 +849,21 @@ export const SensitiveInputPropsSchema = z.object({
|
|
|
673
849
|
id: z.string().optional(),
|
|
674
850
|
lang: z.string().optional(),
|
|
675
851
|
title: z.string().optional(),
|
|
676
|
-
children: z
|
|
852
|
+
children: z
|
|
853
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
854
|
+
.optional(),
|
|
677
855
|
value: z.string().optional(), // Controlled value
|
|
678
856
|
size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Size of the input. - `"xs"` — Extra small for compact UIs - `"sm"` — Small for secondary fields - `"base"` — Default input size - `"lg"` — Large for prominent fields
|
|
679
857
|
variant: z.enum(["default", "error"]).optional(), // Style variant of the input. - `"default"` — Default input appearance - `"error"` — Error state for validation failures
|
|
680
|
-
label: z
|
|
681
|
-
|
|
682
|
-
|
|
858
|
+
label: z
|
|
859
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
860
|
+
.optional(), // Label content for the input (enables Field wrapper and sets masked state label) - can be a string or any React node
|
|
861
|
+
labelTooltip: z
|
|
862
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
863
|
+
.optional(), // Tooltip content to display next to the label via an info icon
|
|
864
|
+
description: z
|
|
865
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
866
|
+
.optional(), // Helper text displayed below the input
|
|
683
867
|
error: z.unknown().optional(), // Error message or validation error object
|
|
684
868
|
});
|
|
685
869
|
|
|
@@ -693,12 +877,16 @@ export const SidebarPropsSchema = z.object({
|
|
|
693
877
|
defaultWidth: z.number().optional(), // Initial width in pixels when resizable.
|
|
694
878
|
minWidth: z.number().optional(), // Minimum width in pixels when resizing.
|
|
695
879
|
maxWidth: z.number().optional(), // Maximum width in pixels when resizing.
|
|
696
|
-
children: z
|
|
880
|
+
children: z
|
|
881
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
882
|
+
.optional(), // Content — typically `<Sidebar>` + main content.
|
|
697
883
|
className: z.string().optional(), // Additional CSS classes for the wrapper div.
|
|
698
884
|
});
|
|
699
885
|
|
|
700
886
|
export const SignalFlareAILogoPropsSchema = z.object({
|
|
701
|
-
children: z
|
|
887
|
+
children: z
|
|
888
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
889
|
+
.optional(),
|
|
702
890
|
className: z.string().optional(),
|
|
703
891
|
height: z.unknown().optional(),
|
|
704
892
|
id: z.string().optional(),
|
|
@@ -712,7 +900,23 @@ export const SignalFlareAILogoPropsSchema = z.object({
|
|
|
712
900
|
accentHeight: z.unknown().optional(),
|
|
713
901
|
accumulate: z.enum(["none", "sum"]).optional(),
|
|
714
902
|
additive: z.enum(["replace", "sum"]).optional(),
|
|
715
|
-
alignmentBaseline: z
|
|
903
|
+
alignmentBaseline: z
|
|
904
|
+
.enum([
|
|
905
|
+
"auto",
|
|
906
|
+
"baseline",
|
|
907
|
+
"before-edge",
|
|
908
|
+
"text-before-edge",
|
|
909
|
+
"middle",
|
|
910
|
+
"central",
|
|
911
|
+
"after-edge",
|
|
912
|
+
"text-after-edge",
|
|
913
|
+
"ideographic",
|
|
914
|
+
"alphabetic",
|
|
915
|
+
"hanging",
|
|
916
|
+
"mathematical",
|
|
917
|
+
"inherit",
|
|
918
|
+
])
|
|
919
|
+
.optional(),
|
|
716
920
|
allowReorder: z.enum(["no", "yes"]).optional(),
|
|
717
921
|
alphabetic: z.unknown().optional(),
|
|
718
922
|
amplitude: z.unknown().optional(),
|
|
@@ -736,7 +940,9 @@ export const SignalFlareAILogoPropsSchema = z.object({
|
|
|
736
940
|
clipPathUnits: z.unknown().optional(),
|
|
737
941
|
clipRule: z.unknown().optional(),
|
|
738
942
|
colorInterpolation: z.unknown().optional(),
|
|
739
|
-
colorInterpolationFilters: z
|
|
943
|
+
colorInterpolationFilters: z
|
|
944
|
+
.enum(["auto", "sRGB", "linearRGB", "inherit"])
|
|
945
|
+
.optional(),
|
|
740
946
|
colorProfile: z.unknown().optional(),
|
|
741
947
|
colorRendering: z.unknown().optional(),
|
|
742
948
|
contentScriptType: z.unknown().optional(),
|
|
@@ -751,7 +957,23 @@ export const SignalFlareAILogoPropsSchema = z.object({
|
|
|
751
957
|
direction: z.unknown().optional(),
|
|
752
958
|
display: z.unknown().optional(),
|
|
753
959
|
divisor: z.unknown().optional(),
|
|
754
|
-
dominantBaseline: z
|
|
960
|
+
dominantBaseline: z
|
|
961
|
+
.enum([
|
|
962
|
+
"auto",
|
|
963
|
+
"use-script",
|
|
964
|
+
"no-change",
|
|
965
|
+
"reset-size",
|
|
966
|
+
"ideographic",
|
|
967
|
+
"alphabetic",
|
|
968
|
+
"hanging",
|
|
969
|
+
"mathematical",
|
|
970
|
+
"central",
|
|
971
|
+
"middle",
|
|
972
|
+
"text-after-edge",
|
|
973
|
+
"text-before-edge",
|
|
974
|
+
"inherit",
|
|
975
|
+
])
|
|
976
|
+
.optional(),
|
|
755
977
|
dur: z.unknown().optional(),
|
|
756
978
|
dx: z.unknown().optional(),
|
|
757
979
|
dy: z.unknown().optional(),
|
|
@@ -954,16 +1176,48 @@ export const SignalFlareAILogoPropsSchema = z.object({
|
|
|
954
1176
|
variant: z.enum(["glyph", "full"]).optional(), // Logo variant - `glyph`: Map pin icon only - `full`: Full logo with wordmark and decorative element
|
|
955
1177
|
});
|
|
956
1178
|
|
|
1179
|
+
export const SparklinePropsSchema = z.object({
|
|
1180
|
+
className: z.string().optional(), // Additional CSS classes
|
|
1181
|
+
children: z
|
|
1182
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1183
|
+
.optional(), // Child elements
|
|
1184
|
+
});
|
|
1185
|
+
|
|
1186
|
+
export const StatCardPropsSchema = z.object({
|
|
1187
|
+
size: z.enum(["sm", "base"]).optional(), // Size of the card. Defaults to `"base"`.
|
|
1188
|
+
label: z
|
|
1189
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1190
|
+
.optional(), // Short descriptive label (e.g. `"Active users"`).
|
|
1191
|
+
value: z
|
|
1192
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1193
|
+
.optional(), // Primary value to emphasise (pre-formatted).
|
|
1194
|
+
hint: z
|
|
1195
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1196
|
+
.optional(), // Optional secondary text displayed under the value.
|
|
1197
|
+
delta: z.unknown().optional(), // Optional change indicator (arrow + number + label).
|
|
1198
|
+
trend: z
|
|
1199
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1200
|
+
.optional(), // Optional content slot rendered on the right-hand side — typically a `Sparkline` showing the metric's trend.
|
|
1201
|
+
loading: z.boolean().optional(), // When `true`, renders a skeleton placeholder in place of value + delta.
|
|
1202
|
+
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
1203
|
+
});
|
|
1204
|
+
|
|
957
1205
|
export const SurfacePropsSchema = z.object({
|
|
958
1206
|
as: z.unknown().optional(), // The HTML element type to render as (e.g. `"div"`, `"section"`, `"article"`).
|
|
959
1207
|
className: z.string().optional(), // Additional CSS classes merged via `cn()`.
|
|
960
|
-
children: z
|
|
1208
|
+
children: z
|
|
1209
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1210
|
+
.optional(), // Content rendered inside the surface.
|
|
961
1211
|
});
|
|
962
1212
|
|
|
963
1213
|
export const SwitchPropsSchema = z.object({
|
|
964
1214
|
variant: z.enum(["default", "error"]).optional(), // Visual variant: "default" or "error" for validation failures (visual only, no error text)
|
|
965
|
-
label: z
|
|
966
|
-
|
|
1215
|
+
label: z
|
|
1216
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1217
|
+
.optional(), // Label content for the switch (Field wrapper is built-in) - can be a string or any React node. Optional when used standalone for visual-only purposes.
|
|
1218
|
+
labelTooltip: z
|
|
1219
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1220
|
+
.optional(), // Tooltip content to display next to the label via an info icon
|
|
967
1221
|
required: z.boolean().optional(), // Whether the switch is required. When explicitly false, shows "(optional)" text after the label.
|
|
968
1222
|
controlFirst: z.boolean().optional(), // When true (default), switch appears before label. When false, label appears before switch.
|
|
969
1223
|
size: z.enum(["sm", "base", "lg"]).optional(),
|
|
@@ -984,7 +1238,9 @@ export const TablePropsSchema = z.object({
|
|
|
984
1238
|
layout: z.enum(["auto", "fixed"]).optional(),
|
|
985
1239
|
variant: z.enum(["default", "selected"]).optional(),
|
|
986
1240
|
className: z.string().optional(), // Additional CSS classes
|
|
987
|
-
children: z
|
|
1241
|
+
children: z
|
|
1242
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1243
|
+
.optional(), // Child elements
|
|
988
1244
|
});
|
|
989
1245
|
|
|
990
1246
|
export const TabsPropsSchema = z.object({
|
|
@@ -1000,11 +1256,35 @@ export const TabsPropsSchema = z.object({
|
|
|
1000
1256
|
});
|
|
1001
1257
|
|
|
1002
1258
|
export const TextPropsSchema = z.object({
|
|
1003
|
-
variant: z
|
|
1259
|
+
variant: z
|
|
1260
|
+
.enum([
|
|
1261
|
+
"heading1",
|
|
1262
|
+
"heading2",
|
|
1263
|
+
"heading3",
|
|
1264
|
+
"body",
|
|
1265
|
+
"secondary",
|
|
1266
|
+
"success",
|
|
1267
|
+
"error",
|
|
1268
|
+
"mono",
|
|
1269
|
+
"mono-secondary",
|
|
1270
|
+
])
|
|
1271
|
+
.optional(), // Text style variant. Determines color, font, and weight. - `"heading1"` — Large page title (30px, semibold) - `"heading2"` — Section title (24px, semibold) - `"heading3"` — Subsection title (18px, semibold) - `"body"` — Default body text - `"secondary"` — Muted text for secondary information - `"success"` — Success state text - `"error"` — Error state text - `"mono"` — Monospace text for code - `"mono-secondary"` — Muted monospace text
|
|
1004
1272
|
size: z.enum(["xs", "sm", "base", "lg"]).optional(), // Text size (only applies to body/secondary/success/error variants). - `"xs"` — 12px - `"sm"` — 14px - `"base"` — 16px - `"lg"` — 18px
|
|
1005
1273
|
bold: z.boolean().optional(), // Whether to use bold font weight (only applies to body variants).
|
|
1006
1274
|
as: z.unknown().optional(), // The HTML element type to render as (e.g. `"span"`, `"p"`, `"h1"`). Auto-selected based on variant if omitted.
|
|
1007
|
-
children: z
|
|
1275
|
+
children: z
|
|
1276
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1277
|
+
.optional(), // Text content.
|
|
1278
|
+
});
|
|
1279
|
+
|
|
1280
|
+
export const TextRollPropsSchema = z.object({
|
|
1281
|
+
children: z.string(), // Text to animate. Each character rolls in / out independently.
|
|
1282
|
+
duration: z.number().optional(), // Duration (seconds) of each letter's enter and exit tween.
|
|
1283
|
+
getEnterDelay: z.unknown().optional(), // Per-letter delay for the enter animation.
|
|
1284
|
+
getExitDelay: z.unknown().optional(), // Per-letter delay for the exit animation.
|
|
1285
|
+
className: z.string().optional(), // Additional CSS classes merged via `cn()`. Use sf semantic tokens only.
|
|
1286
|
+
transition: z.unknown().optional(), // Shared transition for both enter and exit tweens.
|
|
1287
|
+
variants: z.unknown().optional(), // Override the default rotate-X roll with custom enter/exit variants.
|
|
1008
1288
|
});
|
|
1009
1289
|
|
|
1010
1290
|
export const ThemeTogglePropsSchema = z.object({
|
|
@@ -1017,14 +1297,24 @@ export const ThemeTogglePropsSchema = z.object({
|
|
|
1017
1297
|
export const ToastyPropsSchema = z.object({
|
|
1018
1298
|
variant: z.enum(["default", "error", "warning"]).optional(),
|
|
1019
1299
|
className: z.string().optional(), // Additional CSS classes
|
|
1020
|
-
children: z
|
|
1300
|
+
children: z
|
|
1301
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1302
|
+
.optional(), // Child elements
|
|
1021
1303
|
});
|
|
1022
1304
|
|
|
1023
1305
|
export const TooltipPropsSchema = z.object({
|
|
1024
1306
|
side: z.enum(["top", "bottom", "left", "right"]).optional(),
|
|
1025
1307
|
className: z.string().optional(), // Additional CSS classes
|
|
1026
|
-
children: z
|
|
1027
|
-
|
|
1308
|
+
children: z
|
|
1309
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema])
|
|
1310
|
+
.optional(), // Child elements
|
|
1311
|
+
content: z.union([
|
|
1312
|
+
z.string(),
|
|
1313
|
+
z.number(),
|
|
1314
|
+
z.boolean(),
|
|
1315
|
+
z.null(),
|
|
1316
|
+
DynamicValueSchema,
|
|
1317
|
+
]), // Content to display in the tooltip
|
|
1028
1318
|
});
|
|
1029
1319
|
|
|
1030
1320
|
// =============================================================================
|
|
@@ -1034,7 +1324,74 @@ export const TooltipPropsSchema = z.object({
|
|
|
1034
1324
|
/**
|
|
1035
1325
|
* All valid component type names
|
|
1036
1326
|
*/
|
|
1037
|
-
export type KumoComponentType =
|
|
1327
|
+
export type KumoComponentType =
|
|
1328
|
+
| "AiActions"
|
|
1329
|
+
| "AiAgentCard"
|
|
1330
|
+
| "AiApproval"
|
|
1331
|
+
| "AiCodeBlock"
|
|
1332
|
+
| "AiConversation"
|
|
1333
|
+
| "AiInfoBanner"
|
|
1334
|
+
| "AiMessage"
|
|
1335
|
+
| "AiMissionHeader"
|
|
1336
|
+
| "AiPartGroup"
|
|
1337
|
+
| "AiQuestion"
|
|
1338
|
+
| "AiReasoning"
|
|
1339
|
+
| "AiResponse"
|
|
1340
|
+
| "AiShimmer"
|
|
1341
|
+
| "AiStatusBadge"
|
|
1342
|
+
| "AiStreamingText"
|
|
1343
|
+
| "AiSubagent"
|
|
1344
|
+
| "AiSuggestions"
|
|
1345
|
+
| "AiTaskList"
|
|
1346
|
+
| "AiTimeline"
|
|
1347
|
+
| "AiToolCall"
|
|
1348
|
+
| "AiUsageBar"
|
|
1349
|
+
| "Badge"
|
|
1350
|
+
| "Banner"
|
|
1351
|
+
| "Breadcrumbs"
|
|
1352
|
+
| "Button"
|
|
1353
|
+
| "Checkbox"
|
|
1354
|
+
| "ClipboardText"
|
|
1355
|
+
| "Code"
|
|
1356
|
+
| "Collapsible"
|
|
1357
|
+
| "Combobox"
|
|
1358
|
+
| "CommandPalette"
|
|
1359
|
+
| "DataGrid"
|
|
1360
|
+
| "DatePicker"
|
|
1361
|
+
| "DateRangePicker"
|
|
1362
|
+
| "Dialog"
|
|
1363
|
+
| "DropdownMenu"
|
|
1364
|
+
| "Empty"
|
|
1365
|
+
| "Field"
|
|
1366
|
+
| "Filters"
|
|
1367
|
+
| "Grid"
|
|
1368
|
+
| "Input"
|
|
1369
|
+
| "InputArea"
|
|
1370
|
+
| "Label"
|
|
1371
|
+
| "LayerCard"
|
|
1372
|
+
| "Link"
|
|
1373
|
+
| "Loader"
|
|
1374
|
+
| "MenuBar"
|
|
1375
|
+
| "Meter"
|
|
1376
|
+
| "Pagination"
|
|
1377
|
+
| "Popover"
|
|
1378
|
+
| "PromptInput"
|
|
1379
|
+
| "Radio"
|
|
1380
|
+
| "Select"
|
|
1381
|
+
| "SensitiveInput"
|
|
1382
|
+
| "Sidebar"
|
|
1383
|
+
| "SignalFlareAILogo"
|
|
1384
|
+
| "Sparkline"
|
|
1385
|
+
| "StatCard"
|
|
1386
|
+
| "Surface"
|
|
1387
|
+
| "Switch"
|
|
1388
|
+
| "Table"
|
|
1389
|
+
| "Tabs"
|
|
1390
|
+
| "Text"
|
|
1391
|
+
| "TextRoll"
|
|
1392
|
+
| "ThemeToggle"
|
|
1393
|
+
| "Toasty"
|
|
1394
|
+
| "Tooltip";
|
|
1038
1395
|
|
|
1039
1396
|
export const KumoComponentTypeSchema = z.enum([
|
|
1040
1397
|
"AiActions",
|
|
@@ -1043,9 +1400,9 @@ export const KumoComponentTypeSchema = z.enum([
|
|
|
1043
1400
|
"AiCodeBlock",
|
|
1044
1401
|
"AiConversation",
|
|
1045
1402
|
"AiInfoBanner",
|
|
1046
|
-
"AiLoader",
|
|
1047
1403
|
"AiMessage",
|
|
1048
1404
|
"AiMissionHeader",
|
|
1405
|
+
"AiPartGroup",
|
|
1049
1406
|
"AiQuestion",
|
|
1050
1407
|
"AiReasoning",
|
|
1051
1408
|
"AiResponse",
|
|
@@ -1093,11 +1450,14 @@ export const KumoComponentTypeSchema = z.enum([
|
|
|
1093
1450
|
"SensitiveInput",
|
|
1094
1451
|
"Sidebar",
|
|
1095
1452
|
"SignalFlareAILogo",
|
|
1453
|
+
"Sparkline",
|
|
1454
|
+
"StatCard",
|
|
1096
1455
|
"Surface",
|
|
1097
1456
|
"Switch",
|
|
1098
1457
|
"Table",
|
|
1099
1458
|
"Tabs",
|
|
1100
1459
|
"Text",
|
|
1460
|
+
"TextRoll",
|
|
1101
1461
|
"ThemeToggle",
|
|
1102
1462
|
"Toasty",
|
|
1103
1463
|
"Tooltip",
|
|
@@ -1113,9 +1473,9 @@ export const ComponentPropsSchemas = {
|
|
|
1113
1473
|
AiCodeBlock: AiCodeBlockPropsSchema,
|
|
1114
1474
|
AiConversation: AiConversationPropsSchema,
|
|
1115
1475
|
AiInfoBanner: AiInfoBannerPropsSchema,
|
|
1116
|
-
AiLoader: AiLoaderPropsSchema,
|
|
1117
1476
|
AiMessage: AiMessagePropsSchema,
|
|
1118
1477
|
AiMissionHeader: AiMissionHeaderPropsSchema,
|
|
1478
|
+
AiPartGroup: AiPartGroupPropsSchema,
|
|
1119
1479
|
AiQuestion: AiQuestionPropsSchema,
|
|
1120
1480
|
AiReasoning: AiReasoningPropsSchema,
|
|
1121
1481
|
AiResponse: AiResponsePropsSchema,
|
|
@@ -1163,11 +1523,14 @@ export const ComponentPropsSchemas = {
|
|
|
1163
1523
|
SensitiveInput: SensitiveInputPropsSchema,
|
|
1164
1524
|
Sidebar: SidebarPropsSchema,
|
|
1165
1525
|
SignalFlareAILogo: SignalFlareAILogoPropsSchema,
|
|
1526
|
+
Sparkline: SparklinePropsSchema,
|
|
1527
|
+
StatCard: StatCardPropsSchema,
|
|
1166
1528
|
Surface: SurfacePropsSchema,
|
|
1167
1529
|
Switch: SwitchPropsSchema,
|
|
1168
1530
|
Table: TablePropsSchema,
|
|
1169
1531
|
Tabs: TabsPropsSchema,
|
|
1170
1532
|
Text: TextPropsSchema,
|
|
1533
|
+
TextRoll: TextRollPropsSchema,
|
|
1171
1534
|
ThemeToggle: ThemeTogglePropsSchema,
|
|
1172
1535
|
Toasty: ToastyPropsSchema,
|
|
1173
1536
|
Tooltip: TooltipPropsSchema,
|
|
@@ -1209,10 +1572,22 @@ export type UITree = z.infer<typeof UITreeSchema>;
|
|
|
1209
1572
|
/**
|
|
1210
1573
|
* Validate an element's props against its component schema
|
|
1211
1574
|
*/
|
|
1212
|
-
export function validateElementProps(
|
|
1213
|
-
|
|
1575
|
+
export function validateElementProps(
|
|
1576
|
+
element: UIElement
|
|
1577
|
+
): SafeParseResult<unknown> {
|
|
1578
|
+
const schema =
|
|
1579
|
+
ComponentPropsSchemas[element.type as keyof typeof ComponentPropsSchemas];
|
|
1214
1580
|
if (!schema) {
|
|
1215
|
-
return {
|
|
1581
|
+
return {
|
|
1582
|
+
success: false,
|
|
1583
|
+
error: new z.ZodError([
|
|
1584
|
+
{
|
|
1585
|
+
code: "custom",
|
|
1586
|
+
message: `Unknown component type: ${element.type}`,
|
|
1587
|
+
path: ["type"],
|
|
1588
|
+
},
|
|
1589
|
+
]),
|
|
1590
|
+
};
|
|
1216
1591
|
}
|
|
1217
1592
|
return schema.safeParse(element.props);
|
|
1218
1593
|
}
|
|
@@ -1227,4 +1602,72 @@ export function validateUITree(tree: unknown): SafeParseResult<UITree> {
|
|
|
1227
1602
|
/**
|
|
1228
1603
|
* List of all component names (for catalog generation)
|
|
1229
1604
|
*/
|
|
1230
|
-
export const SF_COMPONENT_NAMES = [
|
|
1605
|
+
export const SF_COMPONENT_NAMES = [
|
|
1606
|
+
"AiActions",
|
|
1607
|
+
"AiAgentCard",
|
|
1608
|
+
"AiApproval",
|
|
1609
|
+
"AiCodeBlock",
|
|
1610
|
+
"AiConversation",
|
|
1611
|
+
"AiInfoBanner",
|
|
1612
|
+
"AiMessage",
|
|
1613
|
+
"AiMissionHeader",
|
|
1614
|
+
"AiPartGroup",
|
|
1615
|
+
"AiQuestion",
|
|
1616
|
+
"AiReasoning",
|
|
1617
|
+
"AiResponse",
|
|
1618
|
+
"AiShimmer",
|
|
1619
|
+
"AiStatusBadge",
|
|
1620
|
+
"AiStreamingText",
|
|
1621
|
+
"AiSubagent",
|
|
1622
|
+
"AiSuggestions",
|
|
1623
|
+
"AiTaskList",
|
|
1624
|
+
"AiTimeline",
|
|
1625
|
+
"AiToolCall",
|
|
1626
|
+
"AiUsageBar",
|
|
1627
|
+
"Badge",
|
|
1628
|
+
"Banner",
|
|
1629
|
+
"Breadcrumbs",
|
|
1630
|
+
"Button",
|
|
1631
|
+
"Checkbox",
|
|
1632
|
+
"ClipboardText",
|
|
1633
|
+
"Code",
|
|
1634
|
+
"Collapsible",
|
|
1635
|
+
"Combobox",
|
|
1636
|
+
"CommandPalette",
|
|
1637
|
+
"DataGrid",
|
|
1638
|
+
"DatePicker",
|
|
1639
|
+
"DateRangePicker",
|
|
1640
|
+
"Dialog",
|
|
1641
|
+
"DropdownMenu",
|
|
1642
|
+
"Empty",
|
|
1643
|
+
"Field",
|
|
1644
|
+
"Filters",
|
|
1645
|
+
"Grid",
|
|
1646
|
+
"Input",
|
|
1647
|
+
"InputArea",
|
|
1648
|
+
"Label",
|
|
1649
|
+
"LayerCard",
|
|
1650
|
+
"Link",
|
|
1651
|
+
"Loader",
|
|
1652
|
+
"MenuBar",
|
|
1653
|
+
"Meter",
|
|
1654
|
+
"Pagination",
|
|
1655
|
+
"Popover",
|
|
1656
|
+
"PromptInput",
|
|
1657
|
+
"Radio",
|
|
1658
|
+
"Select",
|
|
1659
|
+
"SensitiveInput",
|
|
1660
|
+
"Sidebar",
|
|
1661
|
+
"SignalFlareAILogo",
|
|
1662
|
+
"Sparkline",
|
|
1663
|
+
"StatCard",
|
|
1664
|
+
"Surface",
|
|
1665
|
+
"Switch",
|
|
1666
|
+
"Table",
|
|
1667
|
+
"Tabs",
|
|
1668
|
+
"Text",
|
|
1669
|
+
"TextRoll",
|
|
1670
|
+
"ThemeToggle",
|
|
1671
|
+
"Toasty",
|
|
1672
|
+
"Tooltip",
|
|
1673
|
+
] as const;
|