@gv-tech/design-system 1.1.0 → 1.2.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/.agent/skills/dogfood-components/SKILL.md +34 -0
- package/.agent/skills/maintain-component/SKILL.md +42 -0
- package/.prettierignore +2 -0
- package/CHANGELOG.md +16 -0
- package/dist/App.d.ts.map +1 -1
- package/dist/components/docs/Footer.d.ts.map +1 -1
- package/dist/components/docs/PropsTable.d.ts +13 -0
- package/dist/components/docs/PropsTable.d.ts.map +1 -0
- package/dist/components/docs/Sidebar.d.ts.map +1 -1
- package/dist/components/docs/index.d.ts +1 -0
- package/dist/components/docs/index.d.ts.map +1 -1
- package/dist/components/ui/accordion.test.d.ts +2 -0
- package/dist/components/ui/accordion.test.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog.test.d.ts +2 -0
- package/dist/components/ui/alert-dialog.test.d.ts.map +1 -0
- package/dist/components/ui/alert.test.d.ts +2 -0
- package/dist/components/ui/alert.test.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio.test.d.ts +2 -0
- package/dist/components/ui/aspect-ratio.test.d.ts.map +1 -0
- package/dist/components/ui/avatar.test.d.ts +2 -0
- package/dist/components/ui/avatar.test.d.ts.map +1 -0
- package/dist/components/ui/badge.test.d.ts +2 -0
- package/dist/components/ui/badge.test.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb.test.d.ts +2 -0
- package/dist/components/ui/breadcrumb.test.d.ts.map +1 -0
- package/dist/components/ui/button.test.d.ts +2 -0
- package/dist/components/ui/button.test.d.ts.map +1 -0
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.test.d.ts +2 -0
- package/dist/components/ui/calendar.test.d.ts.map +1 -0
- package/dist/components/ui/card.test.d.ts +2 -0
- package/dist/components/ui/card.test.d.ts.map +1 -0
- package/dist/components/ui/carousel.test.d.ts +2 -0
- package/dist/components/ui/carousel.test.d.ts.map +1 -0
- package/dist/components/ui/chart.test.d.ts +2 -0
- package/dist/components/ui/chart.test.d.ts.map +1 -0
- package/dist/components/ui/checkbox.test.d.ts +2 -0
- package/dist/components/ui/checkbox.test.d.ts.map +1 -0
- package/dist/components/ui/collapsible.test.d.ts +2 -0
- package/dist/components/ui/collapsible.test.d.ts.map +1 -0
- package/dist/components/ui/command.test.d.ts +2 -0
- package/dist/components/ui/command.test.d.ts.map +1 -0
- package/dist/components/ui/context-menu.test.d.ts +2 -0
- package/dist/components/ui/context-menu.test.d.ts.map +1 -0
- package/dist/components/ui/dialog.test.d.ts +2 -0
- package/dist/components/ui/dialog.test.d.ts.map +1 -0
- package/dist/components/ui/drawer.test.d.ts +2 -0
- package/dist/components/ui/drawer.test.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.test.d.ts +2 -0
- package/dist/components/ui/dropdown-menu.test.d.ts.map +1 -0
- package/dist/components/ui/form.test.d.ts +2 -0
- package/dist/components/ui/form.test.d.ts.map +1 -0
- package/dist/components/ui/hover-card.test.d.ts +2 -0
- package/dist/components/ui/hover-card.test.d.ts.map +1 -0
- package/dist/components/ui/input.test.d.ts +2 -0
- package/dist/components/ui/input.test.d.ts.map +1 -0
- package/dist/components/ui/label.test.d.ts +2 -0
- package/dist/components/ui/label.test.d.ts.map +1 -0
- package/dist/components/ui/menubar.test.d.ts +2 -0
- package/dist/components/ui/menubar.test.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu.test.d.ts +2 -0
- package/dist/components/ui/navigation-menu.test.d.ts.map +1 -0
- package/dist/components/ui/pagination.test.d.ts +2 -0
- package/dist/components/ui/pagination.test.d.ts.map +1 -0
- package/dist/components/ui/popover.test.d.ts +2 -0
- package/dist/components/ui/popover.test.d.ts.map +1 -0
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.test.d.ts +2 -0
- package/dist/components/ui/progress.test.d.ts.map +1 -0
- package/dist/components/ui/radio-group.test.d.ts +2 -0
- package/dist/components/ui/radio-group.test.d.ts.map +1 -0
- package/dist/components/ui/resizable.test.d.ts +2 -0
- package/dist/components/ui/resizable.test.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.test.d.ts +2 -0
- package/dist/components/ui/scroll-area.test.d.ts.map +1 -0
- package/dist/components/ui/select.test.d.ts +2 -0
- package/dist/components/ui/select.test.d.ts.map +1 -0
- package/dist/components/ui/separator.test.d.ts +2 -0
- package/dist/components/ui/separator.test.d.ts.map +1 -0
- package/dist/components/ui/sheet.test.d.ts +2 -0
- package/dist/components/ui/sheet.test.d.ts.map +1 -0
- package/dist/components/ui/skeleton.test.d.ts +2 -0
- package/dist/components/ui/skeleton.test.d.ts.map +1 -0
- package/dist/components/ui/slider.test.d.ts +2 -0
- package/dist/components/ui/slider.test.d.ts.map +1 -0
- package/dist/components/ui/sonner.test.d.ts +2 -0
- package/dist/components/ui/sonner.test.d.ts.map +1 -0
- package/dist/components/ui/switch.test.d.ts +2 -0
- package/dist/components/ui/switch.test.d.ts.map +1 -0
- package/dist/components/ui/table.test.d.ts +2 -0
- package/dist/components/ui/table.test.d.ts.map +1 -0
- package/dist/components/ui/tabs.test.d.ts +2 -0
- package/dist/components/ui/tabs.test.d.ts.map +1 -0
- package/dist/components/ui/textarea.test.d.ts +2 -0
- package/dist/components/ui/textarea.test.d.ts.map +1 -0
- package/dist/components/ui/theme-toggle.d.ts +17 -0
- package/dist/components/ui/theme-toggle.d.ts.map +1 -0
- package/dist/components/ui/toast.test.d.ts +2 -0
- package/dist/components/ui/toast.test.d.ts.map +1 -0
- package/dist/components/ui/toggle-group.test.d.ts +2 -0
- package/dist/components/ui/toggle-group.test.d.ts.map +1 -0
- package/dist/components/ui/toggle.test.d.ts +2 -0
- package/dist/components/ui/toggle.test.d.ts.map +1 -0
- package/dist/components/ui/tooltip.test.d.ts +2 -0
- package/dist/components/ui/tooltip.test.d.ts.map +1 -0
- package/dist/index.cjs.js +3 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +978 -860
- package/dist/index.es.js.map +1 -1
- package/dist/lib/tokens.d.ts +54 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/pages/ColorTokensDocs.d.ts +2 -0
- package/dist/pages/ColorTokensDocs.d.ts.map +1 -0
- package/dist/pages/GettingStarted.d.ts.map +1 -1
- package/dist/pages/components/AccordionDocs.d.ts.map +1 -1
- package/dist/pages/components/AlertDialogDocs.d.ts.map +1 -1
- package/dist/pages/components/AlertDocs.d.ts.map +1 -1
- package/dist/pages/components/AspectRatioDocs.d.ts.map +1 -1
- package/dist/pages/components/AvatarDocs.d.ts.map +1 -1
- package/dist/pages/components/BadgeDocs.d.ts.map +1 -1
- package/dist/pages/components/BreadcrumbDocs.d.ts.map +1 -1
- package/dist/pages/components/ButtonDocs.d.ts.map +1 -1
- package/dist/pages/components/CalendarDocs.d.ts.map +1 -1
- package/dist/pages/components/CardDocs.d.ts.map +1 -1
- package/dist/pages/components/CarouselDocs.d.ts.map +1 -1
- package/dist/pages/components/ChartDocs.d.ts.map +1 -1
- package/dist/pages/components/CheckboxDocs.d.ts.map +1 -1
- package/dist/pages/components/CollapsibleDocs.d.ts.map +1 -1
- package/dist/pages/components/CommandDocs.d.ts.map +1 -1
- package/dist/pages/components/ContextMenuDocs.d.ts.map +1 -1
- package/dist/pages/components/DialogDocs.d.ts.map +1 -1
- package/dist/pages/components/DrawerDocs.d.ts.map +1 -1
- package/dist/pages/components/DropdownMenuDocs.d.ts.map +1 -1
- package/dist/pages/components/FormDocs.d.ts.map +1 -1
- package/dist/pages/components/HoverCardDocs.d.ts.map +1 -1
- package/dist/pages/components/InputDocs.d.ts.map +1 -1
- package/dist/pages/components/LabelDocs.d.ts.map +1 -1
- package/dist/pages/components/MenubarDocs.d.ts.map +1 -1
- package/dist/pages/components/NavigationMenuDocs.d.ts.map +1 -1
- package/dist/pages/components/PaginationDocs.d.ts.map +1 -1
- package/dist/pages/components/PopoverDocs.d.ts.map +1 -1
- package/dist/pages/components/ProgressDocs.d.ts.map +1 -1
- package/dist/pages/components/RadioGroupDocs.d.ts.map +1 -1
- package/dist/pages/components/ResizableDocs.d.ts.map +1 -1
- package/dist/pages/components/ScrollAreaDocs.d.ts.map +1 -1
- package/dist/pages/components/SelectDocs.d.ts.map +1 -1
- package/dist/pages/components/SeparatorDocs.d.ts.map +1 -1
- package/dist/pages/components/SheetDocs.d.ts.map +1 -1
- package/dist/pages/components/SkeletonDocs.d.ts.map +1 -1
- package/dist/pages/components/SliderDocs.d.ts.map +1 -1
- package/dist/pages/components/SonnerDocs.d.ts.map +1 -1
- package/dist/pages/components/SwitchDocs.d.ts.map +1 -1
- package/dist/pages/components/TableDocs.d.ts.map +1 -1
- package/dist/pages/components/TabsDocs.d.ts.map +1 -1
- package/dist/pages/components/TextareaDocs.d.ts.map +1 -1
- package/dist/pages/components/ThemeToggleDocs.d.ts +2 -0
- package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -0
- package/dist/pages/components/ToastDocs.d.ts.map +1 -1
- package/dist/pages/components/ToggleDocs.d.ts.map +1 -1
- package/dist/pages/components/ToggleGroupDocs.d.ts.map +1 -1
- package/dist/pages/components/TooltipDocs.d.ts.map +1 -1
- package/dist/pages/index.d.ts +2 -0
- package/dist/pages/index.d.ts.map +1 -1
- package/dist/registry/accordion.test.json +13 -0
- package/dist/registry/alert-dialog.test.json +13 -0
- package/dist/registry/alert.test.json +13 -0
- package/dist/registry/aspect-ratio.test.json +13 -0
- package/dist/registry/avatar.test.json +13 -0
- package/dist/registry/badge.test.json +13 -0
- package/dist/registry/breadcrumb.test.json +13 -0
- package/dist/registry/button.test.json +13 -0
- package/dist/registry/calendar.json +1 -1
- package/dist/registry/calendar.test.json +13 -0
- package/dist/registry/card.test.json +13 -0
- package/dist/registry/carousel.test.json +13 -0
- package/dist/registry/chart.test.json +13 -0
- package/dist/registry/checkbox.test.json +13 -0
- package/dist/registry/collapsible.test.json +13 -0
- package/dist/registry/command.test.json +13 -0
- package/dist/registry/context-menu.test.json +13 -0
- package/dist/registry/dialog.test.json +13 -0
- package/dist/registry/drawer.test.json +13 -0
- package/dist/registry/dropdown-menu.test.json +13 -0
- package/dist/registry/form.test.json +13 -0
- package/dist/registry/hover-card.test.json +13 -0
- package/dist/registry/index.json +322 -0
- package/dist/registry/input.test.json +13 -0
- package/dist/registry/label.test.json +13 -0
- package/dist/registry/menubar.test.json +13 -0
- package/dist/registry/navigation-menu.test.json +13 -0
- package/dist/registry/pagination.test.json +13 -0
- package/dist/registry/popover.test.json +13 -0
- package/dist/registry/progress.json +1 -1
- package/dist/registry/progress.test.json +13 -0
- package/dist/registry/radio-group.test.json +13 -0
- package/dist/registry/resizable.test.json +13 -0
- package/dist/registry/scroll-area.test.json +13 -0
- package/dist/registry/select.test.json +13 -0
- package/dist/registry/separator.test.json +13 -0
- package/dist/registry/sheet.test.json +13 -0
- package/dist/registry/skeleton.test.json +13 -0
- package/dist/registry/slider.test.json +13 -0
- package/dist/registry/sonner.test.json +13 -0
- package/dist/registry/switch.test.json +13 -0
- package/dist/registry/table.test.json +13 -0
- package/dist/registry/tabs.test.json +13 -0
- package/dist/registry/textarea.test.json +13 -0
- package/dist/registry/theme-toggle.json +13 -0
- package/dist/registry/toast.test.json +13 -0
- package/dist/registry/toggle-group.test.json +13 -0
- package/dist/registry/toggle.test.json +13 -0
- package/dist/registry/tooltip.test.json +13 -0
- package/dist/setupTests.d.ts +2 -0
- package/dist/setupTests.d.ts.map +1 -0
- package/dist/{vendor-ZhQmrf1h.mjs → vendor-CAF5bxO5.mjs} +2451 -2415
- package/dist/vendor-CAF5bxO5.mjs.map +1 -0
- package/dist/{vendor-CMSUBoIg.js → vendor-Hw1BQGd3.js} +17 -17
- package/dist/vendor-Hw1BQGd3.js.map +1 -0
- package/eslint.config.mjs +8 -81
- package/package.json +36 -38
- package/src/App.tsx +37 -7
- package/src/components/docs/Footer.tsx +51 -30
- package/src/components/docs/PropsTable.tsx +43 -0
- package/src/components/docs/Sidebar.tsx +42 -71
- package/src/components/docs/index.ts +1 -0
- package/src/components/ui/accordion.test.tsx +86 -0
- package/src/components/ui/alert-dialog.test.tsx +89 -0
- package/src/components/ui/alert.test.tsx +33 -0
- package/src/components/ui/aspect-ratio.test.tsx +34 -0
- package/src/components/ui/avatar.test.tsx +33 -0
- package/src/components/ui/badge.test.tsx +24 -0
- package/src/components/ui/breadcrumb.test.tsx +55 -0
- package/src/components/ui/button.test.tsx +62 -0
- package/src/components/ui/calendar.test.tsx +23 -0
- package/src/components/ui/calendar.tsx +14 -10
- package/src/components/ui/card.test.tsx +35 -0
- package/src/components/ui/carousel.test.tsx +37 -0
- package/src/components/ui/chart.test.tsx +62 -0
- package/src/components/ui/checkbox.test.tsx +30 -0
- package/src/components/ui/collapsible.test.tsx +51 -0
- package/src/components/ui/command.test.tsx +79 -0
- package/src/components/ui/context-menu.test.tsx +37 -0
- package/src/components/ui/dialog.test.tsx +66 -0
- package/src/components/ui/drawer.test.tsx +68 -0
- package/src/components/ui/dropdown-menu.test.tsx +93 -0
- package/src/components/ui/form.test.tsx +85 -0
- package/src/components/ui/hover-card.test.tsx +48 -0
- package/src/components/ui/input.test.tsx +33 -0
- package/src/components/ui/label.test.tsx +27 -0
- package/src/components/ui/menubar.test.tsx +92 -0
- package/src/components/ui/navigation-menu.test.tsx +53 -0
- package/src/components/ui/pagination.test.tsx +57 -0
- package/src/components/ui/popover.test.tsx +31 -0
- package/src/components/ui/progress.test.tsx +18 -0
- package/src/components/ui/progress.tsx +1 -0
- package/src/components/ui/radio-group.test.tsx +39 -0
- package/src/components/ui/resizable.test.tsx +23 -0
- package/src/components/ui/scroll-area.test.tsx +15 -0
- package/src/components/ui/select.test.tsx +42 -0
- package/src/components/ui/separator.test.tsx +16 -0
- package/src/components/ui/sheet.test.tsx +48 -0
- package/src/components/ui/skeleton.test.tsx +13 -0
- package/src/components/ui/slider.test.tsx +18 -0
- package/src/components/ui/sonner.test.tsx +13 -0
- package/src/components/ui/switch.test.tsx +22 -0
- package/src/components/ui/table.test.tsx +29 -0
- package/src/components/ui/tabs.test.tsx +43 -0
- package/src/components/ui/textarea.test.tsx +21 -0
- package/src/components/ui/theme-toggle.tsx +108 -0
- package/src/components/ui/toast.test.tsx +42 -0
- package/src/components/ui/toggle-group.test.tsx +40 -0
- package/src/components/ui/toggle.test.tsx +21 -0
- package/src/components/ui/tooltip.test.tsx +25 -0
- package/src/globals.css +39 -34
- package/src/index.ts +2 -0
- package/src/lib/tokens.ts +54 -0
- package/src/pages/ColorTokensDocs.tsx +181 -0
- package/src/pages/GettingStarted.tsx +55 -35
- package/src/pages/components/AccordionDocs.tsx +109 -0
- package/src/pages/components/AlertDialogDocs.tsx +88 -0
- package/src/pages/components/AlertDocs.tsx +20 -0
- package/src/pages/components/AspectRatioDocs.tsx +21 -0
- package/src/pages/components/AvatarDocs.tsx +48 -0
- package/src/pages/components/BadgeDocs.tsx +20 -0
- package/src/pages/components/BreadcrumbDocs.tsx +33 -0
- package/src/pages/components/ButtonDocs.tsx +43 -0
- package/src/pages/components/CalendarDocs.tsx +43 -0
- package/src/pages/components/CardDocs.tsx +20 -0
- package/src/pages/components/CarouselDocs.tsx +31 -0
- package/src/pages/components/ChartDocs.tsx +131 -101
- package/src/pages/components/CheckboxDocs.tsx +58 -0
- package/src/pages/components/CollapsibleDocs.tsx +51 -0
- package/src/pages/components/CommandDocs.tsx +109 -0
- package/src/pages/components/ContextMenuDocs.tsx +65 -0
- package/src/pages/components/DialogDocs.tsx +98 -11
- package/src/pages/components/DrawerDocs.tsx +210 -15
- package/src/pages/components/DropdownMenuDocs.tsx +273 -11
- package/src/pages/components/FormDocs.tsx +149 -70
- package/src/pages/components/HoverCardDocs.tsx +82 -5
- package/src/pages/components/InputDocs.tsx +51 -20
- package/src/pages/components/LabelDocs.tsx +40 -9
- package/src/pages/components/MenubarDocs.tsx +191 -18
- package/src/pages/components/NavigationMenuDocs.tsx +147 -49
- package/src/pages/components/PaginationDocs.tsx +27 -2
- package/src/pages/components/PopoverDocs.tsx +124 -2
- package/src/pages/components/ProgressDocs.tsx +54 -24
- package/src/pages/components/RadioGroupDocs.tsx +95 -1
- package/src/pages/components/ResizableDocs.tsx +102 -75
- package/src/pages/components/ScrollAreaDocs.tsx +64 -51
- package/src/pages/components/SelectDocs.tsx +119 -48
- package/src/pages/components/SeparatorDocs.tsx +37 -2
- package/src/pages/components/SheetDocs.tsx +112 -38
- package/src/pages/components/SkeletonDocs.tsx +16 -20
- package/src/pages/components/SliderDocs.tsx +96 -10
- package/src/pages/components/SonnerDocs.tsx +89 -61
- package/src/pages/components/SwitchDocs.tsx +65 -10
- package/src/pages/components/TableDocs.tsx +89 -14
- package/src/pages/components/TabsDocs.tsx +149 -37
- package/src/pages/components/TextareaDocs.tsx +38 -32
- package/src/pages/components/ThemeToggleDocs.tsx +50 -0
- package/src/pages/components/ToastDocs.tsx +104 -65
- package/src/pages/components/ToggleDocs.tsx +55 -38
- package/src/pages/components/ToggleGroupDocs.tsx +96 -58
- package/src/pages/components/TooltipDocs.tsx +112 -3
- package/src/pages/index.ts +2 -0
- package/src/setupTests.ts +47 -0
- package/temp.md +292 -0
- package/vitest.config.ts +4 -0
- package/dist/vendor-CMSUBoIg.js.map +0 -1
- package/dist/vendor-ZhQmrf1h.mjs.map +0 -1
package/eslint.config.mjs
CHANGED
|
@@ -1,86 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import ts from '@typescript-eslint/eslint-plugin';
|
|
3
|
-
import tsParser from '@typescript-eslint/parser';
|
|
4
|
-
import prettierConfig from 'eslint-config-prettier';
|
|
5
|
-
import prettier from 'eslint-plugin-prettier';
|
|
6
|
-
import globals from 'globals';
|
|
7
|
-
|
|
8
|
-
// File patterns for JS/TS files only
|
|
9
|
-
const jsFiles = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];
|
|
10
|
-
const tsFiles = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];
|
|
11
|
-
const allJsTsFiles = [...jsFiles, ...tsFiles];
|
|
1
|
+
import { recommended } from '@gv-tech/eslint-config';
|
|
12
2
|
|
|
3
|
+
/**
|
|
4
|
+
* ESLint configuration for TypeScript projects. Uses @gv-tech/eslint-config for sensible defaults. For more information
|
|
5
|
+
* on configuration options, see: https://github.com/Garcia-Ventures/eslint-config
|
|
6
|
+
*/
|
|
13
7
|
export default [
|
|
8
|
+
...recommended,
|
|
9
|
+
// Add project-specific overrides here
|
|
14
10
|
{
|
|
15
|
-
|
|
16
|
-
ignores: [
|
|
17
|
-
'**/node_modules/**',
|
|
18
|
-
'**/.yarn/**',
|
|
19
|
-
'**/dist/**',
|
|
20
|
-
'**/dist-site/**',
|
|
21
|
-
'**/storybook-static/**',
|
|
22
|
-
'**/coverage/**',
|
|
23
|
-
'**/public/**',
|
|
24
|
-
'**/.github/**',
|
|
25
|
-
'**/.vscode/**',
|
|
26
|
-
'**/.husky/**',
|
|
27
|
-
'eslint.config.mjs',
|
|
28
|
-
'**/.*', // Ignore all hidden files
|
|
29
|
-
'**/*.json',
|
|
30
|
-
'**/*.md',
|
|
31
|
-
'**/*.yml',
|
|
32
|
-
'**/*.log',
|
|
33
|
-
],
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
// Base config for all JS/TS files
|
|
37
|
-
files: allJsTsFiles,
|
|
38
|
-
...js.configs.recommended,
|
|
39
|
-
linterOptions: {
|
|
40
|
-
noInlineConfig: true,
|
|
41
|
-
reportUnusedDisableDirectives: true,
|
|
42
|
-
},
|
|
43
|
-
languageOptions: {
|
|
44
|
-
globals: {
|
|
45
|
-
...globals.node,
|
|
46
|
-
...globals.browser,
|
|
47
|
-
},
|
|
48
|
-
parserOptions: {
|
|
49
|
-
ecmaVersion: 'latest',
|
|
50
|
-
sourceType: 'module',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
// TypeScript-specific config
|
|
56
|
-
files: tsFiles,
|
|
57
|
-
languageOptions: {
|
|
58
|
-
parser: tsParser,
|
|
59
|
-
},
|
|
60
|
-
plugins: {
|
|
61
|
-
'@typescript-eslint': ts,
|
|
62
|
-
},
|
|
63
|
-
rules: {
|
|
64
|
-
...ts.configs.base.rules,
|
|
65
|
-
...ts.configs['eslint-recommended'].rules,
|
|
66
|
-
...ts.configs.recommended.rules,
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
files: jsFiles,
|
|
71
|
-
rules: {
|
|
72
|
-
...js.configs.recommended.rules,
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
// Prettier config for all JS/TS files
|
|
77
|
-
files: allJsTsFiles,
|
|
78
|
-
plugins: {
|
|
79
|
-
prettier: prettier,
|
|
80
|
-
},
|
|
81
|
-
rules: {
|
|
82
|
-
...prettierConfig.rules,
|
|
83
|
-
'prettier/prettier': 'error',
|
|
84
|
-
},
|
|
11
|
+
ignores: ['**/eslint.config.mjs', '**/.yarn/**', 'dist-site/**'],
|
|
85
12
|
},
|
|
86
13
|
];
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gv-tech/design-system",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Garcia Ventures react design system",
|
|
5
|
+
"repository": "git@github.com:Garcia-Ventures/gvtech-design.git",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"author": "Eric N. Garcia <eng618@garciaericn.com>",
|
|
7
8
|
"main": "dist/index.cjs.js",
|
|
8
9
|
"module": "dist/index.es.js",
|
|
9
10
|
"types": "dist/index.d.ts",
|
|
10
|
-
"repository": "git@github.com:Garcia-Ventures/gvtech-design.git",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "yarn build:registry && tsc -p tsconfig.build.json && VITE_LIB=true vite build",
|
|
13
13
|
"build:registry": "tsx scripts/build-registry.ts",
|
|
@@ -22,11 +22,38 @@
|
|
|
22
22
|
"setup:ui": "tsx scripts/import-all-shadcn.ts",
|
|
23
23
|
"start": "vite",
|
|
24
24
|
"test": "vitest",
|
|
25
|
-
"test:ci": "CI=true vitest --run --reporter=dot
|
|
25
|
+
"test:ci": "CI=true vitest --run --reporter=dot",
|
|
26
26
|
"test:watch": "vitest --watch",
|
|
27
27
|
"validate": "node ./scripts/validate.js",
|
|
28
28
|
"validate:fix": "node ./scripts/validate.js --fix"
|
|
29
29
|
},
|
|
30
|
+
"lint-staged": {
|
|
31
|
+
"*.(js|ts|mjs|cjs)?(x)": [
|
|
32
|
+
"prettier --write",
|
|
33
|
+
"eslint --cache --fix"
|
|
34
|
+
],
|
|
35
|
+
"*.(md)?(x)": [
|
|
36
|
+
"prettier --write"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"babel": {
|
|
40
|
+
"presets": [
|
|
41
|
+
"@babel/preset-env",
|
|
42
|
+
"@babel/preset-react"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"browserslist": {
|
|
46
|
+
"development": [
|
|
47
|
+
"last 1 chrome version",
|
|
48
|
+
"last 1 firefox version",
|
|
49
|
+
"last 1 safari version"
|
|
50
|
+
],
|
|
51
|
+
"production": [
|
|
52
|
+
">0.2%",
|
|
53
|
+
"not dead"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"prettier": "@eng618/prettier-config",
|
|
30
57
|
"dependencies": {
|
|
31
58
|
"@hookform/resolvers": "^5.2.2",
|
|
32
59
|
"@radix-ui/react-accordion": "^1.2.12",
|
|
@@ -66,6 +93,7 @@
|
|
|
66
93
|
"next-themes": "^0.4.6",
|
|
67
94
|
"react-day-picker": "^9.13.0",
|
|
68
95
|
"react-hook-form": "^7.71.1",
|
|
96
|
+
"react-icons": "^5.5.0",
|
|
69
97
|
"react-resizable-panels": "^4.6.0",
|
|
70
98
|
"recharts": "2.15.4",
|
|
71
99
|
"sonner": "^2.0.7",
|
|
@@ -74,8 +102,8 @@
|
|
|
74
102
|
"zod": "^4.3.6"
|
|
75
103
|
},
|
|
76
104
|
"devDependencies": {
|
|
77
|
-
"@eng618/prettier-config": "^2.
|
|
78
|
-
"@eslint
|
|
105
|
+
"@eng618/prettier-config": "^2.6.0",
|
|
106
|
+
"@gv-tech/eslint-config": "^0.1.8",
|
|
79
107
|
"@testing-library/dom": "^10.4.1",
|
|
80
108
|
"@testing-library/jest-dom": "^6.9.1",
|
|
81
109
|
"@testing-library/react": "^16.3.2",
|
|
@@ -87,13 +115,10 @@
|
|
|
87
115
|
"@typescript-eslint/parser": "^8.54.0",
|
|
88
116
|
"@vitejs/plugin-react-swc": "^4.2.3",
|
|
89
117
|
"axe-core": "^4.11.1",
|
|
90
|
-
"eslint": "^
|
|
91
|
-
"eslint-config-prettier": "^10.1.8",
|
|
118
|
+
"eslint": "^10.0.0",
|
|
92
119
|
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
93
|
-
"eslint-plugin-prettier": "^5.5.5",
|
|
94
120
|
"eslint-plugin-react": "^7.37.5",
|
|
95
121
|
"eslint-plugin-react-hooks": "^7.0.1",
|
|
96
|
-
"globals": "^17.3.0",
|
|
97
122
|
"husky": "^9.1.7",
|
|
98
123
|
"jsdom": "^27.4.0",
|
|
99
124
|
"lint-staged": "^16.2.7",
|
|
@@ -116,39 +141,12 @@
|
|
|
116
141
|
"react-dom": "^18 || ^19",
|
|
117
142
|
"react-is": "^16 || ^17 || ^18 || ^19"
|
|
118
143
|
},
|
|
144
|
+
"packageManager": "yarn@4.12.0",
|
|
119
145
|
"engines": {
|
|
120
146
|
"node": ">=20"
|
|
121
147
|
},
|
|
122
148
|
"publishConfig": {
|
|
123
149
|
"access": "public",
|
|
124
150
|
"provenance": true
|
|
125
|
-
}
|
|
126
|
-
"lint-staged": {
|
|
127
|
-
"*.(js|ts|mjs|cjs)?(x)": [
|
|
128
|
-
"prettier --write",
|
|
129
|
-
"eslint --cache --fix"
|
|
130
|
-
],
|
|
131
|
-
"*.(md)?(x)": [
|
|
132
|
-
"prettier --write"
|
|
133
|
-
]
|
|
134
|
-
},
|
|
135
|
-
"prettier": "@eng618/prettier-config",
|
|
136
|
-
"babel": {
|
|
137
|
-
"presets": [
|
|
138
|
-
"@babel/preset-env",
|
|
139
|
-
"@babel/preset-react"
|
|
140
|
-
]
|
|
141
|
-
},
|
|
142
|
-
"browserslist": {
|
|
143
|
-
"development": [
|
|
144
|
-
"last 1 chrome version",
|
|
145
|
-
"last 1 firefox version",
|
|
146
|
-
"last 1 safari version"
|
|
147
|
-
],
|
|
148
|
-
"production": [
|
|
149
|
-
">0.2%",
|
|
150
|
-
"not dead"
|
|
151
|
-
]
|
|
152
|
-
},
|
|
153
|
-
"packageManager": "yarn@4.12.0"
|
|
151
|
+
}
|
|
154
152
|
}
|
package/src/App.tsx
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { ThemeProvider } from 'next-themes';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Footer, Sidebar
|
|
3
|
+
import { Footer, Sidebar } from './components/docs';
|
|
4
|
+
import { navItems } from './components/docs/Sidebar';
|
|
5
|
+
import {
|
|
6
|
+
Breadcrumb,
|
|
7
|
+
BreadcrumbItem,
|
|
8
|
+
BreadcrumbLink,
|
|
9
|
+
BreadcrumbList,
|
|
10
|
+
BreadcrumbPage,
|
|
11
|
+
BreadcrumbSeparator,
|
|
12
|
+
} from './components/ui/breadcrumb';
|
|
4
13
|
import { ScrollArea } from './components/ui/scroll-area';
|
|
5
|
-
import { Toaster } from './components/ui/sonner';
|
|
14
|
+
import { Toaster as SonnerToaster } from './components/ui/sonner';
|
|
15
|
+
import { ThemeToggle } from './components/ui/theme-toggle';
|
|
16
|
+
import { Toaster } from './components/ui/toaster';
|
|
6
17
|
import { TooltipProvider } from './components/ui/tooltip';
|
|
7
18
|
import {
|
|
8
19
|
AccordionDocs,
|
|
@@ -19,6 +30,7 @@ import {
|
|
|
19
30
|
ChartDocs,
|
|
20
31
|
CheckboxDocs,
|
|
21
32
|
CollapsibleDocs,
|
|
33
|
+
ColorTokensDocs,
|
|
22
34
|
CommandDocs,
|
|
23
35
|
ContextMenuDocs,
|
|
24
36
|
DialogDocs,
|
|
@@ -48,6 +60,7 @@ import {
|
|
|
48
60
|
TableDocs,
|
|
49
61
|
TabsDocs,
|
|
50
62
|
TextareaDocs,
|
|
63
|
+
ThemeToggleDocs,
|
|
51
64
|
ToastDocs,
|
|
52
65
|
ToggleDocs,
|
|
53
66
|
ToggleGroupDocs,
|
|
@@ -62,6 +75,8 @@ function App() {
|
|
|
62
75
|
// Getting Started
|
|
63
76
|
case 'getting-started':
|
|
64
77
|
return <GettingStartedPage />;
|
|
78
|
+
case 'color-tokens':
|
|
79
|
+
return <ColorTokensDocs />;
|
|
65
80
|
case 'installation':
|
|
66
81
|
return <InstallationPage />;
|
|
67
82
|
|
|
@@ -168,6 +183,8 @@ function App() {
|
|
|
168
183
|
return <ToggleDocs />;
|
|
169
184
|
case 'toggle-group':
|
|
170
185
|
return <ToggleGroupDocs />;
|
|
186
|
+
case 'theme-toggle':
|
|
187
|
+
return <ThemeToggleDocs />;
|
|
171
188
|
|
|
172
189
|
default:
|
|
173
190
|
return <GettingStartedPage />;
|
|
@@ -184,12 +201,24 @@ function App() {
|
|
|
184
201
|
{/* Main Content */}
|
|
185
202
|
<div className="flex-1 flex flex-col overflow-hidden">
|
|
186
203
|
{/* Header */}
|
|
187
|
-
<header className="h-14 border-b flex items-center justify-between px-6">
|
|
188
|
-
<
|
|
189
|
-
<
|
|
190
|
-
|
|
204
|
+
<header className="h-14 border-b flex items-center justify-between px-6 shrink-0 bg-background/50 backdrop-blur-sm sticky top-0 z-10">
|
|
205
|
+
<Breadcrumb>
|
|
206
|
+
<BreadcrumbList>
|
|
207
|
+
<BreadcrumbItem>
|
|
208
|
+
<BreadcrumbLink onClick={() => setActiveItem('getting-started')} className="cursor-pointer">
|
|
209
|
+
Components
|
|
210
|
+
</BreadcrumbLink>
|
|
211
|
+
</BreadcrumbItem>
|
|
212
|
+
<BreadcrumbSeparator />
|
|
213
|
+
<BreadcrumbItem>
|
|
214
|
+
<BreadcrumbPage>
|
|
215
|
+
{navItems.find((i) => i.id === activeItem)?.label || 'Introduction'}
|
|
216
|
+
</BreadcrumbPage>
|
|
217
|
+
</BreadcrumbItem>
|
|
218
|
+
</BreadcrumbList>
|
|
219
|
+
</Breadcrumb>
|
|
191
220
|
<div className="flex items-center gap-2">
|
|
192
|
-
<ThemeToggle />
|
|
221
|
+
<ThemeToggle variant="ternary" />
|
|
193
222
|
</div>
|
|
194
223
|
</header>
|
|
195
224
|
|
|
@@ -203,6 +232,7 @@ function App() {
|
|
|
203
232
|
</div>
|
|
204
233
|
</div>
|
|
205
234
|
<Toaster />
|
|
235
|
+
<SonnerToaster />
|
|
206
236
|
</TooltipProvider>
|
|
207
237
|
</ThemeProvider>
|
|
208
238
|
);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Button } from '@/components/ui/button';
|
|
1
2
|
import { Separator } from '@/components/ui/separator';
|
|
2
|
-
import {
|
|
3
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
|
|
4
|
+
import { SiGithub, SiLinkedin, SiX } from 'react-icons/si';
|
|
3
5
|
|
|
4
6
|
export function Footer() {
|
|
5
7
|
return (
|
|
@@ -51,37 +53,56 @@ export function Footer() {
|
|
|
51
53
|
</ul>
|
|
52
54
|
</div>
|
|
53
55
|
|
|
54
|
-
{/* Social */}
|
|
55
56
|
<div className="space-y-3">
|
|
56
57
|
<h4 className="font-medium text-sm">Connect</h4>
|
|
57
|
-
<div className="flex items-center space-x-
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
58
|
+
<div className="flex items-center space-x-2">
|
|
59
|
+
<Tooltip>
|
|
60
|
+
<TooltipTrigger asChild>
|
|
61
|
+
<Button variant="ghost" size="icon" className="text-muted-foreground hover:text-foreground" asChild>
|
|
62
|
+
<a
|
|
63
|
+
href="https://github.com/Garcia-Ventures"
|
|
64
|
+
target="_blank"
|
|
65
|
+
rel="noopener noreferrer"
|
|
66
|
+
aria-label="GitHub"
|
|
67
|
+
>
|
|
68
|
+
<SiGithub className="h-5 w-5" />
|
|
69
|
+
</a>
|
|
70
|
+
</Button>
|
|
71
|
+
</TooltipTrigger>
|
|
72
|
+
<TooltipContent>GitHub</TooltipContent>
|
|
73
|
+
</Tooltip>
|
|
74
|
+
|
|
75
|
+
<Tooltip>
|
|
76
|
+
<TooltipTrigger asChild>
|
|
77
|
+
<Button variant="ghost" size="icon" className="text-muted-foreground hover:text-foreground" asChild>
|
|
78
|
+
<a
|
|
79
|
+
href="https://twitter.com/gvtech"
|
|
80
|
+
target="_blank"
|
|
81
|
+
rel="noopener noreferrer"
|
|
82
|
+
aria-label="X (formerly Twitter)"
|
|
83
|
+
>
|
|
84
|
+
<SiX className="h-4 w-4" />
|
|
85
|
+
</a>
|
|
86
|
+
</Button>
|
|
87
|
+
</TooltipTrigger>
|
|
88
|
+
<TooltipContent>X (formerly Twitter)</TooltipContent>
|
|
89
|
+
</Tooltip>
|
|
90
|
+
|
|
91
|
+
<Tooltip>
|
|
92
|
+
<TooltipTrigger asChild>
|
|
93
|
+
<Button variant="ghost" size="icon" className="text-muted-foreground hover:text-foreground" asChild>
|
|
94
|
+
<a
|
|
95
|
+
href="https://linkedin.com/company/gvtech"
|
|
96
|
+
target="_blank"
|
|
97
|
+
rel="noopener noreferrer"
|
|
98
|
+
aria-label="LinkedIn"
|
|
99
|
+
>
|
|
100
|
+
<SiLinkedin className="h-5 w-5" />
|
|
101
|
+
</a>
|
|
102
|
+
</Button>
|
|
103
|
+
</TooltipTrigger>
|
|
104
|
+
<TooltipContent>LinkedIn</TooltipContent>
|
|
105
|
+
</Tooltip>
|
|
85
106
|
</div>
|
|
86
107
|
</div>
|
|
87
108
|
</div>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';
|
|
2
|
+
|
|
3
|
+
export interface PropDefinition {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
description: string;
|
|
8
|
+
required?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface PropsTableProps {
|
|
12
|
+
props: PropDefinition[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function PropsTable({ props }: PropsTableProps) {
|
|
16
|
+
return (
|
|
17
|
+
<div className="my-6 w-full overflow-y-auto">
|
|
18
|
+
<Table>
|
|
19
|
+
<TableHeader>
|
|
20
|
+
<TableRow>
|
|
21
|
+
<TableHead>Prop</TableHead>
|
|
22
|
+
<TableHead>Type</TableHead>
|
|
23
|
+
<TableHead>Default</TableHead>
|
|
24
|
+
<TableHead>Description</TableHead>
|
|
25
|
+
</TableRow>
|
|
26
|
+
</TableHeader>
|
|
27
|
+
<TableBody>
|
|
28
|
+
{props.map((prop) => (
|
|
29
|
+
<TableRow key={prop.name}>
|
|
30
|
+
<TableCell className="font-mono text-sm font-semibold">
|
|
31
|
+
{prop.name}
|
|
32
|
+
{prop.required && <span className="ml-1 text-destructive">*</span>}
|
|
33
|
+
</TableCell>
|
|
34
|
+
<TableCell className="font-mono text-xs text-muted-foreground">{prop.type}</TableCell>
|
|
35
|
+
<TableCell className="font-mono text-xs text-muted-foreground">{prop.defaultValue || '-'}</TableCell>
|
|
36
|
+
<TableCell className="text-sm text-muted-foreground">{prop.description}</TableCell>
|
|
37
|
+
</TableRow>
|
|
38
|
+
))}
|
|
39
|
+
</TableBody>
|
|
40
|
+
</Table>
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
@@ -1,18 +1,8 @@
|
|
|
1
|
+
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
|
|
1
2
|
import { Button } from '@/components/ui/button';
|
|
2
3
|
import { ScrollArea } from '@/components/ui/scroll-area';
|
|
3
4
|
import { cn } from '@/lib/utils';
|
|
4
|
-
import {
|
|
5
|
-
ChevronDown,
|
|
6
|
-
ChevronRight,
|
|
7
|
-
FormInput,
|
|
8
|
-
Home,
|
|
9
|
-
Layers,
|
|
10
|
-
LayoutGrid,
|
|
11
|
-
MessageSquare,
|
|
12
|
-
Navigation,
|
|
13
|
-
Sparkles,
|
|
14
|
-
Table2,
|
|
15
|
-
} from 'lucide-react';
|
|
5
|
+
import { FormInput, Home, Layers, LayoutGrid, MessageSquare, Navigation, Sparkles, Table2 } from 'lucide-react';
|
|
16
6
|
import * as React from 'react';
|
|
17
7
|
import { version } from '../../../package.json';
|
|
18
8
|
|
|
@@ -51,6 +41,7 @@ const categoryConfig: Record<ComponentCategory, { label: string; icon: React.Rea
|
|
|
51
41
|
export const navItems: NavItem[] = [
|
|
52
42
|
// Getting Started
|
|
53
43
|
{ id: 'getting-started', label: 'Introduction', category: 'getting-started' },
|
|
44
|
+
{ id: 'color-tokens', label: 'Color Tokens', category: 'getting-started' },
|
|
54
45
|
{ id: 'installation', label: 'Installation', category: 'getting-started' },
|
|
55
46
|
|
|
56
47
|
// Layout
|
|
@@ -111,77 +102,57 @@ export const navItems: NavItem[] = [
|
|
|
111
102
|
{ id: 'carousel', label: 'Carousel', category: 'advanced' },
|
|
112
103
|
{ id: 'toggle', label: 'Toggle', category: 'advanced' },
|
|
113
104
|
{ id: 'toggle-group', label: 'Toggle Group', category: 'advanced' },
|
|
105
|
+
{ id: 'theme-toggle', label: 'Theme Toggle', category: 'advanced' },
|
|
114
106
|
];
|
|
115
107
|
|
|
116
108
|
export function Sidebar({ activeItem, onItemSelect }: SidebarProps) {
|
|
117
|
-
const [expandedCategories, setExpandedCategories] = React.useState<Set<ComponentCategory>>(
|
|
118
|
-
new Set(['getting-started', 'forms']),
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
const toggleCategory = (category: ComponentCategory) => {
|
|
122
|
-
setExpandedCategories((prev) => {
|
|
123
|
-
const next = new Set(prev);
|
|
124
|
-
if (next.has(category)) {
|
|
125
|
-
next.delete(category);
|
|
126
|
-
} else {
|
|
127
|
-
next.add(category);
|
|
128
|
-
}
|
|
129
|
-
return next;
|
|
130
|
-
});
|
|
131
|
-
};
|
|
132
|
-
|
|
133
109
|
const categories = Object.keys(categoryConfig) as ComponentCategory[];
|
|
134
110
|
|
|
135
111
|
return (
|
|
136
|
-
<div className="w-64 border-r bg-muted/
|
|
112
|
+
<div className="w-64 border-r bg-muted/50 flex flex-col h-full">
|
|
137
113
|
<div className="p-4 border-b">
|
|
138
114
|
<h2 className="font-semibold text-lg">GV Design System</h2>
|
|
139
115
|
<p className="text-xs text-muted-foreground">v{version}</p>
|
|
140
116
|
</div>
|
|
141
117
|
<ScrollArea className="flex-1">
|
|
142
118
|
<nav className="p-2">
|
|
143
|
-
{
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
<
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
</div>
|
|
181
|
-
)}
|
|
182
|
-
</div>
|
|
183
|
-
);
|
|
184
|
-
})}
|
|
119
|
+
<Accordion type="multiple" defaultValue={['getting-started', 'forms']} className="w-full space-y-1">
|
|
120
|
+
{categories.map((category) => {
|
|
121
|
+
const config = categoryConfig[category];
|
|
122
|
+
const items = navItems.filter((item) => item.category === category);
|
|
123
|
+
|
|
124
|
+
if (items.length === 0) return null;
|
|
125
|
+
|
|
126
|
+
return (
|
|
127
|
+
<AccordionItem key={category} value={category} className="border-none">
|
|
128
|
+
<AccordionTrigger className="flex items-center gap-2 px-2 py-1.5 text-sm font-medium rounded-md hover:bg-accent/50 transition-colors hover:no-underline [&>svg]:h-4 [&>svg]:w-4">
|
|
129
|
+
<div className="flex items-center gap-2 flex-1">
|
|
130
|
+
{config.icon}
|
|
131
|
+
<span className="text-left">{config.label}</span>
|
|
132
|
+
</div>
|
|
133
|
+
</AccordionTrigger>
|
|
134
|
+
<AccordionContent className="pb-1">
|
|
135
|
+
<div className="ml-4 mt-1 space-y-0.5 border-l pl-2">
|
|
136
|
+
{items.map((item) => (
|
|
137
|
+
<Button
|
|
138
|
+
key={item.id}
|
|
139
|
+
variant="ghost"
|
|
140
|
+
size="sm"
|
|
141
|
+
onClick={() => onItemSelect(item.id)}
|
|
142
|
+
className={cn(
|
|
143
|
+
'w-full justify-start h-8 px-2 font-normal',
|
|
144
|
+
activeItem === item.id && 'bg-accent text-accent-foreground',
|
|
145
|
+
)}
|
|
146
|
+
>
|
|
147
|
+
{item.label}
|
|
148
|
+
</Button>
|
|
149
|
+
))}
|
|
150
|
+
</div>
|
|
151
|
+
</AccordionContent>
|
|
152
|
+
</AccordionItem>
|
|
153
|
+
);
|
|
154
|
+
})}
|
|
155
|
+
</Accordion>
|
|
185
156
|
</nav>
|
|
186
157
|
</ScrollArea>
|
|
187
158
|
</div>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { CodeBlock } from './CodeBlock';
|
|
2
2
|
export { ComponentSection, ComponentShowcase } from './ComponentShowcase';
|
|
3
3
|
export { Footer } from './Footer';
|
|
4
|
+
export { PropsTable, type PropDefinition } from './PropsTable';
|
|
4
5
|
export { Sidebar, navItems, type ComponentCategory, type NavItem } from './Sidebar';
|
|
5
6
|
export { ThemeToggle } from './ThemeToggle';
|