@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
package/EXAMPLES.md
CHANGED
|
@@ -1,22 +1,61 @@
|
|
|
1
1
|
# 💡 Usage Examples for @arolariu/components
|
|
2
2
|
|
|
3
|
-
> **Real-world examples to get you building faster
|
|
3
|
+
> **Real-world examples to get you building faster.** Copy, paste, and customize these patterns for your projects.
|
|
4
4
|
|
|
5
5
|
## 🚀 Getting Started
|
|
6
6
|
|
|
7
7
|
### Installation & Setup
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
# Install the package
|
|
11
10
|
npm install @arolariu/components
|
|
12
11
|
|
|
13
|
-
#
|
|
14
|
-
npm install react react-dom
|
|
12
|
+
# Peer dependencies (install if not already in your project)
|
|
13
|
+
npm install react react-dom @base-ui/react motion
|
|
15
14
|
```
|
|
16
15
|
|
|
17
16
|
```tsx
|
|
18
|
-
//
|
|
17
|
+
// Import design tokens only once in your app entry point
|
|
19
18
|
import "@arolariu/components/styles";
|
|
19
|
+
|
|
20
|
+
// Components auto-load their CSS when imported
|
|
21
|
+
import { Button, Card } from "@arolariu/components";
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`@arolariu/components/styles` provides design tokens only. Component CSS is loaded automatically when components are imported.
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
// Use local CSS Modules for application-specific layout and composition
|
|
28
|
+
import styles from "./my-component.module.css";
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`tailwindcss` is not a peer dependency in v1.0.0.
|
|
32
|
+
|
|
33
|
+
### Useful Subpath Imports
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
import { Button } from "@arolariu/components/button";
|
|
37
|
+
import { useIsMobile } from "@arolariu/components/useIsMobile";
|
|
38
|
+
import { cn } from "@arolariu/components/utilities";
|
|
39
|
+
import { hexToHsl } from "@arolariu/components/color-conversion-utilities";
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Composition with the `render` Prop
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
import { Button } from "@arolariu/components";
|
|
46
|
+
|
|
47
|
+
// Use render prop instead of asChild
|
|
48
|
+
<Button render={<a href="/dashboard" />}>
|
|
49
|
+
Go to Dashboard
|
|
50
|
+
</Button>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```css
|
|
54
|
+
/* my-component.module.css */
|
|
55
|
+
.page {
|
|
56
|
+
min-height: 100vh;
|
|
57
|
+
padding: 2rem;
|
|
58
|
+
}
|
|
20
59
|
```
|
|
21
60
|
|
|
22
61
|
---
|
|
@@ -26,51 +65,91 @@ import "@arolariu/components/styles";
|
|
|
26
65
|
### Simple Card Layout
|
|
27
66
|
|
|
28
67
|
```tsx
|
|
68
|
+
import { Badge } from "@arolariu/components/badge";
|
|
69
|
+
import { Button } from "@arolariu/components/button";
|
|
29
70
|
import {
|
|
30
71
|
Card,
|
|
31
|
-
CardHeader,
|
|
32
|
-
CardTitle,
|
|
33
72
|
CardContent,
|
|
34
73
|
CardFooter,
|
|
74
|
+
CardHeader,
|
|
75
|
+
CardTitle,
|
|
35
76
|
} from "@arolariu/components/card";
|
|
36
|
-
import
|
|
37
|
-
import { Badge } from "@arolariu/components/badge";
|
|
77
|
+
import styles from "./product-card.module.css";
|
|
38
78
|
|
|
39
79
|
export function ProductCard() {
|
|
40
80
|
return (
|
|
41
|
-
<Card className=
|
|
81
|
+
<Card className={styles.card}>
|
|
42
82
|
<CardHeader>
|
|
43
|
-
<div className=
|
|
83
|
+
<div className={styles.headerRow}>
|
|
44
84
|
<CardTitle>Premium Plan</CardTitle>
|
|
45
85
|
<Badge variant="secondary">Popular</Badge>
|
|
46
86
|
</div>
|
|
47
87
|
</CardHeader>
|
|
48
|
-
<CardContent>
|
|
49
|
-
<p className=
|
|
50
|
-
$29<span className=
|
|
88
|
+
<CardContent className={styles.content}>
|
|
89
|
+
<p className={styles.price}>
|
|
90
|
+
$29<span className={styles.priceSuffix}>/month</span>
|
|
51
91
|
</p>
|
|
52
|
-
<ul className=
|
|
92
|
+
<ul className={styles.featureList}>
|
|
53
93
|
<li>✅ Unlimited projects</li>
|
|
54
94
|
<li>✅ Priority support</li>
|
|
55
95
|
<li>✅ Advanced analytics</li>
|
|
56
96
|
</ul>
|
|
57
97
|
</CardContent>
|
|
58
98
|
<CardFooter>
|
|
59
|
-
<Button className=
|
|
99
|
+
<Button className={styles.primaryAction}>Subscribe Now</Button>
|
|
60
100
|
</CardFooter>
|
|
61
101
|
</Card>
|
|
62
102
|
);
|
|
63
103
|
}
|
|
64
104
|
```
|
|
65
105
|
|
|
106
|
+
```css
|
|
107
|
+
/* product-card.module.css */
|
|
108
|
+
.card {
|
|
109
|
+
width: 24rem;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.headerRow {
|
|
113
|
+
display: flex;
|
|
114
|
+
align-items: center;
|
|
115
|
+
justify-content: space-between;
|
|
116
|
+
gap: 1rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.content {
|
|
120
|
+
display: grid;
|
|
121
|
+
gap: 1rem;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.price {
|
|
125
|
+
font-size: 1.875rem;
|
|
126
|
+
font-weight: 700;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.priceSuffix {
|
|
130
|
+
font-size: 0.875rem;
|
|
131
|
+
font-weight: 400;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.featureList {
|
|
135
|
+
display: grid;
|
|
136
|
+
gap: 0.5rem;
|
|
137
|
+
padding-left: 1.25rem;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.primaryAction {
|
|
141
|
+
width: 100%;
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
66
145
|
### Dashboard Layout with Sidebar
|
|
67
146
|
|
|
68
147
|
```tsx
|
|
69
148
|
import {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
} from "@arolariu/components/
|
|
149
|
+
Avatar,
|
|
150
|
+
AvatarFallback,
|
|
151
|
+
AvatarImage,
|
|
152
|
+
} from "@arolariu/components/avatar";
|
|
74
153
|
import {
|
|
75
154
|
Card,
|
|
76
155
|
CardContent,
|
|
@@ -79,61 +158,73 @@ import {
|
|
|
79
158
|
} from "@arolariu/components/card";
|
|
80
159
|
import { Progress } from "@arolariu/components/progress";
|
|
81
160
|
import {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
161
|
+
Sidebar,
|
|
162
|
+
SidebarContent,
|
|
163
|
+
SidebarMenu,
|
|
164
|
+
SidebarMenuButton,
|
|
165
|
+
SidebarMenuItem,
|
|
166
|
+
SidebarProvider,
|
|
167
|
+
} from "@arolariu/components/sidebar";
|
|
168
|
+
import styles from "./dashboard.module.css";
|
|
86
169
|
|
|
87
170
|
export function Dashboard() {
|
|
88
171
|
return (
|
|
89
|
-
<
|
|
90
|
-
{
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
</
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
172
|
+
<SidebarProvider>
|
|
173
|
+
<div className={styles.layout}>
|
|
174
|
+
<Sidebar>
|
|
175
|
+
<SidebarContent>
|
|
176
|
+
<SidebarMenu>
|
|
177
|
+
<SidebarMenuItem>
|
|
178
|
+
<SidebarMenuButton isActive>Dashboard</SidebarMenuButton>
|
|
179
|
+
</SidebarMenuItem>
|
|
180
|
+
<SidebarMenuItem>
|
|
181
|
+
<SidebarMenuButton>Projects</SidebarMenuButton>
|
|
182
|
+
</SidebarMenuItem>
|
|
183
|
+
<SidebarMenuItem>
|
|
184
|
+
<SidebarMenuButton>Settings</SidebarMenuButton>
|
|
185
|
+
</SidebarMenuItem>
|
|
186
|
+
</SidebarMenu>
|
|
187
|
+
</SidebarContent>
|
|
188
|
+
</Sidebar>
|
|
189
|
+
|
|
190
|
+
<main className={styles.main}>
|
|
191
|
+
<h1 className={styles.title}>Dashboard</h1>
|
|
192
|
+
|
|
193
|
+
<div className={styles.cardGrid}>
|
|
194
|
+
<Card>
|
|
195
|
+
<CardHeader>
|
|
196
|
+
<CardTitle>Project Progress</CardTitle>
|
|
197
|
+
</CardHeader>
|
|
198
|
+
<CardContent className={styles.stack}>
|
|
199
|
+
<Progress value={75} />
|
|
200
|
+
<p className={styles.mutedText}>75% complete</p>
|
|
201
|
+
</CardContent>
|
|
202
|
+
</Card>
|
|
203
|
+
|
|
204
|
+
<Card>
|
|
205
|
+
<CardHeader>
|
|
206
|
+
<CardTitle>Team Members</CardTitle>
|
|
207
|
+
</CardHeader>
|
|
208
|
+
<CardContent>
|
|
209
|
+
<div className={styles.avatarRow}>
|
|
210
|
+
<Avatar className={styles.avatar}>
|
|
211
|
+
<AvatarImage src="/avatar1.jpg" />
|
|
212
|
+
<AvatarFallback>JD</AvatarFallback>
|
|
213
|
+
</Avatar>
|
|
214
|
+
<Avatar className={styles.avatar}>
|
|
215
|
+
<AvatarImage src="/avatar2.jpg" />
|
|
216
|
+
<AvatarFallback>SM</AvatarFallback>
|
|
217
|
+
</Avatar>
|
|
218
|
+
<Avatar className={styles.avatar}>
|
|
219
|
+
<AvatarFallback>+3</AvatarFallback>
|
|
220
|
+
</Avatar>
|
|
221
|
+
</div>
|
|
222
|
+
</CardContent>
|
|
223
|
+
</Card>
|
|
224
|
+
</div>
|
|
225
|
+
</main>
|
|
226
|
+
</div>
|
|
227
|
+
</SidebarProvider>
|
|
137
228
|
);
|
|
138
229
|
}
|
|
139
230
|
```
|
|
@@ -145,19 +236,21 @@ export function Dashboard() {
|
|
|
145
236
|
### Complete Login Form
|
|
146
237
|
|
|
147
238
|
```tsx
|
|
239
|
+
import { useState } from "react";
|
|
240
|
+
|
|
241
|
+
import { Alert, AlertDescription } from "@arolariu/components/alert";
|
|
242
|
+
import { Button } from "@arolariu/components/button";
|
|
148
243
|
import {
|
|
149
244
|
Card,
|
|
150
|
-
CardHeader,
|
|
151
|
-
CardTitle,
|
|
152
245
|
CardContent,
|
|
153
246
|
CardFooter,
|
|
247
|
+
CardHeader,
|
|
248
|
+
CardTitle,
|
|
154
249
|
} from "@arolariu/components/card";
|
|
250
|
+
import { Checkbox } from "@arolariu/components/checkbox";
|
|
155
251
|
import { Input } from "@arolariu/components/input";
|
|
156
|
-
import { Button } from "@arolariu/components/button";
|
|
157
252
|
import { Label } from "@arolariu/components/label";
|
|
158
|
-
import
|
|
159
|
-
import { Alert, AlertDescription } from "@arolariu/components/alert";
|
|
160
|
-
import { useState } from "react";
|
|
253
|
+
import styles from "./login-form.module.css";
|
|
161
254
|
|
|
162
255
|
export function LoginForm() {
|
|
163
256
|
const [email, setEmail] = useState("");
|
|
@@ -166,16 +259,15 @@ export function LoginForm() {
|
|
|
166
259
|
const [error, setError] = useState("");
|
|
167
260
|
const [loading, setLoading] = useState(false);
|
|
168
261
|
|
|
169
|
-
const handleSubmit = async (
|
|
170
|
-
|
|
262
|
+
const handleSubmit = async (event: React.FormEvent) => {
|
|
263
|
+
event.preventDefault();
|
|
171
264
|
setLoading(true);
|
|
172
265
|
setError("");
|
|
173
266
|
|
|
174
267
|
try {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
} catch (err) {
|
|
268
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
269
|
+
console.log("Login successful");
|
|
270
|
+
} catch {
|
|
179
271
|
setError("Invalid email or password");
|
|
180
272
|
} finally {
|
|
181
273
|
setLoading(false);
|
|
@@ -183,43 +275,43 @@ export function LoginForm() {
|
|
|
183
275
|
};
|
|
184
276
|
|
|
185
277
|
return (
|
|
186
|
-
<div className=
|
|
187
|
-
<Card className=
|
|
278
|
+
<div className={styles.page}>
|
|
279
|
+
<Card className={styles.card}>
|
|
188
280
|
<CardHeader>
|
|
189
|
-
<CardTitle className=
|
|
281
|
+
<CardTitle className={styles.centeredTitle}>Welcome Back</CardTitle>
|
|
190
282
|
</CardHeader>
|
|
191
283
|
<form onSubmit={handleSubmit}>
|
|
192
|
-
<CardContent className=
|
|
193
|
-
{error
|
|
284
|
+
<CardContent className={styles.content}>
|
|
285
|
+
{error ? (
|
|
194
286
|
<Alert variant="destructive">
|
|
195
287
|
<AlertDescription>{error}</AlertDescription>
|
|
196
288
|
</Alert>
|
|
197
|
-
)}
|
|
289
|
+
) : null}
|
|
198
290
|
|
|
199
|
-
<div className=
|
|
291
|
+
<div className={styles.field}>
|
|
200
292
|
<Label htmlFor="email">Email</Label>
|
|
201
293
|
<Input
|
|
202
294
|
id="email"
|
|
203
295
|
type="email"
|
|
204
296
|
placeholder="you@example.com"
|
|
205
297
|
value={email}
|
|
206
|
-
onChange={(
|
|
298
|
+
onChange={(event) => setEmail(event.target.value)}
|
|
207
299
|
required
|
|
208
300
|
/>
|
|
209
301
|
</div>
|
|
210
302
|
|
|
211
|
-
<div className=
|
|
303
|
+
<div className={styles.field}>
|
|
212
304
|
<Label htmlFor="password">Password</Label>
|
|
213
305
|
<Input
|
|
214
306
|
id="password"
|
|
215
307
|
type="password"
|
|
216
308
|
value={password}
|
|
217
|
-
onChange={(
|
|
309
|
+
onChange={(event) => setPassword(event.target.value)}
|
|
218
310
|
required
|
|
219
311
|
/>
|
|
220
312
|
</div>
|
|
221
313
|
|
|
222
|
-
<div className=
|
|
314
|
+
<div className={styles.checkboxRow}>
|
|
223
315
|
<Checkbox
|
|
224
316
|
id="remember"
|
|
225
317
|
checked={rememberMe}
|
|
@@ -229,13 +321,20 @@ export function LoginForm() {
|
|
|
229
321
|
</div>
|
|
230
322
|
</CardContent>
|
|
231
323
|
|
|
232
|
-
<CardFooter className=
|
|
233
|
-
<Button
|
|
324
|
+
<CardFooter className={styles.footer}>
|
|
325
|
+
<Button
|
|
326
|
+
type="submit"
|
|
327
|
+
className={styles.submitButton}
|
|
328
|
+
disabled={loading}
|
|
329
|
+
>
|
|
234
330
|
{loading ? "Signing in..." : "Sign In"}
|
|
235
331
|
</Button>
|
|
236
|
-
<
|
|
332
|
+
<a
|
|
333
|
+
className={styles.link}
|
|
334
|
+
href="/forgot-password"
|
|
335
|
+
>
|
|
237
336
|
Forgot your password?
|
|
238
|
-
</
|
|
337
|
+
</a>
|
|
239
338
|
</CardFooter>
|
|
240
339
|
</form>
|
|
241
340
|
</Card>
|
|
@@ -247,9 +346,11 @@ export function LoginForm() {
|
|
|
247
346
|
### Advanced Form with Validation
|
|
248
347
|
|
|
249
348
|
```tsx
|
|
250
|
-
import { useForm } from "react-hook-form";
|
|
251
349
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
350
|
+
import { useForm } from "react-hook-form";
|
|
252
351
|
import * as z from "zod";
|
|
352
|
+
|
|
353
|
+
import { Button } from "@arolariu/components/button";
|
|
253
354
|
import {
|
|
254
355
|
Form,
|
|
255
356
|
FormControl,
|
|
@@ -260,7 +361,6 @@ import {
|
|
|
260
361
|
FormMessage,
|
|
261
362
|
} from "@arolariu/components/form";
|
|
262
363
|
import { Input } from "@arolariu/components/input";
|
|
263
|
-
import { Button } from "@arolariu/components/button";
|
|
264
364
|
import {
|
|
265
365
|
Select,
|
|
266
366
|
SelectContent,
|
|
@@ -269,6 +369,7 @@ import {
|
|
|
269
369
|
SelectValue,
|
|
270
370
|
} from "@arolariu/components/select";
|
|
271
371
|
import { Textarea } from "@arolariu/components/textarea";
|
|
372
|
+
import styles from "./profile-form.module.css";
|
|
272
373
|
|
|
273
374
|
const formSchema = z.object({
|
|
274
375
|
firstName: z.string().min(2, "First name must be at least 2 characters"),
|
|
@@ -298,9 +399,9 @@ export function ProfileForm() {
|
|
|
298
399
|
<Form {...form}>
|
|
299
400
|
<form
|
|
300
401
|
onSubmit={form.handleSubmit(onSubmit)}
|
|
301
|
-
className=
|
|
402
|
+
className={styles.form}
|
|
302
403
|
>
|
|
303
|
-
<div className=
|
|
404
|
+
<div className={styles.twoColumnGrid}>
|
|
304
405
|
<FormField
|
|
305
406
|
control={form.control}
|
|
306
407
|
name="firstName"
|
|
@@ -308,7 +409,10 @@ export function ProfileForm() {
|
|
|
308
409
|
<FormItem>
|
|
309
410
|
<FormLabel>First Name</FormLabel>
|
|
310
411
|
<FormControl>
|
|
311
|
-
<Input
|
|
412
|
+
<Input
|
|
413
|
+
placeholder="John"
|
|
414
|
+
{...field}
|
|
415
|
+
/>
|
|
312
416
|
</FormControl>
|
|
313
417
|
<FormMessage />
|
|
314
418
|
</FormItem>
|
|
@@ -322,7 +426,10 @@ export function ProfileForm() {
|
|
|
322
426
|
<FormItem>
|
|
323
427
|
<FormLabel>Last Name</FormLabel>
|
|
324
428
|
<FormControl>
|
|
325
|
-
<Input
|
|
429
|
+
<Input
|
|
430
|
+
placeholder="Doe"
|
|
431
|
+
{...field}
|
|
432
|
+
/>
|
|
326
433
|
</FormControl>
|
|
327
434
|
<FormMessage />
|
|
328
435
|
</FormItem>
|
|
@@ -337,10 +444,13 @@ export function ProfileForm() {
|
|
|
337
444
|
<FormItem>
|
|
338
445
|
<FormLabel>Email</FormLabel>
|
|
339
446
|
<FormControl>
|
|
340
|
-
<Input
|
|
447
|
+
<Input
|
|
448
|
+
placeholder="john.doe@example.com"
|
|
449
|
+
{...field}
|
|
450
|
+
/>
|
|
341
451
|
</FormControl>
|
|
342
452
|
<FormDescription>
|
|
343
|
-
We
|
|
453
|
+
We'll never share your email with anyone else.
|
|
344
454
|
</FormDescription>
|
|
345
455
|
<FormMessage />
|
|
346
456
|
</FormItem>
|
|
@@ -353,7 +463,10 @@ export function ProfileForm() {
|
|
|
353
463
|
render={({ field }) => (
|
|
354
464
|
<FormItem>
|
|
355
465
|
<FormLabel>Role</FormLabel>
|
|
356
|
-
<Select
|
|
466
|
+
<Select
|
|
467
|
+
defaultValue={field.value}
|
|
468
|
+
onValueChange={field.onChange}
|
|
469
|
+
>
|
|
357
470
|
<FormControl>
|
|
358
471
|
<SelectTrigger>
|
|
359
472
|
<SelectValue placeholder="Select a role" />
|
|
@@ -379,7 +492,7 @@ export function ProfileForm() {
|
|
|
379
492
|
<FormControl>
|
|
380
493
|
<Textarea
|
|
381
494
|
placeholder="Tell us about yourself"
|
|
382
|
-
className=
|
|
495
|
+
className={styles.textarea}
|
|
383
496
|
{...field}
|
|
384
497
|
/>
|
|
385
498
|
</FormControl>
|
|
@@ -402,17 +515,10 @@ export function ProfileForm() {
|
|
|
402
515
|
### Responsive Header Navigation
|
|
403
516
|
|
|
404
517
|
```tsx
|
|
405
|
-
import {
|
|
406
|
-
NavigationMenu,
|
|
407
|
-
NavigationMenuItem,
|
|
408
|
-
NavigationMenuList,
|
|
409
|
-
} from "@arolariu/components/navigation-menu";
|
|
410
|
-
import { Button } from "@arolariu/components/button";
|
|
411
|
-
import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
|
|
412
518
|
import {
|
|
413
519
|
Avatar,
|
|
414
|
-
AvatarImage,
|
|
415
520
|
AvatarFallback,
|
|
521
|
+
AvatarImage,
|
|
416
522
|
} from "@arolariu/components/avatar";
|
|
417
523
|
import {
|
|
418
524
|
DropdownMenu,
|
|
@@ -420,101 +526,82 @@ import {
|
|
|
420
526
|
DropdownMenuItem,
|
|
421
527
|
DropdownMenuTrigger,
|
|
422
528
|
} from "@arolariu/components/dropdown-menu";
|
|
423
|
-
import {
|
|
529
|
+
import {
|
|
530
|
+
NavigationMenu,
|
|
531
|
+
NavigationMenuItem,
|
|
532
|
+
NavigationMenuLink,
|
|
533
|
+
NavigationMenuList,
|
|
534
|
+
} from "@arolariu/components/navigation-menu";
|
|
535
|
+
import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
|
|
536
|
+
import { LogOut, MenuIcon, Settings, User } from "lucide-react";
|
|
537
|
+
import styles from "./app-header.module.css";
|
|
424
538
|
|
|
425
539
|
export function AppHeader() {
|
|
426
540
|
return (
|
|
427
|
-
<header className=
|
|
428
|
-
<div className=
|
|
429
|
-
<div className=
|
|
430
|
-
<a
|
|
431
|
-
|
|
541
|
+
<header className={styles.header}>
|
|
542
|
+
<div className={styles.headerInner}>
|
|
543
|
+
<div className={styles.desktopArea}>
|
|
544
|
+
<a
|
|
545
|
+
className={styles.brandLink}
|
|
546
|
+
href="/"
|
|
547
|
+
>
|
|
548
|
+
<span className={styles.brandName}>MyApp</span>
|
|
432
549
|
</a>
|
|
433
550
|
|
|
434
551
|
<NavigationMenu>
|
|
435
552
|
<NavigationMenuList>
|
|
436
553
|
<NavigationMenuItem>
|
|
437
|
-
<
|
|
438
|
-
Dashboard
|
|
439
|
-
</Button>
|
|
554
|
+
<NavigationMenuLink href="/dashboard">Dashboard</NavigationMenuLink>
|
|
440
555
|
</NavigationMenuItem>
|
|
441
556
|
<NavigationMenuItem>
|
|
442
|
-
<
|
|
443
|
-
Projects
|
|
444
|
-
</Button>
|
|
557
|
+
<NavigationMenuLink href="/projects">Projects</NavigationMenuLink>
|
|
445
558
|
</NavigationMenuItem>
|
|
446
559
|
<NavigationMenuItem>
|
|
447
|
-
<
|
|
448
|
-
Analytics
|
|
449
|
-
</Button>
|
|
560
|
+
<NavigationMenuLink href="/analytics">Analytics</NavigationMenuLink>
|
|
450
561
|
</NavigationMenuItem>
|
|
451
562
|
</NavigationMenuList>
|
|
452
563
|
</NavigationMenu>
|
|
453
564
|
</div>
|
|
454
565
|
|
|
455
|
-
{/* Mobile Navigation */}
|
|
456
566
|
<Sheet>
|
|
457
|
-
<SheetTrigger
|
|
458
|
-
<
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
>
|
|
462
|
-
<MenuIcon className="h-5 w-5" />
|
|
463
|
-
</Button>
|
|
567
|
+
<SheetTrigger
|
|
568
|
+
render={<button type="button" className={styles.mobileMenuButton} />}
|
|
569
|
+
>
|
|
570
|
+
<MenuIcon />
|
|
464
571
|
</SheetTrigger>
|
|
465
572
|
<SheetContent side="left">
|
|
466
|
-
<nav className=
|
|
467
|
-
<
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
href="/dashboard"
|
|
471
|
-
>
|
|
472
|
-
Dashboard
|
|
473
|
-
</Button>
|
|
474
|
-
<Button
|
|
475
|
-
variant="ghost"
|
|
476
|
-
className="justify-start"
|
|
477
|
-
href="/projects"
|
|
478
|
-
>
|
|
479
|
-
Projects
|
|
480
|
-
</Button>
|
|
481
|
-
<Button
|
|
482
|
-
variant="ghost"
|
|
483
|
-
className="justify-start"
|
|
484
|
-
href="/analytics"
|
|
485
|
-
>
|
|
486
|
-
Analytics
|
|
487
|
-
</Button>
|
|
573
|
+
<nav className={styles.mobileNav}>
|
|
574
|
+
<a href="/dashboard">Dashboard</a>
|
|
575
|
+
<a href="/projects">Projects</a>
|
|
576
|
+
<a href="/analytics">Analytics</a>
|
|
488
577
|
</nav>
|
|
489
578
|
</SheetContent>
|
|
490
579
|
</Sheet>
|
|
491
580
|
|
|
492
|
-
<div className=
|
|
493
|
-
<div className="w-full flex-1 md:w-auto md:flex-none">
|
|
494
|
-
{/* Search or other content can go here */}
|
|
495
|
-
</div>
|
|
496
|
-
|
|
497
|
-
{/* User Menu */}
|
|
581
|
+
<div className={styles.actions}>
|
|
498
582
|
<DropdownMenu>
|
|
499
|
-
<DropdownMenuTrigger
|
|
500
|
-
<
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
583
|
+
<DropdownMenuTrigger
|
|
584
|
+
render={<button type="button" className={styles.avatarButton} />}
|
|
585
|
+
>
|
|
586
|
+
<Avatar>
|
|
587
|
+
<AvatarImage
|
|
588
|
+
src="/avatars/01.png"
|
|
589
|
+
alt="User"
|
|
590
|
+
/>
|
|
591
|
+
<AvatarFallback>JD</AvatarFallback>
|
|
592
|
+
</Avatar>
|
|
506
593
|
</DropdownMenuTrigger>
|
|
507
|
-
<DropdownMenuContent
|
|
594
|
+
<DropdownMenuContent align="end">
|
|
508
595
|
<DropdownMenuItem>
|
|
509
|
-
<User
|
|
596
|
+
<User />
|
|
510
597
|
<span>Profile</span>
|
|
511
598
|
</DropdownMenuItem>
|
|
512
599
|
<DropdownMenuItem>
|
|
513
|
-
<Settings
|
|
600
|
+
<Settings />
|
|
514
601
|
<span>Settings</span>
|
|
515
602
|
</DropdownMenuItem>
|
|
516
603
|
<DropdownMenuItem>
|
|
517
|
-
<LogOut
|
|
604
|
+
<LogOut />
|
|
518
605
|
<span>Log out</span>
|
|
519
606
|
</DropdownMenuItem>
|
|
520
607
|
</DropdownMenuContent>
|
|
@@ -533,6 +620,13 @@ export function AppHeader() {
|
|
|
533
620
|
### Interactive Data Table
|
|
534
621
|
|
|
535
622
|
```tsx
|
|
623
|
+
import { Badge } from "@arolariu/components/badge";
|
|
624
|
+
import {
|
|
625
|
+
DropdownMenu,
|
|
626
|
+
DropdownMenuContent,
|
|
627
|
+
DropdownMenuItem,
|
|
628
|
+
DropdownMenuTrigger,
|
|
629
|
+
} from "@arolariu/components/dropdown-menu";
|
|
536
630
|
import {
|
|
537
631
|
Table,
|
|
538
632
|
TableBody,
|
|
@@ -542,15 +636,8 @@ import {
|
|
|
542
636
|
TableHeader,
|
|
543
637
|
TableRow,
|
|
544
638
|
} from "@arolariu/components/table";
|
|
545
|
-
import {
|
|
546
|
-
import
|
|
547
|
-
import {
|
|
548
|
-
DropdownMenu,
|
|
549
|
-
DropdownMenuContent,
|
|
550
|
-
DropdownMenuItem,
|
|
551
|
-
DropdownMenuTrigger,
|
|
552
|
-
} from "@arolariu/components/dropdown-menu";
|
|
553
|
-
import { MoreHorizontal, Eye, Edit, Trash } from "lucide-react";
|
|
639
|
+
import { Edit, Eye, MoreHorizontal, Trash } from "lucide-react";
|
|
640
|
+
import styles from "./users-table.module.css";
|
|
554
641
|
|
|
555
642
|
interface User {
|
|
556
643
|
id: string;
|
|
@@ -600,8 +687,8 @@ export function UsersTable() {
|
|
|
600
687
|
};
|
|
601
688
|
|
|
602
689
|
return (
|
|
603
|
-
<div className=
|
|
604
|
-
<div className=
|
|
690
|
+
<div className={styles.wrapper}>
|
|
691
|
+
<div className={styles.tableShell}>
|
|
605
692
|
<Table>
|
|
606
693
|
<TableCaption>A list of your team members.</TableCaption>
|
|
607
694
|
<TableHeader>
|
|
@@ -611,35 +698,35 @@ export function UsersTable() {
|
|
|
611
698
|
<TableHead>Role</TableHead>
|
|
612
699
|
<TableHead>Status</TableHead>
|
|
613
700
|
<TableHead>Last Login</TableHead>
|
|
614
|
-
<TableHead className=
|
|
701
|
+
<TableHead className={styles.actionsColumn}>Actions</TableHead>
|
|
615
702
|
</TableRow>
|
|
616
703
|
</TableHeader>
|
|
617
704
|
<TableBody>
|
|
618
705
|
{users.map((user) => (
|
|
619
706
|
<TableRow key={user.id}>
|
|
620
|
-
<TableCell className=
|
|
707
|
+
<TableCell className={styles.emphasisCell}>{user.name}</TableCell>
|
|
621
708
|
<TableCell>{user.email}</TableCell>
|
|
622
709
|
<TableCell>{user.role}</TableCell>
|
|
623
710
|
<TableCell>{getStatusBadge(user.status)}</TableCell>
|
|
624
711
|
<TableCell>{user.lastLogin}</TableCell>
|
|
625
712
|
<TableCell>
|
|
626
713
|
<DropdownMenu>
|
|
627
|
-
<DropdownMenuTrigger
|
|
628
|
-
<
|
|
629
|
-
|
|
630
|
-
|
|
714
|
+
<DropdownMenuTrigger
|
|
715
|
+
render={<button type="button" className={styles.iconButton} />}
|
|
716
|
+
>
|
|
717
|
+
<MoreHorizontal />
|
|
631
718
|
</DropdownMenuTrigger>
|
|
632
719
|
<DropdownMenuContent align="end">
|
|
633
720
|
<DropdownMenuItem>
|
|
634
|
-
<Eye
|
|
721
|
+
<Eye />
|
|
635
722
|
View
|
|
636
723
|
</DropdownMenuItem>
|
|
637
724
|
<DropdownMenuItem>
|
|
638
|
-
<Edit
|
|
725
|
+
<Edit />
|
|
639
726
|
Edit
|
|
640
727
|
</DropdownMenuItem>
|
|
641
|
-
<DropdownMenuItem className=
|
|
642
|
-
<Trash
|
|
728
|
+
<DropdownMenuItem className={styles.dangerItem}>
|
|
729
|
+
<Trash />
|
|
643
730
|
Delete
|
|
644
731
|
</DropdownMenuItem>
|
|
645
732
|
</DropdownMenuContent>
|
|
@@ -673,8 +760,8 @@ import {
|
|
|
673
760
|
AlertDialogTitle,
|
|
674
761
|
AlertDialogTrigger,
|
|
675
762
|
} from "@arolariu/components/alert-dialog";
|
|
676
|
-
import { Button } from "@arolariu/components/button";
|
|
677
763
|
import { Trash } from "lucide-react";
|
|
764
|
+
import styles from "./delete-confirmation.module.css";
|
|
678
765
|
|
|
679
766
|
export function DeleteConfirmation({
|
|
680
767
|
itemName,
|
|
@@ -685,26 +772,26 @@ export function DeleteConfirmation({
|
|
|
685
772
|
}) {
|
|
686
773
|
return (
|
|
687
774
|
<AlertDialog>
|
|
688
|
-
<AlertDialogTrigger
|
|
689
|
-
<
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
775
|
+
<AlertDialogTrigger
|
|
776
|
+
render={<button type="button" className={styles.triggerButton} />}
|
|
777
|
+
>
|
|
778
|
+
<Trash />
|
|
779
|
+
Delete
|
|
693
780
|
</AlertDialogTrigger>
|
|
694
781
|
<AlertDialogContent>
|
|
695
782
|
<AlertDialogHeader>
|
|
696
783
|
<AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
|
|
697
784
|
<AlertDialogDescription>
|
|
698
|
-
This action cannot be undone. This will permanently delete
|
|
699
|
-
{
|
|
785
|
+
This action cannot be undone. This will permanently delete
|
|
786
|
+
{" "}
|
|
787
|
+
{itemName}
|
|
788
|
+
{" "}
|
|
789
|
+
and remove all associated data from our servers.
|
|
700
790
|
</AlertDialogDescription>
|
|
701
791
|
</AlertDialogHeader>
|
|
702
792
|
<AlertDialogFooter>
|
|
703
793
|
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
704
|
-
<AlertDialogAction
|
|
705
|
-
onClick={onConfirm}
|
|
706
|
-
className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
|
|
707
|
-
>
|
|
794
|
+
<AlertDialogAction onClick={onConfirm}>
|
|
708
795
|
Yes, delete it
|
|
709
796
|
</AlertDialogAction>
|
|
710
797
|
</AlertDialogFooter>
|
|
@@ -717,6 +804,7 @@ export function DeleteConfirmation({
|
|
|
717
804
|
### Settings Modal
|
|
718
805
|
|
|
719
806
|
```tsx
|
|
807
|
+
import { Button } from "@arolariu/components/button";
|
|
720
808
|
import {
|
|
721
809
|
Dialog,
|
|
722
810
|
DialogContent,
|
|
@@ -726,10 +814,8 @@ import {
|
|
|
726
814
|
DialogTitle,
|
|
727
815
|
DialogTrigger,
|
|
728
816
|
} from "@arolariu/components/dialog";
|
|
729
|
-
import { Button } from "@arolariu/components/button";
|
|
730
817
|
import { Input } from "@arolariu/components/input";
|
|
731
818
|
import { Label } from "@arolariu/components/label";
|
|
732
|
-
import { Switch } from "@arolariu/components/switch";
|
|
733
819
|
import {
|
|
734
820
|
Select,
|
|
735
821
|
SelectContent,
|
|
@@ -737,24 +823,21 @@ import {
|
|
|
737
823
|
SelectTrigger,
|
|
738
824
|
SelectValue,
|
|
739
825
|
} from "@arolariu/components/select";
|
|
740
|
-
import {
|
|
741
|
-
|
|
742
|
-
TabsContent,
|
|
743
|
-
TabsList,
|
|
744
|
-
TabsTrigger,
|
|
745
|
-
} from "@arolariu/components/tabs";
|
|
826
|
+
import { Switch } from "@arolariu/components/switch";
|
|
827
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@arolariu/components/tabs";
|
|
746
828
|
import { Settings } from "lucide-react";
|
|
829
|
+
import styles from "./settings-dialog.module.css";
|
|
747
830
|
|
|
748
831
|
export function SettingsDialog() {
|
|
749
832
|
return (
|
|
750
833
|
<Dialog>
|
|
751
|
-
<DialogTrigger
|
|
752
|
-
<
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
834
|
+
<DialogTrigger
|
|
835
|
+
render={<button type="button" className={styles.trigger} />}
|
|
836
|
+
>
|
|
837
|
+
<Settings />
|
|
838
|
+
Settings
|
|
756
839
|
</DialogTrigger>
|
|
757
|
-
<DialogContent className=
|
|
840
|
+
<DialogContent className={styles.dialogContent}>
|
|
758
841
|
<DialogHeader>
|
|
759
842
|
<DialogTitle>Settings</DialogTitle>
|
|
760
843
|
<DialogDescription>
|
|
@@ -762,23 +845,35 @@ export function SettingsDialog() {
|
|
|
762
845
|
</DialogDescription>
|
|
763
846
|
</DialogHeader>
|
|
764
847
|
|
|
765
|
-
<Tabs
|
|
766
|
-
|
|
848
|
+
<Tabs
|
|
849
|
+
defaultValue="general"
|
|
850
|
+
className={styles.tabs}
|
|
851
|
+
>
|
|
852
|
+
<TabsList className={styles.tabsList}>
|
|
767
853
|
<TabsTrigger value="general">General</TabsTrigger>
|
|
768
854
|
<TabsTrigger value="notifications">Notifications</TabsTrigger>
|
|
769
855
|
<TabsTrigger value="security">Security</TabsTrigger>
|
|
770
856
|
</TabsList>
|
|
771
857
|
|
|
772
|
-
<TabsContent
|
|
773
|
-
|
|
858
|
+
<TabsContent
|
|
859
|
+
value="general"
|
|
860
|
+
className={styles.panel}
|
|
861
|
+
>
|
|
862
|
+
<div className={styles.field}>
|
|
774
863
|
<Label htmlFor="name">Display Name</Label>
|
|
775
|
-
<Input
|
|
864
|
+
<Input
|
|
865
|
+
id="name"
|
|
866
|
+
defaultValue="John Doe"
|
|
867
|
+
/>
|
|
776
868
|
</div>
|
|
777
|
-
<div className=
|
|
869
|
+
<div className={styles.field}>
|
|
778
870
|
<Label htmlFor="email">Email</Label>
|
|
779
|
-
<Input
|
|
871
|
+
<Input
|
|
872
|
+
id="email"
|
|
873
|
+
defaultValue="john@example.com"
|
|
874
|
+
/>
|
|
780
875
|
</div>
|
|
781
|
-
<div className=
|
|
876
|
+
<div className={styles.field}>
|
|
782
877
|
<Label htmlFor="timezone">Timezone</Label>
|
|
783
878
|
<Select defaultValue="utc">
|
|
784
879
|
<SelectTrigger>
|
|
@@ -793,20 +888,23 @@ export function SettingsDialog() {
|
|
|
793
888
|
</div>
|
|
794
889
|
</TabsContent>
|
|
795
890
|
|
|
796
|
-
<TabsContent
|
|
797
|
-
|
|
798
|
-
|
|
891
|
+
<TabsContent
|
|
892
|
+
value="notifications"
|
|
893
|
+
className={styles.panel}
|
|
894
|
+
>
|
|
895
|
+
<div className={styles.switchRow}>
|
|
896
|
+
<div className={styles.switchText}>
|
|
799
897
|
<Label>Email Notifications</Label>
|
|
800
|
-
<div className=
|
|
898
|
+
<div className={styles.mutedText}>
|
|
801
899
|
Receive emails about your account activity.
|
|
802
900
|
</div>
|
|
803
901
|
</div>
|
|
804
902
|
<Switch />
|
|
805
903
|
</div>
|
|
806
|
-
<div className=
|
|
807
|
-
<div className=
|
|
904
|
+
<div className={styles.switchRow}>
|
|
905
|
+
<div className={styles.switchText}>
|
|
808
906
|
<Label>Push Notifications</Label>
|
|
809
|
-
<div className=
|
|
907
|
+
<div className={styles.mutedText}>
|
|
810
908
|
Receive push notifications on your devices.
|
|
811
909
|
</div>
|
|
812
910
|
</div>
|
|
@@ -814,18 +912,30 @@ export function SettingsDialog() {
|
|
|
814
912
|
</div>
|
|
815
913
|
</TabsContent>
|
|
816
914
|
|
|
817
|
-
<TabsContent
|
|
818
|
-
|
|
915
|
+
<TabsContent
|
|
916
|
+
value="security"
|
|
917
|
+
className={styles.panel}
|
|
918
|
+
>
|
|
919
|
+
<div className={styles.field}>
|
|
819
920
|
<Label htmlFor="current-password">Current Password</Label>
|
|
820
|
-
<Input
|
|
921
|
+
<Input
|
|
922
|
+
id="current-password"
|
|
923
|
+
type="password"
|
|
924
|
+
/>
|
|
821
925
|
</div>
|
|
822
|
-
<div className=
|
|
926
|
+
<div className={styles.field}>
|
|
823
927
|
<Label htmlFor="new-password">New Password</Label>
|
|
824
|
-
<Input
|
|
928
|
+
<Input
|
|
929
|
+
id="new-password"
|
|
930
|
+
type="password"
|
|
931
|
+
/>
|
|
825
932
|
</div>
|
|
826
|
-
<div className=
|
|
933
|
+
<div className={styles.field}>
|
|
827
934
|
<Label htmlFor="confirm-password">Confirm Password</Label>
|
|
828
|
-
<Input
|
|
935
|
+
<Input
|
|
936
|
+
id="confirm-password"
|
|
937
|
+
type="password"
|
|
938
|
+
/>
|
|
829
939
|
</div>
|
|
830
940
|
</TabsContent>
|
|
831
941
|
</Tabs>
|
|
@@ -842,81 +952,75 @@ export function SettingsDialog() {
|
|
|
842
952
|
|
|
843
953
|
---
|
|
844
954
|
|
|
845
|
-
## 🎨
|
|
955
|
+
## 🎨 Theming Examples
|
|
956
|
+
|
|
957
|
+
### App Theme with `--ac-*` Tokens
|
|
846
958
|
|
|
847
|
-
|
|
959
|
+
```css
|
|
960
|
+
:root {
|
|
961
|
+
--ac-primary: oklch(0.6 0.2 250);
|
|
962
|
+
--ac-radius: 0.5rem;
|
|
963
|
+
}
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
```css
|
|
967
|
+
/* app-theme.module.css */
|
|
968
|
+
.themeScope {
|
|
969
|
+
--ac-primary: oklch(0.68 0.2 258);
|
|
970
|
+
--ac-primary-foreground: oklch(0.98 0.01 258);
|
|
971
|
+
--ac-secondary: oklch(0.95 0.02 286);
|
|
972
|
+
--ac-background: oklch(0.99 0 0);
|
|
973
|
+
--ac-radius-md: 0.75rem;
|
|
974
|
+
--ac-radius-lg: 1rem;
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.themeScope[data-theme="dark"] {
|
|
978
|
+
--ac-background: oklch(0.17 0.01 286);
|
|
979
|
+
--ac-foreground: oklch(0.98 0 0);
|
|
980
|
+
--ac-card: oklch(0.2 0.01 286);
|
|
981
|
+
}
|
|
982
|
+
```
|
|
848
983
|
|
|
849
984
|
```tsx
|
|
850
|
-
import { DotBackground } from "@arolariu/components/dot-background";
|
|
851
|
-
import { BubbleBackground } from "@arolariu/components/bubble-background";
|
|
852
|
-
import { GradientBackground } from "@arolariu/components/gradient-background";
|
|
853
985
|
import { Button } from "@arolariu/components/button";
|
|
854
|
-
import { Card, CardContent } from "@arolariu/components/card";
|
|
986
|
+
import { Card, CardContent, CardHeader, CardTitle } from "@arolariu/components/card";
|
|
987
|
+
import styles from "./app-theme.module.css";
|
|
855
988
|
|
|
856
|
-
export function
|
|
989
|
+
export function ThemePreview() {
|
|
857
990
|
return (
|
|
858
|
-
<
|
|
859
|
-
{
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
<
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
Create stunning user interfaces with our comprehensive React component
|
|
875
|
-
library. Built with accessibility, performance, and developer
|
|
876
|
-
experience in mind.
|
|
877
|
-
</p>
|
|
991
|
+
<section
|
|
992
|
+
className={styles.themeScope}
|
|
993
|
+
data-theme="dark"
|
|
994
|
+
>
|
|
995
|
+
<Card>
|
|
996
|
+
<CardHeader>
|
|
997
|
+
<CardTitle>Custom theme scope</CardTitle>
|
|
998
|
+
</CardHeader>
|
|
999
|
+
<CardContent>
|
|
1000
|
+
<Button>Token-driven button</Button>
|
|
1001
|
+
</CardContent>
|
|
1002
|
+
</Card>
|
|
1003
|
+
</section>
|
|
1004
|
+
);
|
|
1005
|
+
}
|
|
1006
|
+
```
|
|
878
1007
|
|
|
879
|
-
|
|
880
|
-
<Button size="lg" className="px-8">
|
|
881
|
-
Get Started
|
|
882
|
-
</Button>
|
|
883
|
-
<Button variant="outline" size="lg" className="px-8">
|
|
884
|
-
View Components
|
|
885
|
-
</Button>
|
|
886
|
-
</div>
|
|
1008
|
+
### Styling Base UI State Attributes
|
|
887
1009
|
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
<p className="text-sm text-muted-foreground">
|
|
903
|
-
Full type safety and excellent developer experience
|
|
904
|
-
</p>
|
|
905
|
-
</CardContent>
|
|
906
|
-
</Card>
|
|
907
|
-
|
|
908
|
-
<Card className="bg-card/50 backdrop-blur">
|
|
909
|
-
<CardContent className="p-6 text-center">
|
|
910
|
-
<h3 className="mb-2 text-lg font-semibold">Accessible</h3>
|
|
911
|
-
<p className="text-sm text-muted-foreground">
|
|
912
|
-
Built on Radix UI with WAI-ARIA compliance
|
|
913
|
-
</p>
|
|
914
|
-
</CardContent>
|
|
915
|
-
</Card>
|
|
916
|
-
</div>
|
|
917
|
-
</div>
|
|
918
|
-
</div>
|
|
919
|
-
);
|
|
1010
|
+
```css
|
|
1011
|
+
/* checkbox-demo.module.css */
|
|
1012
|
+
.checkboxRow {
|
|
1013
|
+
display: inline-flex;
|
|
1014
|
+
align-items: center;
|
|
1015
|
+
gap: 0.75rem;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.checkboxRow :global([data-checked]) {
|
|
1019
|
+
box-shadow: 0 0 0 2px color-mix(in oklab, var(--ac-primary) 25%, transparent);
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
.checkboxRow :global([data-disabled]) {
|
|
1023
|
+
opacity: 0.5;
|
|
920
1024
|
}
|
|
921
1025
|
```
|
|
922
1026
|
|
|
@@ -927,6 +1031,9 @@ export function LandingPage() {
|
|
|
927
1031
|
### Mobile-Optimized Form
|
|
928
1032
|
|
|
929
1033
|
```tsx
|
|
1034
|
+
import { Button } from "@arolariu/components/button";
|
|
1035
|
+
import { Input } from "@arolariu/components/input";
|
|
1036
|
+
import { Label } from "@arolariu/components/label";
|
|
930
1037
|
import {
|
|
931
1038
|
Sheet,
|
|
932
1039
|
SheetContent,
|
|
@@ -935,21 +1042,22 @@ import {
|
|
|
935
1042
|
SheetTitle,
|
|
936
1043
|
SheetTrigger,
|
|
937
1044
|
} from "@arolariu/components/sheet";
|
|
938
|
-
import { Button } from "@arolariu/components/button";
|
|
939
|
-
import { Input } from "@arolariu/components/input";
|
|
940
|
-
import { Label } from "@arolariu/components/label";
|
|
941
1045
|
import { Textarea } from "@arolariu/components/textarea";
|
|
942
1046
|
import { Plus } from "lucide-react";
|
|
1047
|
+
import styles from "./mobile-add-form.module.css";
|
|
943
1048
|
|
|
944
1049
|
export function MobileAddForm() {
|
|
945
1050
|
return (
|
|
946
1051
|
<Sheet>
|
|
947
|
-
<SheetTrigger
|
|
948
|
-
<
|
|
949
|
-
|
|
950
|
-
|
|
1052
|
+
<SheetTrigger
|
|
1053
|
+
render={<button type="button" className={styles.fab} />}
|
|
1054
|
+
>
|
|
1055
|
+
<Plus />
|
|
951
1056
|
</SheetTrigger>
|
|
952
|
-
<SheetContent
|
|
1057
|
+
<SheetContent
|
|
1058
|
+
side="bottom"
|
|
1059
|
+
className={styles.sheetContent}
|
|
1060
|
+
>
|
|
953
1061
|
<SheetHeader>
|
|
954
1062
|
<SheetTitle>Add New Item</SheetTitle>
|
|
955
1063
|
<SheetDescription>
|
|
@@ -957,24 +1065,30 @@ export function MobileAddForm() {
|
|
|
957
1065
|
</SheetDescription>
|
|
958
1066
|
</SheetHeader>
|
|
959
1067
|
|
|
960
|
-
<div className=
|
|
961
|
-
<div className=
|
|
1068
|
+
<div className={styles.formStack}>
|
|
1069
|
+
<div className={styles.field}>
|
|
962
1070
|
<Label htmlFor="title">Title</Label>
|
|
963
|
-
<Input
|
|
1071
|
+
<Input
|
|
1072
|
+
id="title"
|
|
1073
|
+
placeholder="Enter title"
|
|
1074
|
+
/>
|
|
964
1075
|
</div>
|
|
965
1076
|
|
|
966
|
-
<div className=
|
|
1077
|
+
<div className={styles.field}>
|
|
967
1078
|
<Label htmlFor="description">Description</Label>
|
|
968
1079
|
<Textarea
|
|
969
1080
|
id="description"
|
|
970
1081
|
placeholder="Enter description"
|
|
971
|
-
className=
|
|
1082
|
+
className={styles.textarea}
|
|
972
1083
|
/>
|
|
973
1084
|
</div>
|
|
974
1085
|
|
|
975
|
-
<div className=
|
|
976
|
-
<Button className=
|
|
977
|
-
<Button
|
|
1086
|
+
<div className={styles.actionRow}>
|
|
1087
|
+
<Button className={styles.flexButton}>Save</Button>
|
|
1088
|
+
<Button
|
|
1089
|
+
variant="outline"
|
|
1090
|
+
className={styles.flexButton}
|
|
1091
|
+
>
|
|
978
1092
|
Cancel
|
|
979
1093
|
</Button>
|
|
980
1094
|
</div>
|
|
@@ -996,7 +1110,7 @@ export function MobileAddForm() {
|
|
|
996
1110
|
import { Button } from "@arolariu/components/button";
|
|
997
1111
|
import { Card } from "@arolariu/components/card";
|
|
998
1112
|
|
|
999
|
-
// ❌ Avoid barrel imports
|
|
1113
|
+
// ❌ Avoid barrel imports when bundle size matters
|
|
1000
1114
|
import { Button, Card } from "@arolariu/components";
|
|
1001
1115
|
```
|
|
1002
1116
|
|
|
@@ -1004,8 +1118,11 @@ import { Button, Card } from "@arolariu/components";
|
|
|
1004
1118
|
|
|
1005
1119
|
```tsx
|
|
1006
1120
|
// ✅ Always include proper labels and ARIA attributes
|
|
1007
|
-
<Button
|
|
1008
|
-
|
|
1121
|
+
<Button
|
|
1122
|
+
aria-label="Close dialog"
|
|
1123
|
+
onClick={handleClose}
|
|
1124
|
+
>
|
|
1125
|
+
<X />
|
|
1009
1126
|
</Button>
|
|
1010
1127
|
|
|
1011
1128
|
// ✅ Use semantic HTML structure
|
|
@@ -1019,17 +1136,25 @@ import { Button, Card } from "@arolariu/components";
|
|
|
1019
1136
|
|
|
1020
1137
|
### Responsive Design
|
|
1021
1138
|
|
|
1022
|
-
```
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
<div className="block md:hidden">Mobile only content</div>
|
|
1030
|
-
<div className="hidden md:block">Desktop only content</div>
|
|
1031
|
-
```
|
|
1139
|
+
```css
|
|
1140
|
+
/* responsive-layout.module.css */
|
|
1141
|
+
.grid {
|
|
1142
|
+
display: grid;
|
|
1143
|
+
gap: 1rem;
|
|
1144
|
+
grid-template-columns: 1fr;
|
|
1145
|
+
}
|
|
1032
1146
|
|
|
1033
|
-
|
|
1147
|
+
@media (min-width: 48rem) {
|
|
1148
|
+
.grid {
|
|
1149
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
@media (min-width: 64rem) {
|
|
1154
|
+
.grid {
|
|
1155
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
```
|
|
1034
1159
|
|
|
1035
1160
|
Ready to build something amazing? **[🚀 Start with our Quick Start Guide](./README.md#-quick-start)**
|