@yahoo/uds-mobile 2.21.1 → 2.22.0

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/README.md +2 -0
  2. package/dist/bin/automated-config/dist/generated/generatedConfigs.mjs +67 -51
  3. package/dist/components/Button/buttonTheme.cjs +69 -0
  4. package/dist/components/Button/buttonTheme.d.cts +24 -0
  5. package/dist/components/Button/buttonTheme.d.cts.map +1 -0
  6. package/dist/components/Button/buttonTheme.d.ts +24 -0
  7. package/dist/components/Button/buttonTheme.d.ts.map +1 -0
  8. package/dist/components/Button/buttonTheme.js +68 -0
  9. package/dist/components/Button/buttonTheme.js.map +1 -0
  10. package/dist/components/Button.cjs +7 -1
  11. package/dist/components/Button.d.cts.map +1 -1
  12. package/dist/components/Button.d.ts.map +1 -1
  13. package/dist/components/Button.js +7 -1
  14. package/dist/components/Button.js.map +1 -1
  15. package/dist/components/IconButton.cjs +33 -21
  16. package/dist/components/IconButton.d.cts.map +1 -1
  17. package/dist/components/IconButton.d.ts.map +1 -1
  18. package/dist/components/IconButton.js +34 -22
  19. package/dist/components/IconButton.js.map +1 -1
  20. package/dist/components/Switch.cjs +34 -12
  21. package/dist/components/Switch.d.cts.map +1 -1
  22. package/dist/components/Switch.d.ts.map +1 -1
  23. package/dist/components/Switch.js +36 -14
  24. package/dist/components/Switch.js.map +1 -1
  25. package/dist/components/UDSGestureProvider.cjs +4 -0
  26. package/dist/components/UDSGestureProvider.d.cts +3 -0
  27. package/dist/components/UDSGestureProvider.d.ts +3 -0
  28. package/dist/components/UDSGestureProvider.js +3 -0
  29. package/dist/components/UDSProvider.cjs +10 -5
  30. package/dist/components/UDSProvider.d.cts +15 -7
  31. package/dist/components/UDSProvider.d.cts.map +1 -1
  32. package/dist/components/UDSProvider.d.ts +15 -7
  33. package/dist/components/UDSProvider.d.ts.map +1 -1
  34. package/dist/components/UDSProvider.js +10 -6
  35. package/dist/components/UDSProvider.js.map +1 -1
  36. package/dist/components/internal/Overlay/OverlayPortal.js.map +1 -1
  37. package/dist/jest/mocks/styles.cjs +21 -9
  38. package/dist/jest/mocks/styles.d.cts.map +1 -1
  39. package/dist/jest/mocks/styles.d.ts.map +1 -1
  40. package/dist/jest/mocks/styles.js +21 -9
  41. package/dist/jest/mocks/styles.js.map +1 -1
  42. package/dist/jest/mocks/unistyles.cjs +16 -1
  43. package/dist/jest/mocks/unistyles.d.cts +56 -2
  44. package/dist/jest/mocks/unistyles.d.cts.map +1 -1
  45. package/dist/jest/mocks/unistyles.d.ts +56 -2
  46. package/dist/jest/mocks/unistyles.d.ts.map +1 -1
  47. package/dist/jest/mocks/unistyles.js +16 -1
  48. package/dist/jest/mocks/unistyles.js.map +1 -1
  49. package/dist/portal.cjs +1 -1
  50. package/dist/portal.js +1 -1
  51. package/dist/portal.js.map +1 -1
  52. package/generated/styles.d.ts +1 -1
  53. package/package.json +11 -1
@@ -6,31 +6,35 @@ import { jsx } from "react/jsx-runtime";
6
6
  import { GestureHandlerRootView } from "react-native-gesture-handler";
7
7
  //#region src/components/UDSProvider.tsx
8
8
  /**
9
- * Root provider for UDS Mobile.
9
+ * Root gesture and portal provider for UDS Mobile overlays.
10
10
  *
11
11
  * Place this at the top of your app layout:
12
12
  *
13
13
  * @example
14
14
  * ```tsx
15
- * import { UDSProvider } from '@yahoo/uds-mobile/UDSProvider';
15
+ * import { UDSGestureProvider } from '@yahoo/uds-mobile/UDSGestureProvider';
16
16
  *
17
17
  * export default function RootLayout() {
18
18
  * return (
19
- * <UDSProvider>
19
+ * <UDSGestureProvider>
20
20
  * <Stack />
21
- * </UDSProvider>
21
+ * </UDSGestureProvider>
22
22
  * );
23
23
  * }
24
24
  * ```
25
25
  */
26
- const UDSProvider = memo(function UDSProvider({ children }) {
26
+ const UDSGestureProvider = memo(function UDSGestureProvider({ children }) {
27
27
  return /* @__PURE__ */ jsx(GestureHandlerRootView, {
28
28
  style: styles.root,
29
29
  children: /* @__PURE__ */ jsx(PortalProvider, { children })
30
30
  });
31
31
  });
32
+ /**
33
+ * @deprecated Use {@link UDSGestureProvider} from `@yahoo/uds-mobile/UDSGestureProvider`.
34
+ */
35
+ const UDSProvider = UDSGestureProvider;
32
36
  const styles = StyleSheet.create({ root: { flex: 1 } });
33
37
  //#endregion
34
- export { UDSProvider };
38
+ export { UDSGestureProvider, UDSProvider };
35
39
 
36
40
  //# sourceMappingURL=UDSProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UDSProvider.js","names":[],"sources":["../../src/components/UDSProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { memo } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { GestureHandlerRootView } from 'react-native-gesture-handler';\n\nimport { PortalProvider } from '../portal';\n\ninterface UDSProviderProps {\n children: ReactNode;\n}\n\n/**\n * Root provider for UDS Mobile.\n *\n * Place this at the top of your app layout:\n *\n * @example\n * ```tsx\n * import { UDSProvider } from '@yahoo/uds-mobile/UDSProvider';\n *\n * export default function RootLayout() {\n * return (\n * <UDSProvider>\n * <Stack />\n * </UDSProvider>\n * );\n * }\n * ```\n */\nconst UDSProvider = memo(function UDSProvider({ children }: UDSProviderProps) {\n return (\n <GestureHandlerRootView style={styles.root}>\n <PortalProvider>{children}</PortalProvider>\n </GestureHandlerRootView>\n );\n});\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n});\n\nexport { UDSProvider };\nexport type { UDSProviderProps };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,cAAc,KAAK,SAAS,YAAY,EAAE,YAA8B;CAC5E,OACE,oBAAC,wBAAD;EAAwB,OAAO,OAAO;YACpC,oBAAC,gBAAD,EAAiB,UAA0B,CAAA;EACpB,CAAA;EAE3B;AAEF,MAAM,SAAS,WAAW,OAAO,EAC/B,MAAM,EACJ,MAAM,GACP,EACF,CAAC"}
1
+ {"version":3,"file":"UDSProvider.js","names":[],"sources":["../../src/components/UDSProvider.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { memo } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { GestureHandlerRootView } from 'react-native-gesture-handler';\n\nimport { PortalProvider } from '../portal';\n\ninterface UDSGestureProviderProps {\n children: ReactNode;\n}\n\n/**\n * Root gesture and portal provider for UDS Mobile overlays.\n *\n * Place this at the top of your app layout:\n *\n * @example\n * ```tsx\n * import { UDSGestureProvider } from '@yahoo/uds-mobile/UDSGestureProvider';\n *\n * export default function RootLayout() {\n * return (\n * <UDSGestureProvider>\n * <Stack />\n * </UDSGestureProvider>\n * );\n * }\n * ```\n */\nconst UDSGestureProvider = memo(function UDSGestureProvider({ children }: UDSGestureProviderProps) {\n return (\n <GestureHandlerRootView style={styles.root}>\n <PortalProvider>{children}</PortalProvider>\n </GestureHandlerRootView>\n );\n});\n\n/**\n * @deprecated Use {@link UDSGestureProvider} from `@yahoo/uds-mobile/UDSGestureProvider`.\n */\nconst UDSProvider = UDSGestureProvider;\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1,\n },\n});\n\nexport { UDSGestureProvider, UDSProvider };\nexport type { UDSGestureProviderProps };\n/**\n * @deprecated Use {@link UDSGestureProviderProps}.\n */\nexport type UDSProviderProps = UDSGestureProviderProps;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAM,qBAAqB,KAAK,SAAS,mBAAmB,EAAE,YAAqC;CACjG,OACE,oBAAC,wBAAD;EAAwB,OAAO,OAAO;YACpC,oBAAC,gBAAD,EAAiB,UAA0B,CAAA;EACpB,CAAA;EAE3B;;;;AAKF,MAAM,cAAc;AAEpB,MAAM,SAAS,WAAW,OAAO,EAC/B,MAAM,EACJ,MAAM,GACP,EACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayPortal.js","names":[],"sources":["../../../../src/components/internal/Overlay/OverlayPortal.tsx"],"sourcesContent":["import { Platform } from 'react-native';\nimport { FullWindowOverlay } from 'react-native-screens';\n\nimport { Portal, usePortalContext } from '../../../portal';\nimport type { OverlayPortalProps } from './types';\n\n/**\n * Internal portal wrapper for mobile overlays.\n *\n * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.\n */\nfunction OverlayPortal({ children, useFullWindowOverlay = true }: OverlayPortalProps) {\n // Always assert UDSProvider presence, even when iOS renders through FullWindowOverlay.\n usePortalContext();\n\n if (Platform.OS === 'ios' && useFullWindowOverlay) {\n return <FullWindowOverlay>{children}</FullWindowOverlay>;\n }\n\n return <Portal>{children}</Portal>;\n}\n\nexport { OverlayPortal };\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,cAAc,EAAE,UAAU,uBAAuB,QAA4B;CAEpF,kBAAkB;CAElB,IAAI,SAAS,OAAO,SAAS,sBAC3B,OAAO,oBAAC,mBAAD,EAAoB,UAA6B,CAAA;CAG1D,OAAO,oBAAC,QAAD,EAAS,UAAkB,CAAA"}
1
+ {"version":3,"file":"OverlayPortal.js","names":[],"sources":["../../../../src/components/internal/Overlay/OverlayPortal.tsx"],"sourcesContent":["import { Platform } from 'react-native';\nimport { FullWindowOverlay } from 'react-native-screens';\n\nimport { Portal, usePortalContext } from '../../../portal';\nimport type { OverlayPortalProps } from './types';\n\n/**\n * Internal portal wrapper for mobile overlays.\n *\n * Uses `FullWindowOverlay` on iOS when requested, otherwise renders through the UDS portal host.\n */\nfunction OverlayPortal({ children, useFullWindowOverlay = true }: OverlayPortalProps) {\n // Always assert UDSGestureProvider presence, even when iOS renders through FullWindowOverlay.\n usePortalContext();\n\n if (Platform.OS === 'ios' && useFullWindowOverlay) {\n return <FullWindowOverlay>{children}</FullWindowOverlay>;\n }\n\n return <Portal>{children}</Portal>;\n}\n\nexport { OverlayPortal };\n"],"mappings":";;;;;;;;;;;AAWA,SAAS,cAAc,EAAE,UAAU,uBAAuB,QAA4B;CAEpF,kBAAkB;CAElB,IAAI,SAAS,OAAO,SAAS,sBAC3B,OAAO,oBAAC,mBAAD,EAAoB,UAA6B,CAAA;CAG1D,OAAO,oBAAC,QAAD,EAAS,UAAkB,CAAA"}
@@ -52,12 +52,13 @@ const defaultFoundation = {
52
52
  boxShadow: ""
53
53
  };
54
54
  function createStyleObject(baseStyles = {}) {
55
- return new Proxy({
55
+ const useVariants = jest.fn();
56
+ const proxy = new Proxy({
56
57
  ...defaultFoundation,
57
58
  ...baseStyles,
58
- useVariants: jest.fn()
59
+ useVariants
59
60
  }, { get(target, prop) {
60
- if (prop === "useVariants") return jest.fn();
61
+ if (prop === "useVariants") return useVariants;
61
62
  if (prop in target) return target[prop];
62
63
  if (typeof prop === "string") {
63
64
  if (prop.includes("color") || prop.includes("Color")) return "#000000";
@@ -68,15 +69,20 @@ function createStyleObject(baseStyles = {}) {
68
69
  if (prop.includes("gap") || prop.includes("Gap")) return 0;
69
70
  }
70
71
  } });
72
+ useVariants.mockReturnValue(proxy);
73
+ return proxy;
71
74
  }
72
75
  function createComponentStyles(styleKeys) {
73
- const result = { useVariants: jest.fn() };
76
+ const useVariants = jest.fn();
77
+ const result = { useVariants };
74
78
  for (const [key, baseStyles] of Object.entries(styleKeys)) result[key] = createStyleObject(baseStyles);
75
- return new Proxy(result, { get(target, prop) {
76
- if (prop === "useVariants") return jest.fn();
79
+ const proxy = new Proxy(result, { get(target, prop) {
80
+ if (prop === "useVariants") return useVariants;
77
81
  if (prop in target) return target[prop];
78
82
  if (typeof prop === "string") return createStyleObject();
79
83
  } });
84
+ useVariants.mockReturnValue(proxy);
85
+ return proxy;
80
86
  }
81
87
  const styles = createComponentStyles({ foundation: defaultFoundation });
82
88
  const buttonStyles = createComponentStyles({
@@ -182,19 +188,25 @@ const switchStyles = createComponentStyles({
182
188
  alignItems: "center",
183
189
  gap: 8
184
190
  },
185
- track: {
191
+ switch: {
186
192
  width: 48,
187
193
  height: 28,
188
194
  borderRadius: 14,
189
195
  backgroundColor: "#E0E0E0"
190
196
  },
191
- thumb: {
197
+ handle: {
192
198
  width: 24,
193
199
  height: 24,
194
200
  borderRadius: 12,
195
201
  backgroundColor: "#FFFFFF"
196
202
  },
197
- label: {
203
+ handleIcon: {
204
+ fontSize: 16,
205
+ iconSizeToken: "sm",
206
+ lineHeight: 16,
207
+ color: "#000000"
208
+ },
209
+ text: {
198
210
  fontFamily: "YahooProductSans-Regular",
199
211
  fontSize: 14,
200
212
  lineHeight: 20,
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.cts","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"mappings":";;;;;;;;;;cAyGa,MAAA,EAAM,MAAA;AAAA,cAKN,YAAA,EAAY,MAAA;AAAA,cAgCZ,UAAA,EAAU,MAAA;AAAA,cAUV,WAAA,EAAW,MAAA;AAAA,cAuCX,cAAA,EAAc,MAAA;AAAA,cA2Bd,YAAA,EAAY,MAAA;AAAA,cA4BZ,YAAA,EAAY,MAAA;AAAA,cAqBZ,WAAA,EAAW,MAAA;AAAA,cAmBX,UAAA,EAAU,MAAA;AAAA,cAsBV,aAAA,EAAa,MAAA;AAAA,cAiBb,UAAA,EAAU,MAAA;AAAA,cAgBV,WAAA,EAAW,MAAA;AAAA,cA8BX,gBAAA,EAAgB,MAAA;AAAA,cAehB,iBAAA,EAAiB,MAAA;AAAA,cA0BjB,WAAA,EAAW,MAAA;AAAA,cASX,aAAA,EAAa,MAAA;AAAA,cAmCb,UAAA,EAAU,MAAA;AAAA,cASV,gBAAA,EAAgB,MAAA;AAAA,cAuBhB,WAAA,EAAW,MAAA;AAAA,cAuCX,WAAA,EAAW,MAAA;AAAA,UAiDP,UAAA;EACf,KAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EAAA,CACC,GAAA;AAAA"}
1
+ {"version":3,"file":"styles.d.cts","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"mappings":";;;;;;;;;;cA8Ga,MAAA,EAAM,MAAA;AAAA,cAKN,YAAA,EAAY,MAAA;AAAA,cAgCZ,UAAA,EAAU,MAAA;AAAA,cAUV,WAAA,EAAW,MAAA;AAAA,cAuCX,cAAA,EAAc,MAAA;AAAA,cA2Bd,YAAA,EAAY,MAAA;AAAA,cAkCZ,YAAA,EAAY,MAAA;AAAA,cAqBZ,WAAA,EAAW,MAAA;AAAA,cAmBX,UAAA,EAAU,MAAA;AAAA,cAsBV,aAAA,EAAa,MAAA;AAAA,cAiBb,UAAA,EAAU,MAAA;AAAA,cAgBV,WAAA,EAAW,MAAA;AAAA,cA8BX,gBAAA,EAAgB,MAAA;AAAA,cAehB,iBAAA,EAAiB,MAAA;AAAA,cA0BjB,WAAA,EAAW,MAAA;AAAA,cASX,aAAA,EAAa,MAAA;AAAA,cAmCb,UAAA,EAAU,MAAA;AAAA,cASV,gBAAA,EAAgB,MAAA;AAAA,cAuBhB,WAAA,EAAW,MAAA;AAAA,cAuCX,WAAA,EAAW,MAAA;AAAA,UAiDP,UAAA;EACf,KAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EAAA,CACC,GAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"mappings":";;;;;;;;;;cAyGa,MAAA,EAAM,MAAA;AAAA,cAKN,YAAA,EAAY,MAAA;AAAA,cAgCZ,UAAA,EAAU,MAAA;AAAA,cAUV,WAAA,EAAW,MAAA;AAAA,cAuCX,cAAA,EAAc,MAAA;AAAA,cA2Bd,YAAA,EAAY,MAAA;AAAA,cA4BZ,YAAA,EAAY,MAAA;AAAA,cAqBZ,WAAA,EAAW,MAAA;AAAA,cAmBX,UAAA,EAAU,MAAA;AAAA,cAsBV,aAAA,EAAa,MAAA;AAAA,cAiBb,UAAA,EAAU,MAAA;AAAA,cAgBV,WAAA,EAAW,MAAA;AAAA,cA8BX,gBAAA,EAAgB,MAAA;AAAA,cAehB,iBAAA,EAAiB,MAAA;AAAA,cA0BjB,WAAA,EAAW,MAAA;AAAA,cASX,aAAA,EAAa,MAAA;AAAA,cAmCb,UAAA,EAAU,MAAA;AAAA,cASV,gBAAA,EAAgB,MAAA;AAAA,cAuBhB,WAAA,EAAW,MAAA;AAAA,cAuCX,WAAA,EAAW,MAAA;AAAA,UAiDP,UAAA;EACf,KAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EAAA,CACC,GAAA;AAAA"}
1
+ {"version":3,"file":"styles.d.ts","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"mappings":";;;;;;;;;;cA8Ga,MAAA,EAAM,MAAA;AAAA,cAKN,YAAA,EAAY,MAAA;AAAA,cAgCZ,UAAA,EAAU,MAAA;AAAA,cAUV,WAAA,EAAW,MAAA;AAAA,cAuCX,cAAA,EAAc,MAAA;AAAA,cA2Bd,YAAA,EAAY,MAAA;AAAA,cAkCZ,YAAA,EAAY,MAAA;AAAA,cAqBZ,WAAA,EAAW,MAAA;AAAA,cAmBX,UAAA,EAAU,MAAA;AAAA,cAsBV,aAAA,EAAa,MAAA;AAAA,cAiBb,UAAA,EAAU,MAAA;AAAA,cAgBV,WAAA,EAAW,MAAA;AAAA,cA8BX,gBAAA,EAAgB,MAAA;AAAA,cAehB,iBAAA,EAAiB,MAAA;AAAA,cA0BjB,WAAA,EAAW,MAAA;AAAA,cASX,aAAA,EAAa,MAAA;AAAA,cAmCb,UAAA,EAAU,MAAA;AAAA,cASV,gBAAA,EAAgB,MAAA;AAAA,cAuBhB,WAAA,EAAW,MAAA;AAAA,cAuCX,WAAA,EAAW,MAAA;AAAA,UAiDP,UAAA;EACf,KAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EAAA,CACC,GAAA;AAAA"}
@@ -52,12 +52,13 @@ const defaultFoundation = {
52
52
  boxShadow: ""
53
53
  };
54
54
  function createStyleObject(baseStyles = {}) {
55
- return new Proxy({
55
+ const useVariants = jest.fn();
56
+ const proxy = new Proxy({
56
57
  ...defaultFoundation,
57
58
  ...baseStyles,
58
- useVariants: jest.fn()
59
+ useVariants
59
60
  }, { get(target, prop) {
60
- if (prop === "useVariants") return jest.fn();
61
+ if (prop === "useVariants") return useVariants;
61
62
  if (prop in target) return target[prop];
62
63
  if (typeof prop === "string") {
63
64
  if (prop.includes("color") || prop.includes("Color")) return "#000000";
@@ -68,15 +69,20 @@ function createStyleObject(baseStyles = {}) {
68
69
  if (prop.includes("gap") || prop.includes("Gap")) return 0;
69
70
  }
70
71
  } });
72
+ useVariants.mockReturnValue(proxy);
73
+ return proxy;
71
74
  }
72
75
  function createComponentStyles(styleKeys) {
73
- const result = { useVariants: jest.fn() };
76
+ const useVariants = jest.fn();
77
+ const result = { useVariants };
74
78
  for (const [key, baseStyles] of Object.entries(styleKeys)) result[key] = createStyleObject(baseStyles);
75
- return new Proxy(result, { get(target, prop) {
76
- if (prop === "useVariants") return jest.fn();
79
+ const proxy = new Proxy(result, { get(target, prop) {
80
+ if (prop === "useVariants") return useVariants;
77
81
  if (prop in target) return target[prop];
78
82
  if (typeof prop === "string") return createStyleObject();
79
83
  } });
84
+ useVariants.mockReturnValue(proxy);
85
+ return proxy;
80
86
  }
81
87
  const styles = createComponentStyles({ foundation: defaultFoundation });
82
88
  const buttonStyles = createComponentStyles({
@@ -182,19 +188,25 @@ const switchStyles = createComponentStyles({
182
188
  alignItems: "center",
183
189
  gap: 8
184
190
  },
185
- track: {
191
+ switch: {
186
192
  width: 48,
187
193
  height: 28,
188
194
  borderRadius: 14,
189
195
  backgroundColor: "#E0E0E0"
190
196
  },
191
- thumb: {
197
+ handle: {
192
198
  width: 24,
193
199
  height: 24,
194
200
  borderRadius: 12,
195
201
  backgroundColor: "#FFFFFF"
196
202
  },
197
- label: {
203
+ handleIcon: {
204
+ fontSize: 16,
205
+ iconSizeToken: "sm",
206
+ lineHeight: 16,
207
+ color: "#000000"
208
+ },
209
+ text: {
198
210
  fontFamily: "YahooProductSans-Regular",
199
211
  fontSize: 14,
200
212
  lineHeight: 20,
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"sourcesContent":["/**\n * Jest mock for generated/styles.\n *\n * Provides proxy-based mocks for the generated style objects\n * (styles, buttonStyles, etc.) with useVariants as a no-op.\n */\n\n/// <reference types=\"jest\" />\n\n// Default style values for foundation\nconst defaultFoundation = {\n // Layout\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n // Spacing\n padding: 0,\n paddingHorizontal: 0,\n paddingVertical: 0,\n margin: 0,\n gap: 0,\n // Colors\n backgroundColor: 'transparent',\n color: '#000000',\n borderColor: 'transparent',\n // Border\n borderWidth: 0,\n borderRadius: 0,\n // Typography\n fontFamily: 'System',\n fontSize: 14,\n lineHeight: 20,\n fontWeight: 'regular',\n // Effects\n opacity: 1,\n boxShadow: '',\n};\n\n// Create a style object with useVariants attached\nfunction createStyleObject(baseStyles: Record<string, unknown> = {}) {\n const proxy = new Proxy(\n { ...defaultFoundation, ...baseStyles, useVariants: jest.fn() },\n {\n get(target, prop) {\n if (prop === 'useVariants') {\n return jest.fn();\n }\n if (prop in target) {\n return target[prop as keyof typeof target];\n }\n // Return sensible defaults for unknown properties\n if (typeof prop === 'string') {\n if (prop.includes('color') || prop.includes('Color')) {\n return '#000000';\n }\n if (prop.includes('width') || prop.includes('Width')) {\n return 0;\n }\n if (prop.includes('radius') || prop.includes('Radius')) {\n return 0;\n }\n if (prop.includes('size') || prop.includes('Size')) {\n return 16;\n }\n if (prop.includes('spacing') || prop.includes('Spacing')) {\n return 0;\n }\n if (prop.includes('gap') || prop.includes('Gap')) {\n return 0;\n }\n }\n return undefined;\n },\n },\n );\n return proxy;\n}\n\n// Create a component style object (like buttonStyles) with multiple style keys\nfunction createComponentStyles(styleKeys: Record<string, Record<string, unknown>>) {\n const result: Record<string, unknown> = { useVariants: jest.fn() };\n\n for (const [key, baseStyles] of Object.entries(styleKeys)) {\n result[key] = createStyleObject(baseStyles);\n }\n\n return new Proxy(result, {\n get(target, prop) {\n if (prop === 'useVariants') {\n return jest.fn();\n }\n if (prop in target) {\n return target[prop as keyof typeof target];\n }\n // Return a default style object for any unknown key\n if (typeof prop === 'string') {\n return createStyleObject();\n }\n return undefined;\n },\n });\n}\n\n// Main styles export\nexport const styles = createComponentStyles({\n foundation: defaultFoundation,\n});\n\n// Button styles\nexport const buttonStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n paddingHorizontal: 16,\n paddingVertical: 10,\n backgroundColor: '#6001D2',\n borderRadius: 8,\n borderWidth: 0,\n borderColor: 'transparent',\n opacity: 1,\n boxShadow: '',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n letterSpacing: 0,\n lineHeight: 20,\n color: '#FFFFFF',\n },\n icon: {\n fontSize: 16,\n iconSizeToken: 'sm',\n lineHeight: 16,\n color: '#FFFFFF',\n },\n});\n\n// Text styles\nexport const textStyles = createComponentStyles({\n root: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Input styles\nexport const inputStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n inputContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: '#FFFFFF',\n borderRadius: 8,\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n input: {\n flex: 1,\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 16,\n lineHeight: 24,\n color: '#000000',\n },\n helperText: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 12,\n lineHeight: 16,\n color: '#666666',\n },\n});\n\n// Checkbox styles\nexport const checkboxStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n checkbox: {\n width: 20,\n height: 20,\n borderRadius: 4,\n borderWidth: 2,\n borderColor: '#6001D2',\n backgroundColor: 'transparent',\n },\n checkboxIcon: {\n color: '#6001D2',\n },\n text: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Switch styles\nexport const switchStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n track: {\n width: 48,\n height: 28,\n borderRadius: 14,\n backgroundColor: '#E0E0E0',\n },\n thumb: {\n width: 24,\n height: 24,\n borderRadius: 12,\n backgroundColor: '#FFFFFF',\n },\n label: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Avatar styles\nexport const avatarStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 9999,\n backgroundColor: '#E0E0E0',\n overflow: 'hidden',\n },\n image: {\n width: '100%',\n height: '100%',\n },\n initials: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n color: '#000000',\n },\n});\n\n// Badge styles\nexport const badgeStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n backgroundColor: '#E0E0E0',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 12,\n lineHeight: 16,\n color: '#000000',\n },\n});\n\n// Chip styles\nexport const chipStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n backgroundColor: '#F5F5F5',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Divider styles\nexport const dividerStyles = createComponentStyles({\n root: {\n gap: 8,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 12,\n lineHeight: 16,\n color: '#000000',\n },\n line: {\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n});\n\n// Link styles\nexport const linkStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n text: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#6001D2',\n textDecorationLine: 'underline',\n },\n});\n\n// Radio styles\nexport const radioStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n circle: {\n width: 20,\n height: 20,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#6001D2',\n backgroundColor: 'transparent',\n },\n dot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n backgroundColor: '#6001D2',\n },\n label: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// IconButton styles\nexport const iconButtonStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n backgroundColor: 'transparent',\n },\n icon: {\n fontSize: 24,\n color: '#000000',\n },\n});\n\n// BottomSheet styles\nexport const bottomSheetStyles = createComponentStyles({\n root: {\n backgroundColor: '#ffffff',\n backgroundBlurColor: '#ffffff',\n backgroundBlurRadius: 0,\n borderColor: '#e0e0e0',\n borderWidth: 1,\n borderRadius: 16,\n paddingHorizontal: 16,\n paddingVertical: 8,\n marginHorizontal: 8,\n marginBottom: 8,\n },\n header: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 16,\n letterSpacing: 0,\n lineHeight: 20,\n color: '#000000',\n },\n handleIndicator: {\n backgroundColor: '#999999',\n },\n});\n\n// Scrim styles\nexport const scrimStyles = createComponentStyles({\n root: {\n backgroundColor: '#000000',\n opacity: 0.2,\n backgroundBlurRadius: 0,\n },\n});\n\n// Popover styles\nexport const popoverStyles = createComponentStyles({\n root: {\n boxShadow: '0px 8px 16px rgba(0, 0, 0, 0.12)',\n },\n blur: {\n backgroundBlurRadius: 0,\n },\n closeIcon: {\n fontSize: 16,\n iconSizeToken: 'sm',\n lineHeight: 16,\n color: '#000000',\n },\n closeIconContainer: {\n padding: 8,\n },\n contentWrapper: {\n gap: 8,\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n svgBase: {\n borderRadius: 16,\n backgroundBlurColor: '#ffffff',\n backgroundBlurRadius: 0,\n backgroundColor: '#ffffff',\n backgroundOpacity: 1,\n },\n svgBorder: {\n borderColor: '#e0e0e0',\n borderWidth: 1,\n },\n});\n\n// Tabs (tab list chrome)\nexport const tabsStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n});\n\n// Pagination styles\nexport const paginationStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n item: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 8,\n borderRadius: 999,\n },\n text: {\n fontSize: 14,\n lineHeight: 16,\n },\n icon: {\n fontSize: 16,\n lineHeight: 16,\n },\n});\n\n// Toast styles\nexport const toastStyles = createComponentStyles({\n root: {\n alignItems: 'center',\n backgroundBlurColor: 'rgba(255, 255, 255, 0.9)',\n backgroundBlurRadius: 0,\n backgroundColor: '#FFFFFF',\n borderColor: '#E0E0E0',\n borderRadius: 12,\n borderWidth: 1,\n boxShadow: '',\n flexDirection: 'row',\n gap: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n text: {\n color: '#000000',\n },\n icon: {\n color: '#000000',\n fontSize: 16,\n iconSizeToken: 'md',\n lineHeight: 16,\n },\n closeIcon: {\n color: '#000000',\n fontSize: 12,\n iconSizeToken: 'sm',\n lineHeight: 12,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n letterSpacing: 0,\n lineHeight: 20,\n },\n});\n\n// Modal styles\nexport const modalStyles = createComponentStyles({\n root: {\n backgroundBlurColor: 'rgba(255, 255, 255, 0.9)',\n backgroundBlurRadius: 0,\n backgroundColor: '#FFFFFF',\n borderColor: '#E0E0E0',\n borderRadius: 16,\n borderWidth: 1,\n boxShadow: '',\n paddingVertical: 32,\n },\n actions: {\n gap: 12,\n },\n closeIcon: {\n color: '#000000',\n fontSize: 24,\n iconSizeToken: 'md',\n lineHeight: 24,\n },\n closeIconContainer: {\n padding: 8,\n },\n description: {\n color: '#000000',\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 18,\n letterSpacing: 0,\n lineHeight: 28,\n },\n scrim: {\n padding: 32,\n },\n spacingHorizontal: {\n paddingHorizontal: 32,\n },\n title: {\n color: '#000000',\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 28,\n letterSpacing: 0,\n lineHeight: 36,\n },\n titleDescriptionWrapper: {\n gap: 8,\n },\n});\n\n// Type for StyleProps\nexport interface StyleProps {\n color?: string;\n backgroundColor?: string;\n borderColor?: string;\n borderWidth?: number;\n borderRadius?: number;\n [key: string]: unknown;\n}\n"],"mappings":"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AsB;EACtB,iBAAiB;EACjB,aAAa;EACb,cAAc;EACd,aAAa;EACb,WAAW;EACX,eAAe;EACf,KAAK;EACL,mBAAmB;EACnB,iBAAiB;EAClB;CACD,MAAM,EACJ,OAAO,WACR;CACD,MAAM;EACJ,OAAO;EACP,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACD,WAAW;EACT,OAAO;EACP,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACD,OAAO;EACL,YAAY;EACZ,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACF,CAAC;AAGF,MAAa,cAAc,sBAAsB;CAC/C,MAAM;EACJ,qBAAqB;EACrB,sBAAsB;EACtB,iBAAiB;EACjB,aAAa;EACb,cAAc;EACd,aAAa;EACb,WAAW;EACX,iBAAiB;EAClB;CACD,SAAS,EACP,KAAK,IACN;CACD,WAAW;EACT,OAAO;EACP,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACD,oBAAoB,EAClB,SAAS,GACV;CACD,aAAa;EACX,OAAO;EACP,YAAY;EACZ,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACD,OAAO,EACL,SAAS,IACV;CACD,mBAAmB,EACjB,mBAAmB,IACpB;CACD,OAAO;EACL,OAAO;EACP,YAAY;EACZ,UAAU;EACV,eAAe;EACf,YAAY;EACb;CACD,yBAAyB,EACvB,KAAK,GACN;CACF,CAAC"}
1
+ {"version":3,"file":"styles.js","names":[],"sources":["../../../src/jest/mocks/styles.ts"],"sourcesContent":["/**\n * Jest mock for generated/styles.\n *\n * Provides proxy-based mocks for the generated style objects\n * (styles, buttonStyles, etc.) with useVariants as a no-op.\n */\n\n/// <reference types=\"jest\" />\n\n// Default style values for foundation\nconst defaultFoundation = {\n // Layout\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n justifyContent: 'flex-start',\n // Spacing\n padding: 0,\n paddingHorizontal: 0,\n paddingVertical: 0,\n margin: 0,\n gap: 0,\n // Colors\n backgroundColor: 'transparent',\n color: '#000000',\n borderColor: 'transparent',\n // Border\n borderWidth: 0,\n borderRadius: 0,\n // Typography\n fontFamily: 'System',\n fontSize: 14,\n lineHeight: 20,\n fontWeight: 'regular',\n // Effects\n opacity: 1,\n boxShadow: '',\n};\n\n// Create a style object with useVariants attached\nfunction createStyleObject(baseStyles: Record<string, unknown> = {}) {\n const useVariants = jest.fn();\n const proxy = new Proxy(\n { ...defaultFoundation, ...baseStyles, useVariants },\n {\n get(target, prop) {\n if (prop === 'useVariants') {\n return useVariants;\n }\n if (prop in target) {\n return target[prop as keyof typeof target];\n }\n // Return sensible defaults for unknown properties\n if (typeof prop === 'string') {\n if (prop.includes('color') || prop.includes('Color')) {\n return '#000000';\n }\n if (prop.includes('width') || prop.includes('Width')) {\n return 0;\n }\n if (prop.includes('radius') || prop.includes('Radius')) {\n return 0;\n }\n if (prop.includes('size') || prop.includes('Size')) {\n return 16;\n }\n if (prop.includes('spacing') || prop.includes('Spacing')) {\n return 0;\n }\n if (prop.includes('gap') || prop.includes('Gap')) {\n return 0;\n }\n }\n return undefined;\n },\n },\n );\n useVariants.mockReturnValue(proxy);\n return proxy;\n}\n\n// Create a component style object (like buttonStyles) with multiple style keys\nfunction createComponentStyles(styleKeys: Record<string, Record<string, unknown>>) {\n const useVariants = jest.fn();\n const result: Record<string, unknown> = { useVariants };\n\n for (const [key, baseStyles] of Object.entries(styleKeys)) {\n result[key] = createStyleObject(baseStyles);\n }\n\n const proxy = new Proxy(result, {\n get(target, prop) {\n if (prop === 'useVariants') {\n return useVariants;\n }\n if (prop in target) {\n return target[prop as keyof typeof target];\n }\n // Return a default style object for any unknown key\n if (typeof prop === 'string') {\n return createStyleObject();\n }\n return undefined;\n },\n });\n useVariants.mockReturnValue(proxy);\n return proxy;\n}\n\n// Main styles export\nexport const styles = createComponentStyles({\n foundation: defaultFoundation,\n});\n\n// Button styles\nexport const buttonStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n paddingHorizontal: 16,\n paddingVertical: 10,\n backgroundColor: '#6001D2',\n borderRadius: 8,\n borderWidth: 0,\n borderColor: 'transparent',\n opacity: 1,\n boxShadow: '',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n letterSpacing: 0,\n lineHeight: 20,\n color: '#FFFFFF',\n },\n icon: {\n fontSize: 16,\n iconSizeToken: 'sm',\n lineHeight: 16,\n color: '#FFFFFF',\n },\n});\n\n// Text styles\nexport const textStyles = createComponentStyles({\n root: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Input styles\nexport const inputStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n inputContainer: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 12,\n paddingVertical: 10,\n backgroundColor: '#FFFFFF',\n borderRadius: 8,\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n input: {\n flex: 1,\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 16,\n lineHeight: 24,\n color: '#000000',\n },\n helperText: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 12,\n lineHeight: 16,\n color: '#666666',\n },\n});\n\n// Checkbox styles\nexport const checkboxStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n checkbox: {\n width: 20,\n height: 20,\n borderRadius: 4,\n borderWidth: 2,\n borderColor: '#6001D2',\n backgroundColor: 'transparent',\n },\n checkboxIcon: {\n color: '#6001D2',\n },\n text: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Switch styles\nexport const switchStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n switch: {\n width: 48,\n height: 28,\n borderRadius: 14,\n backgroundColor: '#E0E0E0',\n },\n handle: {\n width: 24,\n height: 24,\n borderRadius: 12,\n backgroundColor: '#FFFFFF',\n },\n handleIcon: {\n fontSize: 16,\n iconSizeToken: 'sm',\n lineHeight: 16,\n color: '#000000',\n },\n text: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Avatar styles\nexport const avatarStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 9999,\n backgroundColor: '#E0E0E0',\n overflow: 'hidden',\n },\n image: {\n width: '100%',\n height: '100%',\n },\n initials: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n color: '#000000',\n },\n});\n\n// Badge styles\nexport const badgeStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 8,\n paddingVertical: 2,\n borderRadius: 4,\n backgroundColor: '#E0E0E0',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 12,\n lineHeight: 16,\n color: '#000000',\n },\n});\n\n// Chip styles\nexport const chipStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 16,\n backgroundColor: '#F5F5F5',\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n text: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// Divider styles\nexport const dividerStyles = createComponentStyles({\n root: {\n gap: 8,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 12,\n lineHeight: 16,\n color: '#000000',\n },\n line: {\n borderWidth: 1,\n borderColor: '#E0E0E0',\n },\n});\n\n// Link styles\nexport const linkStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n text: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#6001D2',\n textDecorationLine: 'underline',\n },\n});\n\n// Radio styles\nexport const radioStyles = createComponentStyles({\n root: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n circle: {\n width: 20,\n height: 20,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#6001D2',\n backgroundColor: 'transparent',\n },\n dot: {\n width: 10,\n height: 10,\n borderRadius: 5,\n backgroundColor: '#6001D2',\n },\n label: {\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 14,\n lineHeight: 20,\n color: '#000000',\n },\n});\n\n// IconButton styles\nexport const iconButtonStyles = createComponentStyles({\n root: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 8,\n backgroundColor: 'transparent',\n },\n icon: {\n fontSize: 24,\n color: '#000000',\n },\n});\n\n// BottomSheet styles\nexport const bottomSheetStyles = createComponentStyles({\n root: {\n backgroundColor: '#ffffff',\n backgroundBlurColor: '#ffffff',\n backgroundBlurRadius: 0,\n borderColor: '#e0e0e0',\n borderWidth: 1,\n borderRadius: 16,\n paddingHorizontal: 16,\n paddingVertical: 8,\n marginHorizontal: 8,\n marginBottom: 8,\n },\n header: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 16,\n letterSpacing: 0,\n lineHeight: 20,\n color: '#000000',\n },\n handleIndicator: {\n backgroundColor: '#999999',\n },\n});\n\n// Scrim styles\nexport const scrimStyles = createComponentStyles({\n root: {\n backgroundColor: '#000000',\n opacity: 0.2,\n backgroundBlurRadius: 0,\n },\n});\n\n// Popover styles\nexport const popoverStyles = createComponentStyles({\n root: {\n boxShadow: '0px 8px 16px rgba(0, 0, 0, 0.12)',\n },\n blur: {\n backgroundBlurRadius: 0,\n },\n closeIcon: {\n fontSize: 16,\n iconSizeToken: 'sm',\n lineHeight: 16,\n color: '#000000',\n },\n closeIconContainer: {\n padding: 8,\n },\n contentWrapper: {\n gap: 8,\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n svgBase: {\n borderRadius: 16,\n backgroundBlurColor: '#ffffff',\n backgroundBlurRadius: 0,\n backgroundColor: '#ffffff',\n backgroundOpacity: 1,\n },\n svgBorder: {\n borderColor: '#e0e0e0',\n borderWidth: 1,\n },\n});\n\n// Tabs (tab list chrome)\nexport const tabsStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 8,\n },\n});\n\n// Pagination styles\nexport const paginationStyles = createComponentStyles({\n root: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n },\n item: {\n alignItems: 'center',\n justifyContent: 'center',\n padding: 8,\n borderRadius: 999,\n },\n text: {\n fontSize: 14,\n lineHeight: 16,\n },\n icon: {\n fontSize: 16,\n lineHeight: 16,\n },\n});\n\n// Toast styles\nexport const toastStyles = createComponentStyles({\n root: {\n alignItems: 'center',\n backgroundBlurColor: 'rgba(255, 255, 255, 0.9)',\n backgroundBlurRadius: 0,\n backgroundColor: '#FFFFFF',\n borderColor: '#E0E0E0',\n borderRadius: 12,\n borderWidth: 1,\n boxShadow: '',\n flexDirection: 'row',\n gap: 8,\n paddingHorizontal: 12,\n paddingVertical: 10,\n },\n text: {\n color: '#000000',\n },\n icon: {\n color: '#000000',\n fontSize: 16,\n iconSizeToken: 'md',\n lineHeight: 16,\n },\n closeIcon: {\n color: '#000000',\n fontSize: 12,\n iconSizeToken: 'sm',\n lineHeight: 12,\n },\n label: {\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 14,\n letterSpacing: 0,\n lineHeight: 20,\n },\n});\n\n// Modal styles\nexport const modalStyles = createComponentStyles({\n root: {\n backgroundBlurColor: 'rgba(255, 255, 255, 0.9)',\n backgroundBlurRadius: 0,\n backgroundColor: '#FFFFFF',\n borderColor: '#E0E0E0',\n borderRadius: 16,\n borderWidth: 1,\n boxShadow: '',\n paddingVertical: 32,\n },\n actions: {\n gap: 12,\n },\n closeIcon: {\n color: '#000000',\n fontSize: 24,\n iconSizeToken: 'md',\n lineHeight: 24,\n },\n closeIconContainer: {\n padding: 8,\n },\n description: {\n color: '#000000',\n fontFamily: 'YahooProductSans-Regular',\n fontSize: 18,\n letterSpacing: 0,\n lineHeight: 28,\n },\n scrim: {\n padding: 32,\n },\n spacingHorizontal: {\n paddingHorizontal: 32,\n },\n title: {\n color: '#000000',\n fontFamily: 'YahooProductSans-Medium',\n fontSize: 28,\n letterSpacing: 0,\n lineHeight: 36,\n },\n titleDescriptionWrapper: {\n gap: 8,\n },\n});\n\n// Type for StyleProps\nexport interface StyleProps {\n color?: string;\n backgroundColor?: string;\n borderColor?: string;\n borderWidth?: number;\n borderRadius?: number;\n [key: string]: unknown;\n}\n"],"mappings":"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"}
@@ -78,7 +78,22 @@ const mockTheme = {
78
78
  xl: 16,
79
79
  full: 9999
80
80
  },
81
- components: {}
81
+ components: {
82
+ "switch/variant/default/active/off/handle/rest": { backgroundColor: "#ffffff" },
83
+ "switch/variant/default/active/off/handleIcon/rest": { color: "#666666" },
84
+ "switch/variant/default/active/off/rootText/rest": { color: "#6001D2" },
85
+ "switch/variant/default/active/off/switch/rest": {
86
+ backgroundColor: "#188038",
87
+ borderColor: "#188038"
88
+ },
89
+ "switch/variant/default/active/on/handle/rest": { backgroundColor: "#ffffff" },
90
+ "switch/variant/default/active/on/handleIcon/rest": { color: "#6001D2" },
91
+ "switch/variant/default/active/on/rootText/rest": { color: "#D93025" },
92
+ "switch/variant/default/active/on/switch/rest": {
93
+ backgroundColor: "#D93025",
94
+ borderColor: "#D93025"
95
+ }
96
+ }
82
97
  };
83
98
  const mockRuntime = {
84
99
  themeName: "light",
@@ -72,7 +72,34 @@ declare const useUnistyles: jest.Mock<{
72
72
  xl: number;
73
73
  full: number;
74
74
  };
75
- components: {};
75
+ components: {
76
+ 'switch/variant/default/active/off/handle/rest': {
77
+ backgroundColor: string;
78
+ };
79
+ 'switch/variant/default/active/off/handleIcon/rest': {
80
+ color: string;
81
+ };
82
+ 'switch/variant/default/active/off/rootText/rest': {
83
+ color: string;
84
+ };
85
+ 'switch/variant/default/active/off/switch/rest': {
86
+ backgroundColor: string;
87
+ borderColor: string;
88
+ };
89
+ 'switch/variant/default/active/on/handle/rest': {
90
+ backgroundColor: string;
91
+ };
92
+ 'switch/variant/default/active/on/handleIcon/rest': {
93
+ color: string;
94
+ };
95
+ 'switch/variant/default/active/on/rootText/rest': {
96
+ color: string;
97
+ };
98
+ 'switch/variant/default/active/on/switch/rest': {
99
+ backgroundColor: string;
100
+ borderColor: string;
101
+ };
102
+ };
76
103
  };
77
104
  rt: {
78
105
  themeName: "light" | "dark";
@@ -186,7 +213,34 @@ declare const useAnimatedTheme: jest.Mock<{
186
213
  xl: number;
187
214
  full: number;
188
215
  };
189
- components: {};
216
+ components: {
217
+ 'switch/variant/default/active/off/handle/rest': {
218
+ backgroundColor: string;
219
+ };
220
+ 'switch/variant/default/active/off/handleIcon/rest': {
221
+ color: string;
222
+ };
223
+ 'switch/variant/default/active/off/rootText/rest': {
224
+ color: string;
225
+ };
226
+ 'switch/variant/default/active/off/switch/rest': {
227
+ backgroundColor: string;
228
+ borderColor: string;
229
+ };
230
+ 'switch/variant/default/active/on/handle/rest': {
231
+ backgroundColor: string;
232
+ };
233
+ 'switch/variant/default/active/on/handleIcon/rest': {
234
+ color: string;
235
+ };
236
+ 'switch/variant/default/active/on/rootText/rest': {
237
+ color: string;
238
+ };
239
+ 'switch/variant/default/active/on/switch/rest': {
240
+ backgroundColor: string;
241
+ borderColor: string;
242
+ };
243
+ };
190
244
  };
191
245
  }, [], any>;
192
246
  declare const useAnimatedVariantColor: jest.Mock<{
@@ -1 +1 @@
1
- {"version":3,"file":"unistyles.d.cts","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"mappings":";;;;;;;;;;;;cAkGM,YAAA,EAAY,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKZ,eAAA,EAAe,IAAA,CAAA,IAAA;AAAA,cAwBf,UAAA;;aAGL,IAAA,CAAA,IAAA;AAAA;AAAA,cAEK,gBAAA;;;YAA8B,IAAA,CAAA,IAAA;kBAAA,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;cAK9B,gBAAA,EAAgB,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIhB,uBAAA,EAAuB,IAAA,CAAA,IAAA"}
1
+ {"version":3,"file":"unistyles.d.cts","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"mappings":";;;;;;;;;;;;cA6HM,YAAA,EAAY,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKZ,eAAA,EAAe,IAAA,CAAA,IAAA;AAAA,cAwBf,UAAA;;aAGL,IAAA,CAAA,IAAA;AAAA;AAAA,cAEK,gBAAA;;;YAA8B,IAAA,CAAA,IAAA;kBAAA,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;cAK9B,gBAAA,EAAgB,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIhB,uBAAA,EAAuB,IAAA,CAAA,IAAA"}
@@ -72,7 +72,34 @@ declare const useUnistyles: jest.Mock<{
72
72
  xl: number;
73
73
  full: number;
74
74
  };
75
- components: {};
75
+ components: {
76
+ 'switch/variant/default/active/off/handle/rest': {
77
+ backgroundColor: string;
78
+ };
79
+ 'switch/variant/default/active/off/handleIcon/rest': {
80
+ color: string;
81
+ };
82
+ 'switch/variant/default/active/off/rootText/rest': {
83
+ color: string;
84
+ };
85
+ 'switch/variant/default/active/off/switch/rest': {
86
+ backgroundColor: string;
87
+ borderColor: string;
88
+ };
89
+ 'switch/variant/default/active/on/handle/rest': {
90
+ backgroundColor: string;
91
+ };
92
+ 'switch/variant/default/active/on/handleIcon/rest': {
93
+ color: string;
94
+ };
95
+ 'switch/variant/default/active/on/rootText/rest': {
96
+ color: string;
97
+ };
98
+ 'switch/variant/default/active/on/switch/rest': {
99
+ backgroundColor: string;
100
+ borderColor: string;
101
+ };
102
+ };
76
103
  };
77
104
  rt: {
78
105
  themeName: "light" | "dark";
@@ -186,7 +213,34 @@ declare const useAnimatedTheme: jest.Mock<{
186
213
  xl: number;
187
214
  full: number;
188
215
  };
189
- components: {};
216
+ components: {
217
+ 'switch/variant/default/active/off/handle/rest': {
218
+ backgroundColor: string;
219
+ };
220
+ 'switch/variant/default/active/off/handleIcon/rest': {
221
+ color: string;
222
+ };
223
+ 'switch/variant/default/active/off/rootText/rest': {
224
+ color: string;
225
+ };
226
+ 'switch/variant/default/active/off/switch/rest': {
227
+ backgroundColor: string;
228
+ borderColor: string;
229
+ };
230
+ 'switch/variant/default/active/on/handle/rest': {
231
+ backgroundColor: string;
232
+ };
233
+ 'switch/variant/default/active/on/handleIcon/rest': {
234
+ color: string;
235
+ };
236
+ 'switch/variant/default/active/on/rootText/rest': {
237
+ color: string;
238
+ };
239
+ 'switch/variant/default/active/on/switch/rest': {
240
+ backgroundColor: string;
241
+ borderColor: string;
242
+ };
243
+ };
190
244
  };
191
245
  }, [], any>;
192
246
  declare const useAnimatedVariantColor: jest.Mock<{
@@ -1 +1 @@
1
- {"version":3,"file":"unistyles.d.ts","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"mappings":";;;;;;;;;;;;cAkGM,YAAA,EAAY,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKZ,eAAA,EAAe,IAAA,CAAA,IAAA;AAAA,cAwBf,UAAA;;aAGL,IAAA,CAAA,IAAA;AAAA;AAAA,cAEK,gBAAA;;;YAA8B,IAAA,CAAA,IAAA;kBAAA,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;cAK9B,gBAAA,EAAgB,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIhB,uBAAA,EAAuB,IAAA,CAAA,IAAA"}
1
+ {"version":3,"file":"unistyles.d.ts","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"mappings":";;;;;;;;;;;;cA6HM,YAAA,EAAY,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAKZ,eAAA,EAAe,IAAA,CAAA,IAAA;AAAA,cAwBf,UAAA;;aAGL,IAAA,CAAA,IAAA;AAAA;AAAA,cAEK,gBAAA;;;YAA8B,IAAA,CAAA,IAAA;kBAAA,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;cAK9B,gBAAA,EAAgB,IAAA,CAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIhB,uBAAA,EAAuB,IAAA,CAAA,IAAA"}
@@ -78,7 +78,22 @@ const mockTheme = {
78
78
  xl: 16,
79
79
  full: 9999
80
80
  },
81
- components: {}
81
+ components: {
82
+ "switch/variant/default/active/off/handle/rest": { backgroundColor: "#ffffff" },
83
+ "switch/variant/default/active/off/handleIcon/rest": { color: "#666666" },
84
+ "switch/variant/default/active/off/rootText/rest": { color: "#6001D2" },
85
+ "switch/variant/default/active/off/switch/rest": {
86
+ backgroundColor: "#188038",
87
+ borderColor: "#188038"
88
+ },
89
+ "switch/variant/default/active/on/handle/rest": { backgroundColor: "#ffffff" },
90
+ "switch/variant/default/active/on/handleIcon/rest": { color: "#6001D2" },
91
+ "switch/variant/default/active/on/rootText/rest": { color: "#D93025" },
92
+ "switch/variant/default/active/on/switch/rest": {
93
+ backgroundColor: "#D93025",
94
+ borderColor: "#D93025"
95
+ }
96
+ }
82
97
  };
83
98
  const mockRuntime = {
84
99
  themeName: "light",
@@ -1 +1 @@
1
- {"version":3,"file":"unistyles.js","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"sourcesContent":["/**\n * Jest mock for react-native-unistyles.\n *\n * Provides minimal implementations of:\n * - useUnistyles() hook\n * - StyleSheet.create() / StyleSheet.configure()\n * - UnistylesRuntime\n */\n\n/// <reference types=\"jest\" />\n\nconst mockTheme = {\n colors: {\n text: {\n primary: '#000000',\n secondary: '#666666',\n tertiary: '#999999',\n muted: '#CCCCCC',\n onColor: '#FFFFFF',\n brand: '#6001D2',\n alert: '#D93025',\n positive: '#188038',\n warning: '#F29900',\n info: '#1A73E8',\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F5F5F5',\n accent: '#E8E0F0',\n brand: '#6001D2',\n 'brand-secondary': '#F3E8FF',\n alert: '#D93025',\n 'alert-secondary': '#FDECEA',\n positive: '#188038',\n 'positive-secondary': '#E6F4EA',\n warning: '#F29900',\n 'warning-secondary': '#FEF7E0',\n info: '#1A73E8',\n 'info-secondary': '#E8F0FE',\n 'elevation-0': '#FFFFFF',\n 'elevation-1': '#FFFFFF',\n 'elevation-2': '#FFFFFF',\n 'elevation-3': '#FFFFFF',\n 'elevation-4': '#FFFFFF',\n 'elevation-5': '#FFFFFF',\n },\n border: {\n primary: '#E0E0E0',\n secondary: '#CCCCCC',\n },\n },\n spacing: {\n '0': 0,\n '1': 4,\n '2': 8,\n '3': 12,\n '4': 16,\n '5': 20,\n '6': 24,\n '8': 32,\n '10': 40,\n '12': 48,\n },\n borderRadius: {\n none: 0,\n xs: 2,\n sm: 4,\n md: 8,\n lg: 12,\n xl: 16,\n full: 9999,\n },\n components: {},\n};\n\nconst mockRuntime = {\n themeName: 'light' as 'light' | 'dark',\n colorScheme: 'light' as 'light' | 'dark',\n setTheme: jest.fn(),\n setColorScheme: jest.fn(),\n screen: {\n width: 375,\n height: 812,\n },\n insets: {\n top: 44,\n bottom: 34,\n left: 0,\n right: 0,\n },\n statusBar: {\n height: 44,\n },\n navigationBar: {\n height: 0,\n },\n};\n\nconst useUnistyles = jest.fn(() => ({\n theme: mockTheme,\n rt: mockRuntime,\n}));\n\nconst useInitialTheme = jest.fn();\n\n// StyleSheet mock that handles both static and dynamic styles\nconst createStyleSheet = (styleCreator: unknown) => {\n // If it's a function (dynamic styles), call it with mock theme\n if (typeof styleCreator === 'function') {\n const styles = styleCreator(mockTheme, mockRuntime);\n // Add useVariants as a no-op for each style object\n if (styles && typeof styles === 'object') {\n const result = { ...styles };\n for (const key of Object.keys(result)) {\n const styleObj = result[key];\n if (styleObj && typeof styleObj === 'object') {\n (styleObj as Record<string, unknown>).useVariants = jest.fn();\n }\n }\n return result;\n }\n return styles;\n }\n // Static styles, return as-is\n return styleCreator;\n};\n\nconst StyleSheet = {\n create: createStyleSheet,\n configure: jest.fn(),\n};\n\nconst UnistylesRuntime = mockRuntime;\n\n// react-native-unistyles/reanimated exports\n// These are used for animated theme values in components like Button, Switch, Link, IconButton\n\nconst useAnimatedTheme = jest.fn(() => ({\n value: mockTheme,\n}));\n\nconst useAnimatedVariantColor = jest.fn((_path: string, fallback?: string) => ({\n value: fallback ?? '#000000',\n}));\n\n// All exports at the end of the file\nexport {\n StyleSheet,\n UnistylesRuntime,\n useAnimatedTheme,\n useAnimatedVariantColor,\n useInitialTheme,\n useUnistyles,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,MAAM,YAAY;CAChB,QAAQ;EACN,MAAM;GACJ,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;GACP,SAAS;GACT,OAAO;GACP,OAAO;GACP,UAAU;GACV,SAAS;GACT,MAAM;GACP;EACD,YAAY;GACV,SAAS;GACT,WAAW;GACX,QAAQ;GACR,OAAO;GACP,mBAAmB;GACnB,OAAO;GACP,mBAAmB;GACnB,UAAU;GACV,sBAAsB;GACtB,SAAS;GACT,qBAAqB;GACrB,MAAM;GACN,kBAAkB;GAClB,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GAChB;EACD,QAAQ;GACN,SAAS;GACT,WAAW;GACZ;EACF;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,MAAM;EACN,MAAM;EACP;CACD,cAAc;EACZ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;EACP;CACD,YAAY,EAAE;CACf;AAED,MAAM,cAAc;CAClB,WAAW;CACX,aAAa;CACb,UAAU,KAAK,IAAI;CACnB,gBAAgB,KAAK,IAAI;CACzB,QAAQ;EACN,OAAO;EACP,QAAQ;EACT;CACD,QAAQ;EACN,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR;CACD,WAAW,EACT,QAAQ,IACT;CACD,eAAe,EACb,QAAQ,GACT;CACF;AAED,MAAM,eAAe,KAAK,UAAU;CAClC,OAAO;CACP,IAAI;CACL,EAAE;AAEH,MAAM,kBAAkB,KAAK,IAAI;AAGjC,MAAM,oBAAoB,iBAA0B;CAElD,IAAI,OAAO,iBAAiB,YAAY;EACtC,MAAM,SAAS,aAAa,WAAW,YAAY;EAEnD,IAAI,UAAU,OAAO,WAAW,UAAU;GACxC,MAAM,SAAS,EAAE,GAAG,QAAQ;GAC5B,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,EAAE;IACrC,MAAM,WAAW,OAAO;IACxB,IAAI,YAAY,OAAO,aAAa,UAClC,SAAsC,cAAc,KAAK,IAAI;;GAGjE,OAAO;;EAET,OAAO;;CAGT,OAAO;;AAGT,MAAM,aAAa;CACjB,QAAQ;CACR,WAAW,KAAK,IAAI;CACrB;AAED,MAAM,mBAAmB;AAKzB,MAAM,mBAAmB,KAAK,UAAU,EACtC,OAAO,WACR,EAAE;AAEH,MAAM,0BAA0B,KAAK,IAAI,OAAe,cAAuB,EAC7E,OAAO,YAAY,WACpB,EAAE"}
1
+ {"version":3,"file":"unistyles.js","names":[],"sources":["../../../src/jest/mocks/unistyles.ts"],"sourcesContent":["/**\n * Jest mock for react-native-unistyles.\n *\n * Provides minimal implementations of:\n * - useUnistyles() hook\n * - StyleSheet.create() / StyleSheet.configure()\n * - UnistylesRuntime\n */\n\n/// <reference types=\"jest\" />\n\nconst mockTheme = {\n colors: {\n text: {\n primary: '#000000',\n secondary: '#666666',\n tertiary: '#999999',\n muted: '#CCCCCC',\n onColor: '#FFFFFF',\n brand: '#6001D2',\n alert: '#D93025',\n positive: '#188038',\n warning: '#F29900',\n info: '#1A73E8',\n },\n background: {\n primary: '#FFFFFF',\n secondary: '#F5F5F5',\n accent: '#E8E0F0',\n brand: '#6001D2',\n 'brand-secondary': '#F3E8FF',\n alert: '#D93025',\n 'alert-secondary': '#FDECEA',\n positive: '#188038',\n 'positive-secondary': '#E6F4EA',\n warning: '#F29900',\n 'warning-secondary': '#FEF7E0',\n info: '#1A73E8',\n 'info-secondary': '#E8F0FE',\n 'elevation-0': '#FFFFFF',\n 'elevation-1': '#FFFFFF',\n 'elevation-2': '#FFFFFF',\n 'elevation-3': '#FFFFFF',\n 'elevation-4': '#FFFFFF',\n 'elevation-5': '#FFFFFF',\n },\n border: {\n primary: '#E0E0E0',\n secondary: '#CCCCCC',\n },\n },\n spacing: {\n '0': 0,\n '1': 4,\n '2': 8,\n '3': 12,\n '4': 16,\n '5': 20,\n '6': 24,\n '8': 32,\n '10': 40,\n '12': 48,\n },\n borderRadius: {\n none: 0,\n xs: 2,\n sm: 4,\n md: 8,\n lg: 12,\n xl: 16,\n full: 9999,\n },\n components: {\n 'switch/variant/default/active/off/handle/rest': {\n backgroundColor: '#ffffff',\n },\n 'switch/variant/default/active/off/handleIcon/rest': {\n color: '#666666',\n },\n 'switch/variant/default/active/off/rootText/rest': {\n color: '#6001D2',\n },\n 'switch/variant/default/active/off/switch/rest': {\n backgroundColor: '#188038',\n borderColor: '#188038',\n },\n 'switch/variant/default/active/on/handle/rest': {\n backgroundColor: '#ffffff',\n },\n 'switch/variant/default/active/on/handleIcon/rest': {\n color: '#6001D2',\n },\n 'switch/variant/default/active/on/rootText/rest': {\n color: '#D93025',\n },\n 'switch/variant/default/active/on/switch/rest': {\n backgroundColor: '#D93025',\n borderColor: '#D93025',\n },\n },\n};\n\nconst mockRuntime = {\n themeName: 'light' as 'light' | 'dark',\n colorScheme: 'light' as 'light' | 'dark',\n setTheme: jest.fn(),\n setColorScheme: jest.fn(),\n screen: {\n width: 375,\n height: 812,\n },\n insets: {\n top: 44,\n bottom: 34,\n left: 0,\n right: 0,\n },\n statusBar: {\n height: 44,\n },\n navigationBar: {\n height: 0,\n },\n};\n\nconst useUnistyles = jest.fn(() => ({\n theme: mockTheme,\n rt: mockRuntime,\n}));\n\nconst useInitialTheme = jest.fn();\n\n// StyleSheet mock that handles both static and dynamic styles\nconst createStyleSheet = (styleCreator: unknown) => {\n // If it's a function (dynamic styles), call it with mock theme\n if (typeof styleCreator === 'function') {\n const styles = styleCreator(mockTheme, mockRuntime);\n // Add useVariants as a no-op for each style object\n if (styles && typeof styles === 'object') {\n const result = { ...styles };\n for (const key of Object.keys(result)) {\n const styleObj = result[key];\n if (styleObj && typeof styleObj === 'object') {\n (styleObj as Record<string, unknown>).useVariants = jest.fn();\n }\n }\n return result;\n }\n return styles;\n }\n // Static styles, return as-is\n return styleCreator;\n};\n\nconst StyleSheet = {\n create: createStyleSheet,\n configure: jest.fn(),\n};\n\nconst UnistylesRuntime = mockRuntime;\n\n// react-native-unistyles/reanimated exports\n// These are used for animated theme values in components like Button, Switch, Link, IconButton\n\nconst useAnimatedTheme = jest.fn(() => ({\n value: mockTheme,\n}));\n\nconst useAnimatedVariantColor = jest.fn((_path: string, fallback?: string) => ({\n value: fallback ?? '#000000',\n}));\n\n// All exports at the end of the file\nexport {\n StyleSheet,\n UnistylesRuntime,\n useAnimatedTheme,\n useAnimatedVariantColor,\n useInitialTheme,\n useUnistyles,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAWA,MAAM,YAAY;CAChB,QAAQ;EACN,MAAM;GACJ,SAAS;GACT,WAAW;GACX,UAAU;GACV,OAAO;GACP,SAAS;GACT,OAAO;GACP,OAAO;GACP,UAAU;GACV,SAAS;GACT,MAAM;GACP;EACD,YAAY;GACV,SAAS;GACT,WAAW;GACX,QAAQ;GACR,OAAO;GACP,mBAAmB;GACnB,OAAO;GACP,mBAAmB;GACnB,UAAU;GACV,sBAAsB;GACtB,SAAS;GACT,qBAAqB;GACrB,MAAM;GACN,kBAAkB;GAClB,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GACf,eAAe;GAChB;EACD,QAAQ;GACN,SAAS;GACT,WAAW;GACZ;EACF;CACD,SAAS;EACP,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,MAAM;EACN,MAAM;EACP;CACD,cAAc;EACZ,MAAM;EACN,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,IAAI;EACJ,MAAM;EACP;CACD,YAAY;EACV,iDAAiD,EAC/C,iBAAiB,WAClB;EACD,qDAAqD,EACnD,OAAO,WACR;EACD,mDAAmD,EACjD,OAAO,WACR;EACD,iDAAiD;GAC/C,iBAAiB;GACjB,aAAa;GACd;EACD,gDAAgD,EAC9C,iBAAiB,WAClB;EACD,oDAAoD,EAClD,OAAO,WACR;EACD,kDAAkD,EAChD,OAAO,WACR;EACD,gDAAgD;GAC9C,iBAAiB;GACjB,aAAa;GACd;EACF;CACF;AAED,MAAM,cAAc;CAClB,WAAW;CACX,aAAa;CACb,UAAU,KAAK,IAAI;CACnB,gBAAgB,KAAK,IAAI;CACzB,QAAQ;EACN,OAAO;EACP,QAAQ;EACT;CACD,QAAQ;EACN,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACR;CACD,WAAW,EACT,QAAQ,IACT;CACD,eAAe,EACb,QAAQ,GACT;CACF;AAED,MAAM,eAAe,KAAK,UAAU;CAClC,OAAO;CACP,IAAI;CACL,EAAE;AAEH,MAAM,kBAAkB,KAAK,IAAI;AAGjC,MAAM,oBAAoB,iBAA0B;CAElD,IAAI,OAAO,iBAAiB,YAAY;EACtC,MAAM,SAAS,aAAa,WAAW,YAAY;EAEnD,IAAI,UAAU,OAAO,WAAW,UAAU;GACxC,MAAM,SAAS,EAAE,GAAG,QAAQ;GAC5B,KAAK,MAAM,OAAO,OAAO,KAAK,OAAO,EAAE;IACrC,MAAM,WAAW,OAAO;IACxB,IAAI,YAAY,OAAO,aAAa,UAClC,SAAsC,cAAc,KAAK,IAAI;;GAGjE,OAAO;;EAET,OAAO;;CAGT,OAAO;;AAGT,MAAM,aAAa;CACjB,QAAQ;CACR,WAAW,KAAK,IAAI;CACrB;AAED,MAAM,mBAAmB;AAKzB,MAAM,mBAAmB,KAAK,UAAU,EACtC,OAAO,WACR,EAAE;AAEH,MAAM,0BAA0B,KAAK,IAAI,OAAe,cAAuB,EAC7E,OAAO,YAAY,WACpB,EAAE"}
package/dist/portal.cjs CHANGED
@@ -23,7 +23,7 @@ function portalReducer(state, action) {
23
23
  const PortalContext = (0, react.createContext)(null);
24
24
  function usePortalContext() {
25
25
  const ctx = (0, react.useContext)(PortalContext);
26
- if (!ctx) throw new Error("Portal must be used within a UDSProvider.");
26
+ if (!ctx) throw new Error("Portal must be used within a UDSGestureProvider.");
27
27
  return ctx;
28
28
  }
29
29
  const PortalHost = (0, react.memo)(function PortalHost({ state }) {
package/dist/portal.js CHANGED
@@ -21,7 +21,7 @@ function portalReducer(state, action) {
21
21
  const PortalContext = createContext(null);
22
22
  function usePortalContext() {
23
23
  const ctx = useContext(PortalContext);
24
- if (!ctx) throw new Error("Portal must be used within a UDSProvider.");
24
+ if (!ctx) throw new Error("Portal must be used within a UDSGestureProvider.");
25
25
  return ctx;
26
26
  }
27
27
  const PortalHost = memo(function PortalHost({ state }) {
@@ -1 +1 @@
1
- {"version":3,"file":"portal.js","names":[],"sources":["../src/portal.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useReducer,\n} from 'react';\nimport { StyleSheet, View } from 'react-native';\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\ntype PortalState = Map<string, ReactNode>;\n\ntype PortalAction =\n | { type: 'register'; id: string; node: ReactNode }\n | { type: 'unregister'; id: string };\n\nfunction portalReducer(state: PortalState, action: PortalAction): PortalState {\n switch (action.type) {\n case 'register': {\n const next = new Map(state);\n next.set(action.id, action.node);\n return next;\n }\n case 'unregister': {\n if (!state.has(action.id)) {\n return state;\n }\n const next = new Map(state);\n next.delete(action.id);\n return next;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PortalContextValue {\n register: (id: string, node: ReactNode) => void;\n unregister: (id: string) => void;\n}\n\nconst PortalContext = createContext<PortalContextValue | null>(null);\n\nfunction usePortalContext(): PortalContextValue {\n const ctx = useContext(PortalContext);\n if (!ctx) {\n throw new Error('Portal must be used within a UDSProvider.');\n }\n return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// PortalHost — renders registered portals. Place after children for z-order.\n// ---------------------------------------------------------------------------\n\nconst PortalHost = memo(function PortalHost({ state }: { state: PortalState }) {\n if (state.size === 0) {\n return null;\n }\n\n const nodes: ReactNode[] = [];\n state.forEach((node, id) => {\n nodes.push(\n <View key={id} style={styles.overlay} pointerEvents=\"box-none\">\n {node}\n </View>,\n );\n });\n return nodes;\n});\n\n// ---------------------------------------------------------------------------\n// Portal — registers children with the host. Renders nothing itself.\n// ---------------------------------------------------------------------------\n\nfunction Portal({ children }: { children: ReactNode }) {\n const id = useId();\n const { register, unregister } = usePortalContext();\n\n useEffect(() => {\n register(id, children);\n }, [id, children, register]);\n\n useEffect(() => {\n return () => unregister(id);\n }, [id, unregister]);\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// PortalProvider — sets up the portal context and host.\n// ---------------------------------------------------------------------------\n\nfunction PortalProvider({ children }: { children: ReactNode }) {\n const [state, dispatch] = useReducer(portalReducer, new Map() as PortalState);\n\n const register = useCallback(\n (id: string, node: ReactNode) => dispatch({ type: 'register', id, node }),\n [],\n );\n const unregister = useCallback((id: string) => dispatch({ type: 'unregister', id }), []);\n\n const contextValue = useMemo(() => ({ register, unregister }), [register, unregister]);\n\n return (\n <PortalContext.Provider value={contextValue}>\n {children}\n <PortalHost state={state} />\n </PortalContext.Provider>\n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n ...StyleSheet.absoluteFill,\n },\n});\n\nexport { Portal, PortalProvider, usePortalContext };\nexport type { PortalContextValue };\n"],"mappings":";;;;;AAuBA,SAAS,cAAc,OAAoB,QAAmC;CAC5E,QAAQ,OAAO,MAAf;EACE,KAAK,YAAY;GACf,MAAM,OAAO,IAAI,IAAI,MAAM;GAC3B,KAAK,IAAI,OAAO,IAAI,OAAO,KAAK;GAChC,OAAO;;EAET,KAAK,cAAc;GACjB,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,EACvB,OAAO;GAET,MAAM,OAAO,IAAI,IAAI,MAAM;GAC3B,KAAK,OAAO,OAAO,GAAG;GACtB,OAAO;;;;AAcb,MAAM,gBAAgB,cAAyC,KAAK;AAEpE,SAAS,mBAAuC;CAC9C,MAAM,MAAM,WAAW,cAAc;CACrC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,4CAA4C;CAE9D,OAAO;;AAOT,MAAM,aAAa,KAAK,SAAS,WAAW,EAAE,SAAiC;CAC7E,IAAI,MAAM,SAAS,GACjB,OAAO;CAGT,MAAM,QAAqB,EAAE;CAC7B,MAAM,SAAS,MAAM,OAAO;EAC1B,MAAM,KACJ,oBAAC,MAAD;GAAe,OAAO,OAAO;GAAS,eAAc;aACjD;GACI,EAFI,GAEJ,CACR;GACD;CACF,OAAO;EACP;AAMF,SAAS,OAAO,EAAE,YAAqC;CACrD,MAAM,KAAK,OAAO;CAClB,MAAM,EAAE,UAAU,eAAe,kBAAkB;CAEnD,gBAAgB;EACd,SAAS,IAAI,SAAS;IACrB;EAAC;EAAI;EAAU;EAAS,CAAC;CAE5B,gBAAgB;EACd,aAAa,WAAW,GAAG;IAC1B,CAAC,IAAI,WAAW,CAAC;CAEpB,OAAO;;AAOT,SAAS,eAAe,EAAE,YAAqC;CAC7D,MAAM,CAAC,OAAO,YAAY,WAAW,+BAAe,IAAI,KAAK,CAAgB;CAE7E,MAAM,WAAW,aACd,IAAY,SAAoB,SAAS;EAAE,MAAM;EAAY;EAAI;EAAM,CAAC,EACzE,EAAE,CACH;CACD,MAAM,aAAa,aAAa,OAAe,SAAS;EAAE,MAAM;EAAc;EAAI,CAAC,EAAE,EAAE,CAAC;CAExF,MAAM,eAAe,eAAe;EAAE;EAAU;EAAY,GAAG,CAAC,UAAU,WAAW,CAAC;CAEtF,OACE,qBAAC,cAAc,UAAf;EAAwB,OAAO;YAA/B,CACG,UACD,oBAAC,YAAD,EAAmB,OAAS,CAAA,CACL;;;AAI7B,MAAM,SAAS,WAAW,OAAO,EAC/B,SAAS,EACP,GAAG,WAAW,cACf,EACF,CAAC"}
1
+ {"version":3,"file":"portal.js","names":[],"sources":["../src/portal.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n createContext,\n memo,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useReducer,\n} from 'react';\nimport { StyleSheet, View } from 'react-native';\n\n// ---------------------------------------------------------------------------\n// State\n// ---------------------------------------------------------------------------\n\ntype PortalState = Map<string, ReactNode>;\n\ntype PortalAction =\n | { type: 'register'; id: string; node: ReactNode }\n | { type: 'unregister'; id: string };\n\nfunction portalReducer(state: PortalState, action: PortalAction): PortalState {\n switch (action.type) {\n case 'register': {\n const next = new Map(state);\n next.set(action.id, action.node);\n return next;\n }\n case 'unregister': {\n if (!state.has(action.id)) {\n return state;\n }\n const next = new Map(state);\n next.delete(action.id);\n return next;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface PortalContextValue {\n register: (id: string, node: ReactNode) => void;\n unregister: (id: string) => void;\n}\n\nconst PortalContext = createContext<PortalContextValue | null>(null);\n\nfunction usePortalContext(): PortalContextValue {\n const ctx = useContext(PortalContext);\n if (!ctx) {\n throw new Error('Portal must be used within a UDSGestureProvider.');\n }\n return ctx;\n}\n\n// ---------------------------------------------------------------------------\n// PortalHost — renders registered portals. Place after children for z-order.\n// ---------------------------------------------------------------------------\n\nconst PortalHost = memo(function PortalHost({ state }: { state: PortalState }) {\n if (state.size === 0) {\n return null;\n }\n\n const nodes: ReactNode[] = [];\n state.forEach((node, id) => {\n nodes.push(\n <View key={id} style={styles.overlay} pointerEvents=\"box-none\">\n {node}\n </View>,\n );\n });\n return nodes;\n});\n\n// ---------------------------------------------------------------------------\n// Portal — registers children with the host. Renders nothing itself.\n// ---------------------------------------------------------------------------\n\nfunction Portal({ children }: { children: ReactNode }) {\n const id = useId();\n const { register, unregister } = usePortalContext();\n\n useEffect(() => {\n register(id, children);\n }, [id, children, register]);\n\n useEffect(() => {\n return () => unregister(id);\n }, [id, unregister]);\n\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// PortalProvider — sets up the portal context and host.\n// ---------------------------------------------------------------------------\n\nfunction PortalProvider({ children }: { children: ReactNode }) {\n const [state, dispatch] = useReducer(portalReducer, new Map() as PortalState);\n\n const register = useCallback(\n (id: string, node: ReactNode) => dispatch({ type: 'register', id, node }),\n [],\n );\n const unregister = useCallback((id: string) => dispatch({ type: 'unregister', id }), []);\n\n const contextValue = useMemo(() => ({ register, unregister }), [register, unregister]);\n\n return (\n <PortalContext.Provider value={contextValue}>\n {children}\n <PortalHost state={state} />\n </PortalContext.Provider>\n );\n}\n\nconst styles = StyleSheet.create({\n overlay: {\n ...StyleSheet.absoluteFill,\n },\n});\n\nexport { Portal, PortalProvider, usePortalContext };\nexport type { PortalContextValue };\n"],"mappings":";;;;;AAuBA,SAAS,cAAc,OAAoB,QAAmC;CAC5E,QAAQ,OAAO,MAAf;EACE,KAAK,YAAY;GACf,MAAM,OAAO,IAAI,IAAI,MAAM;GAC3B,KAAK,IAAI,OAAO,IAAI,OAAO,KAAK;GAChC,OAAO;;EAET,KAAK,cAAc;GACjB,IAAI,CAAC,MAAM,IAAI,OAAO,GAAG,EACvB,OAAO;GAET,MAAM,OAAO,IAAI,IAAI,MAAM;GAC3B,KAAK,OAAO,OAAO,GAAG;GACtB,OAAO;;;;AAcb,MAAM,gBAAgB,cAAyC,KAAK;AAEpE,SAAS,mBAAuC;CAC9C,MAAM,MAAM,WAAW,cAAc;CACrC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mDAAmD;CAErE,OAAO;;AAOT,MAAM,aAAa,KAAK,SAAS,WAAW,EAAE,SAAiC;CAC7E,IAAI,MAAM,SAAS,GACjB,OAAO;CAGT,MAAM,QAAqB,EAAE;CAC7B,MAAM,SAAS,MAAM,OAAO;EAC1B,MAAM,KACJ,oBAAC,MAAD;GAAe,OAAO,OAAO;GAAS,eAAc;aACjD;GACI,EAFI,GAEJ,CACR;GACD;CACF,OAAO;EACP;AAMF,SAAS,OAAO,EAAE,YAAqC;CACrD,MAAM,KAAK,OAAO;CAClB,MAAM,EAAE,UAAU,eAAe,kBAAkB;CAEnD,gBAAgB;EACd,SAAS,IAAI,SAAS;IACrB;EAAC;EAAI;EAAU;EAAS,CAAC;CAE5B,gBAAgB;EACd,aAAa,WAAW,GAAG;IAC1B,CAAC,IAAI,WAAW,CAAC;CAEpB,OAAO;;AAOT,SAAS,eAAe,EAAE,YAAqC;CAC7D,MAAM,CAAC,OAAO,YAAY,WAAW,+BAAe,IAAI,KAAK,CAAgB;CAE7E,MAAM,WAAW,aACd,IAAY,SAAoB,SAAS;EAAE,MAAM;EAAY;EAAI;EAAM,CAAC,EACzE,EAAE,CACH;CACD,MAAM,aAAa,aAAa,OAAe,SAAS;EAAE,MAAM;EAAc;EAAI,CAAC,EAAE,EAAE,CAAC;CAExF,MAAM,eAAe,eAAe;EAAE;EAAU;EAAY,GAAG,CAAC,UAAU,WAAW,CAAC;CAEtF,OACE,qBAAC,cAAc,UAAf;EAAwB,OAAO;YAA/B,CACG,UACD,oBAAC,YAAD,EAAmB,OAAS,CAAA,CACL;;;AAI7B,MAAM,SAAS,WAAW,OAAO,EAC/B,SAAS,EACP,GAAG,WAAW,cACf,EACF,CAAC"}
@@ -1717,7 +1717,7 @@ export declare const dividerStyles: {
1717
1717
 
1718
1718
  export declare const iconButtonStyles: {
1719
1719
  root: { padding: number };
1720
- icon: { fontSize: number; iconSizeToken: 'md' | 'sm' | 'lg' | 'xs'; lineHeight: number };
1720
+ icon: { fontSize: number; iconSizeToken: 'sm' | 'lg' | 'xs'; lineHeight: number };
1721
1721
  } & {
1722
1722
  useVariants: (
1723
1723
  variants: