@tamagui/list-item 1.13.2 → 1.13.4

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,216 +1,2 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var ListItem_exports = {};
20
- __export(ListItem_exports, {
21
- ListItem: () => ListItem,
22
- ListItemFrame: () => ListItemFrame,
23
- ListItemSubtitle: () => ListItemSubtitle,
24
- ListItemText: () => ListItemText,
25
- ListItemTitle: () => ListItemTitle,
26
- listItemStaticConfig: () => listItemStaticConfig,
27
- useListItem: () => useListItem
28
- });
29
- module.exports = __toCommonJS(ListItem_exports);
30
- var import_jsx_runtime = require("react/jsx-runtime");
31
- var import_core = require("@tamagui/core");
32
- var import_font_size = require("@tamagui/font-size");
33
- var import_helpers_tamagui = require("@tamagui/helpers-tamagui");
34
- var import_stacks = require("@tamagui/stacks");
35
- var import_text = require("@tamagui/text");
36
- var import_react = require("react");
37
- const NAME = "ListItem";
38
- const ListItemFrame = (0, import_core.styled)(import_stacks.ThemeableStack, {
39
- name: NAME,
40
- tag: "li",
41
- variants: {
42
- unstyled: {
43
- false: {
44
- size: "$true",
45
- alignItems: "center",
46
- flexWrap: "nowrap",
47
- width: "100%",
48
- borderColor: "$borderColor",
49
- maxWidth: "100%",
50
- overflow: "hidden",
51
- flexDirection: "row",
52
- backgroundColor: "$backgroundStrong"
53
- }
54
- },
55
- size: {
56
- "...size": (val, { tokens }) => {
57
- return {
58
- minHeight: tokens.size[val],
59
- paddingHorizontal: tokens.space[val],
60
- paddingVertical: (0, import_helpers_tamagui.getSpace)(val, -2)
61
- };
62
- }
63
- },
64
- active: {
65
- true: {
66
- hoverStyle: {
67
- backgroundColor: "$background"
68
- }
69
- }
70
- },
71
- disabled: {
72
- true: {
73
- opacity: 0.5,
74
- // TODO breaking types
75
- pointerEvents: "none"
76
- }
77
- }
78
- },
79
- defaultVariants: {
80
- unstyled: false
81
- }
82
- });
83
- const ListItemText = (0, import_core.styled)(import_text.SizableText, {
84
- name: "ListItemText",
85
- variants: {
86
- unstyled: {
87
- false: {
88
- color: "$color",
89
- userSelect: "none",
90
- flexGrow: 1,
91
- flexShrink: 1,
92
- ellipse: true,
93
- cursor: "default"
94
- }
95
- }
96
- },
97
- defaultVariants: {
98
- unstyled: false
99
- }
100
- });
101
- const ListItemSubtitle = (0, import_core.styled)(ListItemText, {
102
- name: "ListItemSubtitle",
103
- variants: {
104
- unstyled: {
105
- false: {
106
- opacity: 0.6,
107
- maxWidth: "100%",
108
- size: "$3",
109
- color: "$color"
110
- }
111
- }
112
- },
113
- defaultVariants: {
114
- unstyled: false
115
- }
116
- });
117
- const ListItemTitle = (0, import_core.styled)(ListItemText, {
118
- name: "ListItemTitle"
119
- });
120
- const useListItem = (props, {
121
- Text = ListItemText,
122
- Subtitle = ListItemSubtitle,
123
- Title = ListItemTitle
124
- } = { Text: ListItemText, Subtitle: ListItemSubtitle, Title: ListItemTitle }) => {
125
- const {
126
- children,
127
- icon,
128
- iconAfter,
129
- noTextWrap,
130
- theme: themeName,
131
- space,
132
- spaceFlex,
133
- scaleIcon = 1,
134
- scaleSpace = 1,
135
- subTitle,
136
- // text props
137
- color,
138
- fontWeight,
139
- letterSpacing,
140
- fontSize,
141
- fontFamily,
142
- textAlign,
143
- textProps,
144
- title,
145
- ...rest
146
- } = props;
147
- const mediaActiveProps = (0, import_core.useMediaPropsActive)(props);
148
- const size = mediaActiveProps.size || "$true";
149
- const subtitleSize = `$${+String(size).replace("$", "") - 1}`;
150
- const iconSize = (0, import_font_size.getFontSize)(size) * scaleIcon;
151
- const getThemedIcon = (0, import_helpers_tamagui.useGetThemedIcon)({ size: iconSize, color });
152
- const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
153
- const spaceSize = (0, import_core.getVariableValue)((0, import_core.getTokens)().space[mediaActiveProps.space] ?? iconSize) * scaleSpace;
154
- const contents = (0, import_text.wrapChildrenInText)(Text, mediaActiveProps);
155
- return {
156
- props: {
157
- fontFamily,
158
- ...rest,
159
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
160
- themedIcon ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
161
- themedIcon,
162
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Spacer, { size: spaceSize })
163
- ] }) : null,
164
- title || subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_stacks.YStack, { flex: 1, children: [
165
- noTextWrap === "all" ? title : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Title, { size, children: title }),
166
- subTitle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: typeof subTitle === "string" && noTextWrap !== "all" ? (
167
- // TODO can use theme but we need to standardize to alt themes
168
- // or standardize on subtle colors in themes
169
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Subtitle, { size: subtitleSize, children: subTitle })
170
- ) : subTitle }) : null,
171
- contents
172
- ] }) : contents,
173
- themedIconAfter ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
174
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.Spacer, { size: spaceSize }),
175
- themedIconAfter
176
- ] }) : null
177
- ] })
178
- }
179
- };
180
- };
181
- const ListItemComponent = (0, import_react.forwardRef)((props, ref) => {
182
- const { props: listItemProps } = useListItem(props);
183
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ListItemFrame, { ref, justifyContent: "space-between", ...listItemProps });
184
- });
185
- const listItemStaticConfig = {
186
- inlineProps: /* @__PURE__ */ new Set([
187
- // text props go here (can't really optimize them, but we never fully extract listItem anyway)
188
- "color",
189
- "fontWeight",
190
- "fontSize",
191
- "fontFamily",
192
- "letterSpacing",
193
- "textAlign"
194
- ])
195
- };
196
- const ListItem = (0, import_core.withStaticProperties)(
197
- ListItemFrame.extractable(
198
- (0, import_core.themeable)(ListItemComponent, { componentName: NAME }),
199
- listItemStaticConfig
200
- ),
201
- {
202
- Text: ListItemText,
203
- Subtitle: ListItemSubtitle
204
- }
205
- );
206
- // Annotate the CommonJS export names for ESM import in node:
207
- 0 && (module.exports = {
208
- ListItem,
209
- ListItemFrame,
210
- ListItemSubtitle,
211
- ListItemText,
212
- ListItemTitle,
213
- listItemStaticConfig,
214
- useListItem
215
- });
1
+ "use strict";var x=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var D=(o,n)=>{for(var i in n)x(o,i,{get:n[i],enumerable:!0})},J=(o,n,i,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of M(n))!Y.call(o,s)&&s!==i&&x(o,s,{get:()=>n[s],enumerable:!(l=H(n,s))||l.enumerable});return o};var O=o=>J(x({},"__esModule",{value:!0}),o);var q={};D(q,{ListItem:()=>j,ListItemFrame:()=>I,ListItemSubtitle:()=>c,ListItemText:()=>r,ListItemTitle:()=>b,listItemStaticConfig:()=>k,useListItem:()=>$});module.exports=O(q);var t=require("react/jsx-runtime"),e=require("@tamagui/core"),C=require("@tamagui/font-size"),p=require("@tamagui/helpers-tamagui"),m=require("@tamagui/stacks"),u=require("@tamagui/text"),F=require("react");const L="ListItem",I=(0,e.styled)(m.ThemeableStack,{name:L,tag:"li",variants:{unstyled:{false:{size:"$true",alignItems:"center",flexWrap:"nowrap",width:"100%",borderColor:"$borderColor",maxWidth:"100%",overflow:"hidden",flexDirection:"row",backgroundColor:"$backgroundStrong"}},size:{"...size":(o,{tokens:n})=>({minHeight:n.size[o],paddingHorizontal:n.space[o],paddingVertical:(0,p.getSpace)(o,-2)})},active:{true:{hoverStyle:{backgroundColor:"$background"}}},disabled:{true:{opacity:.5,pointerEvents:"none"}}},defaultVariants:{unstyled:!1}}),r=(0,e.styled)(u.SizableText,{name:"ListItemText",variants:{unstyled:{false:{color:"$color",userSelect:"none",flexGrow:1,flexShrink:1,ellipse:!0,cursor:"default"}}},defaultVariants:{unstyled:!1}}),c=(0,e.styled)(r,{name:"ListItemSubtitle",variants:{unstyled:{false:{opacity:.6,maxWidth:"100%",size:"$3",color:"$color"}}},defaultVariants:{unstyled:!1}}),b=(0,e.styled)(r,{name:"ListItemTitle"}),$=(o,{Text:n=r,Subtitle:i=c,Title:l=b}={Text:r,Subtitle:c,Title:b})=>{const{children:s,icon:w,iconAfter:A,noTextWrap:T,theme:B,space:K,spaceFlex:Q,scaleIcon:W=1,scaleSpace:v=1,subTitle:a,color:R,fontWeight:U,letterSpacing:Z,fontSize:_,fontFamily:V,textAlign:ee,textProps:te,title:d,...E}=o,f=(0,e.useMediaPropsActive)(o),S=f.size||"$true",N=`$${+String(S).replace("$","")-1}`,g=(0,C.getFontSize)(S)*W,G=(0,p.useGetThemedIcon)({size:g,color:R}),[y,h]=[w,A].map(G),z=(0,e.getVariableValue)((0,e.getTokens)().space[f.space]??g)*v,P=(0,u.wrapChildrenInText)(n,f);return{props:{fontFamily:V,...E,children:(0,t.jsxs)(t.Fragment,{children:[y?(0,t.jsxs)(t.Fragment,{children:[y,(0,t.jsx)(e.Spacer,{size:z})]}):null,d||a?(0,t.jsxs)(m.YStack,{flex:1,children:[T==="all"?d:(0,t.jsx)(l,{size:S,children:d}),a?(0,t.jsx)(t.Fragment,{children:typeof a=="string"&&T!=="all"?(0,t.jsx)(i,{size:N,children:a}):a}):null,P]}):P,h?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.Spacer,{size:z}),h]}):null]})}}},X=(0,F.forwardRef)((o,n)=>{const{props:i}=$(o);return(0,t.jsx)(I,{ref:n,justifyContent:"space-between",...i})}),k={inlineProps:new Set(["color","fontWeight","fontSize","fontFamily","letterSpacing","textAlign"])},j=(0,e.withStaticProperties)(I.extractable((0,e.themeable)(X,{componentName:L}),k),{Text:r,Subtitle:c});0&&(module.exports={ListItem,ListItemFrame,ListItemSubtitle,ListItemText,ListItemTitle,listItemStaticConfig,useListItem});
216
2
  //# sourceMappingURL=ListItem.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/ListItem.tsx"],
4
4
  "sourcesContent": ["import {\n FontSizeTokens,\n GetProps,\n Spacer,\n TamaguiElement,\n ThemeableProps,\n getTokens,\n getVariableValue,\n styled,\n themeable,\n useMediaPropsActive,\n withStaticProperties,\n} from '@tamagui/core'\nimport { getFontSize } from '@tamagui/font-size'\nimport { getSpace, useGetThemedIcon } from '@tamagui/helpers-tamagui'\nimport { ThemeableStack, YStack } from '@tamagui/stacks'\nimport { SizableText, TextParentStyles, wrapChildrenInText } from '@tamagui/text'\nimport React, { FunctionComponent, forwardRef } from 'react'\n\ntype ListItemIconProps = { color?: string; size?: number }\ntype IconProp = JSX.Element | FunctionComponent<ListItemIconProps> | null\n\nexport type ListItemProps = Omit<TextParentStyles, 'TextComponent' | 'noTextWrap'> &\n GetProps<typeof ListItemFrame> &\n ThemeableProps & {\n /**\n * add icon before, passes color and size automatically if Component\n */\n icon?: IconProp\n /**\n * add icon after, passes color and size automatically if Component\n */\n iconAfter?: IconProp\n /**\n * adjust icon relative to size\n */\n /**\n * default: -1\n */\n scaleIcon?: number\n /**\n * make the spacing elements flex\n */\n spaceFlex?: number | boolean\n /**\n * adjust internal space relative to icon size\n */\n scaleSpace?: number\n /**\n * title\n */\n title?: React.ReactNode\n /**\n * subtitle\n */\n subTitle?: React.ReactNode\n /**\n * will not wrap text around `children` only, \"all\" will not wrap title or subTitle\n */\n noTextWrap?: boolean | 'all'\n }\n\nconst NAME = 'ListItem'\n\nexport const ListItemFrame = styled(ThemeableStack, {\n name: NAME,\n tag: 'li',\n\n variants: {\n unstyled: {\n false: {\n size: '$true',\n alignItems: 'center',\n flexWrap: 'nowrap',\n width: '100%',\n borderColor: '$borderColor',\n maxWidth: '100%',\n overflow: 'hidden',\n flexDirection: 'row',\n backgroundColor: '$backgroundStrong',\n },\n },\n\n size: {\n '...size': (val, { tokens }) => {\n return {\n minHeight: tokens.size[val],\n paddingHorizontal: tokens.space[val],\n paddingVertical: getSpace(val, -2),\n }\n },\n },\n\n active: {\n true: {\n hoverStyle: {\n backgroundColor: '$background',\n },\n },\n },\n\n disabled: {\n true: {\n opacity: 0.5,\n // TODO breaking types\n pointerEvents: 'none' as any,\n },\n },\n } as const,\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemText = styled(SizableText, {\n name: 'ListItemText',\n\n variants: {\n unstyled: {\n false: {\n color: '$color',\n userSelect: 'none',\n flexGrow: 1,\n flexShrink: 1,\n ellipse: true,\n cursor: 'default',\n },\n },\n },\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemSubtitle = styled(ListItemText, {\n name: 'ListItemSubtitle',\n\n variants: {\n unstyled: {\n false: {\n opacity: 0.6,\n maxWidth: '100%',\n size: '$3',\n color: '$color',\n },\n },\n },\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemTitle = styled(ListItemText, {\n name: 'ListItemTitle',\n})\n\nexport const useListItem = (\n props: ListItemProps,\n {\n Text = ListItemText,\n Subtitle = ListItemSubtitle,\n Title = ListItemTitle,\n }: {\n Title?: any\n Subtitle?: any\n Text?: any\n } = { Text: ListItemText, Subtitle: ListItemSubtitle, Title: ListItemTitle }\n) => {\n // careful not to desctructure and re-order props, order is important\n const {\n children,\n icon,\n iconAfter,\n noTextWrap,\n theme: themeName,\n space,\n spaceFlex,\n scaleIcon = 1,\n scaleSpace = 1,\n subTitle,\n\n // text props\n color,\n fontWeight,\n letterSpacing,\n fontSize,\n fontFamily,\n textAlign,\n textProps,\n title,\n ...rest\n } = props\n\n const mediaActiveProps = useMediaPropsActive(props)\n const size = mediaActiveProps.size || '$true'\n const subtitleSize = `$${+String(size).replace('$', '') - 1}` as FontSizeTokens\n const iconSize = getFontSize(size) * scaleIcon\n const getThemedIcon = useGetThemedIcon({ size: iconSize, color })\n const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon)\n const spaceSize =\n getVariableValue(getTokens().space[mediaActiveProps.space as any] ?? iconSize) *\n scaleSpace\n // @ts-ignore noTextWrap = all is ok\n const contents = wrapChildrenInText(Text, mediaActiveProps)\n\n return {\n props: {\n fontFamily,\n ...rest,\n children: (\n <>\n {themedIcon ? (\n <>\n {themedIcon}\n <Spacer size={spaceSize} />\n </>\n ) : null}\n {/* helper for common title/subtitle pttern */}\n {title || subTitle ? (\n <YStack flex={1}>\n {noTextWrap === 'all' ? title : <Title size={size}>{title}</Title>}\n {subTitle ? (\n <>\n {typeof subTitle === 'string' && noTextWrap !== 'all' ? (\n // TODO can use theme but we need to standardize to alt themes\n // or standardize on subtle colors in themes\n <Subtitle size={subtitleSize}>{subTitle}</Subtitle>\n ) : (\n subTitle\n )}\n </>\n ) : null}\n {contents}\n </YStack>\n ) : (\n contents\n )}\n {themedIconAfter ? (\n <>\n <Spacer size={spaceSize} />\n {themedIconAfter}\n </>\n ) : null}\n </>\n ),\n },\n }\n}\n\nconst ListItemComponent = forwardRef<TamaguiElement, ListItemProps>((props, ref) => {\n const { props: listItemProps } = useListItem(props)\n return <ListItemFrame ref={ref} justifyContent=\"space-between\" {...listItemProps} />\n})\n\nexport const listItemStaticConfig = {\n inlineProps: new Set([\n // text props go here (can't really optimize them, but we never fully extract listItem anyway)\n 'color',\n 'fontWeight',\n 'fontSize',\n 'fontFamily',\n 'letterSpacing',\n 'textAlign',\n ]),\n}\n\nexport const ListItem = withStaticProperties(\n ListItemFrame.extractable(\n themeable(ListItemComponent, { componentName: NAME }),\n listItemStaticConfig\n ),\n {\n Text: ListItemText,\n Subtitle: ListItemSubtitle,\n }\n)\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuNY;AAvNZ,kBAYO;AACP,uBAA4B;AAC5B,6BAA2C;AAC3C,oBAAuC;AACvC,kBAAkE;AAClE,mBAAqD;AA6CrD,MAAM,OAAO;AAEN,MAAM,oBAAgB,oBAAO,8BAAgB;AAAA,EAClD,MAAM;AAAA,EACN,KAAK;AAAA,EAEL,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,QACP,aAAa;AAAA,QACb,UAAU;AAAA,QACV,UAAU;AAAA,QACV,eAAe;AAAA,QACf,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW,CAAC,KAAK,EAAE,OAAO,MAAM;AAC9B,eAAO;AAAA,UACL,WAAW,OAAO,KAAK,GAAG;AAAA,UAC1B,mBAAmB,OAAO,MAAM,GAAG;AAAA,UACnC,qBAAiB,iCAAS,KAAK,EAAE;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,IAEA,QAAQ;AAAA,MACN,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,SAAS;AAAA;AAAA,QAET,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC;AAEM,MAAM,mBAAe,oBAAO,yBAAa;AAAA,EAC9C,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC;AAEM,MAAM,uBAAmB,oBAAO,cAAc;AAAA,EACnD,MAAM;AAAA,EAEN,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,SAAS;AAAA,QACT,UAAU;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU;AAAA,EACZ;AACF,CAAC;AAEM,MAAM,oBAAgB,oBAAO,cAAc;AAAA,EAChD,MAAM;AACR,CAAC;AAEM,MAAM,cAAc,CACzB,OACA;AAAA,EACE,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AACV,IAII,EAAE,MAAM,cAAc,UAAU,kBAAkB,OAAO,cAAc,MACxE;AAEH,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa;AAAA,IACb;AAAA;AAAA,IAGA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,QAAM,uBAAmB,iCAAoB,KAAK;AAClD,QAAM,OAAO,iBAAiB,QAAQ;AACtC,QAAM,eAAe,IAAI,CAAC,OAAO,IAAI,EAAE,QAAQ,KAAK,EAAE,IAAI;AAC1D,QAAM,eAAW,8BAAY,IAAI,IAAI;AACrC,QAAM,oBAAgB,yCAAiB,EAAE,MAAM,UAAU,MAAM,CAAC;AAChE,QAAM,CAAC,YAAY,eAAe,IAAI,CAAC,MAAM,SAAS,EAAE,IAAI,aAAa;AACzE,QAAM,gBACJ,kCAAiB,uBAAU,EAAE,MAAM,iBAAiB,KAAY,KAAK,QAAQ,IAC7E;AAEF,QAAM,eAAW,gCAAmB,MAAM,gBAAgB;AAE1D,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,GAAG;AAAA,MACH,UACE,4EACG;AAAA,qBACC,4EACG;AAAA;AAAA,UACD,4CAAC,sBAAO,MAAM,WAAW;AAAA,WAC3B,IACE;AAAA,QAEH,SAAS,WACR,6CAAC,wBAAO,MAAM,GACX;AAAA,yBAAe,QAAQ,QAAQ,4CAAC,SAAM,MAAa,iBAAM;AAAA,UACzD,WACC,2EACG,iBAAO,aAAa,YAAY,eAAe;AAAA;AAAA;AAAA,YAG9C,4CAAC,YAAS,MAAM,cAAe,oBAAS;AAAA,cAExC,UAEJ,IACE;AAAA,UACH;AAAA,WACH,IAEA;AAAA,QAED,kBACC,4EACE;AAAA,sDAAC,sBAAO,MAAM,WAAW;AAAA,UACxB;AAAA,WACH,IACE;AAAA,SACN;AAAA,IAEJ;AAAA,EACF;AACF;AAEA,MAAM,wBAAoB,yBAA0C,CAAC,OAAO,QAAQ;AAClF,QAAM,EAAE,OAAO,cAAc,IAAI,YAAY,KAAK;AAClD,SAAO,4CAAC,iBAAc,KAAU,gBAAe,iBAAiB,GAAG,eAAe;AACpF,CAAC;AAEM,MAAM,uBAAuB;AAAA,EAClC,aAAa,oBAAI,IAAI;AAAA;AAAA,IAEnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEO,MAAM,eAAW;AAAA,EACtB,cAAc;AAAA,QACZ,uBAAU,mBAAmB,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF;",
6
- "names": []
5
+ "mappings": "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",
6
+ "names": ["ListItem_exports", "__export", "ListItem", "ListItemFrame", "ListItemSubtitle", "ListItemText", "ListItemTitle", "listItemStaticConfig", "useListItem", "__toCommonJS", "import_jsx_runtime", "import_core", "import_font_size", "import_helpers_tamagui", "import_stacks", "import_text", "import_react", "NAME", "val", "tokens", "props", "Text", "Subtitle", "Title", "children", "icon", "iconAfter", "noTextWrap", "themeName", "space", "spaceFlex", "scaleIcon", "scaleSpace", "subTitle", "color", "fontWeight", "letterSpacing", "fontSize", "fontFamily", "textAlign", "textProps", "title", "rest", "mediaActiveProps", "size", "subtitleSize", "iconSize", "getThemedIcon", "themedIcon", "themedIconAfter", "spaceSize", "contents", "ListItemComponent", "ref", "listItemProps"]
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -1,19 +1,2 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
8
- for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
12
- return to;
13
- };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
- var src_exports = {};
17
- module.exports = __toCommonJS(src_exports);
18
- __reExport(src_exports, require("./ListItem"), module.exports);
1
+ "use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(r,o,f,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!d.call(r,e)&&e!==f&&a(r,e,{get:()=>o[e],enumerable:!(x=b(o,e))||x.enumerable});return r},t=(r,o,f)=>(p(r,o,"default"),f&&p(f,o,"default"));var g=r=>p(a({},"__esModule",{value:!0}),r);var m={};module.exports=g(m);t(m,require("./ListItem"),module.exports);
19
2
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
4
  "sourcesContent": ["export * from './ListItem'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,uBAAd;",
6
- "names": []
5
+ "mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAAAE,EAAAF,EAAc,sBAAd",
6
+ "names": ["src_exports", "__toCommonJS", "__reExport"]
7
7
  }
@@ -1,194 +1,2 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import {
3
- Spacer,
4
- getTokens,
5
- getVariableValue,
6
- styled,
7
- themeable,
8
- useMediaPropsActive,
9
- withStaticProperties
10
- } from "@tamagui/core";
11
- import { getFontSize } from "@tamagui/font-size";
12
- import { getSpace, useGetThemedIcon } from "@tamagui/helpers-tamagui";
13
- import { ThemeableStack, YStack } from "@tamagui/stacks";
14
- import { SizableText, wrapChildrenInText } from "@tamagui/text";
15
- import { forwardRef } from "react";
16
- const NAME = "ListItem";
17
- const ListItemFrame = styled(ThemeableStack, {
18
- name: NAME,
19
- tag: "li",
20
- variants: {
21
- unstyled: {
22
- false: {
23
- size: "$true",
24
- alignItems: "center",
25
- flexWrap: "nowrap",
26
- width: "100%",
27
- borderColor: "$borderColor",
28
- maxWidth: "100%",
29
- overflow: "hidden",
30
- flexDirection: "row",
31
- backgroundColor: "$backgroundStrong"
32
- }
33
- },
34
- size: {
35
- "...size": (val, { tokens }) => {
36
- return {
37
- minHeight: tokens.size[val],
38
- paddingHorizontal: tokens.space[val],
39
- paddingVertical: getSpace(val, -2)
40
- };
41
- }
42
- },
43
- active: {
44
- true: {
45
- hoverStyle: {
46
- backgroundColor: "$background"
47
- }
48
- }
49
- },
50
- disabled: {
51
- true: {
52
- opacity: 0.5,
53
- // TODO breaking types
54
- pointerEvents: "none"
55
- }
56
- }
57
- },
58
- defaultVariants: {
59
- unstyled: false
60
- }
61
- });
62
- const ListItemText = styled(SizableText, {
63
- name: "ListItemText",
64
- variants: {
65
- unstyled: {
66
- false: {
67
- color: "$color",
68
- userSelect: "none",
69
- flexGrow: 1,
70
- flexShrink: 1,
71
- ellipse: true,
72
- cursor: "default"
73
- }
74
- }
75
- },
76
- defaultVariants: {
77
- unstyled: false
78
- }
79
- });
80
- const ListItemSubtitle = styled(ListItemText, {
81
- name: "ListItemSubtitle",
82
- variants: {
83
- unstyled: {
84
- false: {
85
- opacity: 0.6,
86
- maxWidth: "100%",
87
- size: "$3",
88
- color: "$color"
89
- }
90
- }
91
- },
92
- defaultVariants: {
93
- unstyled: false
94
- }
95
- });
96
- const ListItemTitle = styled(ListItemText, {
97
- name: "ListItemTitle"
98
- });
99
- const useListItem = (props, {
100
- Text = ListItemText,
101
- Subtitle = ListItemSubtitle,
102
- Title = ListItemTitle
103
- } = { Text: ListItemText, Subtitle: ListItemSubtitle, Title: ListItemTitle }) => {
104
- const {
105
- children,
106
- icon,
107
- iconAfter,
108
- noTextWrap,
109
- theme: themeName,
110
- space,
111
- spaceFlex,
112
- scaleIcon = 1,
113
- scaleSpace = 1,
114
- subTitle,
115
- // text props
116
- color,
117
- fontWeight,
118
- letterSpacing,
119
- fontSize,
120
- fontFamily,
121
- textAlign,
122
- textProps,
123
- title,
124
- ...rest
125
- } = props;
126
- const mediaActiveProps = useMediaPropsActive(props);
127
- const size = mediaActiveProps.size || "$true";
128
- const subtitleSize = `$${+String(size).replace("$", "") - 1}`;
129
- const iconSize = getFontSize(size) * scaleIcon;
130
- const getThemedIcon = useGetThemedIcon({ size: iconSize, color });
131
- const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon);
132
- const spaceSize = getVariableValue(getTokens().space[mediaActiveProps.space] ?? iconSize) * scaleSpace;
133
- const contents = wrapChildrenInText(Text, mediaActiveProps);
134
- return {
135
- props: {
136
- fontFamily,
137
- ...rest,
138
- children: /* @__PURE__ */ jsxs(Fragment, { children: [
139
- themedIcon ? /* @__PURE__ */ jsxs(Fragment, { children: [
140
- themedIcon,
141
- /* @__PURE__ */ jsx(Spacer, { size: spaceSize })
142
- ] }) : null,
143
- title || subTitle ? /* @__PURE__ */ jsxs(YStack, { flex: 1, children: [
144
- noTextWrap === "all" ? title : /* @__PURE__ */ jsx(Title, { size, children: title }),
145
- subTitle ? /* @__PURE__ */ jsx(Fragment, { children: typeof subTitle === "string" && noTextWrap !== "all" ? (
146
- // TODO can use theme but we need to standardize to alt themes
147
- // or standardize on subtle colors in themes
148
- /* @__PURE__ */ jsx(Subtitle, { size: subtitleSize, children: subTitle })
149
- ) : subTitle }) : null,
150
- contents
151
- ] }) : contents,
152
- themedIconAfter ? /* @__PURE__ */ jsxs(Fragment, { children: [
153
- /* @__PURE__ */ jsx(Spacer, { size: spaceSize }),
154
- themedIconAfter
155
- ] }) : null
156
- ] })
157
- }
158
- };
159
- };
160
- const ListItemComponent = forwardRef((props, ref) => {
161
- const { props: listItemProps } = useListItem(props);
162
- return /* @__PURE__ */ jsx(ListItemFrame, { ref, justifyContent: "space-between", ...listItemProps });
163
- });
164
- const listItemStaticConfig = {
165
- inlineProps: /* @__PURE__ */ new Set([
166
- // text props go here (can't really optimize them, but we never fully extract listItem anyway)
167
- "color",
168
- "fontWeight",
169
- "fontSize",
170
- "fontFamily",
171
- "letterSpacing",
172
- "textAlign"
173
- ])
174
- };
175
- const ListItem = withStaticProperties(
176
- ListItemFrame.extractable(
177
- themeable(ListItemComponent, { componentName: NAME }),
178
- listItemStaticConfig
179
- ),
180
- {
181
- Text: ListItemText,
182
- Subtitle: ListItemSubtitle
183
- }
184
- );
185
- export {
186
- ListItem,
187
- ListItemFrame,
188
- ListItemSubtitle,
189
- ListItemText,
190
- ListItemTitle,
191
- listItemStaticConfig,
192
- useListItem
193
- };
1
+ import{Fragment as r,jsx as o,jsxs as a}from"react/jsx-runtime";import{Spacer as T,getTokens as v,getVariableValue as R,styled as s,themeable as V,useMediaPropsActive as E,withStaticProperties as N}from"@tamagui/core";import{getFontSize as G}from"@tamagui/font-size";import{getSpace as H,useGetThemedIcon as M}from"@tamagui/helpers-tamagui";import{ThemeableStack as Y,YStack as D}from"@tamagui/stacks";import{SizableText as J,wrapChildrenInText as O}from"@tamagui/text";import{forwardRef as X}from"react";const g="ListItem",y=s(Y,{name:g,tag:"li",variants:{unstyled:{false:{size:"$true",alignItems:"center",flexWrap:"nowrap",width:"100%",borderColor:"$borderColor",maxWidth:"100%",overflow:"hidden",flexDirection:"row",backgroundColor:"$backgroundStrong"}},size:{"...size":(e,{tokens:t})=>({minHeight:t.size[e],paddingHorizontal:t.space[e],paddingVertical:H(e,-2)})},active:{true:{hoverStyle:{backgroundColor:"$background"}}},disabled:{true:{opacity:.5,pointerEvents:"none"}}},defaultVariants:{unstyled:!1}}),i=s(J,{name:"ListItemText",variants:{unstyled:{false:{color:"$color",userSelect:"none",flexGrow:1,flexShrink:1,ellipse:!0,cursor:"default"}}},defaultVariants:{unstyled:!1}}),u=s(i,{name:"ListItemSubtitle",variants:{unstyled:{false:{opacity:.6,maxWidth:"100%",size:"$3",color:"$color"}}},defaultVariants:{unstyled:!1}}),h=s(i,{name:"ListItemTitle"}),j=(e,{Text:t=i,Subtitle:l=u,Title:z=h}={Text:i,Subtitle:u,Title:h})=>{const{children:K,icon:P,iconAfter:L,noTextWrap:d,theme:Q,space:U,spaceFlex:Z,scaleIcon:C=1,scaleSpace:F=1,subTitle:n,color:$,fontWeight:_,letterSpacing:ee,fontSize:te,fontFamily:k,textAlign:oe,textProps:ne,title:c,...w}=e,p=E(e),m=p.size||"$true",A=`$${+String(m).replace("$","")-1}`,f=G(m)*C,W=M({size:f,color:$}),[S,x]=[P,L].map(W),I=R(v().space[p.space]??f)*F,b=O(t,p);return{props:{fontFamily:k,...w,children:a(r,{children:[S?a(r,{children:[S,o(T,{size:I})]}):null,c||n?a(D,{flex:1,children:[d==="all"?c:o(z,{size:m,children:c}),n?o(r,{children:typeof n=="string"&&d!=="all"?o(l,{size:A,children:n}):n}):null,b]}):b,x?a(r,{children:[o(T,{size:I}),x]}):null]})}}},q=X((e,t)=>{const{props:l}=j(e);return o(y,{ref:t,justifyContent:"space-between",...l})}),B={inlineProps:new Set(["color","fontWeight","fontSize","fontFamily","letterSpacing","textAlign"])},Ie=N(y.extractable(V(q,{componentName:g}),B),{Text:i,Subtitle:u});export{Ie as ListItem,y as ListItemFrame,u as ListItemSubtitle,i as ListItemText,h as ListItemTitle,B as listItemStaticConfig,j as useListItem};
194
2
  //# sourceMappingURL=ListItem.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/ListItem.tsx"],
4
4
  "sourcesContent": ["import {\n FontSizeTokens,\n GetProps,\n Spacer,\n TamaguiElement,\n ThemeableProps,\n getTokens,\n getVariableValue,\n styled,\n themeable,\n useMediaPropsActive,\n withStaticProperties,\n} from '@tamagui/core'\nimport { getFontSize } from '@tamagui/font-size'\nimport { getSpace, useGetThemedIcon } from '@tamagui/helpers-tamagui'\nimport { ThemeableStack, YStack } from '@tamagui/stacks'\nimport { SizableText, TextParentStyles, wrapChildrenInText } from '@tamagui/text'\nimport React, { FunctionComponent, forwardRef } from 'react'\n\ntype ListItemIconProps = { color?: string; size?: number }\ntype IconProp = JSX.Element | FunctionComponent<ListItemIconProps> | null\n\nexport type ListItemProps = Omit<TextParentStyles, 'TextComponent' | 'noTextWrap'> &\n GetProps<typeof ListItemFrame> &\n ThemeableProps & {\n /**\n * add icon before, passes color and size automatically if Component\n */\n icon?: IconProp\n /**\n * add icon after, passes color and size automatically if Component\n */\n iconAfter?: IconProp\n /**\n * adjust icon relative to size\n */\n /**\n * default: -1\n */\n scaleIcon?: number\n /**\n * make the spacing elements flex\n */\n spaceFlex?: number | boolean\n /**\n * adjust internal space relative to icon size\n */\n scaleSpace?: number\n /**\n * title\n */\n title?: React.ReactNode\n /**\n * subtitle\n */\n subTitle?: React.ReactNode\n /**\n * will not wrap text around `children` only, \"all\" will not wrap title or subTitle\n */\n noTextWrap?: boolean | 'all'\n }\n\nconst NAME = 'ListItem'\n\nexport const ListItemFrame = styled(ThemeableStack, {\n name: NAME,\n tag: 'li',\n\n variants: {\n unstyled: {\n false: {\n size: '$true',\n alignItems: 'center',\n flexWrap: 'nowrap',\n width: '100%',\n borderColor: '$borderColor',\n maxWidth: '100%',\n overflow: 'hidden',\n flexDirection: 'row',\n backgroundColor: '$backgroundStrong',\n },\n },\n\n size: {\n '...size': (val, { tokens }) => {\n return {\n minHeight: tokens.size[val],\n paddingHorizontal: tokens.space[val],\n paddingVertical: getSpace(val, -2),\n }\n },\n },\n\n active: {\n true: {\n hoverStyle: {\n backgroundColor: '$background',\n },\n },\n },\n\n disabled: {\n true: {\n opacity: 0.5,\n // TODO breaking types\n pointerEvents: 'none' as any,\n },\n },\n } as const,\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemText = styled(SizableText, {\n name: 'ListItemText',\n\n variants: {\n unstyled: {\n false: {\n color: '$color',\n userSelect: 'none',\n flexGrow: 1,\n flexShrink: 1,\n ellipse: true,\n cursor: 'default',\n },\n },\n },\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemSubtitle = styled(ListItemText, {\n name: 'ListItemSubtitle',\n\n variants: {\n unstyled: {\n false: {\n opacity: 0.6,\n maxWidth: '100%',\n size: '$3',\n color: '$color',\n },\n },\n },\n\n defaultVariants: {\n unstyled: false,\n },\n})\n\nexport const ListItemTitle = styled(ListItemText, {\n name: 'ListItemTitle',\n})\n\nexport const useListItem = (\n props: ListItemProps,\n {\n Text = ListItemText,\n Subtitle = ListItemSubtitle,\n Title = ListItemTitle,\n }: {\n Title?: any\n Subtitle?: any\n Text?: any\n } = { Text: ListItemText, Subtitle: ListItemSubtitle, Title: ListItemTitle }\n) => {\n // careful not to desctructure and re-order props, order is important\n const {\n children,\n icon,\n iconAfter,\n noTextWrap,\n theme: themeName,\n space,\n spaceFlex,\n scaleIcon = 1,\n scaleSpace = 1,\n subTitle,\n\n // text props\n color,\n fontWeight,\n letterSpacing,\n fontSize,\n fontFamily,\n textAlign,\n textProps,\n title,\n ...rest\n } = props\n\n const mediaActiveProps = useMediaPropsActive(props)\n const size = mediaActiveProps.size || '$true'\n const subtitleSize = `$${+String(size).replace('$', '') - 1}` as FontSizeTokens\n const iconSize = getFontSize(size) * scaleIcon\n const getThemedIcon = useGetThemedIcon({ size: iconSize, color })\n const [themedIcon, themedIconAfter] = [icon, iconAfter].map(getThemedIcon)\n const spaceSize =\n getVariableValue(getTokens().space[mediaActiveProps.space as any] ?? iconSize) *\n scaleSpace\n // @ts-ignore noTextWrap = all is ok\n const contents = wrapChildrenInText(Text, mediaActiveProps)\n\n return {\n props: {\n fontFamily,\n ...rest,\n children: (\n <>\n {themedIcon ? (\n <>\n {themedIcon}\n <Spacer size={spaceSize} />\n </>\n ) : null}\n {/* helper for common title/subtitle pttern */}\n {title || subTitle ? (\n <YStack flex={1}>\n {noTextWrap === 'all' ? title : <Title size={size}>{title}</Title>}\n {subTitle ? (\n <>\n {typeof subTitle === 'string' && noTextWrap !== 'all' ? (\n // TODO can use theme but we need to standardize to alt themes\n // or standardize on subtle colors in themes\n <Subtitle size={subtitleSize}>{subTitle}</Subtitle>\n ) : (\n subTitle\n )}\n </>\n ) : null}\n {contents}\n </YStack>\n ) : (\n contents\n )}\n {themedIconAfter ? (\n <>\n <Spacer size={spaceSize} />\n {themedIconAfter}\n </>\n ) : null}\n </>\n ),\n },\n }\n}\n\nconst ListItemComponent = forwardRef<TamaguiElement, ListItemProps>((props, ref) => {\n const { props: listItemProps } = useListItem(props)\n return <ListItemFrame ref={ref} justifyContent=\"space-between\" {...listItemProps} />\n})\n\nexport const listItemStaticConfig = {\n inlineProps: new Set([\n // text props go here (can't really optimize them, but we never fully extract listItem anyway)\n 'color',\n 'fontWeight',\n 'fontSize',\n 'fontFamily',\n 'letterSpacing',\n 'textAlign',\n ]),\n}\n\nexport const ListItem = withStaticProperties(\n ListItemFrame.extractable(\n themeable(ListItemComponent, { componentName: NAME }),\n listItemStaticConfig\n ),\n {\n Text: ListItemText,\n Subtitle: ListItemSubtitle,\n }\n)\n"],
5
- "mappings": "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",
6
- "names": []
5
+ "mappings": "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",
6
+ "names": ["Fragment", "jsx", "jsxs", "Spacer", "getTokens", "getVariableValue", "styled", "themeable", "useMediaPropsActive", "withStaticProperties", "getFontSize", "getSpace", "useGetThemedIcon", "ThemeableStack", "YStack", "SizableText", "wrapChildrenInText", "forwardRef", "NAME", "ListItemFrame", "val", "tokens", "ListItemText", "ListItemSubtitle", "ListItemTitle", "useListItem", "props", "Text", "Subtitle", "Title", "children", "icon", "iconAfter", "noTextWrap", "themeName", "space", "spaceFlex", "scaleIcon", "scaleSpace", "subTitle", "color", "fontWeight", "letterSpacing", "fontSize", "fontFamily", "textAlign", "textProps", "title", "rest", "mediaActiveProps", "size", "subtitleSize", "iconSize", "getThemedIcon", "themedIcon", "themedIconAfter", "spaceSize", "contents", "ListItemComponent", "ref", "listItemProps", "listItemStaticConfig", "ListItem"]
7
7
  }