forlogic-core 2.1.3 → 2.1.5

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.
Files changed (69) hide show
  1. package/.note/memory/features/import/attachment-idempotency-registry.md +8 -8
  2. package/.note/memory/features/import/attachment-strategy.md +30 -30
  3. package/.note/memory/patterns/admin-i18n-policy.md +20 -20
  4. package/.note/memory/patterns/alias-url-resolution.md +69 -69
  5. package/.note/memory/patterns/doc-sync-rule.md +35 -35
  6. package/.note/memory/patterns/documentation-standard.md +17 -17
  7. package/.note/memory/patterns/dynamic-supabase-config.md +4 -4
  8. package/.note/memory/patterns/environment-detection-logic.md +35 -35
  9. package/.note/memory/patterns/i18n-architecture.md +3 -3
  10. package/README.md +68 -68
  11. package/dist/action-plans/components/ActionPlanStatusBadge.d.ts +6 -2
  12. package/dist/components/ui/__tests__/status-badge.test.d.ts +1 -0
  13. package/dist/components/ui/status-badge.d.ts +49 -0
  14. package/dist/crud/primitives/Table.d.ts +1 -1
  15. package/dist/crud/primitives/types.d.ts +6 -0
  16. package/dist/exports/crud.d.ts +5 -0
  17. package/dist/exports/ui.d.ts +1 -0
  18. package/dist/index.css +1 -1
  19. package/dist/index.css.map +1 -1
  20. package/dist/index.esm.js +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/utils/color.d.ts +26 -0
  23. package/dist/utils/index.d.ts +1 -0
  24. package/docs/PUBLISH.md +168 -0
  25. package/docs/WORKSPACE_KNOWLEDGE.md +119 -119
  26. package/docs/design-system/README.md +1 -1
  27. package/docs/design-system/buttons-actions.md +130 -130
  28. package/docs/design-system/charts-dashboards.md +340 -301
  29. package/docs/design-system/crud.md +174 -114
  30. package/docs/design-system/data-display.md +108 -103
  31. package/docs/design-system/dialogs.md +212 -212
  32. package/docs/design-system/domain.md +317 -317
  33. package/docs/design-system/examples.md +275 -275
  34. package/docs/design-system/foundation.md +1 -1
  35. package/docs/design-system/inputs.md +131 -131
  36. package/docs/design-system/layout.md +202 -154
  37. package/docs/design-system/navigation.md +271 -325
  38. package/docs/design-system/notifications-feedback.md +34 -34
  39. package/docs/design-system/patterns/README.md +53 -53
  40. package/docs/design-system/patterns/action-button.md +22 -22
  41. package/docs/design-system/patterns/alertdialog-deletion.md +46 -46
  42. package/docs/design-system/patterns/baseform-custom-fields.md +59 -59
  43. package/docs/design-system/patterns/baseform-usage.md +42 -42
  44. package/docs/design-system/patterns/body-content-scroll.md +56 -56
  45. package/docs/design-system/patterns/combo-tree.md +23 -23
  46. package/docs/design-system/patterns/components-registry.md +17 -17
  47. package/docs/design-system/patterns/core-providers.md +39 -39
  48. package/docs/design-system/patterns/crud-bulk-actions.md +12 -12
  49. package/docs/design-system/patterns/crud-config-props.md +16 -16
  50. package/docs/design-system/patterns/crud-defaults.md +17 -17
  51. package/docs/design-system/patterns/crud-toolbar.md +28 -28
  52. package/docs/design-system/patterns/delete-confirmation.md +40 -40
  53. package/docs/design-system/patterns/dialog-body-scroll.md +26 -26
  54. package/docs/design-system/patterns/dialog-structure.md +32 -32
  55. package/docs/design-system/patterns/dialog-variants.md +41 -41
  56. package/docs/design-system/patterns/feature-flags.md +24 -20
  57. package/docs/design-system/patterns/header-metadata.md +57 -57
  58. package/docs/design-system/patterns/i18n-setup.md +117 -117
  59. package/docs/design-system/patterns/pagination.md +27 -27
  60. package/docs/design-system/patterns/single-scroll.md +39 -39
  61. package/docs/design-system/patterns/vite-tailwind-setup.md +48 -48
  62. package/docs/design-system/platform.md +18 -18
  63. package/docs/design-system/selectors.md +236 -236
  64. package/docs/design-system/tables-grids.md +95 -38
  65. package/package.json +144 -144
  66. package/dist/README.md +0 -1079
  67. package/dist/bin/bootstrap.js +0 -40
  68. package/dist/bin/pull-docs.js +0 -186
  69. package/dist/docs/KNOWLEDGE.md +0 -109
@@ -5,11 +5,68 @@
5
5
 
6
6
  Categoria: **Data Grid** | 3 componentes
7
7
 
8
- ### CrudTable
8
+ ### Table
9
9
 
10
- Componente de tabela CRUD completo com ordenação, seleção, resize de colunas, ações em massa e paginação integrada com useCrud.
10
+ Uma tabela semântica para exibir dados tabulares. Inclui TableResizeHandle para redimensionamento de colunas e TruncatedCell para texto truncado com tooltip automático.
11
11
 
12
- > Fonte: `src\design-system\docs\components\crud\CrudTableDoc.tsx`
12
+ **Uso:**
13
+ ```tsx
14
+ import {
15
+ Table,
16
+ TableBody,
17
+ TableCaption,
18
+ TableCell,
19
+ TableHead,
20
+ TableHeader,
21
+ TableRow,
22
+ TableResizeHandle,
23
+ TruncatedCell,
24
+ } from "forlogic-core"
25
+
26
+ <Table>
27
+ <TableCaption>Lista de usuários</TableCaption>
28
+ <TableHeader>
29
+ <TableRow>
30
+ <TableHead>Nome</TableHead>
31
+ <TableHead>Email</TableHead>
32
+ <TableHead>Status</TableHead>
33
+ </TableRow>
34
+ </TableHeader>
35
+ <TableBody>
36
+ <TableRow>
37
+ <TableCell>João Silva</TableCell>
38
+ <TableCell>joao@example.com</TableCell>
39
+ <TableCell>Ativo</TableCell>
40
+ </TableRow>
41
+ </TableBody>
42
+ </Table>
43
+ ```
44
+
45
+ **Props:**
46
+ | Prop | Tipo | Padrão | Descrição |
47
+ |------|------|--------|-----------|
48
+ | `className` | `string` | - | Classes CSS adicionais para a tabela. |
49
+ | `TableResizeHandle.onMouseDown` | `(e: MouseEvent) => void` | - | Handler para iniciar o redimensionamento. |
50
+ | `TableResizeHandle.isDragging` | `boolean` | false | Se o handle está sendo arrastado (altera visual). |
51
+ | `TruncatedCell.children` | `ReactNode` | - | Conteúdo a ser truncado. |
52
+ | `TruncatedCell.className` | `string` | - | Classes CSS adicionais. |
53
+
54
+ **Acessibilidade:**
55
+ - Usa elementos HTML semânticos de tabela
56
+ - Suporta navegação por teclado
57
+ - TableCaption fornece contexto para leitores de tela
58
+ - TableHeader define cabeçalhos de coluna apropriados
59
+ - TruncatedCell mostra tooltip acessível com conteúdo completo
60
+ - TableResizeHandle suporta interação via teclado
61
+ - Funciona com leitores de tela
62
+
63
+ **Notas:**
64
+ - TableResizeHandle deve ser posicionado dentro de um TableHead com position: relative.
65
+ - TruncatedCell detecta automaticamente se o texto está truncado e exibe tooltip apenas quando necessário.
66
+ - Use larguras fixas (w-[Xpx]) nos TableHead para melhor controle do layout.
67
+ - TruncatedCell usa CSS text-overflow: ellipsis internamente.
68
+
69
+ > Fonte: `src/design-system/docs/components/TableDoc.tsx`
13
70
 
14
71
  ---
15
72
 
@@ -19,18 +76,18 @@ Componente utilitário que trunca texto longo e exibe tooltip automático quando
19
76
 
20
77
  **Uso:**
21
78
  ```tsx
22
- import { TruncatedCell } from 'forlogic-core';
23
- // 💡 Alias disponível: import { EllipsisText } from 'forlogic-core';
24
-
25
- <td className="max-w-[200px]">
26
- <TruncatedCell>
27
- Texto que pode ser muito longo...
28
- </TruncatedCell>
29
- </td>
30
-
31
- // Com className customizada
32
- <TruncatedCell className="text-muted-foreground">
33
- {item.description}
79
+ import { TruncatedCell } from 'forlogic-core';
80
+ // 💡 Alias disponível: import { EllipsisText } from 'forlogic-core';
81
+
82
+ <td className="max-w-[200px]">
83
+ <TruncatedCell>
84
+ Texto que pode ser muito longo...
85
+ </TruncatedCell>
86
+ </td>
87
+
88
+ // Com className customizada
89
+ <TruncatedCell className="text-muted-foreground">
90
+ {item.description}
34
91
  </TruncatedCell>
35
92
  ```
36
93
 
@@ -47,14 +104,14 @@ import { TruncatedCell } from 'forlogic-core';
47
104
  **Notas:**
48
105
  - 💡 Alias: Também disponível como
49
106
  - — import { EllipsisText } from
50
- - ,
107
+ - ,
51
108
 
52
- - ,
109
+ - ,
53
110
 
54
- - ,
111
+ - ,
55
112
 
56
113
 
57
- > Fonte: `src\design-system\docs\components\TruncatedCellDoc.tsx`
114
+ > Fonte: `src/design-system/docs/components/TruncatedCellDoc.tsx`
58
115
 
59
116
  ---
60
117
 
@@ -64,20 +121,20 @@ Componentes de expansão/colapso para revelar conteúdo. Accordion para múltipl
64
121
 
65
122
  **Uso:**
66
123
  ```tsx
67
- import {
68
- Accordion,
69
- AccordionContent,
70
- AccordionItem,
71
- AccordionTrigger,
72
- } from "forlogic-core"
73
-
74
- <Accordion type="single" collapsible>
75
- <AccordionItem value="item-1">
76
- <AccordionTrigger>Is it accessible?</AccordionTrigger>
77
- <AccordionContent>
78
- Yes. It adheres to the WAI-ARIA design pattern.
79
- </AccordionContent>
80
- </AccordionItem>
124
+ import {
125
+ Accordion,
126
+ AccordionContent,
127
+ AccordionItem,
128
+ AccordionTrigger,
129
+ } from "forlogic-core"
130
+
131
+ <Accordion type="single" collapsible>
132
+ <AccordionItem value="item-1">
133
+ <AccordionTrigger>Is it accessible?</AccordionTrigger>
134
+ <AccordionContent>
135
+ Yes. It adheres to the WAI-ARIA design pattern.
136
+ </AccordionContent>
137
+ </AccordionItem>
81
138
  </Accordion>
82
139
  ```
83
140
 
@@ -91,10 +148,10 @@ import {
91
148
  <Accordion type=
92
149
  ```
93
150
  ```tsx
94
- import {
95
- Collapsible,
96
- CollapsibleContent,
97
- CollapsibleTrigger,
151
+ import {
152
+ Collapsible,
153
+ CollapsibleContent,
154
+ CollapsibleTrigger,
98
155
  } from
99
156
  ```
100
157
 
@@ -109,6 +166,6 @@ import {
109
166
  - **Collapsible** é melhor para um único elemento expansível
110
167
  - Ambos suportam animações suaves de abertura/fechamento
111
168
 
112
- > Fonte: `src\design-system\docs\components\AccordionDoc.tsx`
169
+ > Fonte: `src/design-system/docs/components/AccordionDoc.tsx`
113
170
 
114
171
  ---
package/package.json CHANGED
@@ -1,144 +1,144 @@
1
- {
2
- "name": "forlogic-core",
3
- "version": "2.1.3",
4
- "type": "module",
5
- "main": "dist/index.js",
6
- "module": "dist/index.esm.js",
7
- "types": "dist/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.esm.js",
12
- "require": "./dist/index.js"
13
- },
14
- "./index.css": "./dist/index.css",
15
- "./tokens": "./dist/tokens/index.js",
16
- "./vite": {
17
- "types": "./dist/vite/index.d.ts",
18
- "import": "./dist/vite/index.esm.js",
19
- "require": "./dist/vite/index.js"
20
- },
21
- "./tailwind": {
22
- "types": "./dist/tailwind/index.d.ts",
23
- "import": "./dist/tailwind/index.esm.js",
24
- "require": "./dist/tailwind/index.js"
25
- }
26
- },
27
- "files": [
28
- "dist",
29
- "docs",
30
- ".note/memory"
31
- ],
32
- "sideEffects": [
33
- "*.css"
34
- ],
35
- "scripts": {
36
- "dev": "vite",
37
- "build": "vite build",
38
- "build:dev": "vite build --mode development",
39
- "build:lib": "npx tsx scripts/generate-ds-docs.ts & rollup -c",
40
- "lint": "eslint .",
41
- "preview": "vite preview"
42
- },
43
- "dependencies": {
44
- "@dnd-kit/core": "^6.3.1",
45
- "@dnd-kit/sortable": "^10.0.0",
46
- "@hookform/resolvers": "^3.10.0",
47
- "@radix-ui/react-accordion": "^1.2.11",
48
- "@radix-ui/react-alert-dialog": "^1.1.14",
49
- "@radix-ui/react-avatar": "^1.1.10",
50
- "@radix-ui/react-checkbox": "^1.3.3",
51
- "@radix-ui/react-collapsible": "^1.1.11",
52
- "@radix-ui/react-context-menu": "^2.2.16",
53
- "@radix-ui/react-dialog": "^1.1.14",
54
- "@radix-ui/react-dropdown-menu": "^2.1.15",
55
- "@radix-ui/react-hover-card": "^1.1.15",
56
- "@radix-ui/react-label": "^2.1.7",
57
- "@radix-ui/react-menubar": "^1.1.16",
58
- "@radix-ui/react-navigation-menu": "^1.2.14",
59
- "@radix-ui/react-popover": "^1.1.14",
60
- "@radix-ui/react-progress": "^1.1.7",
61
- "@radix-ui/react-radio-group": "^1.3.7",
62
- "@radix-ui/react-scroll-area": "^1.2.9",
63
- "@radix-ui/react-select": "^2.2.5",
64
- "@radix-ui/react-separator": "^1.1.7",
65
- "@radix-ui/react-slider": "^1.3.5",
66
- "@radix-ui/react-slot": "^1.2.3",
67
- "@radix-ui/react-switch": "^1.2.6",
68
- "@radix-ui/react-tabs": "^1.1.12",
69
- "@radix-ui/react-toast": "^1.2.14",
70
- "@radix-ui/react-toggle": "^1.1.9",
71
- "@radix-ui/react-toggle-group": "^1.1.10",
72
- "@radix-ui/react-tooltip": "^1.2.7",
73
- "@supabase/supabase-js": "^2.100.0",
74
- "@tanstack/react-query": "^5.83.0",
75
- "@tiptap/extension-color": "^3.14.0",
76
- "@tiptap/extension-highlight": "^3.14.0",
77
- "@tiptap/extension-link": "^3.14.0",
78
- "@tiptap/extension-text-style": "^3.14.0",
79
- "@tiptap/extension-underline": "^3.14.0",
80
- "@tiptap/react": "^3.14.0",
81
- "@tiptap/starter-kit": "^3.14.0",
82
- "class-variance-authority": "^0.7.1",
83
- "clsx": "^2.1.1",
84
- "date-fns": "^3.6.0",
85
- "date-fns-tz": "^3.2.0",
86
- "exceljs": "^4.4.0",
87
- "i18next-browser-languagedetector": "^8.2.0",
88
- "jszip": "^3.10.1",
89
- "lucide-react": "^0.553.0",
90
- "next-themes": "^0.3.0",
91
- "react": "^18.3.1",
92
- "react-day-picker": "^9.13.0",
93
- "react-dom": "^18.3.1",
94
- "react-hook-form": "^7.61.1",
95
- "react-resizable-panels": "^3.0.6",
96
- "react-router-dom": "^6.30.1",
97
- "recharts": "^3.6.0",
98
- "sonner": "^1.7.4",
99
- "tailwind-merge": "^3.3.1",
100
- "tailwindcss-animate": "^1.0.7",
101
- "vaul": "^1.1.2",
102
- "zod": "^3.25.76"
103
- },
104
- "peerDependencies": {
105
- "i18next": "^25.0.0",
106
- "react-i18next": "^16.0.0"
107
- },
108
- "devDependencies": {
109
- "@babel/parser": "^7.28.5",
110
- "@babel/traverse": "^7.28.5",
111
- "@babel/types": "^7.28.5",
112
- "@eslint/js": "^9.32.0",
113
- "@rollup/plugin-commonjs": "^28.0.6",
114
- "@rollup/plugin-json": "^6.1.0",
115
- "@rollup/plugin-node-resolve": "^16.0.1",
116
- "@rollup/plugin-terser": "1.0.0",
117
- "@rollup/plugin-typescript": "^12.1.4",
118
- "@rollup/plugin-url": "^8.0.2",
119
- "@svgr/rollup": "^8.1.0",
120
- "@tailwindcss/typography": "^0.5.16",
121
- "@types/file-saver": "^2.0.7",
122
- "@types/node": "^22.16.5",
123
- "@types/react": "^18.3.23",
124
- "@types/react-dom": "^18.3.7",
125
- "@vitejs/plugin-react-swc": "^3.11.0",
126
- "autoprefixer": "^10.4.21",
127
- "baseline-browser-mapping": "^2.9.12",
128
- "eslint": "^9.32.0",
129
- "eslint-plugin-react-hooks": "^5.2.0",
130
- "eslint-plugin-react-refresh": "^0.4.20",
131
- "globals": "^15.15.0",
132
- "lovable-tagger": "^1.1.9",
133
- "postcss": "^8.5.6",
134
- "rollup": "^4.50.1",
135
- "rollup-plugin-copy": "^3.5.0",
136
- "rollup-plugin-esbuild": "^6.2.1",
137
- "rollup-plugin-postcss": "^4.0.2",
138
- "tailwindcss": "^3.4.17",
139
- "tsx": "^4.20.6",
140
- "typescript": "^5.8.3",
141
- "typescript-eslint": "^8.38.0",
142
- "vite": "^7.3.0"
143
- }
144
- }
1
+ {
2
+ "name": "forlogic-core",
3
+ "version": "2.1.5",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.js"
13
+ },
14
+ "./index.css": "./dist/index.css",
15
+ "./tokens": "./dist/tokens/index.js",
16
+ "./vite": {
17
+ "types": "./dist/vite/index.d.ts",
18
+ "import": "./dist/vite/index.esm.js",
19
+ "require": "./dist/vite/index.js"
20
+ },
21
+ "./tailwind": {
22
+ "types": "./dist/tailwind/index.d.ts",
23
+ "import": "./dist/tailwind/index.esm.js",
24
+ "require": "./dist/tailwind/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "docs",
30
+ ".note/memory"
31
+ ],
32
+ "sideEffects": [
33
+ "*.css"
34
+ ],
35
+ "scripts": {
36
+ "dev": "vite",
37
+ "build": "vite build",
38
+ "build:dev": "vite build --mode development",
39
+ "build:lib": "npx tsx scripts/generate-ds-docs.ts & rollup -c",
40
+ "lint": "eslint .",
41
+ "preview": "vite preview"
42
+ },
43
+ "dependencies": {
44
+ "@dnd-kit/core": "^6.3.1",
45
+ "@dnd-kit/sortable": "^10.0.0",
46
+ "@hookform/resolvers": "^3.10.0",
47
+ "@radix-ui/react-accordion": "^1.2.11",
48
+ "@radix-ui/react-alert-dialog": "^1.1.14",
49
+ "@radix-ui/react-avatar": "^1.1.10",
50
+ "@radix-ui/react-checkbox": "^1.3.3",
51
+ "@radix-ui/react-collapsible": "^1.1.11",
52
+ "@radix-ui/react-context-menu": "^2.2.16",
53
+ "@radix-ui/react-dialog": "^1.1.14",
54
+ "@radix-ui/react-dropdown-menu": "^2.1.15",
55
+ "@radix-ui/react-hover-card": "^1.1.15",
56
+ "@radix-ui/react-label": "^2.1.7",
57
+ "@radix-ui/react-menubar": "^1.1.16",
58
+ "@radix-ui/react-navigation-menu": "^1.2.14",
59
+ "@radix-ui/react-popover": "^1.1.14",
60
+ "@radix-ui/react-progress": "^1.1.7",
61
+ "@radix-ui/react-radio-group": "^1.3.7",
62
+ "@radix-ui/react-scroll-area": "^1.2.9",
63
+ "@radix-ui/react-select": "^2.2.5",
64
+ "@radix-ui/react-separator": "^1.1.7",
65
+ "@radix-ui/react-slider": "^1.3.5",
66
+ "@radix-ui/react-slot": "^1.2.3",
67
+ "@radix-ui/react-switch": "^1.2.6",
68
+ "@radix-ui/react-tabs": "^1.1.12",
69
+ "@radix-ui/react-toast": "^1.2.14",
70
+ "@radix-ui/react-toggle": "^1.1.9",
71
+ "@radix-ui/react-toggle-group": "^1.1.10",
72
+ "@radix-ui/react-tooltip": "^1.2.7",
73
+ "@supabase/supabase-js": "^2.100.0",
74
+ "@tanstack/react-query": "^5.83.0",
75
+ "@tiptap/extension-color": "^3.14.0",
76
+ "@tiptap/extension-highlight": "^3.14.0",
77
+ "@tiptap/extension-link": "^3.14.0",
78
+ "@tiptap/extension-text-style": "^3.14.0",
79
+ "@tiptap/extension-underline": "^3.14.0",
80
+ "@tiptap/react": "^3.14.0",
81
+ "@tiptap/starter-kit": "^3.14.0",
82
+ "class-variance-authority": "^0.7.1",
83
+ "clsx": "^2.1.1",
84
+ "date-fns": "^3.6.0",
85
+ "date-fns-tz": "^3.2.0",
86
+ "exceljs": "^4.4.0",
87
+ "i18next-browser-languagedetector": "^8.2.0",
88
+ "jszip": "^3.10.1",
89
+ "lucide-react": "^0.553.0",
90
+ "next-themes": "^0.3.0",
91
+ "react": "^18.3.1",
92
+ "react-day-picker": "^9.13.0",
93
+ "react-dom": "^18.3.1",
94
+ "react-hook-form": "^7.61.1",
95
+ "react-resizable-panels": "^3.0.6",
96
+ "react-router-dom": "^6.30.1",
97
+ "recharts": "^3.6.0",
98
+ "sonner": "^1.7.4",
99
+ "tailwind-merge": "^3.3.1",
100
+ "tailwindcss-animate": "^1.0.7",
101
+ "vaul": "^1.1.2",
102
+ "zod": "^3.25.76"
103
+ },
104
+ "peerDependencies": {
105
+ "i18next": "^25.0.0",
106
+ "react-i18next": "^16.0.0"
107
+ },
108
+ "devDependencies": {
109
+ "@babel/parser": "^7.28.5",
110
+ "@babel/traverse": "^7.28.5",
111
+ "@babel/types": "^7.28.5",
112
+ "@eslint/js": "^9.32.0",
113
+ "@rollup/plugin-commonjs": "^28.0.6",
114
+ "@rollup/plugin-json": "^6.1.0",
115
+ "@rollup/plugin-node-resolve": "^16.0.1",
116
+ "@rollup/plugin-terser": "1.0.0",
117
+ "@rollup/plugin-typescript": "^12.1.4",
118
+ "@rollup/plugin-url": "^8.0.2",
119
+ "@svgr/rollup": "^8.1.0",
120
+ "@tailwindcss/typography": "^0.5.16",
121
+ "@types/file-saver": "^2.0.7",
122
+ "@types/node": "^22.16.5",
123
+ "@types/react": "^18.3.23",
124
+ "@types/react-dom": "^18.3.7",
125
+ "@vitejs/plugin-react-swc": "^3.11.0",
126
+ "autoprefixer": "^10.4.21",
127
+ "baseline-browser-mapping": "^2.9.12",
128
+ "eslint": "^9.32.0",
129
+ "eslint-plugin-react-hooks": "^5.2.0",
130
+ "eslint-plugin-react-refresh": "^0.4.20",
131
+ "globals": "^15.15.0",
132
+ "lovable-tagger": "^1.1.9",
133
+ "postcss": "^8.5.6",
134
+ "rollup": "^4.50.1",
135
+ "rollup-plugin-copy": "^3.5.0",
136
+ "rollup-plugin-esbuild": "^6.2.1",
137
+ "rollup-plugin-postcss": "^4.0.2",
138
+ "tailwindcss": "^3.4.17",
139
+ "tsx": "^4.20.6",
140
+ "typescript": "^5.8.3",
141
+ "typescript-eslint": "^8.38.0",
142
+ "vite": "^7.3.0"
143
+ }
144
+ }