@g4rcez/components 4.1.3 → 5.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/ai/docs/AnimatedList.md +1 -1
- package/ai/docs/Autocomplete.md +2 -2
- package/ai/docs/Button.md +1 -1
- package/ai/docs/Card.md +7 -7
- package/ai/docs/DatePicker.md +2 -2
- package/ai/docs/Dropdown.md +7 -7
- package/ai/docs/Expand.md +5 -5
- package/ai/docs/Input.md +3 -3
- package/ai/docs/InputField.md +24 -14
- package/ai/docs/List.md +1 -1
- package/ai/docs/Modal.md +4 -4
- package/ai/docs/MultiSelect.md +2 -2
- package/ai/docs/PageCalendar.md +2 -2
- package/ai/docs/Polymorph.md +1 -1
- package/ai/docs/Resizable.md +3 -3
- package/ai/docs/Select.md +2 -2
- package/ai/docs/Skeleton.md +1 -1
- package/ai/docs/Slot.md +3 -3
- package/ai/docs/Spinner.md +1 -1
- package/ai/docs/Stats.md +1 -1
- package/ai/docs/Step.md +1 -1
- package/ai/docs/Tabs.md +1 -1
- package/ai/docs/Tag.md +1 -1
- package/ai/docs/TaskList.md +3 -3
- package/ai/docs/Textarea.md +2 -2
- package/ai/docs/Tooltip.md +13 -9
- package/ai/docs/Typography.md +1 -1
- package/ai/docs/index.md +17 -17
- package/dist/CaretDown.es-BXl0Ixp3.js +23 -0
- package/dist/CaretDown.es-BXl0Ixp3.js.map +1 -0
- package/dist/CaretRight.es-B2mpMfqU.js +23 -0
- package/dist/CaretRight.es-B2mpMfqU.js.map +1 -0
- package/dist/CheckCircle.es-BB91gLT-.js +23 -0
- package/dist/CheckCircle.es-BB91gLT-.js.map +1 -0
- package/dist/File.es-CjNVQ00B.js +23 -0
- package/dist/File.es-CjNVQ00B.js.map +1 -0
- package/dist/IconBase.es-BlJQ9IXo.js +27 -0
- package/dist/IconBase.es-BlJQ9IXo.js.map +1 -0
- package/dist/Info.es-Dvln8pws.js +23 -0
- package/dist/Info.es-Dvln8pws.js.map +1 -0
- package/dist/MotionConfig-DKKYqBH2.js +27 -0
- package/dist/MotionConfig-DKKYqBH2.js.map +1 -0
- package/dist/MotionConfigContext-BORpSKe8.js +2571 -0
- package/dist/MotionConfigContext-BORpSKe8.js.map +1 -0
- package/dist/Warning.es-B_xCn-P5.js +23 -0
- package/dist/Warning.es-B_xCn-P5.js.map +1 -0
- package/dist/X.es-Cjq2a_OA.js +23 -0
- package/dist/X.es-Cjq2a_OA.js.map +1 -0
- package/dist/animate-BNYgkk_j.js +387 -0
- package/dist/animate-BNYgkk_j.js.map +1 -0
- package/dist/autocomplete-D3VOTihi.js +415 -0
- package/dist/autocomplete-D3VOTihi.js.map +1 -0
- package/dist/calendar-PCCZDUIL.js +1678 -0
- package/dist/calendar-PCCZDUIL.js.map +1 -0
- package/dist/components/core/button.js +75 -75
- package/dist/components/core/button.js.map +1 -1
- package/dist/components/core/tag.js +66 -66
- package/dist/components/core/tag.js.map +1 -1
- package/dist/components/display/alert.js +133 -95
- package/dist/components/display/alert.js.map +1 -1
- package/dist/components/display/calendar.js +3 -15
- package/dist/components/display/card.js +73 -82
- package/dist/components/display/card.js.map +1 -1
- package/dist/components/display/list.js +153 -93
- package/dist/components/display/list.js.map +1 -1
- package/dist/components/display/notifications.js +3 -15
- package/dist/components/display/stats.js +30 -16
- package/dist/components/display/stats.js.map +1 -1
- package/dist/components/display/tabs.js +3 -12
- package/dist/components/display/timeline.js +47 -28
- package/dist/components/display/timeline.js.map +1 -1
- package/dist/components/floating/dropdown.js +76 -65
- package/dist/components/floating/dropdown.js.map +1 -1
- package/dist/components/floating/expand.js +62 -40
- package/dist/components/floating/expand.js.map +1 -1
- package/dist/components/floating/menu.js +195 -177
- package/dist/components/floating/menu.js.map +1 -1
- package/dist/components/floating/modal.js +3 -301
- package/dist/components/floating/tooltip.js +63 -73
- package/dist/components/floating/tooltip.js.map +1 -1
- package/dist/components/form/autocomplete.js +3 -16
- package/dist/components/form/checkbox.js +34 -44
- package/dist/components/form/checkbox.js.map +1 -1
- package/dist/components/form/date-picker.js +3 -12
- package/dist/components/form/file-upload.js +3 -11
- package/dist/components/form/form.js +16 -7
- package/dist/components/form/form.js.map +1 -1
- package/dist/components/form/input.js +3 -5
- package/dist/components/form/radiobox.js +19 -30
- package/dist/components/form/radiobox.js.map +1 -1
- package/dist/components/form/select.js +77 -106
- package/dist/components/form/select.js.map +1 -1
- package/dist/components/form/switch.js +73 -64
- package/dist/components/form/switch.js.map +1 -1
- package/dist/components/form/task-list.js +3 -68
- package/dist/components/table/table.js +3 -10
- package/dist/date-picker-BhKEFZew.js +1498 -0
- package/dist/date-picker-BhKEFZew.js.map +1 -0
- package/dist/dist-BHFtgf5x.js +2593 -0
- package/dist/dist-BHFtgf5x.js.map +1 -0
- package/dist/dist-BrGpYRaj.js +178 -0
- package/dist/dist-BrGpYRaj.js.map +1 -0
- package/dist/dist-NmFtbuK4.js +35 -0
- package/dist/dist-NmFtbuK4.js.map +1 -0
- package/dist/dom-Bn4wY_Zx.js +2168 -0
- package/dist/dom-Bn4wY_Zx.js.map +1 -0
- package/dist/file-upload-DWbZfeG5.js +2966 -0
- package/dist/file-upload-DWbZfeG5.js.map +1 -0
- package/dist/floating-ui.react-CwXtBJ_y.js +3381 -0
- package/dist/floating-ui.react-CwXtBJ_y.js.map +1 -0
- package/dist/floating-ui.utils-CUrVRSbA.js +204 -0
- package/dist/floating-ui.utils-CUrVRSbA.js.map +1 -0
- package/dist/fns-KbsWlOTG.js +29 -0
- package/dist/fns-KbsWlOTG.js.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.js +7932 -20
- package/dist/index.js.map +1 -1
- package/dist/input-B7jqwPG4.js +473 -0
- package/dist/input-B7jqwPG4.js.map +1 -0
- package/dist/input-field-B_whI66Q.js +137 -0
- package/dist/input-field-B_whI66Q.js.map +1 -0
- package/dist/modal-Bz-61ays.js +373 -0
- package/dist/modal-Bz-61ays.js.map +1 -0
- package/dist/notifications-MT4XkLov.js +2203 -0
- package/dist/notifications-MT4XkLov.js.map +1 -0
- package/dist/polymorph-BLXhrn9n.js +14 -0
- package/dist/polymorph-BLXhrn9n.js.map +1 -0
- package/dist/preset/preset.tailwind.d.ts.map +1 -1
- package/dist/preset/preset.tailwind.js +40 -4
- package/dist/preset/src/styles/common.d.ts +0 -2
- package/dist/preset/src/styles/common.d.ts.map +1 -1
- package/dist/preset/src/styles/common.js +0 -9
- package/dist/preset/src/styles/components.d.ts +3 -0
- package/dist/preset/src/styles/components.d.ts.map +1 -0
- package/dist/preset/src/styles/components.js +400 -0
- package/dist/preset/src/styles/dark.d.ts.map +1 -1
- package/dist/preset/src/styles/dark.js +5 -3
- package/dist/preset/src/styles/default-tokens.d.ts +74 -0
- package/dist/preset/src/styles/default-tokens.d.ts.map +1 -0
- package/dist/preset/src/styles/default-tokens.js +44 -0
- package/dist/preset/src/styles/design-tokens.d.ts +1 -1
- package/dist/preset/src/styles/design-tokens.d.ts.map +1 -1
- package/dist/preset/src/styles/design-tokens.js +6 -2
- package/dist/preset/src/styles/light.d.ts.map +1 -1
- package/dist/preset/src/styles/light.js +22 -20
- package/dist/preset/src/styles/theme.types.d.ts +433 -8
- package/dist/preset/src/styles/theme.types.d.ts.map +1 -1
- package/dist/proxy-BcJ_5Dwq.js +2530 -0
- package/dist/proxy-BcJ_5Dwq.js.map +1 -0
- package/dist/skeleton-CBYEq3lM.js +26 -0
- package/dist/skeleton-CBYEq3lM.js.map +1 -0
- package/dist/slot-pC8kH9De.js +96 -0
- package/dist/slot-pC8kH9De.js.map +1 -0
- package/dist/styles/common.d.ts +0 -2
- package/dist/styles/common.d.ts.map +1 -1
- package/dist/styles/common.js +0 -9
- package/dist/styles/components.d.ts +3 -0
- package/dist/styles/components.d.ts.map +1 -0
- package/dist/styles/components.js +400 -0
- package/dist/styles/dark.d.ts.map +1 -1
- package/dist/styles/dark.js +5 -3
- package/dist/styles/default-tokens.d.ts +74 -0
- package/dist/styles/default-tokens.d.ts.map +1 -0
- package/dist/styles/default-tokens.js +44 -0
- package/dist/styles/design-tokens.d.ts +1 -1
- package/dist/styles/design-tokens.d.ts.map +1 -1
- package/dist/styles/design-tokens.js +6 -2
- package/dist/styles/light.d.ts.map +1 -1
- package/dist/styles/light.js +22 -20
- package/dist/styles/theme.types.d.ts +433 -8
- package/dist/styles/theme.types.d.ts.map +1 -1
- package/dist/table-CUFbAI2k.js +1914 -0
- package/dist/table-CUFbAI2k.js.map +1 -0
- package/dist/tabs-Ciy0l9OF.js +122 -0
- package/dist/tabs-Ciy0l9OF.js.map +1 -0
- package/dist/task-list-tKumO4WH.js +96 -0
- package/dist/task-list-tKumO4WH.js.map +1 -0
- package/dist/use-motion-value-BqPF1j90.js +15 -0
- package/dist/use-motion-value-BqPF1j90.js.map +1 -0
- package/dist/use-stable-ref-D5LFCx0u.js +12 -0
- package/dist/use-stable-ref-D5LFCx0u.js.map +1 -0
- package/dist/use-translations-DTLfPE3_.js +177 -0
- package/dist/use-translations-DTLfPE3_.js.map +1 -0
- package/package.json +17 -17
- package/dist/CaretDown.es-Cj7klWI3.js +0 -33
- package/dist/CaretDown.es-Cj7klWI3.js.map +0 -1
- package/dist/CaretRight.es-0-M8D9y8.js +0 -33
- package/dist/CaretRight.es-0-M8D9y8.js.map +0 -1
- package/dist/CheckCircle.es-C6QWLfk_.js +0 -33
- package/dist/CheckCircle.es-C6QWLfk_.js.map +0 -1
- package/dist/File.es-CA-vuPED.js +0 -33
- package/dist/File.es-CA-vuPED.js.map +0 -1
- package/dist/IconBase.es-DJ1oCtpo.js +0 -50
- package/dist/IconBase.es-DJ1oCtpo.js.map +0 -1
- package/dist/Info.es-CrZKs4q4.js +0 -33
- package/dist/Info.es-CrZKs4q4.js.map +0 -1
- package/dist/MotionConfigContext-C7MqlSdv.js +0 -2713
- package/dist/MotionConfigContext-C7MqlSdv.js.map +0 -1
- package/dist/Warning.es-D_eI6tLe.js +0 -39
- package/dist/Warning.es-D_eI6tLe.js.map +0 -1
- package/dist/X.es-BJ1O93El.js +0 -39
- package/dist/X.es-BJ1O93El.js.map +0 -1
- package/dist/autocomplete-DcTNOwyg.js +0 -393
- package/dist/autocomplete-DcTNOwyg.js.map +0 -1
- package/dist/calendar-BJMHRoy2.js +0 -1746
- package/dist/calendar-BJMHRoy2.js.map +0 -1
- package/dist/components/core/button.d.ts +0 -77
- package/dist/components/core/button.d.ts.map +0 -1
- package/dist/components/core/button.jsx +0 -79
- package/dist/components/core/heading.d.ts +0 -3
- package/dist/components/core/heading.d.ts.map +0 -1
- package/dist/components/core/heading.jsx +0 -4
- package/dist/components/core/polymorph.d.ts +0 -10
- package/dist/components/core/polymorph.d.ts.map +0 -1
- package/dist/components/core/polymorph.jsx +0 -5
- package/dist/components/core/render-on-view.d.ts +0 -7
- package/dist/components/core/render-on-view.d.ts.map +0 -1
- package/dist/components/core/render-on-view.jsx +0 -31
- package/dist/components/core/resizable.d.ts +0 -3
- package/dist/components/core/resizable.d.ts.map +0 -1
- package/dist/components/core/resizable.jsx +0 -51
- package/dist/components/core/slot.d.ts +0 -16
- package/dist/components/core/slot.d.ts.map +0 -1
- package/dist/components/core/slot.jsx +0 -156
- package/dist/components/core/tag.d.ts +0 -35
- package/dist/components/core/tag.d.ts.map +0 -1
- package/dist/components/core/tag.jsx +0 -51
- package/dist/components/core/typography.d.ts +0 -25
- package/dist/components/core/typography.d.ts.map +0 -1
- package/dist/components/core/typography.jsx +0 -18
- package/dist/components/display/alert.d.ts +0 -28
- package/dist/components/display/alert.d.ts.map +0 -1
- package/dist/components/display/alert.jsx +0 -61
- package/dist/components/display/calendar.d.ts +0 -42
- package/dist/components/display/calendar.d.ts.map +0 -1
- package/dist/components/display/calendar.js.map +0 -1
- package/dist/components/display/calendar.jsx +0 -299
- package/dist/components/display/card.d.ts +0 -29
- package/dist/components/display/card.d.ts.map +0 -1
- package/dist/components/display/card.jsx +0 -43
- package/dist/components/display/empty.d.ts +0 -8
- package/dist/components/display/empty.d.ts.map +0 -1
- package/dist/components/display/empty.jsx +0 -11
- package/dist/components/display/list.d.ts +0 -16
- package/dist/components/display/list.d.ts.map +0 -1
- package/dist/components/display/list.jsx +0 -81
- package/dist/components/display/notifications.d.ts +0 -27
- package/dist/components/display/notifications.d.ts.map +0 -1
- package/dist/components/display/notifications.js.map +0 -1
- package/dist/components/display/notifications.jsx +0 -126
- package/dist/components/display/progress.d.ts +0 -13
- package/dist/components/display/progress.d.ts.map +0 -1
- package/dist/components/display/progress.jsx +0 -11
- package/dist/components/display/shortcut.d.ts +0 -4
- package/dist/components/display/shortcut.d.ts.map +0 -1
- package/dist/components/display/shortcut.jsx +0 -23
- package/dist/components/display/skeleton.d.ts +0 -12
- package/dist/components/display/skeleton.d.ts.map +0 -1
- package/dist/components/display/skeleton.jsx +0 -19
- package/dist/components/display/spinner.d.ts +0 -5
- package/dist/components/display/spinner.d.ts.map +0 -1
- package/dist/components/display/spinner.jsx +0 -11
- package/dist/components/display/stats.d.ts +0 -12
- package/dist/components/display/stats.d.ts.map +0 -1
- package/dist/components/display/stats.jsx +0 -20
- package/dist/components/display/step.d.ts +0 -24
- package/dist/components/display/step.d.ts.map +0 -1
- package/dist/components/display/step.jsx +0 -131
- package/dist/components/display/tabs.d.ts +0 -24
- package/dist/components/display/tabs.d.ts.map +0 -1
- package/dist/components/display/tabs.js.map +0 -1
- package/dist/components/display/tabs.jsx +0 -125
- package/dist/components/display/timeline.d.ts +0 -10
- package/dist/components/display/timeline.d.ts.map +0 -1
- package/dist/components/display/timeline.jsx +0 -25
- package/dist/components/floating/command-palette.d.ts +0 -49
- package/dist/components/floating/command-palette.d.ts.map +0 -1
- package/dist/components/floating/command-palette.jsx +0 -197
- package/dist/components/floating/dropdown.d.ts +0 -15
- package/dist/components/floating/dropdown.d.ts.map +0 -1
- package/dist/components/floating/dropdown.jsx +0 -56
- package/dist/components/floating/expand.d.ts +0 -11
- package/dist/components/floating/expand.d.ts.map +0 -1
- package/dist/components/floating/expand.jsx +0 -44
- package/dist/components/floating/menu.d.ts +0 -52
- package/dist/components/floating/menu.d.ts.map +0 -1
- package/dist/components/floating/menu.jsx +0 -147
- package/dist/components/floating/modal.d.ts +0 -60
- package/dist/components/floating/modal.d.ts.map +0 -1
- package/dist/components/floating/modal.js.map +0 -1
- package/dist/components/floating/modal.jsx +0 -301
- package/dist/components/floating/toolbar.d.ts +0 -6
- package/dist/components/floating/toolbar.d.ts.map +0 -1
- package/dist/components/floating/toolbar.jsx +0 -5
- package/dist/components/floating/tooltip.d.ts +0 -17
- package/dist/components/floating/tooltip.d.ts.map +0 -1
- package/dist/components/floating/tooltip.jsx +0 -58
- package/dist/components/floating/wizard.d.ts +0 -26
- package/dist/components/floating/wizard.d.ts.map +0 -1
- package/dist/components/floating/wizard.jsx +0 -161
- package/dist/components/form/autocomplete.d.ts +0 -16
- package/dist/components/form/autocomplete.d.ts.map +0 -1
- package/dist/components/form/autocomplete.js.map +0 -1
- package/dist/components/form/autocomplete.jsx +0 -278
- package/dist/components/form/checkbox.d.ts +0 -12
- package/dist/components/form/checkbox.d.ts.map +0 -1
- package/dist/components/form/checkbox.jsx +0 -12
- package/dist/components/form/date-picker.d.ts +0 -10
- package/dist/components/form/date-picker.d.ts.map +0 -1
- package/dist/components/form/date-picker.js.map +0 -1
- package/dist/components/form/date-picker.jsx +0 -115
- package/dist/components/form/file-upload.d.ts +0 -15
- package/dist/components/form/file-upload.d.ts.map +0 -1
- package/dist/components/form/file-upload.js.map +0 -1
- package/dist/components/form/file-upload.jsx +0 -134
- package/dist/components/form/form.d.ts +0 -3
- package/dist/components/form/form.d.ts.map +0 -1
- package/dist/components/form/form.jsx +0 -10
- package/dist/components/form/formReset.d.ts +0 -2
- package/dist/components/form/formReset.d.ts.map +0 -1
- package/dist/components/form/formReset.jsx +0 -17
- package/dist/components/form/free-text.d.ts +0 -11
- package/dist/components/form/free-text.d.ts.map +0 -1
- package/dist/components/form/free-text.jsx +0 -41
- package/dist/components/form/input-field.d.ts +0 -34
- package/dist/components/form/input-field.d.ts.map +0 -1
- package/dist/components/form/input-field.jsx +0 -58
- package/dist/components/form/input.d.ts +0 -52
- package/dist/components/form/input.d.ts.map +0 -1
- package/dist/components/form/input.js.map +0 -1
- package/dist/components/form/input.jsx +0 -36
- package/dist/components/form/multi-select.d.ts +0 -19
- package/dist/components/form/multi-select.d.ts.map +0 -1
- package/dist/components/form/multi-select.jsx +0 -336
- package/dist/components/form/radiobox.d.ts +0 -7
- package/dist/components/form/radiobox.d.ts.map +0 -1
- package/dist/components/form/radiobox.jsx +0 -6
- package/dist/components/form/select.d.ts +0 -13
- package/dist/components/form/select.d.ts.map +0 -1
- package/dist/components/form/select.jsx +0 -42
- package/dist/components/form/slider.d.ts +0 -7
- package/dist/components/form/slider.d.ts.map +0 -1
- package/dist/components/form/slider.jsx +0 -45
- package/dist/components/form/switch.d.ts +0 -9
- package/dist/components/form/switch.d.ts.map +0 -1
- package/dist/components/form/switch.jsx +0 -46
- package/dist/components/form/task-list.d.ts +0 -3
- package/dist/components/form/task-list.d.ts.map +0 -1
- package/dist/components/form/task-list.js.map +0 -1
- package/dist/components/form/task-list.jsx +0 -26
- package/dist/components/form/textarea.d.ts +0 -6
- package/dist/components/form/textarea.d.ts.map +0 -1
- package/dist/components/form/textarea.jsx +0 -12
- package/dist/components/index.d.ts +0 -45
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -44
- package/dist/components/page-calendar/calendar-header.d.ts +0 -16
- package/dist/components/page-calendar/calendar-header.d.ts.map +0 -1
- package/dist/components/page-calendar/calendar-header.jsx +0 -83
- package/dist/components/page-calendar/day-view.d.ts +0 -12
- package/dist/components/page-calendar/day-view.d.ts.map +0 -1
- package/dist/components/page-calendar/day-view.jsx +0 -94
- package/dist/components/page-calendar/event-pill.d.ts +0 -9
- package/dist/components/page-calendar/event-pill.d.ts.map +0 -1
- package/dist/components/page-calendar/event-pill.jsx +0 -25
- package/dist/components/page-calendar/index.d.ts +0 -4
- package/dist/components/page-calendar/index.d.ts.map +0 -1
- package/dist/components/page-calendar/index.js +0 -2
- package/dist/components/page-calendar/month-view.d.ts +0 -11
- package/dist/components/page-calendar/month-view.d.ts.map +0 -1
- package/dist/components/page-calendar/month-view.jsx +0 -46
- package/dist/components/page-calendar/page-calendar.d.ts +0 -18
- package/dist/components/page-calendar/page-calendar.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.jsx +0 -41
- package/dist/components/page-calendar/page-calendar.types.d.ts +0 -18
- package/dist/components/page-calendar/page-calendar.types.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.types.js +0 -1
- package/dist/components/page-calendar/page-calendar.utils.d.ts +0 -24
- package/dist/components/page-calendar/page-calendar.utils.d.ts.map +0 -1
- package/dist/components/page-calendar/page-calendar.utils.js +0 -93
- package/dist/components/page-calendar/week-view.d.ts +0 -11
- package/dist/components/page-calendar/week-view.d.ts.map +0 -1
- package/dist/components/page-calendar/week-view.jsx +0 -71
- package/dist/components/table/filter.d.ts +0 -42
- package/dist/components/table/filter.d.ts.map +0 -1
- package/dist/components/table/filter.jsx +0 -141
- package/dist/components/table/group.d.ts +0 -17
- package/dist/components/table/group.d.ts.map +0 -1
- package/dist/components/table/group.jsx +0 -68
- package/dist/components/table/index.d.ts +0 -19
- package/dist/components/table/index.d.ts.map +0 -1
- package/dist/components/table/index.jsx +0 -60
- package/dist/components/table/inner-table.d.ts +0 -29
- package/dist/components/table/inner-table.d.ts.map +0 -1
- package/dist/components/table/inner-table.jsx +0 -102
- package/dist/components/table/metadata.d.ts +0 -4
- package/dist/components/table/metadata.d.ts.map +0 -1
- package/dist/components/table/metadata.jsx +0 -36
- package/dist/components/table/pagination.d.ts +0 -5
- package/dist/components/table/pagination.d.ts.map +0 -1
- package/dist/components/table/pagination.jsx +0 -74
- package/dist/components/table/row.d.ts +0 -11
- package/dist/components/table/row.d.ts.map +0 -1
- package/dist/components/table/row.jsx +0 -49
- package/dist/components/table/sort.d.ts +0 -28
- package/dist/components/table/sort.d.ts.map +0 -1
- package/dist/components/table/sort.jsx +0 -109
- package/dist/components/table/table-lib.d.ts +0 -135
- package/dist/components/table/table-lib.d.ts.map +0 -1
- package/dist/components/table/table-lib.js +0 -83
- package/dist/components/table/table.context.d.ts +0 -10
- package/dist/components/table/table.context.d.ts.map +0 -1
- package/dist/components/table/table.context.jsx +0 -4
- package/dist/components/table/table.js.map +0 -1
- package/dist/components/table/thead.d.ts +0 -9
- package/dist/components/table/thead.d.ts.map +0 -1
- package/dist/components/table/thead.jsx +0 -103
- package/dist/config/context.d.ts +0 -21
- package/dist/config/context.d.ts.map +0 -1
- package/dist/config/context.js +0 -12
- package/dist/config/default-translations.d.ts +0 -94
- package/dist/config/default-translations.d.ts.map +0 -1
- package/dist/config/default-translations.jsx +0 -87
- package/dist/config/default-tweaks.d.ts +0 -13
- package/dist/config/default-tweaks.d.ts.map +0 -1
- package/dist/config/default-tweaks.js +0 -4
- package/dist/constants-r-AHn273.js +0 -6
- package/dist/constants-r-AHn273.js.map +0 -1
- package/dist/constants.d.ts +0 -3
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -2
- package/dist/date-picker-Bnl07nd8.js +0 -1628
- package/dist/date-picker-Bnl07nd8.js.map +0 -1
- package/dist/dom-CyQHY7ID.js +0 -2838
- package/dist/dom-CyQHY7ID.js.map +0 -1
- package/dist/file-upload-93d5DR4q.js +0 -3255
- package/dist/file-upload-93d5DR4q.js.map +0 -1
- package/dist/floating-ui.react-M2PGXLDp.js +0 -3706
- package/dist/floating-ui.react-M2PGXLDp.js.map +0 -1
- package/dist/fns-C7Dt27Qd.js +0 -33
- package/dist/fns-C7Dt27Qd.js.map +0 -1
- package/dist/hooks/use-click-outside.d.ts +0 -3
- package/dist/hooks/use-click-outside.d.ts.map +0 -1
- package/dist/hooks/use-click-outside.js +0 -17
- package/dist/hooks/use-color-parser.d.ts +0 -2
- package/dist/hooks/use-color-parser.d.ts.map +0 -1
- package/dist/hooks/use-color-parser.js +0 -9
- package/dist/hooks/use-components-provider.d.ts +0 -15
- package/dist/hooks/use-components-provider.d.ts.map +0 -1
- package/dist/hooks/use-components-provider.jsx +0 -22
- package/dist/hooks/use-debounce.d.ts +0 -5
- package/dist/hooks/use-debounce.d.ts.map +0 -1
- package/dist/hooks/use-debounce.js +0 -12
- package/dist/hooks/use-floating-ref.d.ts +0 -2
- package/dist/hooks/use-floating-ref.d.ts.map +0 -1
- package/dist/hooks/use-floating-ref.js +0 -6
- package/dist/hooks/use-form.d.ts +0 -394
- package/dist/hooks/use-form.d.ts.map +0 -1
- package/dist/hooks/use-form.js +0 -563
- package/dist/hooks/use-hover.d.ts +0 -3
- package/dist/hooks/use-hover.d.ts.map +0 -1
- package/dist/hooks/use-hover.js +0 -18
- package/dist/hooks/use-input-id.d.ts +0 -4
- package/dist/hooks/use-input-id.d.ts.map +0 -1
- package/dist/hooks/use-input-id.js +0 -5
- package/dist/hooks/use-is-coarse-device.d.ts +0 -2
- package/dist/hooks/use-is-coarse-device.d.ts.map +0 -1
- package/dist/hooks/use-is-coarse-device.js +0 -12
- package/dist/hooks/use-locale.d.ts +0 -3
- package/dist/hooks/use-locale.d.ts.map +0 -1
- package/dist/hooks/use-locale.js +0 -10
- package/dist/hooks/use-media-query.d.ts +0 -2
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-media-query.js +0 -25
- package/dist/hooks/use-on-event.d.ts +0 -4
- package/dist/hooks/use-on-event.d.ts.map +0 -1
- package/dist/hooks/use-on-event.js +0 -7
- package/dist/hooks/use-parent.d.ts +0 -3
- package/dist/hooks/use-parent.d.ts.map +0 -1
- package/dist/hooks/use-parent.js +0 -21
- package/dist/hooks/use-preferences.d.ts +0 -2
- package/dist/hooks/use-preferences.d.ts.map +0 -1
- package/dist/hooks/use-preferences.js +0 -23
- package/dist/hooks/use-previous.d.ts +0 -2
- package/dist/hooks/use-previous.d.ts.map +0 -1
- package/dist/hooks/use-previous.js +0 -9
- package/dist/hooks/use-reactive.d.ts +0 -2
- package/dist/hooks/use-reactive.d.ts.map +0 -1
- package/dist/hooks/use-reactive.js +0 -9
- package/dist/hooks/use-remove-scroll.d.ts +0 -4
- package/dist/hooks/use-remove-scroll.d.ts.map +0 -1
- package/dist/hooks/use-remove-scroll.js +0 -48
- package/dist/hooks/use-resize-observer.d.ts +0 -2
- package/dist/hooks/use-resize-observer.d.ts.map +0 -1
- package/dist/hooks/use-resize-observer.js +0 -17
- package/dist/hooks/use-stable-ref.d.ts +0 -2
- package/dist/hooks/use-stable-ref.d.ts.map +0 -1
- package/dist/hooks/use-stable-ref.js +0 -9
- package/dist/hooks/use-swipe.d.ts +0 -8
- package/dist/hooks/use-swipe.d.ts.map +0 -1
- package/dist/hooks/use-swipe.js +0 -17
- package/dist/hooks/use-translations.d.ts +0 -92
- package/dist/hooks/use-translations.d.ts.map +0 -1
- package/dist/hooks/use-translations.js +0 -9
- package/dist/hooks/use-tweaks.d.ts +0 -3
- package/dist/hooks/use-tweaks.d.ts.map +0 -1
- package/dist/hooks/use-tweaks.js +0 -9
- package/dist/hooks/use-window-size.d.ts +0 -5
- package/dist/hooks/use-window-size.d.ts.map +0 -1
- package/dist/hooks/use-window-size.js +0 -14
- package/dist/index-0YMC-_Lt.js +0 -20
- package/dist/index-0YMC-_Lt.js.map +0 -1
- package/dist/index-BJ1ayTam.js +0 -126
- package/dist/index-BJ1ayTam.js.map +0 -1
- package/dist/index-C-PuFUZi.js +0 -3416
- package/dist/index-C-PuFUZi.js.map +0 -1
- package/dist/index-DDeQW0JW.js +0 -1816
- package/dist/index-DDeQW0JW.js.map +0 -1
- package/dist/index-DE4shK8D.js +0 -215
- package/dist/index-DE4shK8D.js.map +0 -1
- package/dist/index-DlJ_2RBL.js +0 -35
- package/dist/index-DlJ_2RBL.js.map +0 -1
- package/dist/index-t1qLJTt5.js +0 -351
- package/dist/index-t1qLJTt5.js.map +0 -1
- package/dist/index.d.ts +0 -22
- package/dist/index.d.ts.map +0 -1
- package/dist/index.esm-BaIwleSE.js +0 -343
- package/dist/index.esm-BaIwleSE.js.map +0 -1
- package/dist/input-_MVxmIpu.js +0 -443
- package/dist/input-_MVxmIpu.js.map +0 -1
- package/dist/input-field-CDCOODOl.js +0 -182
- package/dist/input-field-CDCOODOl.js.map +0 -1
- package/dist/lib/combi-keys.d.ts +0 -15
- package/dist/lib/combi-keys.d.ts.map +0 -1
- package/dist/lib/combi-keys.js +0 -60
- package/dist/lib/dict.d.ts +0 -9
- package/dist/lib/dict.d.ts.map +0 -1
- package/dist/lib/dict.js +0 -28
- package/dist/lib/dom.d.ts +0 -20
- package/dist/lib/dom.d.ts.map +0 -1
- package/dist/lib/dom.js +0 -66
- package/dist/lib/fns.d.ts +0 -11
- package/dist/lib/fns.d.ts.map +0 -1
- package/dist/lib/fns.js +0 -46
- package/dist/lib/fzf.d.ts +0 -16
- package/dist/lib/fzf.d.ts.map +0 -1
- package/dist/lib/fzf.js +0 -115
- package/dist/lib/keyboard-area.d.ts +0 -16
- package/dist/lib/keyboard-area.d.ts.map +0 -1
- package/dist/lib/keyboard-area.js +0 -14
- package/dist/notifications-Dp0ydKJS.js +0 -2576
- package/dist/notifications-Dp0ydKJS.js.map +0 -1
- package/dist/polymorph-B5n9fs_K.js +0 -10
- package/dist/polymorph-B5n9fs_K.js.map +0 -1
- package/dist/proxy-BZcQiBrp.js +0 -2495
- package/dist/proxy-BZcQiBrp.js.map +0 -1
- package/dist/skeleton-BjJobYYf.js +0 -24
- package/dist/skeleton-BjJobYYf.js.map +0 -1
- package/dist/slot-CRyweuj0.js +0 -79
- package/dist/slot-CRyweuj0.js.map +0 -1
- package/dist/tabs-B0g7YtQv.js +0 -123
- package/dist/tabs-B0g7YtQv.js.map +0 -1
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
- package/dist/types.d.ts +0 -26
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/use-motion-value-eGwNuWuw.js +0 -14
- package/dist/use-motion-value-eGwNuWuw.js.map +0 -1
- package/dist/use-stable-ref-CYh-YkID.js +0 -11
- package/dist/use-stable-ref-CYh-YkID.js.map +0 -1
- package/dist/use-translations-DSltA7H_.js +0 -169
- package/dist/use-translations-DSltA7H_.js.map +0 -1
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { autoUpdate, flip, FloatingFocusManager, FloatingList, FloatingNode, FloatingPortal, FloatingTree, offset, safePolygon, shift, useClick, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingTree, useHover, useInteractions, useListItem, useListNavigation, useRole, useTypeahead, } from "@floating-ui/react";
|
|
3
|
-
import { Slot } from "../core/slot";
|
|
4
|
-
import { CaretRightIcon } from "@phosphor-icons/react";
|
|
5
|
-
import React, { createContext, Fragment, useContext, useEffect, useRef, useState } from "react";
|
|
6
|
-
import { FLOATING_DELAY, TYPEAHEAD_RESET_DELAY } from "../../constants";
|
|
7
|
-
import { css, mergeRefs } from "../../lib/dom";
|
|
8
|
-
const menuItemClassName = (highlight = "") => css("w-full min-w-36 outline-none p-2.5 items-center flex justify-between text-left", "hover:bg-primary focus:bg-primary aria-expanded:opacity-80", "focus:text-primary-foreground hover:text-primary-foreground", "first-of-type:rounded-t-lg last-of-type:rounded-b-lg", "disabled:opacity-40 disabled:cursor-not-allowed", highlight);
|
|
9
|
-
const MenuContext = createContext({
|
|
10
|
-
isOpen: false,
|
|
11
|
-
activeIndex: null,
|
|
12
|
-
getItemProps: () => ({}),
|
|
13
|
-
setActiveIndex: () => { },
|
|
14
|
-
setHasFocusInside: () => { },
|
|
15
|
-
});
|
|
16
|
-
const MenuComponent = React.forwardRef(({ children, FloatingComponent = "div", hover = true, open, isParent = false, restoreFocus = false, floatingClassName = "", label, ...props }, forwardedRef) => {
|
|
17
|
-
const [isOpen, setIsOpen] = useState(open ?? false);
|
|
18
|
-
const [hasFocusInside, setHasFocusInside] = useState(false);
|
|
19
|
-
const [activeIndex, setActiveIndex] = useState(null);
|
|
20
|
-
const elementsRef = useRef([]);
|
|
21
|
-
const labelsRef = useRef([]);
|
|
22
|
-
const parent = useContext(MenuContext);
|
|
23
|
-
const parentId = useFloatingParentNodeId();
|
|
24
|
-
const tree = useFloatingTree();
|
|
25
|
-
const nodeId = useFloatingNodeId();
|
|
26
|
-
const item = useListItem();
|
|
27
|
-
const isNested = parentId !== null;
|
|
28
|
-
const { floatingStyles, refs, context } = useFloating({
|
|
29
|
-
nodeId,
|
|
30
|
-
open: isOpen,
|
|
31
|
-
transform: true,
|
|
32
|
-
strategy: "absolute",
|
|
33
|
-
onOpenChange: setIsOpen,
|
|
34
|
-
whileElementsMounted: autoUpdate,
|
|
35
|
-
placement: isNested ? "right" : "bottom-start",
|
|
36
|
-
middleware: [offset({ mainAxis: isNested ? 0 : 4, alignmentAxis: isNested ? -4 : 0 }), flip(), shift()],
|
|
37
|
-
});
|
|
38
|
-
const role = useRole(context, { role: "menu" });
|
|
39
|
-
const dismiss = useDismiss(context, { bubbles: true });
|
|
40
|
-
const hoverModule = useHover(context, {
|
|
41
|
-
move: false,
|
|
42
|
-
enabled: hover,
|
|
43
|
-
delay: { open: FLOATING_DELAY },
|
|
44
|
-
handleClose: safePolygon({ blockPointerEvents: true, requireIntent: false }),
|
|
45
|
-
});
|
|
46
|
-
const click = useClick(context, {
|
|
47
|
-
toggle: !isNested,
|
|
48
|
-
event: "mousedown",
|
|
49
|
-
ignoreMouse: isNested,
|
|
50
|
-
keyboardHandlers: true,
|
|
51
|
-
});
|
|
52
|
-
const listNavigation = useListNavigation(context, {
|
|
53
|
-
loop: true,
|
|
54
|
-
activeIndex,
|
|
55
|
-
nested: isNested,
|
|
56
|
-
listRef: elementsRef,
|
|
57
|
-
onNavigate: setActiveIndex,
|
|
58
|
-
});
|
|
59
|
-
const typeahead = useTypeahead(context, {
|
|
60
|
-
activeIndex,
|
|
61
|
-
listRef: labelsRef,
|
|
62
|
-
resetMs: TYPEAHEAD_RESET_DELAY,
|
|
63
|
-
onMatch: isOpen ? setActiveIndex : undefined,
|
|
64
|
-
});
|
|
65
|
-
const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([hoverModule, click, role, dismiss, listNavigation, typeahead]);
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
if (!tree)
|
|
68
|
-
return;
|
|
69
|
-
const handleTreeClick = () => setIsOpen(false);
|
|
70
|
-
const onSubMenuOpen = (event) => {
|
|
71
|
-
if (event.nodeId !== nodeId && event.parentId === parentId)
|
|
72
|
-
setIsOpen(false);
|
|
73
|
-
};
|
|
74
|
-
tree.events.on("click", handleTreeClick);
|
|
75
|
-
tree.events.on("menuopen", onSubMenuOpen);
|
|
76
|
-
return () => {
|
|
77
|
-
tree.events.off("click", handleTreeClick);
|
|
78
|
-
tree.events.off("menuopen", onSubMenuOpen);
|
|
79
|
-
};
|
|
80
|
-
}, [tree, nodeId, parentId]);
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
if (isOpen && tree)
|
|
83
|
-
tree.events.emit("menuopen", { parentId, nodeId });
|
|
84
|
-
}, [tree, isOpen, nodeId, parentId]);
|
|
85
|
-
const className = isParent ? props.className : css(menuItemClassName(props.className));
|
|
86
|
-
return (<FloatingNode id={nodeId}>
|
|
87
|
-
<Fragment>
|
|
88
|
-
{props.asChild ? (<Slot {...getReferenceProps(parent.getItemProps({
|
|
89
|
-
...props,
|
|
90
|
-
onFocus(event) {
|
|
91
|
-
props.onFocus?.(event);
|
|
92
|
-
setHasFocusInside(false);
|
|
93
|
-
parent.setHasFocusInside(true);
|
|
94
|
-
},
|
|
95
|
-
}))} children={label} className={className} data-open={isOpen ? "" : undefined} data-nested={isNested ? "" : undefined} role={isNested ? "menuitem" : undefined} data-focus-inside={hasFocusInside ? "" : undefined} ref={mergeRefs(refs.setReference, item.ref, forwardedRef)} tabIndex={!isNested ? undefined : parent.activeIndex === item.index ? 0 : -1}/>) : (<button type="button" className={className} data-open={isOpen ? "" : undefined} data-nested={isNested ? "" : undefined} role={isNested ? "menuitem" : undefined} data-focus-inside={hasFocusInside ? "" : undefined} ref={mergeRefs(refs.setReference, item.ref, forwardedRef)} tabIndex={!isNested ? undefined : parent.activeIndex === item.index ? 0 : -1} {...getReferenceProps(parent.getItemProps({
|
|
96
|
-
...props,
|
|
97
|
-
onFocus(event) {
|
|
98
|
-
props.onFocus?.(event);
|
|
99
|
-
setHasFocusInside(false);
|
|
100
|
-
parent.setHasFocusInside(true);
|
|
101
|
-
},
|
|
102
|
-
}))}>
|
|
103
|
-
{label}
|
|
104
|
-
{isNested && (<span style={{ marginLeft: 10, fontSize: 10 }}>
|
|
105
|
-
<span className="sr-only">Next menu</span>
|
|
106
|
-
<CaretRightIcon size={14}/>
|
|
107
|
-
</span>)}
|
|
108
|
-
</button>)}
|
|
109
|
-
</Fragment>
|
|
110
|
-
<MenuContext.Provider value={{ activeIndex, setActiveIndex, getItemProps, setHasFocusInside, isOpen }}>
|
|
111
|
-
<FloatingList elementsRef={elementsRef} labelsRef={labelsRef}>
|
|
112
|
-
{isOpen && (<FloatingPortal>
|
|
113
|
-
<FloatingFocusManager context={context} modal={false} initialFocus={isNested ? -1 : 0} returnFocus={isParent ? restoreFocus : !isNested}>
|
|
114
|
-
<FloatingComponent {...getFloatingProps()} ref={refs.setFloating} style={{ ...props.style, ...floatingStyles }} className={css("isolate z-tooltip flex max-h-80 flex-col items-start overflow-y-auto rounded-lg border border-floating-border bg-floating-background text-left shadow-shadow-floating outline-none", floatingClassName)}>
|
|
115
|
-
{children}
|
|
116
|
-
</FloatingComponent>
|
|
117
|
-
</FloatingFocusManager>
|
|
118
|
-
</FloatingPortal>)}
|
|
119
|
-
</FloatingList>
|
|
120
|
-
</MenuContext.Provider>
|
|
121
|
-
</FloatingNode>);
|
|
122
|
-
});
|
|
123
|
-
export const MenuItem = React.forwardRef(({ title, Right, disabled, children, ...props }, forwardedRef) => {
|
|
124
|
-
const menu = useContext(MenuContext);
|
|
125
|
-
const item = useListItem({ label: disabled ? null : title });
|
|
126
|
-
const tree = useFloatingTree();
|
|
127
|
-
const isActive = item.index === menu.activeIndex;
|
|
128
|
-
return (<button {...props} title={title} type="button" role="menuitem" disabled={disabled} data-active={isActive} data-open={menu.isOpen} tabIndex={isActive ? 0 : -1} ref={mergeRefs(item.ref, forwardedRef)} className={menuItemClassName(`${props.className ?? ""} ${isActive ? "bg-primary text-primary-foreground" : ""}`)} {...menu.getItemProps({
|
|
129
|
-
onClick(event) {
|
|
130
|
-
props.onClick?.(event);
|
|
131
|
-
tree?.events.emit("click");
|
|
132
|
-
},
|
|
133
|
-
onFocus(event) {
|
|
134
|
-
props.onFocus?.(event);
|
|
135
|
-
menu.setHasFocusInside(true);
|
|
136
|
-
},
|
|
137
|
-
})}>
|
|
138
|
-
{children}
|
|
139
|
-
{Right ? <Right size={16}/> : null}
|
|
140
|
-
</button>);
|
|
141
|
-
});
|
|
142
|
-
export const Menu = React.forwardRef((props, ref) => {
|
|
143
|
-
const parentId = useFloatingParentNodeId();
|
|
144
|
-
return parentId === null ? (<FloatingTree>
|
|
145
|
-
<MenuComponent {...props} isParent ref={ref}/>
|
|
146
|
-
</FloatingTree>) : (<MenuComponent {...props} isParent={false} ref={ref}/>);
|
|
147
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { type ElementProps, type FloatingContext } from "@floating-ui/react";
|
|
2
|
-
import { HTMLMotionProps } from "motion/react";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { Label, Override } from "../../types";
|
|
5
|
-
import { ButtonProps } from "../core/button";
|
|
6
|
-
export declare const useConfirm: () => (options: ConfirmOptions) => Promise<boolean>;
|
|
7
|
-
export type ModalType = "dialog" | "drawer" | "sheet";
|
|
8
|
-
export type DrawerPosition = "left" | "right";
|
|
9
|
-
export type ModalProps = Override<HTMLMotionProps<"div">, ({
|
|
10
|
-
title: Label;
|
|
11
|
-
ariaTitle?: string;
|
|
12
|
-
} | {
|
|
13
|
-
ariaTitle: string;
|
|
14
|
-
title?: Label;
|
|
15
|
-
}) & {
|
|
16
|
-
open: boolean;
|
|
17
|
-
onChange: (nextState: boolean) => void;
|
|
18
|
-
} & Partial<{
|
|
19
|
-
footer: Label;
|
|
20
|
-
type: ModalType;
|
|
21
|
-
animated: boolean;
|
|
22
|
-
asChild: boolean;
|
|
23
|
-
layoutId: string;
|
|
24
|
-
resizer: boolean;
|
|
25
|
-
className: string;
|
|
26
|
-
closable: boolean;
|
|
27
|
-
forceType: boolean;
|
|
28
|
-
bodyClassName: string;
|
|
29
|
-
overlayClassName: string;
|
|
30
|
-
position: DrawerPosition;
|
|
31
|
-
overlayClickClose: boolean;
|
|
32
|
-
closeOnFocusOut: boolean;
|
|
33
|
-
role: "dialog";
|
|
34
|
-
interactions: ElementProps[];
|
|
35
|
-
trigger: Label;
|
|
36
|
-
}>>;
|
|
37
|
-
export type ModalRef = {
|
|
38
|
-
context: FloatingContext;
|
|
39
|
-
floating: HTMLElement | null;
|
|
40
|
-
};
|
|
41
|
-
type ModalComponent = React.FC<ModalProps> & {
|
|
42
|
-
confirm: <T>(options: ConfirmOptions) => Promise<T>;
|
|
43
|
-
};
|
|
44
|
-
export declare const Modal: ModalComponent;
|
|
45
|
-
type ButtonConfirmationAction = {
|
|
46
|
-
value?: unknown;
|
|
47
|
-
text?: Label;
|
|
48
|
-
theme?: ButtonProps["theme"];
|
|
49
|
-
};
|
|
50
|
-
export type ConfirmOptions = {
|
|
51
|
-
title?: Label;
|
|
52
|
-
description?: Label;
|
|
53
|
-
cancel?: ButtonConfirmationAction;
|
|
54
|
-
confirm?: ButtonConfirmationAction;
|
|
55
|
-
};
|
|
56
|
-
export declare const ModalConfirmProvider: ({ children }: {
|
|
57
|
-
children: React.ReactNode;
|
|
58
|
-
}) => React.JSX.Element;
|
|
59
|
-
export {};
|
|
60
|
-
//# sourceMappingURL=modal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/floating/modal.tsx"],"names":[],"mappings":"AACA,OAAO,EASH,KAAK,YAAY,EACjB,KAAK,eAAe,EACvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEH,eAAe,EAQlB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAWN,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,KAAK,EAAO,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAU,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMrD,eAAO,MAAM,UAAU,kBAF8B,cAAc,KAAK,OAAO,CAAC,OAAO,CAEvB,CAAC;AAEjE,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAuD9C,MAAM,MAAM,UAAU,GAAG,QAAQ,CAC7B,eAAe,CAAC,KAAK,CAAC,EACtB,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG;IAC5E,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C,GAAG,OAAO,CAAC;IACJ,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC;CAClB,CAAC,CACT,CAAC;AAkFF,MAAM,MAAM,QAAQ,GAAG;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC;AAIlF,KAAK,cAAc,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG;IACzC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,cA+PU,CAAC;AAE/B,KAAK,wBAAwB,GAAG;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,OAAO,CAAC,EAAE,wBAAwB,CAAC;CACtC,CAAC;AAaF,eAAO,MAAM,oBAAoB,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAuD/E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../../src/hooks/use-media-query.ts","../../../src/hooks/use-floating-ref.ts","../../../src/components/floating/modal.tsx"],"sourcesContent":["import { useLayoutEffect, useState } from \"react\";\nimport { isSsr } from \"../lib/fns\";\n\nconst getMatches = (query: string, defaultValue: boolean): boolean => {\n if (isSsr()) {\n return defaultValue;\n }\n return window.matchMedia(query).matches;\n};\n\nexport const useMediaQuery = (query: string, defaultValue: boolean = true) => {\n const [matches, setMatches] = useState(defaultValue);\n\n useLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n const onChange = () => setMatches(getMatches(query, defaultValue));\n onChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(onChange);\n return () => {\n return matchMedia.removeListener ? matchMedia.removeListener(onChange) : undefined;\n };\n }\n matchMedia.addEventListener(\"change\", onChange);\n return () => matchMedia.removeEventListener(\"change\", onChange);\n }, [query]);\n\n return matches;\n};\n","import { useContext } from \"react\";\nimport { Context } from \"../config/context\";\n\nexport const useFloatingRef = () => {\n const ctx = useContext(Context);\n return ctx.floatingRef ?? undefined;\n};\n","\"use client\";\nimport {\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n type ElementProps,\n type FloatingContext,\n} from \"@floating-ui/react\";\nimport { cva } from \"class-variance-authority\";\nimport { XIcon } from \"@phosphor-icons/react\";\nimport {\n AnimatePresence,\n HTMLMotionProps,\n motion,\n MotionConfig,\n MotionValue,\n PanInfo,\n TargetAndTransition,\n useMotionValue,\n animate,\n} from \"motion/react\";\nimport { Slot } from \"../core/slot\";\nimport React, {\n ForwardedRef,\n forwardRef,\n Fragment,\n PropsWithChildren,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { useMediaQuery } from \"../../hooks/use-media-query\";\nimport { css, mergeRefs } from \"../../lib/dom\";\nimport { Label, Nil, Override } from \"../../types\";\nimport { useFloatingRef } from \"../../hooks/use-floating-ref\";\nimport { useTranslations } from \"../../hooks/use-translations\";\nimport { Button, ButtonProps } from \"../core/button\";\n\ntype AnimationLabels = \"initial\" | \"enter\" | \"exit\";\n\nconst ConfirmContext = React.createContext<(options: ConfirmOptions) => Promise<boolean>>(async () => false);\n\nexport const useConfirm = () => React.useContext(ConfirmContext);\n\nexport type ModalType = \"dialog\" | \"drawer\" | \"sheet\";\n\nexport type DrawerPosition = \"left\" | \"right\";\n\ntype Animations = {\n sheet: Record<AnimationLabels, TargetAndTransition>;\n dialog: Record<AnimationLabels, TargetAndTransition>;\n drawer: (type: DrawerPosition) => Record<AnimationLabels, TargetAndTransition>;\n};\n\nconst animationDuration = \"500ms\";\n\nconst drawerLeft: Record<string, TargetAndTransition> = {\n exit: { x: [\"0%\", \"-30%\"], opacity: 0, animationDuration },\n enter: { x: [\"-30%\", \"0%\"], opacity: 1, animationDuration },\n initial: { x: [\"-30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst drawerRight: Record<string, TargetAndTransition> = {\n enter: { x: \"0%\", opacity: 1, animationDuration },\n exit: { x: [\"0%\", \"30%\"], opacity: 0, animationDuration },\n initial: { x: [\"30%\", \"0%\"], opacity: 0.8, animationDuration },\n};\n\nconst animations: Animations = {\n drawer: (type) => (type === \"left\" ? drawerLeft : drawerRight),\n sheet: {\n enter: { opacity: 1, y: \"0%\", animationDuration, transformOrigin: \"bottom\" },\n exit: { opacity: 0.4, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n initial: { opacity: 0.7, y: \"10%\", animationDuration, transformOrigin: \"bottom\" },\n },\n dialog: {\n exit: { opacity: 0, scale: 0.95, animationDuration },\n enter: { opacity: 1, scale: [1.05, 1], animationDuration },\n initial: { opacity: 0.5, scale: 0.95, animationDuration, transition: { duration: 0.5, ease: \"easeInOut\" } },\n },\n};\n\nconst variants = cva(\n \"z-floating flex min-w-xs appearance-none flex-col flex-nowrap gap-4 border border-floating-border bg-floating-background outline-0 ring-0\",\n {\n variants: {\n type: {\n drawer: \"absolute h-screen max-h-screen min-h-0 w-fit max-w-[90%]\",\n dialog: \"container relative h-min max-h-[calc(100lvh-10%)] rounded-lg py-4\",\n sheet: \"absolute bottom-0 h-screen max-h-[calc(100svh-5%)] max-h-[calc(100vh-15%)] w-screen rounded-t-lg pb-4 pt-6\",\n },\n position: {\n none: \"\",\n right: \"absolute right-0 top-0 rounded-l-lg py-4\",\n left: \"absolute left-0 top-0 rounded-r-lg py-4\",\n },\n },\n defaultVariants: { position: \"right\", type: \"dialog\" },\n }\n);\n\nexport type ModalProps = Override<\n HTMLMotionProps<\"div\">,\n ({ title: Label; ariaTitle?: string } | { ariaTitle: string; title?: Label }) & {\n open: boolean;\n onChange: (nextState: boolean) => void;\n } & Partial<{\n footer: Label;\n type: ModalType;\n animated: boolean;\n asChild: boolean;\n layoutId: string;\n resizer: boolean;\n className: string;\n closable: boolean;\n forceType: boolean;\n bodyClassName: string;\n overlayClassName: string;\n position: DrawerPosition;\n overlayClickClose: boolean;\n closeOnFocusOut: boolean;\n role: \"dialog\";\n interactions: ElementProps[];\n trigger: Label;\n }>\n>;\n\ntype DraggableProps = {\n sheet: boolean;\n position: DrawerPosition;\n parent: React.MutableRefObject<HTMLElement | null>;\n onChange: (nextState: boolean) => void;\n value: MotionValue<number | undefined>;\n};\n\nconst dragConstraints = { top: 0, left: 0, right: 0, bottom: 0 };\n\nconst calculateClose = (n: number) => n * 0.6;\n\nconst Draggable = (props: DraggableProps) => {\n const onDrag = (e: Event, info: PanInfo) => {\n if (props.parent.current) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n if (props.sheet) {\n const div = props.parent.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = props.value.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return props.value.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n props.onChange(false);\n return setTimeout(() => props.value.set(undefined), 350);\n }\n const div = props.parent.current as HTMLElement;\n const v = props.value.get() || div.getBoundingClientRect().width;\n const delta = props.position === \"right\" ? -info.delta.x : info.delta.x;\n const value = Math.abs(v + delta);\n return props.value.set(value);\n }\n };\n\n return (\n <motion.button\n draggable\n dragListener\n dragMomentum\n tabIndex={-1}\n type=\"button\"\n animate={false}\n dragElastic={0}\n dragPropagation\n initial={false}\n onDrag={onDrag}\n dragSnapToOrigin\n dragDirectionLock\n aria-hidden=\"true\"\n drag={props.sheet ? \"y\" : \"x\"}\n dragConstraints={dragConstraints}\n whileDrag={{ cursor: \"grabbing\" }}\n className={css(\n \"absolute isolate z-calendar rounded-lg\",\n props.sheet ? \"cursor-row-resize\" : \"cursor-col-resize bg-floating-border\",\n props.sheet\n ? \"top-1 flex h-3 w-full justify-center py-2\"\n : props.position === \"left\"\n ? \"right-5 top-1/2 h-10 w-2\"\n : \"left-2 top-1/2 h-10 w-2\"\n )}\n >\n {props.sheet ? <div className=\"h-2 w-1/4 rounded-lg bg-floating-border\" /> : null}\n </motion.button>\n );\n};\n\nconst positions = { drawer: \"right\", sheet: \"none\", dialog: \"none\" } as const;\n\nconst fetchPosition = (isDesktop: Nil<boolean>, forceType: Nil<boolean>, propsType: Nil<ModalType>, propsPosition: Nil<DrawerPosition>) => {\n const type = propsType || \"dialog\";\n if (isDesktop) return propsType === \"drawer\" ? (propsPosition ?? positions.drawer) : positions[type];\n return forceType ? positions[type] : positions.sheet;\n};\n\nexport type ModalRef = { context: FloatingContext; floating: HTMLElement | null };\n\nconst noop: ElementProps[] = [];\n\ntype ModalComponent = React.FC<ModalProps> & {\n confirm: <T>(options: ConfirmOptions) => Promise<T>;\n};\n\nexport const Modal: ModalComponent = forwardRef<ModalRef, PropsWithChildren<ModalProps>>(\n (\n {\n open,\n title,\n footer,\n asChild,\n trigger,\n children,\n onChange,\n ariaTitle,\n className,\n bodyClassName,\n resizer = true,\n animated = true,\n closable = true,\n forceType = false,\n layoutId = undefined,\n overlayClassName = \"\",\n type: _type = \"dialog\",\n position: propsPosition,\n overlayClickClose = false,\n closeOnFocusOut = false,\n interactions: outInteractions = noop,\n ...props\n }: PropsWithChildren<ModalProps>,\n externalRef: ForwardedRef<ModalRef>\n ) => {\n const t = useTranslations();\n const root = useFloatingRef();\n const innerContent = useRef<HTMLDivElement>(null);\n const removeScrollRef = useRef<HTMLDivElement>(null);\n const headingId = useId();\n const descriptionId = useId();\n const isDesktop = useMediaQuery(\"(min-width: 64rem)\");\n const position = fetchPosition(isDesktop, forceType, _type, propsPosition);\n const func = isDesktop ? animations[_type] : forceType ? animations[_type] : animations.sheet;\n const animation = typeof func === \"function\" ? func(position as DrawerPosition) : func;\n const type = isDesktop ? _type : forceType ? _type : \"sheet\";\n const useResizer = type !== \"dialog\";\n\n const floating = useFloating({ open, onOpenChange: onChange, strategy: \"fixed\" });\n const click = useClick(floating.context, {});\n const role = useRole(floating.context, { role: \"dialog\" });\n const dismiss = useDismiss(floating.context, {\n bubbles: true,\n escapeKey: true,\n outsidePress: (event) => {\n const target = event.target as Node;\n return overlayClickClose && !!target?.isConnected;\n },\n });\n\n const interactions = useInteractions([click, dismiss, role].concat(outInteractions));\n\n const floatingSize = useMotionValue<number | undefined>(undefined);\n const sheetY = useMotionValue<number | undefined>(undefined);\n const isDragging = useRef(false);\n const dragStart = useRef(0);\n\n useEffect(() => {\n floatingSize.set(undefined);\n sheetY.set(undefined);\n }, [type, floatingSize, sheetY]);\n\n const onClose = () => onChange(false);\n\n useImperativeHandle(externalRef, () => ({ context: floating.context, floating: removeScrollRef.current }), [\n floating.context,\n removeScrollRef,\n ]);\n\n const onDragHeader = (_: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => {\n const div = floating.refs.floating.current as HTMLElement;\n const rect = div.getBoundingClientRect();\n const v = floatingSize.get() || rect.height;\n const result = Math.abs(v - info.delta.y);\n const max = window.outerHeight;\n const screenHeightToClose = calculateClose(max);\n if (result >= screenHeightToClose) return floatingSize.set(result);\n if (document.activeElement instanceof HTMLElement) {\n document.activeElement?.blur();\n }\n onChange?.(false);\n return setTimeout(() => floatingSize.set(undefined), 350);\n };\n\n const draggableMotionProps =\n type === \"sheet\"\n ? ({\n drag: \"y\",\n animate: false,\n dragElastic: 0,\n initial: false,\n dragConstraints,\n draggable: true,\n dragListener: true,\n dragMomentum: true,\n onDrag: onDragHeader,\n dragPropagation: true,\n dragSnapToOrigin: true,\n dragDirectionLock: true,\n whileDrag: { cursor: \"grabbing\" },\n } as const)\n : { animate: animated, initial: false };\n\n const scrollInitial = useMotionValue<number | undefined>(undefined);\n const scroll = useMotionValue<number | undefined>(undefined);\n\n const Component = asChild ? Slot : motion.button;\n\n return (\n <Fragment>\n {trigger ? (\n <Component ref={floating.refs.setReference} {...interactions.getReferenceProps()} layoutId={layoutId} type=\"button\">\n {trigger}\n </Component>\n ) : null}\n <MotionConfig reducedMotion={animated ? \"user\" : \"always\"}>\n <FloatingPortal preserveTabOrder root={root}>\n <AnimatePresence mode=\"wait\" propagate>\n {open ? (\n <FloatingOverlay\n lockScroll\n className={css(\n \"inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80\",\n type === \"drawer\" ? \"\" : \"items-start justify-center pt-10 lg:p-10\",\n overlayClassName\n )}\n >\n <FloatingFocusManager guards modal closeOnFocusOut={closeOnFocusOut} context={floating.context}>\n <AnimatePresence propagate>\n <motion.div\n {...props}\n {...(title\n ? {\n \"aria-labelledby\": headingId,\n \"aria-describedby\": descriptionId,\n }\n : { \"aria-label\": ariaTitle })}\n {...interactions.getFloatingProps({\n \"aria-modal\": open,\n ref: mergeRefs<HTMLDivElement>(floating.refs.setFloating, removeScrollRef),\n className: css(variants({ position, type }), className, \"isolate overscroll-contain\"),\n })}\n exit=\"exit\"\n layout={true}\n animate=\"enter\"\n initial=\"initial\"\n layoutId={layoutId}\n variants={animation}\n data-component=\"modal\"\n style={type === \"drawer\" ? { width: floatingSize } : { height: floatingSize, y: sheetY }}\n >\n {useResizer && resizer ? (\n <Draggable\n onChange={onChange}\n value={floatingSize}\n sheet={type === \"sheet\"}\n position={position as DrawerPosition}\n parent={floating.refs.floating}\n />\n ) : null}\n {title ? (\n <motion.header {...draggableMotionProps} className=\"relative isolate w-full\">\n {title ? (\n <h2\n id={headingId}\n className=\"block select-text border-b border-floating-border px-8 pb-2 text-3xl font-medium leading-relaxed\"\n >\n {title}\n </h2>\n ) : null}\n </motion.header>\n ) : null}\n <motion.section\n ref={innerContent}\n id={title ? descriptionId : undefined}\n data-component=\"modal-body\"\n className={css(\"flex-1 select-text overflow-y-auto px-8 py-1\", bodyClassName)}\n onTouchEnd={async () => {\n scroll.set(undefined);\n scrollInitial.set(undefined);\n\n if (isDragging.current) {\n const currentY = sheetY.get() || 0;\n const threshold = window.innerHeight * 0.2;\n const sheetYNumeric = sheetY as MotionValue<number>;\n if (currentY > threshold) {\n await animate(sheetYNumeric, window.innerHeight, { duration: 0.2, ease: \"easeIn\" })\n .finished;\n onChange(false);\n } else {\n animate(sheetYNumeric, 0, { type: \"spring\", bounce: 0, duration: 0.3 });\n }\n isDragging.current = false;\n }\n }}\n onTouchStart={(e) => {\n const touch = e.changedTouches[0];\n scrollInitial.set(touch.pageY);\n scroll.set(touch.pageY);\n isDragging.current = false;\n }}\n onTouchMove={(e) => {\n const touch = e.changedTouches[0];\n const y = touch.pageY;\n const prevY = scroll.get() || y;\n const scrollTop = innerContent.current?.scrollTop || 0;\n\n if (!isDragging.current && scrollTop <= 0 && y > prevY && type === \"sheet\") {\n isDragging.current = true;\n dragStart.current = y;\n }\n\n if (isDragging.current) {\n const delta = y - dragStart.current;\n if (delta < 0) {\n sheetY.set(delta * 0.2);\n } else {\n sheetY.set(delta);\n }\n }\n\n scroll.set(y);\n }}\n >\n {children}\n </motion.section>\n {footer ? (\n <footer className=\"w-full select-text border-t border-floating-border px-8 pt-4\">{footer}</footer>\n ) : null}\n {closable ? (\n <div className=\"absolute right-4 top-1 z-floating\">\n <button\n type=\"button\"\n onClick={onClose}\n aria-label={t.closeButton}\n className=\"p-1 opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger\"\n >\n <XIcon aria-hidden=\"true\" />\n </button>\n </div>\n ) : null}\n </motion.div>\n </AnimatePresence>\n </FloatingFocusManager>\n </FloatingOverlay>\n ) : null}\n </AnimatePresence>\n </FloatingPortal>\n </MotionConfig>\n </Fragment>\n );\n }\n) as unknown as ModalComponent;\n\ntype ButtonConfirmationAction = {\n value?: unknown;\n text?: Label;\n theme?: ButtonProps[\"theme\"];\n};\n\nexport type ConfirmOptions = {\n title?: Label;\n description?: Label;\n cancel?: ButtonConfirmationAction;\n confirm?: ButtonConfirmationAction;\n};\n\ntype ConfirmContextType = (options: ConfirmOptions) => Promise<boolean>;\n\nlet confirmGlobal: ConfirmContextType = async <T,>(_: ConfirmOptions): Promise<T> => {\n if (typeof window !== \"undefined\") {\n console.warn(\"ConfirmationProvider is not mounted\");\n }\n return false as unknown as T;\n};\n\nModal.confirm = <T,>(options: ConfirmOptions): Promise<T> => confirmGlobal(options) as unknown as Promise<T>;\n\nexport const ModalConfirmProvider = ({ children }: { children: React.ReactNode }) => {\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState<Partial<ConfirmOptions>>({});\n const [resolve, setResolve] = useState<(value: boolean) => void>(() => {});\n\n const confirmAction = useCallback((opts: ConfirmOptions): Promise<boolean> => {\n setOptions(opts);\n setOpen(true);\n return new Promise((res) => {\n setResolve(() => res);\n });\n }, []);\n\n useEffect(() => {\n confirmGlobal = confirmAction;\n }, [confirmAction]);\n\n const onConfirm = () => {\n setOpen(false);\n const value = (options.confirm?.value as boolean) ?? true;\n resolve(value ?? true);\n };\n\n const onCancel = () => {\n setOpen(false);\n const value = (options.cancel?.value as boolean) ?? false;\n resolve(value ?? false);\n };\n\n return (\n <ConfirmContext.Provider value={confirmAction}>\n {children}\n <Modal\n open={open}\n type=\"dialog\"\n closable={false}\n onChange={setOpen}\n overlayClickClose={false}\n title={options.title || \"Confirmation\"}\n className=\"container max-w-dialog lg:max-w-96\"\n footer={\n <div className=\"flex justify-end gap-2\">\n <Button theme={options.cancel?.theme || \"ghost-muted\"} onClick={onCancel}>\n {options.cancel?.text || \"Cancel\"}\n </Button>\n <Button autoFocus theme={options.confirm?.theme || \"primary\"} onClick={onConfirm}>\n {options.confirm?.text || \"Confirm\"}\n </Button>\n </div>\n }\n >\n <div className=\"py-2 text-foreground\">{options.description}</div>\n </Modal>\n </ConfirmContext.Provider>\n );\n};\n"],"names":["getMatches","query","defaultValue","isSsr","useMediaQuery","matches","setMatches","useState","useLayoutEffect","matchMedia","onChange","useFloatingRef","useContext","Context","ConfirmContext","React","useConfirm","animationDuration","drawerLeft","drawerRight","animations","type","variants","cva","dragConstraints","calculateClose","n","Draggable","props","onDrag","e","info","rect","v","result","max","screenHeightToClose","div","delta","value","jsx","motion","css","positions","fetchPosition","isDesktop","forceType","propsType","propsPosition","noop","Modal","forwardRef","open","title","footer","asChild","trigger","children","ariaTitle","className","bodyClassName","resizer","animated","closable","layoutId","overlayClassName","_type","overlayClickClose","closeOnFocusOut","outInteractions","externalRef","t","useTranslations","root","innerContent","useRef","removeScrollRef","headingId","useId","descriptionId","position","func","animation","useResizer","floating","useFloating","click","useClick","role","useRole","dismiss","useDismiss","event","target","interactions","useInteractions","floatingSize","useMotionValue","sheetY","isDragging","dragStart","useEffect","onClose","useImperativeHandle","draggableMotionProps","_","scrollInitial","scroll","Component","Slot","Fragment","MotionConfig","FloatingPortal","AnimatePresence","FloatingOverlay","FloatingFocusManager","jsxs","mergeRefs","currentY","threshold","sheetYNumeric","animate","touch","y","prevY","scrollTop","XIcon","confirmGlobal","options","ModalConfirmProvider","setOpen","setOptions","resolve","setResolve","confirmAction","useCallback","opts","res","onConfirm","onCancel","Button"],"mappings":";;;;;;;;;;;;;;AAGA,MAAMA,KAAa,CAACC,GAAeC,MAC3BC,OACOD,IAEJ,OAAO,WAAWD,CAAK,EAAE,SAGvBG,KAAgB,CAACH,GAAeC,IAAwB,OAAS;AAC1E,QAAM,CAACG,GAASC,CAAU,IAAIC,EAASL,CAAY;AAEnD,SAAAM,GAAgB,MAAM;AAClB,UAAMC,IAAa,OAAO,WAAWR,CAAK,GACpCS,IAAW,MAAMJ,EAAWN,GAAWC,GAAOC,CAAY,CAAC;AAEjE,WADAQ,EAAA,GACID,EAAW,eACXA,EAAW,YAAYC,CAAQ,GACxB,MACID,EAAW,iBAAiBA,EAAW,eAAeC,CAAQ,IAAI,WAGjFD,EAAW,iBAAiB,UAAUC,CAAQ,GACvC,MAAMD,EAAW,oBAAoB,UAAUC,CAAQ;AAAA,EAAA,GAC/D,CAACT,CAAK,CAAC,GAEHI;AACX,GCzBaM,KAAiB,MACdC,GAAWC,EAAO,EACnB,eAAe,QC2CxBC,KAAiBC,EAAM,cAA6D,YAAY,EAAK,GAE9FC,KAAa,MAAMD,EAAM,WAAWD,EAAc,GAYzDG,IAAoB,SAEpBC,KAAkD;AAAA,EACpD,MAAM,EAAE,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,GAAG,mBAAAD,EAAA;AAAA,EACvC,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,SAAS,GAAG,mBAAAA,EAAA;AAAA,EACxC,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,SAAS,KAAK,mBAAAA,EAAA;AAChD,GAEME,KAAmD;AAAA,EACrD,OAAO,EAAE,GAAG,MAAM,SAAS,GAAG,mBAAAF,EAAA;AAAA,EAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,GAAG,SAAS,GAAG,mBAAAA,EAAA;AAAA,EACtC,SAAS,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,SAAS,KAAK,mBAAAA,EAAA;AAC/C,GAEMG,IAAyB;AAAA,EAC3B,QAAQ,CAACC,MAAUA,MAAS,SAASH,KAAaC;AAAA,EAClD,OAAO;AAAA,IACH,OAAO,EAAE,SAAS,GAAG,GAAG,MAAM,mBAAAF,GAAmB,iBAAiB,SAAA;AAAA,IAClE,MAAM,EAAE,SAAS,KAAK,GAAG,OAAO,mBAAAA,GAAmB,iBAAiB,SAAA;AAAA,IACpE,SAAS,EAAE,SAAS,KAAK,GAAG,OAAO,mBAAAA,GAAmB,iBAAiB,SAAA;AAAA,EAAS;AAAA,EAEpF,QAAQ;AAAA,IACJ,MAAM,EAAE,SAAS,GAAG,OAAO,MAAM,mBAAAA,EAAA;AAAA,IACjC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,mBAAAA,EAAA;AAAA,IACvC,SAAS,EAAE,SAAS,KAAK,OAAO,MAAM,mBAAAA,GAAmB,YAAY,EAAE,UAAU,KAAK,MAAM,cAAY;AAAA,EAAE;AAElH,GAEMK,KAAWC;AAAA,EACb;AAAA,EACA;AAAA,IACI,UAAU;AAAA,MACN,MAAM;AAAA,QACF,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,MAEX,UAAU;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,IACV;AAAA,IAEJ,iBAAiB,EAAE,UAAU,SAAS,MAAM,SAAA;AAAA,EAAS;AAE7D,GAoCMC,KAAkB,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,EAAA,GAEvDC,KAAiB,CAACC,MAAcA,IAAI,KAEpCC,KAAY,CAACC,MAA0B;AACzC,QAAMC,IAAS,CAACC,GAAUC,MAAkB;AACxC,QAAIH,EAAM,OAAO,SAAS;AAGtB,UAFAE,EAAE,gBAAA,GACFA,EAAE,yBAAA,GACEF,EAAM,OAAO;AAEb,cAAMI,IADMJ,EAAM,OAAO,QACR,sBAAA,GACXK,IAAIL,EAAM,MAAM,IAAA,KAASI,EAAK,QAC9BE,IAAS,KAAK,IAAID,IAAIF,EAAK,MAAM,CAAC,GAClCI,IAAM,OAAO,aACbC,IAAsBX,GAAeU,CAAG;AAC9C,eAAID,KAAUE,IAA4BR,EAAM,MAAM,IAAIM,CAAM,KAC5D,SAAS,yBAAyB,eAClC,SAAS,eAAe,KAAA,GAE5BN,EAAM,SAAS,EAAK,GACb,WAAW,MAAMA,EAAM,MAAM,IAAI,MAAS,GAAG,GAAG;AAAA,MAAA;AAE3D,YAAMS,IAAMT,EAAM,OAAO,SACnBK,IAAIL,EAAM,MAAM,SAASS,EAAI,wBAAwB,OACrDC,IAAQV,EAAM,aAAa,UAAU,CAACG,EAAK,MAAM,IAAIA,EAAK,MAAM,GAChEQ,IAAQ,KAAK,IAAIN,IAAIK,CAAK;AAChC,aAAOV,EAAM,MAAM,IAAIW,CAAK;AAAA,IAAA;AAAA,EAChC;AAGJ,SACI,gBAAAC;AAAA,IAACC,EAAO;AAAA,IAAP;AAAA,MACG,WAAS;AAAA,MACT,cAAY;AAAA,MACZ,cAAY;AAAA,MACZ,UAAU;AAAA,MACV,MAAK;AAAA,MACL,SAAS;AAAA,MACT,aAAa;AAAA,MACb,iBAAe;AAAA,MACf,SAAS;AAAA,MACT,QAAAZ;AAAA,MACA,kBAAgB;AAAA,MAChB,mBAAiB;AAAA,MACjB,eAAY;AAAA,MACZ,MAAMD,EAAM,QAAQ,MAAM;AAAA,MAC1B,iBAAAJ;AAAA,MACA,WAAW,EAAE,QAAQ,WAAA;AAAA,MACrB,WAAWkB;AAAA,QACP;AAAA,QACAd,EAAM,QAAQ,sBAAsB;AAAA,QACpCA,EAAM,QACA,8CACAA,EAAM,aAAa,SACjB,6BACA;AAAA,MAAA;AAAA,MAGX,YAAM,QAAQ,gBAAAY,EAAC,OAAA,EAAI,WAAU,2CAA0C,IAAK;AAAA,IAAA;AAAA,EAAA;AAGzF,GAEMG,IAAY,EAAE,QAAQ,SAAS,OAAO,QAAQ,QAAQ,OAAA,GAEtDC,KAAgB,CAACC,GAAyBC,GAAyBC,GAA2BC,MAAuC;AACvI,QAAM3B,IAAO0B,KAAa;AAC1B,SAAIF,IAAkBE,MAAc,WAAYC,KAAiBL,EAAU,SAAUA,EAAUtB,CAAI,IAC5FyB,IAAYH,EAAUtB,CAAI,IAAIsB,EAAU;AACnD,GAIMM,KAAuB,CAAA,GAMhBC,KAAwBC;AAAA,EACjC,CACI;AAAA,IACI,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,QAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAA/C;AAAA,IACA,WAAAgD;AAAA,IACA,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,WAAAjB,IAAY;AAAA,IACZ,UAAAkB,IAAW;AAAA,IACX,kBAAAC,KAAmB;AAAA,IACnB,MAAMC,IAAQ;AAAA,IACd,UAAUlB;AAAA,IACV,mBAAAmB,KAAoB;AAAA,IACpB,iBAAAC,KAAkB;AAAA,IAClB,cAAcC,KAAkBpB;AAAA,IAChC,GAAGrB;AAAA,EAAA,GAEP0C,OACC;AACD,UAAMC,KAAIC,GAAA,GACJC,KAAO9D,GAAA,GACP+D,IAAeC,EAAuB,IAAI,GAC1CC,IAAkBD,EAAuB,IAAI,GAC7CE,IAAYC,EAAA,GACZC,IAAgBD,EAAA,GAChBjC,IAAYzC,GAAc,oBAAoB,GAC9C4E,IAAWpC,GAAcC,GAAWC,GAAWoB,GAAOlB,EAAa,GACnEiC,IAAOpC,KAAgCC,IAApB1B,EAAW8C,CAAK,IAAoC9C,EAAW,OAClF8D,KAAY,OAAOD,KAAS,aAAaA,EAAKD,CAA0B,IAAIC,GAC5E5D,IAAOwB,KAAoBC,IAARoB,IAA4B,SAC/CiB,KAAa9D,MAAS,UAEtB+D,IAAWC,GAAY,EAAE,MAAAjC,GAAM,cAAc1C,GAAU,UAAU,SAAS,GAC1E4E,KAAQC,GAASH,EAAS,SAAS,CAAA,CAAE,GACrCI,KAAOC,GAAQL,EAAS,SAAS,EAAE,MAAM,UAAU,GACnDM,KAAUC,GAAWP,EAAS,SAAS;AAAA,MACzC,SAAS;AAAA,MACT,WAAW;AAAA,MACX,cAAc,CAACQ,MAAU;AACrB,cAAMC,IAASD,EAAM;AACrB,eAAOzB,MAAqB,CAAC,CAAC0B,GAAQ;AAAA,MAAA;AAAA,IAC1C,CACH,GAEKC,IAAeC,GAAgB,CAACT,IAAOI,IAASF,EAAI,EAAE,OAAOnB,EAAe,CAAC,GAE7E2B,IAAeC,EAAmC,MAAS,GAC3DC,IAASD,EAAmC,MAAS,GACrDE,IAAaxB,EAAO,EAAK,GACzByB,IAAYzB,EAAO,CAAC;AAE1B,IAAA0B,EAAU,MAAM;AACZ,MAAAL,EAAa,IAAI,MAAS,GAC1BE,EAAO,IAAI,MAAS;AAAA,IAAA,GACrB,CAAC7E,GAAM2E,GAAcE,CAAM,CAAC;AAE/B,UAAMI,KAAU,MAAM5F,EAAS,EAAK;AAEpC,IAAA6F,GAAoBjC,IAAa,OAAO,EAAE,SAASc,EAAS,SAAS,UAAUR,EAAgB,QAAA,IAAY;AAAA,MACvGQ,EAAS;AAAA,MACTR;AAAA,IAAA,CACH;AAiBD,UAAM4B,KACFnF,MAAS,UACF;AAAA,MACG,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,MACT,iBAAAG;AAAA,MACA,WAAW;AAAA,MACX,cAAc;AAAA,MACd,cAAc;AAAA,MACd,QA1BO,CAACiF,GAA2C1E,MAAkB;AAE/E,cAAMC,IADMoD,EAAS,KAAK,SAAS,QAClB,sBAAA,GACXnD,IAAI+D,EAAa,IAAA,KAAShE,EAAK,QAC/BE,IAAS,KAAK,IAAID,IAAIF,EAAK,MAAM,CAAC,GAClCI,KAAM,OAAO,aACbC,KAAsBX,GAAeU,EAAG;AAC9C,eAAID,KAAUE,KAA4B4D,EAAa,IAAI9D,CAAM,KAC7D,SAAS,yBAAyB,eAClC,SAAS,eAAe,KAAA,GAE5BxB,IAAW,EAAK,GACT,WAAW,MAAMsF,EAAa,IAAI,MAAS,GAAG,GAAG;AAAA,MAAA;AAAA,MAe9C,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,WAAW,EAAE,QAAQ,WAAA;AAAA,IAAW,IAEpC,EAAE,SAASlC,GAAU,SAAS,GAAA,GAElC4C,IAAgBT,EAAmC,MAAS,GAC5DU,IAASV,EAAmC,MAAS,GAErDW,KAAYrD,IAAUsD,KAAOpE,EAAO;AAE1C,6BACKqE,IAAA,EACI,UAAA;AAAA,MAAAtD,IACG,gBAAAhB,EAACoE,IAAA,EAAU,KAAKxB,EAAS,KAAK,cAAe,GAAGU,EAAa,kBAAA,GAAqB,UAAA9B,GAAoB,MAAK,UACtG,aACL,IACA;AAAA,wBACH+C,IAAA,EAAa,eAAejD,IAAW,SAAS,UAC7C,UAAA,gBAAAtB,EAACwE,IAAA,EAAe,kBAAgB,IAAC,MAAAvC,IAC7B,UAAA,gBAAAjC,EAACyE,GAAA,EAAgB,MAAK,QAAO,WAAS,IACjC,UAAA7D,IACG,gBAAAZ;AAAA,QAAC0E;AAAA,QAAA;AAAA,UACG,YAAU;AAAA,UACV,WAAWxE;AAAA,YACP;AAAA,YACArB,MAAS,WAAW,KAAK;AAAA,YACzB4C;AAAA,UAAA;AAAA,UAGJ,UAAA,gBAAAzB,EAAC2E,IAAA,EAAqB,QAAM,IAAC,OAAK,IAAC,iBAAA/C,IAAkC,SAASgB,EAAS,SACnF,UAAA,gBAAA5C,EAACyE,GAAA,EAAgB,WAAS,IACtB,UAAA,gBAAAG;AAAA,YAAC3E,EAAO;AAAA,YAAP;AAAA,cACI,GAAGb;AAAA,cACH,GAAIyB,IACC;AAAA,gBACI,mBAAmBwB;AAAA,gBACnB,oBAAoBE;AAAA,cAAA,IAExB,EAAE,cAAcrB,EAAA;AAAA,cACrB,GAAGoC,EAAa,iBAAiB;AAAA,gBAC9B,cAAc1C;AAAA,gBACd,KAAKiE,GAA0BjC,EAAS,KAAK,aAAaR,CAAe;AAAA,gBACzE,WAAWlC,EAAIpB,GAAS,EAAE,UAAA0D,GAAU,MAAA3D,EAAA,CAAM,GAAGsC,GAAW,4BAA4B;AAAA,cAAA,CACvF;AAAA,cACD,MAAK;AAAA,cACL,QAAQ;AAAA,cACR,SAAQ;AAAA,cACR,SAAQ;AAAA,cACR,UAAAK;AAAA,cACA,UAAUkB;AAAA,cACV,kBAAe;AAAA,cACf,OAAO7D,MAAS,WAAW,EAAE,OAAO2E,MAAiB,EAAE,QAAQA,GAAc,GAAGE,EAAA;AAAA,cAE/E,UAAA;AAAA,gBAAAf,MAActB,IACX,gBAAArB;AAAA,kBAACb;AAAA,kBAAA;AAAA,oBACG,UAAAjB;AAAA,oBACA,OAAOsF;AAAA,oBACP,OAAO3E,MAAS;AAAA,oBAChB,UAAA2D;AAAA,oBACA,QAAQI,EAAS,KAAK;AAAA,kBAAA;AAAA,gBAAA,IAE1B;AAAA,gBACH/B,sBACIZ,EAAO,QAAP,EAAe,GAAG+D,IAAsB,WAAU,2BAC9C,UAAAnD,IACG,gBAAAb;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,IAAIqC;AAAA,oBACJ,WAAU;AAAA,oBAET,UAAAxB;AAAA,kBAAA;AAAA,gBAAA,IAEL,MACR,IACA;AAAA,gBACJ,gBAAAb;AAAA,kBAACC,EAAO;AAAA,kBAAP;AAAA,oBACG,KAAKiC;AAAA,oBACL,IAAIrB,IAAQ0B,IAAgB;AAAA,oBAC5B,kBAAe;AAAA,oBACf,WAAWrC,EAAI,gDAAgDkB,CAAa;AAAA,oBAC5E,YAAY,YAAY;AAIpB,0BAHA+C,EAAO,IAAI,MAAS,GACpBD,EAAc,IAAI,MAAS,GAEvBP,EAAW,SAAS;AACpB,8BAAMmB,IAAWpB,EAAO,IAAA,KAAS,GAC3BqB,IAAY,OAAO,cAAc,KACjCC,IAAgBtB;AACtB,wBAAIoB,IAAWC,KACX,MAAME,EAAQD,GAAe,OAAO,aAAa,EAAE,UAAU,KAAK,MAAM,SAAA,CAAU,EAC7E,UACL9G,EAAS,EAAK,KAEd+G,EAAQD,GAAe,GAAG,EAAE,MAAM,UAAU,QAAQ,GAAG,UAAU,KAAK,GAE1ErB,EAAW,UAAU;AAAA,sBAAA;AAAA,oBACzB;AAAA,oBAEJ,cAAc,CAACrE,MAAM;AACjB,4BAAM4F,IAAQ5F,EAAE,eAAe,CAAC;AAChC,sBAAA4E,EAAc,IAAIgB,EAAM,KAAK,GAC7Bf,EAAO,IAAIe,EAAM,KAAK,GACtBvB,EAAW,UAAU;AAAA,oBAAA;AAAA,oBAEzB,aAAa,CAACrE,MAAM;AAEhB,4BAAM6F,IADQ7F,EAAE,eAAe,CAAC,EAChB,OACV8F,IAAQjB,EAAO,IAAA,KAASgB,GACxBE,IAAYnD,EAAa,SAAS,aAAa;AAOrD,0BALI,CAACyB,EAAW,WAAW0B,KAAa,KAAKF,IAAIC,KAASvG,MAAS,YAC/D8E,EAAW,UAAU,IACrBC,EAAU,UAAUuB,IAGpBxB,EAAW,SAAS;AACpB,8BAAM7D,IAAQqF,IAAIvB,EAAU;AAC5B,wBAAI9D,IAAQ,IACR4D,EAAO,IAAI5D,IAAQ,GAAG,IAEtB4D,EAAO,IAAI5D,CAAK;AAAA,sBACpB;AAGJ,sBAAAqE,EAAO,IAAIgB,CAAC;AAAA,oBAAA;AAAA,oBAGf,UAAAlE;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEJH,IACG,gBAAAd,EAAC,UAAA,EAAO,WAAU,gEAAgE,aAAO,IACzF;AAAA,gBACHuB,IACG,gBAAAvB,EAAC,OAAA,EAAI,WAAU,qCACX,UAAA,gBAAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,MAAK;AAAA,oBACL,SAAS8D;AAAA,oBACT,cAAY/B,GAAE;AAAA,oBACd,WAAU;AAAA,oBAEV,UAAA,gBAAA/B,EAACsF,IAAA,EAAM,eAAY,OAAA,CAAO;AAAA,kBAAA;AAAA,gBAAA,GAElC,IACA;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,GAEZ,EAAA,CACJ;AAAA,QAAA;AAAA,MAAA,IAEJ,KAAA,CACR,EAAA,CACJ,EAAA,CACJ;AAAA,IAAA,GACJ;AAAA,EAAA;AAGZ;AAiBA,IAAIC,KAAoC,OAAWtB,OAC3C,OAAO,SAAW,OAClB,QAAQ,KAAK,qCAAqC,GAE/C;AAGXvD,GAAM,UAAU,CAAK8E,MAAwCD,GAAcC,CAAO;AAE3E,MAAMC,KAAuB,CAAC,EAAE,UAAAxE,QAA8C;AACjF,QAAM,CAACL,GAAM8E,CAAO,IAAI3H,EAAS,EAAK,GAChC,CAACyH,GAASG,CAAU,IAAI5H,EAAkC,CAAA,CAAE,GAC5D,CAAC6H,GAASC,CAAU,IAAI9H,EAAmC,MAAM;AAAA,EAAA,CAAE,GAEnE+H,IAAgBC,GAAY,CAACC,OAC/BL,EAAWK,CAAI,GACfN,EAAQ,EAAI,GACL,IAAI,QAAQ,CAACO,MAAQ;AACxB,IAAAJ,EAAW,MAAMI,CAAG;AAAA,EAAA,CACvB,IACF,EAAE;AAEL,EAAApC,EAAU,MAAM;AACZ,IAAA0B,KAAgBO;AAAA,EAAA,GACjB,CAACA,CAAa,CAAC;AAElB,QAAMI,IAAY,MAAM;AACpB,IAAAR,EAAQ,EAAK;AACb,UAAM3F,IAASyF,EAAQ,SAAS,SAAqB;AACrD,IAAAI,EAAQ7F,KAAS,EAAI;AAAA,EAAA,GAGnBoG,IAAW,MAAM;AACnB,IAAAT,EAAQ,EAAK;AACb,UAAM3F,IAASyF,EAAQ,QAAQ,SAAqB;AACpD,IAAAI,EAAQ7F,KAAS,EAAK;AAAA,EAAA;AAG1B,SACI,gBAAA6E,EAACtG,GAAe,UAAf,EAAwB,OAAOwH,GAC3B,UAAA;AAAA,IAAA7E;AAAA,IACD,gBAAAjB;AAAA,MAACU;AAAA,MAAA;AAAA,QACG,MAAAE;AAAA,QACA,MAAK;AAAA,QACL,UAAU;AAAA,QACV,UAAU8E;AAAA,QACV,mBAAmB;AAAA,QACnB,OAAOF,EAAQ,SAAS;AAAA,QACxB,WAAU;AAAA,QACV,QACI,gBAAAZ,EAAC,OAAA,EAAI,WAAU,0BACX,UAAA;AAAA,UAAA,gBAAA5E,EAACoG,GAAA,EAAO,OAAOZ,EAAQ,QAAQ,SAAS,eAAe,SAASW,GAC3D,UAAAX,EAAQ,QAAQ,QAAQ,UAC7B;AAAA,UACA,gBAAAxF,EAACoG,GAAA,EAAO,WAAS,IAAC,OAAOZ,EAAQ,SAAS,SAAS,WAAW,SAASU,GAClE,UAAAV,EAAQ,SAAS,QAAQ,UAAA,CAC9B;AAAA,QAAA,GACJ;AAAA,QAGJ,UAAA,gBAAAxF,EAAC,OAAA,EAAI,WAAU,wBAAwB,YAAQ,YAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/D,GACJ;AAER;"}
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FloatingFocusManager, FloatingOverlay, FloatingPortal, useClick, useDismiss, useFloating, useInteractions, useRole, } from "@floating-ui/react";
|
|
3
|
-
import { cva } from "class-variance-authority";
|
|
4
|
-
import { XIcon } from "@phosphor-icons/react";
|
|
5
|
-
import { AnimatePresence, motion, MotionConfig, useMotionValue, animate, } from "motion/react";
|
|
6
|
-
import { Slot } from "../core/slot";
|
|
7
|
-
import React, { forwardRef, Fragment, useEffect, useId, useImperativeHandle, useRef, useState, useCallback, } from "react";
|
|
8
|
-
import { useMediaQuery } from "../../hooks/use-media-query";
|
|
9
|
-
import { css, mergeRefs } from "../../lib/dom";
|
|
10
|
-
import { useFloatingRef } from "../../hooks/use-floating-ref";
|
|
11
|
-
import { useTranslations } from "../../hooks/use-translations";
|
|
12
|
-
import { Button } from "../core/button";
|
|
13
|
-
const ConfirmContext = React.createContext(async () => false);
|
|
14
|
-
export const useConfirm = () => React.useContext(ConfirmContext);
|
|
15
|
-
const animationDuration = "500ms";
|
|
16
|
-
const drawerLeft = {
|
|
17
|
-
exit: { x: ["0%", "-30%"], opacity: 0, animationDuration },
|
|
18
|
-
enter: { x: ["-30%", "0%"], opacity: 1, animationDuration },
|
|
19
|
-
initial: { x: ["-30%", "0%"], opacity: 0.8, animationDuration },
|
|
20
|
-
};
|
|
21
|
-
const drawerRight = {
|
|
22
|
-
enter: { x: "0%", opacity: 1, animationDuration },
|
|
23
|
-
exit: { x: ["0%", "30%"], opacity: 0, animationDuration },
|
|
24
|
-
initial: { x: ["30%", "0%"], opacity: 0.8, animationDuration },
|
|
25
|
-
};
|
|
26
|
-
const animations = {
|
|
27
|
-
drawer: (type) => (type === "left" ? drawerLeft : drawerRight),
|
|
28
|
-
sheet: {
|
|
29
|
-
enter: { opacity: 1, y: "0%", animationDuration, transformOrigin: "bottom" },
|
|
30
|
-
exit: { opacity: 0.4, y: "10%", animationDuration, transformOrigin: "bottom" },
|
|
31
|
-
initial: { opacity: 0.7, y: "10%", animationDuration, transformOrigin: "bottom" },
|
|
32
|
-
},
|
|
33
|
-
dialog: {
|
|
34
|
-
exit: { opacity: 0, scale: 0.95, animationDuration },
|
|
35
|
-
enter: { opacity: 1, scale: [1.05, 1], animationDuration },
|
|
36
|
-
initial: { opacity: 0.5, scale: 0.95, animationDuration, transition: { duration: 0.5, ease: "easeInOut" } },
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
const variants = cva("z-floating flex min-w-xs appearance-none flex-col flex-nowrap gap-4 border border-floating-border bg-floating-background outline-0 ring-0", {
|
|
40
|
-
variants: {
|
|
41
|
-
type: {
|
|
42
|
-
drawer: "absolute h-screen max-h-screen min-h-0 w-fit max-w-[90%]",
|
|
43
|
-
dialog: "container relative h-min max-h-[calc(100lvh-10%)] rounded-lg py-4",
|
|
44
|
-
sheet: "absolute bottom-0 h-screen max-h-[calc(100svh-5%)] max-h-[calc(100vh-15%)] w-screen rounded-t-lg pb-4 pt-6",
|
|
45
|
-
},
|
|
46
|
-
position: {
|
|
47
|
-
none: "",
|
|
48
|
-
right: "absolute right-0 top-0 rounded-l-lg py-4",
|
|
49
|
-
left: "absolute left-0 top-0 rounded-r-lg py-4",
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
defaultVariants: { position: "right", type: "dialog" },
|
|
53
|
-
});
|
|
54
|
-
const dragConstraints = { top: 0, left: 0, right: 0, bottom: 0 };
|
|
55
|
-
const calculateClose = (n) => n * 0.6;
|
|
56
|
-
const Draggable = (props) => {
|
|
57
|
-
const onDrag = (e, info) => {
|
|
58
|
-
if (props.parent.current) {
|
|
59
|
-
e.stopPropagation();
|
|
60
|
-
e.stopImmediatePropagation();
|
|
61
|
-
if (props.sheet) {
|
|
62
|
-
const div = props.parent.current;
|
|
63
|
-
const rect = div.getBoundingClientRect();
|
|
64
|
-
const v = props.value.get() || rect.height;
|
|
65
|
-
const result = Math.abs(v - info.delta.y);
|
|
66
|
-
const max = window.outerHeight;
|
|
67
|
-
const screenHeightToClose = calculateClose(max);
|
|
68
|
-
if (result >= screenHeightToClose)
|
|
69
|
-
return props.value.set(result);
|
|
70
|
-
if (document.activeElement instanceof HTMLElement) {
|
|
71
|
-
document.activeElement?.blur();
|
|
72
|
-
}
|
|
73
|
-
props.onChange(false);
|
|
74
|
-
return setTimeout(() => props.value.set(undefined), 350);
|
|
75
|
-
}
|
|
76
|
-
const div = props.parent.current;
|
|
77
|
-
const v = props.value.get() || div.getBoundingClientRect().width;
|
|
78
|
-
const delta = props.position === "right" ? -info.delta.x : info.delta.x;
|
|
79
|
-
const value = Math.abs(v + delta);
|
|
80
|
-
return props.value.set(value);
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
return (<motion.button draggable dragListener dragMomentum tabIndex={-1} type="button" animate={false} dragElastic={0} dragPropagation initial={false} onDrag={onDrag} dragSnapToOrigin dragDirectionLock aria-hidden="true" drag={props.sheet ? "y" : "x"} dragConstraints={dragConstraints} whileDrag={{ cursor: "grabbing" }} className={css("absolute isolate z-calendar rounded-lg", props.sheet ? "cursor-row-resize" : "cursor-col-resize bg-floating-border", props.sheet
|
|
84
|
-
? "top-1 flex h-3 w-full justify-center py-2"
|
|
85
|
-
: props.position === "left"
|
|
86
|
-
? "right-5 top-1/2 h-10 w-2"
|
|
87
|
-
: "left-2 top-1/2 h-10 w-2")}>
|
|
88
|
-
{props.sheet ? <div className="h-2 w-1/4 rounded-lg bg-floating-border"/> : null}
|
|
89
|
-
</motion.button>);
|
|
90
|
-
};
|
|
91
|
-
const positions = { drawer: "right", sheet: "none", dialog: "none" };
|
|
92
|
-
const fetchPosition = (isDesktop, forceType, propsType, propsPosition) => {
|
|
93
|
-
const type = propsType || "dialog";
|
|
94
|
-
if (isDesktop)
|
|
95
|
-
return propsType === "drawer" ? (propsPosition ?? positions.drawer) : positions[type];
|
|
96
|
-
return forceType ? positions[type] : positions.sheet;
|
|
97
|
-
};
|
|
98
|
-
const noop = [];
|
|
99
|
-
export const Modal = forwardRef(({ open, title, footer, asChild, trigger, children, onChange, ariaTitle, className, bodyClassName, resizer = true, animated = true, closable = true, forceType = false, layoutId = undefined, overlayClassName = "", type: _type = "dialog", position: propsPosition, overlayClickClose = false, closeOnFocusOut = false, interactions: outInteractions = noop, ...props }, externalRef) => {
|
|
100
|
-
const t = useTranslations();
|
|
101
|
-
const root = useFloatingRef();
|
|
102
|
-
const innerContent = useRef(null);
|
|
103
|
-
const removeScrollRef = useRef(null);
|
|
104
|
-
const headingId = useId();
|
|
105
|
-
const descriptionId = useId();
|
|
106
|
-
const isDesktop = useMediaQuery("(min-width: 64rem)");
|
|
107
|
-
const position = fetchPosition(isDesktop, forceType, _type, propsPosition);
|
|
108
|
-
const func = isDesktop ? animations[_type] : forceType ? animations[_type] : animations.sheet;
|
|
109
|
-
const animation = typeof func === "function" ? func(position) : func;
|
|
110
|
-
const type = isDesktop ? _type : forceType ? _type : "sheet";
|
|
111
|
-
const useResizer = type !== "dialog";
|
|
112
|
-
const floating = useFloating({ open, onOpenChange: onChange, strategy: "fixed" });
|
|
113
|
-
const click = useClick(floating.context, {});
|
|
114
|
-
const role = useRole(floating.context, { role: "dialog" });
|
|
115
|
-
const dismiss = useDismiss(floating.context, {
|
|
116
|
-
bubbles: true,
|
|
117
|
-
escapeKey: true,
|
|
118
|
-
outsidePress: (event) => {
|
|
119
|
-
const target = event.target;
|
|
120
|
-
return overlayClickClose && !!target?.isConnected;
|
|
121
|
-
},
|
|
122
|
-
});
|
|
123
|
-
const interactions = useInteractions([click, dismiss, role].concat(outInteractions));
|
|
124
|
-
const floatingSize = useMotionValue(undefined);
|
|
125
|
-
const sheetY = useMotionValue(undefined);
|
|
126
|
-
const isDragging = useRef(false);
|
|
127
|
-
const dragStart = useRef(0);
|
|
128
|
-
useEffect(() => {
|
|
129
|
-
floatingSize.set(undefined);
|
|
130
|
-
sheetY.set(undefined);
|
|
131
|
-
}, [type, floatingSize, sheetY]);
|
|
132
|
-
const onClose = () => onChange(false);
|
|
133
|
-
useImperativeHandle(externalRef, () => ({ context: floating.context, floating: removeScrollRef.current }), [
|
|
134
|
-
floating.context,
|
|
135
|
-
removeScrollRef,
|
|
136
|
-
]);
|
|
137
|
-
const onDragHeader = (_, info) => {
|
|
138
|
-
const div = floating.refs.floating.current;
|
|
139
|
-
const rect = div.getBoundingClientRect();
|
|
140
|
-
const v = floatingSize.get() || rect.height;
|
|
141
|
-
const result = Math.abs(v - info.delta.y);
|
|
142
|
-
const max = window.outerHeight;
|
|
143
|
-
const screenHeightToClose = calculateClose(max);
|
|
144
|
-
if (result >= screenHeightToClose)
|
|
145
|
-
return floatingSize.set(result);
|
|
146
|
-
if (document.activeElement instanceof HTMLElement) {
|
|
147
|
-
document.activeElement?.blur();
|
|
148
|
-
}
|
|
149
|
-
onChange?.(false);
|
|
150
|
-
return setTimeout(() => floatingSize.set(undefined), 350);
|
|
151
|
-
};
|
|
152
|
-
const draggableMotionProps = type === "sheet"
|
|
153
|
-
? {
|
|
154
|
-
drag: "y",
|
|
155
|
-
animate: false,
|
|
156
|
-
dragElastic: 0,
|
|
157
|
-
initial: false,
|
|
158
|
-
dragConstraints,
|
|
159
|
-
draggable: true,
|
|
160
|
-
dragListener: true,
|
|
161
|
-
dragMomentum: true,
|
|
162
|
-
onDrag: onDragHeader,
|
|
163
|
-
dragPropagation: true,
|
|
164
|
-
dragSnapToOrigin: true,
|
|
165
|
-
dragDirectionLock: true,
|
|
166
|
-
whileDrag: { cursor: "grabbing" },
|
|
167
|
-
}
|
|
168
|
-
: { animate: animated, initial: false };
|
|
169
|
-
const scrollInitial = useMotionValue(undefined);
|
|
170
|
-
const scroll = useMotionValue(undefined);
|
|
171
|
-
const Component = asChild ? Slot : motion.button;
|
|
172
|
-
return (<Fragment>
|
|
173
|
-
{trigger ? (<Component ref={floating.refs.setReference} {...interactions.getReferenceProps()} layoutId={layoutId} type="button">
|
|
174
|
-
{trigger}
|
|
175
|
-
</Component>) : null}
|
|
176
|
-
<MotionConfig reducedMotion={animated ? "user" : "always"}>
|
|
177
|
-
<FloatingPortal preserveTabOrder root={root}>
|
|
178
|
-
<AnimatePresence mode="wait" propagate>
|
|
179
|
-
{open ? (<FloatingOverlay lockScroll className={css("inset-0 isolate z-overlay flex h-[100dvh] !overflow-clip bg-floating-overlay/80", type === "drawer" ? "" : "items-start justify-center pt-10 lg:p-10", overlayClassName)}>
|
|
180
|
-
<FloatingFocusManager guards modal closeOnFocusOut={closeOnFocusOut} context={floating.context}>
|
|
181
|
-
<AnimatePresence propagate>
|
|
182
|
-
<motion.div {...props} {...(title
|
|
183
|
-
? {
|
|
184
|
-
"aria-labelledby": headingId,
|
|
185
|
-
"aria-describedby": descriptionId,
|
|
186
|
-
}
|
|
187
|
-
: { "aria-label": ariaTitle })} {...interactions.getFloatingProps({
|
|
188
|
-
"aria-modal": open,
|
|
189
|
-
ref: mergeRefs(floating.refs.setFloating, removeScrollRef),
|
|
190
|
-
className: css(variants({ position, type }), className, "isolate overscroll-contain"),
|
|
191
|
-
})} exit="exit" layout={true} animate="enter" initial="initial" layoutId={layoutId} variants={animation} data-component="modal" style={type === "drawer" ? { width: floatingSize } : { height: floatingSize, y: sheetY }}>
|
|
192
|
-
{useResizer && resizer ? (<Draggable onChange={onChange} value={floatingSize} sheet={type === "sheet"} position={position} parent={floating.refs.floating}/>) : null}
|
|
193
|
-
{title ? (<motion.header {...draggableMotionProps} className="relative isolate w-full">
|
|
194
|
-
{title ? (<h2 id={headingId} className="block select-text border-b border-floating-border px-8 pb-2 text-3xl font-medium leading-relaxed">
|
|
195
|
-
{title}
|
|
196
|
-
</h2>) : null}
|
|
197
|
-
</motion.header>) : null}
|
|
198
|
-
<motion.section ref={innerContent} id={title ? descriptionId : undefined} data-component="modal-body" className={css("flex-1 select-text overflow-y-auto px-8 py-1", bodyClassName)} onTouchEnd={async () => {
|
|
199
|
-
scroll.set(undefined);
|
|
200
|
-
scrollInitial.set(undefined);
|
|
201
|
-
if (isDragging.current) {
|
|
202
|
-
const currentY = sheetY.get() || 0;
|
|
203
|
-
const threshold = window.innerHeight * 0.2;
|
|
204
|
-
const sheetYNumeric = sheetY;
|
|
205
|
-
if (currentY > threshold) {
|
|
206
|
-
await animate(sheetYNumeric, window.innerHeight, { duration: 0.2, ease: "easeIn" })
|
|
207
|
-
.finished;
|
|
208
|
-
onChange(false);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
animate(sheetYNumeric, 0, { type: "spring", bounce: 0, duration: 0.3 });
|
|
212
|
-
}
|
|
213
|
-
isDragging.current = false;
|
|
214
|
-
}
|
|
215
|
-
}} onTouchStart={(e) => {
|
|
216
|
-
const touch = e.changedTouches[0];
|
|
217
|
-
scrollInitial.set(touch.pageY);
|
|
218
|
-
scroll.set(touch.pageY);
|
|
219
|
-
isDragging.current = false;
|
|
220
|
-
}} onTouchMove={(e) => {
|
|
221
|
-
const touch = e.changedTouches[0];
|
|
222
|
-
const y = touch.pageY;
|
|
223
|
-
const prevY = scroll.get() || y;
|
|
224
|
-
const scrollTop = innerContent.current?.scrollTop || 0;
|
|
225
|
-
if (!isDragging.current && scrollTop <= 0 && y > prevY && type === "sheet") {
|
|
226
|
-
isDragging.current = true;
|
|
227
|
-
dragStart.current = y;
|
|
228
|
-
}
|
|
229
|
-
if (isDragging.current) {
|
|
230
|
-
const delta = y - dragStart.current;
|
|
231
|
-
if (delta < 0) {
|
|
232
|
-
sheetY.set(delta * 0.2);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
sheetY.set(delta);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
scroll.set(y);
|
|
239
|
-
}}>
|
|
240
|
-
{children}
|
|
241
|
-
</motion.section>
|
|
242
|
-
{footer ? (<footer className="w-full select-text border-t border-floating-border px-8 pt-4">{footer}</footer>) : null}
|
|
243
|
-
{closable ? (<div className="absolute right-4 top-1 z-floating">
|
|
244
|
-
<button type="button" onClick={onClose} aria-label={t.closeButton} className="p-1 opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger">
|
|
245
|
-
<XIcon aria-hidden="true"/>
|
|
246
|
-
</button>
|
|
247
|
-
</div>) : null}
|
|
248
|
-
</motion.div>
|
|
249
|
-
</AnimatePresence>
|
|
250
|
-
</FloatingFocusManager>
|
|
251
|
-
</FloatingOverlay>) : null}
|
|
252
|
-
</AnimatePresence>
|
|
253
|
-
</FloatingPortal>
|
|
254
|
-
</MotionConfig>
|
|
255
|
-
</Fragment>);
|
|
256
|
-
});
|
|
257
|
-
let confirmGlobal = async (_) => {
|
|
258
|
-
if (typeof window !== "undefined") {
|
|
259
|
-
console.warn("ConfirmationProvider is not mounted");
|
|
260
|
-
}
|
|
261
|
-
return false;
|
|
262
|
-
};
|
|
263
|
-
Modal.confirm = (options) => confirmGlobal(options);
|
|
264
|
-
export const ModalConfirmProvider = ({ children }) => {
|
|
265
|
-
const [open, setOpen] = useState(false);
|
|
266
|
-
const [options, setOptions] = useState({});
|
|
267
|
-
const [resolve, setResolve] = useState(() => { });
|
|
268
|
-
const confirmAction = useCallback((opts) => {
|
|
269
|
-
setOptions(opts);
|
|
270
|
-
setOpen(true);
|
|
271
|
-
return new Promise((res) => {
|
|
272
|
-
setResolve(() => res);
|
|
273
|
-
});
|
|
274
|
-
}, []);
|
|
275
|
-
useEffect(() => {
|
|
276
|
-
confirmGlobal = confirmAction;
|
|
277
|
-
}, [confirmAction]);
|
|
278
|
-
const onConfirm = () => {
|
|
279
|
-
setOpen(false);
|
|
280
|
-
const value = options.confirm?.value ?? true;
|
|
281
|
-
resolve(value ?? true);
|
|
282
|
-
};
|
|
283
|
-
const onCancel = () => {
|
|
284
|
-
setOpen(false);
|
|
285
|
-
const value = options.cancel?.value ?? false;
|
|
286
|
-
resolve(value ?? false);
|
|
287
|
-
};
|
|
288
|
-
return (<ConfirmContext.Provider value={confirmAction}>
|
|
289
|
-
{children}
|
|
290
|
-
<Modal open={open} type="dialog" closable={false} onChange={setOpen} overlayClickClose={false} title={options.title || "Confirmation"} className="container max-w-dialog lg:max-w-96" footer={<div className="flex justify-end gap-2">
|
|
291
|
-
<Button theme={options.cancel?.theme || "ghost-muted"} onClick={onCancel}>
|
|
292
|
-
{options.cancel?.text || "Cancel"}
|
|
293
|
-
</Button>
|
|
294
|
-
<Button autoFocus theme={options.confirm?.theme || "primary"} onClick={onConfirm}>
|
|
295
|
-
{options.confirm?.text || "Confirm"}
|
|
296
|
-
</Button>
|
|
297
|
-
</div>}>
|
|
298
|
-
<div className="py-2 text-foreground">{options.description}</div>
|
|
299
|
-
</Modal>
|
|
300
|
-
</ConfirmContext.Provider>);
|
|
301
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/floating/toolbar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,OAAO,iBAAiB,CAAC,YAAY,CAAC,gCAI7D,CAAC"}
|