@tamagui/web 3.3.1 → 3.3.2
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/dist/cjs/createTamagui.cjs +1 -1
- package/dist/cjs/createTamagui.native.cjs +1 -1
- package/dist/cjs/createTamagui.native.js +1 -1
- package/dist/cjs/createTamagui.native.js.map +1 -1
- package/dist/cjs/helpers/createDesignSystem.cjs +16 -9
- package/dist/cjs/helpers/createDesignSystem.native.cjs +43 -6
- package/dist/cjs/helpers/createDesignSystem.native.js +43 -6
- package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/cjs/helpers/getThemeCSSRules.cjs +19 -3
- package/dist/cjs/helpers/getThemeCSSRules.native.cjs +5 -1
- package/dist/cjs/helpers/getThemeCSSRules.native.js +5 -1
- package/dist/cjs/helpers/getThemeCSSRules.native.js.map +1 -1
- package/dist/cjs/helpers/insertStyleRule.cjs +6 -0
- package/dist/esm/createTamagui.mjs +1 -1
- package/dist/esm/createTamagui.mjs.map +1 -1
- package/dist/esm/createTamagui.native.js +1 -1
- package/dist/esm/createTamagui.native.js.map +1 -1
- package/dist/esm/helpers/createDesignSystem.mjs +17 -10
- package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
- package/dist/esm/helpers/createDesignSystem.native.js +44 -7
- package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
- package/dist/esm/helpers/getThemeCSSRules.mjs +16 -3
- package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
- package/dist/esm/helpers/getThemeCSSRules.native.js +2 -1
- package/dist/esm/helpers/getThemeCSSRules.native.js.map +1 -1
- package/dist/esm/helpers/insertStyleRule.mjs +6 -0
- package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
- package/package.json +18 -18
- package/src/createTamagui.ts +1 -1
- package/src/helpers/createDesignSystem.ts +16 -2
- package/src/helpers/getThemeCSSRules.native.ts +2 -0
- package/src/helpers/getThemeCSSRules.ts +34 -13
- package/src/helpers/insertStyleRule.tsx +11 -1
- package/types/helpers/createDesignSystem.d.ts +1 -1
- package/types/helpers/createDesignSystem.d.ts.map +1 -1
- package/types/helpers/getThemeCSSRules.d.ts +3 -1
- package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
- package/types/helpers/getThemeCSSRules.native.d.ts +1 -0
- package/types/helpers/getThemeCSSRules.native.d.ts.map +1 -1
- package/types/helpers/insertStyleRule.d.ts.map +1 -1
package/src/createTamagui.ts
CHANGED
|
@@ -246,7 +246,7 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
|
|
|
246
246
|
themes,
|
|
247
247
|
cssRuleSets,
|
|
248
248
|
getThemeRulesSets() {
|
|
249
|
-
return createThemeCSS(dedupedThemes, configIn)
|
|
249
|
+
return createThemeCSS(dedupedThemes, configIn, tokensParsed.color)
|
|
250
250
|
},
|
|
251
251
|
}
|
|
252
252
|
})()
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from './registerCSSVariable'
|
|
9
9
|
import { getConfigMaybe } from '../config'
|
|
10
10
|
import { htmlResetCSS } from '../dom/htmlReset'
|
|
11
|
-
import { getThemeCSSRules } from './getThemeCSSRules'
|
|
11
|
+
import { getSharedThemeCSSRule, getThemeCSSRules } from './getThemeCSSRules'
|
|
12
12
|
import { getAllRules, wrapStyleRules } from './insertStyleRule'
|
|
13
13
|
|
|
14
14
|
const isProd = process.env.NODE_ENV === 'production'
|
|
@@ -149,18 +149,32 @@ export function buildCSSRuleSets(
|
|
|
149
149
|
*/
|
|
150
150
|
export function createThemeCSS(
|
|
151
151
|
dedupedThemes: Array<{ names: string[]; theme: any }>,
|
|
152
|
-
configIn: CreateTamaguiProps
|
|
152
|
+
configIn: CreateTamaguiProps,
|
|
153
|
+
colorTokens: Record<string, Variable> = {}
|
|
153
154
|
): string[] {
|
|
154
155
|
if (!process.env.TAMAGUI_DID_OUTPUT_CSS) {
|
|
155
156
|
let themeRuleSets: string[] = []
|
|
156
157
|
|
|
157
158
|
if (isWeb) {
|
|
159
|
+
// a color token alias is shared only when no theme overrides it, so a
|
|
160
|
+
// nested theme that re-declares the token default can never be shadowed
|
|
161
|
+
// by a parent theme's override
|
|
162
|
+
const sharedKeys = new Set(dedupedThemes.length ? Object.keys(colorTokens) : [])
|
|
163
|
+
for (const { theme } of dedupedThemes) {
|
|
164
|
+
for (const key of sharedKeys) {
|
|
165
|
+
if (theme[key]?.val !== colorTokens[key].val) sharedKeys.delete(key)
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const sharedRule = getSharedThemeCSSRule(colorTokens, sharedKeys)
|
|
169
|
+
if (sharedRule) themeRuleSets.push(sharedRule)
|
|
170
|
+
|
|
158
171
|
for (const { names, theme } of dedupedThemes) {
|
|
159
172
|
const nextRules = getThemeCSSRules({
|
|
160
173
|
config: configIn,
|
|
161
174
|
themeName: names[0],
|
|
162
175
|
names,
|
|
163
176
|
theme,
|
|
177
|
+
sharedKeys,
|
|
164
178
|
})
|
|
165
179
|
themeRuleSets = [...themeRuleSets, ...nextRules]
|
|
166
180
|
}
|
|
@@ -12,6 +12,35 @@ const isProd = process.env.NODE_ENV === 'production'
|
|
|
12
12
|
const darkLight = ['dark', 'light']
|
|
13
13
|
const lightDark = ['light', 'dark']
|
|
14
14
|
|
|
15
|
+
// empty when CSS was already extracted at build time, and on native
|
|
16
|
+
const shouldBuildThemeCSS = () =>
|
|
17
|
+
!process.env.TAMAGUI_DID_OUTPUT_CSS &&
|
|
18
|
+
process.env.TAMAGUI_TARGET !== 'native' &&
|
|
19
|
+
(!process.env.TAMAGUI_DOES_SSR_CSS ||
|
|
20
|
+
process.env.TAMAGUI_DOES_SSR_CSS === 'mutates-themes' ||
|
|
21
|
+
process.env.TAMAGUI_DOES_SSR_CSS === 'false')
|
|
22
|
+
|
|
23
|
+
const themeVarName = (themeKey: string) =>
|
|
24
|
+
`--${process.env.TAMAGUI_CSS_VARIABLE_PREFIX || ''}${simpleHash(themeKey, 40)}`
|
|
25
|
+
|
|
26
|
+
// color token aliases that every theme leaves at the token's own value are
|
|
27
|
+
// declared once on the root instead of in every theme rule. the selector keeps
|
|
28
|
+
// the .tm_xxt marker so a client rebuilding themes from css recognizes the rule.
|
|
29
|
+
export function getSharedThemeCSSRule(
|
|
30
|
+
colorTokens: Record<string, Variable>,
|
|
31
|
+
keys: Iterable<string>
|
|
32
|
+
): string | undefined {
|
|
33
|
+
if (!shouldBuildThemeCSS()) return
|
|
34
|
+
let vars = ''
|
|
35
|
+
for (const key of keys) {
|
|
36
|
+
const token = colorTokens[key]
|
|
37
|
+
vars += `${themeVarName(key)}:${getOrCreateVariable(token.val).variable};`
|
|
38
|
+
}
|
|
39
|
+
if (!vars) return
|
|
40
|
+
const whitespace = !isProd && process.env.NODE_ENV === 'development' ? ' ' : ''
|
|
41
|
+
return `:root, .tm_xxt${whitespace}{${vars}}`
|
|
42
|
+
}
|
|
43
|
+
|
|
15
44
|
export function getThemeCSSRules(props: {
|
|
16
45
|
config: CreateTamaguiProps
|
|
17
46
|
themeName: string
|
|
@@ -20,16 +49,10 @@ export function getThemeCSSRules(props: {
|
|
|
20
49
|
hasDarkLight?: boolean
|
|
21
50
|
// Use mutated variable prefix (mt) instead of regular (t) - for dynamic theme mutation
|
|
22
51
|
useMutatedVariables?: boolean
|
|
52
|
+
// theme keys declared by the shared root rule instead of this theme's rule
|
|
53
|
+
sharedKeys?: Set<string>
|
|
23
54
|
}): string[] {
|
|
24
|
-
if (
|
|
25
|
-
// empty - CSS already extracted at build time
|
|
26
|
-
} else if (process.env.TAMAGUI_TARGET === 'native') {
|
|
27
|
-
// no CSS on native
|
|
28
|
-
} else if (
|
|
29
|
-
!process.env.TAMAGUI_DOES_SSR_CSS ||
|
|
30
|
-
process.env.TAMAGUI_DOES_SSR_CSS === 'mutates-themes' ||
|
|
31
|
-
process.env.TAMAGUI_DOES_SSR_CSS === 'false'
|
|
32
|
-
) {
|
|
55
|
+
if (shouldBuildThemeCSS()) {
|
|
33
56
|
const cssRuleSets: string[] = []
|
|
34
57
|
const { config, themeName, theme, names } = props
|
|
35
58
|
const whitespace = !isProd && process.env.NODE_ENV === 'development' ? ' ' : ''
|
|
@@ -49,6 +72,7 @@ export function getThemeCSSRules(props: {
|
|
|
49
72
|
: getOrCreateVariable
|
|
50
73
|
|
|
51
74
|
for (const themeKey in theme) {
|
|
75
|
+
if (props.sharedKeys?.has(themeKey)) continue
|
|
52
76
|
const variable = theme[themeKey] as Variable
|
|
53
77
|
// needsPx values (px() config variables, "Npx" theme strings) must keep
|
|
54
78
|
// their unit in CSS while staying numeric for native
|
|
@@ -56,10 +80,7 @@ export function getThemeCSSRules(props: {
|
|
|
56
80
|
variable.needsPx ? `${variable.val}px` : variable.val
|
|
57
81
|
).variable
|
|
58
82
|
// Hash themeKey in case it has invalid chars too
|
|
59
|
-
vars +=
|
|
60
|
-
themeKey,
|
|
61
|
-
40
|
|
62
|
-
)}:${value};`
|
|
83
|
+
vars += `${themeVarName(themeKey)}:${value};`
|
|
63
84
|
}
|
|
64
85
|
|
|
65
86
|
const isDarkBase = themeName === 'dark'
|
|
@@ -228,8 +228,15 @@ function addThemesFromCSS(cssStyleRule: CSSStyleRule, tokens?: TokensParsed) {
|
|
|
228
228
|
|
|
229
229
|
const rules = rulesWithBraces.split(';')
|
|
230
230
|
|
|
231
|
-
// get theme object parsed
|
|
231
|
+
// get theme object parsed. color token aliases no theme overrides live in a
|
|
232
|
+
// shared root rule, so every theme starts from the token defaults
|
|
232
233
|
const values: ThemeParsed = {}
|
|
234
|
+
for (const key in tokens?.color) {
|
|
235
|
+
values[key] = createVariable(
|
|
236
|
+
{ key, name: key, val: tokens.color[key].val },
|
|
237
|
+
true
|
|
238
|
+
) as any
|
|
239
|
+
}
|
|
233
240
|
// build values first
|
|
234
241
|
for (const rule of rules) {
|
|
235
242
|
const sepI = rule.indexOf(':')
|
|
@@ -279,6 +286,9 @@ function addThemesFromCSS(cssStyleRule: CSSStyleRule, tokens?: TokensParsed) {
|
|
|
279
286
|
if (themeName) names.add(themeName)
|
|
280
287
|
}
|
|
281
288
|
|
|
289
|
+
// the shared root rule names no theme
|
|
290
|
+
if (!names.size) return
|
|
291
|
+
|
|
282
292
|
return {
|
|
283
293
|
names: [...names],
|
|
284
294
|
theme: values,
|
|
@@ -31,7 +31,7 @@ export declare function buildCSSRuleSets(declarations: string[], fontDeclaration
|
|
|
31
31
|
export declare function createThemeCSS(dedupedThemes: Array<{
|
|
32
32
|
names: string[];
|
|
33
33
|
theme: any;
|
|
34
|
-
}>, configIn: CreateTamaguiProps): string[];
|
|
34
|
+
}>, configIn: CreateTamaguiProps, colorTokens?: Record<string, Variable>): string[];
|
|
35
35
|
/**
|
|
36
36
|
* Everything `getCSS` emits ahead of the runtime rules. It is a pure function of
|
|
37
37
|
* the config, so a per-config slot holds it across calls and SSR stops
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDesignSystem.d.ts","sourceRoot":"","sources":["../../src/helpers/createDesignSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAc5D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAChD,4BAA4B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAC1D,MAAM,EAAE,CAuBV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC5C,qBAAqB,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,MAAM,EAAE,GACnD,MAAM,CACP,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAAE,CAC7E,CAyBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,CACtB,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAAE,CAC7E,EACD,gBAAgB,SAAK,GACpB,MAAM,EAAE,CA+CV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,EACrD,QAAQ,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"createDesignSystem.d.ts","sourceRoot":"","sources":["../../src/helpers/createDesignSystem.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAc5D,KAAK,WAAW,GAAG;IACjB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,EAAE,MAAM,MAAM,EAAE,CAAA;CAClC,CAAA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,EAChD,4BAA4B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,GAC1D,MAAM,EAAE,CAuBV;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EAC5C,qBAAqB,EAAE,CAAC,UAAU,EAAE,GAAG,KAAK,MAAM,EAAE,GACnD,MAAM,CACP,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAAE,CAC7E,CAyBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,CACtB,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAAE,CAC7E,EACD,gBAAgB,SAAK,GACpB,MAAM,EAAE,CA+CV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,aAAa,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,EACrD,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAM,GACzC,MAAM,EAAE,CAgCV;AAED;;;;;;;GAOG;AACH,KAAK,SAAS,GAAG;IACf,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAA;IACf,uEAAuE;IACvE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CACzB,CAAA;AA0FD;;GAEG;AACH,wBAAgB,MAAM,CACpB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,GAAG,IAAI,CAAA;CACrD,YAAK,EACN,KAAK,EAAE,WAAW,GACjB,MAAM,CAwBR"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { CreateTamaguiProps, ThemeParsed } from '../types';
|
|
1
|
+
import type { CreateTamaguiProps, ThemeParsed, Variable } from '../types';
|
|
2
|
+
export declare function getSharedThemeCSSRule(colorTokens: Record<string, Variable>, keys: Iterable<string>): string | undefined;
|
|
2
3
|
export declare function getThemeCSSRules(props: {
|
|
3
4
|
config: CreateTamaguiProps;
|
|
4
5
|
themeName: string;
|
|
@@ -6,5 +7,6 @@ export declare function getThemeCSSRules(props: {
|
|
|
6
7
|
names: string[];
|
|
7
8
|
hasDarkLight?: boolean;
|
|
8
9
|
useMutatedVariables?: boolean;
|
|
10
|
+
sharedKeys?: Set<string>;
|
|
9
11
|
}): string[];
|
|
10
12
|
//# sourceMappingURL=getThemeCSSRules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAwBzE,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EACrC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrB,MAAM,GAAG,SAAS,CAUpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACzB,GAAG,MAAM,EAAE,CA8MX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getThemeCSSRules.native.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.native.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,YAE/B"}
|
|
1
|
+
{"version":3,"file":"getThemeCSSRules.native.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.native.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,YAE/B;AAED,wBAAgB,qBAAqB,SAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insertStyleRule.d.ts","sourceRoot":"","sources":["../../src/helpers/insertStyleRule.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAYjB,eAAO,MAAM,eAAe,8BAAqB,CAAA;AACjD,eAAO,MAAM,qBAAqB,eAAgB,MAAM,aAA4B,CAAA;AAMpF,eAAO,MAAM,WAAW,gBAWvB,CAAA;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAcD,wBAAgB,aAAa,CAC3B,aAAa,UAAQ,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CAmC3B;
|
|
1
|
+
{"version":3,"file":"insertStyleRule.d.ts","sourceRoot":"","sources":["../../src/helpers/insertStyleRule.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EAEb,YAAY,EACb,MAAM,UAAU,CAAA;AAYjB,eAAO,MAAM,eAAe,8BAAqB,CAAA;AACjD,eAAO,MAAM,qBAAqB,eAAgB,MAAM,aAA4B,CAAA;AAMpF,eAAO,MAAM,WAAW,gBAWvB,CAAA;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAcD,wBAAgB,aAAa,CAC3B,aAAa,UAAQ,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,aAAa,GAAG,SAAS,CAmC3B;AAwMD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB7E;AAsCD,wBAAgB,qBAAqB,eAOpC;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAO9D;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,QAEjC;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,QAqE5D;AAUD,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,WAcxD"}
|