@signalflare-ai/ui 1.2.0 → 1.3.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 +77 -1
- package/ai/component-registry.json +208 -550
- package/ai/component-registry.md +3042 -3115
- package/ai/schemas.ts +504 -96
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts.map +1 -1
- package/dist/{ai-actions-BdUZI3Gk.js → ai-actions-CBfz5XEf.js} +4 -4
- package/dist/{ai-actions-BdUZI3Gk.js.map → ai-actions-CBfz5XEf.js.map} +1 -1
- package/dist/{ai-agent-card-BR2NIYhi.js → ai-agent-card-CByAUe0q.js} +3 -3
- package/dist/ai-agent-card-CByAUe0q.js.map +1 -0
- package/dist/{ai-approval-Ba7mrKba.js → ai-approval-Ci8N70a7.js} +4 -3
- package/dist/{ai-approval-Ba7mrKba.js.map → ai-approval-Ci8N70a7.js.map} +1 -1
- package/dist/{ai-code-block-CZtoL73R.js → ai-code-block-P9TJHvaC.js} +37 -39
- package/dist/ai-code-block-P9TJHvaC.js.map +1 -0
- package/dist/{ai-conversation-Cc7WlaBg.js → ai-conversation-Qslfdi1t.js} +28 -42
- package/dist/ai-conversation-Qslfdi1t.js.map +1 -0
- package/dist/{ai-info-banner-C7EWPBj7.js → ai-info-banner-B_9vtGK3.js} +3 -3
- package/dist/{ai-info-banner-C7EWPBj7.js.map → ai-info-banner-B_9vtGK3.js.map} +1 -1
- package/dist/{ai-message-Bp7L68U_.js → ai-message-Ci3gwM7G.js} +6 -6
- package/dist/{ai-message-Bp7L68U_.js.map → ai-message-Ci3gwM7G.js.map} +1 -1
- package/dist/{ai-mission-header-TiCJfTNt.js → ai-mission-header-CaBc19-t.js} +2 -2
- package/dist/{ai-mission-header-TiCJfTNt.js.map → ai-mission-header-CaBc19-t.js.map} +1 -1
- package/dist/{ai-part-group-DNb9I446.js → ai-part-group-Dx1Mr92B.js} +5 -4
- package/dist/ai-part-group-Dx1Mr92B.js.map +1 -0
- package/dist/{ai-prompt-input-BVvov_KF.js → ai-prompt-input-Bm4XoSj2.js} +19 -17
- package/dist/ai-prompt-input-Bm4XoSj2.js.map +1 -0
- package/dist/{ai-question-GPPMk7YM.js → ai-question-OyJovxGe.js} +4 -3
- package/dist/{ai-question-GPPMk7YM.js.map → ai-question-OyJovxGe.js.map} +1 -1
- package/dist/{ai-reasoning-_feFjk56.js → ai-reasoning-BLfBXx3F.js} +9 -5
- package/dist/ai-reasoning-BLfBXx3F.js.map +1 -0
- package/dist/{ai-response-CvjV3WhV.js → ai-response-hbVCZJmo.js} +2 -2
- package/dist/{ai-response-CvjV3WhV.js.map → ai-response-hbVCZJmo.js.map} +1 -1
- package/dist/{ai-shimmer-j6lKIrjj.js → ai-shimmer-BamNMNK3.js} +2 -2
- package/dist/{ai-shimmer-j6lKIrjj.js.map → ai-shimmer-BamNMNK3.js.map} +1 -1
- package/dist/{ai-status-badge-CSU_QOdz.js → ai-status-badge-BZLczdkI.js} +2 -2
- package/dist/{ai-status-badge-CSU_QOdz.js.map → ai-status-badge-BZLczdkI.js.map} +1 -1
- package/dist/{ai-streaming-text-IWW1BhvZ.js → ai-streaming-text-DgYu64UH.js} +1 -1
- package/dist/{ai-streaming-text-IWW1BhvZ.js.map → ai-streaming-text-DgYu64UH.js.map} +1 -1
- package/dist/{ai-subagent-JA4iIMW3.js → ai-subagent-p97AI1h9.js} +3 -3
- package/dist/{ai-subagent-JA4iIMW3.js.map → ai-subagent-p97AI1h9.js.map} +1 -1
- package/dist/{ai-suggestion-BdO6MBuH.js → ai-suggestion-Bj6vF7CT.js} +3 -3
- package/dist/{ai-suggestion-BdO6MBuH.js.map → ai-suggestion-Bj6vF7CT.js.map} +1 -1
- package/dist/{ai-task-list-DYw4R1FA.js → ai-task-list-C_UQYpk9.js} +6 -4
- package/dist/{ai-task-list-DYw4R1FA.js.map → ai-task-list-C_UQYpk9.js.map} +1 -1
- package/dist/{ai-timeline-C42tOUT8.js → ai-timeline-CePL1LOU.js} +3 -3
- package/dist/ai-timeline-CePL1LOU.js.map +1 -0
- package/dist/{ai-tool-03jOTwUI.js → ai-tool-CfRcwmHT.js} +17 -11
- package/dist/ai-tool-CfRcwmHT.js.map +1 -0
- package/dist/{ai-usage-bar-BRf5LC_b.js → ai-usage-bar-45pVRCGA.js} +2 -2
- package/dist/{ai-usage-bar-BRf5LC_b.js.map → ai-usage-bar-45pVRCGA.js.map} +1 -1
- package/dist/{badge-BheXjMc8.js → badge-Beb-6uut.js} +5 -5
- package/dist/{badge-BheXjMc8.js.map → badge-Beb-6uut.js.map} +1 -1
- package/dist/{banner-CcsjunJg.js → banner-CCEksxPg.js} +3 -3
- package/dist/{banner-CcsjunJg.js.map → banner-CCEksxPg.js.map} +1 -1
- package/dist/{breadcrumbs-CouSyy3H.js → breadcrumbs-HiTmgaZ4.js} +5 -5
- package/dist/{breadcrumbs-CouSyy3H.js.map → breadcrumbs-HiTmgaZ4.js.map} +1 -1
- package/dist/{button-CO6-qPax.js → button-BHOgXJRU.js} +4 -4
- package/dist/{button-CO6-qPax.js.map → button-BHOgXJRU.js.map} +1 -1
- package/dist/catalog.js +1 -1
- package/dist/catalog.js.map +1 -1
- package/dist/{chart-Dg0qUeSc.js → chart-B9FfZdKs.js} +7 -7
- package/dist/chart-B9FfZdKs.js.map +1 -0
- package/dist/{checkbox-D7p4QKsC.js → checkbox-Cy_OCyay.js} +3 -3
- package/dist/{checkbox-D7p4QKsC.js.map → checkbox-Cy_OCyay.js.map} +1 -1
- package/dist/{clipboard-text-kLaMogs3.js → clipboard-text-CKSvNp9L.js} +6 -5
- package/dist/clipboard-text-CKSvNp9L.js.map +1 -0
- package/dist/{cn-YROP2_ox.js → cn-CmAOpn49.js} +2 -2
- package/dist/{cn-YROP2_ox.js.map → cn-CmAOpn49.js.map} +1 -1
- package/dist/{code-BN8InC0G.js → code-JsQz-0G_.js} +4 -4
- package/dist/{code-BN8InC0G.js.map → code-JsQz-0G_.js.map} +1 -1
- package/dist/{collapsible-D_ueZ0jz.js → collapsible-1kOZ-89L.js} +2 -2
- package/dist/{collapsible-D_ueZ0jz.js.map → collapsible-1kOZ-89L.js.map} +1 -1
- package/dist/{combobox-B7TOK0U2.js → combobox-CQwDmqgA.js} +4 -4
- package/dist/{combobox-B7TOK0U2.js.map → combobox-CQwDmqgA.js.map} +1 -1
- package/dist/command-line/cli.js +3 -3
- package/dist/{command-palette-CuNUyJca.js → command-palette-Bkuv3e6o.js} +20 -5
- package/dist/command-palette-Bkuv3e6o.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 +1 -1
- package/dist/components/ai-prompt-input.js +1 -1
- 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/badge.js +1 -1
- package/dist/components/banner.js +1 -1
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/chart.js +2 -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/collapsible.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/date-range-picker.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/empty.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/filters.js +1 -1
- package/dist/components/flow.js +1 -1
- package/dist/components/grid.js +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/label.js +1 -1
- package/dist/components/layer-card.js +1 -1
- package/dist/components/link.js +3 -3
- package/dist/components/link.js.map +1 -1
- package/dist/components/loader.js +2 -2
- package/dist/components/menubar.js +1 -1
- package/dist/components/meter.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/popover.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/signalflare-ai-logo.js +1 -1
- package/dist/components/sparkline.js +1 -1
- package/dist/components/stat-card.js +1 -1
- package/dist/components/surface.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/text-roll.js +1 -1
- package/dist/components/text.js +1 -1
- package/dist/components/theme-toggle.js +1 -1
- package/dist/components/toast.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/use-agent-harness.js +1 -1
- package/dist/{data-grid-DGHmU0w3.js → data-grid-DDSFMHud.js} +136 -53
- package/dist/data-grid-DDSFMHud.js.map +1 -0
- package/dist/{date-picker--ox89RBy.js → date-picker-O34AqG3f.js} +2 -2
- package/dist/{date-picker--ox89RBy.js.map → date-picker-O34AqG3f.js.map} +1 -1
- package/dist/{date-range-picker-DVa7QBqE.js → date-range-picker-YKYvum_r.js} +29 -39
- package/dist/{date-range-picker-DVa7QBqE.js.map → date-range-picker-YKYvum_r.js.map} +1 -1
- package/dist/{dialog-Bv1oSFOd.js → dialog-DYqu4aDO.js} +3 -3
- package/dist/{dialog-Bv1oSFOd.js.map → dialog-DYqu4aDO.js.map} +1 -1
- package/dist/{dist-B6iWiWwp.js → dist-6AtBsaJE.js} +153 -47
- package/dist/dist-6AtBsaJE.js.map +1 -0
- package/dist/{dropdown-B_nrGXjV.js → dropdown-XzbnRLYR.js} +15 -5
- package/dist/dropdown-XzbnRLYR.js.map +1 -0
- package/dist/{echart-CdOUaT-r.js → echart-DGBIVAv1.js} +23 -57
- package/dist/{echart-CdOUaT-r.js.map → echart-DGBIVAv1.js.map} +1 -1
- package/dist/{empty-DZnN0zKX.js → empty-C1tAkawe.js} +6 -6
- package/dist/{empty-DZnN0zKX.js.map → empty-C1tAkawe.js.map} +1 -1
- package/dist/{field-B_yVof52.js → field-DBpFzzBS.js} +3 -3
- package/dist/{field-B_yVof52.js.map → field-DBpFzzBS.js.map} +1 -1
- package/dist/{filters-cpJCY21R.js → filters-SmEl93za.js} +10 -10
- package/dist/filters-SmEl93za.js.map +1 -0
- package/dist/{flow-B4v198ot.js → flow-BLzgbq1T.js} +6 -6
- package/dist/flow-BLzgbq1T.js.map +1 -0
- package/dist/genui.js +2 -2
- package/dist/genui.js.map +1 -1
- package/dist/{grid-CEd64Lnh.js → grid-CifjQL-5.js} +2 -2
- package/dist/{grid-CEd64Lnh.js.map → grid-CifjQL-5.js.map} +1 -1
- package/dist/{highlight-to-react-D0Yav4jk.js → highlight-to-react-DN9dUCS2.js} +9 -15
- package/dist/highlight-to-react-DN9dUCS2.js.map +1 -0
- package/dist/index.js +71 -71
- package/dist/index.js.map +1 -1
- package/dist/{input-ClB_E4Lb.js → input-COmx2M_R.js} +5 -5
- package/dist/{input-ClB_E4Lb.js.map → input-COmx2M_R.js.map} +1 -1
- package/dist/{input-B2bbijRh.js → input-GkfMQZC_.js} +3 -3
- package/dist/{input-B2bbijRh.js.map → input-GkfMQZC_.js.map} +1 -1
- package/dist/{label-DUv_urO1.js → label-CiGZ464N.js} +3 -3
- package/dist/{label-DUv_urO1.js.map → label-CiGZ464N.js.map} +1 -1
- package/dist/{layer-card-BK7eYfwn.js → layer-card-8l8GuLQr.js} +2 -2
- package/dist/{layer-card-BK7eYfwn.js.map → layer-card-8l8GuLQr.js.map} +1 -1
- package/dist/{layout-DJHMMap2.js → layout-CWBE0qwx.js} +258 -154
- package/dist/layout-CWBE0qwx.js.map +1 -0
- package/dist/{link-provider-BUZKXaNE.js → link-provider-BSn8YJon.js} +2 -2
- package/dist/link-provider-BSn8YJon.js.map +1 -0
- package/dist/{loader-DAcc-Uag.js → loader-BEMz8pJO.js} +1 -1
- package/dist/{loader-DAcc-Uag.js.map → loader-BEMz8pJO.js.map} +1 -1
- package/dist/{measured-text-BI3dTJmH.js → measured-text-CXkdw9Yr.js} +45 -30
- package/dist/measured-text-CXkdw9Yr.js.map +1 -0
- package/dist/{menubar-Cxf3xeAt.js → menubar-CoOr4ocj.js} +3 -3
- package/dist/{menubar-Cxf3xeAt.js.map → menubar-CoOr4ocj.js.map} +1 -1
- package/dist/{meter-BFFe9l5b.js → meter-Pf_VOl59.js} +2 -2
- package/dist/{meter-BFFe9l5b.js.map → meter-Pf_VOl59.js.map} +1 -1
- package/dist/{pagination-yS372Tr4.js → pagination-DSY279Ta.js} +2 -2
- package/dist/{pagination-yS372Tr4.js.map → pagination-DSY279Ta.js.map} +1 -1
- package/dist/{popover-SRoJaCZr.js → popover-BY-e9co1.js} +2 -2
- package/dist/{popover-SRoJaCZr.js.map → popover-BY-e9co1.js.map} +1 -1
- package/dist/{radio-BcwhwYNB.js → radio-DZwL13j0.js} +2 -2
- package/dist/{radio-BcwhwYNB.js.map → radio-DZwL13j0.js.map} +1 -1
- package/dist/{select-DMhdoHMa.js → select-BFifYqHA.js} +6 -6
- package/dist/{select-DMhdoHMa.js.map → select-BFifYqHA.js.map} +1 -1
- package/dist/{sensitive-input-CJUpIRal.js → sensitive-input-DHLZcM73.js} +4 -4
- package/dist/{sensitive-input-CJUpIRal.js.map → sensitive-input-DHLZcM73.js.map} +1 -1
- package/dist/{sidebar-D4zrlYpn.js → sidebar-odGsdvG4.js} +6 -7
- package/dist/sidebar-odGsdvG4.js.map +1 -0
- package/dist/{signalflare-ai-logo-Bipogceq.js → signalflare-ai-logo-CNaDT_w8.js} +2 -2
- package/dist/{signalflare-ai-logo-Bipogceq.js.map → signalflare-ai-logo-CNaDT_w8.js.map} +1 -1
- package/dist/{skeleton-line-CH1-h6e2.js → skeleton-line-CxxYVTO2.js} +2 -2
- package/dist/{skeleton-line-CH1-h6e2.js.map → skeleton-line-CxxYVTO2.js.map} +1 -1
- package/dist/{sparkline-DHmgj1d0.js → sparkline-BQ-4j2W2.js} +2 -2
- package/dist/{sparkline-DHmgj1d0.js.map → sparkline-BQ-4j2W2.js.map} +1 -1
- package/dist/src/blocks/agent-harness/agent-harness.tsx +11 -11
- package/dist/src/blocks/commander/commander.tsx +15 -15
- package/dist/src/blocks/map-block/map-block.d.ts.map +1 -1
- package/dist/src/blocks/map-block/map-block.tsx +11 -7
- package/dist/src/components/ai-approval/ai-approval.d.ts.map +1 -1
- package/dist/src/components/ai-code-block/ai-code-block.d.ts +14 -13
- package/dist/src/components/ai-code-block/ai-code-block.d.ts.map +1 -1
- package/dist/src/components/ai-conversation/ai-conversation.d.ts.map +1 -1
- package/dist/src/components/ai-part-group/ai-part-group.d.ts.map +1 -1
- 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.map +1 -1
- package/dist/src/components/ai-prompt-input/types.d.ts.map +1 -1
- package/dist/src/components/ai-question/ai-question.d.ts.map +1 -1
- package/dist/src/components/ai-reasoning/ai-reasoning.d.ts.map +1 -1
- package/dist/src/components/ai-response/ai-response.d.ts.map +1 -1
- package/dist/src/components/ai-subagent/ai-subagent.d.ts.map +1 -1
- package/dist/src/components/ai-tool/ai-tool.d.ts.map +1 -1
- package/dist/src/components/chart/echart.d.ts.map +1 -1
- package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
- package/dist/src/components/data-grid/data-grid.d.ts +2 -1
- package/dist/src/components/data-grid/data-grid.d.ts.map +1 -1
- package/dist/src/components/data-grid/features.d.ts +20 -0
- package/dist/src/components/data-grid/features.d.ts.map +1 -0
- package/dist/src/components/data-grid/types.d.ts +38 -7
- package/dist/src/components/data-grid/types.d.ts.map +1 -1
- package/dist/src/components/filters/filters.d.ts.map +1 -1
- package/dist/src/components/flow/use-children.d.ts +1 -1
- package/dist/src/components/link/link.d.ts.map +1 -1
- package/dist/src/components/sidebar/sidebar.d.ts +1 -1
- package/dist/src/components/signalflare-ai-logo/signalflare-ai-logo.d.ts.map +1 -1
- package/dist/src/components/text/text.d.ts +2 -1
- package/dist/src/components/text/text.d.ts.map +1 -1
- package/dist/src/components/text-roll/text-roll.d.ts.map +1 -1
- package/dist/src/components/theme-toggle/theme-toggle.d.ts.map +1 -1
- package/dist/src/components/toast/toast.d.ts.map +1 -1
- package/dist/src/utils/highlight-to-react.d.ts.map +1 -1
- package/dist/src/utils/measured-text.d.ts.map +1 -1
- package/dist/src/utils/use-measured-text.d.ts.map +1 -1
- package/dist/{stat-card-Ew-ofzEm.js → stat-card-Bspk4XFr.js} +4 -4
- package/dist/stat-card-Bspk4XFr.js.map +1 -0
- package/dist/styles/sf-standalone.css +1 -1
- package/dist/styles/theme-fedramp.css +3 -12
- package/dist/styles/theme-minimal.css +26 -104
- package/dist/styles/theme-sf.css +37 -142
- package/dist/{surface-DGwRlC0o.js → surface-CWdSFVUx.js} +3 -3
- package/dist/{surface-DGwRlC0o.js.map → surface-CWdSFVUx.js.map} +1 -1
- package/dist/{switch-BxAMfHdt.js → switch-TA4cByCJ.js} +5 -5
- package/dist/switch-TA4cByCJ.js.map +1 -0
- package/dist/{table-BBeAtYVZ.js → table-BM8JBGBs.js} +3 -3
- package/dist/{table-BBeAtYVZ.js.map → table-BM8JBGBs.js.map} +1 -1
- package/dist/{tabs-CeHu7Scn.js → tabs-bnH2vGLv.js} +2 -2
- package/dist/{tabs-CeHu7Scn.js.map → tabs-bnH2vGLv.js.map} +1 -1
- package/dist/{text-Cqryz7rk.js → text-iQ0YUFNg.js} +4 -5
- package/dist/{text-Cqryz7rk.js.map → text-iQ0YUFNg.js.map} +1 -1
- package/dist/{text-roll-Ch52hcQj.js → text-roll-C3U2jd2u.js} +5 -2
- package/dist/text-roll-C3U2jd2u.js.map +1 -0
- package/dist/{theme-toggle-LDfIKEqx.js → theme-toggle-BTVxD-fD.js} +10 -9
- package/dist/theme-toggle-BTVxD-fD.js.map +1 -0
- package/dist/{toast-CaFQNYng.js → toast-CgZVaAkw.js} +3 -3
- package/dist/{toast-CaFQNYng.js.map → toast-CgZVaAkw.js.map} +1 -1
- package/dist/{tooltip-g9lFsvcT.js → tooltip-uobk6Oh-.js} +3 -3
- package/dist/{tooltip-g9lFsvcT.js.map → tooltip-uobk6Oh-.js.map} +1 -1
- package/dist/{use-agent-harness-BTcNJdw4.js → use-agent-harness-Dl8w6X5O.js} +3 -3
- package/dist/{use-agent-harness-BTcNJdw4.js.map → use-agent-harness-Dl8w6X5O.js.map} +1 -1
- package/dist/utils.js +3 -3
- package/package.json +27 -25
- package/scripts/component-registry/discovery.ts +11 -10
- package/scripts/component-registry/example-cleanup.ts +8 -8
- package/scripts/component-registry/index.ts +6 -6
- package/scripts/component-registry/schema-generator.ts +1 -1
- package/scripts/component-registry/sub-components.ts +35 -23
- package/scripts/component-registry/utils.ts +11 -11
- package/scripts/component-registry/variant-parser.ts +17 -15
- package/scripts/convert-demos-to-stories.ts +5 -5
- package/scripts/theme-generator/config.ts +1 -5
- package/scripts/theme-generator/generate-css.ts +1 -1
- package/scripts/theme-generator/migrate.ts +3 -3
- package/dist/ai-agent-card-BR2NIYhi.js.map +0 -1
- package/dist/ai-code-block-CZtoL73R.js.map +0 -1
- package/dist/ai-conversation-Cc7WlaBg.js.map +0 -1
- package/dist/ai-part-group-DNb9I446.js.map +0 -1
- package/dist/ai-prompt-input-BVvov_KF.js.map +0 -1
- package/dist/ai-reasoning-_feFjk56.js.map +0 -1
- package/dist/ai-timeline-C42tOUT8.js.map +0 -1
- package/dist/ai-tool-03jOTwUI.js.map +0 -1
- package/dist/chart-Dg0qUeSc.js.map +0 -1
- package/dist/clipboard-text-kLaMogs3.js.map +0 -1
- package/dist/command-palette-CuNUyJca.js.map +0 -1
- package/dist/data-grid-DGHmU0w3.js.map +0 -1
- package/dist/dist-B6iWiWwp.js.map +0 -1
- package/dist/dropdown-B_nrGXjV.js.map +0 -1
- package/dist/filters-cpJCY21R.js.map +0 -1
- package/dist/flow-B4v198ot.js.map +0 -1
- package/dist/highlight-to-react-D0Yav4jk.js.map +0 -1
- package/dist/layout-DJHMMap2.js.map +0 -1
- package/dist/link-provider-BUZKXaNE.js.map +0 -1
- package/dist/measured-text-BI3dTJmH.js.map +0 -1
- package/dist/sidebar-D4zrlYpn.js.map +0 -1
- package/dist/stat-card-Ew-ofzEm.js.map +0 -1
- package/dist/switch-BxAMfHdt.js.map +0 -1
- package/dist/text-roll-Ch52hcQj.js.map +0 -1
- package/dist/theme-toggle-LDfIKEqx.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","names":[],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { forwardRef, type SVGProps } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport {\n useLinkComponent,\n type LinkComponentProps,\n} from \"../../utils/link-provider\";\n\n/**\n * ExternalIcon - Visual indicator for links that open in a new tab/window.\n *\n * Use this as a child of Link to indicate external navigation:\n * ```tsx\n * <Link href=\"https://example.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit Example <Link.ExternalIcon />\n * </Link>\n * ```\n */\nconst ExternalIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"link-external-icon\"\n {...props}\n >\n <path d=\"M9 4H8.8C7.11984 4 6.27976 4 5.63803 4.32698C5.07354 4.6146 4.6146 5.07354 4.32698 5.63803C4 6.27976 4 7.11984 4 8.8V15.2C4 16.8802 4 17.7202 4.32698 18.362C4.6146 18.9265 5.07354 19.3854 5.63803 19.673C6.27976 20 7.11984 20 8.8 20H15.2C16.8802 20 17.7202 20 18.362 19.673C18.9265 19.3854 19.3854 18.9265 19.673 18.362C20 17.7202 20 16.8802 20 15.2V15\" />\n <path d=\"M14 4H20M20 4V10M20 4L11 13\" />\n </svg>\n);\n\nExternalIcon.displayName = \"Link.ExternalIcon\";\n\n/** Link variant definitions mapping variant names to their Tailwind classes. */\nexport const SF_LINK_VARIANTS = {\n variant: {\n inline: {\n classes:\n \"text-primary underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors\",\n description: \"Inline text link that flows with content\",\n },\n current: {\n classes:\n \"text-current underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors\",\n description: \"Link that inherits color from parent text\",\n },\n plain: {\n classes: \"text-primary hover:text-primary/70 transition-colors\",\n description: \"Link without underline decoration\",\n },\n },\n} as const;\n\nexport const SF_LINK_DEFAULT_VARIANTS = {\n variant: \"inline\",\n} as const;\n\nexport type SFLinkVariant = keyof typeof SF_LINK_VARIANTS.variant;\n\nexport interface SFLinkVariantsProps {\n /**\n * Visual style of the link.\n * - `\"inline\"` — Inline text link that flows with content\n * - `\"current\"` — Link that inherits color from parent text\n * - `\"plain\"` — Link without underline decoration\n * @default \"inline\"\n */\n variant?: SFLinkVariant;\n}\n\nexport function linkVariants({\n variant = SF_LINK_DEFAULT_VARIANTS.variant,\n}: SFLinkVariantsProps = {}) {\n return cn(SF_LINK_VARIANTS.variant[variant].classes);\n}\n\n/**\n * Link component props.\n *\n * @example\n * ```tsx\n * <Link href=\"/docs\">Learn more</Link>\n * <Link href=\"https://signalflare.ai\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit SignalFlare <Link.ExternalIcon />\n * </Link>\n * <Link render={<RouterLink to=\"/dashboard\" />}>Dashboard</Link>\n * ```\n */\nexport type LinkProps = useRender.ComponentProps<\"a\"> &\n LinkComponentProps &\n SFLinkVariantsProps;\n\n/**\n * Link component for consistent inline text links.\n *\n * Supports composition via `render` prop for framework-specific routing:\n * - Without render: renders via LinkProvider (default anchor or configured component)\n * - With render: merges props onto the provided element with proper ref/event handling\n *\n * @example Basic usage\n * ```tsx\n * <Link href=\"/docs\">Learn more</Link>\n * ```\n *\n * @example External link with icon\n * ```tsx\n * <Link href=\"https://signalflare.ai\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit SignalFlare <Link.ExternalIcon />\n * </Link>\n * ```\n *\n * @example Composition with React Router\n * ```tsx\n * <Link render={<RouterLink to=\"/dashboard\" />} variant=\"inline\">\n * Dashboard\n * </Link>\n * ```\n */\nconst LinkBase = forwardRef<HTMLAnchorElement, LinkProps>(
|
|
1
|
+
{"version":3,"file":"link.js","names":[],"sources":["../../src/components/link/link.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { forwardRef, type SVGProps } from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport {\n useLinkComponent,\n type LinkComponentProps,\n} from \"../../utils/link-provider\";\n\n/**\n * ExternalIcon - Visual indicator for links that open in a new tab/window.\n *\n * Use this as a child of Link to indicate external navigation:\n * ```tsx\n * <Link href=\"https://example.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit Example <Link.ExternalIcon />\n * </Link>\n * ```\n */\nconst ExternalIcon = (props: SVGProps<SVGSVGElement>) => (\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"link-external-icon\"\n {...props}\n >\n <path d=\"M9 4H8.8C7.11984 4 6.27976 4 5.63803 4.32698C5.07354 4.6146 4.6146 5.07354 4.32698 5.63803C4 6.27976 4 7.11984 4 8.8V15.2C4 16.8802 4 17.7202 4.32698 18.362C4.6146 18.9265 5.07354 19.3854 5.63803 19.673C6.27976 20 7.11984 20 8.8 20H15.2C16.8802 20 17.7202 20 18.362 19.673C18.9265 19.3854 19.3854 18.9265 19.673 18.362C20 17.7202 20 16.8802 20 15.2V15\" />\n <path d=\"M14 4H20M20 4V10M20 4L11 13\" />\n </svg>\n);\n\nExternalIcon.displayName = \"Link.ExternalIcon\";\n\n/** Link variant definitions mapping variant names to their Tailwind classes. */\nexport const SF_LINK_VARIANTS = {\n variant: {\n inline: {\n classes:\n \"text-primary underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors\",\n description: \"Inline text link that flows with content\",\n },\n current: {\n classes:\n \"text-current underline underline-offset-[0.15em] decoration-[0.0625em] link-current transition-colors\",\n description: \"Link that inherits color from parent text\",\n },\n plain: {\n classes: \"text-primary hover:text-primary/70 transition-colors\",\n description: \"Link without underline decoration\",\n },\n },\n} as const;\n\nexport const SF_LINK_DEFAULT_VARIANTS = {\n variant: \"inline\",\n} as const;\n\nexport type SFLinkVariant = keyof typeof SF_LINK_VARIANTS.variant;\n\nexport interface SFLinkVariantsProps {\n /**\n * Visual style of the link.\n * - `\"inline\"` — Inline text link that flows with content\n * - `\"current\"` — Link that inherits color from parent text\n * - `\"plain\"` — Link without underline decoration\n * @default \"inline\"\n */\n variant?: SFLinkVariant;\n}\n\nexport function linkVariants({\n variant = SF_LINK_DEFAULT_VARIANTS.variant,\n}: SFLinkVariantsProps = {}) {\n return cn(SF_LINK_VARIANTS.variant[variant].classes);\n}\n\n/**\n * Link component props.\n *\n * @example\n * ```tsx\n * <Link href=\"/docs\">Learn more</Link>\n * <Link href=\"https://signalflare.ai\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit SignalFlare <Link.ExternalIcon />\n * </Link>\n * <Link render={<RouterLink to=\"/dashboard\" />}>Dashboard</Link>\n * ```\n */\nexport type LinkProps = useRender.ComponentProps<\"a\"> &\n LinkComponentProps &\n SFLinkVariantsProps;\n\n/**\n * Link component for consistent inline text links.\n *\n * Supports composition via `render` prop for framework-specific routing:\n * - Without render: renders via LinkProvider (default anchor or configured component)\n * - With render: merges props onto the provided element with proper ref/event handling\n *\n * @example Basic usage\n * ```tsx\n * <Link href=\"/docs\">Learn more</Link>\n * ```\n *\n * @example External link with icon\n * ```tsx\n * <Link href=\"https://signalflare.ai\" target=\"_blank\" rel=\"noopener noreferrer\">\n * Visit SignalFlare <Link.ExternalIcon />\n * </Link>\n * ```\n *\n * @example Composition with React Router\n * ```tsx\n * <Link render={<RouterLink to=\"/dashboard\" />} variant=\"inline\">\n * Dashboard\n * </Link>\n * ```\n */\nconst LinkBase = forwardRef<HTMLAnchorElement, LinkProps>(\n ({ className, variant = \"inline\", render, ...props }, ref) => {\n const LinkComponent = useLinkComponent();\n\n const defaultProps: useRender.ElementProps<\"a\"> = {\n className: cn(\n linkVariants({ variant }),\n \"group/link inline-flex items-center gap-[0.1875em]\"\n ),\n };\n\n const element = useRender({\n render: render ?? <LinkComponent />,\n ref,\n props: mergeProps<\"a\">(defaultProps, props, { className }),\n });\n\n return element;\n }\n);\n\nLinkBase.displayName = \"Link\";\n\n// Compound component with ExternalIcon subcomponent\nexport const Link = Object.assign(LinkBase, {\n ExternalIcon,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,IAAM,gBAAgB,UACpB,qBAAC,OAAD;CACE,OAAM;CACN,QAAO;CACP,SAAQ;CACR,MAAK;CACL,QAAO;CACP,eAAc;CACd,gBAAe;CACf,eAAY;CACZ,WAAU;CACV,GAAI;WAVN,CAYE,oBAAC,QAAD,EAAM,GAAE,kWAAmW,CAAA,GAC3W,oBAAC,QAAD,EAAM,GAAE,8BAA+B,CAAA,CACpC;;AAGP,aAAa,cAAc;;AAG3B,IAAa,mBAAmB,EAC9B,SAAS;CACP,QAAQ;EACN,SACE;EACF,aAAa;CACf;CACA,SAAS;EACP,SACE;EACF,aAAa;CACf;CACA,OAAO;EACL,SAAS;EACT,aAAa;CACf;AACF,EACF;AAEA,IAAa,2BAA2B,EACtC,SAAS,SACX;AAeA,SAAgB,aAAa,EAC3B,UAAU,yBAAyB,YACZ,CAAC,GAAG;CAC3B,OAAO,GAAG,iBAAiB,QAAQ,SAAS,OAAO;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,IAAM,WAAW,YACd,EAAE,WAAW,UAAU,UAAU,QAAQ,GAAG,SAAS,QAAQ;CAC5D,MAAM,gBAAgB,iBAAiB;CAEvC,MAAM,eAA4C,EAChD,WAAW,GACT,aAAa,EAAE,QAAQ,CAAC,GACxB,oDACF,EACF;CAQA,OANgB,UAAU;EACxB,QAAQ,UAAU,oBAAC,eAAD,CAAgB,CAAA;EAClC;EACA,OAAO,WAAgB,cAAc,OAAO,EAAE,UAAU,CAAC;CAC3D,CAEO;AACT,CACF;AAEA,SAAS,cAAc;AAGvB,IAAa,OAAO,OAAO,OAAO,UAAU,EAC1C,aACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as Loader } from "../loader-
|
|
3
|
-
import { t as SkeletonLine } from "../skeleton-line-
|
|
2
|
+
import { t as Loader } from "../loader-BEMz8pJO.js";
|
|
3
|
+
import { t as SkeletonLine } from "../skeleton-line-CxxYVTO2.js";
|
|
4
4
|
export { Loader, SkeletonLine };
|
package/dist/components/meter.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as PopoverRoot, c as SF_POPOVER_DEFAULT_VARIANTS, i as PopoverDescription, l as SF_POPOVER_VARIANTS, n as PopoverClose, o as PopoverTitle, r as PopoverContent, s as PopoverTrigger, t as Popover } from "../popover-
|
|
2
|
+
import { a as PopoverRoot, c as SF_POPOVER_DEFAULT_VARIANTS, i as PopoverDescription, l as SF_POPOVER_VARIANTS, n as PopoverClose, o as PopoverTitle, r as PopoverContent, s as PopoverTrigger, t as Popover } from "../popover-BY-e9co1.js";
|
|
3
3
|
export { Popover, PopoverClose, PopoverContent, PopoverDescription, PopoverRoot, PopoverTitle, PopoverTrigger, SF_POPOVER_DEFAULT_VARIANTS, SF_POPOVER_VARIANTS };
|
package/dist/components/radio.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as radioVariants, i as SF_RADIO_VARIANTS, n as RadioGroup, r as SF_RADIO_DEFAULT_VARIANTS, t as Radio } from "../radio-
|
|
2
|
+
import { a as radioVariants, i as SF_RADIO_VARIANTS, n as RadioGroup, r as SF_RADIO_DEFAULT_VARIANTS, t as Radio } from "../radio-DZwL13j0.js";
|
|
3
3
|
export { Radio, RadioGroup, SF_RADIO_DEFAULT_VARIANTS, SF_RADIO_VARIANTS, radioVariants };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as SF_SENSITIVE_INPUT_VARIANTS, r as SensitiveInput, t as SF_SENSITIVE_INPUT_DEFAULT_VARIANTS } from "../sensitive-input-
|
|
2
|
+
import { n as SF_SENSITIVE_INPUT_VARIANTS, r as SensitiveInput, t as SF_SENSITIVE_INPUT_DEFAULT_VARIANTS } from "../sensitive-input-DHLZcM73.js";
|
|
3
3
|
export { SF_SENSITIVE_INPUT_DEFAULT_VARIANTS, SF_SENSITIVE_INPUT_VARIANTS, SensitiveInput };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { A as useSidebar, C as SidebarMenuSubItem, D as SidebarRoot, E as SidebarResizeHandle, O as SidebarSeparator, S as SidebarMenuSubButton, T as SidebarRail, _ as SidebarMenuBadge, a as SidebarCollapsible, b as SidebarMenuItem, c as SidebarContent, d as SidebarGroupContent, f as SidebarGroupLabel, g as SidebarMenuAction, h as SidebarMenu, i as Sidebar, k as SidebarTrigger, l as SidebarFooter, m as SidebarInput, n as SF_SIDEBAR_STYLING, o as SidebarCollapsibleContent, p as SidebarHeader, r as SF_SIDEBAR_VARIANTS, s as SidebarCollapsibleTrigger, t as SF_SIDEBAR_DEFAULT_VARIANTS, u as SidebarGroup, v as SidebarMenuButton, w as SidebarProvider, x as SidebarMenuSub, y as SidebarMenuChevron } from "../sidebar-
|
|
2
|
+
import { A as useSidebar, C as SidebarMenuSubItem, D as SidebarRoot, E as SidebarResizeHandle, O as SidebarSeparator, S as SidebarMenuSubButton, T as SidebarRail, _ as SidebarMenuBadge, a as SidebarCollapsible, b as SidebarMenuItem, c as SidebarContent, d as SidebarGroupContent, f as SidebarGroupLabel, g as SidebarMenuAction, h as SidebarMenu, i as Sidebar, k as SidebarTrigger, l as SidebarFooter, m as SidebarInput, n as SF_SIDEBAR_STYLING, o as SidebarCollapsibleContent, p as SidebarHeader, r as SF_SIDEBAR_VARIANTS, s as SidebarCollapsibleTrigger, t as SF_SIDEBAR_DEFAULT_VARIANTS, u as SidebarGroup, v as SidebarMenuButton, w as SidebarProvider, x as SidebarMenuSub, y as SidebarMenuChevron } from "../sidebar-odGsdvG4.js";
|
|
3
3
|
export { SF_SIDEBAR_DEFAULT_VARIANTS, SF_SIDEBAR_STYLING, SF_SIDEBAR_VARIANTS, Sidebar, SidebarCollapsible, SidebarCollapsibleContent, SidebarCollapsibleTrigger, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuChevron, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarResizeHandle, SidebarRoot, SidebarSeparator, SidebarTrigger, useSidebar };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as SignalFlareAILogo, i as SF_SIGNALFLARE_AI_LOGO_VARIANTS, n as PoweredBySignalFlareAI, o as SignalflareAiLogo, r as SF_SIGNALFLARE_AI_LOGO_DEFAULT_VARIANTS, s as generateSignalFlareAILogoSvg, t as PoweredByNavigator } from "../signalflare-ai-logo-
|
|
2
|
+
import { a as SignalFlareAILogo, i as SF_SIGNALFLARE_AI_LOGO_VARIANTS, n as PoweredBySignalFlareAI, o as SignalflareAiLogo, r as SF_SIGNALFLARE_AI_LOGO_DEFAULT_VARIANTS, s as generateSignalFlareAILogoSvg, t as PoweredByNavigator } from "../signalflare-ai-logo-CNaDT_w8.js";
|
|
3
3
|
export { PoweredByNavigator, PoweredBySignalFlareAI, SF_SIGNALFLARE_AI_LOGO_DEFAULT_VARIANTS, SF_SIGNALFLARE_AI_LOGO_VARIANTS, SignalFlareAILogo, SignalflareAiLogo, generateSignalFlareAILogoSvg };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as SF_SPARKLINE_VARIANTS, r as Sparkline, t as SF_SPARKLINE_DEFAULT_VARIANTS } from "../sparkline-
|
|
2
|
+
import { n as SF_SPARKLINE_VARIANTS, r as Sparkline, t as SF_SPARKLINE_DEFAULT_VARIANTS } from "../sparkline-BQ-4j2W2.js";
|
|
3
3
|
export { SF_SPARKLINE_DEFAULT_VARIANTS, SF_SPARKLINE_VARIANTS, Sparkline };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as SF_STAT_CARD_VARIANTS, r as StatCard, t as SF_STAT_CARD_DEFAULT_VARIANTS } from "../stat-card-
|
|
2
|
+
import { n as SF_STAT_CARD_VARIANTS, r as StatCard, t as SF_STAT_CARD_DEFAULT_VARIANTS } from "../stat-card-Bspk4XFr.js";
|
|
3
3
|
export { SF_STAT_CARD_DEFAULT_VARIANTS, SF_STAT_CARD_VARIANTS, StatCard };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as SF_SWITCH_VARIANTS, r as Switch, t as SF_SWITCH_DEFAULT_VARIANTS } from "../switch-
|
|
2
|
+
import { n as SF_SWITCH_VARIANTS, r as Switch, t as SF_SWITCH_DEFAULT_VARIANTS } from "../switch-TA4cByCJ.js";
|
|
3
3
|
export { SF_SWITCH_DEFAULT_VARIANTS, SF_SWITCH_VARIANTS, Switch };
|
package/dist/components/table.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { n as SF_TABLE_VARIANTS, r as Table, t as SF_TABLE_DEFAULT_VARIANTS } from "../table-
|
|
2
|
+
import { n as SF_TABLE_VARIANTS, r as Table, t as SF_TABLE_DEFAULT_VARIANTS } from "../table-BM8JBGBs.js";
|
|
3
3
|
export { SF_TABLE_DEFAULT_VARIANTS, SF_TABLE_VARIANTS, Table };
|
package/dist/components/tabs.js
CHANGED
package/dist/components/text.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { i as getStoredThemeMode, n as SF_THEME_TOGGLE_VARIANTS, r as ThemeToggle, t as SF_THEME_TOGGLE_DEFAULT_VARIANTS } from "../theme-toggle-
|
|
2
|
+
import { i as getStoredThemeMode, n as SF_THEME_TOGGLE_VARIANTS, r as ThemeToggle, t as SF_THEME_TOGGLE_DEFAULT_VARIANTS } from "../theme-toggle-BTVxD-fD.js";
|
|
3
3
|
export { SF_THEME_TOGGLE_DEFAULT_VARIANTS, SF_THEME_TOGGLE_VARIANTS, ThemeToggle, getStoredThemeMode };
|
package/dist/components/toast.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as useSFToastManager, i as createSFToastManager, n as ToastProvider, r as Toasty, t as Toast } from "../toast-
|
|
2
|
+
import { a as useSFToastManager, i as createSFToastManager, n as ToastProvider, r as Toasty, t as Toast } from "../toast-CgZVaAkw.js";
|
|
3
3
|
export { Toast, ToastProvider, Toasty, createSFToastManager, useSFToastManager };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a as useAgentHarness, i as fromMastraHarness, n as SF_USE_AGENT_HARNESS_VARIANTS, r as createAgentHarnessState, t as SF_USE_AGENT_HARNESS_DEFAULT_VARIANTS } from "../use-agent-harness-
|
|
2
|
+
import { a as useAgentHarness, i as fromMastraHarness, n as SF_USE_AGENT_HARNESS_VARIANTS, r as createAgentHarnessState, t as SF_USE_AGENT_HARNESS_DEFAULT_VARIANTS } from "../use-agent-harness-Dl8w6X5O.js";
|
|
3
3
|
export { SF_USE_AGENT_HARNESS_DEFAULT_VARIANTS, SF_USE_AGENT_HARNESS_VARIANTS, createAgentHarnessState, fromMastraHarness, useAgentHarness };
|
|
@@ -1,17 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as cn } from "./cn-
|
|
3
|
-
import { t as Loader } from "./loader-
|
|
4
|
-
import { t as Button } from "./button-
|
|
5
|
-
import { t as Checkbox } from "./checkbox-
|
|
6
|
-
import { t as DropdownMenu } from "./dropdown-
|
|
7
|
-
import { t as Pagination } from "./pagination-
|
|
8
|
-
import { r as Table } from "./table-
|
|
9
|
-
import { t as Filters } from "./filters-
|
|
10
|
-
import { t as Empty } from "./empty-
|
|
11
|
-
import { createContext, useContext, useMemo, useState } from "react";
|
|
2
|
+
import { t as cn } from "./cn-CmAOpn49.js";
|
|
3
|
+
import { t as Loader } from "./loader-BEMz8pJO.js";
|
|
4
|
+
import { t as Button } from "./button-BHOgXJRU.js";
|
|
5
|
+
import { t as Checkbox } from "./checkbox-Cy_OCyay.js";
|
|
6
|
+
import { t as DropdownMenu } from "./dropdown-XzbnRLYR.js";
|
|
7
|
+
import { t as Pagination } from "./pagination-DSY279Ta.js";
|
|
8
|
+
import { r as Table } from "./table-BM8JBGBs.js";
|
|
9
|
+
import { t as Filters } from "./filters-SmEl93za.js";
|
|
10
|
+
import { t as Empty } from "./empty-C1tAkawe.js";
|
|
11
|
+
import { createContext, useContext, useMemo, useRef, useState } from "react";
|
|
12
12
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { CaretDownIcon, CaretUpDownIcon, CaretUpIcon, ColumnsIcon, FadersHorizontalIcon } from "@phosphor-icons/react";
|
|
14
|
-
import { flexRender,
|
|
14
|
+
import { columnFilteringFeature, columnResizingFeature, columnSizingFeature, columnVisibilityFeature, createFilteredRowModel, createPaginatedRowModel, createSortedRowModel, filterFns, flexRender, rowPaginationFeature, rowSelectionFeature, rowSortingFeature, sortFns, tableFeatures, useTable } from "@tanstack/react-table";
|
|
15
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
16
|
+
//#region src/components/data-grid/features.ts
|
|
17
|
+
/**
|
|
18
|
+
* The TanStack Table v9 feature set used by DataGrid.
|
|
19
|
+
*
|
|
20
|
+
* v9 is modular/tree-shakeable: features must be opted into explicitly via
|
|
21
|
+
* `_features` rather than being bundled into `useReactTable` like v8. This set
|
|
22
|
+
* mirrors the capabilities the v8 DataGrid relied on: sorting, filtering,
|
|
23
|
+
* pagination, row selection, column visibility, and column resizing/sizing.
|
|
24
|
+
*/
|
|
25
|
+
var dataGridFeatures = tableFeatures({
|
|
26
|
+
columnFilteringFeature,
|
|
27
|
+
columnResizingFeature,
|
|
28
|
+
columnSizingFeature,
|
|
29
|
+
columnVisibilityFeature,
|
|
30
|
+
rowPaginationFeature,
|
|
31
|
+
rowSelectionFeature,
|
|
32
|
+
rowSortingFeature
|
|
33
|
+
});
|
|
34
|
+
//#endregion
|
|
15
35
|
//#region src/components/data-grid/data-grid.tsx
|
|
16
36
|
/** DataGrid layout variant definitions */
|
|
17
37
|
var SF_DATA_GRID_VARIANTS = { layout: {
|
|
@@ -27,6 +47,12 @@ var SF_DATA_GRID_VARIANTS = { layout: {
|
|
|
27
47
|
/** Default variants for DataGrid */
|
|
28
48
|
var SF_DATA_GRID_DEFAULT_VARIANTS = { layout: "auto" };
|
|
29
49
|
var DataGridContext = createContext(null);
|
|
50
|
+
var DEFAULT_PAGE_SIZE_OPTIONS = [
|
|
51
|
+
10,
|
|
52
|
+
25,
|
|
53
|
+
50,
|
|
54
|
+
100
|
|
55
|
+
];
|
|
30
56
|
function useDataGridContext() {
|
|
31
57
|
const context = useContext(DataGridContext);
|
|
32
58
|
if (!context) throw new Error("DataGrid compound components must be used within a DataGrid");
|
|
@@ -96,7 +122,17 @@ DataGridColumnToggle.displayName = "DataGrid.ColumnToggle";
|
|
|
96
122
|
* Renders the table with headers, rows, and cells.
|
|
97
123
|
*/
|
|
98
124
|
function DataGridContent({ className }) {
|
|
99
|
-
const { table, loading, loadingRows, enableColumnResizing } = useDataGridContext();
|
|
125
|
+
const { table, loading, loadingRows, enableColumnResizing, virtualized, estimatedRowHeight = 44, overscan = 8, maxHeight } = useDataGridContext();
|
|
126
|
+
const scrollRef = useRef(null);
|
|
127
|
+
const rows = table.getRowModel().rows;
|
|
128
|
+
const virtualizer = useVirtualizer({
|
|
129
|
+
count: rows.length,
|
|
130
|
+
getScrollElement: () => scrollRef.current,
|
|
131
|
+
estimateSize: () => estimatedRowHeight,
|
|
132
|
+
overscan,
|
|
133
|
+
enabled: Boolean(virtualized),
|
|
134
|
+
getItemKey: (index) => rows[index]?.id ?? index
|
|
135
|
+
});
|
|
100
136
|
if (loading) return /* @__PURE__ */ jsx("div", {
|
|
101
137
|
className: "p-4",
|
|
102
138
|
children: /* @__PURE__ */ jsx("div", {
|
|
@@ -104,37 +140,83 @@ function DataGridContent({ className }) {
|
|
|
104
140
|
children: Array.from({ length: loadingRows ?? 5 }).map((_, i) => /* @__PURE__ */ jsx(Loader, { className: "h-10 w-full" }, i))
|
|
105
141
|
})
|
|
106
142
|
});
|
|
107
|
-
|
|
143
|
+
const renderCells = (row) => row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx(Table.Cell, {
|
|
144
|
+
className: cell.column.columnDef.cellClassName,
|
|
145
|
+
style: enableColumnResizing ? { width: cell.column.getSize() } : void 0,
|
|
146
|
+
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
147
|
+
}, cell.id));
|
|
148
|
+
const headerRows = table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(Table.Row, { children: headerGroup.headers.map((header) => {
|
|
149
|
+
const canSort = header.column.getCanSort();
|
|
150
|
+
const sorted = header.column.getIsSorted();
|
|
151
|
+
const canResize = enableColumnResizing && header.column.getCanResize();
|
|
152
|
+
const isResizing = header.column.getIsResizing();
|
|
153
|
+
return /* @__PURE__ */ jsxs(Table.Head, {
|
|
154
|
+
className: cn("bg-sf-base relative group", canSort && "cursor-pointer select-none hover:bg-sf-overlay", header.column.columnDef.headerClassName),
|
|
155
|
+
style: canResize ? { width: header.getSize() } : void 0,
|
|
156
|
+
onClick: canSort ? () => header.column.toggleSorting() : void 0,
|
|
157
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
158
|
+
className: "flex items-center gap-1.5",
|
|
159
|
+
children: [header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()), canSort && /* @__PURE__ */ jsx(SortIcon, { sorted })]
|
|
160
|
+
}), canResize && /* @__PURE__ */ jsx(Table.ResizeHandle, {
|
|
161
|
+
onMouseDown: header.getResizeHandler(),
|
|
162
|
+
onTouchStart: header.getResizeHandler(),
|
|
163
|
+
onDoubleClick: () => header.column.resetSize(),
|
|
164
|
+
className: cn(isResizing && "visible bg-sf-brand/20")
|
|
165
|
+
})]
|
|
166
|
+
}, header.id);
|
|
167
|
+
}) }, headerGroup.id));
|
|
168
|
+
const tableElement = /* @__PURE__ */ jsxs(Table, {
|
|
108
169
|
className,
|
|
109
|
-
children: [/* @__PURE__ */ jsx(Table.Header, { children:
|
|
110
|
-
const canSort = header.column.getCanSort();
|
|
111
|
-
const sorted = header.column.getIsSorted();
|
|
112
|
-
const canResize = enableColumnResizing && header.column.getCanResize();
|
|
113
|
-
const isResizing = header.column.getIsResizing();
|
|
114
|
-
return /* @__PURE__ */ jsxs(Table.Head, {
|
|
115
|
-
className: cn("bg-sf-base relative group", canSort && "cursor-pointer select-none hover:bg-sf-overlay", header.column.columnDef.headerClassName),
|
|
116
|
-
style: canResize ? { width: header.getSize() } : void 0,
|
|
117
|
-
onClick: canSort ? () => header.column.toggleSorting() : void 0,
|
|
118
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
119
|
-
className: "flex items-center gap-1.5",
|
|
120
|
-
children: [header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext()), canSort && /* @__PURE__ */ jsx(SortIcon, { sorted })]
|
|
121
|
-
}), canResize && /* @__PURE__ */ jsx(Table.ResizeHandle, {
|
|
122
|
-
onMouseDown: header.getResizeHandler(),
|
|
123
|
-
onTouchStart: header.getResizeHandler(),
|
|
124
|
-
onDoubleClick: () => header.column.resetSize(),
|
|
125
|
-
className: cn(isResizing && "visible bg-sf-brand/20")
|
|
126
|
-
})]
|
|
127
|
-
}, header.id);
|
|
128
|
-
}) }, headerGroup.id)) }), /* @__PURE__ */ jsx(Table.Body, { children: table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx(Table.Row, {
|
|
170
|
+
children: [/* @__PURE__ */ jsx(Table.Header, { children: headerRows }), /* @__PURE__ */ jsx(Table.Body, { children: rows.map((row) => /* @__PURE__ */ jsx(Table.Row, {
|
|
129
171
|
variant: row.getIsSelected() ? "selected" : "default",
|
|
130
172
|
className: cn(row.getIsSelected() && "bg-sf-tint", "hover:bg-sf-overlay"),
|
|
131
|
-
children: row
|
|
132
|
-
className: cell.column.columnDef.cellClassName,
|
|
133
|
-
style: enableColumnResizing ? { width: cell.column.getSize() } : void 0,
|
|
134
|
-
children: flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
135
|
-
}, cell.id))
|
|
173
|
+
children: renderCells(row)
|
|
136
174
|
}, row.id)) })]
|
|
137
175
|
});
|
|
176
|
+
if (!virtualized) return tableElement;
|
|
177
|
+
const virtualRows = virtualizer.getVirtualItems();
|
|
178
|
+
const totalSize = virtualizer.getTotalSize();
|
|
179
|
+
const colSpan = table.getVisibleLeafColumns().length;
|
|
180
|
+
const paddingTop = virtualRows[0]?.start ?? 0;
|
|
181
|
+
const paddingBottom = totalSize - (virtualRows.at(-1)?.end ?? 0);
|
|
182
|
+
return /* @__PURE__ */ jsx("div", {
|
|
183
|
+
ref: scrollRef,
|
|
184
|
+
className: "relative overflow-auto",
|
|
185
|
+
style: { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight },
|
|
186
|
+
children: /* @__PURE__ */ jsxs(Table, {
|
|
187
|
+
className,
|
|
188
|
+
children: [/* @__PURE__ */ jsx(Table.Header, {
|
|
189
|
+
className: "sticky top-0 z-10",
|
|
190
|
+
children: headerRows
|
|
191
|
+
}), /* @__PURE__ */ jsxs(Table.Body, { children: [
|
|
192
|
+
paddingTop > 0 && /* @__PURE__ */ jsx("tr", {
|
|
193
|
+
"aria-hidden": "true",
|
|
194
|
+
children: /* @__PURE__ */ jsx("td", {
|
|
195
|
+
colSpan,
|
|
196
|
+
style: { height: paddingTop }
|
|
197
|
+
})
|
|
198
|
+
}),
|
|
199
|
+
virtualRows.map((virtualRow) => {
|
|
200
|
+
const row = rows[virtualRow.index];
|
|
201
|
+
if (!row) return null;
|
|
202
|
+
return /* @__PURE__ */ jsx(Table.Row, {
|
|
203
|
+
"data-index": virtualRow.index,
|
|
204
|
+
ref: virtualizer.measureElement,
|
|
205
|
+
variant: row.getIsSelected() ? "selected" : "default",
|
|
206
|
+
className: cn(row.getIsSelected() && "bg-sf-tint", "hover:bg-sf-overlay"),
|
|
207
|
+
children: renderCells(row)
|
|
208
|
+
}, row.id);
|
|
209
|
+
}),
|
|
210
|
+
paddingBottom > 0 && /* @__PURE__ */ jsx("tr", {
|
|
211
|
+
"aria-hidden": "true",
|
|
212
|
+
children: /* @__PURE__ */ jsx("td", {
|
|
213
|
+
colSpan,
|
|
214
|
+
style: { height: paddingBottom }
|
|
215
|
+
})
|
|
216
|
+
})
|
|
217
|
+
] })]
|
|
218
|
+
})
|
|
219
|
+
});
|
|
138
220
|
}
|
|
139
221
|
DataGridContent.displayName = "DataGrid.Content";
|
|
140
222
|
/**
|
|
@@ -143,7 +225,7 @@ DataGridContent.displayName = "DataGrid.Content";
|
|
|
143
225
|
*/
|
|
144
226
|
function DataGridPagination({ className }) {
|
|
145
227
|
const { table, pageSize: _pageSize, pageIndex: _pageIndex, totalCount, manualPagination } = useDataGridContext();
|
|
146
|
-
const paginationState = table.
|
|
228
|
+
const paginationState = table.state.pagination;
|
|
147
229
|
const currentPageIndex = paginationState.pageIndex;
|
|
148
230
|
const currentPageSize = paginationState.pageSize;
|
|
149
231
|
const startRow = currentPageIndex * currentPageSize + 1;
|
|
@@ -193,12 +275,7 @@ DataGridEmpty.displayName = "DataGrid.Empty";
|
|
|
193
275
|
* DataGrid root component.
|
|
194
276
|
* Sets up the react-table instance and provides context to child components.
|
|
195
277
|
*/
|
|
196
|
-
function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChange, enableSorting = true, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, enableColumnVisibility = true, rowSelection: controlledRowSelection, onRowSelectionChange, enableRowSelection, pageSize = 10, pageIndex = 0, onPaginationChange, totalCount, manualPagination = false, pageSizeOptions: _pageSizeOptions =
|
|
197
|
-
10,
|
|
198
|
-
25,
|
|
199
|
-
50,
|
|
200
|
-
100
|
|
201
|
-
], filters, onFiltersChange, filterFields, enableFiltering, layout: _layout = SF_DATA_GRID_DEFAULT_VARIANTS.layout, className, tableClassName, emptyState, loading, loadingRows, toolbar, showToolbar = true, showPagination = true, pagination: customPagination, enableColumnResizing, columnResizeMode = "onEnd", children }) {
|
|
278
|
+
function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChange, enableSorting = true, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, enableColumnVisibility = true, rowSelection: controlledRowSelection, onRowSelectionChange, enableRowSelection, pageSize = 10, pageIndex = 0, onPaginationChange, totalCount, manualPagination = false, pageSizeOptions: _pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS, filters, onFiltersChange, filterFields, enableFiltering, layout: _layout = SF_DATA_GRID_DEFAULT_VARIANTS.layout, className, tableClassName, emptyState, loading, loadingRows, toolbar, showToolbar = true, showPagination = true, pagination: customPagination, enableColumnResizing, columnResizeMode = "onEnd", virtualized = false, estimatedRowHeight = 44, overscan = 8, maxHeight, children }) {
|
|
202
279
|
const [internalSorting, setInternalSorting] = useState([]);
|
|
203
280
|
const [internalColumnVisibility, setInternalColumnVisibility] = useState({});
|
|
204
281
|
const [internalRowSelection, setInternalRowSelection] = useState({});
|
|
@@ -234,7 +311,13 @@ function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChan
|
|
|
234
311
|
});
|
|
235
312
|
};
|
|
236
313
|
const contextValue = {
|
|
237
|
-
table:
|
|
314
|
+
table: useTable({
|
|
315
|
+
_features: dataGridFeatures,
|
|
316
|
+
_rowModels: {
|
|
317
|
+
sortedRowModel: createSortedRowModel(sortFns),
|
|
318
|
+
filteredRowModel: createFilteredRowModel(filterFns),
|
|
319
|
+
paginatedRowModel: createPaginatedRowModel()
|
|
320
|
+
},
|
|
238
321
|
data,
|
|
239
322
|
columns,
|
|
240
323
|
state: {
|
|
@@ -247,10 +330,6 @@ function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChan
|
|
|
247
330
|
onColumnVisibilityChange: handleColumnVisibilityChange,
|
|
248
331
|
onRowSelectionChange: handleRowSelectionChange,
|
|
249
332
|
onPaginationChange: handlePaginationChange,
|
|
250
|
-
getCoreRowModel: getCoreRowModel(),
|
|
251
|
-
getSortedRowModel: enableSorting ? getSortedRowModel() : void 0,
|
|
252
|
-
getPaginationRowModel: getPaginationRowModel(),
|
|
253
|
-
getFilteredRowModel: getFilteredRowModel(),
|
|
254
333
|
enableSorting,
|
|
255
334
|
enableRowSelection: enableRowSelection !== false,
|
|
256
335
|
enableColumnResizing,
|
|
@@ -266,7 +345,11 @@ function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChan
|
|
|
266
345
|
loading,
|
|
267
346
|
loadingRows,
|
|
268
347
|
enableColumnResizing,
|
|
269
|
-
columnResizeMode
|
|
348
|
+
columnResizeMode,
|
|
349
|
+
virtualized,
|
|
350
|
+
estimatedRowHeight,
|
|
351
|
+
overscan,
|
|
352
|
+
maxHeight
|
|
270
353
|
};
|
|
271
354
|
return /* @__PURE__ */ jsx(DataGridContext.Provider, {
|
|
272
355
|
value: contextValue,
|
|
@@ -283,7 +366,7 @@ function DataGridRoot({ data, columns, sorting: controlledSorting, onSortingChan
|
|
|
283
366
|
children: enableColumnVisibility && /* @__PURE__ */ jsx(DataGridColumnToggle, {})
|
|
284
367
|
})] }) }),
|
|
285
368
|
/* @__PURE__ */ jsxs("div", {
|
|
286
|
-
className: "flex-1 overflow-auto",
|
|
369
|
+
className: cn("flex-1", !virtualized && "overflow-auto"),
|
|
287
370
|
children: [/* @__PURE__ */ jsx(DataGridContent, { className: tableClassName }), /* @__PURE__ */ jsx(DataGridEmpty, { children: emptyState })]
|
|
288
371
|
}),
|
|
289
372
|
showPagination && (customPagination ?? /* @__PURE__ */ jsx(DataGridPagination, {}))
|
|
@@ -302,4 +385,4 @@ var DataGrid = Object.assign(DataGridRoot, {
|
|
|
302
385
|
//#endregion
|
|
303
386
|
export { SF_DATA_GRID_DEFAULT_VARIANTS as n, SF_DATA_GRID_VARIANTS as r, DataGrid as t };
|
|
304
387
|
|
|
305
|
-
//# sourceMappingURL=data-grid-
|
|
388
|
+
//# sourceMappingURL=data-grid-DDSFMHud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-grid-DDSFMHud.js","names":[],"sources":["../src/components/data-grid/features.ts","../src/components/data-grid/data-grid.tsx"],"sourcesContent":["import {\n columnFilteringFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n tableFeatures,\n} from \"@tanstack/react-table\";\n\n/**\n * The TanStack Table v9 feature set used by DataGrid.\n *\n * v9 is modular/tree-shakeable: features must be opted into explicitly via\n * `_features` rather than being bundled into `useReactTable` like v8. This set\n * mirrors the capabilities the v8 DataGrid relied on: sorting, filtering,\n * pagination, row selection, column visibility, and column resizing/sizing.\n */\nexport const dataGridFeatures = tableFeatures({\n columnFilteringFeature,\n columnResizingFeature,\n columnSizingFeature,\n columnVisibilityFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowSortingFeature,\n});\n\n/** The precise feature-set type, used to parameterize `Table<TFeatures, TData>`. */\nexport type DataGridFeatures = typeof dataGridFeatures;\n","\"use client\";\n\nimport {\n CaretDownIcon,\n CaretUpIcon,\n CaretUpDownIcon,\n ColumnsIcon,\n FadersHorizontalIcon,\n} from \"@phosphor-icons/react\";\nimport {\n createFilteredRowModel,\n createPaginatedRowModel,\n createSortedRowModel,\n filterFns,\n flexRender,\n sortFns,\n useTable,\n type ColumnDef,\n type ColumnVisibilityState,\n type PaginationState,\n type RowData,\n type RowSelectionState,\n type SortingState,\n} from \"@tanstack/react-table\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport {\n createContext,\n useContext,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\n\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../button\";\nimport { Checkbox } from \"../checkbox\";\nimport { DropdownMenu } from \"../dropdown\";\nimport { Empty } from \"../empty\";\nimport { Filters } from \"../filters\";\nimport { Loader } from \"../loader\";\nimport { Pagination } from \"../pagination\";\nimport { Table } from \"../table\";\nimport { dataGridFeatures } from \"./features\";\nimport type {\n DataGridProps,\n DataGridContextValue,\n DataGridToolbarProps,\n DataGridContentProps,\n DataGridPaginationProps,\n DataGridColumnToggleProps,\n DataGridEmptyProps,\n} from \"./types\";\n\n// ============================================================================\n// Variants\n// ============================================================================\n\n/** DataGrid layout variant definitions */\nexport const SF_DATA_GRID_VARIANTS = {\n layout: {\n auto: {\n classes: \"\",\n description: \"Auto column sizing - columns resize based on content\",\n },\n fixed: {\n classes: \"table-fixed\",\n description: \"Fixed column sizing - columns have equal width\",\n },\n },\n} as const;\n\n/** Default variants for DataGrid */\nexport const SF_DATA_GRID_DEFAULT_VARIANTS = {\n layout: \"auto\",\n} as const;\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst DataGridContext = createContext<DataGridContextValue | null>(null);\nconst DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];\n\nfunction useDataGridContext<TData extends RowData>() {\n const context = useContext(DataGridContext);\n if (!context) {\n throw new Error(\n \"DataGrid compound components must be used within a DataGrid\"\n );\n }\n return context as DataGridContextValue<TData>;\n}\n\n// ============================================================================\n// Sort Icon Component\n// ============================================================================\n\nfunction SortIcon({ sorted }: { sorted: false | \"asc\" | \"desc\" }) {\n if (sorted === \"asc\") {\n return <CaretUpIcon className=\"size-3.5 text-sf-brand\" />;\n }\n if (sorted === \"desc\") {\n return <CaretDownIcon className=\"size-3.5 text-sf-brand\" />;\n }\n return <CaretUpDownIcon className=\"size-3.5 text-sf-subtle\" />;\n}\n\n// ============================================================================\n// DataGrid Toolbar\n// ============================================================================\n\n/**\n * Toolbar component for DataGrid.\n * Shows filters, column visibility toggle, and custom actions.\n */\nfunction DataGridToolbar({ className, children }: DataGridToolbarProps) {\n return (\n <div\n className={cn(\n \"flex items-center gap-2 border-b border-sf-line p-3\",\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nDataGridToolbar.displayName = \"DataGrid.Toolbar\";\n\n// ============================================================================\n// DataGrid Column Toggle\n// ============================================================================\n\n/**\n * Column visibility toggle dropdown.\n * Shows checkboxes for each hideable column.\n */\nfunction DataGridColumnToggle({\n className,\n trigger,\n label = \"Columns\",\n}: DataGridColumnToggleProps) {\n const { table } = useDataGridContext();\n\n const hideableColumns = useMemo(() => {\n return table\n .getAllColumns()\n .filter(\n (col) =>\n col.getCanHide() &&\n (col.columnDef.enableHiding !== false || col.getCanHide())\n );\n }, [table]);\n\n if (hideableColumns.length === 0) return null;\n\n return (\n <DropdownMenu>\n <DropdownMenu.Trigger>\n {trigger ?? (\n <Button variant=\"secondary\" size=\"sm\" className={className}>\n <ColumnsIcon className=\"mr-1.5 size-4\" />\n {label}\n </Button>\n )}\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"w-48\">\n <div className=\"flex flex-col gap-1 p-1\">\n {hideableColumns.map((column) => (\n <label\n key={column.id}\n className=\"flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm hover:bg-sf-tint\"\n >\n <Checkbox\n checked={column.getIsVisible()}\n onCheckedChange={(checked) =>\n column.toggleVisibility(!!checked)\n }\n />\n <span className=\"flex-1\">\n {typeof column.columnDef.header === \"string\"\n ? column.columnDef.header\n : column.id}\n </span>\n </label>\n ))}\n {hideableColumns.length > 0 && (\n <>\n <div className=\"my-1 h-px bg-sf-line\" />\n <DropdownMenu.Item\n onClick={() =>\n hideableColumns.forEach((col) => col.toggleVisibility(true))\n }\n >\n Show all\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() =>\n hideableColumns.forEach((col) => col.toggleVisibility(false))\n }\n >\n Hide all\n </DropdownMenu.Item>\n </>\n )}\n </div>\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n}\n\nDataGridColumnToggle.displayName = \"DataGrid.ColumnToggle\";\n\n// ============================================================================\n// DataGrid Content\n// ============================================================================\n\n/**\n * Main table content component.\n * Renders the table with headers, rows, and cells.\n */\nfunction DataGridContent({ className }: DataGridContentProps) {\n const {\n table,\n loading,\n loadingRows,\n enableColumnResizing,\n virtualized,\n estimatedRowHeight = 44,\n overscan = 8,\n maxHeight,\n } = useDataGridContext();\n\n const scrollRef = useRef<HTMLDivElement>(null);\n const rows = table.getRowModel().rows;\n\n const virtualizer = useVirtualizer({\n count: rows.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => estimatedRowHeight,\n overscan,\n // Disable measurement work entirely when not virtualizing.\n enabled: Boolean(virtualized),\n getItemKey: (index) => rows[index]?.id ?? index,\n });\n\n if (loading) {\n return (\n <div className=\"p-4\">\n <div className=\"space-y-2\">\n {Array.from({ length: loadingRows ?? 5 }).map((_, i) => (\n <Loader key={i} className=\"h-10 w-full\" />\n ))}\n </div>\n </div>\n );\n }\n\n const renderCells = (row: (typeof rows)[number]) =>\n row.getVisibleCells().map((cell) => (\n <Table.Cell\n key={cell.id}\n className={\n (cell.column.columnDef as unknown as Record<string, unknown>)\n .cellClassName as string\n }\n style={\n enableColumnResizing ? { width: cell.column.getSize() } : undefined\n }\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n ));\n\n const headerRows = table.getHeaderGroups().map((headerGroup) => (\n <Table.Row key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const canSort = header.column.getCanSort();\n const sorted = header.column.getIsSorted();\n const canResize = enableColumnResizing && header.column.getCanResize();\n const isResizing = header.column.getIsResizing();\n\n return (\n <Table.Head\n key={header.id}\n className={cn(\n \"bg-sf-base relative group\",\n canSort && \"cursor-pointer select-none hover:bg-sf-overlay\",\n (header.column.columnDef as unknown as Record<string, unknown>)\n .headerClassName as string\n )}\n style={canResize ? { width: header.getSize() } : undefined}\n onClick={canSort ? () => header.column.toggleSorting() : undefined}\n >\n <div className=\"flex items-center gap-1.5\">\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {canSort && <SortIcon sorted={sorted} />}\n </div>\n {canResize && (\n <Table.ResizeHandle\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n onDoubleClick={() => header.column.resetSize()}\n className={cn(isResizing && \"visible bg-sf-brand/20\")}\n />\n )}\n </Table.Head>\n );\n })}\n </Table.Row>\n ));\n\n const tableElement = (\n <Table className={className}>\n <Table.Header>{headerRows}</Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row\n key={row.id}\n variant={row.getIsSelected() ? \"selected\" : \"default\"}\n className={cn(\n row.getIsSelected() && \"bg-sf-tint\",\n \"hover:bg-sf-overlay\"\n )}\n >\n {renderCells(row)}\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n );\n\n if (!virtualized) return tableElement;\n\n // Virtualized: render only the visible window of rows inside a bounded\n // scroll container, using spacer rows to preserve total scroll height and\n // keep semantic <table> markup (sticky headers, column resizing intact).\n const virtualRows = virtualizer.getVirtualItems();\n const totalSize = virtualizer.getTotalSize();\n const colSpan = table.getVisibleLeafColumns().length;\n const paddingTop = virtualRows[0]?.start ?? 0;\n const paddingBottom = totalSize - (virtualRows.at(-1)?.end ?? 0);\n\n return (\n <div\n ref={scrollRef}\n className=\"relative overflow-auto\"\n style={{\n maxHeight: typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n }}\n >\n <Table className={className}>\n <Table.Header className=\"sticky top-0 z-10\">{headerRows}</Table.Header>\n <Table.Body>\n {paddingTop > 0 && (\n <tr aria-hidden=\"true\">\n {/* oxlint-disable-next-line control-has-associated-label */}\n <td colSpan={colSpan} style={{ height: paddingTop }} />\n </tr>\n )}\n {virtualRows.map((virtualRow) => {\n const row = rows[virtualRow.index];\n if (!row) return null;\n return (\n <Table.Row\n key={row.id}\n data-index={virtualRow.index}\n ref={virtualizer.measureElement}\n variant={row.getIsSelected() ? \"selected\" : \"default\"}\n className={cn(\n row.getIsSelected() && \"bg-sf-tint\",\n \"hover:bg-sf-overlay\"\n )}\n >\n {renderCells(row)}\n </Table.Row>\n );\n })}\n {paddingBottom > 0 && (\n <tr aria-hidden=\"true\">\n {/* oxlint-disable-next-line control-has-associated-label */}\n <td colSpan={colSpan} style={{ height: paddingBottom }} />\n </tr>\n )}\n </Table.Body>\n </Table>\n </div>\n );\n}\n\nDataGridContent.displayName = \"DataGrid.Content\";\n\n// ============================================================================\n// DataGrid Pagination\n// ============================================================================\n\n/**\n * Pagination controls for DataGrid.\n * Wraps the Pagination component with table state.\n */\nfunction DataGridPagination({ className }: DataGridPaginationProps) {\n const {\n table,\n pageSize: _pageSize,\n pageIndex: _pageIndex,\n totalCount,\n manualPagination,\n } = useDataGridContext();\n\n // Get pagination state\n const paginationState = table.state.pagination;\n const currentPageIndex = paginationState.pageIndex;\n const currentPageSize = paginationState.pageSize;\n\n // Calculate row range\n const startRow = currentPageIndex * currentPageSize + 1;\n const endRow = Math.min(\n (currentPageIndex + 1) * currentPageSize,\n manualPagination ? totalCount : table.getCoreRowModel().rows.length\n );\n\n if (table.getPageCount() <= 1 && !manualPagination) return null;\n\n return (\n <div\n className={cn(\n \"flex items-center justify-between border-t border-sf-line p-3\",\n className\n )}\n >\n <div className=\"text-sm text-sf-subtle\">\n Showing {startRow}–{endRow} of{\" \"}\n {manualPagination ? totalCount : table.getCoreRowModel().rows.length}\n </div>\n <Pagination\n page={currentPageIndex + 1}\n setPage={(page) => table.setPageIndex(page - 1)}\n perPage={currentPageSize}\n totalCount={\n manualPagination ? totalCount : table.getCoreRowModel().rows.length\n }\n text={({ pageShowingRange, totalCount: total }) =>\n `Showing ${pageShowingRange} of ${total}`\n }\n />\n </div>\n );\n}\n\nDataGridPagination.displayName = \"DataGrid.Pagination\";\n\n// ============================================================================\n// DataGrid Empty\n// ============================================================================\n\n/**\n * Empty state component for DataGrid.\n * Shown when there are no rows to display.\n */\nfunction DataGridEmpty({\n className,\n children,\n title = \"No results\",\n description = \"No data to display.\",\n}: DataGridEmptyProps) {\n const { table } = useDataGridContext();\n\n // Only show if there are no rows\n if (table.getCoreRowModel().rows.length > 0) return null;\n\n return (\n <div className={cn(\"p-8\", className)}>\n {children ?? (\n <Empty\n icon={<FadersHorizontalIcon className=\"size-10 text-sf-subtle\" />}\n title={title}\n description={description}\n />\n )}\n </div>\n );\n}\n\nDataGridEmpty.displayName = \"DataGrid.Empty\";\n\n// ============================================================================\n// DataGrid Root\n// ============================================================================\n\n/**\n * DataGrid root component.\n * Sets up the react-table instance and provides context to child components.\n */\nfunction DataGridRoot<TData extends RowData>({\n data,\n columns,\n sorting: controlledSorting,\n onSortingChange,\n enableSorting = true,\n columnVisibility: controlledColumnVisibility,\n onColumnVisibilityChange,\n enableColumnVisibility = true,\n rowSelection: controlledRowSelection,\n onRowSelectionChange,\n enableRowSelection,\n pageSize = 10,\n pageIndex = 0,\n onPaginationChange,\n totalCount,\n manualPagination = false,\n pageSizeOptions: _pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,\n filters,\n onFiltersChange,\n filterFields,\n enableFiltering,\n layout: _layout = SF_DATA_GRID_DEFAULT_VARIANTS.layout,\n className,\n tableClassName,\n emptyState,\n loading,\n loadingRows,\n toolbar,\n showToolbar = true,\n showPagination = true,\n pagination: customPagination,\n enableColumnResizing,\n columnResizeMode = \"onEnd\",\n virtualized = false,\n estimatedRowHeight = 44,\n overscan = 8,\n maxHeight,\n children,\n}: DataGridProps<TData> & { children?: ReactNode }) {\n // Internal state for uncontrolled mode\n const [internalSorting, setInternalSorting] = useState<SortingState>([]);\n const [internalColumnVisibility, setInternalColumnVisibility] =\n useState<ColumnVisibilityState>({});\n const [internalRowSelection, setInternalRowSelection] =\n useState<RowSelectionState>({});\n const [internalPagination, setInternalPagination] = useState<PaginationState>(\n {\n pageIndex,\n pageSize,\n }\n );\n\n // Determine controlled vs uncontrolled\n const sorting = controlledSorting ?? internalSorting;\n const columnVisibility =\n controlledColumnVisibility ?? internalColumnVisibility;\n const rowSelection = controlledRowSelection ?? internalRowSelection;\n const pagination = internalPagination;\n\n // Handle sorting change\n const handleSortingChange = (\n updater: SortingState | ((old: SortingState) => SortingState)\n ) => {\n const newSorting =\n typeof updater === \"function\" ? updater(sorting) : updater;\n if (onSortingChange) {\n onSortingChange(newSorting);\n } else {\n setInternalSorting(newSorting);\n }\n };\n\n // Handle column visibility change\n const handleColumnVisibilityChange = (\n updater:\n | ColumnVisibilityState\n | ((old: ColumnVisibilityState) => ColumnVisibilityState)\n ) => {\n const newVisibility =\n typeof updater === \"function\" ? updater(columnVisibility) : updater;\n if (onColumnVisibilityChange) {\n onColumnVisibilityChange(newVisibility);\n } else {\n setInternalColumnVisibility(newVisibility);\n }\n };\n\n // Handle row selection change\n const handleRowSelectionChange = (\n updater: RowSelectionState | ((old: RowSelectionState) => RowSelectionState)\n ) => {\n const newSelection =\n typeof updater === \"function\" ? updater(rowSelection) : updater;\n if (onRowSelectionChange) {\n onRowSelectionChange(newSelection);\n } else {\n setInternalRowSelection(newSelection);\n }\n };\n\n // Handle pagination change\n const handlePaginationChange = (\n updater: PaginationState | ((old: PaginationState) => PaginationState)\n ) => {\n const newPagination =\n typeof updater === \"function\" ? updater(pagination) : updater;\n setInternalPagination(newPagination);\n if (onPaginationChange) {\n onPaginationChange({\n pageIndex: newPagination.pageIndex,\n pageSize: newPagination.pageSize,\n });\n }\n };\n\n // Create table instance (TanStack Table v9: modular features + row models)\n const table = useTable({\n _features: dataGridFeatures,\n _rowModels: {\n sortedRowModel: createSortedRowModel(sortFns),\n filteredRowModel: createFilteredRowModel(filterFns),\n paginatedRowModel: createPaginatedRowModel(),\n },\n data,\n columns: columns as ColumnDef<typeof dataGridFeatures, TData, unknown>[],\n state: {\n sorting,\n columnVisibility,\n rowSelection,\n pagination,\n },\n onSortingChange: handleSortingChange,\n onColumnVisibilityChange: handleColumnVisibilityChange,\n onRowSelectionChange: handleRowSelectionChange,\n onPaginationChange: handlePaginationChange,\n enableSorting,\n enableRowSelection: enableRowSelection !== false,\n enableColumnResizing,\n columnResizeMode,\n manualPagination,\n pageCount: manualPagination\n ? Math.ceil((totalCount ?? data.length) / pageSize)\n : undefined,\n enableMultiRowSelection: true,\n });\n\n // Provide context to children\n const contextValue: DataGridContextValue<TData> = {\n table,\n pageSize,\n pageIndex,\n totalCount: totalCount ?? data.length,\n manualPagination,\n loading,\n loadingRows,\n enableColumnResizing,\n columnResizeMode,\n virtualized,\n estimatedRowHeight,\n overscan,\n maxHeight,\n };\n\n return (\n <DataGridContext.Provider value={contextValue as DataGridContextValue}>\n <div\n className={cn(\n \"flex flex-col overflow-hidden rounded-lg border border-sf-line bg-sf-base\",\n className\n )}\n >\n {children || (\n // Auto mode - DataGrid renders everything based on props\n <>\n {/* Toolbar */}\n {showToolbar && (\n <DataGridToolbar>\n {toolbar ?? (\n <>\n {enableFiltering && filterFields && (\n <Filters\n filters={filters ?? []}\n fields={filterFields}\n onChange={onFiltersChange ?? (() => {})}\n size=\"sm\"\n />\n )}\n <div className=\"ml-auto flex items-center gap-2\">\n {enableColumnVisibility && <DataGridColumnToggle />}\n </div>\n </>\n )}\n </DataGridToolbar>\n )}\n\n {/* Table content */}\n <div\n className={cn(\n \"flex-1\",\n // When virtualized, DataGridContent owns its own bounded\n // scroll container, so the wrapper must not scroll too.\n !virtualized && \"overflow-auto\"\n )}\n >\n <DataGridContent className={tableClassName} />\n <DataGridEmpty>{emptyState}</DataGridEmpty>\n </div>\n\n {/* Pagination */}\n {showPagination && (customPagination ?? <DataGridPagination />)}\n </>\n )}\n </div>\n </DataGridContext.Provider>\n );\n}\n\nDataGridRoot.displayName = \"DataGrid\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport const DataGrid = Object.assign(DataGridRoot, {\n Toolbar: DataGridToolbar,\n Content: DataGridContent,\n Pagination: DataGridPagination,\n ColumnToggle: DataGridColumnToggle,\n Empty: DataGridEmpty,\n});\n\nexport type {\n DataGridProps,\n DataGridColumn,\n DataGridToolbarProps,\n DataGridContentProps,\n DataGridPaginationProps,\n DataGridColumnToggleProps,\n DataGridEmptyProps,\n} from \"./types\";\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as cn } from "./cn-
|
|
2
|
+
import { t as cn } from "./cn-CmAOpn49.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { CaretLeftIcon, CaretRightIcon } from "@phosphor-icons/react";
|
|
5
5
|
import { DayPicker } from "react-day-picker";
|
|
@@ -54,4 +54,4 @@ DatePicker.displayName = "DatePicker";
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { DatePicker as t };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=date-picker
|
|
57
|
+
//# sourceMappingURL=date-picker-O34AqG3f.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker
|
|
1
|
+
{"version":3,"file":"date-picker-O34AqG3f.js","names":[],"sources":["../src/components/date-picker/date-picker.tsx"],"sourcesContent":["import { CaretLeftIcon, CaretRightIcon } from \"@phosphor-icons/react\";\nimport {\n DayPicker,\n type CustomComponents,\n type PropsBase,\n type PropsSingle,\n type PropsSingleRequired,\n type PropsMulti,\n type PropsMultiRequired,\n type PropsRange,\n type PropsRangeRequired,\n} from \"react-day-picker\";\n\nimport { cn } from \"../../utils/cn\";\n\n/**\n * Custom Chevron component using Phosphor icons\n */\nconst Chevron: CustomComponents[\"Chevron\"] = ({ orientation, ...props }) => {\n const Icon = orientation === \"left\" ? CaretLeftIcon : CaretRightIcon;\n return <Icon size={16} {...props} />;\n};\n\n/** Base props shared across all DatePicker modes */\ntype BaseProps = Omit<PropsBase, \"classNames\"> & {\n /** Additional CSS classes merged via `cn()`. */\n className?: string;\n /** Custom class names for internal elements */\n classNames?: PropsBase[\"classNames\"];\n};\n\n/** Single date selection (optional) */\ntype SingleProps = BaseProps &\n Omit<PropsSingle, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsSingle[\"onSelect\"];\n };\n\n/** Single date selection (required) */\ntype SingleRequiredProps = BaseProps &\n Omit<PropsSingleRequired, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsSingleRequired[\"onSelect\"];\n };\n\n/** Multiple date selection (optional) */\ntype MultipleProps = BaseProps &\n Omit<PropsMulti, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsMulti[\"onSelect\"];\n };\n\n/** Multiple date selection (required) */\ntype MultipleRequiredProps = BaseProps &\n Omit<PropsMultiRequired, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsMultiRequired[\"onSelect\"];\n };\n\n/** Date range selection (optional) */\ntype RangeProps = BaseProps &\n Omit<PropsRange, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsRange[\"onSelect\"];\n };\n\n/** Date range selection (required) */\ntype RangeRequiredProps = BaseProps &\n Omit<PropsRangeRequired, \"onSelect\" | \"classNames\"> & {\n onChange?: PropsRangeRequired[\"onSelect\"];\n };\n\n/**\n * DatePicker props - discriminated union based on `mode`.\n * Uses `onChange` instead of `onSelect` for SignalFlare consistency.\n * Full type inference is preserved via the discriminated union.\n */\nexport type DatePickerProps =\n | SingleProps\n | SingleRequiredProps\n | MultipleProps\n | MultipleRequiredProps\n | RangeProps\n | RangeRequiredProps;\n\n/**\n * DatePicker — a date selection calendar.\n *\n * Built on [react-day-picker](https://daypicker.dev) with SignalFlare styling.\n * Supports three selection modes: single, multiple, and range.\n *\n * @example\n * ```tsx\n * // Single date selection\n * const [date, setDate] = useState<Date>();\n * <DatePicker mode=\"single\" selected={date} onChange={setDate} />\n *\n * // Multiple date selection\n * const [dates, setDates] = useState<Date[]>([]);\n * <DatePicker mode=\"multiple\" selected={dates} onChange={setDates} max={5} />\n *\n * // Date range selection\n * const [range, setRange] = useState<DateRange>();\n * <DatePicker mode=\"range\" selected={range} onChange={setRange} numberOfMonths={2} />\n * ```\n */\nexport function DatePicker({\n className,\n classNames,\n onChange,\n ...props\n}: DatePickerProps) {\n return (\n <DayPicker\n showOutsideDays\n animate\n {...props}\n onSelect={onChange as never}\n classNames={{\n ...classNames,\n root: cn(\n \"rdp-root select-none rounded-xl bg-sf-base p-3\",\n classNames?.root,\n className\n ),\n }}\n components={{\n Chevron,\n ...props.components,\n }}\n />\n );\n}\n\nDatePicker.displayName = \"DatePicker\";\n"],"mappings":";;;;;;;;;AAkBA,IAAM,WAAwC,EAAE,aAAa,GAAG,YAAY;CAE1E,OAAO,oBADM,gBAAgB,SAAS,gBAAgB,gBAC/C;EAAM,MAAM;EAAI,GAAI;CAAQ,CAAA;AACrC;;;;;;;;;;;;;;;;;;;;;;AAgFA,SAAgB,WAAW,EACzB,WACA,YACA,UACA,GAAG,SACe;CAClB,OACE,oBAAC,WAAD;EACE,iBAAA;EACA,SAAA;EACA,GAAI;EACJ,UAAU;EACV,YAAY;GACV,GAAG;GACH,MAAM,GACJ,kDACA,YAAY,MACZ,SACF;EACF;EACA,YAAY;GACV;GACA,GAAG,MAAM;EACX;CACD,CAAA;AAEL;AAEA,WAAW,cAAc"}
|