@multiplatform.one/theme 7.49.3 → 7.50.1
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/package.json +5 -5
- package/src/theme/Surface.tsx +19 -4
- package/src/theme/controlTiers.ts +55 -0
- package/src/theme/index.ts +1 -0
- package/types/theme/Surface.d.ts +13 -3
- package/types/theme/Surface.d.ts.map +1 -1
- package/types/theme/controlTiers.d.ts +35 -0
- package/types/theme/controlTiers.d.ts.map +1 -0
- package/types/theme/index.d.ts +1 -0
- package/types/theme/index.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/theme",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.50.1",
|
|
4
4
|
"description": "Tamagui theme system for multiplatform.one",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"multiplatform",
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@multiplatform.one/platform": "^7.
|
|
76
|
-
"@multiplatform.one/store": "^7.
|
|
75
|
+
"@multiplatform.one/platform": "^7.50.1",
|
|
76
|
+
"@multiplatform.one/store": "^7.50.1",
|
|
77
77
|
"@tamagui/animations-react-native": "2.7.6",
|
|
78
78
|
"@tamagui/colors": "2.7.6",
|
|
79
79
|
"@tamagui/config": "2.7.6",
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
},
|
|
90
90
|
"devDependencies": {
|
|
91
91
|
"@expo/prebuild-config": "55.0.18",
|
|
92
|
-
"@multiplatform.one/config": "7.
|
|
93
|
-
"@multiplatform.one/test-utils": "7.
|
|
92
|
+
"@multiplatform.one/config": "7.50.1",
|
|
93
|
+
"@multiplatform.one/test-utils": "7.50.1",
|
|
94
94
|
"@tamagui/animations-css": "2.7.6",
|
|
95
95
|
"@tamagui/animations-reanimated": "2.7.6",
|
|
96
96
|
"@tamagui/font-inter": "2.7.6",
|
package/src/theme/Surface.tsx
CHANGED
|
@@ -9,14 +9,24 @@ export type SurfaceSize = SizeTokens | "unset";
|
|
|
9
9
|
* `painted`: an ancestor already paints a surface box (Card, Panel), so a
|
|
10
10
|
* surface under it draws border only and no second shadow. Overlays (dialog,
|
|
11
11
|
* popover, sheet, menu, tooltip, toast) reset it: they float over the page.
|
|
12
|
+
*
|
|
13
|
+
* `bar`: the subtree is a bar (nav bar, page-head actions, toolbar), so its
|
|
14
|
+
* neutral buttons take the plain tier (LC-153). Any explicit `painted` (a
|
|
15
|
+
* card or an overlay) resets it: content inside them is content again.
|
|
12
16
|
*/
|
|
13
|
-
export type SurfaceIntent = { size: SurfaceSize; painted: boolean };
|
|
17
|
+
export type SurfaceIntent = { size: SurfaceSize; painted: boolean; bar: boolean };
|
|
14
18
|
|
|
15
19
|
export const SurfaceContext = createStyledContext<SurfaceIntent>({
|
|
16
20
|
size: "unset",
|
|
17
21
|
painted: false,
|
|
22
|
+
bar: false,
|
|
18
23
|
});
|
|
19
24
|
|
|
25
|
+
/** True inside a bar (LC-153): neutral buttons there are plain, not tinted. */
|
|
26
|
+
export function useBarSurface(): boolean {
|
|
27
|
+
return SurfaceContext.useStyledContext().bar ?? false;
|
|
28
|
+
}
|
|
29
|
+
|
|
20
30
|
const sizeKeyRank = new Map<string, number>(SIZE_KEYS.map((key, index) => [key, index]));
|
|
21
31
|
sizeKeyRank.set("$true", sizeKeyRank.get("$4") ?? 0);
|
|
22
32
|
|
|
@@ -93,8 +103,10 @@ export function clampSurfaceSize(requested: SurfaceSize, parent: SurfaceSize): S
|
|
|
93
103
|
* Forwards a size token to a subtree: every knob reader under it renders its
|
|
94
104
|
* controls at `size` unless it asks for a smaller one (LC-78 ceiling).
|
|
95
105
|
* `painted` marks (true) or resets (false) the painted-ancestor flag; omitted
|
|
96
|
-
* inherits it.
|
|
97
|
-
*
|
|
106
|
+
* inherits it. `bar` marks a bar subtree (LC-153); omitted, it inherits unless
|
|
107
|
+
* `painted` is given, which resets it. Either way a painted value opens a new
|
|
108
|
+
* surface with its own inset, so the page gutter does not reach inside it
|
|
109
|
+
* (LC-146).
|
|
98
110
|
*
|
|
99
111
|
* @example A table cell's editors at the row's control height
|
|
100
112
|
* <Surface size="$3">{cell}</Surface>
|
|
@@ -102,17 +114,20 @@ export function clampSurfaceSize(requested: SurfaceSize, parent: SurfaceSize): S
|
|
|
102
114
|
export function Surface({
|
|
103
115
|
size,
|
|
104
116
|
painted,
|
|
117
|
+
bar,
|
|
105
118
|
children,
|
|
106
119
|
}: {
|
|
107
120
|
size?: SizeTokens;
|
|
108
121
|
painted?: boolean;
|
|
122
|
+
bar?: boolean;
|
|
109
123
|
children?: ReactNode;
|
|
110
124
|
}) {
|
|
111
125
|
const parent = SurfaceContext.useStyledContext();
|
|
112
126
|
const nextSize = clampSurfaceSize(size ?? "unset", parent.size);
|
|
113
127
|
const nextPainted = painted ?? parent.painted ?? false;
|
|
128
|
+
const nextBar = bar ?? (painted === undefined ? (parent.bar ?? false) : false);
|
|
114
129
|
return (
|
|
115
|
-
<SurfaceContext.Provider size={nextSize} painted={nextPainted}>
|
|
130
|
+
<SurfaceContext.Provider size={nextSize} painted={nextPainted} bar={nextBar}>
|
|
116
131
|
{painted === undefined ? children : <PageGutter inset={null}>{children}</PageGutter>}
|
|
117
132
|
</SurfaceContext.Provider>
|
|
118
133
|
);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-153 CONTROL-TIERS. A neutral button (no accent, no intent, not
|
|
3
|
+
* chromeless, not grouped) paints one of two tiers, decided by where it sits:
|
|
4
|
+
*
|
|
5
|
+
* - `tinted`, in content: a filled wash with no edge, the preset's radius and
|
|
6
|
+
* the size token's height. Light washes at `$color3` (#ededed on the stock
|
|
7
|
+
* ramp), dark one step further up at `$color4`, because dark `$color3` sits
|
|
8
|
+
* a single lightness point off the page and the button would vanish.
|
|
9
|
+
* - `plain`, inside a bar (`useBarSurface()`): ink only at rest, the tinted
|
|
10
|
+
* wash on hover and press. The bar's position carries the affordance.
|
|
11
|
+
*
|
|
12
|
+
* Disabled, both tiers drain the fill to transparent and set the ink on
|
|
13
|
+
* `$color9`, which clears AA on the page in both schemes on the stock ramp;
|
|
14
|
+
* the tinted tier keeps LC-40's `$color6` edge so the drained box still reads
|
|
15
|
+
* as a control.
|
|
16
|
+
*/
|
|
17
|
+
export type ControlTier = "tinted" | "plain";
|
|
18
|
+
|
|
19
|
+
export interface ControlTierPaint {
|
|
20
|
+
rest: string;
|
|
21
|
+
hover: string;
|
|
22
|
+
press: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const lightWash: ControlTierPaint = { rest: "$color3", hover: "$color4", press: "$color5" };
|
|
26
|
+
const darkWash: ControlTierPaint = { rest: "$color4", hover: "$color5", press: "$color6" };
|
|
27
|
+
|
|
28
|
+
/** The tinted wash for a scheme: rest, hover and press fills. */
|
|
29
|
+
export function controlTierWash(dark: boolean): ControlTierPaint {
|
|
30
|
+
return dark ? darkWash : lightWash;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Rest, hover and press fills for a tier in a scheme. */
|
|
34
|
+
export function controlTierPaint(tier: ControlTier, dark: boolean): ControlTierPaint {
|
|
35
|
+
const wash = controlTierWash(dark);
|
|
36
|
+
return tier === "plain" ? { rest: "transparent", hover: wash.rest, press: wash.hover } : wash;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** LC-153 disabled look for either tier (fill drained, AA ink). */
|
|
40
|
+
export function controlTierDisabled(tier: ControlTier): {
|
|
41
|
+
backgroundColor: string;
|
|
42
|
+
borderColor: string;
|
|
43
|
+
color: string;
|
|
44
|
+
} {
|
|
45
|
+
return {
|
|
46
|
+
backgroundColor: "transparent",
|
|
47
|
+
borderColor: tier === "tinted" ? "$color6" : "transparent",
|
|
48
|
+
color: "$color9",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** True for a dark scheme theme name ("dark", "dark_accent", "dark_orange_Button"). */
|
|
53
|
+
export function isDarkThemeName(name: string | undefined | null): boolean {
|
|
54
|
+
return typeof name === "string" && (name === "dark" || name.startsWith("dark_"));
|
|
55
|
+
}
|
package/src/theme/index.ts
CHANGED
package/types/theme/Surface.d.ts
CHANGED
|
@@ -6,12 +6,19 @@ export type SurfaceSize = SizeTokens | "unset";
|
|
|
6
6
|
* `painted`: an ancestor already paints a surface box (Card, Panel), so a
|
|
7
7
|
* surface under it draws border only and no second shadow. Overlays (dialog,
|
|
8
8
|
* popover, sheet, menu, tooltip, toast) reset it: they float over the page.
|
|
9
|
+
*
|
|
10
|
+
* `bar`: the subtree is a bar (nav bar, page-head actions, toolbar), so its
|
|
11
|
+
* neutral buttons take the plain tier (LC-153). Any explicit `painted` (a
|
|
12
|
+
* card or an overlay) resets it: content inside them is content again.
|
|
9
13
|
*/
|
|
10
14
|
export type SurfaceIntent = {
|
|
11
15
|
size: SurfaceSize;
|
|
12
16
|
painted: boolean;
|
|
17
|
+
bar: boolean;
|
|
13
18
|
};
|
|
14
19
|
export declare const SurfaceContext: import("@tamagui/web").StyledContext<SurfaceIntent>;
|
|
20
|
+
/** True inside a bar (LC-153): neutral buttons there are plain, not tinted. */
|
|
21
|
+
export declare function useBarSurface(): boolean;
|
|
15
22
|
/**
|
|
16
23
|
* Rank of a size key on the scale's sorted `$size` ladder (`$true` ranks
|
|
17
24
|
* with `$4`). Undefined for anything that is not a size key.
|
|
@@ -55,15 +62,18 @@ export declare function clampSurfaceSize(requested: SurfaceSize, parent: Surface
|
|
|
55
62
|
* Forwards a size token to a subtree: every knob reader under it renders its
|
|
56
63
|
* controls at `size` unless it asks for a smaller one (LC-78 ceiling).
|
|
57
64
|
* `painted` marks (true) or resets (false) the painted-ancestor flag; omitted
|
|
58
|
-
* inherits it.
|
|
59
|
-
*
|
|
65
|
+
* inherits it. `bar` marks a bar subtree (LC-153); omitted, it inherits unless
|
|
66
|
+
* `painted` is given, which resets it. Either way a painted value opens a new
|
|
67
|
+
* surface with its own inset, so the page gutter does not reach inside it
|
|
68
|
+
* (LC-146).
|
|
60
69
|
*
|
|
61
70
|
* @example A table cell's editors at the row's control height
|
|
62
71
|
* <Surface size="$3">{cell}</Surface>
|
|
63
72
|
*/
|
|
64
|
-
export declare function Surface({ size, painted, children, }: {
|
|
73
|
+
export declare function Surface({ size, painted, bar, children, }: {
|
|
65
74
|
size?: SizeTokens;
|
|
66
75
|
painted?: boolean;
|
|
76
|
+
bar?: boolean;
|
|
67
77
|
children?: ReactNode;
|
|
68
78
|
}): import("react/jsx-runtime").JSX.Element;
|
|
69
79
|
//# sourceMappingURL=Surface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../src/theme/Surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAI/D,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAC/C
|
|
1
|
+
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../src/theme/Surface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAI/D,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAC/C;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;AAElF,eAAO,MAAM,cAAc,qDAIzB,CAAC;AAEH,+EAA+E;AAC/E,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAI1F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAG3F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,CAKpE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAQzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,OAAO,EACP,GAAG,EACH,QAAQ,GACT,EAAE;IACD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAUA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LC-153 CONTROL-TIERS. A neutral button (no accent, no intent, not
|
|
3
|
+
* chromeless, not grouped) paints one of two tiers, decided by where it sits:
|
|
4
|
+
*
|
|
5
|
+
* - `tinted`, in content: a filled wash with no edge, the preset's radius and
|
|
6
|
+
* the size token's height. Light washes at `$color3` (#ededed on the stock
|
|
7
|
+
* ramp), dark one step further up at `$color4`, because dark `$color3` sits
|
|
8
|
+
* a single lightness point off the page and the button would vanish.
|
|
9
|
+
* - `plain`, inside a bar (`useBarSurface()`): ink only at rest, the tinted
|
|
10
|
+
* wash on hover and press. The bar's position carries the affordance.
|
|
11
|
+
*
|
|
12
|
+
* Disabled, both tiers drain the fill to transparent and set the ink on
|
|
13
|
+
* `$color9`, which clears AA on the page in both schemes on the stock ramp;
|
|
14
|
+
* the tinted tier keeps LC-40's `$color6` edge so the drained box still reads
|
|
15
|
+
* as a control.
|
|
16
|
+
*/
|
|
17
|
+
export type ControlTier = "tinted" | "plain";
|
|
18
|
+
export interface ControlTierPaint {
|
|
19
|
+
rest: string;
|
|
20
|
+
hover: string;
|
|
21
|
+
press: string;
|
|
22
|
+
}
|
|
23
|
+
/** The tinted wash for a scheme: rest, hover and press fills. */
|
|
24
|
+
export declare function controlTierWash(dark: boolean): ControlTierPaint;
|
|
25
|
+
/** Rest, hover and press fills for a tier in a scheme. */
|
|
26
|
+
export declare function controlTierPaint(tier: ControlTier, dark: boolean): ControlTierPaint;
|
|
27
|
+
/** LC-153 disabled look for either tier (fill drained, AA ink). */
|
|
28
|
+
export declare function controlTierDisabled(tier: ControlTier): {
|
|
29
|
+
backgroundColor: string;
|
|
30
|
+
borderColor: string;
|
|
31
|
+
color: string;
|
|
32
|
+
};
|
|
33
|
+
/** True for a dark scheme theme name ("dark", "dark_accent", "dark_orange_Button"). */
|
|
34
|
+
export declare function isDarkThemeName(name: string | undefined | null): boolean;
|
|
35
|
+
//# sourceMappingURL=controlTiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlTiers.d.ts","sourceRoot":"","sources":["../../src/theme/controlTiers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAE/D;AAED,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAGnF;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAMA;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAExE"}
|
package/types/theme/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,eAAe,IAAI,kBAAkB,EACrC,kBAAkB,EAClB,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjF,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAElC,cAAc,UAAU,CAAC;AACzB,OAAO,EACL,eAAe,IAAI,kBAAkB,EACrC,kBAAkB,EAClB,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,cAAc,YAAY,CAAC"}
|