@tamagui/list-item 2.7.7 → 3.0.0-beta.643.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,231 +1,162 @@
1
- import { getFontSize } from "@tamagui/font-size";
2
1
  import { getFontSized } from "@tamagui/get-font-sized";
3
- import { getSize, getSpace } from "@tamagui/get-token";
2
+ import { oneSizeTokenSmaller } from "@tamagui/get-token";
4
3
  import { withStaticProperties } from "@tamagui/helpers";
5
- import { getIcon, useCurrentColor } from "@tamagui/helpers-tamagui";
4
+ import { getThemedIconSize, useGetThemedIcon } from "@tamagui/helpers-tamagui";
6
5
  import { YStack } from "@tamagui/stacks";
6
+ import { resolveSizeToken } from "@tamagui/size";
7
7
  import { SizableText, wrapChildrenInText } from "@tamagui/text";
8
- import { createStyledContext, styled, View } from "@tamagui/web";
8
+ import { View, createStyledContext, createStyledHOC, getVariableValue, styled, useProps } from "@tamagui/web";
9
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+
10
11
  const NAME = "ListItem";
11
12
  const context = createStyledContext({
12
- size: void 0,
13
- variant: void 0,
14
- color: void 0
13
+ size: void 0,
14
+ variant: void 0,
15
+ color: void 0
15
16
  });
17
+ const listItemSizeVariant = (val, { tokens }) => {
18
+ const sizeToken = resolveSizeToken(val, "size");
19
+ const spaceToken = resolveSizeToken(val, "space");
20
+ const size = typeof sizeToken === "number" ? sizeToken : tokens.size[sizeToken];
21
+ const sizeVal = getVariableValue(size);
22
+ return {
23
+ minHeight: size,
24
+ paddingHorizontal: tokens.space[spaceToken],
25
+ paddingVertical: Math.max(0, Math.round(sizeVal * .36 - 9)),
26
+ gap: getThemedIconSize(sizeToken, .4)
27
+ };
28
+ };
29
+ const listItemSubtitleSizeVariant = (val, extras) => {
30
+ const fontSizeToken = resolveSizeToken(val, "fontSize");
31
+ const oneSmaller = oneSizeTokenSmaller(fontSizeToken);
32
+ return getFontSized(oneSmaller, extras);
33
+ };
16
34
  const ListItemFrame = styled(View, {
17
- context,
18
- name: NAME,
19
- render: "li",
20
- role: "listitem",
21
- variants: {
22
- unstyled: {
23
- false: {
24
- size: "$true",
25
- alignItems: "center",
26
- justifyContent: "space-between",
27
- flexWrap: "nowrap",
28
- borderColor: "$borderColor",
29
- width: "100%",
30
- maxWidth: "100%",
31
- overflow: "hidden",
32
- flexDirection: "row",
33
- backgroundColor: "$background",
34
- cursor: "default",
35
- hoverStyle: {
36
- backgroundColor: "$backgroundHover",
37
- borderColor: "$borderColorHover"
38
- },
39
- pressStyle: {
40
- backgroundColor: "$backgroundPress",
41
- borderColor: "$borderColorPress"
42
- }
43
- }
44
- },
45
- variant: {
46
- outlined: process.env.TAMAGUI_HEADLESS === "1" ? {} : {
47
- backgroundColor: "transparent",
48
- borderWidth: 1,
49
- borderColor: "$borderColor",
50
- hoverStyle: {
51
- backgroundColor: "transparent",
52
- borderColor: "$borderColorHover"
53
- },
54
- pressStyle: {
55
- backgroundColor: "transparent",
56
- borderColor: "$borderColorPress"
57
- }
58
- }
59
- },
60
- size: {
61
- "...size": (val, {
62
- tokens
63
- }) => {
64
- return {
65
- minHeight: tokens.size[val],
66
- paddingHorizontal: tokens.space[val],
67
- paddingVertical: getSpace(tokens.space[val], {
68
- shift: -4
69
- })
70
- };
71
- }
72
- },
73
- active: {
74
- true: {
75
- hoverStyle: {
76
- backgroundColor: "$background"
77
- }
78
- }
79
- },
80
- disabled: {
81
- true: {
82
- opacity: 0.5,
83
- pointerEvents: "none"
84
- }
85
- }
86
- },
87
- defaultVariants: {
88
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
89
- }
35
+ context,
36
+ displayName: NAME,
37
+ render: "li",
38
+ role: "listitem",
39
+ size: true,
40
+ alignItems: "center",
41
+ justifyContent: "space-between",
42
+ flexWrap: "nowrap",
43
+ width: "100%",
44
+ maxWidth: "100%",
45
+ overflow: "hidden",
46
+ flexDirection: "row",
47
+ variants: {
48
+ size: {
49
+ true: listItemSizeVariant,
50
+ Size: listItemSizeVariant
51
+ },
52
+ disabled: { true: { pointerEvents: "none" } }
53
+ }
90
54
  });
91
55
  const ListItemText = styled(SizableText, {
92
- context,
93
- name: "ListItemText",
94
- variants: {
95
- unstyled: {
96
- false: {
97
- color: "$color",
98
- size: "$true",
99
- flexGrow: 1,
100
- flexShrink: 1,
101
- ellipsis: true,
102
- cursor: "inherit"
103
- }
104
- }
105
- },
106
- defaultVariants: {
107
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
108
- }
56
+ context,
57
+ displayName: "ListItemText",
58
+ size: true,
59
+ flexGrow: 1,
60
+ flexShrink: 1,
61
+ ellipsis: true,
62
+ cursor: "inherit"
109
63
  });
110
64
  const ListItemSubtitle = styled(ListItemText, {
111
- name: "ListItemSubtitle",
112
- context,
113
- variants: {
114
- unstyled: {
115
- false: {
116
- opacity: 0.6,
117
- maxWidth: "100%",
118
- color: "$color"
119
- }
120
- },
121
- size: {
122
- "...size": (val, extras) => {
123
- const oneSmaller = getSize(val, {
124
- shift: -1,
125
- excludeHalfSteps: true
126
- });
127
- const fontStyle = getFontSized(oneSmaller.key, extras);
128
- return fontStyle;
129
- }
130
- }
131
- },
132
- defaultVariants: {
133
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
134
- }
65
+ displayName: "ListItemSubtitle",
66
+ context,
67
+ opacity: .6,
68
+ maxWidth: "100%",
69
+ variants: { size: {
70
+ true: listItemSubtitleSizeVariant,
71
+ Size: listItemSubtitleSizeVariant
72
+ } }
135
73
  });
136
74
  const ListItemTitle = styled(ListItemText, {
137
- name: "ListItemTitle",
138
- context,
139
- variants: {
140
- unstyled: {
141
- false: {}
142
- }
143
- },
144
- defaultVariants: {
145
- unstyled: process.env.TAMAGUI_HEADLESS === "1"
146
- }
75
+ displayName: "ListItemTitle",
76
+ context
147
77
  });
148
- const ListItemIcon = props => {
149
- const {
150
- children,
151
- size,
152
- scaleIcon = 1
153
- } = props;
154
- const styledContext = context.useStyledContext();
155
- if (!styledContext) {
156
- throw new Error("ListItem.Icon must be used within a ListItem");
157
- }
158
- const sizeToken = size ?? styledContext.size ?? "$true";
159
- const iconColor = useCurrentColor(styledContext.color);
160
- const iconSize = getFontSize(sizeToken) * scaleIcon;
161
- return getIcon(children, {
162
- size: iconSize,
163
- color: iconColor
164
- });
78
+ const ListItemIcon = (props) => {
79
+ const { children, size, scaleIcon = 1 } = props;
80
+ const styledContext = context.useStyledContext();
81
+ if (!styledContext) {
82
+ throw new Error("ListItem.Icon must be used within a ListItem");
83
+ }
84
+ const sizeToken = size ?? styledContext.size ?? true;
85
+ const contextColor = styledContext.color;
86
+ const iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
87
+ const iconSize = getThemedIconSize(sizeToken, scaleIcon);
88
+ const getThemedIcon = useGetThemedIcon({
89
+ size: iconSize,
90
+ color: iconColorProp
91
+ });
92
+ return getThemedIcon(children);
165
93
  };
166
- const ListItemComponent = ListItemFrame.styleable(function ListItem(propsIn, ref) {
167
- const {
168
- children,
169
- icon,
170
- iconAfter,
171
- scaleIcon = 1,
172
- unstyled = false,
173
- subTitle,
174
- title,
175
- iconSize,
176
- ...rest
177
- } = propsIn;
178
- const size = propsIn.size || "$true";
179
- const styledContext = context.useStyledContext();
180
- const iconColor = useCurrentColor(styledContext?.color);
181
- const iconSizeNumber = getFontSize(iconSize || size) * scaleIcon;
182
- const iconSpacing = iconSizeNumber * 0.4;
183
- const themedIcon = icon ? /* @__PURE__ */jsx(View, {
184
- marginRight: iconSpacing,
185
- children: getIcon(icon, {
186
- size: iconSizeNumber,
187
- color: iconColor
188
- })
189
- }) : null;
190
- const themedIconAfter = iconAfter ? /* @__PURE__ */jsx(View, {
191
- marginLeft: iconSpacing,
192
- children: getIcon(iconAfter, {
193
- size: iconSizeNumber,
194
- color: iconColor
195
- })
196
- }) : null;
197
- const wrappedChildren = wrapChildrenInText(ListItemText, {
198
- children
199
- }, propsIn.unstyled !== true ? {
200
- unstyled: process.env.TAMAGUI_HEADLESS === "1",
201
- fontSize: propsIn.size
202
- } : void 0);
203
- return /* @__PURE__ */jsxs(ListItemFrame, {
204
- ref,
205
- ...rest,
206
- children: [themedIcon, title || subTitle ? /* @__PURE__ */jsxs(YStack, {
207
- flex: 1,
208
- children: [title ? typeof title === "string" ? /* @__PURE__ */jsx(ListItemTitle, {
209
- unstyled,
210
- size,
211
- children: title
212
- }) : title : null, subTitle ? /* @__PURE__ */jsx(Fragment, {
213
- children: typeof subTitle === "string" ? /* @__PURE__ */jsx(ListItemSubtitle, {
214
- unstyled,
215
- size,
216
- children: subTitle
217
- }) : subTitle
218
- }) : null, wrappedChildren]
219
- }) : wrappedChildren, themedIconAfter]
220
- });
94
+ const ListItemComponent = createStyledHOC(ListItemFrame, function ListItem(propsIn, ref) {
95
+ const processedProps = useProps(propsIn, {
96
+ noNormalize: true,
97
+ noExpand: true
98
+ });
99
+ const { children, icon, iconAfter, scaleIcon = 1, subTitle, title, iconSize, color, ...rest } = processedProps;
100
+ const styledContext = context.useStyledContext();
101
+ const size = rest.size ?? propsIn.size ?? styledContext?.size ?? true;
102
+ const contextColor = color ?? propsIn.color ?? styledContext?.color;
103
+ const iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
104
+ const iconSizeNumber = getThemedIconSize(iconSize ?? size, scaleIcon);
105
+ const getThemedIcon = useGetThemedIcon({
106
+ size: iconSizeNumber,
107
+ color: iconColorProp
108
+ });
109
+ const themedIcon = icon ? getThemedIcon(icon) : null;
110
+ const themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;
111
+ const wrappedChildren = wrapChildrenInText(ListItemText, { children }, { size });
112
+ const listItemContext = {
113
+ ...styledContext,
114
+ color: contextColor,
115
+ size,
116
+ variant: rest.variant ?? propsIn.variant ?? styledContext?.variant
117
+ };
118
+ const frameProps = {
119
+ size,
120
+ variant: listItemContext.variant,
121
+ ...rest
122
+ };
123
+ return /* @__PURE__ */ jsx(context.Provider, {
124
+ ...listItemContext,
125
+ children: /* @__PURE__ */ jsx(ListItemFrame, {
126
+ ref,
127
+ ...frameProps,
128
+ children: /* @__PURE__ */ jsxs(context.Provider, {
129
+ ...listItemContext,
130
+ children: [
131
+ themedIcon,
132
+ title || subTitle ? /* @__PURE__ */ jsxs(YStack, {
133
+ flex: 1,
134
+ children: [
135
+ title ? typeof title === "string" ? /* @__PURE__ */ jsx(ListItemTitle, {
136
+ size,
137
+ children: title
138
+ }) : title : null,
139
+ subTitle ? /* @__PURE__ */ jsx(Fragment, { children: typeof subTitle === "string" ? /* @__PURE__ */ jsx(ListItemSubtitle, {
140
+ size,
141
+ children: subTitle
142
+ }) : subTitle }) : null,
143
+ wrappedChildren
144
+ ]
145
+ }) : wrappedChildren,
146
+ themedIconAfter
147
+ ]
148
+ })
149
+ })
150
+ });
221
151
  });
222
152
  const ListItem2 = withStaticProperties(ListItemComponent, {
223
- Apply: context.Provider,
224
- Frame: ListItemFrame,
225
- Text: ListItemText,
226
- Subtitle: ListItemSubtitle,
227
- Icon: ListItemIcon,
228
- Title: ListItemTitle
153
+ Apply: context.Provider,
154
+ Frame: ListItemFrame,
155
+ Text: ListItemText,
156
+ Subtitle: ListItemSubtitle,
157
+ Icon: ListItemIcon,
158
+ Title: ListItemTitle
229
159
  });
230
- export { ListItem2 as ListItem };
160
+
161
+ export { ListItem2 as ListItem, listItemSizeVariant };
231
162
  //# sourceMappingURL=ListItem.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["getFontSize","getFontSized","getSize","getSpace","withStaticProperties","getIcon","useCurrentColor","YStack","SizableText","wrapChildrenInText","createStyledContext","styled","View","Fragment","jsx","jsxs","NAME","context","size","variant","color","ListItemFrame","name","render","role","variants","unstyled","false","alignItems","justifyContent","flexWrap","borderColor","width","maxWidth","overflow","flexDirection","backgroundColor","cursor","hoverStyle","pressStyle","outlined","process","env","TAMAGUI_HEADLESS","borderWidth","...size","val","tokens","minHeight","paddingHorizontal","space","paddingVertical","shift","active","true","disabled","opacity","pointerEvents","defaultVariants","ListItemText","flexGrow","flexShrink","ellipsis","ListItemSubtitle","extras","oneSmaller","excludeHalfSteps","fontStyle","key","ListItemTitle","ListItemIcon","props","children","scaleIcon","styledContext","useStyledContext","Error","sizeToken","iconColor","iconSize","ListItemComponent","styleable","ListItem","propsIn","ref","icon","iconAfter","subTitle","title","rest","iconSizeNumber","iconSpacing","themedIcon","marginRight","themedIconAfter","marginLeft","wrappedChildren","fontSize","flex","ListItem2","Apply","Provider","Frame","Text","Subtitle","Icon","Title"],"sources":["../../src/ListItem.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListItem.js","names":[],"sources":["jsx/ListItem.js"],"sourcesContent":["import { getFontSized } from \"@tamagui/get-font-sized\";\nimport { oneSizeTokenSmaller } from \"@tamagui/get-token\";\nimport { withStaticProperties } from \"@tamagui/helpers\";\nimport { getThemedIconSize, useGetThemedIcon } from \"@tamagui/helpers-tamagui\";\nimport { YStack } from \"@tamagui/stacks\";\nimport { resolveSizeToken } from \"@tamagui/size\";\nimport { SizableText, wrapChildrenInText } from \"@tamagui/text\";\nimport {\n createStyledContext,\n createStyledHOC,\n getVariableValue,\n styled,\n useProps,\n View\n} from \"@tamagui/web\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nconst NAME = \"ListItem\";\nconst context = createStyledContext({\n size: void 0,\n variant: void 0,\n color: void 0\n});\nconst listItemSizeVariant = (val, { tokens }) => {\n const sizeToken = resolveSizeToken(val, \"size\");\n const spaceToken = resolveSizeToken(val, \"space\");\n const size = typeof sizeToken === \"number\" ? sizeToken : tokens.size[sizeToken];\n const sizeVal = getVariableValue(size);\n return {\n minHeight: size,\n paddingHorizontal: tokens.space[spaceToken],\n paddingVertical: Math.max(0, Math.round(sizeVal * 0.36 - 9)),\n gap: getThemedIconSize(sizeToken, 0.4)\n };\n};\nconst listItemSubtitleSizeVariant = (val, extras) => {\n const fontSizeToken = resolveSizeToken(val, \"fontSize\");\n const oneSmaller = oneSizeTokenSmaller(fontSizeToken);\n return getFontSized(oneSmaller, extras);\n};\nconst ListItemFrame = styled(View, {\n context,\n displayName: NAME,\n render: \"li\",\n role: \"listitem\",\n size: true,\n alignItems: \"center\",\n justifyContent: \"space-between\",\n flexWrap: \"nowrap\",\n width: \"100%\",\n maxWidth: \"100%\",\n overflow: \"hidden\",\n flexDirection: \"row\",\n variants: {\n size: {\n true: listItemSizeVariant,\n Size: listItemSizeVariant\n },\n disabled: {\n true: {\n pointerEvents: \"none\"\n }\n }\n }\n});\nconst ListItemText = styled(SizableText, {\n context,\n displayName: \"ListItemText\",\n size: true,\n flexGrow: 1,\n flexShrink: 1,\n ellipsis: true,\n cursor: \"inherit\"\n});\nconst ListItemSubtitle = styled(ListItemText, {\n displayName: \"ListItemSubtitle\",\n context,\n opacity: 0.6,\n maxWidth: \"100%\",\n variants: {\n size: {\n true: listItemSubtitleSizeVariant,\n Size: listItemSubtitleSizeVariant\n }\n }\n});\nconst ListItemTitle = styled(ListItemText, {\n displayName: \"ListItemTitle\",\n context\n});\nconst ListItemIcon = (props) => {\n const { children, size, scaleIcon = 1 } = props;\n const styledContext = context.useStyledContext();\n if (!styledContext) {\n throw new Error(\"ListItem.Icon must be used within a ListItem\");\n }\n const sizeToken = size ?? styledContext.size ?? true;\n const contextColor = styledContext.color;\n const iconColorProp = contextColor === \"unset\" || typeof contextColor === \"number\" ? void 0 : contextColor;\n const iconSize = getThemedIconSize(sizeToken, scaleIcon);\n const getThemedIcon = useGetThemedIcon({\n size: iconSize,\n color: iconColorProp\n });\n return getThemedIcon(children);\n};\nconst ListItemComponent = createStyledHOC(\n ListItemFrame,\n function ListItem(propsIn, ref) {\n const processedProps = useProps(propsIn, {\n noNormalize: true,\n noExpand: true\n });\n const {\n children,\n icon,\n iconAfter,\n scaleIcon = 1,\n subTitle,\n title,\n iconSize,\n color,\n ...rest\n } = processedProps;\n const styledContext = context.useStyledContext();\n const size = rest.size ?? propsIn.size ?? styledContext?.size ?? true;\n const contextColor = color ?? propsIn.color ?? styledContext?.color;\n const iconColorProp = contextColor === \"unset\" || typeof contextColor === \"number\" ? void 0 : contextColor;\n const iconSizeNumber = getThemedIconSize(iconSize ?? size, scaleIcon);\n const getThemedIcon = useGetThemedIcon({\n size: iconSizeNumber,\n color: iconColorProp\n });\n const themedIcon = icon ? getThemedIcon(icon) : null;\n const themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;\n const wrappedChildren = wrapChildrenInText(ListItemText, { children }, { size });\n const listItemContext = {\n ...styledContext,\n color: contextColor,\n size,\n variant: rest.variant ?? propsIn.variant ?? styledContext?.variant\n };\n const frameProps = {\n size,\n variant: listItemContext.variant,\n ...rest\n };\n return /* @__PURE__ */ jsx(context.Provider, { ...listItemContext, children: /* @__PURE__ */ jsx(ListItemFrame, { ref, ...frameProps, children: /* @__PURE__ */ jsxs(context.Provider, { ...listItemContext, children: [\n themedIcon,\n title || subTitle ? /* @__PURE__ */ jsxs(YStack, { flex: 1, children: [\n title ? typeof title === \"string\" ? /* @__PURE__ */ jsx(ListItemTitle, { size, children: title }) : title : null,\n subTitle ? /* @__PURE__ */ jsx(Fragment, { children: typeof subTitle === \"string\" ? /* @__PURE__ */ jsx(ListItemSubtitle, { size, children: subTitle }) : subTitle }) : null,\n wrappedChildren\n ] }) : wrappedChildren,\n themedIconAfter\n ] }) }) });\n }\n);\nconst ListItem2 = withStaticProperties(ListItemComponent, {\n Apply: context.Provider,\n Frame: ListItemFrame,\n Text: ListItemText,\n Subtitle: ListItemSubtitle,\n Icon: ListItemIcon,\n Title: ListItemTitle\n});\nexport {\n ListItem2 as ListItem,\n listItemSizeVariant\n};\n//# sourceMappingURL=ListItem.js.map\n"],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all) __defProp(target, name, {
10
+ get: all[name],
11
+ enumerable: true
12
+ });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
21
+ return to;
22
+ };
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var ListItem_exports = {};
25
+ __export(ListItem_exports, {
26
+ ListItem: () => ListItem2,
27
+ listItemSizeVariant: () => listItemSizeVariant
28
+ });
29
+ module.exports = __toCommonJS(ListItem_exports);
30
+ var import_jsx_runtime = require("react/jsx-runtime");
31
+ var import_get_font_sized = require("@tamagui/get-font-sized");
32
+ var import_get_token = require("@tamagui/get-token");
33
+ var import_helpers = require("@tamagui/helpers");
34
+ var import_helpers_tamagui = require("@tamagui/helpers-tamagui");
35
+ var import_stacks = require("@tamagui/stacks");
36
+ var import_size = require("@tamagui/size");
37
+ var import_text = require("@tamagui/text");
38
+ var import_web = require("@tamagui/web");
39
+ var NAME = "ListItem";
40
+ var context = (0, import_web.createStyledContext)({
41
+ size: void 0,
42
+ variant: void 0,
43
+ color: void 0
44
+ });
45
+ var listItemSizeVariant = function(val, param) {
46
+ var { tokens } = param;
47
+ var sizeToken = (0, import_size.resolveSizeToken)(val, "size");
48
+ var spaceToken = (0, import_size.resolveSizeToken)(val, "space");
49
+ var size = typeof sizeToken === "number" ? sizeToken : tokens.size[sizeToken];
50
+ var sizeVal = (0, import_web.getVariableValue)(size);
51
+ return {
52
+ minHeight: size,
53
+ paddingHorizontal: tokens.space[spaceToken],
54
+ paddingVertical: Math.max(0, Math.round(sizeVal * .36 - 9)),
55
+ gap: (0, import_helpers_tamagui.getThemedIconSize)(sizeToken, .4)
56
+ };
57
+ };
58
+ var listItemSubtitleSizeVariant = function(val, extras) {
59
+ var fontSizeToken = (0, import_size.resolveSizeToken)(val, "fontSize");
60
+ var oneSmaller = (0, import_get_token.oneSizeTokenSmaller)(fontSizeToken);
61
+ return (0, import_get_font_sized.getFontSized)(oneSmaller, extras);
62
+ };
63
+ var ListItemFrame = (0, import_web.styled)(import_web.View, {
64
+ context,
65
+ displayName: NAME,
66
+ render: "li",
67
+ role: "listitem",
68
+ size: true,
69
+ alignItems: "center",
70
+ justifyContent: "space-between",
71
+ flexWrap: "nowrap",
72
+ width: "100%",
73
+ maxWidth: "100%",
74
+ overflow: "hidden",
75
+ flexDirection: "row",
76
+ variants: {
77
+ size: {
78
+ true: listItemSizeVariant,
79
+ Size: listItemSizeVariant
80
+ },
81
+ disabled: { true: { pointerEvents: "none" } }
82
+ }
83
+ });
84
+ var ListItemText = (0, import_web.styled)(import_text.SizableText, {
85
+ context,
86
+ displayName: "ListItemText",
87
+ size: true,
88
+ flexGrow: 1,
89
+ flexShrink: 1,
90
+ ellipsis: true,
91
+ cursor: "inherit"
92
+ });
93
+ var ListItemSubtitle = (0, import_web.styled)(ListItemText, {
94
+ displayName: "ListItemSubtitle",
95
+ context,
96
+ opacity: .6,
97
+ maxWidth: "100%",
98
+ variants: { size: {
99
+ true: listItemSubtitleSizeVariant,
100
+ Size: listItemSubtitleSizeVariant
101
+ } }
102
+ });
103
+ var ListItemTitle = (0, import_web.styled)(ListItemText, {
104
+ displayName: "ListItemTitle",
105
+ context
106
+ });
107
+ var ListItemIcon = function(props) {
108
+ var { children, size, scaleIcon = 1 } = props;
109
+ var styledContext = context.useStyledContext();
110
+ if (!styledContext) {
111
+ throw new Error("ListItem.Icon must be used within a ListItem");
112
+ }
113
+ var _ref;
114
+ var sizeToken = (_ref = size !== null && size !== void 0 ? size : styledContext.size) !== null && _ref !== void 0 ? _ref : true;
115
+ var contextColor = styledContext.color;
116
+ var iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
117
+ var iconSize = (0, import_helpers_tamagui.getThemedIconSize)(sizeToken, scaleIcon);
118
+ var getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({
119
+ size: iconSize,
120
+ color: iconColorProp
121
+ });
122
+ return getThemedIcon(children);
123
+ };
124
+ var ListItemComponent = (0, import_web.createStyledHOC)(ListItemFrame, function ListItem(propsIn, ref) {
125
+ var processedProps = (0, import_web.useProps)(propsIn, {
126
+ noNormalize: true,
127
+ noExpand: true
128
+ });
129
+ var { children, icon, iconAfter, scaleIcon = 1, subTitle, title, iconSize, color, ...rest } = processedProps;
130
+ var styledContext = context.useStyledContext();
131
+ var _rest_size, _ref, _ref1;
132
+ var size = (_ref1 = (_ref = (_rest_size = rest.size) !== null && _rest_size !== void 0 ? _rest_size : propsIn.size) !== null && _ref !== void 0 ? _ref : styledContext === null || styledContext === void 0 ? void 0 : styledContext.size) !== null && _ref1 !== void 0 ? _ref1 : true;
133
+ var _ref2;
134
+ var contextColor = (_ref2 = color !== null && color !== void 0 ? color : propsIn.color) !== null && _ref2 !== void 0 ? _ref2 : styledContext === null || styledContext === void 0 ? void 0 : styledContext.color;
135
+ var iconColorProp = contextColor === "unset" || typeof contextColor === "number" ? void 0 : contextColor;
136
+ var iconSizeNumber = (0, import_helpers_tamagui.getThemedIconSize)(iconSize !== null && iconSize !== void 0 ? iconSize : size, scaleIcon);
137
+ var getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({
138
+ size: iconSizeNumber,
139
+ color: iconColorProp
140
+ });
141
+ var themedIcon = icon ? getThemedIcon(icon) : null;
142
+ var themedIconAfter = iconAfter ? getThemedIcon(iconAfter) : null;
143
+ var wrappedChildren = (0, import_text.wrapChildrenInText)(ListItemText, { children }, { size });
144
+ var _rest_variant, _ref3;
145
+ var listItemContext = {
146
+ ...styledContext,
147
+ color: contextColor,
148
+ size,
149
+ variant: (_ref3 = (_rest_variant = rest.variant) !== null && _rest_variant !== void 0 ? _rest_variant : propsIn.variant) !== null && _ref3 !== void 0 ? _ref3 : styledContext === null || styledContext === void 0 ? void 0 : styledContext.variant
150
+ };
151
+ var frameProps = {
152
+ size,
153
+ variant: listItemContext.variant,
154
+ ...rest
155
+ };
156
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(context.Provider, {
157
+ ...listItemContext,
158
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemFrame, {
159
+ ref,
160
+ ...frameProps,
161
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(context.Provider, {
162
+ ...listItemContext,
163
+ children: [
164
+ themedIcon,
165
+ title || subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stacks.YStack, {
166
+ flex: 1,
167
+ children: [
168
+ title ? typeof title === "string" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemTitle, {
169
+ size,
170
+ children: title
171
+ }) : title : null,
172
+ subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: typeof subTitle === "string" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemSubtitle, {
173
+ size,
174
+ children: subTitle
175
+ }) : subTitle }) : null,
176
+ wrappedChildren
177
+ ]
178
+ }) : wrappedChildren,
179
+ themedIconAfter
180
+ ]
181
+ })
182
+ })
183
+ });
184
+ });
185
+ var ListItem2 = (0, import_helpers.withStaticProperties)(ListItemComponent, {
186
+ Apply: context.Provider,
187
+ Frame: ListItemFrame,
188
+ Text: ListItemText,
189
+ Subtitle: ListItemSubtitle,
190
+ Icon: ListItemIcon,
191
+ Title: ListItemTitle
192
+ });