@keboola/design 11.0.0 → 11.0.1
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/dist/AIKit-Dre37SJr.js +1320 -0
- package/dist/AIKit-Dre37SJr.js.map +1 -0
- package/dist/Alert-DfZq9kGe.js +133 -0
- package/dist/Alert-DfZq9kGe.js.map +1 -0
- package/dist/AlertModal-BUC4Es8o.js +222 -0
- package/dist/AlertModal-BUC4Es8o.js.map +1 -0
- package/dist/AppShell-B5GQN6Zs.js +143 -0
- package/dist/AppShell-B5GQN6Zs.js.map +1 -0
- package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
- package/dist/{chunk-UGT6DKWM.js.map → AutoSaveTextarea-BeuWuszr.js.map} +1 -1
- package/dist/Badge-Ch26CXoP.js +195 -0
- package/dist/Badge-Ch26CXoP.js.map +1 -0
- package/dist/BrandEditor-B8o9zdZO.js +903 -0
- package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
- package/dist/BrandLogo-CJkRd0F8.js +46 -0
- package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
- package/dist/Breadcrumb-DJp7WwSv.js +330 -0
- package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
- package/dist/Button-nzmDNS2q.js +391 -0
- package/dist/Button-nzmDNS2q.js.map +1 -0
- package/dist/Calendar-cG5NIJ4O.js +6768 -0
- package/dist/Calendar-cG5NIJ4O.js.map +1 -0
- package/dist/Card-BAoZ35CV.js +105 -0
- package/dist/Card-BAoZ35CV.js.map +1 -0
- package/dist/Checkbox-GJ8-srt4.js +97 -0
- package/dist/Checkbox-GJ8-srt4.js.map +1 -0
- package/dist/Clipboard-CBJZiviP.js +58 -0
- package/dist/Clipboard-CBJZiviP.js.map +1 -0
- package/dist/ClipboardButton-ez5V3fkk.js +43 -0
- package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
- package/dist/CodeEditor-BfQJfbhL.js +952 -0
- package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
- package/dist/Collapsible-BQXWEOBC.js +34 -0
- package/dist/Collapsible-BQXWEOBC.js.map +1 -0
- package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
- package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
- package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
- package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
- package/dist/Combobox-c_xBjf0P.js +439 -0
- package/dist/Combobox-c_xBjf0P.js.map +1 -0
- package/dist/Command-CQ_bQsJp.js +102 -0
- package/dist/Command-CQ_bQsJp.js.map +1 -0
- package/dist/CopyField-BJ96zvXs.js +322 -0
- package/dist/CopyField-BJ96zvXs.js.map +1 -0
- package/dist/DateInput-CMD3dY-T.js +141 -0
- package/dist/DateInput-CMD3dY-T.js.map +1 -0
- package/dist/DatePicker-BbFbmsGl.js +24 -0
- package/dist/DatePicker-BbFbmsGl.js.map +1 -0
- package/dist/DateRangeInput-D3BhiKyk.js +139 -0
- package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
- package/dist/DateRangePicker-BiUgtt_M.js +159 -0
- package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
- package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
- package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
- package/dist/DiffView-ppTIzh2h.js +429 -0
- package/dist/DiffView-ppTIzh2h.js.map +1 -0
- package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
- package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
- package/dist/FieldBox-D7DYtX_m.js +70 -0
- package/dist/FieldBox-D7DYtX_m.js.map +1 -0
- package/dist/FileUpload-sXRv7JiY.js +2527 -0
- package/dist/FileUpload-sXRv7JiY.js.map +1 -0
- package/dist/Form-BDCef6O9.js +371 -0
- package/dist/Form-BDCef6O9.js.map +1 -0
- package/dist/FormGroup-S9mPNHKH.js +124 -0
- package/dist/FormGroup-S9mPNHKH.js.map +1 -0
- package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
- package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
- package/dist/HoverCard-WfDkLK1s.js +31 -0
- package/dist/HoverCard-WfDkLK1s.js.map +1 -0
- package/dist/InputGroup-BJWsI35s.js +292 -0
- package/dist/InputGroup-BJWsI35s.js.map +1 -0
- package/dist/Kbd-CxHAo1oo.js +111 -0
- package/dist/Kbd-CxHAo1oo.js.map +1 -0
- package/dist/MarkedText-Ckbft5mw.js +44 -0
- package/dist/MarkedText-Ckbft5mw.js.map +1 -0
- package/dist/MermaidDiagram-BB06gymm.js +399 -0
- package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
- package/dist/Modal-BA5Wc3sx.js +185 -0
- package/dist/Modal-BA5Wc3sx.js.map +1 -0
- package/dist/ModalTitle-C76ke2eo.js +28 -0
- package/dist/ModalTitle-C76ke2eo.js.map +1 -0
- package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
- package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
- package/dist/Navbar-t16usFZQ.js +322 -0
- package/dist/Navbar-t16usFZQ.js.map +1 -0
- package/dist/OtpInput-CbbymqYs.js +93 -0
- package/dist/OtpInput-CbbymqYs.js.map +1 -0
- package/dist/PageHeader-Q3IpCnQd.js +177 -0
- package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
- package/dist/PageLayout-DSVM-ASz.js +176 -0
- package/dist/PageLayout-DSVM-ASz.js.map +1 -0
- package/dist/PageToolbar-0_1OBzaZ.js +153 -0
- package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
- package/dist/Pagination-CM_Rszz-.js +70 -0
- package/dist/Pagination-CM_Rszz-.js.map +1 -0
- package/dist/Popconfirm-BGe1jLov.js +170 -0
- package/dist/Popconfirm-BGe1jLov.js.map +1 -0
- package/dist/Popover-Ca0V6AD1.js +92 -0
- package/dist/Popover-Ca0V6AD1.js.map +1 -0
- package/dist/RadioGroup-sIveSsNa.js +233 -0
- package/dist/RadioGroup-sIveSsNa.js.map +1 -0
- package/dist/Resizable-D3vYToZH.js +52 -0
- package/dist/Resizable-D3vYToZH.js.map +1 -0
- package/dist/Search-3UiqNZRj.js +184 -0
- package/dist/Search-3UiqNZRj.js.map +1 -0
- package/dist/SearchInput-D2fcOv7E.js +102 -0
- package/dist/SearchInput-D2fcOv7E.js.map +1 -0
- package/dist/SectionNav--7bw2b6u.js +276 -0
- package/dist/SectionNav--7bw2b6u.js.map +1 -0
- package/dist/Select-4YX38G5h.js +181 -0
- package/dist/Select-4YX38G5h.js.map +1 -0
- package/dist/Sheet-BQrX8-h5.js +169 -0
- package/dist/Sheet-BQrX8-h5.js.map +1 -0
- package/dist/Sidebar-ROaR_AqC.js +799 -0
- package/dist/Sidebar-ROaR_AqC.js.map +1 -0
- package/dist/Slider-Da_3mS5v.js +127 -0
- package/dist/Slider-Da_3mS5v.js.map +1 -0
- package/dist/Stepper-C8sm9ZFM.js +325 -0
- package/dist/Stepper-C8sm9ZFM.js.map +1 -0
- package/dist/Switch-CX2A0v50.js +201 -0
- package/dist/Switch-CX2A0v50.js.map +1 -0
- package/dist/Table-CvYuTuNU.js +104 -0
- package/dist/Table-CvYuTuNU.js.map +1 -0
- package/dist/Tabs-EAihyqCt.js +74 -0
- package/dist/Tabs-EAihyqCt.js.map +1 -0
- package/dist/TextInput-BGed-V13.js +110 -0
- package/dist/TextInput-BGed-V13.js.map +1 -0
- package/dist/ThemeProvider-QncUrfJn.js +203 -0
- package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
- package/dist/TimePicker-B_NegL-7.js +98 -0
- package/dist/TimePicker-B_NegL-7.js.map +1 -0
- package/dist/Timeline-6btyJl4D.js +154 -0
- package/dist/Timeline-6btyJl4D.js.map +1 -0
- package/dist/Toast-DQSbs3oA.js +49 -0
- package/dist/Toast-DQSbs3oA.js.map +1 -0
- package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
- package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
- package/dist/Workbench-BzE-Vvd9.js +293 -0
- package/dist/Workbench-BzE-Vvd9.js.map +1 -0
- package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
- package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
- package/dist/charts.d.ts +110 -103
- package/dist/charts.js +303 -254
- package/dist/charts.js.map +1 -1
- package/dist/classNames-BzrkDnOD.js +9 -0
- package/dist/classNames-BzrkDnOD.js.map +1 -0
- package/dist/constants-D6JcsD4_.d.ts +41 -0
- package/dist/context-KxxeMHbR.js +62 -0
- package/dist/context-KxxeMHbR.js.map +1 -0
- package/dist/editors.d.ts +180 -173
- package/dist/editors.js +747 -428
- package/dist/editors.js.map +1 -1
- package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
- package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
- package/dist/icons-Cek151jC.js +640 -0
- package/dist/icons-Cek151jC.js.map +1 -0
- package/dist/icons.d.ts +2 -41
- package/dist/icons.js +2 -9
- package/dist/index-m-kQEWiY.d.ts +54 -0
- package/dist/index.d.ts +6183 -9885
- package/dist/index.js +112 -124
- package/dist/internal/blocks/AIKit.js +2 -30
- package/dist/internal/blocks/AppShell.js +2 -11
- package/dist/internal/blocks/AutoSaveTextarea.js +2 -14
- package/dist/internal/blocks/BrandEditor.js +2 -23
- package/dist/internal/blocks/ChartPanel.js +45 -9
- package/dist/internal/blocks/ChartPanel.js.map +1 -1
- package/dist/internal/blocks/ClipboardButton.js +2 -12
- package/dist/internal/blocks/ColorInput.js +2 -13
- package/dist/internal/blocks/ColorModeSwitch.js +2 -13
- package/dist/internal/blocks/Command.js +2 -15
- package/dist/internal/blocks/CopyField.js +2 -11
- package/dist/internal/blocks/DashboardHero.js +58 -8
- package/dist/internal/blocks/DashboardHero.js.map +1 -1
- package/dist/internal/blocks/DateInput.js +2 -16
- package/dist/internal/blocks/DateRangeInput.js +2 -16
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +15 -9
- package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -1
- package/dist/internal/blocks/EmptyState.js +141 -3
- package/dist/internal/blocks/EmptyState.js.map +1 -1
- package/dist/internal/blocks/ErrorState.js +178 -4
- package/dist/internal/blocks/ErrorState.js.map +1 -1
- package/dist/internal/blocks/ExportMenu.js +40 -12
- package/dist/internal/blocks/ExportMenu.js.map +1 -1
- package/dist/internal/blocks/Form.js +2 -29
- package/dist/internal/blocks/FormGroup.js +2 -18
- package/dist/internal/blocks/GoogleButton.js +94 -9
- package/dist/internal/blocks/GoogleButton.js.map +1 -1
- package/dist/internal/blocks/MicrosoftButton.js +63 -9
- package/dist/internal/blocks/MicrosoftButton.js.map +1 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js +2 -12
- package/dist/internal/blocks/MultiCombobox.js +187 -13
- package/dist/internal/blocks/MultiCombobox.js.map +1 -1
- package/dist/internal/blocks/NumberInput.js +43 -11
- package/dist/internal/blocks/NumberInput.js.map +1 -1
- package/dist/internal/blocks/OtpInput.js +2 -10
- package/dist/internal/blocks/PageHeader.js +2 -9
- package/dist/internal/blocks/PageLayout.js +2 -9
- package/dist/internal/blocks/PageToolbar.js +2 -13
- package/dist/internal/blocks/PasswordInput.js +96 -12
- package/dist/internal/blocks/PasswordInput.js.map +1 -1
- package/dist/internal/blocks/SearchInput.js +2 -12
- package/dist/internal/blocks/SearchInputWithNavigation.js +64 -15
- package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
- package/dist/internal/blocks/SectionNav.js +2 -15
- package/dist/internal/blocks/SplitButton.js +45 -13
- package/dist/internal/blocks/SplitButton.js.map +1 -1
- package/dist/internal/blocks/StatCard.js +96 -9
- package/dist/internal/blocks/StatCard.js.map +1 -1
- package/dist/internal/blocks/TextInput.js +2 -13
- package/dist/internal/blocks/Textarea.js +31 -12
- package/dist/internal/blocks/Textarea.js.map +1 -1
- package/dist/internal/blocks/TimeInput.js +76 -16
- package/dist/internal/blocks/TimeInput.js.map +1 -1
- package/dist/internal/components/Alert.js +2 -11
- package/dist/internal/components/AlertModal.js +2 -11
- package/dist/internal/components/Avatar.js +52 -8
- package/dist/internal/components/Avatar.js.map +1 -1
- package/dist/internal/components/Badge.js +2 -9
- package/dist/internal/components/BrandLogo.js +2 -11
- package/dist/internal/components/Breadcrumb.js +2 -14
- package/dist/internal/components/Button.js +2 -10
- package/dist/internal/components/ButtonGroup.js +65 -8
- package/dist/internal/components/ButtonGroup.js.map +1 -1
- package/dist/internal/components/Calendar.js +2 -9
- package/dist/internal/components/Card.js +2 -9
- package/dist/internal/components/Checkbox.js +2 -11
- package/dist/internal/components/Clipboard.js +2 -9
- package/dist/internal/components/Collapsible.js +2 -9
- package/dist/internal/components/CollapsiblePanel.js +86 -10
- package/dist/internal/components/CollapsiblePanel.js.map +1 -1
- package/dist/internal/components/Combobox.js +2 -13
- package/dist/internal/components/DatePicker.js +2 -11
- package/dist/internal/components/DateRangePicker.js +2 -17
- package/dist/internal/components/DiffView.js +2 -9
- package/dist/internal/components/DotsLoader.js +17 -4
- package/dist/internal/components/DotsLoader.js.map +1 -1
- package/dist/internal/components/DropdownMenu.js +2 -11
- package/dist/internal/components/EmptySearchContent.js +11 -3
- package/dist/internal/components/EmptySearchContent.js.map +1 -1
- package/dist/internal/components/FileUpload.js +2 -11
- package/dist/internal/components/FullScreenModal.js +2 -12
- package/dist/internal/components/HelpBlock.js +24 -3
- package/dist/internal/components/HelpBlock.js.map +1 -1
- package/dist/internal/components/HoverCard.js +2 -9
- package/dist/internal/components/InputGroup.js +2 -11
- package/dist/internal/components/Kbd.js +2 -9
- package/dist/internal/components/Label.js +38 -8
- package/dist/internal/components/Label.js.map +1 -1
- package/dist/internal/components/Link.js +21 -8
- package/dist/internal/components/Link.js.map +1 -1
- package/dist/internal/components/MarkedText.js +2 -5
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +19 -9
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -1
- package/dist/internal/components/MergeEditor/PaneHeader.js +12 -3
- package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -1
- package/dist/internal/components/MergeEditor/constants.js +17 -3
- package/dist/internal/components/MergeEditor/constants.js.map +1 -1
- package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -5
- package/dist/internal/components/Modal.js +2 -13
- package/dist/internal/components/Navbar.js +2 -14
- package/dist/internal/components/Pagination.js +2 -11
- package/dist/internal/components/PanelWithDetails.js +30 -10
- package/dist/internal/components/PanelWithDetails.js.map +1 -1
- package/dist/internal/components/Popconfirm.js +2 -12
- package/dist/internal/components/Popover.js +2 -9
- package/dist/internal/components/Progress.js +46 -8
- package/dist/internal/components/Progress.js.map +1 -1
- package/dist/internal/components/RadioGroup.js +2 -12
- package/dist/internal/components/Resizable.js +2 -9
- package/dist/internal/components/ScrollArea.js +41 -8
- package/dist/internal/components/ScrollArea.js.map +1 -1
- package/dist/internal/components/Search.js +2 -10
- package/dist/internal/components/Select.js +2 -12
- package/dist/internal/components/Separator.js +83 -8
- package/dist/internal/components/Separator.js.map +1 -1
- package/dist/internal/components/Sheet.js +2 -12
- package/dist/internal/components/Sidebar.js +2 -20
- package/dist/internal/components/Skeleton/Skeleton.js +38 -8
- package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/internal/components/Skeleton/SkeletonList.js +40 -9
- package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -1
- package/dist/internal/components/Slider.js +2 -11
- package/dist/internal/components/SpotlightBackdrop.js +131 -8
- package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
- package/dist/internal/components/Stepper.js +2 -10
- package/dist/internal/components/Switch.js +2 -10
- package/dist/internal/components/Table.js +2 -10
- package/dist/internal/components/Tabs.js +2 -12
- package/dist/internal/components/ThemeProvider.js +3 -10
- package/dist/internal/components/TimePicker.js +2 -12
- package/dist/internal/components/Timeline.js +2 -10
- package/dist/internal/components/Toast.js +3 -11
- package/dist/internal/components/Toggle.js +168 -8
- package/dist/internal/components/Toggle.js.map +1 -1
- package/dist/internal/components/ToggleGroup.js +2 -9
- package/dist/internal/components/Tooltip.js +2 -8
- package/dist/internal/components/Truncated.js +44 -8
- package/dist/internal/components/Truncated.js.map +1 -1
- package/dist/internal/components/Workbench.js +2 -11
- package/dist/internal/components/ZoomableSvg.js +2 -13
- package/dist/internal/hooks/useAutosizeInput.js +76 -3
- package/dist/internal/hooks/useAutosizeInput.js.map +1 -1
- package/dist/internal/hooks/useScrollbarPosition.js +44 -4
- package/dist/internal/hooks/useScrollbarPosition.js.map +1 -1
- package/dist/internal/hooks/useStableCallback.js +28 -3
- package/dist/internal/hooks/useStableCallback.js.map +1 -1
- package/dist/internal/utils/mergeRefs.js +19 -3
- package/dist/internal/utils/mergeRefs.js.map +1 -1
- package/dist/internal/utils.js +5 -8
- package/dist/markdown-editor.d.ts +72 -72
- package/dist/markdown-editor.js +1122 -1207
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.d.ts +12 -12
- package/dist/mermaid.js +2 -18
- package/dist/rjsf.d.ts +33 -34
- package/dist/rjsf.js +1541 -1671
- package/dist/rjsf.js.map +1 -1
- package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
- package/dist/styles-DSUP_-9Z.js +158 -0
- package/dist/styles-DSUP_-9Z.js.map +1 -0
- package/dist/testing.d.ts +8 -7
- package/dist/testing.js +36 -21
- package/dist/testing.js.map +1 -1
- package/dist/themeTokens-BNg98Mu9.js +85 -0
- package/dist/themeTokens-BNg98Mu9.js.map +1 -0
- package/dist/toast-CjkURw0M.js +184 -0
- package/dist/toast-CjkURw0M.js.map +1 -0
- package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
- package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
- package/dist/useControllableState-M6494mCT.js +31 -0
- package/dist/useControllableState-M6494mCT.js.map +1 -0
- package/dist/useElement-DkF6esWL.js +15 -0
- package/dist/useElement-DkF6esWL.js.map +1 -0
- package/dist/useMergeDiff-CvowEXJ1.js +465 -0
- package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
- package/dist/utils-D0c5VAyF.js +308 -0
- package/dist/utils-D0c5VAyF.js.map +1 -0
- package/package.json +8 -8
- package/dist/MermaidDiagram-ZU5KAVRT.js +0 -18
- package/dist/MermaidDiagram-ZU5KAVRT.js.map +0 -1
- package/dist/chunk-2YYJDKSP.js +0 -51
- package/dist/chunk-2YYJDKSP.js.map +0 -1
- package/dist/chunk-3P5UUCFI.js +0 -385
- package/dist/chunk-3P5UUCFI.js.map +0 -1
- package/dist/chunk-3QDFDDWZ.js +0 -99
- package/dist/chunk-3QDFDDWZ.js.map +0 -1
- package/dist/chunk-3W27OLK5.js +0 -15
- package/dist/chunk-3W27OLK5.js.map +0 -1
- package/dist/chunk-4FIZZONW.js +0 -40
- package/dist/chunk-4FIZZONW.js.map +0 -1
- package/dist/chunk-4GIAXOJG.js +0 -133
- package/dist/chunk-4GIAXOJG.js.map +0 -1
- package/dist/chunk-52NDNMK7.js +0 -99
- package/dist/chunk-52NDNMK7.js.map +0 -1
- package/dist/chunk-576G5OES.js +0 -201
- package/dist/chunk-576G5OES.js.map +0 -1
- package/dist/chunk-5AIE6SET.js +0 -659
- package/dist/chunk-5AIE6SET.js.map +0 -1
- package/dist/chunk-5FTNAZRW.js +0 -327
- package/dist/chunk-5FTNAZRW.js.map +0 -1
- package/dist/chunk-5IG2S7ZY.js +0 -70
- package/dist/chunk-5IG2S7ZY.js.map +0 -1
- package/dist/chunk-5QCXHNCW.js +0 -404
- package/dist/chunk-5QCXHNCW.js.map +0 -1
- package/dist/chunk-6DUMGC7Y.js +0 -105
- package/dist/chunk-6DUMGC7Y.js.map +0 -1
- package/dist/chunk-6J25CVST.js +0 -174
- package/dist/chunk-6J25CVST.js.map +0 -1
- package/dist/chunk-6NN35XOP.js +0 -120
- package/dist/chunk-6NN35XOP.js.map +0 -1
- package/dist/chunk-6NZBVA4T.js +0 -24
- package/dist/chunk-6NZBVA4T.js.map +0 -1
- package/dist/chunk-6W5BHRCL.js +0 -295
- package/dist/chunk-6W5BHRCL.js.map +0 -1
- package/dist/chunk-72BKRCEG.js +0 -409
- package/dist/chunk-72BKRCEG.js.map +0 -1
- package/dist/chunk-7GTI3PPI.js +0 -95
- package/dist/chunk-7GTI3PPI.js.map +0 -1
- package/dist/chunk-7P6PLZ4B.js +0 -74
- package/dist/chunk-7P6PLZ4B.js.map +0 -1
- package/dist/chunk-7WZWY5IA.js +0 -46
- package/dist/chunk-7WZWY5IA.js.map +0 -1
- package/dist/chunk-AIYO2632.js +0 -489
- package/dist/chunk-AIYO2632.js.map +0 -1
- package/dist/chunk-ANFZWPNE.js +0 -112
- package/dist/chunk-ANFZWPNE.js.map +0 -1
- package/dist/chunk-ANZTVAJU.js +0 -73
- package/dist/chunk-ANZTVAJU.js.map +0 -1
- package/dist/chunk-BD5BTJKX.js +0 -166
- package/dist/chunk-BD5BTJKX.js.map +0 -1
- package/dist/chunk-BHGIDSRJ.js +0 -140
- package/dist/chunk-BHGIDSRJ.js.map +0 -1
- package/dist/chunk-BSQWZITZ.js +0 -507
- package/dist/chunk-BSQWZITZ.js.map +0 -1
- package/dist/chunk-D3LAIK62.js +0 -23
- package/dist/chunk-D3LAIK62.js.map +0 -1
- package/dist/chunk-DODCR43C.js +0 -155
- package/dist/chunk-DODCR43C.js.map +0 -1
- package/dist/chunk-EEK5NGZF.js +0 -40
- package/dist/chunk-EEK5NGZF.js.map +0 -1
- package/dist/chunk-ENRG7TXA.js +0 -11
- package/dist/chunk-ENRG7TXA.js.map +0 -1
- package/dist/chunk-EQRMGIGY.js +0 -239
- package/dist/chunk-EQRMGIGY.js.map +0 -1
- package/dist/chunk-ERAHK5YQ.js +0 -495
- package/dist/chunk-ERAHK5YQ.js.map +0 -1
- package/dist/chunk-F3FOFY2P.js +0 -124
- package/dist/chunk-F3FOFY2P.js.map +0 -1
- package/dist/chunk-F6BTWFOC.js +0 -507
- package/dist/chunk-F6BTWFOC.js.map +0 -1
- package/dist/chunk-F6J6NNAL.js +0 -34
- package/dist/chunk-F6J6NNAL.js.map +0 -1
- package/dist/chunk-FCHJ7D5O.js +0 -59
- package/dist/chunk-FCHJ7D5O.js.map +0 -1
- package/dist/chunk-FFJTEQCC.js +0 -80
- package/dist/chunk-FFJTEQCC.js.map +0 -1
- package/dist/chunk-FUFMVW7O.js +0 -64
- package/dist/chunk-FUFMVW7O.js.map +0 -1
- package/dist/chunk-FVPGQ6UE.js +0 -25
- package/dist/chunk-FVPGQ6UE.js.map +0 -1
- package/dist/chunk-G3PMV62Z.js +0 -33
- package/dist/chunk-G3PMV62Z.js.map +0 -1
- package/dist/chunk-GACFOW3E.js +0 -51
- package/dist/chunk-GACFOW3E.js.map +0 -1
- package/dist/chunk-GDT6HQMK.js +0 -42
- package/dist/chunk-GDT6HQMK.js.map +0 -1
- package/dist/chunk-HLGU22C6.js +0 -2589
- package/dist/chunk-HLGU22C6.js.map +0 -1
- package/dist/chunk-HPMYYGP7.js +0 -134
- package/dist/chunk-HPMYYGP7.js.map +0 -1
- package/dist/chunk-I2UCOD45.js +0 -197
- package/dist/chunk-I2UCOD45.js.map +0 -1
- package/dist/chunk-IEGDZUVM.js +0 -75
- package/dist/chunk-IEGDZUVM.js.map +0 -1
- package/dist/chunk-IIS7INHF.js +0 -47
- package/dist/chunk-IIS7INHF.js.map +0 -1
- package/dist/chunk-ITELSEFU.js +0 -256
- package/dist/chunk-ITELSEFU.js.map +0 -1
- package/dist/chunk-IXAYNBOY.js +0 -407
- package/dist/chunk-IXAYNBOY.js.map +0 -1
- package/dist/chunk-JUW2ETEI.js +0 -191
- package/dist/chunk-JUW2ETEI.js.map +0 -1
- package/dist/chunk-K65C7CVE.js +0 -127
- package/dist/chunk-K65C7CVE.js.map +0 -1
- package/dist/chunk-KDI64MCY.js +0 -189
- package/dist/chunk-KDI64MCY.js.map +0 -1
- package/dist/chunk-KN4ASMH5.js +0 -160
- package/dist/chunk-KN4ASMH5.js.map +0 -1
- package/dist/chunk-KQW7QNTU.js +0 -1549
- package/dist/chunk-KQW7QNTU.js.map +0 -1
- package/dist/chunk-KR7NXXHC.js +0 -66
- package/dist/chunk-KR7NXXHC.js.map +0 -1
- package/dist/chunk-KRZKIVMA.js +0 -142
- package/dist/chunk-KRZKIVMA.js.map +0 -1
- package/dist/chunk-KTTLLKGQ.js +0 -185
- package/dist/chunk-KTTLLKGQ.js.map +0 -1
- package/dist/chunk-KWKSHPDP.js +0 -234
- package/dist/chunk-KWKSHPDP.js.map +0 -1
- package/dist/chunk-KZVC7OYG.js +0 -57
- package/dist/chunk-KZVC7OYG.js.map +0 -1
- package/dist/chunk-L5DHUN2V.js +0 -204
- package/dist/chunk-L5DHUN2V.js.map +0 -1
- package/dist/chunk-LCTGEH57.js +0 -1376
- package/dist/chunk-LCTGEH57.js.map +0 -1
- package/dist/chunk-LXLIQ2D6.js +0 -12
- package/dist/chunk-LXLIQ2D6.js.map +0 -1
- package/dist/chunk-M4CTURKX.js +0 -84
- package/dist/chunk-M4CTURKX.js.map +0 -1
- package/dist/chunk-M6LTUPVP.js +0 -301
- package/dist/chunk-M6LTUPVP.js.map +0 -1
- package/dist/chunk-MA6RRHDT.js +0 -291
- package/dist/chunk-MA6RRHDT.js.map +0 -1
- package/dist/chunk-MODE4QIA.js +0 -6
- package/dist/chunk-MODE4QIA.js.map +0 -1
- package/dist/chunk-MVILMVGG.js +0 -118
- package/dist/chunk-MVILMVGG.js.map +0 -1
- package/dist/chunk-MWS4VCLV.js +0 -17
- package/dist/chunk-MWS4VCLV.js.map +0 -1
- package/dist/chunk-NEUX74SO.js +0 -315
- package/dist/chunk-NEUX74SO.js.map +0 -1
- package/dist/chunk-NFHKYBRD.js +0 -156
- package/dist/chunk-NFHKYBRD.js.map +0 -1
- package/dist/chunk-NHJNNXD3.js +0 -89
- package/dist/chunk-NHJNNXD3.js.map +0 -1
- package/dist/chunk-O2BF3HZL.js +0 -33
- package/dist/chunk-O2BF3HZL.js.map +0 -1
- package/dist/chunk-OANXCZYD.js +0 -212
- package/dist/chunk-OANXCZYD.js.map +0 -1
- package/dist/chunk-ODJF7YIP.js +0 -230
- package/dist/chunk-ODJF7YIP.js.map +0 -1
- package/dist/chunk-ON4BJTHI.js +0 -101
- package/dist/chunk-ON4BJTHI.js.map +0 -1
- package/dist/chunk-OTL5WXIJ.js +0 -16
- package/dist/chunk-OTL5WXIJ.js.map +0 -1
- package/dist/chunk-PACNBKJV.js +0 -47
- package/dist/chunk-PACNBKJV.js.map +0 -1
- package/dist/chunk-PROCA7K7.js +0 -23
- package/dist/chunk-PROCA7K7.js.map +0 -1
- package/dist/chunk-QGMIPA67.js +0 -85
- package/dist/chunk-QGMIPA67.js.map +0 -1
- package/dist/chunk-QQA37LFB.js +0 -190
- package/dist/chunk-QQA37LFB.js.map +0 -1
- package/dist/chunk-QZAWRSEB.js +0 -61
- package/dist/chunk-QZAWRSEB.js.map +0 -1
- package/dist/chunk-R74KGWNS.js +0 -699
- package/dist/chunk-R74KGWNS.js.map +0 -1
- package/dist/chunk-RFDLHMKL.js +0 -110
- package/dist/chunk-RFDLHMKL.js.map +0 -1
- package/dist/chunk-RL64HN7S.js +0 -40
- package/dist/chunk-RL64HN7S.js.map +0 -1
- package/dist/chunk-RMRQKPL7.js +0 -115
- package/dist/chunk-RMRQKPL7.js.map +0 -1
- package/dist/chunk-RQVK4IYC.js +0 -606
- package/dist/chunk-RQVK4IYC.js.map +0 -1
- package/dist/chunk-RTW56PWZ.js +0 -59
- package/dist/chunk-RTW56PWZ.js.map +0 -1
- package/dist/chunk-RUTPQNLR.js +0 -266
- package/dist/chunk-RUTPQNLR.js.map +0 -1
- package/dist/chunk-S6TAF63G.js +0 -25
- package/dist/chunk-S6TAF63G.js.map +0 -1
- package/dist/chunk-SBGAUGXY.js +0 -224
- package/dist/chunk-SBGAUGXY.js.map +0 -1
- package/dist/chunk-SC275NHZ.js +0 -407
- package/dist/chunk-SC275NHZ.js.map +0 -1
- package/dist/chunk-SCQPU4UE.js +0 -97
- package/dist/chunk-SCQPU4UE.js.map +0 -1
- package/dist/chunk-SFFF2WQP.js +0 -8
- package/dist/chunk-SFFF2WQP.js.map +0 -1
- package/dist/chunk-SJYMHZKA.js +0 -36
- package/dist/chunk-SJYMHZKA.js.map +0 -1
- package/dist/chunk-SLCCUJVN.js +0 -125
- package/dist/chunk-SLCCUJVN.js.map +0 -1
- package/dist/chunk-SVBSNSD4.js +0 -259
- package/dist/chunk-SVBSNSD4.js.map +0 -1
- package/dist/chunk-SVPLTL35.js +0 -62
- package/dist/chunk-SVPLTL35.js.map +0 -1
- package/dist/chunk-SWQFYNYG.js +0 -338
- package/dist/chunk-SWQFYNYG.js.map +0 -1
- package/dist/chunk-THHB4EWS.js +0 -72
- package/dist/chunk-THHB4EWS.js.map +0 -1
- package/dist/chunk-TUCDD33E.js +0 -246
- package/dist/chunk-TUCDD33E.js.map +0 -1
- package/dist/chunk-TV4WAP2R.js +0 -14
- package/dist/chunk-TV4WAP2R.js.map +0 -1
- package/dist/chunk-U3A6YBTZ.js +0 -134
- package/dist/chunk-U3A6YBTZ.js.map +0 -1
- package/dist/chunk-UGT6DKWM.js +0 -95
- package/dist/chunk-VSERHUWD.js +0 -212
- package/dist/chunk-VSERHUWD.js.map +0 -1
- package/dist/chunk-VYG7BDXC.js +0 -49
- package/dist/chunk-VYG7BDXC.js.map +0 -1
- package/dist/chunk-WETKNYZX.js +0 -52
- package/dist/chunk-WETKNYZX.js.map +0 -1
- package/dist/chunk-WGG4AML3.js +0 -216
- package/dist/chunk-WGG4AML3.js.map +0 -1
- package/dist/chunk-WKAUEL6I.js +0 -30
- package/dist/chunk-WKAUEL6I.js.map +0 -1
- package/dist/chunk-WPOLA5CG.js +0 -81
- package/dist/chunk-WPOLA5CG.js.map +0 -1
- package/dist/chunk-WPVETCGJ.js +0 -254
- package/dist/chunk-WPVETCGJ.js.map +0 -1
- package/dist/chunk-WTSM3A7E.js +0 -13
- package/dist/chunk-WTSM3A7E.js.map +0 -1
- package/dist/chunk-WU3F2K3T.js +0 -148
- package/dist/chunk-WU3F2K3T.js.map +0 -1
- package/dist/chunk-WZZK2DTZ.js +0 -39
- package/dist/chunk-WZZK2DTZ.js.map +0 -1
- package/dist/chunk-X4IHLKRD.js +0 -42
- package/dist/chunk-X4IHLKRD.js.map +0 -1
- package/dist/chunk-XAHEXZJC.js +0 -80
- package/dist/chunk-XAHEXZJC.js.map +0 -1
- package/dist/chunk-XCYGJDUX.js +0 -31
- package/dist/chunk-XCYGJDUX.js.map +0 -1
- package/dist/chunk-Y4W3JORC.js +0 -104
- package/dist/chunk-Y4W3JORC.js.map +0 -1
- package/dist/chunk-YFZJ3ZLG.js +0 -1297
- package/dist/chunk-YFZJ3ZLG.js.map +0 -1
- package/dist/chunk-YI3WLXEN.js +0 -4387
- package/dist/chunk-YI3WLXEN.js.map +0 -1
- package/dist/chunk-ZBKFSPD3.js +0 -29
- package/dist/chunk-ZBKFSPD3.js.map +0 -1
- package/dist/chunk-ZOERRQ6A.js +0 -79
- package/dist/chunk-ZOERRQ6A.js.map +0 -1
- package/dist/chunk-ZSTGUKHU.js +0 -10
- package/dist/chunk-ZSTGUKHU.js.map +0 -1
- package/dist/chunk-ZUEHDL27.js +0 -65
- package/dist/chunk-ZUEHDL27.js.map +0 -1
- package/dist/constants-D3gaMY-W.d.ts +0 -39
- package/dist/icons.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/blocks/AIKit.js.map +0 -1
- package/dist/internal/blocks/AppShell.js.map +0 -1
- package/dist/internal/blocks/AutoSaveTextarea.js.map +0 -1
- package/dist/internal/blocks/BrandEditor.js.map +0 -1
- package/dist/internal/blocks/ClipboardButton.js.map +0 -1
- package/dist/internal/blocks/ColorInput.js.map +0 -1
- package/dist/internal/blocks/ColorModeSwitch.js.map +0 -1
- package/dist/internal/blocks/Command.js.map +0 -1
- package/dist/internal/blocks/CopyField.js.map +0 -1
- package/dist/internal/blocks/DateInput.js.map +0 -1
- package/dist/internal/blocks/DateRangeInput.js.map +0 -1
- package/dist/internal/blocks/Form.js.map +0 -1
- package/dist/internal/blocks/FormGroup.js.map +0 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js.map +0 -1
- package/dist/internal/blocks/OtpInput.js.map +0 -1
- package/dist/internal/blocks/PageHeader.js.map +0 -1
- package/dist/internal/blocks/PageLayout.js.map +0 -1
- package/dist/internal/blocks/PageToolbar.js.map +0 -1
- package/dist/internal/blocks/SearchInput.js.map +0 -1
- package/dist/internal/blocks/SectionNav.js.map +0 -1
- package/dist/internal/blocks/TextInput.js.map +0 -1
- package/dist/internal/components/Alert.js.map +0 -1
- package/dist/internal/components/AlertModal.js.map +0 -1
- package/dist/internal/components/Badge.js.map +0 -1
- package/dist/internal/components/BrandLogo.js.map +0 -1
- package/dist/internal/components/Breadcrumb.js.map +0 -1
- package/dist/internal/components/Button.js.map +0 -1
- package/dist/internal/components/Calendar.js.map +0 -1
- package/dist/internal/components/Card.js.map +0 -1
- package/dist/internal/components/Checkbox.js.map +0 -1
- package/dist/internal/components/Clipboard.js.map +0 -1
- package/dist/internal/components/Collapsible.js.map +0 -1
- package/dist/internal/components/Combobox.js.map +0 -1
- package/dist/internal/components/DatePicker.js.map +0 -1
- package/dist/internal/components/DateRangePicker.js.map +0 -1
- package/dist/internal/components/DiffView.js.map +0 -1
- package/dist/internal/components/DropdownMenu.js.map +0 -1
- package/dist/internal/components/FileUpload.js.map +0 -1
- package/dist/internal/components/FullScreenModal.js.map +0 -1
- package/dist/internal/components/HoverCard.js.map +0 -1
- package/dist/internal/components/InputGroup.js.map +0 -1
- package/dist/internal/components/Kbd.js.map +0 -1
- package/dist/internal/components/MarkedText.js.map +0 -1
- package/dist/internal/components/MergeEditor/useMergeDiff.js.map +0 -1
- package/dist/internal/components/Modal.js.map +0 -1
- package/dist/internal/components/Navbar.js.map +0 -1
- package/dist/internal/components/Pagination.js.map +0 -1
- package/dist/internal/components/Popconfirm.js.map +0 -1
- package/dist/internal/components/Popover.js.map +0 -1
- package/dist/internal/components/RadioGroup.js.map +0 -1
- package/dist/internal/components/Resizable.js.map +0 -1
- package/dist/internal/components/Search.js.map +0 -1
- package/dist/internal/components/Select.js.map +0 -1
- package/dist/internal/components/Sheet.js.map +0 -1
- package/dist/internal/components/Sidebar.js.map +0 -1
- package/dist/internal/components/Slider.js.map +0 -1
- package/dist/internal/components/Stepper.js.map +0 -1
- package/dist/internal/components/Switch.js.map +0 -1
- package/dist/internal/components/Table.js.map +0 -1
- package/dist/internal/components/Tabs.js.map +0 -1
- package/dist/internal/components/ThemeProvider.js.map +0 -1
- package/dist/internal/components/TimePicker.js.map +0 -1
- package/dist/internal/components/Timeline.js.map +0 -1
- package/dist/internal/components/Toast.js.map +0 -1
- package/dist/internal/components/ToggleGroup.js.map +0 -1
- package/dist/internal/components/Tooltip.js.map +0 -1
- package/dist/internal/components/Workbench.js.map +0 -1
- package/dist/internal/components/ZoomableSvg.js.map +0 -1
- package/dist/internal/utils.js.map +0 -1
- package/dist/mermaid.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { useArgoDesign } from "./context-KxxeMHbR.js";
|
|
3
|
+
import { X } from "./icons-Cek151jC.js";
|
|
4
|
+
import { Button } from "./Button-nzmDNS2q.js";
|
|
5
|
+
import { ModalDescription, ModalOverlay, ModalTitle } from "./ModalTitle-C76ke2eo.js";
|
|
6
|
+
import { Separator } from "./internal/components/Separator.js";
|
|
7
|
+
import { useEffect, useState } from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { Close, Content, Portal, Root, Trigger } from "@radix-ui/react-dialog";
|
|
10
|
+
//#region src/components/Modal/ModalBody.tsx
|
|
11
|
+
/**
|
|
12
|
+
* Scrollable body slot for `Modal`. Place form fields, content blocks, or detail panels here.
|
|
13
|
+
* Takes available height inside `Modal.Content` and scrolls when content overflows.
|
|
14
|
+
*/
|
|
15
|
+
const ModalBody = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
16
|
+
"data-slot": "modal-body",
|
|
17
|
+
className: cn("tw:flex-1", "tw:overflow-y-auto", "tw:group-data-[argo=true]/modal:scroll-fade-y", "tw:group-data-[argo=false]/modal:px-7", "tw:group-data-[argo=true]/modal:px-4", "tw:py-1", "tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4", "tw:[&_svg]:shrink-0", className),
|
|
18
|
+
...props
|
|
19
|
+
});
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/components/Modal/ModalContent.tsx
|
|
22
|
+
const ModalContent = ({ size = "medium", className, children, onEscapeKeyDown, ...props }) => {
|
|
23
|
+
const renderArgo = useArgoDesign();
|
|
24
|
+
const handleEscapeKeyDown = (event) => {
|
|
25
|
+
event.stopPropagation();
|
|
26
|
+
onEscapeKeyDown?.(event);
|
|
27
|
+
};
|
|
28
|
+
return /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(ModalOverlay, { children: /* @__PURE__ */ jsx(Content, {
|
|
29
|
+
...props,
|
|
30
|
+
"data-argo": renderArgo,
|
|
31
|
+
"data-size": size,
|
|
32
|
+
className: cn("tailwindcss-preflight", "tw:group/modal", "tw:fixed", "tw:left-1/2", "tw:-translate-x-1/2", "tw:z-[1051]", "tw:data-[argo=false]:top-20", "tw:data-[argo=true]:top-1/2", "tw:data-[argo=true]:-translate-y-1/2", "tw:w-full", "tw:max-w-2xl", "tw:max-h-[calc(100vh-2*theme(spacing.20))]", "tw:flex", "tw:flex-col", "tw:gap-4", "tw:data-[argo=false]:rounded-lg", "tw:data-[argo=true]:rounded-3xl", "tw:bg-card", "tw:text-card-foreground", "tw:data-[argo=false]:py-8", "tw:data-[argo=true]:py-4", "tw:duration-200", "tw:data-[state=open]:animate-in", "tw:data-[state=open]:fade-in-0", "tw:data-[state=closed]:animate-out", "tw:data-[state=closed]:fade-out-0", "tw:data-[argo=false]:data-[state=open]:zoom-in-80", "tw:data-[argo=false]:data-[state=open]:slide-in-from-top-[48%]", "tw:data-[argo=false]:data-[state=closed]:zoom-out-80", "tw:data-[argo=false]:data-[state=closed]:slide-out-to-top-[48%]", "tw:data-[argo=true]:data-[state=open]:zoom-in-95", "tw:data-[argo=true]:data-[state=closed]:zoom-out-95", {
|
|
33
|
+
"tw:max-w-[480px]": size === "small",
|
|
34
|
+
"tw:max-w-4xl": size === "large"
|
|
35
|
+
}, className),
|
|
36
|
+
onEscapeKeyDown: handleEscapeKeyDown,
|
|
37
|
+
children
|
|
38
|
+
}) }) });
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/components/Modal/ModalFooter.tsx
|
|
42
|
+
const ModalFooter = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
43
|
+
...props,
|
|
44
|
+
className: cn("tw:group-data-[argo=false]/modal:px-7", "tw:group-data-[argo=true]/modal:px-4", className)
|
|
45
|
+
});
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/components/Modal/ModalActions.tsx
|
|
48
|
+
/**
|
|
49
|
+
* Container for the header's top-right controls — any `actions` passed to `Modal.Header` plus the
|
|
50
|
+
* close icon. Sits in the header grid's last column, top-aligned. Mirrors `Alert`'s action slot.
|
|
51
|
+
*/
|
|
52
|
+
const ModalActions = ({ className, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
53
|
+
className: cn("tw:col-start-3", "tw:row-start-1", "tw:self-start", "tw:flex", "tw:items-center", "tw:gap-1", "tw:group-data-[argo=true]/modal:ml-3", className),
|
|
54
|
+
...props
|
|
55
|
+
});
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/components/Modal/ModalHeader.tsx
|
|
58
|
+
/** Modal header: `[icon] | title (children) | actions + close` on row 1, `description` on row 2. */
|
|
59
|
+
const ModalHeader = ({ className, icon, description, "aria-description": ariaDescription, actions, hideCloseIcon = false, children, ...props }) => /* @__PURE__ */ jsxs("div", {
|
|
60
|
+
...props,
|
|
61
|
+
"data-slot": "modal-header",
|
|
62
|
+
className: cn("tw:grid", "tw:grid-cols-[auto_1fr_auto]", "tw:items-center", "tw:group-data-[argo=false]/modal:px-7", "tw:group-data-[argo=true]/modal:px-4", className),
|
|
63
|
+
children: [
|
|
64
|
+
icon,
|
|
65
|
+
children && /* @__PURE__ */ jsx(ModalTitle, {
|
|
66
|
+
className: "tw:col-start-2 tw:row-start-1",
|
|
67
|
+
children
|
|
68
|
+
}),
|
|
69
|
+
(actions || !hideCloseIcon) && /* @__PURE__ */ jsxs(ModalActions, { children: [actions, !hideCloseIcon && /* @__PURE__ */ jsx(Close, {
|
|
70
|
+
asChild: true,
|
|
71
|
+
children: /* @__PURE__ */ jsxs(Button, {
|
|
72
|
+
variant: "invisible",
|
|
73
|
+
size: "icon-sm",
|
|
74
|
+
children: [/* @__PURE__ */ jsx(X, {}), /* @__PURE__ */ jsx("span", {
|
|
75
|
+
className: "tw:sr-only",
|
|
76
|
+
children: "Close"
|
|
77
|
+
})]
|
|
78
|
+
})
|
|
79
|
+
})] }),
|
|
80
|
+
(description || ariaDescription) && /* @__PURE__ */ jsx(ModalDescription, {
|
|
81
|
+
className: cn("tw:col-start-1", "tw:col-end-4", "tw:row-start-2", description ? "tw:mt-1" : "tw:sr-only"),
|
|
82
|
+
children: description ?? ariaDescription
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ jsx("div", {
|
|
85
|
+
className: cn("tw:col-start-1", "tw:col-end-4", "tw:mt-5", "tw:hidden", "tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body])_&]:block", "tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body]_[data-slot=tabs-root])_&]:!hidden"),
|
|
86
|
+
children: /* @__PURE__ */ jsx(Separator, { orientation: "horizontal" })
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/components/Modal/ModalIcon.tsx
|
|
92
|
+
const NAMED_COLORS = /* @__PURE__ */ new Set([
|
|
93
|
+
"orange",
|
|
94
|
+
"blue",
|
|
95
|
+
"red",
|
|
96
|
+
"green",
|
|
97
|
+
"gray",
|
|
98
|
+
"violet"
|
|
99
|
+
]);
|
|
100
|
+
/**
|
|
101
|
+
* Status-coloured icon for `Modal`. Authored inside `Modal.Header`. For a remote image badge (a
|
|
102
|
+
* component or backend logo fetched by URL) use `Modal.Image` instead.
|
|
103
|
+
*
|
|
104
|
+
* - **Legacy anatomy:** a solid-filled circular badge docked to the top-left of `Modal.Content`
|
|
105
|
+
* (absolutely positioned, so it renders identically wherever it is authored).
|
|
106
|
+
* - **Argo anatomy** (`data-argo` on `Modal.Content`): a small soft-tinted inline badge in the
|
|
107
|
+
* header grid, next to the title.
|
|
108
|
+
*
|
|
109
|
+
* Both variants are rendered and toggled purely via CSS (`group-data-[argo=true]/modal:`) — no
|
|
110
|
+
* context. Use the categorical `color` (`red` destructive, `orange` warning, `green` success,
|
|
111
|
+
* `blue` info, `gray` neutral, `violet` agent) to encode meaning; the palette stays fixed across
|
|
112
|
+
* brand themes.
|
|
113
|
+
*/
|
|
114
|
+
const ModalIcon = ({ color, icon }) => {
|
|
115
|
+
const customColor = color && !NAMED_COLORS.has(color) ? color : void 0;
|
|
116
|
+
return /* @__PURE__ */ jsx("span", {
|
|
117
|
+
"data-slot": "modal-icon",
|
|
118
|
+
className: cn("tw:flex", "tw:shrink-0", "tw:items-center", "tw:justify-center", "tw:[&_svg]:aspect-square", "tw:group-data-[argo=false]/modal:absolute", "tw:group-data-[argo=false]/modal:top-0", "tw:group-data-[argo=false]/modal:left-8", "tw:group-data-[argo=false]/modal:-translate-y-1/2", "tw:group-data-[argo=false]/modal:size-12", "tw:group-data-[argo=false]/modal:rounded-full", "tw:group-data-[argo=false]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-6", "tw:group-data-[argo=true]/modal:col-start-1", "tw:group-data-[argo=true]/modal:row-start-1", "tw:group-data-[argo=true]/modal:self-start", "tw:group-data-[argo=true]/modal:mr-3", "tw:group-data-[argo=true]/modal:size-8", "tw:group-data-[argo=true]/modal:rounded", "tw:group-data-[argo=true]/modal:overflow-hidden", "tw:group-data-[argo=true]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-5", {
|
|
119
|
+
"tw:group-data-[argo=false]/modal:bg-warning-500": color === "orange",
|
|
120
|
+
"tw:group-data-[argo=false]/modal:bg-blue-500": color === "blue",
|
|
121
|
+
"tw:group-data-[argo=false]/modal:bg-green-500": color === "green",
|
|
122
|
+
"tw:group-data-[argo=false]/modal:bg-error-500": color === "red",
|
|
123
|
+
"tw:group-data-[argo=false]/modal:bg-neutral-150": color === "gray",
|
|
124
|
+
"tw:group-data-[argo=false]/modal:bg-purple-100": color === "violet",
|
|
125
|
+
"tw:group-data-[argo=false]/modal:text-white": color !== "violet",
|
|
126
|
+
"tw:group-data-[argo=false]/modal:text-purple-500": color === "violet"
|
|
127
|
+
}, {
|
|
128
|
+
"tw:group-data-[argo=true]/modal:bg-warning-100 tw:group-data-[argo=true]/modal:text-warning-500": color === "orange",
|
|
129
|
+
"tw:group-data-[argo=true]/modal:bg-blue-100 tw:group-data-[argo=true]/modal:text-blue-600": color === "blue",
|
|
130
|
+
"tw:group-data-[argo=true]/modal:bg-green-100 tw:group-data-[argo=true]/modal:text-green-900": color === "green",
|
|
131
|
+
"tw:group-data-[argo=true]/modal:bg-error-100 tw:group-data-[argo=true]/modal:text-error-500": color === "red",
|
|
132
|
+
"tw:group-data-[argo=true]/modal:bg-neutral-100 tw:group-data-[argo=true]/modal:text-neutral-500": color === "gray",
|
|
133
|
+
"tw:group-data-[argo=true]/modal:bg-purple-100 tw:group-data-[argo=true]/modal:text-purple-500": color === "violet"
|
|
134
|
+
}, { "tw:text-white": !!customColor }),
|
|
135
|
+
style: customColor ? { backgroundColor: customColor } : void 0,
|
|
136
|
+
children: icon
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/components/Modal/ModalImage.tsx
|
|
141
|
+
const ModalImage = ({ src, alt = "" }) => {
|
|
142
|
+
const [hasImageError, setHasImageError] = useState(false);
|
|
143
|
+
useEffect(() => setHasImageError(false), [src]);
|
|
144
|
+
if (hasImageError) return null;
|
|
145
|
+
return /* @__PURE__ */ jsx("span", {
|
|
146
|
+
"data-slot": "modal-image",
|
|
147
|
+
className: cn("tw:shrink-0", "tw:overflow-hidden", "tw:group-data-[argo=false]/modal:absolute", "tw:group-data-[argo=false]/modal:top-0", "tw:group-data-[argo=false]/modal:left-8", "tw:group-data-[argo=false]/modal:-translate-y-1/2", "tw:group-data-[argo=false]/modal:size-12", "tw:group-data-[argo=false]/modal:rounded-full", "tw:group-data-[argo=true]/modal:flex", "tw:group-data-[argo=true]/modal:col-start-1", "tw:group-data-[argo=true]/modal:row-start-1", "tw:group-data-[argo=true]/modal:self-start", "tw:group-data-[argo=true]/modal:mr-3", "tw:group-data-[argo=true]/modal:items-center", "tw:group-data-[argo=true]/modal:justify-center", "tw:group-data-[argo=true]/modal:rounded", "tw:group-data-[argo=true]/modal:size-8"),
|
|
148
|
+
children: /* @__PURE__ */ jsx("img", {
|
|
149
|
+
src,
|
|
150
|
+
alt,
|
|
151
|
+
className: "tw:size-full tw:object-contain",
|
|
152
|
+
onError: () => setHasImageError(true)
|
|
153
|
+
})
|
|
154
|
+
});
|
|
155
|
+
};
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/components/Modal/Modal.tsx
|
|
158
|
+
/**
|
|
159
|
+
* Blocking dialog for confirmations, forms, and detail views. Built on Radix Dialog.
|
|
160
|
+
*
|
|
161
|
+
* **When to use:** the user must act before continuing (confirm a destructive action, fill a short form,
|
|
162
|
+
* view a focused detail panel). Use the compound parts `Modal.Trigger`, `Modal.Content`, `Modal.Header`,
|
|
163
|
+
* `Modal.Body`, `Modal.Footer`, and optionally `Modal.Icon` for a status-coloured header glyph.
|
|
164
|
+
* **When NOT to use:** for slide-in side editing use `Sheet`; for an inline destructive confirmation anchored
|
|
165
|
+
* to its trigger use `Popconfirm`; for hover previews use `HoverCard`.
|
|
166
|
+
* **Composition:** wrap `Modal.Content` around `Modal.Header` + `Modal.Body` + `Modal.Footer`. Put `useAppForm`
|
|
167
|
+
* `FormBody` inside `Modal.Body` and the submit / cancel buttons inside `Modal.Footer`.
|
|
168
|
+
*
|
|
169
|
+
* @see RECIPES.md#modal-form — for the canonical form-in-modal composition
|
|
170
|
+
* @see RECIPES.md#confirm-dialog — for destructive-confirm dialogs
|
|
171
|
+
*/
|
|
172
|
+
const Modal = (props) => /* @__PURE__ */ jsx(Root, { ...props });
|
|
173
|
+
Modal.Close = Close;
|
|
174
|
+
Modal.Trigger = Trigger;
|
|
175
|
+
Modal.Content = ModalContent;
|
|
176
|
+
Modal.Body = ModalBody;
|
|
177
|
+
Modal.Icon = ModalIcon;
|
|
178
|
+
Modal.Image = ModalImage;
|
|
179
|
+
Modal.Footer = ModalFooter;
|
|
180
|
+
Modal.Header = ModalHeader;
|
|
181
|
+
Modal.Overlay = ModalOverlay;
|
|
182
|
+
//#endregion
|
|
183
|
+
export { Modal };
|
|
184
|
+
|
|
185
|
+
//# sourceMappingURL=Modal-BA5Wc3sx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal-BA5Wc3sx.js","names":[],"sources":["../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalContent.tsx","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalActions.tsx","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/ModalIcon.tsx","../src/components/Modal/ModalImage.tsx","../src/components/Modal/Modal.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\n/** Props for `Modal.Body`. Accepts all `<div>` attributes; `as=\"form\"` is reserved for future use. */\ntype Props = ComponentProps<'div'> & {\n as?: 'form';\n};\n\n/**\n * Scrollable body slot for `Modal`. Place form fields, content blocks, or detail panels here.\n * Takes available height inside `Modal.Content` and scrolls when content overflows.\n */\nexport const ModalBody = ({ className, ...props }: Props) => (\n <div\n data-slot=\"modal-body\"\n className={cn(\n // scrollable body - takes available space and scrolls when content overflows\n 'tw:flex-1',\n 'tw:overflow-y-auto',\n\n // argo: soft top/bottom edge fade in place of header/footer separators (pure-CSS utility)\n 'tw:group-data-[argo=true]/modal:scroll-fade-y',\n\n // Own horizontal padding, matching Header/Footer so content edges align (ModalContent adds none)\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n 'tw:py-1',\n\n // normalize nested Lucide icon sizing, matching Popover/HoverCard/Alert content surfaces\n \"tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4\",\n 'tw:[&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\nimport { useArgoDesign } from '../ThemeProvider/context';\n\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Content> & {\n size?: 'small' | 'medium' | 'large';\n};\n\nexport const ModalContent = ({\n size = 'medium',\n className,\n children,\n onEscapeKeyDown,\n ...props\n}: Props) => {\n const renderArgo = useArgoDesign();\n\n const handleEscapeKeyDown: typeof onEscapeKeyDown = (event) => {\n // Stop propagation to prevent parent modals (like FullScreenModal) from closing\n event.stopPropagation();\n onEscapeKeyDown?.(event);\n };\n\n return (\n <Portal>\n <ModalOverlay>\n <Content\n // props first so callers can't override the computed data-argo / data-size\n {...props}\n data-argo={renderArgo}\n data-size={size}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:group/modal',\n\n // positioning - horizontally centered; vertical anchor depends on the design language\n 'tw:fixed',\n 'tw:left-1/2',\n 'tw:-translate-x-1/2',\n 'tw:z-[1051]',\n\n // legacy: anchored near the top; argo: centered in the viewport (like AlertModal)\n 'tw:data-[argo=false]:top-20',\n 'tw:data-[argo=true]:top-1/2',\n 'tw:data-[argo=true]:-translate-y-1/2',\n\n // sizing - responsive max dimensions\n 'tw:w-full',\n 'tw:max-w-2xl',\n 'tw:max-h-[calc(100vh-2*theme(spacing.20))]',\n\n // layout\n 'tw:flex',\n 'tw:flex-col',\n 'tw:gap-4',\n 'tw:data-[argo=false]:rounded-lg',\n 'tw:data-[argo=true]:rounded-3xl',\n 'tw:bg-card',\n 'tw:text-card-foreground',\n\n // Vertical (edge) padding lives here so it survives an omitted Header or Footer.\n // Horizontal padding is owned by Header / Body / Footer, so the Body runs full-bleed and\n // its scrollbar sits at the modal edge (see ModalBody).\n 'tw:data-[argo=false]:py-8',\n 'tw:data-[argo=true]:py-4',\n\n // animation — shared\n 'tw:duration-200',\n 'tw:data-[state=open]:animate-in',\n 'tw:data-[state=open]:fade-in-0',\n 'tw:data-[state=closed]:animate-out',\n 'tw:data-[state=closed]:fade-out-0',\n\n // NOTE: no `slide-*-left-1/2` (both) or argo `slide-*-top-1/2`. Those re-pinned the\n // -50%/-50% centring during the animation under v3, where centring and the animation\n // shared the `transform` property (the animation overrode it). Under v4 the centring\n // uses the `translate` PROPERTY while tw-animate-css animates `transform` — they compose\n // instead of overriding, so a -50% enter-translate stacks on the -50% centring (= -100%)\n // and the modal flies in from the top-left. Centring now persists on its own, so we\n // animate transform-only (zoom + fade) and the modal stays put.\n\n // legacy: slide-down + zoom (top-anchored via `top-20`, so no `translate-y` to double)\n 'tw:data-[argo=false]:data-[state=open]:zoom-in-80',\n 'tw:data-[argo=false]:data-[state=open]:slide-in-from-top-[48%]',\n 'tw:data-[argo=false]:data-[state=closed]:zoom-out-80',\n 'tw:data-[argo=false]:data-[state=closed]:slide-out-to-top-[48%]',\n\n // argo: pop from the centre — zoom only\n 'tw:data-[argo=true]:data-[state=open]:zoom-in-95',\n 'tw:data-[argo=true]:data-[state=closed]:zoom-out-95',\n\n {\n 'tw:max-w-[480px]': size === 'small',\n 'tw:max-w-4xl': size === 'large',\n },\n\n className,\n )}\n onEscapeKeyDown={handleEscapeKeyDown}\n >\n {children}\n </Content>\n </ModalOverlay>\n </Portal>\n );\n};\n","import type { ComponentPropsWithRef } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithRef<'div'>;\n\nexport const ModalFooter = ({ className, ...props }: Props) => (\n <div\n {...props}\n className={cn(\n // Own horizontal padding (ModalContent owns the vertical edge padding)\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\n/**\n * Container for the header's top-right controls — any `actions` passed to `Modal.Header` plus the\n * close icon. Sits in the header grid's last column, top-aligned. Mirrors `Alert`'s action slot.\n */\nexport const ModalActions = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw:col-start-3',\n 'tw:row-start-1',\n 'tw:self-start',\n 'tw:flex',\n 'tw:items-center',\n 'tw:gap-1',\n // argo: gutter separating the actions/close from the title (carried here so the grid needs no\n // column gap — see ModalHeader)\n 'tw:group-data-[argo=true]/modal:ml-3',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Close } from '@radix-ui/react-dialog';\n\nimport { X } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Separator } from '../Separator';\n\nimport { ModalActions } from './ModalActions';\nimport { ModalDescription } from './ModalDescription';\nimport { ModalTitle } from './ModalTitle';\n\ntype Props = {\n /** Status icon slot — `<Modal.Icon />` or `<Modal.Image />`. */\n icon?: ReactNode;\n /** Visible subtitle below the title (also fills `aria-describedby`). */\n description?: ReactNode;\n /** Screen-reader-only description; fills `aria-describedby` without rendering visibly. */\n 'aria-description'?: string;\n /** Controls rendered top-right, before the close icon. */\n actions?: ReactNode;\n /** Hide the top-right close icon. */\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\n/** Modal header: `[icon] | title (children) | actions + close` on row 1, `description` on row 2. */\nexport const ModalHeader = ({\n className,\n icon,\n description,\n 'aria-description': ariaDescription,\n actions,\n hideCloseIcon = false,\n children,\n ...props\n}: Props) => (\n <div\n {...props}\n data-slot=\"modal-header\"\n className={cn(\n 'tw:grid',\n 'tw:grid-cols-[auto_1fr_auto]',\n 'tw:items-center',\n 'tw:group-data-[argo=false]/modal:px-7',\n 'tw:group-data-[argo=true]/modal:px-4',\n className,\n )}\n >\n {icon}\n\n {children && <ModalTitle className=\"tw:col-start-2 tw:row-start-1\">{children}</ModalTitle>}\n {(actions || !hideCloseIcon) && (\n <ModalActions>\n {actions}\n {!hideCloseIcon && (\n <Close asChild>\n <Button variant=\"invisible\" size=\"icon-sm\">\n <X />\n <span className=\"tw:sr-only\">Close</span>\n </Button>\n </Close>\n )}\n </ModalActions>\n )}\n {(description || ariaDescription) && (\n <ModalDescription\n className={cn(\n 'tw:col-start-1',\n 'tw:col-end-4',\n 'tw:row-start-2',\n description ? 'tw:mt-1' : 'tw:sr-only',\n )}\n >\n {description ?? ariaDescription}\n </ModalDescription>\n )}\n\n {/* Legacy-only separator; shown when a Body follows, hidden when that body hosts Tabs. */}\n <div\n className={cn(\n 'tw:col-start-1',\n 'tw:col-end-4',\n 'tw:mt-5',\n 'tw:hidden',\n 'tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body])_&]:block',\n 'tw:group-data-[argo=false]/modal:[[data-slot=modal-header]:has(~[data-slot=modal-body]_[data-slot=tabs-root])_&]:!hidden',\n )}\n >\n <Separator orientation=\"horizontal\" />\n </div>\n </div>\n);\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype NamedColor = 'orange' | 'blue' | 'red' | 'green' | 'gray' | 'violet';\n\ntype Props = {\n color: NamedColor | (string & {});\n icon: ReactNode;\n};\n\nconst NAMED_COLORS = new Set<string>(['orange', 'blue', 'red', 'green', 'gray', 'violet']);\n\n/**\n * Status-coloured icon for `Modal`. Authored inside `Modal.Header`. For a remote image badge (a\n * component or backend logo fetched by URL) use `Modal.Image` instead.\n *\n * - **Legacy anatomy:** a solid-filled circular badge docked to the top-left of `Modal.Content`\n * (absolutely positioned, so it renders identically wherever it is authored).\n * - **Argo anatomy** (`data-argo` on `Modal.Content`): a small soft-tinted inline badge in the\n * header grid, next to the title.\n *\n * Both variants are rendered and toggled purely via CSS (`group-data-[argo=true]/modal:`) — no\n * context. Use the categorical `color` (`red` destructive, `orange` warning, `green` success,\n * `blue` info, `gray` neutral, `violet` agent) to encode meaning; the palette stays fixed across\n * brand themes.\n */\nexport const ModalIcon = ({ color, icon }: Props) => {\n const customColor = color && !NAMED_COLORS.has(color) ? color : undefined;\n\n return (\n <span\n data-slot=\"modal-icon\"\n className={cn(\n 'tw:flex',\n 'tw:shrink-0',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:[&_svg]:aspect-square',\n\n // legacy: solid-filled circular badge floating at the modal's top-left\n 'tw:group-data-[argo=false]/modal:absolute',\n 'tw:group-data-[argo=false]/modal:top-0',\n 'tw:group-data-[argo=false]/modal:left-8',\n 'tw:group-data-[argo=false]/modal:-translate-y-1/2',\n 'tw:group-data-[argo=false]/modal:size-12',\n 'tw:group-data-[argo=false]/modal:rounded-full',\n 'tw:group-data-[argo=false]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-6',\n\n // argo: soft-tinted inline badge in the header grid's first column\n 'tw:group-data-[argo=true]/modal:col-start-1',\n 'tw:group-data-[argo=true]/modal:row-start-1',\n 'tw:group-data-[argo=true]/modal:self-start',\n 'tw:group-data-[argo=true]/modal:mr-3',\n 'tw:group-data-[argo=true]/modal:size-8',\n 'tw:group-data-[argo=true]/modal:rounded',\n 'tw:group-data-[argo=true]/modal:overflow-hidden',\n 'tw:group-data-[argo=true]/modal:[&_svg:not([class*=\"tw:size-\"])]:size-5',\n\n // legacy palette: solid fill + white glyph (violet is the exception — tinted)\n {\n 'tw:group-data-[argo=false]/modal:bg-warning-500': color === 'orange',\n 'tw:group-data-[argo=false]/modal:bg-blue-500': color === 'blue',\n 'tw:group-data-[argo=false]/modal:bg-green-500': color === 'green',\n 'tw:group-data-[argo=false]/modal:bg-error-500': color === 'red',\n 'tw:group-data-[argo=false]/modal:bg-neutral-150': color === 'gray',\n 'tw:group-data-[argo=false]/modal:bg-purple-100': color === 'violet',\n 'tw:group-data-[argo=false]/modal:text-white': color !== 'violet',\n 'tw:group-data-[argo=false]/modal:text-purple-500': color === 'violet',\n },\n\n // argo palette: soft tint + matching glyph colour\n {\n 'tw:group-data-[argo=true]/modal:bg-warning-100 tw:group-data-[argo=true]/modal:text-warning-500':\n color === 'orange',\n 'tw:group-data-[argo=true]/modal:bg-blue-100 tw:group-data-[argo=true]/modal:text-blue-600':\n color === 'blue',\n 'tw:group-data-[argo=true]/modal:bg-green-100 tw:group-data-[argo=true]/modal:text-green-900':\n color === 'green',\n 'tw:group-data-[argo=true]/modal:bg-error-100 tw:group-data-[argo=true]/modal:text-error-500':\n color === 'red',\n 'tw:group-data-[argo=true]/modal:bg-neutral-100 tw:group-data-[argo=true]/modal:text-neutral-500':\n color === 'gray',\n 'tw:group-data-[argo=true]/modal:bg-purple-100 tw:group-data-[argo=true]/modal:text-purple-500':\n color === 'violet',\n },\n\n // custom (non-named) colour: caller-provided fill + white glyph\n { 'tw:text-white': !!customColor },\n )}\n style={customColor ? { backgroundColor: customColor } : undefined}\n >\n {icon}\n </span>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n src: string;\n /** Accessible alt text. Defaults to `\"\"` (decorative) — provide it when the image carries meaning. */\n alt?: string;\n};\n\nexport const ModalImage = ({ src, alt = '' }: Props) => {\n const [hasImageError, setHasImageError] = useState(false);\n\n // Reset the error state when the source changes, so a reused badge (new logo, or a retry after a\n // transient failure) isn't permanently hidden by an earlier onError.\n useEffect(() => setHasImageError(false), [src]);\n\n if (hasImageError) return null;\n\n return (\n <span\n data-slot=\"modal-image\"\n className={cn(\n 'tw:shrink-0',\n 'tw:overflow-hidden',\n\n // legacy: circular badge floating at the top-left of the modal\n 'tw:group-data-[argo=false]/modal:absolute',\n 'tw:group-data-[argo=false]/modal:top-0',\n 'tw:group-data-[argo=false]/modal:left-8',\n 'tw:group-data-[argo=false]/modal:-translate-y-1/2',\n 'tw:group-data-[argo=false]/modal:size-12',\n 'tw:group-data-[argo=false]/modal:rounded-full',\n\n // argo: inline badge in the header grid's first column\n 'tw:group-data-[argo=true]/modal:flex',\n 'tw:group-data-[argo=true]/modal:col-start-1',\n 'tw:group-data-[argo=true]/modal:row-start-1',\n 'tw:group-data-[argo=true]/modal:self-start',\n 'tw:group-data-[argo=true]/modal:mr-3',\n 'tw:group-data-[argo=true]/modal:items-center',\n 'tw:group-data-[argo=true]/modal:justify-center',\n 'tw:group-data-[argo=true]/modal:rounded',\n 'tw:group-data-[argo=true]/modal:size-8',\n )}\n >\n <img\n src={src}\n alt={alt}\n className=\"tw:size-full tw:object-contain\"\n onError={() => setHasImageError(true)}\n />\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { ModalBody } from './ModalBody';\nimport { ModalContent } from './ModalContent';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalIcon } from './ModalIcon';\nimport { ModalImage } from './ModalImage';\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Root>;\n\n/**\n * Blocking dialog for confirmations, forms, and detail views. Built on Radix Dialog.\n *\n * **When to use:** the user must act before continuing (confirm a destructive action, fill a short form,\n * view a focused detail panel). Use the compound parts `Modal.Trigger`, `Modal.Content`, `Modal.Header`,\n * `Modal.Body`, `Modal.Footer`, and optionally `Modal.Icon` for a status-coloured header glyph.\n * **When NOT to use:** for slide-in side editing use `Sheet`; for an inline destructive confirmation anchored\n * to its trigger use `Popconfirm`; for hover previews use `HoverCard`.\n * **Composition:** wrap `Modal.Content` around `Modal.Header` + `Modal.Body` + `Modal.Footer`. Put `useAppForm`\n * `FormBody` inside `Modal.Body` and the submit / cancel buttons inside `Modal.Footer`.\n *\n * @see RECIPES.md#modal-form — for the canonical form-in-modal composition\n * @see RECIPES.md#confirm-dialog — for destructive-confirm dialogs\n */\nexport const Modal = (props: Props) => <Root {...props} />;\n\nModal.Close = Close;\nModal.Trigger = Trigger;\n\nModal.Content = ModalContent;\nModal.Body = ModalBody;\nModal.Icon = ModalIcon;\nModal.Image = ModalImage;\nModal.Footer = ModalFooter;\nModal.Header = ModalHeader;\nModal.Overlay = ModalOverlay;\n"],"mappings":";;;;;;;;;;;;;;AAaA,MAAa,aAAa,EAAE,WAAW,GAAG,YACxC,oBAAC,OAAD;CACE,aAAU;CACV,WAAW,GAET,aACA,sBAGA,iDAGA,yCACA,wCACA,WAGA,qDACA,uBACA,SACF;CACA,GAAI;AACL,CAAA;;;ACvBH,MAAa,gBAAgB,EAC3B,OAAO,UACP,WACA,UACA,iBACA,GAAG,YACQ;CACX,MAAM,aAAa,cAAc;CAEjC,MAAM,uBAA+C,UAAU;EAE7D,MAAM,gBAAgB;EACtB,kBAAkB,KAAK;CACzB;CAEA,OACE,oBAAC,QAAD,EAAA,UACE,oBAAC,cAAD,EAAA,UACE,oBAAC,SAAD;EAEE,GAAI;EACJ,aAAW;EACX,aAAW;EACX,WAAW,GACT,yBACA,kBAGA,YACA,eACA,uBACA,eAGA,+BACA,+BACA,wCAGA,aACA,gBACA,8CAGA,WACA,eACA,YACA,mCACA,mCACA,cACA,2BAKA,6BACA,4BAGA,mBACA,mCACA,kCACA,sCACA,qCAWA,qDACA,kEACA,wDACA,mEAGA,oDACA,uDAEA;GACE,oBAAoB,SAAS;GAC7B,gBAAgB,SAAS;EAC3B,GAEA,SACF;EACA,iBAAiB;EAEhB;CACM,CAAA,EACG,CAAA,EACR,CAAA;AAEZ;;;ACvGA,MAAa,eAAe,EAAE,WAAW,GAAG,YAC1C,oBAAC,OAAD;CACE,GAAI;CACJ,WAAW,GAET,yCACA,wCACA,SACF;AACD,CAAA;;;;;;;ACLH,MAAa,gBAAgB,EAAE,WAAW,GAAG,YAC3C,oBAAC,OAAD;CACE,WAAW,GACT,kBACA,kBACA,iBACA,WACA,mBACA,YAGA,wCACA,SACF;CACA,GAAI;AACL,CAAA;;;;ACCH,MAAa,eAAe,EAC1B,WACA,MACA,aACA,oBAAoB,iBACpB,SACA,gBAAgB,OAChB,UACA,GAAG,YAEH,qBAAC,OAAD;CACE,GAAI;CACJ,aAAU;CACV,WAAW,GACT,WACA,gCACA,mBACA,yCACA,wCACA,SACF;CAVF,UAAA;EAYG;EAEA,YAAY,oBAAC,YAAD;GAAY,WAAU;GAAiC;EAAqB,CAAA;GACvF,WAAW,CAAC,kBACZ,qBAAC,cAAD,EAAA,UAAA,CACG,SACA,CAAC,iBACA,oBAAC,OAAD;GAAO,SAAA;GACL,UAAA,qBAAC,QAAD;IAAQ,SAAQ;IAAY,MAAK;IAAjC,UAAA,CACE,oBAAC,GAAD,CAAI,CAAA,GACJ,oBAAC,QAAD;KAAM,WAAU;KAAa,UAAA;IAAW,CAAA,CAClC;;EACH,CAAA,CAEG,EAAA,CAAA;GAEd,eAAe,oBACf,oBAAC,kBAAD;GACE,WAAW,GACT,kBACA,gBACA,kBACA,cAAc,YAAY,YAC5B;GAEC,UAAA,eAAe;EACA,CAAA;EAIpB,oBAAC,OAAD;GACE,WAAW,GACT,kBACA,gBACA,WACA,aACA,oGACA,0HACF;GAEA,UAAA,oBAAC,WAAD,EAAW,aAAY,aAAc,CAAA;EAClC,CAAA;CACF;;;;AC/EP,MAAM,+BAAe,IAAI,IAAY;CAAC;CAAU;CAAQ;CAAO;CAAS;CAAQ;AAAQ,CAAC;;;;;;;;;;;;;;;AAgBzF,MAAa,aAAa,EAAE,OAAO,WAAkB;CACnD,MAAM,cAAc,SAAS,CAAC,aAAa,IAAI,KAAK,IAAI,QAAQ,KAAA;CAEhE,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GACT,WACA,eACA,mBACA,qBACA,4BAGA,6CACA,0CACA,2CACA,qDACA,4CACA,iDACA,8EAGA,+CACA,+CACA,8CACA,wCACA,0CACA,2CACA,mDACA,6EAGA;GACE,mDAAmD,UAAU;GAC7D,gDAAgD,UAAU;GAC1D,iDAAiD,UAAU;GAC3D,iDAAiD,UAAU;GAC3D,mDAAmD,UAAU;GAC7D,kDAAkD,UAAU;GAC5D,+CAA+C,UAAU;GACzD,oDAAoD,UAAU;EAChE,GAGA;GACE,mGACE,UAAU;GACZ,6FACE,UAAU;GACZ,+FACE,UAAU;GACZ,+FACE,UAAU;GACZ,mGACE,UAAU;GACZ,iGACE,UAAU;EACd,GAGA,EAAE,iBAAiB,CAAC,CAAC,YAAY,CACnC;EACA,OAAO,cAAc,EAAE,iBAAiB,YAAY,IAAI,KAAA;EAEvD,UAAA;CACG,CAAA;AAEV;;;ACrFA,MAAa,cAAc,EAAE,KAAK,MAAM,SAAgB;CACtD,MAAM,CAAC,eAAe,oBAAoB,SAAS,KAAK;CAIxD,gBAAgB,iBAAiB,KAAK,GAAG,CAAC,GAAG,CAAC;CAE9C,IAAI,eAAe,OAAO;CAE1B,OACE,oBAAC,QAAD;EACE,aAAU;EACV,WAAW,GACT,eACA,sBAGA,6CACA,0CACA,2CACA,qDACA,4CACA,iDAGA,wCACA,+CACA,+CACA,8CACA,wCACA,gDACA,kDACA,2CACA,wCACF;EAEA,UAAA,oBAAC,OAAD;GACO;GACA;GACL,WAAU;GACV,eAAe,iBAAiB,IAAI;EACrC,CAAA;CACG,CAAA;AAEV;;;;;;;;;;;;;;;;;AC3BA,MAAa,SAAS,UAAiB,oBAAC,MAAD,EAAM,GAAI,MAAQ,CAAA;AAEzD,MAAM,QAAQ;AACd,MAAM,UAAU;AAEhB,MAAM,UAAU;AAChB,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,SAAS;AACf,MAAM,UAAU"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
4
|
+
import { Overlay, Title } from "@radix-ui/react-dialog";
|
|
5
|
+
//#region src/components/Modal/ModalOverlay.tsx
|
|
6
|
+
const ModalOverlay = ({ ref, className, disableTransition = false, ...props }) => /* @__PURE__ */ jsx(Overlay, {
|
|
7
|
+
...props,
|
|
8
|
+
ref,
|
|
9
|
+
className: cn("tw:fixed", "tw:inset-0", "tw:z-[1051]", "tw:bg-black/50", "tw:data-[state=open]:duration-500", "tw:data-[state=open]:fade-in-0", "tw:data-[state=closed]:duration-500", "tw:data-[state=closed]:fade-out-0", { "tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out": !disableTransition }, className),
|
|
10
|
+
onClick: (event) => event.stopPropagation()
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/components/Modal/ModalDescription.tsx
|
|
14
|
+
const ModalDescription = ({ className, ...props }) => /* @__PURE__ */ jsx(DialogPrimitive.Description, {
|
|
15
|
+
className: cn("tw:text-sm", "tw:font-sans", "tw:tracking-normal", "tw:font-normal", "tw:text-neutral-400", className),
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
//#region src/components/Modal/ModalTitle.tsx
|
|
20
|
+
const ModalTitle = ({ children, className, ...props }) => /* @__PURE__ */ jsx(Title, {
|
|
21
|
+
...props,
|
|
22
|
+
className: cn("tw:flex-1", "tw:break-anywhere", "tw:text-base", "tw:font-semibold", className),
|
|
23
|
+
children
|
|
24
|
+
});
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ModalDescription, ModalOverlay, ModalTitle };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=ModalTitle-C76ke2eo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalTitle-C76ke2eo.js","names":[],"sources":["../src/components/Modal/ModalOverlay.tsx","../src/components/Modal/ModalDescription.tsx","../src/components/Modal/ModalTitle.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Overlay> & {\n disableTransition?: boolean;\n};\n\nexport const ModalOverlay = ({ ref, className, disableTransition = false, ...props }: Props) => (\n <Overlay\n {...props}\n ref={ref}\n className={cn(\n // positioning\n 'tw:fixed',\n 'tw:inset-0',\n 'tw:z-[1051]',\n\n // background\n 'tw:bg-black/50',\n\n // opening animation\n 'tw:data-[state=open]:duration-500',\n 'tw:data-[state=open]:fade-in-0',\n\n // closing animation\n 'tw:data-[state=closed]:duration-500',\n 'tw:data-[state=closed]:fade-out-0',\n {\n 'tw:data-[state=open]:animate-in tw:data-[state=closed]:animate-out': !disableTransition,\n },\n className,\n )}\n onClick={(event) => event.stopPropagation()}\n />\n);\n","import type { ComponentProps } from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DialogPrimitive.Description>;\n\nexport const ModalDescription = ({ className, ...props }: Props) => (\n <DialogPrimitive.Description\n className={cn(\n 'tw:text-sm',\n 'tw:font-sans',\n 'tw:tracking-normal',\n 'tw:font-normal',\n 'tw:text-neutral-400',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Title>;\n\nexport const ModalTitle = ({ children, className, ...props }: Props) => (\n <Title\n {...props}\n className={cn('tw:flex-1', 'tw:break-anywhere', 'tw:text-base', 'tw:font-semibold', className)}\n >\n {children}\n </Title>\n);\n"],"mappings":";;;;;AASA,MAAa,gBAAgB,EAAE,KAAK,WAAW,oBAAoB,OAAO,GAAG,YAC3E,oBAAC,SAAD;CACE,GAAI;CACC;CACL,WAAW,GAET,YACA,cACA,eAGA,kBAGA,qCACA,kCAGA,uCACA,qCACA,EACE,sEAAsE,CAAC,kBACzE,GACA,SACF;CACA,UAAU,UAAU,MAAM,gBAAgB;AAC3C,CAAA;;;AC5BH,MAAa,oBAAoB,EAAE,WAAW,GAAG,YAC/C,oBAAC,gBAAgB,aAAjB;CACE,WAAW,GACT,cACA,gBACA,sBACA,kBACA,uBACA,SACF;CACA,GAAI;AACL,CAAA;;;ACXH,MAAa,cAAc,EAAE,UAAU,WAAW,GAAG,YACnD,oBAAC,OAAD;CACE,GAAI;CACJ,WAAW,GAAG,aAAa,qBAAqB,gBAAgB,oBAAoB,SAAS;CAE5F;AACI,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { Tooltip } from "./utils-D0c5VAyF.js";
|
|
3
|
+
import { Button } from "./Button-nzmDNS2q.js";
|
|
4
|
+
import { ButtonGroup } from "./internal/components/ButtonGroup.js";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/blocks/MultiActionButtonGroup/MultiActionButton.tsx
|
|
7
|
+
const MultiActionButton = ({ disabled, icon, isLoading, label, onClick, tooltipContent, tooltipVariant, "data-testid": dataTestId }) => /* @__PURE__ */ jsx(Tooltip, {
|
|
8
|
+
placement: "top",
|
|
9
|
+
tooltip: tooltipContent,
|
|
10
|
+
triggerAsChild: true,
|
|
11
|
+
variant: tooltipVariant,
|
|
12
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
13
|
+
disabled,
|
|
14
|
+
isLoading,
|
|
15
|
+
"aria-label": label,
|
|
16
|
+
onClick,
|
|
17
|
+
variant: "invisible",
|
|
18
|
+
size: "icon",
|
|
19
|
+
"data-testid": dataTestId,
|
|
20
|
+
children: !isLoading && icon
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx
|
|
25
|
+
const MultiActionButtonGroup = ({ children, className }) => /* @__PURE__ */ jsx(ButtonGroup, {
|
|
26
|
+
className: cn("tw:text-nowrap", className),
|
|
27
|
+
children
|
|
28
|
+
});
|
|
29
|
+
MultiActionButtonGroup.Button = MultiActionButton;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { MultiActionButtonGroup };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=MultiActionButtonGroup-CiBHxsSk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiActionButtonGroup-CiBHxsSk.js","names":[],"sources":["../src/blocks/MultiActionButtonGroup/MultiActionButton.tsx","../src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx"],"sourcesContent":["import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Tooltip } from '../../components/Tooltip';\n\ntype Props = {\n disabled?: boolean;\n icon: ReactNode;\n isLoading?: boolean;\n label: string;\n onClick: ComponentProps<typeof Button>['onClick'];\n tooltipContent: ReactNode;\n tooltipVariant?: ComponentProps<typeof Tooltip>['variant'];\n 'data-testid'?: string;\n};\n\nexport const MultiActionButton = ({\n disabled,\n icon,\n isLoading,\n label,\n onClick,\n tooltipContent,\n tooltipVariant,\n 'data-testid': dataTestId,\n}: Props) => (\n <Tooltip placement=\"top\" tooltip={tooltipContent} triggerAsChild variant={tooltipVariant}>\n <Button\n disabled={disabled}\n isLoading={isLoading}\n aria-label={label}\n onClick={onClick}\n variant=\"invisible\"\n size=\"icon\"\n data-testid={dataTestId}\n >\n {!isLoading && icon}\n </Button>\n </Tooltip>\n);\n","import type { PropsWithChildren } from 'react';\n\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { cn } from '../../utils';\n\nimport { MultiActionButton } from './MultiActionButton';\n\ntype Props = {\n className?: string;\n} & PropsWithChildren;\n\nexport const MultiActionButtonGroup = ({ children, className }: Props) => (\n <ButtonGroup className={cn('tw:text-nowrap', className)}>{children}</ButtonGroup>\n);\n\nMultiActionButtonGroup.Button = MultiActionButton;\n"],"mappings":";;;;;;AAgBA,MAAa,qBAAqB,EAChC,UACA,MACA,WACA,OACA,SACA,gBACA,gBACA,eAAe,iBAEf,oBAAC,SAAD;CAAS,WAAU;CAAM,SAAS;CAAgB,gBAAA;CAAe,SAAS;CACxE,UAAA,oBAAC,QAAD;EACY;EACC;EACX,cAAY;EACH;EACT,SAAQ;EACR,MAAK;EACL,eAAa;EAEZ,UAAA,CAAC,aAAa;CACT,CAAA;AACD,CAAA;;;AC3BX,MAAa,0BAA0B,EAAE,UAAU,gBACjD,oBAAC,aAAD;CAAa,WAAW,GAAG,kBAAkB,SAAS;CAAI;AAAsB,CAAA;AAGlF,uBAAuB,SAAS"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { Search } from "./icons-Cek151jC.js";
|
|
3
|
+
import { ScrollArea } from "./internal/components/ScrollArea.js";
|
|
4
|
+
import { BrandLogo } from "./BrandLogo-CJkRd0F8.js";
|
|
5
|
+
import { Root, Slot, Slottable } from "@radix-ui/react-slot";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import BoringAvatar from "boring-avatars";
|
|
9
|
+
import * as RadixAvatar from "@radix-ui/react-avatar";
|
|
10
|
+
//#region src/components/Navbar/NavbarContent.tsx
|
|
11
|
+
const NavbarContent = ({ children, className }) => /* @__PURE__ */ jsx(ScrollArea, {
|
|
12
|
+
type: "auto",
|
|
13
|
+
orientation: "horizontal",
|
|
14
|
+
className: "tw:flex-1",
|
|
15
|
+
scrollBarClassName: "tw:h-1.5",
|
|
16
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
17
|
+
className: cn("tw:flex", "tw:py-1.5", className),
|
|
18
|
+
children
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/components/Navbar/NavbarFooter.tsx
|
|
23
|
+
const NavbarFooter = ({ children, className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
24
|
+
...rest,
|
|
25
|
+
className: cn("tw:flex tw:items-center tw:gap-2 tw:py-1.5", className),
|
|
26
|
+
children
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/components/Navbar/NavbarHeader.tsx
|
|
30
|
+
const NavbarHeader = ({ children, className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
31
|
+
...rest,
|
|
32
|
+
className: cn("tw:overflow-hidden", "tw:py-1.5", className),
|
|
33
|
+
children: children ?? /* @__PURE__ */ jsx(BrandLogo, {
|
|
34
|
+
variant: "wordmark",
|
|
35
|
+
className: "tw:h-7"
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/components/Navbar/NavbarMenu.tsx
|
|
40
|
+
const variants$2 = cva([
|
|
41
|
+
"tw:m-0",
|
|
42
|
+
"tw:p-0",
|
|
43
|
+
"tw:flex",
|
|
44
|
+
"tw:items-center",
|
|
45
|
+
"tw:justify-center",
|
|
46
|
+
"tw:gap-2"
|
|
47
|
+
], {
|
|
48
|
+
variants: { marker: {
|
|
49
|
+
none: [],
|
|
50
|
+
"forward-slash": [
|
|
51
|
+
"tw:[&_li]:flex",
|
|
52
|
+
"tw:[&_li]:items-center",
|
|
53
|
+
"tw:[&_li]:before:content-[\"/\"]",
|
|
54
|
+
"tw:[&_li]:before:text-border",
|
|
55
|
+
"tw:[&_li]:before:text-sm",
|
|
56
|
+
"tw:[&_li]:before:mr-0.5",
|
|
57
|
+
"tw:[&_li:not(:first-child)]:before:ml-0.5"
|
|
58
|
+
]
|
|
59
|
+
} },
|
|
60
|
+
defaultVariants: { marker: "none" }
|
|
61
|
+
});
|
|
62
|
+
const NavbarMenu = ({ className, marker, ...rest }) => /* @__PURE__ */ jsx("ul", {
|
|
63
|
+
...rest,
|
|
64
|
+
className: variants$2({
|
|
65
|
+
marker,
|
|
66
|
+
className
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/components/Navbar/NavbarMenuAvatar.tsx
|
|
71
|
+
const NavbarMenuAvatar = ({ ref, className, type = "button", src, alt, ...rest }) => {
|
|
72
|
+
const altText = alt ?? "Avatar";
|
|
73
|
+
return /* @__PURE__ */ jsx("button", {
|
|
74
|
+
...rest,
|
|
75
|
+
ref,
|
|
76
|
+
type,
|
|
77
|
+
className: cn("tw:flex", "tw:items-center", "tw:justify-center", "tw:size-8", "tw:aspect-square", "tw:overflow-hidden", "tw:shrink-0", "tw:rounded-lg", "tw:bg-transparent", "tw:cursor-pointer", "tw:disabled:opacity-50", "tw:disabled:cursor-not-allowed", "tw:focus-visible:outline-hidden", "tw:focus-visible:ring-2", "tw:focus-visible:ring-sidebar-ring/50", className),
|
|
78
|
+
children: /* @__PURE__ */ jsxs(RadixAvatar.Root, { children: [/* @__PURE__ */ jsx(RadixAvatar.Image, {
|
|
79
|
+
src,
|
|
80
|
+
alt: altText,
|
|
81
|
+
className: "tw:size-full tw:object-cover"
|
|
82
|
+
}), /* @__PURE__ */ jsx(RadixAvatar.Fallback, {
|
|
83
|
+
asChild: true,
|
|
84
|
+
children: /* @__PURE__ */ jsx(BoringAvatar, {
|
|
85
|
+
square: true,
|
|
86
|
+
name: altText,
|
|
87
|
+
variant: "beam",
|
|
88
|
+
colors: [
|
|
89
|
+
"#1F8FFF",
|
|
90
|
+
"#004787",
|
|
91
|
+
"#28D8FF",
|
|
92
|
+
"#925cff",
|
|
93
|
+
"#A8C2E6"
|
|
94
|
+
],
|
|
95
|
+
size: 32
|
|
96
|
+
})
|
|
97
|
+
})] })
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
//#endregion
|
|
101
|
+
//#region src/components/Navbar/NavbarMenuItemAdornment.tsx
|
|
102
|
+
const variants$1 = cva([
|
|
103
|
+
"tw:flex",
|
|
104
|
+
"tw:justify-center",
|
|
105
|
+
"tw:items-center",
|
|
106
|
+
"tw:[&_svg:not([class*=\"tw:size-\"])]:size-3",
|
|
107
|
+
"tw:[&:not(svg)]:h-5",
|
|
108
|
+
"tw:[&:not(svg)]:min-w-5",
|
|
109
|
+
"tw:p-1",
|
|
110
|
+
"tw:aspect-square",
|
|
111
|
+
"tw:rounded-md"
|
|
112
|
+
], {
|
|
113
|
+
defaultVariants: { variant: "icon-accent" },
|
|
114
|
+
variants: { variant: {
|
|
115
|
+
icon: ["tw:text-sidebar-foreground", "tw:[&_svg]:text-sidebar-foreground"],
|
|
116
|
+
"icon-emphasized": ["tw:text-white", "tw:[&_svg]:text-white"],
|
|
117
|
+
"icon-accent": [
|
|
118
|
+
"tw:group-data-[accent=blue]/navbar:text-sidebar-primary",
|
|
119
|
+
"tw:group-data-[accent=blue]/navbar:[&_svg]:text-sidebar-primary",
|
|
120
|
+
"tw:group-data-[accent=purple]/navbar:text-purple-500",
|
|
121
|
+
"tw:group-data-[accent=purple]/navbar:[&_svg]:text-purple-500",
|
|
122
|
+
"tw:group-data-[accent=orange]/navbar:text-warning-500",
|
|
123
|
+
"tw:group-data-[accent=orange]/navbar:[&_svg]:text-warning-500",
|
|
124
|
+
"tw:group-data-[accent=green]/navbar:text-primary-500",
|
|
125
|
+
"tw:group-data-[accent=green]/navbar:[&_svg]:text-primary-500"
|
|
126
|
+
],
|
|
127
|
+
"icon-accent-emphasized": [
|
|
128
|
+
"tw:text-white",
|
|
129
|
+
"tw:[&_svg]:text-white",
|
|
130
|
+
"tw:group-data-[accent=blue]/navbar:bg-sidebar-primary",
|
|
131
|
+
"tw:group-data-[accent=purple]/navbar:bg-purple-500",
|
|
132
|
+
"tw:group-data-[accent=orange]/navbar:bg-warning-500",
|
|
133
|
+
"tw:group-data-[accent=green]/navbar:bg-primary-500"
|
|
134
|
+
],
|
|
135
|
+
"icon-button": [
|
|
136
|
+
"tw:size-4",
|
|
137
|
+
"tw:!p-0",
|
|
138
|
+
"tw:[&_svg:not([class*=\"tw:size-\"])]:size-4"
|
|
139
|
+
],
|
|
140
|
+
shortcut: [
|
|
141
|
+
"tw:bg-muted",
|
|
142
|
+
"tw:text-sidebar-foreground",
|
|
143
|
+
"tw:ml-auto"
|
|
144
|
+
]
|
|
145
|
+
} }
|
|
146
|
+
});
|
|
147
|
+
const NavbarMenuItemAdornment = ({ ref, asChild = false, className, variant = "icon-accent", ...props }) => {
|
|
148
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "span", {
|
|
149
|
+
...props,
|
|
150
|
+
ref,
|
|
151
|
+
className: variants$1({
|
|
152
|
+
variant,
|
|
153
|
+
className
|
|
154
|
+
})
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
//#endregion
|
|
158
|
+
//#region src/components/Navbar/NavbarMenuButton.tsx
|
|
159
|
+
const variants = cva([
|
|
160
|
+
"tw:group/navbar-menu-button",
|
|
161
|
+
"tw:box-border",
|
|
162
|
+
"tw:flex",
|
|
163
|
+
"tw:items-center",
|
|
164
|
+
"tw:gap-2",
|
|
165
|
+
"tw:bg-transparent",
|
|
166
|
+
"tw:leading-9",
|
|
167
|
+
"tw:border",
|
|
168
|
+
"tw:rounded-lg",
|
|
169
|
+
"tw:whitespace-nowrap",
|
|
170
|
+
"tw:select-none",
|
|
171
|
+
"tw:!outline-hidden",
|
|
172
|
+
"tw:focus-visible:ring-2",
|
|
173
|
+
"tw:focus-visible:ring-sidebar-ring/50",
|
|
174
|
+
"tw:disabled:opacity-50",
|
|
175
|
+
"tw:disabled:hover:bg-transparent",
|
|
176
|
+
"tw:disabled:cursor-not-allowed"
|
|
177
|
+
], {
|
|
178
|
+
defaultVariants: { variant: "default" },
|
|
179
|
+
variants: { variant: {
|
|
180
|
+
default: [
|
|
181
|
+
"tw:max-h-9",
|
|
182
|
+
"tw:border-transparent",
|
|
183
|
+
"tw:py-2",
|
|
184
|
+
"tw:px-1.5",
|
|
185
|
+
"tw:text-sidebar-foreground",
|
|
186
|
+
"tw:hover:bg-sidebar-accent",
|
|
187
|
+
"tw:aria-expanded:bg-sidebar-accent"
|
|
188
|
+
],
|
|
189
|
+
emphasized: [
|
|
190
|
+
"tw:max-h-9",
|
|
191
|
+
"tw:border-transparent",
|
|
192
|
+
"tw:py-2",
|
|
193
|
+
"tw:px-1.5",
|
|
194
|
+
"tw:text-sidebar-foreground",
|
|
195
|
+
"tw:hover:bg-sidebar-accent",
|
|
196
|
+
"tw:aria-expanded:bg-sidebar-accent",
|
|
197
|
+
"tw:font-semibold"
|
|
198
|
+
],
|
|
199
|
+
icon: [
|
|
200
|
+
"tw:size-8",
|
|
201
|
+
"tw:aspect-square",
|
|
202
|
+
"tw:justify-center",
|
|
203
|
+
"tw:font-normal",
|
|
204
|
+
"tw:border-transparent",
|
|
205
|
+
"tw:text-primary",
|
|
206
|
+
"tw:[&_svg]:!text-primary",
|
|
207
|
+
"tw:hover:bg-sidebar-accent",
|
|
208
|
+
"tw:aria-expanded:bg-sidebar-accent"
|
|
209
|
+
],
|
|
210
|
+
search: [
|
|
211
|
+
"tw:max-h-8",
|
|
212
|
+
"tw:min-w-52",
|
|
213
|
+
"tw:px-3",
|
|
214
|
+
"tw:py-1",
|
|
215
|
+
"tw:font-normal",
|
|
216
|
+
"tw:border-input",
|
|
217
|
+
"tw:text-muted-foreground",
|
|
218
|
+
"tw:[&_svg]:!text-muted-foreground"
|
|
219
|
+
]
|
|
220
|
+
} }
|
|
221
|
+
});
|
|
222
|
+
const NavbarMenuButton = ({ ref, className, type = "button", children, icon, asChild = false, variant = "default", ...rest }) => {
|
|
223
|
+
const Comp = asChild ? Root : "button";
|
|
224
|
+
const isSearchVariant = variant === "search";
|
|
225
|
+
const isEmphasizedVariant = variant === "emphasized";
|
|
226
|
+
const adornment = isSearchVariant ? /* @__PURE__ */ jsx(Search, {}) : icon;
|
|
227
|
+
const adornmentVariant = (() => {
|
|
228
|
+
if (isSearchVariant || variant === "icon") return "icon-button";
|
|
229
|
+
if (isEmphasizedVariant) return "icon-accent-emphasized";
|
|
230
|
+
return "icon-accent";
|
|
231
|
+
})();
|
|
232
|
+
return /* @__PURE__ */ jsxs(Comp, {
|
|
233
|
+
...rest,
|
|
234
|
+
ref,
|
|
235
|
+
type,
|
|
236
|
+
"data-variant": variant,
|
|
237
|
+
className: cn(variants({
|
|
238
|
+
className,
|
|
239
|
+
variant
|
|
240
|
+
})),
|
|
241
|
+
children: [adornment && /* @__PURE__ */ jsx(NavbarMenuItemAdornment, {
|
|
242
|
+
variant: adornmentVariant,
|
|
243
|
+
children: adornment
|
|
244
|
+
}), /* @__PURE__ */ jsx(Slottable, { children })]
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
//#endregion
|
|
248
|
+
//#region src/components/Navbar/NavbarMenuItem.tsx
|
|
249
|
+
const NavbarMenuItem = ({ className, ...rest }) => /* @__PURE__ */ jsx("li", {
|
|
250
|
+
...rest,
|
|
251
|
+
className: cn("tw:flex", "tw:items-center", "tw:gap-2", className)
|
|
252
|
+
});
|
|
253
|
+
//#endregion
|
|
254
|
+
//#region src/components/Navbar/Navbar.tsx
|
|
255
|
+
const navbarClassnames = cva([
|
|
256
|
+
"tailwindcss-preflight",
|
|
257
|
+
"tw:group/navbar",
|
|
258
|
+
"tw:sticky",
|
|
259
|
+
"tw:top-0",
|
|
260
|
+
"tw:z-50",
|
|
261
|
+
"tw:flex",
|
|
262
|
+
"tw:gap-2",
|
|
263
|
+
"tw:items-center",
|
|
264
|
+
"tw:pl-2",
|
|
265
|
+
"tw:pr-3",
|
|
266
|
+
"tw:bg-sidebar",
|
|
267
|
+
"tw:text-sidebar-foreground",
|
|
268
|
+
"tw:text-xs",
|
|
269
|
+
"tw:leading-4"
|
|
270
|
+
], {
|
|
271
|
+
defaultVariants: { bordered: false },
|
|
272
|
+
variants: { bordered: {
|
|
273
|
+
true: [
|
|
274
|
+
"tw:before:content",
|
|
275
|
+
"tw:before:h-0.5",
|
|
276
|
+
"tw:before:w-full",
|
|
277
|
+
"tw:before:absolute",
|
|
278
|
+
"tw:before:left-0",
|
|
279
|
+
"tw:before:top-0",
|
|
280
|
+
"tw:before:data-[accent=blue]:bg-sidebar-primary",
|
|
281
|
+
"tw:before:data-[accent=purple]:bg-purple-500",
|
|
282
|
+
"tw:before:data-[accent=green]:bg-primary-500",
|
|
283
|
+
"tw:before:data-[accent=orange]:bg-warning-500"
|
|
284
|
+
],
|
|
285
|
+
false: ""
|
|
286
|
+
} }
|
|
287
|
+
});
|
|
288
|
+
/**
|
|
289
|
+
* Top navigation bar for the app shell. Host inside `<AppShell.Header>` to give a
|
|
290
|
+
* top-nav (or `keboola-legacy` top-bar) layout its primary navigation, brand mark,
|
|
291
|
+
* and account/actions area.
|
|
292
|
+
*
|
|
293
|
+
* **Composition:** `Navbar.Header` (left — brand / logo), `Navbar.Content` (center —
|
|
294
|
+
* primary `Navbar.Menu` of `Navbar.MenuItem` + `Navbar.MenuButton`, horizontally
|
|
295
|
+
* scrollable), and `Navbar.Footer` (right — search, notifications, `Navbar.MenuAvatar`).
|
|
296
|
+
* `bordered` renders a top accent hairline whose color follows `accent`. Renders a
|
|
297
|
+
* `<nav>` landmark with a default `aria-label` — override it via `aria-label` /
|
|
298
|
+
* `aria-labelledby` when a page has more than one nav.
|
|
299
|
+
*
|
|
300
|
+
* @see AppShell — pair with `AppShell.Header`; the sidebar rail uses `Sidebar` instead.
|
|
301
|
+
*/
|
|
302
|
+
const Navbar = ({ className, accent = "blue", bordered = false, ...rest }) => /* @__PURE__ */ jsx("nav", {
|
|
303
|
+
"aria-label": "Main navigation",
|
|
304
|
+
...rest,
|
|
305
|
+
"data-accent": accent,
|
|
306
|
+
className: navbarClassnames({
|
|
307
|
+
bordered,
|
|
308
|
+
className
|
|
309
|
+
})
|
|
310
|
+
});
|
|
311
|
+
Navbar.Header = NavbarHeader;
|
|
312
|
+
Navbar.Footer = NavbarFooter;
|
|
313
|
+
Navbar.Content = NavbarContent;
|
|
314
|
+
Navbar.Menu = NavbarMenu;
|
|
315
|
+
Navbar.MenuItem = NavbarMenuItem;
|
|
316
|
+
Navbar.MenuButton = NavbarMenuButton;
|
|
317
|
+
Navbar.MenuItemAdornment = NavbarMenuItemAdornment;
|
|
318
|
+
Navbar.MenuAvatar = NavbarMenuAvatar;
|
|
319
|
+
//#endregion
|
|
320
|
+
export { Navbar };
|
|
321
|
+
|
|
322
|
+
//# sourceMappingURL=Navbar-t16usFZQ.js.map
|