@tamagui/button 1.143.0 → 2.0.0-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.
@@ -1,39 +1,31 @@
1
1
  import { getFontSize } from "@tamagui/font-size";
2
2
  import { getButtonSized } from "@tamagui/get-button-sized";
3
- import { withStaticProperties } from "@tamagui/helpers";
4
- import { useGetThemedIcon } from "@tamagui/helpers-tamagui";
5
- import { ButtonNestingContext, ThemeableStack } from "@tamagui/stacks";
3
+ import { ButtonNestingContext, getElevation, themeableVariants } from "@tamagui/stacks";
6
4
  import { SizableText, wrapChildrenInText } from "@tamagui/text";
7
5
  import {
8
6
  createStyledContext,
9
- getVariableValue,
10
- spacedChildren,
7
+ getTokenValue,
11
8
  styled,
12
- useProps
9
+ useProps,
10
+ View,
11
+ withStaticProperties
13
12
  } from "@tamagui/web";
14
13
  import { useContext } from "react";
15
- import { jsx } from "react/jsx-runtime";
16
- const ButtonContext = createStyledContext({
17
- // keeping these here means they work with styled() passing down color to text
18
- color: void 0,
19
- ellipse: void 0,
20
- fontFamily: void 0,
21
- fontSize: void 0,
22
- fontStyle: void 0,
23
- fontWeight: void 0,
24
- letterSpacing: void 0,
25
- maxFontSizeMultiplier: void 0,
14
+ import { useGetIcon } from "@tamagui/helpers-tamagui";
15
+ import { jsx, jsxs } from "react/jsx-runtime";
16
+ const context = createStyledContext({
26
17
  size: void 0,
27
- textAlign: void 0,
28
- variant: void 0
29
- }), BUTTON_NAME = "Button", ButtonFrame = styled(ThemeableStack, {
30
- name: BUTTON_NAME,
31
- tag: "button",
32
- context: ButtonContext,
18
+ variant: void 0,
19
+ color: void 0,
20
+ elevation: void 0
21
+ }), Frame = styled(View, {
22
+ context,
23
+ name: "Button",
24
+ group: "Button",
25
+ containerType: "normal",
33
26
  role: "button",
27
+ tag: "button",
34
28
  focusable: !0,
35
- // forces runtime pressStyle so it passes through context text colors
36
- disableClassName: !0,
37
29
  variants: {
38
30
  unstyled: {
39
31
  false: {
@@ -43,11 +35,17 @@ const ButtonContext = createStyledContext({
43
35
  flexWrap: "nowrap",
44
36
  flexDirection: "row",
45
37
  cursor: "pointer",
46
- hoverTheme: !0,
47
- pressTheme: !0,
48
- backgrounded: !0,
38
+ backgroundColor: "$background",
49
39
  borderWidth: 1,
50
40
  borderColor: "transparent",
41
+ hoverStyle: {
42
+ backgroundColor: "$backgroundHover",
43
+ borderColor: "$borderColorHover"
44
+ },
45
+ pressStyle: {
46
+ backgroundColor: "$backgroundPress",
47
+ borderColor: "$borderColorHover"
48
+ },
51
49
  focusVisibleStyle: {
52
50
  outlineColor: "$outlineColor",
53
51
  outlineStyle: "solid",
@@ -56,7 +54,7 @@ const ButtonContext = createStyledContext({
56
54
  }
57
55
  },
58
56
  variant: {
59
- outlined: {
57
+ outlined: process.env.TAMAGUI_HEADLESS === "1" ? {} : {
60
58
  backgroundColor: "transparent",
61
59
  borderWidth: 2,
62
60
  borderColor: "$borderColor",
@@ -70,13 +68,35 @@ const ButtonContext = createStyledContext({
70
68
  },
71
69
  focusVisibleStyle: {
72
70
  backgroundColor: "transparent",
73
- borderColor: "$borderColorFocus"
71
+ borderColor: "$borderColorFocus",
72
+ outlineColor: "$outlineColor",
73
+ outlineStyle: "solid",
74
+ outlineWidth: 2
74
75
  }
75
76
  }
76
77
  },
78
+ circular: themeableVariants.circular,
79
+ chromeless: themeableVariants.chromeless,
80
+ bordered: themeableVariants.bordered,
77
81
  size: {
78
- "...size": getButtonSized,
79
- ":number": getButtonSized
82
+ "...size": (val, extras) => {
83
+ const buttonStyle = getButtonSized(val, extras), gap = getTokenValue(val) * 0.4;
84
+ return {
85
+ ...buttonStyle,
86
+ gap
87
+ };
88
+ },
89
+ ":number": (val, extras) => {
90
+ const buttonStyle = getButtonSized(val, extras), gap = val * 0.4;
91
+ return {
92
+ ...buttonStyle,
93
+ gap
94
+ };
95
+ }
96
+ },
97
+ elevation: {
98
+ "...size": getElevation,
99
+ ":number": getElevation
80
100
  },
81
101
  disabled: {
82
102
  true: {
@@ -87,9 +107,8 @@ const ButtonContext = createStyledContext({
87
107
  defaultVariants: {
88
108
  unstyled: process.env.TAMAGUI_HEADLESS === "1"
89
109
  }
90
- }), ButtonText = styled(SizableText, {
91
- name: "Button",
92
- context: ButtonContext,
110
+ }), Text = styled(SizableText, {
111
+ context,
93
112
  variants: {
94
113
  unstyled: {
95
114
  false: {
@@ -98,7 +117,7 @@ const ButtonContext = createStyledContext({
98
117
  // flexGrow 1 leads to inconsistent native style where text pushes to start of view
99
118
  flexGrow: 0,
100
119
  flexShrink: 1,
101
- ellipse: !0,
120
+ ellipsis: !0,
102
121
  color: "$color"
103
122
  }
104
123
  }
@@ -106,106 +125,69 @@ const ButtonContext = createStyledContext({
106
125
  defaultVariants: {
107
126
  unstyled: process.env.TAMAGUI_HEADLESS === "1"
108
127
  }
109
- }), ButtonIcon = (props) => {
110
- const { children, scaleIcon = 1 } = props, { size, color } = useContext(ButtonContext), iconSize = (typeof size == "number" ? size * 0.5 : getFontSize(size)) * scaleIcon;
111
- return useGetThemedIcon({ size: iconSize, color })(children);
112
- }, ButtonComponent = ButtonFrame.styleable(
113
- function(props, ref) {
114
- const { props: buttonProps } = useButton(props);
115
- return /* @__PURE__ */ jsx(ButtonFrame, { "data-disable-theme": !0, ...buttonProps, ref });
116
- }
117
- ), Button2 = withStaticProperties(ButtonComponent, {
118
- Text: ButtonText,
119
- Icon: ButtonIcon
120
- });
121
- function useButton({ textProps, ...propsIn }, { Text = Button2.Text } = { Text: Button2.Text }) {
122
- const isNested = useContext(ButtonNestingContext), propsActive = useProps(propsIn, {
128
+ }), Icon = (props) => {
129
+ const { children, scaleIcon = 1, marginLeft, marginRight, size } = props, styledContext = context.useStyledContext();
130
+ if (!styledContext)
131
+ throw new Error("Button.Icon must be used within a Button");
132
+ const getIcon = useGetIcon(), sizeToken = size ?? styledContext.size, iconSize = (typeof sizeToken == "number" ? sizeToken * 0.5 : getFontSize(sizeToken)) * scaleIcon;
133
+ return getIcon(children, {
134
+ size: iconSize,
135
+ color: styledContext.color,
136
+ marginLeft,
137
+ marginRight
138
+ });
139
+ }, ButtonContext = createStyledContext({
140
+ size: void 0,
141
+ variant: void 0,
142
+ color: void 0
143
+ }), ButtonComponent = Frame.styleable((propsIn, ref) => {
144
+ const isNested = useContext(ButtonNestingContext), processedProps = useProps(propsIn, {
123
145
  noNormalize: !0,
124
146
  noExpand: !0
125
147
  }), {
148
+ children,
149
+ iconSize,
126
150
  icon,
127
151
  iconAfter,
128
- space,
129
- spaceFlex,
130
152
  scaleIcon = 1,
131
- scaleSpace = 0.66,
132
- separator,
133
153
  noTextWrap,
134
- fontFamily,
135
- fontSize,
136
- fontWeight,
137
- fontStyle,
138
- letterSpacing,
139
- tag,
140
- ellipse,
141
- maxFontSizeMultiplier,
142
- ...restProps
143
- } = propsActive, size = propsActive.size || (propsActive.unstyled ? void 0 : "$true"), color = propsActive.color, iconSize = (typeof size == "number" ? size * 0.5 : getFontSize(size, {
144
- font: fontFamily?.[0] === "$" ? fontFamily : void 0
145
- })) * scaleIcon, getThemedIcon = useGetThemedIcon({
146
- size: iconSize,
147
- color
148
- }), [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon), spaceSize = space ?? getVariableValue(iconSize) * scaleSpace, contents = noTextWrap ? [propsIn.children] : wrapChildrenInText(
154
+ ...props
155
+ } = processedProps, size = propsIn.size || (propsIn.unstyled ? void 0 : "$true"), styledContext = context.useStyledContext(), finalSize = iconSize ?? size ?? styledContext?.size, iconSizeNumber = (typeof finalSize == "number" ? finalSize * 0.5 : getFontSize(finalSize)) * scaleIcon, getIcon = useGetIcon(), [themedIcon, themedIconAfter] = [icon, iconAfter].map((icon2) => icon2 ? getIcon(icon2, {
156
+ size: iconSizeNumber,
157
+ color: styledContext?.color
158
+ // No marginLeft or marginRight needed - spacing is handled by the gap property in Frame's size variants
159
+ }) : null), wrappedChildren = wrapChildrenInText(
149
160
  Text,
161
+ { children, noTextWrap },
150
162
  {
151
- children: propsIn.children,
152
- color,
153
- fontFamily,
154
- fontSize,
155
- textProps,
156
- fontWeight,
157
- fontStyle,
158
- letterSpacing,
159
- ellipse,
160
- maxFontSizeMultiplier
161
- },
162
- Text === ButtonText && propsActive.unstyled !== !0 ? {
163
163
  unstyled: process.env.TAMAGUI_HEADLESS === "1",
164
- size
165
- } : void 0
166
- ), inner = spacedChildren({
167
- // a bit arbitrary but scaling to font size is necessary so long as button does
168
- space: spaceSize === !1 ? 0 : spaceSize == !0 ? "$true" : spaceSize,
169
- spaceFlex,
170
- ensureKeys: !0,
171
- separator,
172
- direction: propsActive.flexDirection === "column" || propsActive.flexDirection === "column-reverse" ? "vertical" : "horizontal",
173
- // for keys to stay the same we keep indices as similar a possible
174
- // so even if icons are undefined we still pass them
175
- children: [themedIcon, ...contents, themedIconAfter]
176
- }), props = {
177
- size,
178
- ...propsIn.disabled && {
179
- // in rnw - false still has keyboard tabIndex, undefined = not actually focusable
180
- focusable: void 0,
181
- // even with tabIndex unset, it will keep focusVisibleStyle on web so disable it here
182
- focusVisibleStyle: {
183
- borderColor: "$background"
184
- }
185
- },
186
- // fixes SSR issue + DOM nesting issue of not allowing button in button
187
- tag: tag ?? (isNested ? "span" : (
188
- // defaults to <a /> when accessibilityRole = link
189
- // see https://github.com/tamagui/tamagui/issues/505
190
- propsActive.accessibilityRole === "link" || propsActive.role === "link" ? "a" : "button"
191
- )),
192
- ...restProps,
193
- children: /* @__PURE__ */ jsx(ButtonNestingContext.Provider, { value: !0, children: inner }),
194
- // forces it to be a runtime pressStyle so it passes through context text colors
195
- disableClassName: !0
196
- };
197
- return {
198
- spaceSize,
199
- isNested,
200
- props
201
- };
202
- }
164
+ size: finalSize ?? styledContext?.size
165
+ }
166
+ );
167
+ return /* @__PURE__ */ jsx(ButtonNestingContext.Provider, { value: !0, children: /* @__PURE__ */ jsxs(
168
+ Frame,
169
+ {
170
+ ref,
171
+ ...props,
172
+ ...isNested && { tag: "span" },
173
+ ...props.circular && !propsIn.size && { size },
174
+ tabIndex: 0,
175
+ focusable: !0,
176
+ children: [
177
+ themedIcon,
178
+ wrappedChildren,
179
+ themedIconAfter
180
+ ]
181
+ }
182
+ ) });
183
+ }), Button = withStaticProperties(ButtonComponent, {
184
+ Apply: context.Provider,
185
+ Frame,
186
+ Text,
187
+ Icon
188
+ });
203
189
  export {
204
- Button2 as Button,
205
- ButtonContext,
206
- ButtonFrame,
207
- ButtonIcon,
208
- ButtonText,
209
- useButton
190
+ Button,
191
+ ButtonContext
210
192
  };
211
193
  //# sourceMappingURL=Button.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Button.tsx"],
4
- "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,4BAA4B;AACrC,SAAS,wBAAwB;AACjC,SAAS,sBAAsB,sBAAsB;AAErD,SAAS,aAAa,0BAA0B;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kBAAkB;AAmLhB;AA/KJ,MAAM,gBAAgB,oBAO3B;AAAA;AAAA,EAEA,OAAO;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AACX,CAAC,GAyCK,cAAc,UAEd,cAAc,OAAO,gBAAgB;AAAA,EACzC,MAAM;AAAA,EACN,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAAA;AAAA,EAEX,kBAAkB;AAAA,EAElB,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,QACf,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,aAAa;AAAA,QACb,aAAa;AAAA,QAEb,mBAAmB;AAAA,UACjB,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,UAAU;AAAA,QACR,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,QAEb,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,mBAAmB;AAAA,UACjB,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC,GAEK,aAAa,OAAO,aAAa;AAAA,EACrC,MAAM;AAAA,EACN,SAAS;AAAA,EAET,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA;AAAA,QAER,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC,GAEK,aAAa,CAAC,UAA6D;AAC/E,QAAM,EAAE,UAAU,YAAY,EAAE,IAAI,OAC9B,EAAE,MAAM,MAAM,IAAI,WAAW,aAAa,GAE1C,YACH,OAAO,QAAS,WAAW,OAAO,MAAM,YAAY,IAAsB,KAC3E;AAGF,SADsB,iBAAiB,EAAE,MAAM,UAAU,MAAoB,CAAC,EACzD,QAAQ;AAC/B,GAEM,kBAAkB,YAAY;AAAA,EAClC,SAAgB,OAAO,KAAK;AAE1B,UAAM,EAAE,OAAO,YAAY,IAAI,UAAU,KAAK;AAE9C,WAAO,oBAAC,eAAY,sBAAkB,IAAE,GAAG,aAAa,KAAU;AAAA,EACpE;AACF,GAKMA,UAAS,qBAAqB,iBAAiB;AAAA,EACnD,MAAM;AAAA,EACN,MAAM;AACR,CAAC;AAKD,SAAS,UACP,EAAE,WAAW,GAAG,QAAQ,GACxB,EAAE,OAAOA,QAAO,KAAK,IAAmB,EAAE,MAAMA,QAAO,KAAK,GAC5D;AACA,QAAM,WAAW,WAAW,oBAAoB,GAC1C,cAAc,SAAS,SAAS;AAAA,IACpC,aAAa;AAAA,IACb,UAAU;AAAA,EACZ,CAAC,GAGK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,GAAG;AAAA,EACL,IAAI,aAEE,OAAO,YAAY,SAAS,YAAY,WAAW,SAAY,UAE/D,QAAQ,YAAY,OAEpB,YACH,OAAO,QAAS,WACb,OAAO,MACP,YAAY,MAAwB;AAAA,IAClC,MAAM,aAAa,CAAC,MAAM,MAAO,aAAqB;AAAA,EACxD,CAAC,KAAK,WAEN,gBAAgB,iBAAiB;AAAA,IACrC,MAAM;AAAA,IACN;AAAA,EACF,CAAC,GAEK,CAAC,YAAY,eAAe,IAAI,CAAC,MAAM,SAAS,EAAE,IAAI,aAAa,GACnE,YAAY,SAAS,iBAAiB,QAAQ,IAAI,YAClD,WAAW,aACb,CAAC,QAAQ,QAAQ,IACjB;AAAA,IACE;AAAA,IACA;AAAA,MACE,UAAU,QAAQ;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,SAAS,cAAc,YAAY,aAAa,KAC5C;AAAA,MACE,UAAU,QAAQ,IAAI,qBAAqB;AAAA,MAC3C;AAAA,IACF,IACA;AAAA,EACN,GAEE,QAAQ,eAAe;AAAA;AAAA,IAE3B,OAAO,cAAc,KAAQ,IAAI,aAAa,KAAO,UAAU;AAAA,IAC/D;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,WACE,YAAY,kBAAkB,YAC9B,YAAY,kBAAkB,mBAC1B,aACA;AAAA;AAAA;AAAA,IAGN,UAAU,CAAC,YAAY,GAAG,UAAU,eAAe;AAAA,EACrD,CAAC,GAEK,QAAQ;AAAA,IACZ;AAAA,IACA,GAAI,QAAQ,YAAY;AAAA;AAAA,MAEtB,WAAW;AAAA;AAAA,MAEX,mBAAmB;AAAA,QACjB,aAAa;AAAA,MACf;AAAA,IACF;AAAA;AAAA,IAEA,KACE,QACC,WACG;AAAA;AAAA;AAAA,MAGA,YAAY,sBAAsB,UAAU,YAAY,SAAS,SAC/D,MACA;AAAA;AAAA,IAER,GAAG;AAAA,IAEH,UACE,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,IAAO,iBAAM;AAAA;AAAA,IAGrD,kBAAkB;AAAA,EACpB;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
5
- "names": ["Button"]
4
+ "mappings": "AAAA,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB,cAAc,yBAAyB;AACtE,SAAS,aAAa,0BAA0B;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AA6OvB,cACE,YADF;AAvOJ,MAAM,UAAU,oBAKb;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AACb,CAAC,GAEK,QAAQ,OAAO,MAAM;AAAA,EACzB;AAAA,EACA,MAAM;AAAA,EACN,OAAO;AAAA,EACP,eAAe;AAAA,EACf,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA,EAEX,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,eAAe;AAAA,QACf,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,QAEb,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,mBAAmB;AAAA,UACjB,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,SAAS;AAAA,MACP,UACE,QAAQ,IAAI,qBAAqB,MAC7B,CAAC,IACD;AAAA,QACE,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,QAEb,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,QAEA,mBAAmB;AAAA,UACjB,iBAAiB;AAAA,UACjB,aAAa;AAAA,UACb,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACR;AAAA,IAEA,UAAU,kBAAkB;AAAA,IAE5B,YAAY,kBAAkB;AAAA,IAE9B,UAAU,kBAAkB;AAAA,IAE5B,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,WAAW;AAC1B,cAAM,cAAc,eAAe,KAAK,MAAM,GACxC,MAAM,cAAc,GAAY,IAAI;AAC1C,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MACA,WAAW,CAAC,KAAK,WAAW;AAC1B,cAAM,cAAc,eAAe,KAAK,MAAM,GACxC,MAAM,MAAM;AAClB,eAAO;AAAA,UACL,GAAG;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,IACb;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC,GAEK,OAAO,OAAO,aAAa;AAAA,EAC/B;AAAA,EAEA,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,YAAY;AAAA,QACZ,QAAQ;AAAA;AAAA,QAER,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC,GAEK,OAAO,CAAC,UAA6D;AACzE,QAAM,EAAE,UAAU,YAAY,GAAG,YAAY,aAAa,KAAK,IAAI,OAC7D,gBAAgB,QAAQ,iBAAiB;AAC/C,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,0CAA0C;AAE5D,QAAM,UAAU,WAAW,GAErB,YAAY,QAAQ,cAAc,MAElC,YACH,OAAO,aAAc,WAAW,YAAY,MAAM,YAAY,SAAkB,KACjF;AAEF,SAAO,QAAQ,UAAU;AAAA,IACvB,MAAM;AAAA,IACN,OAAO,cAAc;AAAA,IACrB;AAAA,IACA;AAAA,EACF,CAAC;AACH,GAEa,gBAAgB,oBAI1B;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AACT,CAAC,GAEK,kBAAkB,MAAM,UAM3B,CAAC,SAAc,QAAQ;AACxB,QAAM,WAAW,WAAW,oBAAoB,GAG1C,iBAAiB,SAAS,SAAS;AAAA,IACvC,aAAa;AAAA,IACb,UAAU;AAAA,EACZ,CAAC,GAEK;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EACL,IAAI,gBAEE,OAAO,QAAQ,SAAS,QAAQ,WAAW,SAAY,UAEvD,gBAAgB,QAAQ,iBAAiB,GACzC,YAAY,YAAY,QAAQ,eAAe,MAC/C,kBACH,OAAO,aAAc,WAAW,YAAY,MAAM,YAAY,SAAkB,KACjF,WAEI,UAAU,WAAW,GAErB,CAAC,YAAY,eAAe,IAAI,CAAC,MAAM,SAAS,EAAE,IAAI,CAACA,UACtDA,QACE,QAAQA,OAAM;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,eAAe;AAAA;AAAA,EAExB,CAAC,IALiB,IAMnB,GAEK,kBAAkB;AAAA,IACtB;AAAA,IACA,EAAE,UAAU,WAAW;AAAA,IACvB;AAAA,MACE,UAAU,QAAQ,IAAI,qBAAqB;AAAA,MAC3C,MAAM,aAAa,eAAe;AAAA,IACpC;AAAA,EACF;AAEA,SACE,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,IACpC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACC,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,KAAK,OAAO;AAAA,MAE9B,GAAI,MAAM,YAAY,CAAC,QAAQ,QAAQ,EAAE,KAAK;AAAA,MAC/C,UAAU;AAAA,MACV,WAAW;AAAA,MAEV;AAAA;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,EACH,GACF;AAEJ,CAAC,GAEY,SAAS,qBAAqB,iBAAiB;AAAA,EAC1D,OAAO,QAAQ;AAAA,EACf;AAAA,EACA;AAAA,EACA;AACF,CAAC;",
5
+ "names": ["icon"]
6
6
  }