gladvn 0.2.14
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/README.md +112 -0
- package/bin/cli.js +326 -0
- package/dist/components/macro/accordion-preset.d.ts +14 -0
- package/dist/components/macro/accordion-preset.d.ts.map +1 -0
- package/dist/components/macro/alert-dialog-preset.d.ts +26 -0
- package/dist/components/macro/alert-dialog-preset.d.ts.map +1 -0
- package/dist/components/macro/alert-preset.d.ts +14 -0
- package/dist/components/macro/alert-preset.d.ts.map +1 -0
- package/dist/components/macro/avatar-preset.d.ts +11 -0
- package/dist/components/macro/avatar-preset.d.ts.map +1 -0
- package/dist/components/macro/breadcrumb-preset.d.ts +12 -0
- package/dist/components/macro/breadcrumb-preset.d.ts.map +1 -0
- package/dist/components/macro/card-preset.d.ts +10 -0
- package/dist/components/macro/card-preset.d.ts.map +1 -0
- package/dist/components/macro/carousel-preset.d.ts +18 -0
- package/dist/components/macro/carousel-preset.d.ts.map +1 -0
- package/dist/components/macro/checkbox-preset.d.ts +14 -0
- package/dist/components/macro/checkbox-preset.d.ts.map +1 -0
- package/dist/components/macro/combobox-preset.d.ts +27 -0
- package/dist/components/macro/combobox-preset.d.ts.map +1 -0
- package/dist/components/macro/command-preset.d.ts +16 -0
- package/dist/components/macro/command-preset.d.ts.map +1 -0
- package/dist/components/macro/date-picker.d.ts +62 -0
- package/dist/components/macro/date-picker.d.ts.map +1 -0
- package/dist/components/macro/dialog-preset.d.ts +24 -0
- package/dist/components/macro/dialog-preset.d.ts.map +1 -0
- package/dist/components/macro/empty-preset.d.ts +15 -0
- package/dist/components/macro/empty-preset.d.ts.map +1 -0
- package/dist/components/macro/field-preset.d.ts +15 -0
- package/dist/components/macro/field-preset.d.ts.map +1 -0
- package/dist/components/macro/index.d.ts +22 -0
- package/dist/components/macro/index.d.ts.map +1 -0
- package/dist/components/macro/input-otp-preset.d.ts +13 -0
- package/dist/components/macro/input-otp-preset.d.ts.map +1 -0
- package/dist/components/macro/input-preset.d.ts +21 -0
- package/dist/components/macro/input-preset.d.ts.map +1 -0
- package/dist/components/macro/pagination-preset.d.ts +13 -0
- package/dist/components/macro/pagination-preset.d.ts.map +1 -0
- package/dist/components/macro/progress-preset.d.ts +10 -0
- package/dist/components/macro/progress-preset.d.ts.map +1 -0
- package/dist/components/macro/radio-group-preset.d.ts +22 -0
- package/dist/components/macro/radio-group-preset.d.ts.map +1 -0
- package/dist/components/macro/select-preset.d.ts +42 -0
- package/dist/components/macro/select-preset.d.ts.map +1 -0
- package/dist/components/macro/slider-preset.d.ts +12 -0
- package/dist/components/macro/slider-preset.d.ts.map +1 -0
- package/dist/components/macro/switch-preset.d.ts +12 -0
- package/dist/components/macro/switch-preset.d.ts.map +1 -0
- package/dist/components/macro/tabs-preset.d.ts +17 -0
- package/dist/components/macro/tabs-preset.d.ts.map +1 -0
- package/dist/components/macro/textarea-preset.d.ts +17 -0
- package/dist/components/macro/textarea-preset.d.ts.map +1 -0
- package/dist/components/micro/accordion.d.ts +8 -0
- package/dist/components/micro/accordion.d.ts.map +1 -0
- package/dist/components/micro/alert-dialog.d.ts +33 -0
- package/dist/components/micro/alert-dialog.d.ts.map +1 -0
- package/dist/components/micro/alert.d.ts +28 -0
- package/dist/components/micro/alert.d.ts.map +1 -0
- package/dist/components/micro/aspect-ratio.d.ts +13 -0
- package/dist/components/micro/aspect-ratio.d.ts.map +1 -0
- package/dist/components/micro/avatar.d.ts +23 -0
- package/dist/components/micro/avatar.d.ts.map +1 -0
- package/dist/components/micro/badge.d.ts +16 -0
- package/dist/components/micro/badge.d.ts.map +1 -0
- package/dist/components/micro/breadcrumb.d.ts +24 -0
- package/dist/components/micro/breadcrumb.d.ts.map +1 -0
- package/dist/components/micro/button.d.ts +39 -0
- package/dist/components/micro/button.d.ts.map +1 -0
- package/dist/components/micro/calendar.d.ts +28 -0
- package/dist/components/micro/calendar.d.ts.map +1 -0
- package/dist/components/micro/card.d.ts +28 -0
- package/dist/components/micro/card.d.ts.map +1 -0
- package/dist/components/micro/carousel.d.ts +29 -0
- package/dist/components/micro/carousel.d.ts.map +1 -0
- package/dist/components/micro/chart.d.ts +49 -0
- package/dist/components/micro/chart.d.ts.map +1 -0
- package/dist/components/micro/checkbox.d.ts +17 -0
- package/dist/components/micro/checkbox.d.ts.map +1 -0
- package/dist/components/micro/collapsible.d.ts +15 -0
- package/dist/components/micro/collapsible.d.ts.map +1 -0
- package/dist/components/micro/combobox.d.ts +33 -0
- package/dist/components/micro/combobox.d.ts.map +1 -0
- package/dist/components/micro/command.d.ts +79 -0
- package/dist/components/micro/command.d.ts.map +1 -0
- package/dist/components/micro/context-menu.d.ts +60 -0
- package/dist/components/micro/context-menu.d.ts.map +1 -0
- package/dist/components/micro/dialog.d.ts +14 -0
- package/dist/components/micro/dialog.d.ts.map +1 -0
- package/dist/components/micro/direction.d.ts +2 -0
- package/dist/components/micro/direction.d.ts.map +1 -0
- package/dist/components/micro/drawer.d.ts +17 -0
- package/dist/components/micro/drawer.d.ts.map +1 -0
- package/dist/components/micro/dropdown-menu.d.ts +37 -0
- package/dist/components/micro/dropdown-menu.d.ts.map +1 -0
- package/dist/components/micro/empty.d.ts +23 -0
- package/dist/components/micro/empty.d.ts.map +1 -0
- package/dist/components/micro/field.d.ts +29 -0
- package/dist/components/micro/field.d.ts.map +1 -0
- package/dist/components/micro/hover-card.d.ts +17 -0
- package/dist/components/micro/hover-card.d.ts.map +1 -0
- package/dist/components/micro/input-group.d.ts +17 -0
- package/dist/components/micro/input-group.d.ts.map +1 -0
- package/dist/components/micro/input-otp.d.ts +44 -0
- package/dist/components/micro/input-otp.d.ts.map +1 -0
- package/dist/components/micro/input.d.ts +22 -0
- package/dist/components/micro/input.d.ts.map +1 -0
- package/dist/components/micro/item.d.ts +31 -0
- package/dist/components/micro/item.d.ts.map +1 -0
- package/dist/components/micro/kbd.d.ts +9 -0
- package/dist/components/micro/kbd.d.ts.map +1 -0
- package/dist/components/micro/label.d.ts +15 -0
- package/dist/components/micro/label.d.ts.map +1 -0
- package/dist/components/micro/menubar.d.ts +41 -0
- package/dist/components/micro/menubar.d.ts.map +1 -0
- package/dist/components/micro/navigation-menu.d.ts +18 -0
- package/dist/components/micro/navigation-menu.d.ts.map +1 -0
- package/dist/components/micro/pagination.d.ts +33 -0
- package/dist/components/micro/pagination.d.ts.map +1 -0
- package/dist/components/micro/popover.d.ts +23 -0
- package/dist/components/micro/popover.d.ts.map +1 -0
- package/dist/components/micro/progress.d.ts +19 -0
- package/dist/components/micro/progress.d.ts.map +1 -0
- package/dist/components/micro/radio-group.d.ts +13 -0
- package/dist/components/micro/radio-group.d.ts.map +1 -0
- package/dist/components/micro/resizable.d.ts +12 -0
- package/dist/components/micro/resizable.d.ts.map +1 -0
- package/dist/components/micro/scroll-area.d.ts +12 -0
- package/dist/components/micro/scroll-area.d.ts.map +1 -0
- package/dist/components/micro/select.d.ts +21 -0
- package/dist/components/micro/select.d.ts.map +1 -0
- package/dist/components/micro/separator.d.ts +9 -0
- package/dist/components/micro/separator.d.ts.map +1 -0
- package/dist/components/micro/sheet.d.ts +17 -0
- package/dist/components/micro/sheet.d.ts.map +1 -0
- package/dist/components/micro/sidebar.d.ts +28 -0
- package/dist/components/micro/sidebar.d.ts.map +1 -0
- package/dist/components/micro/skeleton.d.ts +9 -0
- package/dist/components/micro/skeleton.d.ts.map +1 -0
- package/dist/components/micro/slider.d.ts +14 -0
- package/dist/components/micro/slider.d.ts.map +1 -0
- package/dist/components/micro/sonner.d.ts +5 -0
- package/dist/components/micro/sonner.d.ts.map +1 -0
- package/dist/components/micro/spinner.d.ts +21 -0
- package/dist/components/micro/spinner.d.ts.map +1 -0
- package/dist/components/micro/switch.d.ts +13 -0
- package/dist/components/micro/switch.d.ts.map +1 -0
- package/dist/components/micro/table.d.ts +17 -0
- package/dist/components/micro/table.d.ts.map +1 -0
- package/dist/components/micro/tabs.d.ts +13 -0
- package/dist/components/micro/tabs.d.ts.map +1 -0
- package/dist/components/micro/textarea.d.ts +17 -0
- package/dist/components/micro/textarea.d.ts.map +1 -0
- package/dist/components/micro/theme-provider.d.ts +76 -0
- package/dist/components/micro/theme-provider.d.ts.map +1 -0
- package/dist/components/micro/toggle-group.d.ts +22 -0
- package/dist/components/micro/toggle-group.d.ts.map +1 -0
- package/dist/components/micro/toggle.d.ts +16 -0
- package/dist/components/micro/toggle.d.ts.map +1 -0
- package/dist/components/micro/tooltip.d.ts +20 -0
- package/dist/components/micro/tooltip.d.ts.map +1 -0
- package/dist/dev/App.d.ts +3 -0
- package/dist/dev/App.d.ts.map +1 -0
- package/dist/dev/components/GladcnLogo.d.ts +10 -0
- package/dist/dev/components/GladcnLogo.d.ts.map +1 -0
- package/dist/dev/components/code-highlighter.d.ts +5 -0
- package/dist/dev/components/code-highlighter.d.ts.map +1 -0
- package/dist/dev/components/dev-context.d.ts +12 -0
- package/dist/dev/components/dev-context.d.ts.map +1 -0
- package/dist/dev/components/showcase.d.ts +72 -0
- package/dist/dev/components/showcase.d.ts.map +1 -0
- package/dist/dev/data.d.ts +68 -0
- package/dist/dev/data.d.ts.map +1 -0
- package/dist/dev/main.d.ts +1 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/dev/sections/buttons.d.ts +2 -0
- package/dist/dev/sections/buttons.d.ts.map +1 -0
- package/dist/dev/sections/display.d.ts +2 -0
- package/dist/dev/sections/display.d.ts.map +1 -0
- package/dist/dev/sections/feedback.d.ts +2 -0
- package/dist/dev/sections/feedback.d.ts.map +1 -0
- package/dist/dev/sections/forms.d.ts +2 -0
- package/dist/dev/sections/forms.d.ts.map +1 -0
- package/dist/dev/sections/interactive.d.ts +2 -0
- package/dist/dev/sections/interactive.d.ts.map +1 -0
- package/dist/dev/sections/overview.d.ts +2 -0
- package/dist/dev/sections/overview.d.ts.map +1 -0
- package/dist/dev/showcase/accordion.d.ts +2 -0
- package/dist/dev/showcase/accordion.d.ts.map +1 -0
- package/dist/dev/showcase/alert-dialog.d.ts +2 -0
- package/dist/dev/showcase/alert-dialog.d.ts.map +1 -0
- package/dist/dev/showcase/alert.d.ts +2 -0
- package/dist/dev/showcase/alert.d.ts.map +1 -0
- package/dist/dev/showcase/aspect-ratio.d.ts +2 -0
- package/dist/dev/showcase/aspect-ratio.d.ts.map +1 -0
- package/dist/dev/showcase/avatar.d.ts +2 -0
- package/dist/dev/showcase/avatar.d.ts.map +1 -0
- package/dist/dev/showcase/badge.d.ts +2 -0
- package/dist/dev/showcase/badge.d.ts.map +1 -0
- package/dist/dev/showcase/breadcrumb.d.ts +2 -0
- package/dist/dev/showcase/breadcrumb.d.ts.map +1 -0
- package/dist/dev/showcase/button.d.ts +2 -0
- package/dist/dev/showcase/button.d.ts.map +1 -0
- package/dist/dev/showcase/calendar.d.ts +2 -0
- package/dist/dev/showcase/calendar.d.ts.map +1 -0
- package/dist/dev/showcase/card.d.ts +2 -0
- package/dist/dev/showcase/card.d.ts.map +1 -0
- package/dist/dev/showcase/carousel.d.ts +2 -0
- package/dist/dev/showcase/carousel.d.ts.map +1 -0
- package/dist/dev/showcase/chart.d.ts +2 -0
- package/dist/dev/showcase/chart.d.ts.map +1 -0
- package/dist/dev/showcase/checkbox.d.ts +2 -0
- package/dist/dev/showcase/checkbox.d.ts.map +1 -0
- package/dist/dev/showcase/collapsible.d.ts +3 -0
- package/dist/dev/showcase/collapsible.d.ts.map +1 -0
- package/dist/dev/showcase/combobox.d.ts +2 -0
- package/dist/dev/showcase/combobox.d.ts.map +1 -0
- package/dist/dev/showcase/command.d.ts +2 -0
- package/dist/dev/showcase/command.d.ts.map +1 -0
- package/dist/dev/showcase/context-menu.d.ts +2 -0
- package/dist/dev/showcase/context-menu.d.ts.map +1 -0
- package/dist/dev/showcase/dialog.d.ts +2 -0
- package/dist/dev/showcase/dialog.d.ts.map +1 -0
- package/dist/dev/showcase/drawer.d.ts +2 -0
- package/dist/dev/showcase/drawer.d.ts.map +1 -0
- package/dist/dev/showcase/dropdown-menu.d.ts +2 -0
- package/dist/dev/showcase/dropdown-menu.d.ts.map +1 -0
- package/dist/dev/showcase/empty.d.ts +2 -0
- package/dist/dev/showcase/empty.d.ts.map +1 -0
- package/dist/dev/showcase/hover-card.d.ts +2 -0
- package/dist/dev/showcase/hover-card.d.ts.map +1 -0
- package/dist/dev/showcase/input-group.d.ts +2 -0
- package/dist/dev/showcase/input-group.d.ts.map +1 -0
- package/dist/dev/showcase/input-otp.d.ts +2 -0
- package/dist/dev/showcase/input-otp.d.ts.map +1 -0
- package/dist/dev/showcase/input.d.ts +2 -0
- package/dist/dev/showcase/input.d.ts.map +1 -0
- package/dist/dev/showcase/item.d.ts +2 -0
- package/dist/dev/showcase/item.d.ts.map +1 -0
- package/dist/dev/showcase/kbd.d.ts +2 -0
- package/dist/dev/showcase/kbd.d.ts.map +1 -0
- package/dist/dev/showcase/label.d.ts +2 -0
- package/dist/dev/showcase/label.d.ts.map +1 -0
- package/dist/dev/showcase/menubar.d.ts +2 -0
- package/dist/dev/showcase/menubar.d.ts.map +1 -0
- package/dist/dev/showcase/navigation-menu.d.ts +3 -0
- package/dist/dev/showcase/navigation-menu.d.ts.map +1 -0
- package/dist/dev/showcase/overview.d.ts +2 -0
- package/dist/dev/showcase/overview.d.ts.map +1 -0
- package/dist/dev/showcase/pagination.d.ts +2 -0
- package/dist/dev/showcase/pagination.d.ts.map +1 -0
- package/dist/dev/showcase/popover.d.ts +2 -0
- package/dist/dev/showcase/popover.d.ts.map +1 -0
- package/dist/dev/showcase/progress.d.ts +2 -0
- package/dist/dev/showcase/progress.d.ts.map +1 -0
- package/dist/dev/showcase/radio-group.d.ts +2 -0
- package/dist/dev/showcase/radio-group.d.ts.map +1 -0
- package/dist/dev/showcase/resizable.d.ts +2 -0
- package/dist/dev/showcase/resizable.d.ts.map +1 -0
- package/dist/dev/showcase/scroll-area.d.ts +2 -0
- package/dist/dev/showcase/scroll-area.d.ts.map +1 -0
- package/dist/dev/showcase/select.d.ts +2 -0
- package/dist/dev/showcase/select.d.ts.map +1 -0
- package/dist/dev/showcase/separator.d.ts +2 -0
- package/dist/dev/showcase/separator.d.ts.map +1 -0
- package/dist/dev/showcase/sheet.d.ts +2 -0
- package/dist/dev/showcase/sheet.d.ts.map +1 -0
- package/dist/dev/showcase/sidebar.d.ts +2 -0
- package/dist/dev/showcase/sidebar.d.ts.map +1 -0
- package/dist/dev/showcase/skeleton.d.ts +2 -0
- package/dist/dev/showcase/skeleton.d.ts.map +1 -0
- package/dist/dev/showcase/slider.d.ts +2 -0
- package/dist/dev/showcase/slider.d.ts.map +1 -0
- package/dist/dev/showcase/sonner.d.ts +2 -0
- package/dist/dev/showcase/sonner.d.ts.map +1 -0
- package/dist/dev/showcase/spinner.d.ts +2 -0
- package/dist/dev/showcase/spinner.d.ts.map +1 -0
- package/dist/dev/showcase/switch.d.ts +2 -0
- package/dist/dev/showcase/switch.d.ts.map +1 -0
- package/dist/dev/showcase/table.d.ts +2 -0
- package/dist/dev/showcase/table.d.ts.map +1 -0
- package/dist/dev/showcase/tabs.d.ts +2 -0
- package/dist/dev/showcase/tabs.d.ts.map +1 -0
- package/dist/dev/showcase/textarea.d.ts +2 -0
- package/dist/dev/showcase/textarea.d.ts.map +1 -0
- package/dist/dev/showcase/theme-provider.d.ts +2 -0
- package/dist/dev/showcase/theme-provider.d.ts.map +1 -0
- package/dist/dev/showcase/toast.d.ts +2 -0
- package/dist/dev/showcase/toast.d.ts.map +1 -0
- package/dist/dev/showcase/toggle-group.d.ts +2 -0
- package/dist/dev/showcase/toggle-group.d.ts.map +1 -0
- package/dist/dev/showcase/toggle.d.ts +2 -0
- package/dist/dev/showcase/toggle.d.ts.map +1 -0
- package/dist/dev/showcase/tooltip.d.ts +2 -0
- package/dist/dev/showcase/tooltip.d.ts.map +1 -0
- package/dist/hooks/use-controllable-state.d.ts +14 -0
- package/dist/hooks/use-controllable-state.d.ts.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/index.cjs +5099 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4740 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/types.d.ts +4 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/preset.d.ts +18 -0
- package/dist/preset.d.ts.map +1 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/llms.txt +74 -0
- package/package.json +117 -0
- package/scripts/add-icononly-prop.ts +84 -0
- package/scripts/audit-best-practices.ts +114 -0
- package/scripts/audit-showcase.ts +262 -0
- package/scripts/audit-showcases.ts +83 -0
- package/scripts/clean-imports.ts +21 -0
- package/scripts/count_missing.ts +24 -0
- package/scripts/find-css-vars.ts +62 -0
- package/scripts/fix-portals.ts +90 -0
- package/scripts/full-audit.ts +89 -0
- package/scripts/merge-components.cjs +65 -0
- package/scripts/merge-components.js +64 -0
- package/scripts/optimize-barrel.ts +116 -0
- package/scripts/postinstall.cjs +228 -0
- package/scripts/refactor_divs.ts +39 -0
- package/scripts/remove_div_wrappers.ts +17 -0
- package/scripts/update-gaps.ts +83 -0
- package/scripts/update_showcase_codestrings.ts +87 -0
- package/src/components/macro/accordion-preset.test.tsx +37 -0
- package/src/components/macro/accordion-preset.tsx +41 -0
- package/src/components/macro/alert-dialog-preset.tsx +116 -0
- package/src/components/macro/alert-preset.tsx +94 -0
- package/src/components/macro/avatar-preset.tsx +54 -0
- package/src/components/macro/breadcrumb-preset.tsx +50 -0
- package/src/components/macro/card-preset.tsx +44 -0
- package/src/components/macro/carousel-preset.tsx +150 -0
- package/src/components/macro/checkbox-preset.test.tsx +49 -0
- package/src/components/macro/checkbox-preset.tsx +84 -0
- package/src/components/macro/combobox-preset.tsx +171 -0
- package/src/components/macro/command-preset.tsx +74 -0
- package/src/components/macro/date-picker.tsx +289 -0
- package/src/components/macro/dialog-preset.tsx +105 -0
- package/src/components/macro/empty-preset.tsx +46 -0
- package/src/components/macro/field-preset.test.tsx +69 -0
- package/src/components/macro/field-preset.tsx +65 -0
- package/src/components/macro/index.ts +21 -0
- package/src/components/macro/input-otp-preset.tsx +98 -0
- package/src/components/macro/input-preset.test.tsx +52 -0
- package/src/components/macro/input-preset.tsx +139 -0
- package/src/components/macro/pagination-preset.tsx +153 -0
- package/src/components/macro/progress-preset.test.tsx +65 -0
- package/src/components/macro/progress-preset.tsx +45 -0
- package/src/components/macro/radio-group-preset.tsx +115 -0
- package/src/components/macro/select-preset.tsx +168 -0
- package/src/components/macro/slider-preset.test.tsx +43 -0
- package/src/components/macro/slider-preset.tsx +86 -0
- package/src/components/macro/switch-preset.test.tsx +53 -0
- package/src/components/macro/switch-preset.tsx +70 -0
- package/src/components/macro/tabs-preset.test.tsx +31 -0
- package/src/components/macro/tabs-preset.tsx +51 -0
- package/src/components/macro/textarea-preset.test.tsx +39 -0
- package/src/components/macro/textarea-preset.tsx +55 -0
- package/src/components/micro/accordion.tsx +76 -0
- package/src/components/micro/alert-dialog.tsx +213 -0
- package/src/components/micro/alert.tsx +146 -0
- package/src/components/micro/aspect-ratio.tsx +38 -0
- package/src/components/micro/avatar.tsx +143 -0
- package/src/components/micro/badge.tsx +207 -0
- package/src/components/micro/breadcrumb.tsx +162 -0
- package/src/components/micro/button.test.tsx +25 -0
- package/src/components/micro/button.tsx +361 -0
- package/src/components/micro/calendar.tsx +383 -0
- package/src/components/micro/card.tsx +112 -0
- package/src/components/micro/carousel.tsx +341 -0
- package/src/components/micro/chart.tsx +392 -0
- package/src/components/micro/checkbox.tsx +74 -0
- package/src/components/micro/collapsible.tsx +65 -0
- package/src/components/micro/combobox.tsx +349 -0
- package/src/components/micro/command.tsx +238 -0
- package/src/components/micro/context-menu.tsx +285 -0
- package/src/components/micro/dialog.tsx +143 -0
- package/src/components/micro/direction.tsx +13 -0
- package/src/components/micro/drawer.tsx +149 -0
- package/src/components/micro/dropdown-menu.tsx +305 -0
- package/src/components/micro/empty.tsx +144 -0
- package/src/components/micro/field.tsx +311 -0
- package/src/components/micro/hover-card.tsx +86 -0
- package/src/components/micro/input-group.tsx +269 -0
- package/src/components/micro/input-otp.tsx +130 -0
- package/src/components/micro/input.tsx +56 -0
- package/src/components/micro/item.tsx +206 -0
- package/src/components/micro/kbd.tsx +38 -0
- package/src/components/micro/label.tsx +48 -0
- package/src/components/micro/menubar.tsx +302 -0
- package/src/components/micro/navigation-menu.tsx +197 -0
- package/src/components/micro/pagination.tsx +162 -0
- package/src/components/micro/popover.tsx +131 -0
- package/src/components/micro/progress.tsx +144 -0
- package/src/components/micro/radio-group.tsx +73 -0
- package/src/components/micro/resizable.tsx +64 -0
- package/src/components/micro/scroll-area.tsx +68 -0
- package/src/components/micro/select.tsx +234 -0
- package/src/components/micro/separator.tsx +37 -0
- package/src/components/micro/sheet.tsx +144 -0
- package/src/components/micro/sidebar.tsx +238 -0
- package/src/components/micro/skeleton.tsx +29 -0
- package/src/components/micro/slider.tsx +135 -0
- package/src/components/micro/sonner.tsx +85 -0
- package/src/components/micro/spinner.tsx +44 -0
- package/src/components/micro/switch.tsx +70 -0
- package/src/components/micro/table.tsx +210 -0
- package/src/components/micro/tabs.tsx +100 -0
- package/src/components/micro/textarea.tsx +53 -0
- package/src/components/micro/theme-provider.tsx +163 -0
- package/src/components/micro/toggle-group.tsx +121 -0
- package/src/components/micro/toggle.tsx +55 -0
- package/src/components/micro/tooltip.tsx +105 -0
- package/src/dev/App.tsx +322 -0
- package/src/dev/_debug_select.html +29 -0
- package/src/dev/components/GladcnLogo.tsx +80 -0
- package/src/dev/components/code-highlighter.tsx +67 -0
- package/src/dev/components/dev-context.tsx +31 -0
- package/src/dev/components/showcase.tsx +413 -0
- package/src/dev/data.ts +341 -0
- package/src/dev/index.css +55 -0
- package/src/dev/main.tsx +30 -0
- package/src/dev/sections/buttons.tsx +303 -0
- package/src/dev/sections/display.tsx +270 -0
- package/src/dev/sections/feedback.tsx +371 -0
- package/src/dev/sections/forms.tsx +652 -0
- package/src/dev/sections/interactive.tsx +51 -0
- package/src/dev/sections/overview.tsx +396 -0
- package/src/dev/showcase/accordion.tsx +947 -0
- package/src/dev/showcase/alert-dialog.tsx +1056 -0
- package/src/dev/showcase/alert.tsx +756 -0
- package/src/dev/showcase/aspect-ratio.tsx +339 -0
- package/src/dev/showcase/avatar.tsx +470 -0
- package/src/dev/showcase/badge.tsx +227 -0
- package/src/dev/showcase/breadcrumb.tsx +269 -0
- package/src/dev/showcase/button.tsx +309 -0
- package/src/dev/showcase/calendar.tsx +380 -0
- package/src/dev/showcase/card.tsx +448 -0
- package/src/dev/showcase/carousel.tsx +562 -0
- package/src/dev/showcase/chart.tsx +130 -0
- package/src/dev/showcase/checkbox.tsx +611 -0
- package/src/dev/showcase/collapsible.tsx +298 -0
- package/src/dev/showcase/combobox.tsx +777 -0
- package/src/dev/showcase/command.tsx +245 -0
- package/src/dev/showcase/context-menu.tsx +239 -0
- package/src/dev/showcase/dialog.tsx +1141 -0
- package/src/dev/showcase/drawer.tsx +392 -0
- package/src/dev/showcase/dropdown-menu.tsx +420 -0
- package/src/dev/showcase/empty.tsx +493 -0
- package/src/dev/showcase/hover-card.tsx +336 -0
- package/src/dev/showcase/input-group.tsx +511 -0
- package/src/dev/showcase/input-otp.tsx +404 -0
- package/src/dev/showcase/input.tsx +530 -0
- package/src/dev/showcase/item.tsx +295 -0
- package/src/dev/showcase/kbd.tsx +276 -0
- package/src/dev/showcase/label.tsx +121 -0
- package/src/dev/showcase/menubar.tsx +392 -0
- package/src/dev/showcase/navigation-menu.tsx +304 -0
- package/src/dev/showcase/overview.tsx +1106 -0
- package/src/dev/showcase/pagination.tsx +312 -0
- package/src/dev/showcase/popover.tsx +374 -0
- package/src/dev/showcase/progress.tsx +299 -0
- package/src/dev/showcase/radio-group.tsx +612 -0
- package/src/dev/showcase/resizable.tsx +237 -0
- package/src/dev/showcase/scroll-area.tsx +157 -0
- package/src/dev/showcase/select.tsx +628 -0
- package/src/dev/showcase/separator.tsx +126 -0
- package/src/dev/showcase/sheet.tsx +566 -0
- package/src/dev/showcase/sidebar.tsx +120 -0
- package/src/dev/showcase/skeleton.tsx +213 -0
- package/src/dev/showcase/slider.tsx +506 -0
- package/src/dev/showcase/sonner.tsx +376 -0
- package/src/dev/showcase/spinner.tsx +124 -0
- package/src/dev/showcase/switch.tsx +602 -0
- package/src/dev/showcase/table.tsx +196 -0
- package/src/dev/showcase/tabs.tsx +662 -0
- package/src/dev/showcase/textarea.tsx +498 -0
- package/src/dev/showcase/theme-provider.tsx +894 -0
- package/src/dev/showcase/toast.tsx +119 -0
- package/src/dev/showcase/toggle-group.tsx +223 -0
- package/src/dev/showcase/toggle.tsx +171 -0
- package/src/dev/showcase/tooltip.tsx +372 -0
- package/src/hooks/use-controllable-state.ts +87 -0
- package/src/hooks/use-mobile.ts +21 -0
- package/src/index.ts +62 -0
- package/src/lib/types.ts +14 -0
- package/src/lib/utils.test.ts +14 -0
- package/src/lib/utils.ts +6 -0
- package/src/preset.ts +17 -0
- package/src/styles/gladcn.css +116 -0
- package/src/styles/tokens.css +213 -0
- package/src/test/setup.ts +8 -0
- package/src/vite-env.d.ts +1 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { DocsP, ExampleSection, Showcase, ShowcaseDocs } from "../../dev/components/showcase";
|
|
2
|
+
import { FolderIcon, Package2Icon, SettingsIcon, UserIcon } from "lucide-react";
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
Sidebar,
|
|
6
|
+
SidebarLabel,
|
|
7
|
+
SidebarLogo,
|
|
8
|
+
SidebarMenuItem,
|
|
9
|
+
SidebarMenuItemList,
|
|
10
|
+
useSidebarToggle,
|
|
11
|
+
} from "../../components/micro/sidebar";
|
|
12
|
+
|
|
13
|
+
function SidebarMicroShowcase() {
|
|
14
|
+
const { sidebarRef, toggleSidebar, defaultState } =
|
|
15
|
+
useSidebarToggle("expanded");
|
|
16
|
+
|
|
17
|
+
return (
|
|
18
|
+
<div className="space-y-10 mt-6">
|
|
19
|
+
<ExampleSection
|
|
20
|
+
label="Dumb Component Architecture"
|
|
21
|
+
description="Sidebar không có transition width, sử dụng display: none để ẩn ngay lập tức, không gây hiệu ứng giật khung."
|
|
22
|
+
fullWidth
|
|
23
|
+
codeString={`const { sidebarRef, toggleSidebar, defaultState } = useSidebarToggle("expanded");
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div className="flex h-[500px] w-full">
|
|
27
|
+
<Sidebar ref={sidebarRef} defaultState={defaultState} expandedWidth={300}>
|
|
28
|
+
<SidebarLogo icon={<Package2Icon />} text="Acme Corp" />
|
|
29
|
+
<div className="flex-1 py-2 flex flex-col gap-4">
|
|
30
|
+
<div className="flex flex-col gap-1">
|
|
31
|
+
<SidebarLabel icon={<FolderIcon />} text="Projects" />
|
|
32
|
+
<SidebarMenuItemList>
|
|
33
|
+
<SidebarMenuItem text="Active Projects" />
|
|
34
|
+
<SidebarMenuItem text="Archived Projects" />
|
|
35
|
+
<SidebarMenuItem text="Templates" />
|
|
36
|
+
</SidebarMenuItemList>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</Sidebar>
|
|
40
|
+
<main className="flex-1 p-6">
|
|
41
|
+
<button onClick={toggleSidebar}>Toggle Sidebar</button>
|
|
42
|
+
</main>
|
|
43
|
+
</div>
|
|
44
|
+
);`}
|
|
45
|
+
>
|
|
46
|
+
<div className="rounded-xl border border-border overflow-hidden flex h-[500px] w-full bg-background">
|
|
47
|
+
<Sidebar
|
|
48
|
+
ref={sidebarRef}
|
|
49
|
+
defaultState={defaultState}
|
|
50
|
+
expandedWidth={300}
|
|
51
|
+
>
|
|
52
|
+
{/* Logo */}
|
|
53
|
+
<SidebarLogo icon={<Package2Icon />} text="Acme Corp" />
|
|
54
|
+
|
|
55
|
+
{/* Menu chính */}
|
|
56
|
+
<div className="flex-1 py-2 flex flex-col gap-4">
|
|
57
|
+
<div className="flex flex-col gap-1">
|
|
58
|
+
<SidebarLabel icon={<FolderIcon />} text="Projects" />
|
|
59
|
+
<SidebarMenuItemList>
|
|
60
|
+
<SidebarMenuItem text="Active Projects" />
|
|
61
|
+
<SidebarMenuItem text="Archived Projects" />
|
|
62
|
+
<SidebarMenuItem text="Templates" />
|
|
63
|
+
</SidebarMenuItemList>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div className="flex flex-col gap-1">
|
|
67
|
+
<SidebarLabel icon={<UserIcon />} text="Team" />
|
|
68
|
+
<SidebarMenuItemList>
|
|
69
|
+
<SidebarMenuItem text="Members" />
|
|
70
|
+
<SidebarMenuItem text="Permissions" />
|
|
71
|
+
</SidebarMenuItemList>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
{/* Footer */}
|
|
76
|
+
<div className="p-2 border-t border-sidebar-border mt-auto">
|
|
77
|
+
<SidebarLabel icon={<SettingsIcon />} text="Settings" />
|
|
78
|
+
</div>
|
|
79
|
+
</Sidebar>
|
|
80
|
+
|
|
81
|
+
<main className="flex-1 flex flex-col bg-muted/10 p-6">
|
|
82
|
+
<h1 className="text-xl font-bold">Main Application</h1>
|
|
83
|
+
<p className="text-muted-foreground mt-4">
|
|
84
|
+
Hãy bấm menu State ở phía trên cùng, hoặc bấm nút Toggle bên dưới
|
|
85
|
+
để chuyển qua lại giữa Expanded và Collapsed.
|
|
86
|
+
</p>
|
|
87
|
+
<div className="mt-6">
|
|
88
|
+
<button
|
|
89
|
+
className="px-4 py-2 bg-primary text-primary-foreground rounded-md shadow hover:bg-primary/90 transition-colors"
|
|
90
|
+
onClick={toggleSidebar}
|
|
91
|
+
>
|
|
92
|
+
Toggle Sidebar (Direct DOM Mutation)
|
|
93
|
+
</button>
|
|
94
|
+
</div>
|
|
95
|
+
</main>
|
|
96
|
+
</div>
|
|
97
|
+
</ExampleSection>
|
|
98
|
+
</div>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export default function SidebarShowcase() {
|
|
103
|
+
return (
|
|
104
|
+
<Showcase
|
|
105
|
+
title="Sidebar (Ultra Primitive)"
|
|
106
|
+
description="Sidebar nguyên thuỷ nhất, chỉ nhận context state, CSS thuần tuý đóng mở tức thì."
|
|
107
|
+
generalConcept={
|
|
108
|
+
<ShowcaseDocs>
|
|
109
|
+
<DocsP>
|
|
110
|
+
Sidebar tối giản chỉ dùng CSS và DOM attribute để chuyển
|
|
111
|
+
trạng thái expanded/collapsed. Không có JS transition, không
|
|
112
|
+
re-render. Sử dụng useSidebarToggle hook để toggle bằng
|
|
113
|
+
direct DOM mutation.
|
|
114
|
+
</DocsP>
|
|
115
|
+
</ShowcaseDocs>
|
|
116
|
+
}
|
|
117
|
+
tabs={[{ label: "Micro (Primitive)", content: <SidebarMicroShowcase /> }]}
|
|
118
|
+
/>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { Skeleton } from "../../components/micro/skeleton";
|
|
2
|
+
import {
|
|
3
|
+
DocsCode,
|
|
4
|
+
DocsH3,
|
|
5
|
+
DocsP,
|
|
6
|
+
ExampleGrid,
|
|
7
|
+
ExampleSection,
|
|
8
|
+
Showcase,
|
|
9
|
+
ShowcaseDocs,
|
|
10
|
+
} from "../../dev/components/showcase";
|
|
11
|
+
|
|
12
|
+
// ──────────────────────────────────────────────────────────
|
|
13
|
+
// SECTION 1: Micro Content (Only Micro exists)
|
|
14
|
+
// ──────────────────────────────────────────────────────────
|
|
15
|
+
function SkeletonMicroShowcase() {
|
|
16
|
+
return (
|
|
17
|
+
<div className="space-y-10 mt-6">
|
|
18
|
+
<ExampleSection
|
|
19
|
+
label="Hình dáng cơ bản (Basic Shapes)"
|
|
20
|
+
description="Thay đổi hình dạng thông qua các class Tailwind: w-..., h-..., rounded-full, v.v."
|
|
21
|
+
fullWidth
|
|
22
|
+
codeString={`<div className="flex flex-wrap items-center gap-6 w-full p-4 border border-border rounded-lg bg-card">
|
|
23
|
+
<Skeleton className="h-4 w-48" />
|
|
24
|
+
<Skeleton className="h-4 w-32" />
|
|
25
|
+
<Skeleton className="h-4 w-64" />
|
|
26
|
+
<Skeleton className="size-12 rounded-full" />
|
|
27
|
+
<Skeleton className="h-24 w-40 rounded-xl" />
|
|
28
|
+
<Skeleton className="h-10 w-24 rounded-md" />
|
|
29
|
+
</div>
|
|
30
|
+
`}
|
|
31
|
+
>
|
|
32
|
+
<div className="flex flex-wrap items-center gap-6 w-full p-4 border border-border rounded-lg bg-card">
|
|
33
|
+
<Skeleton className="h-4 w-48" />
|
|
34
|
+
<Skeleton className="h-4 w-32" />
|
|
35
|
+
<Skeleton className="h-4 w-64" />
|
|
36
|
+
<Skeleton className="size-12 rounded-full" />
|
|
37
|
+
<Skeleton className="h-24 w-40 rounded-xl" />
|
|
38
|
+
<Skeleton className="h-10 w-24 rounded-md" />
|
|
39
|
+
</div>
|
|
40
|
+
</ExampleSection>
|
|
41
|
+
|
|
42
|
+
<ExampleGrid>
|
|
43
|
+
<ExampleSection
|
|
44
|
+
label="Card Profile"
|
|
45
|
+
description="Khung xương mô phỏng ảnh đại diện, tên người dùng và số liệu."
|
|
46
|
+
codeString={`<div className="space-y-6 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
47
|
+
<div className="flex items-center space-x-4">
|
|
48
|
+
<Skeleton className="h-12 w-12 rounded-full" />
|
|
49
|
+
<div className="space-y-2">
|
|
50
|
+
<Skeleton className="h-4 w-[200px]" />
|
|
51
|
+
<Skeleton className="h-4 w-[150px]" />
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
<div className="grid grid-cols-2 gap-4">
|
|
55
|
+
<Skeleton className="h-24 rounded-xl" />
|
|
56
|
+
<Skeleton className="h-24 rounded-xl" />
|
|
57
|
+
</div>
|
|
58
|
+
</div>
|
|
59
|
+
`}
|
|
60
|
+
>
|
|
61
|
+
<div className="space-y-6 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
62
|
+
<div className="flex items-center space-x-4">
|
|
63
|
+
<Skeleton className="h-12 w-12 rounded-full" />
|
|
64
|
+
<div className="space-y-2">
|
|
65
|
+
<Skeleton className="h-4 w-[200px]" />
|
|
66
|
+
<Skeleton className="h-4 w-[150px]" />
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div className="grid grid-cols-2 gap-4">
|
|
70
|
+
<Skeleton className="h-24 rounded-xl" />
|
|
71
|
+
<Skeleton className="h-24 rounded-xl" />
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</ExampleSection>
|
|
75
|
+
|
|
76
|
+
<ExampleSection
|
|
77
|
+
label="Article / Blog Post"
|
|
78
|
+
description="Khung xương mô phỏng các đoạn văn bản (text blocks)."
|
|
79
|
+
codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
80
|
+
<Skeleton className="h-6 w-3/4" />
|
|
81
|
+
<Skeleton className="h-4 w-full" />
|
|
82
|
+
<Skeleton className="h-4 w-full" />
|
|
83
|
+
<Skeleton className="h-4 w-5/6" />
|
|
84
|
+
<div className="pt-2" />
|
|
85
|
+
<Skeleton className="h-4 w-full" />
|
|
86
|
+
<Skeleton className="h-4 w-4/5" />
|
|
87
|
+
<Skeleton className="h-4 w-2/3" />
|
|
88
|
+
</div>
|
|
89
|
+
`}
|
|
90
|
+
>
|
|
91
|
+
<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
92
|
+
<Skeleton className="h-6 w-3/4" />
|
|
93
|
+
<Skeleton className="h-4 w-full" />
|
|
94
|
+
<Skeleton className="h-4 w-full" />
|
|
95
|
+
<Skeleton className="h-4 w-5/6" />
|
|
96
|
+
<div className="pt-2" />
|
|
97
|
+
<Skeleton className="h-4 w-full" />
|
|
98
|
+
<Skeleton className="h-4 w-4/5" />
|
|
99
|
+
<Skeleton className="h-4 w-2/3" />
|
|
100
|
+
</div>
|
|
101
|
+
</ExampleSection>
|
|
102
|
+
</ExampleGrid>
|
|
103
|
+
|
|
104
|
+
<ExampleGrid>
|
|
105
|
+
<ExampleSection
|
|
106
|
+
label="List Items / Table Rows"
|
|
107
|
+
description="Sử dụng vòng lặp hoặc nhiều thẻ lặp lại để mô phỏng danh sách."
|
|
108
|
+
codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
109
|
+
<div className="flex items-center space-x-4">
|
|
110
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
111
|
+
<div className="space-y-2">
|
|
112
|
+
<Skeleton className="h-3 w-[180px]" />
|
|
113
|
+
<Skeleton className="h-3 w-[100px]" />
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
<div className="flex items-center space-x-4">
|
|
117
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
118
|
+
<div className="space-y-2">
|
|
119
|
+
<Skeleton className="h-3 w-[150px]" />
|
|
120
|
+
<Skeleton className="h-3 w-[120px]" />
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
<div className="flex items-center space-x-4">
|
|
124
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
125
|
+
<div className="space-y-2">
|
|
126
|
+
<Skeleton className="h-3 w-[170px]" />
|
|
127
|
+
<Skeleton className="h-3 w-[90px]" />
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
`}
|
|
132
|
+
>
|
|
133
|
+
<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
134
|
+
<div className="flex items-center space-x-4">
|
|
135
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
136
|
+
<div className="space-y-2">
|
|
137
|
+
<Skeleton className="h-3 w-[180px]" />
|
|
138
|
+
<Skeleton className="h-3 w-[100px]" />
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
<div className="flex items-center space-x-4">
|
|
142
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
143
|
+
<div className="space-y-2">
|
|
144
|
+
<Skeleton className="h-3 w-[150px]" />
|
|
145
|
+
<Skeleton className="h-3 w-[120px]" />
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
<div className="flex items-center space-x-4">
|
|
149
|
+
<Skeleton className="h-8 w-8 rounded-full" />
|
|
150
|
+
<div className="space-y-2">
|
|
151
|
+
<Skeleton className="h-3 w-[170px]" />
|
|
152
|
+
<Skeleton className="h-3 w-[90px]" />
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</ExampleSection>
|
|
157
|
+
|
|
158
|
+
<ExampleSection
|
|
159
|
+
label="Media / Image Placeholder"
|
|
160
|
+
description="Khung xương lớn mô phỏng hình ảnh hoặc video player."
|
|
161
|
+
codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
162
|
+
<Skeleton className="h-48 w-full rounded-md" />
|
|
163
|
+
<div className="flex justify-between items-center pt-2">
|
|
164
|
+
<div className="space-y-2">
|
|
165
|
+
<Skeleton className="h-4 w-[150px]" />
|
|
166
|
+
<Skeleton className="h-3 w-[100px]" />
|
|
167
|
+
</div>
|
|
168
|
+
<Skeleton className="h-8 w-16 rounded-md" />
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
`}
|
|
172
|
+
>
|
|
173
|
+
<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
|
|
174
|
+
<Skeleton className="h-48 w-full rounded-md" />
|
|
175
|
+
<div className="flex justify-between items-center pt-2">
|
|
176
|
+
<div className="space-y-2">
|
|
177
|
+
<Skeleton className="h-4 w-[150px]" />
|
|
178
|
+
<Skeleton className="h-3 w-[100px]" />
|
|
179
|
+
</div>
|
|
180
|
+
<Skeleton className="h-8 w-16 rounded-md" />
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
</ExampleSection>
|
|
184
|
+
</ExampleGrid>
|
|
185
|
+
</div>
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// ──────────────────────────────────────────────────────────
|
|
190
|
+
// SECTION 3: Entry point
|
|
191
|
+
// ──────────────────────────────────────────────────────────
|
|
192
|
+
export default function SkeletonShowcase() {
|
|
193
|
+
return (
|
|
194
|
+
<Showcase
|
|
195
|
+
title="Skeleton"
|
|
196
|
+
description="Thành phần tạo ra hiệu ứng nhấp nháy, mô phỏng bố cục hiển thị để giữ chỗ (placeholder) trong khi chờ dữ liệu đang tải."
|
|
197
|
+
generalConcept={
|
|
198
|
+
<ShowcaseDocs>
|
|
199
|
+
<DocsH3>Skeleton (Khung xương)</DocsH3>
|
|
200
|
+
<DocsP>
|
|
201
|
+
<DocsCode>Skeleton</DocsCode> không có phiên bản Macro. Nó là một
|
|
202
|
+
thẻ <DocsCode>div</DocsCode> có sẵn hiệu ứng nhấp nháy mờ (pulse
|
|
203
|
+
animation). Bạn kết hợp với Tailwind CSS classes (chiều cao, chiều
|
|
204
|
+
rộng, bo góc) để mô phỏng hình dáng của nội dung chưa được tải xong.
|
|
205
|
+
</DocsP>
|
|
206
|
+
</ShowcaseDocs>
|
|
207
|
+
}
|
|
208
|
+
tabs={[
|
|
209
|
+
{ label: "Micro (Primitive)", content: <SkeletonMicroShowcase /> },
|
|
210
|
+
]}
|
|
211
|
+
/>
|
|
212
|
+
);
|
|
213
|
+
}
|