@tamagui/core 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/cjs/config.js +1 -1
  2. package/dist/cjs/config.js.map +2 -2
  3. package/dist/cjs/createComponent.js +51 -95
  4. package/dist/cjs/createComponent.js.map +2 -2
  5. package/dist/cjs/createTamagui.js +7 -4
  6. package/dist/cjs/createTamagui.js.map +2 -2
  7. package/dist/cjs/createVariable.js +1 -1
  8. package/dist/cjs/createVariable.js.map +2 -2
  9. package/dist/cjs/createVariables.js +12 -3
  10. package/dist/cjs/createVariables.js.map +2 -2
  11. package/dist/cjs/helpers/ThemeManager.js +12 -2
  12. package/dist/cjs/helpers/ThemeManager.js.map +2 -2
  13. package/dist/cjs/helpers/getSize.js +9 -5
  14. package/dist/cjs/helpers/getSize.js.map +2 -2
  15. package/dist/cjs/helpers/getSplitStyles.js +39 -45
  16. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  17. package/dist/cjs/helpers/getStylesAtomic.js +32 -26
  18. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  19. package/dist/cjs/helpers/getStylesAtomic.native.js +6 -2
  20. package/dist/cjs/helpers/getStylesAtomic.native.js.map +2 -2
  21. package/dist/cjs/helpers/insertStyleRule.js +12 -1
  22. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  23. package/dist/cjs/helpers/normalizeColor.js +8 -7
  24. package/dist/cjs/helpers/normalizeColor.js.map +2 -2
  25. package/dist/cjs/hooks/useMedia.js +37 -36
  26. package/dist/cjs/hooks/useMedia.js.map +2 -2
  27. package/dist/cjs/hooks/useTheme.js +28 -42
  28. package/dist/cjs/hooks/useTheme.js.map +3 -3
  29. package/dist/cjs/index.js +0 -1
  30. package/dist/cjs/index.js.map +2 -2
  31. package/dist/cjs/styled.js +4 -1
  32. package/dist/cjs/styled.js.map +2 -2
  33. package/dist/cjs/types.js.map +1 -1
  34. package/dist/cjs/views/Slot.js +1 -33
  35. package/dist/cjs/views/Slot.js.map +3 -3
  36. package/dist/cjs/views/Stack.test.js +4 -6
  37. package/dist/cjs/views/Stack.test.js.map +2 -2
  38. package/dist/cjs/views/Theme.js +45 -41
  39. package/dist/cjs/views/Theme.js.map +2 -2
  40. package/dist/cjs/views/ThemeProvider.js +1 -1
  41. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  42. package/dist/esm/config.js +1 -1
  43. package/dist/esm/config.js.map +2 -2
  44. package/dist/esm/createComponent.js +53 -97
  45. package/dist/esm/createComponent.js.map +2 -2
  46. package/dist/esm/createTamagui.js +8 -5
  47. package/dist/esm/createTamagui.js.map +2 -2
  48. package/dist/esm/createVariable.js +1 -1
  49. package/dist/esm/createVariable.js.map +2 -2
  50. package/dist/esm/createVariables.js +10 -2
  51. package/dist/esm/createVariables.js.map +2 -2
  52. package/dist/esm/helpers/ThemeManager.js +13 -3
  53. package/dist/esm/helpers/ThemeManager.js.map +2 -2
  54. package/dist/esm/helpers/getSize.js +9 -5
  55. package/dist/esm/helpers/getSize.js.map +2 -2
  56. package/dist/esm/helpers/getSplitStyles.js +39 -45
  57. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  58. package/dist/esm/helpers/getStylesAtomic.js +31 -26
  59. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  60. package/dist/esm/helpers/getStylesAtomic.native.js +4 -1
  61. package/dist/esm/helpers/getStylesAtomic.native.js.map +2 -2
  62. package/dist/esm/helpers/insertStyleRule.js +12 -1
  63. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  64. package/dist/esm/helpers/normalizeColor.js +8 -7
  65. package/dist/esm/helpers/normalizeColor.js.map +2 -2
  66. package/dist/esm/hooks/useMedia.js +37 -37
  67. package/dist/esm/hooks/useMedia.js.map +2 -2
  68. package/dist/esm/hooks/useTheme.js +25 -39
  69. package/dist/esm/hooks/useTheme.js.map +3 -3
  70. package/dist/esm/index.js +0 -1
  71. package/dist/esm/index.js.map +2 -2
  72. package/dist/esm/styled.js +4 -1
  73. package/dist/esm/styled.js.map +2 -2
  74. package/dist/esm/views/Slot.js +1 -33
  75. package/dist/esm/views/Slot.js.map +3 -3
  76. package/dist/esm/views/Stack.test.js +1 -3
  77. package/dist/esm/views/Stack.test.js.map +2 -2
  78. package/dist/esm/views/Theme.js +44 -40
  79. package/dist/esm/views/Theme.js.map +2 -2
  80. package/dist/esm/views/ThemeProvider.js +1 -1
  81. package/dist/esm/views/ThemeProvider.js.map +2 -2
  82. package/package.json +11 -11
  83. package/reset.css +4 -0
  84. package/src/__snapshots__/createTokens.test.ts.snap +90 -195
  85. package/src/config.ts +1 -1
  86. package/src/createComponent.tsx +72 -152
  87. package/src/createTamagui.ts +8 -5
  88. package/src/createVariable.ts +2 -1
  89. package/src/createVariables.ts +14 -1
  90. package/src/helpers/ThemeManager.tsx +13 -3
  91. package/src/helpers/getSplitStyles.tsx +43 -53
  92. package/src/helpers/getStylesAtomic.native.ts +2 -0
  93. package/src/helpers/getStylesAtomic.ts +36 -31
  94. package/src/helpers/insertStyleRule.tsx +12 -2
  95. package/src/helpers/normalizeColor.ts +8 -7
  96. package/src/hooks/useMedia.tsx +53 -48
  97. package/src/hooks/useTheme.tsx +37 -56
  98. package/src/index.ts +0 -1
  99. package/src/styled.tsx +4 -1
  100. package/src/types.tsx +7 -3
  101. package/src/views/Slot.tsx +3 -59
  102. package/src/views/Stack.test.tsx +1 -4
  103. package/src/views/Theme.tsx +60 -54
  104. package/src/views/ThemeProvider.tsx +1 -1
  105. package/types/createVariables.d.ts +1 -0
  106. package/types/helpers/ThemeManager.d.ts +1 -1
  107. package/types/helpers/getSplitStyles.d.ts +2 -3
  108. package/types/helpers/getStylesAtomic.d.ts +1 -0
  109. package/types/helpers/getStylesAtomic.native.d.ts +1 -0
  110. package/types/hooks/useMedia.d.ts +8 -4
  111. package/types/hooks/useTheme.d.ts +16 -2
  112. package/types/index.d.ts +0 -1
  113. package/types/types.d.ts +3 -2
  114. package/types/views/Slot.d.ts +5 -4
  115. package/types/views/Theme.d.ts +5 -2
  116. package/src/helpers/cache.ts +0 -13
  117. package/src/helpers/getSize.ts +0 -23
@@ -3,59 +3,63 @@ import { isWeb } from "@tamagui/constants";
3
3
  import { Children, cloneElement } from "react";
4
4
  import { variableToString } from "../createVariable";
5
5
  import { ThemeManagerContext } from "../helpers/ThemeManagerContext";
6
+ import { useServerRef } from "../hooks/useServerHooks";
6
7
  import { useChangeThemeEffect } from "../hooks/useTheme";
7
8
  function Theme(props) {
8
- if (props.disable) {
9
+ if (props.disable)
9
10
  return props.children;
10
- }
11
11
  const isRoot = !!props["_isRoot"];
12
- const { name, theme, themeManager, className } = useChangeThemeEffect(props, isRoot);
13
- const disableThemeClass = props.disableThemeClass;
14
- const missingTheme = !(name && theme);
15
- let contents = useThemeManagerContext(
16
- props["data-themeable"] ? Children.map(
17
- props.children,
18
- (child) => cloneElement(child, { ["data-themeable"]: true })
19
- ) : props.children,
20
- themeManager
21
- );
22
- if (process.env.NODE_ENV === "development" && missingTheme) {
23
- name && !theme && console.warn(`No theme found by name ${name}`);
24
- return props.children;
25
- }
26
- if (disableThemeClass || missingTheme) {
27
- return contents;
28
- }
29
- if (isWeb) {
30
- const cn = [props.className, className, "_dsp_contents"].filter(Boolean).join(" ");
31
- contents = /* @__PURE__ */ jsx("span", {
32
- className: cn,
33
- style: {
34
- color: variableToString(theme == null ? void 0 : theme.color)
35
- },
36
- children: contents
37
- });
38
- }
39
- return contents;
12
+ const themeState = useChangeThemeEffect(props, isRoot);
13
+ const children = props["data-themeable"] ? Children.map(
14
+ props.children,
15
+ (child) => cloneElement(child, { ["data-themeable"]: true })
16
+ ) : props.children;
17
+ return useThemedChildren(themeState, children, props);
40
18
  }
41
- function useThemeManagerContext(children, themeManager, shouldReset) {
42
- const value = themeManager;
43
- if (!value)
19
+ function useThemedChildren(themeState, children, options) {
20
+ const { themeManager, isNewTheme, className, theme } = themeState;
21
+ const { shallow, forceClassName } = options;
22
+ const hasEverThemed = useServerRef(false);
23
+ if (isNewTheme) {
24
+ hasEverThemed.current = true;
25
+ }
26
+ if (!isNewTheme && !hasEverThemed.current && !forceClassName && !shallow) {
44
27
  return children;
28
+ }
45
29
  let next = children;
46
- if (shouldReset && themeManager) {
47
- next = /* @__PURE__ */ jsx(Theme, {
48
- name: themeManager.state.parentName,
49
- children: next
30
+ if (shallow && themeManager) {
31
+ next = Children.map(next, (child) => {
32
+ return cloneElement(
33
+ child,
34
+ void 0,
35
+ /* @__PURE__ */ jsx(Theme, {
36
+ name: themeManager.state.parentName,
37
+ children: child.props.children
38
+ })
39
+ );
50
40
  });
51
41
  }
52
- return /* @__PURE__ */ jsx(ThemeManagerContext.Provider, {
53
- value,
42
+ next = /* @__PURE__ */ jsx(ThemeManagerContext.Provider, {
43
+ value: themeManager,
54
44
  children: next
55
45
  });
46
+ if (isWeb) {
47
+ const enableClassName = forceClassName === true || forceClassName !== false && isNewTheme;
48
+ return /* @__PURE__ */ jsx("span", {
49
+ className: "_dsp_contents",
50
+ ...theme && enableClassName && {
51
+ className: `${className} ${forceClassName ? "forced1" : ""} _dsp_contents`,
52
+ style: {
53
+ color: variableToString(theme.color)
54
+ }
55
+ },
56
+ children: next
57
+ });
58
+ }
59
+ return next;
56
60
  }
57
61
  export {
58
62
  Theme,
59
- useThemeManagerContext
63
+ useThemedChildren
60
64
  };
61
65
  //# sourceMappingURL=Theme.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Theme.tsx"],
4
- "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport React, { Children, cloneElement, useMemo } from 'react'\n\nimport { variableToString } from '../createVariable'\nimport { ThemeManager } from '../helpers/ThemeManager'\nimport { ThemeManagerContext } from '../helpers/ThemeManagerContext'\nimport { useChangeThemeEffect } from '../hooks/useTheme'\nimport { ThemeProps } from '../types'\n\nexport function Theme(props: ThemeProps) {\n // @ts-expect-error only for internal views\n if (props.disable) {\n return props.children\n }\n\n const isRoot = !!props['_isRoot']\n const { name, theme, themeManager, className } = useChangeThemeEffect(props, isRoot)\n const disableThemeClass = props.disableThemeClass\n const missingTheme = !(name && theme)\n\n // memo here, changing theme without re-rendering all children is a critical optimization\n // may require some effort of end user to memoize but without this memo they'd have no option\n let contents = useThemeManagerContext(\n props['data-themeable']\n ? Children.map(props.children, (child) =>\n cloneElement(child, { ['data-themeable']: true })\n )\n : props.children,\n themeManager\n )\n\n if (process.env.NODE_ENV === 'development' && missingTheme) {\n // eslint-disable-next-line no-console\n name && !theme && console.warn(`No theme found by name ${name}`)\n return props.children\n }\n\n if (disableThemeClass || missingTheme) {\n return contents\n }\n\n if (isWeb) {\n const cn = [props.className, className, '_dsp_contents'].filter(Boolean).join(' ')\n contents = (\n <span\n className={cn}\n style={{\n // in order to provide currentColor, set color by default\n color: variableToString(theme?.color),\n }}\n >\n {contents}\n </span>\n )\n }\n\n return contents\n}\n\nexport function useThemeManagerContext(\n children: any,\n themeManager?: ThemeManager | null,\n shouldReset?: boolean\n) {\n // disabled super memoize it - listener first strategy\n const value = themeManager // useMemo(() => themeManager, [!!themeManager])\n // be sure to memoize themeManager to avoid reparenting\n if (!value) return children\n // be sure to memoize shouldReset to avoid reparenting\n let next = children\n // TODO likely not necessary if we do reset logic now in useTheme?\n // reset to parent theme\n if (shouldReset && themeManager) {\n next = <Theme name={themeManager.state.parentName}>{next}</Theme>\n }\n return <ThemeManagerContext.Provider value={value}>{next}</ThemeManagerContext.Provider>\n}\n"],
5
- "mappings": "AA4CM;AA5CN,SAAS,aAAa;AACtB,SAAgB,UAAU,oBAA6B;AAEvD,SAAS,wBAAwB;AAEjC,SAAS,2BAA2B;AACpC,SAAS,4BAA4B;AAG9B,SAAS,MAAM,OAAmB;AAEvC,MAAI,MAAM,SAAS;AACjB,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,SAAS,CAAC,CAAC,MAAM;AACvB,QAAM,EAAE,MAAM,OAAO,cAAc,UAAU,IAAI,qBAAqB,OAAO,MAAM;AACnF,QAAM,oBAAoB,MAAM;AAChC,QAAM,eAAe,EAAE,QAAQ;AAI/B,MAAI,WAAW;AAAA,IACb,MAAM,oBACF,SAAS;AAAA,MAAI,MAAM;AAAA,MAAU,CAAC,UAC5B,aAAa,OAAO,EAAE,CAAC,mBAAmB,KAAK,CAAC;AAAA,IAClD,IACA,MAAM;AAAA,IACV;AAAA,EACF;AAEA,MAAI,QAAQ,IAAI,aAAa,iBAAiB,cAAc;AAE1D,YAAQ,CAAC,SAAS,QAAQ,KAAK,0BAA0B,MAAM;AAC/D,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,qBAAqB,cAAc;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,OAAO;AACT,UAAM,KAAK,CAAC,MAAM,WAAW,WAAW,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACjF,eACE,oBAAC;AAAA,MACC,WAAW;AAAA,MACX,OAAO;AAAA,QAEL,OAAO,iBAAiB,+BAAO,KAAK;AAAA,MACtC;AAAA,MAEC;AAAA,KACH;AAAA,EAEJ;AAEA,SAAO;AACT;AAEO,SAAS,uBACd,UACA,cACA,aACA;AAEA,QAAM,QAAQ;AAEd,MAAI,CAAC;AAAO,WAAO;AAEnB,MAAI,OAAO;AAGX,MAAI,eAAe,cAAc;AAC/B,WAAO,oBAAC;AAAA,MAAM,MAAM,aAAa,MAAM;AAAA,MAAa;AAAA,KAAK;AAAA,EAC3D;AACA,SAAO,oBAAC,oBAAoB,UAApB;AAAA,IAA6B;AAAA,IAAe;AAAA,GAAK;AAC3D;",
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { Children, cloneElement } from 'react'\n\nimport { variableToString } from '../createVariable'\nimport { ThemeManagerContext } from '../helpers/ThemeManagerContext'\nimport { useServerRef } from '../hooks/useServerHooks'\nimport { ChangedThemeResponse, useChangeThemeEffect } from '../hooks/useTheme'\nimport { ThemeProps } from '../types'\n\nexport function Theme(props: ThemeProps) {\n // @ts-expect-error only for internal views\n if (props.disable) return props.children\n const isRoot = !!props['_isRoot']\n const themeState = useChangeThemeEffect(props, isRoot)\n const children = props['data-themeable']\n ? Children.map(props.children, (child) =>\n cloneElement(child, { ['data-themeable']: true })\n )\n : props.children\n\n return useThemedChildren(themeState, children, props)\n}\n\nexport function useThemedChildren(\n themeState: ChangedThemeResponse,\n children: any,\n options: { forceClassName?: boolean; shallow?: boolean }\n) {\n const { themeManager, isNewTheme, className, theme } = themeState\n const { shallow, forceClassName } = options\n\n const hasEverThemed = useServerRef(false)\n if (isNewTheme) {\n hasEverThemed.current = true\n }\n\n // once a theme is set it always passes the context to avoid reparenting\n // until then no context to avoid lots of context\n if (!isNewTheme && !hasEverThemed.current && !forceClassName && !shallow) {\n return children\n }\n\n // be sure to memoize shouldReset to avoid reparenting\n let next = children\n\n if (shallow && themeManager) {\n next = Children.map(next, (child) => {\n return cloneElement(\n child,\n undefined,\n <Theme name={themeManager.state.parentName}>{child.props.children}</Theme>\n )\n })\n }\n\n next = (\n <ThemeManagerContext.Provider value={themeManager}>\n {next}\n </ThemeManagerContext.Provider>\n )\n\n if (isWeb) {\n const enableClassName =\n forceClassName === true || (forceClassName !== false && isNewTheme)\n return (\n <span\n className=\"_dsp_contents\"\n {...(theme &&\n enableClassName && {\n className: `${className} ${forceClassName ? 'forced1' : ''} _dsp_contents`,\n style: {\n // in order to provide currentColor, set color by default\n color: variableToString(theme.color),\n },\n })}\n >\n {next}\n </span>\n )\n }\n\n return next\n}\n"],
5
+ "mappings": "AAkDQ;AAlDR,SAAS,aAAa;AACtB,SAAS,UAAU,oBAAoB;AAEvC,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AACpC,SAAS,oBAAoB;AAC7B,SAA+B,4BAA4B;AAGpD,SAAS,MAAM,OAAmB;AAEvC,MAAI,MAAM;AAAS,WAAO,MAAM;AAChC,QAAM,SAAS,CAAC,CAAC,MAAM;AACvB,QAAM,aAAa,qBAAqB,OAAO,MAAM;AACrD,QAAM,WAAW,MAAM,oBACnB,SAAS;AAAA,IAAI,MAAM;AAAA,IAAU,CAAC,UAC5B,aAAa,OAAO,EAAE,CAAC,mBAAmB,KAAK,CAAC;AAAA,EAClD,IACA,MAAM;AAEV,SAAO,kBAAkB,YAAY,UAAU,KAAK;AACtD;AAEO,SAAS,kBACd,YACA,UACA,SACA;AACA,QAAM,EAAE,cAAc,YAAY,WAAW,MAAM,IAAI;AACvD,QAAM,EAAE,SAAS,eAAe,IAAI;AAEpC,QAAM,gBAAgB,aAAa,KAAK;AACxC,MAAI,YAAY;AACd,kBAAc,UAAU;AAAA,EAC1B;AAIA,MAAI,CAAC,cAAc,CAAC,cAAc,WAAW,CAAC,kBAAkB,CAAC,SAAS;AACxE,WAAO;AAAA,EACT;AAGA,MAAI,OAAO;AAEX,MAAI,WAAW,cAAc;AAC3B,WAAO,SAAS,IAAI,MAAM,CAAC,UAAU;AACnC,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,oBAAC;AAAA,UAAM,MAAM,aAAa,MAAM;AAAA,UAAa,gBAAM,MAAM;AAAA,SAAS;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE,oBAAC,oBAAoB,UAApB;AAAA,IAA6B,OAAO;AAAA,IAClC;AAAA,GACH;AAGF,MAAI,OAAO;AACT,UAAM,kBACJ,mBAAmB,QAAS,mBAAmB,SAAS;AAC1D,WACE,oBAAC;AAAA,MACC,WAAU;AAAA,MACT,GAAI,SACH,mBAAmB;AAAA,QACjB,WAAW,GAAG,aAAa,iBAAiB,YAAY;AAAA,QACxD,OAAO;AAAA,UAEL,OAAO,iBAAiB,MAAM,KAAK;AAAA,QACrC;AAAA,MACF;AAAA,MAED;AAAA,KACH;AAAA,EAEJ;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -26,7 +26,7 @@ const ThemeProvider = (props) => {
26
26
  children: /* @__PURE__ */ jsx(Theme, {
27
27
  className: props.className,
28
28
  name: props.defaultTheme,
29
- disableThemeClass: props.disableRootThemeClass,
29
+ forceClassName: props.disableRootThemeClass ? false : void 0,
30
30
  _isRoot: true,
31
31
  children: props.children
32
32
  })
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeProvider.tsx"],
4
- "sourcesContent": ["import { isClient } from '@tamagui/constants'\nimport { createContext, useLayoutEffect, useMemo } from 'react'\n\nimport { THEME_CLASSNAME_PREFIX } from '../constants/constants'\nimport { Theme } from './Theme'\n\nexport type ThemeProviderProps = {\n className?: string\n defaultTheme: string\n disableRootThemeClass?: boolean\n themeClassNameOnRoot?: boolean\n children?: any\n reset?: boolean\n}\n\nexport const ThemeProviderRootContext = createContext<Pick<\n ThemeProviderProps,\n 'defaultTheme'\n> | null>(null)\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n // ensure theme is attached to root body node as well to work with modals by default\n if (isClient) {\n useLayoutEffect(() => {\n if (props.disableRootThemeClass) return\n const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`\n const target = props.themeClassNameOnRoot ? document.documentElement : document.body\n target.classList.add(cn)\n return () => {\n target.classList.remove(cn)\n }\n }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot])\n }\n\n return (\n <ThemeProviderRootContext.Provider\n value={useMemo(() => {\n return {\n defaultTheme: props.defaultTheme,\n }\n // NOTE DON'T CHANGE THIS ITS ONLY USED BY useThemeName for SSR safety for now...\n }, [])}\n >\n <Theme\n className={props.className}\n name={props.defaultTheme}\n disableThemeClass={props.disableRootThemeClass}\n // @ts-expect-error\n _isRoot\n >\n {props.children}\n </Theme>\n </ThemeProviderRootContext.Provider>\n )\n}\n"],
5
- "mappings": "AA2CM;AA3CN,SAAS,gBAAgB;AACzB,SAAS,eAAe,iBAAiB,eAAe;AAExD,SAAS,8BAA8B;AACvC,SAAS,aAAa;AAWf,MAAM,2BAA2B,cAG9B,IAAI;AAEP,MAAM,gBAAgB,CAAC,UAA8B;AAE1D,MAAI,UAAU;AACZ,oBAAgB,MAAM;AACpB,UAAI,MAAM;AAAuB;AACjC,YAAM,KAAK,GAAG,yBAAyB,MAAM;AAC7C,YAAM,SAAS,MAAM,uBAAuB,SAAS,kBAAkB,SAAS;AAChF,aAAO,UAAU,IAAI,EAAE;AACvB,aAAO,MAAM;AACX,eAAO,UAAU,OAAO,EAAE;AAAA,MAC5B;AAAA,IACF,GAAG,CAAC,MAAM,cAAc,MAAM,uBAAuB,MAAM,oBAAoB,CAAC;AAAA,EAClF;AAEA,SACE,oBAAC,yBAAyB,UAAzB;AAAA,IACC,OAAO,QAAQ,MAAM;AACnB,aAAO;AAAA,QACL,cAAc,MAAM;AAAA,MACtB;AAAA,IAEF,GAAG,CAAC,CAAC;AAAA,IAEL,8BAAC;AAAA,MACC,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,mBAAmB,MAAM;AAAA,MAEzB,SAAO;AAAA,MAEN,gBAAM;AAAA,KACT;AAAA,GACF;AAEJ;",
4
+ "sourcesContent": ["import { isClient } from '@tamagui/constants'\nimport { createContext, useLayoutEffect, useMemo } from 'react'\n\nimport { THEME_CLASSNAME_PREFIX } from '../constants/constants'\nimport { Theme } from './Theme'\n\nexport type ThemeProviderProps = {\n className?: string\n defaultTheme: string\n disableRootThemeClass?: boolean\n themeClassNameOnRoot?: boolean\n children?: any\n reset?: boolean\n}\n\nexport const ThemeProviderRootContext = createContext<Pick<\n ThemeProviderProps,\n 'defaultTheme'\n> | null>(null)\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n // ensure theme is attached to root body node as well to work with modals by default\n if (isClient) {\n useLayoutEffect(() => {\n if (props.disableRootThemeClass) return\n const cn = `${THEME_CLASSNAME_PREFIX}${props.defaultTheme}`\n const target = props.themeClassNameOnRoot ? document.documentElement : document.body\n target.classList.add(cn)\n return () => {\n target.classList.remove(cn)\n }\n }, [props.defaultTheme, props.disableRootThemeClass, props.themeClassNameOnRoot])\n }\n\n return (\n <ThemeProviderRootContext.Provider\n value={useMemo(() => {\n return {\n defaultTheme: props.defaultTheme,\n }\n // NOTE DON'T CHANGE THIS ITS ONLY USED BY useThemeName for SSR safety for now...\n }, [])}\n >\n <Theme\n className={props.className}\n name={props.defaultTheme}\n forceClassName={props.disableRootThemeClass ? false : undefined}\n // @ts-expect-error\n _isRoot\n >\n {props.children}\n </Theme>\n </ThemeProviderRootContext.Provider>\n )\n}\n"],
5
+ "mappings": "AA2CM;AA3CN,SAAS,gBAAgB;AACzB,SAAS,eAAe,iBAAiB,eAAe;AAExD,SAAS,8BAA8B;AACvC,SAAS,aAAa;AAWf,MAAM,2BAA2B,cAG9B,IAAI;AAEP,MAAM,gBAAgB,CAAC,UAA8B;AAE1D,MAAI,UAAU;AACZ,oBAAgB,MAAM;AACpB,UAAI,MAAM;AAAuB;AACjC,YAAM,KAAK,GAAG,yBAAyB,MAAM;AAC7C,YAAM,SAAS,MAAM,uBAAuB,SAAS,kBAAkB,SAAS;AAChF,aAAO,UAAU,IAAI,EAAE;AACvB,aAAO,MAAM;AACX,eAAO,UAAU,OAAO,EAAE;AAAA,MAC5B;AAAA,IACF,GAAG,CAAC,MAAM,cAAc,MAAM,uBAAuB,MAAM,oBAAoB,CAAC;AAAA,EAClF;AAEA,SACE,oBAAC,yBAAyB,UAAzB;AAAA,IACC,OAAO,QAAQ,MAAM;AACnB,aAAO;AAAA,QACL,cAAc,MAAM;AAAA,MACtB;AAAA,IAEF,GAAG,CAAC,CAAC;AAAA,IAEL,8BAAC;AAAA,MACC,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM;AAAA,MACZ,gBAAgB,MAAM,wBAAwB,QAAQ;AAAA,MAEtD,SAAO;AAAA,MAEN,gBAAM;AAAA,KACT;AAAA,GACF;AAEJ;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/core",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -28,14 +28,14 @@
28
28
  "reset.css"
29
29
  ],
30
30
  "dependencies": {
31
- "@tamagui/compose-refs": "^1.0.2",
32
- "@tamagui/constants": "^1.0.2",
33
- "@tamagui/helpers": "^1.0.2",
34
- "@tamagui/react-native-use-pressable": "^1.0.2",
35
- "@tamagui/react-native-use-responder-events": "^1.0.2",
36
- "@tamagui/use-did-finish-ssr": "^1.0.2",
37
- "@tamagui/use-event": "^1.0.2",
38
- "@tamagui/use-force-update": "^1.0.2",
31
+ "@tamagui/compose-refs": "^1.0.4",
32
+ "@tamagui/constants": "^1.0.4",
33
+ "@tamagui/helpers": "^1.0.4",
34
+ "@tamagui/react-native-use-pressable": "^1.0.4",
35
+ "@tamagui/react-native-use-responder-events": "^1.0.4",
36
+ "@tamagui/use-did-finish-ssr": "^1.0.4",
37
+ "@tamagui/use-event": "^1.0.4",
38
+ "@tamagui/use-force-update": "^1.0.4",
39
39
  "normalize-css-color": "^1.0.2"
40
40
  },
41
41
  "peerDependencies": {
@@ -43,13 +43,13 @@
43
43
  "react-dom": "*"
44
44
  },
45
45
  "devDependencies": {
46
- "@tamagui/build": "^1.0.2",
46
+ "@tamagui/build": "^1.0.4",
47
47
  "@testing-library/react": "^13.4.0",
48
48
  "csstype": "^3.0.10",
49
49
  "react": "^18.2.0",
50
50
  "react-dom": "^18.2.0",
51
51
  "typescript": "^4.7.4",
52
- "vitest": "^0.26.2"
52
+ "vitest": "^0.26.3"
53
53
  },
54
54
  "exports": {
55
55
  "./package.json": "./package.json",
package/reset.css CHANGED
@@ -23,6 +23,10 @@ li, select, input, button, [role="slider"], [role="listbox"] {
23
23
  outline: none;
24
24
  }
25
25
 
26
+ .is_Fieldset {
27
+ all: unset;
28
+ }
29
+
26
30
  p, input, textarea, button, ul, ol, li, pre, dialog {
27
31
  all: unset;
28
32
  box-sizing: border-box;