@tamagui/stacks 1.0.0-beta.8 → 1.0.1-beta.100

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.
Files changed (53) hide show
  1. package/dist/cjs/SizableStack.js +9 -65
  2. package/dist/cjs/SizableStack.js.map +2 -2
  3. package/dist/cjs/Stacks.js +30 -25
  4. package/dist/cjs/Stacks.js.map +2 -2
  5. package/dist/cjs/ThemeableSizableStack.js +70 -0
  6. package/dist/cjs/ThemeableSizableStack.js.map +7 -0
  7. package/dist/cjs/ThemeableStack.js +61 -0
  8. package/dist/cjs/ThemeableStack.js.map +7 -0
  9. package/dist/cjs/index.js +1 -0
  10. package/dist/cjs/index.js.map +2 -2
  11. package/dist/cjs/variants.js +138 -0
  12. package/dist/cjs/variants.js.map +7 -0
  13. package/dist/esm/SizableStack.js +10 -66
  14. package/dist/esm/SizableStack.js.map +2 -2
  15. package/dist/esm/Stacks.js +29 -26
  16. package/dist/esm/Stacks.js.map +2 -2
  17. package/dist/esm/ThemeableSizableStack.js +47 -0
  18. package/dist/esm/ThemeableSizableStack.js.map +7 -0
  19. package/dist/esm/ThemeableStack.js +47 -0
  20. package/dist/esm/ThemeableStack.js.map +7 -0
  21. package/dist/esm/index.js +1 -0
  22. package/dist/esm/index.js.map +2 -2
  23. package/dist/esm/variants.js +110 -0
  24. package/dist/esm/variants.js.map +7 -0
  25. package/dist/jsx/SizableStack.js +11 -66
  26. package/dist/jsx/SizableStack.js.map +7 -0
  27. package/dist/jsx/Stacks.js +30 -26
  28. package/dist/jsx/Stacks.js.map +7 -0
  29. package/dist/jsx/ThemeableSizableStack.js +46 -0
  30. package/dist/jsx/ThemeableStack.js +47 -0
  31. package/dist/jsx/ThemeableStack.js.map +7 -0
  32. package/dist/jsx/index.js +2 -0
  33. package/dist/jsx/index.js.map +7 -0
  34. package/dist/jsx/variants.js +97 -0
  35. package/dist/jsx/variants.js.map +7 -0
  36. package/package.json +8 -5
  37. package/src/SizableStack.tsx +29 -0
  38. package/src/Stacks.tsx +91 -0
  39. package/src/ThemeableStack.tsx +53 -0
  40. package/src/index.ts +3 -0
  41. package/src/variants.tsx +98 -0
  42. package/types/SizableStack.d.ts +35 -39
  43. package/types/SizableStack.d.ts.map +1 -1
  44. package/types/Stacks.d.ts +34 -33
  45. package/types/Stacks.d.ts.map +1 -1
  46. package/types/ThemeableSizableStack.d.ts +68 -0
  47. package/types/ThemeableSizableStack.d.ts.map +1 -0
  48. package/types/ThemeableStack.d.ts +68 -0
  49. package/types/ThemeableStack.d.ts.map +1 -0
  50. package/types/index.d.ts +1 -0
  51. package/types/index.d.ts.map +1 -1
  52. package/types/variants.d.ts +269 -0
  53. package/types/variants.d.ts.map +1 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/SizableStack.tsx"],
4
- "sourcesContent": ["import { GetProps, getButtonSize, styled } from '@tamagui/core'\n\nimport { XStack } from './Stacks'\n\nexport const SizableStack = styled(XStack, {\n name: 'SizableStack',\n backgroundColor: '$background',\n flexDirection: 'row',\n flexShrink: 1,\n\n variants: {\n // allows the type to come in for use in size\n fontFamily: () => ({}),\n\n hoverable: {\n true: {\n hoverStyle: {\n backgroundColor: '$backgroundHover',\n borderColor: '$borderColorHover',\n },\n },\n false: {\n hoverStyle: {\n backgroundColor: '$background',\n borderColor: '$borderColor',\n },\n },\n },\n\n pressable: {\n true: {\n pressStyle: {\n backgroundColor: '$backgroundPress',\n borderColor: '$borderColorPress',\n },\n },\n false: {\n pressStyle: {\n backgroundColor: '$background',\n borderColor: '$borderColor',\n },\n },\n },\n\n focusable: {\n true: {\n focusStyle: {\n backgroundColor: '$backgroundFocus',\n borderColor: '$borderColorFocus',\n },\n },\n },\n\n bordered: {\n true: {\n borderWidth: 1,\n borderColor: '$borderColor',\n },\n },\n\n size: {\n '...size': getButtonSize(),\n },\n\n disabled: {\n true: {\n // pointerEvents: 'none',\n opacity: 0.45,\n backgroundColor: '$background',\n hoverStyle: {\n backgroundColor: '$background',\n },\n },\n },\n\n transparent: {\n true: {\n backgroundColor: 'transparent',\n },\n },\n\n chromeless: {\n true: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n shadowColor: 'transparent',\n // this would be a breaking change...\n // hoverStyle: {\n // backgroundColor: 'transparent',\n // },\n },\n },\n },\n})\n\nexport type SizableStackProps = GetProps<typeof SizableStack>\n"],
5
- "mappings": "AAAA;AAEA;AAEO,MAAM,eAAe,OAAO,QAAQ;AAAA,EACzC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,YAAY;AAAA,EAEZ,UAAU;AAAA,IAER,YAAY,MAAO,EAAC;AAAA,IAEpB,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,OAAO;AAAA,QACL,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,YAAY;AAAA,UACV,iBAAiB;AAAA,UACjB,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW,cAAc;AAAA,IAC3B;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QAEJ,SAAS;AAAA,QACT,iBAAiB;AAAA,QACjB,YAAY;AAAA,UACV,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,MAKf;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
4
+ "sourcesContent": ["import { GetProps, getButtonSize, styled } from '@tamagui/core'\n\nimport { YStack } from './Stacks'\nimport { bordered, circular, elevate, focusTheme, hoverTheme, pressTheme } from './variants'\n\nexport const SizableStack = styled(YStack, {\n name: 'SizableStack',\n backgroundColor: '$background',\n flexDirection: 'row',\n flexShrink: 1,\n\n variants: {\n // allows the type to come in for use in size\n fontFamily: () => ({}),\n\n hoverTheme,\n pressTheme,\n focusTheme,\n circular,\n elevate,\n bordered,\n\n size: {\n '...size': getButtonSize,\n },\n },\n})\n\nexport type SizableStackProps = GetProps<typeof SizableStack>\n"],
5
+ "mappings": "AAAA;AAEA;AACA;AAEO,MAAM,eAAe,OAAO,QAAQ;AAAA,EACzC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,YAAY;AAAA,EAEZ,UAAU;AAAA,IAER,YAAY,MAAO,EAAC;AAAA,IAEpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,EACF;AACF,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,17 +1,17 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
1
  import {
4
2
  Stack,
5
3
  getVariableValue,
6
4
  isVariable,
7
5
  styled
8
6
  } from "@tamagui/core";
9
- const getElevation = /* @__PURE__ */ __name((size, extras) => {
7
+ const getElevation = (size, extras) => {
8
+ if (!size)
9
+ return;
10
10
  const { tokens } = extras;
11
11
  const token = tokens.size[size];
12
12
  const sizeNum = isVariable(token) ? +token.val : size;
13
13
  return getSizedElevation(sizeNum, extras);
14
- }, "getElevation");
14
+ };
15
15
  const fullscreenStyle = {
16
16
  position: "absolute",
17
17
  top: 0,
@@ -19,29 +19,23 @@ const fullscreenStyle = {
19
19
  right: 0,
20
20
  bottom: 0
21
21
  };
22
+ const variants = {
23
+ fullscreen: {
24
+ true: fullscreenStyle
25
+ },
26
+ elevation: {
27
+ "...size": getElevation
28
+ }
29
+ };
22
30
  const YStack = styled(Stack, {
23
31
  flexDirection: "column",
24
32
  name: "YStack",
25
- variants: {
26
- fullscreen: {
27
- true: fullscreenStyle
28
- },
29
- elevation: {
30
- "...size": getElevation
31
- }
32
- }
33
+ variants
33
34
  });
34
35
  const XStack = styled(Stack, {
35
36
  flexDirection: "row",
36
37
  name: "XStack",
37
- variants: {
38
- fullscreen: {
39
- true: fullscreenStyle
40
- },
41
- elevation: {
42
- "...size": getElevation
43
- }
44
- }
38
+ variants
45
39
  });
46
40
  const ZStack = styled(YStack, {
47
41
  name: "ZStack",
@@ -50,14 +44,22 @@ const ZStack = styled(YStack, {
50
44
  neverFlatten: true,
51
45
  isZStack: true
52
46
  });
53
- const getSizedElevation = /* @__PURE__ */ __name((val, { theme, tokens }) => {
54
- const num = val === false ? 0 : val === true ? (() => {
47
+ const getSizedElevation = (val, { theme, tokens }) => {
48
+ let num = 0;
49
+ if (val === true) {
55
50
  const val2 = getVariableValue(tokens.size["true"]);
56
51
  if (typeof val2 === "number") {
57
- return val2;
52
+ num = val2;
53
+ } else {
54
+ num = 10;
58
55
  }
59
- return 10;
60
- })() : +val;
56
+ } else {
57
+ num = +val;
58
+ }
59
+ if (process.env.NODE_ENV === "development") {
60
+ if (isNaN(num))
61
+ console.warn("NaN shadow", num, val);
62
+ }
61
63
  const [height, shadowRadius] = [Math.round(num / 4 + 1), Math.round(num / 2 + 2)];
62
64
  const shadow = {
63
65
  shadowColor: theme.shadowColor,
@@ -65,11 +67,12 @@ const getSizedElevation = /* @__PURE__ */ __name((val, { theme, tokens }) => {
65
67
  shadowOffset: { height, width: 0 }
66
68
  };
67
69
  return shadow;
68
- }, "getSizedElevation");
70
+ };
69
71
  export {
70
72
  XStack,
71
73
  YStack,
72
74
  ZStack,
75
+ getElevation,
73
76
  getSizedElevation
74
77
  };
75
78
  //# sourceMappingURL=Stacks.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Stacks.tsx"],
4
- "sourcesContent": ["import {\n GetProps,\n SizeTokens,\n SizeVariantSpreadFunction,\n Stack,\n StackProps,\n VariantSpreadExtras,\n getVariableValue,\n isVariable,\n styled,\n} from '@tamagui/core'\n\nexport type YStackProps = GetProps<typeof YStack>\nexport type XStackProps = GetProps<typeof YStack>\nexport type ZStackProps = GetProps<typeof ZStack>\n\nconst getElevation: SizeVariantSpreadFunction<StackProps> = (size, extras) => {\n const { tokens } = extras\n const token = tokens.size[size]\n const sizeNum = (isVariable(token) ? +token.val : size) as number\n // TODO this could be configurable with require('tamagui').configure({ elevation: () => {} })\n return getSizedElevation(sizeNum, extras)\n}\n\nconst fullscreenStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n} as const\n\nexport const YStack = styled(Stack, {\n flexDirection: 'column',\n name: 'YStack',\n variants: {\n fullscreen: {\n true: fullscreenStyle,\n },\n elevation: {\n '...size': getElevation,\n },\n },\n})\n\nexport const XStack = styled(Stack, {\n flexDirection: 'row',\n name: 'XStack',\n variants: {\n fullscreen: {\n true: fullscreenStyle,\n },\n elevation: {\n '...size': getElevation,\n },\n },\n})\n\nexport const ZStack = styled(\n YStack,\n {\n name: 'ZStack',\n position: 'relative',\n },\n {\n neverFlatten: true,\n isZStack: true,\n }\n)\n\nexport const getSizedElevation = (\n val: SizeTokens | number | boolean,\n { theme, tokens }: VariantSpreadExtras<any>\n) => {\n const num =\n val === false\n ? 0\n : val === true\n ? // handles true\n (() => {\n const val = getVariableValue(tokens.size['true'])\n if (typeof val === 'number') {\n return val\n }\n return 10\n })()\n : +val\n const [height, shadowRadius] = [Math.round(num / 4 + 1), Math.round(num / 2 + 2)]\n const shadow = {\n shadowColor: theme.shadowColor,\n shadowRadius,\n shadowOffset: { height, width: 0 },\n }\n return shadow\n}\n"],
5
- "mappings": ";;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,MAAM,eAAsD,wBAAC,MAAM,WAAW;AAC5E,QAAM,EAAE,WAAW;AACnB,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,UAAW,WAAW,KAAK,IAAI,CAAC,MAAM,MAAM;AAElD,SAAO,kBAAkB,SAAS,MAAM;AAC1C,GAN4D;AAQ5D,MAAM,kBAAkB;AAAA,EACtB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEO,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN,UAAU;AAAA,IACR,YAAY;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN,UAAU;AAAA,IACR,YAAY;AAAA,MACV,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AACF,CAAC;AAEM,MAAM,SAAS,OACpB,QACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,GACA;AAAA,EACE,cAAc;AAAA,EACd,UAAU;AACZ,CACF;AAEO,MAAM,oBAAoB,wBAC/B,KACA,EAAE,OAAO,aACN;AACH,QAAM,MACJ,QAAQ,QACJ,IACA,QAAQ,OAEP,OAAM;AACL,UAAM,OAAM,iBAAiB,OAAO,KAAK,OAAO;AAChD,QAAI,OAAO,SAAQ,UAAU;AAC3B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,IACH,CAAC;AACP,QAAM,CAAC,QAAQ,gBAAgB,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC;AAChF,QAAM,SAAS;AAAA,IACb,aAAa,MAAM;AAAA,IACnB;AAAA,IACA,cAAc,EAAE,QAAQ,OAAO,EAAE;AAAA,EACnC;AACA,SAAO;AACT,GAxBiC;",
4
+ "sourcesContent": ["import {\n GetProps,\n SizeTokens,\n SizeVariantSpreadFunction,\n Stack,\n StackProps,\n VariantSpreadExtras,\n getVariableValue,\n isVariable,\n styled,\n} from '@tamagui/core'\n\nexport type YStackProps = GetProps<typeof YStack>\nexport type XStackProps = YStackProps\nexport type ZStackProps = YStackProps\n\nexport const getElevation: SizeVariantSpreadFunction<StackProps> = (size, extras) => {\n if (!size) return\n const { tokens } = extras\n const token = tokens.size[size]\n const sizeNum = (isVariable(token) ? +token.val : size) as number\n return getSizedElevation(sizeNum, extras)\n}\n\nconst fullscreenStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n} as const\n\nconst variants = {\n fullscreen: {\n true: fullscreenStyle,\n },\n elevation: {\n '...size': getElevation,\n },\n} as const\n\nexport const YStack = styled(Stack, {\n flexDirection: 'column',\n name: 'YStack',\n variants,\n})\n\nexport const XStack = styled(Stack, {\n flexDirection: 'row',\n name: 'XStack',\n variants,\n})\n\nexport const ZStack = styled(\n YStack,\n {\n name: 'ZStack',\n position: 'relative',\n },\n {\n neverFlatten: true,\n isZStack: true,\n }\n)\n\nexport const getSizedElevation = (\n val: SizeTokens | number | boolean,\n { theme, tokens }: VariantSpreadExtras<any>\n) => {\n let num = 0\n if (val === true) {\n const val = getVariableValue(tokens.size['true'])\n if (typeof val === 'number') {\n num = val\n } else {\n num = 10\n }\n } else {\n num = +val\n }\n if (process.env.NODE_ENV === 'development') {\n if (isNaN(num)) console.warn('NaN shadow', num, val)\n }\n const [height, shadowRadius] = [Math.round(num / 4 + 1), Math.round(num / 2 + 2)]\n const shadow = {\n shadowColor: theme.shadowColor,\n shadowRadius,\n shadowOffset: { height, width: 0 },\n }\n return shadow\n}\n"],
5
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,eAAsD,CAAC,MAAM,WAAW;AACnF,MAAI,CAAC;AAAM;AACX,QAAM,EAAE,WAAW;AACnB,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,UAAW,WAAW,KAAK,IAAI,CAAC,MAAM,MAAM;AAClD,SAAO,kBAAkB,SAAS,MAAM;AAC1C;AAEA,MAAM,kBAAkB;AAAA,EACtB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEA,MAAM,WAAW;AAAA,EACf,YAAY;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACT,WAAW;AAAA,EACb;AACF;AAEO,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN;AACF,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN;AACF,CAAC;AAEM,MAAM,SAAS,OACpB,QACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,GACA;AAAA,EACE,cAAc;AAAA,EACd,UAAU;AACZ,CACF;AAEO,MAAM,oBAAoB,CAC/B,KACA,EAAE,OAAO,aACN;AACH,MAAI,MAAM;AACV,MAAI,QAAQ,MAAM;AAChB,UAAM,OAAM,iBAAiB,OAAO,KAAK,OAAO;AAChD,QAAI,OAAO,SAAQ,UAAU;AAC3B,YAAM;AAAA,IACR,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF,OAAO;AACL,UAAM,CAAC;AAAA,EACT;AACA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,MAAM,GAAG;AAAG,cAAQ,KAAK,cAAc,KAAK,GAAG;AAAA,EACrD;AACA,QAAM,CAAC,QAAQ,gBAAgB,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC;AAChF,QAAM,SAAS;AAAA,IACb,aAAa,MAAM;AAAA,IACnB;AAAA,IACA,cAAc,EAAE,QAAQ,OAAO,EAAE;AAAA,EACnC;AACA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,47 @@
1
+ import { getButtonSize, styled } from "@tamagui/core";
2
+ import { YStack } from "./Stacks";
3
+ import { bordered, circular, elevate, focusable, hoverable, pad, pressable } from "./variants";
4
+ const ThemeableSizableStack = styled(YStack, {
5
+ name: "SizableStack",
6
+ backgroundColor: "$background",
7
+ flexDirection: "row",
8
+ flexShrink: 1,
9
+ variants: {
10
+ fontFamily: () => ({}),
11
+ hoverable,
12
+ pressable,
13
+ focusable,
14
+ circular,
15
+ pad,
16
+ elevate,
17
+ bordered,
18
+ size: {
19
+ "...size": getButtonSize
20
+ },
21
+ disabled: {
22
+ true: {
23
+ opacity: 0.45,
24
+ backgroundColor: "$background",
25
+ hoverStyle: {
26
+ backgroundColor: "$background"
27
+ }
28
+ }
29
+ },
30
+ transparent: {
31
+ true: {
32
+ backgroundColor: "transparent"
33
+ }
34
+ },
35
+ chromeless: {
36
+ true: {
37
+ backgroundColor: "transparent",
38
+ borderColor: "transparent",
39
+ shadowColor: "transparent"
40
+ }
41
+ }
42
+ }
43
+ });
44
+ export {
45
+ ThemeableSizableStack
46
+ };
47
+ //# sourceMappingURL=ThemeableSizableStack.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ThemeableSizableStack.tsx"],
4
+ "sourcesContent": ["import { GetProps, getButtonSize, styled } from '@tamagui/core'\n\nimport { YStack } from './Stacks'\nimport { bordered, circular, elevate, focusable, hoverable, pad, pressable } from './variants'\n\nexport const ThemeableSizableStack = styled(YStack, {\n name: 'SizableStack',\n backgroundColor: '$background',\n flexDirection: 'row',\n flexShrink: 1,\n\n variants: {\n // allows the type to come in for use in size\n fontFamily: () => ({}),\n\n hoverable,\n pressable,\n focusable,\n circular,\n pad,\n elevate,\n bordered,\n\n size: {\n '...size': getButtonSize,\n },\n\n disabled: {\n true: {\n // pointerEvents: 'none',\n opacity: 0.45,\n backgroundColor: '$background',\n hoverStyle: {\n backgroundColor: '$background',\n },\n },\n },\n\n transparent: {\n true: {\n backgroundColor: 'transparent',\n },\n },\n\n chromeless: {\n true: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n shadowColor: 'transparent',\n },\n },\n },\n})\n\nexport type ThemeableSizableStackProps = GetProps<typeof ThemeableSizableStack>\n"],
5
+ "mappings": "AAAA;AAEA;AACA;AAEO,MAAM,wBAAwB,OAAO,QAAQ;AAAA,EAClD,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,YAAY;AAAA,EAEZ,UAAU;AAAA,IAER,YAAY,MAAO,EAAC;AAAA,IAEpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,IAEA,UAAU;AAAA,MACR,MAAM;AAAA,QAEJ,SAAS;AAAA,QACT,iBAAiB;AAAA,QACjB,YAAY;AAAA,UACV,iBAAiB;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,47 @@
1
+ import { styled } from "@tamagui/core";
2
+ import { YStack } from "./Stacks";
3
+ import {
4
+ bordered,
5
+ circular,
6
+ elevate,
7
+ focusTheme,
8
+ hoverTheme,
9
+ padded,
10
+ pressTheme,
11
+ radiused
12
+ } from "./variants";
13
+ const ThemeableStack = styled(YStack, {
14
+ name: "SizableStack",
15
+ variants: {
16
+ fontFamily: () => ({}),
17
+ backgrounded: {
18
+ true: {
19
+ backgroundColor: "$background"
20
+ }
21
+ },
22
+ radiused,
23
+ hoverTheme,
24
+ pressTheme,
25
+ focusTheme,
26
+ circular,
27
+ padded,
28
+ elevate,
29
+ bordered,
30
+ transparent: {
31
+ true: {
32
+ backgroundColor: "transparent"
33
+ }
34
+ },
35
+ chromeless: {
36
+ true: {
37
+ backgroundColor: "transparent",
38
+ borderColor: "transparent",
39
+ shadowColor: "transparent"
40
+ }
41
+ }
42
+ }
43
+ });
44
+ export {
45
+ ThemeableStack
46
+ };
47
+ //# sourceMappingURL=ThemeableStack.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ThemeableStack.tsx"],
4
+ "sourcesContent": ["import { GetProps, styled } from '@tamagui/core'\n\nimport { YStack } from './Stacks'\nimport {\n bordered,\n circular,\n elevate,\n focusTheme,\n hoverTheme,\n padded,\n pressTheme,\n radiused,\n} from './variants'\n\nexport const ThemeableStack = styled(YStack, {\n name: 'SizableStack',\n\n variants: {\n // allows the type to come in for use in size\n fontFamily: () => ({}),\n\n backgrounded: {\n true: {\n backgroundColor: '$background',\n },\n },\n\n radiused,\n hoverTheme,\n pressTheme,\n focusTheme,\n circular,\n padded,\n elevate,\n bordered,\n\n transparent: {\n true: {\n backgroundColor: 'transparent',\n },\n },\n\n chromeless: {\n true: {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n shadowColor: 'transparent',\n },\n },\n },\n})\n\nexport type ThemeableStackProps = GetProps<typeof ThemeableStack>\n"],
5
+ "mappings": "AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,MAAM,iBAAiB,OAAO,QAAQ;AAAA,EAC3C,MAAM;AAAA,EAEN,UAAU;AAAA,IAER,YAAY,MAAO,EAAC;AAAA,IAEpB,cAAc;AAAA,MACZ,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,iBAAiB;AAAA,MACnB;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,iBAAiB;AAAA,QACjB,aAAa;AAAA,QACb,aAAa;AAAA,MACf;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./Stacks";
2
2
  export * from "./SizableStack";
3
+ export * from "./ThemeableStack";
3
4
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from './Stacks'\nexport * from './SizableStack'\n"],
5
- "mappings": "AAAA;AACA;",
4
+ "sourcesContent": ["export * from './Stacks'\nexport * from './SizableStack'\nexport * from './ThemeableStack'\n"],
5
+ "mappings": "AAAA;AACA;AACA;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,110 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import { getElevation } from "./Stacks";
18
+ const elevate = {
19
+ true: (_, extras) => {
20
+ return getElevation(extras.props["size"], extras);
21
+ }
22
+ };
23
+ const bordered = (val, { props }) => {
24
+ return __spreadValues(__spreadValues(__spreadValues({
25
+ borderWidth: typeof val === "number" ? val : 1,
26
+ borderColor: "$borderColor"
27
+ }, props.hoverTheme && {
28
+ hoverStyle: {
29
+ borderColor: "$borderColorHover"
30
+ }
31
+ }), props.pressTheme && {
32
+ pressStyle: {
33
+ borderColor: "$borderColorPress"
34
+ }
35
+ }), props.focusTheme && {
36
+ focusStyle: {
37
+ borderColor: "$borderColorFocus"
38
+ }
39
+ });
40
+ };
41
+ const padded = {
42
+ true: (_, extras) => {
43
+ const { tokens, props } = extras;
44
+ return {
45
+ padding: tokens.space[props.size] || tokens.space["$4"]
46
+ };
47
+ }
48
+ };
49
+ const radiused = {
50
+ true: (_, extras) => {
51
+ const { tokens, props } = extras;
52
+ return {
53
+ borderRadius: tokens.radius[props.size] || tokens.radius["$4"]
54
+ };
55
+ }
56
+ };
57
+ const circular = {
58
+ true: (_, { props, tokens }) => {
59
+ const size = tokens.size[props.size];
60
+ return {
61
+ width: size,
62
+ height: size,
63
+ maxWidth: size,
64
+ maxHeight: size,
65
+ minWidth: size,
66
+ minHeight: size,
67
+ borderRadius: 1e5,
68
+ paddingVertical: 0,
69
+ paddingHorizontal: 0
70
+ };
71
+ }
72
+ };
73
+ const hoverTheme = {
74
+ true: {
75
+ hoverStyle: {
76
+ backgroundColor: "$backgroundHover",
77
+ borderColor: "$borderColorHover"
78
+ }
79
+ },
80
+ false: {}
81
+ };
82
+ const pressTheme = {
83
+ true: {
84
+ pressStyle: {
85
+ backgroundColor: "$backgroundPress",
86
+ borderColor: "$borderColorPress"
87
+ }
88
+ },
89
+ false: {}
90
+ };
91
+ const focusTheme = {
92
+ true: {
93
+ focusStyle: {
94
+ backgroundColor: "$backgroundFocus",
95
+ borderColor: "$borderColorFocus"
96
+ }
97
+ },
98
+ false: {}
99
+ };
100
+ export {
101
+ bordered,
102
+ circular,
103
+ elevate,
104
+ focusTheme,
105
+ hoverTheme,
106
+ padded,
107
+ pressTheme,
108
+ radiused
109
+ };
110
+ //# sourceMappingURL=variants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/variants.tsx"],
4
+ "sourcesContent": ["import { getElevation } from './Stacks'\n\nexport const elevate = {\n true: (_: boolean, extras: any) => {\n return getElevation(extras.props['size'], extras)\n },\n}\n\nexport const bordered = (val: boolean | number, { props }) => {\n return {\n // TODO size it with size in '...size'\n borderWidth: typeof val === 'number' ? val : 1,\n borderColor: '$borderColor',\n\n ...(props.hoverTheme && {\n hoverStyle: {\n borderColor: '$borderColorHover',\n },\n }),\n\n ...(props.pressTheme && {\n pressStyle: {\n borderColor: '$borderColorPress',\n },\n }),\n\n ...(props.focusTheme && {\n focusStyle: {\n borderColor: '$borderColorFocus',\n },\n }),\n }\n}\n\nexport const padded = {\n true: (_, extras) => {\n const { tokens, props } = extras\n return {\n padding: tokens.space[props.size] || tokens.space['$4'],\n }\n },\n}\n\nexport const radiused = {\n true: (_, extras) => {\n const { tokens, props } = extras\n return {\n borderRadius: tokens.radius[props.size] || tokens.radius['$4'],\n }\n },\n}\n\nexport const circular = {\n true: (_, { props, tokens }) => {\n const size = tokens.size[props.size]\n return {\n width: size,\n height: size,\n maxWidth: size,\n maxHeight: size,\n minWidth: size,\n minHeight: size,\n borderRadius: 100_000,\n paddingVertical: 0,\n paddingHorizontal: 0,\n }\n },\n}\n\nexport const hoverTheme = {\n true: {\n hoverStyle: {\n backgroundColor: '$backgroundHover',\n borderColor: '$borderColorHover',\n },\n },\n false: {},\n}\n\nexport const pressTheme = {\n true: {\n pressStyle: {\n backgroundColor: '$backgroundPress',\n borderColor: '$borderColorPress',\n },\n },\n false: {},\n}\n\nexport const focusTheme = {\n true: {\n focusStyle: {\n backgroundColor: '$backgroundFocus',\n borderColor: '$borderColorFocus',\n },\n },\n false: {},\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;AAEO,MAAM,UAAU;AAAA,EACrB,MAAM,CAAC,GAAY,WAAgB;AACjC,WAAO,aAAa,OAAO,MAAM,SAAS,MAAM;AAAA,EAClD;AACF;AAEO,MAAM,WAAW,CAAC,KAAuB,EAAE,YAAY;AAC5D,SAAO;AAAA,IAEL,aAAa,OAAO,QAAQ,WAAW,MAAM;AAAA,IAC7C,aAAa;AAAA,KAET,MAAM,cAAc;AAAA,IACtB,YAAY;AAAA,MACV,aAAa;AAAA,IACf;AAAA,EACF,IAEI,MAAM,cAAc;AAAA,IACtB,YAAY;AAAA,MACV,aAAa;AAAA,IACf;AAAA,EACF,IAEI,MAAM,cAAc;AAAA,IACtB,YAAY;AAAA,MACV,aAAa;AAAA,IACf;AAAA,EACF;AAEJ;AAEO,MAAM,SAAS;AAAA,EACpB,MAAM,CAAC,GAAG,WAAW;AACnB,UAAM,EAAE,QAAQ,UAAU;AAC1B,WAAO;AAAA,MACL,SAAS,OAAO,MAAM,MAAM,SAAS,OAAO,MAAM;AAAA,IACpD;AAAA,EACF;AACF;AAEO,MAAM,WAAW;AAAA,EACtB,MAAM,CAAC,GAAG,WAAW;AACnB,UAAM,EAAE,QAAQ,UAAU;AAC1B,WAAO;AAAA,MACL,cAAc,OAAO,OAAO,MAAM,SAAS,OAAO,OAAO;AAAA,IAC3D;AAAA,EACF;AACF;AAEO,MAAM,WAAW;AAAA,EACtB,MAAM,CAAC,GAAG,EAAE,OAAO,aAAa;AAC9B,UAAM,OAAO,OAAO,KAAK,MAAM;AAC/B,WAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,MACV,WAAW;AAAA,MACX,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,IACrB;AAAA,EACF;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,iBAAiB;AAAA,MACjB,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AACV;AAEO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,iBAAiB;AAAA,MACjB,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AACV;AAEO,MAAM,aAAa;AAAA,EACxB,MAAM;AAAA,IACJ,YAAY;AAAA,MACV,iBAAiB;AAAA,MACjB,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AACV;",
6
+ "names": []
7
+ }
@@ -1,80 +1,25 @@
1
1
  import { getButtonSize, styled } from "@tamagui/core";
2
- import { XStack } from "./Stacks";
3
- const SizableStack = styled(XStack, {
2
+ import { YStack } from "./Stacks";
3
+ import { bordered, circular, elevate, focusTheme, hoverTheme, pressTheme } from "./variants";
4
+ const SizableStack = styled(YStack, {
4
5
  name: "SizableStack",
5
6
  backgroundColor: "$background",
6
7
  flexDirection: "row",
7
8
  flexShrink: 1,
8
9
  variants: {
9
10
  fontFamily: () => ({}),
10
- hoverable: {
11
- true: {
12
- hoverStyle: {
13
- backgroundColor: "$backgroundHover",
14
- borderColor: "$borderColorHover"
15
- }
16
- },
17
- false: {
18
- hoverStyle: {
19
- backgroundColor: "$background",
20
- borderColor: "$borderColor"
21
- }
22
- }
23
- },
24
- pressable: {
25
- true: {
26
- pressStyle: {
27
- backgroundColor: "$backgroundPress",
28
- borderColor: "$borderColorPress"
29
- }
30
- },
31
- false: {
32
- pressStyle: {
33
- backgroundColor: "$background",
34
- borderColor: "$borderColor"
35
- }
36
- }
37
- },
38
- focusable: {
39
- true: {
40
- focusStyle: {
41
- backgroundColor: "$backgroundFocus",
42
- borderColor: "$borderColorFocus"
43
- }
44
- }
45
- },
46
- bordered: {
47
- true: {
48
- borderWidth: 1,
49
- borderColor: "$borderColor"
50
- }
51
- },
11
+ hoverTheme,
12
+ pressTheme,
13
+ focusTheme,
14
+ circular,
15
+ elevate,
16
+ bordered,
52
17
  size: {
53
- "...size": getButtonSize()
54
- },
55
- disabled: {
56
- true: {
57
- opacity: 0.45,
58
- backgroundColor: "$background",
59
- hoverStyle: {
60
- backgroundColor: "$background"
61
- }
62
- }
63
- },
64
- transparent: {
65
- true: {
66
- backgroundColor: "transparent"
67
- }
68
- },
69
- chromeless: {
70
- true: {
71
- backgroundColor: "transparent",
72
- borderColor: "transparent",
73
- shadowColor: "transparent"
74
- }
18
+ "...size": getButtonSize
75
19
  }
76
20
  }
77
21
  });
78
22
  export {
79
23
  SizableStack
80
24
  };
25
+ //# sourceMappingURL=SizableStack.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/SizableStack.tsx"],
4
+ "sourcesContent": ["import { GetProps, getButtonSize, styled } from '@tamagui/core'\n\nimport { YStack } from './Stacks'\nimport { bordered, circular, elevate, focusTheme, hoverTheme, pressTheme } from './variants'\n\nexport const SizableStack = styled(YStack, {\n name: 'SizableStack',\n backgroundColor: '$background',\n flexDirection: 'row',\n flexShrink: 1,\n\n variants: {\n // allows the type to come in for use in size\n fontFamily: () => ({}),\n\n hoverTheme,\n pressTheme,\n focusTheme,\n circular,\n elevate,\n bordered,\n\n size: {\n '...size': getButtonSize,\n },\n },\n})\n\nexport type SizableStackProps = GetProps<typeof SizableStack>\n"],
5
+ "mappings": "AAAA;AAEA;AACA;AAEO,MAAM,eAAe,OAAO,QAAQ;AAAA,EACzC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,YAAY;AAAA,EAEZ,UAAU;AAAA,IAER,YAAY,MAAO,EAAC;AAAA,IAEpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,EACF;AACF,CAAC;",
6
+ "names": []
7
+ }
@@ -1,17 +1,17 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
1
  import {
4
2
  Stack,
5
3
  getVariableValue,
6
4
  isVariable,
7
5
  styled
8
6
  } from "@tamagui/core";
9
- const getElevation = /* @__PURE__ */ __name((size, extras) => {
7
+ const getElevation = (size, extras) => {
8
+ if (!size)
9
+ return;
10
10
  const { tokens } = extras;
11
11
  const token = tokens.size[size];
12
12
  const sizeNum = isVariable(token) ? +token.val : size;
13
13
  return getSizedElevation(sizeNum, extras);
14
- }, "getElevation");
14
+ };
15
15
  const fullscreenStyle = {
16
16
  position: "absolute",
17
17
  top: 0,
@@ -19,29 +19,23 @@ const fullscreenStyle = {
19
19
  right: 0,
20
20
  bottom: 0
21
21
  };
22
+ const variants = {
23
+ fullscreen: {
24
+ true: fullscreenStyle
25
+ },
26
+ elevation: {
27
+ "...size": getElevation
28
+ }
29
+ };
22
30
  const YStack = styled(Stack, {
23
31
  flexDirection: "column",
24
32
  name: "YStack",
25
- variants: {
26
- fullscreen: {
27
- true: fullscreenStyle
28
- },
29
- elevation: {
30
- "...size": getElevation
31
- }
32
- }
33
+ variants
33
34
  });
34
35
  const XStack = styled(Stack, {
35
36
  flexDirection: "row",
36
37
  name: "XStack",
37
- variants: {
38
- fullscreen: {
39
- true: fullscreenStyle
40
- },
41
- elevation: {
42
- "...size": getElevation
43
- }
44
- }
38
+ variants
45
39
  });
46
40
  const ZStack = styled(YStack, {
47
41
  name: "ZStack",
@@ -50,14 +44,22 @@ const ZStack = styled(YStack, {
50
44
  neverFlatten: true,
51
45
  isZStack: true
52
46
  });
53
- const getSizedElevation = /* @__PURE__ */ __name((val, { theme, tokens }) => {
54
- const num = val === false ? 0 : val === true ? (() => {
47
+ const getSizedElevation = (val, { theme, tokens }) => {
48
+ let num = 0;
49
+ if (val === true) {
55
50
  const val2 = getVariableValue(tokens.size["true"]);
56
51
  if (typeof val2 === "number") {
57
- return val2;
52
+ num = val2;
53
+ } else {
54
+ num = 10;
58
55
  }
59
- return 10;
60
- })() : +val;
56
+ } else {
57
+ num = +val;
58
+ }
59
+ if (process.env.NODE_ENV === "development") {
60
+ if (isNaN(num))
61
+ console.warn("NaN shadow", num, val);
62
+ }
61
63
  const [height, shadowRadius] = [Math.round(num / 4 + 1), Math.round(num / 2 + 2)];
62
64
  const shadow = {
63
65
  shadowColor: theme.shadowColor,
@@ -65,10 +67,12 @@ const getSizedElevation = /* @__PURE__ */ __name((val, { theme, tokens }) => {
65
67
  shadowOffset: { height, width: 0 }
66
68
  };
67
69
  return shadow;
68
- }, "getSizedElevation");
70
+ };
69
71
  export {
70
72
  XStack,
71
73
  YStack,
72
74
  ZStack,
75
+ getElevation,
73
76
  getSizedElevation
74
77
  };
78
+ //# sourceMappingURL=Stacks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/Stacks.tsx"],
4
+ "sourcesContent": ["import {\n GetProps,\n SizeTokens,\n SizeVariantSpreadFunction,\n Stack,\n StackProps,\n VariantSpreadExtras,\n getVariableValue,\n isVariable,\n styled,\n} from '@tamagui/core'\n\nexport type YStackProps = GetProps<typeof YStack>\nexport type XStackProps = YStackProps\nexport type ZStackProps = YStackProps\n\nexport const getElevation: SizeVariantSpreadFunction<StackProps> = (size, extras) => {\n if (!size) return\n const { tokens } = extras\n const token = tokens.size[size]\n const sizeNum = (isVariable(token) ? +token.val : size) as number\n return getSizedElevation(sizeNum, extras)\n}\n\nconst fullscreenStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n} as const\n\nconst variants = {\n fullscreen: {\n true: fullscreenStyle,\n },\n elevation: {\n '...size': getElevation,\n },\n} as const\n\nexport const YStack = styled(Stack, {\n flexDirection: 'column',\n name: 'YStack',\n variants,\n})\n\nexport const XStack = styled(Stack, {\n flexDirection: 'row',\n name: 'XStack',\n variants,\n})\n\nexport const ZStack = styled(\n YStack,\n {\n name: 'ZStack',\n position: 'relative',\n },\n {\n neverFlatten: true,\n isZStack: true,\n }\n)\n\nexport const getSizedElevation = (\n val: SizeTokens | number | boolean,\n { theme, tokens }: VariantSpreadExtras<any>\n) => {\n let num = 0\n if (val === true) {\n const val = getVariableValue(tokens.size['true'])\n if (typeof val === 'number') {\n num = val\n } else {\n num = 10\n }\n } else {\n num = +val\n }\n if (process.env.NODE_ENV === 'development') {\n if (isNaN(num)) console.warn('NaN shadow', num, val)\n }\n const [height, shadowRadius] = [Math.round(num / 4 + 1), Math.round(num / 2 + 2)]\n const shadow = {\n shadowColor: theme.shadowColor,\n shadowRadius,\n shadowOffset: { height, width: 0 },\n }\n return shadow\n}\n"],
5
+ "mappings": "AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBO,MAAM,eAAsD,CAAC,MAAM,WAAW;AACnF,MAAI,CAAC;AAAM;AACX,QAAM,EAAE,WAAW;AACnB,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,UAAW,WAAW,KAAK,IAAI,CAAC,MAAM,MAAM;AAClD,SAAO,kBAAkB,SAAS,MAAM;AAC1C;AAEA,MAAM,kBAAkB;AAAA,EACtB,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV;AAEA,MAAM,WAAW;AAAA,EACf,YAAY;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA,WAAW;AAAA,IACT,WAAW;AAAA,EACb;AACF;AAEO,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN;AACF,CAAC;AAEM,MAAM,SAAS,OAAO,OAAO;AAAA,EAClC,eAAe;AAAA,EACf,MAAM;AAAA,EACN;AACF,CAAC;AAEM,MAAM,SAAS,OACpB,QACA;AAAA,EACE,MAAM;AAAA,EACN,UAAU;AACZ,GACA;AAAA,EACE,cAAc;AAAA,EACd,UAAU;AACZ,CACF;AAEO,MAAM,oBAAoB,CAC/B,KACA,EAAE,OAAO,aACN;AACH,MAAI,MAAM;AACV,MAAI,QAAQ,MAAM;AAChB,UAAM,OAAM,iBAAiB,OAAO,KAAK,OAAO;AAChD,QAAI,OAAO,SAAQ,UAAU;AAC3B,YAAM;AAAA,IACR,OAAO;AACL,YAAM;AAAA,IACR;AAAA,EACF,OAAO;AACL,UAAM,CAAC;AAAA,EACT;AACA,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,MAAM,GAAG;AAAG,cAAQ,KAAK,cAAc,KAAK,GAAG;AAAA,EACrD;AACA,QAAM,CAAC,QAAQ,gBAAgB,CAAC,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC;AAChF,QAAM,SAAS;AAAA,IACb,aAAa,MAAM;AAAA,IACnB;AAAA,IACA,cAAc,EAAE,QAAQ,OAAO,EAAE;AAAA,EACnC;AACA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,46 @@
1
+ import { getButtonSize, styled } from "@tamagui/core";
2
+ import { YStack } from "./Stacks";
3
+ import { bordered, circular, elevate, focusable, hoverable, pad, pressable } from "./variants";
4
+ const ThemeableSizableStack = styled(YStack, {
5
+ name: "SizableStack",
6
+ backgroundColor: "$background",
7
+ flexDirection: "row",
8
+ flexShrink: 1,
9
+ variants: {
10
+ fontFamily: () => ({}),
11
+ hoverable,
12
+ pressable,
13
+ focusable,
14
+ circular,
15
+ pad,
16
+ elevate,
17
+ bordered,
18
+ size: {
19
+ "...size": getButtonSize
20
+ },
21
+ disabled: {
22
+ true: {
23
+ opacity: 0.45,
24
+ backgroundColor: "$background",
25
+ hoverStyle: {
26
+ backgroundColor: "$background"
27
+ }
28
+ }
29
+ },
30
+ transparent: {
31
+ true: {
32
+ backgroundColor: "transparent"
33
+ }
34
+ },
35
+ chromeless: {
36
+ true: {
37
+ backgroundColor: "transparent",
38
+ borderColor: "transparent",
39
+ shadowColor: "transparent"
40
+ }
41
+ }
42
+ }
43
+ });
44
+ export {
45
+ ThemeableSizableStack
46
+ };