@llmnative/react 0.1.1 → 1.1.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.
Files changed (185) hide show
  1. package/README.md +397 -364
  2. package/bin/cli.js +117 -98
  3. package/dist/index.css +1 -1
  4. package/dist/index.js +21 -823
  5. package/dist/index.mjs +14984 -9345
  6. package/dist/style.css +1 -0
  7. package/dist/types/src/App.d.ts +75 -14
  8. package/dist/types/src/Config.d.ts +28 -5
  9. package/dist/types/src/Global.d.ts +2 -2
  10. package/dist/types/src/I18n.d.ts +186 -0
  11. package/dist/types/src/Theme.d.ts +153 -81
  12. package/dist/types/src/auth.d.ts +13 -1
  13. package/dist/types/src/components/Component.d.ts +13 -27
  14. package/dist/types/src/components/ErrorBoundary.d.ts +30 -0
  15. package/dist/types/src/components/blocks/Brand.d.ts +9 -4
  16. package/dist/types/src/components/blocks/Breadcrumbs.d.ts +50 -4
  17. package/dist/types/src/components/blocks/Carousel.d.ts +7 -5
  18. package/dist/types/src/components/blocks/Dropdown.d.ts +38 -20
  19. package/dist/types/src/components/blocks/ListCard.d.ts +38 -0
  20. package/dist/types/src/components/blocks/Menu.d.ts +15 -16
  21. package/dist/types/src/components/blocks/Notifications.d.ts +11 -3
  22. package/dist/types/src/components/blocks/ProviderSwitcher.d.ts +65 -0
  23. package/dist/types/src/components/blocks/Search.d.ts +3 -2
  24. package/dist/types/src/components/blocks/SideNav.d.ts +45 -0
  25. package/dist/types/src/components/blocks/ThemeSwitcher.d.ts +28 -0
  26. package/dist/types/src/components/blocks/Toolbar.d.ts +23 -0
  27. package/dist/types/src/components/index.d.ts +28 -7
  28. package/dist/types/src/components/types.d.ts +10 -3
  29. package/dist/types/src/components/ui/Alert.d.ts +20 -4
  30. package/dist/types/src/components/ui/Badge.d.ts +12 -5
  31. package/dist/types/src/components/ui/Buttons.d.ts +16 -12
  32. package/dist/types/src/components/ui/Card.d.ts +11 -7
  33. package/dist/types/src/components/ui/Code.d.ts +5 -1
  34. package/dist/types/src/components/ui/Gallery.d.ts +16 -16
  35. package/dist/types/src/components/ui/GridSystem.d.ts +5 -2
  36. package/dist/types/src/components/ui/Icon.d.ts +6 -1
  37. package/dist/types/src/components/ui/Image.d.ts +7 -1
  38. package/dist/types/src/components/ui/ImageAvatar.d.ts +4 -1
  39. package/dist/types/src/components/ui/Loader.d.ts +3 -1
  40. package/dist/types/src/components/ui/LocaleSwitcher.d.ts +14 -0
  41. package/dist/types/src/components/ui/Modal.d.ts +46 -15
  42. package/dist/types/src/components/ui/Pagination.d.ts +16 -3
  43. package/dist/types/src/components/ui/Percentage.d.ts +14 -5
  44. package/dist/types/src/components/ui/Repeat.d.ts +14 -6
  45. package/dist/types/src/components/ui/Tab.d.ts +29 -2
  46. package/dist/types/src/components/ui/TabDynamic.d.ts +4 -3
  47. package/dist/types/src/components/ui/Table.d.ts +18 -14
  48. package/dist/types/src/components/ui/fields/CodeEditor.d.ts +46 -0
  49. package/dist/types/src/components/ui/fields/ContextMenu.d.ts +87 -0
  50. package/dist/types/src/components/ui/fields/Crop.d.ts +4 -2
  51. package/dist/types/src/components/ui/fields/ImageField.d.ts +31 -0
  52. package/dist/types/src/components/ui/fields/Input.d.ts +43 -14
  53. package/dist/types/src/components/ui/fields/Prompt.d.ts +2 -31
  54. package/dist/types/src/components/ui/fields/RichText.d.ts +89 -0
  55. package/dist/types/src/components/ui/fields/Select.d.ts +13 -10
  56. package/dist/types/src/components/ui/fields/Upload.d.ts +50 -2
  57. package/dist/types/src/components/ui/fields/UploadCSV.d.ts +2 -0
  58. package/dist/types/src/components/ui/useRecordSelection.d.ts +1 -2
  59. package/dist/types/src/components/widgets/Form.d.ts +80 -43
  60. package/dist/types/src/components/widgets/ImageEditor.d.ts +4 -5
  61. package/dist/types/src/components/widgets/MarkdownReader.d.ts +4 -4
  62. package/dist/types/src/components/widgets/Prompt.d.ts +90 -22
  63. package/dist/types/src/components/widgets/TabDynamic.d.ts +4 -3
  64. package/dist/types/src/components/widgets/form-controller.d.ts +42 -0
  65. package/dist/types/src/components/widgets/grid-core/GridCore.d.ts +1 -1
  66. package/dist/types/src/components/widgets/grid-core/GridDB.d.ts +1 -1
  67. package/dist/types/src/components/widgets/grid-core/GridGalleryView.d.ts +1 -1
  68. package/dist/types/src/components/widgets/grid-core/GridTableView.d.ts +1 -1
  69. package/dist/types/src/components/widgets/grid-core/types.d.ts +77 -27
  70. package/dist/types/src/components/widgets/grid-core/useGridActions.d.ts +4 -8
  71. package/dist/types/src/components/widgets/grid-core/useGridColumns.d.ts +2 -2
  72. package/dist/types/src/components/widgets/grid-core/useGridDBRecords.d.ts +1 -2
  73. package/dist/types/src/components/widgets/grid-core/useGridPreparedRecords.d.ts +2 -2
  74. package/dist/types/src/components/widgets/grid-core/useGridSelection.d.ts +4 -5
  75. package/dist/types/src/components/widgets/grid-core/utils.d.ts +11 -3
  76. package/dist/types/src/conf/Prompt.d.ts +1 -1
  77. package/dist/types/src/conf/i18n/ar.d.ts +2 -0
  78. package/dist/types/src/conf/i18n/de.d.ts +2 -0
  79. package/dist/types/src/conf/i18n/en.d.ts +2 -0
  80. package/dist/types/src/conf/i18n/index.d.ts +6 -0
  81. package/dist/types/src/conf/i18n/it.d.ts +2 -0
  82. package/dist/types/src/conf/i18n/ru.d.ts +2 -0
  83. package/dist/types/src/conf/i18n/zh.d.ts +2 -0
  84. package/dist/types/src/constant.d.ts +1 -1
  85. package/dist/types/src/index.d.ts +48 -13
  86. package/dist/types/src/libs/converter.d.ts +4 -4
  87. package/dist/types/src/libs/editorHeight.d.ts +12 -0
  88. package/dist/types/src/libs/fetch.d.ts +4 -4
  89. package/dist/types/src/libs/imageBuilder.d.ts +63 -14
  90. package/dist/types/src/libs/imageVariants.d.ts +35 -0
  91. package/dist/types/src/libs/index.d.ts +1 -4
  92. package/dist/types/src/libs/promptUtils.d.ts +24 -0
  93. package/dist/types/src/libs/sanitizer.d.ts +2 -2
  94. package/dist/types/src/libs/utils.d.ts +9 -10
  95. package/dist/types/src/pages/index.d.ts +0 -2
  96. package/dist/types/src/providers/ProviderConfiguration.d.ts +6 -0
  97. package/dist/types/src/providers/ProviderDescriptor.d.ts +18 -0
  98. package/dist/types/src/providers/ProviderRegistryContext.d.ts +51 -0
  99. package/dist/types/src/providers/ProviderSession.d.ts +68 -0
  100. package/dist/types/src/providers/ai/AIProvider.d.ts +57 -0
  101. package/dist/types/src/providers/ai/AIProviderContext.d.ts +13 -0
  102. package/dist/types/src/providers/ai/anthropic.d.ts +2 -0
  103. package/dist/types/src/providers/ai/deepseek.d.ts +1 -0
  104. package/dist/types/src/providers/ai/gemini.d.ts +2 -0
  105. package/dist/types/src/providers/ai/glm.d.ts +1 -0
  106. package/dist/types/src/providers/ai/index.d.ts +20 -134
  107. package/dist/types/src/providers/ai/mistral.d.ts +1 -0
  108. package/dist/types/src/providers/ai/openai.d.ts +1 -0
  109. package/dist/types/src/providers/ai/openaiCompatible.d.ts +19 -0
  110. package/dist/types/src/providers/ai/opencode.d.ts +2 -0
  111. package/dist/types/src/providers/ai/openrouter.d.ts +1 -0
  112. package/dist/types/src/providers/ai/shared.d.ts +55 -0
  113. package/dist/types/src/providers/api/ApiProvider.d.ts +43 -0
  114. package/dist/types/src/providers/api/direct.d.ts +14 -0
  115. package/dist/types/src/providers/api/firebase.d.ts +14 -0
  116. package/dist/types/src/providers/api/mock.d.ts +7 -0
  117. package/dist/types/src/providers/api/supabase.d.ts +14 -0
  118. package/dist/types/src/providers/auth/AuthProvider.d.ts +10 -2
  119. package/dist/types/src/providers/auth/firebase/FirebaseAuthProvider.d.ts +49 -0
  120. package/dist/types/src/providers/auth/google/GoogleAuth.d.ts +2 -2
  121. package/dist/types/src/providers/auth/supabase/SupabaseAuthProvider.d.ts +48 -0
  122. package/dist/types/src/providers/credentials/CredentialsProvider.d.ts +3 -0
  123. package/dist/types/src/providers/credentials/CredentialsProviderContext.d.ts +12 -0
  124. package/dist/types/src/providers/credentials/google/GoogleServiceAccountProvider.d.ts +8 -0
  125. package/dist/types/src/providers/data/DataProvider.d.ts +27 -1
  126. package/dist/types/src/providers/data/firebase.d.ts +5 -4
  127. package/dist/types/src/providers/data/firestore.d.ts +45 -0
  128. package/dist/types/src/providers/data/mock.d.ts +8 -1
  129. package/dist/types/src/providers/data/supabase.d.ts +36 -10
  130. package/dist/types/src/providers/email/definitions.d.ts +3 -0
  131. package/dist/types/src/providers/firebase-init.d.ts +24 -7
  132. package/dist/types/src/providers/icon/PhosphorIconProvider.d.ts +1 -1
  133. package/dist/types/src/providers/manifest.d.ts +20 -14
  134. package/dist/types/src/providers/proxy/index.d.ts +7 -0
  135. package/dist/types/src/providers/proxy/vite.d.ts +3 -0
  136. package/dist/types/src/providers/publish/PublishProvider.d.ts +29 -0
  137. package/dist/types/src/providers/publish/definitions.d.ts +3 -0
  138. package/dist/types/src/providers/scrape/index.d.ts +2 -1
  139. package/dist/types/src/providers/seo/google/keyword.d.ts +6 -1
  140. package/dist/types/src/providers/storage/StorageProvider.d.ts +155 -4
  141. package/dist/types/src/providers/storage/dropbox.d.ts +3 -3
  142. package/dist/types/src/providers/storage/firebase.d.ts +44 -7
  143. package/dist/types/src/providers/storage/supabase.d.ts +47 -7
  144. package/dist/types/src/providers/supabase-init.d.ts +35 -0
  145. package/dist/types/src/types/FormFields.d.ts +4 -2
  146. package/dist/types/src/types/FormSchema.d.ts +29 -0
  147. package/dist/types/themes/tokyo-night-light.d.ts +3 -0
  148. package/dist/types/themes/tokyo-night.d.ts +3 -0
  149. package/dist/types/themes/vscode-dark-plus.d.ts +3 -0
  150. package/dist/types/themes/vscode-light-plus.d.ts +3 -0
  151. package/dist/vite.js +1 -0
  152. package/dist/vite.mjs +54 -0
  153. package/package.json +46 -8
  154. package/scripts/cli/proxy-templates/cloudflare.ts +34 -0
  155. package/scripts/cli/proxy-templates/express.ts +77 -0
  156. package/scripts/cli/proxy-templates/nextjs-app.ts +42 -0
  157. package/scripts/cli/proxy-templates/nextjs-pages.ts +41 -0
  158. package/scripts/cli/proxy-templates/scaffold.json +33 -0
  159. package/scripts/cli/setup-devtools.js +155 -85
  160. package/scripts/cli/setup-project.js +618 -484
  161. package/themes/cyber.ts +469 -405
  162. package/themes/default.ts +469 -405
  163. package/themes/flat.ts +469 -405
  164. package/themes/tokyo-night-light.ts +38 -0
  165. package/themes/tokyo-night.ts +38 -0
  166. package/themes/vscode-dark-plus.ts +29 -0
  167. package/themes/vscode-light-plus.ts +29 -0
  168. package/dist/index.js.map +0 -1
  169. package/dist/index.mjs.map +0 -1
  170. package/dist/types/src/components/FormEnhancer.d.ts +0 -26
  171. package/dist/types/src/components/Template.d.ts +0 -18
  172. package/dist/types/src/components/ui/fields/AssistantAI.d.ts +0 -23
  173. package/dist/types/src/components/ui/fields/Command.d.ts +0 -15
  174. package/dist/types/src/components/ui/fields/ImageUrl.d.ts +0 -7
  175. package/dist/types/src/libs/cache.d.ts +0 -9
  176. package/dist/types/src/libs/database.d.ts +0 -3
  177. package/dist/types/src/libs/log.d.ts +0 -2
  178. package/dist/types/src/libs/seo.d.ts +0 -8
  179. package/dist/types/src/libs/storage.d.ts +0 -2
  180. package/dist/types/src/pages/Blog.d.ts +0 -3
  181. package/dist/types/src/pages/BlogPost.d.ts +0 -16
  182. package/dist/types/src/pages/Helper.d.ts +0 -8
  183. package/dist/types/src/providers/auth/google/apis/auth.d.ts +0 -4
  184. package/dist/types/src/types/Block.d.ts +0 -4
  185. package/dist/types/src/types/Section.d.ts +0 -4
package/themes/cyber.ts CHANGED
@@ -1,405 +1,469 @@
1
- import type { Theme, ThemeDefinition, ThemePresetConfig } from '../src/Theme';
2
- import type { MotionRegistry } from '../src/motion';
3
-
4
- export const preset: ThemePresetConfig = {
5
- mode: 'dark' as const,
6
- radius: 0,
7
- colors: {
8
- background: '0 0% 98%',
9
- foreground: '215 25% 16%',
10
- card: '0 0% 100%',
11
- cardForeground: '215 25% 16%',
12
- popover: '0 0% 100%',
13
- popoverForeground: '215 25% 16%',
14
- primary: '160 84% 39%',
15
- primaryForeground: '0 0% 0%',
16
- secondary: '160 20% 92%',
17
- secondaryForeground: '160 25% 20%',
18
- muted: '160 15% 93%',
19
- mutedForeground: '215 15% 50%',
20
- accent: '160 30% 90%',
21
- accentForeground: '160 84% 25%',
22
- destructive: '0 72% 51%',
23
- destructiveForeground:'0 0% 100%',
24
- success: '160 84% 39%',
25
- successForeground: '0 0% 0%',
26
- warning: '45 96% 48%',
27
- warningForeground: '0 0% 0%',
28
- info: '199 89% 48%',
29
- infoForeground: '0 0% 0%',
30
- border: '160 20% 85%',
31
- input: '160 20% 85%',
32
- ring: '160 84% 39%',
33
- },
34
- dark: {
35
- background: '220 20% 7%',
36
- foreground: '160 10% 90%',
37
- card: '220 20% 10%',
38
- cardForeground: '160 10% 90%',
39
- popover: '220 20% 10%',
40
- popoverForeground: '160 10% 90%',
41
- primary: '160 84% 39%',
42
- primaryForeground: '0 0% 0%',
43
- secondary: '220 20% 15%',
44
- secondaryForeground: '160 10% 75%',
45
- muted: '220 20% 14%',
46
- mutedForeground: '220 10% 55%',
47
- accent: '160 60% 15%',
48
- accentForeground: '160 84% 70%',
49
- destructive: '0 72% 51%',
50
- destructiveForeground:'0 0% 100%',
51
- success: '160 84% 45%',
52
- successForeground: '0 0% 0%',
53
- warning: '45 96% 55%',
54
- warningForeground: '0 0% 0%',
55
- info: '199 89% 55%',
56
- infoForeground: '0 0% 0%',
57
- border: '220 20% 18%',
58
- input: '220 20% 18%',
59
- ring: '160 84% 39%',
60
- },
61
- };
62
-
63
- export const motion: MotionRegistry = {
64
- none: {
65
- from: {},
66
- to: {},
67
- transition: { duration: 0, easing: 'linear', properties: ['opacity', 'transform', 'box-shadow'] },
68
- reducedMotion: 'always',
69
- },
70
- fade: {
71
- from: { opacity: 0 },
72
- to: { opacity: 1 },
73
- transition: { duration: 180, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity'] },
74
- reducedMotion: 'respect-user',
75
- },
76
- fadeUp: {
77
- from: { opacity: 0, transform: 'translateY(10px)' },
78
- to: { opacity: 1, transform: 'translateY(0)' },
79
- transition: { duration: 200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
80
- reducedMotion: 'respect-user',
81
- },
82
- fadeDown: {
83
- from: { opacity: 0, transform: 'translateY(-10px)' },
84
- to: { opacity: 1, transform: 'translateY(0)' },
85
- transition: { duration: 180, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform', 'visibility'] },
86
- reducedMotion: 'respect-user',
87
- },
88
- slideFromRight: {
89
- from: { opacity: 0, transform: 'translateX(100%)' },
90
- to: { opacity: 1, transform: 'translateX(0)' },
91
- transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
92
- reducedMotion: 'respect-user',
93
- },
94
- slideFromLeft: {
95
- from: { opacity: 0, transform: 'translateX(-100%)' },
96
- to: { opacity: 1, transform: 'translateX(0)' },
97
- transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
98
- reducedMotion: 'respect-user',
99
- },
100
- slideFromTop: {
101
- from: { opacity: 0, transform: 'translateY(-100%)' },
102
- to: { opacity: 1, transform: 'translateY(0)' },
103
- transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
104
- reducedMotion: 'respect-user',
105
- },
106
- slideFromBottom: {
107
- from: { opacity: 0, transform: 'translateY(100%)' },
108
- to: { opacity: 1, transform: 'translateY(0)' },
109
- transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
110
- reducedMotion: 'respect-user',
111
- },
112
- press: {
113
- from: {},
114
- to: { transform: 'scale(0.97)' },
115
- transition: { duration: 110, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['transform', 'box-shadow'] },
116
- reducedMotion: 'respect-user',
117
- },
118
- imageZoom: {
119
- from: { transform: 'scale(1)' },
120
- to: { transform: 'scale(1.06)' },
121
- transition: { duration: 280, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['transform'] },
122
- reducedMotion: 'respect-user',
123
- },
124
- };
125
-
126
- export const components: Theme = {
127
- Grid: {
128
- Card: {
129
- wrapClass: '',
130
- className: '',
131
- headerClass: 'flex justify-between',
132
- bodyClass: 'p-0',
133
- footerClass: '',
134
- showArrow: false,
135
- showLoader: false,
136
- },
137
- Table: {
138
- wrapClass: '',
139
- className: 'table-striped',
140
- headerClass: '',
141
- bodyClass: '',
142
- footerClass: '',
143
- scrollClass: 'fixed-table-container',
144
- selectedClass: 'table-info',
145
- },
146
- Gallery: {
147
- wrapClass: '',
148
- className: '',
149
- scrollClass: '',
150
- headerClass: '',
151
- bodyClass: '',
152
- footerClass: '',
153
- selectedClass: 'bg-primary/20',
154
- gutterSize: 1,
155
- rowCols: 4,
156
- },
157
- Modal: {
158
- mode: 'form',
159
- size: 'lg',
160
- position: 'center',
161
- wrapClass: '',
162
- className: '',
163
- headerClass: '',
164
- titleClass: '',
165
- subTitleClass: 'pr-1 text-muted-foreground',
166
- bodyClass: '',
167
- footerClass: '',
168
- iconExpand: 'fullscreen',
169
- iconCollapse: 'fullscreen-exit',
170
- motion: {
171
- center: 'fade',
172
- top: 'slideFromTop',
173
- left: 'slideFromLeft',
174
- right: 'slideFromRight',
175
- bottom: 'slideFromBottom',
176
- backdrop: 'fade',
177
- },
178
- },
179
- i18n: {
180
- headerAdd: 'Aggiungi',
181
- headerEdit: 'Modifica',
182
- buttonAdd: 'Aggiungi',
183
- },
184
- },
185
- Table: {
186
- wrapClass: 'bootstrap-table',
187
- className: 'table-striped',
188
- headerClass: '',
189
- bodyClass: '',
190
- footerClass: '',
191
- scrollClass: 'fixed-table-container',
192
- selectedClass: 'table-info',
193
- },
194
- Gallery: {
195
- wrapClass: '',
196
- className: '',
197
- scrollClass: '',
198
- headerClass: '',
199
- bodyClass: '',
200
- footerClass: '',
201
- selectedClass: 'bg-primary/20',
202
- gutterSize: 4,
203
- rowCols: 2,
204
- },
205
- Pagination: {
206
- wrapClass: '',
207
- className: '',
208
- stickyClass: 'fixed-bottom mx-5',
209
- scrollToTop: false,
210
- scrollBehavior: 'auto',
211
- maxItems: 5,
212
- sticky: true,
213
- align: 'end',
214
- },
215
- Carousel: {
216
- showIndicators: true,
217
- showControls: true,
218
- showCaption: true,
219
- layoutDark: false,
220
- autoPlay: true,
221
- },
222
- Card: {
223
- wrapClass: '',
224
- className: '',
225
- headerClass: 'flex justify-between bg-white/[.15] font-normal',
226
- bodyClass: 'flex flex-col',
227
- footerClass: '',
228
- showLoader: false,
229
- showArrow: false,
230
- },
231
- Loader: {
232
- wrapClass: '',
233
- className: '',
234
- icon: 'custom-loader',
235
- title: 'Loading..',
236
- description: '',
237
- },
238
- ActionButton: {
239
- className: 'btn-primary',
240
- badgeClass: 'rounded-full bg-destructive text-destructive-foreground',
241
- motion: {
242
- press: 'press',
243
- },
244
- },
245
- LoadingButton: {
246
- className: 'btn-primary',
247
- badgeClass: 'rounded-full bg-destructive text-destructive-foreground',
248
- motion: {
249
- press: 'press',
250
- },
251
- },
252
- LinkButton: {
253
- className: 'btn-outline-secondary',
254
- },
255
- Alert: {
256
- className: '',
257
- },
258
- Badge: {
259
- className: '',
260
- },
261
- Modal: {
262
- size: 'lg',
263
- position: 'center',
264
- wrapClass: '',
265
- className: '',
266
- headerClass: '',
267
- titleClass: '',
268
- subTitleClass: 'pr-1 text-muted-foreground',
269
- bodyClass: '',
270
- footerClass: '',
271
- iconExpand: 'fullscreen',
272
- iconCollapse: 'fullscreen-exit',
273
- motion: {
274
- center: 'fade',
275
- top: 'slideFromTop',
276
- left: 'slideFromLeft',
277
- right: 'slideFromRight',
278
- bottom: 'slideFromBottom',
279
- backdrop: 'fade',
280
- },
281
- },
282
- Dropdown: {
283
- wrapClass: '',
284
- className: '',
285
- buttonClass: 'btn btn-outline-primary',
286
- badgeClass: '',
287
- menuClass: '',
288
- menuHeaderClass: '',
289
- menuItemClass: '',
290
- menuDividerClass: '',
291
- headerClass: '',
292
- footerClass: '',
293
- Menu: {
294
- wrapClass: '',
295
- className: 'list-none p-0 m-0',
296
- headerClass: '',
297
- itemClass: '',
298
- linkClass: 'flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent',
299
- iconClass: 'text-muted-foreground',
300
- textClass: '',
301
- badgeClass: '',
302
- arrowClass: '',
303
- submenuClass: '',
304
- },
305
- motion: {
306
- open: 'fadeDown',
307
- close: 'fadeDown',
308
- press: 'press',
309
- },
310
- },
311
- Notifications: {
312
- wrapClass: 'menu-item',
313
- Dropdown: {
314
- className: '',
315
- buttonClass: 'btn btn-link',
316
- menuClass: 'mt-1 fs-11px w-300px pt-1',
317
- },
318
- },
319
- Select: {
320
- wrapClass: '',
321
- className: '',
322
- },
323
- Autocomplete: {
324
- wrapClass: '',
325
- className: '',
326
- },
327
- Form: {
328
- wrapClass: '',
329
- buttonSaveClass: 'btn-outline-primary',
330
- buttonDeleteClass: 'btn-outline-danger',
331
- buttonBackClass: 'btn-link',
332
- Card: {
333
- headerClass: '',
334
- bodyClass: '',
335
- footerClass: 'text-right',
336
- },
337
- i18n: {
338
- headerAdd: 'Aggiungi',
339
- headerEdit: 'Modifica',
340
- headerNewRecord: 'Nuovo Record',
341
- buttonSave: 'Salva',
342
- buttonDelete: 'Elimina',
343
- buttonBack: 'Indietro',
344
- noticeRequiredFields: 'Per favore, compila tutti i campi obbligatori',
345
- },
346
- },
347
- Menu: {
348
- wrapClass: 'flex-1 overflow-auto p-4',
349
- className: 'navbar-nav flex-col mb-auto',
350
- headerClass: '',
351
- itemClass: 'nav-item',
352
- linkClass: 'nav-link',
353
- iconClass: 'mr-1',
354
- textClass: 'flex-grow-1',
355
- badgeClass: 'ml-1',
356
- arrowClass: '',
357
- submenuClass: 'nav flex-col ml-4',
358
- },
359
- Brand: {
360
- wrapClass: '',
361
- className: 'brand',
362
- logoClass: 'navbar-brand',
363
- labelClass: 'navbar-text',
364
- },
365
- SignIn: {
366
- className: 'flex items-center',
367
- avatarClass: 'avatar rounded-full mx-2',
368
- },
369
- Image: {
370
- wrapClass: '',
371
- className: '',
372
- motion: {
373
- enter: 'fade',
374
- hover: 'imageZoom',
375
- },
376
- },
377
- ImageAvatar: {
378
- wrapClass: '',
379
- className: '',
380
- motion: { enter: 'fade', hover: 'imageZoom' },
381
- },
382
- Percentage: {
383
- wrapClass: '',
384
- className: '',
385
- },
386
- Tab: {
387
- wrapClass: '',
388
- className: '',
389
- motion: {
390
- enter: 'fadeUp',
391
- },
392
- },
393
- Code: {
394
- wrapClass: '',
395
- className: '',
396
- },
397
- Prompt: {
398
- wrapClass: '',
399
- className: '',
400
- },
401
- };
402
-
403
- const definition: ThemeDefinition = { preset, motion, components };
404
-
405
- export default definition;
1
+ import type { Theme, ThemeDefinition, ThemePresetConfig } from '../src/Theme';
2
+ import type { MotionRegistry } from '../src/motion';
3
+
4
+ export const preset: ThemePresetConfig = {
5
+ mode: 'dark' as const,
6
+ radius: 0,
7
+ colors: {
8
+ background: '0 0% 98%',
9
+ foreground: '215 25% 16%',
10
+ card: '0 0% 100%',
11
+ cardForeground: '215 25% 16%',
12
+ popover: '0 0% 100%',
13
+ popoverForeground: '215 25% 16%',
14
+ primary: '160 84% 39%',
15
+ primaryForeground: '0 0% 0%',
16
+ secondary: '160 20% 92%',
17
+ secondaryForeground: '160 25% 20%',
18
+ muted: '160 15% 93%',
19
+ mutedForeground: '215 15% 50%',
20
+ accent: '160 30% 90%',
21
+ accentForeground: '160 84% 25%',
22
+ destructive: '0 72% 51%',
23
+ destructiveForeground:'0 0% 100%',
24
+ success: '160 84% 39%',
25
+ successForeground: '0 0% 0%',
26
+ warning: '45 96% 48%',
27
+ warningForeground: '0 0% 0%',
28
+ info: '199 89% 48%',
29
+ infoForeground: '0 0% 0%',
30
+ border: '160 20% 85%',
31
+ input: '160 20% 85%',
32
+ ring: '160 84% 39%',
33
+ },
34
+ dark: {
35
+ background: '220 20% 7%',
36
+ foreground: '160 10% 90%',
37
+ card: '220 20% 10%',
38
+ cardForeground: '160 10% 90%',
39
+ popover: '220 20% 10%',
40
+ popoverForeground: '160 10% 90%',
41
+ primary: '160 84% 39%',
42
+ primaryForeground: '0 0% 0%',
43
+ secondary: '220 20% 15%',
44
+ secondaryForeground: '160 10% 75%',
45
+ muted: '220 20% 14%',
46
+ mutedForeground: '220 10% 55%',
47
+ accent: '160 60% 15%',
48
+ accentForeground: '160 84% 70%',
49
+ destructive: '0 72% 51%',
50
+ destructiveForeground:'0 0% 100%',
51
+ success: '160 84% 45%',
52
+ successForeground: '0 0% 0%',
53
+ warning: '45 96% 55%',
54
+ warningForeground: '0 0% 0%',
55
+ info: '199 89% 55%',
56
+ infoForeground: '0 0% 0%',
57
+ border: '220 20% 18%',
58
+ input: '220 20% 18%',
59
+ ring: '160 84% 39%',
60
+ },
61
+ };
62
+
63
+ export const motion: MotionRegistry = {
64
+ none: {
65
+ from: {},
66
+ to: {},
67
+ transition: { duration: 0, easing: 'linear', properties: ['opacity', 'transform', 'box-shadow'] },
68
+ reducedMotion: 'always',
69
+ },
70
+ fade: {
71
+ from: { opacity: 0 },
72
+ to: { opacity: 1 },
73
+ transition: { duration: 180, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity'] },
74
+ reducedMotion: 'respect-user',
75
+ },
76
+ fadeUp: {
77
+ from: { opacity: 0, transform: 'translateY(10px)' },
78
+ to: { opacity: 1, transform: 'translateY(0)' },
79
+ transition: { duration: 200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
80
+ reducedMotion: 'respect-user',
81
+ },
82
+ fadeDown: {
83
+ from: { opacity: 0, transform: 'translateY(-10px)' },
84
+ to: { opacity: 1, transform: 'translateY(0)' },
85
+ transition: { duration: 180, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform', 'visibility'] },
86
+ reducedMotion: 'respect-user',
87
+ },
88
+ slideFromRight: {
89
+ from: { opacity: 0, transform: 'translateX(100%)' },
90
+ to: { opacity: 1, transform: 'translateX(0)' },
91
+ transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
92
+ reducedMotion: 'respect-user',
93
+ },
94
+ slideFromLeft: {
95
+ from: { opacity: 0, transform: 'translateX(-100%)' },
96
+ to: { opacity: 1, transform: 'translateX(0)' },
97
+ transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
98
+ reducedMotion: 'respect-user',
99
+ },
100
+ slideFromTop: {
101
+ from: { opacity: 0, transform: 'translateY(-100%)' },
102
+ to: { opacity: 1, transform: 'translateY(0)' },
103
+ transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
104
+ reducedMotion: 'respect-user',
105
+ },
106
+ slideFromBottom: {
107
+ from: { opacity: 0, transform: 'translateY(100%)' },
108
+ to: { opacity: 1, transform: 'translateY(0)' },
109
+ transition: { duration: 220, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['opacity', 'transform'] },
110
+ reducedMotion: 'respect-user',
111
+ },
112
+ press: {
113
+ from: {},
114
+ to: { transform: 'scale(0.97)' },
115
+ transition: { duration: 110, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['transform', 'box-shadow'] },
116
+ reducedMotion: 'respect-user',
117
+ },
118
+ imageZoom: {
119
+ from: { transform: 'scale(1)' },
120
+ to: { transform: 'scale(1.06)' },
121
+ transition: { duration: 280, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', properties: ['transform'] },
122
+ reducedMotion: 'respect-user',
123
+ },
124
+ };
125
+
126
+ export const components: Theme = {
127
+ Grid: {
128
+ Card: {
129
+ wrapperClassName: '',
130
+ className: '',
131
+ headerClassName: 'flex justify-between',
132
+ bodyClassName: 'p-0',
133
+ footerClassName: '',
134
+ loading: false,
135
+ },
136
+ Table: {
137
+ wrapperClassName: '',
138
+ className: '',
139
+ headerClassName: '',
140
+ bodyClassName: '',
141
+ footerClassName: '',
142
+ scrollClassName: 'overflow-x-auto',
143
+ selectedClassName: 'bg-primary/10',
144
+ },
145
+ Gallery: {
146
+ wrapperClassName: '',
147
+ className: '',
148
+ scrollClassName: '',
149
+ headerClassName: '',
150
+ bodyClassName: '',
151
+ footerClassName: '',
152
+ selectedClassName: 'bg-primary/20',
153
+ gap: 1,
154
+ rowCols: 4,
155
+ },
156
+ Modal: {
157
+ mode: 'form',
158
+ size: 'lg',
159
+ position: 'center',
160
+ wrapperClassName: '',
161
+ className: '',
162
+ headerClassName: '',
163
+ titleClassName: '',
164
+ subtitleClassName: 'pr-1 text-muted-foreground',
165
+ bodyClassName: '',
166
+ footerClassName: '',
167
+ iconExpand: 'fullscreen',
168
+ iconCollapse: 'fullscreen-exit',
169
+ motion: {
170
+ center: 'fade',
171
+ top: 'slideFromTop',
172
+ left: 'slideFromLeft',
173
+ right: 'slideFromRight',
174
+ bottom: 'slideFromBottom',
175
+ backdrop: 'fade',
176
+ },
177
+ },
178
+ },
179
+ Table: {
180
+ wrapperClassName: '',
181
+ className: '',
182
+ headerClassName: '',
183
+ bodyClassName: '',
184
+ footerClassName: '',
185
+ scrollClassName: 'overflow-x-auto',
186
+ selectedClassName: 'bg-primary/10',
187
+ },
188
+ Gallery: {
189
+ wrapperClassName: '',
190
+ className: '',
191
+ scrollClassName: '',
192
+ headerClassName: '',
193
+ bodyClassName: '',
194
+ footerClassName: '',
195
+ selectedClassName: 'bg-primary/20',
196
+ gap: 4,
197
+ rowCols: 2,
198
+ },
199
+ Pagination: {
200
+ wrapperClassName: '',
201
+ className: '',
202
+ stickyClassName: 'fixed bottom-0 left-0 right-0 mx-5',
203
+ scrollToTop: false,
204
+ scrollBehavior: 'auto',
205
+ maxItems: 5,
206
+ sticky: true,
207
+ align: 'end',
208
+ },
209
+ Carousel: {
210
+ showIndicators: true,
211
+ showControls: true,
212
+ showCaption: true,
213
+ dark: false,
214
+ autoPlay: true,
215
+ },
216
+ Card: {
217
+ wrapperClassName: '',
218
+ className: '',
219
+ headerClassName: 'flex justify-between bg-white/[.15] font-normal',
220
+ bodyClassName: 'flex flex-col',
221
+ footerClassName: '',
222
+ loading: false,
223
+ },
224
+ Loader: {
225
+ wrapperClassName: '',
226
+ className: '',
227
+ icon: 'custom-loader',
228
+ title: 'Loading..',
229
+ description: '',
230
+ },
231
+ ActionButton: {
232
+ className: 'btn-primary',
233
+ badgeClassName: 'rounded-full bg-destructive text-destructive-foreground',
234
+ motion: {
235
+ press: 'press',
236
+ },
237
+ },
238
+ LoadingButton: {
239
+ className: 'btn-primary',
240
+ badgeClassName: 'rounded-full bg-destructive text-destructive-foreground',
241
+ motion: {
242
+ press: 'press',
243
+ },
244
+ },
245
+ LinkButton: {
246
+ className: 'btn-outline-secondary',
247
+ },
248
+ Alert: {
249
+ className: '',
250
+ },
251
+ Badge: {
252
+ className: '',
253
+ },
254
+ Modal: {
255
+ size: 'lg',
256
+ position: 'center',
257
+ wrapperClassName: '',
258
+ className: '',
259
+ headerClassName: '',
260
+ titleClassName: '',
261
+ subtitleClassName: 'pr-1 text-muted-foreground',
262
+ bodyClassName: '',
263
+ footerClassName: '',
264
+ iconExpand: 'fullscreen',
265
+ iconCollapse: 'fullscreen-exit',
266
+ motion: {
267
+ center: 'fade',
268
+ top: 'slideFromTop',
269
+ left: 'slideFromLeft',
270
+ right: 'slideFromRight',
271
+ bottom: 'slideFromBottom',
272
+ backdrop: 'fade',
273
+ },
274
+ },
275
+ Dropdown: {
276
+ wrapperClassName: '',
277
+ className: '',
278
+ triggerClassName: 'btn btn-outline-primary',
279
+ badgeClassName: '',
280
+ menuClassName: 'rounded-none border-border/70 bg-popover/95 shadow-[0_0_0_1px_hsl(var(--border)/0.55),0_12px_32px_rgba(0,0,0,0.35)] supports-[backdrop-filter]:bg-popover/92',
281
+ menuHeaderClass: 'text-muted-foreground/75',
282
+ menuItemClass: '',
283
+ menuDividerClass: 'bg-border/70',
284
+ headerClassName: '',
285
+ footerClassName: '',
286
+ Menu: {
287
+ wrapperClassName: '',
288
+ className: 'list-none p-0 m-0',
289
+ headerClassName: '',
290
+ itemClassName: '',
291
+ linkClassName: 'flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent',
292
+ iconClassName: 'text-muted-foreground',
293
+ textClassName: '',
294
+ badgeClassName: '',
295
+ arrowClassName: '',
296
+ submenuClassName: '',
297
+ },
298
+ motion: {
299
+ open: 'fadeDown',
300
+ close: 'fadeDown',
301
+ press: 'press',
302
+ },
303
+ },
304
+ Notifications: {
305
+ wrapperClassName: '',
306
+ Dropdown: {
307
+ className: '',
308
+ triggerClassName: 'btn btn-link',
309
+ menuClassName: 'mt-1 text-[11px] w-[300px] pt-1',
310
+ },
311
+ },
312
+ Select: {
313
+ wrapperClassName: '',
314
+ className: '',
315
+ },
316
+ Autocomplete: {
317
+ wrapperClassName: '',
318
+ className: '',
319
+ },
320
+ Form: {
321
+ wrapperClassName: '',
322
+ buttonSaveClass: 'btn-outline-primary',
323
+ buttonDeleteClass: 'btn-outline-danger',
324
+ buttonBackClass: 'btn-link',
325
+ Card: {
326
+ headerClassName: '',
327
+ bodyClassName: '',
328
+ footerClassName: 'flex items-center justify-end gap-3',
329
+ },
330
+ },
331
+ Menu: {
332
+ wrapperClassName: 'flex-1 overflow-auto p-4',
333
+ className: 'flex flex-col mb-auto',
334
+ headerClassName: '',
335
+ itemClassName: '',
336
+ linkClassName: 'flex items-center gap-2 rounded-md px-3 py-2 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground',
337
+ iconClassName: 'mr-1 shrink-0',
338
+ textClassName: 'flex-1',
339
+ badgeClassName: 'ml-1',
340
+ arrowClassName: '',
341
+ submenuClassName: 'mt-1 flex flex-col gap-1 pl-4',
342
+ },
343
+ SideNav: {
344
+ wrapperClassName: '',
345
+ shellClassName: 'border-r border-border bg-card/95 text-foreground',
346
+ overlayClassName: 'shadow-[0_0_32px_rgba(16,185,129,0.18)]',
347
+ headerClassName: 'border-b border-border px-1.5 py-2',
348
+ navClassName: 'px-1.5 py-2',
349
+ footerClassName: 'border-t border-border px-1.5 py-2',
350
+ groupLabelClassName: 'text-[10px] font-semibold uppercase tracking-[0.18em] text-muted-foreground/70 select-none',
351
+ groupDividerClassName: 'bg-border/70',
352
+ itemClassName: 'rounded-none',
353
+ itemActiveClassName: 'bg-primary/12 text-primary font-medium',
354
+ itemChildActiveClassName: 'bg-accent/90 text-foreground font-medium',
355
+ itemInactiveClassName: 'text-muted-foreground hover:text-foreground hover:bg-accent/80',
356
+ itemIconClassName: '',
357
+ itemTextClassName: '',
358
+ itemBadgeClassName: 'ml-auto shrink-0 text-[10px] font-semibold leading-none px-1.5 py-[3px] rounded-none bg-primary/15 text-primary',
359
+ itemCollapsedBadgeClassName: 'absolute -top-0.5 -right-1 h-[7px] w-[7px] rounded-none bg-primary ring-1 ring-card',
360
+ itemToggleClassName: 'shrink-0 flex items-center justify-center w-6 h-6 rounded-none transition-colors text-muted-foreground/50 hover:text-foreground hover:bg-accent/80',
361
+ subItemClassName: 'rounded-none',
362
+ subItemActiveClassName: 'bg-primary/12 text-primary font-medium',
363
+ subItemInactiveClassName: 'text-muted-foreground hover:text-foreground hover:bg-accent/80',
364
+ collapseButtonClassName: 'shrink-0 flex items-center justify-center rounded-none w-8 h-8 transition-colors text-muted-foreground hover:text-foreground hover:bg-accent/80',
365
+ },
366
+ Toolbar: {
367
+ wrapperClassName: 'z-20 w-full',
368
+ stickyClassName: 'sticky top-0',
369
+ restingClassName: 'bg-transparent border-transparent shadow-none',
370
+ scrolledClassName: 'border-b border-border bg-background/90 backdrop-blur supports-[backdrop-filter]:bg-background/85',
371
+ innerClassName: 'flex min-h-14 items-center gap-3 px-4 md:px-6',
372
+ leadingClassName: 'flex min-w-0 items-center gap-2 shrink-0',
373
+ centerClassName: 'flex min-w-0 flex-1 items-center gap-3',
374
+ trailingClassName: 'flex items-center gap-2 shrink-0',
375
+ },
376
+ ListCard: {
377
+ wrapperClassName: '',
378
+ className: 'rounded-none shadow-[0_0_0_1px_hsl(var(--border)/0.7)]',
379
+ activeClassName: 'border-primary/50 bg-primary/10 text-foreground',
380
+ inactiveClassName: 'hover:bg-accent/70',
381
+ disabledClassName: 'cursor-not-allowed opacity-60',
382
+ dashedClassName: 'border-dashed',
383
+ compactClassName: 'p-3',
384
+ leadingClassName: 'rounded-none',
385
+ bodyClassName: '',
386
+ headerClassName: '',
387
+ titleClassName: '',
388
+ descriptionClassName: '',
389
+ metaClassName: '',
390
+ badgeClassName: '',
391
+ trailingClassName: '',
392
+ footerClassName: '',
393
+ motion: {
394
+ press: 'press',
395
+ },
396
+ },
397
+ ProviderSwitcher: {
398
+ wrapperClassName: 'w-full',
399
+ className: 'w-full',
400
+ triggerClassName: 'flex w-full items-center gap-2 rounded-none px-1.5 py-1.5 text-left text-sm font-semibold text-foreground transition-colors hover:bg-accent/70',
401
+ disabledClassName: 'pointer-events-none opacity-60',
402
+ iconWrapperClassName: 'flex h-8 w-8 shrink-0 items-center justify-center rounded-none bg-primary/10 text-primary',
403
+ labelClassName: 'block truncate',
404
+ captionClassName: 'block truncate text-[11px] font-normal text-muted-foreground/80',
405
+ chevronClassName: 'ml-auto shrink-0 text-muted-foreground/70',
406
+ itemClassName: 'rounded-none',
407
+ itemActiveClassName: '',
408
+ itemInactiveClassName: '',
409
+ itemMetaClassName: 'text-xs text-muted-foreground',
410
+ checkClassName: 'text-primary',
411
+ },
412
+ Brand: {
413
+ wrapperClassName: '',
414
+ className: 'flex items-center',
415
+ logoClassName: 'flex items-center gap-2 font-semibold',
416
+ labelClassName: 'text-sm font-medium',
417
+ },
418
+ SignIn: {
419
+ className: 'flex items-center',
420
+ avatarClass: 'mx-2 rounded-full object-cover',
421
+ },
422
+ Image: {
423
+ wrapperClassName: '',
424
+ className: '',
425
+ motion: {
426
+ enter: 'fade',
427
+ hover: 'imageZoom',
428
+ },
429
+ },
430
+ ImageAvatar: {
431
+ wrapperClassName: '',
432
+ className: '',
433
+ motion: { enter: 'fade', hover: 'imageZoom' },
434
+ },
435
+ Percentage: {
436
+ wrapperClassName: '',
437
+ className: '',
438
+ },
439
+ Tab: {
440
+ wrapperClassName: '',
441
+ className: '',
442
+ menuClassName: '',
443
+ itemClassName: '',
444
+ contentClassName: '',
445
+ triggerClassName: '',
446
+ activeTriggerClassName: '',
447
+ inactiveTriggerClassName: '',
448
+ motion: {
449
+ enter: 'fadeUp',
450
+ },
451
+ },
452
+ Code: {
453
+ wrapperClassName: '',
454
+ className: '',
455
+ },
456
+ CodeEditor: {
457
+ wrapperClassName: '',
458
+ className: '',
459
+ },
460
+ Prompt: {
461
+ wrapperClassName: '',
462
+ className: '',
463
+ },
464
+ };
465
+
466
+ const definition: ThemeDefinition = { preset, motion, components };
467
+
468
+ export default definition;
469
+