@kilivi/payloadcms-theme-management 0.5.8 → 1.0.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 (57) hide show
  1. package/README.md +531 -40
  2. package/dist/app/api/google-fonts/route.d.ts +31 -0
  3. package/dist/app/api/google-fonts/route.d.ts.map +1 -0
  4. package/dist/app/api/google-fonts/route.js +925 -0
  5. package/dist/app/api/google-fonts/route.js.map +1 -0
  6. package/dist/fields/FontSelectField.js +1 -1
  7. package/dist/fields/FontSelectField.js.map +1 -1
  8. package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
  9. package/dist/fields/ThemeTokenSelectField.js +12 -5
  10. package/dist/fields/ThemeTokenSelectField.js.map +1 -1
  11. package/dist/fields/themeConfigurationField.d.ts.map +1 -1
  12. package/dist/fields/themeConfigurationField.js +25 -15
  13. package/dist/fields/themeConfigurationField.js.map +1 -1
  14. package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts +17 -0
  15. package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -0
  16. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +229 -0
  17. package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -0
  18. package/dist/globals/ThemeSettings/FontPicker/PreviewContent.d.ts +20 -0
  19. package/dist/globals/ThemeSettings/FontPicker/PreviewContent.d.ts.map +1 -0
  20. package/dist/globals/ThemeSettings/FontPicker/PreviewContent.js +400 -0
  21. package/dist/globals/ThemeSettings/FontPicker/PreviewContent.js.map +1 -0
  22. package/dist/globals/ThemeSettings/FontPicker/index.d.ts +25 -0
  23. package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -0
  24. package/dist/globals/ThemeSettings/FontPicker/index.js +483 -0
  25. package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -0
  26. package/dist/globals/ThemeSettings/FontPicker/styles.css +337 -0
  27. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +76 -0
  28. package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -0
  29. package/dist/globals/ThemeSettings/FontPicker/translations.js +147 -0
  30. package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -0
  31. package/dist/globals/ThemeSettings/config.d.ts +10 -0
  32. package/dist/globals/ThemeSettings/config.d.ts.map +1 -0
  33. package/dist/globals/ThemeSettings/config.js +171 -0
  34. package/dist/globals/ThemeSettings/config.js.map +1 -0
  35. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts +5 -0
  36. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -0
  37. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +177 -0
  38. package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -0
  39. package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts +5 -0
  40. package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -0
  41. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +89 -0
  42. package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -0
  43. package/dist/globals/ThemeSettings/index.d.ts +4 -0
  44. package/dist/globals/ThemeSettings/index.d.ts.map +1 -0
  45. package/dist/globals/ThemeSettings/index.js +4 -0
  46. package/dist/globals/ThemeSettings/index.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +119 -20
  49. package/dist/index.js.map +1 -1
  50. package/dist/types.d.ts +9 -1
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js.map +1 -1
  53. package/dist/utilities/getThemeSettings.d.ts +34 -0
  54. package/dist/utilities/getThemeSettings.d.ts.map +1 -0
  55. package/dist/utilities/getThemeSettings.js +67 -0
  56. package/dist/utilities/getThemeSettings.js.map +1 -0
  57. package/package.json +2 -2
@@ -0,0 +1,337 @@
1
+ .font-picker {
2
+ display: flex;
3
+ height: 700px;
4
+ border: 1px solid var(--theme-elevation-300);
5
+ border-radius: 8px;
6
+ overflow: hidden;
7
+ background: var(--theme-elevation-0);
8
+ }
9
+
10
+ /* Preview Panel (Left) */
11
+ .font-picker__preview-panel {
12
+ flex: 1;
13
+ display: flex;
14
+ flex-direction: column;
15
+ border-right: 1px solid var(--theme-elevation-300);
16
+ background: var(--theme-elevation-50);
17
+ }
18
+
19
+ .font-picker__preview-tabs {
20
+ display: flex;
21
+ border-bottom: 1px solid var(--theme-elevation-300);
22
+ background: var(--theme-elevation-0);
23
+ }
24
+
25
+ .font-picker__preview-tab {
26
+ flex: 1;
27
+ padding: 12px 16px;
28
+ background: none;
29
+ border: none;
30
+ border-bottom: 2px solid transparent;
31
+ font-size: 14px;
32
+ font-weight: 500;
33
+ color: var(--theme-elevation-600);
34
+ cursor: pointer;
35
+ transition: all 0.2s ease;
36
+ }
37
+
38
+ .font-picker__preview-tab:hover {
39
+ background: var(--theme-elevation-100);
40
+ color: var(--theme-elevation-900);
41
+ }
42
+
43
+ .font-picker__preview-tab--active {
44
+ color: var(--theme-elevation-900);
45
+ border-bottom-color: var(--theme-elevation-900);
46
+ background: var(--theme-elevation-50);
47
+ }
48
+
49
+ .font-picker__preview-content {
50
+ flex: 1;
51
+ overflow-y: auto;
52
+ background: var(--theme-elevation-0);
53
+ }
54
+
55
+ /* Selection Panel (Right) */
56
+ .font-picker__selection-panel {
57
+ width: 400px;
58
+ display: flex;
59
+ flex-direction: column;
60
+ background: var(--theme-elevation-0);
61
+ }
62
+
63
+ .font-picker__controls {
64
+ padding: 16px;
65
+ border-bottom: 1px solid var(--theme-elevation-300);
66
+ background: var(--theme-elevation-0);
67
+ }
68
+
69
+ .font-picker__search {
70
+ width: 100%;
71
+ padding: 10px 12px;
72
+ border: 1px solid var(--theme-elevation-300);
73
+ border-radius: 6px;
74
+ font-size: 14px;
75
+ margin-bottom: 12px;
76
+ background: var(--theme-elevation-0);
77
+ color: var(--theme-elevation-900);
78
+ }
79
+
80
+ .font-picker__search:focus {
81
+ outline: none;
82
+ border-color: var(--theme-elevation-500);
83
+ box-shadow: 0 0 0 3px var(--theme-elevation-100);
84
+ }
85
+
86
+ .font-picker__search::placeholder {
87
+ color: var(--theme-elevation-500);
88
+ }
89
+
90
+ .font-picker__filters {
91
+ display: flex;
92
+ gap: 8px;
93
+ margin-bottom: 12px;
94
+ }
95
+
96
+ .font-picker__select {
97
+ flex: 1;
98
+ padding: 8px 10px;
99
+ border: 1px solid var(--theme-elevation-300);
100
+ border-radius: 6px;
101
+ font-size: 13px;
102
+ background: var(--theme-elevation-0);
103
+ color: var(--theme-elevation-900);
104
+ cursor: pointer;
105
+ }
106
+
107
+ .font-picker__select:focus {
108
+ outline: none;
109
+ border-color: var(--theme-elevation-500);
110
+ box-shadow: 0 0 0 3px var(--theme-elevation-100);
111
+ }
112
+
113
+ .font-picker__view-toggle {
114
+ display: flex;
115
+ gap: 4px;
116
+ justify-content: center;
117
+ }
118
+
119
+ .font-picker__view-button {
120
+ padding: 8px 12px;
121
+ background: var(--theme-elevation-100);
122
+ border: 1px solid var(--theme-elevation-300);
123
+ border-radius: 6px;
124
+ color: var(--theme-elevation-600);
125
+ cursor: pointer;
126
+ transition: all 0.2s ease;
127
+ }
128
+
129
+ .font-picker__view-button:hover {
130
+ background: var(--theme-elevation-200);
131
+ color: var(--theme-elevation-900);
132
+ }
133
+
134
+ .font-picker__view-button--active {
135
+ background: var(--theme-elevation-900);
136
+ color: var(--theme-elevation-0);
137
+ border-color: var(--theme-elevation-900);
138
+ }
139
+
140
+ .font-picker__view-button svg {
141
+ display: block;
142
+ }
143
+
144
+ .font-picker__list {
145
+ flex: 1;
146
+ overflow-y: auto;
147
+ padding: 8px;
148
+ }
149
+
150
+ .font-picker__list--row .font-picker__item {
151
+ margin-bottom: 4px;
152
+ }
153
+
154
+ .font-picker__list--grid {
155
+ display: grid;
156
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
157
+ gap: 8px;
158
+ }
159
+
160
+ .font-picker__list--grid .font-picker__item {
161
+ flex-direction: column;
162
+ align-items: flex-start;
163
+ padding: 12px;
164
+ }
165
+
166
+ .font-picker__list--grid .font-picker__item-preview {
167
+ width: 100%;
168
+ margin-top: 8px;
169
+ }
170
+
171
+ .font-picker__item {
172
+ display: flex;
173
+ flex-direction: column;
174
+ padding: 12px;
175
+ border: 1px solid var(--theme-elevation-200);
176
+ border-radius: 6px;
177
+ cursor: pointer;
178
+ transition: all 0.2s ease;
179
+ background: var(--theme-elevation-0);
180
+ }
181
+
182
+ .font-picker__item:hover {
183
+ background: var(--theme-elevation-50);
184
+ border-color: var(--theme-elevation-400);
185
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
186
+ }
187
+
188
+ .font-picker__item--selected {
189
+ background: var(--theme-elevation-100);
190
+ border-color: var(--theme-elevation-600);
191
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
192
+ }
193
+
194
+ .font-picker__item-header {
195
+ display: flex;
196
+ align-items: center;
197
+ justify-content: space-between;
198
+ margin-bottom: 8px;
199
+ }
200
+
201
+ .font-picker__item-name {
202
+ font-size: 14px;
203
+ font-weight: 600;
204
+ color: var(--theme-elevation-900);
205
+ }
206
+
207
+ .font-picker__favorite {
208
+ padding: 4px 8px;
209
+ background: none;
210
+ border: none;
211
+ font-size: 18px;
212
+ color: var(--theme-elevation-400);
213
+ cursor: pointer;
214
+ transition: all 0.2s ease;
215
+ }
216
+
217
+ .font-picker__favorite:hover {
218
+ color: var(--theme-elevation-600);
219
+ transform: scale(1.1);
220
+ }
221
+
222
+ .font-picker__favorite--active {
223
+ color: #fbbf24;
224
+ }
225
+
226
+ .font-picker__favorite--active:hover {
227
+ color: #f59e0b;
228
+ }
229
+
230
+ .font-picker__item-preview {
231
+ font-size: 14px;
232
+ color: var(--theme-elevation-700);
233
+ overflow: hidden;
234
+ text-overflow: ellipsis;
235
+ white-space: nowrap;
236
+ }
237
+
238
+ .font-picker__loading {
239
+ padding: 24px;
240
+ text-align: center;
241
+ color: var(--theme-elevation-500);
242
+ font-size: 14px;
243
+ }
244
+
245
+ .font-picker__empty {
246
+ padding: 48px 24px;
247
+ text-align: center;
248
+ color: var(--theme-elevation-500);
249
+ font-size: 14px;
250
+ }
251
+
252
+ /* Responsive adjustments */
253
+ @media (max-width: 1024px) {
254
+ .font-picker {
255
+ flex-direction: column;
256
+ height: auto;
257
+ max-height: 800px;
258
+ }
259
+
260
+ .font-picker__preview-panel {
261
+ border-right: none;
262
+ border-bottom: 1px solid var(--theme-elevation-300);
263
+ min-height: 300px;
264
+ }
265
+
266
+ .font-picker__selection-panel {
267
+ width: 100%;
268
+ }
269
+ }
270
+
271
+ @media (max-width: 768px) {
272
+ .font-picker__preview-tabs {
273
+ overflow-x: auto;
274
+ }
275
+
276
+ .font-picker__preview-tab {
277
+ flex: none;
278
+ min-width: 100px;
279
+ font-size: 13px;
280
+ }
281
+
282
+ .font-picker__controls {
283
+ padding: 12px;
284
+ }
285
+
286
+ .font-picker__filters {
287
+ flex-direction: column;
288
+ }
289
+
290
+ .font-picker__select {
291
+ width: 100%;
292
+ }
293
+
294
+ .font-picker__list--grid {
295
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
296
+ }
297
+ }
298
+
299
+ /* Scrollbar styling */
300
+ .font-picker__preview-content::-webkit-scrollbar,
301
+ .font-picker__list::-webkit-scrollbar {
302
+ width: 8px;
303
+ height: 8px;
304
+ }
305
+
306
+ .font-picker__preview-content::-webkit-scrollbar-track,
307
+ .font-picker__list::-webkit-scrollbar-track {
308
+ background: var(--theme-elevation-100);
309
+ }
310
+
311
+ .font-picker__preview-content::-webkit-scrollbar-thumb,
312
+ .font-picker__list::-webkit-scrollbar-thumb {
313
+ background: var(--theme-elevation-400);
314
+ border-radius: 4px;
315
+ }
316
+
317
+ .font-picker__preview-content::-webkit-scrollbar-thumb:hover,
318
+ .font-picker__list::-webkit-scrollbar-thumb:hover {
319
+ background: var(--theme-elevation-500);
320
+ }
321
+
322
+ /* Animation for font loading */
323
+ @keyframes fadeIn {
324
+ from {
325
+ opacity: 0;
326
+ transform: translateY(10px);
327
+ }
328
+ to {
329
+ opacity: 1;
330
+ transform: translateY(0);
331
+ }
332
+ }
333
+
334
+ /* Apply animation to font items */
335
+ .font-picker__list .font-picker__item {
336
+ animation: fadeIn 0.3s ease;
337
+ }
@@ -0,0 +1,76 @@
1
+ export type Language = 'en' | 'cs';
2
+ export interface Translations {
3
+ search: string;
4
+ category: string;
5
+ subset: string;
6
+ viewMode: string;
7
+ favorites: string;
8
+ allCategories: string;
9
+ allLanguages: string;
10
+ loading: string;
11
+ noFonts: string;
12
+ loadMore: string;
13
+ selectFont: string;
14
+ previewTabs: {
15
+ typography: string;
16
+ blog: string;
17
+ landing: string;
18
+ ui: string;
19
+ };
20
+ categories: {
21
+ all: string;
22
+ 'sans-serif': string;
23
+ serif: string;
24
+ display: string;
25
+ handwriting: string;
26
+ monospace: string;
27
+ };
28
+ subsets: {
29
+ all: string;
30
+ vietnamese: string;
31
+ latin: string;
32
+ 'latin-ext': string;
33
+ cyrillic: string;
34
+ 'cyrillic-ext': string;
35
+ greek: string;
36
+ 'greek-ext': string;
37
+ arabic: string;
38
+ hebrew: string;
39
+ thai: string;
40
+ japanese: string;
41
+ korean: string;
42
+ chinese: string;
43
+ };
44
+ viewModes: {
45
+ row: string;
46
+ grid: string;
47
+ };
48
+ typography: {
49
+ h1: string;
50
+ h2: string;
51
+ h3: string;
52
+ body: string;
53
+ small: string;
54
+ };
55
+ blog: {
56
+ title: string;
57
+ subtitle: string;
58
+ body: string;
59
+ };
60
+ landing: {
61
+ hero: string;
62
+ subheading: string;
63
+ cta: string;
64
+ };
65
+ ui: {
66
+ button: string;
67
+ input: string;
68
+ link: string;
69
+ };
70
+ }
71
+ export declare const translations: Record<Language, Translations>;
72
+ /**
73
+ * Get translations for a specific language
74
+ */
75
+ export declare function getTranslations(lang?: Language): Translations;
76
+ //# sourceMappingURL=translations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../../src/globals/ThemeSettings/FontPicker/translations.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAA;AAElC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE;QACX,UAAU,EAAE,MAAM,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;QACf,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,UAAU,EAAE;QACV,GAAG,EAAE,MAAM,CAAA;QACX,YAAY,EAAE,MAAM,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAA;QACX,UAAU,EAAE,MAAM,CAAA;QAClB,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,UAAU,EAAE;QACV,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;QACV,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,EAAE,EAAE;QACF,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CA6IvD,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,QAAe,GAAG,YAAY,CAEnE"}
@@ -0,0 +1,147 @@
1
+ export const translations = {
2
+ en: {
3
+ search: 'Search fonts...',
4
+ category: 'Category',
5
+ subset: 'Language',
6
+ viewMode: 'View',
7
+ favorites: 'Favorites',
8
+ allCategories: 'All Categories',
9
+ allLanguages: 'All Languages',
10
+ loading: 'Loading fonts...',
11
+ noFonts: 'No fonts found',
12
+ loadMore: 'Load more',
13
+ selectFont: 'Select Font',
14
+ previewTabs: {
15
+ typography: 'Typography',
16
+ blog: 'Blog Post',
17
+ landing: 'Landing Page',
18
+ ui: 'UI Elements'
19
+ },
20
+ categories: {
21
+ all: 'All',
22
+ 'sans-serif': 'Sans Serif',
23
+ serif: 'Serif',
24
+ display: 'Display',
25
+ handwriting: 'Handwriting',
26
+ monospace: 'Monospace'
27
+ },
28
+ subsets: {
29
+ all: 'All Languages',
30
+ vietnamese: '🇻🇳 Vietnamese',
31
+ latin: 'Latin',
32
+ 'latin-ext': 'Latin Extended',
33
+ cyrillic: '🇷🇺 Cyrillic',
34
+ 'cyrillic-ext': 'Cyrillic Extended',
35
+ greek: '🇬🇷 Greek',
36
+ 'greek-ext': 'Greek Extended',
37
+ arabic: '🇸🇦 Arabic',
38
+ hebrew: '🇮🇱 Hebrew',
39
+ thai: '🇹🇭 Thai',
40
+ japanese: '🇯🇵 Japanese',
41
+ korean: '🇰🇷 Korean',
42
+ chinese: '🇨🇳 Chinese'
43
+ },
44
+ viewModes: {
45
+ row: 'Row',
46
+ grid: 'Grid'
47
+ },
48
+ typography: {
49
+ h1: 'The quick brown fox jumps over the lazy dog',
50
+ h2: 'Sphinx of black quartz, judge my vow',
51
+ h3: 'Pack my box with five dozen liquor jugs',
52
+ body: 'The five boxing wizards jump quickly. A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',
53
+ small: 'How vexingly quick daft zebras jump!'
54
+ },
55
+ blog: {
56
+ title: 'The Art of Typography in Modern Web Design',
57
+ subtitle: 'Typography is one of the most important aspects of web design. It affects readability, user experience, and the overall aesthetic of your website.',
58
+ body: 'Good typography makes reading effortless and enjoyable. It guides the reader through your content, creating hierarchy and emphasis where needed. When choosing fonts for your website, consider not just how they look, but how they perform across different devices and screen sizes.'
59
+ },
60
+ landing: {
61
+ hero: 'Transform Your Digital Experience',
62
+ subheading: 'Create stunning websites with beautiful typography',
63
+ cta: 'Get Started'
64
+ },
65
+ ui: {
66
+ button: 'Click Me',
67
+ input: 'Enter text here...',
68
+ link: 'Learn More →'
69
+ }
70
+ },
71
+ cs: {
72
+ search: 'Hledat fonty...',
73
+ category: 'Kategorie',
74
+ subset: 'Jazyk',
75
+ viewMode: 'Zobrazení',
76
+ favorites: 'Oblíbené',
77
+ allCategories: 'Všechny kategorie',
78
+ allLanguages: 'Všechny jazyky',
79
+ loading: 'Načítání fontů...',
80
+ noFonts: 'Žádné fonty nenalezeny',
81
+ loadMore: 'Načíst další',
82
+ selectFont: 'Vybrat font',
83
+ previewTabs: {
84
+ typography: 'Typografie',
85
+ blog: 'Blogový příspěvek',
86
+ landing: 'Landing Page',
87
+ ui: 'UI prvky'
88
+ },
89
+ categories: {
90
+ all: 'Vše',
91
+ 'sans-serif': 'Sans Serif',
92
+ serif: 'Serif',
93
+ display: 'Display',
94
+ handwriting: 'Ručně psané',
95
+ monospace: 'Monospace'
96
+ },
97
+ subsets: {
98
+ all: 'Všechny jazyky',
99
+ vietnamese: '🇻🇳 Vietnamština',
100
+ latin: 'Latinka',
101
+ 'latin-ext': 'Latinka rozšířená',
102
+ cyrillic: '🇷🇺 Cyrilice',
103
+ 'cyrillic-ext': 'Cyrilice rozšířená',
104
+ greek: '🇬🇷 Řečtina',
105
+ 'greek-ext': 'Řečtina rozšířená',
106
+ arabic: '🇸🇦 Arabština',
107
+ hebrew: '🇮🇱 Hebrejština',
108
+ thai: '🇹🇭 Thajština',
109
+ japanese: '🇯🇵 Japonština',
110
+ korean: '🇰🇷 Korejština',
111
+ chinese: '🇨🇳 Čínština'
112
+ },
113
+ viewModes: {
114
+ row: 'Řádky',
115
+ grid: 'Mřížka'
116
+ },
117
+ typography: {
118
+ h1: 'Příliš žluťoučký kůň úpěl ďábelské ódy',
119
+ h2: 'Nechť již hříšné saxofony ďáblů rozzvučí síň úděsnými tóny waltzu',
120
+ h3: 'Zvlášť zákeřný učeň s ďolíčky běží podél zóny úlů',
121
+ body: 'Typografie je umění a technika uspořádání písma tak, aby byl text čitelný, srozumitelný a vizuálně přitažlivý. Dobrá typografie vytváří hierarchii a vede čtenáře obsahem přirozeným způsobem.',
122
+ small: 'Dobrá typografie je neviditelná, špatná typografie je nezapomenutelná.'
123
+ },
124
+ blog: {
125
+ title: 'Umění typografie v moderním webdesignu',
126
+ subtitle: 'Typografie je jedním z nejdůležitějších aspektů webdesignu. Ovlivňuje čitelnost, uživatelskou zkušenost a celkovou estetiku vašich webových stránek.',
127
+ body: 'Dobrá typografie dělá čtení snadným a příjemným. Vede čtenáře vaším obsahem a vytváří hierarchii a důraz tam, kde je to potřeba. Při výběru fontů pro vaše webové stránky zvažte nejen to, jak vypadají, ale také jak fungují na různých zařízeních a velikostech obrazovky.'
128
+ },
129
+ landing: {
130
+ hero: 'Transformujte svůj digitální zážitek',
131
+ subheading: 'Vytvářejte úchvatné webové stránky s krásnou typografií',
132
+ cta: 'Začít'
133
+ },
134
+ ui: {
135
+ button: 'Klikněte sem',
136
+ input: 'Zadejte text...',
137
+ link: 'Zjistit více →'
138
+ }
139
+ }
140
+ };
141
+ /**
142
+ * Get translations for a specific language
143
+ */ export function getTranslations(lang = 'en') {
144
+ return translations[lang] || translations.en;
145
+ }
146
+
147
+ //# sourceMappingURL=translations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/globals/ThemeSettings/FontPicker/translations.ts"],"sourcesContent":["export type Language = 'en' | 'cs'\n\nexport interface Translations {\n search: string\n category: string\n subset: string\n viewMode: string\n favorites: string\n allCategories: string\n allLanguages: string\n loading: string\n noFonts: string\n loadMore: string\n selectFont: string\n previewTabs: {\n typography: string\n blog: string\n landing: string\n ui: string\n }\n categories: {\n all: string\n 'sans-serif': string\n serif: string\n display: string\n handwriting: string\n monospace: string\n }\n subsets: {\n all: string\n vietnamese: string\n latin: string\n 'latin-ext': string\n cyrillic: string\n 'cyrillic-ext': string\n greek: string\n 'greek-ext': string\n arabic: string\n hebrew: string\n thai: string\n japanese: string\n korean: string\n chinese: string\n }\n viewModes: {\n row: string\n grid: string\n }\n typography: {\n h1: string\n h2: string\n h3: string\n body: string\n small: string\n }\n blog: {\n title: string\n subtitle: string\n body: string\n }\n landing: {\n hero: string\n subheading: string\n cta: string\n }\n ui: {\n button: string\n input: string\n link: string\n }\n}\n\nexport const translations: Record<Language, Translations> = {\n en: {\n search: 'Search fonts...',\n category: 'Category',\n subset: 'Language',\n viewMode: 'View',\n favorites: 'Favorites',\n allCategories: 'All Categories',\n allLanguages: 'All Languages',\n loading: 'Loading fonts...',\n noFonts: 'No fonts found',\n loadMore: 'Load more',\n selectFont: 'Select Font',\n previewTabs: {\n typography: 'Typography',\n blog: 'Blog Post',\n landing: 'Landing Page',\n ui: 'UI Elements',\n },\n categories: {\n all: 'All',\n 'sans-serif': 'Sans Serif',\n serif: 'Serif',\n display: 'Display',\n handwriting: 'Handwriting',\n monospace: 'Monospace',\n },\n subsets: {\n all: 'All Languages',\n vietnamese: '🇻🇳 Vietnamese',\n latin: 'Latin',\n 'latin-ext': 'Latin Extended',\n cyrillic: '🇷🇺 Cyrillic',\n 'cyrillic-ext': 'Cyrillic Extended',\n greek: '🇬🇷 Greek',\n 'greek-ext': 'Greek Extended',\n arabic: '🇸🇦 Arabic',\n hebrew: '🇮🇱 Hebrew',\n thai: '🇹🇭 Thai',\n japanese: '🇯🇵 Japanese',\n korean: '🇰🇷 Korean',\n chinese: '🇨🇳 Chinese',\n },\n viewModes: {\n row: 'Row',\n grid: 'Grid',\n },\n typography: {\n h1: 'The quick brown fox jumps over the lazy dog',\n h2: 'Sphinx of black quartz, judge my vow',\n h3: 'Pack my box with five dozen liquor jugs',\n body: 'The five boxing wizards jump quickly. A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n small: 'How vexingly quick daft zebras jump!',\n },\n blog: {\n title: 'The Art of Typography in Modern Web Design',\n subtitle:\n 'Typography is one of the most important aspects of web design. It affects readability, user experience, and the overall aesthetic of your website.',\n body: 'Good typography makes reading effortless and enjoyable. It guides the reader through your content, creating hierarchy and emphasis where needed. When choosing fonts for your website, consider not just how they look, but how they perform across different devices and screen sizes.',\n },\n landing: {\n hero: 'Transform Your Digital Experience',\n subheading: 'Create stunning websites with beautiful typography',\n cta: 'Get Started',\n },\n ui: {\n button: 'Click Me',\n input: 'Enter text here...',\n link: 'Learn More →',\n },\n },\n cs: {\n search: 'Hledat fonty...',\n category: 'Kategorie',\n subset: 'Jazyk',\n viewMode: 'Zobrazení',\n favorites: 'Oblíbené',\n allCategories: 'Všechny kategorie',\n allLanguages: 'Všechny jazyky',\n loading: 'Načítání fontů...',\n noFonts: 'Žádné fonty nenalezeny',\n loadMore: 'Načíst další',\n selectFont: 'Vybrat font',\n previewTabs: {\n typography: 'Typografie',\n blog: 'Blogový příspěvek',\n landing: 'Landing Page',\n ui: 'UI prvky',\n },\n categories: {\n all: 'Vše',\n 'sans-serif': 'Sans Serif',\n serif: 'Serif',\n display: 'Display',\n handwriting: 'Ručně psané',\n monospace: 'Monospace',\n },\n subsets: {\n all: 'Všechny jazyky',\n vietnamese: '🇻🇳 Vietnamština',\n latin: 'Latinka',\n 'latin-ext': 'Latinka rozšířená',\n cyrillic: '🇷🇺 Cyrilice',\n 'cyrillic-ext': 'Cyrilice rozšířená',\n greek: '🇬🇷 Řečtina',\n 'greek-ext': 'Řečtina rozšířená',\n arabic: '🇸🇦 Arabština',\n hebrew: '🇮🇱 Hebrejština',\n thai: '🇹🇭 Thajština',\n japanese: '🇯🇵 Japonština',\n korean: '🇰🇷 Korejština',\n chinese: '🇨🇳 Čínština',\n },\n viewModes: {\n row: 'Řádky',\n grid: 'Mřížka',\n },\n typography: {\n h1: 'Příliš žluťoučký kůň úpěl ďábelské ódy',\n h2: 'Nechť již hříšné saxofony ďáblů rozzvučí síň úděsnými tóny waltzu',\n h3: 'Zvlášť zákeřný učeň s ďolíčky běží podél zóny úlů',\n body: 'Typografie je umění a technika uspořádání písma tak, aby byl text čitelný, srozumitelný a vizuálně přitažlivý. Dobrá typografie vytváří hierarchii a vede čtenáře obsahem přirozeným způsobem.',\n small: 'Dobrá typografie je neviditelná, špatná typografie je nezapomenutelná.',\n },\n blog: {\n title: 'Umění typografie v moderním webdesignu',\n subtitle:\n 'Typografie je jedním z nejdůležitějších aspektů webdesignu. Ovlivňuje čitelnost, uživatelskou zkušenost a celkovou estetiku vašich webových stránek.',\n body: 'Dobrá typografie dělá čtení snadným a příjemným. Vede čtenáře vaším obsahem a vytváří hierarchii a důraz tam, kde je to potřeba. Při výběru fontů pro vaše webové stránky zvažte nejen to, jak vypadají, ale také jak fungují na různých zařízeních a velikostech obrazovky.',\n },\n landing: {\n hero: 'Transformujte svůj digitální zážitek',\n subheading: 'Vytvářejte úchvatné webové stránky s krásnou typografií',\n cta: 'Začít',\n },\n ui: {\n button: 'Klikněte sem',\n input: 'Zadejte text...',\n link: 'Zjistit více →',\n },\n },\n}\n\n/**\n * Get translations for a specific language\n */\nexport function getTranslations(lang: Language = 'en'): Translations {\n return translations[lang] || translations.en\n}\n"],"names":["translations","en","search","category","subset","viewMode","favorites","allCategories","allLanguages","loading","noFonts","loadMore","selectFont","previewTabs","typography","blog","landing","ui","categories","all","serif","display","handwriting","monospace","subsets","vietnamese","latin","cyrillic","greek","arabic","hebrew","thai","japanese","korean","chinese","viewModes","row","grid","h1","h2","h3","body","small","title","subtitle","hero","subheading","cta","button","input","link","cs","getTranslations","lang"],"mappings":"AAwEA,OAAO,MAAMA,eAA+C;IAC1DC,IAAI;QACFC,QAAQ;QACRC,UAAU;QACVC,QAAQ;QACRC,UAAU;QACVC,WAAW;QACXC,eAAe;QACfC,cAAc;QACdC,SAAS;QACTC,SAAS;QACTC,UAAU;QACVC,YAAY;QACZC,aAAa;YACXC,YAAY;YACZC,MAAM;YACNC,SAAS;YACTC,IAAI;QACN;QACAC,YAAY;YACVC,KAAK;YACL,cAAc;YACdC,OAAO;YACPC,SAAS;YACTC,aAAa;YACbC,WAAW;QACb;QACAC,SAAS;YACPL,KAAK;YACLM,YAAY;YACZC,OAAO;YACP,aAAa;YACbC,UAAU;YACV,gBAAgB;YAChBC,OAAO;YACP,aAAa;YACbC,QAAQ;YACRC,QAAQ;YACRC,MAAM;YACNC,UAAU;YACVC,QAAQ;YACRC,SAAS;QACX;QACAC,WAAW;YACTC,KAAK;YACLC,MAAM;QACR;QACAvB,YAAY;YACVwB,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,MAAM;YACNC,OAAO;QACT;QACA3B,MAAM;YACJ4B,OAAO;YACPC,UACE;YACFH,MAAM;QACR;QACAzB,SAAS;YACP6B,MAAM;YACNC,YAAY;YACZC,KAAK;QACP;QACA9B,IAAI;YACF+B,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;IACF;IACAC,IAAI;QACFjD,QAAQ;QACRC,UAAU;QACVC,QAAQ;QACRC,UAAU;QACVC,WAAW;QACXC,eAAe;QACfC,cAAc;QACdC,SAAS;QACTC,SAAS;QACTC,UAAU;QACVC,YAAY;QACZC,aAAa;YACXC,YAAY;YACZC,MAAM;YACNC,SAAS;YACTC,IAAI;QACN;QACAC,YAAY;YACVC,KAAK;YACL,cAAc;YACdC,OAAO;YACPC,SAAS;YACTC,aAAa;YACbC,WAAW;QACb;QACAC,SAAS;YACPL,KAAK;YACLM,YAAY;YACZC,OAAO;YACP,aAAa;YACbC,UAAU;YACV,gBAAgB;YAChBC,OAAO;YACP,aAAa;YACbC,QAAQ;YACRC,QAAQ;YACRC,MAAM;YACNC,UAAU;YACVC,QAAQ;YACRC,SAAS;QACX;QACAC,WAAW;YACTC,KAAK;YACLC,MAAM;QACR;QACAvB,YAAY;YACVwB,IAAI;YACJC,IAAI;YACJC,IAAI;YACJC,MAAM;YACNC,OAAO;QACT;QACA3B,MAAM;YACJ4B,OAAO;YACPC,UACE;YACFH,MAAM;QACR;QACAzB,SAAS;YACP6B,MAAM;YACNC,YAAY;YACZC,KAAK;QACP;QACA9B,IAAI;YACF+B,QAAQ;YACRC,OAAO;YACPC,MAAM;QACR;IACF;AACF,EAAC;AAED;;CAEC,GACD,OAAO,SAASE,gBAAgBC,OAAiB,IAAI;IACnD,OAAOrD,YAAY,CAACqD,KAAK,IAAIrD,aAAaC,EAAE;AAC9C"}
@@ -0,0 +1,10 @@
1
+ import type { GlobalConfig } from 'payload';
2
+ /**
3
+ * ThemeSettings Global Configuration
4
+ *
5
+ * This global stores theme-related settings including:
6
+ * - Active font family (selected via FontPicker)
7
+ * - Google Fonts API key (optional, for extended font library)
8
+ */
9
+ export declare const ThemeSettings: GlobalConfig;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/globals/ThemeSettings/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,YA+G3B,CAAA"}