@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.
- package/README.md +531 -40
- package/dist/app/api/google-fonts/route.d.ts +31 -0
- package/dist/app/api/google-fonts/route.d.ts.map +1 -0
- package/dist/app/api/google-fonts/route.js +925 -0
- package/dist/app/api/google-fonts/route.js.map +1 -0
- package/dist/fields/FontSelectField.js +1 -1
- package/dist/fields/FontSelectField.js.map +1 -1
- package/dist/fields/ThemeTokenSelectField.d.ts.map +1 -1
- package/dist/fields/ThemeTokenSelectField.js +12 -5
- package/dist/fields/ThemeTokenSelectField.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +25 -15
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts +17 -0
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js +229 -0
- package/dist/globals/ThemeSettings/FontPicker/FontPreview.js.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/PreviewContent.d.ts +20 -0
- package/dist/globals/ThemeSettings/FontPicker/PreviewContent.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/PreviewContent.js +400 -0
- package/dist/globals/ThemeSettings/FontPicker/PreviewContent.js.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts +25 -0
- package/dist/globals/ThemeSettings/FontPicker/index.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/index.js +483 -0
- package/dist/globals/ThemeSettings/FontPicker/index.js.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/styles.css +337 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts +76 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.js +147 -0
- package/dist/globals/ThemeSettings/FontPicker/translations.js.map +1 -0
- package/dist/globals/ThemeSettings/config.d.ts +10 -0
- package/dist/globals/ThemeSettings/config.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/config.js +171 -0
- package/dist/globals/ThemeSettings/config.js.map +1 -0
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts +5 -0
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js +177 -0
- package/dist/globals/ThemeSettings/fields/FontLoadingGuideField.js.map +1 -0
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts +5 -0
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js +89 -0
- package/dist/globals/ThemeSettings/fields/TypographyInfoField.js.map +1 -0
- package/dist/globals/ThemeSettings/index.d.ts +4 -0
- package/dist/globals/ThemeSettings/index.d.ts.map +1 -0
- package/dist/globals/ThemeSettings/index.js +4 -0
- package/dist/globals/ThemeSettings/index.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +119 -20
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/getThemeSettings.d.ts +34 -0
- package/dist/utilities/getThemeSettings.d.ts.map +1 -0
- package/dist/utilities/getThemeSettings.js +67 -0
- package/dist/utilities/getThemeSettings.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThemeSettings Global Configuration
|
|
3
|
+
*
|
|
4
|
+
* This global stores theme-related settings including:
|
|
5
|
+
* - Active font family (selected via FontPicker)
|
|
6
|
+
* - Google Fonts API key (optional, for extended font library)
|
|
7
|
+
*/ export const ThemeSettings = {
|
|
8
|
+
slug: 'themeSettings',
|
|
9
|
+
label: 'Theme Settings',
|
|
10
|
+
admin: {
|
|
11
|
+
group: 'Settings'
|
|
12
|
+
},
|
|
13
|
+
access: {
|
|
14
|
+
read: ()=>true,
|
|
15
|
+
update: ({ req })=>{
|
|
16
|
+
// Only admins can update theme settings
|
|
17
|
+
return req.user?.roles?.includes('admin') || false;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
fields: [
|
|
21
|
+
{
|
|
22
|
+
type: 'tabs',
|
|
23
|
+
tabs: [
|
|
24
|
+
{
|
|
25
|
+
label: 'Typography',
|
|
26
|
+
fields: [
|
|
27
|
+
{
|
|
28
|
+
name: 'activeFont',
|
|
29
|
+
type: 'text',
|
|
30
|
+
label: 'Active Font Family',
|
|
31
|
+
defaultValue: 'Inter',
|
|
32
|
+
admin: {
|
|
33
|
+
description: 'The currently active font family for your website',
|
|
34
|
+
components: {
|
|
35
|
+
Field: '@kilivi/payloadcms-theme-management/globals/ThemeSettings/FontPicker'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'googleFontsApiKey',
|
|
41
|
+
type: 'text',
|
|
42
|
+
label: 'Google Fonts API Key',
|
|
43
|
+
admin: {
|
|
44
|
+
description: "Optional: Add your Google Fonts API key to access the full library of 1400+ fonts. Without this, you'll have access to 35 popular fonts.",
|
|
45
|
+
placeholder: 'AIzaSy...'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: 'row',
|
|
50
|
+
fields: [
|
|
51
|
+
{
|
|
52
|
+
name: 'fontWeightHeading',
|
|
53
|
+
type: 'select',
|
|
54
|
+
label: 'Heading Font Weight',
|
|
55
|
+
defaultValue: '700',
|
|
56
|
+
options: [
|
|
57
|
+
{
|
|
58
|
+
label: '100 - Thin',
|
|
59
|
+
value: '100'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
label: '200 - Extra Light',
|
|
63
|
+
value: '200'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: '300 - Light',
|
|
67
|
+
value: '300'
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
label: '400 - Regular',
|
|
71
|
+
value: '400'
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
label: '500 - Medium',
|
|
75
|
+
value: '500'
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: '600 - Semi Bold',
|
|
79
|
+
value: '600'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
label: '700 - Bold',
|
|
83
|
+
value: '700'
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: '800 - Extra Bold',
|
|
87
|
+
value: '800'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: '900 - Black',
|
|
91
|
+
value: '900'
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'fontWeightBody',
|
|
97
|
+
type: 'select',
|
|
98
|
+
label: 'Body Font Weight',
|
|
99
|
+
defaultValue: '400',
|
|
100
|
+
options: [
|
|
101
|
+
{
|
|
102
|
+
label: '100 - Thin',
|
|
103
|
+
value: '100'
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
label: '200 - Extra Light',
|
|
107
|
+
value: '200'
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
label: '300 - Light',
|
|
111
|
+
value: '300'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
label: '400 - Regular',
|
|
115
|
+
value: '400'
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
label: '500 - Medium',
|
|
119
|
+
value: '500'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
label: '600 - Semi Bold',
|
|
123
|
+
value: '600'
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
label: '700 - Bold',
|
|
127
|
+
value: '700'
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
label: '800 - Extra Bold',
|
|
131
|
+
value: '800'
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
label: '900 - Black',
|
|
135
|
+
value: '900'
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'ui',
|
|
143
|
+
name: 'typographyInfo',
|
|
144
|
+
admin: {
|
|
145
|
+
components: {
|
|
146
|
+
Field: '@kilivi/payloadcms-theme-management/globals/ThemeSettings/fields/TypographyInfoField'
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: 'Font Loading',
|
|
154
|
+
fields: [
|
|
155
|
+
{
|
|
156
|
+
type: 'ui',
|
|
157
|
+
name: 'fontLoadingGuide',
|
|
158
|
+
admin: {
|
|
159
|
+
components: {
|
|
160
|
+
Field: '@kilivi/payloadcms-theme-management/globals/ThemeSettings/fields/FontLoadingGuideField'
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/ThemeSettings/config.ts"],"sourcesContent":["import type { GlobalConfig } from 'payload'\n\n/**\n * ThemeSettings Global Configuration\n *\n * This global stores theme-related settings including:\n * - Active font family (selected via FontPicker)\n * - Google Fonts API key (optional, for extended font library)\n */\nexport const ThemeSettings: GlobalConfig = {\n slug: 'themeSettings',\n label: 'Theme Settings',\n admin: {\n group: 'Settings',\n },\n access: {\n read: () => true,\n update: ({ req }) => {\n // Only admins can update theme settings\n return req.user?.roles?.includes('admin') || false\n },\n },\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n label: 'Typography',\n fields: [\n {\n name: 'activeFont',\n type: 'text',\n label: 'Active Font Family',\n defaultValue: 'Inter',\n admin: {\n description: 'The currently active font family for your website',\n components: {\n Field: '@kilivi/payloadcms-theme-management/globals/ThemeSettings/FontPicker',\n },\n },\n },\n {\n name: 'googleFontsApiKey',\n type: 'text',\n label: 'Google Fonts API Key',\n admin: {\n description:\n \"Optional: Add your Google Fonts API key to access the full library of 1400+ fonts. Without this, you'll have access to 35 popular fonts.\",\n placeholder: 'AIzaSy...',\n },\n },\n {\n type: 'row',\n fields: [\n {\n name: 'fontWeightHeading',\n type: 'select',\n label: 'Heading Font Weight',\n defaultValue: '700',\n options: [\n { label: '100 - Thin', value: '100' },\n { label: '200 - Extra Light', value: '200' },\n { label: '300 - Light', value: '300' },\n { label: '400 - Regular', value: '400' },\n { label: '500 - Medium', value: '500' },\n { label: '600 - Semi Bold', value: '600' },\n { label: '700 - Bold', value: '700' },\n { label: '800 - Extra Bold', value: '800' },\n { label: '900 - Black', value: '900' },\n ],\n },\n {\n name: 'fontWeightBody',\n type: 'select',\n label: 'Body Font Weight',\n defaultValue: '400',\n options: [\n { label: '100 - Thin', value: '100' },\n { label: '200 - Extra Light', value: '200' },\n { label: '300 - Light', value: '300' },\n { label: '400 - Regular', value: '400' },\n { label: '500 - Medium', value: '500' },\n { label: '600 - Semi Bold', value: '600' },\n { label: '700 - Bold', value: '700' },\n { label: '800 - Extra Bold', value: '800' },\n { label: '900 - Black', value: '900' },\n ],\n },\n ],\n },\n {\n type: 'ui',\n name: 'typographyInfo',\n admin: {\n components: {\n Field:\n '@kilivi/payloadcms-theme-management/globals/ThemeSettings/fields/TypographyInfoField',\n },\n },\n },\n ],\n },\n {\n label: 'Font Loading',\n fields: [\n {\n type: 'ui',\n name: 'fontLoadingGuide',\n admin: {\n components: {\n Field:\n '@kilivi/payloadcms-theme-management/globals/ThemeSettings/fields/FontLoadingGuideField',\n },\n },\n },\n ],\n },\n ],\n },\n ],\n}\n"],"names":["ThemeSettings","slug","label","admin","group","access","read","update","req","user","roles","includes","fields","type","tabs","name","defaultValue","description","components","Field","placeholder","options","value"],"mappings":"AAEA;;;;;;CAMC,GACD,OAAO,MAAMA,gBAA8B;IACzCC,MAAM;IACNC,OAAO;IACPC,OAAO;QACLC,OAAO;IACT;IACAC,QAAQ;QACNC,MAAM,IAAM;QACZC,QAAQ,CAAC,EAAEC,GAAG,EAAE;YACd,wCAAwC;YACxC,OAAOA,IAAIC,IAAI,EAAEC,OAAOC,SAAS,YAAY;QAC/C;IACF;IACAC,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;gBACJ;oBACEZ,OAAO;oBACPU,QAAQ;wBACN;4BACEG,MAAM;4BACNF,MAAM;4BACNX,OAAO;4BACPc,cAAc;4BACdb,OAAO;gCACLc,aAAa;gCACbC,YAAY;oCACVC,OAAO;gCACT;4BACF;wBACF;wBACA;4BACEJ,MAAM;4BACNF,MAAM;4BACNX,OAAO;4BACPC,OAAO;gCACLc,aACE;gCACFG,aAAa;4BACf;wBACF;wBACA;4BACEP,MAAM;4BACND,QAAQ;gCACN;oCACEG,MAAM;oCACNF,MAAM;oCACNX,OAAO;oCACPc,cAAc;oCACdK,SAAS;wCACP;4CAAEnB,OAAO;4CAAcoB,OAAO;wCAAM;wCACpC;4CAAEpB,OAAO;4CAAqBoB,OAAO;wCAAM;wCAC3C;4CAAEpB,OAAO;4CAAeoB,OAAO;wCAAM;wCACrC;4CAAEpB,OAAO;4CAAiBoB,OAAO;wCAAM;wCACvC;4CAAEpB,OAAO;4CAAgBoB,OAAO;wCAAM;wCACtC;4CAAEpB,OAAO;4CAAmBoB,OAAO;wCAAM;wCACzC;4CAAEpB,OAAO;4CAAcoB,OAAO;wCAAM;wCACpC;4CAAEpB,OAAO;4CAAoBoB,OAAO;wCAAM;wCAC1C;4CAAEpB,OAAO;4CAAeoB,OAAO;wCAAM;qCACtC;gCACH;gCACA;oCACEP,MAAM;oCACNF,MAAM;oCACNX,OAAO;oCACPc,cAAc;oCACdK,SAAS;wCACP;4CAAEnB,OAAO;4CAAcoB,OAAO;wCAAM;wCACpC;4CAAEpB,OAAO;4CAAqBoB,OAAO;wCAAM;wCAC3C;4CAAEpB,OAAO;4CAAeoB,OAAO;wCAAM;wCACrC;4CAAEpB,OAAO;4CAAiBoB,OAAO;wCAAM;wCACvC;4CAAEpB,OAAO;4CAAgBoB,OAAO;wCAAM;wCACtC;4CAAEpB,OAAO;4CAAmBoB,OAAO;wCAAM;wCACzC;4CAAEpB,OAAO;4CAAcoB,OAAO;wCAAM;wCACpC;4CAAEpB,OAAO;4CAAoBoB,OAAO;wCAAM;wCAC1C;4CAAEpB,OAAO;4CAAeoB,OAAO;wCAAM;qCACtC;gCACH;6BACD;wBACH;wBACA;4BACET,MAAM;4BACNE,MAAM;4BACNZ,OAAO;gCACLe,YAAY;oCACVC,OACE;gCACJ;4BACF;wBACF;qBACD;gBACH;gBACA;oBACEjB,OAAO;oBACPU,QAAQ;wBACN;4BACEC,MAAM;4BACNE,MAAM;4BACNZ,OAAO;gCACLe,YAAY;oCACVC,OACE;gCACJ;4BACF;wBACF;qBACD;gBACH;aACD;QACH;KACD;AACH,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FontLoadingGuideField.d.ts","sourceRoot":"","sources":["../../../../src/globals/ThemeSettings/fields/FontLoadingGuideField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmHvD,CAAA;AAED,eAAe,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
const FontLoadingGuideField = ()=>{
|
|
5
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
6
|
+
style: {
|
|
7
|
+
padding: '24px'
|
|
8
|
+
},
|
|
9
|
+
children: [
|
|
10
|
+
/*#__PURE__*/ _jsx("h2", {
|
|
11
|
+
style: {
|
|
12
|
+
marginTop: 0,
|
|
13
|
+
fontSize: '20px',
|
|
14
|
+
fontWeight: 700
|
|
15
|
+
},
|
|
16
|
+
children: "Font Loading Strategy"
|
|
17
|
+
}),
|
|
18
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
19
|
+
style: {
|
|
20
|
+
background: '#eff6ff',
|
|
21
|
+
border: '1px solid #bfdbfe',
|
|
22
|
+
borderRadius: '8px',
|
|
23
|
+
padding: '16px',
|
|
24
|
+
marginBottom: '24px'
|
|
25
|
+
},
|
|
26
|
+
children: [
|
|
27
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
28
|
+
style: {
|
|
29
|
+
margin: '0 0 8px 0',
|
|
30
|
+
fontSize: '16px',
|
|
31
|
+
fontWeight: 600
|
|
32
|
+
},
|
|
33
|
+
children: "📦 Pre-imported Fonts (Optimized)"
|
|
34
|
+
}),
|
|
35
|
+
/*#__PURE__*/ _jsx("p", {
|
|
36
|
+
style: {
|
|
37
|
+
margin: '0 0 12px 0',
|
|
38
|
+
fontSize: '14px',
|
|
39
|
+
lineHeight: '1.6'
|
|
40
|
+
},
|
|
41
|
+
children: "These 8 popular fonts are pre-optimized via next/font/google for zero runtime loading:"
|
|
42
|
+
}),
|
|
43
|
+
/*#__PURE__*/ _jsxs("ul", {
|
|
44
|
+
style: {
|
|
45
|
+
margin: 0,
|
|
46
|
+
paddingLeft: '20px',
|
|
47
|
+
fontSize: '14px'
|
|
48
|
+
},
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ _jsx("li", {
|
|
51
|
+
children: "Inter"
|
|
52
|
+
}),
|
|
53
|
+
/*#__PURE__*/ _jsx("li", {
|
|
54
|
+
children: "Nunito"
|
|
55
|
+
}),
|
|
56
|
+
/*#__PURE__*/ _jsx("li", {
|
|
57
|
+
children: "Montserrat"
|
|
58
|
+
}),
|
|
59
|
+
/*#__PURE__*/ _jsx("li", {
|
|
60
|
+
children: "Manrope"
|
|
61
|
+
}),
|
|
62
|
+
/*#__PURE__*/ _jsx("li", {
|
|
63
|
+
children: "Mulish"
|
|
64
|
+
}),
|
|
65
|
+
/*#__PURE__*/ _jsx("li", {
|
|
66
|
+
children: "Barlow"
|
|
67
|
+
}),
|
|
68
|
+
/*#__PURE__*/ _jsx("li", {
|
|
69
|
+
children: "Raleway"
|
|
70
|
+
}),
|
|
71
|
+
/*#__PURE__*/ _jsx("li", {
|
|
72
|
+
children: "Playfair Display"
|
|
73
|
+
})
|
|
74
|
+
]
|
|
75
|
+
})
|
|
76
|
+
]
|
|
77
|
+
}),
|
|
78
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
79
|
+
style: {
|
|
80
|
+
background: '#fef3c7',
|
|
81
|
+
border: '1px solid #fde68a',
|
|
82
|
+
borderRadius: '8px',
|
|
83
|
+
padding: '16px',
|
|
84
|
+
marginBottom: '24px'
|
|
85
|
+
},
|
|
86
|
+
children: [
|
|
87
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
88
|
+
style: {
|
|
89
|
+
margin: '0 0 8px 0',
|
|
90
|
+
fontSize: '16px',
|
|
91
|
+
fontWeight: 600
|
|
92
|
+
},
|
|
93
|
+
children: "🌐 Dynamic Fonts (Google Fonts CSS)"
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ _jsx("p", {
|
|
96
|
+
style: {
|
|
97
|
+
margin: 0,
|
|
98
|
+
fontSize: '14px',
|
|
99
|
+
lineHeight: '1.6'
|
|
100
|
+
},
|
|
101
|
+
children: "Other fonts are loaded dynamically via Google Fonts CSS link. This provides access to 1400+ fonts but requires runtime loading."
|
|
102
|
+
})
|
|
103
|
+
]
|
|
104
|
+
}),
|
|
105
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
106
|
+
style: {
|
|
107
|
+
fontSize: '16px',
|
|
108
|
+
fontWeight: 600,
|
|
109
|
+
marginBottom: '12px'
|
|
110
|
+
},
|
|
111
|
+
children: "Implementation Example"
|
|
112
|
+
}),
|
|
113
|
+
/*#__PURE__*/ _jsx("pre", {
|
|
114
|
+
style: {
|
|
115
|
+
background: '#1f2937',
|
|
116
|
+
color: '#f9fafb',
|
|
117
|
+
padding: '16px',
|
|
118
|
+
borderRadius: '8px',
|
|
119
|
+
fontSize: '13px',
|
|
120
|
+
overflowX: 'auto',
|
|
121
|
+
lineHeight: '1.6'
|
|
122
|
+
},
|
|
123
|
+
children: `// app/layout.tsx
|
|
124
|
+
import { Inter, Nunito, Montserrat } from 'next/font/google'
|
|
125
|
+
import { getThemeSettings } from '@/utilities/getThemeSettings'
|
|
126
|
+
|
|
127
|
+
const inter = Inter({ subsets: ['latin'], variable: '--font-inter' })
|
|
128
|
+
const nunito = Nunito({ subsets: ['latin'], variable: '--font-nunito' })
|
|
129
|
+
const montserrat = Montserrat({ subsets: ['latin'], variable: '--font-montserrat' })
|
|
130
|
+
|
|
131
|
+
export default async function RootLayout({ children }) {
|
|
132
|
+
const themeSettings = await getThemeSettings()
|
|
133
|
+
const activeFont = themeSettings?.activeFont || 'Inter'
|
|
134
|
+
|
|
135
|
+
const fontMap = {
|
|
136
|
+
'Inter': inter.variable,
|
|
137
|
+
'Nunito': nunito.variable,
|
|
138
|
+
'Montserrat': montserrat.variable,
|
|
139
|
+
// ... other pre-imported fonts
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const selectedFontClass = fontMap[activeFont] || ''
|
|
143
|
+
const isDynamicFont = !selectedFontClass
|
|
144
|
+
|
|
145
|
+
return (
|
|
146
|
+
<html className={selectedFontClass || ''}
|
|
147
|
+
style={isDynamicFont ? {
|
|
148
|
+
'--font-primary': \`'\${activeFont}', sans-serif\`
|
|
149
|
+
} : undefined}>
|
|
150
|
+
<head>
|
|
151
|
+
{isDynamicFont && (
|
|
152
|
+
<>
|
|
153
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
154
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="" />
|
|
155
|
+
<link
|
|
156
|
+
href={\`https://fonts.googleapis.com/css2?family=\${activeFont.replace(' ', '+')}:wght@300;400;500;600;700&display=swap\`}
|
|
157
|
+
rel="stylesheet"
|
|
158
|
+
/>
|
|
159
|
+
</>
|
|
160
|
+
)}
|
|
161
|
+
</head>
|
|
162
|
+
<body className="font-primary">{children}</body>
|
|
163
|
+
</html>
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// CSS
|
|
168
|
+
.font-primary {
|
|
169
|
+
font-family: var(--font-primary, 'Inter', sans-serif);
|
|
170
|
+
}`
|
|
171
|
+
})
|
|
172
|
+
]
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
export default FontLoadingGuideField;
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=FontLoadingGuideField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/globals/ThemeSettings/fields/FontLoadingGuideField.tsx"],"sourcesContent":["'use client'\n\nimport type { UIFieldClientProps } from 'payload'\nimport React from 'react'\n\nconst FontLoadingGuideField: React.FC<UIFieldClientProps> = () => {\n return (\n <div style={{ padding: '24px' }}>\n <h2 style={{ marginTop: 0, fontSize: '20px', fontWeight: 700 }}>Font Loading Strategy</h2>\n\n <div\n style={{\n background: '#eff6ff',\n border: '1px solid #bfdbfe',\n borderRadius: '8px',\n padding: '16px',\n marginBottom: '24px',\n }}\n >\n <h3 style={{ margin: '0 0 8px 0', fontSize: '16px', fontWeight: 600 }}>\n 📦 Pre-imported Fonts (Optimized)\n </h3>\n <p style={{ margin: '0 0 12px 0', fontSize: '14px', lineHeight: '1.6' }}>\n These 8 popular fonts are pre-optimized via next/font/google for zero runtime loading:\n </p>\n <ul style={{ margin: 0, paddingLeft: '20px', fontSize: '14px' }}>\n <li>Inter</li>\n <li>Nunito</li>\n <li>Montserrat</li>\n <li>Manrope</li>\n <li>Mulish</li>\n <li>Barlow</li>\n <li>Raleway</li>\n <li>Playfair Display</li>\n </ul>\n </div>\n\n <div\n style={{\n background: '#fef3c7',\n border: '1px solid #fde68a',\n borderRadius: '8px',\n padding: '16px',\n marginBottom: '24px',\n }}\n >\n <h3 style={{ margin: '0 0 8px 0', fontSize: '16px', fontWeight: 600 }}>\n 🌐 Dynamic Fonts (Google Fonts CSS)\n </h3>\n <p style={{ margin: 0, fontSize: '14px', lineHeight: '1.6' }}>\n Other fonts are loaded dynamically via Google Fonts CSS link. This provides access to\n 1400+ fonts but requires runtime loading.\n </p>\n </div>\n\n <h3 style={{ fontSize: '16px', fontWeight: 600, marginBottom: '12px' }}>\n Implementation Example\n </h3>\n <pre\n style={{\n background: '#1f2937',\n color: '#f9fafb',\n padding: '16px',\n borderRadius: '8px',\n fontSize: '13px',\n overflowX: 'auto',\n lineHeight: '1.6',\n }}\n >\n {`// app/layout.tsx\nimport { Inter, Nunito, Montserrat } from 'next/font/google'\nimport { getThemeSettings } from '@/utilities/getThemeSettings'\n\nconst inter = Inter({ subsets: ['latin'], variable: '--font-inter' })\nconst nunito = Nunito({ subsets: ['latin'], variable: '--font-nunito' })\nconst montserrat = Montserrat({ subsets: ['latin'], variable: '--font-montserrat' })\n\nexport default async function RootLayout({ children }) {\n const themeSettings = await getThemeSettings()\n const activeFont = themeSettings?.activeFont || 'Inter'\n \n const fontMap = {\n 'Inter': inter.variable,\n 'Nunito': nunito.variable,\n 'Montserrat': montserrat.variable,\n // ... other pre-imported fonts\n }\n \n const selectedFontClass = fontMap[activeFont] || ''\n const isDynamicFont = !selectedFontClass\n \n return (\n <html className={selectedFontClass || ''} \n style={isDynamicFont ? {\n '--font-primary': \\`'\\${activeFont}', sans-serif\\`\n } : undefined}>\n <head>\n {isDynamicFont && (\n <>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossOrigin=\"\" />\n <link \n href={\\`https://fonts.googleapis.com/css2?family=\\${activeFont.replace(' ', '+')}:wght@300;400;500;600;700&display=swap\\`}\n rel=\"stylesheet\" \n />\n </>\n )}\n </head>\n <body className=\"font-primary\">{children}</body>\n </html>\n )\n}\n\n// CSS\n.font-primary {\n font-family: var(--font-primary, 'Inter', sans-serif);\n}`}\n </pre>\n </div>\n )\n}\n\nexport default FontLoadingGuideField\n"],"names":["React","FontLoadingGuideField","div","style","padding","h2","marginTop","fontSize","fontWeight","background","border","borderRadius","marginBottom","h3","margin","p","lineHeight","ul","paddingLeft","li","pre","color","overflowX"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAEzB,MAAMC,wBAAsD;IAC1D,qBACE,MAACC;QAAIC,OAAO;YAAEC,SAAS;QAAO;;0BAC5B,KAACC;gBAAGF,OAAO;oBAAEG,WAAW;oBAAGC,UAAU;oBAAQC,YAAY;gBAAI;0BAAG;;0BAEhE,MAACN;gBACCC,OAAO;oBACLM,YAAY;oBACZC,QAAQ;oBACRC,cAAc;oBACdP,SAAS;oBACTQ,cAAc;gBAChB;;kCAEA,KAACC;wBAAGV,OAAO;4BAAEW,QAAQ;4BAAaP,UAAU;4BAAQC,YAAY;wBAAI;kCAAG;;kCAGvE,KAACO;wBAAEZ,OAAO;4BAAEW,QAAQ;4BAAcP,UAAU;4BAAQS,YAAY;wBAAM;kCAAG;;kCAGzE,MAACC;wBAAGd,OAAO;4BAAEW,QAAQ;4BAAGI,aAAa;4BAAQX,UAAU;wBAAO;;0CAC5D,KAACY;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;0CACJ,KAACA;0CAAG;;;;;;0BAIR,MAACjB;gBACCC,OAAO;oBACLM,YAAY;oBACZC,QAAQ;oBACRC,cAAc;oBACdP,SAAS;oBACTQ,cAAc;gBAChB;;kCAEA,KAACC;wBAAGV,OAAO;4BAAEW,QAAQ;4BAAaP,UAAU;4BAAQC,YAAY;wBAAI;kCAAG;;kCAGvE,KAACO;wBAAEZ,OAAO;4BAAEW,QAAQ;4BAAGP,UAAU;4BAAQS,YAAY;wBAAM;kCAAG;;;;0BAMhE,KAACH;gBAAGV,OAAO;oBAAEI,UAAU;oBAAQC,YAAY;oBAAKI,cAAc;gBAAO;0BAAG;;0BAGxE,KAACQ;gBACCjB,OAAO;oBACLM,YAAY;oBACZY,OAAO;oBACPjB,SAAS;oBACTO,cAAc;oBACdJ,UAAU;oBACVe,WAAW;oBACXN,YAAY;gBACd;0BAEC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CT,CAAC;;;;AAIF;AAEA,eAAef,sBAAqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypographyInfoField.d.ts","sourceRoot":"","sources":["../../../../src/globals/ThemeSettings/fields/TypographyInfoField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2DrD,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
const TypographyInfoField = ()=>{
|
|
5
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
6
|
+
style: {
|
|
7
|
+
padding: '16px',
|
|
8
|
+
background: '#f3f4f6',
|
|
9
|
+
border: '1px solid #e5e7eb',
|
|
10
|
+
borderRadius: '8px',
|
|
11
|
+
marginTop: '16px'
|
|
12
|
+
},
|
|
13
|
+
children: [
|
|
14
|
+
/*#__PURE__*/ _jsx("h3", {
|
|
15
|
+
style: {
|
|
16
|
+
margin: '0 0 8px 0',
|
|
17
|
+
fontSize: '14px',
|
|
18
|
+
fontWeight: 600
|
|
19
|
+
},
|
|
20
|
+
children: "How to Use Selected Font"
|
|
21
|
+
}),
|
|
22
|
+
/*#__PURE__*/ _jsx("p", {
|
|
23
|
+
style: {
|
|
24
|
+
margin: '0 0 12px 0',
|
|
25
|
+
fontSize: '13px',
|
|
26
|
+
lineHeight: '1.6'
|
|
27
|
+
},
|
|
28
|
+
children: "After selecting a font, you need to load it in your frontend application. Here are the recommended approaches:"
|
|
29
|
+
}),
|
|
30
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
31
|
+
style: {
|
|
32
|
+
marginBottom: '12px'
|
|
33
|
+
},
|
|
34
|
+
children: [
|
|
35
|
+
/*#__PURE__*/ _jsx("strong", {
|
|
36
|
+
style: {
|
|
37
|
+
fontSize: '13px'
|
|
38
|
+
},
|
|
39
|
+
children: "Option 1: next/font/google (Recommended)"
|
|
40
|
+
}),
|
|
41
|
+
/*#__PURE__*/ _jsx("pre", {
|
|
42
|
+
style: {
|
|
43
|
+
background: '#1f2937',
|
|
44
|
+
color: '#f9fafb',
|
|
45
|
+
padding: '12px',
|
|
46
|
+
borderRadius: '6px',
|
|
47
|
+
fontSize: '12px',
|
|
48
|
+
marginTop: '8px',
|
|
49
|
+
overflowX: 'auto'
|
|
50
|
+
},
|
|
51
|
+
children: `import { Inter } from 'next/font/google'
|
|
52
|
+
|
|
53
|
+
const inter = Inter({ subsets: ['latin'] })
|
|
54
|
+
|
|
55
|
+
<html className={inter.variable}>
|
|
56
|
+
<body className="font-primary">...</body>
|
|
57
|
+
</html>`
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
}),
|
|
61
|
+
/*#__PURE__*/ _jsxs("div", {
|
|
62
|
+
children: [
|
|
63
|
+
/*#__PURE__*/ _jsx("strong", {
|
|
64
|
+
style: {
|
|
65
|
+
fontSize: '13px'
|
|
66
|
+
},
|
|
67
|
+
children: "Option 2: Google Fonts CSS Link"
|
|
68
|
+
}),
|
|
69
|
+
/*#__PURE__*/ _jsx("pre", {
|
|
70
|
+
style: {
|
|
71
|
+
background: '#1f2937',
|
|
72
|
+
color: '#f9fafb',
|
|
73
|
+
padding: '12px',
|
|
74
|
+
borderRadius: '6px',
|
|
75
|
+
fontSize: '12px',
|
|
76
|
+
marginTop: '8px',
|
|
77
|
+
overflowX: 'auto'
|
|
78
|
+
},
|
|
79
|
+
children: `<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
80
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" rel="stylesheet">`
|
|
81
|
+
})
|
|
82
|
+
]
|
|
83
|
+
})
|
|
84
|
+
]
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
export default TypographyInfoField;
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=TypographyInfoField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/globals/ThemeSettings/fields/TypographyInfoField.tsx"],"sourcesContent":["'use client'\n\nimport type { UIFieldClientProps } from 'payload'\nimport React from 'react'\n\nconst TypographyInfoField: React.FC<UIFieldClientProps> = () => {\n return (\n <div\n style={{\n padding: '16px',\n background: '#f3f4f6',\n border: '1px solid #e5e7eb',\n borderRadius: '8px',\n marginTop: '16px',\n }}\n >\n <h3 style={{ margin: '0 0 8px 0', fontSize: '14px', fontWeight: 600 }}>\n How to Use Selected Font\n </h3>\n <p style={{ margin: '0 0 12px 0', fontSize: '13px', lineHeight: '1.6' }}>\n After selecting a font, you need to load it in your frontend application. Here are the\n recommended approaches:\n </p>\n <div style={{ marginBottom: '12px' }}>\n <strong style={{ fontSize: '13px' }}>Option 1: next/font/google (Recommended)</strong>\n <pre\n style={{\n background: '#1f2937',\n color: '#f9fafb',\n padding: '12px',\n borderRadius: '6px',\n fontSize: '12px',\n marginTop: '8px',\n overflowX: 'auto',\n }}\n >\n {`import { Inter } from 'next/font/google'\n\nconst inter = Inter({ subsets: ['latin'] })\n\n<html className={inter.variable}>\n <body className=\"font-primary\">...</body>\n</html>`}\n </pre>\n </div>\n <div>\n <strong style={{ fontSize: '13px' }}>Option 2: Google Fonts CSS Link</strong>\n <pre\n style={{\n background: '#1f2937',\n color: '#f9fafb',\n padding: '12px',\n borderRadius: '6px',\n fontSize: '12px',\n marginTop: '8px',\n overflowX: 'auto',\n }}\n >\n {`<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\" rel=\"stylesheet\">`}\n </pre>\n </div>\n </div>\n )\n}\n\nexport default TypographyInfoField\n"],"names":["React","TypographyInfoField","div","style","padding","background","border","borderRadius","marginTop","h3","margin","fontSize","fontWeight","p","lineHeight","marginBottom","strong","pre","color","overflowX"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAEzB,MAAMC,sBAAoD;IACxD,qBACE,MAACC;QACCC,OAAO;YACLC,SAAS;YACTC,YAAY;YACZC,QAAQ;YACRC,cAAc;YACdC,WAAW;QACb;;0BAEA,KAACC;gBAAGN,OAAO;oBAAEO,QAAQ;oBAAaC,UAAU;oBAAQC,YAAY;gBAAI;0BAAG;;0BAGvE,KAACC;gBAAEV,OAAO;oBAAEO,QAAQ;oBAAcC,UAAU;oBAAQG,YAAY;gBAAM;0BAAG;;0BAIzE,MAACZ;gBAAIC,OAAO;oBAAEY,cAAc;gBAAO;;kCACjC,KAACC;wBAAOb,OAAO;4BAAEQ,UAAU;wBAAO;kCAAG;;kCACrC,KAACM;wBACCd,OAAO;4BACLE,YAAY;4BACZa,OAAO;4BACPd,SAAS;4BACTG,cAAc;4BACdI,UAAU;4BACVH,WAAW;4BACXW,WAAW;wBACb;kCAEC,CAAC;;;;;;OAML,CAAC;;;;0BAGF,MAACjB;;kCACC,KAACc;wBAAOb,OAAO;4BAAEQ,UAAU;wBAAO;kCAAG;;kCACrC,KAACM;wBACCd,OAAO;4BACLE,YAAY;4BACZa,OAAO;4BACPd,SAAS;4BACTG,cAAc;4BACdI,UAAU;4BACVH,WAAW;4BACXW,WAAW;wBACb;kCAEC,CAAC;uGAC2F,CAAC;;;;;;AAKxG;AAEA,eAAelB,oBAAmB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/globals/ThemeSettings/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/ThemeSettings/index.ts"],"sourcesContent":["export { ThemeSettings } from './config'\nexport { default as FontPicker } from './FontPicker'\nexport type { FontPickerProps } from './FontPicker'\n"],"names":["ThemeSettings","default","FontPicker"],"mappings":"AAAA,SAASA,aAAa,QAAQ,WAAU;AACxC,SAASC,WAAWC,UAAU,QAAQ,eAAc"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,MAAM,EAAa,MAAM,SAAS,CAAA;AAGjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AA6F9F,eAAO,MAAM,qBAAqB,GAAI,UAAS,4BAAiC,KAAG,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,MAAM,EAAa,MAAM,SAAS,CAAA;AAGjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C,OAAO,KAAK,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AA6F9F,eAAO,MAAM,qBAAqB,GAAI,UAAS,4BAAiC,KAAG,MA6JlF,CAAA;AAED,KAAK,iBAAiB,GAAG,MAAM,GAAG,8BAA8B,CAAA;AAEhE,eAAO,MAAM,uBAAuB,GAClC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CA0EvC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,KAAG,WAAW,GAAG,IAEhE,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,WAAW,EAEtD,CAAA;AAED,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACtE,YAAY,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AACnE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,sCAAsC,CAAA;AAC7C,YAAY,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAA;AACtF,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAGvE,OAAO,EACL,gBAAgB,IAAI,iBAAiB,EACrC,oBAAoB,GACrB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEhF,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG1D,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,eAAe,GAChB,MAAM,4BAA4B,CAAA;AAMnC,eAAO,MAAM,qBAAqB,aAzSa,4BAA4B,KAAQ,MAySzB,CAAA;AAC1D,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,aA3SU,4BAA4B,KAAQ,MA2StB,CAAA;AAE7D,eAAe,qBAAqB,CAAA"}
|