@keboola/design 11.6.1 → 12.0.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/AGENTS.md +50 -9
- package/CHANGELOG.md +241 -0
- package/COMPONENT-API.md +337 -288
- package/README.md +12 -2
- package/dist/{AIKit-CQxVwyAk.js → AIKit-BD4r7ff-.js} +807 -199
- package/dist/AIKit-BD4r7ff-.js.map +1 -0
- package/dist/{Alert-C4Y9IwMI.js → Alert-UI-CIs-1.js} +16 -16
- package/dist/Alert-UI-CIs-1.js.map +1 -0
- package/dist/{AlertModal-BGJdaRRj.js → AlertModal-Th2khjPi.js} +5 -5
- package/dist/AlertModal-Th2khjPi.js.map +1 -0
- package/dist/{AppShell-DRgJxpXW.js → AppShell-WSQabK8r.js} +15 -52
- package/dist/AppShell-WSQabK8r.js.map +1 -0
- package/dist/{AutoSaveTextarea-BeuWuszr.js → AutoSaveTextarea-C5iIr2Ts.js} +2 -2
- package/dist/{AutoSaveTextarea-BeuWuszr.js.map → AutoSaveTextarea-C5iIr2Ts.js.map} +1 -1
- package/dist/{Badge-o5jURtpB.js → Badge-DIjhwPvh.js} +4 -9
- package/dist/Badge-DIjhwPvh.js.map +1 -0
- package/dist/{BrandEditor-CS9P4r2p.js → BrandEditor-BU23Vl8V.js} +7 -7
- package/dist/{BrandEditor-CS9P4r2p.js.map → BrandEditor-BU23Vl8V.js.map} +1 -1
- package/dist/{BrandLogo-CoKBk4MI.js → BrandLogo-CKpVSZb6.js} +4 -4
- package/dist/BrandLogo-CKpVSZb6.js.map +1 -0
- package/dist/{Breadcrumb-D1id7YXd.js → Breadcrumb-p9HtMLCc.js} +8 -14
- package/dist/Breadcrumb-p9HtMLCc.js.map +1 -0
- package/dist/{Button-DsRrU5F1.js → Button-Ca4Q3VJU.js} +31 -13
- package/dist/Button-Ca4Q3VJU.js.map +1 -0
- package/dist/{Calendar-cG5NIJ4O.js → Calendar-DFtmZzbF.js} +99 -99
- package/dist/Calendar-DFtmZzbF.js.map +1 -0
- package/dist/{Card-Dyo7055Q.js → Card-Cr9MBNHu.js} +4 -4
- package/dist/Card-Cr9MBNHu.js.map +1 -0
- package/dist/{Checkbox-Bqr6zXcW.js → Checkbox-8yIIgY7g.js} +4 -4
- package/dist/Checkbox-8yIIgY7g.js.map +1 -0
- package/dist/{Clipboard-C2YBRfD8.js → Clipboard-_xf6hMDD.js} +2 -2
- package/dist/{Clipboard-C2YBRfD8.js.map → Clipboard-_xf6hMDD.js.map} +1 -1
- package/dist/{ClipboardButton-CrljClL1.js → ClipboardButton-DHa1trtI.js} +4 -4
- package/dist/{ClipboardButton-CrljClL1.js.map → ClipboardButton-DHa1trtI.js.map} +1 -1
- package/dist/{CodeEditor-C9AS8Ch0.js → CodeEditor-BSo-oLFG.js} +55 -165
- package/dist/CodeEditor-BSo-oLFG.js.map +1 -0
- package/dist/{ColorInput-Dg87lKcR.js → ColorInput-DSMqrs2-.js} +12 -27
- package/dist/ColorInput-DSMqrs2-.js.map +1 -0
- package/dist/{ColorModeSwitch-CsWLiTBX.js → ColorModeSwitch-D7EuWyJz.js} +7 -17
- package/dist/ColorModeSwitch-D7EuWyJz.js.map +1 -0
- package/dist/Combobox-CxRAYOBt.js +1069 -0
- package/dist/Combobox-CxRAYOBt.js.map +1 -0
- package/dist/{Command-CqxoI_De.js → Command-BU_cVurn.js} +4 -4
- package/dist/{Command-CqxoI_De.js.map → Command-BU_cVurn.js.map} +1 -1
- package/dist/{CopyField-Rx9HPTbJ.js → CopyField-6_c-NdLO.js} +17 -53
- package/dist/{CopyField-Rx9HPTbJ.js.map → CopyField-6_c-NdLO.js.map} +1 -1
- package/dist/{DateInput-DpifECUQ.js → DateInput-DyEErfJf.js} +6 -6
- package/dist/{DateInput-DpifECUQ.js.map → DateInput-DyEErfJf.js.map} +1 -1
- package/dist/{DatePicker-nA8YdE84.js → DatePicker-CtSa9b3V.js} +3 -3
- package/dist/{DatePicker-nA8YdE84.js.map → DatePicker-CtSa9b3V.js.map} +1 -1
- package/dist/{DateRangeInput-9MIw7P6L.js → DateRangeInput-Dg7-VUd9.js} +10 -14
- package/dist/DateRangeInput-Dg7-VUd9.js.map +1 -0
- package/dist/{DateRangePicker-DjSUFjh4.js → DateRangePicker-BoPnh4aH.js} +9 -13
- package/dist/DateRangePicker-BoPnh4aH.js.map +1 -0
- package/dist/DiffView-ppTIzh2h.js.map +1 -1
- package/dist/{DropdownMenu-CASr-jgl.js → DropdownMenu-gRM-A8qU.js} +11 -6
- package/dist/DropdownMenu-gRM-A8qU.js.map +1 -0
- package/dist/{FieldItem-DtPTzNef.js → FieldItem-2wMXQ0Qw.js} +12 -25
- package/dist/FieldItem-2wMXQ0Qw.js.map +1 -0
- package/dist/{FieldItem-vhIJW4pj.d.ts → FieldItem-CPN1xjN5.d.ts} +11 -25
- package/dist/{FileUpload-DYQCTGjU.js → FileUpload-C83tXuE2.js} +11 -16
- package/dist/{FileUpload-DYQCTGjU.js.map → FileUpload-C83tXuE2.js.map} +1 -1
- package/dist/{Form-DAaatlBk.js → Form-95rVLfX8.js} +15 -23
- package/dist/{Form-DAaatlBk.js.map → Form-95rVLfX8.js.map} +1 -1
- package/dist/{FormGroup-Bl8JmnzJ.js → FormGroup-CmNiAtU6.js} +11 -17
- package/dist/FormGroup-CmNiAtU6.js.map +1 -0
- package/dist/{FullScreenModal-CN9nAs72.js → FullScreenModal-CD7mYeTz.js} +15 -29
- package/dist/FullScreenModal-CD7mYeTz.js.map +1 -0
- package/dist/{HoverCard-B9ZMJxjn.js → HoverCard-B8OKu9XZ.js} +2 -2
- package/dist/{HoverCard-B9ZMJxjn.js.map → HoverCard-B8OKu9XZ.js.map} +1 -1
- package/dist/{InputGroup-DcZRlVnN.js → InputGroup-B4QOPxHl.js} +12 -13
- package/dist/InputGroup-B4QOPxHl.js.map +1 -0
- package/dist/{Kbd-D1Azcc4g.js → Kbd-J4n1J6i4.js} +23 -13
- package/dist/Kbd-J4n1J6i4.js.map +1 -0
- package/dist/{MarkedText-DNGEUVWc.js → MarkedText-DlmlJO0u.js} +2 -2
- package/dist/{MarkedText-DNGEUVWc.js.map → MarkedText-DlmlJO0u.js.map} +1 -1
- package/dist/{MermaidDiagram-CujFxVzk.js → MermaidDiagram-BQvz6bhv.js} +16 -34
- package/dist/MermaidDiagram-BQvz6bhv.js.map +1 -0
- package/dist/{Modal-Coj-H02o.js → Modal-Driyqs_N.js} +17 -34
- package/dist/Modal-Driyqs_N.js.map +1 -0
- package/dist/{ModalTitle-C76ke2eo.js → ModalTitle-BxopkIoQ.js} +3 -3
- package/dist/ModalTitle-BxopkIoQ.js.map +1 -0
- package/dist/{MultiActionButtonGroup-CNNoBQbv.js → MultiActionButtonGroup-BPnmzBtw.js} +3 -3
- package/dist/{MultiActionButtonGroup-CNNoBQbv.js.map → MultiActionButtonGroup-BPnmzBtw.js.map} +1 -1
- package/dist/{Navbar-Liy1TPI7.js → Navbar-B_DNpv5s.js} +9 -13
- package/dist/{Navbar-Liy1TPI7.js.map → Navbar-B_DNpv5s.js.map} +1 -1
- package/dist/{OtpInput-CbbymqYs.js → OtpInput-I8B8Vjdl.js} +2 -2
- package/dist/{OtpInput-CbbymqYs.js.map → OtpInput-I8B8Vjdl.js.map} +1 -1
- package/dist/{PageHeader-Q3IpCnQd.js → PageHeader-CgfyXpf1.js} +13 -26
- package/dist/PageHeader-CgfyXpf1.js.map +1 -0
- package/dist/{PageLayout-DSVM-ASz.js → PageLayout-DiAAILuS.js} +12 -20
- package/dist/PageLayout-DiAAILuS.js.map +1 -0
- package/dist/{PageToolbar-BKVJiDAL.js → PageToolbar-DOAtAnfL.js} +12 -42
- package/dist/PageToolbar-DOAtAnfL.js.map +1 -0
- package/dist/{Pagination-C_b7Xhey.js → Pagination-LaSg-5cl.js} +3 -3
- package/dist/{Pagination-C_b7Xhey.js.map → Pagination-LaSg-5cl.js.map} +1 -1
- package/dist/{Popconfirm-5pBzT_HQ.js → Popconfirm-SLz0zodk.js} +3 -3
- package/dist/{Popconfirm-5pBzT_HQ.js.map → Popconfirm-SLz0zodk.js.map} +1 -1
- package/dist/{Popover-BEbQrC_P.js → Popover-CEk915I1.js} +4 -3
- package/dist/Popover-CEk915I1.js.map +1 -0
- package/dist/{RadioGroup-CUBsuP7r.js → RadioGroup-CBPRLRN0.js} +4 -4
- package/dist/{RadioGroup-CUBsuP7r.js.map → RadioGroup-CBPRLRN0.js.map} +1 -1
- package/dist/{Search-DVpJuzr9.js → Search-DmkQo716.js} +3 -3
- package/dist/{Search-DVpJuzr9.js.map → Search-DmkQo716.js.map} +1 -1
- package/dist/{SearchInput-Q85p8Ews.js → SearchInput-CEfQDNl3.js} +8 -13
- package/dist/SearchInput-CEfQDNl3.js.map +1 -0
- package/dist/{SectionNav-mpmSM3OC.js → SectionNav-B_qf0AXi.js} +10 -42
- package/dist/SectionNav-B_qf0AXi.js.map +1 -0
- package/dist/{Select-DV3Hak_l.js → Select-ByRvkZ3D.js} +8 -11
- package/dist/{Select-DV3Hak_l.js.map → Select-ByRvkZ3D.js.map} +1 -1
- package/dist/{Sheet-Chf0kX1E.js → Sheet-C-yXk5Da.js} +5 -9
- package/dist/Sheet-C-yXk5Da.js.map +1 -0
- package/dist/{Sidebar-CTWsHZhF.js → Sidebar-Ds0E6PbR.js} +181 -33
- package/dist/Sidebar-Ds0E6PbR.js.map +1 -0
- package/dist/{Slider-Bv0B6lI0.js → Slider-DWdu9NuM.js} +3 -3
- package/dist/{Slider-Bv0B6lI0.js.map → Slider-DWdu9NuM.js.map} +1 -1
- package/dist/{Stepper-C8sm9ZFM.js → Stepper-BLkLhfnd.js} +6 -9
- package/dist/{Stepper-C8sm9ZFM.js.map → Stepper-BLkLhfnd.js.map} +1 -1
- package/dist/{Switch-B0WdGSjz.js → Switch-DZvNePOm.js} +2 -2
- package/dist/{Switch-B0WdGSjz.js.map → Switch-DZvNePOm.js.map} +1 -1
- package/dist/{Table-CvYuTuNU.js → Table-BaVT5Tkn.js} +6 -11
- package/dist/{Table-CvYuTuNU.js.map → Table-BaVT5Tkn.js.map} +1 -1
- package/dist/{Tabs-eB974xJf.js → Tabs-Dt9oLYHC.js} +3 -3
- package/dist/{Tabs-eB974xJf.js.map → Tabs-Dt9oLYHC.js.map} +1 -1
- package/dist/{TextInput-DiEMxVF6.js → TextInput-CDG2XpBl.js} +12 -15
- package/dist/TextInput-CDG2XpBl.js.map +1 -0
- package/dist/{ThemeProvider-BI6JWBdJ.js → ThemeProvider-DXsxFg1U.js} +13 -31
- package/dist/ThemeProvider-DXsxFg1U.js.map +1 -0
- package/dist/{TimePicker-BGeqc-Ed.js → TimePicker-CDGYrRxi.js} +2 -2
- package/dist/{TimePicker-BGeqc-Ed.js.map → TimePicker-CDGYrRxi.js.map} +1 -1
- package/dist/{Timeline-BG5Xogxh.js → Timeline-B-I6sb0M.js} +2 -2
- package/dist/{Timeline-BG5Xogxh.js.map → Timeline-B-I6sb0M.js.map} +1 -1
- package/dist/{Toast-Dr6Uw7ao.js → Toast-PfQf3vj-.js} +2 -2
- package/dist/{Toast-Dr6Uw7ao.js.map → Toast-PfQf3vj-.js.map} +1 -1
- package/dist/{Workbench-UR2FBC7I.js → Workbench-DmZzpkj7.js} +2 -2
- package/dist/{Workbench-UR2FBC7I.js.map → Workbench-DmZzpkj7.js.map} +1 -1
- package/dist/{ZoomableSvg-U_VH3QRO.js → ZoomableSvg-BzXVfgnI.js} +5 -19
- package/dist/ZoomableSvg-BzXVfgnI.js.map +1 -0
- package/dist/charts.d.ts +21 -52
- package/dist/charts.js +13 -39
- package/dist/charts.js.map +1 -1
- package/dist/{context-D7X470dy.js → context-U293r3v-.js} +5 -9
- package/dist/context-U293r3v-.js.map +1 -0
- package/dist/editors.d.ts +27 -124
- package/dist/editors.js +29 -71
- package/dist/editors.js.map +1 -1
- package/dist/{findLiteralMatches-BGBw8Vbl.js → findLiteralMatches-DgGLzyG0.js} +8 -20
- package/dist/findLiteralMatches-DgGLzyG0.js.map +1 -0
- package/dist/flint.d.ts +3 -6
- package/dist/flint.js +31 -80
- package/dist/flint.js.map +1 -1
- package/dist/{icons-Cek151jC.js → icons-wcA70iQx.js} +105 -2
- package/dist/icons-wcA70iQx.js.map +1 -0
- package/dist/icons.d.ts +2 -2
- package/dist/icons.js +2 -2
- package/dist/{index-m-kQEWiY.d.ts → index-B7k-09i1.d.ts} +14 -2
- package/dist/index.d.ts +1461 -1809
- package/dist/index.js +70 -67
- package/dist/internal/blocks/AIKit.js +2 -2
- package/dist/internal/blocks/AppShell.js +1 -1
- package/dist/internal/blocks/AuthLayout.js +7 -27
- package/dist/internal/blocks/AuthLayout.js.map +1 -1
- package/dist/internal/blocks/AutoSaveTextarea.js +1 -1
- package/dist/internal/blocks/BrandEditor.js +1 -1
- package/dist/internal/blocks/ChartPanel.js +4 -8
- package/dist/internal/blocks/ChartPanel.js.map +1 -1
- package/dist/internal/blocks/ChipEditor.js +129 -0
- package/dist/internal/blocks/ChipEditor.js.map +1 -0
- package/dist/internal/blocks/ClipboardButton.js +1 -1
- package/dist/internal/blocks/ColorInput.js +1 -1
- package/dist/internal/blocks/ColorModeSwitch.js +1 -1
- package/dist/internal/blocks/Command.js +1 -1
- package/dist/internal/blocks/CopyField.js +1 -1
- package/dist/internal/blocks/DashboardHero.js +4 -7
- package/dist/internal/blocks/DashboardHero.js.map +1 -1
- package/dist/internal/blocks/DateInput.js +1 -1
- package/dist/internal/blocks/DateRangeInput.js +1 -1
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +1 -1
- package/dist/internal/blocks/EmptyState.js +5 -9
- package/dist/internal/blocks/EmptyState.js.map +1 -1
- package/dist/internal/blocks/ErrorState.js +5 -9
- package/dist/internal/blocks/ErrorState.js.map +1 -1
- package/dist/internal/blocks/ExportMenu.js +6 -10
- package/dist/internal/blocks/ExportMenu.js.map +1 -1
- package/dist/internal/blocks/Form/connectors/ComboboxField.js +40 -0
- package/dist/internal/blocks/Form/connectors/ComboboxField.js.map +1 -0
- package/dist/internal/blocks/Form/connectors/MultiComboboxField.js +5 -22
- package/dist/internal/blocks/Form/connectors/MultiComboboxField.js.map +1 -1
- package/dist/internal/blocks/Form.js +1 -1
- package/dist/internal/blocks/FormGroup.js +1 -1
- package/dist/internal/blocks/GoogleButton.js +1 -1
- package/dist/internal/blocks/MicrosoftButton.js +1 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js +1 -1
- package/dist/internal/blocks/MultiCombobox.js +162 -165
- package/dist/internal/blocks/MultiCombobox.js.map +1 -1
- package/dist/internal/blocks/NumberInput.js +1 -1
- package/dist/internal/blocks/OtpInput.js +1 -1
- package/dist/internal/blocks/PageHeader.js +1 -1
- package/dist/internal/blocks/PageLayout.js +1 -1
- package/dist/internal/blocks/PageToolbar.js +1 -1
- package/dist/internal/blocks/PasswordInput.js +4 -4
- package/dist/internal/blocks/PasswordInput.js.map +1 -1
- package/dist/internal/blocks/SearchInput.js +1 -1
- package/dist/internal/blocks/SearchInputWithNavigation.js +4 -4
- package/dist/internal/blocks/SectionNav.js +1 -1
- package/dist/internal/blocks/SplitButton.js +3 -3
- package/dist/internal/blocks/StatCard.js +4 -8
- package/dist/internal/blocks/StatCard.js.map +1 -1
- package/dist/internal/blocks/TextInput.js +1 -1
- package/dist/internal/blocks/Textarea.js +2 -2
- package/dist/internal/blocks/TimeInput.js +5 -5
- package/dist/internal/blocks/TimeInput.js.map +1 -1
- package/dist/internal/components/Alert.js +1 -1
- package/dist/internal/components/AlertModal.js +1 -1
- package/dist/internal/components/Avatar.js +1 -1
- package/dist/internal/components/Badge.js +1 -1
- package/dist/internal/components/BrandLogo.js +1 -1
- package/dist/internal/components/Breadcrumb.js +1 -1
- package/dist/internal/components/Button.js +1 -1
- package/dist/internal/components/ButtonGroup.js.map +1 -1
- package/dist/internal/components/Calendar.js +1 -1
- package/dist/internal/components/Card.js +1 -1
- package/dist/internal/components/Checkbox.js +1 -1
- package/dist/internal/components/Clipboard.js +1 -1
- package/dist/internal/components/CollapsiblePanel.js +2 -2
- package/dist/internal/components/Combobox.js +2 -2
- package/dist/internal/components/DatePicker.js +1 -1
- package/dist/internal/components/DateRangePicker.js +1 -1
- package/dist/internal/components/DropdownMenu.js +1 -1
- package/dist/internal/components/FileUpload.js +1 -1
- package/dist/internal/components/FullScreenModal.js +1 -1
- package/dist/internal/components/HoverCard.js +1 -1
- package/dist/internal/components/InputGroup.js +1 -1
- package/dist/internal/components/Kbd.js +1 -1
- package/dist/internal/components/MarkedText.js +1 -1
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +1 -1
- package/dist/internal/components/Modal.js +1 -1
- package/dist/internal/components/Navbar.js +1 -1
- package/dist/internal/components/Pagination.js +1 -1
- package/dist/internal/components/PanelWithDetails.js +1 -1
- package/dist/internal/components/Popconfirm.js +1 -1
- package/dist/internal/components/Popover.js +1 -1
- package/dist/internal/components/RadioGroup.js +1 -1
- package/dist/internal/components/Search.js +1 -1
- package/dist/internal/components/Select.js +1 -1
- package/dist/internal/components/Separator.js.map +1 -1
- package/dist/internal/components/Sheet.js +1 -1
- package/dist/internal/components/Sidebar.js +1 -1
- package/dist/internal/components/Skeleton/Skeleton.js +5 -9
- package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/internal/components/Slider.js +1 -1
- package/dist/internal/components/SpotlightBackdrop.js +3 -8
- package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
- package/dist/internal/components/StatusDot.js +60 -0
- package/dist/internal/components/StatusDot.js.map +1 -0
- package/dist/internal/components/Stepper.js +1 -1
- package/dist/internal/components/Switch.js +1 -1
- package/dist/internal/components/Table.js +1 -1
- package/dist/internal/components/Tabs.js +1 -1
- package/dist/internal/components/ThemeProvider.js +3 -3
- package/dist/internal/components/TimePicker.js +1 -1
- package/dist/internal/components/Timeline.js +1 -1
- package/dist/internal/components/Toast.js +2 -2
- package/dist/internal/components/Tooltip.js +2 -2
- package/dist/internal/components/Truncated.js +4 -8
- package/dist/internal/components/Truncated.js.map +1 -1
- package/dist/internal/components/Workbench.js +1 -1
- package/dist/internal/components/ZoomableSvg.js +1 -1
- package/dist/internal/hooks/useScrollbarPosition.js +1 -1
- package/dist/internal/hooks/useStableCallback.js +4 -13
- package/dist/internal/hooks/useStableCallback.js.map +1 -1
- package/dist/internal/utils/mergeRefs.js +27 -9
- package/dist/internal/utils/mergeRefs.js.map +1 -1
- package/dist/internal/utils.js +3 -3
- package/dist/markdown-editor.d.ts +15 -37
- package/dist/markdown-editor.js +17 -23
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.d.ts +4 -6
- package/dist/mermaid.js +1 -1
- package/dist/rjsf.d.ts +9 -19
- package/dist/rjsf.js +44 -84
- package/dist/rjsf.js.map +1 -1
- package/dist/{styles-BAFscjSV.js → styles-gzcjOyKv.js} +6 -6
- package/dist/styles-gzcjOyKv.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/svgTransforms-Dw2hRA-i.js +51 -0
- package/dist/svgTransforms-Dw2hRA-i.js.map +1 -0
- package/dist/testing.d.ts +3 -10
- package/dist/testing.js +5 -12
- package/dist/testing.js.map +1 -1
- package/dist/themeTokens-7DEab0kp.js +31 -0
- package/dist/themeTokens-7DEab0kp.js.map +1 -0
- package/dist/{toast-DIC0iNRf.js → toast-CyXEdaCZ.js} +3 -3
- package/dist/toast-CyXEdaCZ.js.map +1 -0
- package/dist/{themeScopeContext-D7fSyb06.js → useColorSchemeState-Cw4MCXUs.js} +14 -14
- package/dist/useColorSchemeState-Cw4MCXUs.js.map +1 -0
- package/dist/{useControllableState-M6494mCT.js → useControllableState-CUYXMsfz.js} +3 -7
- package/dist/useControllableState-CUYXMsfz.js.map +1 -0
- package/dist/useElement-D-RjrGa4.js +21 -0
- package/dist/useElement-D-RjrGa4.js.map +1 -0
- package/dist/useThemeAttributes-B199Regy.js +67 -0
- package/dist/useThemeAttributes-B199Regy.js.map +1 -0
- package/dist/{utils-DnkrFYqY.js → utils-Bd28bWgm.js} +53 -20
- package/dist/utils-Bd28bWgm.js.map +1 -0
- package/dist/vega.d.ts +8 -30
- package/dist/vega.js +5 -13
- package/dist/vega.js.map +1 -1
- package/dist/{vegaTheme-CSvFEMBl.js → vegaTheme-VQMWTlBw.js} +7 -21
- package/dist/vegaTheme-VQMWTlBw.js.map +1 -0
- package/package.json +11 -9
- package/src/styles.css +120 -14
- package/src/theme.css +126 -6
- package/dist/AIKit-CQxVwyAk.js.map +0 -1
- package/dist/Alert-C4Y9IwMI.js.map +0 -1
- package/dist/AlertModal-BGJdaRRj.js.map +0 -1
- package/dist/AppShell-DRgJxpXW.js.map +0 -1
- package/dist/Badge-o5jURtpB.js.map +0 -1
- package/dist/BrandLogo-CoKBk4MI.js.map +0 -1
- package/dist/Breadcrumb-D1id7YXd.js.map +0 -1
- package/dist/Button-DsRrU5F1.js.map +0 -1
- package/dist/Calendar-cG5NIJ4O.js.map +0 -1
- package/dist/Card-Dyo7055Q.js.map +0 -1
- package/dist/Checkbox-Bqr6zXcW.js.map +0 -1
- package/dist/CodeEditor-C9AS8Ch0.js.map +0 -1
- package/dist/ColorInput-Dg87lKcR.js.map +0 -1
- package/dist/ColorModeSwitch-CsWLiTBX.js.map +0 -1
- package/dist/Combobox-BfanUAqY.js +0 -619
- package/dist/Combobox-BfanUAqY.js.map +0 -1
- package/dist/DateRangeInput-9MIw7P6L.js.map +0 -1
- package/dist/DateRangePicker-DjSUFjh4.js.map +0 -1
- package/dist/DropdownMenu-CASr-jgl.js.map +0 -1
- package/dist/FieldItem-DtPTzNef.js.map +0 -1
- package/dist/FormGroup-Bl8JmnzJ.js.map +0 -1
- package/dist/FullScreenModal-CN9nAs72.js.map +0 -1
- package/dist/InputGroup-DcZRlVnN.js.map +0 -1
- package/dist/Kbd-D1Azcc4g.js.map +0 -1
- package/dist/MermaidDiagram-CujFxVzk.js.map +0 -1
- package/dist/Modal-Coj-H02o.js.map +0 -1
- package/dist/ModalTitle-C76ke2eo.js.map +0 -1
- package/dist/PageHeader-Q3IpCnQd.js.map +0 -1
- package/dist/PageLayout-DSVM-ASz.js.map +0 -1
- package/dist/PageToolbar-BKVJiDAL.js.map +0 -1
- package/dist/Popover-BEbQrC_P.js.map +0 -1
- package/dist/SearchInput-Q85p8Ews.js.map +0 -1
- package/dist/SectionNav-mpmSM3OC.js.map +0 -1
- package/dist/Sheet-Chf0kX1E.js.map +0 -1
- package/dist/Sidebar-CTWsHZhF.js.map +0 -1
- package/dist/TextInput-DiEMxVF6.js.map +0 -1
- package/dist/ThemeProvider-BI6JWBdJ.js.map +0 -1
- package/dist/ZoomableSvg-U_VH3QRO.js.map +0 -1
- package/dist/context-D7X470dy.js.map +0 -1
- package/dist/findLiteralMatches-BGBw8Vbl.js.map +0 -1
- package/dist/icons-Cek151jC.js.map +0 -1
- package/dist/styles-BAFscjSV.js.map +0 -1
- package/dist/svgTransforms-CJAYPk7o.js +0 -81
- package/dist/svgTransforms-CJAYPk7o.js.map +0 -1
- package/dist/themeScopeContext-D7fSyb06.js.map +0 -1
- package/dist/themeTokens-qP1-55O7.js +0 -119
- package/dist/themeTokens-qP1-55O7.js.map +0 -1
- package/dist/toast-DIC0iNRf.js.map +0 -1
- package/dist/useControllableState-M6494mCT.js.map +0 -1
- package/dist/useElement-DkF6esWL.js +0 -15
- package/dist/useElement-DkF6esWL.js.map +0 -1
- package/dist/utils-DnkrFYqY.js.map +0 -1
- package/dist/vegaTheme-CSvFEMBl.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,79 +1,82 @@
|
|
|
1
1
|
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
-
import { Tooltip, TooltipProvider, copyToClipboard, isMac } from "./utils-
|
|
2
|
+
import { HINT_UNDERLINE_CLASS_NAME, Tooltip, TooltipProvider, copyToClipboard, isMac } from "./utils-Bd28bWgm.js";
|
|
3
3
|
import { DEFAULT_BRAND_ID, DEFAULT_COLOR_SCHEME } from "./defaults-i_xG2F_1.js";
|
|
4
|
-
import { ArgoDesignContext, useArgoDesign, useTheme } from "./context-
|
|
5
|
-
import { findLiteralMatches, hasLiteralMatch } from "./findLiteralMatches-
|
|
4
|
+
import { ArgoDesignContext, useArgoDesign, useTheme } from "./context-U293r3v-.js";
|
|
5
|
+
import { findLiteralMatches, hasLiteralMatch } from "./findLiteralMatches-DgGLzyG0.js";
|
|
6
6
|
import { mergeRefs } from "./internal/utils/mergeRefs.js";
|
|
7
|
-
import { Button, ButtonInline, argoVariants } from "./Button-
|
|
7
|
+
import { Button, ButtonInline, argoVariants } from "./Button-Ca4Q3VJU.js";
|
|
8
8
|
import { ButtonGroup } from "./internal/components/ButtonGroup.js";
|
|
9
|
-
import { DropdownMenu } from "./DropdownMenu-
|
|
9
|
+
import { DropdownMenu } from "./DropdownMenu-gRM-A8qU.js";
|
|
10
10
|
import { ScrollArea, ScrollBar } from "./internal/components/ScrollArea.js";
|
|
11
11
|
import { SplitButton } from "./internal/blocks/SplitButton.js";
|
|
12
|
-
import { MultiActionButtonGroup } from "./MultiActionButtonGroup-
|
|
12
|
+
import { MultiActionButtonGroup } from "./MultiActionButtonGroup-BPnmzBtw.js";
|
|
13
13
|
import { Toggle } from "./internal/components/Toggle.js";
|
|
14
14
|
import { ToggleGroup } from "./ToggleGroup-Cy_10Mvu.js";
|
|
15
|
-
import { Clipboard } from "./Clipboard-
|
|
16
|
-
import { ClipboardButton, ClipboardInline } from "./ClipboardButton-
|
|
15
|
+
import { Clipboard } from "./Clipboard-_xf6hMDD.js";
|
|
16
|
+
import { ClipboardButton, ClipboardInline } from "./ClipboardButton-DHa1trtI.js";
|
|
17
17
|
import { ExportMenu } from "./internal/blocks/ExportMenu.js";
|
|
18
|
-
import { CopyField } from "./CopyField-
|
|
18
|
+
import { CopyField } from "./CopyField-6_c-NdLO.js";
|
|
19
19
|
import { Label } from "./internal/components/Label.js";
|
|
20
20
|
import { MicrosoftButton } from "./internal/blocks/MicrosoftButton.js";
|
|
21
21
|
import { GoogleButton } from "./internal/blocks/GoogleButton.js";
|
|
22
22
|
import { Link } from "./internal/components/Link.js";
|
|
23
|
-
import { AlertModal } from "./AlertModal-
|
|
24
|
-
import { Modal } from "./Modal-
|
|
23
|
+
import { AlertModal } from "./AlertModal-Th2khjPi.js";
|
|
24
|
+
import { Modal } from "./Modal-Driyqs_N.js";
|
|
25
25
|
import { Separator } from "./internal/components/Separator.js";
|
|
26
|
-
import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-
|
|
26
|
+
import { FullScreenModal, FullScreenModalBody, FullScreenModalHeader } from "./FullScreenModal-CD7mYeTz.js";
|
|
27
27
|
import { Truncated } from "./internal/components/Truncated.js";
|
|
28
|
-
import { Sheet } from "./Sheet-
|
|
28
|
+
import { Sheet } from "./Sheet-C-yXk5Da.js";
|
|
29
29
|
import { useStableCallback } from "./internal/hooks/useStableCallback.js";
|
|
30
|
-
import { Popover } from "./Popover-
|
|
31
|
-
import { Popconfirm } from "./Popconfirm-
|
|
32
|
-
import { HoverCard } from "./HoverCard-
|
|
33
|
-
import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "./Command-
|
|
34
|
-
import { InputGroup } from "./InputGroup-
|
|
35
|
-
import { TextInput } from "./TextInput-
|
|
30
|
+
import { Popover } from "./Popover-CEk915I1.js";
|
|
31
|
+
import { Popconfirm } from "./Popconfirm-SLz0zodk.js";
|
|
32
|
+
import { HoverCard } from "./HoverCard-B8OKu9XZ.js";
|
|
33
|
+
import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "./Command-BU_cVurn.js";
|
|
34
|
+
import { InputGroup } from "./InputGroup-B4QOPxHl.js";
|
|
35
|
+
import { TextInput } from "./TextInput-CDG2XpBl.js";
|
|
36
36
|
import { SpotlightBackdrop, useTargetRect } from "./internal/components/SpotlightBackdrop.js";
|
|
37
|
-
import { Calendar } from "./Calendar-
|
|
38
|
-
import { DatePicker } from "./DatePicker-
|
|
39
|
-
import { TimePicker } from "./TimePicker-
|
|
40
|
-
import { DateRangePicker } from "./DateRangePicker-
|
|
41
|
-
import { Switch } from "./Switch-
|
|
42
|
-
import { RadioGroup } from "./RadioGroup-
|
|
43
|
-
import { Slider } from "./Slider-
|
|
44
|
-
import { Search, SearchForm } from "./Search-
|
|
45
|
-
import { Select } from "./Select-
|
|
46
|
-
import { Checkbox } from "./Checkbox-
|
|
47
|
-
import { Combobox, filterByWords, matchByWords, namedLabel, withBlankValues } from "./Combobox-
|
|
48
|
-
import { Badge } from "./Badge-
|
|
37
|
+
import { Calendar } from "./Calendar-DFtmZzbF.js";
|
|
38
|
+
import { DatePicker } from "./DatePicker-CtSa9b3V.js";
|
|
39
|
+
import { TimePicker } from "./TimePicker-CDGYrRxi.js";
|
|
40
|
+
import { DateRangePicker } from "./DateRangePicker-BoPnh4aH.js";
|
|
41
|
+
import { Switch } from "./Switch-DZvNePOm.js";
|
|
42
|
+
import { RadioGroup } from "./RadioGroup-CBPRLRN0.js";
|
|
43
|
+
import { Slider } from "./Slider-DWdu9NuM.js";
|
|
44
|
+
import { Search, SearchForm } from "./Search-DmkQo716.js";
|
|
45
|
+
import { Select } from "./Select-ByRvkZ3D.js";
|
|
46
|
+
import { Checkbox } from "./Checkbox-8yIIgY7g.js";
|
|
47
|
+
import { BLANK_VALUES, Combobox, filterByWords, matchByWords, namedLabel, withBlankValues } from "./Combobox-CxRAYOBt.js";
|
|
48
|
+
import { Badge } from "./Badge-DIjhwPvh.js";
|
|
49
49
|
import { MultiCombobox } from "./internal/blocks/MultiCombobox.js";
|
|
50
|
-
import { FormGroup } from "./FormGroup-
|
|
51
|
-
import { ColorInput } from "./ColorInput-
|
|
50
|
+
import { FormGroup } from "./FormGroup-CmNiAtU6.js";
|
|
51
|
+
import { ColorInput } from "./ColorInput-DSMqrs2-.js";
|
|
52
52
|
import { HelpBlock } from "./internal/components/HelpBlock.js";
|
|
53
53
|
import { NumberInput } from "./internal/blocks/NumberInput.js";
|
|
54
54
|
import { Textarea } from "./internal/blocks/Textarea.js";
|
|
55
|
+
import { ComboboxField } from "./internal/blocks/Form/connectors/ComboboxField.js";
|
|
55
56
|
import { MultiComboboxField } from "./internal/blocks/Form/connectors/MultiComboboxField.js";
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
57
|
+
import { ChipEditor } from "./internal/blocks/ChipEditor.js";
|
|
58
|
+
import { AutoSaveTextarea } from "./AutoSaveTextarea-C5iIr2Ts.js";
|
|
59
|
+
import { ColorModeSwitch } from "./ColorModeSwitch-D7EuWyJz.js";
|
|
60
|
+
import { DateInput } from "./DateInput-DyEErfJf.js";
|
|
59
61
|
import { PasswordInput } from "./internal/blocks/PasswordInput.js";
|
|
60
62
|
import { TimeInput } from "./internal/blocks/TimeInput.js";
|
|
61
|
-
import { DateRangeInput } from "./DateRangeInput-
|
|
62
|
-
import { OtpInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "./OtpInput-
|
|
63
|
-
import { SearchInput } from "./SearchInput-
|
|
63
|
+
import { DateRangeInput } from "./DateRangeInput-Dg7-VUd9.js";
|
|
64
|
+
import { OtpInput, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS } from "./OtpInput-I8B8Vjdl.js";
|
|
65
|
+
import { SearchInput } from "./SearchInput-CEfQDNl3.js";
|
|
64
66
|
import { SearchInputWithNavigation } from "./internal/blocks/SearchInputWithNavigation.js";
|
|
65
|
-
import { FileUpload, useFileDropTarget, useFileUploadRejections } from "./FileUpload-
|
|
66
|
-
import { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage } from "./AIKit-
|
|
67
|
-
import { Table, tableAriaSort } from "./Table-
|
|
67
|
+
import { FileUpload, useFileDropTarget, useFileUploadRejections } from "./FileUpload-C83tXuE2.js";
|
|
68
|
+
import { AnswerActions, AnswerSummary, ChatInlineIcon, CollapsibleStepHeader, DIAGRAM_LANGUAGES, FileDownloadChip, InlineStepDetail, InlineStepGroup, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PROMPT_INPUT_CONTAINER, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageBar, UsageStats, UsageStatsRing, clampPercentage, findMentionToken, findSlashToken, formatPercentage, getChatInlineIconName } from "./AIKit-BD4r7ff-.js";
|
|
69
|
+
import { Table, tableAriaSort } from "./Table-BaVT5Tkn.js";
|
|
68
70
|
import { Skeleton } from "./internal/components/Skeleton/Skeleton.js";
|
|
69
71
|
import { DiagramSkeleton } from "./internal/blocks/DiagramShared/DiagramSkeleton.js";
|
|
70
72
|
import { Progress } from "./internal/components/Progress.js";
|
|
71
73
|
import { Collapsible } from "./Collapsible-BQXWEOBC.js";
|
|
72
|
-
import { Alert } from "./Alert-
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
74
|
+
import { Alert } from "./Alert-UI-CIs-1.js";
|
|
75
|
+
import { StatusDot, statusDotVariants } from "./internal/components/StatusDot.js";
|
|
76
|
+
import { toast } from "./toast-CyXEdaCZ.js";
|
|
77
|
+
import { Toaster, useNotification } from "./Toast-PfQf3vj-.js";
|
|
75
78
|
import { EmptySearchContent } from "./internal/components/EmptySearchContent.js";
|
|
76
|
-
import { Card } from "./Card-
|
|
79
|
+
import { Card } from "./Card-Cr9MBNHu.js";
|
|
77
80
|
import { EmptyConfigurationActionCard } from "./internal/blocks/EmptyConfigurationActionCard.js";
|
|
78
81
|
import { EmptyState } from "./internal/blocks/EmptyState.js";
|
|
79
82
|
import { ErrorState } from "./internal/blocks/ErrorState.js";
|
|
@@ -81,27 +84,27 @@ import { SkeletonList } from "./internal/components/Skeleton/SkeletonList.js";
|
|
|
81
84
|
import { DotsLoader } from "./internal/components/DotsLoader.js";
|
|
82
85
|
import { CollapsiblePanel } from "./internal/components/CollapsiblePanel.js";
|
|
83
86
|
import { PanelWithDetails } from "./internal/components/PanelWithDetails.js";
|
|
84
|
-
import { ThemeProvider, ThemeScope, brandSchema, exampleCustomer, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "./ThemeProvider-
|
|
85
|
-
import { AppShell, appShellSlotSelector } from "./AppShell-
|
|
86
|
-
import { BrandLogo } from "./BrandLogo-
|
|
87
|
+
import { ThemeProvider, ThemeScope, agnes, brandSchema, exampleCustomer, harbor, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, useThemeScopeContainer } from "./ThemeProvider-DXsxFg1U.js";
|
|
88
|
+
import { AppShell, appShellSlotSelector } from "./AppShell-WSQabK8r.js";
|
|
89
|
+
import { BrandLogo } from "./BrandLogo-CKpVSZb6.js";
|
|
87
90
|
import { AuthLayout } from "./internal/blocks/AuthLayout.js";
|
|
88
|
-
import { PageLayout } from "./PageLayout-
|
|
89
|
-
import { PageHeader } from "./PageHeader-
|
|
90
|
-
import { PageToolbar } from "./PageToolbar-
|
|
91
|
-
import { SectionNav } from "./SectionNav-
|
|
91
|
+
import { PageLayout } from "./PageLayout-DiAAILuS.js";
|
|
92
|
+
import { PageHeader } from "./PageHeader-CgfyXpf1.js";
|
|
93
|
+
import { PageToolbar } from "./PageToolbar-DOAtAnfL.js";
|
|
94
|
+
import { SectionNav } from "./SectionNav-B_qf0AXi.js";
|
|
92
95
|
import { ResizableHandle, ResizablePanel, ResizablePanelGroup, useDefaultLayout } from "./Resizable-D3vYToZH.js";
|
|
93
|
-
import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "./Sidebar-
|
|
96
|
+
import { Sidebar, SidebarProvider, useOptionalSidebar, useSidebar } from "./Sidebar-Ds0E6PbR.js";
|
|
94
97
|
import { useScrollbarPosition } from "./internal/hooks/useScrollbarPosition.js";
|
|
95
|
-
import { Navbar } from "./Navbar-
|
|
96
|
-
import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "./Workbench-
|
|
97
|
-
import { Breadcrumb } from "./Breadcrumb-
|
|
98
|
-
import { Tabs, TabsContent } from "./Tabs-
|
|
99
|
-
import { Stepper } from "./Stepper-
|
|
100
|
-
import { Timeline } from "./Timeline-
|
|
98
|
+
import { Navbar } from "./Navbar-B_DNpv5s.js";
|
|
99
|
+
import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "./Workbench-DmZzpkj7.js";
|
|
100
|
+
import { Breadcrumb } from "./Breadcrumb-p9HtMLCc.js";
|
|
101
|
+
import { Tabs, TabsContent } from "./Tabs-Dt9oLYHC.js";
|
|
102
|
+
import { Stepper } from "./Stepper-BLkLhfnd.js";
|
|
103
|
+
import { Timeline } from "./Timeline-B-I6sb0M.js";
|
|
101
104
|
import { Avatar } from "./internal/components/Avatar.js";
|
|
102
|
-
import { MarkedText } from "./MarkedText-
|
|
103
|
-
import { Kbd, kbdVariants, keys } from "./Kbd-
|
|
104
|
-
import { Pagination } from "./Pagination-
|
|
105
|
+
import { MarkedText } from "./MarkedText-DlmlJO0u.js";
|
|
106
|
+
import { Kbd, kbdVariants, keys } from "./Kbd-J4n1J6i4.js";
|
|
107
|
+
import { Pagination } from "./Pagination-LaSg-5cl.js";
|
|
105
108
|
import { DiffType, DiffView, computeDiffRows, computeLineInformation } from "./DiffView-ppTIzh2h.js";
|
|
106
109
|
import { PaneHeader } from "./internal/components/MergeEditor/PaneHeader.js";
|
|
107
110
|
import { ConflictStatusIndicator } from "./internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js";
|
|
@@ -109,9 +112,9 @@ import { useMergeDiff } from "./useMergeDiff-CvowEXJ1.js";
|
|
|
109
112
|
import { DashboardHero } from "./internal/blocks/DashboardHero.js";
|
|
110
113
|
import { StatCard, StatCardGrid } from "./internal/blocks/StatCard.js";
|
|
111
114
|
import { ChartPanel } from "./internal/blocks/ChartPanel.js";
|
|
112
|
-
import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "./Form-
|
|
115
|
+
import { setServerFieldErrors, setSubmitError, useAppForm, withForm } from "./Form-95rVLfX8.js";
|
|
113
116
|
import { useAutosizeInput } from "./internal/hooks/useAutosizeInput.js";
|
|
114
|
-
import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "./ZoomableSvg-
|
|
115
|
-
import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "./BrandEditor-
|
|
117
|
+
import { ZoomableSvg, svgToPngBlob, toSvgFileContent } from "./ZoomableSvg-BzXVfgnI.js";
|
|
118
|
+
import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "./BrandEditor-BU23Vl8V.js";
|
|
116
119
|
import { Slot } from "@radix-ui/react-slot";
|
|
117
|
-
export { Alert, AlertModal, AnswerActions, AnswerSummary, AppShell, ArgoDesignContext, AuthLayout, AutoSaveTextarea, Avatar, Badge, BrandEditor, BrandLogo, Breadcrumb, Button, ButtonGroup, ButtonInline, Calendar, Card, ChartPanel, Checkbox, Clipboard, ClipboardButton, ClipboardInline, Collapsible, CollapsiblePanel, CollapsibleStepHeader, ColorInput, ColorModeSwitch, Combobox, Command, CommandGroup, CommandInput, CommandItem, CommandList, ConflictStatusIndicator, CopyField, DEFAULT_COLOR_SCHEME, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, DIAGRAM_LANGUAGES, DashboardHero, DateInput, DatePicker, DateRangeInput, DateRangePicker, DiagramSkeleton, DiffType, DiffView, DotsLoader, DropdownMenu, EmptyConfigurationActionCard, EmptySearchContent, EmptyState, ErrorState, ExportMenu, FileUpload, FormGroup, FullScreenModal, FullScreenModalBody, FullScreenModalHeader, GoogleButton, HelpBlock, HoverCard, InlineStepDetail, InlineStepLabel, InputGroup, Kbd, Label, Link, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Markdown, MarkdownTable, MarkedText, MessageBubble, MicrosoftButton, Modal, MultiActionButtonGroup, MultiCombobox, MultiComboboxField, Navbar, NumberInput, OtpInput, PageHeader, PageLayout, PageToolbar, Pagination, PaneHeader, PanelWithDetails, PasswordInput, PlanApproval, PlanRewritingIndicator, Popconfirm, Popover, Progress, PromptInput, Question, QuestionBlock, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Search, SearchForm, SearchInput, SearchInputWithNavigation, SectionNav, Select, Separator, Sheet, Sidebar, SidebarProvider, Skeleton, SkeletonList, Slider, Slot, SplitButton, SpotlightBackdrop, StatCard, StatCardGrid, Stepper, SuggestedPrompt, Switch, Table, Tabs, TabsContent, TextInput, Textarea, ThemeProvider, ThemeScope, ThinkingIndicator, TimeInput, TimePicker, Timeline, Toaster, Toggle, ToggleGroup, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, Tooltip, TooltipProvider, Truncated, UsageStats, UsageStatsRing, Workbench, ZoomableSvg, appShellSlotSelector, argoVariants, brandSchema, channelsToHex, clampPercentage, cn, computeDiffRows, computeLineInformation, contrastRatio, copyToClipboard, defaultFilter, exampleCustomer, filterByWords, findLiteralMatches, formatPercentage, hasLiteralMatch, hexToChannels, isMac, kbdVariants, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, keys, matchByWords, mergeRefs, namedLabel, setServerFieldErrors, setSubmitError, svgToPngBlob, tableAriaSort, toSvgFileContent, toast, useAppForm, useArgoDesign, useAutosizeInput, useCommandState, useDefaultLayout, useFileDropTarget, useFileUploadRejections, useMergeDiff, useNotification, useOptionalSidebar, useScrollbarPosition, useSidebar, useStableCallback, useTargetRect, useTheme, useThemeScopeContainer, useWorkbench, wcagLevel, withBlankValues, withForm };
|
|
120
|
+
export { Alert, AlertModal, AnswerActions, AnswerSummary, AppShell, ArgoDesignContext, AuthLayout, AutoSaveTextarea, Avatar, BLANK_VALUES, Badge, BrandEditor, BrandLogo, Breadcrumb, Button, ButtonGroup, ButtonInline, Calendar, Card, ChartPanel, ChatInlineIcon, Checkbox, ChipEditor, Clipboard, ClipboardButton, ClipboardInline, Collapsible, CollapsiblePanel, CollapsibleStepHeader, ColorInput, ColorModeSwitch, Combobox, ComboboxField, Command, CommandGroup, CommandInput, CommandItem, CommandList, ConflictStatusIndicator, CopyField, DEFAULT_COLOR_SCHEME, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, DEFAULT_BRAND_ID as DEFAULT_KEBOOLA_BRAND_ID, DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, DIAGRAM_LANGUAGES, DashboardHero, DateInput, DatePicker, DateRangeInput, DateRangePicker, DiagramSkeleton, DiffType, DiffView, DotsLoader, DropdownMenu, EmptyConfigurationActionCard, EmptySearchContent, EmptyState, ErrorState, ExportMenu, FileDownloadChip, FileUpload, FormGroup, FullScreenModal, FullScreenModalBody, FullScreenModalHeader, GoogleButton, HINT_UNDERLINE_CLASS_NAME, HelpBlock, HoverCard, InlineStepDetail, InlineStepGroup, InlineStepLabel, InputGroup, Kbd, Label, Link, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Markdown, MarkdownTable, MarkedText, MessageBubble, MicrosoftButton, Modal, MultiActionButtonGroup, MultiCombobox, MultiComboboxField, Navbar, NumberInput, OtpInput, PROMPT_INPUT_CONTAINER, PageHeader, PageLayout, PageToolbar, Pagination, PaneHeader, PanelWithDetails, PasswordInput, PlanApproval, PlanRewritingIndicator, Popconfirm, Popover, Progress, PromptInput, Question, QuestionBlock, REGEXP_ONLY_CHARS, REGEXP_ONLY_DIGITS, REGEXP_ONLY_DIGITS_AND_CHARS, RadioGroup, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, Search, SearchForm, SearchInput, SearchInputWithNavigation, SectionNav, Select, Separator, Sheet, Sidebar, SidebarProvider, Skeleton, SkeletonList, Slider, Slot, SplitButton, SpotlightBackdrop, StatCard, StatCardGrid, StatusDot, Stepper, SuggestedPrompt, Switch, Table, Tabs, TabsContent, TextInput, Textarea, ThemeProvider, ThemeScope, ThinkingIndicator, TimeInput, TimePicker, Timeline, Toaster, Toggle, ToggleGroup, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, Tooltip, TooltipProvider, Truncated, UsageBar, UsageStats, UsageStatsRing, Workbench, ZoomableSvg, agnes, appShellSlotSelector, argoVariants, brandSchema, channelsToHex, clampPercentage, cn, computeDiffRows, computeLineInformation, contrastRatio, copyToClipboard, defaultFilter, exampleCustomer, filterByWords, findLiteralMatches, findMentionToken, findSlashToken, formatPercentage, getChatInlineIconName, harbor, hasLiteralMatch, hexToChannels, isMac, kbdVariants, keboola, keboolaLegacySidebar, keboolaLegacyTopnav, keys, matchByWords, mergeRefs, namedLabel, setServerFieldErrors, setSubmitError, statusDotVariants, svgToPngBlob, tableAriaSort, toSvgFileContent, toast, useAppForm, useArgoDesign, useAutosizeInput, useCommandState, useDefaultLayout, useFileDropTarget, useFileUploadRejections, useMergeDiff, useNotification, useOptionalSidebar, useScrollbarPosition, useSidebar, useStableCallback, useTargetRect, useTheme, useThemeScopeContainer, useWorkbench, wcagLevel, withBlankValues, withForm };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage } from "../../AIKit-
|
|
2
|
-
export { AnswerActions, AnswerSummary, CollapsibleStepHeader, DIAGRAM_LANGUAGES, InlineStepDetail, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageStats, UsageStatsRing, clampPercentage, formatPercentage };
|
|
1
|
+
import { AnswerActions, AnswerSummary, ChatInlineIcon, CollapsibleStepHeader, DIAGRAM_LANGUAGES, FileDownloadChip, InlineStepDetail, InlineStepGroup, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PROMPT_INPUT_CONTAINER, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageBar, UsageStats, UsageStatsRing, clampPercentage, findMentionToken, findSlashToken, formatPercentage, getChatInlineIconName } from "../../AIKit-BD4r7ff-.js";
|
|
2
|
+
export { AnswerActions, AnswerSummary, ChatInlineIcon, CollapsibleStepHeader, DIAGRAM_LANGUAGES, FileDownloadChip, InlineStepDetail, InlineStepGroup, InlineStepLabel, Markdown, MarkdownTable, MessageBubble, PROMPT_INPUT_CONTAINER, PlanApproval, PlanRewritingIndicator, PromptInput, Question, QuestionBlock, SuggestedPrompt, ThinkingIndicator, ToolCallApproval, ToolCallChip, ToolCallStatusHeader, UsageBar, UsageStats, UsageStatsRing, clampPercentage, findMentionToken, findSlashToken, formatPercentage, getChatInlineIconName };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AppShell, appShellSlotSelector } from "../../AppShell-
|
|
1
|
+
import { AppShell, appShellSlotSelector } from "../../AppShell-WSQabK8r.js";
|
|
2
2
|
export { AppShell, appShellSlotSelector };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { cn } from "../../classNames-BzrkDnOD.js";
|
|
2
|
-
import { BrandLogo } from "../../BrandLogo-
|
|
2
|
+
import { BrandLogo } from "../../BrandLogo-CKpVSZb6.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
//#region src/blocks/AuthLayout/AuthLayout.tsx
|
|
5
5
|
const widthClass = {
|
|
@@ -7,13 +7,9 @@ const widthClass = {
|
|
|
7
7
|
wide: "tw:max-w-[34rem]"
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Split-geometry column tracks.
|
|
11
11
|
*
|
|
12
|
-
* - The floor is
|
|
13
|
-
* - A bare `1fr` makes the track a share of the viewport instead — `1fr` of `1fr 2fr` is a third of
|
|
14
|
-
* it — so the floor binds up to 1536px for `form` and 1824px for `wide`. Below that a bare `1fr`
|
|
15
|
-
* hands the column less than `widthClass` asks for and a two-field row collapses to ~180px each.
|
|
16
|
-
* - `2fr` keeps the aside the wider half once the floor is met.
|
|
12
|
+
* - The form floor is `widthClass` plus `SURFACE`'s gutters; a bare `1fr` would squeeze the form.
|
|
17
13
|
*/
|
|
18
14
|
const splitClass = {
|
|
19
15
|
form: {
|
|
@@ -85,31 +81,15 @@ const Footer = ({ ref, className, children, ...props }) => /* @__PURE__ */ jsx("
|
|
|
85
81
|
children
|
|
86
82
|
});
|
|
87
83
|
/**
|
|
88
|
-
* The signed-out page frame — sign-in, sign-up, password reset, MFA, project
|
|
84
|
+
* The signed-out page frame — sign-in, sign-up, password reset, MFA, project and stack pickers.
|
|
89
85
|
*
|
|
90
|
-
* -
|
|
91
|
-
*
|
|
92
|
-
* -
|
|
93
|
-
* element on the page sits inside one — the thing each hand-built copy got wrong differently.
|
|
94
|
-
* - Owns the lockup. `Header` pairs the active brand's mark with the `productName` it is given, so
|
|
95
|
-
* the page re-skins and still names the product when the brand ships no logo; pass children
|
|
96
|
-
* instead to replace the pair with an app-specific lockup.
|
|
97
|
-
* - Does **not** own the card. Two of the pages it frames deliberately have none (the form column
|
|
98
|
-
* *is* the surface), so `Content` is a plain column — wrap the body in `Card` at the call site.
|
|
99
|
-
* - The tinted surface is whatever is not the form: without an `aside` the page is `bg-muted` and the
|
|
100
|
-
* card supplies the contrast; with one the form column is `bg-background` and the panel `bg-muted`.
|
|
101
|
-
* - Below `lg` the split collapses to one column and the `aside` is dropped. A page whose pitch has
|
|
102
|
-
* to survive that — an acquisition funnel — passes `asideCollapse="stack"` to keep it.
|
|
103
|
-
*
|
|
104
|
-
* **When NOT to use:** a signed-out page that is *navigational* rather than an auth step — a public
|
|
105
|
-
* catalog, a shared authorization link — is a document, not a form. Use `AppShell` + `PageLayout`.
|
|
86
|
+
* - Owns the `header` / `main` / `footer` landmarks and the brand lockup.
|
|
87
|
+
* - No card: wrap the body in `Card` at the call site.
|
|
88
|
+
* - Not for navigational signed-out pages (public catalog) — use `AppShell` + `PageLayout`.
|
|
106
89
|
*/
|
|
107
90
|
const AuthLayout = Object.assign(Root, {
|
|
108
|
-
/** Lockup row: `productName` beside the brand's mark, or your own children. `actions` sit opposite. */
|
|
109
91
|
Header,
|
|
110
|
-
/** The form column. Wrap the body in `Card` here if the page wants one. */
|
|
111
92
|
Content,
|
|
112
|
-
/** Legal copy, a way back out, social proof. Pinned to the bottom of the column in the split geometry. */
|
|
113
93
|
Footer
|
|
114
94
|
});
|
|
115
95
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthLayout.js","names":[],"sources":["../../../src/blocks/AuthLayout/AuthLayout.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { BrandLogo } from '../../components/BrandLogo';\nimport { cn } from '../../utils';\n\n/**\n * Content-column width.\n *\n * - `form` (28rem) — one field per row: sign-in, MFA, password reset, project picker.\n * - `wide` (34rem) — multi-field or two-column forms: registration.\n */\ntype Width = 'form' | 'wide';\n\nconst widthClass = {\n form: 'tw:max-w-md',\n wide: 'tw:max-w-[34rem]',\n} as const satisfies Record<Width, string>;\n\n/**\n * Column tracks of the split geometry: the form track carries a floor, the aside takes the rest.\n *\n * - The floor is the column's own width plus `SURFACE`'s gutters (`2rem` a side from `sm` up).\n * - A bare `1fr` makes the track a share of the viewport instead — `1fr` of `1fr 2fr` is a third of\n * it — so the floor binds up to 1536px for `form` and 1824px for `wide`. Below that a bare `1fr`\n * hands the column less than `widthClass` asks for and a two-field row collapses to ~180px each.\n * - `2fr` keeps the aside the wider half once the floor is met.\n */\nconst splitClass = {\n form: {\n end: 'tw:lg:grid-cols-[minmax(32rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(32rem,1fr)]',\n },\n wide: {\n end: 'tw:lg:grid-cols-[minmax(38rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(38rem,1fr)]',\n },\n} as const satisfies Record<Width, Record<'start' | 'end', string>>;\n\n// `svh` rather than `vh`: the page is one screen tall by design, and `vh` on mobile reserves height\n// for browser chrome that is not there, leaving the column scrollable by the height of the toolbar.\nconst SCREEN = 'tw:min-h-svh';\n\n// Padding and horizontal centring of the form column — the screen height is deliberately not here.\n// In the split geometry the grid root carries it and its rows stretch to fill, so the column is\n// full-height anyway; its own `min-h-svh` would instead reserve a whole screen *under* a stacked\n// aside, leaving a short card with an empty viewport below it.\nconst SURFACE = 'tw:flex tw:justify-center tw:px-4 tw:py-12 tw:sm:px-8';\n\nconst COLUMN = 'tw:flex tw:w-full tw:flex-col tw:items-center tw:gap-6';\n\ntype RootProps = ComponentProps<'div'> & {\n width?: Width;\n /** Marketing / illustration panel. Its presence switches the page to the split geometry. */\n aside?: ReactNode;\n /** Which side the `aside` takes on wide screens. */\n asideSide?: 'start' | 'end';\n /**\n * What the `aside` does below `lg`, where the split collapses to one column.\n *\n * - `hide` (default) — the panel is dropped. Right for a page a signed-out *user* asked for: they\n * came to sign in, and the pitch is not why they are here.\n * - `stack` — the panel keeps its `asideSide` order relative to the form and renders above or\n * below it. Right for a page that has to sell: an acquisition funnel loses its social proof\n * otherwise, on the devices most of it arrives on.\n */\n asideCollapse?: 'hide' | 'stack';\n};\n\nconst Root = ({\n ref,\n className,\n width = 'form',\n aside,\n asideSide = 'end',\n asideCollapse = 'hide',\n children,\n ...props\n}: RootProps) => {\n const column = <div className={cn(COLUMN, widthClass[width])}>{children}</div>;\n\n if (!aside) {\n return (\n <div\n ref={ref}\n className={cn(SURFACE, SCREEN, 'tw:items-center tw:bg-muted', className)}\n {...props}\n >\n {column}\n </div>\n );\n }\n\n // The form column is always the floored track and the aside the `2fr` one, whichever side it takes —\n // so DOM order, not an `order` utility, decides the side and the reading order matches the visual one.\n const panel = (\n <aside\n className={cn('tw:bg-muted', asideCollapse === 'stack' ? 'tw:flex' : 'tw:hidden tw:lg:flex')}\n >\n {aside}\n </aside>\n );\n const form = <div className={cn(SURFACE, 'tw:bg-background')}>{column}</div>;\n\n return (\n <div\n ref={ref}\n className={cn('tw:grid', SCREEN, splitClass[width][asideSide], className)}\n {...props}\n >\n {asideSide === 'start' ? panel : form}\n {asideSide === 'start' ? form : panel}\n </div>\n );\n};\n\n/**\n * The lockup: either the page's own, or the brand's mark beside the product name.\n *\n * - Exactly one of the two is required. A logo-only default cannot be trusted to name the product:\n * `BrandLogo` returns `null` for a brand that ships no logo, and falls back to the mark for one\n * that ships no wordmark — an auth page has no bar around it, so what is left names nothing.\n * - `productName` is text, not part of the image, for the same reason.\n */\ntype Lockup =\n | { children: ReactNode; productName?: never }\n | { children?: never; productName: ReactNode };\n\ntype HeaderProps = Omit<ComponentProps<'header'>, 'children'> & {\n actions?: ReactNode;\n} & Lockup;\n\nconst Header = ({ ref, className, actions, productName, children, ...props }: HeaderProps) => (\n <header\n ref={ref}\n className={cn(\n 'tw:flex tw:items-center tw:gap-4',\n // Controls need somewhere to sit apart from the mark; without them the mark centres instead.\n actions && 'tw:w-full tw:justify-between',\n className,\n )}\n {...props}\n >\n {children ?? (\n <span className=\"tw:flex tw:items-center tw:gap-3\">\n {/* `variant=\"mark\"`: a wordmark already spells the brand, so pairing it with the product\n name states the brand twice. `h-8`, not the bar's `h-6` — with no chrome around it the\n lockup is the only thing naming the product. */}\n <BrandLogo variant=\"mark\" className=\"tw:h-8 tw:text-primary\" />\n <span className=\"tw:text-lg tw:font-semibold\">{productName}</span>\n </span>\n )}\n {actions && <div className=\"tw:flex tw:items-center tw:gap-1\">{actions}</div>}\n </header>\n);\n\nconst Content = ({ ref, className, children, ...props }: ComponentProps<'main'>) => (\n <main\n ref={ref}\n className={cn('tw:flex tw:min-h-0 tw:w-full tw:flex-1 tw:flex-col tw:gap-6', className)}\n {...props}\n >\n {children}\n </main>\n);\n\nconst Footer = ({ ref, className, children, ...props }: ComponentProps<'footer'>) => (\n <footer\n ref={ref}\n className={cn('tw:mt-auto tw:w-full tw:text-xs tw:text-muted-foreground', className)}\n {...props}\n >\n {children}\n </footer>\n);\n\n/**\n * The signed-out page frame — sign-in, sign-up, password reset, MFA, project picker, stack picker.\n *\n * - Third member of the page-chrome family: `AppShell` frames the signed-in app, `PageLayout` its\n * content column, `AuthLayout` the pages a visitor reaches without a session.\n * - Owns the landmarks. `Header` / `Content` / `Footer` are `header` / `main` / `footer`, so every\n * element on the page sits inside one — the thing each hand-built copy got wrong differently.\n * - Owns the lockup. `Header` pairs the active brand's mark with the `productName` it is given, so\n * the page re-skins and still names the product when the brand ships no logo; pass children\n * instead to replace the pair with an app-specific lockup.\n * - Does **not** own the card. Two of the pages it frames deliberately have none (the form column\n * *is* the surface), so `Content` is a plain column — wrap the body in `Card` at the call site.\n * - The tinted surface is whatever is not the form: without an `aside` the page is `bg-muted` and the\n * card supplies the contrast; with one the form column is `bg-background` and the panel `bg-muted`.\n * - Below `lg` the split collapses to one column and the `aside` is dropped. A page whose pitch has\n * to survive that — an acquisition funnel — passes `asideCollapse=\"stack\"` to keep it.\n *\n * **When NOT to use:** a signed-out page that is *navigational* rather than an auth step — a public\n * catalog, a shared authorization link — is a document, not a form. Use `AppShell` + `PageLayout`.\n */\nexport const AuthLayout = Object.assign(Root, {\n /** Lockup row: `productName` beside the brand's mark, or your own children. `actions` sit opposite. */\n Header,\n /** The form column. Wrap the body in `Card` here if the page wants one. */\n Content,\n /** Legal copy, a way back out, social proof. Pinned to the bottom of the column in the split geometry. */\n Footer,\n});\n\nexport type { RootProps as AuthLayoutProps };\n"],"mappings":";;;;AAaA,MAAM,aAAa;CACjB,MAAM;CACN,MAAM;AACR;;;;;;;;;;AAWA,MAAM,aAAa;CACjB,MAAM;EACJ,KAAK;EACL,OAAO;CACT;CACA,MAAM;EACJ,KAAK;EACL,OAAO;CACT;AACF;AAIA,MAAM,SAAS;AAMf,MAAM,UAAU;AAEhB,MAAM,SAAS;AAoBf,MAAM,QAAQ,EACZ,KACA,WACA,QAAQ,QACR,OACA,YAAY,OACZ,gBAAgB,QAChB,UACA,GAAG,YACY;CACf,MAAM,SAAS,oBAAC,OAAD;EAAK,WAAW,GAAG,QAAQ,WAAW,MAAM;EAAI;CAAc,CAAA;CAE7E,IAAI,CAAC,OACH,OACE,oBAAC,OAAD;EACO;EACL,WAAW,GAAG,SAAS,QAAQ,+BAA+B,SAAS;EACvE,GAAI;EAEH,UAAA;CACE,CAAA;CAMT,MAAM,QACJ,oBAAC,SAAD;EACE,WAAW,GAAG,eAAe,kBAAkB,UAAU,YAAY,sBAAsB;EAE1F,UAAA;CACI,CAAA;CAET,MAAM,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,SAAS,kBAAkB;EAAI,UAAA;CAAY,CAAA;CAE3E,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GAAG,WAAW,QAAQ,WAAW,MAAM,CAAC,YAAY,SAAS;EACxE,GAAI;EAHN,UAAA,CAKG,cAAc,UAAU,QAAQ,MAChC,cAAc,UAAU,OAAO,KAC7B;;AAET;AAkBA,MAAM,UAAU,EAAE,KAAK,WAAW,SAAS,aAAa,UAAU,GAAG,YACnE,qBAAC,UAAD;CACO;CACL,WAAW,GACT,oCAEA,WAAW,gCACX,SACF;CACA,GAAI;CARN,UAAA,CAUG,YACC,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CAIE,oBAAC,WAAD;GAAW,SAAQ;GAAO,WAAU;EAA0B,CAAA,GAC9D,oBAAC,QAAD;GAAM,WAAU;GAA+B,UAAA;EAAkB,CAAA,CAC7D;CAEP,CAAA,GAAA,WAAW,oBAAC,OAAD;EAAK,WAAU;EAAoC,UAAA;CAAa,CAAA,CACtE;;AAGV,MAAM,WAAW,EAAE,KAAK,WAAW,UAAU,GAAG,YAC9C,oBAAC,QAAD;CACO;CACL,WAAW,GAAG,+DAA+D,SAAS;CACtF,GAAI;CAEH;AACG,CAAA;AAGR,MAAM,UAAU,EAAE,KAAK,WAAW,UAAU,GAAG,YAC7C,oBAAC,UAAD;CACO;CACL,WAAW,GAAG,4DAA4D,SAAS;CACnF,GAAI;CAEH;AACK,CAAA;;;;;;;;;;;;;;;;;;;;;AAuBV,MAAa,aAAa,OAAO,OAAO,MAAM;;CAE5C;;CAEA;;CAEA;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"AuthLayout.js","names":[],"sources":["../../../src/blocks/AuthLayout/AuthLayout.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { BrandLogo } from '../../components/BrandLogo';\nimport { cn } from '../../utils';\n\n/**\n * Content-column width.\n *\n * - `form` (28rem) — one field per row: sign-in, MFA, password reset, project picker.\n * - `wide` (34rem) — multi-field or two-column forms: registration.\n */\ntype Width = 'form' | 'wide';\n\nconst widthClass = {\n form: 'tw:max-w-md',\n wide: 'tw:max-w-[34rem]',\n} as const satisfies Record<Width, string>;\n\n/**\n * Split-geometry column tracks.\n *\n * - The form floor is `widthClass` plus `SURFACE`'s gutters; a bare `1fr` would squeeze the form.\n */\nconst splitClass = {\n form: {\n end: 'tw:lg:grid-cols-[minmax(32rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(32rem,1fr)]',\n },\n wide: {\n end: 'tw:lg:grid-cols-[minmax(38rem,1fr)_2fr]',\n start: 'tw:lg:grid-cols-[2fr_minmax(38rem,1fr)]',\n },\n} as const satisfies Record<Width, Record<'start' | 'end', string>>;\n\n// `svh`, not `vh`: `vh` on mobile makes the page scrollable by the toolbar's height.\nconst SCREEN = 'tw:min-h-svh';\n\n// No `SCREEN` here: in the split geometry the grid root carries it, and a column `min-h-svh`\n// would leave an empty screen under a stacked aside.\nconst SURFACE = 'tw:flex tw:justify-center tw:px-4 tw:py-12 tw:sm:px-8';\n\nconst COLUMN = 'tw:flex tw:w-full tw:flex-col tw:items-center tw:gap-6';\n\ntype RootProps = ComponentProps<'div'> & {\n width?: Width;\n /** Marketing / illustration panel. Its presence switches the page to the split geometry. */\n aside?: ReactNode;\n /** Which side the `aside` takes on wide screens. */\n asideSide?: 'start' | 'end';\n /** The `aside` below `lg`: `hide` it (sign-in) or `stack` it by the form (acquisition funnels). */\n asideCollapse?: 'hide' | 'stack';\n};\n\nconst Root = ({\n ref,\n className,\n width = 'form',\n aside,\n asideSide = 'end',\n asideCollapse = 'hide',\n children,\n ...props\n}: RootProps) => {\n const column = <div className={cn(COLUMN, widthClass[width])}>{children}</div>;\n\n if (!aside) {\n return (\n <div\n ref={ref}\n className={cn(SURFACE, SCREEN, 'tw:items-center tw:bg-muted', className)}\n {...props}\n >\n {column}\n </div>\n );\n }\n\n // DOM order, not an `order` utility, picks the side, so reading order matches the visual one.\n const panel = (\n <aside\n className={cn('tw:bg-muted', asideCollapse === 'stack' ? 'tw:flex' : 'tw:hidden tw:lg:flex')}\n >\n {aside}\n </aside>\n );\n const form = <div className={cn(SURFACE, 'tw:bg-background')}>{column}</div>;\n\n return (\n <div\n ref={ref}\n className={cn('tw:grid', SCREEN, splitClass[width][asideSide], className)}\n {...props}\n >\n {asideSide === 'start' ? panel : form}\n {asideSide === 'start' ? form : panel}\n </div>\n );\n};\n\n/**\n * The lockup: either the page's own, or the brand's mark beside the product name.\n *\n * - Exactly one is required: `BrandLogo` alone may render nothing or a bare mark.\n */\ntype Lockup =\n | { children: ReactNode; productName?: never }\n | { children?: never; productName: ReactNode };\n\ntype HeaderProps = Omit<ComponentProps<'header'>, 'children'> & {\n actions?: ReactNode;\n} & Lockup;\n\nconst Header = ({ ref, className, actions, productName, children, ...props }: HeaderProps) => (\n <header\n ref={ref}\n className={cn(\n 'tw:flex tw:items-center tw:gap-4',\n actions && 'tw:w-full tw:justify-between',\n className,\n )}\n {...props}\n >\n {children ?? (\n <span className=\"tw:flex tw:items-center tw:gap-3\">\n {/* `mark`: a wordmark beside the product name would state the brand twice. */}\n <BrandLogo variant=\"mark\" className=\"tw:h-8 tw:text-primary\" />\n <span className=\"tw:text-lg tw:font-semibold\">{productName}</span>\n </span>\n )}\n {actions && <div className=\"tw:flex tw:items-center tw:gap-1\">{actions}</div>}\n </header>\n);\n\nconst Content = ({ ref, className, children, ...props }: ComponentProps<'main'>) => (\n <main\n ref={ref}\n className={cn('tw:flex tw:min-h-0 tw:w-full tw:flex-1 tw:flex-col tw:gap-6', className)}\n {...props}\n >\n {children}\n </main>\n);\n\nconst Footer = ({ ref, className, children, ...props }: ComponentProps<'footer'>) => (\n <footer\n ref={ref}\n className={cn('tw:mt-auto tw:w-full tw:text-xs tw:text-muted-foreground', className)}\n {...props}\n >\n {children}\n </footer>\n);\n\n/**\n * The signed-out page frame — sign-in, sign-up, password reset, MFA, project and stack pickers.\n *\n * - Owns the `header` / `main` / `footer` landmarks and the brand lockup.\n * - No card: wrap the body in `Card` at the call site.\n * - Not for navigational signed-out pages (public catalog) — use `AppShell` + `PageLayout`.\n */\nexport const AuthLayout = Object.assign(Root, {\n Header,\n Content,\n Footer,\n});\n\nexport type { RootProps as AuthLayoutProps };\n"],"mappings":";;;;AAaA,MAAM,aAAa;CACjB,MAAM;CACN,MAAM;AACR;;;;;;AAOA,MAAM,aAAa;CACjB,MAAM;EACJ,KAAK;EACL,OAAO;CACT;CACA,MAAM;EACJ,KAAK;EACL,OAAO;CACT;AACF;AAGA,MAAM,SAAS;AAIf,MAAM,UAAU;AAEhB,MAAM,SAAS;AAYf,MAAM,QAAQ,EACZ,KACA,WACA,QAAQ,QACR,OACA,YAAY,OACZ,gBAAgB,QAChB,UACA,GAAG,YACY;CACf,MAAM,SAAS,oBAAC,OAAD;EAAK,WAAW,GAAG,QAAQ,WAAW,MAAM;EAAI;CAAc,CAAA;CAE7E,IAAI,CAAC,OACH,OACE,oBAAC,OAAD;EACO;EACL,WAAW,GAAG,SAAS,QAAQ,+BAA+B,SAAS;EACvE,GAAI;EAEH,UAAA;CACE,CAAA;CAKT,MAAM,QACJ,oBAAC,SAAD;EACE,WAAW,GAAG,eAAe,kBAAkB,UAAU,YAAY,sBAAsB;EAE1F,UAAA;CACI,CAAA;CAET,MAAM,OAAO,oBAAC,OAAD;EAAK,WAAW,GAAG,SAAS,kBAAkB;EAAI,UAAA;CAAY,CAAA;CAE3E,OACE,qBAAC,OAAD;EACO;EACL,WAAW,GAAG,WAAW,QAAQ,WAAW,MAAM,CAAC,YAAY,SAAS;EACxE,GAAI;EAHN,UAAA,CAKG,cAAc,UAAU,QAAQ,MAChC,cAAc,UAAU,OAAO,KAC7B;;AAET;AAeA,MAAM,UAAU,EAAE,KAAK,WAAW,SAAS,aAAa,UAAU,GAAG,YACnE,qBAAC,UAAD;CACO;CACL,WAAW,GACT,oCACA,WAAW,gCACX,SACF;CACA,GAAI;CAPN,UAAA,CASG,YACC,qBAAC,QAAD;EAAM,WAAU;EAAhB,UAAA,CAEE,oBAAC,WAAD;GAAW,SAAQ;GAAO,WAAU;EAA0B,CAAA,GAC9D,oBAAC,QAAD;GAAM,WAAU;GAA+B,UAAA;EAAkB,CAAA,CAC7D;CAEP,CAAA,GAAA,WAAW,oBAAC,OAAD;EAAK,WAAU;EAAoC,UAAA;CAAa,CAAA,CACtE;;AAGV,MAAM,WAAW,EAAE,KAAK,WAAW,UAAU,GAAG,YAC9C,oBAAC,QAAD;CACO;CACL,WAAW,GAAG,+DAA+D,SAAS;CACtF,GAAI;CAEH;AACG,CAAA;AAGR,MAAM,UAAU,EAAE,KAAK,WAAW,UAAU,GAAG,YAC7C,oBAAC,UAAD;CACO;CACL,WAAW,GAAG,4DAA4D,SAAS;CACnF,GAAI;CAEH;AACK,CAAA;;;;;;;;AAUV,MAAa,aAAa,OAAO,OAAO,MAAM;CAC5C;CACA;CACA;AACF,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { AutoSaveTextarea } from "../../AutoSaveTextarea-
|
|
1
|
+
import { AutoSaveTextarea } from "../../AutoSaveTextarea-C5iIr2Ts.js";
|
|
2
2
|
export { AutoSaveTextarea };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "../../BrandEditor-
|
|
1
|
+
import { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel } from "../../BrandEditor-BU23Vl8V.js";
|
|
2
2
|
export { BrandEditor, DEFAULT_FALLBACK_FONT, DEFAULT_FONT_OPTIONS, channelsToHex, contrastRatio, hexToChannels, wcagLevel };
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { cn } from "../../classNames-BzrkDnOD.js";
|
|
2
|
-
import { Card } from "../../Card-
|
|
2
|
+
import { Card } from "../../Card-Cr9MBNHu.js";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
//#region src/blocks/ChartPanel/ChartPanel.tsx
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* a chart body, and an optional footer. Pass a `@keboola/design/charts` chart (`LineChart`,
|
|
8
|
-
* `BarChart`, `AreaChart`, `PieChart`) as children; the panel owns the chrome, the chart owns
|
|
9
|
-
* its own responsive container and themed palette.
|
|
6
|
+
* `Card` chrome around a `@keboola/design/charts` chart passed as children.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* component directly. Charts follow the active brand's chart palette — never hardcode colours.
|
|
8
|
+
* - The chart owns its responsive container and brand palette — never hardcode colours.
|
|
9
|
+
* - For a KPI number use `StatCard`; for an unframed chart use the chart directly.
|
|
14
10
|
*/
|
|
15
11
|
const ChartPanel = ({ title, description, titleAs = "h3", toolbar, footer, className, bordered = true, children, ...rest }) => /* @__PURE__ */ jsxs(Card, {
|
|
16
12
|
bordered,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPanel.js","names":[],"sources":["../../../src/blocks/ChartPanel/ChartPanel.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\ntype RootProps = Omit<ComponentProps<typeof Card>, 'title'> & {\n
|
|
1
|
+
{"version":3,"file":"ChartPanel.js","names":[],"sources":["../../../src/blocks/ChartPanel/ChartPanel.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { Card } from '../../components/Card';\nimport { cn } from '../../utils';\n\ntype RootProps = Omit<ComponentProps<typeof Card>, 'title'> & {\n title: ReactNode;\n description?: ReactNode;\n /** Defaults to `h3`; set it to fit the page's heading outline. */\n titleAs?: ComponentProps<typeof Card.Title>['as'];\n /** Right-aligned header slot. */\n toolbar?: ReactNode;\n footer?: ReactNode;\n};\n\n/**\n * `Card` chrome around a `@keboola/design/charts` chart passed as children.\n *\n * - The chart owns its responsive container and brand palette — never hardcode colours.\n * - For a KPI number use `StatCard`; for an unframed chart use the chart directly.\n */\nexport const ChartPanel = ({\n title,\n description,\n titleAs = 'h3',\n toolbar,\n footer,\n className,\n bordered = true,\n children,\n ...rest\n}: RootProps) => (\n <Card bordered={bordered} className={cn('tw:gap-4', className)} {...rest}>\n <Card.Header className=\"tw:flex tw:items-start tw:justify-between tw:gap-4\">\n <div className=\"tw:flex tw:flex-col tw:gap-1\">\n <Card.Title as={titleAs}>{title}</Card.Title>\n {description ? (\n <p className=\"tw:m-0 tw:text-sm tw:text-muted-foreground\">{description}</p>\n ) : null}\n </div>\n {toolbar ? (\n <div className=\"tw:flex tw:shrink-0 tw:items-center tw:gap-2\">{toolbar}</div>\n ) : null}\n </Card.Header>\n <Card.Content>{children}</Card.Content>\n {footer ? (\n <div className=\"tw:border-0 tw:border-t tw:border-solid tw:border-border tw:pt-3 tw:text-sm tw:text-muted-foreground\">\n {footer}\n </div>\n ) : null}\n </Card>\n);\n\nexport type { RootProps as ChartPanelProps };\n"],"mappings":";;;;;;;;;;AAqBA,MAAa,cAAc,EACzB,OACA,aACA,UAAU,MACV,SACA,QACA,WACA,WAAW,MACX,UACA,GAAG,WAEH,qBAAC,MAAD;CAAgB;CAAU,WAAW,GAAG,YAAY,SAAS;CAAG,GAAI;CAApE,UAAA;EACE,qBAAC,KAAK,QAAN;GAAa,WAAU;GAAvB,UAAA,CACE,qBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACE,oBAAC,KAAK,OAAN;KAAY,IAAI;KAAU,UAAA;IAAkB,CAAA,GAC3C,cACC,oBAAC,KAAD;KAAG,WAAU;KAA8C,UAAA;IAAe,CAAA,IACxE,IACD;GACJ,CAAA,GAAA,UACC,oBAAC,OAAD;IAAK,WAAU;IAAgD,UAAA;GAAa,CAAA,IAC1E,IACO;;EACb,oBAAC,KAAK,SAAN,EAAe,SAAuB,CAAA;EACrC,SACC,oBAAC,OAAD;GAAK,WAAU;GACZ,UAAA;EACE,CAAA,IACH;CACA"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { splitEntry } from "../../utils-Bd28bWgm.js";
|
|
2
|
+
import { useArgoDesign } from "../../context-U293r3v-.js";
|
|
3
|
+
import { mergeRefs } from "../utils/mergeRefs.js";
|
|
4
|
+
import { X } from "../../icons-wcA70iQx.js";
|
|
5
|
+
import { InputGroup } from "../../InputGroup-B4QOPxHl.js";
|
|
6
|
+
import { useControllableState } from "../../useControllableState-CUYXMsfz.js";
|
|
7
|
+
import { Badge } from "../../Badge-DIjhwPvh.js";
|
|
8
|
+
import { useRef, useState } from "react";
|
|
9
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region src/blocks/ChipEditor/ChipEditor.tsx
|
|
11
|
+
const defaultRemoveLabel = (value) => `Remove ${value}`;
|
|
12
|
+
const sameValue = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
13
|
+
/**
|
|
14
|
+
* Free-text token editor — type a value, press Enter, it becomes a removable chip.
|
|
15
|
+
*
|
|
16
|
+
* - **Use** for strings the user writes rather than picks; the platform's one chip editor.
|
|
17
|
+
* - **Not** for values from a known list — use `MultiCombobox` (`allowCreate` if open-ended).
|
|
18
|
+
* - Wrap in a `FormGroup` for label and error state.
|
|
19
|
+
* - Values are compared case-insensitively.
|
|
20
|
+
*/
|
|
21
|
+
const ChipEditor = ({ ref: forwardedRef, value: valueProp, defaultValue, onValueChange, separator = ",", canAdd, chipColor, removeLabel = defaultRemoveLabel, testId, state = "default", sizing = "default", variant, focusVariant = "default", className, disabled = false, readOnly = false, onChange, onBlur, onKeyDown, ...inputProps }) => {
|
|
22
|
+
const renderArgo = useArgoDesign();
|
|
23
|
+
const inputRef = useRef(null);
|
|
24
|
+
const [query, setQuery] = useState("");
|
|
25
|
+
const [values, setValues] = useControllableState({
|
|
26
|
+
prop: valueProp,
|
|
27
|
+
defaultProp: defaultValue ?? [],
|
|
28
|
+
onChange: onValueChange
|
|
29
|
+
});
|
|
30
|
+
const isEditable = !disabled && !readOnly;
|
|
31
|
+
/**
|
|
32
|
+
* Turns typed text into chips; returns whether the text is spent.
|
|
33
|
+
*
|
|
34
|
+
* - A duplicate adds nothing but still spends the text.
|
|
35
|
+
* - Only a value `canAdd` rejects keeps the text, so the user can fix it.
|
|
36
|
+
*/
|
|
37
|
+
const commit = (entry) => {
|
|
38
|
+
const parts = splitEntry(entry, separator).map((part) => part.trim()).filter((part) => part !== "");
|
|
39
|
+
const accepted = parts.filter((part) => canAdd?.(part) ?? true);
|
|
40
|
+
const added = accepted.filter((part, index) => !values.some((held) => sameValue(held, part)) && accepted.findIndex((other) => sameValue(other, part)) === index);
|
|
41
|
+
if (added.length > 0) setValues([...values, ...added]);
|
|
42
|
+
return { isSpent: accepted.length === parts.length };
|
|
43
|
+
};
|
|
44
|
+
const commitAndClear = (entry) => {
|
|
45
|
+
if (commit(entry).isSpent) setQuery("");
|
|
46
|
+
};
|
|
47
|
+
const handleChange = (event) => {
|
|
48
|
+
onChange?.(event);
|
|
49
|
+
const next = event.target.value;
|
|
50
|
+
if (typeof separator === "string" && next.includes(separator)) {
|
|
51
|
+
const cut = next.lastIndexOf(separator);
|
|
52
|
+
commit(next.slice(0, cut));
|
|
53
|
+
setQuery(next.slice(cut + separator.length));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setQuery(next);
|
|
57
|
+
};
|
|
58
|
+
const handleKeyDown = (event) => {
|
|
59
|
+
onKeyDown?.(event);
|
|
60
|
+
if (event.defaultPrevented) return;
|
|
61
|
+
if (event.key === "Enter") {
|
|
62
|
+
event.preventDefault();
|
|
63
|
+
commitAndClear(query);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (event.key === "Backspace" && query === "" && values.length > 0) {
|
|
67
|
+
setValues(values.slice(0, -1));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (event.key === "Escape" && query !== "") {
|
|
71
|
+
event.preventDefault();
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
setQuery("");
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const handleBlur = (event) => {
|
|
77
|
+
onBlur?.(event);
|
|
78
|
+
commitAndClear(query);
|
|
79
|
+
};
|
|
80
|
+
const removeAt = (index) => {
|
|
81
|
+
setValues(values.filter((_, position) => position !== index));
|
|
82
|
+
inputRef.current?.focus();
|
|
83
|
+
};
|
|
84
|
+
return /* @__PURE__ */ jsxs(InputGroup, {
|
|
85
|
+
state,
|
|
86
|
+
variant,
|
|
87
|
+
sizing,
|
|
88
|
+
focusVariant,
|
|
89
|
+
className,
|
|
90
|
+
"data-testid": testId,
|
|
91
|
+
children: [/* @__PURE__ */ jsx(InputGroup.Addon, {
|
|
92
|
+
align: "block-start",
|
|
93
|
+
className: "tw:flex-wrap",
|
|
94
|
+
role: "list",
|
|
95
|
+
children: values.map((value, index) => /* @__PURE__ */ jsxs(Badge.Root, {
|
|
96
|
+
role: "listitem",
|
|
97
|
+
color: chipColor,
|
|
98
|
+
variant: renderArgo ? "pill" : "default",
|
|
99
|
+
className: "tw:max-w-40",
|
|
100
|
+
children: [/* @__PURE__ */ jsx(Badge.Label, {
|
|
101
|
+
title: value,
|
|
102
|
+
children: value
|
|
103
|
+
}), isEditable && /* @__PURE__ */ jsx(Badge.Addon, {
|
|
104
|
+
variant: "inline",
|
|
105
|
+
align: "inline-end",
|
|
106
|
+
children: /* @__PURE__ */ jsx(Badge.Button, {
|
|
107
|
+
"aria-label": removeLabel(value),
|
|
108
|
+
onClick: () => removeAt(index),
|
|
109
|
+
children: /* @__PURE__ */ jsx(X, { className: "tw:size-3" })
|
|
110
|
+
})
|
|
111
|
+
})]
|
|
112
|
+
}, value))
|
|
113
|
+
}), /* @__PURE__ */ jsx(InputGroup.Input, {
|
|
114
|
+
...inputProps,
|
|
115
|
+
ref: mergeRefs(forwardedRef ?? null, inputRef),
|
|
116
|
+
type: "text",
|
|
117
|
+
value: query,
|
|
118
|
+
disabled,
|
|
119
|
+
readOnly,
|
|
120
|
+
onChange: handleChange,
|
|
121
|
+
onKeyDown: handleKeyDown,
|
|
122
|
+
onBlur: handleBlur
|
|
123
|
+
})]
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
//#endregion
|
|
127
|
+
export { ChipEditor };
|
|
128
|
+
|
|
129
|
+
//# sourceMappingURL=ChipEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChipEditor.js","names":[],"sources":["../../../src/blocks/ChipEditor/ChipEditor.tsx"],"sourcesContent":["import { useRef, useState } from 'react';\nimport type { ChangeEvent, ComponentProps, ComponentRef, FocusEvent, KeyboardEvent } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { InputGroup } from '../../components/InputGroup';\nimport { useArgoDesign } from '../../components/ThemeProvider/context';\nimport { useControllableState } from '../../hooks/useControllableState';\nimport { X } from '../../icons';\nimport { DEFAULT_ENTRY_SEPARATOR, mergeRefs, splitEntry } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'sizing' | 'state'\n>;\n\ntype BadgeColor = ComponentProps<typeof Badge>['color'];\n\ntype OwnProps = {\n value?: string[];\n defaultValue?: string[];\n /** Called with the whole next list whenever a value is added or removed. */\n onValueChange?: (value: string[]) => void;\n /**\n * Splits one entry into several values, like `MultiCombobox`'s `createSeparator`.\n * `null` when a value can itself contain the separator.\n */\n separator?: string | RegExp | null;\n /** Gates each value after the split; a pasted list keeps the values that pass. */\n canAdd?: (value: string) => boolean;\n /** The chip colour. Decorative — it categorises values, it does not encode their state. */\n chipColor?: BadgeColor;\n /** Names each remove button for a screen reader. */\n removeLabel?: (value: string) => string;\n testId?: string;\n};\n\nexport type Props = InputGroupProps &\n OwnProps &\n Omit<ComponentProps<'input'>, 'value' | 'defaultValue' | 'type' | 'prefix'>;\n\nconst defaultRemoveLabel = (value: string) => `Remove ${value}`;\n\nconst sameValue = (a: string, b: string) => a.toLowerCase() === b.toLowerCase();\n\n/**\n * Free-text token editor — type a value, press Enter, it becomes a removable chip.\n *\n * - **Use** for strings the user writes rather than picks; the platform's one chip editor.\n * - **Not** for values from a known list — use `MultiCombobox` (`allowCreate` if open-ended).\n * - Wrap in a `FormGroup` for label and error state.\n * - Values are compared case-insensitively.\n */\nexport const ChipEditor = ({\n ref: forwardedRef,\n value: valueProp,\n defaultValue,\n onValueChange,\n separator = DEFAULT_ENTRY_SEPARATOR,\n canAdd,\n chipColor,\n removeLabel = defaultRemoveLabel,\n testId,\n state = 'default',\n sizing = 'default',\n variant,\n focusVariant = 'default',\n className,\n disabled = false,\n readOnly = false,\n onChange,\n onBlur,\n onKeyDown,\n ...inputProps\n}: Props) => {\n const renderArgo = useArgoDesign();\n const inputRef = useRef<ComponentRef<'input'>>(null);\n const [query, setQuery] = useState('');\n\n const [values, setValues] = useControllableState<string[]>({\n prop: valueProp,\n defaultProp: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n const isEditable = !disabled && !readOnly;\n\n /**\n * Turns typed text into chips; returns whether the text is spent.\n *\n * - A duplicate adds nothing but still spends the text.\n * - Only a value `canAdd` rejects keeps the text, so the user can fix it.\n */\n const commit = (entry: string): { isSpent: boolean } => {\n const parts = splitEntry(entry, separator)\n .map((part) => part.trim())\n .filter((part) => part !== '');\n\n const accepted = parts.filter((part) => canAdd?.(part) ?? true);\n const added = accepted.filter(\n (part, index) =>\n !values.some((held) => sameValue(held, part)) &&\n accepted.findIndex((other) => sameValue(other, part)) === index,\n );\n\n if (added.length > 0) setValues([...values, ...added]);\n\n return { isSpent: accepted.length === parts.length };\n };\n\n const commitAndClear = (entry: string) => {\n if (commit(entry).isSpent) setQuery('');\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n const next = event.target.value;\n\n // A typed string separator commits everything before the last one; the rest stays in the field.\n // `RegExp` separators only split on commit.\n if (typeof separator === 'string' && next.includes(separator)) {\n const cut = next.lastIndexOf(separator);\n commit(next.slice(0, cut));\n setQuery(next.slice(cut + separator.length));\n return;\n }\n\n setQuery(next);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n if (event.key === 'Enter') {\n // Always prevented: Enter adds a value, never submits the surrounding form.\n event.preventDefault();\n commitAndClear(query);\n return;\n }\n\n if (event.key === 'Backspace' && query === '' && values.length > 0) {\n setValues(values.slice(0, -1));\n return;\n }\n\n if (event.key === 'Escape' && query !== '') {\n // Only with text to discard — otherwise Escape reaches the enclosing overlay.\n event.preventDefault();\n event.stopPropagation();\n setQuery('');\n }\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n // A value typed then blurred is one the user meant to add.\n commitAndClear(query);\n };\n\n const removeAt = (index: number) => {\n setValues(values.filter((_, position) => position !== index));\n inputRef.current?.focus();\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n data-testid={testId}\n >\n <InputGroup.Addon align=\"block-start\" className=\"tw:flex-wrap\" role=\"list\">\n {values.map((value, index) => (\n <Badge.Root\n key={value}\n role=\"listitem\"\n color={chipColor}\n variant={renderArgo ? 'pill' : 'default'}\n className=\"tw:max-w-40\"\n >\n {/* Same cap and the same `title` as a `MultiCombobox` chip — the two chip rows are the\n same object to a user, so they truncate at the same width. */}\n <Badge.Label title={value}>{value}</Badge.Label>\n {isEditable && (\n <Badge.Addon variant=\"inline\" align=\"inline-end\">\n <Badge.Button aria-label={removeLabel(value)} onClick={() => removeAt(index)}>\n <X className=\"tw:size-3\" />\n </Badge.Button>\n </Badge.Addon>\n )}\n </Badge.Root>\n ))}\n </InputGroup.Addon>\n\n <InputGroup.Input\n {...inputProps}\n ref={mergeRefs(forwardedRef ?? null, inputRef)}\n type=\"text\"\n value={query}\n disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n />\n </InputGroup>\n );\n};\n"],"mappings":";;;;;;;;;;AAwCA,MAAM,sBAAsB,UAAkB,UAAU;AAExD,MAAM,aAAa,GAAW,MAAc,EAAE,YAAY,MAAM,EAAE,YAAY;;;;;;;;;AAU9E,MAAa,cAAc,EACzB,KAAK,cACL,OAAO,WACP,cACA,eACA,YAAA,KACA,QACA,WACA,cAAc,oBACd,QACA,QAAQ,WACR,SAAS,WACT,SACA,eAAe,WACf,WACA,WAAW,OACX,WAAW,OACX,UACA,QACA,WACA,GAAG,iBACQ;CACX,MAAM,aAAa,cAAc;CACjC,MAAM,WAAW,OAA8B,IAAI;CACnD,MAAM,CAAC,OAAO,YAAY,SAAS,EAAE;CAErC,MAAM,CAAC,QAAQ,aAAa,qBAA+B;EACzD,MAAM;EACN,aAAa,gBAAgB,CAAC;EAC9B,UAAU;CACZ,CAAC;CAED,MAAM,aAAa,CAAC,YAAY,CAAC;;;;;;;CAQjC,MAAM,UAAU,UAAwC;EACtD,MAAM,QAAQ,WAAW,OAAO,SAAS,CAAC,CACvC,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAC1B,QAAQ,SAAS,SAAS,EAAE;EAE/B,MAAM,WAAW,MAAM,QAAQ,SAAS,SAAS,IAAI,KAAK,IAAI;EAC9D,MAAM,QAAQ,SAAS,QACpB,MAAM,UACL,CAAC,OAAO,MAAM,SAAS,UAAU,MAAM,IAAI,CAAC,KAC5C,SAAS,WAAW,UAAU,UAAU,OAAO,IAAI,CAAC,MAAM,KAC9D;EAEA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;EAErD,OAAO,EAAE,SAAS,SAAS,WAAW,MAAM,OAAO;CACrD;CAEA,MAAM,kBAAkB,UAAkB;EACxC,IAAI,OAAO,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE;CACxC;CAEA,MAAM,gBAAgB,UAAyC;EAC7D,WAAW,KAAK;EAChB,MAAM,OAAO,MAAM,OAAO;EAI1B,IAAI,OAAO,cAAc,YAAY,KAAK,SAAS,SAAS,GAAG;GAC7D,MAAM,MAAM,KAAK,YAAY,SAAS;GACtC,OAAO,KAAK,MAAM,GAAG,GAAG,CAAC;GACzB,SAAS,KAAK,MAAM,MAAM,UAAU,MAAM,CAAC;GAC3C;EACF;EAEA,SAAS,IAAI;CACf;CAEA,MAAM,iBAAiB,UAA2C;EAChE,YAAY,KAAK;EACjB,IAAI,MAAM,kBAAkB;EAE5B,IAAI,MAAM,QAAQ,SAAS;GAEzB,MAAM,eAAe;GACrB,eAAe,KAAK;GACpB;EACF;EAEA,IAAI,MAAM,QAAQ,eAAe,UAAU,MAAM,OAAO,SAAS,GAAG;GAClE,UAAU,OAAO,MAAM,GAAG,EAAE,CAAC;GAC7B;EACF;EAEA,IAAI,MAAM,QAAQ,YAAY,UAAU,IAAI;GAE1C,MAAM,eAAe;GACrB,MAAM,gBAAgB;GACtB,SAAS,EAAE;EACb;CACF;CAEA,MAAM,cAAc,UAAwC;EAC1D,SAAS,KAAK;EAEd,eAAe,KAAK;CACtB;CAEA,MAAM,YAAY,UAAkB;EAClC,UAAU,OAAO,QAAQ,GAAG,aAAa,aAAa,KAAK,CAAC;EAC5D,SAAS,SAAS,MAAM;CAC1B;CAEA,OACE,qBAAC,YAAD;EACS;EACE;EACD;EACM;EACH;EACX,eAAa;EANf,UAAA,CAQE,oBAAC,WAAW,OAAZ;GAAkB,OAAM;GAAc,WAAU;GAAe,MAAK;GACjE,UAAA,OAAO,KAAK,OAAO,UAClB,qBAAC,MAAM,MAAP;IAEE,MAAK;IACL,OAAO;IACP,SAAS,aAAa,SAAS;IAC/B,WAAU;IALZ,UAAA,CASE,oBAAC,MAAM,OAAP;KAAa,OAAO;KAAQ,UAAA;IAAmB,CAAA,GAC9C,cACC,oBAAC,MAAM,OAAP;KAAa,SAAQ;KAAS,OAAM;KAClC,UAAA,oBAAC,MAAM,QAAP;MAAc,cAAY,YAAY,KAAK;MAAG,eAAe,SAAS,KAAK;MACzE,UAAA,oBAAC,GAAD,EAAG,WAAU,YAAa,CAAA;KACd,CAAA;IACH,CAAA,CAEL;GAhBL,GAAA,KAgBK,CACb;EACe,CAAA,GAElB,oBAAC,WAAW,OAAZ;GACE,GAAI;GACJ,KAAK,UAAU,gBAAgB,MAAM,QAAQ;GAC7C,MAAK;GACL,OAAO;GACG;GACA;GACV,UAAU;GACV,WAAW;GACX,QAAQ;EACT,CAAA,CACS;;AAEhB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ClipboardButton, ClipboardInline } from "../../ClipboardButton-
|
|
1
|
+
import { ClipboardButton, ClipboardInline } from "../../ClipboardButton-DHa1trtI.js";
|
|
2
2
|
export { ClipboardButton, ClipboardInline };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ColorInput } from "../../ColorInput-
|
|
1
|
+
import { ColorInput } from "../../ColorInput-DSMqrs2-.js";
|
|
2
2
|
export { ColorInput };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ColorModeSwitch } from "../../ColorModeSwitch-
|
|
1
|
+
import { ColorModeSwitch } from "../../ColorModeSwitch-D7EuWyJz.js";
|
|
2
2
|
export { ColorModeSwitch };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "../../Command-
|
|
1
|
+
import { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState } from "../../Command-BU_cVurn.js";
|
|
2
2
|
export { Command, CommandGroup, CommandInput, CommandItem, CommandList, defaultFilter, useCommandState };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CopyField } from "../../CopyField-
|
|
1
|
+
import { CopyField } from "../../CopyField-6_c-NdLO.js";
|
|
2
2
|
export { CopyField };
|
|
@@ -2,14 +2,11 @@ import { cn } from "../../classNames-BzrkDnOD.js";
|
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/blocks/DashboardHero/DashboardHero.tsx
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
* (daily-brief header, project overview, greeting + primary CTA).
|
|
5
|
+
* Top-of-dashboard welcome/summary banner: eyebrow, title, lead paragraph, actions.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `EmptyState`. **Composition:** `DashboardHero.Eyebrow`, `.Title`, `.Description`, `.Actions`,
|
|
12
|
-
* and an optional `.Aside` that floats to the right on wide screens. Reads semantic tokens only.
|
|
7
|
+
* - First block on a landing/dashboard page, above KPIs and charts.
|
|
8
|
+
* - Not for in-app page titles (`PageHeader.Index`) or empty pages (`EmptyState`).
|
|
9
|
+
* - `.Aside` floats right on wide screens.
|
|
13
10
|
*/
|
|
14
11
|
const DashboardHeroRoot = ({ className, children, ...rest }) => /* @__PURE__ */ jsx("section", {
|
|
15
12
|
className: cn("tw:flex tw:flex-col tw:gap-6 tw:rounded-lg tw:border tw:border-solid tw:border-border tw:bg-card tw:p-8 tw:text-card-foreground", "tw:md:flex-row tw:md:items-center tw:md:justify-between", className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardHero.js","names":[],"sources":["../../../src/blocks/DashboardHero/DashboardHero.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype RootProps = ComponentProps<'section'>;\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"DashboardHero.js","names":[],"sources":["../../../src/blocks/DashboardHero/DashboardHero.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype RootProps = ComponentProps<'section'>;\n\n/**\n * Top-of-dashboard welcome/summary banner: eyebrow, title, lead paragraph, actions.\n *\n * - First block on a landing/dashboard page, above KPIs and charts.\n * - Not for in-app page titles (`PageHeader.Index`) or empty pages (`EmptyState`).\n * - `.Aside` floats right on wide screens.\n */\nconst DashboardHeroRoot = ({ className, children, ...rest }: RootProps) => (\n <section\n className={cn(\n 'tw:flex tw:flex-col tw:gap-6 tw:rounded-lg tw:border tw:border-solid tw:border-border tw:bg-card tw:p-8 tw:text-card-foreground',\n 'tw:md:flex-row tw:md:items-center tw:md:justify-between',\n className,\n )}\n {...rest}\n >\n {children}\n </section>\n);\n\ntype BodyProps = ComponentProps<'div'>;\n\nconst DashboardHeroBody = ({ className, children, ...rest }: BodyProps) => (\n <div className={cn('tw:flex tw:flex-col tw:gap-3', className)} {...rest}>\n {children}\n </div>\n);\n\ntype EyebrowProps = ComponentProps<'p'>;\n\nconst DashboardHeroEyebrow = ({ className, children, ...rest }: EyebrowProps) => (\n <p\n className={cn(\n 'tw:m-0 tw:text-sm tw:font-semibold tw:uppercase tw:tracking-wide tw:text-primary',\n className,\n )}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype TitleProps = ComponentProps<'h1'>;\n\nconst DashboardHeroTitle = ({ className, children, ...rest }: TitleProps) => (\n <h1\n className={cn(\n 'tw:m-0 tw:text-3xl tw:font-semibold tw:leading-tight tw:tracking-tight tw:text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </h1>\n);\n\ntype DescriptionProps = ComponentProps<'p'>;\n\nconst DashboardHeroDescription = ({ className, children, ...rest }: DescriptionProps) => (\n <p\n className={cn('tw:m-0 tw:max-w-prose tw:text-base tw:text-muted-foreground', className)}\n {...rest}\n >\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'>;\n\nconst DashboardHeroActions = ({ className, children, ...rest }: ActionsProps) => (\n <div className={cn('tw:mt-2 tw:flex tw:flex-wrap tw:items-center tw:gap-3', className)} {...rest}>\n {children}\n </div>\n);\n\ntype AsideProps = ComponentProps<'div'>;\n\nconst DashboardHeroAside = ({ className, children, ...rest }: AsideProps) => (\n <div className={cn('tw:flex tw:shrink-0 tw:flex-col tw:gap-2', className)} {...rest}>\n {children}\n </div>\n);\n\nexport const DashboardHero = DashboardHeroRoot as typeof DashboardHeroRoot & {\n Body: typeof DashboardHeroBody;\n Eyebrow: typeof DashboardHeroEyebrow;\n Title: typeof DashboardHeroTitle;\n Description: typeof DashboardHeroDescription;\n Actions: typeof DashboardHeroActions;\n Aside: typeof DashboardHeroAside;\n};\n\nDashboardHero.Body = DashboardHeroBody;\nDashboardHero.Eyebrow = DashboardHeroEyebrow;\nDashboardHero.Title = DashboardHeroTitle;\nDashboardHero.Description = DashboardHeroDescription;\nDashboardHero.Actions = DashboardHeroActions;\nDashboardHero.Aside = DashboardHeroAside;\n\nexport type { RootProps as DashboardHeroProps };\n"],"mappings":";;;;;;;;;;AAaA,MAAM,qBAAqB,EAAE,WAAW,UAAU,GAAG,WACnD,oBAAC,WAAD;CACE,WAAW,GACT,mIACA,2DACA,SACF;CACA,GAAI;CAEH;AACM,CAAA;AAKX,MAAM,qBAAqB,EAAE,WAAW,UAAU,GAAG,WACnD,oBAAC,OAAD;CAAK,WAAW,GAAG,gCAAgC,SAAS;CAAG,GAAI;CAChE;AACE,CAAA;AAKP,MAAM,wBAAwB,EAAE,WAAW,UAAU,GAAG,WACtD,oBAAC,KAAD;CACE,WAAW,GACT,oFACA,SACF;CACA,GAAI;CAEH;AACA,CAAA;AAKL,MAAM,sBAAsB,EAAE,WAAW,UAAU,GAAG,WACpD,oBAAC,MAAD;CACE,WAAW,GACT,6FACA,SACF;CACA,GAAI;CAEH;AACC,CAAA;AAKN,MAAM,4BAA4B,EAAE,WAAW,UAAU,GAAG,WAC1D,oBAAC,KAAD;CACE,WAAW,GAAG,+DAA+D,SAAS;CACtF,GAAI;CAEH;AACA,CAAA;AAKL,MAAM,wBAAwB,EAAE,WAAW,UAAU,GAAG,WACtD,oBAAC,OAAD;CAAK,WAAW,GAAG,yDAAyD,SAAS;CAAG,GAAI;CACzF;AACE,CAAA;AAKP,MAAM,sBAAsB,EAAE,WAAW,UAAU,GAAG,WACpD,oBAAC,OAAD;CAAK,WAAW,GAAG,4CAA4C,SAAS;CAAG,GAAI;CAC5E;AACE,CAAA;AAGP,MAAa,gBAAgB;AAS7B,cAAc,OAAO;AACrB,cAAc,UAAU;AACxB,cAAc,QAAQ;AACtB,cAAc,cAAc;AAC5B,cAAc,UAAU;AACxB,cAAc,QAAQ"}
|