@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,98 @@
|
|
|
1
|
+
import { ScrollArea } from "./internal/components/ScrollArea.js";
|
|
2
|
+
import { Toggle } from "./internal/components/Toggle.js";
|
|
3
|
+
import { Popover } from "./Popover-Ca0V6AD1.js";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/TimePicker/utils.ts
|
|
7
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
8
|
+
/** The "HH:mm" shape `parseTime` parses back. */
|
|
9
|
+
const formatTime = (hour, minute) => `${pad(hour)}:${pad(minute)}`;
|
|
10
|
+
const parseTime = (time) => {
|
|
11
|
+
if (!time) return {
|
|
12
|
+
hour: null,
|
|
13
|
+
minute: null
|
|
14
|
+
};
|
|
15
|
+
const match = /^(\d{1,2}):(\d{1,2})$/.exec(time.trim());
|
|
16
|
+
if (!match) return {
|
|
17
|
+
hour: null,
|
|
18
|
+
minute: null
|
|
19
|
+
};
|
|
20
|
+
const hour = Number(match[1]);
|
|
21
|
+
const minute = Number(match[2]);
|
|
22
|
+
if (Number.isNaN(hour) || Number.isNaN(minute) || hour < 0 || hour > 23 || minute < 0 || minute > 59) return {
|
|
23
|
+
hour: null,
|
|
24
|
+
minute: null
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
hour,
|
|
28
|
+
minute
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const scrollToSelected = (viewport) => {
|
|
32
|
+
if (!viewport) return;
|
|
33
|
+
requestAnimationFrame(() => {
|
|
34
|
+
viewport.querySelector("[aria-pressed=\"true\"]")?.scrollIntoView({ block: "center" });
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/components/TimePicker/TimePicker.tsx
|
|
39
|
+
const HOURS = Array.from({ length: 24 }, (_, i) => i);
|
|
40
|
+
const MINUTES = Array.from({ length: 60 }, (_, i) => i);
|
|
41
|
+
const TimePicker = ({ align = "end", alignOffset = -18, children, defaultOpen, defaultSelected, onOpenChange, onSelect, open, selected, sideOffset = 12 }) => {
|
|
42
|
+
const [internalSelected, setInternalSelected] = useState(defaultSelected ?? null);
|
|
43
|
+
const isControlled = selected !== void 0;
|
|
44
|
+
const parsed = parseTime(isControlled ? selected : internalSelected);
|
|
45
|
+
const hour = parsed.hour ?? null;
|
|
46
|
+
const minute = parsed.minute ?? null;
|
|
47
|
+
const handleSelect = (time) => {
|
|
48
|
+
if (!isControlled) setInternalSelected(time);
|
|
49
|
+
onSelect?.(time);
|
|
50
|
+
};
|
|
51
|
+
const handleHourSelect = (h) => {
|
|
52
|
+
handleSelect(formatTime(h, minute ?? 0));
|
|
53
|
+
};
|
|
54
|
+
const handleMinuteSelect = (m) => {
|
|
55
|
+
handleSelect(formatTime(hour ?? 0, m));
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */ jsxs(Popover, {
|
|
58
|
+
defaultOpen,
|
|
59
|
+
onOpenChange,
|
|
60
|
+
open,
|
|
61
|
+
children: [/* @__PURE__ */ jsx(Popover.Trigger, {
|
|
62
|
+
asChild: true,
|
|
63
|
+
children
|
|
64
|
+
}), /* @__PURE__ */ jsxs(Popover.Content, {
|
|
65
|
+
align,
|
|
66
|
+
alignOffset,
|
|
67
|
+
sideOffset,
|
|
68
|
+
className: "tw:flex tw:flex-row",
|
|
69
|
+
children: [/* @__PURE__ */ jsx(ScrollArea, {
|
|
70
|
+
type: "always",
|
|
71
|
+
ref: scrollToSelected,
|
|
72
|
+
viewPortClassName: "tw:h-60 tw:p-3",
|
|
73
|
+
children: HOURS.map((value) => /* @__PURE__ */ jsx(Toggle, {
|
|
74
|
+
variant: "ghost",
|
|
75
|
+
className: "tw:size-10 tw:p-0",
|
|
76
|
+
pressed: value === hour,
|
|
77
|
+
onPressedChange: () => handleHourSelect(value),
|
|
78
|
+
children: pad(value)
|
|
79
|
+
}, value))
|
|
80
|
+
}), /* @__PURE__ */ jsx(ScrollArea, {
|
|
81
|
+
type: "always",
|
|
82
|
+
ref: scrollToSelected,
|
|
83
|
+
viewPortClassName: "tw:h-60 tw:p-3",
|
|
84
|
+
children: MINUTES.map((value) => /* @__PURE__ */ jsx(Toggle, {
|
|
85
|
+
variant: "ghost",
|
|
86
|
+
className: "tw:size-10 tw:p-0",
|
|
87
|
+
pressed: value === minute,
|
|
88
|
+
onPressedChange: () => handleMinuteSelect(value),
|
|
89
|
+
children: pad(value)
|
|
90
|
+
}, value))
|
|
91
|
+
})]
|
|
92
|
+
})]
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
//#endregion
|
|
96
|
+
export { TimePicker, formatTime, pad, parseTime };
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=TimePicker-B_NegL-7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker-B_NegL-7.js","names":[],"sources":["../src/components/TimePicker/utils.ts","../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["export const pad = (n: number) => n.toString().padStart(2, '0');\n\n/** The \"HH:mm\" shape `parseTime` parses back. */\nexport const formatTime = (hour: number, minute: number) => `${pad(hour)}:${pad(minute)}`;\n\nexport const parseTime = (time?: string | null) => {\n if (!time) return { hour: null, minute: null };\n\n const match = /^(\\d{1,2}):(\\d{1,2})$/.exec(time.trim());\n if (!match) return { hour: null, minute: null };\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n if (\n Number.isNaN(hour) ||\n Number.isNaN(minute) ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n )\n return { hour: null, minute: null };\n\n return { hour, minute };\n};\n\nexport const scrollToSelected = (viewport: HTMLDivElement | null) => {\n if (!viewport) return;\n // Defer scroll until after the popover open animation completes and layout is calculated\n requestAnimationFrame(() => {\n const selected = viewport.querySelector('[aria-pressed=\"true\"]');\n selected?.scrollIntoView({ block: 'center' });\n });\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport { Popover } from '../Popover';\nimport { ScrollArea } from '../ScrollArea';\nimport { Toggle } from '../Toggle';\n\nimport { formatTime, pad, parseTime, scrollToSelected } from './utils';\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i);\n\ntype Props = {\n children?: ReactNode;\n defaultSelected?: string | null;\n selected?: string | null;\n onSelect?: (time: string) => void;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nexport const TimePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n defaultSelected,\n onOpenChange,\n onSelect,\n open,\n selected,\n sideOffset = 12,\n}: Props) => {\n const [internalSelected, setInternalSelected] = useState<string | null>(defaultSelected ?? null);\n\n const isControlled = selected !== undefined;\n const currentValue = isControlled ? selected : internalSelected;\n\n const parsed = parseTime(currentValue);\n const hour = parsed.hour ?? null;\n const minute = parsed.minute ?? null;\n\n const handleSelect = (time: string) => {\n if (!isControlled) {\n setInternalSelected(time);\n }\n onSelect?.(time);\n };\n\n const handleHourSelect = (h: number) => {\n handleSelect(formatTime(h, minute ?? 0));\n };\n\n const handleMinuteSelect = (m: number) => {\n handleSelect(formatTime(hour ?? 0, m));\n };\n\n return (\n <Popover defaultOpen={defaultOpen} onOpenChange={onOpenChange} open={open}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw:flex tw:flex-row\"\n >\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw:h-60 tw:p-3\">\n {HOURS.map((value) => (\n <Toggle\n key={value}\n variant=\"ghost\"\n className=\"tw:size-10 tw:p-0\"\n pressed={value === hour}\n onPressedChange={() => handleHourSelect(value)}\n >\n {pad(value)}\n </Toggle>\n ))}\n </ScrollArea>\n\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw:h-60 tw:p-3\">\n {MINUTES.map((value) => (\n <Toggle\n key={value}\n variant=\"ghost\"\n className=\"tw:size-10 tw:p-0\"\n pressed={value === minute}\n onPressedChange={() => handleMinuteSelect(value)}\n >\n {pad(value)}\n </Toggle>\n ))}\n </ScrollArea>\n </Popover.Content>\n </Popover>\n );\n};\n"],"mappings":";;;;;;AAAA,MAAa,OAAO,MAAc,EAAE,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG;;AAG9D,MAAa,cAAc,MAAc,WAAmB,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,MAAM;AAEtF,MAAa,aAAa,SAAyB;CACjD,IAAI,CAAC,MAAM,OAAO;EAAE,MAAM;EAAM,QAAQ;CAAK;CAE7C,MAAM,QAAQ,wBAAwB,KAAK,KAAK,KAAK,CAAC;CACtD,IAAI,CAAC,OAAO,OAAO;EAAE,MAAM;EAAM,QAAQ;CAAK;CAE9C,MAAM,OAAO,OAAO,MAAM,EAAE;CAC5B,MAAM,SAAS,OAAO,MAAM,EAAE;CAC9B,IACE,OAAO,MAAM,IAAI,KACjB,OAAO,MAAM,MAAM,KACnB,OAAO,KACP,OAAO,MACP,SAAS,KACT,SAAS,IAET,OAAO;EAAE,MAAM;EAAM,QAAQ;CAAK;CAEpC,OAAO;EAAE;EAAM;CAAO;AACxB;AAEA,MAAa,oBAAoB,aAAoC;CACnE,IAAI,CAAC,UAAU;CAEf,4BAA4B;EAE1B,SAD0B,cAAc,yBACjC,CAAC,EAAE,eAAe,EAAE,OAAO,SAAS,CAAC;CAC9C,CAAC;AACH;;;ACvBA,MAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AACpD,MAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAUtD,MAAa,cAAc,EACzB,QAAQ,OACR,cAAc,KACd,UACA,aACA,iBACA,cACA,UACA,MACA,UACA,aAAa,SACF;CACX,MAAM,CAAC,kBAAkB,uBAAuB,SAAwB,mBAAmB,IAAI;CAE/F,MAAM,eAAe,aAAa,KAAA;CAGlC,MAAM,SAAS,UAFM,eAAe,WAAW,gBAEV;CACrC,MAAM,OAAO,OAAO,QAAQ;CAC5B,MAAM,SAAS,OAAO,UAAU;CAEhC,MAAM,gBAAgB,SAAiB;EACrC,IAAI,CAAC,cACH,oBAAoB,IAAI;EAE1B,WAAW,IAAI;CACjB;CAEA,MAAM,oBAAoB,MAAc;EACtC,aAAa,WAAW,GAAG,UAAU,CAAC,CAAC;CACzC;CAEA,MAAM,sBAAsB,MAAc;EACxC,aAAa,WAAW,QAAQ,GAAG,CAAC,CAAC;CACvC;CAEA,OACE,qBAAC,SAAD;EAAsB;EAA2B;EAAoB;EAArE,UAAA,CACE,oBAAC,QAAQ,SAAT;GAAiB,SAAA;GAAS;EAA0B,CAAA,GACpD,qBAAC,QAAQ,SAAT;GACS;GACM;GACD;GACZ,WAAU;GAJZ,UAAA,CAME,oBAAC,YAAD;IAAY,MAAK;IAAS,KAAK;IAAkB,mBAAkB;IAChE,UAAA,MAAM,KAAK,UACV,oBAAC,QAAD;KAEE,SAAQ;KACR,WAAU;KACV,SAAS,UAAU;KACnB,uBAAuB,iBAAiB,KAAK;KAE5C,UAAA,IAAI,KAAK;IACJ,GAPD,KAOC,CACT;GACS,CAAA,GAEZ,oBAAC,YAAD;IAAY,MAAK;IAAS,KAAK;IAAkB,mBAAkB;IAChE,UAAA,QAAQ,KAAK,UACZ,oBAAC,QAAD;KAEE,SAAQ;KACR,WAAU;KACV,SAAS,UAAU;KACnB,uBAAuB,mBAAmB,KAAK;KAE9C,UAAA,IAAI,KAAK;IACJ,GAPD,KAOC,CACT;GACS,CAAA,CACG;EACV,CAAA,CAAA;;AAEb"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { useElement } from "./useElement-DkF6esWL.js";
|
|
3
|
+
import { Root } from "@radix-ui/react-slot";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
import { cva } from "class-variance-authority";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
//#region src/components/Timeline/useLastLineHeight.ts
|
|
8
|
+
const CONNECTOR_MARGIN_TOP = 8;
|
|
9
|
+
const useLastLineHeight = () => {
|
|
10
|
+
const [wrapper, setWrapper] = useElement();
|
|
11
|
+
const [connector, setConnector] = useElement();
|
|
12
|
+
const [height, setHeight] = useState(0);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (wrapper === null) return;
|
|
15
|
+
if (connector === null) return;
|
|
16
|
+
const updateHeight = () => {
|
|
17
|
+
const wrapperRect = wrapper.getBoundingClientRect();
|
|
18
|
+
const distance = connector.getBoundingClientRect().top - wrapperRect.top - CONNECTOR_MARGIN_TOP;
|
|
19
|
+
setHeight(distance);
|
|
20
|
+
};
|
|
21
|
+
const rafId = requestAnimationFrame(updateHeight);
|
|
22
|
+
return () => {
|
|
23
|
+
cancelAnimationFrame(rafId);
|
|
24
|
+
};
|
|
25
|
+
}, [wrapper, connector]);
|
|
26
|
+
return {
|
|
27
|
+
height,
|
|
28
|
+
setWrapper,
|
|
29
|
+
setConnector
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/components/Timeline/TimelineConnector.tsx
|
|
34
|
+
const connectorWrapper = cva([
|
|
35
|
+
"tw:grow",
|
|
36
|
+
"tw:min-h-8",
|
|
37
|
+
"tw:py-2",
|
|
38
|
+
"tw:flex",
|
|
39
|
+
"tw:justify-center",
|
|
40
|
+
"tw:relative",
|
|
41
|
+
"tw:before:absolute",
|
|
42
|
+
"tw:before:self-start",
|
|
43
|
+
"tw:before:left-1/2",
|
|
44
|
+
"tw:before:-translate-x-1/2",
|
|
45
|
+
"tw:before:w-px",
|
|
46
|
+
"tw:before:h-full",
|
|
47
|
+
"tw:before:group-last/timeline-item:h-(--connector-line-height)",
|
|
48
|
+
"tw:before:group-data-[variant=solid]/timeline:bg-border",
|
|
49
|
+
"tw:before:group-data-[variant=dashed]/timeline:bg-gradient-to-b",
|
|
50
|
+
"tw:before:group-data-[variant=dashed]/timeline:from-border",
|
|
51
|
+
"tw:before:group-data-[variant=dashed]/timeline:from-50%",
|
|
52
|
+
"tw:before:group-data-[variant=dashed]/timeline:to-transparent",
|
|
53
|
+
"tw:before:group-data-[variant=dashed]/timeline:to-50%",
|
|
54
|
+
"tw:before:group-data-[variant=dashed]/timeline:bg-[length:1px_4px]"
|
|
55
|
+
], {
|
|
56
|
+
defaultVariants: { align: "start" },
|
|
57
|
+
variants: { align: {
|
|
58
|
+
start: ["tw:items-start"],
|
|
59
|
+
center: ["tw:items-center"],
|
|
60
|
+
end: ["tw:items-end"],
|
|
61
|
+
baseline: ["tw:items-baseline"]
|
|
62
|
+
} }
|
|
63
|
+
});
|
|
64
|
+
const connector = cva(["tw:z-10", "tw:relative"], {
|
|
65
|
+
defaultVariants: { variant: "label" },
|
|
66
|
+
variants: { variant: {
|
|
67
|
+
none: [],
|
|
68
|
+
label: [
|
|
69
|
+
"tw:bg-muted",
|
|
70
|
+
"tw:text-muted-foreground",
|
|
71
|
+
"tw:rounded",
|
|
72
|
+
"tw:p-1.5",
|
|
73
|
+
"tw:text-nowrap",
|
|
74
|
+
"tw:text-xs"
|
|
75
|
+
],
|
|
76
|
+
icon: [
|
|
77
|
+
"tw:bg-background",
|
|
78
|
+
"tw:[&_svg:not([class*=\"tw:size-\"])]:size-4",
|
|
79
|
+
"tw:[&_svg]:text-muted-foreground"
|
|
80
|
+
],
|
|
81
|
+
line: [
|
|
82
|
+
"tw:min-w-8",
|
|
83
|
+
"tw:overflow-hidden",
|
|
84
|
+
"tw:w-full",
|
|
85
|
+
"tw:h-1",
|
|
86
|
+
"tw:my-1.5",
|
|
87
|
+
"tw:relative",
|
|
88
|
+
"tw:before:absolute",
|
|
89
|
+
"tw:before:left-1/2",
|
|
90
|
+
"tw:before:bottom-0",
|
|
91
|
+
"tw:before:w-full",
|
|
92
|
+
"tw:before:h-full",
|
|
93
|
+
"tw:before:border-l",
|
|
94
|
+
"tw:before:border-b",
|
|
95
|
+
"tw:before:border-border",
|
|
96
|
+
"tw:before:rounded-bl",
|
|
97
|
+
"tw:before:group-data-[variant=dashed]/timeline:border-dashed",
|
|
98
|
+
"tw:before:group-data-[variant=solid]/timeline:!border-solid"
|
|
99
|
+
]
|
|
100
|
+
} }
|
|
101
|
+
});
|
|
102
|
+
const TimelineConnector = ({ className, children, asChild, variant, align, offset = 0, style, ...rest }) => {
|
|
103
|
+
const Comp = asChild ? Root : "div";
|
|
104
|
+
const { setConnector, setWrapper, height } = useLastLineHeight();
|
|
105
|
+
return /* @__PURE__ */ jsx("div", {
|
|
106
|
+
ref: setWrapper,
|
|
107
|
+
style: { "--connector-line-height": `${height}px` },
|
|
108
|
+
className: connectorWrapper({ align }),
|
|
109
|
+
children: /* @__PURE__ */ jsx(Comp, {
|
|
110
|
+
...rest,
|
|
111
|
+
ref: setConnector,
|
|
112
|
+
style: {
|
|
113
|
+
top: align === "end" ? -offset : offset,
|
|
114
|
+
...style
|
|
115
|
+
},
|
|
116
|
+
className: connector({
|
|
117
|
+
variant,
|
|
118
|
+
className
|
|
119
|
+
}),
|
|
120
|
+
children
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/components/Timeline/TimelineContent.tsx
|
|
126
|
+
const TimelineContent = ({ className, ...rest }) => /* @__PURE__ */ jsx("div", {
|
|
127
|
+
...rest,
|
|
128
|
+
"data-slot": "timeline-content",
|
|
129
|
+
className: cn("tw:flex", "tw:py-2", className)
|
|
130
|
+
});
|
|
131
|
+
//#endregion
|
|
132
|
+
//#region src/components/Timeline/TimelineItem.tsx
|
|
133
|
+
const TimelineItem = ({ className, ...rest }) => {
|
|
134
|
+
return /* @__PURE__ */ jsx("li", {
|
|
135
|
+
...rest,
|
|
136
|
+
className: cn("tw:contents", "tw:relative", "tw:group/timeline-item", className)
|
|
137
|
+
});
|
|
138
|
+
};
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/components/Timeline/Timeline.tsx
|
|
141
|
+
const Timeline = ({ className, variant = "dashed", ...rest }) => {
|
|
142
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
143
|
+
...rest,
|
|
144
|
+
"data-variant": variant,
|
|
145
|
+
className: cn("tailwindcss-preflight", "tw:overflow-y-hidden", "tw:p-0", "tw:grid", "tw:grid-cols-[auto_minmax(0,1fr)]", "tw:group/timeline", "tw:gap-x-4", className)
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
Timeline.Item = TimelineItem;
|
|
149
|
+
Timeline.Content = TimelineContent;
|
|
150
|
+
Timeline.Connector = TimelineConnector;
|
|
151
|
+
//#endregion
|
|
152
|
+
export { Timeline };
|
|
153
|
+
|
|
154
|
+
//# sourceMappingURL=Timeline-6btyJl4D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Timeline-6btyJl4D.js","names":[],"sources":["../src/components/Timeline/useLastLineHeight.ts","../src/components/Timeline/TimelineConnector.tsx","../src/components/Timeline/TimelineContent.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useElement } from '../../hooks/useElement';\n\nconst CONNECTOR_MARGIN_TOP = 8;\n\nexport const useLastLineHeight = () => {\n const [wrapper, setWrapper] = useElement();\n const [connector, setConnector] = useElement();\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n if (wrapper === null) return;\n if (connector === null) return;\n\n const updateHeight = () => {\n const wrapperRect = wrapper.getBoundingClientRect();\n const connectorRect = connector.getBoundingClientRect();\n const distance = connectorRect.top - wrapperRect.top - CONNECTOR_MARGIN_TOP;\n setHeight(distance);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updateHeight);\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }, [wrapper, connector]);\n\n return {\n height,\n setWrapper,\n setConnector,\n };\n};\n","import type { ComponentProps, CSSProperties } from 'react';\nimport { Root } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { useLastLineHeight } from './useLastLineHeight';\n\nconst connectorWrapper = cva(\n [\n 'tw:grow',\n 'tw:min-h-8',\n 'tw:py-2',\n\n // layout\n 'tw:flex',\n 'tw:justify-center',\n\n // CONNECTOR LINE\n 'tw:relative',\n 'tw:before:absolute',\n 'tw:before:self-start',\n\n // Centered on x-axis\n 'tw:before:left-1/2',\n 'tw:before:-translate-x-1/2',\n 'tw:before:w-px',\n 'tw:before:h-full',\n 'tw:before:group-last/timeline-item:h-(--connector-line-height)',\n\n // Solid line\n 'tw:before:group-data-[variant=solid]/timeline:bg-border',\n\n // Dashed line using gradient\n 'tw:before:group-data-[variant=dashed]/timeline:bg-gradient-to-b',\n 'tw:before:group-data-[variant=dashed]/timeline:from-border',\n 'tw:before:group-data-[variant=dashed]/timeline:from-50%',\n 'tw:before:group-data-[variant=dashed]/timeline:to-transparent',\n 'tw:before:group-data-[variant=dashed]/timeline:to-50%',\n 'tw:before:group-data-[variant=dashed]/timeline:bg-[length:1px_4px]',\n ],\n {\n defaultVariants: {\n align: 'start',\n },\n variants: {\n align: {\n start: ['tw:items-start'],\n center: ['tw:items-center'],\n end: ['tw:items-end'],\n baseline: ['tw:items-baseline'],\n },\n },\n },\n);\n\nconst connector = cva(\n [\n // ensure that it is always above the connector line.\n 'tw:z-10',\n 'tw:relative',\n ],\n {\n defaultVariants: {\n variant: 'label',\n },\n variants: {\n variant: {\n none: [],\n label: [\n 'tw:bg-muted',\n 'tw:text-muted-foreground',\n 'tw:rounded',\n 'tw:p-1.5',\n 'tw:text-nowrap',\n 'tw:text-xs',\n ],\n icon: [\n 'tw:bg-background',\n 'tw:[&_svg:not([class*=\"tw:size-\"])]:size-4',\n 'tw:[&_svg]:text-muted-foreground',\n ],\n line: [\n 'tw:min-w-8',\n 'tw:overflow-hidden',\n 'tw:w-full',\n // height of the curved corner\n 'tw:h-1',\n\n // small offset from top and bottom\n 'tw:my-1.5',\n // positioning\n 'tw:relative',\n 'tw:before:absolute',\n 'tw:before:left-1/2',\n 'tw:before:bottom-0',\n\n // sizing\n 'tw:before:w-full',\n 'tw:before:h-full',\n\n // l-shape\n 'tw:before:border-l',\n 'tw:before:border-b',\n 'tw:before:border-border',\n\n 'tw:before:rounded-bl',\n // Solid or dashed\n 'tw:before:group-data-[variant=dashed]/timeline:border-dashed',\n 'tw:before:group-data-[variant=solid]/timeline:!border-solid',\n ],\n },\n },\n },\n);\n\ntype Props = { asChild?: boolean; offset?: number } & ComponentProps<'div'> &\n VariantProps<typeof connectorWrapper> &\n VariantProps<typeof connector>;\n\nexport const TimelineConnector = ({\n className,\n children,\n asChild,\n variant,\n align,\n offset = 0,\n style,\n ...rest\n}: Props) => {\n const Comp = asChild ? Root : 'div';\n const { setConnector, setWrapper, height } = useLastLineHeight();\n\n return (\n <div\n ref={setWrapper}\n style={\n {\n '--connector-line-height': `${height}px`,\n } as CSSProperties\n }\n className={connectorWrapper({\n align,\n })}\n >\n <Comp\n {...rest}\n ref={setConnector}\n style={{\n top: align === 'end' ? -offset : offset,\n ...style,\n }}\n className={connector({ variant, className })}\n >\n {children}\n </Comp>\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const TimelineContent = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n data-slot=\"timeline-content\"\n className={cn(\n 'tw:flex',\n // spacing in between timeline items\n 'tw:py-2',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const TimelineItem = ({ className, ...rest }: Props) => {\n return (\n <li\n {...rest}\n className={cn('tw:contents', 'tw:relative', 'tw:group/timeline-item', className)}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TimelineConnector } from './TimelineConnector';\nimport { TimelineContent } from './TimelineContent';\nimport { TimelineItem } from './TimelineItem';\n\ntype Props = ComponentProps<'ul'> & {\n variant?: 'solid' | 'dashed';\n};\n\nexport const Timeline = ({ className, variant = 'dashed', ...rest }: Props) => {\n return (\n <ul\n {...rest}\n data-variant={variant}\n className={cn(\n 'tailwindcss-preflight',\n 'tw:overflow-y-hidden',\n // reset default styling\n 'tw:p-0',\n 'tw:grid',\n 'tw:grid-cols-[auto_minmax(0,1fr)]',\n 'tw:group/timeline',\n 'tw:gap-x-4',\n className,\n )}\n />\n );\n};\n\nTimeline.Item = TimelineItem;\nTimeline.Content = TimelineContent;\nTimeline.Connector = TimelineConnector;\n"],"mappings":";;;;;;;AAIA,MAAM,uBAAuB;AAE7B,MAAa,0BAA0B;CACrC,MAAM,CAAC,SAAS,cAAc,WAAW;CACzC,MAAM,CAAC,WAAW,gBAAgB,WAAW;CAC7C,MAAM,CAAC,QAAQ,aAAa,SAAS,CAAC;CAEtC,gBAAgB;EACd,IAAI,YAAY,MAAM;EACtB,IAAI,cAAc,MAAM;EAExB,MAAM,qBAAqB;GACzB,MAAM,cAAc,QAAQ,sBAAsB;GAElD,MAAM,WADgB,UAAU,sBACH,CAAC,CAAC,MAAM,YAAY,MAAM;GACvD,UAAU,QAAQ;EACpB;EAGA,MAAM,QAAQ,sBAAsB,YAAY;EAEhD,aAAa;GACX,qBAAqB,KAAK;EAC5B;CACF,GAAG,CAAC,SAAS,SAAS,CAAC;CAEvB,OAAO;EACL;EACA;EACA;CACF;AACF;;;AC5BA,MAAM,mBAAmB,IACvB;CACE;CACA;CACA;CAGA;CACA;CAGA;CACA;CACA;CAGA;CACA;CACA;CACA;CACA;CAGA;CAGA;CACA;CACA;CACA;CACA;CACA;AACF,GACA;CACE,iBAAiB,EACf,OAAO,QACT;CACA,UAAU,EACR,OAAO;EACL,OAAO,CAAC,gBAAgB;EACxB,QAAQ,CAAC,iBAAiB;EAC1B,KAAK,CAAC,cAAc;EACpB,UAAU,CAAC,mBAAmB;CAChC,EACF;AACF,CACF;AAEA,MAAM,YAAY,IAChB,CAEE,WACA,aACF,GACA;CACE,iBAAiB,EACf,SAAS,QACX;CACA,UAAU,EACR,SAAS;EACP,MAAM,CAAC;EACP,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;EACF;EACA,MAAM;GACJ;GACA;GACA;EACF;EACA,MAAM;GACJ;GACA;GACA;GAEA;GAGA;GAEA;GACA;GACA;GACA;GAGA;GACA;GAGA;GACA;GACA;GAEA;GAEA;GACA;EACF;CACF,EACF;AACF,CACF;AAMA,MAAa,qBAAqB,EAChC,WACA,UACA,SACA,SACA,OACA,SAAS,GACT,OACA,GAAG,WACQ;CACX,MAAM,OAAO,UAAU,OAAO;CAC9B,MAAM,EAAE,cAAc,YAAY,WAAW,kBAAkB;CAE/D,OACE,oBAAC,OAAD;EACE,KAAK;EACL,OACE,EACE,2BAA2B,GAAG,OAAO,IACvC;EAEF,WAAW,iBAAiB,EAC1B,MACF,CAAC;EAED,UAAA,oBAAC,MAAD;GACE,GAAI;GACJ,KAAK;GACL,OAAO;IACL,KAAK,UAAU,QAAQ,CAAC,SAAS;IACjC,GAAG;GACL;GACA,WAAW,UAAU;IAAE;IAAS;GAAU,CAAC;GAE1C;EACG,CAAA;CACH,CAAA;AAET;;;ACvJA,MAAa,mBAAmB,EAAE,WAAW,GAAG,WAC9C,oBAAC,OAAD;CACE,GAAI;CACJ,aAAU;CACV,WAAW,GACT,WAEA,WACA,SACF;AACD,CAAA;;;ACVH,MAAa,gBAAgB,EAAE,WAAW,GAAG,WAAkB;CAC7D,OACE,oBAAC,MAAD;EACE,GAAI;EACJ,WAAW,GAAG,eAAe,eAAe,0BAA0B,SAAS;CAChF,CAAA;AAEL;;;ACDA,MAAa,YAAY,EAAE,WAAW,UAAU,UAAU,GAAG,WAAkB;CAC7E,OACE,oBAAC,MAAD;EACE,GAAI;EACJ,gBAAc;EACd,WAAW,GACT,yBACA,wBAEA,UACA,WACA,qCACA,qBACA,cACA,SACF;CACD,CAAA;AAEL;AAEA,SAAS,OAAO;AAChB,SAAS,UAAU;AACnB,SAAS,YAAY"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { toast as toast$1 } from "./toast-CjkURw0M.js";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { Toaster } from "sonner";
|
|
5
|
+
//#region src/components/Toast/useNotification.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Declarative notification component built on top of sonner/toast.
|
|
8
|
+
*
|
|
9
|
+
* Use `Notification` for persistent, system-driven messages that require user acknowledgment
|
|
10
|
+
* (e.g., trial expiration warnings, upgrade prompts, billing alerts).
|
|
11
|
+
* The notification stays visible until the user dismisses it or the component unmounts.
|
|
12
|
+
*
|
|
13
|
+
* Use `toast()` for transient feedback after a user action
|
|
14
|
+
* (e.g., "Saved", "Copied", "Deleted") that auto-dismisses after a few seconds.
|
|
15
|
+
*/
|
|
16
|
+
const useNotification = ({ enabled = true, ...toastOptions }) => {
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!enabled) return;
|
|
19
|
+
let toastId;
|
|
20
|
+
const frameId = requestAnimationFrame(() => {
|
|
21
|
+
toastId = toast$1({
|
|
22
|
+
...toastOptions,
|
|
23
|
+
duration: toastOptions.duration ?? Infinity
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
return () => {
|
|
27
|
+
cancelAnimationFrame(frameId);
|
|
28
|
+
toast$1.dismiss(toastId);
|
|
29
|
+
};
|
|
30
|
+
}, [enabled]);
|
|
31
|
+
};
|
|
32
|
+
//#endregion
|
|
33
|
+
//#region src/components/Toast/Toaster.tsx
|
|
34
|
+
const DEFAULT_STYLES = { "--width": "512px" };
|
|
35
|
+
const stopPropagation = (event) => event.stopPropagation();
|
|
36
|
+
const Toaster$1 = ({ gap = 12, visibleToasts = 5, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
37
|
+
onPointerDown: stopPropagation,
|
|
38
|
+
children: /* @__PURE__ */ jsx(Toaster, {
|
|
39
|
+
...props,
|
|
40
|
+
gap,
|
|
41
|
+
visibleToasts,
|
|
42
|
+
className: "tw:pointer-events-auto tw:flex tw:w-full tw:max-w-lg tw:justify-center",
|
|
43
|
+
style: DEFAULT_STYLES
|
|
44
|
+
})
|
|
45
|
+
});
|
|
46
|
+
//#endregion
|
|
47
|
+
export { Toaster$1 as Toaster, useNotification };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=Toast-DQSbs3oA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast-DQSbs3oA.js","names":["toast","Toaster","SonnerToaster"],"sources":["../src/components/Toast/useNotification.tsx","../src/components/Toast/Toaster.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport { toast } from './toast';\n\ntype Props = {\n enabled?: boolean;\n} & Parameters<typeof toast>[0];\n\n/**\n * Declarative notification component built on top of sonner/toast.\n *\n * Use `Notification` for persistent, system-driven messages that require user acknowledgment\n * (e.g., trial expiration warnings, upgrade prompts, billing alerts).\n * The notification stays visible until the user dismisses it or the component unmounts.\n *\n * Use `toast()` for transient feedback after a user action\n * (e.g., \"Saved\", \"Copied\", \"Deleted\") that auto-dismisses after a few seconds.\n */\nexport const useNotification = ({ enabled = true, ...toastOptions }: Props) => {\n useEffect(() => {\n if (!enabled) return;\n let toastId: string | number | undefined;\n const frameId = requestAnimationFrame(() => {\n toastId = toast({ ...toastOptions, duration: toastOptions.duration ?? Infinity });\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n toast.dismiss(toastId);\n };\n // oxlint-disable-next-line react/exhaustive-deps -- we only want to trigger this effect when enabled changes, not when other toast options change\n }, [enabled]);\n};\n","import type { ComponentProps, PointerEvent } from 'react';\nimport { Toaster as SonnerToaster } from 'sonner';\n\ntype ToasterProps = ComponentProps<typeof SonnerToaster>;\n\nconst DEFAULT_STYLES = {\n '--width': '512px', // match max-w-lg\n} as React.CSSProperties;\n\nconst stopPropagation = (event: PointerEvent) => event.stopPropagation();\n\nexport const Toaster = ({ gap = 12, visibleToasts = 5, ...props }: ToasterProps) => (\n // Wrapper prevents toast clicks from reaching Radix Dialog's DismissableLayer,\n // which would otherwise close the modal on any \"outside\" pointer event.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onPointerDown={stopPropagation}>\n <SonnerToaster\n {...props}\n gap={gap}\n visibleToasts={visibleToasts}\n className=\"tw:pointer-events-auto tw:flex tw:w-full tw:max-w-lg tw:justify-center\"\n style={DEFAULT_STYLES}\n />\n </div>\n);\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAa,mBAAmB,EAAE,UAAU,MAAM,GAAG,mBAA0B;CAC7E,gBAAgB;EACd,IAAI,CAAC,SAAS;EACd,IAAI;EACJ,MAAM,UAAU,4BAA4B;GAC1C,UAAUA,QAAM;IAAE,GAAG;IAAc,UAAU,aAAa,YAAY;GAAS,CAAC;EAClF,CAAC;EAED,aAAa;GACX,qBAAqB,OAAO;GAC5B,QAAM,QAAQ,OAAO;EACvB;CAEF,GAAG,CAAC,OAAO,CAAC;AACd;;;AC3BA,MAAM,iBAAiB,EACrB,WAAW,QACb;AAEA,MAAM,mBAAmB,UAAwB,MAAM,gBAAgB;AAEvE,MAAaC,aAAW,EAAE,MAAM,IAAI,gBAAgB,GAAG,GAAG,YAIxD,oBAAC,OAAD;CAAK,eAAe;CAClB,UAAA,oBAACC,SAAD;EACE,GAAI;EACC;EACU;EACf,WAAU;EACV,OAAO;CACR,CAAA;AACE,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
5
|
+
//#region src/components/ToggleGroup/ToggleGroup.tsx
|
|
6
|
+
const rootVariants = cva([
|
|
7
|
+
"tailwindcss-preflight",
|
|
8
|
+
"tw:inline-flex",
|
|
9
|
+
"tw:items-center",
|
|
10
|
+
"tw:shrink-0",
|
|
11
|
+
"tw:bg-muted",
|
|
12
|
+
"tw:rounded-lg",
|
|
13
|
+
"tw:p-[3px]",
|
|
14
|
+
"tw:gap-0"
|
|
15
|
+
], {
|
|
16
|
+
defaultVariants: { size: "medium" },
|
|
17
|
+
variants: { size: {
|
|
18
|
+
small: ["tw:h-8"],
|
|
19
|
+
medium: ["tw:h-9"],
|
|
20
|
+
large: ["tw:h-10"]
|
|
21
|
+
} }
|
|
22
|
+
});
|
|
23
|
+
const itemClasses = cn("tailwindcss-preflight", "tw:inline-flex", "tw:items-center", "tw:justify-center", "tw:gap-2", "tw:shrink-0", "tw:whitespace-nowrap", "tw:h-full", "tw:rounded-md", "tw:px-2", "tw:py-1", "tw:bg-transparent", "tw:text-muted-foreground", "tw:text-sm", "tw:font-medium", "tw:transition-colors", "tw:disabled:cursor-not-allowed", "tw:disabled:opacity-50", "tw:!outline-hidden", "tw:focus-visible:ring-2", "tw:focus-visible:ring-ring/50", "tw:not-disabled:[&[data-state=off]]:hover:bg-background/60", "tw:not-disabled:[&[data-state=off]]:hover:text-foreground", "tw:data-[state=on]:bg-background", "tw:data-[state=on]:text-foreground", "tw:data-[state=on]:shadow-[0_1px_2px_rgba(0,0,0,0.05),0_1px_1px_rgba(0,0,0,0.1)]", "tw:[[data-theme=dark]_&]:data-[state=on]:bg-secondary", "tw:[[data-theme=dark]_&]:data-[state=on]:shadow-none", "tw:[&_svg]:shrink-0", "tw:[&_svg]:pointer-events-none", "tw:[&_svg:not([class*='tw:size-'])]:size-4");
|
|
24
|
+
/**
|
|
25
|
+
* Segmented row of mutually-exclusive (or multi-select) options. Built on `@radix-ui/react-toggle-group`.
|
|
26
|
+
* For `type="single"`, `onValueChange` receives `""` when the user deselects the active item.
|
|
27
|
+
*/
|
|
28
|
+
const Root = ({ ref, className, size = "medium", ...props }) => /* @__PURE__ */ jsx(ToggleGroupPrimitive.Root, {
|
|
29
|
+
ref,
|
|
30
|
+
...props,
|
|
31
|
+
className: cn(rootVariants({
|
|
32
|
+
size,
|
|
33
|
+
className
|
|
34
|
+
}))
|
|
35
|
+
});
|
|
36
|
+
const Item = ({ ref, className, ...props }) => /* @__PURE__ */ jsx(ToggleGroupPrimitive.Item, {
|
|
37
|
+
ref,
|
|
38
|
+
...props,
|
|
39
|
+
className: cn(itemClasses, className)
|
|
40
|
+
});
|
|
41
|
+
const ToggleGroup = Object.assign(Root, {
|
|
42
|
+
/** Individual segment inside a `ToggleGroup`. `value` is required and must be unique within the group. */
|
|
43
|
+
Item });
|
|
44
|
+
//#endregion
|
|
45
|
+
export { ToggleGroup };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=ToggleGroup-Cy_10Mvu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup-Cy_10Mvu.js","names":[],"sources":["../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst rootVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:shrink-0',\n 'tw:bg-muted',\n 'tw:rounded-lg',\n 'tw:p-[3px]',\n 'tw:gap-0',\n ],\n {\n defaultVariants: { size: 'medium' },\n variants: {\n size: {\n small: ['tw:h-8'],\n medium: ['tw:h-9'],\n large: ['tw:h-10'],\n },\n },\n },\n);\n\nconst itemClasses = cn(\n 'tailwindcss-preflight',\n 'tw:inline-flex',\n 'tw:items-center',\n 'tw:justify-center',\n 'tw:gap-2',\n 'tw:shrink-0',\n 'tw:whitespace-nowrap',\n\n 'tw:h-full',\n 'tw:rounded-md',\n 'tw:px-2',\n 'tw:py-1',\n\n 'tw:bg-transparent',\n // Off-state copy is muted so the pressed segment reads as pressed from the label\n // alone — the fill alone is a near-invisible step on either scheme's track.\n 'tw:text-muted-foreground',\n 'tw:text-sm',\n 'tw:font-medium',\n\n 'tw:transition-colors',\n\n 'tw:disabled:cursor-not-allowed',\n 'tw:disabled:opacity-50',\n\n 'tw:!outline-hidden',\n 'tw:focus-visible:ring-2',\n 'tw:focus-visible:ring-ring/50',\n\n // hover on non-pressed\n 'tw:not-disabled:[&[data-state=off]]:hover:bg-background/60',\n 'tw:not-disabled:[&[data-state=off]]:hover:text-foreground',\n\n // pressed\n 'tw:data-[state=on]:bg-background',\n 'tw:data-[state=on]:text-foreground',\n 'tw:data-[state=on]:shadow-[0_1px_2px_rgba(0,0,0,0.05),0_1px_1px_rgba(0,0,0,0.1)]',\n\n // Dark scheme inverts the lift: `background` is darker than the `muted` track, so the\n // pressed segment reads as a hole and the black drop shadow renders nothing on it.\n // `secondary` is the step above the track.\n 'tw:[[data-theme=dark]_&]:data-[state=on]:bg-secondary',\n 'tw:[[data-theme=dark]_&]:data-[state=on]:shadow-none',\n\n 'tw:[&_svg]:shrink-0',\n 'tw:[&_svg]:pointer-events-none',\n \"tw:[&_svg:not([class*='tw:size-'])]:size-4\",\n);\n\ntype RootProps = ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof rootVariants>;\n\n/**\n * Segmented row of mutually-exclusive (or multi-select) options. Built on `@radix-ui/react-toggle-group`.\n * For `type=\"single\"`, `onValueChange` receives `\"\"` when the user deselects the active item.\n */\nconst Root = ({ ref, className, size = 'medium', ...props }: RootProps) => (\n <ToggleGroupPrimitive.Root\n ref={ref}\n {...props}\n className={cn(rootVariants({ size, className }))}\n />\n);\n\ntype ItemProps = ComponentProps<typeof ToggleGroupPrimitive.Item>;\n\nconst Item = ({ ref, className, ...props }: ItemProps) => (\n <ToggleGroupPrimitive.Item ref={ref} {...props} className={cn(itemClasses, className)} />\n);\n\nexport const ToggleGroup = Object.assign(Root, {\n /** Individual segment inside a `ToggleGroup`. `value` is required and must be unique within the group. */\n Item,\n});\n"],"mappings":";;;;;AAMA,MAAM,eAAe,IACnB;CACE;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GACA;CACE,iBAAiB,EAAE,MAAM,SAAS;CAClC,UAAU,EACR,MAAM;EACJ,OAAO,CAAC,QAAQ;EAChB,QAAQ,CAAC,QAAQ;EACjB,OAAO,CAAC,SAAS;CACnB,EACF;AACF,CACF;AAEA,MAAM,cAAc,GAClB,yBACA,kBACA,mBACA,qBACA,YACA,eACA,wBAEA,aACA,iBACA,WACA,WAEA,qBAGA,4BACA,cACA,kBAEA,wBAEA,kCACA,0BAEA,sBACA,2BACA,iCAGA,8DACA,6DAGA,oCACA,sCACA,oFAKA,yDACA,wDAEA,uBACA,kCACA,4CACF;;;;;AASA,MAAM,QAAQ,EAAE,KAAK,WAAW,OAAO,UAAU,GAAG,YAClD,oBAAC,qBAAqB,MAAtB;CACO;CACL,GAAI;CACJ,WAAW,GAAG,aAAa;EAAE;EAAM;CAAU,CAAC,CAAC;AAChD,CAAA;AAKH,MAAM,QAAQ,EAAE,KAAK,WAAW,GAAG,YACjC,oBAAC,qBAAqB,MAAtB;CAAgC;CAAK,GAAI;CAAO,WAAW,GAAG,aAAa,SAAS;AAAI,CAAA;AAG1F,MAAa,cAAc,OAAO,OAAO,MAAM;;AAE7C,KACF,CAAC"}
|