@arolariu/components 0.5.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{changelog.md → CHANGELOG.md} +25 -0
- package/CONTRIBUTING.md +344 -265
- package/DEBUGGING.md +185 -103
- package/EXAMPLES.md +470 -345
- package/{readme.md → README.md} +306 -203
- package/dist/components/ui/accordion.d.ts +157 -5
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +100 -22
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/accordion.module.js +12 -0
- package/dist/components/ui/accordion.module.js.map +1 -0
- package/dist/components/ui/accordion_module.css +72 -0
- package/dist/components/ui/accordion_module.css.map +1 -0
- package/dist/components/ui/alert-dialog.d.ts +321 -18
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +145 -52
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/alert-dialog.module.js +13 -0
- package/dist/components/ui/alert-dialog.module.js.map +1 -0
- package/dist/components/ui/alert-dialog_module.css +89 -0
- package/dist/components/ui/alert-dialog_module.css.map +1 -0
- package/dist/components/ui/alert.d.ts +109 -6
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/alert.js +12 -21
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/alert.module.js +11 -0
- package/dist/components/ui/alert.module.js.map +1 -0
- package/dist/components/ui/alert_module.css +59 -0
- package/dist/components/ui/alert_module.css.map +1 -0
- package/dist/components/ui/aspect-ratio.d.ts +24 -2
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui/aspect-ratio.js +14 -3
- package/dist/components/ui/aspect-ratio.js.map +1 -1
- package/dist/components/ui/aspect-ratio.module.js +7 -0
- package/dist/components/ui/aspect-ratio.module.js.map +1 -0
- package/dist/components/ui/aspect-ratio_module.css +10 -0
- package/dist/components/ui/aspect-ratio_module.css.map +1 -0
- package/dist/components/ui/async-boundary.js +17 -0
- package/dist/components/ui/async-boundary.js.map +1 -0
- package/dist/components/ui/avatar.d.ts +97 -4
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/avatar.js +50 -21
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/avatar.module.js +9 -0
- package/dist/components/ui/avatar.module.js.map +1 -0
- package/dist/components/ui/avatar_module.css +35 -0
- package/dist/components/ui/avatar_module.css.map +1 -0
- package/dist/components/ui/background-beams.d.ts +21 -3
- package/dist/components/ui/background-beams.d.ts.map +1 -1
- package/dist/components/ui/background-beams.js +22 -11
- package/dist/components/ui/background-beams.js.map +1 -1
- package/dist/components/ui/background-beams.module.js +8 -0
- package/dist/components/ui/background-beams.module.js.map +1 -0
- package/dist/components/ui/background-beams_module.css +22 -0
- package/dist/components/ui/background-beams_module.css.map +1 -0
- package/dist/components/ui/badge.d.ts +79 -6
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/badge.js +19 -23
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/badge.module.js +11 -0
- package/dist/components/ui/badge.module.js.map +1 -0
- package/dist/components/ui/badge_module.css +63 -0
- package/dist/components/ui/badge_module.css.map +1 -0
- package/dist/components/ui/breadcrumb.d.ts +158 -13
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.js +39 -30
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/breadcrumb.module.js +14 -0
- package/dist/components/ui/breadcrumb.module.js.map +1 -0
- package/dist/components/ui/breadcrumb_module.css +90 -0
- package/dist/components/ui/breadcrumb_module.css.map +1 -0
- package/dist/components/ui/bubble-background.d.ts +38 -10
- package/dist/components/ui/bubble-background.d.ts.map +1 -1
- package/dist/components/ui/bubble-background.js +33 -35
- package/dist/components/ui/bubble-background.js.map +1 -1
- package/dist/components/ui/bubble-background.module.js +20 -0
- package/dist/components/ui/bubble-background.module.js.map +1 -0
- package/dist/components/ui/bubble-background_module.css +99 -0
- package/dist/components/ui/bubble-background_module.css.map +1 -0
- package/dist/components/ui/button-group.d.ts +88 -8
- package/dist/components/ui/button-group.d.ts.map +1 -1
- package/dist/components/ui/button-group.js +35 -32
- package/dist/components/ui/button-group.js.map +1 -1
- package/dist/components/ui/button-group.module.js +11 -0
- package/dist/components/ui/button-group.module.js.map +1 -0
- package/dist/components/ui/button-group_module.css +79 -0
- package/dist/components/ui/button-group_module.css.map +1 -0
- package/dist/components/ui/button.d.ts +82 -7
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +69 -34
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/button.module.js +17 -0
- package/dist/components/ui/button.module.js.map +1 -0
- package/dist/components/ui/button_module.css +137 -0
- package/dist/components/ui/button_module.css.map +1 -0
- package/dist/components/ui/calendar.d.ts +39 -5
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +72 -61
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/calendar.module.js +35 -0
- package/dist/components/ui/calendar.module.js.map +1 -0
- package/dist/components/ui/calendar_module.css +245 -0
- package/dist/components/ui/calendar_module.css.map +1 -0
- package/dist/components/ui/card-skeleton.js +41 -0
- package/dist/components/ui/card-skeleton.js.map +1 -0
- package/dist/components/ui/card-skeleton.module.js +15 -0
- package/dist/components/ui/card-skeleton.module.js.map +1 -0
- package/dist/components/ui/card-skeleton_module.css +54 -0
- package/dist/components/ui/card-skeleton_module.css.map +1 -0
- package/dist/components/ui/card.d.ts +162 -7
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +13 -13
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/card.module.js +13 -0
- package/dist/components/ui/card.module.js.map +1 -0
- package/dist/components/ui/card_module.css +43 -0
- package/dist/components/ui/card_module.css.map +1 -0
- package/dist/components/ui/carousel.d.ts +127 -3
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +63 -36
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/carousel.module.js +17 -0
- package/dist/components/ui/carousel.module.js.map +1 -0
- package/dist/components/ui/carousel_module.css +82 -0
- package/dist/components/ui/carousel_module.css.map +1 -0
- package/dist/components/ui/chart.d.ts +323 -13
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/chart.js +158 -53
- package/dist/components/ui/chart.js.map +1 -1
- package/dist/components/ui/chart.module.js +27 -0
- package/dist/components/ui/chart.module.js.map +1 -0
- package/dist/components/ui/chart_module.css +159 -0
- package/dist/components/ui/chart_module.css.map +1 -0
- package/dist/components/ui/checkbox-group.d.ts +31 -0
- package/dist/components/ui/checkbox-group.d.ts.map +1 -0
- package/dist/components/ui/checkbox-group.js +25 -0
- package/dist/components/ui/checkbox-group.js.map +1 -0
- package/dist/components/ui/checkbox-group.module.js +7 -0
- package/dist/components/ui/checkbox-group.module.js.map +1 -0
- package/dist/components/ui/checkbox-group_module.css +11 -0
- package/dist/components/ui/checkbox-group_module.css.map +1 -0
- package/dist/components/ui/checkbox.d.ts +33 -2
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +37 -12
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/checkbox.module.js +8 -0
- package/dist/components/ui/checkbox.module.js.map +1 -0
- package/dist/components/ui/checkbox_module.css +45 -0
- package/dist/components/ui/checkbox_module.css.map +1 -0
- package/dist/components/ui/collapsible.d.ts +87 -3
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +46 -32
- package/dist/components/ui/collapsible.js.map +1 -1
- package/dist/components/ui/collapsible.module.js +8 -0
- package/dist/components/ui/collapsible.module.js.map +1 -0
- package/dist/components/ui/collapsible_module.css +26 -0
- package/dist/components/ui/collapsible_module.css.map +1 -0
- package/dist/components/ui/command.d.ts +284 -51
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/command.js +387 -51
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/command.module.js +20 -0
- package/dist/components/ui/command.module.js.map +1 -0
- package/dist/components/ui/command_module.css +194 -0
- package/dist/components/ui/command_module.css.map +1 -0
- package/dist/components/ui/context-menu.d.ts +414 -21
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/context-menu.js +190 -68
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/context-menu.module.js +19 -0
- package/dist/components/ui/context-menu.module.js.map +1 -0
- package/dist/components/ui/context-menu_module.css +114 -0
- package/dist/components/ui/context-menu_module.css.map +1 -0
- package/dist/components/ui/copy-button.d.ts +41 -0
- package/dist/components/ui/copy-button.d.ts.map +1 -0
- package/dist/components/ui/copy-button.js +51 -0
- package/dist/components/ui/copy-button.js.map +1 -0
- package/dist/components/ui/copy-button.module.js +8 -0
- package/dist/components/ui/copy-button.module.js.map +1 -0
- package/dist/components/ui/copy-button_module.css +37 -0
- package/dist/components/ui/copy-button_module.css.map +1 -0
- package/dist/components/ui/counting-number.d.ts +28 -2
- package/dist/components/ui/counting-number.d.ts.map +1 -1
- package/dist/components/ui/counting-number.js +31 -27
- package/dist/components/ui/counting-number.js.map +1 -1
- package/dist/components/ui/counting-number.module.js +7 -0
- package/dist/components/ui/counting-number.module.js.map +1 -0
- package/dist/components/ui/counting-number_module.css +7 -0
- package/dist/components/ui/counting-number_module.css.map +1 -0
- package/dist/components/ui/dialog.d.ts +287 -17
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +129 -52
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/dialog.module.js +13 -0
- package/dist/components/ui/dialog.module.js.map +1 -0
- package/dist/components/ui/dialog_module.css +114 -0
- package/dist/components/ui/dialog_module.css.map +1 -0
- package/dist/components/ui/dot-background.d.ts +25 -35
- package/dist/components/ui/dot-background.d.ts.map +1 -1
- package/dist/components/ui/dot-background.js +31 -22
- package/dist/components/ui/dot-background.js.map +1 -1
- package/dist/components/ui/dot-background.module.js +8 -0
- package/dist/components/ui/dot-background.module.js.map +1 -0
- package/dist/components/ui/dot-background_module.css +15 -0
- package/dist/components/ui/dot-background_module.css.map +1 -0
- package/dist/components/ui/drawer.d.ts +287 -18
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +117 -40
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/drawer.module.js +14 -0
- package/dist/components/ui/drawer.module.js.map +1 -0
- package/dist/components/ui/drawer_module.css +86 -0
- package/dist/components/ui/drawer_module.css.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +414 -21
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +189 -68
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/dropdown-menu.module.js +19 -0
- package/dist/components/ui/dropdown-menu.module.js.map +1 -0
- package/dist/components/ui/dropdown-menu_module.css +114 -0
- package/dist/components/ui/dropdown-menu_module.css.map +1 -0
- package/dist/components/ui/dropdrawer.d.ts +313 -17
- package/dist/components/ui/dropdrawer.d.ts.map +1 -1
- package/dist/components/ui/dropdrawer.js +423 -159
- package/dist/components/ui/dropdrawer.js.map +1 -1
- package/dist/components/ui/dropdrawer.module.js +43 -0
- package/dist/components/ui/dropdrawer.module.js.map +1 -0
- package/dist/components/ui/dropdrawer_module.css +307 -0
- package/dist/components/ui/dropdrawer_module.css.map +1 -0
- package/dist/components/ui/empty.d.ts +129 -10
- package/dist/components/ui/empty.d.ts.map +1 -1
- package/dist/components/ui/empty.js +32 -47
- package/dist/components/ui/empty.js.map +1 -1
- package/dist/components/ui/empty.module.js +13 -0
- package/dist/components/ui/empty.module.js.map +1 -0
- package/dist/components/ui/empty_module.css +85 -0
- package/dist/components/ui/empty_module.css.map +1 -0
- package/dist/components/ui/error-boundary.js +61 -0
- package/dist/components/ui/error-boundary.js.map +1 -0
- package/dist/components/ui/error-boundary.module.js +10 -0
- package/dist/components/ui/error-boundary.module.js.map +1 -0
- package/dist/components/ui/error-boundary_module.css +41 -0
- package/dist/components/ui/error-boundary_module.css.map +1 -0
- package/dist/components/ui/field.d.ts +222 -23
- package/dist/components/ui/field.d.ts.map +1 -1
- package/dist/components/ui/field.js +76 -86
- package/dist/components/ui/field.js.map +1 -1
- package/dist/components/ui/field.module.js +24 -0
- package/dist/components/ui/field.module.js.map +1 -0
- package/dist/components/ui/field_module.css +185 -0
- package/dist/components/ui/field_module.css.map +1 -0
- package/dist/components/ui/fireworks-background.d.ts +27 -3
- package/dist/components/ui/fireworks-background.d.ts.map +1 -1
- package/dist/components/ui/fireworks-background.js +36 -35
- package/dist/components/ui/fireworks-background.js.map +1 -1
- package/dist/components/ui/fireworks-background.module.js +8 -0
- package/dist/components/ui/fireworks-background.module.js.map +1 -0
- package/dist/components/ui/fireworks-background_module.css +17 -0
- package/dist/components/ui/fireworks-background_module.css.map +1 -0
- package/dist/components/ui/flip-button.d.ts +27 -3
- package/dist/components/ui/flip-button.d.ts.map +1 -1
- package/dist/components/ui/flip-button.js +27 -17
- package/dist/components/ui/flip-button.js.map +1 -1
- package/dist/components/ui/flip-button.module.js +11 -0
- package/dist/components/ui/flip-button.module.js.map +1 -0
- package/dist/components/ui/flip-button_module.css +47 -0
- package/dist/components/ui/flip-button_module.css.map +1 -0
- package/dist/components/ui/focus-scope.js +70 -0
- package/dist/components/ui/focus-scope.js.map +1 -0
- package/dist/components/ui/focus-scope.module.js +7 -0
- package/dist/components/ui/focus-scope.module.js.map +1 -0
- package/dist/components/ui/focus-scope_module.css +6 -0
- package/dist/components/ui/focus-scope_module.css.map +1 -0
- package/dist/components/ui/form-skeleton.js +32 -0
- package/dist/components/ui/form-skeleton.js.map +1 -0
- package/dist/components/ui/form-skeleton.module.js +11 -0
- package/dist/components/ui/form-skeleton.module.js.map +1 -0
- package/dist/components/ui/form-skeleton_module.css +30 -0
- package/dist/components/ui/form-skeleton_module.css.map +1 -0
- package/dist/components/ui/form.d.ts +143 -13
- package/dist/components/ui/form.d.ts.map +1 -1
- package/dist/components/ui/form.js +55 -21
- package/dist/components/ui/form.js.map +1 -1
- package/dist/components/ui/form.module.js +10 -0
- package/dist/components/ui/form.module.js.map +1 -0
- package/dist/components/ui/form_module.css +22 -0
- package/dist/components/ui/form_module.css.map +1 -0
- package/dist/components/ui/gradient-background.d.ts +21 -3
- package/dist/components/ui/gradient-background.d.ts.map +1 -1
- package/dist/components/ui/gradient-background.js +8 -4
- package/dist/components/ui/gradient-background.js.map +1 -1
- package/dist/components/ui/gradient-background.module.js +7 -0
- package/dist/components/ui/gradient-background.module.js.map +1 -0
- package/dist/components/ui/gradient-background_module.css +9 -0
- package/dist/components/ui/gradient-background_module.css.map +1 -0
- package/dist/components/ui/gradient-text.d.ts +23 -2
- package/dist/components/ui/gradient-text.d.ts.map +1 -1
- package/dist/components/ui/gradient-text.js +8 -6
- package/dist/components/ui/gradient-text.js.map +1 -1
- package/dist/components/ui/gradient-text.module.js +9 -0
- package/dist/components/ui/gradient-text.module.js.map +1 -0
- package/dist/components/ui/gradient-text_module.css +24 -0
- package/dist/components/ui/gradient-text_module.css.map +1 -0
- package/dist/components/ui/highlight-text.d.ts +24 -2
- package/dist/components/ui/highlight-text.d.ts.map +1 -1
- package/dist/components/ui/highlight-text.js +7 -10
- package/dist/components/ui/highlight-text.js.map +1 -1
- package/dist/components/ui/highlight-text.module.js +7 -0
- package/dist/components/ui/highlight-text.module.js.map +1 -0
- package/dist/components/ui/highlight-text_module.css +16 -0
- package/dist/components/ui/highlight-text_module.css.map +1 -0
- package/dist/components/ui/hole-background.d.ts +23 -2
- package/dist/components/ui/hole-background.d.ts.map +1 -1
- package/dist/components/ui/hole-background.js +155 -118
- package/dist/components/ui/hole-background.js.map +1 -1
- package/dist/components/ui/hole-background.module.js +10 -0
- package/dist/components/ui/hole-background.module.js.map +1 -0
- package/dist/components/ui/hole-background_module.css +85 -0
- package/dist/components/ui/hole-background_module.css.map +1 -0
- package/dist/components/ui/hover-card.d.ts +85 -4
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/hover-card.js +52 -10
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/hover-card.module.js +8 -0
- package/dist/components/ui/hover-card.module.js.map +1 -0
- package/dist/components/ui/hover-card_module.css +23 -0
- package/dist/components/ui/hover-card_module.css.map +1 -0
- package/dist/components/ui/input-group.d.ts +132 -13
- package/dist/components/ui/input-group.d.ts.map +1 -1
- package/dist/components/ui/input-group.js +62 -66
- package/dist/components/ui/input-group.js.map +1 -1
- package/dist/components/ui/input-group.module.js +20 -0
- package/dist/components/ui/input-group.module.js.map +1 -0
- package/dist/components/ui/input-group_module.css +150 -0
- package/dist/components/ui/input-group_module.css.map +1 -0
- package/dist/components/ui/input-otp.d.ts +110 -30
- package/dist/components/ui/input-otp.d.ts.map +1 -1
- package/dist/components/ui/input-otp.js +24 -15
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input-otp.module.js +17 -0
- package/dist/components/ui/input-otp.module.js.map +1 -0
- package/dist/components/ui/input-otp_module.css +89 -0
- package/dist/components/ui/input-otp_module.css.map +1 -0
- package/dist/components/ui/input.d.ts +31 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +21 -8
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/input.module.js +7 -0
- package/dist/components/ui/input.module.js.map +1 -0
- package/dist/components/ui/input_module.css +40 -0
- package/dist/components/ui/input_module.css.map +1 -0
- package/dist/components/ui/item.d.ts +221 -19
- package/dist/components/ui/item.d.ts.map +1 -1
- package/dist/components/ui/item.js +66 -90
- package/dist/components/ui/item.js.map +1 -1
- package/dist/components/ui/item.module.js +22 -0
- package/dist/components/ui/item.module.js.map +1 -0
- package/dist/components/ui/item_module.css +143 -0
- package/dist/components/ui/item_module.css.map +1 -0
- package/dist/components/ui/kbd.d.ts +43 -2
- package/dist/components/ui/kbd.d.ts.map +1 -1
- package/dist/components/ui/kbd.js +12 -12
- package/dist/components/ui/kbd.js.map +1 -1
- package/dist/components/ui/kbd.module.js +8 -0
- package/dist/components/ui/kbd.module.js.map +1 -0
- package/dist/components/ui/kbd_module.css +35 -0
- package/dist/components/ui/kbd_module.css.map +1 -0
- package/dist/components/ui/label.d.ts +30 -3
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/label.js +7 -8
- package/dist/components/ui/label.js.map +1 -1
- package/dist/components/ui/label.module.js +7 -0
- package/dist/components/ui/label.module.js.map +1 -0
- package/dist/components/ui/label_module.css +17 -0
- package/dist/components/ui/label_module.css.map +1 -0
- package/dist/components/ui/list-skeleton.js +35 -0
- package/dist/components/ui/list-skeleton.js.map +1 -0
- package/dist/components/ui/list-skeleton.module.js +12 -0
- package/dist/components/ui/list-skeleton.module.js.map +1 -0
- package/dist/components/ui/list-skeleton_module.css +39 -0
- package/dist/components/ui/list-skeleton_module.css.map +1 -0
- package/dist/components/ui/loading-overlay.js +21 -0
- package/dist/components/ui/loading-overlay.js.map +1 -0
- package/dist/components/ui/loading-overlay.module.js +9 -0
- package/dist/components/ui/loading-overlay.module.js.map +1 -0
- package/dist/components/ui/loading-overlay_module.css +22 -0
- package/dist/components/ui/loading-overlay_module.css.map +1 -0
- package/dist/components/ui/menubar.d.ts +422 -22
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +199 -100
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/menubar.module.js +21 -0
- package/dist/components/ui/menubar.module.js.map +1 -0
- package/dist/components/ui/menubar_module.css +145 -0
- package/dist/components/ui/menubar_module.css.map +1 -0
- package/dist/components/ui/meter.d.ts +101 -0
- package/dist/components/ui/meter.d.ts.map +1 -0
- package/dist/components/ui/meter.js +71 -0
- package/dist/components/ui/meter.js.map +1 -0
- package/dist/components/ui/meter.module.js +10 -0
- package/dist/components/ui/meter.module.js.map +1 -0
- package/dist/components/ui/meter_module.css +31 -0
- package/dist/components/ui/meter_module.css.map +1 -0
- package/dist/components/ui/navigation-menu.d.ts +242 -11
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +135 -49
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/navigation-menu.module.js +18 -0
- package/dist/components/ui/navigation-menu.module.js.map +1 -0
- package/dist/components/ui/navigation-menu_module.css +112 -0
- package/dist/components/ui/navigation-menu_module.css.map +1 -0
- package/dist/components/ui/number-field.d.ts +144 -0
- package/dist/components/ui/number-field.d.ts.map +1 -0
- package/dist/components/ui/number-field.js +111 -0
- package/dist/components/ui/number-field.js.map +1 -0
- package/dist/components/ui/number-field.module.js +15 -0
- package/dist/components/ui/number-field.module.js.map +1 -0
- package/dist/components/ui/number-field_module.css +125 -0
- package/dist/components/ui/number-field_module.css.map +1 -0
- package/dist/components/ui/pagination.d.ts +150 -24
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +41 -38
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/pagination.module.js +14 -0
- package/dist/components/ui/pagination.module.js.map +1 -0
- package/dist/components/ui/pagination_module.css +66 -0
- package/dist/components/ui/pagination_module.css.map +1 -0
- package/dist/components/ui/popover.d.ts +133 -5
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +68 -14
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/popover.module.js +9 -0
- package/dist/components/ui/popover.module.js.map +1 -0
- package/dist/components/ui/popover_module.css +28 -0
- package/dist/components/ui/popover_module.css.map +1 -0
- package/dist/components/ui/progress.d.ts +34 -2
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +22 -14
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/progress.module.js +8 -0
- package/dist/components/ui/progress.module.js.map +1 -0
- package/dist/components/ui/progress_module.css +20 -0
- package/dist/components/ui/progress_module.css.map +1 -0
- package/dist/components/ui/radio-group.d.ts +44 -3
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +38 -16
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/radio-group.module.js +10 -0
- package/dist/components/ui/radio-group.module.js.map +1 -0
- package/dist/components/ui/radio-group_module.css +44 -0
- package/dist/components/ui/radio-group_module.css.map +1 -0
- package/dist/components/ui/resizable.d.ts +79 -6
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +23 -13
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/resizable.module.js +10 -0
- package/dist/components/ui/resizable.module.js.map +1 -0
- package/dist/components/ui/resizable_module.css +70 -0
- package/dist/components/ui/resizable_module.css.map +1 -0
- package/dist/components/ui/ripple-button.d.ts +23 -2
- package/dist/components/ui/ripple-button.d.ts.map +1 -1
- package/dist/components/ui/ripple-button.js +26 -11
- package/dist/components/ui/ripple-button.js.map +1 -1
- package/dist/components/ui/ripple-button.module.js +9 -0
- package/dist/components/ui/ripple-button.module.js.map +1 -0
- package/dist/components/ui/ripple-button_module.css +38 -0
- package/dist/components/ui/ripple-button_module.css.map +1 -0
- package/dist/components/ui/scratcher.d.ts +25 -2
- package/dist/components/ui/scratcher.d.ts.map +1 -1
- package/dist/components/ui/scratcher.js +85 -87
- package/dist/components/ui/scratcher.js.map +1 -1
- package/dist/components/ui/scratcher.module.js +8 -0
- package/dist/components/ui/scratcher.module.js.map +1 -0
- package/dist/components/ui/scratcher_module.css +13 -0
- package/dist/components/ui/scratcher_module.css.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +46 -3
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.js +44 -19
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/scroll-area.module.js +14 -0
- package/dist/components/ui/scroll-area.module.js.map +1 -0
- package/dist/components/ui/scroll-area_module.css +51 -0
- package/dist/components/ui/scroll-area_module.css.map +1 -0
- package/dist/components/ui/select.d.ts +269 -11
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +152 -67
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/select.module.js +20 -0
- package/dist/components/ui/select.module.js.map +1 -0
- package/dist/components/ui/select_module.css +134 -0
- package/dist/components/ui/select_module.css.map +1 -0
- package/dist/components/ui/separator.d.ts +36 -2
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/separator.js +20 -10
- package/dist/components/ui/separator.js.map +1 -1
- package/dist/components/ui/separator.module.js +9 -0
- package/dist/components/ui/separator.module.js.map +1 -0
- package/dist/components/ui/separator_module.css +17 -0
- package/dist/components/ui/separator_module.css.map +1 -0
- package/dist/components/ui/sheet.d.ts +297 -23
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +121 -63
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sheet.module.js +18 -0
- package/dist/components/ui/sheet.module.js.map +1 -0
- package/dist/components/ui/sheet_module.css +136 -0
- package/dist/components/ui/sheet_module.css.map +1 -0
- package/dist/components/ui/sidebar.d.ts +491 -23
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +214 -143
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/sidebar.module.js +50 -0
- package/dist/components/ui/sidebar.module.js.map +1 -0
- package/dist/components/ui/sidebar_module.css +569 -0
- package/dist/components/ui/sidebar_module.css.map +1 -0
- package/dist/components/ui/skeleton.d.ts +30 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js +7 -7
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/skeleton.module.js +8 -0
- package/dist/components/ui/skeleton.module.js.map +1 -0
- package/dist/components/ui/skeleton_module.css +18 -0
- package/dist/components/ui/skeleton_module.css.map +1 -0
- package/dist/components/ui/slider.d.ts +48 -2
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +44 -17
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/slider.module.js +11 -0
- package/dist/components/ui/slider.module.js.map +1 -0
- package/dist/components/ui/slider_module.css +55 -0
- package/dist/components/ui/slider_module.css.map +1 -0
- package/dist/components/ui/sonner.d.ts +137 -4
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +450 -18
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/sonner.module.js +34 -0
- package/dist/components/ui/sonner.module.js.map +1 -0
- package/dist/components/ui/sonner_module.css +233 -0
- package/dist/components/ui/sonner_module.css.map +1 -0
- package/dist/components/ui/spinner.d.ts +20 -1
- package/dist/components/ui/spinner.d.ts.map +1 -1
- package/dist/components/ui/spinner.js +29 -11
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/spinner.module.js +10 -0
- package/dist/components/ui/spinner.module.js.map +1 -0
- package/dist/components/ui/spinner_module.css +28 -0
- package/dist/components/ui/spinner_module.css.map +1 -0
- package/dist/components/ui/stepper.d.ts +48 -0
- package/dist/components/ui/stepper.d.ts.map +1 -0
- package/dist/components/ui/stepper.js +41 -0
- package/dist/components/ui/stepper.js.map +1 -0
- package/dist/components/ui/stepper.module.js +12 -0
- package/dist/components/ui/stepper.module.js.map +1 -0
- package/dist/components/ui/stepper_module.css +75 -0
- package/dist/components/ui/stepper_module.css.map +1 -0
- package/dist/components/ui/switch.d.ts +29 -2
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +21 -9
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/switch.module.js +8 -0
- package/dist/components/ui/switch.module.js.map +1 -0
- package/dist/components/ui/switch_module.css +45 -0
- package/dist/components/ui/switch_module.css.map +1 -0
- package/dist/components/ui/table-skeleton.js +34 -0
- package/dist/components/ui/table-skeleton.js.map +1 -0
- package/dist/components/ui/table-skeleton.module.js +11 -0
- package/dist/components/ui/table-skeleton.module.js.map +1 -0
- package/dist/components/ui/table-skeleton_module.css +32 -0
- package/dist/components/ui/table-skeleton_module.css.map +1 -0
- package/dist/components/ui/table.d.ts +170 -8
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/table.js +17 -17
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/table.module.js +15 -0
- package/dist/components/ui/table.module.js.map +1 -0
- package/dist/components/ui/table_module.css +71 -0
- package/dist/components/ui/table_module.css.map +1 -0
- package/dist/components/ui/tabs.d.ts +114 -5
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +71 -20
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/tabs.module.js +10 -0
- package/dist/components/ui/tabs.module.js.map +1 -0
- package/dist/components/ui/tabs_module.css +89 -0
- package/dist/components/ui/tabs_module.css.map +1 -0
- package/dist/components/ui/textarea.d.ts +24 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/textarea.js +2 -2
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/textarea.module.js +7 -0
- package/dist/components/ui/textarea.module.js.map +1 -0
- package/dist/components/ui/textarea_module.css +33 -0
- package/dist/components/ui/textarea_module.css.map +1 -0
- package/dist/components/ui/timeline.d.ts +111 -0
- package/dist/components/ui/timeline.d.ts.map +1 -0
- package/dist/components/ui/timeline.js +34 -0
- package/dist/components/ui/timeline.js.map +1 -0
- package/dist/components/ui/timeline.module.js +10 -0
- package/dist/components/ui/timeline.module.js.map +1 -0
- package/dist/components/ui/timeline_module.css +47 -0
- package/dist/components/ui/timeline_module.css.map +1 -0
- package/dist/components/ui/toggle-group.d.ts +81 -10
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +32 -23
- package/dist/components/ui/toggle-group.js.map +1 -1
- package/dist/components/ui/toggle-group.module.js +7 -0
- package/dist/components/ui/toggle-group.module.js.map +1 -0
- package/dist/components/ui/toggle-group_module.css +8 -0
- package/dist/components/ui/toggle-group_module.css.map +1 -0
- package/dist/components/ui/toggle.d.ts +60 -11
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +29 -29
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/components/ui/toggle.module.js +12 -0
- package/dist/components/ui/toggle.module.js.map +1 -0
- package/dist/components/ui/toggle_module.css +62 -0
- package/dist/components/ui/toggle_module.css.map +1 -0
- package/dist/components/ui/toolbar.d.ts +127 -0
- package/dist/components/ui/toolbar.d.ts.map +1 -0
- package/dist/components/ui/toolbar.js +85 -0
- package/dist/components/ui/toolbar.js.map +1 -0
- package/dist/components/ui/toolbar.module.js +12 -0
- package/dist/components/ui/toolbar.module.js.map +1 -0
- package/dist/components/ui/toolbar_module.css +115 -0
- package/dist/components/ui/toolbar_module.css.map +1 -0
- package/dist/components/ui/tooltip.d.ts +119 -5
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/tooltip.js +48 -13
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/tooltip.module.js +9 -0
- package/dist/components/ui/tooltip.module.js.map +1 -0
- package/dist/components/ui/tooltip_module.css +35 -0
- package/dist/components/ui/tooltip_module.css.map +1 -0
- package/dist/components/ui/typewriter.d.ts +48 -13
- package/dist/components/ui/typewriter.d.ts.map +1 -1
- package/dist/components/ui/typewriter.js +46 -49
- package/dist/components/ui/typewriter.js.map +1 -1
- package/dist/components/ui/typewriter.module.js +16 -0
- package/dist/components/ui/typewriter.module.js.map +1 -0
- package/dist/components/ui/typewriter_module.css +102 -0
- package/dist/components/ui/typewriter_module.css.map +1 -0
- package/dist/components/ui/visually-hidden.d.ts +38 -0
- package/dist/components/ui/visually-hidden.d.ts.map +1 -0
- package/dist/components/ui/visually-hidden.js +13 -0
- package/dist/components/ui/visually-hidden.js.map +1 -0
- package/dist/components/ui/visually-hidden.module.js +7 -0
- package/dist/components/ui/visually-hidden.module.js.map +1 -0
- package/dist/components/ui/visually-hidden_module.css +14 -0
- package/dist/components/ui/visually-hidden_module.css.map +1 -0
- package/dist/hooks/useAnnounce.js +46 -0
- package/dist/hooks/useAnnounce.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +17 -0
- package/dist/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/hooks/useBreakpoint.js +16 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useColorScheme.d.ts +14 -0
- package/dist/hooks/useColorScheme.d.ts.map +1 -0
- package/dist/hooks/useColorScheme.js +9 -0
- package/dist/hooks/useColorScheme.js.map +1 -0
- package/dist/hooks/useFocusManager.js +51 -0
- package/dist/hooks/useFocusManager.js.map +1 -0
- package/dist/hooks/useFocusVisible.d.ts +50 -0
- package/dist/hooks/useFocusVisible.d.ts.map +1 -0
- package/dist/hooks/useFocusVisible.js +35 -0
- package/dist/hooks/useFocusVisible.js.map +1 -0
- package/dist/hooks/useIsMobile.d.ts +5 -11
- package/dist/hooks/useIsMobile.d.ts.map +1 -1
- package/dist/hooks/useIsMobile.js +2 -13
- package/dist/hooks/useIsMobile.js.map +1 -1
- package/dist/hooks/useMediaQuery.d.ts +14 -0
- package/dist/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/hooks/useMediaQuery.js +20 -0
- package/dist/hooks/useMediaQuery.js.map +1 -0
- package/dist/hooks/usePrefersContrast.d.ts +19 -0
- package/dist/hooks/usePrefersContrast.d.ts.map +1 -0
- package/dist/hooks/usePrefersContrast.js +8 -0
- package/dist/hooks/usePrefersContrast.js.map +1 -0
- package/dist/hooks/useReducedMotion.d.ts +19 -0
- package/dist/hooks/useReducedMotion.d.ts.map +1 -0
- package/dist/hooks/useReducedMotion.js +2 -0
- package/dist/index.css +104 -5363
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +38 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -72
- package/dist/lib/utilities.d.ts +5 -4
- package/dist/lib/utilities.d.ts.map +1 -1
- package/dist/lib/utilities.js +1 -2
- package/dist/lib/utilities.js.map +1 -1
- package/dist/motion/Collapse.js +19 -0
- package/dist/motion/Collapse.js.map +1 -0
- package/dist/motion/Collapse.module.js +8 -0
- package/dist/motion/Collapse.module.js.map +1 -0
- package/dist/motion/Collapse_module.css +25 -0
- package/dist/motion/Collapse_module.css.map +1 -0
- package/dist/motion/Presence.js +14 -0
- package/dist/motion/Presence.js.map +1 -0
- package/dist/motion/index.js +5 -0
- package/dist/motion/presets.js +117 -0
- package/dist/motion/presets.js.map +1 -0
- package/dist/motion/tokens.js +41 -0
- package/dist/motion/tokens.js.map +1 -0
- package/package.json +154 -67
- package/src/components/ui/accordion.module.css +70 -0
- package/src/components/ui/accordion.tsx +278 -44
- package/src/components/ui/alert-dialog.module.css +87 -0
- package/src/components/ui/alert-dialog.tsx +474 -99
- package/src/components/ui/alert.module.css +57 -0
- package/src/components/ui/alert.tsx +136 -43
- package/src/components/ui/aspect-ratio.module.css +7 -0
- package/src/components/ui/aspect-ratio.tsx +38 -3
- package/src/components/ui/async-boundary.tsx +56 -0
- package/src/components/ui/avatar.module.css +31 -0
- package/src/components/ui/avatar.tsx +146 -36
- package/src/components/ui/background-beams.module.css +20 -0
- package/src/components/ui/background-beams.tsx +173 -134
- package/src/components/ui/badge.module.css +60 -0
- package/src/components/ui/badge.tsx +100 -32
- package/src/components/ui/breadcrumb.module.css +87 -0
- package/src/components/ui/breadcrumb.tsx +256 -74
- package/src/components/ui/bubble-background.module.css +97 -0
- package/src/components/ui/bubble-background.tsx +92 -52
- package/src/components/ui/button-group.module.css +76 -0
- package/src/components/ui/button-group.tsx +135 -46
- package/src/components/ui/button.module.css +138 -0
- package/src/components/ui/button.tsx +159 -41
- package/src/components/ui/calendar.module.css +250 -0
- package/src/components/ui/calendar.tsx +133 -103
- package/src/components/ui/card-skeleton.module.css +50 -0
- package/src/components/ui/card-skeleton.tsx +69 -0
- package/src/components/ui/card.module.css +41 -0
- package/src/components/ui/card.tsx +175 -22
- package/src/components/ui/carousel.module.css +80 -0
- package/src/components/ui/carousel.tsx +184 -43
- package/src/components/ui/chart.module.css +164 -0
- package/src/components/ui/chart.tsx +444 -102
- package/src/components/ui/checkbox-group.module.css +8 -0
- package/src/components/ui/checkbox-group.tsx +54 -0
- package/src/components/ui/checkbox.module.css +43 -0
- package/src/components/ui/checkbox.tsx +73 -19
- package/src/components/ui/collapsible.module.css +24 -0
- package/src/components/ui/collapsible.tsx +139 -3
- package/src/components/ui/command.module.css +193 -0
- package/src/components/ui/command.tsx +877 -114
- package/src/components/ui/context-menu.module.css +113 -0
- package/src/components/ui/context-menu.tsx +616 -157
- package/src/components/ui/copy-button.module.css +34 -0
- package/src/components/ui/copy-button.tsx +116 -0
- package/src/components/ui/counting-number.module.css +4 -0
- package/src/components/ui/counting-number.tsx +69 -31
- package/src/components/ui/dialog.module.css +113 -0
- package/src/components/ui/dialog.tsx +427 -81
- package/src/components/ui/dot-background.module.css +12 -0
- package/src/components/ui/dot-background.tsx +134 -126
- package/src/components/ui/drawer.module.css +85 -0
- package/src/components/ui/drawer.tsx +408 -80
- package/src/components/ui/dropdown-menu.module.css +113 -0
- package/src/components/ui/dropdown-menu.tsx +616 -159
- package/src/components/ui/dropdrawer.module.css +322 -0
- package/src/components/ui/dropdrawer.tsx +850 -398
- package/src/components/ui/empty.module.css +84 -0
- package/src/components/ui/empty.tsx +176 -52
- package/src/components/ui/error-boundary.module.css +36 -0
- package/src/components/ui/error-boundary.tsx +127 -0
- package/src/components/ui/field.module.css +179 -0
- package/src/components/ui/field.tsx +345 -139
- package/src/components/ui/fireworks-background.module.css +13 -0
- package/src/components/ui/fireworks-background.tsx +89 -51
- package/src/components/ui/flip-button.module.css +44 -0
- package/src/components/ui/flip-button.tsx +59 -28
- package/src/components/ui/focus-scope.module.css +3 -0
- package/src/components/ui/focus-scope.tsx +160 -0
- package/src/components/ui/form-skeleton.module.css +28 -0
- package/src/components/ui/form-skeleton.tsx +62 -0
- package/src/components/ui/form.module.css +20 -0
- package/src/components/ui/form.tsx +244 -33
- package/src/components/ui/gradient-background.module.css +6 -0
- package/src/components/ui/gradient-background.tsx +27 -5
- package/src/components/ui/gradient-text.module.css +23 -0
- package/src/components/ui/gradient-text.tsx +36 -9
- package/src/components/ui/highlight-text.module.css +14 -0
- package/src/components/ui/highlight-text.tsx +37 -15
- package/src/components/ui/hole-background.module.css +84 -0
- package/src/components/ui/hole-background.tsx +290 -162
- package/src/components/ui/hover-card.module.css +21 -0
- package/src/components/ui/hover-card.tsx +142 -21
- package/src/components/ui/input-group.module.css +148 -0
- package/src/components/ui/input-group.tsx +222 -98
- package/src/components/ui/input-otp.module.css +92 -0
- package/src/components/ui/input-otp.tsx +159 -33
- package/src/components/ui/input.module.css +37 -0
- package/src/components/ui/input.tsx +56 -14
- package/src/components/ui/item.module.css +143 -0
- package/src/components/ui/item.tsx +331 -104
- package/src/components/ui/kbd.module.css +31 -0
- package/src/components/ui/kbd.tsx +60 -17
- package/src/components/ui/label.module.css +13 -0
- package/src/components/ui/label.tsx +38 -14
- package/src/components/ui/list-skeleton.module.css +35 -0
- package/src/components/ui/list-skeleton.tsx +70 -0
- package/src/components/ui/loading-overlay.module.css +19 -0
- package/src/components/ui/loading-overlay.tsx +72 -0
- package/src/components/ui/menubar.module.css +144 -0
- package/src/components/ui/menubar.tsx +605 -192
- package/src/components/ui/meter.module.css +32 -0
- package/src/components/ui/meter.tsx +170 -0
- package/src/components/ui/navigation-menu.module.css +110 -0
- package/src/components/ui/navigation-menu.tsx +375 -101
- package/src/components/ui/number-field.module.css +126 -0
- package/src/components/ui/number-field.tsx +254 -0
- package/src/components/ui/pagination.module.css +64 -0
- package/src/components/ui/pagination.tsx +250 -72
- package/src/components/ui/popover.module.css +26 -0
- package/src/components/ui/popover.tsx +207 -25
- package/src/components/ui/progress.module.css +15 -0
- package/src/components/ui/progress.tsx +53 -16
- package/src/components/ui/radio-group.module.css +41 -0
- package/src/components/ui/radio-group.tsx +91 -34
- package/src/components/ui/resizable.module.css +67 -0
- package/src/components/ui/resizable.tsx +106 -26
- package/src/components/ui/ripple-button.module.css +35 -0
- package/src/components/ui/ripple-button.tsx +55 -21
- package/src/components/ui/scratcher.module.css +9 -0
- package/src/components/ui/scratcher.tsx +129 -99
- package/src/components/ui/scroll-area.module.css +47 -0
- package/src/components/ui/scroll-area.tsx +96 -34
- package/src/components/ui/select.module.css +131 -0
- package/src/components/ui/select.tsx +435 -124
- package/src/components/ui/separator.module.css +14 -0
- package/src/components/ui/separator.tsx +59 -18
- package/src/components/ui/sheet.module.css +138 -0
- package/src/components/ui/sheet.tsx +424 -95
- package/src/components/ui/sidebar.module.css +594 -0
- package/src/components/ui/sidebar.tsx +899 -425
- package/src/components/ui/skeleton.module.css +14 -0
- package/src/components/ui/skeleton.tsx +39 -9
- package/src/components/ui/slider.module.css +48 -0
- package/src/components/ui/slider.tsx +89 -16
- package/src/components/ui/sonner.module.css +246 -0
- package/src/components/ui/sonner.tsx +769 -25
- package/src/components/ui/spinner.module.css +25 -0
- package/src/components/ui/spinner.tsx +51 -12
- package/src/components/ui/stepper.module.css +72 -0
- package/src/components/ui/stepper.tsx +95 -0
- package/src/components/ui/switch.module.css +42 -0
- package/src/components/ui/switch.tsx +53 -20
- package/src/components/ui/table-skeleton.module.css +29 -0
- package/src/components/ui/table-skeleton.tsx +79 -0
- package/src/components/ui/table.module.css +66 -0
- package/src/components/ui/table.tsx +235 -61
- package/src/components/ui/tabs.module.css +89 -0
- package/src/components/ui/tabs.tsx +192 -45
- package/src/components/ui/textarea.module.css +30 -0
- package/src/components/ui/textarea.tsx +30 -10
- package/src/components/ui/timeline.module.css +43 -0
- package/src/components/ui/timeline.tsx +153 -0
- package/src/components/ui/toggle-group.module.css +5 -0
- package/src/components/ui/toggle-group.tsx +116 -35
- package/src/components/ui/toggle.module.css +57 -0
- package/src/components/ui/toggle.tsx +89 -33
- package/src/components/ui/toolbar.module.css +112 -0
- package/src/components/ui/toolbar.tsx +210 -0
- package/src/components/ui/tooltip.module.css +39 -0
- package/src/components/ui/tooltip.tsx +181 -24
- package/src/components/ui/typewriter.module.css +101 -0
- package/src/components/ui/typewriter.tsx +130 -128
- package/src/components/ui/visually-hidden.module.css +11 -0
- package/src/components/ui/visually-hidden.tsx +50 -0
- package/src/css-modules.d.ts +9 -0
- package/src/hooks/useAnnounce.tsx +73 -0
- package/src/hooks/useBreakpoint.tsx +41 -0
- package/src/hooks/useColorScheme.tsx +23 -0
- package/src/hooks/useFocusManager.tsx +89 -0
- package/src/hooks/useFocusVisible.tsx +88 -0
- package/src/hooks/useIsMobile.tsx +7 -28
- package/src/hooks/useMediaQuery.tsx +34 -0
- package/src/hooks/usePrefersContrast.tsx +24 -0
- package/src/hooks/useReducedMotion.tsx +20 -0
- package/src/index.css +127 -65
- package/src/index.ts +196 -18
- package/src/lib/utilities.ts +7 -6
- package/src/motion/Collapse.module.css +22 -0
- package/src/motion/Collapse.tsx +52 -0
- package/src/motion/Presence.tsx +44 -0
- package/src/motion/index.ts +13 -0
- package/src/motion/presets.ts +77 -0
- package/src/motion/tokens.ts +37 -0
- package/src/hooks/useIsMobile.test.tsx +0 -96
- package/src/hooks/useWindowSize.test.tsx +0 -57
- package/src/index.test.ts +0 -537
- package/src/lib/color-conversion-utilities.test.ts +0 -225
- package/src/lib/utilities.test.ts +0 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/ui/dropdrawer.js","sources":["../../../src/components/ui/dropdrawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable */\r\n\r\nimport {ChevronLeftIcon, ChevronRightIcon} from \"lucide-react\";\r\nimport {AnimatePresence, motion, Transition} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Drawer, DrawerClose, DrawerContent, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger} from \"@/components/ui/drawer\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuSub,\r\n DropdownMenuSubContent,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuTrigger,\r\n} from \"@/components/ui/dropdown-menu\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst DropDrawerContext = React.createContext<{isMobile: boolean}>({\r\n isMobile: false,\r\n});\r\n\r\nconst useDropDrawerContext = () => {\r\n const context = React.useContext(DropDrawerContext);\r\n if (!context) {\r\n throw new Error(\"DropDrawer components cannot be rendered outside the Context\");\r\n }\r\n return context;\r\n};\r\n\r\nfunction DropDrawer({children, ...props}: React.ComponentProps<typeof Drawer> | React.ComponentProps<typeof DropdownMenu>) {\r\n const isMobile = useIsMobile();\r\n const DropdownComponent = isMobile ? Drawer : DropdownMenu;\r\n\r\n return (\r\n <DropDrawerContext.Provider value={{isMobile}}>\r\n <DropdownComponent\r\n data-slot='drop-drawer'\r\n {...(isMobile && {autoFocus: true})}\r\n {...props}>\r\n {children}\r\n </DropdownComponent>\r\n </DropDrawerContext.Provider>\r\n );\r\n}\r\n\r\nfunction DropDrawerTrigger({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerTrigger> | React.ComponentProps<typeof DropdownMenuTrigger>) {\r\n const {isMobile} = useDropDrawerContext();\r\n const TriggerComponent = isMobile ? DrawerTrigger : DropdownMenuTrigger;\r\n\r\n return (\r\n <TriggerComponent\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </TriggerComponent>\r\n );\r\n}\r\n\r\nfunction DropDrawerContent({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerContent> | React.ComponentProps<typeof DropdownMenuContent>) {\r\n const {isMobile} = useDropDrawerContext();\r\n const [activeSubmenu, setActiveSubmenu] = React.useState<string | null>(null);\r\n const [submenuTitle, setSubmenuTitle] = React.useState<string | null>(null);\r\n const [submenuStack, setSubmenuStack] = React.useState<{id: string; title: string}[]>([]);\r\n // Add animation direction state\r\n const [animationDirection, setAnimationDirection] = React.useState<\"forward\" | \"backward\">(\"forward\");\r\n\r\n // Create a ref to store submenu content by ID\r\n const submenuContentRef = React.useRef<Map<string, React.ReactNode[]>>(new Map());\r\n\r\n // Function to navigate to a submenu\r\n const navigateToSubmenu = React.useCallback((id: string, title: string) => {\r\n // Set animation direction to forward when navigating to a submenu\r\n setAnimationDirection(\"forward\");\r\n setActiveSubmenu(id);\r\n setSubmenuTitle(title);\r\n setSubmenuStack((prev) => [...prev, {id, title}]);\r\n }, []);\r\n\r\n // Function to go back to previous menu\r\n const goBack = React.useCallback(() => {\r\n // Set animation direction to backward when going back\r\n setAnimationDirection(\"backward\");\r\n\r\n if (submenuStack.length <= 1) {\r\n // If we're at the first level, go back to main menu\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n } else {\r\n // Go back to previous submenu\r\n const newStack = [...submenuStack];\r\n newStack.pop(); // Remove current\r\n const previous = newStack[newStack.length - 1];\r\n setActiveSubmenu(previous.id);\r\n setSubmenuTitle(previous.title);\r\n setSubmenuStack(newStack);\r\n }\r\n }, [submenuStack]);\r\n\r\n // Function to register submenu content\r\n const registerSubmenuContent = React.useCallback((id: string, content: React.ReactNode[]) => {\r\n submenuContentRef.current.set(id, content);\r\n }, []);\r\n\r\n // Function to extract submenu content\r\n const extractSubmenuContent = React.useCallback((elements: React.ReactNode, targetId: string): React.ReactNode[] => {\r\n const result: React.ReactNode[] = [];\r\n\r\n // Recursive function to search through all children\r\n const findSubmenuContent = (node: React.ReactNode) => {\r\n // Skip if not a valid element\r\n if (!React.isValidElement(node)) return;\r\n\r\n const element = node as React.ReactElement;\r\n // Use a more specific type to avoid 'any'\r\n const props = element.props as {\r\n id?: string;\r\n \"data-submenu-id\"?: string;\r\n children?: React.ReactNode;\r\n };\r\n\r\n // Check if this is a DropDrawerSub\r\n if (element.type === DropDrawerSub) {\r\n // Get all possible ID values\r\n const elementId = props.id;\r\n const dataSubmenuId = props[\"data-submenu-id\"];\r\n\r\n // If this is the submenu we're looking for\r\n if (elementId === targetId || dataSubmenuId === targetId) {\r\n // Find the SubContent within this Sub\r\n if (props.children) {\r\n React.Children.forEach(props.children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n // Add all children of the SubContent to the result\r\n const subContentProps = child.props as {\r\n children?: React.ReactNode;\r\n };\r\n if (subContentProps.children) {\r\n React.Children.forEach(subContentProps.children, (contentChild) => {\r\n result.push(contentChild);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n return; // Found what we needed, no need to search deeper\r\n }\r\n }\r\n\r\n // If this element has children, search through them\r\n if (props.children) {\r\n if (Array.isArray(props.children)) {\r\n props.children.forEach((child: React.ReactNode) => findSubmenuContent(child));\r\n } else {\r\n findSubmenuContent(props.children);\r\n }\r\n }\r\n };\r\n\r\n // Start the search from the root elements\r\n if (Array.isArray(elements)) {\r\n elements.forEach((child) => findSubmenuContent(child));\r\n } else {\r\n findSubmenuContent(elements);\r\n }\r\n\r\n return result;\r\n }, []);\r\n\r\n // Get submenu content (either from cache or extract it)\r\n const getSubmenuContent = React.useCallback(\r\n (id: string) => {\r\n // Check if we have the content in our ref\r\n const cachedContent = submenuContentRef.current.get(id || \"\");\r\n if (cachedContent && cachedContent.length > 0) {\r\n return cachedContent;\r\n }\r\n\r\n // If not in cache, extract it\r\n const submenuContent = extractSubmenuContent(children, id);\r\n\r\n if (submenuContent.length === 0) {\r\n return [];\r\n }\r\n\r\n // Store in cache for future use\r\n if (id) {\r\n submenuContentRef.current.set(id, submenuContent);\r\n }\r\n\r\n return submenuContent;\r\n },\r\n [children, extractSubmenuContent],\r\n );\r\n\r\n // Animation variants for Framer Motion\r\n const variants = {\r\n enter: (direction: \"forward\" | \"backward\") => ({\r\n x: direction === \"forward\" ? \"100%\" : \"-100%\",\r\n opacity: 0,\r\n }),\r\n center: {\r\n x: 0,\r\n opacity: 1,\r\n },\r\n exit: (direction: \"forward\" | \"backward\") => ({\r\n x: direction === \"forward\" ? \"-100%\" : \"100%\",\r\n opacity: 0,\r\n }),\r\n };\r\n\r\n // Animation transition\r\n const transition = {\r\n duration: 0.3,\r\n ease: [0.25, 0.1, 0.25, 1.0], // cubic-bezier easing\r\n } satisfies Transition;\r\n\r\n if (isMobile) {\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n setActiveSubmenu: (id) => {\r\n if (id === null) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n }\r\n },\r\n submenuTitle,\r\n setSubmenuTitle,\r\n navigateToSubmenu,\r\n registerSubmenuContent,\r\n }}>\r\n <DrawerContent\r\n data-slot='drop-drawer-content'\r\n className={cn(\"max-h-[90vh]\", className)}\r\n {...props}>\r\n {activeSubmenu ? (\r\n <>\r\n <DrawerHeader>\r\n <div className='flex items-center gap-2'>\r\n <button\r\n onClick={goBack}\r\n className='rounded-full p-1 hover:bg-neutral-100/50 dark:hover:bg-neutral-800/50'>\r\n <ChevronLeftIcon className='h-5 w-5' />\r\n </button>\r\n <DrawerTitle>{submenuTitle || \"Submenu\"}</DrawerTitle>\r\n </div>\r\n </DrawerHeader>\r\n <div className='relative max-h-[70vh] flex-1 overflow-y-auto'>\r\n {/* Use AnimatePresence to handle exit animations */}\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key={activeSubmenu || \"main\"}\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className='h-full w-full space-y-1.5 pb-6'>\r\n {activeSubmenu ? getSubmenuContent(activeSubmenu) : children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <DrawerHeader className='sr-only'>\r\n <DrawerTitle>Menu</DrawerTitle>\r\n </DrawerHeader>\r\n <div className='max-h-[70vh] overflow-y-auto'>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key='main-menu'\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className='w-full space-y-1.5 pb-6'>\r\n {children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n )}\r\n </DrawerContent>\r\n </SubmenuContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n setActiveSubmenu,\r\n submenuTitle,\r\n setSubmenuTitle,\r\n registerSubmenuContent,\r\n }}>\r\n <DropdownMenuContent\r\n data-slot='drop-drawer-content'\r\n align='end'\r\n sideOffset={4}\r\n className={cn(\"max-h-[var(--radix-dropdown-menu-content-available-height)] min-w-[220px] overflow-y-auto\", className)}\r\n {...props}>\r\n {children}\r\n </DropdownMenuContent>\r\n </SubmenuContext.Provider>\r\n );\r\n}\r\n\r\nfunction DropDrawerItem({\r\n className,\r\n children,\r\n onSelect,\r\n onClick,\r\n icon,\r\n inset,\r\n disabled,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuItem> & {\r\n icon?: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // Define hooks outside of conditionals to follow React rules\r\n // Check if this item is inside a group by looking at parent elements\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) return false;\r\n\r\n // Check if any parent has a data-drop-drawer-group attribute\r\n let parent = element.parentElement;\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return false;\r\n }, []);\r\n\r\n // Create a ref to check if the item is in a group\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n // Only run this effect in mobile mode\r\n if (!isMobile) return;\r\n\r\n // Use a short timeout to ensure the DOM is fully rendered\r\n const timer = setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (disabled) return;\r\n if (onClick) onClick(e);\r\n if (onSelect) onSelect(e as unknown as Event);\r\n };\r\n\r\n // Only wrap in DrawerClose if it's not a submenu item\r\n const content = (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n data-disabled={disabled}\r\n className={cn(\r\n \"flex cursor-pointer items-center justify-between px-4 py-4\",\r\n // Only apply margin, background and rounded corners if not in a group\r\n !isInsideGroup && \"mx-2 my-1.5 rounded-md bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n // For items in a group, don't add background but add more padding\r\n isInsideGroup && \"bg-transparent py-4\",\r\n inset && \"pl-8\",\r\n disabled && \"pointer-events-none opacity-50\",\r\n className,\r\n )}\r\n onClick={handleClick}\r\n aria-disabled={disabled}\r\n {...props}>\r\n <div className='flex items-center gap-2'>{children}</div>\r\n {icon && <div className='flex-shrink-0'>{icon}</div>}\r\n </div>\r\n );\r\n\r\n // Check if this is inside a submenu\r\n const isInSubmenu =\r\n (props as Record<string, unknown>)[\"data-parent-submenu-id\"] || (props as Record<string, unknown>)[\"data-parent-submenu\"];\r\n\r\n if (isInSubmenu) {\r\n return content;\r\n }\r\n\r\n return <DrawerClose asChild>{content}</DrawerClose>;\r\n }\r\n\r\n return (\r\n <DropdownMenuItem\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n className={className}\r\n onSelect={onSelect}\r\n onClick={onClick as React.MouseEventHandler<HTMLDivElement>}\r\n inset={inset}\r\n disabled={disabled}\r\n {...props}>\r\n <div className='flex w-full items-center justify-between'>\r\n <div>{children}</div>\r\n {icon && <div>{icon}</div>}\r\n </div>\r\n </DropdownMenuItem>\r\n );\r\n}\r\n\r\nfunction DropDrawerSeparator({className, ...props}: React.ComponentProps<typeof DropdownMenuSeparator>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // For mobile, render a simple divider\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n // For desktop, use the standard dropdown separator\r\n return (\r\n <DropdownMenuSeparator\r\n data-slot='drop-drawer-separator'\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction DropDrawerLabel({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuLabel> | React.ComponentProps<typeof DrawerTitle>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return (\r\n <DrawerHeader className='p-0'>\r\n <DrawerTitle\r\n data-slot='drop-drawer-label'\r\n className={cn(\"px-4 py-2 text-sm font-medium text-neutral-500 dark:text-neutral-400\", className)}\r\n {...props}>\r\n {children}\r\n </DrawerTitle>\r\n </DrawerHeader>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuLabel\r\n data-slot='drop-drawer-label'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </DropdownMenuLabel>\r\n );\r\n}\r\n\r\nfunction DropDrawerFooter({className, children, ...props}: React.ComponentProps<typeof DrawerFooter> | React.ComponentProps<\"div\">) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return (\r\n <DrawerFooter\r\n data-slot='drop-drawer-footer'\r\n className={cn(\"p-4\", className)}\r\n {...props}>\r\n {children}\r\n </DrawerFooter>\r\n );\r\n }\r\n\r\n // No direct equivalent in DropdownMenu, so we'll just render a div\r\n return (\r\n <div\r\n data-slot='drop-drawer-footer'\r\n className={cn(\"p-2\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nfunction DropDrawerGroup({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n children: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n // Add separators between children on mobile\r\n const childrenWithSeparators = React.useMemo(() => {\r\n if (!isMobile) return children;\r\n\r\n const childArray = React.Children.toArray(children);\r\n\r\n // Filter out any existing separators\r\n const filteredChildren = childArray.filter((child) => React.isValidElement(child) && child.type !== DropDrawerSeparator);\r\n\r\n // Add separators between items\r\n return filteredChildren.flatMap((child, index) => {\r\n if (index === filteredChildren.length - 1) return [child];\r\n return [\r\n child,\r\n <div\r\n key={`separator-${index}`}\r\n className='h-px bg-neutral-200 dark:bg-neutral-800'\r\n aria-hidden='true'\r\n />,\r\n ];\r\n });\r\n }, [children, isMobile]);\r\n\r\n if (isMobile) {\r\n return (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={cn(\r\n \"mx-2 my-3 overflow-hidden rounded-xl bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n className,\r\n )}\r\n {...props}>\r\n {childrenWithSeparators}\r\n </div>\r\n );\r\n }\r\n\r\n // On desktop, use a div with proper role and attributes\r\n return (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={className}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n// Context for managing submenu state on mobile\r\ninterface SubmenuContextType {\r\n activeSubmenu: string | null;\r\n setActiveSubmenu: (id: string | null) => void;\r\n submenuTitle: string | null;\r\n setSubmenuTitle: (title: string | null) => void;\r\n navigateToSubmenu?: (id: string, title: string) => void;\r\n registerSubmenuContent?: (id: string, content: React.ReactNode[]) => void;\r\n}\r\n\r\nconst SubmenuContext = React.createContext<SubmenuContextType>({\r\n activeSubmenu: null,\r\n setActiveSubmenu: () => {},\r\n submenuTitle: null,\r\n setSubmenuTitle: () => {},\r\n navigateToSubmenu: undefined,\r\n registerSubmenuContent: undefined,\r\n});\r\n\r\n// Submenu components\r\n// Counter for generating simple numeric IDs\r\nlet submenuIdCounter = 0;\r\n\r\nfunction DropDrawerSub({\r\n children,\r\n id,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSub> & {\r\n id?: string;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n const {registerSubmenuContent} = React.useContext(SubmenuContext);\r\n\r\n // Generate a simple numeric ID instead of using React.useId()\r\n const [generatedId] = React.useState(() => `submenu-${submenuIdCounter++}`);\r\n const submenuId = id || generatedId;\r\n\r\n // Extract submenu content to register with parent\r\n React.useEffect(() => {\r\n if (!registerSubmenuContent) return;\r\n\r\n // Find the SubContent within this Sub\r\n const contentItems: React.ReactNode[] = [];\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n // Add all children of the SubContent to the result\r\n React.Children.forEach((child.props as {children?: React.ReactNode}).children, (contentChild) => {\r\n contentItems.push(contentChild);\r\n });\r\n }\r\n });\r\n\r\n // Register the content with the parent\r\n if (contentItems.length > 0) {\r\n registerSubmenuContent(submenuId, contentItems);\r\n }\r\n }, [children, registerSubmenuContent, submenuId]);\r\n\r\n if (isMobile) {\r\n // For mobile, we'll use the context to manage submenu state\r\n // Process children to pass the submenu ID to the trigger and content\r\n const processedChildren = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) return child;\r\n\r\n if (child.type === DropDrawerSubTrigger) {\r\n return React.cloneElement(\r\n child as React.ReactElement,\r\n {\r\n ...(child.props as object),\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n // Use only data attributes, not custom props\r\n \"data-parent-submenu\": submenuId,\r\n } as React.HTMLAttributes<HTMLElement>,\r\n );\r\n }\r\n\r\n if (child.type === DropDrawerSubContent) {\r\n return React.cloneElement(\r\n child as React.ReactElement,\r\n {\r\n ...(child.props as object),\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n // Use only data attributes, not custom props\r\n \"data-parent-submenu\": submenuId,\r\n } as React.HTMLAttributes<HTMLElement>,\r\n );\r\n }\r\n\r\n return child;\r\n });\r\n\r\n return (\r\n <div\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n id={submenuId}>\r\n {processedChildren}\r\n </div>\r\n );\r\n }\r\n\r\n // For desktop, pass the generated ID to the DropdownMenuSub\r\n return (\r\n <DropdownMenuSub\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n // Don't pass id to DropdownMenuSub as it doesn't accept this prop\r\n {...props}>\r\n {children}\r\n </DropdownMenuSub>\r\n );\r\n}\r\n\r\nfunction DropDrawerSubTrigger({\r\n className,\r\n inset,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSubTrigger> & {\r\n icon?: React.ReactNode;\r\n}) {\r\n const {isMobile} = useDropDrawerContext();\r\n const {navigateToSubmenu} = React.useContext(SubmenuContext);\r\n\r\n // Define hooks outside of conditionals to follow React rules\r\n // Check if this item is inside a group by looking at parent elements\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) return false;\r\n\r\n // Check if any parent has a data-drop-drawer-group attribute\r\n let parent = element.parentElement;\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n parent = parent.parentElement;\r\n }\r\n return false;\r\n }, []);\r\n\r\n // Create a ref to check if the item is in a group\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n // Only run this effect in mobile mode\r\n if (!isMobile) return;\r\n\r\n // Use a short timeout to ensure the DOM is fully rendered\r\n const timer = setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n // Find the parent submenu ID\r\n const handleClick = (e: React.MouseEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n // Get the closest parent with data-submenu-id attribute\r\n const element = e.currentTarget as HTMLElement;\r\n let submenuId: string | null = null;\r\n\r\n // First check if the element itself has the data attribute\r\n if (element.closest(\"[data-submenu-id]\")) {\r\n const closestElement = element.closest(\"[data-submenu-id]\");\r\n const id = closestElement?.getAttribute(\"data-submenu-id\");\r\n if (id) {\r\n submenuId = id;\r\n }\r\n }\r\n\r\n // If not found, try props\r\n if (!submenuId) {\r\n submenuId =\r\n ((props as Record<string, unknown>)[\"data-parent-submenu-id\"] as string)\r\n || ((props as Record<string, unknown>)[\"data-parent-submenu\"] as string);\r\n }\r\n\r\n if (!submenuId) {\r\n return;\r\n }\r\n\r\n // Get the title\r\n const title = typeof children === \"string\" ? children : \"Submenu\";\r\n\r\n // Navigate to the submenu\r\n if (navigateToSubmenu) {\r\n navigateToSubmenu(submenuId, title);\r\n }\r\n };\r\n\r\n // Combine onClick handlers\r\n const combinedOnClick = (e: React.MouseEvent) => {\r\n // Call the original onClick if provided\r\n const typedProps = props as Record<string, unknown>;\r\n if (typedProps[\"onClick\"]) {\r\n const originalOnClick = typedProps[\"onClick\"] as React.MouseEventHandler<HTMLDivElement>;\r\n originalOnClick(e as React.MouseEvent<HTMLDivElement>);\r\n }\r\n\r\n // Call our navigation handler\r\n handleClick(e);\r\n };\r\n\r\n // Remove onClick from props to avoid duplicate handlers\r\n const {...restProps} = props as Record<string, unknown>;\r\n\r\n // Don't wrap in DrawerClose for submenu triggers\r\n return (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={cn(\r\n \"flex cursor-pointer items-center justify-between px-4 py-4\",\r\n // Only apply margin, background and rounded corners if not in a group\r\n !isInsideGroup && \"mx-2 my-1.5 rounded-md bg-neutral-100 dark:bg-neutral-100 dark:bg-neutral-800 dark:dark:bg-neutral-800\",\r\n // For items in a group, don't add background but add more padding\r\n isInsideGroup && \"bg-transparent py-4\",\r\n inset && \"pl-8\",\r\n className,\r\n )}\r\n onClick={combinedOnClick}\r\n {...restProps}>\r\n <div className='flex items-center gap-2'>{children}</div>\r\n <ChevronRightIcon className='h-5 w-5' />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSubTrigger\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={className}\r\n inset={inset}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubTrigger>\r\n );\r\n}\r\n\r\nfunction DropDrawerSubContent({className, sideOffset = 4, children, ...props}: React.ComponentProps<typeof DropdownMenuSubContent>) {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n // For mobile, we don't render the content directly\r\n // It will be rendered by the DropDrawerContent component when active\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSubContent\r\n data-slot='drop-drawer-sub-content'\r\n sideOffset={sideOffset}\r\n className={cn(\r\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-neutral-200 p-1 shadow-lg dark:border-neutral-800\",\r\n className,\r\n )}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubContent>\r\n );\r\n}\r\n\r\nexport {\r\n DropDrawer,\r\n DropDrawerContent,\r\n DropDrawerFooter,\r\n DropDrawerGroup,\r\n DropDrawerItem,\r\n DropDrawerLabel,\r\n DropDrawerSeparator,\r\n DropDrawerSub,\r\n DropDrawerSubContent,\r\n DropDrawerSubTrigger,\r\n DropDrawerTrigger,\r\n};\r\n"],"names":["DropDrawerContext","React","useDropDrawerContext","context","Error","DropDrawer","children","props","isMobile","useIsMobile","DropdownComponent","Drawer","DropdownMenu","DropDrawerTrigger","className","TriggerComponent","DrawerTrigger","DropdownMenuTrigger","DropDrawerContent","activeSubmenu","setActiveSubmenu","submenuTitle","setSubmenuTitle","submenuStack","setSubmenuStack","animationDirection","setAnimationDirection","submenuContentRef","Map","navigateToSubmenu","id","title","prev","goBack","newStack","previous","registerSubmenuContent","content","extractSubmenuContent","elements","targetId","result","findSubmenuContent","node","element","DropDrawerSub","elementId","dataSubmenuId","child","DropDrawerSubContent","subContentProps","contentChild","Array","getSubmenuContent","cachedContent","submenuContent","variants","direction","transition","SubmenuContext","DrawerContent","cn","DrawerHeader","ChevronLeftIcon","DrawerTitle","AnimatePresence","motion","DropdownMenuContent","DropDrawerItem","onSelect","onClick","icon","inset","disabled","isInGroup","parent","itemRef","isInsideGroup","setIsInsideGroup","timer","setTimeout","clearTimeout","handleClick","e","isInSubmenu","DrawerClose","DropdownMenuItem","DropDrawerSeparator","DropdownMenuSeparator","DropDrawerLabel","DropdownMenuLabel","DropDrawerFooter","DrawerFooter","DropDrawerGroup","childrenWithSeparators","childArray","filteredChildren","index","undefined","submenuIdCounter","generatedId","submenuId","contentItems","processedChildren","DropDrawerSubTrigger","DropdownMenuSub","closestElement","combinedOnClick","typedProps","originalOnClick","restProps","ChevronRightIcon","DropdownMenuSubTrigger","sideOffset","DropdownMenuSubContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components/ui/dropdrawer.js","sources":["../../../src/components/ui/dropdrawer.tsx"],"sourcesContent":["\"use client\";\r\n\r\n/* eslint-disable react/no-children-prop, react-x/no-children-for-each, react-x/no-children-map, react-x/no-children-to-array, react-x/no-clone-element, sonarjs/function-return-type, sonarjs/no-identical-functions, sonarjs/no-unused-vars, max-lines, unicorn/no-array-callback-reference, unicorn/no-useless-undefined, unicorn/prefer-at, unicorn/prefer-dom-node-dataset, jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\r\n\r\nimport {Drawer as BaseDrawer} from \"@base-ui/react/drawer\";\r\nimport {Menu as BaseMenu} from \"@base-ui/react/menu\";\r\nimport {mergeProps} from \"@base-ui/react/merge-props\";\r\nimport {useRender} from \"@base-ui/react/use-render\";\r\nimport {ChevronLeftIcon, ChevronRightIcon} from \"lucide-react\";\r\nimport {AnimatePresence, motion, type Transition} from \"motion/react\";\r\nimport * as React from \"react\";\r\n\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\nimport styles from \"./dropdrawer.module.css\";\r\n\r\nconst MOBILE_MENU_TITLE = \"Menu\";\r\nconst MOBILE_SUBMENU_TITLE = \"Submenu\";\r\nconst MOBILE_BACK_LABEL = \"Go back\";\r\n\r\ninterface DropDrawerContextValue {\r\n isMobile: boolean;\r\n}\r\n\r\nconst DropDrawerContext = React.createContext<DropDrawerContextValue | null>(null);\r\n\r\nconst useDropDrawerContext = (): DropDrawerContextValue => {\r\n const context = React.useContext(DropDrawerContext);\r\n\r\n if (context === null) {\r\n throw new Error(\"DropDrawer components cannot be rendered outside the Context\");\r\n }\r\n\r\n return context;\r\n};\r\n\r\nconst Drawer = BaseDrawer.Root;\r\nconst DrawerPortal = BaseDrawer.Portal;\r\n\r\nfunction DrawerTrigger(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Trigger> & {asChild?: boolean}>): React.ReactElement {\r\n const {asChild = false, children, className, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseDrawer.Trigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"button\",\r\n render: renderProp as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseDrawer.Trigger>\r\n );\r\n}\r\n\r\nfunction DrawerOverlay(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Backdrop>>): React.ReactElement {\r\n const {className, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseDrawer.Backdrop\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerOverlay, className)}, {}),\r\n })}\r\n />\r\n );\r\n}\r\n\r\nfunction DrawerContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Popup> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <BaseDrawer.Viewport className={styles.drawerViewport}>\r\n <BaseDrawer.Popup\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerContent, className)}, {}),\r\n })}>\r\n <div className={styles.drawerHandle} />\r\n <BaseDrawer.Content className={styles.drawerInnerContent}>{children}</BaseDrawer.Content>\r\n </BaseDrawer.Popup>\r\n </BaseDrawer.Viewport>\r\n </DrawerPortal>\r\n );\r\n}\r\n\r\nfunction DrawerHeader(\r\n props: Readonly<React.ComponentPropsWithRef<\"div\"> & {render?: useRender.RenderProp<Record<string, never>>}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerHeader, className)}, otherProps, {children}),\r\n });\r\n}\r\n\r\nfunction DrawerFooter(\r\n props: Readonly<React.ComponentPropsWithRef<\"div\"> & {render?: useRender.RenderProp<Record<string, never>>}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerFooter, className)}, otherProps, {children}),\r\n });\r\n}\r\n\r\nfunction DrawerTitle(props: Readonly<React.ComponentPropsWithRef<typeof BaseDrawer.Title>>): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseDrawer.Title\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"h2\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.drawerTitle, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseDrawer.Title>\r\n );\r\n}\r\n\r\nconst DropdownMenu = BaseMenu.Root;\r\nconst DropdownMenuSub = BaseMenu.SubmenuRoot;\r\n\r\nfunction DropdownMenuTrigger(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Trigger> & {asChild?: boolean}>,\r\n): React.ReactElement {\r\n const {asChild = false, children, className, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseMenu.Trigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"button\",\r\n render: renderProp as never,\r\n props: mergeProps({className}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseMenu.Trigger>\r\n );\r\n}\r\n\r\nfunction DropdownMenuContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Positioner> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Portal>\r\n <BaseMenu.Positioner\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.dropdownPositioner}, {}),\r\n })}>\r\n <BaseMenu.Popup\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.dropdownContent, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.Popup>\r\n </BaseMenu.Positioner>\r\n </BaseMenu.Portal>\r\n );\r\n}\r\n\r\ninterface DropdownMenuItemProps extends React.ComponentPropsWithRef<typeof BaseMenu.Item> {\r\n /** @deprecated Prefer Base UI's `render` prop. */\r\n asChild?: boolean;\r\n /**\r\n * Whether to apply inset spacing to align with grouped menu content.\r\n * @default false\r\n */\r\n inset?: boolean;\r\n}\r\n\r\nfunction DropdownMenuItem(props: Readonly<DropdownMenuItemProps>): React.ReactElement {\r\n const {asChild = false, children, className, inset = false, render, ...otherProps} = props;\r\n const renderProp = asChild && React.isValidElement(children) ? children : render;\r\n\r\n return (\r\n <BaseMenu.Item\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: renderProp as never,\r\n props: mergeProps({className: cn(styles.desktopItem, inset && styles.inset, className)}, {}),\r\n })}>\r\n {renderProp ? undefined : children}\r\n </BaseMenu.Item>\r\n );\r\n}\r\n\r\nfunction DropdownMenuLabel(props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.GroupLabel>>): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.GroupLabel\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopLabel, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.GroupLabel>\r\n );\r\n}\r\n\r\nfunction DropdownMenuSeparator(props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Separator>>): React.ReactElement {\r\n const {className, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Separator\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopSeparator, className)}, {}),\r\n })}\r\n />\r\n );\r\n}\r\n\r\nfunction DropdownMenuSubTrigger(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.SubmenuTrigger> & {inset?: boolean}>,\r\n): React.ReactElement {\r\n const {className, children, inset = false, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.SubmenuTrigger\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.desktopSubTrigger, inset && styles.inset, className)}, {}),\r\n })}>\r\n {children}\r\n <ChevronRightIcon className={styles.chevron} />\r\n </BaseMenu.SubmenuTrigger>\r\n );\r\n}\r\n\r\nfunction DropdownMenuSubContent(\r\n props: Readonly<React.ComponentPropsWithRef<typeof BaseMenu.Positioner> & {children?: React.ReactNode}>,\r\n): React.ReactElement {\r\n const {className, children, render, ...otherProps} = props;\r\n\r\n return (\r\n <BaseMenu.Positioner\r\n {...otherProps}\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n props: mergeProps({className: styles.dropdownPositioner}, {}),\r\n })}>\r\n <BaseMenu.Popup\r\n render={useRender({\r\n defaultTagName: \"div\",\r\n render: render as never,\r\n props: mergeProps({className: cn(styles.dropdownSubContent, className)}, {}),\r\n })}>\r\n {children}\r\n </BaseMenu.Popup>\r\n </BaseMenu.Positioner>\r\n );\r\n}\r\n\r\ntype DropDrawerRootProps = React.ComponentProps<typeof Drawer> | React.ComponentProps<typeof DropdownMenu>;\r\ntype DropDrawerTriggerProps =\r\n | React.ComponentPropsWithoutRef<typeof DrawerTrigger>\r\n | React.ComponentPropsWithoutRef<typeof DropdownMenuTrigger>;\r\ntype DropDrawerContentProps =\r\n | React.ComponentPropsWithoutRef<typeof DrawerContent>\r\n | React.ComponentPropsWithoutRef<typeof DropdownMenuContent>;\r\n\r\ninterface MobileSubmenuDataAttributes {\r\n \"data-parent-submenu-id\"?: string;\r\n \"data-parent-submenu\"?: string;\r\n \"data-submenu-id\"?: string;\r\n}\r\n\r\ninterface SharedDropDrawerItemProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof BaseMenu.Item>, \"children\" | \"onClick\" | \"onSelect\">, MobileSubmenuDataAttributes {\r\n /**\r\n * Item contents.\r\n * @default undefined\r\n */\r\n children?: React.ReactNode;\r\n /**\r\n * Additional CSS classes merged with the item styles.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Whether the desktop dropdown should close after the item is activated.\r\n * @default undefined\r\n */\r\n closeOnClick?: boolean;\r\n /**\r\n * Optional trailing icon or affordance rendered alongside the item content.\r\n * @default undefined\r\n */\r\n icon?: React.ReactNode;\r\n /**\r\n * Whether to apply inset spacing to align the item with grouped content.\r\n * @default undefined\r\n */\r\n inset?: boolean;\r\n /**\r\n * Mouse click handler invoked when the item is activated.\r\n * @default undefined\r\n */\r\n onClick?: React.MouseEventHandler<HTMLElement>;\r\n /**\r\n * Selection callback invoked with the native event when the item is activated.\r\n * @default undefined\r\n */\r\n onSelect?: (event: Event) => void;\r\n}\r\n\r\ninterface SubmenuContextType {\r\n activeSubmenu: string | null;\r\n navigateToSubmenu?: (id: string, title: string) => void;\r\n registerSubmenuContent?: (id: string, content: ReadonlyArray<React.ReactNode>) => void;\r\n setActiveSubmenu: (id: string | null) => void;\r\n setSubmenuTitle: (title: string | null) => void;\r\n submenuTitle: string | null;\r\n}\r\n\r\nconst SubmenuContext = React.createContext<SubmenuContextType>({\r\n activeSubmenu: null,\r\n navigateToSubmenu: undefined,\r\n registerSubmenuContent: undefined,\r\n setActiveSubmenu: () => undefined,\r\n setSubmenuTitle: () => undefined,\r\n submenuTitle: null,\r\n});\r\n\r\n/**\r\n * Provides a responsive dropdown-on-desktop, drawer-on-mobile navigation surface.\r\n *\r\n * @remarks\r\n * - Renders either Base UI `Menu.Root` or `Drawer.Root` depending on viewport size\r\n * - Built on Base UI Menu and Drawer primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawer>\r\n * <DropDrawerTrigger>Open menu</DropDrawerTrigger>\r\n * <DropDrawerContent>\r\n * <DropDrawerItem>Profile</DropDrawerItem>\r\n * </DropDrawerContent>\r\n * </DropDrawer>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawer({children, ...props}: DropDrawerRootProps): React.JSX.Element {\r\n const isMobile = useIsMobile();\r\n\r\n return (\r\n <DropDrawerContext.Provider value={{isMobile}}>\r\n {isMobile ? (\r\n <Drawer\r\n data-slot='drop-drawer'\r\n {...(props as React.ComponentProps<typeof Drawer>)}>\r\n {children}\r\n </Drawer>\r\n ) : (\r\n <DropdownMenu\r\n data-slot='drop-drawer'\r\n {...(props as React.ComponentProps<typeof DropdownMenu>)}>\r\n {children}\r\n </DropdownMenu>\r\n )}\r\n </DropDrawerContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the control that opens the dropdown or drawer surface.\r\n *\r\n * @remarks\r\n * - Renders either a Base UI menu trigger or drawer trigger\r\n * - Built on Base UI Menu and Drawer primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerTrigger>Open menu</DropDrawerTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/drawer | Base UI Drawer Docs}\r\n */\r\nfunction DropDrawerTrigger({className, children, ...props}: DropDrawerTriggerProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerTrigger\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DrawerTrigger>)}>\r\n {children}\r\n </DrawerTrigger>\r\n ) : (\r\n <DropdownMenuTrigger\r\n data-slot='drop-drawer-trigger'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DropdownMenuTrigger>)}>\r\n {children}\r\n </DropdownMenuTrigger>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the responsive dropdown or drawer content surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI popup on desktop and drawer content on mobile\r\n * - Built on Base UI Menu and Drawer primitives with animated mobile submenu navigation\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerContent>\r\n * <DropDrawerItem>Settings</DropDrawerItem>\r\n * </DropDrawerContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerContent({className, children, ...props}: DropDrawerContentProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const [activeSubmenu, setActiveSubmenu] = React.useState<string | null>(null);\r\n const [submenuTitle, setSubmenuTitle] = React.useState<string | null>(null);\r\n const [submenuStack, setSubmenuStack] = React.useState<ReadonlyArray<{id: string; title: string}>>([]);\r\n const [animationDirection, setAnimationDirection] = React.useState<\"forward\" | \"backward\">(\"forward\");\r\n const submenuContentRef = React.useRef(new Map<string, ReadonlyArray<React.ReactNode>>());\r\n\r\n React.useEffect(() => {\r\n submenuContentRef.current.clear();\r\n }, [children]);\r\n\r\n const navigateToSubmenu = React.useCallback((id: string, title: string): void => {\r\n setAnimationDirection(\"forward\");\r\n setActiveSubmenu(id);\r\n setSubmenuTitle(title);\r\n setSubmenuStack((previousStack) => [...previousStack, {id, title}]);\r\n }, []);\r\n\r\n const goBack = React.useCallback((): void => {\r\n setAnimationDirection(\"backward\");\r\n\r\n if (submenuStack.length <= 1) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n return;\r\n }\r\n\r\n const newStack = [...submenuStack];\r\n newStack.pop();\r\n const previousSubmenu = newStack[newStack.length - 1];\r\n\r\n if (!previousSubmenu) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n return;\r\n }\r\n\r\n setActiveSubmenu(previousSubmenu.id);\r\n setSubmenuTitle(previousSubmenu.title);\r\n setSubmenuStack(newStack);\r\n }, [submenuStack]);\r\n\r\n const registerSubmenuContent = React.useCallback((id: string, content: ReadonlyArray<React.ReactNode>): void => {\r\n submenuContentRef.current.set(id, content);\r\n }, []);\r\n\r\n const extractSubmenuContent = React.useCallback((elements: React.ReactNode, targetId: string): ReadonlyArray<React.ReactNode> => {\r\n const result: Array<React.ReactNode> = [];\r\n\r\n const findSubmenuContent = (node: React.ReactNode): void => {\r\n if (!React.isValidElement(node)) {\r\n return;\r\n }\r\n\r\n const element = node as React.ReactElement<{\r\n \"data-submenu-id\"?: string;\r\n children?: React.ReactNode;\r\n id?: string;\r\n }>;\r\n\r\n if (element.type === DropDrawerSub) {\r\n const elementId = element.props.id;\r\n const dataSubmenuId = element.props[\"data-submenu-id\"];\r\n\r\n if (elementId === targetId || dataSubmenuId === targetId) {\r\n if (element.props.children) {\r\n React.Children.forEach(element.props.children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n const subContentElement = child as React.ReactElement<{children?: React.ReactNode}>;\r\n\r\n React.Children.forEach(subContentElement.props.children, (contentChild) => {\r\n result.push(contentChild);\r\n });\r\n }\r\n });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (element.props.children) {\r\n React.Children.forEach(element.props.children, findSubmenuContent);\r\n }\r\n };\r\n\r\n React.Children.forEach(elements, findSubmenuContent);\r\n return result;\r\n }, []);\r\n\r\n const getSubmenuContent = React.useCallback(\r\n (id: string): ReadonlyArray<React.ReactNode> => {\r\n const cachedContent = submenuContentRef.current.get(id);\r\n\r\n if (cachedContent && cachedContent.length > 0) {\r\n return cachedContent;\r\n }\r\n\r\n const submenuContent = extractSubmenuContent(children, id);\r\n\r\n if (submenuContent.length > 0) {\r\n submenuContentRef.current.set(id, submenuContent);\r\n }\r\n\r\n return submenuContent;\r\n },\r\n [children, extractSubmenuContent],\r\n );\r\n\r\n const variants = {\r\n center: {\r\n opacity: 1,\r\n x: 0,\r\n },\r\n enter: (direction: \"forward\" | \"backward\") => ({\r\n opacity: 0,\r\n x: direction === \"forward\" ? \"100%\" : \"-100%\",\r\n }),\r\n exit: (direction: \"forward\" | \"backward\") => ({\r\n opacity: 0,\r\n x: direction === \"forward\" ? \"-100%\" : \"100%\",\r\n }),\r\n };\r\n\r\n const transition = {\r\n duration: 0.3,\r\n ease: [0.25, 0.1, 0.25, 1],\r\n } satisfies Transition;\r\n\r\n if (isMobile) {\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n navigateToSubmenu,\r\n registerSubmenuContent,\r\n setActiveSubmenu: (id) => {\r\n if (id === null) {\r\n setActiveSubmenu(null);\r\n setSubmenuTitle(null);\r\n setSubmenuStack([]);\r\n }\r\n },\r\n setSubmenuTitle,\r\n submenuTitle,\r\n }}>\r\n <DrawerContent\r\n data-slot='drop-drawer-content'\r\n className={cn(styles.mobileContent, className)}\r\n {...(props as React.ComponentProps<typeof DrawerContent>)}>\r\n {activeSubmenu ? (\r\n <>\r\n <DrawerHeader>\r\n <div className={styles.mobileHeaderRow}>\r\n <button\r\n type='button'\r\n aria-label={MOBILE_BACK_LABEL}\r\n onClick={goBack}\r\n className={styles.backButton}>\r\n <ChevronLeftIcon className={styles.chevron} />\r\n </button>\r\n <DrawerTitle>{submenuTitle || MOBILE_SUBMENU_TITLE}</DrawerTitle>\r\n </div>\r\n </DrawerHeader>\r\n <div className={styles.mobileViewport}>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key={activeSubmenu}\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className={styles.mobileMotionPanel}>\r\n {getSubmenuContent(activeSubmenu)}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <DrawerHeader className={styles.screenReaderOnlyHeader}>\r\n <DrawerTitle>{MOBILE_MENU_TITLE}</DrawerTitle>\r\n </DrawerHeader>\r\n <div className={styles.mobileMainViewport}>\r\n <AnimatePresence\r\n initial={false}\r\n mode='wait'\r\n custom={animationDirection}>\r\n <motion.div\r\n key='main-menu'\r\n custom={animationDirection}\r\n variants={variants}\r\n initial='enter'\r\n animate='center'\r\n exit='exit'\r\n transition={transition}\r\n className={styles.mobileMotionPanel}>\r\n {children}\r\n </motion.div>\r\n </AnimatePresence>\r\n </div>\r\n </>\r\n )}\r\n </DrawerContent>\r\n </SubmenuContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <SubmenuContext.Provider\r\n value={{\r\n activeSubmenu,\r\n registerSubmenuContent,\r\n setActiveSubmenu,\r\n setSubmenuTitle,\r\n submenuTitle,\r\n }}>\r\n <DropdownMenuContent\r\n data-slot='drop-drawer-content'\r\n align='end'\r\n sideOffset={4}\r\n className={cn(styles.desktopContent, className)}\r\n {...(props as React.ComponentProps<typeof DropdownMenuContent>)}>\r\n {children}\r\n </DropdownMenuContent>\r\n </SubmenuContext.Provider>\r\n );\r\n}\r\n\r\n/**\r\n * Renders an actionable item inside the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI menu item on desktop and a keyboard-accessible `<div>` on mobile\r\n * - Built on Base UI Menu and Drawer close primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerItem icon={<ChevronRightIcon />}>Account</DropDrawerItem>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerItem({\r\n className,\r\n children,\r\n closeOnClick,\r\n disabled,\r\n icon,\r\n inset,\r\n onClick,\r\n onSelect,\r\n ...props\r\n}: SharedDropDrawerItemProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return false;\r\n }, []);\r\n\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n return;\r\n }\r\n\r\n const timer = globalThis.window.setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => globalThis.window.clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n const handleSelect = React.useCallback(\r\n (event: Event): void => {\r\n if (!disabled) {\r\n onSelect?.(event);\r\n }\r\n },\r\n [disabled, onSelect],\r\n );\r\n\r\n if (isMobile) {\r\n const handleClick: React.MouseEventHandler<HTMLDivElement> = (event): void => {\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n handleSelect(event.nativeEvent);\r\n };\r\n\r\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event): void => {\r\n if (event.key !== \"Enter\" && event.key !== \" \") {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.currentTarget.click();\r\n };\r\n\r\n const content = (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-item'\r\n data-disabled={disabled}\r\n data-inset={inset}\r\n role='menuitem'\r\n tabIndex={disabled ? -1 : 0}\r\n className={cn(\r\n styles.mobileItem,\r\n !isInsideGroup && styles.mobileStandaloneItem,\r\n isInsideGroup && styles.mobileGroupedItem,\r\n inset && styles.inset,\r\n className,\r\n )}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n aria-disabled={disabled}\r\n {...props}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n {icon ? <div className={styles.itemIcon}>{icon}</div> : null}\r\n </div>\r\n );\r\n\r\n const parentSubmenuId = props[\"data-parent-submenu-id\"] ?? props[\"data-parent-submenu\"];\r\n\r\n if (parentSubmenuId) {\r\n return content;\r\n }\r\n\r\n return (\r\n <BaseDrawer.Close\r\n nativeButton={false}\r\n render={content}\r\n />\r\n );\r\n }\r\n\r\n const handleDesktopClick: React.MouseEventHandler<HTMLElement> = (event): void => {\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n onClick?.(event);\r\n handleSelect(event.nativeEvent);\r\n };\r\n\r\n return (\r\n <DropdownMenuItem\r\n data-slot='drop-drawer-item'\r\n data-inset={inset}\r\n className={cn(styles.desktopItem, className)}\r\n closeOnClick={closeOnClick}\r\n disabled={disabled}\r\n inset={inset}\r\n onClick={handleDesktopClick}\r\n {...props}>\r\n <div className={styles.itemRow}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n {icon ? <div className={styles.itemIcon}>{icon}</div> : null}\r\n </div>\r\n </DropdownMenuItem>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a visual separator between desktop drop drawer sections.\r\n *\r\n * @remarks\r\n * - Renders a separator only in desktop dropdown mode\r\n * - Built on Base UI Menu separator primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSeparator />\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSeparator({\r\n className,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuSeparator>): React.JSX.Element | null {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSeparator\r\n data-slot='drop-drawer-separator'\r\n className={className}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\n/**\r\n * Renders a section label for the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a drawer title on mobile and a menu label on desktop\r\n * - Built on Base UI Drawer and Menu primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerLabel>Actions</DropDrawerLabel>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerLabel({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuLabel> | React.ComponentProps<typeof DrawerTitle>): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerHeader className={styles.mobileLabelWrapper}>\r\n <DrawerTitle\r\n data-slot='drop-drawer-label'\r\n className={cn(styles.mobileLabel, className)}\r\n {...(props as React.ComponentProps<typeof DrawerTitle>)}>\r\n {children}\r\n </DrawerTitle>\r\n </DrawerHeader>\r\n ) : (\r\n <DropdownMenuLabel\r\n data-slot='drop-drawer-label'\r\n className={className}\r\n {...(props as React.ComponentProps<typeof DropdownMenuLabel>)}>\r\n {children}\r\n </DropdownMenuLabel>\r\n );\r\n}\r\n\r\n/**\r\n * Renders footer content aligned to the bottom of the responsive surface.\r\n *\r\n * @remarks\r\n * - Renders a drawer footer on mobile and a styled `<div>` on desktop\r\n * - Built on Base UI Drawer primitives for mobile layouts\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerFooter>Signed in as Alex</DropDrawerFooter>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/drawer | Base UI Drawer Docs}\r\n */\r\nfunction DropDrawerFooter({\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerFooter> | React.ComponentProps<\"div\">): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n return isMobile ? (\r\n <DrawerFooter\r\n data-slot='drop-drawer-footer'\r\n className={cn(styles.mobileFooter, className)}\r\n {...(props as React.ComponentProps<typeof DrawerFooter>)}>\r\n {children}\r\n </DrawerFooter>\r\n ) : (\r\n <div\r\n data-slot='drop-drawer-footer'\r\n className={cn(styles.desktopFooter, className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a grouped collection of drop drawer items.\r\n *\r\n * @remarks\r\n * - Renders a Base UI menu group on desktop and a `<div role=\"group\">` on mobile\r\n * - Inserts mobile-only separators between adjacent children\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerGroup>\r\n * <DropDrawerItem>Profile</DropDrawerItem>\r\n * <DropDrawerItem>Billing</DropDrawerItem>\r\n * </DropDrawerGroup>\r\n * ```\r\n *\r\n * @see {@link https://developer.mozilla.org/docs/Web/Accessibility/ARIA/Roles/group_role | ARIA Group Role}\r\n */\r\nfunction DropDrawerGroup({className, children, ...props}: React.ComponentProps<\"div\"> & {children: React.ReactNode}): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n const childrenWithSeparators = React.useMemo(() => {\r\n if (!isMobile) {\r\n return children;\r\n }\r\n\r\n const childArray = React.Children.toArray(children);\r\n const filteredChildren = childArray.filter((child) => !(React.isValidElement(child) && child.type === DropDrawerSeparator));\r\n\r\n return filteredChildren.flatMap((child, index) => {\r\n if (index === filteredChildren.length - 1) {\r\n return [child];\r\n }\r\n\r\n return [\r\n child,\r\n <div\r\n key={`separator-${index}`}\r\n className={styles.mobileGroupSeparator}\r\n aria-hidden='true'\r\n />,\r\n ];\r\n });\r\n }, [children, isMobile]);\r\n\r\n return isMobile ? (\r\n <div\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n role='group'\r\n className={cn(styles.mobileGroup, className)}\r\n {...props}>\r\n {childrenWithSeparators}\r\n </div>\r\n ) : (\r\n <BaseMenu.Group\r\n data-drop-drawer-group\r\n data-slot='drop-drawer-group'\r\n className={className}\r\n {...(props as React.ComponentPropsWithoutRef<typeof BaseMenu.Group>)}>\r\n {children}\r\n </BaseMenu.Group>\r\n );\r\n}\r\n\r\n/**\r\n * Renders a submenu root within the drop drawer surface.\r\n *\r\n * @remarks\r\n * - Renders a Base UI submenu on desktop and a mobile-aware container on small screens\r\n * - Registers submenu content for animated mobile drill-down navigation\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSub>\r\n * <DropDrawerSubTrigger>More</DropDrawerSubTrigger>\r\n * <DropDrawerSubContent>\r\n * <DropDrawerItem>Sub item</DropDrawerItem>\r\n * </DropDrawerSubContent>\r\n * </DropDrawerSub>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSub({\r\n children,\r\n id,\r\n ...props\r\n}: React.ComponentPropsWithoutRef<typeof DropdownMenuSub> & {children?: React.ReactNode; id?: string}): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const {registerSubmenuContent} = React.useContext(SubmenuContext);\r\n const generatedId = React.useId();\r\n const submenuId = id || generatedId;\r\n\r\n React.useEffect(() => {\r\n if (!registerSubmenuContent) {\r\n return;\r\n }\r\n\r\n const contentItems: Array<React.ReactNode> = [];\r\n\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement(child) && child.type === DropDrawerSubContent) {\r\n const childElement = child as React.ReactElement<{children?: React.ReactNode}>;\r\n\r\n React.Children.forEach(childElement.props.children, (contentChild) => {\r\n contentItems.push(contentChild);\r\n });\r\n }\r\n });\r\n\r\n if (contentItems.length > 0) {\r\n registerSubmenuContent(submenuId, contentItems);\r\n }\r\n }, [children, registerSubmenuContent, submenuId]);\r\n\r\n if (isMobile) {\r\n const processedChildren = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) {\r\n return child;\r\n }\r\n\r\n if (child.type === DropDrawerSubTrigger || child.type === DropDrawerSubContent) {\r\n return React.cloneElement(child as React.ReactElement<MobileSubmenuDataAttributes>, {\r\n \"data-parent-submenu\": submenuId,\r\n \"data-parent-submenu-id\": submenuId,\r\n \"data-submenu-id\": submenuId,\r\n });\r\n }\r\n\r\n return child;\r\n });\r\n\r\n return (\r\n <div\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n id={submenuId}>\r\n {processedChildren}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSub\r\n data-slot='drop-drawer-sub'\r\n data-submenu-id={submenuId}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSub>\r\n );\r\n}\r\n\r\ninterface DropDrawerSubTriggerProps\r\n extends Omit<React.ComponentPropsWithoutRef<typeof DropdownMenuSubTrigger>, \"children\" | \"onClick\">, MobileSubmenuDataAttributes {\r\n /**\r\n * Trigger contents.\r\n * @default undefined\r\n */\r\n children?: React.ReactNode;\r\n /**\r\n * Additional CSS classes merged with the trigger styles.\r\n * @default undefined\r\n */\r\n className?: string;\r\n /**\r\n * Whether to apply inset spacing to align the trigger with grouped content.\r\n * @default undefined\r\n */\r\n inset?: boolean;\r\n /**\r\n * Mouse click handler invoked before submenu navigation occurs.\r\n * @default undefined\r\n */\r\n onClick?: React.MouseEventHandler<HTMLElement>;\r\n}\r\n\r\n/**\r\n * Renders the trigger that opens a nested submenu.\r\n *\r\n * @remarks\r\n * - Renders a Base UI submenu trigger on desktop and a keyboard-accessible `<div>` on mobile\r\n * - Built on Base UI Menu submenu primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSubTrigger>Advanced</DropDrawerSubTrigger>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSubTrigger({className, inset, children, onClick, ...props}: DropDrawerSubTriggerProps): React.JSX.Element {\r\n const {isMobile} = useDropDrawerContext();\r\n const {navigateToSubmenu} = React.useContext(SubmenuContext);\r\n\r\n const isInGroup = React.useCallback((element: HTMLElement | null): boolean => {\r\n if (!element) {\r\n return false;\r\n }\r\n\r\n let parent = element.parentElement;\r\n\r\n while (parent) {\r\n if (parent.hasAttribute(\"data-drop-drawer-group\")) {\r\n return true;\r\n }\r\n\r\n parent = parent.parentElement;\r\n }\r\n\r\n return false;\r\n }, []);\r\n\r\n const itemRef = React.useRef<HTMLDivElement>(null);\r\n const [isInsideGroup, setIsInsideGroup] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (!isMobile) {\r\n return;\r\n }\r\n\r\n const timer = globalThis.window.setTimeout(() => {\r\n if (itemRef.current) {\r\n setIsInsideGroup(isInGroup(itemRef.current));\r\n }\r\n }, 0);\r\n\r\n return () => globalThis.window.clearTimeout(timer);\r\n }, [isInGroup, isMobile]);\r\n\r\n if (isMobile) {\r\n const navigate = (eventTarget: HTMLElement): void => {\r\n let submenuId: string | null = null;\r\n const closestElement = eventTarget.closest(\"[data-submenu-id]\");\r\n const closestId = closestElement?.getAttribute(\"data-submenu-id\");\r\n\r\n if (closestId) {\r\n submenuId = closestId;\r\n }\r\n\r\n if (!submenuId) {\r\n submenuId = props[\"data-parent-submenu-id\"] ?? props[\"data-parent-submenu\"] ?? null;\r\n }\r\n\r\n if (!submenuId) {\r\n return;\r\n }\r\n\r\n const title = typeof children === \"string\" ? children : MOBILE_SUBMENU_TITLE;\r\n navigateToSubmenu?.(submenuId, title);\r\n };\r\n\r\n const handleClick: React.MouseEventHandler<HTMLDivElement> = (event): void => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n onClick?.(event);\r\n navigate(event.currentTarget);\r\n };\r\n\r\n const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (event): void => {\r\n if (event.key !== \"Enter\" && event.key !== \" \") {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.currentTarget.click();\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n role='menuitem'\r\n tabIndex={0}\r\n className={cn(\r\n styles.mobileItem,\r\n !isInsideGroup && styles.mobileStandaloneItem,\r\n isInsideGroup && styles.mobileGroupedItem,\r\n inset && styles.inset,\r\n className,\r\n )}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n {...props}>\r\n <div className={styles.itemChildren}>{children}</div>\r\n <ChevronRightIcon className={styles.chevron} />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <DropdownMenuSubTrigger\r\n data-slot='drop-drawer-sub-trigger'\r\n data-inset={inset}\r\n className={className}\r\n inset={inset}\r\n onClick={onClick}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubTrigger>\r\n );\r\n}\r\n\r\n/**\r\n * Renders the content region for a nested submenu.\r\n *\r\n * @remarks\r\n * - Renders only in desktop dropdown mode\r\n * - Built on Base UI Menu submenu popup primitives\r\n *\r\n * @example\r\n * ```tsx\r\n * <DropDrawerSubContent>\r\n * <DropDrawerItem>Details</DropDrawerItem>\r\n * </DropDrawerSubContent>\r\n * ```\r\n *\r\n * @see {@link https://base-ui.com/react/components/menu | Base UI Menu Docs}\r\n */\r\nfunction DropDrawerSubContent({\r\n className,\r\n sideOffset = 4,\r\n children,\r\n ...props\r\n}: React.ComponentProps<typeof DropdownMenuSubContent>): React.JSX.Element | null {\r\n const {isMobile} = useDropDrawerContext();\r\n\r\n if (isMobile) {\r\n return null;\r\n }\r\n\r\n return (\r\n <DropdownMenuSubContent\r\n data-slot='drop-drawer-sub-content'\r\n sideOffset={sideOffset}\r\n className={cn(styles.dropdownSubContent, className)}\r\n {...props}>\r\n {children}\r\n </DropdownMenuSubContent>\r\n );\r\n}\r\n\r\nDropDrawer.displayName = \"DropDrawer\";\r\nDropDrawerTrigger.displayName = \"DropDrawerTrigger\";\r\nDropDrawerContent.displayName = \"DropDrawerContent\";\r\nDropDrawerItem.displayName = \"DropDrawerItem\";\r\nDropDrawerSeparator.displayName = \"DropDrawerSeparator\";\r\nDropDrawerLabel.displayName = \"DropDrawerLabel\";\r\nDropDrawerFooter.displayName = \"DropDrawerFooter\";\r\nDropDrawerGroup.displayName = \"DropDrawerGroup\";\r\nDropDrawerSub.displayName = \"DropDrawerSub\";\r\nDropDrawerSubTrigger.displayName = \"DropDrawerSubTrigger\";\r\nDropDrawerSubContent.displayName = \"DropDrawerSubContent\";\r\n\r\nexport {\r\n DropDrawer,\r\n DropDrawerContent,\r\n DropDrawerFooter,\r\n DropDrawerGroup,\r\n DropDrawerItem,\r\n DropDrawerLabel,\r\n DropDrawerSeparator,\r\n DropDrawerSub,\r\n DropDrawerSubContent,\r\n DropDrawerSubTrigger,\r\n DropDrawerTrigger,\r\n};\r\n"],"names":["MOBILE_MENU_TITLE","MOBILE_SUBMENU_TITLE","MOBILE_BACK_LABEL","DropDrawerContext","React","useDropDrawerContext","context","Error","Drawer","BaseDrawer","DrawerPortal","DrawerTrigger","props","asChild","children","className","render","otherProps","renderProp","useRender","mergeProps","undefined","DrawerOverlay","cn","styles","DrawerContent","DrawerHeader","DrawerFooter","DrawerTitle","DropdownMenu","BaseMenu","DropdownMenuSub","DropdownMenuTrigger","DropdownMenuContent","DropdownMenuItem","inset","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent","SubmenuContext","DropDrawer","isMobile","useIsMobile","DropDrawerTrigger","DropDrawerContent","activeSubmenu","setActiveSubmenu","submenuTitle","setSubmenuTitle","submenuStack","setSubmenuStack","animationDirection","setAnimationDirection","submenuContentRef","Map","navigateToSubmenu","id","title","previousStack","goBack","newStack","previousSubmenu","registerSubmenuContent","content","extractSubmenuContent","elements","targetId","result","findSubmenuContent","node","element","DropDrawerSub","elementId","dataSubmenuId","child","DropDrawerSubContent","subContentElement","contentChild","getSubmenuContent","cachedContent","submenuContent","variants","direction","transition","ChevronLeftIcon","AnimatePresence","motion","DropDrawerItem","closeOnClick","disabled","icon","onClick","onSelect","isInGroup","parent","itemRef","isInsideGroup","setIsInsideGroup","timer","globalThis","handleSelect","event","handleClick","handleKeyDown","parentSubmenuId","handleDesktopClick","DropDrawerSeparator","DropDrawerLabel","DropDrawerFooter","DropDrawerGroup","childrenWithSeparators","childArray","filteredChildren","index","generatedId","submenuId","contentItems","childElement","processedChildren","DropDrawerSubTrigger","navigate","eventTarget","closestElement","closestId","sideOffset"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./dropdrawer_module.css";
|
|
2
|
+
const dropdrawer_module = {
|
|
3
|
+
drawerOverlay: "drawerOverlay-FGEeTq",
|
|
4
|
+
drawerViewport: "drawerViewport-TlEqEQ",
|
|
5
|
+
drawerContent: "drawerContent-WQbO66",
|
|
6
|
+
drawerInnerContent: "drawerInnerContent-Y3I8oJ",
|
|
7
|
+
drawerHandle: "drawerHandle-sRMRMM",
|
|
8
|
+
drawerHeader: "drawerHeader-O5p056",
|
|
9
|
+
drawerTitle: "drawerTitle-dSviUE",
|
|
10
|
+
drawerFooter: "drawerFooter-qY7asZ",
|
|
11
|
+
mobileFooter: "mobileFooter-f20nGx",
|
|
12
|
+
desktopFooter: "desktopFooter-ONeD9L",
|
|
13
|
+
dropdownPositioner: "dropdownPositioner-W0xcuV",
|
|
14
|
+
desktopContent: "desktopContent-RZKVPR",
|
|
15
|
+
dropdownContent: "dropdownContent-fE8EQa",
|
|
16
|
+
dropdownSubContent: "dropdownSubContent-OV24Od",
|
|
17
|
+
desktopItem: "desktopItem-b0ExOL",
|
|
18
|
+
desktopSubTrigger: "desktopSubTrigger-Up6mAV",
|
|
19
|
+
desktopLabel: "desktopLabel-tFggqC",
|
|
20
|
+
desktopSeparator: "desktopSeparator-plLeiH",
|
|
21
|
+
mobileContent: "mobileContent-YJOYyH",
|
|
22
|
+
mobileHeaderRow: "mobileHeaderRow-qNFUjI",
|
|
23
|
+
backButton: "backButton-Z7hq2B",
|
|
24
|
+
mobileItem: "mobileItem-oAK1bl",
|
|
25
|
+
mobileMainViewport: "mobileMainViewport-n9VQaa",
|
|
26
|
+
mobileViewport: "mobileViewport-Gl4NCJ",
|
|
27
|
+
mobileMotionPanel: "mobileMotionPanel-OvrSdM",
|
|
28
|
+
screenReaderOnlyHeader: "screenReaderOnlyHeader-R6L8Ih",
|
|
29
|
+
mobileStandaloneItem: "mobileStandaloneItem-RZQ_8s",
|
|
30
|
+
mobileGroupedItem: "mobileGroupedItem-aRfEd_",
|
|
31
|
+
mobileLabelWrapper: "mobileLabelWrapper-nJJ5Li",
|
|
32
|
+
mobileLabel: "mobileLabel-pUqmzL",
|
|
33
|
+
mobileGroup: "mobileGroup-TRwLzU",
|
|
34
|
+
mobileGroupSeparator: "mobileGroupSeparator-DBNAEM",
|
|
35
|
+
itemChildren: "itemChildren-KW73hd",
|
|
36
|
+
itemRow: "itemRow-EvnMNv",
|
|
37
|
+
chevron: "chevron-W6muV5",
|
|
38
|
+
itemIcon: "itemIcon-faT4mo",
|
|
39
|
+
inset: "inset-MwMTbk"
|
|
40
|
+
};
|
|
41
|
+
export default dropdrawer_module;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=dropdrawer.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components/ui/dropdrawer.module.js","sources":["../../../src/components/ui/dropdrawer.module.css"],"sourcesContent":["// extracted by LIB_CSS_EXTRACT_LOADER\nimport \"./dropdrawer_module.css\"\nexport default {\"drawerOverlay\":\"drawerOverlay-FGEeTq\",\"drawerViewport\":\"drawerViewport-TlEqEQ\",\"drawerContent\":\"drawerContent-WQbO66\",\"drawerInnerContent\":\"drawerInnerContent-Y3I8oJ\",\"drawerHandle\":\"drawerHandle-sRMRMM\",\"drawerHeader\":\"drawerHeader-O5p056\",\"drawerTitle\":\"drawerTitle-dSviUE\",\"drawerFooter\":\"drawerFooter-qY7asZ\",\"mobileFooter\":\"mobileFooter-f20nGx\",\"desktopFooter\":\"desktopFooter-ONeD9L\",\"dropdownPositioner\":\"dropdownPositioner-W0xcuV\",\"desktopContent\":\"desktopContent-RZKVPR\",\"dropdownContent\":\"dropdownContent-fE8EQa\",\"dropdownSubContent\":\"dropdownSubContent-OV24Od\",\"desktopItem\":\"desktopItem-b0ExOL\",\"desktopSubTrigger\":\"desktopSubTrigger-Up6mAV\",\"desktopLabel\":\"desktopLabel-tFggqC\",\"desktopSeparator\":\"desktopSeparator-plLeiH\",\"mobileContent\":\"mobileContent-YJOYyH\",\"mobileHeaderRow\":\"mobileHeaderRow-qNFUjI\",\"backButton\":\"backButton-Z7hq2B\",\"mobileItem\":\"mobileItem-oAK1bl\",\"mobileMainViewport\":\"mobileMainViewport-n9VQaa\",\"mobileViewport\":\"mobileViewport-Gl4NCJ\",\"mobileMotionPanel\":\"mobileMotionPanel-OvrSdM\",\"screenReaderOnlyHeader\":\"screenReaderOnlyHeader-R6L8Ih\",\"mobileStandaloneItem\":\"mobileStandaloneItem-RZQ_8s\",\"mobileGroupedItem\":\"mobileGroupedItem-aRfEd_\",\"mobileLabelWrapper\":\"mobileLabelWrapper-nJJ5Li\",\"mobileLabel\":\"mobileLabel-pUqmzL\",\"mobileGroup\":\"mobileGroup-TRwLzU\",\"mobileGroupSeparator\":\"mobileGroupSeparator-DBNAEM\",\"itemChildren\":\"itemChildren-KW73hd\",\"itemRow\":\"itemRow-EvnMNv\",\"chevron\":\"chevron-W6muV5\",\"itemIcon\":\"itemIcon-faT4mo\",\"inset\":\"inset-MwMTbk\"};"],"names":[],"mappings":";AAEA,0BAAe;IAAC,eAAgB;IAAuB,gBAAiB;IAAwB,eAAgB;IAAuB,oBAAqB;IAA4B,cAAe;IAAsB,cAAe;IAAsB,aAAc;IAAqB,cAAe;IAAsB,cAAe;IAAsB,eAAgB;IAAuB,oBAAqB;IAA4B,gBAAiB;IAAwB,iBAAkB;IAAyB,oBAAqB;IAA4B,aAAc;IAAqB,mBAAoB;IAA2B,cAAe;IAAsB,kBAAmB;IAA0B,eAAgB;IAAuB,iBAAkB;IAAyB,YAAa;IAAoB,YAAa;IAAoB,oBAAqB;IAA4B,gBAAiB;IAAwB,mBAAoB;IAA2B,wBAAyB;IAAgC,sBAAuB;IAA8B,mBAAoB;IAA2B,oBAAqB;IAA4B,aAAc;IAAqB,aAAc;IAAqB,sBAAuB;IAA8B,cAAe;IAAsB,SAAU;IAAiB,SAAU;IAAiB,UAAW;IAAkB,OAAQ;AAAc"}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
.drawerOverlay-FGEeTq {
|
|
2
|
+
transition: opacity var(--ac-transition-normal);
|
|
3
|
+
z-index: 50;
|
|
4
|
+
background: #0000008c;
|
|
5
|
+
position: fixed;
|
|
6
|
+
inset: 0;
|
|
7
|
+
|
|
8
|
+
@supports (-webkit-touch-callout: none) {
|
|
9
|
+
position: absolute;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.drawerOverlay-FGEeTq[data-ending-style], .drawerOverlay-FGEeTq[data-starting-style] {
|
|
14
|
+
opacity: 0;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.drawerViewport-TlEqEQ {
|
|
18
|
+
pointer-events: none;
|
|
19
|
+
z-index: 51;
|
|
20
|
+
justify-content: center;
|
|
21
|
+
align-items: flex-end;
|
|
22
|
+
display: flex;
|
|
23
|
+
position: fixed;
|
|
24
|
+
inset: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.drawerContent-WQbO66 {
|
|
28
|
+
background: var(--ac-popover);
|
|
29
|
+
border: 1px solid var(--ac-border);
|
|
30
|
+
border-radius: var(--ac-radius-lg) var(--ac-radius-lg) 0 0;
|
|
31
|
+
color: var(--ac-popover-foreground);
|
|
32
|
+
pointer-events: auto;
|
|
33
|
+
max-height: 95vh;
|
|
34
|
+
transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);
|
|
35
|
+
border-bottom: 0;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
width: min(100%, 48rem);
|
|
38
|
+
margin-top: 6rem;
|
|
39
|
+
padding: 1rem 1rem 1.5rem;
|
|
40
|
+
display: flex;
|
|
41
|
+
position: relative;
|
|
42
|
+
inset-inline: 0;
|
|
43
|
+
box-shadow: 0 -16px 40px -16px #00000059;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.drawerContent-WQbO66[data-ending-style], .drawerContent-WQbO66[data-starting-style] {
|
|
47
|
+
opacity: 0;
|
|
48
|
+
transform: translateY(1rem);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.drawerInnerContent-Y3I8oJ {
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
flex: 1;
|
|
54
|
+
min-height: 0;
|
|
55
|
+
display: flex;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.drawerHandle-sRMRMM {
|
|
59
|
+
background: var(--ac-border);
|
|
60
|
+
border-radius: 9999px;
|
|
61
|
+
width: 4rem;
|
|
62
|
+
height: .25rem;
|
|
63
|
+
margin: 0 auto 1rem;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.drawerHeader-O5p056 {
|
|
67
|
+
text-align: center;
|
|
68
|
+
gap: .375rem;
|
|
69
|
+
padding: 0 0 1rem;
|
|
70
|
+
display: grid;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.drawerTitle-dSviUE {
|
|
74
|
+
font-size: var(--ac-text-lg);
|
|
75
|
+
letter-spacing: -.02em;
|
|
76
|
+
font-weight: 600;
|
|
77
|
+
line-height: 1.2;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.drawerFooter-qY7asZ, .mobileFooter-f20nGx {
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
gap: .5rem;
|
|
83
|
+
margin-top: auto;
|
|
84
|
+
padding-top: 1rem;
|
|
85
|
+
display: flex;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.desktopFooter-ONeD9L {
|
|
89
|
+
padding: .5rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.dropdownPositioner-W0xcuV {
|
|
93
|
+
z-index: 50;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.desktopContent-RZKVPR, .dropdownContent-fE8EQa, .dropdownSubContent-OV24Od {
|
|
97
|
+
background: var(--ac-popover);
|
|
98
|
+
border: 1px solid var(--ac-border);
|
|
99
|
+
border-radius: var(--ac-radius-md);
|
|
100
|
+
color: var(--ac-popover-foreground);
|
|
101
|
+
min-width: 13.75rem;
|
|
102
|
+
transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);
|
|
103
|
+
overflow: hidden auto;
|
|
104
|
+
box-shadow: 0 16px 40px -16px #00000059;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.desktopContent-RZKVPR[data-ending-style], .desktopContent-RZKVPR[data-starting-style], .dropdownContent-fE8EQa[data-ending-style], .dropdownContent-fE8EQa[data-starting-style], .dropdownSubContent-OV24Od[data-ending-style], .dropdownSubContent-OV24Od[data-starting-style] {
|
|
108
|
+
opacity: 0;
|
|
109
|
+
transform: scale(.96);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.desktopContent-RZKVPR, .dropdownContent-fE8EQa {
|
|
113
|
+
max-height: min(70vh,var(--available-height, 70vh));
|
|
114
|
+
padding: .25rem;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.dropdownSubContent-OV24Od {
|
|
118
|
+
max-height: min(60vh,var(--available-height, 60vh));
|
|
119
|
+
padding: .25rem;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.desktopItem-b0ExOL, .desktopSubTrigger-Up6mAV {
|
|
123
|
+
border-radius: var(--ac-radius-sm);
|
|
124
|
+
color: inherit;
|
|
125
|
+
cursor: default;
|
|
126
|
+
font-size: var(--ac-text-sm);
|
|
127
|
+
-webkit-user-select: none;
|
|
128
|
+
user-select: none;
|
|
129
|
+
outline: none;
|
|
130
|
+
align-items: center;
|
|
131
|
+
gap: .5rem;
|
|
132
|
+
width: 100%;
|
|
133
|
+
min-height: 2rem;
|
|
134
|
+
padding: .375rem .5rem;
|
|
135
|
+
display: flex;
|
|
136
|
+
position: relative;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.desktopItem-b0ExOL[data-highlighted], .desktopSubTrigger-Up6mAV[data-highlighted], .desktopSubTrigger-Up6mAV[data-popup-open] {
|
|
140
|
+
background: var(--ac-accent);
|
|
141
|
+
color: var(--ac-accent-foreground);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.desktopItem-b0ExOL[data-disabled], .desktopSubTrigger-Up6mAV[data-disabled] {
|
|
145
|
+
opacity: .5;
|
|
146
|
+
pointer-events: none;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.desktopLabel-tFggqC {
|
|
150
|
+
font-size: var(--ac-text-sm);
|
|
151
|
+
padding: .375rem .5rem;
|
|
152
|
+
font-weight: 600;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.desktopSeparator-plLeiH {
|
|
156
|
+
background: var(--ac-border);
|
|
157
|
+
height: 1px;
|
|
158
|
+
margin: .25rem -.25rem;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.mobileContent-YJOYyH {
|
|
162
|
+
max-height: 90vh;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.mobileHeaderRow-qNFUjI {
|
|
166
|
+
align-items: center;
|
|
167
|
+
gap: .5rem;
|
|
168
|
+
display: flex;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.backButton-Z7hq2B {
|
|
172
|
+
color: inherit;
|
|
173
|
+
background: none;
|
|
174
|
+
border: 0;
|
|
175
|
+
border-radius: 9999px;
|
|
176
|
+
justify-content: center;
|
|
177
|
+
align-items: center;
|
|
178
|
+
width: 2rem;
|
|
179
|
+
height: 2rem;
|
|
180
|
+
padding: .25rem;
|
|
181
|
+
display: inline-flex;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.backButton-Z7hq2B:hover {
|
|
185
|
+
background: color-mix(in oklch,var(--ac-muted),transparent 50%);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.backButton-Z7hq2B:focus-visible, .mobileItem-oAK1bl:focus-visible {
|
|
189
|
+
outline: 2px solid var(--ac-ring);
|
|
190
|
+
outline-offset: 2px;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.mobileMainViewport-n9VQaa, .mobileViewport-Gl4NCJ {
|
|
194
|
+
overflow-y: auto;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.mobileViewport-Gl4NCJ {
|
|
198
|
+
flex: 1;
|
|
199
|
+
max-height: 70vh;
|
|
200
|
+
position: relative;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.mobileMainViewport-n9VQaa {
|
|
204
|
+
max-height: 70vh;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.mobileMotionPanel-OvrSdM {
|
|
208
|
+
width: 100%;
|
|
209
|
+
min-height: 100%;
|
|
210
|
+
padding-bottom: 1.5rem;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.screenReaderOnlyHeader-R6L8Ih {
|
|
214
|
+
clip: rect(0,0,0,0);
|
|
215
|
+
white-space: nowrap;
|
|
216
|
+
border: 0;
|
|
217
|
+
width: 1px;
|
|
218
|
+
height: 1px;
|
|
219
|
+
margin: -1px;
|
|
220
|
+
padding: 0;
|
|
221
|
+
position: absolute;
|
|
222
|
+
overflow: hidden;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.mobileItem-oAK1bl {
|
|
226
|
+
color: inherit;
|
|
227
|
+
cursor: pointer;
|
|
228
|
+
text-align: left;
|
|
229
|
+
background: none;
|
|
230
|
+
border: 0;
|
|
231
|
+
justify-content: space-between;
|
|
232
|
+
align-items: center;
|
|
233
|
+
width: 100%;
|
|
234
|
+
padding: 1rem;
|
|
235
|
+
display: flex;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.mobileStandaloneItem-RZQ_8s {
|
|
239
|
+
background: var(--ac-muted);
|
|
240
|
+
border-radius: var(--ac-radius-md);
|
|
241
|
+
margin: .375rem .5rem;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.mobileGroupedItem-aRfEd_ {
|
|
245
|
+
background: none;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.mobileLabelWrapper-nJJ5Li {
|
|
249
|
+
padding: 0;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.mobileLabel-pUqmzL {
|
|
253
|
+
color: var(--ac-muted-foreground);
|
|
254
|
+
font-size: var(--ac-text-sm);
|
|
255
|
+
padding: .5rem 1rem;
|
|
256
|
+
font-weight: 500;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.mobileGroup-TRwLzU {
|
|
260
|
+
background: var(--ac-muted);
|
|
261
|
+
border-radius: var(--ac-radius-xl);
|
|
262
|
+
margin: .75rem .5rem;
|
|
263
|
+
overflow: hidden;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.mobileGroupSeparator-DBNAEM {
|
|
267
|
+
background: var(--ac-border);
|
|
268
|
+
height: 1px;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.itemChildren-KW73hd, .itemRow-EvnMNv {
|
|
272
|
+
align-items: center;
|
|
273
|
+
gap: .5rem;
|
|
274
|
+
display: flex;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.itemRow-EvnMNv {
|
|
278
|
+
justify-content: space-between;
|
|
279
|
+
width: 100%;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
.chevron-W6muV5, .itemIcon-faT4mo {
|
|
283
|
+
flex-shrink: 0;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.chevron-W6muV5 {
|
|
287
|
+
width: 1rem;
|
|
288
|
+
height: 1rem;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
.inset-MwMTbk {
|
|
292
|
+
padding-left: 2rem;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.mobileItem-oAK1bl[data-disabled="true"] {
|
|
296
|
+
opacity: .5;
|
|
297
|
+
pointer-events: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
@media (width >= 640px) {
|
|
301
|
+
.drawerHeader-O5p056 {
|
|
302
|
+
text-align: left;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
/*# sourceMappingURL=dropdrawer_module.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack://./home/runner/work/arolariu.ro/arolariu.ro/packages/components/src/components/ui/dropdrawer.module.css","webpack://./src/components/ui/dropdrawer.module.css"],"names":[],"mappings":"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","sourcesContent":[".drawerOverlay{background:rgba(0,0,0,.55);inset:0;position:fixed;transition:opacity var(--ac-transition-normal);z-index:50;@supports (-webkit-touch-callout:none){position:absolute}}.drawerOverlay[data-ending-style],.drawerOverlay[data-starting-style]{opacity:0}.drawerViewport{align-items:flex-end;display:flex;inset:0;justify-content:center;pointer-events:none;position:fixed;z-index:51}.drawerContent{background:var(--ac-popover);border:1px solid var(--ac-border);border-bottom:0;border-radius:var(--ac-radius-lg) var(--ac-radius-lg) 0 0;box-shadow:0 -16px 40px -16px rgba(0,0,0,.35);color:var(--ac-popover-foreground);display:flex;flex-direction:column;inset-inline:0;margin-top:6rem;max-height:95vh;padding:1rem 1rem 1.5rem;pointer-events:auto;position:relative;transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal);width:min(100%,48rem)}.drawerContent[data-ending-style],.drawerContent[data-starting-style]{opacity:0;transform:translateY(1rem)}.drawerInnerContent{display:flex;flex:1;flex-direction:column;min-height:0}.drawerHandle{background:var(--ac-border);border-radius:9999px;height:.25rem;margin:0 auto 1rem;width:4rem}.drawerHeader{display:grid;gap:.375rem;padding:0 0 1rem;text-align:center}.drawerTitle{font-size:var(--ac-text-lg);font-weight:600;letter-spacing:-.02em;line-height:1.2}.drawerFooter,.mobileFooter{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;padding-top:1rem}.desktopFooter{padding:.5rem}.dropdownPositioner{z-index:50}.desktopContent,.dropdownContent,.dropdownSubContent{background:var(--ac-popover);border:1px solid var(--ac-border);border-radius:var(--ac-radius-md);box-shadow:0 16px 40px -16px rgba(0,0,0,.35);color:var(--ac-popover-foreground);min-width:13.75rem;overflow:hidden auto;transition:opacity var(--ac-transition-normal),transform var(--ac-transition-normal)}.desktopContent[data-ending-style],.desktopContent[data-starting-style],.dropdownContent[data-ending-style],.dropdownContent[data-starting-style],.dropdownSubContent[data-ending-style],.dropdownSubContent[data-starting-style]{opacity:0;transform:scale(.96)}.desktopContent,.dropdownContent{max-height:min(70vh,var(--available-height,70vh));padding:.25rem}.dropdownSubContent{max-height:min(60vh,var(--available-height,60vh));padding:.25rem}.desktopItem,.desktopSubTrigger{align-items:center;border-radius:var(--ac-radius-sm);color:inherit;cursor:default;display:flex;font-size:var(--ac-text-sm);gap:.5rem;min-height:2rem;outline:none;padding:.375rem .5rem;position:relative;user-select:none;width:100%}.desktopItem[data-highlighted],.desktopSubTrigger[data-highlighted],.desktopSubTrigger[data-popup-open]{background:var(--ac-accent);color:var(--ac-accent-foreground)}.desktopItem[data-disabled],.desktopSubTrigger[data-disabled]{opacity:.5;pointer-events:none}.desktopLabel{font-size:var(--ac-text-sm);font-weight:600;padding:.375rem .5rem}.desktopSeparator{background:var(--ac-border);height:1px;margin:.25rem -.25rem}.mobileContent{max-height:90vh}.mobileHeaderRow{align-items:center;display:flex;gap:.5rem}.backButton{align-items:center;background:transparent;border:0;border-radius:9999px;color:inherit;display:inline-flex;height:2rem;justify-content:center;padding:.25rem;width:2rem}.backButton:hover{background:color-mix(in oklch,var(--ac-muted),transparent 50%)}.backButton:focus-visible,.mobileItem:focus-visible{outline:2px solid var(--ac-ring);outline-offset:2px}.mobileMainViewport,.mobileViewport{overflow-y:auto}.mobileViewport{flex:1;max-height:70vh;position:relative}.mobileMainViewport{max-height:70vh}.mobileMotionPanel{min-height:100%;padding-bottom:1.5rem;width:100%}.screenReaderOnlyHeader{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}.mobileItem{align-items:center;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;justify-content:space-between;padding:1rem;text-align:left;width:100%}.mobileStandaloneItem{background:var(--ac-muted);border-radius:var(--ac-radius-md);margin:.375rem .5rem}.mobileGroupedItem{background:transparent}.mobileLabelWrapper{padding:0}.mobileLabel{color:var(--ac-muted-foreground);font-size:var(--ac-text-sm);font-weight:500;padding:.5rem 1rem}.mobileGroup{background:var(--ac-muted);border-radius:var(--ac-radius-xl);margin:.75rem .5rem;overflow:hidden}.mobileGroupSeparator{background:var(--ac-border);height:1px}.itemChildren,.itemRow{align-items:center;display:flex;gap:.5rem}.itemRow{justify-content:space-between;width:100%}.chevron,.itemIcon{flex-shrink:0}.chevron{height:1rem;width:1rem}.inset{padding-left:2rem}.mobileItem[data-disabled=true]{opacity:.5;pointer-events:none}@media (min-width:640px){.drawerHeader{text-align:left}}",".drawerOverlay {\n transition: opacity var(--ac-transition-normal);\n z-index: 50;\n background: #0000008c;\n position: fixed;\n inset: 0;\n\n @supports (-webkit-touch-callout: none) {\n position: absolute;\n }\n}\n\n.drawerOverlay[data-ending-style], .drawerOverlay[data-starting-style] {\n opacity: 0;\n}\n\n.drawerViewport {\n pointer-events: none;\n z-index: 51;\n justify-content: center;\n align-items: flex-end;\n display: flex;\n position: fixed;\n inset: 0;\n}\n\n.drawerContent {\n background: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-lg) var(--ac-radius-lg) 0 0;\n color: var(--ac-popover-foreground);\n pointer-events: auto;\n max-height: 95vh;\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n border-bottom: 0;\n flex-direction: column;\n width: min(100%, 48rem);\n margin-top: 6rem;\n padding: 1rem 1rem 1.5rem;\n display: flex;\n position: relative;\n inset-inline: 0;\n box-shadow: 0 -16px 40px -16px #00000059;\n}\n\n.drawerContent[data-ending-style], .drawerContent[data-starting-style] {\n opacity: 0;\n transform: translateY(1rem);\n}\n\n.drawerInnerContent {\n flex-direction: column;\n flex: 1;\n min-height: 0;\n display: flex;\n}\n\n.drawerHandle {\n background: var(--ac-border);\n border-radius: 9999px;\n width: 4rem;\n height: .25rem;\n margin: 0 auto 1rem;\n}\n\n.drawerHeader {\n text-align: center;\n gap: .375rem;\n padding: 0 0 1rem;\n display: grid;\n}\n\n.drawerTitle {\n font-size: var(--ac-text-lg);\n letter-spacing: -.02em;\n font-weight: 600;\n line-height: 1.2;\n}\n\n.drawerFooter, .mobileFooter {\n flex-direction: column;\n gap: .5rem;\n margin-top: auto;\n padding-top: 1rem;\n display: flex;\n}\n\n.desktopFooter {\n padding: .5rem;\n}\n\n.dropdownPositioner {\n z-index: 50;\n}\n\n.desktopContent, .dropdownContent, .dropdownSubContent {\n background: var(--ac-popover);\n border: 1px solid var(--ac-border);\n border-radius: var(--ac-radius-md);\n color: var(--ac-popover-foreground);\n min-width: 13.75rem;\n transition: opacity var(--ac-transition-normal),transform var(--ac-transition-normal);\n overflow: hidden auto;\n box-shadow: 0 16px 40px -16px #00000059;\n}\n\n.desktopContent[data-ending-style], .desktopContent[data-starting-style], .dropdownContent[data-ending-style], .dropdownContent[data-starting-style], .dropdownSubContent[data-ending-style], .dropdownSubContent[data-starting-style] {\n opacity: 0;\n transform: scale(.96);\n}\n\n.desktopContent, .dropdownContent {\n max-height: min(70vh,var(--available-height, 70vh));\n padding: .25rem;\n}\n\n.dropdownSubContent {\n max-height: min(60vh,var(--available-height, 60vh));\n padding: .25rem;\n}\n\n.desktopItem, .desktopSubTrigger {\n border-radius: var(--ac-radius-sm);\n color: inherit;\n cursor: default;\n font-size: var(--ac-text-sm);\n -webkit-user-select: none;\n user-select: none;\n outline: none;\n align-items: center;\n gap: .5rem;\n width: 100%;\n min-height: 2rem;\n padding: .375rem .5rem;\n display: flex;\n position: relative;\n}\n\n.desktopItem[data-highlighted], .desktopSubTrigger[data-highlighted], .desktopSubTrigger[data-popup-open] {\n background: var(--ac-accent);\n color: var(--ac-accent-foreground);\n}\n\n.desktopItem[data-disabled], .desktopSubTrigger[data-disabled] {\n opacity: .5;\n pointer-events: none;\n}\n\n.desktopLabel {\n font-size: var(--ac-text-sm);\n padding: .375rem .5rem;\n font-weight: 600;\n}\n\n.desktopSeparator {\n background: var(--ac-border);\n height: 1px;\n margin: .25rem -.25rem;\n}\n\n.mobileContent {\n max-height: 90vh;\n}\n\n.mobileHeaderRow {\n align-items: center;\n gap: .5rem;\n display: flex;\n}\n\n.backButton {\n color: inherit;\n background: none;\n border: 0;\n border-radius: 9999px;\n justify-content: center;\n align-items: center;\n width: 2rem;\n height: 2rem;\n padding: .25rem;\n display: inline-flex;\n}\n\n.backButton:hover {\n background: color-mix(in oklch,var(--ac-muted),transparent 50%);\n}\n\n.backButton:focus-visible, .mobileItem:focus-visible {\n outline: 2px solid var(--ac-ring);\n outline-offset: 2px;\n}\n\n.mobileMainViewport, .mobileViewport {\n overflow-y: auto;\n}\n\n.mobileViewport {\n flex: 1;\n max-height: 70vh;\n position: relative;\n}\n\n.mobileMainViewport {\n max-height: 70vh;\n}\n\n.mobileMotionPanel {\n width: 100%;\n min-height: 100%;\n padding-bottom: 1.5rem;\n}\n\n.screenReaderOnlyHeader {\n clip: rect(0,0,0,0);\n white-space: nowrap;\n border: 0;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n position: absolute;\n overflow: hidden;\n}\n\n.mobileItem {\n color: inherit;\n cursor: pointer;\n text-align: left;\n background: none;\n border: 0;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n padding: 1rem;\n display: flex;\n}\n\n.mobileStandaloneItem {\n background: var(--ac-muted);\n border-radius: var(--ac-radius-md);\n margin: .375rem .5rem;\n}\n\n.mobileGroupedItem {\n background: none;\n}\n\n.mobileLabelWrapper {\n padding: 0;\n}\n\n.mobileLabel {\n color: var(--ac-muted-foreground);\n font-size: var(--ac-text-sm);\n padding: .5rem 1rem;\n font-weight: 500;\n}\n\n.mobileGroup {\n background: var(--ac-muted);\n border-radius: var(--ac-radius-xl);\n margin: .75rem .5rem;\n overflow: hidden;\n}\n\n.mobileGroupSeparator {\n background: var(--ac-border);\n height: 1px;\n}\n\n.itemChildren, .itemRow {\n align-items: center;\n gap: .5rem;\n display: flex;\n}\n\n.itemRow {\n justify-content: space-between;\n width: 100%;\n}\n\n.chevron, .itemIcon {\n flex-shrink: 0;\n}\n\n.chevron {\n width: 1rem;\n height: 1rem;\n}\n\n.inset {\n padding-left: 2rem;\n}\n\n.mobileItem[data-disabled=\"true\"] {\n opacity: .5;\n pointer-events: none;\n}\n\n@media (width >= 640px) {\n .drawerHeader {\n text-align: left;\n }\n}\n"],"sourceRoot":""}
|