@tamagui/web 3.0.0-beta.1352.1 → 3.0.0-beta.1358.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.
Files changed (46) hide show
  1. package/dist/cjs/createTamagui.cjs +5 -0
  2. package/dist/cjs/createTamagui.native.cjs +5 -0
  3. package/dist/cjs/createTamagui.native.js +5 -0
  4. package/dist/cjs/createTamagui.native.js.map +1 -1
  5. package/dist/cjs/helpers/resolveSizing.cjs +124 -0
  6. package/dist/cjs/helpers/resolveSizing.native.cjs +133 -0
  7. package/dist/cjs/helpers/resolveSizing.native.js +135 -0
  8. package/dist/cjs/helpers/resolveSizing.native.js.map +1 -0
  9. package/dist/cjs/helpers/styledDynamic.cjs +5 -0
  10. package/dist/cjs/helpers/styledDynamic.native.cjs +5 -0
  11. package/dist/cjs/helpers/styledDynamic.native.js +5 -0
  12. package/dist/cjs/helpers/styledDynamic.native.js.map +1 -1
  13. package/dist/cjs/index.cjs +3 -0
  14. package/dist/cjs/index.native.cjs +3 -0
  15. package/dist/cjs/index.native.js +3 -0
  16. package/dist/cjs/index.native.js.map +1 -1
  17. package/dist/esm/createTamagui.mjs +5 -0
  18. package/dist/esm/createTamagui.mjs.map +1 -1
  19. package/dist/esm/createTamagui.native.js +5 -0
  20. package/dist/esm/createTamagui.native.js.map +1 -1
  21. package/dist/esm/helpers/resolveSizing.mjs +102 -0
  22. package/dist/esm/helpers/resolveSizing.mjs.map +1 -0
  23. package/dist/esm/helpers/resolveSizing.native.js +109 -0
  24. package/dist/esm/helpers/resolveSizing.native.js.map +1 -0
  25. package/dist/esm/helpers/styledDynamic.mjs +5 -0
  26. package/dist/esm/helpers/styledDynamic.mjs.map +1 -1
  27. package/dist/esm/helpers/styledDynamic.native.js +5 -0
  28. package/dist/esm/helpers/styledDynamic.native.js.map +1 -1
  29. package/dist/esm/index.js +2 -1
  30. package/dist/esm/index.mjs +2 -1
  31. package/dist/esm/index.native.js +2 -1
  32. package/package.json +16 -16
  33. package/src/createTamagui.ts +2 -0
  34. package/src/helpers/resolveSizing.ts +167 -0
  35. package/src/helpers/styledDynamic.ts +3 -1
  36. package/src/index.ts +9 -0
  37. package/src/types.tsx +67 -2
  38. package/types/createTamagui.d.ts.map +1 -1
  39. package/types/helpers/resolveSizing.d.ts +90 -0
  40. package/types/helpers/resolveSizing.d.ts.map +1 -0
  41. package/types/helpers/styledDynamic.d.ts +1 -1
  42. package/types/helpers/styledDynamic.d.ts.map +1 -1
  43. package/types/index.d.ts +2 -1
  44. package/types/index.d.ts.map +1 -1
  45. package/types/types.d.ts +53 -4
  46. package/types/types.d.ts.map +1 -1
@@ -0,0 +1,109 @@
1
+ import { getConfig } from "../config.native.js";
2
+ import { getVariableValue } from "../createVariable.native.js";
3
+
4
+ var defaultSizing = {
5
+ default: "md",
6
+ sizes: {
7
+ xs: {
8
+ fontSize: "xs",
9
+ controlFontSize: "xs",
10
+ paddingInline: "2",
11
+ paddingBlock: "1",
12
+ gap: "1",
13
+ radius: "sm"
14
+ },
15
+ sm: {
16
+ fontSize: "sm",
17
+ controlFontSize: "sm",
18
+ paddingInline: "3",
19
+ paddingBlock: "1.5",
20
+ gap: "1.5",
21
+ radius: "md"
22
+ },
23
+ md: {
24
+ fontSize: "sm",
25
+ controlFontSize: "base",
26
+ paddingInline: "4",
27
+ paddingBlock: "2",
28
+ gap: "2",
29
+ radius: "md"
30
+ },
31
+ lg: {
32
+ fontSize: "base",
33
+ controlFontSize: "lg",
34
+ paddingInline: "6",
35
+ paddingBlock: "2",
36
+ gap: "2",
37
+ radius: "md"
38
+ },
39
+ xl: {
40
+ fontSize: "lg",
41
+ controlFontSize: "xl",
42
+ paddingInline: "8",
43
+ paddingBlock: "2.5",
44
+ gap: "2.5",
45
+ radius: "lg"
46
+ }
47
+ }
48
+ };
49
+ var toPx = function(value) {
50
+ return typeof value === "number" ? value : Number.parseFloat(value);
51
+ };
52
+ function resolveSizing(size, env) {
53
+ var _font_size, _font_size1, _font_lineHeight, _tokens_space;
54
+ if (size === false) return void 0;
55
+ var conf = (env === null || env === void 0 ? void 0 : env.fonts) && (env === null || env === void 0 ? void 0 : env.tokens) ? void 0 : getConfig();
56
+ var _env_sizing;
57
+ var sizing = {
58
+ ...defaultSizing,
59
+ ...(_env_sizing = env === null || env === void 0 ? void 0 : env.sizing) !== null && _env_sizing !== void 0 ? _env_sizing : conf === null || conf === void 0 ? void 0 : conf.sizing
60
+ };
61
+ var name = size === true || size == null ? sizing.default : size;
62
+ var rung = sizing.sizes[name];
63
+ if (!rung) return void 0;
64
+ var keys = {
65
+ fontSize: rung.fontSize,
66
+ lineHeight: rung.fontSize,
67
+ paddingInline: rung.paddingInline,
68
+ paddingBlock: rung.paddingBlock,
69
+ gap: rung.gap,
70
+ radius: rung.radius
71
+ };
72
+ if (rung.px) {
73
+ return {
74
+ name,
75
+ ...keys,
76
+ height: rung.px.height,
77
+ icon: rung.px.icon,
78
+ square: rung.px.square
79
+ };
80
+ }
81
+ var _env_fonts;
82
+ var fonts = (_env_fonts = env === null || env === void 0 ? void 0 : env.fonts) !== null && _env_fonts !== void 0 ? _env_fonts : conf === null || conf === void 0 ? void 0 : conf.fontsParsed;
83
+ var _env_tokens;
84
+ var tokens = (_env_tokens = env === null || env === void 0 ? void 0 : env.tokens) !== null && _env_tokens !== void 0 ? _env_tokens : conf === null || conf === void 0 ? void 0 : conf.tokensParsed;
85
+ var _conf_defaultFontToken, _env_font;
86
+ var font = (_env_font = env === null || env === void 0 ? void 0 : env.font) !== null && _env_font !== void 0 ? _env_font : fonts === null || fonts === void 0 ? void 0 : fonts[(_conf_defaultFontToken = conf === null || conf === void 0 ? void 0 : conf.defaultFontToken) !== null && _conf_defaultFontToken !== void 0 ? _conf_defaultFontToken : "body"];
87
+ var px = {
88
+ fontSize: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_size = font.size) === null || _font_size === void 0 ? void 0 : _font_size[rung.fontSize])),
89
+ control: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_size1 = font.size) === null || _font_size1 === void 0 ? void 0 : _font_size1[rung.controlFontSize])),
90
+ lineHeight: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_lineHeight = font.lineHeight) === null || _font_lineHeight === void 0 ? void 0 : _font_lineHeight[rung.fontSize])),
91
+ paddingBlock: toPx(getVariableValue(tokens === null || tokens === void 0 ? void 0 : (_tokens_space = tokens.space) === null || _tokens_space === void 0 ? void 0 : _tokens_space[rung.paddingBlock]))
92
+ };
93
+ if (!Object.values(px).every(Number.isFinite)) {
94
+ if (process.env.NODE_ENV === "development") {
95
+ console.warn(`[tamagui] size "${name}" references a missing token (fontSize "${rung.fontSize}", controlFontSize "${rung.controlFontSize}", paddingBlock "${rung.paddingBlock}"); resolving to no styles`);
96
+ }
97
+ return void 0;
98
+ }
99
+ return {
100
+ name,
101
+ ...keys,
102
+ height: px.lineHeight + px.paddingBlock * 2,
103
+ icon: Math.ceil(px.fontSize / 4) * 4,
104
+ square: Math.round(px.control * 1.4)
105
+ };
106
+ }
107
+
108
+ export { defaultSizing, resolveSizing };
109
+ //# sourceMappingURL=resolveSizing.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveSizing.native.js","names":[],"sources":["esm/helpers/resolveSizing.native.js"],"sourcesContent":["import { getConfig } from \"../config\";\nimport { getVariableValue } from \"../createVariable\";\nvar defaultSizing = {\n default: \"md\",\n sizes: {\n xs: {\n fontSize: \"xs\",\n controlFontSize: \"xs\",\n paddingInline: \"2\",\n paddingBlock: \"1\",\n gap: \"1\",\n radius: \"sm\"\n },\n sm: {\n fontSize: \"sm\",\n controlFontSize: \"sm\",\n paddingInline: \"3\",\n paddingBlock: \"1.5\",\n gap: \"1.5\",\n radius: \"md\"\n },\n md: {\n fontSize: \"sm\",\n controlFontSize: \"base\",\n paddingInline: \"4\",\n paddingBlock: \"2\",\n gap: \"2\",\n radius: \"md\"\n },\n lg: {\n fontSize: \"base\",\n controlFontSize: \"lg\",\n paddingInline: \"6\",\n paddingBlock: \"2\",\n gap: \"2\",\n radius: \"md\"\n },\n xl: {\n fontSize: \"lg\",\n controlFontSize: \"xl\",\n paddingInline: \"8\",\n paddingBlock: \"2.5\",\n gap: \"2.5\",\n radius: \"lg\"\n }\n }\n};\nvar toPx = function(value) {\n return typeof value === \"number\" ? value : Number.parseFloat(value);\n};\nfunction resolveSizing(size, env) {\n var _font_size, _font_size1, _font_lineHeight, _tokens_space;\n if (size === false) return void 0;\n var conf = (env === null || env === void 0 ? void 0 : env.fonts) && (env === null || env === void 0 ? void 0 : env.tokens) ? void 0 : getConfig();\n var _env_sizing;\n var sizing = {\n ...defaultSizing,\n ...(_env_sizing = env === null || env === void 0 ? void 0 : env.sizing) !== null && _env_sizing !== void 0 ? _env_sizing : conf === null || conf === void 0 ? void 0 : conf.sizing\n };\n var name = size === true || size == null ? sizing.default : size;\n var rung = sizing.sizes[name];\n if (!rung) return void 0;\n var keys = {\n fontSize: rung.fontSize,\n lineHeight: rung.fontSize,\n paddingInline: rung.paddingInline,\n paddingBlock: rung.paddingBlock,\n gap: rung.gap,\n radius: rung.radius\n };\n if (rung.px) {\n return {\n name,\n ...keys,\n height: rung.px.height,\n icon: rung.px.icon,\n square: rung.px.square\n };\n }\n var _env_fonts;\n var fonts = (_env_fonts = env === null || env === void 0 ? void 0 : env.fonts) !== null && _env_fonts !== void 0 ? _env_fonts : conf === null || conf === void 0 ? void 0 : conf.fontsParsed;\n var _env_tokens;\n var tokens = (_env_tokens = env === null || env === void 0 ? void 0 : env.tokens) !== null && _env_tokens !== void 0 ? _env_tokens : conf === null || conf === void 0 ? void 0 : conf.tokensParsed;\n var _conf_defaultFontToken, _env_font;\n var font = (_env_font = env === null || env === void 0 ? void 0 : env.font) !== null && _env_font !== void 0 ? _env_font : fonts === null || fonts === void 0 ? void 0 : fonts[(_conf_defaultFontToken = conf === null || conf === void 0 ? void 0 : conf.defaultFontToken) !== null && _conf_defaultFontToken !== void 0 ? _conf_defaultFontToken : \"body\"];\n var px = {\n fontSize: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_size = font.size) === null || _font_size === void 0 ? void 0 : _font_size[rung.fontSize])),\n control: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_size1 = font.size) === null || _font_size1 === void 0 ? void 0 : _font_size1[rung.controlFontSize])),\n lineHeight: toPx(getVariableValue(font === null || font === void 0 ? void 0 : (_font_lineHeight = font.lineHeight) === null || _font_lineHeight === void 0 ? void 0 : _font_lineHeight[rung.fontSize])),\n paddingBlock: toPx(getVariableValue(tokens === null || tokens === void 0 ? void 0 : (_tokens_space = tokens.space) === null || _tokens_space === void 0 ? void 0 : _tokens_space[rung.paddingBlock]))\n };\n if (!Object.values(px).every(Number.isFinite)) {\n if (process.env.NODE_ENV === \"development\") {\n console.warn(`[tamagui] size \"${name}\" references a missing token (fontSize \"${rung.fontSize}\", controlFontSize \"${rung.controlFontSize}\", paddingBlock \"${rung.paddingBlock}\"); resolving to no styles`);\n }\n return void 0;\n }\n return {\n name,\n ...keys,\n height: px.lineHeight + px.paddingBlock * 2,\n icon: Math.ceil(px.fontSize / 4) * 4,\n square: Math.round(px.control * 1.4)\n };\n}\nexport {\n defaultSizing,\n resolveSizing\n};\n//# sourceMappingURL=resolveSizing.js.map\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { getSetting } from "../config.mjs";
2
2
  import { getVariableValue } from "../createVariable.mjs";
3
+ import { defaultSizing } from "./resolveSizing.mjs";
3
4
  import { styledDynamicSymbol } from "../types.mjs";
4
5
 
5
6
  const fontLanguageCache = /* @__PURE__ */ new WeakMap();
@@ -115,6 +116,10 @@ function getDynamicEnv(styleState) {
115
116
  fonts,
116
117
  tokens: conf.tokensParsed,
117
118
  theme,
119
+ sizing: {
120
+ ...defaultSizing,
121
+ ...conf.sizing
122
+ },
118
123
  get fontFamily() {
119
124
  return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting("defaultFont"));
120
125
  },
@@ -1 +1 @@
1
- {"version":3,"file":"styledDynamic.js","names":[],"sources":["esm/helpers/styledDynamic.js"],"sourcesContent":["import { getSetting } from \"../config\";\nimport { getVariableValue } from \"../createVariable\";\nimport { styledDynamicSymbol } from \"../types\";\nconst fontLanguageCache = /* @__PURE__ */ new WeakMap();\nfunction getFontsForLanguage(fonts, language) {\n if (fontLanguageCache.has(language)) return fontLanguageCache.get(language);\n const next = { ...fonts };\n for (const name in language) {\n const lang = language[name];\n if (lang !== \"default\") next[name] = fonts[`${name}_${lang}`];\n }\n fontLanguageCache.set(language, next);\n return next;\n}\nfunction isStyledDynamic(value) {\n return !!value && (typeof value === \"function\" || typeof value === \"object\") && styledDynamicSymbol in value;\n}\nconst bareStyledDynamic = { [styledDynamicSymbol]: true };\nconst dynamicSpreadProbe = /* @__PURE__ */ Symbol(\"tamagui.dynamicSpreadProbe\");\nconst dynamicComputedProbe = \"__tamagui_dynamic_computed_key__\";\nconst dynamicComputedNumberProbe = 712367821;\nconst dynamicShapeProbeValues = /* @__PURE__ */ new WeakSet();\nfunction createDynamicShapeProbe() {\n const target = function() {\n };\n let probe;\n probe = new Proxy(target, {\n apply: () => probe,\n construct: () => probe,\n get: (_target, key) => {\n if (key === Symbol.toPrimitive) {\n return (hint) => hint === \"number\" ? dynamicComputedNumberProbe : dynamicComputedProbe;\n }\n if (key === Symbol.iterator) {\n return function* () {\n yield dynamicComputedProbe;\n };\n }\n if (key === dynamicSpreadProbe) return true;\n return probe;\n },\n getOwnPropertyDescriptor: (target2, key) => key === dynamicSpreadProbe ? { configurable: true, enumerable: true, value: true } : Reflect.getOwnPropertyDescriptor(target2, key),\n ownKeys: (target2) => [...Reflect.ownKeys(target2), dynamicSpreadProbe]\n });\n dynamicShapeProbeValues.add(probe);\n return probe;\n}\nfunction findDynamicShapeViolation(value) {\n if (!value || typeof value !== \"object\" && typeof value !== \"function\") return;\n const seen = /* @__PURE__ */ new WeakSet();\n let spread = false;\n let computed = false;\n const visit = (current) => {\n if (dynamicShapeProbeValues.has(current) || seen.has(current)) return;\n seen.add(current);\n let descriptors;\n try {\n descriptors = Object.getOwnPropertyDescriptors(current);\n } catch {\n return;\n }\n for (const key of Reflect.ownKeys(descriptors)) {\n if (key === dynamicSpreadProbe) spread = true;\n if (typeof key === \"string\" && (key.includes(dynamicComputedProbe) || key === String(dynamicComputedNumberProbe))) {\n computed = true;\n }\n const nested = descriptors[key]?.value;\n if (nested && (typeof nested === \"object\" || typeof nested === \"function\")) {\n visit(nested);\n }\n }\n };\n visit(value);\n if (spread || computed) return { spread, computed };\n}\nfunction validateDynamicShape(fn) {\n try {\n const probe = createDynamicShapeProbe();\n const warn = console.warn;\n let output;\n try {\n console.warn = () => {\n };\n output = fn(probe, probe);\n } finally {\n console.warn = warn;\n }\n const violation = findDynamicShapeViolation(output);\n if (!violation) return;\n const reasons = [\n violation.spread ? \"a spread from a dynamic input\" : \"\",\n violation.computed ? \"a computed key from a dynamic input\" : \"\"\n ].filter(Boolean);\n console.warn(\n `[tamagui] styled.dynamic${fn.name ? ` (${fn.name})` : \"\"} returned ${reasons.join(\" and \")} during its development shape check. Dynamic style bodies require static object keys for extraction; this definition will deopt instead.`\n );\n } catch {\n }\n}\nfunction styledDynamic(fn) {\n if (!fn) return bareStyledDynamic;\n if (process.env.NODE_ENV === \"development\") validateDynamicShape(fn);\n fn[styledDynamicSymbol] = true;\n return fn;\n}\nfunction getDynamicEnv(styleState) {\n const cached = styleState.flatDynamicEnv;\n if (cached) return cached;\n const { props, conf, context, theme } = styleState;\n let fonts = conf.fontsParsed;\n if (context?.language) {\n fonts = getFontsForLanguage(conf.fontsParsed, context.language);\n }\n const next = {\n fonts,\n tokens: conf.tokensParsed,\n theme,\n get fontFamily() {\n return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting(\"defaultFont\"));\n },\n get font() {\n const found = fonts[this.fontFamily];\n if (found) return found;\n const className = props.className;\n if (typeof className === \"string\") {\n const name = /(?:^|\\s)font_(\\S+)/.exec(className)?.[1];\n if (name && fonts[name]) return fonts[name];\n }\n return fonts[conf.defaultFontToken];\n }\n };\n return styleState.flatDynamicEnv = next;\n}\nexport {\n getDynamicEnv,\n getFontsForLanguage,\n isStyledDynamic,\n styledDynamic\n};\n//# sourceMappingURL=styledDynamic.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"styledDynamic.js","names":[],"sources":["esm/helpers/styledDynamic.js"],"sourcesContent":["import { getSetting } from \"../config\";\nimport { getVariableValue } from \"../createVariable\";\nimport { defaultSizing } from \"./resolveSizing\";\nimport { styledDynamicSymbol } from \"../types\";\nconst fontLanguageCache = /* @__PURE__ */ new WeakMap();\nfunction getFontsForLanguage(fonts, language) {\n if (fontLanguageCache.has(language)) return fontLanguageCache.get(language);\n const next = { ...fonts };\n for (const name in language) {\n const lang = language[name];\n if (lang !== \"default\") next[name] = fonts[`${name}_${lang}`];\n }\n fontLanguageCache.set(language, next);\n return next;\n}\nfunction isStyledDynamic(value) {\n return !!value && (typeof value === \"function\" || typeof value === \"object\") && styledDynamicSymbol in value;\n}\nconst bareStyledDynamic = { [styledDynamicSymbol]: true };\nconst dynamicSpreadProbe = /* @__PURE__ */ Symbol(\"tamagui.dynamicSpreadProbe\");\nconst dynamicComputedProbe = \"__tamagui_dynamic_computed_key__\";\nconst dynamicComputedNumberProbe = 712367821;\nconst dynamicShapeProbeValues = /* @__PURE__ */ new WeakSet();\nfunction createDynamicShapeProbe() {\n const target = function() {\n };\n let probe;\n probe = new Proxy(target, {\n apply: () => probe,\n construct: () => probe,\n get: (_target, key) => {\n if (key === Symbol.toPrimitive) {\n return (hint) => hint === \"number\" ? dynamicComputedNumberProbe : dynamicComputedProbe;\n }\n if (key === Symbol.iterator) {\n return function* () {\n yield dynamicComputedProbe;\n };\n }\n if (key === dynamicSpreadProbe) return true;\n return probe;\n },\n getOwnPropertyDescriptor: (target2, key) => key === dynamicSpreadProbe ? { configurable: true, enumerable: true, value: true } : Reflect.getOwnPropertyDescriptor(target2, key),\n ownKeys: (target2) => [...Reflect.ownKeys(target2), dynamicSpreadProbe]\n });\n dynamicShapeProbeValues.add(probe);\n return probe;\n}\nfunction findDynamicShapeViolation(value) {\n if (!value || typeof value !== \"object\" && typeof value !== \"function\") return;\n const seen = /* @__PURE__ */ new WeakSet();\n let spread = false;\n let computed = false;\n const visit = (current) => {\n if (dynamicShapeProbeValues.has(current) || seen.has(current)) return;\n seen.add(current);\n let descriptors;\n try {\n descriptors = Object.getOwnPropertyDescriptors(current);\n } catch {\n return;\n }\n for (const key of Reflect.ownKeys(descriptors)) {\n if (key === dynamicSpreadProbe) spread = true;\n if (typeof key === \"string\" && (key.includes(dynamicComputedProbe) || key === String(dynamicComputedNumberProbe))) {\n computed = true;\n }\n const nested = descriptors[key]?.value;\n if (nested && (typeof nested === \"object\" || typeof nested === \"function\")) {\n visit(nested);\n }\n }\n };\n visit(value);\n if (spread || computed) return { spread, computed };\n}\nfunction validateDynamicShape(fn) {\n try {\n const probe = createDynamicShapeProbe();\n const warn = console.warn;\n let output;\n try {\n console.warn = () => {\n };\n output = fn(probe, probe);\n } finally {\n console.warn = warn;\n }\n const violation = findDynamicShapeViolation(output);\n if (!violation) return;\n const reasons = [\n violation.spread ? \"a spread from a dynamic input\" : \"\",\n violation.computed ? \"a computed key from a dynamic input\" : \"\"\n ].filter(Boolean);\n console.warn(\n `[tamagui] styled.dynamic${fn.name ? ` (${fn.name})` : \"\"} returned ${reasons.join(\" and \")} during its development shape check. Dynamic style bodies require static object keys for extraction; this definition will deopt instead.`\n );\n } catch {\n }\n}\nfunction styledDynamic(fn) {\n if (!fn) return bareStyledDynamic;\n if (process.env.NODE_ENV === \"development\") validateDynamicShape(fn);\n fn[styledDynamicSymbol] = true;\n return fn;\n}\nfunction getDynamicEnv(styleState) {\n const cached = styleState.flatDynamicEnv;\n if (cached) return cached;\n const { props, conf, context, theme } = styleState;\n let fonts = conf.fontsParsed;\n if (context?.language) {\n fonts = getFontsForLanguage(conf.fontsParsed, context.language);\n }\n const next = {\n fonts,\n tokens: conf.tokensParsed,\n theme,\n sizing: { ...defaultSizing, ...conf.sizing },\n get fontFamily() {\n return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting(\"defaultFont\"));\n },\n get font() {\n const found = fonts[this.fontFamily];\n if (found) return found;\n const className = props.className;\n if (typeof className === \"string\") {\n const name = /(?:^|\\s)font_(\\S+)/.exec(className)?.[1];\n if (name && fonts[name]) return fonts[name];\n }\n return fonts[conf.defaultFontToken];\n }\n };\n return styleState.flatDynamicEnv = next;\n}\nexport {\n getDynamicEnv,\n getFontsForLanguage,\n isStyledDynamic,\n styledDynamic\n};\n//# sourceMappingURL=styledDynamic.js.map\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { getSetting } from "../config.native.js";
2
2
  import { getVariableValue } from "../createVariable.native.js";
3
+ import { defaultSizing } from "./resolveSizing.native.js";
3
4
  import { styledDynamicSymbol } from "../types.native.js";
4
5
 
5
6
  var fontLanguageCache = /* @__PURE__ */ new WeakMap();
@@ -143,6 +144,10 @@ function getDynamicEnv(styleState) {
143
144
  fonts,
144
145
  tokens: conf.tokensParsed,
145
146
  theme,
147
+ sizing: {
148
+ ...defaultSizing,
149
+ ...conf.sizing
150
+ },
146
151
  get fontFamily() {
147
152
  return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting("defaultFont"));
148
153
  },
@@ -1 +1 @@
1
- {"version":3,"file":"styledDynamic.native.js","names":[],"sources":["esm/helpers/styledDynamic.native.js"],"sourcesContent":["import { getSetting } from \"../config\";\nimport { getVariableValue } from \"../createVariable\";\nimport { styledDynamicSymbol } from \"../types\";\nvar fontLanguageCache = /* @__PURE__ */ new WeakMap();\nfunction getFontsForLanguage(fonts, language) {\n if (fontLanguageCache.has(language)) return fontLanguageCache.get(language);\n var next = {\n ...fonts\n };\n for (var name in language) {\n var lang = language[name];\n if (lang !== \"default\") next[name] = fonts[`${name}_${lang}`];\n }\n fontLanguageCache.set(language, next);\n return next;\n}\nfunction isStyledDynamic(value) {\n return !!value && (typeof value === \"function\" || typeof value === \"object\") && styledDynamicSymbol in value;\n}\nvar bareStyledDynamic = {\n [styledDynamicSymbol]: true\n};\nvar dynamicSpreadProbe = /* @__PURE__ */ Symbol(\"tamagui.dynamicSpreadProbe\");\nvar dynamicComputedProbe = \"__tamagui_dynamic_computed_key__\";\nvar dynamicComputedNumberProbe = 712367821;\nvar dynamicShapeProbeValues = /* @__PURE__ */ new WeakSet();\nfunction createDynamicShapeProbe() {\n var target = function target2() {\n };\n var probe;\n probe = new Proxy(target, {\n apply: function() {\n return probe;\n },\n construct: function() {\n return probe;\n },\n get: function(_target, key) {\n if (key === Symbol.toPrimitive) {\n return function(hint) {\n return hint === \"number\" ? dynamicComputedNumberProbe : dynamicComputedProbe;\n };\n }\n if (key === Symbol.iterator) {\n return function* () {\n yield dynamicComputedProbe;\n };\n }\n if (key === dynamicSpreadProbe) return true;\n return probe;\n },\n getOwnPropertyDescriptor: function(target2, key) {\n return key === dynamicSpreadProbe ? {\n configurable: true,\n enumerable: true,\n value: true\n } : Reflect.getOwnPropertyDescriptor(target2, key);\n },\n ownKeys: function(target2) {\n return [\n ...Reflect.ownKeys(target2),\n dynamicSpreadProbe\n ];\n }\n });\n dynamicShapeProbeValues.add(probe);\n return probe;\n}\nfunction findDynamicShapeViolation(value) {\n if (!value || typeof value !== \"object\" && typeof value !== \"function\") return;\n var seen = /* @__PURE__ */ new WeakSet();\n var spread = false;\n var computed = false;\n var visit = function(current) {\n if (dynamicShapeProbeValues.has(current) || seen.has(current)) return;\n seen.add(current);\n var descriptors;\n try {\n descriptors = Object.getOwnPropertyDescriptors(current);\n } catch (e) {\n return;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Reflect.ownKeys(descriptors)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var _descriptors_key;\n if (key === dynamicSpreadProbe) spread = true;\n if (typeof key === \"string\" && (key.includes(dynamicComputedProbe) || key === String(dynamicComputedNumberProbe))) {\n computed = true;\n }\n var nested = (_descriptors_key = descriptors[key]) === null || _descriptors_key === void 0 ? void 0 : _descriptors_key.value;\n if (nested && (typeof nested === \"object\" || typeof nested === \"function\")) {\n visit(nested);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n visit(value);\n if (spread || computed) return {\n spread,\n computed\n };\n}\nfunction validateDynamicShape(fn) {\n try {\n var probe = createDynamicShapeProbe();\n var warn = console.warn;\n var output;\n try {\n console.warn = function() {\n };\n output = fn(probe, probe);\n } finally {\n console.warn = warn;\n }\n var violation = findDynamicShapeViolation(output);\n if (!violation) return;\n var reasons = [\n violation.spread ? \"a spread from a dynamic input\" : \"\",\n violation.computed ? \"a computed key from a dynamic input\" : \"\"\n ].filter(Boolean);\n console.warn(`[tamagui] styled.dynamic${fn.name ? ` (${fn.name})` : \"\"} returned ${reasons.join(\" and \")} during its development shape check. Dynamic style bodies require static object keys for extraction; this definition will deopt instead.`);\n } catch (e) {\n }\n}\nfunction styledDynamic(fn) {\n if (!fn) return bareStyledDynamic;\n if (process.env.NODE_ENV === \"development\") validateDynamicShape(fn);\n fn[styledDynamicSymbol] = true;\n return fn;\n}\nfunction getDynamicEnv(styleState) {\n var cached = styleState.flatDynamicEnv;\n if (cached) return cached;\n var { props, conf, context, theme } = styleState;\n var fonts = conf.fontsParsed;\n if (context === null || context === void 0 ? void 0 : context.language) {\n fonts = getFontsForLanguage(conf.fontsParsed, context.language);\n }\n var next = {\n fonts,\n tokens: conf.tokensParsed,\n theme,\n get fontFamily() {\n return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting(\"defaultFont\"));\n },\n get font() {\n var found = fonts[this.fontFamily];\n if (found) return found;\n var className = props.className;\n if (typeof className === \"string\") {\n var _exec;\n var name = (_exec = /(?:^|\\s)font_(\\S+)/.exec(className)) === null || _exec === void 0 ? void 0 : _exec[1];\n if (name && fonts[name]) return fonts[name];\n }\n return fonts[conf.defaultFontToken];\n }\n };\n return styleState.flatDynamicEnv = next;\n}\nexport {\n getDynamicEnv,\n getFontsForLanguage,\n isStyledDynamic,\n styledDynamic\n};\n//# sourceMappingURL=styledDynamic.js.map\n"],"mappings":";;;;;AAGA,IAAI,oCAAoC,IAAI,QAAQ;AACpD,SAAS,oBAAoB,OAAO,UAAU;CAC5C,IAAI,kBAAkB,IAAI,QAAQ,GAAG,OAAO,kBAAkB,IAAI,QAAQ;CAC1E,IAAI,OAAO,EACT,GAAG,MACL;CACA,KAAK,IAAI,QAAQ,UAAU;EACzB,IAAI,OAAO,SAAS;EACpB,IAAI,SAAS,WAAW,KAAK,QAAQ,MAAM,GAAG,KAAK,GAAG;CACxD;CACA,kBAAkB,IAAI,UAAU,IAAI;CACpC,OAAO;AACT;AACA,SAAS,gBAAgB,OAAO;CAC9B,OAAO,CAAC,CAAC,UAAU,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,uBAAuB;AACzG;AACA,IAAI,oBAAoB,GACrB,sBAAsB,KACzB;AACA,IAAI,qBAAqC,uBAAO,4BAA4B;AAC5E,IAAI,uBAAuB;AAC3B,IAAI,6BAA6B;AACjC,IAAI,0CAA0C,IAAI,QAAQ;AAC1D,SAAS,0BAA0B;CACjC,IAAI,SAAS,SAAS,UAAU,CAChC;CACA,IAAI;CACJ,QAAQ,IAAI,MAAM,QAAQ;EACxB,OAAO,WAAW;GAChB,OAAO;EACT;EACA,WAAW,WAAW;GACpB,OAAO;EACT;EACA,KAAK,SAAS,SAAS,KAAK;GAC1B,IAAI,QAAQ,OAAO,aAAa;IAC9B,OAAO,SAAS,MAAM;KACpB,OAAO,SAAS,WAAW,6BAA6B;IAC1D;GACF;GACA,IAAI,QAAQ,OAAO,UAAU;IAC3B,OAAO,aAAa;KAClB,MAAM;IACR;GACF;GACA,IAAI,QAAQ,oBAAoB,OAAO;GACvC,OAAO;EACT;EACA,0BAA0B,SAAS,SAAS,KAAK;GAC/C,OAAO,QAAQ,qBAAqB;IAClC,cAAc;IACd,YAAY;IACZ,OAAO;GACT,IAAI,QAAQ,yBAAyB,SAAS,GAAG;EACnD;EACA,SAAS,SAAS,SAAS;GACzB,OAAO,CACL,GAAG,QAAQ,QAAQ,OAAO,GAC1B,kBACF;EACF;CACF,CAAC;CACD,wBAAwB,IAAI,KAAK;CACjC,OAAO;AACT;AACA,SAAS,0BAA0B,OAAO;CACxC,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY;CACxE,IAAI,uBAAuB,IAAI,QAAQ;CACvC,IAAI,SAAS;CACb,IAAI,WAAW;CACf,IAAI,QAAQ,SAAS,SAAS;EAC5B,IAAI,wBAAwB,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,GAAG;EAC/D,KAAK,IAAI,OAAO;EAChB,IAAI;EACJ,IAAI;GACF,cAAc,OAAO,0BAA0B,OAAO;EACxD,SAAS,GAAG;GACV;EACF;EACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,QAAQ,QAAQ,WAAW,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAC7K,IAAI,MAAM,MAAM;IAChB,IAAI;IACJ,IAAI,QAAQ,oBAAoB,SAAS;IACzC,IAAI,OAAO,QAAQ,aAAa,IAAI,SAAS,oBAAoB,KAAK,QAAQ,OAAO,0BAA0B,IAAI;KACjH,WAAW;IACb;IACA,IAAI,UAAU,mBAAmB,YAAY,UAAU,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB;IACvH,IAAI,WAAW,OAAO,WAAW,YAAY,OAAO,WAAW,aAAa;KAC1E,MAAM,MAAM;IACd;GACF;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;CACF;CACA,MAAM,KAAK;CACX,IAAI,UAAU,UAAU,OAAO;EAC7B;EACA;CACF;AACF;AACA,SAAS,qBAAqB,IAAI;CAChC,IAAI;EACF,IAAI,QAAQ,wBAAwB;EACpC,IAAI,OAAO,QAAQ;EACnB,IAAI;EACJ,IAAI;GACF,QAAQ,OAAO,WAAW,CAC1B;GACA,SAAS,GAAG,OAAO,KAAK;EAC1B,UAAU;GACR,QAAQ,OAAO;EACjB;EACA,IAAI,YAAY,0BAA0B,MAAM;EAChD,IAAI,CAAC,WAAW;EAChB,IAAI,UAAU,CACZ,UAAU,SAAS,kCAAkC,IACrD,UAAU,WAAW,wCAAwC,EAC/D,CAAC,CAAC,OAAO,OAAO;EAChB,QAAQ,KAAK,2BAA2B,GAAG,OAAO,KAAK,GAAG,KAAK,KAAK,GAAG,YAAY,QAAQ,KAAK,OAAO,EAAE,yIAAyI;CACpP,SAAS,GAAG,CACZ;AACF;AACA,SAAS,cAAc,IAAI;CACzB,IAAI,CAAC,IAAI,OAAO;CAChB,IAAI,QAAQ,IAAI,aAAa,eAAe,qBAAqB,EAAE;CACnE,GAAG,uBAAuB;CAC1B,OAAO;AACT;AACA,SAAS,cAAc,YAAY;CACjC,IAAI,SAAS,WAAW;CACxB,IAAI,QAAQ,OAAO;CACnB,IAAI,EAAE,OAAO,MAAM,SAAS,UAAU;CACtC,IAAI,QAAQ,KAAK;CACjB,IAAI,YAAY,QAAQ,YAAY,KAAK,IAAI,KAAK,IAAI,QAAQ,UAAU;EACtE,QAAQ,oBAAoB,KAAK,aAAa,QAAQ,QAAQ;CAChE;CACA,IAAI,OAAO;EACT;EACA,QAAQ,KAAK;EACb;EACA,IAAI,aAAa;GACf,OAAO,iBAAiB,WAAW,cAAc,MAAM,UAAU,KAAK,MAAM,cAAc,iBAAiB,WAAW,aAAa,CAAC;EACtI;EACA,IAAI,OAAO;GACT,IAAI,QAAQ,MAAM,KAAK;GACvB,IAAI,OAAO,OAAO;GAClB,IAAI,YAAY,MAAM;GACtB,IAAI,OAAO,cAAc,UAAU;IACjC,IAAI;IACJ,IAAI,QAAQ,QAAQ,qBAAqB,KAAK,SAAS,OAAO,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM;IACxG,IAAI,QAAQ,MAAM,OAAO,OAAO,MAAM;GACxC;GACA,OAAO,MAAM,KAAK;EACpB;CACF;CACA,OAAO,WAAW,iBAAiB;AACrC"}
1
+ {"version":3,"file":"styledDynamic.native.js","names":[],"sources":["esm/helpers/styledDynamic.native.js"],"sourcesContent":["import { getSetting } from \"../config\";\nimport { getVariableValue } from \"../createVariable\";\nimport { defaultSizing } from \"./resolveSizing\";\nimport { styledDynamicSymbol } from \"../types\";\nvar fontLanguageCache = /* @__PURE__ */ new WeakMap();\nfunction getFontsForLanguage(fonts, language) {\n if (fontLanguageCache.has(language)) return fontLanguageCache.get(language);\n var next = {\n ...fonts\n };\n for (var name in language) {\n var lang = language[name];\n if (lang !== \"default\") next[name] = fonts[`${name}_${lang}`];\n }\n fontLanguageCache.set(language, next);\n return next;\n}\nfunction isStyledDynamic(value) {\n return !!value && (typeof value === \"function\" || typeof value === \"object\") && styledDynamicSymbol in value;\n}\nvar bareStyledDynamic = {\n [styledDynamicSymbol]: true\n};\nvar dynamicSpreadProbe = /* @__PURE__ */ Symbol(\"tamagui.dynamicSpreadProbe\");\nvar dynamicComputedProbe = \"__tamagui_dynamic_computed_key__\";\nvar dynamicComputedNumberProbe = 712367821;\nvar dynamicShapeProbeValues = /* @__PURE__ */ new WeakSet();\nfunction createDynamicShapeProbe() {\n var target = function target2() {\n };\n var probe;\n probe = new Proxy(target, {\n apply: function() {\n return probe;\n },\n construct: function() {\n return probe;\n },\n get: function(_target, key) {\n if (key === Symbol.toPrimitive) {\n return function(hint) {\n return hint === \"number\" ? dynamicComputedNumberProbe : dynamicComputedProbe;\n };\n }\n if (key === Symbol.iterator) {\n return function* () {\n yield dynamicComputedProbe;\n };\n }\n if (key === dynamicSpreadProbe) return true;\n return probe;\n },\n getOwnPropertyDescriptor: function(target2, key) {\n return key === dynamicSpreadProbe ? {\n configurable: true,\n enumerable: true,\n value: true\n } : Reflect.getOwnPropertyDescriptor(target2, key);\n },\n ownKeys: function(target2) {\n return [\n ...Reflect.ownKeys(target2),\n dynamicSpreadProbe\n ];\n }\n });\n dynamicShapeProbeValues.add(probe);\n return probe;\n}\nfunction findDynamicShapeViolation(value) {\n if (!value || typeof value !== \"object\" && typeof value !== \"function\") return;\n var seen = /* @__PURE__ */ new WeakSet();\n var spread = false;\n var computed = false;\n var visit = function(current) {\n if (dynamicShapeProbeValues.has(current) || seen.has(current)) return;\n seen.add(current);\n var descriptors;\n try {\n descriptors = Object.getOwnPropertyDescriptors(current);\n } catch (e) {\n return;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = Reflect.ownKeys(descriptors)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var _descriptors_key;\n if (key === dynamicSpreadProbe) spread = true;\n if (typeof key === \"string\" && (key.includes(dynamicComputedProbe) || key === String(dynamicComputedNumberProbe))) {\n computed = true;\n }\n var nested = (_descriptors_key = descriptors[key]) === null || _descriptors_key === void 0 ? void 0 : _descriptors_key.value;\n if (nested && (typeof nested === \"object\" || typeof nested === \"function\")) {\n visit(nested);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n visit(value);\n if (spread || computed) return {\n spread,\n computed\n };\n}\nfunction validateDynamicShape(fn) {\n try {\n var probe = createDynamicShapeProbe();\n var warn = console.warn;\n var output;\n try {\n console.warn = function() {\n };\n output = fn(probe, probe);\n } finally {\n console.warn = warn;\n }\n var violation = findDynamicShapeViolation(output);\n if (!violation) return;\n var reasons = [\n violation.spread ? \"a spread from a dynamic input\" : \"\",\n violation.computed ? \"a computed key from a dynamic input\" : \"\"\n ].filter(Boolean);\n console.warn(`[tamagui] styled.dynamic${fn.name ? ` (${fn.name})` : \"\"} returned ${reasons.join(\" and \")} during its development shape check. Dynamic style bodies require static object keys for extraction; this definition will deopt instead.`);\n } catch (e) {\n }\n}\nfunction styledDynamic(fn) {\n if (!fn) return bareStyledDynamic;\n if (process.env.NODE_ENV === \"development\") validateDynamicShape(fn);\n fn[styledDynamicSymbol] = true;\n return fn;\n}\nfunction getDynamicEnv(styleState) {\n var cached = styleState.flatDynamicEnv;\n if (cached) return cached;\n var { props, conf, context, theme } = styleState;\n var fonts = conf.fontsParsed;\n if (context === null || context === void 0 ? void 0 : context.language) {\n fonts = getFontsForLanguage(conf.fontsParsed, context.language);\n }\n var next = {\n fonts,\n tokens: conf.tokensParsed,\n theme,\n sizing: {\n ...defaultSizing,\n ...conf.sizing\n },\n get fontFamily() {\n return getVariableValue(styleState.fontFamily || props.fontFamily) || props.fontFamily || getVariableValue(getSetting(\"defaultFont\"));\n },\n get font() {\n var found = fonts[this.fontFamily];\n if (found) return found;\n var className = props.className;\n if (typeof className === \"string\") {\n var _exec;\n var name = (_exec = /(?:^|\\s)font_(\\S+)/.exec(className)) === null || _exec === void 0 ? void 0 : _exec[1];\n if (name && fonts[name]) return fonts[name];\n }\n return fonts[conf.defaultFontToken];\n }\n };\n return styleState.flatDynamicEnv = next;\n}\nexport {\n getDynamicEnv,\n getFontsForLanguage,\n isStyledDynamic,\n styledDynamic\n};\n//# sourceMappingURL=styledDynamic.js.map\n"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -21,6 +21,7 @@ import { splitStyleProps } from "./helpers/splitStyleProps.mjs";
21
21
  import { normalizeColor } from "./helpers/normalizeColor.mjs";
22
22
  import { normalizeStyle } from "./helpers/normalizeStyle.mjs";
23
23
  import { resolveTextMetrics } from "./helpers/nativeTextMetrics.mjs";
24
+ import { defaultSizing, resolveSizing } from "./helpers/resolveSizing.mjs";
24
25
  import { containsThemeRef, themeRefKey } from "./helpers/themeRef.mjs";
25
26
  import { getStyleTags } from "./helpers/wrapStyleTags.mjs";
26
27
  import { createFont } from "./createFont.mjs";
@@ -64,4 +65,4 @@ import { ClientOnly, ClientOnlyContext, useClientValue, useDidFinishSSR, useIsCl
64
65
  import { useEvent, useGet } from "@tamagui/use-event";
65
66
  import { hooks, setupHooks } from "./setupHooks.mjs";
66
67
 
67
- export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
68
+ export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, defaultSizing, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveSizing, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
@@ -21,6 +21,7 @@ import { splitStyleProps } from "./helpers/splitStyleProps.mjs";
21
21
  import { normalizeColor } from "./helpers/normalizeColor.mjs";
22
22
  import { normalizeStyle } from "./helpers/normalizeStyle.mjs";
23
23
  import { resolveTextMetrics } from "./helpers/nativeTextMetrics.mjs";
24
+ import { defaultSizing, resolveSizing } from "./helpers/resolveSizing.mjs";
24
25
  import { containsThemeRef, themeRefKey } from "./helpers/themeRef.mjs";
25
26
  import { getStyleTags } from "./helpers/wrapStyleTags.mjs";
26
27
  import { createFont } from "./createFont.mjs";
@@ -64,4 +65,4 @@ import { ClientOnly, ClientOnlyContext, useClientValue, useDidFinishSSR, useIsCl
64
65
  import { useEvent, useGet } from "@tamagui/use-event";
65
66
  import { hooks, setupHooks } from "./setupHooks.mjs";
66
67
 
67
- export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
68
+ export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, defaultSizing, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveSizing, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
@@ -21,6 +21,7 @@ import { splitStyleProps } from "./helpers/splitStyleProps.native.js";
21
21
  import { normalizeColor } from "./helpers/normalizeColor.native.js";
22
22
  import { normalizeStyle } from "./helpers/normalizeStyle.native.js";
23
23
  import { resolveTextMetrics } from "./helpers/nativeTextMetrics.native.js";
24
+ import { defaultSizing, resolveSizing } from "./helpers/resolveSizing.native.js";
24
25
  import { containsThemeRef, themeRefKey } from "./helpers/themeRef.native.js";
25
26
  import { getStyleTags } from "./helpers/wrapStyleTags.native.js";
26
27
  import { createFont } from "./createFont.native.js";
@@ -64,4 +65,4 @@ import { ClientOnly, ClientOnlyContext, useClientValue, useDidFinishSSR, useIsCl
64
65
  import { useEvent, useGet } from "@tamagui/use-event";
65
66
  import { hooks, setupHooks } from "./setupHooks.native.js";
66
67
 
67
- export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
68
+ export { ClientOnly, ClientOnlyContext, ComponentContext, Configuration, FontLanguage, GroupContext, Slot, Slottable, StyleObjectIdentifier, StyleObjectProperty, StyleObjectPseudo, StyleObjectRules, StyleObjectValue, Tamagui, TamaguiProvider, TamaguiRoot, Text, Theme, ThemeProvider, View, _disableMediaTouch, _mediaListenerStats, _withNativeStyle, _withStableStyle, autoVariables, clamp, composeEventHandlers, composeRefs, configureMedia, containsThemeRef, createCSSVariable, createChangeEventDetails, createComponent, createFont, createRefComponent, createShorthands, createStyledContext, createStyledHOC, createTamagui, createTokens, createVariable, cssShorthandLonghands, currentPlatform, defaultSizing, fluid, forceUpdateThemes, formatDiagnostic, getAutoVariableCSS, getCSSStylesAtomic, getConfig, getExpandedShorthand, getMedia, getMutatedAutoVariableCSS, getNativeStyleEngine, getPlatformDriver, getSetting, getSplitStyles, getStyleCompat, getStyleStaticConfig, getStyleTags, getThemeClassNames, getThemeProviderChainSizes, getThemes, getToken, getTokenValue, getTokens, getVariable, getVariableValue, hooks, html, insertFont, insertStyleRules, installTamaguiConfig, isAndroid, isBrowser, isChrome, isClient, isEqualShallow, isIos, isNativeDesktop, isServer, isTV, isTamaguiComponent, isTamaguiElement, isTouchable, isValidStyleKey, isVariable, isWeb, isWebTouchable, loadAnimationDriver, matchMedia, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, mergeIfNotShallowEqual, mergeProps, mergeSlotStyleProps, mutatedAutoVariables, nonAnimatableStyleProps, nonAnimatableWebTextProps, nonAnimatableWebViewProps, normalizeColor, normalizeStyle, px, removeNativeStyleScope, reservedThemeProps, resolveSizing, resolveTextMetrics, resolveThemeName, setConfig, setMediaState, setNativeStyleEngine, setNativeStyleEngineFlushListener, setNonce, setRef, setupDev, setupHooks, setupMatchMedia, setupPlatformDriver, shouldRenderNativePlatform, simpleHash, splitStyleProps, style, stylePieceSymbol, stylePropsAll, stylePropsInput, stylePropsText, stylePropsTextOnly, stylePropsTransform, stylePropsUnitless, stylePropsView, styled, supportsDynamicColorIOS, textStaticConfig, themeRefKey, tokenCategories, updateConfig, updateFont, updateMediaListeners, updateNativeStyleScope, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle, useAnimationDriver, useClientValue, useComposedRefs, useConfiguration, useCreateShallowSetState, useDidFinishSSR, useEvent, useGet, useIsClientOnly, useIsTouchDevice, useIsomorphicLayoutEffect, useMedia, usePortalThemeState, useStyle, useTheme, useThemeName, validStyles, variableToString, viewStaticConfig, webOnlyStylePropsText, webOnlyStylePropsView, withStaticProperties };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "3.0.0-beta.1352.1",
3
+ "version": "3.0.0-beta.1358.1",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Nate Wienert"
@@ -100,23 +100,23 @@
100
100
  "test:web": "vitest --typecheck --run"
101
101
  },
102
102
  "dependencies": {
103
- "@tamagui/animation-helpers": "3.0.0-beta.1352.1",
104
- "@tamagui/compose-refs": "3.0.0-beta.1352.1",
105
- "@tamagui/constants": "3.0.0-beta.1352.1",
106
- "@tamagui/dom": "3.0.0-beta.1352.1",
107
- "@tamagui/helpers": "3.0.0-beta.1352.1",
108
- "@tamagui/is-equal-shallow": "3.0.0-beta.1352.1",
109
- "@tamagui/native": "3.0.0-beta.1352.1",
110
- "@tamagui/normalize-css-color": "3.0.0-beta.1352.1",
111
- "@tamagui/react-native-types": "3.0.0-beta.1352.1",
112
- "@tamagui/style-grammar": "3.0.0-beta.1352.1",
113
- "@tamagui/types": "3.0.0-beta.1352.1",
114
- "@tamagui/use-did-finish-ssr": "3.0.0-beta.1352.1",
115
- "@tamagui/use-event": "3.0.0-beta.1352.1",
116
- "@tamagui/use-force-update": "3.0.0-beta.1352.1"
103
+ "@tamagui/animation-helpers": "3.0.0-beta.1358.1",
104
+ "@tamagui/compose-refs": "3.0.0-beta.1358.1",
105
+ "@tamagui/constants": "3.0.0-beta.1358.1",
106
+ "@tamagui/dom": "3.0.0-beta.1358.1",
107
+ "@tamagui/helpers": "3.0.0-beta.1358.1",
108
+ "@tamagui/is-equal-shallow": "3.0.0-beta.1358.1",
109
+ "@tamagui/native": "3.0.0-beta.1358.1",
110
+ "@tamagui/normalize-css-color": "3.0.0-beta.1358.1",
111
+ "@tamagui/react-native-types": "3.0.0-beta.1358.1",
112
+ "@tamagui/style-grammar": "3.0.0-beta.1358.1",
113
+ "@tamagui/types": "3.0.0-beta.1358.1",
114
+ "@tamagui/use-did-finish-ssr": "3.0.0-beta.1358.1",
115
+ "@tamagui/use-event": "3.0.0-beta.1358.1",
116
+ "@tamagui/use-force-update": "3.0.0-beta.1358.1"
117
117
  },
118
118
  "devDependencies": {
119
- "@tamagui/build": "3.0.0-beta.1352.1",
119
+ "@tamagui/build": "3.0.0-beta.1358.1",
120
120
  "@testing-library/react": "^16.1.0",
121
121
  "csstype": "^3.0.10",
122
122
  "react": "19.2.3",
@@ -3,6 +3,7 @@ import type { DeepVariableObject } from './createVariables'
3
3
  import { createVariables } from './createVariables'
4
4
  import { defaultAnimationDriver } from './helpers/defaultAnimationDriver'
5
5
  import { resolveAnimationDriver } from './helpers/resolveAnimationDriver'
6
+ import { defaultSizing } from './helpers/resolveSizing'
6
7
  import {
7
8
  buildCSSRuleSets,
8
9
  createFontCSS,
@@ -288,6 +289,7 @@ export function createTamagui<Conf extends CreateTamaguiProps>(
288
289
  animations: resolvedDriver ?? defaultAnimationDriver,
289
290
  animationDrivers,
290
291
  settings: settingsIn,
292
+ sizing: { ...defaultSizing, ...configIn.sizing },
291
293
  tokens: tokens as any,
292
294
  // vite made this into a function if it wasn't set
293
295
  shorthands,
@@ -0,0 +1,167 @@
1
+ import { getConfig } from '../config'
2
+ import { getVariableValue } from '../createVariable'
3
+ import type {
4
+ ComponentSize,
5
+ Font,
6
+ GenericSizing,
7
+ SizeRecipe,
8
+ TamaguiConfig,
9
+ TokensParsed,
10
+ } from '../types'
11
+
12
+ /** the env slice resolveSizing reads: a styled.dynamic env or hand-built */
13
+ export type SizingEnv = {
14
+ sizing: GenericSizing
15
+ fonts: TamaguiConfig['fonts']
16
+ tokens: TokensParsed
17
+ font?: Font
18
+ }
19
+
20
+ /**
21
+ * the default control ladder, transcribed from the Button frame/text tables
22
+ * so the derived px are identical by construction. v6 re-exports this;
23
+ * resolveSizing falls back to it when a config carries no `sizing`.
24
+ */
25
+ export const defaultSizing = {
26
+ default: 'md',
27
+ sizes: {
28
+ xs: {
29
+ fontSize: 'xs',
30
+ controlFontSize: 'xs',
31
+ paddingInline: '2',
32
+ paddingBlock: '1',
33
+ gap: '1',
34
+ radius: 'sm',
35
+ },
36
+ sm: {
37
+ fontSize: 'sm',
38
+ controlFontSize: 'sm',
39
+ paddingInline: '3',
40
+ paddingBlock: '1.5',
41
+ gap: '1.5',
42
+ radius: 'md',
43
+ },
44
+ md: {
45
+ fontSize: 'sm',
46
+ controlFontSize: 'base',
47
+ paddingInline: '4',
48
+ paddingBlock: '2',
49
+ gap: '2',
50
+ radius: 'md',
51
+ },
52
+ lg: {
53
+ fontSize: 'base',
54
+ controlFontSize: 'lg',
55
+ paddingInline: '6',
56
+ paddingBlock: '2',
57
+ gap: '2',
58
+ radius: 'md',
59
+ },
60
+ xl: {
61
+ fontSize: 'lg',
62
+ controlFontSize: 'xl',
63
+ paddingInline: '8',
64
+ paddingBlock: '2.5',
65
+ gap: '2.5',
66
+ radius: 'lg',
67
+ },
68
+ },
69
+ } as const satisfies GenericSizing
70
+
71
+ /** a rung resolved: token keys stay keys, geometry is px */
72
+ export type ResolvedSizing = {
73
+ /** the rung that rendered (degrades to the default in production) */
74
+ name: string
75
+ fontSize: string
76
+ lineHeight: string
77
+ paddingInline: string
78
+ paddingBlock: string
79
+ gap: string
80
+ radius: string
81
+ /** text line box plus vertical padding, before any border */
82
+ height: number
83
+ /** icon px for the rung */
84
+ icon: number
85
+ /** the square controls: checkbox box, radio circle, switch track height */
86
+ square: number
87
+ }
88
+
89
+ const toPx = (value: unknown): number =>
90
+ typeof value === 'number' ? value : Number.parseFloat(value as string)
91
+
92
+ /**
93
+ * a size name -> its rung resolved to pixels, against the sizing in `env`.
94
+ * `true`/absent resolve to the default rung, `false` to no styles. Without
95
+ * an env (plain render code, no styled.dynamic callback) it reads the active
96
+ * config and default font: a sync global read, not a subscription, so static
97
+ * sizes never re-render on media or theme changes. Unknown names resolve to
98
+ * no styles, exactly like a miss in the old static tables: numeric sizes and
99
+ * cascaded values pass through variants that do not know them, and must never
100
+ * throw. A rung pointing at missing tokens is a broken config: it warns in
101
+ * development and resolves to no styles.
102
+ */
103
+ export function resolveSizing(size: false, env?: SizingEnv): undefined
104
+ export function resolveSizing(
105
+ size: ComponentSize | true | undefined,
106
+ env?: SizingEnv
107
+ ): ResolvedSizing
108
+ export function resolveSizing(
109
+ size: ComponentSize | boolean | undefined,
110
+ env?: SizingEnv
111
+ ): ResolvedSizing | undefined
112
+ export function resolveSizing(
113
+ size: ComponentSize | boolean | undefined,
114
+ env?: SizingEnv
115
+ ): ResolvedSizing | undefined {
116
+ if (size === false) return undefined
117
+ const conf = env?.fonts && env?.tokens ? undefined : getConfig()
118
+ const sizing = { ...defaultSizing, ...(env?.sizing ?? conf?.sizing) }
119
+ const name = size === true || size == null ? sizing.default : size
120
+ const rung: SizeRecipe | undefined = sizing.sizes[name]
121
+ if (!rung) return undefined
122
+
123
+ const keys = {
124
+ fontSize: rung.fontSize,
125
+ lineHeight: rung.fontSize,
126
+ paddingInline: rung.paddingInline,
127
+ paddingBlock: rung.paddingBlock,
128
+ gap: rung.gap,
129
+ radius: rung.radius,
130
+ }
131
+ // an explicit rung geometry wins over derivation (v5 pins its heights)
132
+ if (rung.px) {
133
+ return {
134
+ name,
135
+ ...keys,
136
+ height: rung.px.height,
137
+ icon: rung.px.icon,
138
+ square: rung.px.square,
139
+ }
140
+ }
141
+
142
+ const fonts = env?.fonts ?? conf?.fontsParsed
143
+ const tokens = env?.tokens ?? conf?.tokensParsed
144
+ const font = env?.font ?? fonts?.[conf?.defaultFontToken ?? 'body']
145
+ const px = {
146
+ fontSize: toPx(getVariableValue(font?.size?.[rung.fontSize])),
147
+ control: toPx(getVariableValue(font?.size?.[rung.controlFontSize])),
148
+ lineHeight: toPx(getVariableValue(font?.lineHeight?.[rung.fontSize])),
149
+ paddingBlock: toPx(getVariableValue(tokens?.space?.[rung.paddingBlock])),
150
+ }
151
+ if (!Object.values(px).every(Number.isFinite)) {
152
+ if (process.env.NODE_ENV === 'development') {
153
+ console.warn(
154
+ `[tamagui] size "${name}" references a missing token (fontSize "${rung.fontSize}", controlFontSize "${rung.controlFontSize}", paddingBlock "${rung.paddingBlock}"); resolving to no styles`
155
+ )
156
+ }
157
+ return undefined
158
+ }
159
+
160
+ return {
161
+ name,
162
+ ...keys,
163
+ height: px.lineHeight + px.paddingBlock * 2,
164
+ icon: Math.ceil(px.fontSize / 4) * 4,
165
+ square: Math.round(px.control * 1.4),
166
+ }
167
+ }
@@ -1,5 +1,6 @@
1
1
  import { getSetting } from '../config'
2
2
  import { getVariableValue } from '../createVariable'
3
+ import { defaultSizing } from './resolveSizing'
3
4
  import type {
4
5
  GenericFonts,
5
6
  GetStyleState,
@@ -151,7 +152,7 @@ export function styledDynamic(fn?: any) {
151
152
 
152
153
  /**
153
154
  * the env for `styled.dynamic` callbacks and `.resolve` resolvers: tokens,
154
- * theme, fonts, and the active font. Built once per style pass.
155
+ * theme, fonts, sizing, and the active font. Built once per style pass.
155
156
  */
156
157
  export function getDynamicEnv(styleState: GetStyleState): StyledDynamicEnv {
157
158
  const cached = (styleState as any).flatDynamicEnv
@@ -167,6 +168,7 @@ export function getDynamicEnv(styleState: GetStyleState): StyledDynamicEnv {
167
168
  fonts,
168
169
  tokens: conf.tokensParsed,
169
170
  theme,
171
+ sizing: { ...defaultSizing, ...conf.sizing },
170
172
  get fontFamily() {
171
173
  return (
172
174
  getVariableValue(styleState.fontFamily || props.fontFamily) ||
package/src/index.ts CHANGED
@@ -51,6 +51,12 @@ export {
51
51
  export { normalizeColor } from './helpers/normalizeColor'
52
52
  export { normalizeStyle } from './helpers/normalizeStyle'
53
53
  export { resolveTextMetrics } from './helpers/nativeTextMetrics'
54
+ export {
55
+ defaultSizing,
56
+ resolveSizing,
57
+ type ResolvedSizing,
58
+ type SizingEnv,
59
+ } from './helpers/resolveSizing'
54
60
  export { containsThemeRef, themeRefKey } from './helpers/themeRef'
55
61
  export { getStyleTags } from './helpers/wrapStyleTags'
56
62
 
@@ -96,6 +102,7 @@ export type {
96
102
  Color,
97
103
  ColorScheme,
98
104
  ColorTokens,
105
+ ComponentSize,
99
106
  CreateTamaguiConfig,
100
107
  CreateTamaguiProps,
101
108
  DebugProp,
@@ -117,6 +124,7 @@ export type {
117
124
  FontWeightTokens,
118
125
  Fonts,
119
126
  GenericFont,
127
+ GenericSizing,
120
128
  GenericStackVariants,
121
129
  GenericTamaguiConfig,
122
130
  GenericTextVariants,
@@ -157,6 +165,7 @@ export type {
157
165
  Shorthands,
158
166
  Size,
159
167
  SizeKeys,
168
+ SizeRecipe,
160
169
  SizeTokens,
161
170
  Space,
162
171
  SpaceTokens,