@g4rcez/components 5.0.1 → 5.0.3
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/AnimatePresence-j36AYeOQ.js +181 -0
- package/dist/AnimatePresence-j36AYeOQ.js.map +1 -0
- package/dist/Calendar.es-xICmgvjq.js +23 -0
- package/dist/Calendar.es-xICmgvjq.js.map +1 -0
- package/dist/Funnel.es-DjKVl8Nj.js +23 -0
- package/dist/Funnel.es-DjKVl8Nj.js.map +1 -0
- package/dist/{MotionConfig-DKKYqBH2.js → MotionConfig-CXHoPGbK.js} +2 -2
- package/dist/{MotionConfig-DKKYqBH2.js.map → MotionConfig-CXHoPGbK.js.map} +1 -1
- package/dist/Plus.es-DbyRkEE2.js +23 -0
- package/dist/Plus.es-DbyRkEE2.js.map +1 -0
- package/dist/Trash.es-BFAc8PMf.js +23 -0
- package/dist/Trash.es-BFAc8PMf.js.map +1 -0
- package/dist/{calendar-PCCZDUIL.js → calendar-DEPkz8sw.js} +364 -502
- package/dist/calendar-DEPkz8sw.js.map +1 -0
- package/dist/calendar-header-Dfr-CwkY.js +174 -0
- package/dist/calendar-header-Dfr-CwkY.js.map +1 -0
- package/dist/chunk-jwUa06l-.js +23 -0
- package/dist/components/core/button.d.ts +77 -0
- package/dist/components/core/button.d.ts.map +1 -0
- package/dist/components/core/button.js +1 -1
- package/dist/components/core/button.jsx +79 -0
- package/dist/components/core/heading.d.ts +3 -0
- package/dist/components/core/heading.d.ts.map +1 -0
- package/dist/components/core/heading.js +11 -0
- package/dist/components/core/heading.js.map +1 -0
- package/dist/components/core/heading.jsx +4 -0
- package/dist/components/core/polymorph.d.ts +10 -0
- package/dist/components/core/polymorph.d.ts.map +1 -0
- package/dist/{polymorph-BLXhrn9n.js → components/core/polymorph.js} +2 -2
- package/dist/components/core/polymorph.js.map +1 -0
- package/dist/components/core/polymorph.jsx +5 -0
- package/dist/components/core/render-on-view.d.ts +7 -0
- package/dist/components/core/render-on-view.d.ts.map +1 -0
- package/dist/components/core/render-on-view.js +29 -0
- package/dist/components/core/render-on-view.js.map +1 -0
- package/dist/components/core/render-on-view.jsx +31 -0
- package/dist/components/core/resizable.d.ts +9 -0
- package/dist/components/core/resizable.d.ts.map +1 -0
- package/dist/components/core/resizable.js +60 -0
- package/dist/components/core/resizable.js.map +1 -0
- package/dist/components/core/resizable.jsx +57 -0
- package/dist/components/core/slot.d.ts +16 -0
- package/dist/components/core/slot.d.ts.map +1 -0
- package/dist/{slot-pC8kH9De.js → components/core/slot.js} +2 -2
- package/dist/components/core/slot.js.map +1 -0
- package/dist/components/core/slot.jsx +156 -0
- package/dist/components/core/tag.d.ts +35 -0
- package/dist/components/core/tag.d.ts.map +1 -0
- package/dist/components/core/tag.js +1 -1
- package/dist/components/core/tag.jsx +53 -0
- package/dist/components/core/typography.d.ts +25 -0
- package/dist/components/core/typography.d.ts.map +1 -0
- package/dist/components/core/typography.js +40 -0
- package/dist/components/core/typography.js.map +1 -0
- package/dist/components/core/typography.jsx +20 -0
- package/dist/components/display/alert.d.ts +28 -0
- package/dist/components/display/alert.d.ts.map +1 -0
- package/dist/components/display/alert.js +83 -102
- package/dist/components/display/alert.js.map +1 -1
- package/dist/components/display/alert.jsx +58 -0
- package/dist/components/display/calendar.d.ts +42 -0
- package/dist/components/display/calendar.d.ts.map +1 -0
- package/dist/components/display/calendar.js +1 -1
- package/dist/components/display/calendar.jsx +323 -0
- package/dist/components/display/card.d.ts +29 -0
- package/dist/components/display/card.d.ts.map +1 -0
- package/dist/components/display/card.js +2 -2
- package/dist/components/display/card.jsx +43 -0
- package/dist/components/display/empty.d.ts +8 -0
- package/dist/components/display/empty.d.ts.map +1 -0
- package/dist/components/display/empty.js +25 -0
- package/dist/components/display/empty.js.map +1 -0
- package/dist/components/display/empty.jsx +13 -0
- package/dist/components/display/list.d.ts +16 -0
- package/dist/components/display/list.d.ts.map +1 -0
- package/dist/components/display/list.js +132 -122
- package/dist/components/display/list.js.map +1 -1
- package/dist/components/display/list.jsx +90 -0
- package/dist/components/display/notifications.d.ts +27 -0
- package/dist/components/display/notifications.d.ts.map +1 -0
- package/dist/components/display/notifications.js +1 -1
- package/dist/components/display/notifications.jsx +132 -0
- package/dist/components/display/progress.d.ts +16 -0
- package/dist/components/display/progress.d.ts.map +1 -0
- package/dist/components/display/progress.js +3 -0
- package/dist/components/display/progress.jsx +19 -0
- package/dist/components/display/shortcut.d.ts +4 -0
- package/dist/components/display/shortcut.d.ts.map +1 -0
- package/dist/components/display/shortcut.js +2 -0
- package/dist/components/display/shortcut.jsx +23 -0
- package/dist/components/display/skeleton.d.ts +12 -0
- package/dist/components/display/skeleton.d.ts.map +1 -0
- package/dist/components/display/skeleton.js +41 -0
- package/dist/components/display/skeleton.js.map +1 -0
- package/dist/components/display/skeleton.jsx +19 -0
- package/dist/components/display/spinner.d.ts +5 -0
- package/dist/components/display/spinner.d.ts.map +1 -0
- package/dist/components/display/spinner.js +17 -0
- package/dist/components/display/spinner.js.map +1 -0
- package/dist/components/display/spinner.jsx +11 -0
- package/dist/components/display/stats.d.ts +12 -0
- package/dist/components/display/stats.d.ts.map +1 -0
- package/dist/components/display/stats.jsx +16 -0
- package/dist/components/display/step.d.ts +24 -0
- package/dist/components/display/step.d.ts.map +1 -0
- package/dist/components/display/step.js +3 -0
- package/dist/components/display/step.jsx +145 -0
- package/dist/components/display/tabs.d.ts +24 -0
- package/dist/components/display/tabs.d.ts.map +1 -0
- package/dist/components/display/tabs.js +1 -1
- package/dist/components/display/tabs.jsx +125 -0
- package/dist/components/display/timeline.d.ts +10 -0
- package/dist/components/display/timeline.d.ts.map +1 -0
- package/dist/components/display/timeline.js +1 -1
- package/dist/components/display/timeline.jsx +25 -0
- package/dist/components/floating/command-palette.d.ts +49 -0
- package/dist/components/floating/command-palette.d.ts.map +1 -0
- package/dist/components/floating/command-palette.js +255 -0
- package/dist/components/floating/command-palette.js.map +1 -0
- package/dist/components/floating/command-palette.jsx +232 -0
- package/dist/components/floating/dropdown.d.ts +15 -0
- package/dist/components/floating/dropdown.d.ts.map +1 -0
- package/dist/components/floating/dropdown.js +1 -1
- package/dist/components/floating/dropdown.js.map +1 -1
- package/dist/components/floating/dropdown.jsx +56 -0
- package/dist/components/floating/expand.d.ts +11 -0
- package/dist/components/floating/expand.d.ts.map +1 -0
- package/dist/components/floating/expand.js +15 -14
- package/dist/components/floating/expand.js.map +1 -1
- package/dist/components/floating/expand.jsx +44 -0
- package/dist/components/floating/menu.d.ts +52 -0
- package/dist/components/floating/menu.d.ts.map +1 -0
- package/dist/components/floating/menu.js +1 -1
- package/dist/components/floating/menu.jsx +165 -0
- package/dist/components/floating/modal.d.ts +63 -0
- package/dist/components/floating/modal.d.ts.map +1 -0
- package/dist/components/floating/modal.js +1 -1
- package/dist/components/floating/modal.jsx +375 -0
- package/dist/components/floating/toolbar.d.ts +6 -0
- package/dist/components/floating/toolbar.d.ts.map +1 -0
- package/dist/components/floating/toolbar.js +20 -0
- package/dist/components/floating/toolbar.js.map +1 -0
- package/dist/components/floating/toolbar.jsx +9 -0
- package/dist/components/floating/tooltip.d.ts +17 -0
- package/dist/components/floating/tooltip.d.ts.map +1 -0
- package/dist/components/floating/tooltip.js +2 -2
- package/dist/components/floating/tooltip.js.map +1 -1
- package/dist/components/floating/tooltip.jsx +67 -0
- package/dist/components/floating/wizard.d.ts +26 -0
- package/dist/components/floating/wizard.d.ts.map +1 -0
- package/dist/components/floating/wizard.js +3 -0
- package/dist/components/floating/wizard.jsx +165 -0
- package/dist/components/form/autocomplete.d.ts +16 -0
- package/dist/components/form/autocomplete.d.ts.map +1 -0
- package/dist/components/form/autocomplete.js +344 -2
- package/dist/components/form/autocomplete.js.map +1 -0
- package/dist/components/form/autocomplete.jsx +299 -0
- package/dist/components/form/checkbox.d.ts +12 -0
- package/dist/components/form/checkbox.d.ts.map +1 -0
- package/dist/components/form/checkbox.js +29 -27
- package/dist/components/form/checkbox.js.map +1 -1
- package/dist/components/form/checkbox.jsx +27 -0
- package/dist/components/form/date-picker.d.ts +10 -0
- package/dist/components/form/date-picker.d.ts.map +1 -0
- package/dist/components/form/date-picker.js +1 -1
- package/dist/components/form/date-picker.jsx +115 -0
- package/dist/components/form/file-upload.d.ts +20 -0
- package/dist/components/form/file-upload.d.ts.map +1 -0
- package/dist/components/form/file-upload.js +1 -1
- package/dist/components/form/file-upload.jsx +160 -0
- package/dist/components/form/form.d.ts +3 -0
- package/dist/components/form/form.d.ts.map +1 -0
- package/dist/components/form/form.jsx +10 -0
- package/dist/components/form/formReset.d.ts +2 -0
- package/dist/components/form/formReset.d.ts.map +1 -0
- package/dist/components/form/formReset.js +10 -0
- package/dist/components/form/formReset.js.map +1 -0
- package/dist/components/form/formReset.jsx +17 -0
- package/dist/components/form/free-text.d.ts +11 -0
- package/dist/components/form/free-text.d.ts.map +1 -0
- package/dist/components/form/free-text.js +70 -0
- package/dist/components/form/free-text.js.map +1 -0
- package/dist/components/form/free-text.jsx +41 -0
- package/dist/components/form/input-field.d.ts +34 -0
- package/dist/components/form/input-field.d.ts.map +1 -0
- package/dist/components/form/input-field.js +3 -0
- package/dist/components/form/input-field.jsx +64 -0
- package/dist/components/form/input.d.ts +52 -0
- package/dist/components/form/input.d.ts.map +1 -0
- package/dist/components/form/input.js +1 -1
- package/dist/components/form/input.jsx +36 -0
- package/dist/components/form/multi-select.d.ts +19 -0
- package/dist/components/form/multi-select.d.ts.map +1 -0
- package/dist/components/form/multi-select.js +420 -0
- package/dist/components/form/multi-select.js.map +1 -0
- package/dist/components/form/multi-select.jsx +352 -0
- package/dist/components/form/radiobox.d.ts +7 -0
- package/dist/components/form/radiobox.d.ts.map +1 -0
- package/dist/components/form/radiobox.jsx +6 -0
- package/dist/components/form/select.d.ts +13 -0
- package/dist/components/form/select.d.ts.map +1 -0
- package/dist/components/form/select.js +55 -51
- package/dist/components/form/select.js.map +1 -1
- package/dist/components/form/select.jsx +47 -0
- package/dist/components/form/slider.d.ts +7 -0
- package/dist/components/form/slider.d.ts.map +1 -0
- package/dist/components/form/slider.js +3 -0
- package/dist/components/form/slider.jsx +45 -0
- package/dist/components/form/switch.d.ts +10 -0
- package/dist/components/form/switch.d.ts.map +1 -0
- package/dist/components/form/switch.js +32 -26
- package/dist/components/form/switch.js.map +1 -1
- package/dist/components/form/switch.jsx +59 -0
- package/dist/components/form/task-list.d.ts +3 -0
- package/dist/components/form/task-list.d.ts.map +1 -0
- package/dist/components/form/task-list.jsx +26 -0
- package/dist/components/form/textarea.d.ts +5 -0
- package/dist/components/form/textarea.d.ts.map +1 -0
- package/dist/components/form/textarea.js +19 -0
- package/dist/components/form/textarea.js.map +1 -0
- package/dist/components/form/textarea.jsx +26 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +44 -0
- package/dist/components/page-calendar/calendar-header.d.ts +16 -0
- package/dist/components/page-calendar/calendar-header.d.ts.map +1 -0
- package/dist/components/page-calendar/calendar-header.js +2 -0
- package/dist/components/page-calendar/calendar-header.jsx +85 -0
- package/dist/components/page-calendar/day-view.d.ts +12 -0
- package/dist/components/page-calendar/day-view.d.ts.map +1 -0
- package/dist/components/page-calendar/day-view.js +124 -0
- package/dist/components/page-calendar/day-view.js.map +1 -0
- package/dist/components/page-calendar/day-view.jsx +89 -0
- package/dist/components/page-calendar/event-pill.d.ts +9 -0
- package/dist/components/page-calendar/event-pill.d.ts.map +1 -0
- package/dist/components/page-calendar/event-pill.js +44 -0
- package/dist/components/page-calendar/event-pill.js.map +1 -0
- package/dist/components/page-calendar/event-pill.jsx +25 -0
- package/dist/components/page-calendar/index.d.ts +4 -0
- package/dist/components/page-calendar/index.d.ts.map +1 -0
- package/dist/components/page-calendar/index.js +2 -0
- package/dist/components/page-calendar/month-view.d.ts +11 -0
- package/dist/components/page-calendar/month-view.d.ts.map +1 -0
- package/dist/components/page-calendar/month-view.js +109 -0
- package/dist/components/page-calendar/month-view.js.map +1 -0
- package/dist/components/page-calendar/month-view.jsx +93 -0
- package/dist/components/page-calendar/page-calendar.d.ts +18 -0
- package/dist/components/page-calendar/page-calendar.d.ts.map +1 -0
- package/dist/components/page-calendar/page-calendar.js +75 -0
- package/dist/components/page-calendar/page-calendar.js.map +1 -0
- package/dist/components/page-calendar/page-calendar.jsx +41 -0
- package/dist/components/page-calendar/page-calendar.types.d.ts +18 -0
- package/dist/components/page-calendar/page-calendar.types.d.ts.map +1 -0
- package/dist/components/page-calendar/page-calendar.types.js +1 -0
- package/dist/components/page-calendar/page-calendar.utils.d.ts +24 -0
- package/dist/components/page-calendar/page-calendar.utils.d.ts.map +1 -0
- package/dist/components/page-calendar/page-calendar.utils.js +93 -0
- package/dist/components/page-calendar/week-view.d.ts +11 -0
- package/dist/components/page-calendar/week-view.d.ts.map +1 -0
- package/dist/components/page-calendar/week-view.js +88 -0
- package/dist/components/page-calendar/week-view.js.map +1 -0
- package/dist/components/page-calendar/week-view.jsx +66 -0
- package/dist/components/table/filter.d.ts +42 -0
- package/dist/components/table/filter.d.ts.map +1 -0
- package/dist/components/table/filter.js +239 -0
- package/dist/components/table/filter.js.map +1 -0
- package/dist/components/table/filter.jsx +174 -0
- package/dist/components/table/group.d.ts +17 -0
- package/dist/components/table/group.d.ts.map +1 -0
- package/dist/components/table/group.js +3 -0
- package/dist/components/table/group.jsx +77 -0
- package/dist/components/table/index.d.ts +19 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +102 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/index.jsx +63 -0
- package/dist/components/table/inner-table.d.ts +29 -0
- package/dist/components/table/inner-table.d.ts.map +1 -0
- package/dist/components/table/inner-table.js +2 -0
- package/dist/components/table/inner-table.jsx +102 -0
- package/dist/components/table/metadata.d.ts +4 -0
- package/dist/components/table/metadata.d.ts.map +1 -0
- package/dist/components/table/metadata.js +73 -0
- package/dist/components/table/metadata.js.map +1 -0
- package/dist/components/table/metadata.jsx +36 -0
- package/dist/components/table/pagination.d.ts +5 -0
- package/dist/components/table/pagination.d.ts.map +1 -0
- package/dist/components/table/pagination.js +70 -0
- package/dist/components/table/pagination.js.map +1 -0
- package/dist/components/table/pagination.jsx +74 -0
- package/dist/components/table/row.d.ts +11 -0
- package/dist/components/table/row.d.ts.map +1 -0
- package/dist/components/table/row.js +58 -0
- package/dist/components/table/row.js.map +1 -0
- package/dist/components/table/row.jsx +49 -0
- package/dist/components/table/sort.d.ts +28 -0
- package/dist/components/table/sort.d.ts.map +1 -0
- package/dist/components/table/sort.js +3 -0
- package/dist/components/table/sort.jsx +111 -0
- package/dist/components/table/table-lib.d.ts +135 -0
- package/dist/components/table/table-lib.d.ts.map +1 -0
- package/dist/components/table/table-lib.js +83 -0
- package/dist/components/table/table.context.d.ts +10 -0
- package/dist/components/table/table.context.d.ts.map +1 -0
- package/dist/components/table/table.context.jsx +5 -0
- package/dist/components/table/thead.d.ts +9 -0
- package/dist/components/table/thead.d.ts.map +1 -0
- package/dist/components/table/thead.js +3 -0
- package/dist/components/table/thead.jsx +103 -0
- package/dist/config/context.d.ts +21 -0
- package/dist/config/context.d.ts.map +1 -0
- package/dist/config/context.js +12 -0
- package/dist/config/default-translations.d.ts +112 -0
- package/dist/config/default-translations.d.ts.map +1 -0
- package/dist/config/default-translations.jsx +105 -0
- package/dist/config/default-tweaks.d.ts +13 -0
- package/dist/config/default-tweaks.d.ts.map +1 -0
- package/dist/config/default-tweaks.js +4 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/{use-translations-DTLfPE3_.js → context-CsnUsfeP.js} +55 -40
- package/dist/context-CsnUsfeP.js.map +1 -0
- package/dist/{date-picker-BhKEFZew.js → date-picker-DNzupG8R.js} +301 -317
- package/dist/date-picker-DNzupG8R.js.map +1 -0
- package/dist/dict-CisoYSMO.js +28 -0
- package/dist/dict-CisoYSMO.js.map +1 -0
- package/dist/dist-ChfJ5LO9.js +498 -0
- package/dist/dist-ChfJ5LO9.js.map +1 -0
- package/dist/{dist-BrGpYRaj.js → dist-DIjUECx9.js} +56 -56
- package/dist/{dist-BrGpYRaj.js.map → dist-DIjUECx9.js.map} +1 -1
- package/dist/dom-Bn4wY_Zx.js.map +1 -1
- package/dist/{file-upload-DWbZfeG5.js → file-upload-C2zNnv9n.js} +501 -481
- package/dist/{file-upload-DWbZfeG5.js.map → file-upload-C2zNnv9n.js.map} +1 -1
- package/dist/fzf-CPGDDCoU.js +64 -0
- package/dist/fzf-CPGDDCoU.js.map +1 -0
- package/dist/getISOWeek-EcB4Ebqp.js +72 -0
- package/dist/getISOWeek-EcB4Ebqp.js.map +1 -0
- package/dist/group-Dl14TJXO.js +222 -0
- package/dist/group-Dl14TJXO.js.map +1 -0
- package/dist/hooks/use-click-outside.d.ts +3 -0
- package/dist/hooks/use-click-outside.d.ts.map +1 -0
- package/dist/hooks/use-click-outside.js +17 -0
- package/dist/hooks/use-color-parser.d.ts +2 -0
- package/dist/hooks/use-color-parser.d.ts.map +1 -0
- package/dist/hooks/use-color-parser.js +9 -0
- package/dist/hooks/use-components-provider.d.ts +15 -0
- package/dist/hooks/use-components-provider.d.ts.map +1 -0
- package/dist/hooks/use-components-provider.jsx +22 -0
- package/dist/hooks/use-debounce.d.ts +5 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-debounce.js +12 -0
- package/dist/hooks/use-floating-ref.d.ts +2 -0
- package/dist/hooks/use-floating-ref.d.ts.map +1 -0
- package/dist/hooks/use-floating-ref.js +6 -0
- package/dist/hooks/use-form.d.ts +394 -0
- package/dist/hooks/use-form.d.ts.map +1 -0
- package/dist/hooks/use-form.js +563 -0
- package/dist/hooks/use-hover.d.ts +3 -0
- package/dist/hooks/use-hover.d.ts.map +1 -0
- package/dist/hooks/use-hover.js +18 -0
- package/dist/hooks/use-input-id.d.ts +4 -0
- package/dist/hooks/use-input-id.d.ts.map +1 -0
- package/dist/hooks/use-input-id.js +5 -0
- package/dist/hooks/use-is-coarse-device.d.ts +2 -0
- package/dist/hooks/use-is-coarse-device.d.ts.map +1 -0
- package/dist/hooks/use-is-coarse-device.js +12 -0
- package/dist/hooks/use-locale.d.ts +3 -0
- package/dist/hooks/use-locale.d.ts.map +1 -0
- package/dist/hooks/use-locale.js +10 -0
- package/dist/hooks/use-media-query.d.ts +2 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +25 -0
- package/dist/hooks/use-on-event.d.ts +4 -0
- package/dist/hooks/use-on-event.d.ts.map +1 -0
- package/dist/hooks/use-on-event.js +10 -0
- package/dist/hooks/use-parent.d.ts +3 -0
- package/dist/hooks/use-parent.d.ts.map +1 -0
- package/dist/hooks/use-parent.js +21 -0
- package/dist/hooks/use-preferences.d.ts +2 -0
- package/dist/hooks/use-preferences.d.ts.map +1 -0
- package/dist/hooks/use-preferences.js +23 -0
- package/dist/hooks/use-previous.d.ts +2 -0
- package/dist/hooks/use-previous.d.ts.map +1 -0
- package/dist/hooks/use-previous.js +9 -0
- package/dist/hooks/use-reactive.d.ts +2 -0
- package/dist/hooks/use-reactive.d.ts.map +1 -0
- package/dist/hooks/use-reactive.js +9 -0
- package/dist/hooks/use-remove-scroll.d.ts +4 -0
- package/dist/hooks/use-remove-scroll.d.ts.map +1 -0
- package/dist/hooks/use-remove-scroll.js +48 -0
- package/dist/hooks/use-resize-observer.d.ts +2 -0
- package/dist/hooks/use-resize-observer.d.ts.map +1 -0
- package/dist/hooks/use-resize-observer.js +17 -0
- package/dist/hooks/use-stable-ref.d.ts +2 -0
- package/dist/hooks/use-stable-ref.d.ts.map +1 -0
- package/dist/hooks/use-stable-ref.js +9 -0
- package/dist/hooks/use-swipe.d.ts +8 -0
- package/dist/hooks/use-swipe.d.ts.map +1 -0
- package/dist/hooks/use-swipe.js +17 -0
- package/dist/hooks/use-translations.d.ts +110 -0
- package/dist/hooks/use-translations.d.ts.map +1 -0
- package/dist/hooks/use-translations.js +9 -0
- package/dist/hooks/use-tweaks.d.ts +3 -0
- package/dist/hooks/use-tweaks.d.ts.map +1 -0
- package/dist/hooks/use-tweaks.js +9 -0
- package/dist/hooks/use-window-size.d.ts +5 -0
- package/dist/hooks/use-window-size.d.ts.map +1 -0
- package/dist/hooks/use-window-size.js +14 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -7932
- package/dist/index.js.map +1 -1
- package/dist/inner-table-CeDX60cL.js +151 -0
- package/dist/inner-table-CeDX60cL.js.map +1 -0
- package/dist/input-Cmyuea4Y.js +412 -0
- package/dist/input-Cmyuea4Y.js.map +1 -0
- package/dist/{input-field-B_whI66Q.js → input-field-ffx1MbHo.js} +29 -16
- package/dist/input-field-ffx1MbHo.js.map +1 -0
- package/dist/isSameMonth-C3lsSwcg.js +10 -0
- package/dist/isSameMonth-C3lsSwcg.js.map +1 -0
- package/dist/isToday-COXfxFui.js +32 -0
- package/dist/isToday-COXfxFui.js.map +1 -0
- package/dist/lib/combi-keys.d.ts +15 -0
- package/dist/lib/combi-keys.d.ts.map +1 -0
- package/dist/lib/combi-keys.js +60 -0
- package/dist/lib/dict.d.ts +9 -0
- package/dist/lib/dict.d.ts.map +1 -0
- package/dist/lib/dict.js +28 -0
- package/dist/lib/dom.d.ts +20 -0
- package/dist/lib/dom.d.ts.map +1 -0
- package/dist/lib/dom.js +185 -0
- package/dist/lib/fns.d.ts +11 -0
- package/dist/lib/fns.d.ts.map +1 -0
- package/dist/lib/fns.js +46 -0
- package/dist/lib/fzf.d.ts +16 -0
- package/dist/lib/fzf.d.ts.map +1 -0
- package/dist/lib/fzf.js +115 -0
- package/dist/lib/keyboard-area.d.ts +16 -0
- package/dist/lib/keyboard-area.d.ts.map +1 -0
- package/dist/lib/keyboard-area.js +14 -0
- package/dist/modal-Df8-6i-o.js +408 -0
- package/dist/modal-Df8-6i-o.js.map +1 -0
- package/dist/notifications-NhCESJUV.js +1697 -0
- package/dist/notifications-NhCESJUV.js.map +1 -0
- package/dist/page-calendar.utils-Bd0PHktL.js +102 -0
- package/dist/page-calendar.utils-Bd0PHktL.js.map +1 -0
- package/dist/preset/preset.tailwind.d.ts.map +1 -1
- package/dist/preset/preset.tailwind.js +6 -7
- package/dist/preset/src/styles/dark.js +1 -1
- package/dist/progress-8LO5gWLp.js +104 -0
- package/dist/progress-8LO5gWLp.js.map +1 -0
- package/dist/{proxy-BcJ_5Dwq.js → proxy-fP2NxmhM.js} +658 -844
- package/dist/proxy-fP2NxmhM.js.map +1 -0
- package/dist/shim-Czv-YhKR.js +93 -0
- package/dist/shim-Czv-YhKR.js.map +1 -0
- package/dist/shortcut-CQCmgmlU.js +100 -0
- package/dist/shortcut-CQCmgmlU.js.map +1 -0
- package/dist/slider-TX9hiHO-.js +1196 -0
- package/dist/slider-TX9hiHO-.js.map +1 -0
- package/dist/sort-DGmiselV.js +195 -0
- package/dist/sort-DGmiselV.js.map +1 -0
- package/dist/step-DFpJ7zCG.js +185 -0
- package/dist/step-DFpJ7zCG.js.map +1 -0
- package/dist/styles/dark.js +1 -1
- package/dist/subMonths-QcCnE3Yh.js +43 -0
- package/dist/subMonths-QcCnE3Yh.js.map +1 -0
- package/dist/table-lib-1bkYSklk.js +174 -0
- package/dist/table-lib-1bkYSklk.js.map +1 -0
- package/dist/{tabs-Ciy0l9OF.js → tabs-Brc963EW.js} +2 -2
- package/dist/{tabs-Ciy0l9OF.js.map → tabs-Brc963EW.js.map} +1 -1
- package/dist/thead-B6WELJZ-.js +211 -0
- package/dist/thead-B6WELJZ-.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/use-locale-DPM_sg4s.js +12 -0
- package/dist/use-locale-DPM_sg4s.js.map +1 -0
- package/dist/use-remove-scroll-pAgC09Sq.js +38 -0
- package/dist/use-remove-scroll-pAgC09Sq.js.map +1 -0
- package/dist/use-translations-BE4PuhLm.js +11 -0
- package/dist/use-translations-BE4PuhLm.js.map +1 -0
- package/dist/useAnimationFrame-DnKbaXfi.js +223 -0
- package/dist/useAnimationFrame-DnKbaXfi.js.map +1 -0
- package/dist/valueToPercent-DZc_m1tm.js +43 -0
- package/dist/valueToPercent-DZc_m1tm.js.map +1 -0
- package/dist/visuallyHidden-B7wI86yi.js +303 -0
- package/dist/visuallyHidden-B7wI86yi.js.map +1 -0
- package/dist/with-selector-BFW5n-pb.js +102 -0
- package/dist/with-selector-BFW5n-pb.js.map +1 -0
- package/dist/wizard-7u_qZ-78.js +218 -0
- package/dist/wizard-7u_qZ-78.js.map +1 -0
- package/package.json +19 -11
- package/dist/autocomplete-D3VOTihi.js +0 -415
- package/dist/autocomplete-D3VOTihi.js.map +0 -1
- package/dist/calendar-PCCZDUIL.js.map +0 -1
- package/dist/components/table/table.js +0 -3
- package/dist/date-picker-BhKEFZew.js.map +0 -1
- package/dist/input-B7jqwPG4.js +0 -473
- package/dist/input-B7jqwPG4.js.map +0 -1
- package/dist/input-field-B_whI66Q.js.map +0 -1
- package/dist/modal-Bz-61ays.js +0 -373
- package/dist/modal-Bz-61ays.js.map +0 -1
- package/dist/notifications-MT4XkLov.js +0 -2203
- package/dist/notifications-MT4XkLov.js.map +0 -1
- package/dist/polymorph-BLXhrn9n.js.map +0 -1
- package/dist/proxy-BcJ_5Dwq.js.map +0 -1
- package/dist/skeleton-CBYEq3lM.js +0 -26
- package/dist/skeleton-CBYEq3lM.js.map +0 -1
- package/dist/slot-pC8kH9De.js.map +0 -1
- package/dist/table-CUFbAI2k.js +0 -1914
- package/dist/table-CUFbAI2k.js.map +0 -1
- package/dist/use-translations-DTLfPE3_.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
import { Label } from "../../types";
|
|
3
|
+
type AnimatedItemProps = {
|
|
4
|
+
title: Label;
|
|
5
|
+
description: Label;
|
|
6
|
+
children: Label;
|
|
7
|
+
avatar?: Label;
|
|
8
|
+
leading?: React.FC<{
|
|
9
|
+
open: () => void;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
type AnimatedListProps = object;
|
|
13
|
+
export declare const AnimatedList: (props: PropsWithChildren<AnimatedListProps>) => React.JSX.Element;
|
|
14
|
+
export declare const AnimatedListItem: (props: PropsWithChildren<AnimatedItemProps>) => React.JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/components/display/list.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,EAAY,iBAAiB,EAAgC,MAAM,OAAO,CAAC;AAEzF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,KAAK,iBAAiB,GAAG;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;CAC5C,CAAC;AAIF,KAAK,iBAAiB,GAAG,MAAM,CAAC;AAiEhC,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,sBAgFvE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,sBAA0C,CAAC"}
|
|
@@ -1,153 +1,163 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { t
|
|
4
|
-
import { a as
|
|
5
|
-
import { t as
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
2
|
+
import { t as e } from "../../X.es-Cjq2a_OA.js";
|
|
3
|
+
import { t } from "../../use-translations-BE4PuhLm.js";
|
|
4
|
+
import { a as n, d as r, f as i, l as a, n as o, o as s, v as c, x as l } from "../../floating-ui.react-CwXtBJ_y.js";
|
|
5
|
+
import { t as u } from "../../proxy-fP2NxmhM.js";
|
|
6
|
+
import { t as d } from "../../AnimatePresence-j36AYeOQ.js";
|
|
7
|
+
import { t as f } from "../../MotionConfig-CXHoPGbK.js";
|
|
8
|
+
import p, { Fragment as m, useCallback as h, useId as g, useState as _ } from "react";
|
|
9
|
+
import { jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
8
10
|
//#region src/components/display/list.tsx
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
11
|
+
var b = ({ item: r, context: i, setter: a, get: c, refs: l }) => {
|
|
12
|
+
let p = t();
|
|
13
|
+
return /* @__PURE__ */ v(s, { children: /* @__PURE__ */ v(f, {
|
|
14
|
+
reducedMotion: "user",
|
|
15
|
+
transition: {
|
|
16
|
+
type: "spring",
|
|
17
|
+
damping: 30,
|
|
18
|
+
stiffness: 350
|
|
19
|
+
},
|
|
20
|
+
children: /* @__PURE__ */ y(d, {
|
|
21
|
+
mode: "wait",
|
|
22
|
+
presenceAffectsLayout: !0,
|
|
23
|
+
children: [r ? /* @__PURE__ */ v(u.div, {
|
|
24
|
+
exit: { opacity: 0 },
|
|
25
|
+
animate: { opacity: 1 },
|
|
26
|
+
initial: { opacity: 0 },
|
|
27
|
+
transition: {
|
|
28
|
+
type: "tween",
|
|
29
|
+
duration: .15,
|
|
30
|
+
ease: "easeOut"
|
|
31
|
+
},
|
|
32
|
+
className: "pointer-events-none fixed inset-0 top-0 z-overlay h-screen w-screen bg-floating-overlay/70"
|
|
33
|
+
}, "overlay") : null, r ? /* @__PURE__ */ v(n, {
|
|
34
|
+
lockScroll: !0,
|
|
35
|
+
className: "absolute inset-0 z-floating flex items-center justify-center",
|
|
36
|
+
children: /* @__PURE__ */ v(o, {
|
|
37
|
+
visuallyHiddenDismiss: !0,
|
|
38
|
+
modal: !0,
|
|
39
|
+
closeOnFocusOut: !0,
|
|
40
|
+
context: i,
|
|
41
|
+
children: /* @__PURE__ */ y(u.div, {
|
|
42
|
+
layout: !0,
|
|
43
|
+
layoutId: `item-${r.id}`,
|
|
44
|
+
initial: {
|
|
45
|
+
opacity: .6,
|
|
46
|
+
scale: .98
|
|
47
|
+
},
|
|
48
|
+
animate: {
|
|
49
|
+
opacity: 1,
|
|
50
|
+
scale: 1
|
|
51
|
+
},
|
|
52
|
+
exit: {
|
|
53
|
+
opacity: 0,
|
|
54
|
+
scale: .98
|
|
55
|
+
},
|
|
56
|
+
className: "relative flex h-min w-min min-w-xs flex-col gap-list-card-gap rounded-list-radius border border-card-border bg-card-background p-list-card-p py-list-card-py pb-list-card-pb shadow-shadow-card",
|
|
57
|
+
ref: l.setFloating,
|
|
58
|
+
...c(),
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ v("nav", {
|
|
61
|
+
className: "absolute right-4 top-1 lg:right-2",
|
|
62
|
+
children: /* @__PURE__ */ v("button", {
|
|
63
|
+
type: "button",
|
|
64
|
+
onClick: a,
|
|
65
|
+
"aria-label": p.listCloseDetails,
|
|
66
|
+
className: "p-list-close-p opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger",
|
|
67
|
+
children: /* @__PURE__ */ v(e, {})
|
|
68
|
+
})
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ y(u.header, {
|
|
71
|
+
layout: !0,
|
|
72
|
+
className: "flex w-full flex-wrap items-center justify-between gap-list-header-gap",
|
|
73
|
+
children: [/* @__PURE__ */ v("h3", {
|
|
74
|
+
className: "min-w-full text-balance text-list-title-text font-medium",
|
|
75
|
+
children: r.title
|
|
76
|
+
}), /* @__PURE__ */ v("p", {
|
|
77
|
+
className: "text-typography-sm leading-snug text-secondary",
|
|
78
|
+
children: r.description
|
|
79
|
+
})]
|
|
80
|
+
}),
|
|
81
|
+
/* @__PURE__ */ v(u.div, {
|
|
82
|
+
layout: !0,
|
|
83
|
+
children: r.children
|
|
63
84
|
})
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
layout: !0,
|
|
67
|
-
className: "flex w-full flex-wrap items-center justify-between gap-list-header-gap",
|
|
68
|
-
children: [/* @__PURE__ */ _("h3", {
|
|
69
|
-
className: "min-w-full text-balance text-list-title-text font-medium",
|
|
70
|
-
children: i.title
|
|
71
|
-
}), /* @__PURE__ */ _("p", {
|
|
72
|
-
className: "text-typography-sm leading-snug text-secondary",
|
|
73
|
-
children: i.description
|
|
74
|
-
})]
|
|
75
|
-
}),
|
|
76
|
-
/* @__PURE__ */ _(t.div, {
|
|
77
|
-
layout: !0,
|
|
78
|
-
children: i.children
|
|
79
|
-
})
|
|
80
|
-
]
|
|
85
|
+
]
|
|
86
|
+
})
|
|
81
87
|
})
|
|
82
|
-
})
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
}
|
|
86
|
-
let
|
|
87
|
-
open:
|
|
88
|
+
}, "card") : null]
|
|
89
|
+
})
|
|
90
|
+
}) });
|
|
91
|
+
}, x = (e) => {
|
|
92
|
+
let n = t(), [o, s] = _(null), d = g(), { context: f, refs: x } = i({
|
|
93
|
+
open: o !== null,
|
|
88
94
|
transform: !0,
|
|
89
|
-
onOpenChange: (e) => e ? void 0 :
|
|
90
|
-
}), { getFloatingProps:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
onOpenChange: (e) => e ? void 0 : s(null)
|
|
96
|
+
}), { getFloatingProps: S } = c([
|
|
97
|
+
a(f),
|
|
98
|
+
l(f, { role: "dialog" }),
|
|
99
|
+
r(f, {
|
|
94
100
|
escapeKey: !0,
|
|
95
101
|
referencePress: !0,
|
|
96
102
|
outsidePress: !0
|
|
97
103
|
})
|
|
98
|
-
]),
|
|
99
|
-
|
|
100
|
-
}, []),
|
|
101
|
-
return /* @__PURE__ */
|
|
102
|
-
refs:
|
|
103
|
-
context:
|
|
104
|
-
get:
|
|
105
|
-
item:
|
|
106
|
-
setter:
|
|
107
|
-
}), /* @__PURE__ */
|
|
104
|
+
]), C = h(() => {
|
|
105
|
+
s(null);
|
|
106
|
+
}, []), w = p.Children.toArray(e.children);
|
|
107
|
+
return /* @__PURE__ */ y(m, { children: [/* @__PURE__ */ v(b, {
|
|
108
|
+
refs: x,
|
|
109
|
+
context: f,
|
|
110
|
+
get: S,
|
|
111
|
+
item: o,
|
|
112
|
+
setter: C
|
|
113
|
+
}), /* @__PURE__ */ v("ul", {
|
|
108
114
|
role: "list",
|
|
109
|
-
children:
|
|
110
|
-
let
|
|
111
|
-
...
|
|
112
|
-
id:
|
|
113
|
-
}),
|
|
114
|
-
return /* @__PURE__ */
|
|
115
|
+
children: w.map((e, t) => {
|
|
116
|
+
let r = e.props, i = `${d}-${t}`, a = () => s({
|
|
117
|
+
...r,
|
|
118
|
+
id: i
|
|
119
|
+
}), o = r.leading;
|
|
120
|
+
return /* @__PURE__ */ v(u.li, {
|
|
115
121
|
layout: !0,
|
|
116
|
-
layoutId: `item-${
|
|
122
|
+
layoutId: `item-${i}`,
|
|
117
123
|
className: "border-b border-card-border py-list-item-py last:border-transparent",
|
|
118
|
-
children: /* @__PURE__ */
|
|
119
|
-
layoutId: `toast-${
|
|
124
|
+
children: /* @__PURE__ */ v(u.div, {
|
|
125
|
+
layoutId: `toast-${i}`,
|
|
120
126
|
className: "relative",
|
|
121
|
-
children: /* @__PURE__ */
|
|
127
|
+
children: /* @__PURE__ */ v("div", {
|
|
122
128
|
className: "relative flex items-start space-x-3",
|
|
123
|
-
children: /* @__PURE__ */
|
|
129
|
+
children: /* @__PURE__ */ y(m, { children: [r.avatar ? /* @__PURE__ */ v("div", { children: /* @__PURE__ */ v("div", {
|
|
124
130
|
className: "relative px-list-avatar-px",
|
|
125
|
-
children: /* @__PURE__ */
|
|
126
|
-
|
|
131
|
+
children: /* @__PURE__ */ v("button", {
|
|
132
|
+
type: "button",
|
|
133
|
+
onClick: a,
|
|
134
|
+
"aria-label": n.listOpenDetails(String(r.title)),
|
|
127
135
|
className: "flex size-10 items-center justify-center ring-primary",
|
|
128
|
-
children:
|
|
136
|
+
children: r.avatar
|
|
129
137
|
})
|
|
130
|
-
}) }) : null, /* @__PURE__ */
|
|
138
|
+
}) }) : null, /* @__PURE__ */ v("div", {
|
|
131
139
|
className: "min-w-0 flex-1 py-list-body-py text-foreground",
|
|
132
|
-
children: /* @__PURE__ */
|
|
140
|
+
children: /* @__PURE__ */ y("div", {
|
|
133
141
|
className: "flex flex-row flex-nowrap justify-between gap-list-item-gap",
|
|
134
|
-
children: [/* @__PURE__ */
|
|
135
|
-
|
|
142
|
+
children: [/* @__PURE__ */ y("button", {
|
|
143
|
+
type: "button",
|
|
144
|
+
onClick: a,
|
|
145
|
+
"aria-label": n.listOpenDetails(String(r.title)),
|
|
136
146
|
className: "cursor-pointer text-left transition-all ease-out hover:text-primary",
|
|
137
|
-
children: [/* @__PURE__ */
|
|
147
|
+
children: [/* @__PURE__ */ v("h3", { children: r.title }), /* @__PURE__ */ v("p", {
|
|
138
148
|
className: "text-typography-sm leading-snug text-secondary",
|
|
139
|
-
children:
|
|
149
|
+
children: r.description
|
|
140
150
|
})]
|
|
141
|
-
}),
|
|
151
|
+
}), o ? /* @__PURE__ */ v(o, { open: a }) : null]
|
|
142
152
|
})
|
|
143
153
|
})] })
|
|
144
154
|
})
|
|
145
155
|
})
|
|
146
|
-
},
|
|
156
|
+
}, i);
|
|
147
157
|
})
|
|
148
158
|
})] });
|
|
149
|
-
},
|
|
159
|
+
}, S = (e) => /* @__PURE__ */ v(m, { children: e.children });
|
|
150
160
|
//#endregion
|
|
151
|
-
export {
|
|
161
|
+
export { x as AnimatedList, S as AnimatedListItem };
|
|
152
162
|
|
|
153
163
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","names":[],"sources":["../../../src/components/display/list.tsx"],"sourcesContent":["\"use client\";\nimport {\n FloatingContext,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion, MotionConfig } from \"motion/react\";\nimport { XIcon } from \"@phosphor-icons/react\";\nimport React, { Fragment, PropsWithChildren, useCallback, useId, useState } from \"react\";\nimport { Label } from \"../../types\";\n\ntype AnimatedItemProps = {\n title: Label;\n description: Label;\n children: Label;\n avatar?: Label;\n leading?: React.FC<{ open: () => void }>;\n};\n\ntype IdAnimatedItem = AnimatedItemProps & { id: string };\n\ntype AnimatedListProps = object;\n\ntype FloatItemProps = {\n setter: () => void;\n context: FloatingContext;\n item: IdAnimatedItem | null;\n refs: { setFloating: (node: HTMLElement | null) => void };\n get: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n};\n\nconst FloatItem = ({ item, context, setter, get, refs }: FloatItemProps) => (\n <FloatingPortal>\n <MotionConfig reducedMotion=\"user\" transition={{ type: \"spring\", damping: 30, stiffness: 350 }}>\n <AnimatePresence mode=\"wait\" presenceAffectsLayout>\n {item ? (\n <motion.div\n key=\"overlay\"\n exit={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n initial={{ opacity: 0 }}\n transition={{ type: \"tween\", duration: 0.15, ease: \"easeOut\" }}\n className=\"pointer-events-none fixed inset-0 top-0 z-overlay h-screen w-screen bg-floating-overlay/70\"\n />\n ) : null}\n {item ? (\n <FloatingOverlay key=\"card\" lockScroll className=\"absolute inset-0 z-floating flex items-center justify-center\">\n <FloatingFocusManager visuallyHiddenDismiss modal closeOnFocusOut context={context}>\n <motion.div\n layout\n layoutId={`item-${item.id}`}\n initial={{ opacity: 0.6, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.98 }}\n className=\"relative flex h-min w-min min-w-xs flex-col gap-list-card-gap rounded-list-radius border border-card-border bg-card-background p-list-card-p py-list-card-py pb-list-card-pb shadow-shadow-card\"\n ref={refs.setFloating}\n {...get()}\n >\n <nav className=\"absolute right-4 top-1 lg:right-2\">\n <button\n type=\"button\"\n onClick={setter}\n className=\"p-list-close-p opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger\"\n >\n <XIcon />\n </button>\n </nav>\n <motion.header layout className=\"flex w-full flex-wrap items-center justify-between gap-list-header-gap\">\n <h3 className=\"min-w-full text-balance text-list-title-text font-medium\">{item.title}</h3>\n <p className=\"text-typography-sm leading-snug text-secondary\">{item.description}</p>\n </motion.header>\n <motion.div layout>{item.children}</motion.div>\n </motion.div>\n </FloatingFocusManager>\n </FloatingOverlay>\n ) : null}\n </AnimatePresence>\n </MotionConfig>\n </FloatingPortal>\n);\n\nexport const AnimatedList = (props: PropsWithChildren<AnimatedListProps>) => {\n const [selected, setSelected] = useState<IdAnimatedItem | null>(null);\n const id = useId();\n const { context, refs } = useFloating({\n open: selected !== null,\n transform: true,\n onOpenChange: (open) => (open ? undefined : setSelected(null)),\n });\n const click = useClick(context);\n const role = useRole(context, { role: \"dialog\" });\n const dismiss = useDismiss(context, {\n escapeKey: true,\n referencePress: true,\n outsidePress: true,\n });\n const { getFloatingProps } = useInteractions([click, role, dismiss]);\n\n const clear = useCallback(() => {\n setSelected(null);\n }, []);\n\n const items = React.Children.toArray(props.children);\n\n return (\n <Fragment>\n <FloatItem refs={refs} context={context} get={getFloatingProps} item={selected} setter={clear} />\n <ul role=\"list\">\n {items.map((x, index) => {\n const item = (x as React.ReactElement<AnimatedItemProps>).props;\n const innerId = `${id}-${index}`;\n const setter = () => setSelected({ ...item, id: innerId });\n const Leading = item.leading;\n return (\n <motion.li\n layout\n key={innerId}\n layoutId={`item-${innerId}`}\n className={`border-b border-card-border py-list-item-py last:border-transparent`}\n >\n <motion.div layoutId={`toast-${innerId}`} className=\"relative\">\n <div className=\"relative flex items-start space-x-3\">\n <Fragment>\n {item.avatar ? (\n <div>\n <div className=\"relative px-list-avatar-px\">\n <button onClick={setter} className=\"flex size-10 items-center justify-center ring-primary\">\n {item.avatar}\n </button>\n </div>\n </div>\n ) : null}\n <div className=\"min-w-0 flex-1 py-list-body-py text-foreground\">\n <div className=\"flex flex-row flex-nowrap justify-between gap-list-item-gap\">\n <button\n onClick={setter}\n className=\"cursor-pointer text-left transition-all ease-out hover:text-primary\"\n >\n <h3>{item.title}</h3>\n <p className=\"text-typography-sm leading-snug text-secondary\">{item.description}</p>\n </button>\n {Leading ? <Leading open={setter} /> : null}\n </div>\n </div>\n </Fragment>\n </div>\n </motion.div>\n </motion.li>\n );\n })}\n </ul>\n </Fragment>\n );\n};\n\nexport const AnimatedListItem = (props: PropsWithChildren<AnimatedItemProps>) => <Fragment>{props.children}</Fragment>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.js","names":[],"sources":["../../../src/components/display/list.tsx"],"sourcesContent":["\"use client\";\nimport {\n FloatingContext,\n FloatingFocusManager,\n FloatingOverlay,\n FloatingPortal,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { AnimatePresence, motion, MotionConfig } from \"motion/react\";\nimport { XIcon } from \"@phosphor-icons/react\";\nimport React, { Fragment, PropsWithChildren, useCallback, useId, useState } from \"react\";\nimport { useTranslations } from \"../../hooks/use-translations\";\nimport { Label } from \"../../types\";\n\ntype AnimatedItemProps = {\n title: Label;\n description: Label;\n children: Label;\n avatar?: Label;\n leading?: React.FC<{ open: () => void }>;\n};\n\ntype IdAnimatedItem = AnimatedItemProps & { id: string };\n\ntype AnimatedListProps = object;\n\ntype FloatItemProps = {\n setter: () => void;\n context: FloatingContext;\n item: IdAnimatedItem | null;\n refs: { setFloating: (node: HTMLElement | null) => void };\n get: ReturnType<typeof useInteractions>[\"getFloatingProps\"];\n};\n\nconst FloatItem = ({ item, context, setter, get, refs }: FloatItemProps) => {\n const translations = useTranslations();\n\n return (\n <FloatingPortal>\n <MotionConfig reducedMotion=\"user\" transition={{ type: \"spring\", damping: 30, stiffness: 350 }}>\n <AnimatePresence mode=\"wait\" presenceAffectsLayout>\n {item ? (\n <motion.div\n key=\"overlay\"\n exit={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n initial={{ opacity: 0 }}\n transition={{ type: \"tween\", duration: 0.15, ease: \"easeOut\" }}\n className=\"pointer-events-none fixed inset-0 top-0 z-overlay h-screen w-screen bg-floating-overlay/70\"\n />\n ) : null}\n {item ? (\n <FloatingOverlay key=\"card\" lockScroll className=\"absolute inset-0 z-floating flex items-center justify-center\">\n <FloatingFocusManager visuallyHiddenDismiss modal closeOnFocusOut context={context}>\n <motion.div\n layout\n layoutId={`item-${item.id}`}\n initial={{ opacity: 0.6, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.98 }}\n className=\"relative flex h-min w-min min-w-xs flex-col gap-list-card-gap rounded-list-radius border border-card-border bg-card-background p-list-card-p py-list-card-py pb-list-card-pb shadow-shadow-card\"\n ref={refs.setFloating}\n {...get()}\n >\n <nav className=\"absolute right-4 top-1 lg:right-2\">\n <button\n type=\"button\"\n onClick={setter}\n aria-label={translations.listCloseDetails}\n className=\"p-list-close-p opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger\"\n >\n <XIcon />\n </button>\n </nav>\n <motion.header layout className=\"flex w-full flex-wrap items-center justify-between gap-list-header-gap\">\n <h3 className=\"min-w-full text-balance text-list-title-text font-medium\">{item.title}</h3>\n <p className=\"text-typography-sm leading-snug text-secondary\">{item.description}</p>\n </motion.header>\n <motion.div layout>{item.children}</motion.div>\n </motion.div>\n </FloatingFocusManager>\n </FloatingOverlay>\n ) : null}\n </AnimatePresence>\n </MotionConfig>\n </FloatingPortal>\n );\n};\n\nexport const AnimatedList = (props: PropsWithChildren<AnimatedListProps>) => {\n const translations = useTranslations();\n const [selected, setSelected] = useState<IdAnimatedItem | null>(null);\n const id = useId();\n const { context, refs } = useFloating({\n open: selected !== null,\n transform: true,\n onOpenChange: (open) => (open ? undefined : setSelected(null)),\n });\n const click = useClick(context);\n const role = useRole(context, { role: \"dialog\" });\n const dismiss = useDismiss(context, {\n escapeKey: true,\n referencePress: true,\n outsidePress: true,\n });\n const { getFloatingProps } = useInteractions([click, role, dismiss]);\n\n const clear = useCallback(() => {\n setSelected(null);\n }, []);\n\n const items = React.Children.toArray(props.children);\n\n return (\n <Fragment>\n <FloatItem refs={refs} context={context} get={getFloatingProps} item={selected} setter={clear} />\n <ul role=\"list\">\n {items.map((x, index) => {\n const item = (x as React.ReactElement<AnimatedItemProps>).props;\n const innerId = `${id}-${index}`;\n const setter = () => setSelected({ ...item, id: innerId });\n const Leading = item.leading;\n return (\n <motion.li\n layout\n key={innerId}\n layoutId={`item-${innerId}`}\n className={`border-b border-card-border py-list-item-py last:border-transparent`}\n >\n <motion.div layoutId={`toast-${innerId}`} className=\"relative\">\n <div className=\"relative flex items-start space-x-3\">\n <Fragment>\n {item.avatar ? (\n <div>\n <div className=\"relative px-list-avatar-px\">\n <button\n type=\"button\"\n onClick={setter}\n aria-label={translations.listOpenDetails(String(item.title))}\n className=\"flex size-10 items-center justify-center ring-primary\"\n >\n {item.avatar}\n </button>\n </div>\n </div>\n ) : null}\n <div className=\"min-w-0 flex-1 py-list-body-py text-foreground\">\n <div className=\"flex flex-row flex-nowrap justify-between gap-list-item-gap\">\n <button\n type=\"button\"\n onClick={setter}\n aria-label={translations.listOpenDetails(String(item.title))}\n className=\"cursor-pointer text-left transition-all ease-out hover:text-primary\"\n >\n <h3>{item.title}</h3>\n <p className=\"text-typography-sm leading-snug text-secondary\">{item.description}</p>\n </button>\n {Leading ? <Leading open={setter} /> : null}\n </div>\n </div>\n </Fragment>\n </div>\n </motion.div>\n </motion.li>\n );\n })}\n </ul>\n </Fragment>\n );\n};\n\nexport const AnimatedListItem = (props: PropsWithChildren<AnimatedItemProps>) => <Fragment>{props.children}</Fragment>;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { FloatingFocusManager, FloatingOverlay, FloatingPortal, useClick, useDismiss, useFloating, useInteractions, useRole, } from "@floating-ui/react";
|
|
3
|
+
import { AnimatePresence, motion, MotionConfig } from "motion/react";
|
|
4
|
+
import { XIcon } from "@phosphor-icons/react";
|
|
5
|
+
import React, { Fragment, useCallback, useId, useState } from "react";
|
|
6
|
+
import { useTranslations } from "../../hooks/use-translations";
|
|
7
|
+
const FloatItem = ({ item, context, setter, get, refs }) => {
|
|
8
|
+
const translations = useTranslations();
|
|
9
|
+
return (<FloatingPortal>
|
|
10
|
+
<MotionConfig reducedMotion="user" transition={{ type: "spring", damping: 30, stiffness: 350 }}>
|
|
11
|
+
<AnimatePresence mode="wait" presenceAffectsLayout>
|
|
12
|
+
{item ? (<motion.div key="overlay" exit={{ opacity: 0 }} animate={{ opacity: 1 }} initial={{ opacity: 0 }} transition={{ type: "tween", duration: 0.15, ease: "easeOut" }} className="pointer-events-none fixed inset-0 top-0 z-overlay h-screen w-screen bg-floating-overlay/70"/>) : null}
|
|
13
|
+
{item ? (<FloatingOverlay key="card" lockScroll className="absolute inset-0 z-floating flex items-center justify-center">
|
|
14
|
+
<FloatingFocusManager visuallyHiddenDismiss modal closeOnFocusOut context={context}>
|
|
15
|
+
<motion.div layout layoutId={`item-${item.id}`} initial={{ opacity: 0.6, scale: 0.98 }} animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.98 }} className="relative flex h-min w-min min-w-xs flex-col gap-list-card-gap rounded-list-radius border border-card-border bg-card-background p-list-card-p py-list-card-py pb-list-card-pb shadow-shadow-card" ref={refs.setFloating} {...get()}>
|
|
16
|
+
<nav className="absolute right-4 top-1 lg:right-2">
|
|
17
|
+
<button type="button" onClick={setter} aria-label={translations.listCloseDetails} className="p-list-close-p opacity-70 transition-colors hover:text-danger hover:opacity-100 focus:text-danger">
|
|
18
|
+
<XIcon />
|
|
19
|
+
</button>
|
|
20
|
+
</nav>
|
|
21
|
+
<motion.header layout className="flex w-full flex-wrap items-center justify-between gap-list-header-gap">
|
|
22
|
+
<h3 className="min-w-full text-balance text-list-title-text font-medium">{item.title}</h3>
|
|
23
|
+
<p className="text-typography-sm leading-snug text-secondary">{item.description}</p>
|
|
24
|
+
</motion.header>
|
|
25
|
+
<motion.div layout>{item.children}</motion.div>
|
|
26
|
+
</motion.div>
|
|
27
|
+
</FloatingFocusManager>
|
|
28
|
+
</FloatingOverlay>) : null}
|
|
29
|
+
</AnimatePresence>
|
|
30
|
+
</MotionConfig>
|
|
31
|
+
</FloatingPortal>);
|
|
32
|
+
};
|
|
33
|
+
export const AnimatedList = (props) => {
|
|
34
|
+
const translations = useTranslations();
|
|
35
|
+
const [selected, setSelected] = useState(null);
|
|
36
|
+
const id = useId();
|
|
37
|
+
const { context, refs } = useFloating({
|
|
38
|
+
open: selected !== null,
|
|
39
|
+
transform: true,
|
|
40
|
+
onOpenChange: (open) => (open ? undefined : setSelected(null)),
|
|
41
|
+
});
|
|
42
|
+
const click = useClick(context);
|
|
43
|
+
const role = useRole(context, { role: "dialog" });
|
|
44
|
+
const dismiss = useDismiss(context, {
|
|
45
|
+
escapeKey: true,
|
|
46
|
+
referencePress: true,
|
|
47
|
+
outsidePress: true,
|
|
48
|
+
});
|
|
49
|
+
const { getFloatingProps } = useInteractions([click, role, dismiss]);
|
|
50
|
+
const clear = useCallback(() => {
|
|
51
|
+
setSelected(null);
|
|
52
|
+
}, []);
|
|
53
|
+
const items = React.Children.toArray(props.children);
|
|
54
|
+
return (<Fragment>
|
|
55
|
+
<FloatItem refs={refs} context={context} get={getFloatingProps} item={selected} setter={clear}/>
|
|
56
|
+
<ul role="list">
|
|
57
|
+
{items.map((x, index) => {
|
|
58
|
+
const item = x.props;
|
|
59
|
+
const innerId = `${id}-${index}`;
|
|
60
|
+
const setter = () => setSelected({ ...item, id: innerId });
|
|
61
|
+
const Leading = item.leading;
|
|
62
|
+
return (<motion.li layout key={innerId} layoutId={`item-${innerId}`} className={`border-b border-card-border py-list-item-py last:border-transparent`}>
|
|
63
|
+
<motion.div layoutId={`toast-${innerId}`} className="relative">
|
|
64
|
+
<div className="relative flex items-start space-x-3">
|
|
65
|
+
<Fragment>
|
|
66
|
+
{item.avatar ? (<div>
|
|
67
|
+
<div className="relative px-list-avatar-px">
|
|
68
|
+
<button type="button" onClick={setter} aria-label={translations.listOpenDetails(String(item.title))} className="flex size-10 items-center justify-center ring-primary">
|
|
69
|
+
{item.avatar}
|
|
70
|
+
</button>
|
|
71
|
+
</div>
|
|
72
|
+
</div>) : null}
|
|
73
|
+
<div className="min-w-0 flex-1 py-list-body-py text-foreground">
|
|
74
|
+
<div className="flex flex-row flex-nowrap justify-between gap-list-item-gap">
|
|
75
|
+
<button type="button" onClick={setter} aria-label={translations.listOpenDetails(String(item.title))} className="cursor-pointer text-left transition-all ease-out hover:text-primary">
|
|
76
|
+
<h3>{item.title}</h3>
|
|
77
|
+
<p className="text-typography-sm leading-snug text-secondary">{item.description}</p>
|
|
78
|
+
</button>
|
|
79
|
+
{Leading ? <Leading open={setter}/> : null}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</Fragment>
|
|
83
|
+
</div>
|
|
84
|
+
</motion.div>
|
|
85
|
+
</motion.li>);
|
|
86
|
+
})}
|
|
87
|
+
</ul>
|
|
88
|
+
</Fragment>);
|
|
89
|
+
};
|
|
90
|
+
export const AnimatedListItem = (props) => <Fragment>{props.children}</Fragment>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
import { type PropsWithChildren } from "react";
|
|
3
|
+
import { Label } from "../../types";
|
|
4
|
+
declare const variants: (props?: ({
|
|
5
|
+
theme?: "warn" | "secondary" | "info" | "danger" | "success" | "muted" | "default" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
type NotificationOptions = Partial<{
|
|
8
|
+
id: string;
|
|
9
|
+
title: Label;
|
|
10
|
+
timeout: number;
|
|
11
|
+
closable: boolean;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
theme: VariantProps<typeof variants>["theme"];
|
|
14
|
+
}>;
|
|
15
|
+
type NotificationSubscriber = {
|
|
16
|
+
close: () => void;
|
|
17
|
+
clear: () => void;
|
|
18
|
+
};
|
|
19
|
+
type ContextFunction = (description: Label, args?: NotificationOptions) => NotificationSubscriber;
|
|
20
|
+
export declare const useNotification: () => ContextFunction;
|
|
21
|
+
export type NotificationProps = Partial<{
|
|
22
|
+
max: number;
|
|
23
|
+
timeout: number;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function Notifications({ children, max, timeout }: PropsWithChildren<NotificationProps>): import("react").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/components/display/notifications.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAiB,KAAK,iBAAiB,EAAmC,MAAM,OAAO,CAAC;AAG/F,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,QAAA,MAAM,QAAQ;;8EAgBb,CAAC;AAYF,KAAK,mBAAmB,GAAG,OAAO,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;CACjD,CAAC,CAAC;AAQH,KAAK,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEvE,KAAK,eAAe,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,mBAAmB,KAAK,sBAAsB,CAAC;AAMlG,eAAO,MAAM,eAAe,uBAAwC,CAAC;AAoDrE,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AA0F1E,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAO,EAAE,OAAc,EAAE,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,+BAMxG"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Toast as Base } from "@base-ui/react/toast";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { XIcon, CheckCircleIcon, WarningIcon, InfoIcon, CircleNotchIcon } from "@phosphor-icons/react";
|
|
5
|
+
import { AnimatePresence, motion } from "motion/react";
|
|
6
|
+
import { createContext, useCallback, useContext, useRef } from "react";
|
|
7
|
+
import { useHover } from "../../hooks/use-hover";
|
|
8
|
+
import { css } from "../../lib/dom";
|
|
9
|
+
const variants = cva("shadow-notification text-typography-sm relative isolate z-tooltip flex w-full flex-col overflow-hidden rounded-notification-radius border bg-card-background backdrop-blur-md transition-all duration-300", {
|
|
10
|
+
variants: {
|
|
11
|
+
theme: {
|
|
12
|
+
default: "border-card-border text-foreground shadow-black/5",
|
|
13
|
+
info: "border-alert-info-border bg-alert-info-bg text-alert-info-text",
|
|
14
|
+
warn: "border-alert-warn-border bg-alert-warn-bg text-alert-warn-text",
|
|
15
|
+
muted: "border-alert-muted-border bg-alert-muted-bg text-alert-muted-text",
|
|
16
|
+
danger: "border-alert-danger-border bg-alert-danger-bg text-alert-danger-text",
|
|
17
|
+
success: "border-alert-success-border bg-alert-success-bg text-alert-success-text",
|
|
18
|
+
secondary: "border-alert-secondary-border bg-alert-secondary-bg text-alert-secondary-text",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
defaultVariants: { theme: "default" },
|
|
22
|
+
});
|
|
23
|
+
const themeIcons = {
|
|
24
|
+
default: InfoIcon,
|
|
25
|
+
info: InfoIcon,
|
|
26
|
+
warn: WarningIcon,
|
|
27
|
+
muted: InfoIcon,
|
|
28
|
+
danger: WarningIcon,
|
|
29
|
+
success: CheckCircleIcon,
|
|
30
|
+
secondary: InfoIcon,
|
|
31
|
+
};
|
|
32
|
+
const NotificationContext = createContext(() => {
|
|
33
|
+
throw new Error("Not implemented");
|
|
34
|
+
});
|
|
35
|
+
export const useNotification = () => useContext(NotificationContext);
|
|
36
|
+
function Notification(props) {
|
|
37
|
+
const closable = props.toast.data?.closable ?? true;
|
|
38
|
+
const loading = props.toast.data?.loading ?? false;
|
|
39
|
+
const theme = props.toast.data?.theme || "default";
|
|
40
|
+
const className = variants({ theme });
|
|
41
|
+
const Icon = loading ? CircleNotchIcon : themeIcons[theme] || InfoIcon;
|
|
42
|
+
return (<Base.Root toast={props.toast} swipeDirection="right">
|
|
43
|
+
<motion.li layout initial={{ opacity: 0, y: -20, scale: 0.95 }} animate={{ opacity: 1, y: 0, scale: 1 }} exit={{ opacity: 0, scale: 0.9, y: -20, transition: { duration: 0.2 } }} transition={{
|
|
44
|
+
type: "spring",
|
|
45
|
+
damping: 25,
|
|
46
|
+
stiffness: 300,
|
|
47
|
+
}} className="pointer-events-auto w-full list-none">
|
|
48
|
+
<Base.Content className={className}>
|
|
49
|
+
<div className="flex items-start gap-notification-gap p-notification-p">
|
|
50
|
+
<div className={css("mt-0.5 flex size-4 shrink-0 items-center justify-center opacity-80", loading && "animate-spin")}>
|
|
51
|
+
<Icon aria-hidden="true"/>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<div className="flex flex-1 flex-col gap-notification-inner-gap overflow-hidden">
|
|
55
|
+
{props.toast.title ? <Base.Title className="select-text truncate font-semibold leading-tight tracking-tight"/> : null}
|
|
56
|
+
<Base.Description className="text-typography-xs line-clamp-2 select-text font-medium leading-relaxed opacity-90"/>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
{closable && !loading ? (<Base.Close className="-mr-1 -mt-1 shrink-0 rounded-notification-close-radius p-notification-close-p text-foreground/40 transition hover:bg-foreground/10 hover:text-foreground">
|
|
60
|
+
<span className="flex size-3.5 items-center justify-center">
|
|
61
|
+
<XIcon aria-hidden="true"/>
|
|
62
|
+
</span>
|
|
63
|
+
</Base.Close>) : null}
|
|
64
|
+
</div>
|
|
65
|
+
</Base.Content>
|
|
66
|
+
</motion.li>
|
|
67
|
+
</Base.Root>);
|
|
68
|
+
}
|
|
69
|
+
function NotificationsViewport({ max = 5 }) {
|
|
70
|
+
const ref = useRef(null);
|
|
71
|
+
const hover = useHover(ref);
|
|
72
|
+
const toastManager = Base.useToastManager();
|
|
73
|
+
const allToasts = max ? toastManager.toasts.slice(0, max) : toastManager.toasts;
|
|
74
|
+
const visibleToasts = hover ? allToasts : allToasts.slice(0, 3);
|
|
75
|
+
const hiddenCount = allToasts.length - visibleToasts.length;
|
|
76
|
+
return (<Base.Viewport ref={ref} className="pointer-events-none fixed left-1/2 top-notification-list-top z-floating flex w-full max-w-notification-list-max-w -translate-x-1/2 flex-col gap-notification-list-gap overflow-visible outline-none">
|
|
77
|
+
<AnimatePresence mode="popLayout" initial={false}>
|
|
78
|
+
{visibleToasts.map((toast) => (<Notification key={toast.id} toast={toast}/>))}
|
|
79
|
+
</AnimatePresence>
|
|
80
|
+
|
|
81
|
+
{!hover && hiddenCount > 0 && (<motion.div layout initial={{ opacity: 0, y: -10 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -10 }} className="shadow-notification pointer-events-auto cursor-default self-center rounded-full border border-card-border bg-card-background/80 px-notification-badge-px py-notification-badge-py text-notification-badge-text font-bold uppercase tracking-wider text-foreground/50 backdrop-blur transition-all hover:bg-card-background hover:text-foreground/80">
|
|
82
|
+
+{hiddenCount} more
|
|
83
|
+
</motion.div>)}
|
|
84
|
+
</Base.Viewport>);
|
|
85
|
+
}
|
|
86
|
+
function NotificationsInner({ children, max = 5 }) {
|
|
87
|
+
const toastManager = Base.useToastManager();
|
|
88
|
+
const clear = useCallback(() => {
|
|
89
|
+
toastManager.toasts.forEach((t) => toastManager.close(t.id));
|
|
90
|
+
}, [toastManager]);
|
|
91
|
+
const notify = useCallback((description, args) => {
|
|
92
|
+
const data = {
|
|
93
|
+
theme: args?.theme,
|
|
94
|
+
closable: args?.closable,
|
|
95
|
+
loading: args?.loading,
|
|
96
|
+
};
|
|
97
|
+
if (args?.id) {
|
|
98
|
+
const existing = toastManager.toasts.find((t) => t.id === args.id);
|
|
99
|
+
if (existing) {
|
|
100
|
+
toastManager.update(args.id, {
|
|
101
|
+
description,
|
|
102
|
+
title: args.title,
|
|
103
|
+
timeout: args.timeout,
|
|
104
|
+
data,
|
|
105
|
+
});
|
|
106
|
+
return { close: () => toastManager.close(args.id), clear };
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const id = toastManager.add({
|
|
110
|
+
description,
|
|
111
|
+
id: args?.id,
|
|
112
|
+
title: args?.title,
|
|
113
|
+
timeout: args?.timeout,
|
|
114
|
+
data,
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
close: () => toastManager.close(id),
|
|
118
|
+
clear,
|
|
119
|
+
};
|
|
120
|
+
}, [toastManager, clear]);
|
|
121
|
+
return (<NotificationContext.Provider value={notify}>
|
|
122
|
+
{children}
|
|
123
|
+
<Base.Portal>
|
|
124
|
+
<NotificationsViewport max={max}/>
|
|
125
|
+
</Base.Portal>
|
|
126
|
+
</NotificationContext.Provider>);
|
|
127
|
+
}
|
|
128
|
+
export function Notifications({ children, max = 5, timeout = 5000 }) {
|
|
129
|
+
return (<Base.Provider limit={max} timeout={timeout}>
|
|
130
|
+
<NotificationsInner max={max}>{children}</NotificationsInner>
|
|
131
|
+
</Base.Provider>);
|
|
132
|
+
}
|