@tamagui/web 2.0.0-1768586279389 → 2.0.0-1768696252732

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 (216) hide show
  1. package/dist/cjs/animationDriverTypes.test-d.cjs +49 -0
  2. package/dist/cjs/animationDriverTypes.test-d.js +51 -0
  3. package/dist/cjs/animationDriverTypes.test-d.js.map +6 -0
  4. package/dist/cjs/animationDriverTypes.test-d.native.js +52 -0
  5. package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -0
  6. package/dist/cjs/config.cjs +14 -0
  7. package/dist/cjs/config.js +14 -0
  8. package/dist/cjs/config.js.map +1 -1
  9. package/dist/cjs/config.native.js +14 -0
  10. package/dist/cjs/config.native.js.map +1 -1
  11. package/dist/cjs/createComponent.cjs +39 -16
  12. package/dist/cjs/createComponent.js +35 -15
  13. package/dist/cjs/createComponent.js.map +1 -1
  14. package/dist/cjs/createComponent.native.js +48 -19
  15. package/dist/cjs/createComponent.native.js.map +1 -1
  16. package/dist/cjs/createTamagui.cjs +3 -2
  17. package/dist/cjs/createTamagui.js +3 -2
  18. package/dist/cjs/createTamagui.js.map +1 -1
  19. package/dist/cjs/createTamagui.native.js +1 -1
  20. package/dist/cjs/createTamagui.native.js.map +1 -1
  21. package/dist/cjs/helpers/getSplitStyles.cjs +8 -2
  22. package/dist/cjs/helpers/getSplitStyles.js +7 -2
  23. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  24. package/dist/cjs/helpers/getSplitStyles.native.js +7 -1
  25. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  26. package/dist/cjs/helpers/getThemeCSSRules.cjs +23 -26
  27. package/dist/cjs/helpers/getThemeCSSRules.js +2 -4
  28. package/dist/cjs/helpers/getThemeCSSRules.js.map +1 -1
  29. package/dist/cjs/{createTheme.cjs → helpers/mergeRenderElementProps.cjs} +11 -5
  30. package/dist/cjs/{createTheme.js → helpers/mergeRenderElementProps.js} +10 -6
  31. package/dist/cjs/helpers/mergeRenderElementProps.js.map +6 -0
  32. package/dist/cjs/{createTheme.native.js → helpers/mergeRenderElementProps.native.js} +12 -8
  33. package/dist/cjs/helpers/mergeRenderElementProps.native.js.map +1 -0
  34. package/dist/cjs/helpers/mergeSlotStyleProps.cjs +39 -0
  35. package/dist/cjs/helpers/mergeSlotStyleProps.js +29 -0
  36. package/dist/cjs/helpers/mergeSlotStyleProps.js.map +6 -0
  37. package/dist/cjs/helpers/mergeSlotStyleProps.native.js +42 -0
  38. package/dist/cjs/helpers/mergeSlotStyleProps.native.js.map +1 -0
  39. package/dist/cjs/helpers/skipProps.cjs +1 -1
  40. package/dist/cjs/helpers/skipProps.js +1 -1
  41. package/dist/cjs/helpers/skipProps.js.map +1 -1
  42. package/dist/cjs/helpers/skipProps.native.js +1 -1
  43. package/dist/cjs/helpers/skipProps.native.js.map +1 -1
  44. package/dist/cjs/helpers/useRenderElement.cjs +48 -0
  45. package/dist/cjs/helpers/useRenderElement.js +42 -0
  46. package/dist/cjs/helpers/useRenderElement.js.map +6 -0
  47. package/dist/cjs/helpers/useRenderElement.native.js +52 -0
  48. package/dist/cjs/helpers/useRenderElement.native.js.map +1 -0
  49. package/dist/cjs/hooks/getThemeProxied.js.map +1 -1
  50. package/dist/cjs/hooks/getThemeProxied.native.js +1 -1
  51. package/dist/cjs/hooks/getThemeProxied.native.js.map +1 -1
  52. package/dist/cjs/index.cjs +1 -0
  53. package/dist/cjs/index.js +1 -0
  54. package/dist/cjs/index.js.map +1 -1
  55. package/dist/cjs/index.native.js +1 -0
  56. package/dist/cjs/index.native.js.map +1 -1
  57. package/dist/cjs/styled.js.map +1 -1
  58. package/dist/cjs/styled.native.js.map +1 -1
  59. package/dist/cjs/views/Configuration.js.map +1 -1
  60. package/dist/cjs/views/Configuration.native.js.map +1 -1
  61. package/dist/cjs/views/Slot.cjs +7 -21
  62. package/dist/cjs/views/Slot.js +9 -13
  63. package/dist/cjs/views/Slot.js.map +1 -1
  64. package/dist/cjs/views/Slot.native.js +5 -21
  65. package/dist/cjs/views/Slot.native.js.map +1 -1
  66. package/dist/cjs/views/TamaguiProvider.cjs +6 -2
  67. package/dist/cjs/views/TamaguiProvider.js +5 -2
  68. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  69. package/dist/cjs/views/TamaguiProvider.native.js +5 -1
  70. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  71. package/dist/cjs/views/Theme.js.map +1 -1
  72. package/dist/cjs/views/Theme.native.js.map +1 -1
  73. package/dist/esm/animationDriverTypes.test-d.js +51 -0
  74. package/dist/esm/animationDriverTypes.test-d.js.map +6 -0
  75. package/dist/esm/animationDriverTypes.test-d.mjs +50 -0
  76. package/dist/esm/animationDriverTypes.test-d.mjs.map +1 -0
  77. package/dist/esm/animationDriverTypes.test-d.native.js +50 -0
  78. package/dist/esm/animationDriverTypes.test-d.native.js.map +1 -0
  79. package/dist/esm/config.js +14 -0
  80. package/dist/esm/config.js.map +1 -1
  81. package/dist/esm/config.mjs +14 -1
  82. package/dist/esm/config.mjs.map +1 -1
  83. package/dist/esm/config.native.js +14 -1
  84. package/dist/esm/config.native.js.map +1 -1
  85. package/dist/esm/createComponent.js +35 -15
  86. package/dist/esm/createComponent.js.map +1 -1
  87. package/dist/esm/createComponent.mjs +40 -17
  88. package/dist/esm/createComponent.mjs.map +1 -1
  89. package/dist/esm/createComponent.native.js +49 -20
  90. package/dist/esm/createComponent.native.js.map +1 -1
  91. package/dist/esm/createTamagui.js +3 -2
  92. package/dist/esm/createTamagui.js.map +1 -1
  93. package/dist/esm/createTamagui.mjs +3 -2
  94. package/dist/esm/createTamagui.mjs.map +1 -1
  95. package/dist/esm/createTamagui.native.js +1 -1
  96. package/dist/esm/createTamagui.native.js.map +1 -1
  97. package/dist/esm/helpers/getSplitStyles.js +7 -2
  98. package/dist/esm/helpers/getSplitStyles.js.map +1 -1
  99. package/dist/esm/helpers/getSplitStyles.mjs +8 -2
  100. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  101. package/dist/esm/helpers/getSplitStyles.native.js +7 -1
  102. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  103. package/dist/esm/helpers/getThemeCSSRules.js +2 -4
  104. package/dist/esm/helpers/getThemeCSSRules.js.map +1 -1
  105. package/dist/esm/helpers/getThemeCSSRules.mjs +23 -26
  106. package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
  107. package/dist/esm/helpers/mergeRenderElementProps.js +9 -0
  108. package/dist/esm/helpers/mergeRenderElementProps.js.map +6 -0
  109. package/dist/esm/helpers/mergeRenderElementProps.mjs +9 -0
  110. package/dist/esm/helpers/mergeRenderElementProps.mjs.map +1 -0
  111. package/dist/esm/helpers/mergeRenderElementProps.native.js +9 -0
  112. package/dist/esm/helpers/mergeRenderElementProps.native.js.map +1 -0
  113. package/dist/esm/helpers/mergeSlotStyleProps.js +14 -0
  114. package/dist/esm/helpers/mergeSlotStyleProps.js.map +6 -0
  115. package/dist/esm/helpers/mergeSlotStyleProps.mjs +16 -0
  116. package/dist/esm/helpers/mergeSlotStyleProps.mjs.map +1 -0
  117. package/dist/esm/helpers/mergeSlotStyleProps.native.js +16 -0
  118. package/dist/esm/helpers/mergeSlotStyleProps.native.js.map +1 -0
  119. package/dist/esm/helpers/skipProps.js +1 -1
  120. package/dist/esm/helpers/skipProps.js.map +1 -1
  121. package/dist/esm/helpers/skipProps.mjs +1 -1
  122. package/dist/esm/helpers/skipProps.mjs.map +1 -1
  123. package/dist/esm/helpers/skipProps.native.js +1 -1
  124. package/dist/esm/helpers/skipProps.native.js.map +1 -1
  125. package/dist/esm/helpers/useRenderElement.js +28 -0
  126. package/dist/esm/helpers/useRenderElement.js.map +6 -0
  127. package/dist/esm/helpers/useRenderElement.mjs +25 -0
  128. package/dist/esm/helpers/useRenderElement.mjs.map +1 -0
  129. package/dist/esm/helpers/useRenderElement.native.js +26 -0
  130. package/dist/esm/helpers/useRenderElement.native.js.map +1 -0
  131. package/dist/esm/hooks/getThemeProxied.js.map +1 -1
  132. package/dist/esm/hooks/getThemeProxied.mjs.map +1 -1
  133. package/dist/esm/hooks/getThemeProxied.native.js +1 -1
  134. package/dist/esm/hooks/getThemeProxied.native.js.map +1 -1
  135. package/dist/esm/index.js +2 -0
  136. package/dist/esm/index.js.map +1 -1
  137. package/dist/esm/index.mjs +2 -2
  138. package/dist/esm/index.mjs.map +1 -1
  139. package/dist/esm/index.native.js +2 -2
  140. package/dist/esm/index.native.js.map +1 -1
  141. package/dist/esm/styled.js.map +1 -1
  142. package/dist/esm/styled.mjs.map +1 -1
  143. package/dist/esm/styled.native.js.map +1 -1
  144. package/dist/esm/views/Configuration.js.map +1 -1
  145. package/dist/esm/views/Configuration.mjs.map +1 -1
  146. package/dist/esm/views/Configuration.native.js.map +1 -1
  147. package/dist/esm/views/Slot.js +10 -14
  148. package/dist/esm/views/Slot.js.map +1 -1
  149. package/dist/esm/views/Slot.mjs +7 -21
  150. package/dist/esm/views/Slot.mjs.map +1 -1
  151. package/dist/esm/views/Slot.native.js +7 -23
  152. package/dist/esm/views/Slot.native.js.map +1 -1
  153. package/dist/esm/views/TamaguiProvider.js +5 -2
  154. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  155. package/dist/esm/views/TamaguiProvider.mjs +6 -2
  156. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  157. package/dist/esm/views/TamaguiProvider.native.js +5 -1
  158. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  159. package/dist/esm/views/Theme.js.map +1 -1
  160. package/dist/esm/views/Theme.mjs.map +1 -1
  161. package/dist/esm/views/Theme.native.js.map +1 -1
  162. package/package.json +12 -12
  163. package/src/animationDriverTypes.test-d.ts +256 -0
  164. package/src/config.ts +41 -0
  165. package/src/createComponent.tsx +69 -31
  166. package/src/createTamagui.ts +2 -2
  167. package/src/helpers/getSplitStyles.tsx +10 -3
  168. package/src/helpers/getThemeCSSRules.ts +2 -9
  169. package/src/helpers/mergeRenderElementProps.ts +17 -0
  170. package/src/helpers/mergeSlotStyleProps.ts +46 -0
  171. package/src/helpers/skipProps.ts +1 -1
  172. package/src/helpers/useRenderElement.tsx +66 -0
  173. package/src/hooks/getThemeProxied.ts +2 -1
  174. package/src/index.ts +1 -0
  175. package/src/interfaces/TamaguiComponentPropsBaseBase.tsx +19 -4
  176. package/src/styled.tsx +4 -3
  177. package/src/types.tsx +85 -25
  178. package/src/views/Configuration.tsx +0 -2
  179. package/src/views/Slot.tsx +14 -32
  180. package/src/views/TamaguiProvider.tsx +12 -1
  181. package/src/views/Theme.tsx +0 -6
  182. package/types/animationDriverTypes.type-test.d.ts +37 -0
  183. package/types/config.d.ts +15 -1
  184. package/types/config.d.ts.map +1 -1
  185. package/types/createComponent.d.ts.map +1 -1
  186. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  187. package/types/helpers/getThemeCSSRules.d.ts.map +1 -1
  188. package/types/helpers/mergeRenderElementProps.d.ts +7 -0
  189. package/types/helpers/mergeRenderElementProps.d.ts.map +1 -0
  190. package/types/helpers/mergeSlotStyleProps.d.ts +10 -0
  191. package/types/helpers/mergeSlotStyleProps.d.ts.map +1 -0
  192. package/types/helpers/skipProps.d.ts +1 -1
  193. package/types/helpers/useRenderElement.d.ts +13 -0
  194. package/types/helpers/useRenderElement.d.ts.map +1 -0
  195. package/types/hooks/getThemeProxied.d.ts.map +1 -1
  196. package/types/index.d.ts +1 -1
  197. package/types/index.d.ts.map +1 -1
  198. package/types/interfaces/TamaguiComponentPropsBaseBase.d.ts +8 -4
  199. package/types/interfaces/TamaguiComponentPropsBaseBase.d.ts.map +1 -1
  200. package/types/styled.d.ts +1 -0
  201. package/types/styled.d.ts.map +1 -1
  202. package/types/types.d.ts +50 -22
  203. package/types/types.d.ts.map +1 -1
  204. package/types/views/Configuration.d.ts +0 -2
  205. package/types/views/Configuration.d.ts.map +1 -1
  206. package/types/views/Slot.d.ts.map +1 -1
  207. package/types/views/TamaguiProvider.d.ts.map +1 -1
  208. package/dist/cjs/createTheme.js.map +0 -6
  209. package/dist/cjs/createTheme.native.js.map +0 -1
  210. package/dist/esm/createTheme.js +0 -5
  211. package/dist/esm/createTheme.js.map +0 -6
  212. package/dist/esm/createTheme.mjs +0 -3
  213. package/dist/esm/createTheme.mjs.map +0 -1
  214. package/dist/esm/createTheme.native.js +0 -5
  215. package/dist/esm/createTheme.native.js.map +0 -1
  216. package/types/createTheme.d.ts.map +0 -1
package/src/types.tsx CHANGED
@@ -269,10 +269,22 @@ export type TamaguiComponentPropsBaseBase = {
269
269
  id?: string
270
270
 
271
271
  /**
272
- * Controls the output tag on web
273
- * {@see https://developer.mozilla.org/en-US/docs/Web/HTML/Element}
274
- */
275
- tag?: keyof HTMLElementTagNameMap | (string & {})
272
+ * Controls the rendered element on web.
273
+ * - String: renders as that HTML element (e.g., `render="button"`)
274
+ * - JSX Element: clones element with merged props (e.g., `render={<a href="/" />}`)
275
+ * - Function: full control with props and state (e.g., `render={(props) => <Custom {...props} />}`)
276
+ * @example render="button"
277
+ * @example render={<a href="/" />}
278
+ * @example render={(props, state) => <MyComponent {...props} isPressed={state.press} />}
279
+ */
280
+ render?:
281
+ | keyof HTMLElementTagNameMap
282
+ | (string & {})
283
+ | React.ReactElement
284
+ | ((
285
+ props: Record<string, any> & { ref?: React.Ref<any> },
286
+ state: TamaguiComponentState
287
+ ) => React.ReactElement)
276
288
 
277
289
  /**
278
290
  * Applies a theme to this element
@@ -327,6 +339,13 @@ export type TamaguiComponentPropsBaseBase = {
327
339
  * Tamagui uses Pressable internally so it supports `number | Insets` rather than just `Insets`
328
340
  */
329
341
  hitSlop?: number | Insets | null
342
+
343
+ /**
344
+ * Select which animation driver to use for this component.
345
+ * Pass a string key matching a driver registered in the `animations` config.
346
+ * Example: `<View animatedBy="spring">` when config has `animations: { default: css, spring: moti }`
347
+ */
348
+ animatedBy?: AnimationDriverKeys | null
330
349
  }
331
350
 
332
351
  export interface Insets {
@@ -727,7 +746,10 @@ export type CreateTamaguiConfig<
727
746
  }
728
747
  shorthands: C
729
748
  media: D
730
- animations: AnimationDriver<E>
749
+ // Support both single driver and multi-driver config
750
+ // Multi-driver: { default: cssDriver, spring: motiDriver }
751
+ // Single: AnimationDriver<E>
752
+ animations: AnimationDriver<E> | AnimationsConfigObject
731
753
  settings: H
732
754
  }
733
755
 
@@ -760,7 +782,7 @@ type ConfProps<A, B, C, D, E, F, I> = {
760
782
  themes?: B
761
783
  shorthands?: C
762
784
  media?: D
763
- animations?: E extends AnimationConfig ? AnimationDriver<E> : undefined
785
+ animations?: E
764
786
  fonts?: F
765
787
  settings?: I
766
788
  }
@@ -783,6 +805,15 @@ type EmptyTamaguiSettings = {
783
805
  autocompleteSpecificTokens: 'except-special'
784
806
  }
785
807
 
808
+ // Helper to extract animation config from AnimationDriver<Config> or multi-driver object
809
+ type ExtractAnimationConfig<E> = E extends AnimationDriver<infer Config>
810
+ ? Config
811
+ : E extends { default: AnimationDriver<infer Config> }
812
+ ? Config
813
+ : E extends GenericAnimations
814
+ ? E
815
+ : EmptyAnimations
816
+
786
817
  export type InferTamaguiConfig<Conf> = Conf extends ConfProps<
787
818
  infer A,
788
819
  infer B,
@@ -797,7 +828,7 @@ export type InferTamaguiConfig<Conf> = Conf extends ConfProps<
797
828
  B extends GenericThemes ? B : EmptyThemes,
798
829
  C extends GenericShorthands ? C : EmptyShorthands,
799
830
  D extends GenericMedia ? D : EmptyMedia,
800
- E extends GenericAnimations ? E : EmptyAnimations,
831
+ ExtractAnimationConfig<E>,
801
832
  F extends GenericFonts ? F : EmptyFonts,
802
833
  H extends GenericTamaguiSettings ? H : EmptyTamaguiSettings
803
834
  >
@@ -855,11 +886,33 @@ export type Media = TamaguiConfig['media']
855
886
  export type Themes = TamaguiConfig['themes']
856
887
  export type ThemeName = Exclude<GetAltThemeNames<keyof Themes>, number>
857
888
  export type ThemeTokens = `$${ThemeKeys}`
858
- export type TransitionKeys = TamaguiConfig['animations'] extends AnimationDriver<
889
+ // Animation names (slow, fast, bouncy) for the `transition` prop
890
+ type InferredTransitionKeys = TamaguiConfig['animations'] extends AnimationDriver<
859
891
  infer Config
860
892
  >
861
893
  ? keyof Config
862
- : string
894
+ : TamaguiConfig['animations'] extends { default: AnimationDriver<infer Config> }
895
+ ? keyof Config
896
+ : string
897
+
898
+ export type TransitionKeys = InferredTransitionKeys
899
+
900
+ // Driver keys (default, css, spring) for the `animatedBy` prop
901
+ type InferredAnimationDriverKeys =
902
+ TamaguiConfig['animations'] extends AnimationDriver<any>
903
+ ? 'default'
904
+ : TamaguiConfig['animations'] extends Record<string, AnimationDriver<any>>
905
+ ? keyof TamaguiConfig['animations']
906
+ : 'default'
907
+
908
+ // Combine inferred keys from config with TypeOverride keys
909
+ // This ensures both config-defined drivers AND lazy-loaded drivers are available
910
+ export type AnimationDriverKeys =
911
+ | 'default'
912
+ | InferredAnimationDriverKeys
913
+ | (ReturnType<TypeOverride['animationDrivers']> extends 1
914
+ ? never
915
+ : ReturnType<TypeOverride['animationDrivers']>)
863
916
  export type FontLanguages = ArrayIntersection<TamaguiConfig['fontLanguages']>
864
917
 
865
918
  export interface ThemeProps {
@@ -1055,21 +1108,6 @@ export interface GenericTamaguiSettings {
1055
1108
  */
1056
1109
  mediaQueryDefaultActive?: Record<string, boolean>
1057
1110
 
1058
- /**
1059
- * What's between each CSS style rule, set to "\n" to be easier to read
1060
- * @default "\n" when NODE_ENV=development, "" otherwise
1061
- */
1062
- cssStyleSeparator?: string
1063
-
1064
- /**
1065
- * (Advanced) on the web, tamagui treats `dark` and `light` themes as special
1066
- * and generates extra CSS to avoid having to re-render the entire page. this
1067
- * CSS relies on specificity hacks that multiply by your sub-themes. this sets
1068
- * the maxiumum number of nested dark/light themes you can do defaults to 3
1069
- * for a balance, but can be higher if you nest them deeply.
1070
- */
1071
- maxDarkLightNesting?: number
1072
-
1073
1111
  /**
1074
1112
  * Adds @media(prefers-color-scheme) media queries for dark/light, must be set
1075
1113
  * true if you are supporting system preference for light and dark mode themes
@@ -1108,12 +1146,32 @@ export type BaseStyleProps = {
1108
1146
  [Key in keyof StackStyleBase]?: StackStyle[Key] | GetThemeValueForKey<Key>
1109
1147
  }
1110
1148
 
1149
+ /**
1150
+ * Animation drivers config - can be a single driver or named drivers object.
1151
+ * If object, must include a 'default' key.
1152
+ */
1153
+ export type AnimationsConfig = AnimationDriver<any> | AnimationsConfigObject
1154
+
1155
+ export type AnimationsConfigObject = {
1156
+ default: AnimationDriver<any>
1157
+ [key: string]: AnimationDriver<any>
1158
+ }
1159
+
1111
1160
  export type CreateTamaguiProps = {
1112
1161
  unset?: BaseStyleProps
1113
1162
  reactNative?: any
1114
1163
  shorthands?: CreateShorthands
1115
1164
  media?: GenericTamaguiConfig['media']
1116
- animations?: AnimationDriver<any>
1165
+ /**
1166
+ * Animation driver(s) configuration.
1167
+ * Can be a single driver or an object of named drivers (must include 'default').
1168
+ * @example
1169
+ * // Single driver
1170
+ * animations: createAnimations({ slow: '...', fast: '...' })
1171
+ * // Multiple named drivers
1172
+ * animations: { default: cssDriver, spring: motiDriver }
1173
+ */
1174
+ animations?: AnimationsConfig
1117
1175
  fonts?: GenericTamaguiConfig['fonts']
1118
1176
  tokens?: GenericTamaguiConfig['tokens']
1119
1177
  themes?: {
@@ -1215,6 +1273,7 @@ export type PlatformMediaKeys = `$platform-${AllPlatforms}`
1215
1273
 
1216
1274
  export interface TypeOverride {
1217
1275
  groupNames(): 1
1276
+ animationDrivers(): 1
1218
1277
  }
1219
1278
 
1220
1279
  export type GroupNames = ReturnType<TypeOverride['groupNames']> extends 1
@@ -3005,6 +3064,7 @@ export type UseAnimationHook = (props: {
3005
3064
  componentState: TamaguiComponentState
3006
3065
  useStyleEmitter?: UseStyleEmitter
3007
3066
  theme: ThemeParsed
3067
+ themeName: string
3008
3068
  pseudos: WithPseudoProps<ViewStyle> | null
3009
3069
  stateRef: { current: TamaguiComponentStateRef }
3010
3070
  onDidAnimate?: any
@@ -1,10 +1,8 @@
1
1
  import { ClientOnly } from '@tamagui/use-did-finish-ssr'
2
2
  import React from 'react'
3
3
  import { ComponentContext } from '../contexts/ComponentContext'
4
- import type { AnimationDriver } from '../types'
5
4
 
6
5
  interface ConfigurationProps {
7
- animationDriver?: AnimationDriver | null
8
6
  disableSSR?: boolean
9
7
  children: React.ReactNode
10
8
  }
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { composeRefs } from '@tamagui/compose-refs'
4
4
  import { isWeb } from '@tamagui/constants'
5
- import { composeEventHandlers } from '@tamagui/helpers'
6
5
  import type { ReactNode } from 'react'
7
- import { Children, cloneElement, forwardRef, isValidElement, version, memo } from 'react'
6
+ import { Children, cloneElement, forwardRef, isValidElement, memo } from 'react'
7
+ import { mergeSlotStyleProps } from '../helpers/mergeSlotStyleProps'
8
8
 
9
9
  /* -------------------------------------------------------------------------------------------------
10
10
  * Slot
@@ -14,8 +14,6 @@ interface SlotProps {
14
14
  children: ReactNode
15
15
  }
16
16
 
17
- const is19 = version.startsWith('19.')
18
-
19
17
  export const Slot = memo(
20
18
  forwardRef<any, SlotProps>(function Slot(props, forwardedRef) {
21
19
  const { children, ...slotProps } = props
@@ -28,10 +26,7 @@ export const Slot = memo(
28
26
  ? mergedProps
29
27
  : {
30
28
  ...mergedProps,
31
- ref: composeRefs(
32
- forwardedRef,
33
- is19 ? (children as any).props.ref : (children as any).ref
34
- ),
29
+ ref: composeRefs(forwardedRef, (children as any).props.ref),
35
30
  }
36
31
  )
37
32
  }
@@ -62,11 +57,9 @@ const pressMap = isWeb
62
57
 
63
58
  function mergeSlotProps(child: any, slotProps: Record<string, any>) {
64
59
  const childProps = child.props
65
-
66
- // all child props should override
67
- const overrideProps = { ...childProps }
68
60
  const isHTMLChild = typeof child.type === 'string'
69
61
 
62
+ // convert RN press events to web events for HTML children
70
63
  if (isHTMLChild) {
71
64
  for (const key in pressMap) {
72
65
  if (key in slotProps) {
@@ -76,29 +69,18 @@ function mergeSlotProps(child: any, slotProps: Record<string, any>) {
76
69
  }
77
70
  }
78
71
 
79
- for (let propName in childProps) {
80
- const slotPropValue = slotProps[propName]
81
- const childPropValue = childProps[propName]
72
+ // merge slot props with child props (child wins via overlay)
73
+ const merged = mergeSlotStyleProps(slotProps, childProps)
82
74
 
83
- if (isHTMLChild && propName in pressMap) {
84
- propName = pressMap[propName]
85
- delete overrideProps[propName]
86
- }
87
-
88
- const isHandler = handleRegex.test(propName)
89
- // if it's a handler, modify the override by composing the base handler
90
- if (isHandler) {
91
- overrideProps[propName] = composeEventHandlers(childPropValue, slotPropValue)
92
- }
93
- // if it's `style`, we merge them
94
- else if (propName === 'style') {
95
- overrideProps[propName] = { ...slotPropValue, ...childPropValue }
96
- } else if (propName === 'className') {
97
- overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ')
75
+ // convert child's RN press events to web events after merge
76
+ if (isHTMLChild) {
77
+ for (const key in pressMap) {
78
+ if (key in merged) {
79
+ merged[pressMap[key]] = merged[key]
80
+ delete merged[key]
81
+ }
98
82
  }
99
83
  }
100
84
 
101
- return { ...slotProps, ...overrideProps }
85
+ return merged
102
86
  }
103
-
104
- const handleRegex = /^on[A-Z]/
@@ -49,10 +49,21 @@ export function TamaguiProvider({
49
49
  [insets?.top, insets?.right, insets?.bottom, insets?.left]
50
50
  )
51
51
 
52
+ // Get the default animation driver from config
53
+ // animations can be a single driver or { default: driver, ...others }
54
+ const defaultAnimationDriver = React.useMemo(() => {
55
+ const animations = config?.animations
56
+ if (!animations) return null
57
+ if ('default' in animations) {
58
+ return (animations as { default: any }).default
59
+ }
60
+ return animations
61
+ }, [config?.animations])
62
+
52
63
  let contents = (
53
64
  <UnmountedClassName>
54
65
  <ComponentContext.Provider
55
- animationDriver={config?.animations}
66
+ animationDriver={defaultAnimationDriver}
56
67
  insets={memoizedInsets}
57
68
  >
58
69
  <ThemeProvider defaultTheme={defaultTheme} reset={reset} className={className}>
@@ -215,12 +215,6 @@ function getThemeClassNameAndColor(
215
215
  }
216
216
  : undefined
217
217
 
218
- // const maxInverses = getSetting('maxDarkLightNesting') || 3
219
- // const themeClassName =
220
- // themeState.inverses >= maxInverses
221
- // ? themeState.name
222
- // : themeState.name.replace(schemePrefix, '')
223
-
224
218
  const themeClassName = themeState.name.replace(schemePrefix, '')
225
219
 
226
220
  // Build full hierarchy of theme classes for CSS variable inheritance
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Type tests for animatedBy prop and animation driver configuration.
3
+ *
4
+ * These tests ensure type-safe inference for:
5
+ * 1. Single animation driver config
6
+ * 2. Multiple animation drivers config
7
+ * 3. TypeOverride for lazy-loaded drivers
8
+ * 4. Combination scenarios
9
+ *
10
+ * Run with: yarn test:types
11
+ */
12
+ export {};
13
+ /**
14
+ * SUMMARY OF APPLIED TYPE FIXES:
15
+ *
16
+ * 1. CreateTamaguiConfig (line ~737):
17
+ * FIXED: Changed from `animations: AnimationDriver<E>`
18
+ * To: `animations: AnimationDriver<E> | AnimationsConfigObject`
19
+ * This preserves the multi-driver object shape for type inference.
20
+ *
21
+ * 2. AnimationDriverKeys (line ~888-895):
22
+ * FIXED: Changed from conditional (inferred OR override)
23
+ * To: Union of all sources:
24
+ * | 'default'
25
+ * | InferredAnimationDriverKeys
26
+ * | (TypeOverride extends 1 ? never : TypeOverride)
27
+ * This ensures both config-defined AND lazy-loaded drivers are available.
28
+ *
29
+ * 3. InferredAnimationDriverKeys (line 879-886):
30
+ * No changes needed - works correctly with the above fixes.
31
+ * Properly infers 'default' for single driver and keyof for multi-driver.
32
+ *
33
+ * 4. TransitionKeys (line 868-876):
34
+ * No changes needed - already handles both single and multi-driver cases.
35
+ * Uses default driver's config for animation names.
36
+ */
37
+ //# sourceMappingURL=animationDriverTypes.type-test.d.ts.map
package/types/config.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ConfigListener, GenericTamaguiSettings, TamaguiInternalConfig, Token, Tokens, TokensMerged } from './types';
1
+ import type { AnimationDriver, ConfigListener, GenericTamaguiSettings, TamaguiInternalConfig, Token, Tokens, TokensMerged } from './types';
2
2
  export declare const getSetting: <Key extends keyof GenericTamaguiSettings>(key: Key) => GenericTamaguiSettings[Key];
3
3
  export declare const setConfig: (next: TamaguiInternalConfig) => void;
4
4
  export declare const setConfigFont: (name: string, font: any, fontParsed: any) => void;
@@ -56,5 +56,19 @@ type DevConfig = {
56
56
  };
57
57
  export declare let devConfig: DevConfig | undefined;
58
58
  export declare function setupDev(conf: DevConfig): void;
59
+ /**
60
+ * Dynamically load an animation driver at runtime.
61
+ * Useful for lazy loading heavier animation drivers after initial page load.
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * // import loadAnimationDriver from tamagui
66
+ * // import createAnimations from your preferred driver (e.g. animations-reanimated)
67
+ *
68
+ * const driver = createAnimations({ bouncy: { type: 'spring', damping: 10 } })
69
+ * loadAnimationDriver('spring', driver)
70
+ * ```
71
+ */
72
+ export declare function loadAnimationDriver(name: string, driver: AnimationDriver): void;
59
73
  export {};
60
74
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,YAAY,EACb,MAAM,SAAS,CAAA;AAgDhB,eAAO,MAAM,UAAU,GAAI,GAAG,SAAS,MAAM,sBAAsB,EACjE,KAAK,GAAG,KACP,sBAAsB,CAAC,GAAG,CAU5B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,qBAAqB,SAIpD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,YAAY,GAAG,SAOrE,CAAA;AAED,eAAO,MAAM,SAAS,6BAUrB,CAAA;AAED,eAAO,MAAM,cAAc,oCAE1B,CAAA;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,QAExC;AAED,eAAO,MAAM,SAAS,GAAI,gBAEvB;IACD;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACd,KAAG,YASR,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,oCAUhE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,EAAE,qBAAmB,QAG/E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,GAAG,OAAO,GAAG,MAAM,EAAE,QAAQ,MAAM,MAAM,QAGlF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,mBAzCnB;IACD;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAQ,YAoCyB,CAAA;AAElC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAA6C,CAAA;AAEnE,eAAO,MAAM,eAAe,qBAA4B,CAAA;AAExD,eAAO,MAAM,gBAAgB,GAAI,IAAI,cAAc,SAOlD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,OAAO,GAAG,SAInD,CAAA;AAGD,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,4DAQnC,CAAA;AAED,KAAK,SAAS,GAAG;IACf,UAAU,CAAC,EACP,OAAO,GACP;QACE,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACN,CAAA;AAED,eAAO,IAAI,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;AAE3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,QAIvC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,YAAY,EACb,MAAM,SAAS,CAAA;AAgDhB,eAAO,MAAM,UAAU,GAAI,GAAG,SAAS,MAAM,sBAAsB,EACjE,KAAK,GAAG,KACP,sBAAsB,CAAC,GAAG,CAU5B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,qBAAqB,SAIpD,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,MAAM,GAAG,EAAE,YAAY,GAAG,SAOrE,CAAA;AAED,eAAO,MAAM,SAAS,6BAUrB,CAAA;AAED,eAAO,MAAM,cAAc,oCAE1B,CAAA;AAGD,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,QAExC;AAED,eAAO,MAAM,SAAS,GAAI,gBAEvB;IACD;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACd,KAAG,YASR,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,oCAUhE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,MAAM,EAAE,qBAAmB,QAG/E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,GAAG,OAAO,GAAG,MAAM,EAAE,QAAQ,MAAM,MAAM,QAGlF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,mBAzCnB;IACD;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,KAAQ,YAoCyB,CAAA;AAElC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;CAA6C,CAAA;AAEnE,eAAO,MAAM,eAAe,qBAA4B,CAAA;AAExD,eAAO,MAAM,gBAAgB,GAAI,IAAI,cAAc,SAOlD,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,OAAO,GAAG,SAInD,CAAA;AAGD,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,4DAQnC,CAAA;AAED,KAAK,SAAS,GAAG;IACf,UAAU,CAAC,EACP,OAAO,GACP;QACE,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACN,CAAA;AAED,eAAO,IAAI,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;AAE3C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,QAIvC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,QAyBxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAoBtC,OAAO,KAAK,EASV,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EAQf,MAAM,SAAS,CAAA;AAYhB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AA8J9D,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAi4C3B"}
1
+ {"version":3,"file":"createComponent.d.ts","sourceRoot":"","sources":["../src/createComponent.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAqBtC,OAAO,KAAK,EASV,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EAQf,MAAM,SAAS,CAAA;AAYhB,KAAK,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,CAAA;AAEpF,eAAO,MAAM,kBAAkB,wBAA+B,CAAA;AA8J9D,wBAAgB,eAAe,CAC7B,kBAAkB,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,EACnD,GAAG,SAAS,cAAc,GAAG,cAAc,EAC3C,SAAS,GAAG,KAAK,EACjB,UAAU,SAAS,MAAM,GAAG,KAAK,EACjC,YAAY,EAAE,YAAY,wEAu6C3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAGb,eAAe,EACf,YAAY,EAEZ,qBAAqB,EAErB,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AA0BjB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAOhE,eAAO,MAAM,mBAAmB,sCAA6C,CAAA;AAE7E,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAEtC,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,KAAK,CAAC,EAAE,SAAS,KACd,IAAI,GAAG,cAAc,CAAA;AAE1B,eAAO,MAAM,UAAU,MAAM,CAAA;AAoD7B,eAAO,MAAM,cAAc,EAAE,aAiuC5B,CAAA;AA+DD,eAAO,MAAM,WAAW,GACtB,YAAY,aAAa,EACzB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,sBAAsB,OAAO,KAC5B,SAyFF,CAAA;AAQD,eAAO,MAAM,cAAc,EAAE,aAY5B,CAAA"}
1
+ {"version":3,"file":"getSplitStyles.d.ts","sourceRoot":"","sources":["../../src/helpers/getSplitStyles.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,aAAa,EAIb,eAAe,EACf,YAAY,EAEZ,qBAAqB,EAErB,SAAS,EACT,WAAW,EAEZ,MAAM,UAAU,CAAA;AA0BjB,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAOhE,eAAO,MAAM,mBAAmB,sCAA6C,CAAA;AAE7E,KAAK,aAAa,GAAG,CACnB,KAAK,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,EAC7B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,qBAAqB,EACrC,UAAU,EAAE,eAAe,EAC3B,iBAAiB,CAAC,EAAE,cAAc,GAAG,IAAI,EACzC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,YAAY,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAEtC,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,OAAO,EAC3B,KAAK,CAAC,EAAE,SAAS,KACd,IAAI,GAAG,cAAc,CAAA;AAE1B,eAAO,MAAM,UAAU,MAAM,CAAA;AAoD7B,eAAO,MAAM,cAAc,EAAE,aAkuC5B,CAAA;AA+DD,eAAO,MAAM,WAAW,GACtB,YAAY,aAAa,EACzB,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,sBAAsB,OAAO,KAC5B,SAyFF,CAAA;AAQD,eAAO,MAAM,cAAc,EAAE,aAY5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAY,MAAM,UAAU,CAAA;AAOzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,YAyKA"}
1
+ {"version":3,"file":"getThemeCSSRules.d.ts","sourceRoot":"","sources":["../../src/helpers/getThemeCSSRules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAY,MAAM,UAAU,CAAA;AAOzE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,YAkKA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Merges props from a render element with viewProps from Tamagui.
3
+ * viewProps takes precedence, elementProps provides fallbacks.
4
+ * Style/className are merged, refs and event handlers are composed.
5
+ */
6
+ export declare function mergeRenderElementProps(elementProps: Record<string, any>, viewProps: Record<string, any>, children: any): Record<string, any>;
7
+ //# sourceMappingURL=mergeRenderElementProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeRenderElementProps.d.ts","sourceRoot":"","sources":["../../src/helpers/mergeRenderElementProps.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,QAAQ,EAAE,GAAG,GACZ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAKrB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Merges props with special handling for style, className, ref, and event handlers.
3
+ * Used by Slot and render prop implementations.
4
+ *
5
+ * @param base - Base props (typically from parent/slot)
6
+ * @param overlay - Props to merge on top (typically from child/element)
7
+ * @returns Merged props object (mutates and returns base for perf)
8
+ */
9
+ export declare function mergeSlotStyleProps(base: Record<string, any>, overlay: Record<string, any>): Record<string, any>;
10
+ //# sourceMappingURL=mergeSlotStyleProps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeSlotStyleProps.d.ts","sourceRoot":"","sources":["../../src/helpers/mergeSlotStyleProps.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6BrB"}
@@ -10,7 +10,7 @@ export declare const skipProps: {
10
10
  debug: number;
11
11
  componentName: number;
12
12
  disableOptimization: number;
13
- tag: number;
13
+ render: number;
14
14
  style: number;
15
15
  group: number;
16
16
  animatePresence: number;
@@ -0,0 +1,13 @@
1
+ import type React from 'react';
2
+ import type { TamaguiComponentState } from '../types';
3
+ export type RenderProp<Props = Record<string, any>> = string | React.ReactElement | ((props: Props, state: TamaguiComponentState) => React.ReactElement);
4
+ /**
5
+ * Evaluates a render prop and returns the element to render.
6
+ *
7
+ * @param render - The render prop (tag string, JSX element, or function)
8
+ * @param props - Props to pass to the rendered element (including ref)
9
+ * @param state - Component state for render functions
10
+ * @param defaultElement - Fallback element if render prop is not provided
11
+ */
12
+ export declare function evaluateRenderProp(render: RenderProp | undefined, props: Record<string, any>, state: TamaguiComponentState, defaultElement: React.ReactElement<any>): React.ReactElement;
13
+ //# sourceMappingURL=useRenderElement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRenderElement.d.ts","sourceRoot":"","sources":["../../src/helpers/useRenderElement.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAGrD,MAAM,MAAM,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAC9C,MAAM,GACN,KAAK,CAAC,YAAY,GAClB,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,KAAK,KAAK,CAAC,YAAY,CAAC,CAAA;AAExE;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,GAAG,SAAS,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,qBAAqB,EAC5B,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GACtC,KAAK,CAAC,YAAY,CAyCpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getThemeProxied.d.ts","sourceRoot":"","sources":["../../src/hooks/getThemeProxied.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAI7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,sBAAsB,EACtB,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAGjB,MAAM,MAAM,YAAY,GAAG;KACxB,GAAG,IAAI,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAC/D,GAAG,SAAS,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CACjE;CACF,GAAG;KAED,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACpD,CAAA;AAED,KAAK,aAAa,CAAC,GAAG,IAAI,GAAG,GAAG;IAC9B;;;;;;;;;OASG;IACH,GAAG,EAAE,CACH,QAAQ,CAAC,EAAE,KAAK,KAEd,MAAM,GACN,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,GAAG,GACH,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GACtB,GAAG,SAAS,WAAW,GACrB,MAAM,GAAG,MAAM,GACf,OAAO,CAAC,CAAA;CACnB,CAAA;AAYD,wBAAgB,eAAe,CAE7B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAC1C,YAAY,CAoGd"}
1
+ {"version":3,"file":"getThemeProxied.d.ts","sourceRoot":"","sources":["../../src/hooks/getThemeProxied.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAI7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,sBAAsB,EACtB,QAAQ,EACR,WAAW,EACX,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAGjB,MAAM,MAAM,YAAY,GAAG;KACxB,GAAG,IAAI,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,aAAa,CAC/D,GAAG,SAAS,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CACjE;CACF,GAAG;KAED,GAAG,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;CACpD,CAAA;AAED,KAAK,aAAa,CAAC,GAAG,IAAI,GAAG,GAAG;IAC9B;;;;;;;;;OASG;IACH,GAAG,EAAE,CACH,QAAQ,CAAC,EAAE,KAAK,KAEd,MAAM,GACN,CAAC,GAAG,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,GAC1B,CAAC,SAAS,kBAAkB,GAC1B,GAAG,GACH,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,GACtB,GAAG,SAAS,WAAW,GACrB,MAAM,GAAG,MAAM,GACf,OAAO,CAAC,CAAA;CACnB,CAAA;AAYD,wBAAgB,eAAe,CAE7B,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,UAAU,GAAG,IAAI,EACzB,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAC1C,YAAY,CAqGd"}
package/types/index.d.ts CHANGED
@@ -44,7 +44,7 @@ export type * from './interfaces/RNExclusiveTypes';
44
44
  export type * from './interfaces/TamaguiComponentEvents';
45
45
  export type * from './types';
46
46
  export * from './interfaces/GetRef';
47
- export { getConfig, getSetting, getThemes, getToken, getTokens, getTokenValue, setConfig, setupDev, updateConfig, } from './config';
47
+ export { getConfig, getSetting, getThemes, getToken, getTokens, getTokenValue, loadAnimationDriver, setConfig, setupDev, updateConfig, } from './config';
48
48
  export { setNonce } from './helpers/insertStyleRule';
49
49
  export * from './constants/constants';
50
50
  export * from './hooks/useIsTouchDevice';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sCAAsC,CAAA;AACpD,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,SAAS,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEpD,cAAc,uBAAuB,CAAA;AAErC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAE5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAElC,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,cAAc,8BAA8B,CAAA;AAC5C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,sCAAsC,CAAA;AACpD,cAAc,sBAAsB,CAAA;AACpC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA;AAEvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,oBAAoB,CAAA;AAClC,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,SAAS,CAAA;AAE5B,cAAc,qBAAqB,CAAA;AAEnC,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,YAAY,GACb,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAEpD,cAAc,uBAAuB,CAAA;AAErC,cAAc,0BAA0B,CAAA;AACxC,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAEzD,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAE5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAElC,cAAc,cAAc,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { DebugProp, ThemeName, GroupNames, Role } from '../types';
1
+ import type { DebugProp, ThemeName, GroupNames, Role, TamaguiComponentState } from '../types';
2
2
  export type TamaguiComponentPropsBaseBase = {
3
3
  target?: string;
4
4
  htmlFor?: string;
@@ -33,10 +33,14 @@ export type TamaguiComponentPropsBaseBase = {
33
33
  */
34
34
  id?: string;
35
35
  /**
36
- * Controls the output tag on web
37
- * {@see https://developer.mozilla.org/en-US/docs/Web/HTML/Element}
36
+ * Controls the rendered element on web.
37
+ * - String: renders as that HTML element (e.g., `render="button"`)
38
+ * - JSX Element: clones element with merged props (e.g., `render={<a href="/" />}`)
39
+ * - Function: full control with props and state (e.g., `render={(props) => <Custom {...props} />}`)
38
40
  */
39
- tag?: keyof HTMLElementTagNameMap | (string & {});
41
+ render?: keyof HTMLElementTagNameMap | (string & {}) | React.ReactElement | ((props: Record<string, any> & {
42
+ ref?: React.Ref<any>;
43
+ }, state: TamaguiComponentState) => React.ReactElement);
40
44
  /**
41
45
  * Applies a theme to this element
42
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TamaguiComponentPropsBaseBase.d.ts","sourceRoot":"","sources":["../../src/interfaces/TamaguiComponentPropsBaseBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAEtE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAAA;IAE/D,uBAAuB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;IAEtB,KAAK,CAAC,EAAE,SAAS,CAAA;IAEjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAEjD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAE5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IAEX;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,CAAA;IAEzE;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACjC,CAAA;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
1
+ {"version":3,"file":"TamaguiComponentPropsBaseBase.d.ts","sourceRoot":"","sources":["../../src/interfaces/TamaguiComponentPropsBaseBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,IAAI,EACJ,qBAAqB,EACtB,MAAM,UAAU,CAAA;AAEjB,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,kBAAkB,GAAG,KAAK,CAAA;IAE/D,uBAAuB,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,QAAQ,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;IAEtB,KAAK,CAAC,EAAE,SAAS,CAAA;IAEjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX;;;;;OAKG;IACH,MAAM,CAAC,EACH,MAAM,qBAAqB,GAC3B,CAAC,MAAM,GAAG,EAAE,CAAC,GACb,KAAK,CAAC,YAAY,GAClB,CAAC,CACC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;KAAE,EACrD,KAAK,EAAE,qBAAqB,KACzB,KAAK,CAAC,YAAY,CAAC,CAAA;IAE5B;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAExB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IAE5B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAE/B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAE1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAA;IAEX;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa,CAAA;IAEzE;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACjC,CAAA;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
package/types/styled.d.ts CHANGED
@@ -11,6 +11,7 @@ export declare function styled<ParentComponent extends StylableComponent, Styled
11
11
  variants?: Variants | undefined;
12
12
  defaultVariants?: GetVariantAcceptedValues<Variants>;
13
13
  context?: StyledContext;
14
+ render?: string;
14
15
  }, config?: StyledConfig): TamaguiComponent<TamaDefer, GetRef<ParentComponent>, GetNonStyledProps<ParentComponent>, StyledConfig["accept"] extends Record<string, any> ? GetBaseStyles<ParentComponent, StyledConfig> & (StyledConfig["accept"] extends Record<string, any> ? { [Key in keyof StyledConfig["accept"]]?: (Key extends keyof GetBaseStyles<ParentComponent, StyledConfig> ? GetBaseStyles<ParentComponent, StyledConfig>[Key] : never) | (StyledConfig["accept"][Key] extends "style" ? Partial<InferStyleProps<ParentComponent, StyledConfig>> : StyledConfig["accept"][Key] extends "textStyle" ? Partial<InferStyleProps<TamaguiComponent<import("./types").TextProps, import("./types").TamaguiTextElement, import("./types").TextNonStyleProps, import("./types").TextStylePropsBase, {}>, StyledConfig>> : Omit<ThemeValueGet<StyledConfig["accept"][Key]>, "unset">) | undefined; } : {}) : GetBaseStyles<ParentComponent, StyledConfig>, AreVariantsUndefined<Variants> extends true ? GetStyledVariants<ParentComponent> : AreVariantsUndefined<GetStyledVariants<ParentComponent>> extends true ? Omit<AreVariantsUndefined<Variants> extends true ? {} : GetVariantAcceptedValues<Variants>, "_isEmpty"> : { [Key_1 in Exclude<keyof GetStyledVariants<ParentComponent>, "_isEmpty"> | Exclude<keyof (AreVariantsUndefined<Variants> extends true ? {} : GetVariantAcceptedValues<Variants>), "_isEmpty">]?: (Key_1 extends keyof GetStyledVariants<ParentComponent> ? GetStyledVariants<ParentComponent>[Key_1] : undefined) | (Key_1 extends keyof (AreVariantsUndefined<Variants> extends true ? {} : GetVariantAcceptedValues<Variants>) ? (AreVariantsUndefined<Variants> extends true ? {} : GetVariantAcceptedValues<Variants>)[Key_1] : undefined) | undefined; }, GetStaticConfig<ParentComponent, StyledConfig>>;
15
16
  export {};
16
17
  //# sourceMappingURL=styled.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../src/styled.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAGhB,KAAK,oBAAoB,CAAC,QAAQ,IAEhC,QAAQ,CAAC,QAAQ,CAAC,SAAS;IAAE,QAAQ,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,KAAK,CAAA;AAE3D,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC/C;KACG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GACnE,GAAG,GACH,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;CACnC,GACD,SAAS,CAAA;AAEb,wBAAgB,MAAM,CACpB,eAAe,SAAS,iBAAiB,EACzC,YAAY,SAAS,kBAAkB,EACvC,QAAQ,SAAS,kBAAkB,CAAC,eAAe,EAAE,YAAY,CAAC,EAElE,WAAW,EAAE,eAAe,EAE5B,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,GAAG;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC/B,eAAe,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,EACD,MAAM,CAAC,EAAE,YAAY,yPA2Bd,GAAG,g+CA+JX"}
1
+ {"version":3,"file":"styled.d.ts","sourceRoot":"","sources":["../src/styled.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAEhB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAGhB,KAAK,oBAAoB,CAAC,QAAQ,IAEhC,QAAQ,CAAC,QAAQ,CAAC,SAAS;IAAE,QAAQ,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,GAAG,KAAK,CAAA;AAE3D,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC/C;KACG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GACnE,GAAG,GACH,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;CACnC,GACD,SAAS,CAAA;AAEb,wBAAgB,MAAM,CACpB,eAAe,SAAS,iBAAiB,EACzC,YAAY,SAAS,kBAAkB,EACvC,QAAQ,SAAS,kBAAkB,CAAC,eAAe,EAAE,YAAY,CAAC,EAElE,WAAW,EAAE,eAAe,EAE5B,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,GAAG;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC/B,eAAe,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,EACD,MAAM,CAAC,EAAE,YAAY,yPA2Bd,GAAG,g+CA+JX"}