@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":["esm/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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"}