@tamagui/list-item 2.7.7 → 3.0.0-beta.1091.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,116 @@
1
- import { getFontSize } from "@tamagui/font-size";
2
1
  import { getFontSized } from "@tamagui/get-font-sized";
3
- import { getSize, getSpace } from "@tamagui/get-token";
4
- import { withStaticProperties } from "@tamagui/helpers";
5
- import { getIcon, useCurrentColor } from "@tamagui/helpers-tamagui";
2
+ import { getThemedIconSize, useGetThemedIcon } from "@tamagui/helpers-tamagui";
3
+ import { oneSizeSmaller, resolveSize } from "@tamagui/size";
6
4
  import { YStack } from "@tamagui/stacks";
7
- import { SizableText, wrapChildrenInText } from "@tamagui/text";
8
- import { createStyledContext, styled, View } from "@tamagui/web";
5
+ import { SizableText, textParentProps, wrapChildrenInText } from "@tamagui/text";
6
+ import { View, createStyledContext, splitStyleProps, styled } from "@tamagui/web";
9
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
- const NAME = "ListItem";
11
- const context = createStyledContext({
12
- size: void 0,
13
- variant: void 0,
14
- color: void 0
8
+
9
+ const ListItemContext = createStyledContext({
10
+ size: void 0,
11
+ variant: void 0,
12
+ color: void 0
13
+ });
14
+ const listItemSizeVariant = styled.dynamic((val, env) => {
15
+ const { frame } = resolveSize(val, env);
16
+ return {
17
+ minHeight: frame.minHeight,
18
+ paddingHorizontal: frame.paddingHorizontal,
19
+ paddingVertical: frame.paddingVertical,
20
+ gap: frame.gap
21
+ };
22
+ });
23
+ const listItemSubtitleSizeVariant = styled.dynamic((val, env) => {
24
+ return getFontSized(oneSizeSmaller(val, env.sizes), env);
15
25
  });
16
26
  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
- }
27
+ context: ListItemContext,
28
+ displayName: "ListItemFrame",
29
+ role: "listitem",
30
+ render: "li",
31
+ size: true,
32
+ alignItems: "center",
33
+ justifyContent: "space-between",
34
+ flexWrap: "nowrap",
35
+ width: "100%",
36
+ maxWidth: "100%",
37
+ overflow: "hidden",
38
+ flexDirection: "row",
39
+ variants: {
40
+ size: listItemSizeVariant,
41
+ disabled: { true: { pointerEvents: "none" } }
42
+ }
90
43
  });
91
44
  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
- }
45
+ context: ListItemContext,
46
+ displayName: "ListItemText",
47
+ size: true,
48
+ flexGrow: 1,
49
+ flexShrink: 1,
50
+ ellipsis: true,
51
+ cursor: "inherit"
109
52
  });
110
53
  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
- }
54
+ context: ListItemContext,
55
+ displayName: "ListItemSubtitle",
56
+ opacity: .6,
57
+ maxWidth: "100%",
58
+ variants: { size: listItemSubtitleSizeVariant }
135
59
  });
136
60
  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
- }
61
+ context: ListItemContext,
62
+ displayName: "ListItemTitle"
147
63
  });
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
- });
64
+ const ListItemIcon = ({ children, size, scaleIcon = 1 }) => {
65
+ const context = ListItemContext.useStyledContext();
66
+ const getThemedIcon = useGetThemedIcon({
67
+ size: getThemedIconSize(size ?? context.size ?? true, scaleIcon),
68
+ color: context.color
69
+ });
70
+ return getThemedIcon(children);
165
71
  };
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
- });
221
- });
222
- const ListItem2 = withStaticProperties(ListItemComponent, {
223
- Apply: context.Provider,
224
- Frame: ListItemFrame,
225
- Text: ListItemText,
226
- Subtitle: ListItemSubtitle,
227
- Icon: ListItemIcon,
228
- Title: ListItemTitle
229
- });
230
- export { ListItem2 as ListItem };
72
+ function useListItem(propsIn) {
73
+ const [wrappedTextProps, listItemProps] = splitStyleProps(propsIn, {
74
+ expandShorthands: true,
75
+ filter: textParentProps
76
+ });
77
+ const { children, icon, iconAfter, iconSize, scaleIcon = 1, subTitle, title, ...frameProps } = listItemProps;
78
+ const { noTextWrap, textProps, ...textStyleProps } = wrappedTextProps;
79
+ const context = ListItemContext.useStyledContext();
80
+ const getThemedIcon = useGetThemedIcon({
81
+ size: getThemedIconSize(iconSize ?? propsIn.size ?? context.size ?? true, scaleIcon),
82
+ color: propsIn.color ?? context.color
83
+ });
84
+ const wrappedChildren = wrapChildrenInText(ListItemText, {
85
+ children,
86
+ noTextWrap,
87
+ textProps
88
+ }, textStyleProps);
89
+ return { props: {
90
+ ...frameProps,
91
+ color: propsIn.color,
92
+ children: /* @__PURE__ */ jsxs(Fragment, { children: [
93
+ icon ? getThemedIcon(icon) : null,
94
+ title || subTitle ? /* @__PURE__ */ jsxs(YStack, {
95
+ flex: 1,
96
+ children: [
97
+ typeof title === "string" ? /* @__PURE__ */ jsx(ListItemTitle, {
98
+ ...textStyleProps,
99
+ ...textProps,
100
+ children: title
101
+ }) : title,
102
+ typeof subTitle === "string" ? /* @__PURE__ */ jsx(ListItemSubtitle, {
103
+ ...textStyleProps,
104
+ ...textProps,
105
+ children: subTitle
106
+ }) : subTitle,
107
+ wrappedChildren
108
+ ]
109
+ }) : wrappedChildren,
110
+ iconAfter ? getThemedIcon(iconAfter) : null
111
+ ] })
112
+ } };
113
+ }
114
+
115
+ export { ListItemContext, ListItemFrame, ListItemIcon, ListItemSubtitle, ListItemText, ListItemTitle, listItemSizeVariant, useListItem };
231
116
  //# 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 { getThemedIconSize, useGetThemedIcon } from \"@tamagui/helpers-tamagui\";\nimport { oneSizeSmaller, resolveSize } from \"@tamagui/size\";\nimport { YStack } from \"@tamagui/stacks\";\nimport { SizableText, textParentProps, wrapChildrenInText } from \"@tamagui/text\";\nimport { createStyledContext, splitStyleProps, styled, View } from \"@tamagui/web\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nconst ListItemContext = createStyledContext({\n size: void 0,\n variant: void 0,\n color: void 0\n});\nconst listItemSizeVariant = styled.dynamic((val, env) => {\n const { frame } = resolveSize(val, env);\n return {\n minHeight: frame.minHeight,\n paddingHorizontal: frame.paddingHorizontal,\n paddingVertical: frame.paddingVertical,\n gap: frame.gap\n };\n});\nconst listItemSubtitleSizeVariant = styled.dynamic((val, env) => {\n return getFontSized(oneSizeSmaller(val, env.sizes), env);\n});\nconst ListItemFrame = styled(View, {\n context: ListItemContext,\n displayName: \"ListItemFrame\",\n // role is the cross-platform one; render only lands on web\n role: \"listitem\",\n render: \"li\",\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: listItemSizeVariant,\n disabled: {\n true: {\n pointerEvents: \"none\"\n }\n }\n }\n});\nconst ListItemText = styled(SizableText, {\n context: ListItemContext,\n displayName: \"ListItemText\",\n size: true,\n flexGrow: 1,\n flexShrink: 1,\n ellipsis: true,\n cursor: \"inherit\"\n});\nconst ListItemSubtitle = styled(ListItemText, {\n context: ListItemContext,\n displayName: \"ListItemSubtitle\",\n opacity: 0.6,\n maxWidth: \"100%\",\n variants: {\n size: listItemSubtitleSizeVariant\n }\n});\nconst ListItemTitle = styled(ListItemText, {\n context: ListItemContext,\n displayName: \"ListItemTitle\"\n});\nconst ListItemIcon = ({ children, size, scaleIcon = 1 }) => {\n const context = ListItemContext.useStyledContext();\n const getThemedIcon = useGetThemedIcon({\n size: getThemedIconSize(size ?? context.size ?? true, scaleIcon),\n color: context.color\n });\n return getThemedIcon(children);\n};\nfunction useListItem(propsIn) {\n const [wrappedTextProps, listItemProps] = splitStyleProps(propsIn, {\n expandShorthands: true,\n filter: textParentProps\n });\n const {\n children,\n icon,\n iconAfter,\n iconSize,\n scaleIcon = 1,\n subTitle,\n title,\n ...frameProps\n } = listItemProps;\n const { noTextWrap, textProps, ...textStyleProps } = wrappedTextProps;\n const context = ListItemContext.useStyledContext();\n const getThemedIcon = useGetThemedIcon({\n size: getThemedIconSize(iconSize ?? propsIn.size ?? context.size ?? true, scaleIcon),\n color: propsIn.color ?? context.color\n });\n const wrappedChildren = wrapChildrenInText(\n ListItemText,\n { children, noTextWrap, textProps },\n textStyleProps\n );\n return {\n props: {\n ...frameProps,\n color: propsIn.color,\n children: /* @__PURE__ */ jsxs(Fragment, { children: [\n icon ? getThemedIcon(icon) : null,\n title || subTitle ? /* @__PURE__ */ jsxs(YStack, { flex: 1, children: [\n typeof title === \"string\" ? /* @__PURE__ */ jsx(ListItemTitle, { ...textStyleProps, ...textProps, children: title }) : title,\n typeof subTitle === \"string\" ? /* @__PURE__ */ jsx(ListItemSubtitle, { ...textStyleProps, ...textProps, children: subTitle }) : subTitle,\n wrappedChildren\n ] }) : wrappedChildren,\n iconAfter ? getThemedIcon(iconAfter) : null\n ] })\n }\n };\n}\nexport {\n ListItemContext,\n ListItemFrame,\n ListItemIcon,\n ListItemSubtitle,\n ListItemText,\n ListItemTitle,\n listItemSizeVariant,\n useListItem\n};\n//# sourceMappingURL=ListItem.js.map\n"],"mappings":";;;;;;;;;AAOA,MAAM,kBAAkB,oBAAoB;CAC1C,MAAM,KAAK;CACX,SAAS,KAAK;CACd,OAAO,KAAK;AACd,CAAC;AACD,MAAM,sBAAsB,OAAO,SAAS,KAAK,QAAQ;CACvD,MAAM,EAAE,UAAU,YAAY,KAAK,GAAG;CACtC,OAAO;EACL,WAAW,MAAM;EACjB,mBAAmB,MAAM;EACzB,iBAAiB,MAAM;EACvB,KAAK,MAAM;CACb;AACF,CAAC;AACD,MAAM,8BAA8B,OAAO,SAAS,KAAK,QAAQ;CAC/D,OAAO,aAAa,eAAe,KAAK,IAAI,KAAK,GAAG,GAAG;AACzD,CAAC;AACD,MAAM,gBAAgB,OAAO,MAAM;CACjC,SAAS;CACT,aAAa;CAEb,MAAM;CACN,QAAQ;CACR,MAAM;CACN,YAAY;CACZ,gBAAgB;CAChB,UAAU;CACV,OAAO;CACP,UAAU;CACV,UAAU;CACV,eAAe;CACf,UAAU;EACR,MAAM;EACN,UAAU,EACR,MAAM,EACJ,eAAe,OACjB,EACF;CACF;AACF,CAAC;AACD,MAAM,eAAe,OAAO,aAAa;CACvC,SAAS;CACT,aAAa;CACb,MAAM;CACN,UAAU;CACV,YAAY;CACZ,UAAU;CACV,QAAQ;AACV,CAAC;AACD,MAAM,mBAAmB,OAAO,cAAc;CAC5C,SAAS;CACT,aAAa;CACb,SAAS;CACT,UAAU;CACV,UAAU,EACR,MAAM,4BACR;AACF,CAAC;AACD,MAAM,gBAAgB,OAAO,cAAc;CACzC,SAAS;CACT,aAAa;AACf,CAAC;AACD,MAAM,gBAAgB,EAAE,UAAU,MAAM,YAAY,QAAQ;CAC1D,MAAM,UAAU,gBAAgB,iBAAiB;CACjD,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,kBAAkB,QAAQ,QAAQ,QAAQ,MAAM,SAAS;EAC/D,OAAO,QAAQ;CACjB,CAAC;CACD,OAAO,cAAc,QAAQ;AAC/B;AACA,SAAS,YAAY,SAAS;CAC5B,MAAM,CAAC,kBAAkB,iBAAiB,gBAAgB,SAAS;EACjE,kBAAkB;EAClB,QAAQ;CACV,CAAC;CACD,MAAM,EACJ,UACA,MACA,WACA,UACA,YAAY,GACZ,UACA,OACA,GAAG,eACD;CACJ,MAAM,EAAE,YAAY,WAAW,GAAG,mBAAmB;CACrD,MAAM,UAAU,gBAAgB,iBAAiB;CACjD,MAAM,gBAAgB,iBAAiB;EACrC,MAAM,kBAAkB,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,MAAM,SAAS;EACnF,OAAO,QAAQ,SAAS,QAAQ;CAClC,CAAC;CACD,MAAM,kBAAkB,mBACtB,cACA;EAAE;EAAU;EAAY;CAAU,GAClC,cACF;CACA,OAAO,EACL,OAAO;EACL,GAAG;EACH,OAAO,QAAQ;EACf,UAA0B,qBAAK,UAAU,EAAE,UAAU;GACnD,OAAO,cAAc,IAAI,IAAI;GAC7B,SAAS,WAA2B,qBAAK,QAAQ;IAAE,MAAM;IAAG,UAAU;KACpE,OAAO,UAAU,WAA2B,oBAAI,eAAe;MAAE,GAAG;MAAgB,GAAG;MAAW,UAAU;KAAM,CAAC,IAAI;KACvH,OAAO,aAAa,WAA2B,oBAAI,kBAAkB;MAAE,GAAG;MAAgB,GAAG;MAAW,UAAU;KAAS,CAAC,IAAI;KAChI;IACF;GAAE,CAAC,IAAI;GACP,YAAY,cAAc,SAAS,IAAI;EACzC,EAAE,CAAC;CACL,EACF;AACF"}