@kilivi/payloadcms-theme-management 2.0.0 → 2.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.
Files changed (235) hide show
  1. package/README.md +346 -845
  2. package/dist/components/AppearanceSessionControls.d.ts +15 -0
  3. package/dist/components/AppearanceSessionControls.d.ts.map +1 -0
  4. package/dist/components/AppearanceSessionControls.js +152 -0
  5. package/dist/components/AppearanceSessionControls.js.map +1 -0
  6. package/dist/components/ColorModeToggle.css +42 -0
  7. package/dist/components/ColorModeToggle.d.ts +40 -0
  8. package/dist/components/ColorModeToggle.d.ts.map +1 -0
  9. package/dist/components/ColorModeToggle.js +111 -0
  10. package/dist/components/ColorModeToggle.js.map +1 -0
  11. package/dist/components/ServerThemeInjector.d.ts +13 -1
  12. package/dist/components/ServerThemeInjector.d.ts.map +1 -1
  13. package/dist/components/ServerThemeInjector.js +65 -15
  14. package/dist/components/ServerThemeInjector.js.map +1 -1
  15. package/dist/components/ThemeLivePreviewSync.d.ts +4 -0
  16. package/dist/components/ThemeLivePreviewSync.d.ts.map +1 -1
  17. package/dist/components/ThemeLivePreviewSync.js +28 -4
  18. package/dist/components/ThemeLivePreviewSync.js.map +1 -1
  19. package/dist/components/ThemeSwitcher.d.ts +36 -0
  20. package/dist/components/ThemeSwitcher.d.ts.map +1 -0
  21. package/dist/components/ThemeSwitcher.js +89 -0
  22. package/dist/components/ThemeSwitcher.js.map +1 -0
  23. package/dist/components/typographyPreviewUtils.d.ts +5 -0
  24. package/dist/components/typographyPreviewUtils.d.ts.map +1 -1
  25. package/dist/components/typographyPreviewUtils.js +24 -11
  26. package/dist/components/typographyPreviewUtils.js.map +1 -1
  27. package/dist/constants/devicePreviews.d.ts +35 -0
  28. package/dist/constants/devicePreviews.d.ts.map +1 -0
  29. package/dist/constants/devicePreviews.js +43 -0
  30. package/dist/constants/devicePreviews.js.map +1 -0
  31. package/dist/constants/themeFonts.d.ts +94 -168
  32. package/dist/constants/themeFonts.d.ts.map +1 -1
  33. package/dist/constants/themeFonts.js +260 -140
  34. package/dist/constants/themeFonts.js.map +1 -1
  35. package/dist/endpoints/themeFonts.d.ts +5 -0
  36. package/dist/endpoints/themeFonts.d.ts.map +1 -0
  37. package/dist/endpoints/themeFonts.js +138 -0
  38. package/dist/endpoints/themeFonts.js.map +1 -0
  39. package/dist/extended-presets.d.ts +0 -4
  40. package/dist/extended-presets.d.ts.map +1 -1
  41. package/dist/extended-presets.js +1 -18
  42. package/dist/extended-presets.js.map +1 -1
  43. package/dist/extended-themes.d.ts.map +1 -1
  44. package/dist/extended-themes.js +428 -0
  45. package/dist/extended-themes.js.map +1 -1
  46. package/dist/fields/AccessibilityAuditField.d.ts +2 -0
  47. package/dist/fields/AccessibilityAuditField.d.ts.map +1 -0
  48. package/dist/fields/AccessibilityAuditField.js +303 -0
  49. package/dist/fields/AccessibilityAuditField.js.map +1 -0
  50. package/dist/fields/AppearancePreviewField.d.ts +2 -0
  51. package/dist/fields/AppearancePreviewField.d.ts.map +1 -0
  52. package/dist/fields/AppearancePreviewField.js +826 -0
  53. package/dist/fields/AppearancePreviewField.js.map +1 -0
  54. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  55. package/dist/fields/ColorPickerField.js +89 -85
  56. package/dist/fields/ColorPickerField.js.map +1 -1
  57. package/dist/fields/FontSelectField.css +155 -0
  58. package/dist/fields/FontSelectField.d.ts +8 -0
  59. package/dist/fields/FontSelectField.d.ts.map +1 -1
  60. package/dist/fields/FontSelectField.js +223 -188
  61. package/dist/fields/FontSelectField.js.map +1 -1
  62. package/dist/fields/PaletteGeneratorField.d.ts +7 -0
  63. package/dist/fields/PaletteGeneratorField.d.ts.map +1 -0
  64. package/dist/fields/PaletteGeneratorField.js +327 -0
  65. package/dist/fields/PaletteGeneratorField.js.map +1 -0
  66. package/dist/fields/StylePresetField.d.ts +3 -0
  67. package/dist/fields/StylePresetField.d.ts.map +1 -0
  68. package/dist/fields/StylePresetField.js +463 -0
  69. package/dist/fields/StylePresetField.js.map +1 -0
  70. package/dist/fields/ThemeColorPickerField.css +115 -35
  71. package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
  72. package/dist/fields/ThemeColorPickerField.js +204 -70
  73. package/dist/fields/ThemeColorPickerField.js.map +1 -1
  74. package/dist/fields/ThemeExportField.d.ts +6 -0
  75. package/dist/fields/ThemeExportField.d.ts.map +1 -0
  76. package/dist/fields/ThemeExportField.js +202 -0
  77. package/dist/fields/ThemeExportField.js.map +1 -0
  78. package/dist/fields/ThemePresetImportField.d.ts.map +1 -1
  79. package/dist/fields/ThemePresetImportField.js +56 -25
  80. package/dist/fields/ThemePresetImportField.js.map +1 -1
  81. package/dist/fields/ThemePreviewField.css +444 -5
  82. package/dist/fields/ThemePreviewField.d.ts.map +1 -1
  83. package/dist/fields/ThemePreviewField.js +265 -170
  84. package/dist/fields/ThemePreviewField.js.map +1 -1
  85. package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
  86. package/dist/fields/ThemeTokenSelectField.js +278 -80
  87. package/dist/fields/ThemeTokenSelectField.js.map +1 -1
  88. package/dist/fields/colorFieldHelpers.d.ts +90 -0
  89. package/dist/fields/colorFieldHelpers.d.ts.map +1 -0
  90. package/dist/fields/colorFieldHelpers.js +133 -0
  91. package/dist/fields/colorFieldHelpers.js.map +1 -0
  92. package/dist/fields/colorModeFields.d.ts +1 -1
  93. package/dist/fields/colorModeFields.d.ts.map +1 -1
  94. package/dist/fields/colorModeFields.js +49 -7
  95. package/dist/fields/colorModeFields.js.map +1 -1
  96. package/dist/fields/themeConfigurationField.d.ts +8 -1
  97. package/dist/fields/themeConfigurationField.d.ts.map +1 -1
  98. package/dist/fields/themeConfigurationField.js +1209 -228
  99. package/dist/fields/themeConfigurationField.js.map +1 -1
  100. package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -1
  101. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +8 -4
  102. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -1
  103. package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -1
  104. package/dist/globals/ThemeSettings/FontPicker/index.js +81 -26
  105. package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -1
  106. package/dist/globals/ThemeSettings/FontPicker/styles.css +98 -41
  107. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +6 -0
  108. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -1
  109. package/dist/globals/ThemeSettings/FontPicker/translations.js +14 -2
  110. package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -1
  111. package/dist/globals/ThemeSettings/config.d.ts.map +1 -1
  112. package/dist/globals/ThemeSettings/config.js +76 -79
  113. package/dist/globals/ThemeSettings/config.js.map +1 -1
  114. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -1
  115. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +63 -62
  116. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -1
  117. package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -1
  118. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +22 -25
  119. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -1
  120. package/dist/hooks/useAppearanceSession.d.ts +50 -0
  121. package/dist/hooks/useAppearanceSession.d.ts.map +1 -0
  122. package/dist/hooks/useAppearanceSession.js +91 -0
  123. package/dist/hooks/useAppearanceSession.js.map +1 -0
  124. package/dist/hooks/useNativeLivePreview.d.ts +15 -0
  125. package/dist/hooks/useNativeLivePreview.d.ts.map +1 -0
  126. package/dist/hooks/useNativeLivePreview.js +18 -0
  127. package/dist/hooks/useNativeLivePreview.js.map +1 -0
  128. package/dist/hooks/useThemeFonts.d.ts +10 -0
  129. package/dist/hooks/useThemeFonts.d.ts.map +1 -0
  130. package/dist/hooks/useThemeFonts.js +36 -0
  131. package/dist/hooks/useThemeFonts.js.map +1 -0
  132. package/dist/hooks/useThemeTranslations.d.ts +13 -0
  133. package/dist/hooks/useThemeTranslations.d.ts.map +1 -0
  134. package/dist/hooks/useThemeTranslations.js +22 -0
  135. package/dist/hooks/useThemeTranslations.js.map +1 -0
  136. package/dist/i18n.d.ts +53 -0
  137. package/dist/i18n.d.ts.map +1 -0
  138. package/dist/i18n.js +53 -0
  139. package/dist/i18n.js.map +1 -0
  140. package/dist/index.d.ts +13 -4
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +59 -29
  143. package/dist/index.js.map +1 -1
  144. package/dist/next-fonts.d.ts +3 -0
  145. package/dist/next-fonts.d.ts.map +1 -0
  146. package/dist/next-fonts.js +360 -0
  147. package/dist/next-fonts.js.map +1 -0
  148. package/dist/payload-types.d.ts +34 -6
  149. package/dist/payload-types.d.ts.map +1 -1
  150. package/dist/payload-types.js.map +1 -1
  151. package/dist/presets.d.ts +14 -0
  152. package/dist/presets.d.ts.map +1 -1
  153. package/dist/presets.js.map +1 -1
  154. package/dist/providers/Theme/index.d.ts.map +1 -1
  155. package/dist/providers/Theme/index.js +75 -11
  156. package/dist/providers/Theme/index.js.map +1 -1
  157. package/dist/providers/Theme/themeConfig.d.ts.map +1 -1
  158. package/dist/providers/Theme/themeConfig.js +104 -0
  159. package/dist/providers/Theme/themeConfig.js.map +1 -1
  160. package/dist/providers/Theme/types.d.ts +1 -1
  161. package/dist/providers/Theme/types.d.ts.map +1 -1
  162. package/dist/providers/Theme/types.js +10 -1
  163. package/dist/providers/Theme/types.js.map +1 -1
  164. package/dist/style-presets.d.ts +75 -0
  165. package/dist/style-presets.d.ts.map +1 -0
  166. package/dist/style-presets.js +738 -0
  167. package/dist/style-presets.js.map +1 -0
  168. package/dist/translations.d.ts +164 -1
  169. package/dist/translations.d.ts.map +1 -1
  170. package/dist/translations.js +320 -9
  171. package/dist/translations.js.map +1 -1
  172. package/dist/tweakcn-special-themes.d.ts.map +1 -1
  173. package/dist/tweakcn-special-themes.js +585 -9
  174. package/dist/tweakcn-special-themes.js.map +1 -1
  175. package/dist/types/css.d.js +3 -0
  176. package/dist/types/css.d.js.map +1 -0
  177. package/dist/types.d.ts +26 -0
  178. package/dist/types.d.ts.map +1 -1
  179. package/dist/types.js +1 -1
  180. package/dist/types.js.map +1 -1
  181. package/dist/utilities/getThemeSettings.d.ts.map +1 -1
  182. package/dist/utilities/getThemeSettings.js +2 -14
  183. package/dist/utilities/getThemeSettings.js.map +1 -1
  184. package/dist/utils/contrast.d.ts +63 -0
  185. package/dist/utils/contrast.d.ts.map +1 -0
  186. package/dist/utils/contrast.js +158 -0
  187. package/dist/utils/contrast.js.map +1 -0
  188. package/dist/utils/exportTokens.d.ts +30 -0
  189. package/dist/utils/exportTokens.d.ts.map +1 -0
  190. package/dist/utils/exportTokens.js +183 -0
  191. package/dist/utils/exportTokens.js.map +1 -0
  192. package/dist/utils/generatePalette.d.ts +46 -0
  193. package/dist/utils/generatePalette.d.ts.map +1 -0
  194. package/dist/utils/generatePalette.js +127 -0
  195. package/dist/utils/generatePalette.js.map +1 -0
  196. package/dist/utils/generateThemeCSS.d.ts.map +1 -1
  197. package/dist/utils/generateThemeCSS.js +2 -40
  198. package/dist/utils/generateThemeCSS.js.map +1 -1
  199. package/dist/utils/livePreviewThemeRuntime.d.ts +22 -3
  200. package/dist/utils/livePreviewThemeRuntime.d.ts.map +1 -1
  201. package/dist/utils/livePreviewThemeRuntime.js +48 -15
  202. package/dist/utils/livePreviewThemeRuntime.js.map +1 -1
  203. package/dist/utils/localizedText.d.ts +8 -0
  204. package/dist/utils/localizedText.d.ts.map +1 -0
  205. package/dist/utils/localizedText.js +21 -0
  206. package/dist/utils/localizedText.js.map +1 -0
  207. package/dist/utils/resolveThemeConfiguration.d.ts +60 -1
  208. package/dist/utils/resolveThemeConfiguration.d.ts.map +1 -1
  209. package/dist/utils/resolveThemeConfiguration.js +53 -13
  210. package/dist/utils/resolveThemeConfiguration.js.map +1 -1
  211. package/dist/utils/themeColors.d.ts +3 -0
  212. package/dist/utils/themeColors.d.ts.map +1 -1
  213. package/dist/utils/themeColors.js +30 -1
  214. package/dist/utils/themeColors.js.map +1 -1
  215. package/dist/utils/themeHtmlAttributes.d.ts +32 -12
  216. package/dist/utils/themeHtmlAttributes.d.ts.map +1 -1
  217. package/dist/utils/themeHtmlAttributes.js +38 -5
  218. package/dist/utils/themeHtmlAttributes.js.map +1 -1
  219. package/dist/utils/themeUtils.d.ts +3 -5
  220. package/dist/utils/themeUtils.d.ts.map +1 -1
  221. package/dist/utils/themeUtils.js +474 -6
  222. package/dist/utils/themeUtils.js.map +1 -1
  223. package/dist/utils/tweakcnConverter.d.ts +1 -3
  224. package/dist/utils/tweakcnConverter.d.ts.map +1 -1
  225. package/dist/utils/tweakcnConverter.js +1 -3
  226. package/dist/utils/tweakcnConverter.js.map +1 -1
  227. package/package.json +15 -5
  228. package/dist/components/ThemePreview.d.ts +0 -3
  229. package/dist/components/ThemePreview.d.ts.map +0 -1
  230. package/dist/components/ThemePreview.js +0 -321
  231. package/dist/components/ThemePreview.js.map +0 -1
  232. package/dist/plugin.d.ts +0 -2
  233. package/dist/plugin.d.ts.map +0 -1
  234. package/dist/plugin.js +0 -3
  235. package/dist/plugin.js.map +0 -1
@@ -0,0 +1,738 @@
1
+ /**
2
+ * Style presets — define the visual style (type, rhythm, effects, component
3
+ * styles) WITHOUT touching colour palettes.
4
+ *
5
+ * A user can combine any colour preset (ThemePreset) with any style preset
6
+ * (StylePreset). Every value here must be a valid option of the matching admin
7
+ * field (see `themeConfigurationField.ts` and `constants/themeFonts.ts`),
8
+ * otherwise the document cannot be saved — `tests/unit/stylePresets.test.ts`
9
+ * guards this.
10
+ */ const LEGACY_STYLE_VALUES = {
11
+ spacing: {
12
+ spacious: 'comfortable'
13
+ },
14
+ 'typography.baseFontSize': {
15
+ small: '15',
16
+ medium: '16',
17
+ large: '18'
18
+ },
19
+ 'typography.lineHeight': {
20
+ compact: '1.4',
21
+ normal: '1.6',
22
+ relaxed: '1.8'
23
+ },
24
+ 'typography.bodyFont': {
25
+ 'Source Sans Pro': 'Source Sans 3',
26
+ 'Helvetica Neue': 'helvetica'
27
+ },
28
+ 'typography.headingFont': {
29
+ 'Source Sans Pro': 'Source Sans 3',
30
+ 'Helvetica Neue': 'helvetica'
31
+ }
32
+ };
33
+ /** Maps values from older StylePreset definitions onto the current field options. */ export function normalizeStylePresetValue(path, value) {
34
+ return typeof value === 'string' ? LEGACY_STYLE_VALUES[path]?.[value] ?? value : value;
35
+ }
36
+ export const allStylePresets = [
37
+ // ─── Classic styles ───────────────────────────────────────────────────────
38
+ {
39
+ name: 'swiss',
40
+ label: {
41
+ en: 'Swiss / Clean',
42
+ cs: 'Švýcarský / čistý'
43
+ },
44
+ description: {
45
+ en: 'Typographic clarity. Square corners, outlined buttons, strict grid, no decoration.',
46
+ cs: 'Typografická jasnost. Ostré rohy, obrysová tlačítka, přísná mřížka, žádná dekorace.'
47
+ },
48
+ category: 'classic',
49
+ borderRadius: 'none',
50
+ animationLevel: 'reduced',
51
+ spacing: 'comfortable',
52
+ typography: {
53
+ bodyFont: 'helvetica',
54
+ headingFont: 'helvetica',
55
+ baseFontSize: '16',
56
+ lineHeight: '1.5',
57
+ letterSpacing: 'tight',
58
+ headingWeight: '700'
59
+ },
60
+ visualEffects: {
61
+ effectStyle: 'flat',
62
+ shadowIntensity: 'none',
63
+ backdropBlur: 'none',
64
+ borderStyle: 'solid',
65
+ borderWidth: '1px'
66
+ },
67
+ componentStyles: {
68
+ buttonVariant: 'outlined',
69
+ buttonSize: 'medium',
70
+ cardStyle: 'flat',
71
+ cardHoverEffect: 'none',
72
+ navbarStyle: 'minimal',
73
+ footerStyle: 'minimal',
74
+ imageStyle: 'default',
75
+ linkStyle: 'underline'
76
+ }
77
+ },
78
+ {
79
+ name: 'editorial',
80
+ label: {
81
+ en: 'Editorial / Magazine',
82
+ cs: 'Redakční / časopis'
83
+ },
84
+ description: {
85
+ en: 'Serif headings, generous line spacing, ink-on-paper feel. Typography is the hero.',
86
+ cs: 'Patkové nadpisy, velké řádkování, pocit tisku na papíře. Hlavní roli hraje typografie.'
87
+ },
88
+ category: 'classic',
89
+ borderRadius: 'none',
90
+ animationLevel: 'reduced',
91
+ spacing: 'comfortable',
92
+ typography: {
93
+ bodyFont: 'Lora',
94
+ headingFont: 'Playfair Display',
95
+ baseFontSize: '18',
96
+ lineHeight: '1.8',
97
+ letterSpacing: 'tight',
98
+ headingWeight: '700'
99
+ },
100
+ visualEffects: {
101
+ effectStyle: 'flat',
102
+ shadowIntensity: 'none',
103
+ backdropBlur: 'none',
104
+ borderStyle: 'solid',
105
+ borderWidth: '1px'
106
+ },
107
+ componentStyles: {
108
+ buttonVariant: 'outlined',
109
+ buttonSize: 'medium',
110
+ cardStyle: 'flat',
111
+ cardHoverEffect: 'none',
112
+ navbarStyle: 'minimal',
113
+ footerStyle: 'minimal',
114
+ imageStyle: 'default',
115
+ linkStyle: 'underline'
116
+ }
117
+ },
118
+ {
119
+ name: 'luxury',
120
+ label: {
121
+ en: 'Luxury / Boutique',
122
+ cs: 'Luxusní / butik'
123
+ },
124
+ description: {
125
+ en: 'High-contrast display serif, light airy text, wide tracking and black-and-white imagery.',
126
+ cs: 'Kontrastní výrazné patkové písmo, lehký vzdušný text, široké prostrkání a černobílé fotky.'
127
+ },
128
+ category: 'classic',
129
+ borderRadius: 'none',
130
+ animationLevel: 'reduced',
131
+ spacing: 'comfortable',
132
+ typography: {
133
+ bodyFont: 'Manrope',
134
+ headingFont: 'DM Serif Display',
135
+ baseFontSize: '16',
136
+ lineHeight: '1.8',
137
+ letterSpacing: 'wide',
138
+ headingWeight: '400'
139
+ },
140
+ visualEffects: {
141
+ effectStyle: 'flat',
142
+ shadowIntensity: 'none',
143
+ backdropBlur: 'none',
144
+ borderStyle: 'solid',
145
+ borderWidth: '1px'
146
+ },
147
+ componentStyles: {
148
+ buttonVariant: 'outlined',
149
+ buttonSize: 'large',
150
+ cardStyle: 'flat',
151
+ cardHoverEffect: 'none',
152
+ navbarStyle: 'transparent',
153
+ footerStyle: 'dark',
154
+ imageStyle: 'grayscale',
155
+ linkStyle: 'animated'
156
+ }
157
+ },
158
+ {
159
+ name: 'art-deco',
160
+ label: {
161
+ en: 'Art Deco',
162
+ cs: 'Art deco'
163
+ },
164
+ description: {
165
+ en: 'Capitalised serif headings, double rules and a strong vertical rhythm.',
166
+ cs: 'Patkové nadpisy verzálkami, dvojité linky a silný vertikální rytmus.'
167
+ },
168
+ category: 'classic',
169
+ borderRadius: 'none',
170
+ animationLevel: 'reduced',
171
+ spacing: 'comfortable',
172
+ typography: {
173
+ bodyFont: 'Libre Baskerville',
174
+ headingFont: 'Cormorant Garamond',
175
+ baseFontSize: '17',
176
+ lineHeight: '1.7',
177
+ letterSpacing: 'wider',
178
+ headingWeight: '600'
179
+ },
180
+ visualEffects: {
181
+ effectStyle: 'flat',
182
+ shadowIntensity: 'none',
183
+ backdropBlur: 'none',
184
+ borderStyle: 'double',
185
+ borderWidth: '4px'
186
+ },
187
+ componentStyles: {
188
+ buttonVariant: 'outlined',
189
+ buttonSize: 'large',
190
+ cardStyle: 'flat',
191
+ cardHoverEffect: 'none',
192
+ navbarStyle: 'solid',
193
+ footerStyle: 'dark',
194
+ imageStyle: 'vignette',
195
+ linkStyle: 'underline'
196
+ }
197
+ },
198
+ {
199
+ name: 'corporate',
200
+ label: {
201
+ en: 'Corporate / Professional',
202
+ cs: 'Firemní / profesionální'
203
+ },
204
+ description: {
205
+ en: 'Trustworthy and calm. Clean sans-serif, soft shadows, solid buttons.',
206
+ cs: 'Důvěryhodný a klidný. Čisté bezpatkové písmo, jemné stíny, plná tlačítka.'
207
+ },
208
+ category: 'classic',
209
+ borderRadius: 'small',
210
+ animationLevel: 'reduced',
211
+ spacing: 'medium',
212
+ typography: {
213
+ bodyFont: 'Source Sans 3',
214
+ headingFont: 'Source Sans 3',
215
+ baseFontSize: '16',
216
+ lineHeight: '1.6',
217
+ letterSpacing: 'normal',
218
+ headingWeight: '600'
219
+ },
220
+ visualEffects: {
221
+ effectStyle: 'elevated',
222
+ shadowIntensity: 'subtle',
223
+ backdropBlur: 'none',
224
+ borderStyle: 'solid',
225
+ borderWidth: '1px'
226
+ },
227
+ componentStyles: {
228
+ buttonVariant: 'filled',
229
+ buttonSize: 'medium',
230
+ cardStyle: 'elevated',
231
+ cardHoverEffect: 'lift',
232
+ navbarStyle: 'solid',
233
+ footerStyle: 'standard',
234
+ imageStyle: 'rounded',
235
+ linkStyle: 'underline-hover'
236
+ }
237
+ },
238
+ {
239
+ name: 'material',
240
+ label: {
241
+ en: 'Material / Elevated',
242
+ cs: 'Material / vyvýšený'
243
+ },
244
+ description: {
245
+ en: 'Layered surfaces with clear shadows, medium rounding and lively motion.',
246
+ cs: 'Vrstvené plochy s výraznými stíny, středním zaoblením a živým pohybem.'
247
+ },
248
+ category: 'classic',
249
+ borderRadius: 'medium',
250
+ animationLevel: 'high',
251
+ spacing: 'medium',
252
+ typography: {
253
+ bodyFont: 'Roboto',
254
+ headingFont: 'Roboto',
255
+ baseFontSize: '16',
256
+ lineHeight: '1.5',
257
+ letterSpacing: 'normal',
258
+ headingWeight: '500'
259
+ },
260
+ visualEffects: {
261
+ effectStyle: 'elevated',
262
+ shadowIntensity: 'medium',
263
+ backdropBlur: 'none',
264
+ borderStyle: 'none',
265
+ borderWidth: '0px'
266
+ },
267
+ componentStyles: {
268
+ buttonVariant: 'filled',
269
+ buttonSize: 'medium',
270
+ cardStyle: 'elevated',
271
+ cardHoverEffect: 'lift',
272
+ navbarStyle: 'solid',
273
+ footerStyle: 'standard',
274
+ imageStyle: 'rounded',
275
+ linkStyle: 'underline-hover'
276
+ }
277
+ },
278
+ {
279
+ name: 'minimalism',
280
+ label: {
281
+ en: 'Minimalism',
282
+ cs: 'Minimalismus'
283
+ },
284
+ description: {
285
+ en: 'Maximum whitespace, thin headings, ghost buttons. Only what is necessary.',
286
+ cs: 'Maximum volného prostoru, tenké nadpisy, průhledná tlačítka. Jen to nezbytné.'
287
+ },
288
+ category: 'classic',
289
+ borderRadius: 'small',
290
+ animationLevel: 'reduced',
291
+ spacing: 'comfortable',
292
+ typography: {
293
+ bodyFont: 'DM Sans',
294
+ headingFont: 'DM Sans',
295
+ baseFontSize: '17',
296
+ lineHeight: '1.8',
297
+ letterSpacing: 'wide',
298
+ headingWeight: '300'
299
+ },
300
+ visualEffects: {
301
+ effectStyle: 'flat',
302
+ shadowIntensity: 'none',
303
+ backdropBlur: 'none',
304
+ borderStyle: 'solid',
305
+ borderWidth: '1px'
306
+ },
307
+ componentStyles: {
308
+ buttonVariant: 'ghost',
309
+ buttonSize: 'small',
310
+ cardStyle: 'flat',
311
+ cardHoverEffect: 'none',
312
+ navbarStyle: 'minimal',
313
+ footerStyle: 'minimal',
314
+ imageStyle: 'default',
315
+ linkStyle: 'underline'
316
+ }
317
+ },
318
+ {
319
+ name: 'tech',
320
+ label: {
321
+ en: 'Tech / Product',
322
+ cs: 'Tech / produkt'
323
+ },
324
+ description: {
325
+ en: 'Geometric grotesk, tight headings, hairline borders and a glow on hover.',
326
+ cs: 'Geometrický grotesk, sevřené nadpisy, vlasové linky a záře při najetí.'
327
+ },
328
+ category: 'classic',
329
+ borderRadius: 'small',
330
+ animationLevel: 'medium',
331
+ spacing: 'medium',
332
+ typography: {
333
+ bodyFont: 'Inter',
334
+ headingFont: 'Space Grotesk',
335
+ baseFontSize: '16',
336
+ lineHeight: '1.6',
337
+ letterSpacing: 'tight',
338
+ headingWeight: '600'
339
+ },
340
+ visualEffects: {
341
+ effectStyle: 'flat',
342
+ shadowIntensity: 'none',
343
+ backdropBlur: 'medium',
344
+ borderStyle: 'solid',
345
+ borderWidth: '1px'
346
+ },
347
+ componentStyles: {
348
+ buttonVariant: 'filled',
349
+ buttonSize: 'small',
350
+ cardStyle: 'flat',
351
+ cardHoverEffect: 'glow',
352
+ navbarStyle: 'blur',
353
+ footerStyle: 'minimal',
354
+ imageStyle: 'rounded',
355
+ linkStyle: 'animated'
356
+ }
357
+ },
358
+ {
359
+ name: 'poster',
360
+ label: {
361
+ en: 'Bold / Poster',
362
+ cs: 'Výrazný / plakát'
363
+ },
364
+ description: {
365
+ en: 'Huge expressive headings, extra-large buttons and a full-colour footer.',
366
+ cs: 'Velké výrazné nadpisy, extra velká tlačítka a patička v plné barvě.'
367
+ },
368
+ category: 'classic',
369
+ borderRadius: 'medium',
370
+ animationLevel: 'medium',
371
+ spacing: 'comfortable',
372
+ typography: {
373
+ bodyFont: 'Archivo',
374
+ headingFont: 'Syne',
375
+ baseFontSize: '17',
376
+ lineHeight: '1.6',
377
+ letterSpacing: 'tight',
378
+ headingWeight: '800'
379
+ },
380
+ visualEffects: {
381
+ effectStyle: 'flat',
382
+ shadowIntensity: 'none',
383
+ backdropBlur: 'none',
384
+ borderStyle: 'none',
385
+ borderWidth: '0px'
386
+ },
387
+ componentStyles: {
388
+ buttonVariant: 'filled',
389
+ buttonSize: 'xl',
390
+ cardStyle: 'flat',
391
+ cardHoverEffect: 'lift',
392
+ navbarStyle: 'solid',
393
+ footerStyle: 'full-color',
394
+ imageStyle: 'rounded',
395
+ linkStyle: 'highlight'
396
+ }
397
+ },
398
+ {
399
+ name: 'playful',
400
+ label: {
401
+ en: 'Playful / Rounded',
402
+ cs: 'Hravý / zaoblený'
403
+ },
404
+ description: {
405
+ en: 'Bubbly corners, pill buttons, a floating navbar and friendly rounded type.',
406
+ cs: 'Bublinkové rohy, oblá tlačítka, plovoucí navigace a přátelské zaoblené písmo.'
407
+ },
408
+ category: 'classic',
409
+ borderRadius: 'xl',
410
+ animationLevel: 'high',
411
+ spacing: 'medium',
412
+ typography: {
413
+ bodyFont: 'Nunito',
414
+ headingFont: 'Nunito',
415
+ baseFontSize: '17',
416
+ lineHeight: '1.7',
417
+ letterSpacing: 'normal',
418
+ headingWeight: '800'
419
+ },
420
+ visualEffects: {
421
+ effectStyle: 'elevated',
422
+ shadowIntensity: 'medium',
423
+ backdropBlur: 'none',
424
+ borderStyle: 'none',
425
+ borderWidth: '0px'
426
+ },
427
+ componentStyles: {
428
+ buttonVariant: 'pill',
429
+ buttonSize: 'large',
430
+ cardStyle: 'elevated',
431
+ cardHoverEffect: 'scale',
432
+ navbarStyle: 'floating',
433
+ footerStyle: 'full-color',
434
+ imageStyle: 'rounded',
435
+ linkStyle: 'highlight'
436
+ }
437
+ },
438
+ {
439
+ name: 'organic',
440
+ label: {
441
+ en: 'Organic / Nature',
442
+ cs: 'Organický / příroda'
443
+ },
444
+ description: {
445
+ en: 'Soft serif headings, warm spacing, large rounding and a transparent navbar.',
446
+ cs: 'Měkké patkové nadpisy, vzdušné rozestupy, velké zaoblení a průhledná navigace.'
447
+ },
448
+ category: 'classic',
449
+ borderRadius: 'large',
450
+ animationLevel: 'medium',
451
+ spacing: 'comfortable',
452
+ typography: {
453
+ bodyFont: 'Work Sans',
454
+ headingFont: 'Fraunces',
455
+ baseFontSize: '18',
456
+ lineHeight: '1.7',
457
+ letterSpacing: 'tight',
458
+ headingWeight: '500'
459
+ },
460
+ visualEffects: {
461
+ effectStyle: 'flat',
462
+ shadowIntensity: 'subtle',
463
+ backdropBlur: 'none',
464
+ borderStyle: 'none',
465
+ borderWidth: '0px'
466
+ },
467
+ componentStyles: {
468
+ buttonVariant: 'pill',
469
+ buttonSize: 'medium',
470
+ cardStyle: 'flat',
471
+ cardHoverEffect: 'lift',
472
+ navbarStyle: 'transparent',
473
+ footerStyle: 'gradient-top',
474
+ imageStyle: 'rounded',
475
+ linkStyle: 'highlight'
476
+ }
477
+ },
478
+ {
479
+ name: 'brutalism',
480
+ label: {
481
+ en: 'Brutalism',
482
+ cs: 'Brutalismus'
483
+ },
484
+ description: {
485
+ en: 'Raw and loud. Thick borders, hard offset shadows, zero rounding.',
486
+ cs: 'Surový a hlasitý. Silné okraje, tvrdé posunuté stíny, žádné zaoblení.'
487
+ },
488
+ category: 'classic',
489
+ borderRadius: 'none',
490
+ animationLevel: 'none',
491
+ spacing: 'comfortable',
492
+ typography: {
493
+ bodyFont: 'Space Grotesk',
494
+ headingFont: 'Archivo Black',
495
+ baseFontSize: '17',
496
+ lineHeight: '1.5',
497
+ letterSpacing: 'tight',
498
+ headingWeight: '400'
499
+ },
500
+ visualEffects: {
501
+ effectStyle: 'flat',
502
+ shadowIntensity: 'none',
503
+ backdropBlur: 'none',
504
+ borderStyle: 'solid',
505
+ borderWidth: '3px'
506
+ },
507
+ componentStyles: {
508
+ buttonVariant: 'brutal',
509
+ buttonSize: 'large',
510
+ cardStyle: 'bordered',
511
+ cardHoverEffect: 'shadow',
512
+ navbarStyle: 'solid',
513
+ footerStyle: 'dark',
514
+ imageStyle: 'grayscale',
515
+ linkStyle: 'highlight'
516
+ }
517
+ },
518
+ {
519
+ name: 'retro',
520
+ label: {
521
+ en: 'Retro / 90s',
522
+ cs: 'Retro / 90. léta'
523
+ },
524
+ description: {
525
+ en: 'Condensed capital headings, typewriter text, polaroid images and chunky outlines.',
526
+ cs: 'Úzké nadpisy verzálkami, strojopisný text, fotky jako polaroid a silné obrysy.'
527
+ },
528
+ category: 'classic',
529
+ borderRadius: 'none',
530
+ animationLevel: 'medium',
531
+ spacing: 'compact',
532
+ typography: {
533
+ bodyFont: 'IBM Plex Mono',
534
+ headingFont: 'Bebas Neue',
535
+ baseFontSize: '16',
536
+ lineHeight: '1.6',
537
+ letterSpacing: 'wider',
538
+ headingWeight: '400'
539
+ },
540
+ visualEffects: {
541
+ effectStyle: 'flat',
542
+ shadowIntensity: 'none',
543
+ backdropBlur: 'none',
544
+ borderStyle: 'solid',
545
+ borderWidth: '2px'
546
+ },
547
+ componentStyles: {
548
+ buttonVariant: 'brutal',
549
+ buttonSize: 'medium',
550
+ cardStyle: 'bordered',
551
+ cardHoverEffect: 'shadow',
552
+ navbarStyle: 'solid',
553
+ footerStyle: 'full-color',
554
+ imageStyle: 'polaroid',
555
+ linkStyle: 'highlight'
556
+ }
557
+ },
558
+ // ─── Visual effect styles ─────────────────────────────────────────────────
559
+ {
560
+ name: 'glassmorphism',
561
+ label: {
562
+ en: 'Glassmorphism',
563
+ cs: 'Mléčné sklo'
564
+ },
565
+ description: {
566
+ en: 'Frosted glass panels over colour — blur, translucency, soft edges. Best on a vivid background.',
567
+ cs: 'Panely z mléčného skla nad barvou — rozostření, průsvitnost, jemné hrany. Nejlépe na sytém pozadí.'
568
+ },
569
+ category: 'effect',
570
+ borderRadius: 'large',
571
+ animationLevel: 'medium',
572
+ spacing: 'medium',
573
+ typography: {
574
+ bodyFont: 'Inter',
575
+ headingFont: 'Outfit',
576
+ baseFontSize: '16',
577
+ lineHeight: '1.6',
578
+ letterSpacing: 'tight',
579
+ headingWeight: '600'
580
+ },
581
+ visualEffects: {
582
+ effectStyle: 'glass',
583
+ shadowIntensity: 'subtle',
584
+ backdropBlur: 'strong',
585
+ borderStyle: 'solid',
586
+ borderWidth: '1px',
587
+ glassOpacity: 55
588
+ },
589
+ componentStyles: {
590
+ buttonVariant: 'filled',
591
+ buttonSize: 'medium',
592
+ cardStyle: 'glass',
593
+ cardHoverEffect: 'glow',
594
+ navbarStyle: 'blur',
595
+ footerStyle: 'minimal',
596
+ imageStyle: 'rounded',
597
+ linkStyle: 'animated'
598
+ }
599
+ },
600
+ {
601
+ name: 'neumorphism',
602
+ label: {
603
+ en: 'Soft UI',
604
+ cs: 'Měkké UI'
605
+ },
606
+ description: {
607
+ en: 'Elements look pressed out of the background with paired light and dark shadows.',
608
+ cs: 'Prvky vypadají vytlačené z pozadí díky dvojici světlého a tmavého stínu.'
609
+ },
610
+ category: 'effect',
611
+ borderRadius: 'large',
612
+ animationLevel: 'medium',
613
+ spacing: 'medium',
614
+ typography: {
615
+ bodyFont: 'DM Sans',
616
+ headingFont: 'DM Sans',
617
+ baseFontSize: '16',
618
+ lineHeight: '1.6',
619
+ letterSpacing: 'normal',
620
+ headingWeight: '500'
621
+ },
622
+ visualEffects: {
623
+ effectStyle: 'neumorphic',
624
+ shadowIntensity: 'strong',
625
+ backdropBlur: 'none',
626
+ borderStyle: 'none',
627
+ borderWidth: '0px'
628
+ },
629
+ componentStyles: {
630
+ buttonVariant: 'filled',
631
+ buttonSize: 'medium',
632
+ cardStyle: 'neumorphic',
633
+ cardHoverEffect: 'shadow',
634
+ navbarStyle: 'solid',
635
+ footerStyle: 'standard',
636
+ imageStyle: 'rounded',
637
+ linkStyle: 'underline-hover'
638
+ }
639
+ },
640
+ {
641
+ name: 'claymorphism',
642
+ label: {
643
+ en: 'Clay',
644
+ cs: 'Plastelína'
645
+ },
646
+ description: {
647
+ en: 'Soft, inflated 3D clay shapes with large rounding and chunky type.',
648
+ cs: 'Měkké nafouklé 3D tvary jako z plastelíny, velké zaoblení a tučné písmo.'
649
+ },
650
+ category: 'effect',
651
+ borderRadius: 'xl',
652
+ animationLevel: 'high',
653
+ spacing: 'medium',
654
+ typography: {
655
+ bodyFont: 'Nunito',
656
+ headingFont: 'Nunito',
657
+ baseFontSize: '18',
658
+ lineHeight: '1.7',
659
+ letterSpacing: 'normal',
660
+ headingWeight: '800'
661
+ },
662
+ visualEffects: {
663
+ effectStyle: 'clay',
664
+ shadowIntensity: 'strong',
665
+ backdropBlur: 'none',
666
+ borderStyle: 'solid',
667
+ borderWidth: '1px'
668
+ },
669
+ componentStyles: {
670
+ buttonVariant: 'pill',
671
+ buttonSize: 'large',
672
+ cardStyle: 'elevated',
673
+ cardHoverEffect: 'scale',
674
+ navbarStyle: 'floating',
675
+ footerStyle: 'full-color',
676
+ imageStyle: 'rounded',
677
+ linkStyle: 'highlight'
678
+ }
679
+ },
680
+ {
681
+ name: 'gradient-heavy',
682
+ label: {
683
+ en: 'Gradient',
684
+ cs: 'Přechodový'
685
+ },
686
+ description: {
687
+ en: 'The brand gradient leads: gradient buttons, gradient card borders and a glow.',
688
+ cs: 'Hlavní roli hraje brandový přechod: přechodová tlačítka, okraje karet a záře.'
689
+ },
690
+ category: 'effect',
691
+ borderRadius: 'medium',
692
+ animationLevel: 'medium',
693
+ spacing: 'medium',
694
+ typography: {
695
+ bodyFont: 'Inter',
696
+ headingFont: 'Plus Jakarta Sans',
697
+ baseFontSize: '16',
698
+ lineHeight: '1.6',
699
+ letterSpacing: 'tight',
700
+ headingWeight: '800'
701
+ },
702
+ visualEffects: {
703
+ effectStyle: 'elevated',
704
+ shadowIntensity: 'medium',
705
+ backdropBlur: 'medium',
706
+ borderStyle: 'none',
707
+ borderWidth: '0px'
708
+ },
709
+ componentStyles: {
710
+ buttonVariant: 'gradient',
711
+ buttonSize: 'medium',
712
+ cardStyle: 'gradient-border',
713
+ cardHoverEffect: 'glow',
714
+ navbarStyle: 'blur',
715
+ footerStyle: 'gradient-top',
716
+ imageStyle: 'rounded',
717
+ linkStyle: 'animated'
718
+ }
719
+ }
720
+ ];
721
+ export const stylePresetCategories = [
722
+ {
723
+ name: 'classic',
724
+ label: {
725
+ en: 'Styles',
726
+ cs: 'Styly'
727
+ }
728
+ },
729
+ {
730
+ name: 'effect',
731
+ label: {
732
+ en: 'Effect styles',
733
+ cs: 'Styly s efekty'
734
+ }
735
+ }
736
+ ];
737
+
738
+ //# sourceMappingURL=style-presets.js.map