@hanzogui/web 2.0.0-rc.41-hanzoai.5

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 (1261) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1 -0
  4. package/dist/cjs/Hanzogui.cjs +76 -0
  5. package/dist/cjs/Hanzogui.native.js +128 -0
  6. package/dist/cjs/Hanzogui.native.js.map +1 -0
  7. package/dist/cjs/_withStableStyle.cjs +75 -0
  8. package/dist/cjs/_withStableStyle.native.js +82 -0
  9. package/dist/cjs/_withStableStyle.native.js.map +1 -0
  10. package/dist/cjs/animationDriverTypes.test-d.cjs +77 -0
  11. package/dist/cjs/animationDriverTypes.test-d.native.js +80 -0
  12. package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -0
  13. package/dist/cjs/config.cjs +177 -0
  14. package/dist/cjs/config.native.js +199 -0
  15. package/dist/cjs/config.native.js.map +1 -0
  16. package/dist/cjs/constants/accessibilityDirectMap.cjs +36 -0
  17. package/dist/cjs/constants/accessibilityDirectMap.native.js +39 -0
  18. package/dist/cjs/constants/accessibilityDirectMap.native.js.map +1 -0
  19. package/dist/cjs/constants/constants.cjs +40 -0
  20. package/dist/cjs/constants/constants.native.js +43 -0
  21. package/dist/cjs/constants/constants.native.js.map +1 -0
  22. package/dist/cjs/constants/isDevTools.cjs +35 -0
  23. package/dist/cjs/constants/isDevTools.native.js +38 -0
  24. package/dist/cjs/constants/isDevTools.native.js.map +1 -0
  25. package/dist/cjs/contexts/ComponentContext.cjs +41 -0
  26. package/dist/cjs/contexts/ComponentContext.native.js +44 -0
  27. package/dist/cjs/contexts/ComponentContext.native.js.map +1 -0
  28. package/dist/cjs/contexts/GroupContext.cjs +29 -0
  29. package/dist/cjs/contexts/GroupContext.native.js +32 -0
  30. package/dist/cjs/contexts/GroupContext.native.js.map +1 -0
  31. package/dist/cjs/createComponent.cjs +1053 -0
  32. package/dist/cjs/createComponent.native.js +1033 -0
  33. package/dist/cjs/createComponent.native.js.map +1 -0
  34. package/dist/cjs/createFont.cjs +48 -0
  35. package/dist/cjs/createFont.native.js +53 -0
  36. package/dist/cjs/createFont.native.js.map +1 -0
  37. package/dist/cjs/createHanzogui.cjs +255 -0
  38. package/dist/cjs/createHanzogui.native.js +307 -0
  39. package/dist/cjs/createHanzogui.native.js.map +1 -0
  40. package/dist/cjs/createShorthands.cjs +30 -0
  41. package/dist/cjs/createShorthands.native.js +33 -0
  42. package/dist/cjs/createShorthands.native.js.map +1 -0
  43. package/dist/cjs/createTokens.cjs +31 -0
  44. package/dist/cjs/createTokens.native.js +35 -0
  45. package/dist/cjs/createTokens.native.js.map +1 -0
  46. package/dist/cjs/createVariable.cjs +122 -0
  47. package/dist/cjs/createVariable.native.js +141 -0
  48. package/dist/cjs/createVariable.native.js.map +1 -0
  49. package/dist/cjs/createVariables.cjs +74 -0
  50. package/dist/cjs/createVariables.native.js +83 -0
  51. package/dist/cjs/createVariables.native.js.map +1 -0
  52. package/dist/cjs/defaultComponentState.cjs +47 -0
  53. package/dist/cjs/defaultComponentState.native.js +50 -0
  54. package/dist/cjs/defaultComponentState.native.js.map +1 -0
  55. package/dist/cjs/eventHandling.cjs +48 -0
  56. package/dist/cjs/eventHandling.native.js +204 -0
  57. package/dist/cjs/eventHandling.native.js.map +1 -0
  58. package/dist/cjs/helpers/consoleLog.native.js +33 -0
  59. package/dist/cjs/helpers/consoleLog.native.js.map +1 -0
  60. package/dist/cjs/helpers/createDesignSystem.cjs +187 -0
  61. package/dist/cjs/helpers/createDesignSystem.native.js +235 -0
  62. package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -0
  63. package/dist/cjs/helpers/createMediaStyle.cjs +127 -0
  64. package/dist/cjs/helpers/createMediaStyle.native.js +140 -0
  65. package/dist/cjs/helpers/createMediaStyle.native.js.map +1 -0
  66. package/dist/cjs/helpers/createStyledContext.cjs +101 -0
  67. package/dist/cjs/helpers/createStyledContext.native.js +109 -0
  68. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -0
  69. package/dist/cjs/helpers/defaultAnimationDriver.cjs +45 -0
  70. package/dist/cjs/helpers/defaultAnimationDriver.native.js +64 -0
  71. package/dist/cjs/helpers/defaultAnimationDriver.native.js.map +1 -0
  72. package/dist/cjs/helpers/defaultOffset.cjs +31 -0
  73. package/dist/cjs/helpers/defaultOffset.native.js +34 -0
  74. package/dist/cjs/helpers/defaultOffset.native.js.map +1 -0
  75. package/dist/cjs/helpers/expandStyle.cjs +69 -0
  76. package/dist/cjs/helpers/expandStyle.native.js +152 -0
  77. package/dist/cjs/helpers/expandStyle.native.js.map +1 -0
  78. package/dist/cjs/helpers/expandStyles.cjs +41 -0
  79. package/dist/cjs/helpers/expandStyles.native.js +51 -0
  80. package/dist/cjs/helpers/expandStyles.native.js.map +1 -0
  81. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +217 -0
  82. package/dist/cjs/helpers/getCSSStylesAtomic.native.js +38 -0
  83. package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -0
  84. package/dist/cjs/helpers/getDefaultProps.cjs +43 -0
  85. package/dist/cjs/helpers/getDefaultProps.native.js +47 -0
  86. package/dist/cjs/helpers/getDefaultProps.native.js.map +1 -0
  87. package/dist/cjs/helpers/getDynamicVal.cjs +72 -0
  88. package/dist/cjs/helpers/getDynamicVal.native.js +76 -0
  89. package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -0
  90. package/dist/cjs/helpers/getExpandedShorthands.cjs +42 -0
  91. package/dist/cjs/helpers/getExpandedShorthands.native.js +46 -0
  92. package/dist/cjs/helpers/getExpandedShorthands.native.js.map +1 -0
  93. package/dist/cjs/helpers/getFontLanguage.cjs +28 -0
  94. package/dist/cjs/helpers/getFontLanguage.native.js +33 -0
  95. package/dist/cjs/helpers/getFontLanguage.native.js.map +1 -0
  96. package/dist/cjs/helpers/getGroupPropParts.cjs +54 -0
  97. package/dist/cjs/helpers/getGroupPropParts.native.js +59 -0
  98. package/dist/cjs/helpers/getGroupPropParts.native.js.map +1 -0
  99. package/dist/cjs/helpers/getShorthandValue.cjs +33 -0
  100. package/dist/cjs/helpers/getShorthandValue.native.js +37 -0
  101. package/dist/cjs/helpers/getShorthandValue.native.js.map +1 -0
  102. package/dist/cjs/helpers/getSplitStyles.cjs +900 -0
  103. package/dist/cjs/helpers/getSplitStyles.native.js +922 -0
  104. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -0
  105. package/dist/cjs/helpers/getThemeCSSRules.cjs +134 -0
  106. package/dist/cjs/helpers/getThemeCSSRules.native.js +33 -0
  107. package/dist/cjs/helpers/getThemeCSSRules.native.js.map +1 -0
  108. package/dist/cjs/helpers/getTokenForKey.cjs +174 -0
  109. package/dist/cjs/helpers/getTokenForKey.native.js +186 -0
  110. package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -0
  111. package/dist/cjs/helpers/getVariantExtras.cjs +81 -0
  112. package/dist/cjs/helpers/getVariantExtras.native.js +85 -0
  113. package/dist/cjs/helpers/getVariantExtras.native.js.map +1 -0
  114. package/dist/cjs/helpers/insertStyleRule.cjs +233 -0
  115. package/dist/cjs/helpers/insertStyleRule.native.js +104 -0
  116. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -0
  117. package/dist/cjs/helpers/isActivePlatform.cjs +40 -0
  118. package/dist/cjs/helpers/isActivePlatform.native.js +43 -0
  119. package/dist/cjs/helpers/isActivePlatform.native.js.map +1 -0
  120. package/dist/cjs/helpers/isActiveTheme.cjs +31 -0
  121. package/dist/cjs/helpers/isActiveTheme.native.js +34 -0
  122. package/dist/cjs/helpers/isActiveTheme.native.js.map +1 -0
  123. package/dist/cjs/helpers/isHanzoguiComponent.cjs +31 -0
  124. package/dist/cjs/helpers/isHanzoguiComponent.native.js +34 -0
  125. package/dist/cjs/helpers/isHanzoguiComponent.native.js.map +1 -0
  126. package/dist/cjs/helpers/isHanzoguiElement.cjs +43 -0
  127. package/dist/cjs/helpers/isHanzoguiElement.native.js +46 -0
  128. package/dist/cjs/helpers/isHanzoguiElement.native.js.map +1 -0
  129. package/dist/cjs/helpers/isObj.cjs +28 -0
  130. package/dist/cjs/helpers/isObj.native.js +38 -0
  131. package/dist/cjs/helpers/isObj.native.js.map +1 -0
  132. package/dist/cjs/helpers/log.cjs +39 -0
  133. package/dist/cjs/helpers/log.native.js +43 -0
  134. package/dist/cjs/helpers/log.native.js.map +1 -0
  135. package/dist/cjs/helpers/mainThreadPressEvents.cjs +28 -0
  136. package/dist/cjs/helpers/mainThreadPressEvents.native.js +133 -0
  137. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -0
  138. package/dist/cjs/helpers/matchMedia.cjs +38 -0
  139. package/dist/cjs/helpers/matchMedia.native.js +62 -0
  140. package/dist/cjs/helpers/matchMedia.native.js.map +1 -0
  141. package/dist/cjs/helpers/mediaObjectToString.cjs +51 -0
  142. package/dist/cjs/helpers/mediaObjectToString.native.js +57 -0
  143. package/dist/cjs/helpers/mediaObjectToString.native.js.map +1 -0
  144. package/dist/cjs/helpers/mediaState.cjs +49 -0
  145. package/dist/cjs/helpers/mediaState.native.js +54 -0
  146. package/dist/cjs/helpers/mediaState.native.js.map +1 -0
  147. package/dist/cjs/helpers/mergeProps.cjs +79 -0
  148. package/dist/cjs/helpers/mergeProps.native.js +87 -0
  149. package/dist/cjs/helpers/mergeProps.native.js.map +1 -0
  150. package/dist/cjs/helpers/mergeRenderElementProps.cjs +35 -0
  151. package/dist/cjs/helpers/mergeRenderElementProps.native.js +38 -0
  152. package/dist/cjs/helpers/mergeRenderElementProps.native.js.map +1 -0
  153. package/dist/cjs/helpers/mergeSlotStyleProps.cjs +52 -0
  154. package/dist/cjs/helpers/mergeSlotStyleProps.native.js +55 -0
  155. package/dist/cjs/helpers/mergeSlotStyleProps.native.js.map +1 -0
  156. package/dist/cjs/helpers/mergeVariants.cjs +52 -0
  157. package/dist/cjs/helpers/mergeVariants.native.js +56 -0
  158. package/dist/cjs/helpers/mergeVariants.native.js.map +1 -0
  159. package/dist/cjs/helpers/nativeOnlyProps.cjs +62 -0
  160. package/dist/cjs/helpers/nativeOnlyProps.native.js +65 -0
  161. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -0
  162. package/dist/cjs/helpers/normalizeColor.cjs +47 -0
  163. package/dist/cjs/helpers/normalizeColor.native.js +53 -0
  164. package/dist/cjs/helpers/normalizeColor.native.js.map +1 -0
  165. package/dist/cjs/helpers/normalizeShadow.cjs +50 -0
  166. package/dist/cjs/helpers/normalizeShadow.native.js +54 -0
  167. package/dist/cjs/helpers/normalizeShadow.native.js.map +1 -0
  168. package/dist/cjs/helpers/normalizeStyle.cjs +54 -0
  169. package/dist/cjs/helpers/normalizeStyle.native.js +58 -0
  170. package/dist/cjs/helpers/normalizeStyle.native.js.map +1 -0
  171. package/dist/cjs/helpers/normalizeStylePropKeys.cjs +28 -0
  172. package/dist/cjs/helpers/normalizeStylePropKeys.native.js +42 -0
  173. package/dist/cjs/helpers/normalizeStylePropKeys.native.js.map +1 -0
  174. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +54 -0
  175. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +63 -0
  176. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -0
  177. package/dist/cjs/helpers/objectIdentityKey.cjs +46 -0
  178. package/dist/cjs/helpers/objectIdentityKey.native.js +54 -0
  179. package/dist/cjs/helpers/objectIdentityKey.native.js.map +1 -0
  180. package/dist/cjs/helpers/parseBorderShorthand.cjs +30 -0
  181. package/dist/cjs/helpers/parseBorderShorthand.native.js +86 -0
  182. package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -0
  183. package/dist/cjs/helpers/parseNativeStyle.cjs +167 -0
  184. package/dist/cjs/helpers/parseNativeStyle.native.js +190 -0
  185. package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -0
  186. package/dist/cjs/helpers/parseOutlineShorthand.cjs +30 -0
  187. package/dist/cjs/helpers/parseOutlineShorthand.native.js +80 -0
  188. package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -0
  189. package/dist/cjs/helpers/platformResolveValue.cjs +38 -0
  190. package/dist/cjs/helpers/platformResolveValue.native.js +74 -0
  191. package/dist/cjs/helpers/platformResolveValue.native.js.map +1 -0
  192. package/dist/cjs/helpers/pointerEvents.cjs +28 -0
  193. package/dist/cjs/helpers/pointerEvents.native.js +155 -0
  194. package/dist/cjs/helpers/pointerEvents.native.js.map +1 -0
  195. package/dist/cjs/helpers/propMapper.cjs +257 -0
  196. package/dist/cjs/helpers/propMapper.native.js +331 -0
  197. package/dist/cjs/helpers/propMapper.native.js.map +1 -0
  198. package/dist/cjs/helpers/proxyThemeToParents.cjs +63 -0
  199. package/dist/cjs/helpers/proxyThemeToParents.native.js +161 -0
  200. package/dist/cjs/helpers/proxyThemeToParents.native.js.map +1 -0
  201. package/dist/cjs/helpers/proxyThemeVariables.cjs +38 -0
  202. package/dist/cjs/helpers/proxyThemeVariables.native.js +43 -0
  203. package/dist/cjs/helpers/proxyThemeVariables.native.js.map +1 -0
  204. package/dist/cjs/helpers/pseudoDescriptors.cjs +82 -0
  205. package/dist/cjs/helpers/pseudoDescriptors.native.js +85 -0
  206. package/dist/cjs/helpers/pseudoDescriptors.native.js.map +1 -0
  207. package/dist/cjs/helpers/pseudoTransitions.cjs +83 -0
  208. package/dist/cjs/helpers/pseudoTransitions.native.js +88 -0
  209. package/dist/cjs/helpers/pseudoTransitions.native.js.map +1 -0
  210. package/dist/cjs/helpers/registerCSSVariable.cjs +81 -0
  211. package/dist/cjs/helpers/registerCSSVariable.native.js +85 -0
  212. package/dist/cjs/helpers/registerCSSVariable.native.js.map +1 -0
  213. package/dist/cjs/helpers/resolveAnimationDriver.cjs +37 -0
  214. package/dist/cjs/helpers/resolveAnimationDriver.native.js +41 -0
  215. package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -0
  216. package/dist/cjs/helpers/resolveCompoundTokens.cjs +41 -0
  217. package/dist/cjs/helpers/resolveCompoundTokens.native.js +44 -0
  218. package/dist/cjs/helpers/resolveCompoundTokens.native.js.map +1 -0
  219. package/dist/cjs/helpers/resolveRem.cjs +34 -0
  220. package/dist/cjs/helpers/resolveRem.native.js +59 -0
  221. package/dist/cjs/helpers/resolveRem.native.js.map +1 -0
  222. package/dist/cjs/helpers/resolveSafeArea.cjs +36 -0
  223. package/dist/cjs/helpers/resolveSafeArea.native.js +46 -0
  224. package/dist/cjs/helpers/resolveSafeArea.native.js.map +1 -0
  225. package/dist/cjs/helpers/setElementProps.cjs +31 -0
  226. package/dist/cjs/helpers/setElementProps.native.js +39 -0
  227. package/dist/cjs/helpers/setElementProps.native.js.map +1 -0
  228. package/dist/cjs/helpers/skipProps.cjs +46 -0
  229. package/dist/cjs/helpers/skipProps.native.js +49 -0
  230. package/dist/cjs/helpers/skipProps.native.js.map +1 -0
  231. package/dist/cjs/helpers/sortString.cjs +28 -0
  232. package/dist/cjs/helpers/sortString.native.js +33 -0
  233. package/dist/cjs/helpers/sortString.native.js.map +1 -0
  234. package/dist/cjs/helpers/subscribeToContextGroup.cjs +109 -0
  235. package/dist/cjs/helpers/subscribeToContextGroup.native.js +157 -0
  236. package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +1 -0
  237. package/dist/cjs/helpers/themeable.cjs +114 -0
  238. package/dist/cjs/helpers/themeable.native.js +119 -0
  239. package/dist/cjs/helpers/themeable.native.js.map +1 -0
  240. package/dist/cjs/helpers/themes.cjs +46 -0
  241. package/dist/cjs/helpers/themes.native.js +49 -0
  242. package/dist/cjs/helpers/themes.native.js.map +1 -0
  243. package/dist/cjs/helpers/timer.cjs +34 -0
  244. package/dist/cjs/helpers/timer.native.js +37 -0
  245. package/dist/cjs/helpers/timer.native.js.map +1 -0
  246. package/dist/cjs/helpers/transformsToString.cjs +43 -0
  247. package/dist/cjs/helpers/transformsToString.native.js +46 -0
  248. package/dist/cjs/helpers/transformsToString.native.js.map +1 -0
  249. package/dist/cjs/helpers/useRenderElement.cjs +53 -0
  250. package/dist/cjs/helpers/useRenderElement.native.js +60 -0
  251. package/dist/cjs/helpers/useRenderElement.native.js.map +1 -0
  252. package/dist/cjs/helpers/webPropsToSkip.cjs +28 -0
  253. package/dist/cjs/helpers/webPropsToSkip.native.js +78 -0
  254. package/dist/cjs/helpers/webPropsToSkip.native.js.map +1 -0
  255. package/dist/cjs/helpers/wrapStyleTags.cjs +42 -0
  256. package/dist/cjs/helpers/wrapStyleTags.native.js +33 -0
  257. package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -0
  258. package/dist/cjs/hooks/doesRootSchemeMatchSystem.cjs +30 -0
  259. package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js +36 -0
  260. package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js.map +1 -0
  261. package/dist/cjs/hooks/getThemeProxied.cjs +78 -0
  262. package/dist/cjs/hooks/getThemeProxied.native.js +107 -0
  263. package/dist/cjs/hooks/getThemeProxied.native.js.map +1 -0
  264. package/dist/cjs/hooks/useComponentState.cjs +195 -0
  265. package/dist/cjs/hooks/useComponentState.native.js +209 -0
  266. package/dist/cjs/hooks/useComponentState.native.js.map +1 -0
  267. package/dist/cjs/hooks/useDisableSSR.cjs +31 -0
  268. package/dist/cjs/hooks/useDisableSSR.native.js +35 -0
  269. package/dist/cjs/hooks/useDisableSSR.native.js.map +1 -0
  270. package/dist/cjs/hooks/useIsTouchDevice.cjs +32 -0
  271. package/dist/cjs/hooks/useIsTouchDevice.native.js +35 -0
  272. package/dist/cjs/hooks/useIsTouchDevice.native.js.map +1 -0
  273. package/dist/cjs/hooks/useMedia.cjs +238 -0
  274. package/dist/cjs/hooks/useMedia.native.js +269 -0
  275. package/dist/cjs/hooks/useMedia.native.js.map +1 -0
  276. package/dist/cjs/hooks/useProps.cjs +120 -0
  277. package/dist/cjs/hooks/useProps.native.js +125 -0
  278. package/dist/cjs/hooks/useProps.native.js.map +1 -0
  279. package/dist/cjs/hooks/useTheme.cjs +57 -0
  280. package/dist/cjs/hooks/useTheme.native.js +61 -0
  281. package/dist/cjs/hooks/useTheme.native.js.map +1 -0
  282. package/dist/cjs/hooks/useThemeName.cjs +39 -0
  283. package/dist/cjs/hooks/useThemeName.native.js +45 -0
  284. package/dist/cjs/hooks/useThemeName.native.js.map +1 -0
  285. package/dist/cjs/hooks/useThemeState.cjs +336 -0
  286. package/dist/cjs/hooks/useThemeState.native.js +442 -0
  287. package/dist/cjs/hooks/useThemeState.native.js.map +1 -0
  288. package/dist/cjs/index.cjs +122 -0
  289. package/dist/cjs/index.native.js +125 -0
  290. package/dist/cjs/index.native.js.map +1 -0
  291. package/dist/cjs/inject-styles.cjs +42 -0
  292. package/dist/cjs/inject-styles.native.js +46 -0
  293. package/dist/cjs/inject-styles.native.js.map +1 -0
  294. package/dist/cjs/insertFont.cjs +84 -0
  295. package/dist/cjs/insertFont.native.js +81 -0
  296. package/dist/cjs/insertFont.native.js.map +1 -0
  297. package/dist/cjs/interfaces/CSSColorNames.cjs +18 -0
  298. package/dist/cjs/interfaces/CSSColorNames.native.js +21 -0
  299. package/dist/cjs/interfaces/CSSColorNames.native.js.map +1 -0
  300. package/dist/cjs/interfaces/GetRef.cjs +18 -0
  301. package/dist/cjs/interfaces/GetRef.native.js +21 -0
  302. package/dist/cjs/interfaces/GetRef.native.js.map +1 -0
  303. package/dist/cjs/interfaces/HanzoguiComponentEvents.cjs +18 -0
  304. package/dist/cjs/interfaces/HanzoguiComponentEvents.native.js +21 -0
  305. package/dist/cjs/interfaces/HanzoguiComponentEvents.native.js.map +1 -0
  306. package/dist/cjs/interfaces/HanzoguiComponentPropsBaseBase.cjs +18 -0
  307. package/dist/cjs/interfaces/HanzoguiComponentPropsBaseBase.native.js +21 -0
  308. package/dist/cjs/interfaces/HanzoguiComponentPropsBaseBase.native.js.map +1 -0
  309. package/dist/cjs/interfaces/RNExclusiveTypes.cjs +18 -0
  310. package/dist/cjs/interfaces/RNExclusiveTypes.native.js +21 -0
  311. package/dist/cjs/interfaces/RNExclusiveTypes.native.js.map +1 -0
  312. package/dist/cjs/setupHooks.cjs +32 -0
  313. package/dist/cjs/setupHooks.native.js +35 -0
  314. package/dist/cjs/setupHooks.native.js.map +1 -0
  315. package/dist/cjs/setupReactNative.cjs +54 -0
  316. package/dist/cjs/setupReactNative.native.js +58 -0
  317. package/dist/cjs/setupReactNative.native.js.map +1 -0
  318. package/dist/cjs/styled.cjs +159 -0
  319. package/dist/cjs/styled.native.js +165 -0
  320. package/dist/cjs/styled.native.js.map +1 -0
  321. package/dist/cjs/styledHtml.test-d.cjs +187 -0
  322. package/dist/cjs/styledHtml.test-d.native.js +190 -0
  323. package/dist/cjs/styledHtml.test-d.native.js.map +1 -0
  324. package/dist/cjs/type-utils.cjs +18 -0
  325. package/dist/cjs/type-utils.native.js +21 -0
  326. package/dist/cjs/type-utils.native.js.map +1 -0
  327. package/dist/cjs/types.cjs +18 -0
  328. package/dist/cjs/types.native.js +21 -0
  329. package/dist/cjs/types.native.js.map +1 -0
  330. package/dist/cjs/views/Configuration.cjs +52 -0
  331. package/dist/cjs/views/Configuration.native.js +56 -0
  332. package/dist/cjs/views/Configuration.native.js.map +1 -0
  333. package/dist/cjs/views/FontLanguage.cjs +41 -0
  334. package/dist/cjs/views/FontLanguage.native.js +59 -0
  335. package/dist/cjs/views/FontLanguage.native.js.map +1 -0
  336. package/dist/cjs/views/HanzoguiProvider.cjs +103 -0
  337. package/dist/cjs/views/HanzoguiProvider.native.js +108 -0
  338. package/dist/cjs/views/HanzoguiProvider.native.js.map +1 -0
  339. package/dist/cjs/views/HanzoguiRoot.cjs +79 -0
  340. package/dist/cjs/views/HanzoguiRoot.native.js +33 -0
  341. package/dist/cjs/views/HanzoguiRoot.native.js.map +1 -0
  342. package/dist/cjs/views/Slot.cjs +82 -0
  343. package/dist/cjs/views/Slot.native.js +86 -0
  344. package/dist/cjs/views/Slot.native.js.map +1 -0
  345. package/dist/cjs/views/Text.cjs +61 -0
  346. package/dist/cjs/views/Text.native.js +52 -0
  347. package/dist/cjs/views/Text.native.js.map +1 -0
  348. package/dist/cjs/views/Theme.cjs +198 -0
  349. package/dist/cjs/views/Theme.native.js +207 -0
  350. package/dist/cjs/views/Theme.native.js.map +1 -0
  351. package/dist/cjs/views/ThemeDebug.cjs +98 -0
  352. package/dist/cjs/views/ThemeDebug.native.js +39 -0
  353. package/dist/cjs/views/ThemeDebug.native.js.map +1 -0
  354. package/dist/cjs/views/ThemeProvider.cjs +55 -0
  355. package/dist/cjs/views/ThemeProvider.native.js +48 -0
  356. package/dist/cjs/views/ThemeProvider.native.js.map +1 -0
  357. package/dist/cjs/views/View.cjs +33 -0
  358. package/dist/cjs/views/View.native.js +36 -0
  359. package/dist/cjs/views/View.native.js.map +1 -0
  360. package/dist/esm/Hanzogui.mjs +38 -0
  361. package/dist/esm/Hanzogui.mjs.map +1 -0
  362. package/dist/esm/Hanzogui.native.js +87 -0
  363. package/dist/esm/Hanzogui.native.js.map +1 -0
  364. package/dist/esm/_withStableStyle.mjs +39 -0
  365. package/dist/esm/_withStableStyle.mjs.map +1 -0
  366. package/dist/esm/_withStableStyle.native.js +43 -0
  367. package/dist/esm/_withStableStyle.native.js.map +1 -0
  368. package/dist/esm/animationDriverTypes.test-d.mjs +78 -0
  369. package/dist/esm/animationDriverTypes.test-d.mjs.map +1 -0
  370. package/dist/esm/animationDriverTypes.test-d.native.js +78 -0
  371. package/dist/esm/animationDriverTypes.test-d.native.js.map +1 -0
  372. package/dist/esm/config.mjs +136 -0
  373. package/dist/esm/config.mjs.map +1 -0
  374. package/dist/esm/config.native.js +155 -0
  375. package/dist/esm/config.native.js.map +1 -0
  376. package/dist/esm/constants/accessibilityDirectMap.mjs +7 -0
  377. package/dist/esm/constants/accessibilityDirectMap.mjs.map +1 -0
  378. package/dist/esm/constants/accessibilityDirectMap.native.js +7 -0
  379. package/dist/esm/constants/accessibilityDirectMap.native.js.map +1 -0
  380. package/dist/esm/constants/constants.mjs +12 -0
  381. package/dist/esm/constants/constants.mjs.map +1 -0
  382. package/dist/esm/constants/constants.native.js +12 -0
  383. package/dist/esm/constants/constants.native.js.map +1 -0
  384. package/dist/esm/constants/isDevTools.mjs +10 -0
  385. package/dist/esm/constants/isDevTools.mjs.map +1 -0
  386. package/dist/esm/constants/isDevTools.native.js +10 -0
  387. package/dist/esm/constants/isDevTools.native.js.map +1 -0
  388. package/dist/esm/contexts/ComponentContext.mjs +15 -0
  389. package/dist/esm/contexts/ComponentContext.mjs.map +1 -0
  390. package/dist/esm/contexts/ComponentContext.native.js +15 -0
  391. package/dist/esm/contexts/ComponentContext.native.js.map +1 -0
  392. package/dist/esm/contexts/GroupContext.mjs +4 -0
  393. package/dist/esm/contexts/GroupContext.mjs.map +1 -0
  394. package/dist/esm/contexts/GroupContext.native.js +4 -0
  395. package/dist/esm/contexts/GroupContext.native.js.map +1 -0
  396. package/dist/esm/createComponent.mjs +1013 -0
  397. package/dist/esm/createComponent.mjs.map +1 -0
  398. package/dist/esm/createComponent.native.js +990 -0
  399. package/dist/esm/createComponent.native.js.map +1 -0
  400. package/dist/esm/createFont.mjs +23 -0
  401. package/dist/esm/createFont.mjs.map +1 -0
  402. package/dist/esm/createFont.native.js +25 -0
  403. package/dist/esm/createFont.native.js.map +1 -0
  404. package/dist/esm/createHanzogui.mjs +228 -0
  405. package/dist/esm/createHanzogui.mjs.map +1 -0
  406. package/dist/esm/createHanzogui.native.js +276 -0
  407. package/dist/esm/createHanzogui.native.js.map +1 -0
  408. package/dist/esm/createShorthands.mjs +5 -0
  409. package/dist/esm/createShorthands.mjs.map +1 -0
  410. package/dist/esm/createShorthands.native.js +5 -0
  411. package/dist/esm/createShorthands.native.js.map +1 -0
  412. package/dist/esm/createTokens.mjs +6 -0
  413. package/dist/esm/createTokens.mjs.map +1 -0
  414. package/dist/esm/createTokens.native.js +7 -0
  415. package/dist/esm/createTokens.native.js.map +1 -0
  416. package/dist/esm/createVariable.mjs +87 -0
  417. package/dist/esm/createVariable.mjs.map +1 -0
  418. package/dist/esm/createVariable.native.js +103 -0
  419. package/dist/esm/createVariable.native.js.map +1 -0
  420. package/dist/esm/createVariables.mjs +49 -0
  421. package/dist/esm/createVariables.mjs.map +1 -0
  422. package/dist/esm/createVariables.native.js +55 -0
  423. package/dist/esm/createVariables.native.js.map +1 -0
  424. package/dist/esm/defaultComponentState.mjs +20 -0
  425. package/dist/esm/defaultComponentState.mjs.map +1 -0
  426. package/dist/esm/defaultComponentState.native.js +20 -0
  427. package/dist/esm/defaultComponentState.native.js.map +1 -0
  428. package/dist/esm/eventHandling.mjs +21 -0
  429. package/dist/esm/eventHandling.mjs.map +1 -0
  430. package/dist/esm/eventHandling.native.js +163 -0
  431. package/dist/esm/eventHandling.native.js.map +1 -0
  432. package/dist/esm/helpers/consoleLog.native.js +4 -0
  433. package/dist/esm/helpers/consoleLog.native.js.map +1 -0
  434. package/dist/esm/helpers/createDesignSystem.mjs +157 -0
  435. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -0
  436. package/dist/esm/helpers/createDesignSystem.native.js +202 -0
  437. package/dist/esm/helpers/createDesignSystem.native.js.map +1 -0
  438. package/dist/esm/helpers/createMediaStyle.mjs +100 -0
  439. package/dist/esm/helpers/createMediaStyle.mjs.map +1 -0
  440. package/dist/esm/helpers/createMediaStyle.native.js +110 -0
  441. package/dist/esm/helpers/createMediaStyle.native.js.map +1 -0
  442. package/dist/esm/helpers/createStyledContext.mjs +65 -0
  443. package/dist/esm/helpers/createStyledContext.mjs.map +1 -0
  444. package/dist/esm/helpers/createStyledContext.native.js +70 -0
  445. package/dist/esm/helpers/createStyledContext.native.js.map +1 -0
  446. package/dist/esm/helpers/defaultAnimationDriver.mjs +20 -0
  447. package/dist/esm/helpers/defaultAnimationDriver.mjs.map +1 -0
  448. package/dist/esm/helpers/defaultAnimationDriver.native.js +36 -0
  449. package/dist/esm/helpers/defaultAnimationDriver.native.js.map +1 -0
  450. package/dist/esm/helpers/defaultOffset.mjs +6 -0
  451. package/dist/esm/helpers/defaultOffset.mjs.map +1 -0
  452. package/dist/esm/helpers/defaultOffset.native.js +6 -0
  453. package/dist/esm/helpers/defaultOffset.native.js.map +1 -0
  454. package/dist/esm/helpers/expandStyle.mjs +44 -0
  455. package/dist/esm/helpers/expandStyle.mjs.map +1 -0
  456. package/dist/esm/helpers/expandStyle.native.js +124 -0
  457. package/dist/esm/helpers/expandStyle.native.js.map +1 -0
  458. package/dist/esm/helpers/expandStyles.mjs +16 -0
  459. package/dist/esm/helpers/expandStyles.mjs.map +1 -0
  460. package/dist/esm/helpers/expandStyles.native.js +23 -0
  461. package/dist/esm/helpers/expandStyles.native.js.map +1 -0
  462. package/dist/esm/helpers/getCSSStylesAtomic.mjs +190 -0
  463. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -0
  464. package/dist/esm/helpers/getCSSStylesAtomic.native.js +8 -0
  465. package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -0
  466. package/dist/esm/helpers/getDefaultProps.mjs +18 -0
  467. package/dist/esm/helpers/getDefaultProps.mjs.map +1 -0
  468. package/dist/esm/helpers/getDefaultProps.native.js +19 -0
  469. package/dist/esm/helpers/getDefaultProps.native.js.map +1 -0
  470. package/dist/esm/helpers/getDynamicVal.mjs +44 -0
  471. package/dist/esm/helpers/getDynamicVal.mjs.map +1 -0
  472. package/dist/esm/helpers/getDynamicVal.native.js +45 -0
  473. package/dist/esm/helpers/getDynamicVal.native.js.map +1 -0
  474. package/dist/esm/helpers/getExpandedShorthands.mjs +16 -0
  475. package/dist/esm/helpers/getExpandedShorthands.mjs.map +1 -0
  476. package/dist/esm/helpers/getExpandedShorthands.native.js +17 -0
  477. package/dist/esm/helpers/getExpandedShorthands.native.js.map +1 -0
  478. package/dist/esm/helpers/getFontLanguage.mjs +3 -0
  479. package/dist/esm/helpers/getFontLanguage.mjs.map +1 -0
  480. package/dist/esm/helpers/getFontLanguage.native.js +5 -0
  481. package/dist/esm/helpers/getFontLanguage.native.js.map +1 -0
  482. package/dist/esm/helpers/getGroupPropParts.mjs +29 -0
  483. package/dist/esm/helpers/getGroupPropParts.mjs.map +1 -0
  484. package/dist/esm/helpers/getGroupPropParts.native.js +31 -0
  485. package/dist/esm/helpers/getGroupPropParts.native.js.map +1 -0
  486. package/dist/esm/helpers/getShorthandValue.mjs +8 -0
  487. package/dist/esm/helpers/getShorthandValue.mjs.map +1 -0
  488. package/dist/esm/helpers/getShorthandValue.native.js +9 -0
  489. package/dist/esm/helpers/getShorthandValue.native.js.map +1 -0
  490. package/dist/esm/helpers/getSplitStyles.mjs +859 -0
  491. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -0
  492. package/dist/esm/helpers/getSplitStyles.native.js +877 -0
  493. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -0
  494. package/dist/esm/helpers/getThemeCSSRules.mjs +109 -0
  495. package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -0
  496. package/dist/esm/helpers/getThemeCSSRules.native.js +5 -0
  497. package/dist/esm/helpers/getThemeCSSRules.native.js.map +1 -0
  498. package/dist/esm/helpers/getTokenForKey.mjs +146 -0
  499. package/dist/esm/helpers/getTokenForKey.mjs.map +1 -0
  500. package/dist/esm/helpers/getTokenForKey.native.js +155 -0
  501. package/dist/esm/helpers/getTokenForKey.native.js.map +1 -0
  502. package/dist/esm/helpers/getVariantExtras.mjs +55 -0
  503. package/dist/esm/helpers/getVariantExtras.mjs.map +1 -0
  504. package/dist/esm/helpers/getVariantExtras.native.js +56 -0
  505. package/dist/esm/helpers/getVariantExtras.native.js.map +1 -0
  506. package/dist/esm/helpers/insertStyleRule.mjs +201 -0
  507. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -0
  508. package/dist/esm/helpers/insertStyleRule.native.js +69 -0
  509. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -0
  510. package/dist/esm/helpers/isActivePlatform.mjs +14 -0
  511. package/dist/esm/helpers/isActivePlatform.mjs.map +1 -0
  512. package/dist/esm/helpers/isActivePlatform.native.js +14 -0
  513. package/dist/esm/helpers/isActivePlatform.native.js.map +1 -0
  514. package/dist/esm/helpers/isActiveTheme.mjs +6 -0
  515. package/dist/esm/helpers/isActiveTheme.mjs.map +1 -0
  516. package/dist/esm/helpers/isActiveTheme.native.js +6 -0
  517. package/dist/esm/helpers/isActiveTheme.native.js.map +1 -0
  518. package/dist/esm/helpers/isHanzoguiComponent.mjs +6 -0
  519. package/dist/esm/helpers/isHanzoguiComponent.mjs.map +1 -0
  520. package/dist/esm/helpers/isHanzoguiComponent.native.js +6 -0
  521. package/dist/esm/helpers/isHanzoguiComponent.native.js.map +1 -0
  522. package/dist/esm/helpers/isHanzoguiElement.mjs +7 -0
  523. package/dist/esm/helpers/isHanzoguiElement.mjs.map +1 -0
  524. package/dist/esm/helpers/isHanzoguiElement.native.js +7 -0
  525. package/dist/esm/helpers/isHanzoguiElement.native.js.map +1 -0
  526. package/dist/esm/helpers/isObj.mjs +3 -0
  527. package/dist/esm/helpers/isObj.mjs.map +1 -0
  528. package/dist/esm/helpers/isObj.native.js +10 -0
  529. package/dist/esm/helpers/isObj.native.js.map +1 -0
  530. package/dist/esm/helpers/log.mjs +14 -0
  531. package/dist/esm/helpers/log.mjs.map +1 -0
  532. package/dist/esm/helpers/log.native.js +15 -0
  533. package/dist/esm/helpers/log.native.js.map +1 -0
  534. package/dist/esm/helpers/mainThreadPressEvents.mjs +3 -0
  535. package/dist/esm/helpers/mainThreadPressEvents.mjs.map +1 -0
  536. package/dist/esm/helpers/mainThreadPressEvents.native.js +105 -0
  537. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -0
  538. package/dist/esm/helpers/matchMedia.mjs +12 -0
  539. package/dist/esm/helpers/matchMedia.mjs.map +1 -0
  540. package/dist/esm/helpers/matchMedia.native.js +33 -0
  541. package/dist/esm/helpers/matchMedia.native.js.map +1 -0
  542. package/dist/esm/helpers/mediaObjectToString.mjs +26 -0
  543. package/dist/esm/helpers/mediaObjectToString.mjs.map +1 -0
  544. package/dist/esm/helpers/mediaObjectToString.native.js +29 -0
  545. package/dist/esm/helpers/mediaObjectToString.native.js.map +1 -0
  546. package/dist/esm/helpers/mediaState.mjs +20 -0
  547. package/dist/esm/helpers/mediaState.mjs.map +1 -0
  548. package/dist/esm/helpers/mediaState.native.js +22 -0
  549. package/dist/esm/helpers/mediaState.native.js.map +1 -0
  550. package/dist/esm/helpers/mergeProps.mjs +53 -0
  551. package/dist/esm/helpers/mergeProps.mjs.map +1 -0
  552. package/dist/esm/helpers/mergeProps.native.js +58 -0
  553. package/dist/esm/helpers/mergeProps.native.js.map +1 -0
  554. package/dist/esm/helpers/mergeRenderElementProps.mjs +10 -0
  555. package/dist/esm/helpers/mergeRenderElementProps.mjs.map +1 -0
  556. package/dist/esm/helpers/mergeRenderElementProps.native.js +10 -0
  557. package/dist/esm/helpers/mergeRenderElementProps.native.js.map +1 -0
  558. package/dist/esm/helpers/mergeSlotStyleProps.mjs +27 -0
  559. package/dist/esm/helpers/mergeSlotStyleProps.mjs.map +1 -0
  560. package/dist/esm/helpers/mergeSlotStyleProps.native.js +27 -0
  561. package/dist/esm/helpers/mergeSlotStyleProps.native.js.map +1 -0
  562. package/dist/esm/helpers/mergeVariants.mjs +27 -0
  563. package/dist/esm/helpers/mergeVariants.mjs.map +1 -0
  564. package/dist/esm/helpers/mergeVariants.native.js +28 -0
  565. package/dist/esm/helpers/mergeVariants.native.js.map +1 -0
  566. package/dist/esm/helpers/nativeOnlyProps.mjs +37 -0
  567. package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -0
  568. package/dist/esm/helpers/nativeOnlyProps.native.js +37 -0
  569. package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -0
  570. package/dist/esm/helpers/normalizeColor.mjs +21 -0
  571. package/dist/esm/helpers/normalizeColor.mjs.map +1 -0
  572. package/dist/esm/helpers/normalizeColor.native.js +23 -0
  573. package/dist/esm/helpers/normalizeColor.native.js.map +1 -0
  574. package/dist/esm/helpers/normalizeShadow.mjs +25 -0
  575. package/dist/esm/helpers/normalizeShadow.mjs.map +1 -0
  576. package/dist/esm/helpers/normalizeShadow.native.js +26 -0
  577. package/dist/esm/helpers/normalizeShadow.native.js.map +1 -0
  578. package/dist/esm/helpers/normalizeStyle.mjs +29 -0
  579. package/dist/esm/helpers/normalizeStyle.mjs.map +1 -0
  580. package/dist/esm/helpers/normalizeStyle.native.js +30 -0
  581. package/dist/esm/helpers/normalizeStyle.native.js.map +1 -0
  582. package/dist/esm/helpers/normalizeStylePropKeys.mjs +3 -0
  583. package/dist/esm/helpers/normalizeStylePropKeys.mjs.map +1 -0
  584. package/dist/esm/helpers/normalizeStylePropKeys.native.js +14 -0
  585. package/dist/esm/helpers/normalizeStylePropKeys.native.js.map +1 -0
  586. package/dist/esm/helpers/normalizeValueWithProperty.mjs +29 -0
  587. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -0
  588. package/dist/esm/helpers/normalizeValueWithProperty.native.js +35 -0
  589. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -0
  590. package/dist/esm/helpers/objectIdentityKey.mjs +21 -0
  591. package/dist/esm/helpers/objectIdentityKey.mjs.map +1 -0
  592. package/dist/esm/helpers/objectIdentityKey.native.js +26 -0
  593. package/dist/esm/helpers/objectIdentityKey.native.js.map +1 -0
  594. package/dist/esm/helpers/parseBorderShorthand.mjs +5 -0
  595. package/dist/esm/helpers/parseBorderShorthand.mjs.map +1 -0
  596. package/dist/esm/helpers/parseBorderShorthand.native.js +58 -0
  597. package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -0
  598. package/dist/esm/helpers/parseNativeStyle.mjs +142 -0
  599. package/dist/esm/helpers/parseNativeStyle.mjs.map +1 -0
  600. package/dist/esm/helpers/parseNativeStyle.native.js +162 -0
  601. package/dist/esm/helpers/parseNativeStyle.native.js.map +1 -0
  602. package/dist/esm/helpers/parseOutlineShorthand.mjs +5 -0
  603. package/dist/esm/helpers/parseOutlineShorthand.mjs.map +1 -0
  604. package/dist/esm/helpers/parseOutlineShorthand.native.js +52 -0
  605. package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -0
  606. package/dist/esm/helpers/platformResolveValue.mjs +13 -0
  607. package/dist/esm/helpers/platformResolveValue.mjs.map +1 -0
  608. package/dist/esm/helpers/platformResolveValue.native.js +46 -0
  609. package/dist/esm/helpers/platformResolveValue.native.js.map +1 -0
  610. package/dist/esm/helpers/pointerEvents.mjs +3 -0
  611. package/dist/esm/helpers/pointerEvents.mjs.map +1 -0
  612. package/dist/esm/helpers/pointerEvents.native.js +127 -0
  613. package/dist/esm/helpers/pointerEvents.native.js.map +1 -0
  614. package/dist/esm/helpers/propMapper.mjs +230 -0
  615. package/dist/esm/helpers/propMapper.mjs.map +1 -0
  616. package/dist/esm/helpers/propMapper.native.js +301 -0
  617. package/dist/esm/helpers/propMapper.native.js.map +1 -0
  618. package/dist/esm/helpers/proxyThemeToParents.mjs +37 -0
  619. package/dist/esm/helpers/proxyThemeToParents.mjs.map +1 -0
  620. package/dist/esm/helpers/proxyThemeToParents.native.js +132 -0
  621. package/dist/esm/helpers/proxyThemeToParents.native.js.map +1 -0
  622. package/dist/esm/helpers/proxyThemeVariables.mjs +13 -0
  623. package/dist/esm/helpers/proxyThemeVariables.mjs.map +1 -0
  624. package/dist/esm/helpers/proxyThemeVariables.native.js +15 -0
  625. package/dist/esm/helpers/proxyThemeVariables.native.js.map +1 -0
  626. package/dist/esm/helpers/pseudoDescriptors.mjs +54 -0
  627. package/dist/esm/helpers/pseudoDescriptors.mjs.map +1 -0
  628. package/dist/esm/helpers/pseudoDescriptors.native.js +54 -0
  629. package/dist/esm/helpers/pseudoDescriptors.native.js.map +1 -0
  630. package/dist/esm/helpers/pseudoTransitions.mjs +57 -0
  631. package/dist/esm/helpers/pseudoTransitions.mjs.map +1 -0
  632. package/dist/esm/helpers/pseudoTransitions.native.js +59 -0
  633. package/dist/esm/helpers/pseudoTransitions.native.js.map +1 -0
  634. package/dist/esm/helpers/registerCSSVariable.mjs +50 -0
  635. package/dist/esm/helpers/registerCSSVariable.mjs.map +1 -0
  636. package/dist/esm/helpers/registerCSSVariable.native.js +51 -0
  637. package/dist/esm/helpers/registerCSSVariable.native.js.map +1 -0
  638. package/dist/esm/helpers/resolveAnimationDriver.mjs +12 -0
  639. package/dist/esm/helpers/resolveAnimationDriver.mjs.map +1 -0
  640. package/dist/esm/helpers/resolveAnimationDriver.native.js +13 -0
  641. package/dist/esm/helpers/resolveAnimationDriver.native.js.map +1 -0
  642. package/dist/esm/helpers/resolveCompoundTokens.mjs +16 -0
  643. package/dist/esm/helpers/resolveCompoundTokens.mjs.map +1 -0
  644. package/dist/esm/helpers/resolveCompoundTokens.native.js +16 -0
  645. package/dist/esm/helpers/resolveCompoundTokens.native.js.map +1 -0
  646. package/dist/esm/helpers/resolveRem.mjs +8 -0
  647. package/dist/esm/helpers/resolveRem.mjs.map +1 -0
  648. package/dist/esm/helpers/resolveRem.native.js +30 -0
  649. package/dist/esm/helpers/resolveRem.native.js.map +1 -0
  650. package/dist/esm/helpers/resolveSafeArea.mjs +11 -0
  651. package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -0
  652. package/dist/esm/helpers/resolveSafeArea.native.js +18 -0
  653. package/dist/esm/helpers/resolveSafeArea.native.js.map +1 -0
  654. package/dist/esm/helpers/setElementProps.mjs +6 -0
  655. package/dist/esm/helpers/setElementProps.mjs.map +1 -0
  656. package/dist/esm/helpers/setElementProps.native.js +11 -0
  657. package/dist/esm/helpers/setElementProps.native.js.map +1 -0
  658. package/dist/esm/helpers/skipProps.mjs +21 -0
  659. package/dist/esm/helpers/skipProps.mjs.map +1 -0
  660. package/dist/esm/helpers/skipProps.native.js +21 -0
  661. package/dist/esm/helpers/skipProps.native.js.map +1 -0
  662. package/dist/esm/helpers/sortString.mjs +3 -0
  663. package/dist/esm/helpers/sortString.mjs.map +1 -0
  664. package/dist/esm/helpers/sortString.native.js +5 -0
  665. package/dist/esm/helpers/sortString.native.js.map +1 -0
  666. package/dist/esm/helpers/subscribeToContextGroup.mjs +84 -0
  667. package/dist/esm/helpers/subscribeToContextGroup.mjs.map +1 -0
  668. package/dist/esm/helpers/subscribeToContextGroup.native.js +129 -0
  669. package/dist/esm/helpers/subscribeToContextGroup.native.js.map +1 -0
  670. package/dist/esm/helpers/themeable.mjs +79 -0
  671. package/dist/esm/helpers/themeable.mjs.map +1 -0
  672. package/dist/esm/helpers/themeable.native.js +80 -0
  673. package/dist/esm/helpers/themeable.native.js.map +1 -0
  674. package/dist/esm/helpers/themes.mjs +21 -0
  675. package/dist/esm/helpers/themes.mjs.map +1 -0
  676. package/dist/esm/helpers/themes.native.js +21 -0
  677. package/dist/esm/helpers/themes.native.js.map +1 -0
  678. package/dist/esm/helpers/timer.mjs +9 -0
  679. package/dist/esm/helpers/timer.mjs.map +1 -0
  680. package/dist/esm/helpers/timer.native.js +9 -0
  681. package/dist/esm/helpers/timer.native.js.map +1 -0
  682. package/dist/esm/helpers/transformsToString.mjs +18 -0
  683. package/dist/esm/helpers/transformsToString.mjs.map +1 -0
  684. package/dist/esm/helpers/transformsToString.native.js +18 -0
  685. package/dist/esm/helpers/transformsToString.native.js.map +1 -0
  686. package/dist/esm/helpers/useRenderElement.mjs +26 -0
  687. package/dist/esm/helpers/useRenderElement.mjs.map +1 -0
  688. package/dist/esm/helpers/useRenderElement.native.js +31 -0
  689. package/dist/esm/helpers/useRenderElement.native.js.map +1 -0
  690. package/dist/esm/helpers/webPropsToSkip.mjs +3 -0
  691. package/dist/esm/helpers/webPropsToSkip.mjs.map +1 -0
  692. package/dist/esm/helpers/webPropsToSkip.native.js +50 -0
  693. package/dist/esm/helpers/webPropsToSkip.native.js.map +1 -0
  694. package/dist/esm/helpers/wrapStyleTags.mjs +17 -0
  695. package/dist/esm/helpers/wrapStyleTags.mjs.map +1 -0
  696. package/dist/esm/helpers/wrapStyleTags.native.js +5 -0
  697. package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -0
  698. package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs +5 -0
  699. package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs.map +1 -0
  700. package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js +8 -0
  701. package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js.map +1 -0
  702. package/dist/esm/hooks/getThemeProxied.mjs +53 -0
  703. package/dist/esm/hooks/getThemeProxied.mjs.map +1 -0
  704. package/dist/esm/hooks/getThemeProxied.native.js +79 -0
  705. package/dist/esm/hooks/getThemeProxied.native.js.map +1 -0
  706. package/dist/esm/hooks/useComponentState.mjs +170 -0
  707. package/dist/esm/hooks/useComponentState.mjs.map +1 -0
  708. package/dist/esm/hooks/useComponentState.native.js +181 -0
  709. package/dist/esm/hooks/useComponentState.native.js.map +1 -0
  710. package/dist/esm/hooks/useDisableSSR.mjs +6 -0
  711. package/dist/esm/hooks/useDisableSSR.mjs.map +1 -0
  712. package/dist/esm/hooks/useDisableSSR.native.js +7 -0
  713. package/dist/esm/hooks/useDisableSSR.native.js.map +1 -0
  714. package/dist/esm/hooks/useIsTouchDevice.mjs +7 -0
  715. package/dist/esm/hooks/useIsTouchDevice.mjs.map +1 -0
  716. package/dist/esm/hooks/useIsTouchDevice.native.js +7 -0
  717. package/dist/esm/hooks/useIsTouchDevice.native.js.map +1 -0
  718. package/dist/esm/hooks/useMedia.mjs +201 -0
  719. package/dist/esm/hooks/useMedia.mjs.map +1 -0
  720. package/dist/esm/hooks/useMedia.native.js +229 -0
  721. package/dist/esm/hooks/useMedia.native.js.map +1 -0
  722. package/dist/esm/hooks/useProps.mjs +82 -0
  723. package/dist/esm/hooks/useProps.mjs.map +1 -0
  724. package/dist/esm/hooks/useProps.native.js +84 -0
  725. package/dist/esm/hooks/useProps.native.js.map +1 -0
  726. package/dist/esm/hooks/useTheme.mjs +31 -0
  727. package/dist/esm/hooks/useTheme.mjs.map +1 -0
  728. package/dist/esm/hooks/useTheme.native.js +32 -0
  729. package/dist/esm/hooks/useTheme.native.js.map +1 -0
  730. package/dist/esm/hooks/useThemeName.mjs +14 -0
  731. package/dist/esm/hooks/useThemeName.mjs.map +1 -0
  732. package/dist/esm/hooks/useThemeName.native.js +17 -0
  733. package/dist/esm/hooks/useThemeName.native.js.map +1 -0
  734. package/dist/esm/hooks/useThemeState.mjs +306 -0
  735. package/dist/esm/hooks/useThemeState.mjs.map +1 -0
  736. package/dist/esm/hooks/useThemeState.native.js +409 -0
  737. package/dist/esm/hooks/useThemeState.native.js.map +1 -0
  738. package/dist/esm/index.js +74 -0
  739. package/dist/esm/index.js.map +1 -0
  740. package/dist/esm/index.mjs +74 -0
  741. package/dist/esm/index.mjs.map +1 -0
  742. package/dist/esm/index.native.js +74 -0
  743. package/dist/esm/index.native.js.map +1 -0
  744. package/dist/esm/inject-styles.mjs +17 -0
  745. package/dist/esm/inject-styles.mjs.map +1 -0
  746. package/dist/esm/inject-styles.native.js +18 -0
  747. package/dist/esm/inject-styles.native.js.map +1 -0
  748. package/dist/esm/insertFont.mjs +55 -0
  749. package/dist/esm/insertFont.mjs.map +1 -0
  750. package/dist/esm/insertFont.native.js +49 -0
  751. package/dist/esm/insertFont.native.js.map +1 -0
  752. package/dist/esm/interfaces/CSSColorNames.mjs +2 -0
  753. package/dist/esm/interfaces/CSSColorNames.mjs.map +1 -0
  754. package/dist/esm/interfaces/CSSColorNames.native.js +2 -0
  755. package/dist/esm/interfaces/CSSColorNames.native.js.map +1 -0
  756. package/dist/esm/interfaces/GetRef.mjs +2 -0
  757. package/dist/esm/interfaces/GetRef.mjs.map +1 -0
  758. package/dist/esm/interfaces/GetRef.native.js +2 -0
  759. package/dist/esm/interfaces/GetRef.native.js.map +1 -0
  760. package/dist/esm/interfaces/HanzoguiComponentEvents.mjs +2 -0
  761. package/dist/esm/interfaces/HanzoguiComponentEvents.mjs.map +1 -0
  762. package/dist/esm/interfaces/HanzoguiComponentEvents.native.js +2 -0
  763. package/dist/esm/interfaces/HanzoguiComponentEvents.native.js.map +1 -0
  764. package/dist/esm/interfaces/HanzoguiComponentPropsBaseBase.mjs +2 -0
  765. package/dist/esm/interfaces/HanzoguiComponentPropsBaseBase.mjs.map +1 -0
  766. package/dist/esm/interfaces/HanzoguiComponentPropsBaseBase.native.js +2 -0
  767. package/dist/esm/interfaces/HanzoguiComponentPropsBaseBase.native.js.map +1 -0
  768. package/dist/esm/interfaces/RNExclusiveTypes.mjs +2 -0
  769. package/dist/esm/interfaces/RNExclusiveTypes.mjs.map +1 -0
  770. package/dist/esm/interfaces/RNExclusiveTypes.native.js +2 -0
  771. package/dist/esm/interfaces/RNExclusiveTypes.native.js.map +1 -0
  772. package/dist/esm/setupHooks.mjs +6 -0
  773. package/dist/esm/setupHooks.mjs.map +1 -0
  774. package/dist/esm/setupHooks.native.js +6 -0
  775. package/dist/esm/setupHooks.native.js.map +1 -0
  776. package/dist/esm/setupReactNative.mjs +29 -0
  777. package/dist/esm/setupReactNative.mjs.map +1 -0
  778. package/dist/esm/setupReactNative.native.js +30 -0
  779. package/dist/esm/setupReactNative.native.js.map +1 -0
  780. package/dist/esm/styled.mjs +133 -0
  781. package/dist/esm/styled.mjs.map +1 -0
  782. package/dist/esm/styled.native.js +136 -0
  783. package/dist/esm/styled.native.js.map +1 -0
  784. package/dist/esm/styledHtml.test-d.mjs +188 -0
  785. package/dist/esm/styledHtml.test-d.mjs.map +1 -0
  786. package/dist/esm/styledHtml.test-d.native.js +188 -0
  787. package/dist/esm/styledHtml.test-d.native.js.map +1 -0
  788. package/dist/esm/type-utils.mjs +2 -0
  789. package/dist/esm/type-utils.mjs.map +1 -0
  790. package/dist/esm/type-utils.native.js +2 -0
  791. package/dist/esm/type-utils.native.js.map +1 -0
  792. package/dist/esm/types.mjs +2 -0
  793. package/dist/esm/types.mjs.map +1 -0
  794. package/dist/esm/types.native.js +2 -0
  795. package/dist/esm/types.native.js.map +1 -0
  796. package/dist/esm/views/Configuration.mjs +16 -0
  797. package/dist/esm/views/Configuration.mjs.map +1 -0
  798. package/dist/esm/views/Configuration.native.js +17 -0
  799. package/dist/esm/views/Configuration.native.js.map +1 -0
  800. package/dist/esm/views/FontLanguage.mjs +16 -0
  801. package/dist/esm/views/FontLanguage.mjs.map +1 -0
  802. package/dist/esm/views/FontLanguage.native.js +20 -0
  803. package/dist/esm/views/FontLanguage.native.js.map +1 -0
  804. package/dist/esm/views/HanzoguiProvider.mjs +67 -0
  805. package/dist/esm/views/HanzoguiProvider.mjs.map +1 -0
  806. package/dist/esm/views/HanzoguiProvider.native.js +69 -0
  807. package/dist/esm/views/HanzoguiProvider.native.js.map +1 -0
  808. package/dist/esm/views/HanzoguiRoot.mjs +43 -0
  809. package/dist/esm/views/HanzoguiRoot.mjs.map +1 -0
  810. package/dist/esm/views/HanzoguiRoot.native.js +5 -0
  811. package/dist/esm/views/HanzoguiRoot.native.js.map +1 -0
  812. package/dist/esm/views/Slot.mjs +56 -0
  813. package/dist/esm/views/Slot.mjs.map +1 -0
  814. package/dist/esm/views/Slot.native.js +57 -0
  815. package/dist/esm/views/Slot.native.js.map +1 -0
  816. package/dist/esm/views/Text.mjs +36 -0
  817. package/dist/esm/views/Text.mjs.map +1 -0
  818. package/dist/esm/views/Text.native.js +25 -0
  819. package/dist/esm/views/Text.native.js.map +1 -0
  820. package/dist/esm/views/Theme.mjs +161 -0
  821. package/dist/esm/views/Theme.mjs.map +1 -0
  822. package/dist/esm/views/Theme.native.js +167 -0
  823. package/dist/esm/views/Theme.native.js.map +1 -0
  824. package/dist/esm/views/ThemeDebug.mjs +73 -0
  825. package/dist/esm/views/ThemeDebug.mjs.map +1 -0
  826. package/dist/esm/views/ThemeDebug.native.js +11 -0
  827. package/dist/esm/views/ThemeDebug.native.js.map +1 -0
  828. package/dist/esm/views/ThemeProvider.mjs +30 -0
  829. package/dist/esm/views/ThemeProvider.mjs.map +1 -0
  830. package/dist/esm/views/ThemeProvider.native.js +20 -0
  831. package/dist/esm/views/ThemeProvider.native.js.map +1 -0
  832. package/dist/esm/views/View.mjs +8 -0
  833. package/dist/esm/views/View.mjs.map +1 -0
  834. package/dist/esm/views/View.native.js +8 -0
  835. package/dist/esm/views/View.native.js.map +1 -0
  836. package/inject-styles/index.cjs +2 -0
  837. package/inject-styles/index.js +2 -0
  838. package/inject-styles.cjs +1 -0
  839. package/package.json +81 -0
  840. package/reset.css +59 -0
  841. package/src/Hanzogui.ts +47 -0
  842. package/src/_withStableStyle.tsx +62 -0
  843. package/src/animationDriverTypes.test-d.ts +332 -0
  844. package/src/config.ts +232 -0
  845. package/src/constants/accessibilityDirectMap.native.tsx +10 -0
  846. package/src/constants/accessibilityDirectMap.tsx +11 -0
  847. package/src/constants/constants.ts +16 -0
  848. package/src/constants/isDevTools.ts +12 -0
  849. package/src/contexts/ComponentContext.tsx +16 -0
  850. package/src/contexts/GroupContext.tsx +4 -0
  851. package/src/createComponent.tsx +1844 -0
  852. package/src/createFont.ts +50 -0
  853. package/src/createHanzogui.ts +371 -0
  854. package/src/createShorthands.ts +7 -0
  855. package/src/createTokens.ts +31 -0
  856. package/src/createVariable.ts +121 -0
  857. package/src/createVariables.ts +78 -0
  858. package/src/defaultComponentState.tsx +22 -0
  859. package/src/eventHandling.native.ts +227 -0
  860. package/src/eventHandling.ts +46 -0
  861. package/src/helpers/consoleLog.native.ts +2 -0
  862. package/src/helpers/createDesignSystem.ts +264 -0
  863. package/src/helpers/createMediaStyle.ts +167 -0
  864. package/src/helpers/createStyledContext.tsx +98 -0
  865. package/src/helpers/defaultAnimationDriver.tsx +24 -0
  866. package/src/helpers/defaultOffset.ts +1 -0
  867. package/src/helpers/expandStyle.ts +204 -0
  868. package/src/helpers/expandStyles.ts +42 -0
  869. package/src/helpers/getCSSStylesAtomic.native.ts +7 -0
  870. package/src/helpers/getCSSStylesAtomic.ts +263 -0
  871. package/src/helpers/getDefaultProps.ts +28 -0
  872. package/src/helpers/getDynamicVal.ts +63 -0
  873. package/src/helpers/getExpandedShorthands.ts +23 -0
  874. package/src/helpers/getFontLanguage.ts +2 -0
  875. package/src/helpers/getGroupPropParts.ts +46 -0
  876. package/src/helpers/getShorthandValue.ts +9 -0
  877. package/src/helpers/getSplitStyles.tsx +1869 -0
  878. package/src/helpers/getThemeCSSRules.native.ts +3 -0
  879. package/src/helpers/getThemeCSSRules.ts +192 -0
  880. package/src/helpers/getTokenForKey.ts +236 -0
  881. package/src/helpers/getVariantExtras.tsx +67 -0
  882. package/src/helpers/insertStyleRule.tsx +365 -0
  883. package/src/helpers/isActivePlatform.ts +43 -0
  884. package/src/helpers/isActiveTheme.ts +4 -0
  885. package/src/helpers/isHanzoguiComponent.tsx +11 -0
  886. package/src/helpers/isHanzoguiElement.tsx +11 -0
  887. package/src/helpers/isObj.ts +1 -0
  888. package/src/helpers/log.ts +17 -0
  889. package/src/helpers/mainThreadPressEvents.native.ts +137 -0
  890. package/src/helpers/mainThreadPressEvents.ts +7 -0
  891. package/src/helpers/matchMedia.native.ts +34 -0
  892. package/src/helpers/matchMedia.ts +17 -0
  893. package/src/helpers/mediaObjectToString.ts +30 -0
  894. package/src/helpers/mediaState.ts +32 -0
  895. package/src/helpers/mergeProps.ts +121 -0
  896. package/src/helpers/mergeRenderElementProps.ts +17 -0
  897. package/src/helpers/mergeSlotStyleProps.ts +46 -0
  898. package/src/helpers/mergeVariants.ts +40 -0
  899. package/src/helpers/nativeOnlyProps.ts +38 -0
  900. package/src/helpers/normalizeColor.native.ts +29 -0
  901. package/src/helpers/normalizeColor.ts +29 -0
  902. package/src/helpers/normalizeShadow.native.ts +20 -0
  903. package/src/helpers/normalizeShadow.ts +21 -0
  904. package/src/helpers/normalizeStyle.ts +42 -0
  905. package/src/helpers/normalizeStylePropKeys.native.ts +12 -0
  906. package/src/helpers/normalizeStylePropKeys.ts +3 -0
  907. package/src/helpers/normalizeValueWithProperty.ts +41 -0
  908. package/src/helpers/objectIdentityKey.tsx +20 -0
  909. package/src/helpers/parseBorderShorthand.native.ts +74 -0
  910. package/src/helpers/parseBorderShorthand.ts +6 -0
  911. package/src/helpers/parseNativeStyle.ts +193 -0
  912. package/src/helpers/parseOutlineShorthand.native.ts +62 -0
  913. package/src/helpers/parseOutlineShorthand.ts +6 -0
  914. package/src/helpers/platformResolveValue.native.ts +72 -0
  915. package/src/helpers/platformResolveValue.ts +22 -0
  916. package/src/helpers/pointerEvents.native.ts +143 -0
  917. package/src/helpers/pointerEvents.ts +9 -0
  918. package/src/helpers/propMapper.ts +404 -0
  919. package/src/helpers/proxyThemeToParents.ts +52 -0
  920. package/src/helpers/proxyThemeVariables.tsx +13 -0
  921. package/src/helpers/pseudoDescriptors.ts +74 -0
  922. package/src/helpers/pseudoTransitions.ts +97 -0
  923. package/src/helpers/registerCSSVariable.ts +54 -0
  924. package/src/helpers/resolveAnimationDriver.ts +23 -0
  925. package/src/helpers/resolveCompoundTokens.ts +28 -0
  926. package/src/helpers/resolveRem.native.ts +44 -0
  927. package/src/helpers/resolveRem.ts +17 -0
  928. package/src/helpers/resolveSafeArea.native.ts +18 -0
  929. package/src/helpers/resolveSafeArea.ts +10 -0
  930. package/src/helpers/setElementProps.native.tsx +9 -0
  931. package/src/helpers/setElementProps.tsx +5 -0
  932. package/src/helpers/skipProps.ts +35 -0
  933. package/src/helpers/sortString.ts +1 -0
  934. package/src/helpers/subscribeToContextGroup.tsx +99 -0
  935. package/src/helpers/themeable.tsx +104 -0
  936. package/src/helpers/themes.ts +23 -0
  937. package/src/helpers/timer.ts +9 -0
  938. package/src/helpers/transformsToString.ts +20 -0
  939. package/src/helpers/useRenderElement.tsx +73 -0
  940. package/src/helpers/webPropsToSkip.native.ts +56 -0
  941. package/src/helpers/webPropsToSkip.ts +1 -0
  942. package/src/helpers/wrapStyleTags.tsx +31 -0
  943. package/src/hooks/doesRootSchemeMatchSystem.native.ts +7 -0
  944. package/src/hooks/doesRootSchemeMatchSystem.ts +4 -0
  945. package/src/hooks/getThemeProxied.ts +202 -0
  946. package/src/hooks/useComponentState.ts +269 -0
  947. package/src/hooks/useDisableSSR.tsx +6 -0
  948. package/src/hooks/useIsTouchDevice.tsx +6 -0
  949. package/src/hooks/useMedia.tsx +298 -0
  950. package/src/hooks/useProps.tsx +158 -0
  951. package/src/hooks/useTheme.tsx +48 -0
  952. package/src/hooks/useThemeName.tsx +10 -0
  953. package/src/hooks/useThemeState.ts +559 -0
  954. package/src/index.ts +103 -0
  955. package/src/inject-styles.ts +20 -0
  956. package/src/insertFont.ts +81 -0
  957. package/src/interfaces/CSSColorNames.tsx +149 -0
  958. package/src/interfaces/GetRef.tsx +24 -0
  959. package/src/interfaces/HanzoguiComponentEvents.tsx +18 -0
  960. package/src/interfaces/HanzoguiComponentPropsBaseBase.tsx +124 -0
  961. package/src/interfaces/RNExclusiveTypes.ts +59 -0
  962. package/src/setupHooks.ts +27 -0
  963. package/src/setupReactNative.ts +60 -0
  964. package/src/styled.tsx +602 -0
  965. package/src/styledHtml.test-d.ts +286 -0
  966. package/src/type-utils.ts +30 -0
  967. package/src/types.tsx +3372 -0
  968. package/src/views/Configuration.tsx +20 -0
  969. package/src/views/FontLanguage.native.tsx +13 -0
  970. package/src/views/FontLanguage.tsx +18 -0
  971. package/src/views/HanzoguiProvider.tsx +95 -0
  972. package/src/views/HanzoguiRoot.native.tsx +9 -0
  973. package/src/views/HanzoguiRoot.tsx +64 -0
  974. package/src/views/Slot.tsx +86 -0
  975. package/src/views/Text.tsx +72 -0
  976. package/src/views/Theme.tsx +246 -0
  977. package/src/views/ThemeDebug.native.tsx +17 -0
  978. package/src/views/ThemeDebug.tsx +95 -0
  979. package/src/views/ThemeProvider.tsx +45 -0
  980. package/src/views/View.tsx +25 -0
  981. package/tsconfig.json +44 -0
  982. package/tsconfig.test.json +9 -0
  983. package/types/Hanzogui.d.ts +15 -0
  984. package/types/Hanzogui.d.ts.map +1 -0
  985. package/types/_withStableStyle.d.ts +3 -0
  986. package/types/_withStableStyle.d.ts.map +1 -0
  987. package/types/config.d.ts +72 -0
  988. package/types/config.d.ts.map +1 -0
  989. package/types/constants/accessibilityDirectMap.d.ts +6 -0
  990. package/types/constants/accessibilityDirectMap.d.ts.map +1 -0
  991. package/types/constants/accessibilityDirectMap.native.d.ts +6 -0
  992. package/types/constants/accessibilityDirectMap.native.d.ts.map +1 -0
  993. package/types/constants/constants.d.ts +5 -0
  994. package/types/constants/constants.d.ts.map +1 -0
  995. package/types/constants/isDevTools.d.ts +2 -0
  996. package/types/constants/isDevTools.d.ts.map +1 -0
  997. package/types/contexts/ComponentContext.d.ts +4 -0
  998. package/types/contexts/ComponentContext.d.ts.map +1 -0
  999. package/types/contexts/GroupContext.d.ts +3 -0
  1000. package/types/contexts/GroupContext.d.ts.map +1 -0
  1001. package/types/createComponent.d.ts +7 -0
  1002. package/types/createComponent.d.ts.map +1 -0
  1003. package/types/createFont.d.ts +3 -0
  1004. package/types/createFont.d.ts.map +1 -0
  1005. package/types/createHanzogui.d.ts +3 -0
  1006. package/types/createHanzogui.d.ts.map +1 -0
  1007. package/types/createShorthands.d.ts +3 -0
  1008. package/types/createShorthands.d.ts.map +1 -0
  1009. package/types/createTokens.d.ts +22 -0
  1010. package/types/createTokens.d.ts.map +1 -0
  1011. package/types/createVariable.d.ts +22 -0
  1012. package/types/createVariable.d.ts.map +1 -0
  1013. package/types/createVariables.d.ts +10 -0
  1014. package/types/createVariables.d.ts.map +1 -0
  1015. package/types/defaultComponentState.d.ts +5 -0
  1016. package/types/defaultComponentState.d.ts.map +1 -0
  1017. package/types/eventHandling.d.ts +27 -0
  1018. package/types/eventHandling.d.ts.map +1 -0
  1019. package/types/eventHandling.native.d.ts +12 -0
  1020. package/types/eventHandling.native.d.ts.map +1 -0
  1021. package/types/helpers/consoleLog.native.d.ts +7 -0
  1022. package/types/helpers/consoleLog.native.d.ts.map +1 -0
  1023. package/types/helpers/createDesignSystem.d.ts +47 -0
  1024. package/types/helpers/createDesignSystem.d.ts.map +1 -0
  1025. package/types/helpers/createMediaStyle.d.ts +5 -0
  1026. package/types/helpers/createMediaStyle.d.ts.map +1 -0
  1027. package/types/helpers/createStyledContext.d.ts +3 -0
  1028. package/types/helpers/createStyledContext.d.ts.map +1 -0
  1029. package/types/helpers/defaultAnimationDriver.d.ts +3 -0
  1030. package/types/helpers/defaultAnimationDriver.d.ts.map +1 -0
  1031. package/types/helpers/defaultOffset.d.ts +5 -0
  1032. package/types/helpers/defaultOffset.d.ts.map +1 -0
  1033. package/types/helpers/expandStyle.d.ts +7 -0
  1034. package/types/helpers/expandStyle.d.ts.map +1 -0
  1035. package/types/helpers/expandStyles.d.ts +2 -0
  1036. package/types/helpers/expandStyles.d.ts.map +1 -0
  1037. package/types/helpers/getCSSStylesAtomic.d.ts +11 -0
  1038. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -0
  1039. package/types/helpers/getCSSStylesAtomic.native.d.ts +4 -0
  1040. package/types/helpers/getCSSStylesAtomic.native.d.ts.map +1 -0
  1041. package/types/helpers/getDefaultProps.d.ts +3 -0
  1042. package/types/helpers/getDefaultProps.d.ts.map +1 -0
  1043. package/types/helpers/getDynamicVal.d.ts +16 -0
  1044. package/types/helpers/getDynamicVal.d.ts.map +1 -0
  1045. package/types/helpers/getExpandedShorthands.d.ts +7 -0
  1046. package/types/helpers/getExpandedShorthands.d.ts.map +1 -0
  1047. package/types/helpers/getFontLanguage.d.ts +2 -0
  1048. package/types/helpers/getFontLanguage.d.ts.map +1 -0
  1049. package/types/helpers/getGroupPropParts.d.ts +7 -0
  1050. package/types/helpers/getGroupPropParts.d.ts.map +1 -0
  1051. package/types/helpers/getShorthandValue.d.ts +2 -0
  1052. package/types/helpers/getShorthandValue.d.ts.map +1 -0
  1053. package/types/helpers/getSplitStyles.d.ts +13 -0
  1054. package/types/helpers/getSplitStyles.d.ts.map +1 -0
  1055. package/types/helpers/getThemeCSSRules.d.ts +10 -0
  1056. package/types/helpers/getThemeCSSRules.d.ts.map +1 -0
  1057. package/types/helpers/getThemeCSSRules.native.d.ts +2 -0
  1058. package/types/helpers/getThemeCSSRules.native.d.ts.map +1 -0
  1059. package/types/helpers/getTokenForKey.d.ts +6 -0
  1060. package/types/helpers/getTokenForKey.d.ts.map +1 -0
  1061. package/types/helpers/getVariantExtras.d.ts +4 -0
  1062. package/types/helpers/getVariantExtras.d.ts.map +1 -0
  1063. package/types/helpers/insertStyleRule.d.ts +10 -0
  1064. package/types/helpers/insertStyleRule.d.ts.map +1 -0
  1065. package/types/helpers/isActivePlatform.d.ts +16 -0
  1066. package/types/helpers/isActivePlatform.d.ts.map +1 -0
  1067. package/types/helpers/isActiveTheme.d.ts +2 -0
  1068. package/types/helpers/isActiveTheme.d.ts.map +1 -0
  1069. package/types/helpers/isHanzoguiComponent.d.ts +5 -0
  1070. package/types/helpers/isHanzoguiComponent.d.ts.map +1 -0
  1071. package/types/helpers/isHanzoguiElement.d.ts +8 -0
  1072. package/types/helpers/isHanzoguiElement.d.ts.map +1 -0
  1073. package/types/helpers/isObj.d.ts +2 -0
  1074. package/types/helpers/isObj.d.ts.map +1 -0
  1075. package/types/helpers/log.d.ts +2 -0
  1076. package/types/helpers/log.d.ts.map +1 -0
  1077. package/types/helpers/mainThreadPressEvents.d.ts +2 -0
  1078. package/types/helpers/mainThreadPressEvents.d.ts.map +1 -0
  1079. package/types/helpers/mainThreadPressEvents.native.d.ts +9 -0
  1080. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -0
  1081. package/types/helpers/matchMedia.d.ts +6 -0
  1082. package/types/helpers/matchMedia.d.ts.map +1 -0
  1083. package/types/helpers/matchMedia.native.d.ts +4 -0
  1084. package/types/helpers/matchMedia.native.d.ts.map +1 -0
  1085. package/types/helpers/mediaObjectToString.d.ts +3 -0
  1086. package/types/helpers/mediaObjectToString.d.ts.map +1 -0
  1087. package/types/helpers/mediaState.d.ts +7 -0
  1088. package/types/helpers/mediaState.d.ts.map +1 -0
  1089. package/types/helpers/mergeProps.d.ts +20 -0
  1090. package/types/helpers/mergeProps.d.ts.map +1 -0
  1091. package/types/helpers/mergeRenderElementProps.d.ts +7 -0
  1092. package/types/helpers/mergeRenderElementProps.d.ts.map +1 -0
  1093. package/types/helpers/mergeSlotStyleProps.d.ts +10 -0
  1094. package/types/helpers/mergeSlotStyleProps.d.ts.map +1 -0
  1095. package/types/helpers/mergeVariants.d.ts +3 -0
  1096. package/types/helpers/mergeVariants.d.ts.map +1 -0
  1097. package/types/helpers/nativeOnlyProps.d.ts +39 -0
  1098. package/types/helpers/nativeOnlyProps.d.ts.map +1 -0
  1099. package/types/helpers/normalizeColor.d.ts +8 -0
  1100. package/types/helpers/normalizeColor.d.ts.map +1 -0
  1101. package/types/helpers/normalizeColor.native.d.ts +9 -0
  1102. package/types/helpers/normalizeColor.native.d.ts.map +1 -0
  1103. package/types/helpers/normalizeShadow.d.ts +10 -0
  1104. package/types/helpers/normalizeShadow.d.ts.map +1 -0
  1105. package/types/helpers/normalizeShadow.native.d.ts +10 -0
  1106. package/types/helpers/normalizeShadow.native.d.ts.map +1 -0
  1107. package/types/helpers/normalizeStyle.d.ts +9 -0
  1108. package/types/helpers/normalizeStyle.d.ts.map +1 -0
  1109. package/types/helpers/normalizeStylePropKeys.d.ts +2 -0
  1110. package/types/helpers/normalizeStylePropKeys.d.ts.map +1 -0
  1111. package/types/helpers/normalizeStylePropKeys.native.d.ts +13 -0
  1112. package/types/helpers/normalizeStylePropKeys.native.d.ts.map +1 -0
  1113. package/types/helpers/normalizeValueWithProperty.d.ts +6 -0
  1114. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -0
  1115. package/types/helpers/objectIdentityKey.d.ts +2 -0
  1116. package/types/helpers/objectIdentityKey.d.ts.map +1 -0
  1117. package/types/helpers/parseBorderShorthand.d.ts +3 -0
  1118. package/types/helpers/parseBorderShorthand.d.ts.map +1 -0
  1119. package/types/helpers/parseBorderShorthand.native.d.ts +3 -0
  1120. package/types/helpers/parseBorderShorthand.native.d.ts.map +1 -0
  1121. package/types/helpers/parseNativeStyle.d.ts +14 -0
  1122. package/types/helpers/parseNativeStyle.d.ts.map +1 -0
  1123. package/types/helpers/parseOutlineShorthand.d.ts +3 -0
  1124. package/types/helpers/parseOutlineShorthand.d.ts.map +1 -0
  1125. package/types/helpers/parseOutlineShorthand.native.d.ts +3 -0
  1126. package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -0
  1127. package/types/helpers/platformResolveValue.d.ts +6 -0
  1128. package/types/helpers/platformResolveValue.d.ts.map +1 -0
  1129. package/types/helpers/platformResolveValue.native.d.ts +7 -0
  1130. package/types/helpers/platformResolveValue.native.d.ts.map +1 -0
  1131. package/types/helpers/pointerEvents.d.ts +8 -0
  1132. package/types/helpers/pointerEvents.d.ts.map +1 -0
  1133. package/types/helpers/pointerEvents.native.d.ts +2 -0
  1134. package/types/helpers/pointerEvents.native.d.ts.map +1 -0
  1135. package/types/helpers/propMapper.d.ts +5 -0
  1136. package/types/helpers/propMapper.d.ts.map +1 -0
  1137. package/types/helpers/proxyThemeToParents.d.ts +4 -0
  1138. package/types/helpers/proxyThemeToParents.d.ts.map +1 -0
  1139. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  1140. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  1141. package/types/helpers/pseudoDescriptors.d.ts +51 -0
  1142. package/types/helpers/pseudoDescriptors.d.ts.map +1 -0
  1143. package/types/helpers/pseudoTransitions.d.ts +29 -0
  1144. package/types/helpers/pseudoTransitions.d.ts.map +1 -0
  1145. package/types/helpers/registerCSSVariable.d.ts +9 -0
  1146. package/types/helpers/registerCSSVariable.d.ts.map +1 -0
  1147. package/types/helpers/resolveAnimationDriver.d.ts +7 -0
  1148. package/types/helpers/resolveAnimationDriver.d.ts.map +1 -0
  1149. package/types/helpers/resolveCompoundTokens.d.ts +9 -0
  1150. package/types/helpers/resolveCompoundTokens.d.ts.map +1 -0
  1151. package/types/helpers/resolveRem.d.ts +13 -0
  1152. package/types/helpers/resolveRem.d.ts.map +1 -0
  1153. package/types/helpers/resolveRem.native.d.ts +13 -0
  1154. package/types/helpers/resolveRem.native.d.ts.map +1 -0
  1155. package/types/helpers/resolveSafeArea.d.ts +2 -0
  1156. package/types/helpers/resolveSafeArea.d.ts.map +1 -0
  1157. package/types/helpers/resolveSafeArea.native.d.ts +2 -0
  1158. package/types/helpers/resolveSafeArea.native.d.ts.map +1 -0
  1159. package/types/helpers/setElementProps.d.ts +2 -0
  1160. package/types/helpers/setElementProps.d.ts.map +1 -0
  1161. package/types/helpers/setElementProps.native.d.ts +2 -0
  1162. package/types/helpers/setElementProps.native.d.ts.map +1 -0
  1163. package/types/helpers/skipProps.d.ts +19 -0
  1164. package/types/helpers/skipProps.d.ts.map +1 -0
  1165. package/types/helpers/sortString.d.ts +2 -0
  1166. package/types/helpers/sortString.d.ts.map +1 -0
  1167. package/types/helpers/subscribeToContextGroup.d.ts +10 -0
  1168. package/types/helpers/subscribeToContextGroup.d.ts.map +1 -0
  1169. package/types/helpers/themeable.d.ts +3 -0
  1170. package/types/helpers/themeable.d.ts.map +1 -0
  1171. package/types/helpers/themes.d.ts +2 -0
  1172. package/types/helpers/themes.d.ts.map +1 -0
  1173. package/types/helpers/timer.d.ts +2 -0
  1174. package/types/helpers/timer.d.ts.map +1 -0
  1175. package/types/helpers/transformsToString.d.ts +2 -0
  1176. package/types/helpers/transformsToString.d.ts.map +1 -0
  1177. package/types/helpers/useRenderElement.d.ts +13 -0
  1178. package/types/helpers/useRenderElement.d.ts.map +1 -0
  1179. package/types/helpers/webPropsToSkip.d.ts +2 -0
  1180. package/types/helpers/webPropsToSkip.d.ts.map +1 -0
  1181. package/types/helpers/webPropsToSkip.native.d.ts +104 -0
  1182. package/types/helpers/webPropsToSkip.native.d.ts.map +1 -0
  1183. package/types/helpers/wrapStyleTags.d.ts +3 -0
  1184. package/types/helpers/wrapStyleTags.d.ts.map +1 -0
  1185. package/types/hooks/doesRootSchemeMatchSystem.d.ts +2 -0
  1186. package/types/hooks/doesRootSchemeMatchSystem.d.ts.map +1 -0
  1187. package/types/hooks/doesRootSchemeMatchSystem.native.d.ts +2 -0
  1188. package/types/hooks/doesRootSchemeMatchSystem.native.d.ts.map +1 -0
  1189. package/types/hooks/getThemeProxied.d.ts +23 -0
  1190. package/types/hooks/getThemeProxied.d.ts.map +1 -0
  1191. package/types/hooks/useComponentState.d.ts +25 -0
  1192. package/types/hooks/useComponentState.d.ts.map +1 -0
  1193. package/types/hooks/useDisableSSR.d.ts +3 -0
  1194. package/types/hooks/useDisableSSR.d.ts.map +1 -0
  1195. package/types/hooks/useIsTouchDevice.d.ts +2 -0
  1196. package/types/hooks/useIsTouchDevice.d.ts.map +1 -0
  1197. package/types/hooks/useMedia.d.ts +23 -0
  1198. package/types/hooks/useMedia.d.ts.map +1 -0
  1199. package/types/hooks/useProps.d.ts +41 -0
  1200. package/types/hooks/useProps.d.ts.map +1 -0
  1201. package/types/hooks/useTheme.d.ts +9 -0
  1202. package/types/hooks/useTheme.d.ts.map +1 -0
  1203. package/types/hooks/useThemeName.d.ts +3 -0
  1204. package/types/hooks/useThemeName.d.ts.map +1 -0
  1205. package/types/hooks/useThemeState.d.ts +11 -0
  1206. package/types/hooks/useThemeState.d.ts.map +1 -0
  1207. package/types/index.d.ts +77 -0
  1208. package/types/index.d.ts.map +1 -0
  1209. package/types/inject-styles.d.ts +7 -0
  1210. package/types/inject-styles.d.ts.map +1 -0
  1211. package/types/insertFont.d.ts +10 -0
  1212. package/types/insertFont.d.ts.map +1 -0
  1213. package/types/interfaces/CSSColorNames.d.ts +2 -0
  1214. package/types/interfaces/CSSColorNames.d.ts.map +1 -0
  1215. package/types/interfaces/GetRef.d.ts +6 -0
  1216. package/types/interfaces/GetRef.d.ts.map +1 -0
  1217. package/types/interfaces/HanzoguiComponentEvents.d.ts +19 -0
  1218. package/types/interfaces/HanzoguiComponentEvents.d.ts.map +1 -0
  1219. package/types/interfaces/HanzoguiComponentPropsBaseBase.d.ts +95 -0
  1220. package/types/interfaces/HanzoguiComponentPropsBaseBase.d.ts.map +1 -0
  1221. package/types/interfaces/RNExclusiveTypes.d.ts +22 -0
  1222. package/types/interfaces/RNExclusiveTypes.d.ts.map +1 -0
  1223. package/types/setupHooks.d.ts +17 -0
  1224. package/types/setupHooks.d.ts.map +1 -0
  1225. package/types/setupReactNative.d.ts +5 -0
  1226. package/types/setupReactNative.d.ts.map +1 -0
  1227. package/types/styled.d.ts +53 -0
  1228. package/types/styled.d.ts.map +1 -0
  1229. package/types/type-utils.d.ts +13 -0
  1230. package/types/type-utils.d.ts.map +1 -0
  1231. package/types/types.d.ts +1936 -0
  1232. package/types/types.d.ts.map +1 -0
  1233. package/types/views/Configuration.d.ts +10 -0
  1234. package/types/views/Configuration.d.ts.map +1 -0
  1235. package/types/views/FontLanguage.d.ts +6 -0
  1236. package/types/views/FontLanguage.d.ts.map +1 -0
  1237. package/types/views/FontLanguage.native.d.ts +3 -0
  1238. package/types/views/FontLanguage.native.d.ts.map +1 -0
  1239. package/types/views/HanzoguiProvider.d.ts +3 -0
  1240. package/types/views/HanzoguiProvider.d.ts.map +1 -0
  1241. package/types/views/HanzoguiRoot.d.ts +15 -0
  1242. package/types/views/HanzoguiRoot.d.ts.map +1 -0
  1243. package/types/views/HanzoguiRoot.native.d.ts +7 -0
  1244. package/types/views/HanzoguiRoot.native.d.ts.map +1 -0
  1245. package/types/views/Slot.d.ts +13 -0
  1246. package/types/views/Slot.d.ts.map +1 -0
  1247. package/types/views/Text.d.ts +4 -0
  1248. package/types/views/Text.d.ts.map +1 -0
  1249. package/types/views/Theme.d.ts +16 -0
  1250. package/types/views/Theme.d.ts.map +1 -0
  1251. package/types/views/ThemeDebug.d.ts +10 -0
  1252. package/types/views/ThemeDebug.d.ts.map +1 -0
  1253. package/types/views/ThemeDebug.native.d.ts +10 -0
  1254. package/types/views/ThemeDebug.native.d.ts.map +1 -0
  1255. package/types/views/ThemeProvider.d.ts +3 -0
  1256. package/types/views/ThemeProvider.d.ts.map +1 -0
  1257. package/types/views/View.d.ts +8 -0
  1258. package/types/views/View.d.ts.map +1 -0
  1259. package/vitest.config.d.ts +3 -0
  1260. package/vitest.config.d.ts.map +1 -0
  1261. package/vitest.config.ts +14 -0
package/src/types.tsx ADDED
@@ -0,0 +1,3372 @@
1
+ import type { StyleObject } from '@hanzogui/helpers'
2
+ import type { Properties } from 'csstype'
3
+ import type {
4
+ CSSProperties,
5
+ ComponentType,
6
+ Context,
7
+ ForwardRefExoticComponent,
8
+ ForwardRefRenderFunction,
9
+ FunctionComponent,
10
+ HTMLAttributes,
11
+ ProviderExoticComponent,
12
+ ReactNode,
13
+ RefAttributes,
14
+ RefObject,
15
+ } from 'react'
16
+ import type {
17
+ PressableProps,
18
+ Text as RNText,
19
+ TextStyle as RNTextStyle,
20
+ TextProps as ReactTextProps,
21
+ View,
22
+ ViewProps,
23
+ ViewStyle,
24
+ } from 'react-native'
25
+
26
+ import type { CSSColorNames } from './interfaces/CSSColorNames'
27
+ import type { RNOnlyProps } from './interfaces/RNExclusiveTypes'
28
+
29
+ export type SizeKeys =
30
+ | 'width'
31
+ | 'height'
32
+ | 'minWidth'
33
+ | 'minHeight'
34
+ | 'maxWidth'
35
+ | 'maxHeight'
36
+ | 'shadowRadius'
37
+
38
+ export type ColorKeys =
39
+ | 'color'
40
+ | 'backgroundColor'
41
+ | 'borderColor'
42
+ | 'borderBottomColor'
43
+ | 'borderTopColor'
44
+ | 'borderLeftColor'
45
+ | 'borderRightColor'
46
+ | 'shadowColor'
47
+ | 'outlineColor'
48
+ | 'textShadowColor'
49
+ | 'borderBlockColor'
50
+ | 'borderBlockEndColor'
51
+ | 'borderBlockStartColor'
52
+ | 'borderInlineColor'
53
+ | 'borderInlineStartColor'
54
+ | 'borderInlineEndColor'
55
+
56
+ export type SpaceKeys =
57
+ | 'space'
58
+ | 'padding'
59
+ | 'paddingHorizontal'
60
+ | 'paddingVertical'
61
+ | 'paddingLeft'
62
+ | 'paddingTop'
63
+ | 'paddingBottom'
64
+ | 'paddingLeft'
65
+ | 'paddingRight'
66
+ | 'paddingEnd'
67
+ | 'paddingStart'
68
+ | 'margin'
69
+ | 'marginHorizontal'
70
+ | 'marginVertical'
71
+ | 'marginLeft'
72
+ | 'marginTop'
73
+ | 'marginBottom'
74
+ | 'marginLeft'
75
+ | 'marginRight'
76
+ | 'marginEnd'
77
+ | 'marginStart'
78
+ | 'marginBlock'
79
+ | 'marginBlockStart'
80
+ | 'marginBlockEnd'
81
+ | 'marginInline'
82
+ | 'marginInlineStart'
83
+ | 'marginInlineEnd'
84
+ | 'paddingBlock'
85
+ | 'paddingBlockStart'
86
+ | 'paddingBlockEnd'
87
+ | 'paddingInline'
88
+ | 'paddingInlineStart'
89
+ | 'paddingInlineEnd'
90
+ | 'x'
91
+ | 'y'
92
+ | 'gap'
93
+ | 'rowGap'
94
+ | 'columnGap'
95
+ | 'scale'
96
+ | 'scaleX'
97
+ | 'scaleY'
98
+ | 'borderTopEndRadius'
99
+ | 'borderTopLeftRadius'
100
+ | 'borderTopRightRadius'
101
+ | 'borderTopStartRadius'
102
+ | 'borderBottomEndRadius'
103
+ | 'borderBottomLeftRadius'
104
+ | 'borderBottomRightRadius'
105
+ | 'borderBottomStartRadius'
106
+ | 'borderBottomWidth'
107
+ | 'borderLeftWidth'
108
+ | 'borderRadius'
109
+ | 'borderRightWidth'
110
+ | 'borderTopEndRadius'
111
+ | 'borderTopLeftRadius'
112
+ | 'borderTopRightRadius'
113
+ | 'borderEndWidth'
114
+ | 'borderStartWidth'
115
+ | 'borderTopStartRadius'
116
+ | 'borderTopWidth'
117
+ | 'borderWidth'
118
+ | 'left'
119
+ | 'top'
120
+ | 'right'
121
+ | 'bottom'
122
+ | 'shadowOffset'
123
+ | 'borderBlockWidth'
124
+ | 'borderBlockStartWidth'
125
+ | 'borderBlockEndWidth'
126
+ | 'borderInlineWidth'
127
+ | 'borderInlineStartWidth'
128
+ | 'borderInlineEndWidth'
129
+
130
+ export type StyledContext<Props extends Record<string, any> = any> = Context<Props> & {
131
+ context: Context<Props>
132
+ props: Record<string, any> | undefined
133
+ Provider: ProviderExoticComponent<
134
+ Partial<Props | undefined> & {
135
+ children?: ReactNode
136
+ scope?: string
137
+ }
138
+ >
139
+
140
+ useStyledContext: (scope?: string) => Props
141
+ }
142
+
143
+ export type HanzoguiComponentState = {
144
+ unmounted: boolean | 'should-enter'
145
+ disabled?: boolean
146
+ hover?: boolean
147
+ press?: boolean
148
+ pressIn?: boolean
149
+ focus?: boolean
150
+ focusVisible?: boolean
151
+ focusWithin?: boolean
152
+ transition?: null | {
153
+ style?: any
154
+ avoidClasses?: boolean
155
+ }
156
+
157
+ // this is used by the component itself to figure out group styles:
158
+ group?: Record<string, ChildGroupState>
159
+ hasDynGroupChildren?: boolean
160
+ }
161
+
162
+ // from react-native Accessibility.d.ts
163
+
164
+ export type Role =
165
+ | 'alert'
166
+ | 'alertdialog'
167
+ | 'application'
168
+ | 'article'
169
+ | 'banner'
170
+ | 'button'
171
+ | 'cell'
172
+ | 'checkbox'
173
+ | 'columnheader'
174
+ | 'combobox'
175
+ | 'complementary'
176
+ | 'contentinfo'
177
+ | 'definition'
178
+ | 'dialog'
179
+ | 'directory'
180
+ | 'document'
181
+ | 'feed'
182
+ | 'figure'
183
+ | 'form'
184
+ | 'grid'
185
+ | 'group'
186
+ | 'heading'
187
+ | 'img'
188
+ | 'link'
189
+ | 'list'
190
+ | 'listitem'
191
+ | 'log'
192
+ | 'main'
193
+ | 'marquee'
194
+ | 'math'
195
+ | 'menu'
196
+ | 'menubar'
197
+ | 'menuitem'
198
+ | 'meter'
199
+ | 'navigation'
200
+ | 'none'
201
+ | 'note'
202
+ | 'option'
203
+ | 'presentation'
204
+ | 'progressbar'
205
+ | 'radio'
206
+ | 'radiogroup'
207
+ | 'region'
208
+ | 'row'
209
+ | 'rowgroup'
210
+ | 'rowheader'
211
+ | 'scrollbar'
212
+ | 'searchbox'
213
+ | 'separator'
214
+ | 'slider'
215
+ | 'spinbutton'
216
+ | 'status'
217
+ | 'summary'
218
+ | 'switch'
219
+ | 'tab'
220
+ | 'table'
221
+ | 'tablist'
222
+ | 'tabpanel'
223
+ | 'term'
224
+ | 'timer'
225
+ | 'toolbar'
226
+ | 'tooltip'
227
+ | 'tree'
228
+ | 'treegrid'
229
+ | 'treeitem'
230
+
231
+ export type HanzoguiComponentPropsBaseBase = {
232
+ target?: string
233
+
234
+ htmlFor?: string
235
+
236
+ /**
237
+ * When truthy passes through all props to a single child element, and avoids rendering its own element.
238
+ * Must pass just one child React element that will receive all the props.
239
+ *
240
+ * The option "except-style" will avoid passing any style related props.
241
+ *
242
+ * The option "web" will map all React Native style props to web props (onPress becomes onClick).
243
+ *
244
+ * The option "except-style-web" combines the except-style and web options.
245
+ *
246
+ */
247
+ asChild?: boolean | 'except-style' | 'except-style-web' | 'web'
248
+
249
+ dangerouslySetInnerHTML?: { __html: string }
250
+ children?: any | any[]
251
+
252
+ debug?: DebugProp
253
+
254
+ disabled?: boolean
255
+
256
+ /**
257
+ * Same as the web className property, useful for applying styles from CSS on web only
258
+ */
259
+ className?: string
260
+
261
+ /**
262
+ * If given a theme it will only apply to this element, instead of passing down to children
263
+ */
264
+ themeShallow?: boolean
265
+
266
+ /**
267
+ * If true, component themes will not be applied
268
+ */
269
+ unstyled?: boolean
270
+
271
+ /**
272
+ * Same as the web id property for setting a uid on an element
273
+ */
274
+ id?: string
275
+
276
+ /**
277
+ * Controls the rendered element on web.
278
+ * - String: renders as that HTML element (e.g., `render="button"`)
279
+ * - JSX Element: clones element with merged props (e.g., `render={<a href="/" />}`)
280
+ * - Function: full control with props and state (e.g., `render={(props) => <Custom {...props} />}`)
281
+ * @example render="button"
282
+ * @example render={<a href="/" />}
283
+ * @example render={(props, state) => <MyComponent {...props} isPressed={state.press} />}
284
+ */
285
+ render?:
286
+ | keyof HTMLElementTagNameMap
287
+ | (string & {})
288
+ | React.ReactElement
289
+ | ((
290
+ props: Record<string, any> & { ref?: React.Ref<any> },
291
+ state: HanzoguiComponentState
292
+ ) => React.ReactElement)
293
+
294
+ /**
295
+ * Applies a theme to this element
296
+ */
297
+ theme?: ThemeName | null
298
+
299
+ /**
300
+ * Marks this component as a group for use in styling children based on parents named group
301
+ * See: https://hanzogui.dev/docs/intro/props
302
+ */
303
+ group?: GroupNames | boolean
304
+
305
+ /**
306
+ * Works only alongside group, when children of the group are using container based sizing on native you can hide them until parent is measured.
307
+ * See: https://hanzogui.dev/docs/intro/props
308
+ */
309
+ untilMeasured?: 'hide' | 'show'
310
+
311
+ /**
312
+ * Equivalent to "name" property on styled() for automatically applying a theme
313
+ */
314
+ componentName?: string
315
+
316
+ /**
317
+ * Used for controlling the order of focus with keyboard or assistive device enavigation
318
+ * See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
319
+ */
320
+ tabIndex?: string | number
321
+
322
+ /**
323
+ * Equivalent to role="" attribute on web for accessibility
324
+ */
325
+ role?: Role
326
+
327
+ /**
328
+ * Disable all compiler optimization
329
+ */
330
+ disableOptimization?: boolean
331
+
332
+ /**
333
+ * Forces the pseudo style state to be on
334
+ */
335
+ forceStyle?: 'hover' | 'press' | 'focus' | 'focusVisible' | 'focusWithin'
336
+
337
+ /**
338
+ * Disables className output of styles, instead using only inline styles
339
+ */
340
+ disableClassName?: boolean
341
+
342
+ /**
343
+ * Adds some area outside the typical bounds of the component for touch actions to register.
344
+ * Hanzogui uses Pressable internally so it supports `number | Insets` rather than just `Insets`
345
+ */
346
+ hitSlop?: number | Insets | null
347
+
348
+ /**
349
+ * Select which animation driver to use for this component.
350
+ * Pass a string key matching a driver registered in the `animations` config.
351
+ * Example: `<View animatedBy="spring">` when config has `animations: { default: css, spring: moti }`
352
+ */
353
+ animatedBy?: AnimationDriverKeys | null
354
+ }
355
+
356
+ export interface Insets {
357
+ top?: number
358
+ left?: number
359
+ bottom?: number
360
+ right?: number
361
+ }
362
+
363
+ export interface WebOnlyPressEvents {
364
+ onPress?: PressableProps['onPress']
365
+ onLongPress?: PressableProps['onLongPress']
366
+ onPressIn?: PressableProps['onPress']
367
+ onPressOut?: PressableProps['onPress']
368
+ onMouseEnter?: DivAttributes['onMouseEnter']
369
+ onMouseLeave?: DivAttributes['onMouseLeave']
370
+ onMouseDown?: DivAttributes['onMouseDown']
371
+ onMouseUp?: DivAttributes['onMouseUp']
372
+ onMouseMove?: DivAttributes['onMouseMove']
373
+ onMouseOver?: DivAttributes['onMouseOver']
374
+ onMouseOut?: DivAttributes['onMouseOut']
375
+ onFocus?: DivAttributes['onFocus']
376
+ onBlur?: DivAttributes['onBlur']
377
+ onClick?: DivAttributes['onClick']
378
+ onDoubleClick?: DivAttributes['onDoubleClick']
379
+ onContextMenu?: DivAttributes['onContextMenu']
380
+ onWheel?: DivAttributes['onWheel']
381
+
382
+ // Keyboard events
383
+ onKeyDown?: DivAttributes['onKeyDown']
384
+ onKeyUp?: DivAttributes['onKeyUp']
385
+
386
+ // Input/Change events
387
+ onChange?: DivAttributes['onChange']
388
+ onInput?: DivAttributes['onInput']
389
+ onBeforeInput?: DivAttributes['onBeforeInput']
390
+
391
+ // Scroll
392
+ onScroll?: DivAttributes['onScroll']
393
+
394
+ // Clipboard
395
+ onCopy?: DivAttributes['onCopy']
396
+ onCut?: DivAttributes['onCut']
397
+ onPaste?: DivAttributes['onPaste']
398
+
399
+ // Drag and drop
400
+ onDrag?: DivAttributes['onDrag']
401
+ onDragStart?: DivAttributes['onDragStart']
402
+ onDragEnd?: DivAttributes['onDragEnd']
403
+ onDragEnter?: DivAttributes['onDragEnter']
404
+ onDragLeave?: DivAttributes['onDragLeave']
405
+ onDragOver?: DivAttributes['onDragOver']
406
+ onDrop?: DivAttributes['onDrop']
407
+
408
+ // Pointer events
409
+ onPointerDown?: DivAttributes['onPointerDown']
410
+ onPointerMove?: DivAttributes['onPointerMove']
411
+ onPointerUp?: DivAttributes['onPointerUp']
412
+ onPointerCancel?: DivAttributes['onPointerCancel']
413
+ }
414
+
415
+ export type { MediaStyleObject, StyleObject } from '@hanzogui/helpers'
416
+
417
+ type FontFamilies = FontTokens extends `$${infer Token}` ? Token : never
418
+
419
+ export type LanguageContextType = Partial<{
420
+ [key in FontFamilies]: FontLanguages | 'default'
421
+ }>
422
+
423
+ export type FontLanguageProps = LanguageContextType & {
424
+ children?: React.ReactNode
425
+ }
426
+
427
+ export type ThemeProviderProps = {
428
+ className?: string
429
+ defaultTheme: string | null | undefined
430
+ /** @deprecated moved to createHanzogui({ settings: { disableRootThemeClass } }) */
431
+ disableRootThemeClass?: boolean
432
+ /** @deprecated moved to createHanzogui({ settings: { themeClassNameOnRoot } }) */
433
+ themeClassNameOnRoot?: boolean
434
+ children?: any
435
+ reset?: boolean
436
+ }
437
+
438
+ export type ThemeState = {
439
+ id: string
440
+ name: string
441
+ theme: ThemeParsed
442
+ parentName?: string
443
+ isInverse?: boolean
444
+ isNew?: boolean
445
+ parentId?: string
446
+ scheme?: 'light' | 'dark'
447
+ }
448
+
449
+ export interface Variable<A = any> {
450
+ isVar: true
451
+ variable?: string
452
+ val: A
453
+ name: string
454
+ key: string
455
+ needsPx?: boolean // Flag to indicate this token should get px units
456
+ }
457
+
458
+ export type MakeVariable<A = any> = A extends string | number ? Variable<A> : A
459
+
460
+ /**
461
+ * Type for the px helper object that indicates a token value needs px units
462
+ */
463
+ export interface PxValue {
464
+ val: number
465
+ needsPx: true
466
+ }
467
+
468
+ export type ColorScheme = 'light' | 'dark'
469
+
470
+ export type IsMediaType = boolean | 'platform' | 'theme' | 'group'
471
+
472
+ export type MaybeHanzoguiComponent<A = any> = HanzoguiComponent<A> | React.FC<A>
473
+
474
+ type MeasureOnSuccessCallback = (
475
+ x: number,
476
+ y: number,
477
+ width: number,
478
+ height: number,
479
+ pageX: number,
480
+ pageY: number
481
+ ) => void
482
+
483
+ type MeasureInWindowOnSuccessCallback = (
484
+ x: number,
485
+ y: number,
486
+ width: number,
487
+ height: number
488
+ ) => void
489
+
490
+ type MeasureLayoutOnSuccessCallback = (
491
+ left: number,
492
+ top: number,
493
+ width: number,
494
+ height: number
495
+ ) => void
496
+
497
+ /**
498
+ * Methods added to element refs that work across web and native.
499
+ * On web these are added at runtime to HTMLElements.
500
+ * On native these exist on View already.
501
+ */
502
+ export interface HanzoguiElementMethods {
503
+ measure(callback: MeasureOnSuccessCallback): void
504
+ measureInWindow(callback: MeasureInWindowOnSuccessCallback): void
505
+ measureLayout(
506
+ relativeToNativeNode: View | HTMLElement,
507
+ onSuccess: MeasureLayoutOnSuccessCallback,
508
+ onFail?: () => void
509
+ ): void
510
+ focus(): void
511
+ blur(): void
512
+ }
513
+
514
+ /**
515
+ * Cross-platform element ref type. On web, includes HanzoguiElementMethods
516
+ * (measure, focus, blur) which Hanzogui adds at runtime. On native, View
517
+ * already has these via NativeMethods.
518
+ */
519
+ export type HanzoguiElement = (HTMLElement & HanzoguiElementMethods) | View
520
+ export type HanzoguiTextElement = (HTMLElement & HanzoguiElementMethods) | RNText
521
+
522
+ /**
523
+ * Web-specific element type for platform-specific .tsx files.
524
+ * Use when you need HTMLElement subtype properties (e.g., selectionStart on HTMLInputElement)
525
+ * that aren't on the cross-platform HanzoguiElement type.
526
+ *
527
+ * @example
528
+ * const ref = useRef<HanzoguiWebElement<HTMLInputElement>>(null)
529
+ * // ref.current has both HTMLInputElement props and HanzoguiElementMethods
530
+ */
531
+ export type HanzoguiWebElement<T extends HTMLElement = HTMLElement> = T &
532
+ HanzoguiElementMethods
533
+
534
+ export type DebugProp = boolean | 'break' | 'verbose' | 'visualize' | 'profile'
535
+
536
+ export interface HanzoguiComponentPropsBase
537
+ extends HanzoguiComponentPropsBaseBase, WebOnlyPressEvents {}
538
+
539
+ /**
540
+ * For static / studio
541
+ */
542
+
543
+ type NameToPaths = {
544
+ [key: string]: Set<string>
545
+ }
546
+
547
+ export type LoadedComponents = {
548
+ moduleName: string
549
+ nameToInfo: Record<
550
+ string,
551
+ {
552
+ staticConfig: StaticConfig
553
+ }
554
+ >
555
+ }
556
+
557
+ export type HanzoguiProjectInfo = {
558
+ components: LoadedComponents[]
559
+ hanzoguiConfig: HanzoguiInternalConfig
560
+ nameToPaths: NameToPaths
561
+ }
562
+
563
+ // base props that are accepted by createComponent (additional to react-native-web)
564
+
565
+ export type DivAttributes = HTMLAttributes<HTMLDivElement>
566
+
567
+ export type ReactComponentWithRef<Props, Ref> = ForwardRefExoticComponent<
568
+ Props & RefAttributes<Ref>
569
+ >
570
+
571
+ // needs to be cb style for subscribeToContextGroup to be able to poke through to last state
572
+ export type ComponentSetStateShallow = React.Dispatch<
573
+ React.SetStateAction<Partial<HanzoguiComponentState>>
574
+ >
575
+
576
+ export type ComponentContextI = {
577
+ disableSSR?: boolean
578
+ inText: boolean
579
+ language: LanguageContextType | null
580
+ animationDriver: AnimationDriver | null
581
+ setParentFocusState: ComponentSetStateShallow | null
582
+ mediaEmit?: (state: UseMediaState) => void
583
+ mediaEmitListeners?: Set<(state: UseMediaState) => void>
584
+ insets?: { top: number; right: number; bottom: number; left: number } | null
585
+ }
586
+
587
+ export type HanzoguiComponentStateRef = {
588
+ startedUnhydrated: boolean
589
+
590
+ host?: HanzoguiElement
591
+ composedRef?: (x: HanzoguiElement) => void
592
+ willHydrate?: boolean
593
+ hasMeasured?: boolean
594
+ hasAnimated?: boolean
595
+ themeShallow?: boolean
596
+ hasEverThemed?: boolean | 'wrapped'
597
+ hasEverResetPresence?: boolean
598
+ hasHadEvents?: boolean
599
+ isListeningToTheme?: boolean
600
+ unPress?: Function
601
+ setStateShallow?: ComponentSetStateShallow
602
+ useStyleListener?: UseStyleListener
603
+ updateStyleListener?: () => void
604
+
605
+ // this is only used by group="" components
606
+ // sets up a context object to track current state + emit
607
+ group?: ComponentGroupEmitter
608
+
609
+ // avoid re-render animation support
610
+ nextState?: HanzoguiComponentState
611
+ nextMedia?: UseMediaState
612
+
613
+ // cleanup function for media emit listener
614
+ mediaEmitCleanup?: () => void
615
+
616
+ // previous pseudo state for detecting enter vs exit transitions
617
+ prevPseudoState?: {
618
+ hover?: boolean
619
+ press?: boolean
620
+ focus?: boolean
621
+ groups?: Record<string, { hover?: boolean; press?: boolean; focus?: boolean }>
622
+ }
623
+ }
624
+
625
+ export type ComponentGroupEmitter = {
626
+ listeners: Set<GroupStateListener>
627
+ emit: GroupStateListener
628
+ subscribe: (cb: GroupStateListener) => () => void
629
+ }
630
+
631
+ export type WidthHeight = {
632
+ width: number
633
+ height: number
634
+ }
635
+
636
+ export type ChildGroupState = {
637
+ pseudo?: PseudoGroupState
638
+ media?: Record<MediaQueryKey extends number ? never : MediaQueryKey, boolean>
639
+ }
640
+
641
+ export type ComponentGroupState = {
642
+ pseudo?: PseudoGroupState
643
+ layout?: WidthHeight
644
+ }
645
+
646
+ export type GroupStateListener = (state: ComponentGroupState) => void
647
+
648
+ export type SingleGroupContext = {
649
+ subscribe: (cb: GroupStateListener) => DisposeFn
650
+ state: ComponentGroupState
651
+ }
652
+
653
+ export type AllGroupContexts = {
654
+ [GroupName: string]: SingleGroupContext
655
+ }
656
+
657
+ export type PseudoGroupState = Pick<
658
+ HanzoguiComponentState,
659
+ 'disabled' | 'hover' | 'press' | 'pressIn' | 'focus' | 'focusVisible' | 'focusWithin'
660
+ >
661
+
662
+ export type LayoutEvent = {
663
+ nativeEvent: {
664
+ layout: LayoutValue
665
+ target: any
666
+ }
667
+ timeStamp: number
668
+ }
669
+
670
+ type LayoutValue = {
671
+ x: number
672
+ y: number
673
+ width: number
674
+ height: number
675
+ left: number
676
+ top: number
677
+ }
678
+
679
+ export type DisposeFn = () => void
680
+
681
+ export type ConfigListener = (conf: HanzoguiInternalConfig) => void
682
+
683
+ // to prevent things from going circular, hoisting some types in this file
684
+ // to generally order them as building up towards HanzoguiConfig
685
+
686
+ export type VariableVal = number | string | Variable | VariableValGeneric | PxValue
687
+ export type VariableColorVal = string | Variable
688
+
689
+ type GenericKey = string
690
+
691
+ export type CreateTokens<Val extends VariableVal = VariableVal> = Record<
692
+ string,
693
+ { [key: GenericKey]: Val }
694
+ > & {
695
+ color?: { [key: GenericKey]: Val }
696
+ space?: { [key: GenericKey]: Val }
697
+ size?: { [key: GenericKey]: Val }
698
+ radius?: { [key: GenericKey]: Val }
699
+ zIndex?: { [key: GenericKey]: Val }
700
+ }
701
+
702
+ export type TokenCategories = 'color' | 'space' | 'size' | 'radius' | 'zIndex'
703
+
704
+ type Tokenify<A extends GenericTokens> = Omit<
705
+ {
706
+ [Key in keyof A]: TokenifyRecord<A[Key]>
707
+ },
708
+ TokenCategories
709
+ > & {
710
+ color: TokenifyRecord<A extends { color: any } ? A['color'] : {}>
711
+ space: TokenifyRecord<A extends { space: any } ? A['space'] : {}>
712
+ size: TokenifyRecord<A extends { size: any } ? A['size'] : {}>
713
+ radius: TokenifyRecord<A extends { radius: any } ? A['radius'] : {}>
714
+ zIndex: TokenifyRecord<A extends { zIndex: any } ? A['zIndex'] : {}>
715
+ }
716
+
717
+ type TokenifyRecord<A extends object> = {
718
+ [Key in keyof A]: CoerceToVariable<A[Key]>
719
+ }
720
+
721
+ type CoerceToVariable<A> = A extends Variable ? A : Variable<A>
722
+
723
+ export type HanzoguiBaseTheme = {
724
+ // defined for our hanzogui kit , we could do this inside `hanzogui`
725
+ // but maybe helpful to have some sort of universally shared things +
726
+ // + enforce if they want their own, redefine in their design sys
727
+ background: VariableColorVal
728
+ backgroundHover: VariableColorVal
729
+ backgroundPress: VariableColorVal
730
+ backgroundFocus: VariableColorVal
731
+ color: VariableColorVal
732
+ colorHover: VariableColorVal
733
+ colorPress: VariableColorVal
734
+ colorFocus: VariableColorVal
735
+ borderColor: VariableColorVal
736
+ borderColorHover: VariableColorVal
737
+ borderColorPress: VariableColorVal
738
+ borderColorFocus: VariableColorVal
739
+ shadowColor: VariableColorVal
740
+ shadowColorHover: VariableColorVal
741
+ shadowColorPress: VariableColorVal
742
+ shadowColorFocus: VariableColorVal
743
+ }
744
+
745
+ export type VariableValGeneric = { __generic: 1 }
746
+
747
+ type GenericTokens = CreateTokens
748
+ type GenericThemes = {
749
+ [key: string]: Partial<HanzoguiBaseTheme> & {
750
+ [key: string]: VariableVal
751
+ }
752
+ }
753
+
754
+ export type CreateShorthands = {
755
+ // for some reason using keyof ViewStyle here will cause type circularity on react native 0.71
756
+ [key: string]: string
757
+ }
758
+
759
+ export type GenericShorthands = {}
760
+
761
+ // sm: { minWidth: 100 }
762
+ type GenericMedia = {
763
+ [key: string]: {
764
+ [key: string]: number | string
765
+ }
766
+ }
767
+
768
+ export type GenericFonts = Record<string, GenericFont>
769
+
770
+ type GenericAnimations = {
771
+ [key: string]:
772
+ | string
773
+ | {
774
+ [key: string]: any
775
+ }
776
+ | any[]
777
+ }
778
+
779
+ // this is the "main" typed object, which users re-define
780
+ // (internal) keep all types directly on this object and reference them from elsewhere
781
+ //
782
+ // const config = createHanzogui(...)
783
+ // type MyConfig = typeof config
784
+ // declare module 'hanzogui' {
785
+ // export interface HanzoguiCustomConfig extends MyConfig {}
786
+ // }
787
+ // now your whole app/kit should be typed correctly
788
+ //
789
+ export interface HanzoguiCustomConfig {}
790
+
791
+ export interface HanzoguiConfig
792
+ extends Omit<GenericHanzoguiConfig, keyof HanzoguiCustomConfig>, HanzoguiCustomConfig {}
793
+
794
+ export type OnlyAllowShorthandsSetting = HanzoguiConfig['settings'] extends {
795
+ onlyAllowShorthands: infer X
796
+ }
797
+ ? X
798
+ : false
799
+
800
+ export type OnlyShorthandStylePropsSetting = HanzoguiConfig['settings'] extends {
801
+ onlyShorthandStyleProps: infer X
802
+ }
803
+ ? X
804
+ : false
805
+
806
+ export type CreateHanzoguiConfig<
807
+ A extends GenericTokens,
808
+ B extends GenericThemes,
809
+ C extends GenericShorthands = GenericShorthands,
810
+ D extends GenericMedia = GenericMedia,
811
+ E extends GenericAnimations = GenericAnimations,
812
+ F extends GenericFonts = GenericFonts,
813
+ H extends GenericHanzoguiSettings = GenericHanzoguiSettings,
814
+ // preserve the raw animation driver keys ('default' | 'css' | etc)
815
+ // defaults to string so generic HanzoguiInternalConfig accepts any driver keys
816
+ AnimDriverKeys extends string = string,
817
+ > = {
818
+ fonts: RemoveLanguagePostfixes<F>
819
+ fontLanguages: GetLanguagePostfixes<F> extends never
820
+ ? string[]
821
+ : GetLanguagePostfixes<F>[]
822
+ tokens: A
823
+ // parsed
824
+ themes: {
825
+ [Name in keyof B]: {
826
+ [Key in keyof B[Name]]: CoerceToVariable<B[Name][Key]>
827
+ }
828
+ }
829
+ shorthands: C
830
+ media: D
831
+ // Support both single driver and multi-driver config
832
+ // Multi-driver: { default: cssDriver, spring: motiDriver }
833
+ // Single: AnimationDriver<E>
834
+ animations: AnimationDriver<E> | AnimationsConfigObject
835
+ // phantom type for preserving driver keys - never set at runtime, only for type inference
836
+ animationDriverKeys?: AnimDriverKeys
837
+ settings: H
838
+ }
839
+
840
+ type GetLanguagePostfix<Set> = Set extends string
841
+ ? Set extends `${string}_${infer Postfix}`
842
+ ? Postfix
843
+ : never
844
+ : never
845
+
846
+ type OmitLanguagePostfix<Set> = Set extends string
847
+ ? Set extends `${infer Prefix}_${string}`
848
+ ? Prefix
849
+ : Set
850
+ : never
851
+
852
+ type RemoveLanguagePostfixes<F extends GenericFonts> = {
853
+ [Key in OmitLanguagePostfix<keyof F>]: F[Key]
854
+ }
855
+
856
+ type GetLanguagePostfixes<F extends GenericFonts> = GetLanguagePostfix<keyof F>
857
+
858
+ // test RemoveLanguagePostfixes
859
+ // type x = CreateHanzoguiConfig<any, any, any, any, any, {
860
+ // body: any,
861
+ // body_en: any
862
+ // }>['fonts']
863
+
864
+ type ConfProps<A, B, C, D, E, F, I> = {
865
+ tokens?: A
866
+ themes?: B
867
+ shorthands?: C
868
+ media?: D
869
+ animations?: E
870
+ fonts?: F
871
+ settings?: I
872
+ }
873
+
874
+ type EmptyTokens = {
875
+ color: {}
876
+ space: {}
877
+ size: {}
878
+ radius: {}
879
+ zIndex: {}
880
+ }
881
+ type EmptyThemes = {}
882
+ type EmptyShorthands = {}
883
+ type EmptyMedia = {}
884
+ type EmptyAnimations = {}
885
+ type EmptyFonts = {}
886
+
887
+ type EmptyHanzoguiSettings = {
888
+ allowedStyleValues: false
889
+ autocompleteSpecificTokens: 'except-special'
890
+ }
891
+
892
+ // Helper to extract animation config from AnimationDriver<Config> or multi-driver object
893
+ type ExtractAnimationConfig<E> =
894
+ E extends AnimationDriver<infer Config>
895
+ ? Config
896
+ : E extends { default: AnimationDriver<infer Config> }
897
+ ? Config
898
+ : E extends GenericAnimations
899
+ ? E
900
+ : EmptyAnimations
901
+
902
+ // Helper to extract animation driver keys from raw animations prop
903
+ // Single driver: returns 'default'
904
+ // Multi-driver { default: x, css: y }: returns 'default' | 'css'
905
+ type ExtractAnimationDriverKeys<E> =
906
+ E extends AnimationDriver<any>
907
+ ? 'default'
908
+ : E extends { default: AnimationDriver<any> }
909
+ ? Extract<keyof E, string>
910
+ : 'default'
911
+
912
+ export type InferHanzoguiConfig<Conf> =
913
+ Conf extends ConfProps<infer A, infer B, infer C, infer D, infer E, infer F, infer H>
914
+ ? HanzoguiInternalConfig<
915
+ A extends GenericTokens ? A : EmptyTokens,
916
+ B extends GenericThemes ? B : EmptyThemes,
917
+ C extends GenericShorthands ? C : EmptyShorthands,
918
+ D extends GenericMedia ? D : EmptyMedia,
919
+ ExtractAnimationConfig<E>,
920
+ F extends GenericFonts ? F : EmptyFonts,
921
+ H extends GenericHanzoguiSettings ? H : EmptyHanzoguiSettings,
922
+ ExtractAnimationDriverKeys<E>
923
+ >
924
+ : unknown
925
+
926
+ // for use in creation functions so it doesnt get overwritten
927
+ export type GenericHanzoguiConfig = CreateHanzoguiConfig<
928
+ GenericTokens,
929
+ GenericThemes,
930
+ GenericShorthands,
931
+ GenericMedia,
932
+ GenericAnimations,
933
+ GenericFonts
934
+ >
935
+
936
+ // try and find the top level types as they can be supersets:
937
+ type NonSubThemeNames<A extends string | number> = A extends `${string}_${string}`
938
+ ? never
939
+ : A
940
+ type BaseThemeDefinitions = HanzoguiConfig['themes'][NonSubThemeNames<
941
+ keyof HanzoguiConfig['themes']
942
+ >]
943
+ type GenericThemeDefinition = HanzoguiConfig['themes'][keyof HanzoguiConfig['themes']]
944
+ export type ThemeDefinition = BaseThemeDefinitions extends never
945
+ ? GenericThemeDefinition
946
+ : BaseThemeDefinitions
947
+ export type ThemeKeys = keyof ThemeDefinition
948
+ export type ThemeParsed = {
949
+ [key in ThemeKeys]: CoerceToVariable<ThemeDefinition[key]>
950
+ }
951
+
952
+ export type Tokens = HanzoguiConfig['tokens']
953
+
954
+ export type TokensParsed = {
955
+ [Key in keyof Required<Tokens>]: TokenPrefixed<Tokens[Key]>
956
+ }
957
+
958
+ type TokenPrefixed<A extends { [key: string]: any }> = {
959
+ [Key in Ensure$Prefix<keyof A> | keyof A]: A[keyof A]
960
+ }
961
+
962
+ type Ensure$Prefix<A extends string | number | symbol> = A extends
963
+ | string
964
+ | number
965
+ | boolean
966
+ ? A extends `$${string | number}`
967
+ ? A
968
+ : `$${A}`
969
+ : never
970
+
971
+ export type TokensMerged = TokensParsed & Tokens
972
+
973
+ export type Shorthands = HanzoguiConfig['shorthands']
974
+ export type Media = HanzoguiConfig['media']
975
+ export type Themes = HanzoguiConfig['themes']
976
+ export type ThemeName = Exclude<GetAltThemeNames<keyof Themes>, number>
977
+ export type ThemeTokens = `$${ThemeKeys}`
978
+ // Animation names (slow, fast, bouncy) for the `transition` prop
979
+ // Extract animation keys from the driver's `animations` property
980
+ // The AnimationDriver<Config> has an `animations: Config` property
981
+ // Use Extract<keyof A, string> to filter out number/symbol keys from fallback case
982
+ type GetAnimationsFromDriver<T> = T extends { animations: infer A }
983
+ ? Extract<keyof A, string>
984
+ : never
985
+
986
+ // For multi-driver configs like { default: AnimationDriver, css: AnimationDriver }
987
+ // Extract from the 'default' driver or first driver found
988
+ type GetAnimationsFromMultiDriver<T> = T extends { default: infer D }
989
+ ? GetAnimationsFromDriver<D>
990
+ : T extends { [key: string]: infer D }
991
+ ? GetAnimationsFromDriver<D>
992
+ : never
993
+
994
+ // Extract just the AnimationDriver from the union (excluding AnimationsConfigObject)
995
+ type ExtractDriver<T> = Extract<T, AnimationDriver<any>>
996
+
997
+ // Main extraction - use Extract to get AnimationDriver from union, then get keys
998
+ type InferredTransitionKeys =
999
+ ExtractDriver<HanzoguiConfig['animations']> extends AnimationDriver<any>
1000
+ ? GetAnimationsFromDriver<ExtractDriver<HanzoguiConfig['animations']>>
1001
+ : GetAnimationsFromMultiDriver<HanzoguiConfig['animations']>
1002
+
1003
+ export type TransitionKeys = InferredTransitionKeys
1004
+
1005
+ // Driver keys (default, css, spring) for the `animatedBy` prop
1006
+ // Gets driver keys directly from HanzoguiConfig.animationDriverKeys
1007
+ // Falls back to 'default' only when HanzoguiCustomConfig is empty (no augmentation)
1008
+ // The Exclude<X, undefined> handles optional property, then we intersect with string
1009
+ // to ensure only string keys (not symbols/numbers)
1010
+ export type AnimationDriverKeys =
1011
+ | 'default'
1012
+ | Extract<Exclude<HanzoguiConfig['animationDriverKeys'], undefined>, string>
1013
+ // add TypeOverride keys for lazy-loaded drivers
1014
+ | (ReturnType<TypeOverride['animationDrivers']> extends 1
1015
+ ? never
1016
+ : ReturnType<TypeOverride['animationDrivers']>)
1017
+
1018
+ export type FontLanguages = ArrayIntersection<HanzoguiConfig['fontLanguages']>
1019
+
1020
+ export interface ThemeProps {
1021
+ className?: string
1022
+ name?: Exclude<ThemeName, number> | null
1023
+ componentName?: string
1024
+ children?: any
1025
+ reset?: boolean
1026
+ debug?: DebugProp
1027
+ // on the web, for portals we need to re-insert className
1028
+ forceClassName?: boolean
1029
+
1030
+ // used internally for shallow themes
1031
+ shallow?: boolean
1032
+ }
1033
+
1034
+ // more low level
1035
+ export type UseThemeWithStateProps = ThemeProps & {
1036
+ deopt?: boolean
1037
+ passThrough?: boolean
1038
+ disable?: boolean
1039
+ needsUpdate?: () => boolean
1040
+ unstyled?: boolean
1041
+ }
1042
+
1043
+ type ArrayIntersection<A extends any[]> = A[keyof A]
1044
+
1045
+ type GetAltThemeNames<S> =
1046
+ | (S extends `${infer Theme}_${infer Alt}` ? Theme | GetAltThemeNames<Alt> : S)
1047
+ | S
1048
+
1049
+ type AllowedValueSettingBase =
1050
+ | boolean
1051
+ | 'strict'
1052
+ | 'somewhat-strict'
1053
+ | 'strict-web'
1054
+ | 'somewhat-strict-web'
1055
+
1056
+ type AllowedStyleValuesSettingSize = AllowedValueSettingBase | 'number' | 'percent'
1057
+ type AllowedStyleValuesSettingZIndex = AllowedValueSettingBase | 'number'
1058
+ type AllowedStyleValuesSettingRadius = AllowedValueSettingBase | 'number'
1059
+ type AllowedStyleValuesSettingColor = AllowedValueSettingBase | 'named'
1060
+
1061
+ type AllowedStyleValuesSettingPerCategory = {
1062
+ space?: AllowedStyleValuesSettingSize
1063
+ size?: AllowedStyleValuesSettingSize
1064
+ radius?: AllowedStyleValuesSettingRadius
1065
+ zIndex?: AllowedStyleValuesSettingZIndex
1066
+ color?: AllowedStyleValuesSettingColor
1067
+ }
1068
+
1069
+ type AllowedStyleValuesSetting =
1070
+ | AllowedValueSettingBase
1071
+ | AllowedStyleValuesSettingPerCategory
1072
+
1073
+ type AutocompleteSpecificTokensSetting = boolean | 'except-special'
1074
+
1075
+ export interface GenericHanzoguiSettings {
1076
+ /**
1077
+ * When true, flexBasis will be set to 0 when flex is positive. This will be
1078
+ * the default in v2 of Hanzogui alongside an alternative mode for web compat.
1079
+ */
1080
+ styleCompat?: 'react-native' | 'legacy'
1081
+
1082
+ // TODO
1083
+ /**
1084
+ * When true, Hanzogui will always prefer a more specific style prop over a
1085
+ * less specific one.
1086
+ *
1087
+ * By default, Hanzogui processes all style props in order of definition on the
1088
+ * object. This is a bit strange to most people, but it gets around many
1089
+ * annoying issues with specificity. You can see our docs on this here:
1090
+ * https://hanzogui.dev/docs/intro/styles#style-order-is-important
1091
+ *
1092
+ * But this can be confusing in simple cases, like when you do:
1093
+ *
1094
+ * <View paddingTop={0} padding={10} />
1095
+ *
1096
+ * This would set paddingTop ultimately to be 10, because padding comes after
1097
+ * paddingTop. When this setting is set to true, paddingTop will always beat
1098
+ * padding, because it is more specific.
1099
+ *
1100
+ * For variants, it will still take the prop order as definitive.
1101
+ *
1102
+ *
1103
+ * @default false
1104
+ */
1105
+ // preferSpecificStyleProps?: boolean
1106
+
1107
+ /**
1108
+ * Set up allowed values on style props, this is only a type-level validation.
1109
+ *
1110
+ * "strict" - only allows tokens for any token-enabled properties "strict-web"
1111
+ * - same as strict but allows for web-specific tokens like auto/inherit
1112
+ * "somewhat-strict" - allow tokens or: for space/size: string% or numbers for
1113
+ * radius: number for zIndex: number for color: named colors or rgba/hsla
1114
+ * strings "somewhat-strict-web" - same as somewhat-strict but allows for
1115
+ * web-specific tokens
1116
+ *
1117
+ * @default false - allows any string (or number for styles that accept
1118
+ * numbers)
1119
+ *
1120
+ */
1121
+ allowedStyleValues?: AllowedStyleValuesSetting
1122
+
1123
+ /**
1124
+ * Set up if "specific tokens" ($color.name) are added to the types where
1125
+ * tokens are allowed. The VSCode autocomplete puts specific tokens above the
1126
+ * regular ones, which leads to worse DX. If true this setting removes the
1127
+ * specific token from types for the defined categories.
1128
+ *
1129
+ * If set to "except-special", specific tokens will autocomplete only if they
1130
+ * don't normally use one of the special token groups: space, size, radius,
1131
+ * zIndex, color.
1132
+ *
1133
+ * @default except-special
1134
+ */
1135
+ autocompleteSpecificTokens?: AutocompleteSpecificTokensSetting
1136
+
1137
+ /**
1138
+ * On iOS, this enables a mode where Hanzogui returns color values using
1139
+ * `DynamicColorIOS` This is a React Native built in feature, you can read the
1140
+ * docs here: https://reactnative.dev/docs/dynamiccolorios
1141
+ *
1142
+ * We're working to make this enabled by default without any setting, but
1143
+ * Hanzogui themes support inversing and/or changing to light/dark at any point
1144
+ * in the tree. We haven't implemented support for either of these cases when
1145
+ * combined with this feature.
1146
+ *
1147
+ * So - as long as you:
1148
+ *
1149
+ * 1. Only use light/dark changes of themes at the root of your app
1150
+ * 2. Always change light/dark alongside the Appearance.colorScheme
1151
+ *
1152
+ * Then this feature is safe to turn on and will significantly speed up
1153
+ * dark/light re-renders.
1154
+ */
1155
+ fastSchemeChange?: boolean
1156
+
1157
+ /**
1158
+ * On Web, this allows changing the behavior of container groups which by
1159
+ * default uses `container-type: inline-size`.
1160
+ */
1161
+ webContainerType?:
1162
+ | 'normal'
1163
+ | 'size'
1164
+ | 'inline-size'
1165
+ | 'inherit'
1166
+ | 'initial'
1167
+ | 'revert'
1168
+ | 'revert-layer'
1169
+
1170
+ /**
1171
+ * Only allow shorthands when enabled. Recommended to be true to avoid having
1172
+ * two ways to style the same property.
1173
+ */
1174
+ onlyAllowShorthands?: boolean | undefined
1175
+
1176
+ /**
1177
+ * Define a default font, for better types and default font on Text
1178
+ */
1179
+ defaultFont?: string
1180
+
1181
+ /**
1182
+ * Web-only: define CSS text-selection styles
1183
+ */
1184
+ selectionStyles?: (theme: Record<string, string>) => null | {
1185
+ backgroundColor?: any
1186
+ color?: any
1187
+ }
1188
+
1189
+ /**
1190
+ * If building a non-server rendered app, set this to true.
1191
+ *
1192
+ * For SSR compatibility on the web, Hanzogui will render once with the settings
1193
+ * from `mediaQueryDefaultActive` set for all media queries. Then, it will render
1194
+ * again after the initial render using the proper media query values. This is so that
1195
+ * hydration will match perfectly with the server.
1196
+ *
1197
+ * Setting disableSSR will avoid this second render by setting the media query state
1198
+ * to the actual browser dimensions on initial load. This is only useful for client-only
1199
+ * apps.
1200
+ *
1201
+ * @default false
1202
+ *
1203
+ */
1204
+ disableSSR?: boolean
1205
+
1206
+ /**
1207
+ * For the first render, determines which media queries are true, this only
1208
+ * affects things on native or on web if you disableSSR, as otherwise Hanzogui
1209
+ * relies on CSS to avoid the need for re-rendering on first render.
1210
+ */
1211
+ mediaQueryDefaultActive?: Record<string, boolean>
1212
+
1213
+ /**
1214
+ * Adds @media(prefers-color-scheme) media queries for dark/light, must be set
1215
+ * true if you are supporting system preference for light and dark mode themes
1216
+ */
1217
+ shouldAddPrefersColorThemes?: boolean
1218
+
1219
+ /**
1220
+ * If you want to style your <body> tag to use theme CSS variables on web, you
1221
+ * must place the theme className onto the body element or above. This will do so.
1222
+ * If disabled, Hanzogui will place the className onto the element rendered by
1223
+ * the HanzoguiProvider
1224
+ *
1225
+ * @default html
1226
+ */
1227
+ addThemeClassName?: 'body' | 'html' | false
1228
+
1229
+ /**
1230
+ * Sets the default position value for all Hanzogui components.
1231
+ * @default 'static'
1232
+ */
1233
+ defaultPosition?: 'static' | 'relative'
1234
+
1235
+ /**
1236
+ * Sets the base font size for rem calculations on native platforms.
1237
+ * On web, browsers use the root font size (typically 16px).
1238
+ * @default 16
1239
+ */
1240
+ remBaseFontSize?: number
1241
+
1242
+ /**
1243
+ * When true, removes the individual longhand style props for border,
1244
+ * outline, and shadow (borderWidth, borderStyle, borderColor,
1245
+ * outlineWidth, outlineStyle, outlineColor, outlineOffset,
1246
+ * shadowColor, shadowOffset, shadowOpacity, shadowRadius) from the
1247
+ * type system, encouraging use of the combined shorthand props instead
1248
+ * (`border`, `outline`, `boxShadow`).
1249
+ *
1250
+ * This avoids specificity issues when mixing shorthand and longhand
1251
+ * props in atomic CSS output.
1252
+ *
1253
+ * Note: this is type-level only - it does not change runtime behavior.
1254
+ *
1255
+ * @default false
1256
+ */
1257
+ onlyShorthandStyleProps?: boolean
1258
+ }
1259
+
1260
+ export type HanzoguiSettings = HanzoguiConfig['settings']
1261
+
1262
+ export type BaseStyleProps = {
1263
+ [Key in keyof TextStylePropsBase]?: TextStyle[Key] | GetThemeValueForKey<Key>
1264
+ } & {
1265
+ [Key in keyof StackStyleBase]?: StackStyle[Key] | GetThemeValueForKey<Key>
1266
+ }
1267
+
1268
+ /**
1269
+ * Animation drivers config - can be a single driver or named drivers object.
1270
+ * If object, must include a 'default' key.
1271
+ */
1272
+ export type AnimationsConfig = AnimationDriver<any> | AnimationsConfigObject
1273
+
1274
+ export type AnimationsConfigObject = {
1275
+ default: AnimationDriver<any>
1276
+ [key: string]: AnimationDriver<any>
1277
+ }
1278
+
1279
+ export type CreateHanzoguiProps = {
1280
+ reactNative?: any
1281
+ shorthands?: CreateShorthands
1282
+ media?: GenericHanzoguiConfig['media']
1283
+ /**
1284
+ * Animation driver(s) configuration.
1285
+ * Can be a single driver or an object of named drivers (must include 'default').
1286
+ * @example
1287
+ * // Single driver
1288
+ * animations: createAnimations({ slow: '...', fast: '...' })
1289
+ * // Multiple named drivers
1290
+ * animations: { default: cssDriver, spring: motiDriver }
1291
+ */
1292
+ animations?: AnimationsConfig
1293
+ fonts?: GenericHanzoguiConfig['fonts']
1294
+ tokens?: GenericHanzoguiConfig['tokens']
1295
+ themes?: {
1296
+ [key: string]: {
1297
+ [key: string]: string | number | Variable
1298
+ }
1299
+ }
1300
+
1301
+ settings?: Partial<GenericHanzoguiSettings>
1302
+
1303
+ /**
1304
+ * Web-only: define text-selection CSS
1305
+ */
1306
+ selectionStyles?: (theme: Record<string, string>) => null | {
1307
+ backgroundColor?: any
1308
+ color?: any
1309
+ }
1310
+
1311
+ defaultProps?: Record<string, any> & {
1312
+ Text?: TextProps
1313
+ View?: StackNonStyleProps & StackStyle
1314
+ }
1315
+ }
1316
+
1317
+ export type GetCSS = (opts?: {
1318
+ separator?: string
1319
+ exclude?: 'themes' | 'design-system' | null
1320
+ sinceLastCall?: boolean
1321
+ }) => string
1322
+
1323
+ // this is the config generated via createHanzogui()
1324
+ export type HanzoguiInternalConfig<
1325
+ A extends GenericTokens = GenericTokens,
1326
+ B extends GenericThemes = GenericThemes,
1327
+ C extends GenericShorthands = GenericShorthands,
1328
+ D extends GenericMedia = GenericMedia,
1329
+ E extends GenericAnimations = GenericAnimations,
1330
+ F extends GenericFonts = GenericFonts,
1331
+ G extends GenericHanzoguiSettings = GenericHanzoguiSettings,
1332
+ // preserve the raw animation driver keys ('default' | 'css' | etc)
1333
+ // defaults to string so generic HanzoguiInternalConfig accepts any driver keys
1334
+ AnimDriverKeys extends string = string,
1335
+ > = Omit<CreateHanzoguiProps, keyof GenericHanzoguiConfig> &
1336
+ Omit<CreateHanzoguiConfig<A, B, C, D, E, F, G, AnimDriverKeys>, 'tokens'> & {
1337
+ // TODO need to make it this but this breaks types, revisit
1338
+ // animations: E //AnimationDriver<E>
1339
+ // with $ prefixes for fast lookups (one time cost at startup vs every render)
1340
+ tokens: Tokenify<A>
1341
+ tokensParsed: Tokenify<A>
1342
+ themeConfig: any
1343
+ fontsParsed: GenericFonts
1344
+ getCSS: GetCSS
1345
+ getNewCSS: GetCSS
1346
+ parsed: boolean
1347
+ inverseShorthands: Record<string, string>
1348
+ userShorthands: C
1349
+ reactNative?: any
1350
+ fontSizeTokens: Set<string>
1351
+ specificTokens: Record<string, Variable>
1352
+ settings: Omit<GenericHanzoguiSettings, keyof G> & G
1353
+ defaultFont?: string
1354
+ defaultFontToken: `${string}`
1355
+ // multi-driver animation config (e.g., { default: motionDriver, css: cssDriver })
1356
+ // used for component-level driver selection via animatedBy prop
1357
+ animationDrivers?: Record<string, AnimationDriver>
1358
+ }
1359
+
1360
+ export type GetAnimationKeys<A extends GenericHanzoguiConfig> = keyof A['animations']
1361
+
1362
+ // prevents const intersections from being clobbered into string, keeping the consts
1363
+ export type UnionableString = string & {}
1364
+ export type UnionableNumber = number & {}
1365
+
1366
+ type GenericFontKey = string | number | symbol
1367
+
1368
+ export type GenericFont<Key extends GenericFontKey = GenericFontKey> = {
1369
+ size: { [key in Key]: number | Variable }
1370
+ family?: string | Variable
1371
+ lineHeight?: Partial<{ [key in Key]: number | Variable }> | undefined
1372
+ letterSpacing?: Partial<{ [key in Key]: number | Variable }> | undefined
1373
+ weight?: Partial<{ [key in Key]: number | string | Variable }> | undefined
1374
+ style?: Partial<{ [key in Key]: RNTextStyle['fontStyle'] | Variable }> | undefined
1375
+ transform?:
1376
+ | Partial<{ [key in Key]: RNTextStyle['textTransform'] | Variable }>
1377
+ | undefined
1378
+ color?: Partial<{ [key in Key]: string | Variable }> | undefined
1379
+ // for native use only, lets you map to alternative fonts
1380
+ face?:
1381
+ | Partial<{
1382
+ [key in FontWeightValues]: { normal?: string; italic?: string }
1383
+ }>
1384
+ | undefined
1385
+ }
1386
+
1387
+ // media
1388
+ export type MediaQueryObject = { [key: string]: string | number | string }
1389
+ export type MediaQueryKey = keyof Media
1390
+ export type MediaPropKeys = `$${MediaQueryKey}`
1391
+ export type MediaQueryState = { [key in MediaQueryKey]: boolean }
1392
+
1393
+ export type ThemeMediaKeys<TK extends keyof Themes = keyof Themes> =
1394
+ `$theme-${TK extends `${string}_${string}` ? never : TK}`
1395
+
1396
+ export type PlatformMediaKeys = `$platform-${AllPlatforms}`
1397
+
1398
+ export interface TypeOverride {
1399
+ groupNames(): 1
1400
+ animationDrivers(): 1
1401
+ }
1402
+
1403
+ export type GroupNames =
1404
+ ReturnType<TypeOverride['groupNames']> extends 1
1405
+ ? never
1406
+ : ReturnType<TypeOverride['groupNames']>
1407
+
1408
+ type ParentMediaStates = 'hover' | 'press' | 'focus' | 'focusVisible' | 'focusWithin'
1409
+
1410
+ export type GroupMediaKeys =
1411
+ | `$group-${GroupNames}`
1412
+ | `$group-${GroupNames}-${ParentMediaStates}`
1413
+ | `$group-${GroupNames}-${MediaQueryKey}`
1414
+ | `$group-${GroupNames}-${MediaQueryKey}-${ParentMediaStates}`
1415
+ | `$group-${ParentMediaStates}`
1416
+ | `$group-${MediaQueryKey}`
1417
+ | `$group-${MediaQueryKey}-${ParentMediaStates}`
1418
+
1419
+ export type WithMediaProps<A> = {
1420
+ [Key in
1421
+ | MediaPropKeys
1422
+ | GroupMediaKeys
1423
+ | ThemeMediaKeys
1424
+ | PlatformMediaKeys]?: Key extends MediaPropKeys
1425
+ ? A & {
1426
+ // TODO we can support $theme- inside media queries here if we change to ThemeMediaKeys | PlatformMediaKeys
1427
+ [Key in PlatformMediaKeys]?: AddWebOnlyStyleProps<A>
1428
+ }
1429
+ : Key extends `$platform-web`
1430
+ ? AddWebOnlyStyleProps<A> & { [Key in MediaPropKeys]?: AddWebOnlyStyleProps<A> }
1431
+ : A & { [Key in MediaPropKeys]?: A }
1432
+ }
1433
+
1434
+ export type AddWebOnlyStyleProps<A> = Partial<CSSProperties> &
1435
+ Partial<WebOnlyValidStyleValues> & {
1436
+ [K in Exclude<keyof A, keyof CSSProperties>]?: A[K]
1437
+ }
1438
+
1439
+ export type WebOnlyValidStyleValues = {
1440
+ position: '-webkit-sticky'
1441
+ }
1442
+
1443
+ export type MediaQueries = {
1444
+ [key in MediaQueryKey]: MediaQueryObject
1445
+ }
1446
+
1447
+ export interface MediaQueryList {
1448
+ addListener(listener?: any): void
1449
+ removeListener(listener?: any): void
1450
+ match?: (query: string, dimensions: { width: number; height: number }) => boolean
1451
+ matches: boolean
1452
+ }
1453
+
1454
+ export type MatchMedia = (query: string) => MediaQueryList
1455
+
1456
+ // createComponent props helpers
1457
+
1458
+ // transition="bouncy"
1459
+ // transition={['bouncy', { }]}
1460
+ // { all: 'name' }
1461
+
1462
+ // TODO can override for better types
1463
+ export type AnimationConfigType = any
1464
+
1465
+ /**
1466
+ * Spring configuration parameters that can override preset defaults.
1467
+ * Use with array syntax: transition={['bouncy', { stiffness: 1000, damping: 70 }]}
1468
+ */
1469
+ export type TransitionSpringConfig = {
1470
+ stiffness?: number
1471
+ damping?: number
1472
+ mass?: number
1473
+ tension?: number
1474
+ friction?: number
1475
+ velocity?: number
1476
+ overshootClamping?: boolean
1477
+ duration?: number
1478
+ bounciness?: number
1479
+ speed?: number
1480
+ }
1481
+
1482
+ export type TransitionProp =
1483
+ | TransitionKeys
1484
+ | ({
1485
+ default?: TransitionKeys
1486
+ enter?: TransitionKeys
1487
+ exit?: TransitionKeys
1488
+ delay?: number
1489
+ } & TransitionSpringConfig & {
1490
+ [key: string]:
1491
+ | TransitionKeys
1492
+ | {
1493
+ type: TransitionKeys
1494
+ [key: string]: any
1495
+ }
1496
+ | number
1497
+ | boolean
1498
+ | undefined
1499
+ })
1500
+ | [
1501
+ TransitionKeys,
1502
+ {
1503
+ delay?: number
1504
+ enter?: TransitionKeys
1505
+ exit?: TransitionKeys
1506
+ } & TransitionSpringConfig & {
1507
+ [key: string]:
1508
+ | TransitionKeys
1509
+ | {
1510
+ type?: TransitionKeys
1511
+ [key: string]: any
1512
+ }
1513
+ | number
1514
+ | boolean
1515
+ | undefined
1516
+ },
1517
+ ]
1518
+
1519
+ /**
1520
+ * Tokens
1521
+ */
1522
+
1523
+ type PercentString = `${string}%` & {}
1524
+ type RemString = `${number}rem`
1525
+
1526
+ type SomewhatSpecificSizeValue = 'auto' | PercentString | RemString | UnionableNumber
1527
+ type SomewhatSpecificSpaceValue = 'auto' | PercentString | RemString | UnionableNumber
1528
+
1529
+ type VariableString = `var(${string})`
1530
+
1531
+ export type SomewhatSpecificColorValue =
1532
+ | CSSColorNames
1533
+ | 'transparent'
1534
+ | (`rgba(${string})` & {})
1535
+ | (`rgb(${string})` & {})
1536
+ | (`hsl(${string})` & {})
1537
+ | (`hsla(${string})` & {})
1538
+ | (`#${string}` & {})
1539
+
1540
+ type WebOnlySizeValue =
1541
+ | `${number}vw`
1542
+ | `${number}dvw`
1543
+ | `${number}lvw`
1544
+ | `${number}svw`
1545
+ | `${number}vh`
1546
+ | `${number}dvh`
1547
+ | `${number}lvh`
1548
+ | `${number}svh`
1549
+ | `calc(${string})`
1550
+ | `min(${string})`
1551
+ | `max(${string})`
1552
+ | 'max-content'
1553
+ | 'min-content'
1554
+
1555
+ type UserAllowedStyleValuesSetting = Exclude<
1556
+ HanzoguiSettings['allowedStyleValues'],
1557
+ undefined
1558
+ >
1559
+
1560
+ export type GetThemeValueSettingForCategory<
1561
+ Cat extends keyof AllowedStyleValuesSettingPerCategory,
1562
+ > = UserAllowedStyleValuesSetting extends AllowedValueSettingBase | undefined
1563
+ ? UserAllowedStyleValuesSetting
1564
+ : UserAllowedStyleValuesSetting extends AllowedStyleValuesSettingPerCategory
1565
+ ? UserAllowedStyleValuesSetting[Cat]
1566
+ : true
1567
+
1568
+ export type GetThemeValueFallbackFor<
1569
+ Setting,
1570
+ StrictValue,
1571
+ SomewhatStrictValue,
1572
+ LooseValue,
1573
+ WebOnlyValue,
1574
+ > = Setting extends 'strict'
1575
+ ? StrictValue
1576
+ : Setting extends 'strict-web'
1577
+ ? StrictValue | WebOnlyValue
1578
+ : Setting extends 'somewhat-strict'
1579
+ ? SomewhatStrictValue
1580
+ : Setting extends 'somewhat-strict-web'
1581
+ ? SomewhatStrictValue | WebOnlyValue
1582
+ : LooseValue
1583
+
1584
+ // the most generic fallback for anything not covered by special values
1585
+ export type ThemeValueFallback =
1586
+ // for backwards compat with overriding the type we make this either UnionableString
1587
+ // or never if they don't define any UserAllowedStyleValuesSetting
1588
+ | (HanzoguiSettings extends { allowedStyleValues: any } ? never : UnionableString)
1589
+ | Variable
1590
+
1591
+ export type AllowedValueSettingSpace = GetThemeValueSettingForCategory<'space'>
1592
+ export type AllowedValueSettingSize = GetThemeValueSettingForCategory<'size'>
1593
+ export type AllowedValueSettingColor = GetThemeValueSettingForCategory<'color'>
1594
+ export type AllowedValueSettingZIndex = GetThemeValueSettingForCategory<'zIndex'>
1595
+ export type AllowedValueSettingRadius = GetThemeValueSettingForCategory<'radius'>
1596
+
1597
+ export type WebStyleValueUniversal = 'unset' | 'inherit' | VariableString
1598
+
1599
+ export type ThemeValueFallbackSpace =
1600
+ | ThemeValueFallback
1601
+ | GetThemeValueFallbackFor<
1602
+ AllowedValueSettingSpace,
1603
+ never,
1604
+ SomewhatSpecificSpaceValue,
1605
+ UnionableString | UnionableNumber,
1606
+ WebStyleValueUniversal | WebOnlySizeValue
1607
+ >
1608
+
1609
+ export type SpaceValue = number | SpaceTokens | ThemeValueFallback
1610
+
1611
+ export type ThemeValueFallbackSize = GetThemeValueFallbackFor<
1612
+ AllowedValueSettingSize,
1613
+ never,
1614
+ SomewhatSpecificSizeValue,
1615
+ UnionableString | UnionableNumber,
1616
+ WebStyleValueUniversal | WebOnlySizeValue
1617
+ >
1618
+
1619
+ export type ThemeValueFallbackColor =
1620
+ | ThemeValueFallback
1621
+ | GetThemeValueFallbackFor<
1622
+ AllowedValueSettingColor,
1623
+ never,
1624
+ SomewhatSpecificColorValue,
1625
+ UnionableString | UnionableNumber,
1626
+ WebStyleValueUniversal
1627
+ >
1628
+
1629
+ export type ThemeValueFallbackRadius =
1630
+ | ThemeValueFallback
1631
+ | GetThemeValueFallbackFor<
1632
+ AllowedValueSettingRadius,
1633
+ never,
1634
+ UnionableNumber,
1635
+ UnionableNumber,
1636
+ WebStyleValueUniversal
1637
+ >
1638
+
1639
+ export type ThemeValueFallbackZIndex =
1640
+ | ThemeValueFallback
1641
+ | GetThemeValueFallbackFor<
1642
+ AllowedValueSettingZIndex,
1643
+ never,
1644
+ UnionableNumber,
1645
+ UnionableNumber,
1646
+ WebStyleValueUniversal
1647
+ >
1648
+
1649
+ export type GetTokenString<A> = A extends `$${string}`
1650
+ ? A
1651
+ : A extends string | number
1652
+ ? `$${A}`
1653
+ : `$${string}`
1654
+
1655
+ export type SpecificTokens<
1656
+ Record = Tokens,
1657
+ RK extends keyof Record = keyof Record,
1658
+ > = RK extends string
1659
+ ? `$${RK}.${keyof Record[RK] extends string | number
1660
+ ? // remove any $ prefix so instead of $size.$sm its $size.sm
1661
+ keyof Record[RK] extends `$${infer X}`
1662
+ ? X
1663
+ : keyof Record[RK]
1664
+ : never}`
1665
+ : never
1666
+
1667
+ // defaults to except-special
1668
+ export type SpecificTokensSpecial = HanzoguiSettings extends {
1669
+ autocompleteSpecificTokens: infer Val
1670
+ }
1671
+ ? Val extends 'except-special' | undefined
1672
+ ? never
1673
+ : SpecificTokens
1674
+ : SpecificTokens
1675
+
1676
+ export type SizeTokens =
1677
+ | SpecificTokensSpecial
1678
+ | ThemeValueFallbackSize
1679
+ | GetTokenString<keyof Tokens['size']>
1680
+
1681
+ export type SpaceTokens =
1682
+ | SpecificTokensSpecial
1683
+ | GetTokenString<keyof Tokens['space']>
1684
+ | ThemeValueFallbackSpace
1685
+
1686
+ export type ColorTokens =
1687
+ | SpecificTokensSpecial
1688
+ | GetTokenString<keyof Tokens['color']>
1689
+ | GetTokenString<keyof ThemeParsed>
1690
+ | CSSColorNames
1691
+
1692
+ export type ZIndexTokens =
1693
+ | SpecificTokensSpecial
1694
+ | GetTokenString<keyof Tokens['zIndex']>
1695
+ | ThemeValueFallbackZIndex
1696
+ | number
1697
+
1698
+ export type RadiusTokens =
1699
+ | SpecificTokensSpecial
1700
+ | GetTokenString<keyof Tokens['radius']>
1701
+ | ThemeValueFallbackRadius
1702
+ | number
1703
+ | RemString
1704
+
1705
+ export type NonSpecificTokens =
1706
+ | GetTokenString<keyof Tokens['radius']>
1707
+ | GetTokenString<keyof Tokens['zIndex']>
1708
+ | GetTokenString<keyof Tokens['color']>
1709
+ | GetTokenString<keyof Tokens['space']>
1710
+ | GetTokenString<keyof Tokens['size']>
1711
+
1712
+ export type Token =
1713
+ | NonSpecificTokens
1714
+ | (HanzoguiSettings extends { autocompleteSpecificTokens: false }
1715
+ ? never
1716
+ : SpecificTokens)
1717
+
1718
+ export type ColorStyleProp = ThemeValueFallbackColor | ColorTokens
1719
+
1720
+ // fonts
1721
+ type DefaultFont = HanzoguiSettings['defaultFont']
1722
+
1723
+ export type Fonts = DefaultFont extends string
1724
+ ? HanzoguiConfig['fonts'][DefaultFont]
1725
+ : never
1726
+
1727
+ export type Font = ParseFont<Fonts>
1728
+
1729
+ export type GetTokenFontKeysFor<
1730
+ A extends
1731
+ | 'size'
1732
+ | 'weight'
1733
+ | 'letterSpacing'
1734
+ | 'family'
1735
+ | 'lineHeight'
1736
+ | 'transform'
1737
+ | 'style'
1738
+ | 'color',
1739
+ > = keyof HanzoguiConfig['fonts']['body'][A]
1740
+
1741
+ export type FontTokens = GetTokenString<keyof HanzoguiConfig['fonts']>
1742
+ export type FontFamilyTokens = GetTokenString<GetTokenFontKeysFor<'family'>>
1743
+ export type FontSizeTokens =
1744
+ | GetTokenString<GetTokenFontKeysFor<'size'>>
1745
+ | number
1746
+ | RemString
1747
+ export type FontLineHeightTokens =
1748
+ | `$${GetTokenFontKeysFor<'lineHeight'>}`
1749
+ | number
1750
+ | RemString
1751
+ export type FontWeightValues =
1752
+ | `${1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}00`
1753
+ | 'bold'
1754
+ | 'normal'
1755
+ export type FontWeightTokens = `$${GetTokenFontKeysFor<'weight'>}` | FontWeightValues
1756
+ export type FontColorTokens = `$${GetTokenFontKeysFor<'color'>}` | number
1757
+ export type FontLetterSpacingTokens =
1758
+ | `$${GetTokenFontKeysFor<'letterSpacing'>}`
1759
+ | number
1760
+ | RemString
1761
+ export type FontStyleTokens =
1762
+ | `$${GetTokenFontKeysFor<'style'>}`
1763
+ | RNTextStyle['fontStyle']
1764
+ export type FontTransformTokens =
1765
+ | `$${GetTokenFontKeysFor<'transform'>}`
1766
+ | RNTextStyle['textTransform']
1767
+
1768
+ export type ParseFont<A extends GenericFont> = {
1769
+ size: TokenPrefixed<A['size']>
1770
+ lineHeight: TokenPrefixedIfExists<A['lineHeight']>
1771
+ letterSpacing: TokenPrefixedIfExists<A['letterSpacing']>
1772
+ weight: TokenPrefixedIfExists<A['weight']>
1773
+ family: TokenPrefixedIfExists<A['family']>
1774
+ style: TokenPrefixedIfExists<A['style']>
1775
+ transform: TokenPrefixedIfExists<A['transform']>
1776
+ color: TokenPrefixedIfExists<A['color']>
1777
+ face: TokenPrefixedIfExists<A['face']>
1778
+ }
1779
+
1780
+ export type TokenPrefixedIfExists<A> =
1781
+ A extends Record<string, any> ? TokenPrefixed<A> : {}
1782
+
1783
+ //
1784
+ // adds theme short values to relevant props
1785
+ //
1786
+
1787
+ export type ThemeValueByCategory<K extends string | number | symbol> = K extends 'theme'
1788
+ ? ThemeTokens
1789
+ : K extends 'size'
1790
+ ? SizeTokens
1791
+ : K extends 'font'
1792
+ ? FontTokens
1793
+ : K extends 'fontSize'
1794
+ ? FontSizeTokens
1795
+ : K extends 'space'
1796
+ ? SpaceTokens
1797
+ : K extends 'color'
1798
+ ? ColorTokens
1799
+ : K extends 'zIndex'
1800
+ ? ZIndexTokens
1801
+ : K extends 'radius'
1802
+ ? RadiusTokens
1803
+ : K extends 'lineHeight'
1804
+ ? FontLineHeightTokens
1805
+ : K extends 'fontWeight'
1806
+ ? FontWeightTokens
1807
+ : K extends 'letterSpacing'
1808
+ ? FontLetterSpacingTokens
1809
+ : K extends keyof Tokens
1810
+ ? // fallback to user-defined tokens
1811
+ GetTokenString<keyof Tokens[K]>
1812
+ : never
1813
+
1814
+ export type FontKeys = 'fontFamily'
1815
+ export type FontSizeKeys = 'fontSize'
1816
+ export type FontWeightKeys = 'fontWeight'
1817
+ export type FontLetterSpacingKeys = 'letterSpacing'
1818
+ export type LineHeightKeys = 'lineHeight'
1819
+ export type ZIndexKeys = 'zIndex'
1820
+ export type OpacityKeys = 'opacity'
1821
+
1822
+ export type ThemeValueGet<K extends string | number | symbol> = K extends 'theme'
1823
+ ? ThemeTokens
1824
+ : K extends SizeKeys
1825
+ ? SizeTokens
1826
+ : K extends FontKeys
1827
+ ? FontTokens
1828
+ : K extends FontSizeKeys
1829
+ ? FontSizeTokens
1830
+ : K extends `${`border${string | ''}Radius`}`
1831
+ ? RadiusTokens
1832
+ : K extends SpaceKeys
1833
+ ? K extends 'shadowOffset'
1834
+ ? { width: SpaceTokens; height: SpaceTokens }
1835
+ : SpaceTokens
1836
+ : K extends ColorKeys
1837
+ ? ColorTokens | ThemeValueFallbackColor
1838
+ : K extends ZIndexKeys
1839
+ ? ZIndexTokens
1840
+ : K extends LineHeightKeys
1841
+ ? FontLineHeightTokens
1842
+ : K extends FontWeightKeys
1843
+ ? FontWeightTokens
1844
+ : K extends FontLetterSpacingKeys
1845
+ ? FontLetterSpacingTokens
1846
+ : K extends OpacityKeys
1847
+ ? SpecificTokens | ThemeValueFallback
1848
+ : never
1849
+
1850
+ export type GetThemeValueForKey<K extends string | symbol | number> =
1851
+ | ThemeValueGet<K>
1852
+ | ThemeValueFallback
1853
+ | (HanzoguiSettings extends { autocompleteSpecificTokens: infer Val }
1854
+ ? Val extends true | undefined
1855
+ ? SpecificTokens
1856
+ : never
1857
+ : never)
1858
+
1859
+ export type WithThemeValues<T extends object> = {
1860
+ [K in keyof T]: ThemeValueGet<K> extends never
1861
+ ? K extends keyof ExtraBaseProps
1862
+ ? T[K]
1863
+ : T[K] | 'unset'
1864
+ : GetThemeValueForKey<K> | Exclude<T[K], string> | 'unset'
1865
+ }
1866
+
1867
+ export type NarrowShorthands = Narrow<Shorthands>
1868
+ export type Longhands = NarrowShorthands[keyof NarrowShorthands]
1869
+
1870
+ type OnlyAllowShorthands = HanzoguiConfig['settings']['onlyAllowShorthands']
1871
+ type OnlyShorthandStyleProps = HanzoguiConfig['settings']['onlyShorthandStyleProps']
1872
+
1873
+ // longhand style props that overlap with border/outline/shadow shorthands
1874
+ type ShorthandLonghandProps =
1875
+ | 'borderWidth'
1876
+ | 'borderStyle'
1877
+ | 'borderColor'
1878
+ | 'outlineWidth'
1879
+ | 'outlineStyle'
1880
+ | 'outlineColor'
1881
+ | 'outlineOffset'
1882
+ | 'shadowColor'
1883
+ | 'shadowOffset'
1884
+ | 'shadowOpacity'
1885
+ | 'shadowRadius'
1886
+
1887
+ // adds shorthand props
1888
+ export type WithShorthands<StyleProps> = {
1889
+ [Key in keyof Shorthands]?: Shorthands[Key] extends keyof StyleProps
1890
+ ? StyleProps[Shorthands[Key]] | null
1891
+ : undefined
1892
+ }
1893
+
1894
+ // adds pseudo props
1895
+ // PseudoStyleWithTransition allows transition inside pseudo-style props for enter/exit timing
1896
+ export type PseudoStyleWithTransition<A> = A & { transition?: TransitionProp | null }
1897
+
1898
+ export type WithPseudoProps<A> = {
1899
+ hoverStyle?: PseudoStyleWithTransition<A> | null
1900
+ pressStyle?: PseudoStyleWithTransition<A> | null
1901
+ focusStyle?: PseudoStyleWithTransition<A> | null
1902
+ focusWithinStyle?: PseudoStyleWithTransition<A> | null
1903
+ focusVisibleStyle?: PseudoStyleWithTransition<A> | null
1904
+ disabledStyle?: PseudoStyleWithTransition<A> | null
1905
+ exitStyle?: PseudoStyleWithTransition<A> | null
1906
+ enterStyle?: PseudoStyleWithTransition<A> | null
1907
+ }
1908
+
1909
+ // type for transitions extracted from pseudo-style props (e.g., hoverStyle.transition)
1910
+ // includes $group-*-hover, $group-*-press, $group-*-focus patterns
1911
+ export type PseudoTransitions = Partial<
1912
+ Record<keyof WithPseudoProps<any>, TransitionProp | null>
1913
+ > & {
1914
+ // allow $group-{name}-{pseudo} keys dynamically
1915
+ [key: `$group-${string}-${'hover' | 'press' | 'focus'}`]:
1916
+ | TransitionProp
1917
+ | null
1918
+ | undefined
1919
+ }
1920
+
1921
+ export type PseudoPropKeys = keyof WithPseudoProps<any>
1922
+
1923
+ export type PseudoStyles = {
1924
+ hoverStyle?: ViewStyle
1925
+ pressStyle?: ViewStyle
1926
+ focusStyle?: ViewStyle
1927
+ focusWithinStyle?: ViewStyle
1928
+ focusVisibleStyle?: ViewStyle
1929
+ disabledStyle?: ViewStyle
1930
+ enterStyle?: ViewStyle
1931
+ exitStyle?: ViewStyle
1932
+ }
1933
+
1934
+ export type AllPlatforms =
1935
+ | 'web'
1936
+ | 'native'
1937
+ | 'android'
1938
+ | 'ios'
1939
+ | 'tv'
1940
+ | 'androidtv'
1941
+ | 'tvos'
1942
+
1943
+ // MUST EXPORT ALL IN BETWEEN or else it expands declarations like crazy
1944
+
1945
+ //
1946
+ // add both theme and shorthands
1947
+ //
1948
+ type MaybeOmitLonghands<A> = OnlyShorthandStyleProps extends true
1949
+ ? Omit<A, ShorthandLonghandProps>
1950
+ : A
1951
+
1952
+ export type WithThemeAndShorthands<
1953
+ A extends object,
1954
+ Variants = {},
1955
+ > = OnlyAllowShorthands extends true
1956
+ ? WithThemeValues<MaybeOmitLonghands<Omit<A, Longhands>>> &
1957
+ Variants &
1958
+ WithShorthands<WithThemeValues<A>>
1959
+ : WithThemeValues<MaybeOmitLonghands<A>> & Variants & WithShorthands<WithThemeValues<A>>
1960
+
1961
+ //
1962
+ // combines all of theme, shorthands, pseudos...
1963
+ //
1964
+ export type WithThemeShorthandsAndPseudos<
1965
+ A extends object,
1966
+ Variants = {},
1967
+ > = WithThemeAndShorthands<A, Variants> &
1968
+ WithPseudoProps<WithThemeAndShorthands<A, Variants>>
1969
+
1970
+ //
1971
+ // ... media queries and animations
1972
+ //
1973
+ export type WithThemeShorthandsPseudosMedia<
1974
+ A extends object,
1975
+ Variants = {},
1976
+ > = WithThemeShorthandsAndPseudos<A, Variants> &
1977
+ WithMediaProps<WithThemeShorthandsAndPseudos<A, Variants>>
1978
+
1979
+ /**
1980
+ * Base style-only props (no media, pseudo):
1981
+ */
1982
+
1983
+ type Px = `${string | number}px`
1984
+ type PxOrPct = Px | `${string | number}%`
1985
+ type TwoValueTransformOrigin = `${PxOrPct | 'left' | 'center' | 'right'} ${
1986
+ | PxOrPct
1987
+ | 'top'
1988
+ | 'center'
1989
+ | 'bottom'}`
1990
+
1991
+ export interface TransformStyleProps {
1992
+ /**
1993
+ * Maps to translateX
1994
+ */
1995
+ x?: number
1996
+ /**
1997
+ * Maps to translateY
1998
+ */
1999
+ y?: number
2000
+ perspective?: number
2001
+ scale?: number
2002
+ scaleX?: number
2003
+ scaleY?: number
2004
+ skewX?: string
2005
+ skewY?: string
2006
+ matrix?: number[]
2007
+ rotate?: `${number}deg` | UnionableString
2008
+ rotateY?: `${number}deg` | UnionableString
2009
+ rotateX?: `${number}deg` | UnionableString
2010
+ rotateZ?: `${number}deg` | UnionableString
2011
+ }
2012
+
2013
+ // box shadow presets - one example per pattern for autocomplete hints
2014
+ type BoxShadowPreset =
2015
+ | '0 0' // offset only
2016
+ | '0 1px 2px' // offset + blur
2017
+ | '0 1px 2px 0' // offset + blur + spread
2018
+ | '0 1px 2px $shadowColor' // offset + blur + color token
2019
+ | '0 1px 3px 0 $shadowColor' // offset + blur + spread + color token
2020
+ | '0 4px 6px -1px $shadowColor' // negative spread
2021
+ | 'inset 0 2px 4px $shadowColor' // inset
2022
+ | 'none'
2023
+
2024
+ // Box Shadow - CSS string format (e.g. "0 4px 8px $shadowColor")
2025
+ // Supports embedded $tokens that get resolved at runtime
2026
+ export type BoxShadowValue = BoxShadowPreset | (string & {})
2027
+
2028
+ // filter presets - one example per function for autocomplete hints
2029
+ type FilterPreset =
2030
+ | 'blur(4px)'
2031
+ | 'brightness(1.2)'
2032
+ | 'contrast(1.2)'
2033
+ | 'drop-shadow(0 4px 8px $shadowColor)'
2034
+ | 'grayscale(1)'
2035
+ | 'hue-rotate(90deg)'
2036
+ | 'invert(1)'
2037
+ | 'opacity(0.5)'
2038
+ | 'saturate(1.5)'
2039
+ | 'sepia(1)'
2040
+ | 'none'
2041
+
2042
+ // Filter - CSS string format (e.g. "blur(10px) brightness(1.2)")
2043
+ // Supports embedded $tokens that get resolved at runtime
2044
+ export type FilterValue = FilterPreset | (string & {})
2045
+
2046
+ // border shorthand presets - examples for autocomplete hints
2047
+ type BorderPreset =
2048
+ | '1px solid' // width + style
2049
+ | '1px solid $borderColor' // width + style + color token
2050
+ | '2px dashed $borderColor' // width + style + color
2051
+ | '1px dotted red' // width + style + color
2052
+ | 'none'
2053
+
2054
+ // Border - CSS shorthand string format (e.g. "1px solid $borderColor")
2055
+ // Expands to borderWidth, borderStyle, borderColor on web and native
2056
+ // Note: on native, only supports a single border (all sides)
2057
+ export type BorderValue = BorderPreset | (string & {})
2058
+
2059
+ // outline shorthand presets - examples for autocomplete hints
2060
+ type OutlinePreset =
2061
+ | '1px solid' // width + style
2062
+ | '1px solid $outlineColor' // width + style + color token
2063
+ | '2px dashed $outlineColor' // width + style + color
2064
+ | '1px dotted red' // width + style + color
2065
+ | 'none'
2066
+
2067
+ // Outline - CSS shorthand string format (e.g. "2px solid $outlineColor")
2068
+ // Expands to outlineWidth, outlineStyle, outlineColor on native
2069
+ export type OutlineValue = OutlinePreset | (string & {})
2070
+
2071
+ interface ExtraStyleProps {
2072
+ /**
2073
+ * Controls the curve style of rounded corners.
2074
+ * - 'circular': Standard circular arc corners (default)
2075
+ * - 'continuous': Apple's "squircle" style continuous curve
2076
+ * @platform iOS 13+
2077
+ */
2078
+ borderCurve?: 'circular' | 'continuous'
2079
+ /**
2080
+ * Web-only style property. Will be omitted on native.
2081
+ */
2082
+ contain?: Properties['contain']
2083
+ /**
2084
+ * Cursor style. On web, supports all CSS cursor values.
2085
+ * On iOS 17+ (trackpad/stylus), only 'auto' and 'pointer' are supported.
2086
+ */
2087
+ cursor?: Properties['cursor']
2088
+ /**
2089
+ * Outline color. Supported on web and native.
2090
+ */
2091
+ outlineColor?: ColorStyleProp
2092
+ /**
2093
+ * Outline offset. Supported on web and native.
2094
+ */
2095
+ outlineOffset?: SpaceValue
2096
+ /**
2097
+ * Outline style. Supported on web and native.
2098
+ */
2099
+ outlineStyle?: 'solid' | 'dotted' | 'dashed' | (string & {})
2100
+ /**
2101
+ * Outline width. Supported on web and native.
2102
+ */
2103
+ outlineWidth?: SpaceValue
2104
+ /**
2105
+ * CSS outline shorthand string. Supports tokens: "2px solid $outlineColor"
2106
+ * Expands to outlineWidth, outlineStyle, outlineColor on native.
2107
+ * Works on web and native.
2108
+ */
2109
+ outline?: OutlineValue
2110
+ /**
2111
+ * On native, maps to the `selectable` prop on Text (userSelect !== 'none')
2112
+ */
2113
+ userSelect?: Properties['userSelect']
2114
+ /**
2115
+ * Web-only style property. Will be omitted on native.
2116
+ */
2117
+ backdropFilter?: Properties['backdropFilter']
2118
+ /**
2119
+ * Web-only style property. Will be omitted on native.
2120
+ */
2121
+ background?: Properties['background']
2122
+ /**
2123
+ * Web-only style property. Will be omitted on native.
2124
+ */
2125
+ backgroundImage?: Properties['backgroundImage']
2126
+ /**
2127
+ * Web-only style property. Will be omitted on native.
2128
+ */
2129
+ backgroundOrigin?: Properties['backgroundOrigin']
2130
+ /**
2131
+ * Web-only style property. Will be omitted on native.
2132
+ */
2133
+ backgroundPosition?: Properties['backgroundPosition']
2134
+ /**
2135
+ * Web-only style property. Will be omitted on native.
2136
+ */
2137
+ backgroundRepeat?: Properties['backgroundRepeat']
2138
+ /**
2139
+ * Web-only style property. Will be omitted on native.
2140
+ */
2141
+ backgroundSize?: Properties['backgroundSize']
2142
+ // boxSizing - provided by RN's ViewStyle
2143
+ /**
2144
+ * CSS box-shadow string. Supports tokens: "0 4px 8px $shadowColor"
2145
+ * Works on web and native (RN 0.76+).
2146
+ */
2147
+ boxShadow?: BoxShadowValue
2148
+ /**
2149
+ * CSS border shorthand string. Supports tokens: "1px solid $borderColor"
2150
+ * Expands to borderWidth, borderStyle, borderColor.
2151
+ * Works on web and native. On native, applies to all sides.
2152
+ */
2153
+ border?: BorderValue
2154
+ /**
2155
+ * Web-only style property. Will be omitted on native.
2156
+ */
2157
+ overflowX?: Properties['overflowX']
2158
+ /**
2159
+ * Web-only style property. Will be omitted on native.
2160
+ */
2161
+ overflowY?: Properties['overflowY']
2162
+
2163
+ pointerEvents?: ViewProps['pointerEvents']
2164
+
2165
+ /**
2166
+ * The point at which transforms originate from.
2167
+ */
2168
+ transformOrigin?:
2169
+ | PxOrPct
2170
+ | 'left'
2171
+ | 'center'
2172
+ | 'right'
2173
+ | 'top'
2174
+ | 'bottom'
2175
+ | TwoValueTransformOrigin
2176
+ | `${TwoValueTransformOrigin} ${Px}`
2177
+
2178
+ /**
2179
+ * CSS filter string. Example: "blur(10px) brightness(1.2)"
2180
+ * Works on web and native (RN 0.76+). Supports embedded tokens.
2181
+ */
2182
+ filter?: FilterValue
2183
+ // mixBlendMode - provided by RN's ViewStyle
2184
+ // isolation - provided by RN's ViewStyle
2185
+ /**
2186
+ * Web-only style property. Will be omitted on native.
2187
+ */
2188
+ backgroundClip?: Properties['backgroundClip']
2189
+ /**
2190
+ * Web-only style property. Will be omitted on native.
2191
+ */
2192
+ backgroundBlendMode?: Properties['backgroundBlendMode']
2193
+ /**
2194
+ * Web-only style property. Will be omitted on native.
2195
+ */
2196
+ backgroundAttachment?: Properties['backgroundAttachment']
2197
+ /**
2198
+ * Web-only style property. Will be omitted on native.
2199
+ */
2200
+ clipPath?: Properties['clipPath']
2201
+ /**
2202
+ * Web-only style property. Will be omitted on native.
2203
+ */
2204
+ caretColor?: Properties['caretColor']
2205
+ /**
2206
+ * Web-only style property. Will be omitted on native.
2207
+ */
2208
+ transformStyle?: Properties['transformStyle']
2209
+ /**
2210
+ * Web-only style property. Will be omitted on native.
2211
+ */
2212
+ mask?: Properties['mask']
2213
+ /**
2214
+ * Web-only style property. Will be omitted on native.
2215
+ */
2216
+ maskImage?: Properties['maskImage']
2217
+ /**
2218
+ * Web-only style property. Will be omitted on native.
2219
+ */
2220
+ textEmphasis?: Properties['textEmphasis']
2221
+ /**
2222
+ * Web-only style property. Will be omitted on native.
2223
+ */
2224
+ borderImage?: Properties['borderImage']
2225
+ /**
2226
+ * Web-only style property. Will be omitted on native.
2227
+ */
2228
+ float?: Properties['float']
2229
+ /**
2230
+ * Web-only style property. Will be omitted on native.
2231
+ */
2232
+ content?: Properties['content']
2233
+ /**
2234
+ * Web-only style property. Will be omitted on native.
2235
+ */
2236
+ overflowBlock?: Properties['overflowBlock']
2237
+ /**
2238
+ * Web-only style property. Will be omitted on native.
2239
+ */
2240
+ overflowInline?: Properties['overflowInline']
2241
+ /**
2242
+ * Web-only style property. Will be omitted on native.
2243
+ */
2244
+ maskBorder?: Properties['maskBorder']
2245
+ /**
2246
+ * Web-only style property. Will be omitted on native.
2247
+ */
2248
+ maskBorderMode?: Properties['maskBorderMode']
2249
+ /**
2250
+ * Web-only style property. Will be omitted on native.
2251
+ */
2252
+ maskBorderOutset?: Properties['maskBorderOutset']
2253
+ /**
2254
+ * Web-only style property. Will be omitted on native.
2255
+ */
2256
+ maskBorderRepeat?: Properties['maskBorderRepeat']
2257
+ /**
2258
+ * Web-only style property. Will be omitted on native.
2259
+ */
2260
+ maskBorderSlice?: Properties['maskBorderSlice']
2261
+ /**
2262
+ * Web-only style property. Will be omitted on native.
2263
+ */
2264
+ maskBorderSource?: Properties['maskBorderSource']
2265
+ /**
2266
+ * Web-only style property. Will be omitted on native.
2267
+ */
2268
+ maskBorderWidth?: Properties['maskBorderWidth']
2269
+ /**
2270
+ * Web-only style property. Will be omitted on native.
2271
+ */
2272
+ maskClip?: Properties['maskClip']
2273
+ /**
2274
+ * Web-only style property. Will be omitted on native.
2275
+ */
2276
+ maskComposite?: Properties['maskComposite']
2277
+ /**
2278
+ * Web-only style property. Will be omitted on native.
2279
+ */
2280
+ maskMode?: Properties['maskMode']
2281
+ /**
2282
+ * Web-only style property. Will be omitted on native.
2283
+ */
2284
+ maskOrigin?: Properties['maskOrigin']
2285
+ /**
2286
+ * Web-only style property. Will be omitted on native.
2287
+ */
2288
+ maskPosition?: Properties['maskPosition']
2289
+ /**
2290
+ * Web-only style property. Will be omitted on native.
2291
+ */
2292
+ maskRepeat?: Properties['maskRepeat']
2293
+ /**
2294
+ * Web-only style property. Will be omitted on native.
2295
+ */
2296
+ maskSize?: Properties['maskSize']
2297
+ /**
2298
+ * Web-only style property. Will be omitted on native.
2299
+ */
2300
+ maskType?: Properties['maskType']
2301
+ /**
2302
+ * Web-only style property. Will be omitted on native.
2303
+ */
2304
+ gridRow?: Properties['gridRow']
2305
+ /**
2306
+ * Web-only style property. Will be omitted on native.
2307
+ */
2308
+ gridRowEnd?: Properties['gridRowEnd']
2309
+ /**
2310
+ * Web-only style property. Will be omitted on native.
2311
+ */
2312
+ gridRowGap?: Properties['gridRowGap']
2313
+ /**
2314
+ * Web-only style property. Will be omitted on native.
2315
+ */
2316
+ gridRowStart?: Properties['gridRowStart']
2317
+ /**
2318
+ * Web-only style property. Will be omitted on native.
2319
+ */
2320
+ gridColumn?: Properties['gridColumn']
2321
+ /**
2322
+ * Web-only style property. Will be omitted on native.
2323
+ */
2324
+ gridColumnEnd?: Properties['gridColumnEnd']
2325
+ /**
2326
+ * Web-only style property. Will be omitted on native.
2327
+ */
2328
+ gridColumnGap?: Properties['gridColumnGap']
2329
+ /**
2330
+ * Web-only style property. Will be omitted on native.
2331
+ */
2332
+ gridColumnStart?: Properties['gridColumnStart']
2333
+ /**
2334
+ * Web-only style property. Will be omitted on native.
2335
+ */
2336
+ gridTemplateColumns?: Properties['gridTemplateColumns']
2337
+ /**
2338
+ * Web-only style property. Will be omitted on native.
2339
+ */
2340
+ gridTemplateAreas?: Properties['gridTemplateAreas']
2341
+
2342
+ /**
2343
+ * Web-only style property. Will be omitted on native.
2344
+ */
2345
+ containerType?: Properties['containerType']
2346
+ /**
2347
+ * Web-only style property. Will be omitted on native.
2348
+ */
2349
+ blockSize?: SizeTokens | number
2350
+ /**
2351
+ * Web-only style property. Will be omitted on native.
2352
+ */
2353
+ inlineSize?: SizeTokens | number
2354
+ /**
2355
+ * Web-only style property. Will be omitted on native.
2356
+ */
2357
+ minBlockSize?: SizeTokens | number
2358
+ /**
2359
+ * Web-only style property. Will be omitted on native.
2360
+ */
2361
+ maxBlockSize?: SizeTokens | number
2362
+ /**
2363
+ * Web-only style property. Will be omitted on native.
2364
+ */
2365
+ objectFit?: Properties['objectFit']
2366
+ /**
2367
+ * Web-only style property. Will be omitted on native.
2368
+ */
2369
+ verticalAlign?: Properties['verticalAlign']
2370
+ /**
2371
+ * Web-only style property. Will be omitted on native.
2372
+ */
2373
+ minInlineSize?: SizeTokens | number
2374
+ /**
2375
+ * Web-only style property. Will be omitted on native.
2376
+ */
2377
+ maxInlineSize?: SizeTokens | number
2378
+ /**
2379
+ * Web-only style property. Will be omitted on native.
2380
+ */
2381
+ borderInlineColor?: ColorTokens
2382
+ /**
2383
+ * Web-only style property. Will be omitted on native.
2384
+ */
2385
+ borderInlineStartColor?: ColorTokens
2386
+ /**
2387
+ * Web-only style property. Will be omitted on native.
2388
+ */
2389
+ borderInlineEndColor?: ColorTokens
2390
+
2391
+ // TODO validate these are supported in react native, if so keep, if not deprecate like the above web-only deprecations
2392
+ borderBlockWidth?: SpaceTokens | number
2393
+ borderBlockStartWidth?: SpaceTokens | number
2394
+ borderBlockEndWidth?: SpaceTokens | number
2395
+ borderInlineWidth?: SpaceTokens | number
2396
+ borderInlineStartWidth?: SpaceTokens | number
2397
+ borderInlineEndWidth?: SpaceTokens | number
2398
+ borderBlockStyle?: ViewStyle['borderStyle']
2399
+ borderBlockStartStyle?: ViewStyle['borderStyle']
2400
+ borderBlockEndStyle?: ViewStyle['borderStyle']
2401
+ borderInlineStyle?: ViewStyle['borderStyle']
2402
+ borderInlineStartStyle?: ViewStyle['borderStyle']
2403
+ borderInlineEndStyle?: ViewStyle['borderStyle']
2404
+ marginBlock?: SpaceTokens | number
2405
+ marginBlockStart?: SpaceTokens | number
2406
+ marginBlockEnd?: SpaceTokens | number
2407
+ marginInline?: SpaceTokens | number
2408
+ marginInlineStart?: SpaceTokens | number
2409
+ marginInlineEnd?: SpaceTokens | number
2410
+ paddingBlock?: SpaceTokens | number
2411
+ paddingBlockStart?: SpaceTokens | number
2412
+ paddingBlockEnd?: SpaceTokens | number
2413
+ paddingInline?: SpaceTokens | number
2414
+ paddingInlineStart?: SpaceTokens | number
2415
+ paddingInlineEnd?: SpaceTokens | number
2416
+ inset?: SpaceTokens | number
2417
+ insetBlock?: SpaceTokens | number
2418
+ insetBlockStart?: SpaceTokens | number
2419
+ insetBlockEnd?: SpaceTokens | number
2420
+ insetInline?: SpaceTokens | number
2421
+ insetInlineStart?: SpaceTokens | number
2422
+ insetInlineEnd?: SpaceTokens | number
2423
+ }
2424
+
2425
+ export interface ExtendBaseStackProps {}
2426
+ export interface ExtendBaseTextProps {}
2427
+
2428
+ interface ExtraBaseProps {
2429
+ /**
2430
+ * Transitions are defined using `createHanzogui` typically in a hanzogui.config.ts file.
2431
+ * Pass a string transition name here and it uses an animation driver to execute it.
2432
+ *
2433
+ * See: https://hanzogui.dev/docs/core/animations
2434
+ */
2435
+ transition?: TransitionProp | null
2436
+
2437
+ /**
2438
+ * Pass an array of strings containing the long style property names
2439
+ * which will be exclusively transitioned.
2440
+ */
2441
+ animateOnly?: string[]
2442
+
2443
+ /**
2444
+ * If you'd like this component to not attach to the nearest parent AnimatePresence,
2445
+ * set this to `false` and it will pass through to the next animated child.
2446
+ */
2447
+ animatePresence?: boolean
2448
+
2449
+ /**
2450
+ * Avoids as much work as possible and passes through the children with no changes.
2451
+ * Advanced: Useful for adapting to other element when you want to avoid re-parenting.
2452
+ */
2453
+ passThrough?: boolean
2454
+ }
2455
+
2456
+ interface ExtendedBaseProps
2457
+ extends
2458
+ TransformStyleProps,
2459
+ ExtendBaseTextProps,
2460
+ ExtendBaseStackProps,
2461
+ ExtraStyleProps,
2462
+ ExtraBaseProps {
2463
+ display?: 'inherit' | 'none' | 'inline' | 'block' | 'contents' | 'flex' | 'inline-flex'
2464
+ // extends RN's position to include 'fixed' (converted to 'absolute' on native)
2465
+ position?: 'absolute' | 'relative' | 'fixed' | 'static' | 'sticky'
2466
+ }
2467
+
2468
+ export interface StackStyleBase
2469
+ extends Omit<ViewStyle, keyof ExtendedBaseProps | 'elevation'>, ExtendedBaseProps {}
2470
+
2471
+ export interface TextStylePropsBase
2472
+ extends Omit<RNTextStyle, keyof ExtendedBaseProps>, ExtendedBaseProps {
2473
+ ellipsis?: boolean
2474
+ numberOfLines?: number
2475
+ textDecorationDistance?: number
2476
+ textOverflow?: Properties['textOverflow']
2477
+ whiteSpace?: Properties['whiteSpace']
2478
+ wordWrap?: Properties['wordWrap']
2479
+ /**
2480
+ * CSS text-shadow string. Supports tokens: "2px 2px 4px $shadowColor"
2481
+ * On native, only a single shadow is supported.
2482
+ */
2483
+ textShadow?: string
2484
+ }
2485
+
2486
+ //
2487
+ // Stack
2488
+ //
2489
+
2490
+ type LooseCombinedObjects<A extends object, B extends object> = A | B | (A & B)
2491
+
2492
+ // v2: Removed A11yDeprecated - use web-standard props instead:
2493
+ // - accessibilityLabel → aria-label
2494
+ // - accessibilityRole → role
2495
+ // - accessibilityHint → aria-describedby
2496
+ // - accessibilityState → aria-disabled, aria-selected, aria-checked, aria-busy, aria-expanded
2497
+ // - accessibilityValue → aria-valuemin, aria-valuemax, aria-valuenow, aria-valuetext
2498
+ // - accessibilityElementsHidden → aria-hidden
2499
+ // - accessibilityViewIsModal → aria-modal
2500
+ // - accessibilityLiveRegion → aria-live
2501
+ // - accessible → tabIndex={0}
2502
+ // - focusable → tabIndex
2503
+ // - nativeID → id
2504
+
2505
+ export interface StackNonStyleProps
2506
+ extends
2507
+ Omit<
2508
+ ViewProps,
2509
+ | 'hitSlop' // we bring our own via Pressable in HanzoguiComponentPropsBase
2510
+ | 'pointerEvents'
2511
+ | 'display'
2512
+ | 'children'
2513
+ | keyof HanzoguiComponentPropsBaseBase
2514
+ // these are added back in by core
2515
+ | RNOnlyProps
2516
+ | keyof ExtendBaseStackProps
2517
+ | 'style'
2518
+ // Event handlers that conflict between RN ViewProps and Web DivAttributes
2519
+ | 'onFocus'
2520
+ | 'onBlur'
2521
+ | 'onPointerCancel'
2522
+ | 'onPointerDown'
2523
+ | 'onPointerMove'
2524
+ | 'onPointerUp'
2525
+ >,
2526
+ ExtendBaseStackProps,
2527
+ HanzoguiComponentPropsBase {
2528
+ // we allow either RN or web style props, of course only web css props only works on web
2529
+ style?: StyleProp<LooseCombinedObjects<React.CSSProperties, ViewStyle>>
2530
+ }
2531
+
2532
+ export type StackStyle = WithThemeShorthandsPseudosMedia<StackStyleBase>
2533
+
2534
+ //
2535
+ // Text props
2536
+ //
2537
+
2538
+ export interface TextNonStyleProps
2539
+ extends
2540
+ Omit<
2541
+ ReactTextProps,
2542
+ | 'children'
2543
+ | keyof WebOnlyPressEvents
2544
+ // these are added back in by core
2545
+ | RNOnlyProps
2546
+ | keyof ExtendBaseTextProps
2547
+ | 'style'
2548
+ >,
2549
+ ExtendBaseTextProps,
2550
+ HanzoguiComponentPropsBase {
2551
+ // we allow either RN or web style props, of course only web css props only works on web
2552
+ style?: StyleProp<LooseCombinedObjects<React.CSSProperties, RNTextStyle>>
2553
+ }
2554
+
2555
+ export type TextStyle = WithThemeShorthandsPseudosMedia<TextStylePropsBase>
2556
+
2557
+ export type TextProps = TextNonStyleProps & TextStyle
2558
+
2559
+ export interface ThemeableProps {
2560
+ theme?: ThemeName | null
2561
+ themeReset?: boolean
2562
+ componentName?: string
2563
+ debug?: DebugProp
2564
+ }
2565
+
2566
+ export type StyleableOptions = {
2567
+ disableTheme?: boolean
2568
+ staticConfig?: Partial<StaticConfig>
2569
+ }
2570
+
2571
+ export type Styleable<
2572
+ Props,
2573
+ Ref,
2574
+ NonStyledProps,
2575
+ BaseStyles extends object,
2576
+ VariantProps,
2577
+ ParentStaticProperties,
2578
+ > = <
2579
+ CustomProps extends object | void = void,
2580
+ MergedProps = CustomProps extends void
2581
+ ? Props
2582
+ : Omit<Props, keyof CustomProps> & CustomProps,
2583
+ FunctionDef extends ForwardRefRenderFunction<Ref, MergedProps> =
2584
+ ForwardRefRenderFunction<Ref, MergedProps>,
2585
+ >(
2586
+ a: FunctionDef,
2587
+ options?: StyleableOptions
2588
+ ) => HanzoguiComponent<
2589
+ MergedProps,
2590
+ Ref,
2591
+ NonStyledProps & CustomProps,
2592
+ BaseStyles,
2593
+ VariantProps,
2594
+ ParentStaticProperties
2595
+ >
2596
+
2597
+ export type GetFinalProps<NonStyleProps, StylePropsBase, Variants> = Omit<
2598
+ NonStyleProps,
2599
+ keyof StylePropsBase | keyof Variants
2600
+ > &
2601
+ (StylePropsBase extends object
2602
+ ? WithThemeShorthandsPseudosMedia<StylePropsBase, Variants>
2603
+ : {})
2604
+
2605
+ export type HanzoguiComponent<
2606
+ Props = any,
2607
+ Ref = any,
2608
+ NonStyledProps = {},
2609
+ BaseStyles extends object = {},
2610
+ Variants = {},
2611
+ ParentStaticProperties = {},
2612
+ > = ForwardRefExoticComponent<
2613
+ (Props extends TamaDefer
2614
+ ? GetFinalProps<NonStyledProps, BaseStyles, Variants>
2615
+ : Props) &
2616
+ RefAttributes<Ref>
2617
+ > &
2618
+ StaticComponentObject<
2619
+ Props,
2620
+ Ref,
2621
+ NonStyledProps,
2622
+ BaseStyles,
2623
+ Variants,
2624
+ ParentStaticProperties
2625
+ > &
2626
+ Omit<ParentStaticProperties, 'staticConfig' | 'styleable'> & {
2627
+ __tama: [Props, Ref, NonStyledProps, BaseStyles, Variants, ParentStaticProperties]
2628
+ }
2629
+
2630
+ export type InferGenericComponentProps<A> =
2631
+ A extends ComponentType<infer Props>
2632
+ ? Props
2633
+ : A extends ForwardRefExoticComponent<infer P>
2634
+ ? P
2635
+ : A extends ReactComponentWithRef<infer P, any>
2636
+ ? P
2637
+ : A extends new (props: infer Props) => any
2638
+ ? Props
2639
+ : {}
2640
+
2641
+ export type InferStyledProps<
2642
+ A extends StylableComponent,
2643
+ B extends StaticConfigPublic,
2644
+ > = A extends {
2645
+ __tama: any
2646
+ }
2647
+ ? GetProps<A>
2648
+ : GetFinalProps<InferGenericComponentProps<A>, GetBaseStyles<{}, B>, {}>
2649
+
2650
+ /** Like InferStyledProps but returns only style props (no non-styled props or variants). */
2651
+ export type InferStyleProps<
2652
+ A extends StylableComponent,
2653
+ B extends StaticConfigPublic,
2654
+ > = WithThemeShorthandsPseudosMedia<GetBaseStyles<A, B>, {}>
2655
+
2656
+ export type GetProps<A extends StylableComponent> = A extends {
2657
+ __tama: [
2658
+ infer Props,
2659
+ any,
2660
+ infer NonStyledProps,
2661
+ infer BaseStyles,
2662
+ infer VariantProps,
2663
+ any,
2664
+ ]
2665
+ }
2666
+ ? Props extends TamaDefer
2667
+ ? GetFinalProps<NonStyledProps, BaseStyles, VariantProps>
2668
+ : Props
2669
+ : InferGenericComponentProps<A>
2670
+
2671
+ export type GetNonStyledProps<A extends StylableComponent> = A extends {
2672
+ __tama: [any, any, infer B, any, any, any]
2673
+ }
2674
+ ? B
2675
+ : HanzoguiComponentPropsBaseBase & GetProps<A>
2676
+
2677
+ export type GetBaseStyles<A, B> = A extends {
2678
+ __tama: [any, any, any, infer C, any, any]
2679
+ }
2680
+ ? C
2681
+ : B extends { isText: true }
2682
+ ? TextStylePropsBase
2683
+ : B extends { isInput: true }
2684
+ ? TextStylePropsBase
2685
+ : StackStyleBase
2686
+
2687
+ export type GetStyledVariants<A> = A extends {
2688
+ __tama: [any, any, any, any, infer B, any]
2689
+ }
2690
+ ? B
2691
+ : {}
2692
+
2693
+ export type GetStaticConfig<A, Extra = {}> = A extends {
2694
+ __tama: [any, any, any, any, any, infer B]
2695
+ }
2696
+ ? B & Extra
2697
+ : Extra
2698
+
2699
+ export type StaticComponentObject<
2700
+ Props,
2701
+ Ref,
2702
+ NonStyledProps,
2703
+ BaseStyles extends object,
2704
+ VariantProps,
2705
+ ParentStaticProperties,
2706
+ > = {
2707
+ staticConfig: StaticConfig
2708
+
2709
+ /*
2710
+ * If you want your HOC of a styled() component to also be able to be styled(), you need this to wrap it.
2711
+ */
2712
+ styleable: Styleable<
2713
+ Props extends TamaDefer
2714
+ ? GetFinalProps<NonStyledProps, BaseStyles, VariantProps>
2715
+ : Props,
2716
+ Ref,
2717
+ NonStyledProps,
2718
+ BaseStyles,
2719
+ VariantProps,
2720
+ ParentStaticProperties
2721
+ >
2722
+ }
2723
+
2724
+ export type HanzoguiComponentExpectingVariants<
2725
+ Props = {},
2726
+ Variants extends object = {},
2727
+ > = HanzoguiComponent<Props, any, any, any, Variants>
2728
+
2729
+ export type HanzoguiProviderProps = Omit<ThemeProviderProps, 'children'> & {
2730
+ config?: HanzoguiInternalConfig
2731
+ disableInjectCSS?: boolean
2732
+ children?: ReactNode
2733
+ insets?: { top: number; right: number; bottom: number; left: number }
2734
+ }
2735
+
2736
+ export type PropMappedValue = [string, any][] | undefined
2737
+
2738
+ export type GetStyleState = {
2739
+ style: TextStyle | null
2740
+ usedKeys: Record<string, number>
2741
+ classNames: ClassNamesObject
2742
+ staticConfig: StaticConfig
2743
+ theme: ThemeParsed
2744
+ props: Record<string, any>
2745
+ context?: ComponentContextI
2746
+ viewProps: Record<string, any>
2747
+ styleProps: SplitStyleProps
2748
+ componentState: HanzoguiComponentState
2749
+ conf: HanzoguiInternalConfig
2750
+ avoidMergeTransform?: boolean
2751
+ fontFamily?: string
2752
+ debug?: DebugProp
2753
+ flatTransforms?: Record<string, any>
2754
+ // Track style values that override context props (for issues #3670, #3676)
2755
+ overriddenContextProps?: Record<string, any>
2756
+ // Track original token values (like '$8') before they get resolved to CSS vars
2757
+ // This is used to preserve token strings in overriddenContextProps
2758
+ originalContextPropValues?: Record<string, any>
2759
+ // Transitions extracted from pseudo-style props (e.g., hoverStyle.transition)
2760
+ pseudoTransitions?: PseudoTransitions | null
2761
+ // Resolved animation driver (respects animatedBy prop)
2762
+ animationDriver?: AnimationDriver | null
2763
+ }
2764
+
2765
+ export type StyleResolver<Response = PropMappedValue> = (
2766
+ key: string,
2767
+ value: any,
2768
+ props: SplitStyleProps,
2769
+ state: GetStyleState,
2770
+ parentVariantKey: string
2771
+ ) => Response
2772
+
2773
+ export type PropMapper = (
2774
+ key: string,
2775
+ value: any,
2776
+ state: GetStyleState,
2777
+ disabled: boolean,
2778
+ map: (key: string, val: any, originalVal?: any) => void
2779
+ ) => void
2780
+
2781
+ export type GenericVariantDefinitions = {
2782
+ [key: string]: {
2783
+ [key: string]:
2784
+ | ((a: any, b: any) => any)
2785
+ | {
2786
+ [key: string]: any
2787
+ }
2788
+ }
2789
+ }
2790
+
2791
+ export type StaticConfigPublic = {
2792
+ defaultProps?: Record<string, any>
2793
+
2794
+ /**
2795
+ * (compiler) If you need to pass context or something, prevents from ever
2796
+ * flattening. The 'jsx' option means it will never flatten. if you
2797
+ * pass JSX as a children (if its purely string, it will still flatten).
2798
+ */
2799
+ neverFlatten?: boolean | 'jsx'
2800
+
2801
+ /**
2802
+ * Adds support for text props and handles focus properly
2803
+ */
2804
+ isInput?: boolean
2805
+
2806
+ /**
2807
+ * Determines ultimate output tag (Text vs View)
2808
+ */
2809
+ isText?: boolean
2810
+
2811
+ /**
2812
+ * Which style keys are allowed to be extracted.
2813
+ */
2814
+ validStyles?: { [key: string]: boolean }
2815
+
2816
+ /**
2817
+ * Accept Hanzogui tokens for these props (key for the prop key, val for the token category)
2818
+ */
2819
+ accept?: {
2820
+ [key: string]: keyof Tokens | 'style' | 'textStyle'
2821
+ }
2822
+
2823
+ /**
2824
+ * (compiler) If these props are encountered, leave them un-extracted.
2825
+ */
2826
+ inlineProps?: Set<string>
2827
+
2828
+ /**
2829
+ * (compiler) If not flattening, leave this prop as original value.
2830
+ * Only applies to style attributes
2831
+ */
2832
+ inlineWhenUnflattened?: Set<string>
2833
+
2834
+ /**
2835
+ * Auto-detected, but can override. Wraps children to space them on top
2836
+ */
2837
+ isZStack?: boolean
2838
+
2839
+ /**
2840
+ * Auto-detect, but can override, passes styles properly to react-native-web
2841
+ */
2842
+ isReactNative?: boolean
2843
+
2844
+ /**
2845
+ * By default if styled() doesn't recognize a parent Hanzogui component or specific react-native views,
2846
+ * it will assume the passed in component only accepts style={} for react-native compatibility.
2847
+ * Setting `acceptsClassName: true` indicates Hanzogui can pass in className props.
2848
+ */
2849
+ acceptsClassName?: boolean
2850
+
2851
+ /**
2852
+ * memoizes component, rarely useful except mostly style components that don't take children
2853
+ */
2854
+ memo?: boolean
2855
+ }
2856
+
2857
+ type StaticConfigBase = StaticConfigPublic & {
2858
+ Component?: FunctionComponent<any> & StaticComponentObject<any, any, any, any, any, any>
2859
+
2860
+ variants?: GenericVariantDefinitions
2861
+
2862
+ context?: StyledContext
2863
+
2864
+ /**
2865
+ * Used for applying sub theme style
2866
+ */
2867
+ componentName?: string
2868
+
2869
+ /**
2870
+ * Merges into defaultProps later on, used internally only
2871
+ */
2872
+ defaultVariants?: { [key: string]: any }
2873
+
2874
+ /**
2875
+ * Memoize the component
2876
+ */
2877
+ memo?: boolean
2878
+
2879
+ /**
2880
+ * Used internally for knowing how to handle when a HOC is in-between styled()
2881
+ */
2882
+ isHOC?: boolean
2883
+
2884
+ // insanity, for styled(styled(styleable(styled())))
2885
+ isStyledHOC?: boolean
2886
+ }
2887
+
2888
+ export type StaticConfig = StaticConfigBase & {
2889
+ parentStaticConfig?: StaticConfigBase
2890
+ }
2891
+
2892
+ export type ViewStyleWithPseudos =
2893
+ | TextStyle
2894
+ | (TextStyle & {
2895
+ hoverStyle?: TextStyle
2896
+ pressStyle?: TextStyle
2897
+ focusStyle?: TextStyle
2898
+ focusWithinStyle?: TextStyle
2899
+ focusVisibleStyle?: TextStyle
2900
+ disabledStyle?: TextStyle
2901
+ })
2902
+
2903
+ /**
2904
+ * --------------------------------------------
2905
+ * variants
2906
+ * --------------------------------------------
2907
+ */
2908
+
2909
+ export type StylableComponent =
2910
+ | HanzoguiComponent
2911
+ | ComponentType<any>
2912
+ | ForwardRefExoticComponent<any>
2913
+ | ReactComponentWithRef<any, any>
2914
+ | (new (props: any) => any)
2915
+
2916
+ export type SpreadKeys =
2917
+ | '...fontSize'
2918
+ | '...fontStyle'
2919
+ | '...fontTransform'
2920
+ | '...lineHeight'
2921
+ | '...letterSpacing'
2922
+ | '...size'
2923
+ | '...space'
2924
+ | '...color'
2925
+ | '...zIndex'
2926
+ | '...theme'
2927
+ | '...radius'
2928
+
2929
+ export type VariantDefinitions<
2930
+ Parent extends StylableComponent = HanzoguiComponent,
2931
+ StaticConfig extends StaticConfigPublic = Parent extends {
2932
+ __tama: [any, any, any, any, any, infer S]
2933
+ }
2934
+ ? S
2935
+ : {},
2936
+ MyProps extends object = Partial<
2937
+ GetVariantProps<
2938
+ Parent,
2939
+ StaticConfig['isText'] extends true
2940
+ ? true
2941
+ : StaticConfig['isInput'] extends true
2942
+ ? true
2943
+ : false
2944
+ >
2945
+ >,
2946
+ Val = any,
2947
+ > = VariantDefinitionFromProps<MyProps, Val> & {
2948
+ _isEmpty?: 1
2949
+ }
2950
+
2951
+ export type GetVariantProps<
2952
+ A extends StylableComponent,
2953
+ IsText extends boolean | undefined,
2954
+ > = A extends {
2955
+ __tama: [
2956
+ infer Props,
2957
+ any,
2958
+ infer NonStyledProps,
2959
+ infer BaseStyles,
2960
+ infer VariantProps,
2961
+ any,
2962
+ ]
2963
+ }
2964
+ ? Props extends TamaDefer
2965
+ ? GetFinalProps<NonStyledProps, BaseStyles, VariantProps>
2966
+ : Props
2967
+ : WithThemeShorthandsPseudosMedia<
2968
+ IsText extends true ? TextStylePropsBase : StackStyleBase
2969
+ >
2970
+
2971
+ export type VariantDefinitionFromProps<MyProps, Val> = MyProps extends object
2972
+ ? {
2973
+ [propName: string]:
2974
+ | VariantSpreadFunction<MyProps, Val>
2975
+ | ({
2976
+ [Key in SpreadKeys]?: Key extends '...fontSize'
2977
+ ? FontSizeVariantSpreadFunction<MyProps>
2978
+ : Key extends '...size'
2979
+ ? SizeVariantSpreadFunction<MyProps>
2980
+ : Key extends '...space'
2981
+ ? SpaceVariantSpreadFunction<MyProps>
2982
+ : Key extends '...color'
2983
+ ? ColorVariantSpreadFunction<MyProps>
2984
+ : Key extends '...lineHeight'
2985
+ ? FontLineHeightVariantSpreadFunction<MyProps>
2986
+ : Key extends '...fontTransform'
2987
+ ? FontTransformVariantSpreadFunction<MyProps>
2988
+ : Key extends '...fontStyle'
2989
+ ? FontStyleVariantSpreadFunction<MyProps>
2990
+ : Key extends '...letterSpacing'
2991
+ ? FontLetterSpacingVariantSpreadFunction<MyProps>
2992
+ : Key extends '...zIndex'
2993
+ ? ZIndexVariantSpreadFunction<MyProps>
2994
+ : Key extends '...radius'
2995
+ ? RadiusVariantSpreadFunction<MyProps>
2996
+ : Key extends '...theme'
2997
+ ? ThemeVariantSpreadFunction<MyProps>
2998
+ : never
2999
+ } & {
3000
+ [Key in string | number | 'true' | 'false']?:
3001
+ | MyProps
3002
+ | VariantSpreadFunction<MyProps, Val>
3003
+ } & {
3004
+ [Key in VariantTypeKeys]?: Key extends ':number'
3005
+ ? VariantSpreadFunction<MyProps, number>
3006
+ : Key extends ':boolean'
3007
+ ? VariantSpreadFunction<MyProps, boolean>
3008
+ : Key extends ':string'
3009
+ ? VariantSpreadFunction<MyProps, string>
3010
+ : never
3011
+ })
3012
+ }
3013
+ : {}
3014
+
3015
+ export type GenericStackVariants = VariantDefinitionFromProps<
3016
+ StackNonStyleProps & StackStyle,
3017
+ any
3018
+ >
3019
+ export type GenericTextVariants = VariantDefinitionFromProps<TextProps, any>
3020
+
3021
+ export type VariantSpreadExtras<Props> = {
3022
+ fonts: HanzoguiConfig['fonts']
3023
+ tokens: TokensParsed
3024
+ theme: Themes extends { [key: string]: infer B } ? B : unknown
3025
+ props: Props
3026
+ fontFamily?: FontFamilyTokens
3027
+ font?: Font
3028
+ }
3029
+
3030
+ type PropLike = { [key: string]: any }
3031
+
3032
+ export type VariantSpreadFunction<Props extends PropLike, Val = any> = (
3033
+ val: Val,
3034
+ config: VariantSpreadExtras<Props>
3035
+ ) =>
3036
+ | {
3037
+ [Key in keyof Props]: Props[Key] | Variable | VariableVal
3038
+ }
3039
+ | null
3040
+ | undefined
3041
+
3042
+ export type VariantTypeKeys = ':string' | ':boolean' | ':number'
3043
+
3044
+ export type GetVariantValues<Key> = Key extends `...${infer VariantSpread}`
3045
+ ? ThemeValueByCategory<VariantSpread>
3046
+ : Key extends 'true' | 'false'
3047
+ ? boolean
3048
+ : Key extends ':string'
3049
+ ? string
3050
+ : Key extends ':boolean'
3051
+ ? boolean
3052
+ : Key extends ':number'
3053
+ ? number
3054
+ : Key
3055
+
3056
+ export type FontSizeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3057
+ A,
3058
+ FontSizeTokens
3059
+ >
3060
+ export type SizeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3061
+ A,
3062
+ SizeTokens
3063
+ >
3064
+ export type SpaceVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3065
+ A,
3066
+ SpaceTokens
3067
+ >
3068
+ export type ColorVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3069
+ A,
3070
+ ColorTokens
3071
+ >
3072
+ export type FontLineHeightVariantSpreadFunction<A extends PropLike> =
3073
+ VariantSpreadFunction<A, FontLineHeightTokens>
3074
+ export type FontLetterSpacingVariantSpreadFunction<A extends PropLike> =
3075
+ VariantSpreadFunction<A, FontLetterSpacingTokens>
3076
+ export type FontStyleVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3077
+ A,
3078
+ FontStyleTokens
3079
+ >
3080
+ export type FontTransformVariantSpreadFunction<A extends PropLike> =
3081
+ VariantSpreadFunction<A, FontTransformTokens>
3082
+ export type ZIndexVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3083
+ A,
3084
+ ZIndexTokens
3085
+ >
3086
+ export type RadiusVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3087
+ A,
3088
+ RadiusTokens
3089
+ >
3090
+ export type ThemeVariantSpreadFunction<A extends PropLike> = VariantSpreadFunction<
3091
+ A,
3092
+ ThemeTokens
3093
+ >
3094
+
3095
+ /**
3096
+ * --------------------------------------------
3097
+ * end variants
3098
+ * --------------------------------------------
3099
+ */
3100
+
3101
+ export type ResolveVariableAs =
3102
+ | 'auto'
3103
+ | 'value'
3104
+ | 'variable'
3105
+ | 'none'
3106
+ | 'web'
3107
+ | 'except-theme'
3108
+
3109
+ export type SplitStyleProps = {
3110
+ styledContext?: Record<string, any>
3111
+ mediaState?: Record<string, boolean>
3112
+ noClass?: boolean
3113
+ noExpand?: boolean
3114
+ noNormalize?: boolean | 'values'
3115
+ noSkip?: boolean
3116
+ noMergeStyle?: boolean
3117
+ resolveValues?: ResolveVariableAs
3118
+ disableExpandShorthands?: boolean
3119
+ fallbackProps?: Record<string, any>
3120
+ hasTextAncestor?: boolean
3121
+ // for animations
3122
+ willBeAnimated?: boolean // we need to track media queries even before animation
3123
+ isAnimated: boolean
3124
+ isExiting?: boolean
3125
+ exitVariant?: string
3126
+ enterVariant?: string
3127
+ }
3128
+
3129
+ // Presence
3130
+
3131
+ export interface PresenceContextProps {
3132
+ id: string
3133
+ isPresent: boolean
3134
+ register: (id: string) => () => void
3135
+ onExitComplete?: (id: string) => void
3136
+ initial?: false | string | string[]
3137
+ custom?: any
3138
+ exitVariant?: string | null
3139
+ enterVariant?: string | null
3140
+ enterExitVariant?: string | null
3141
+ }
3142
+
3143
+ type SafeToRemoveCallback = () => void
3144
+ type AlwaysPresent = [true, null, null]
3145
+ type Present = [true, undefined, PresenceContextProps]
3146
+ type NotPresent = [false, SafeToRemoveCallback, PresenceContextProps]
3147
+
3148
+ export type UsePresenceResult = AlwaysPresent | Present | NotPresent
3149
+
3150
+ // Animations:
3151
+
3152
+ type AnimationConfig = {
3153
+ [key: string]: any
3154
+ }
3155
+
3156
+ // includes a very limited adapter between various impls for number => style
3157
+ // this is useful only in limited scenarios like `Sheet`, but necessary in those cases
3158
+ // TODO: make css driver compatible with this?
3159
+
3160
+ export type AnimatedNumberStrategy =
3161
+ // only values shared between reanimated/react-native for now
3162
+ | {
3163
+ type: 'spring'
3164
+ stiffness?: number
3165
+ damping?: number
3166
+ mass?: number
3167
+ overshootClamping?: boolean
3168
+ restSpeedThreshold?: number
3169
+ restDisplacementThreshold?: number
3170
+ }
3171
+ | { type: 'timing'; duration: number }
3172
+ | { type: 'direct' }
3173
+
3174
+ export type UniversalAnimatedNumber<A> = {
3175
+ getInstance(): A
3176
+ getValue(): number
3177
+ setValue(next: number, config?: AnimatedNumberStrategy, onFinished?: () => void): void
3178
+ stop(): void
3179
+ }
3180
+
3181
+ export type UseAnimatedNumberReaction<
3182
+ V extends UniversalAnimatedNumber<any> = UniversalAnimatedNumber<any>,
3183
+ > = (
3184
+ opts: {
3185
+ value: V
3186
+ hostRef: RefObject<HanzoguiElement>
3187
+ },
3188
+ onValue: (current: number) => void
3189
+ ) => void
3190
+
3191
+ export type UseAnimatedNumberStyle<
3192
+ V extends UniversalAnimatedNumber<any> = UniversalAnimatedNumber<any>,
3193
+ > = (val: V, getStyle: (current: any) => any) => any
3194
+
3195
+ export type UseAnimatedNumbersStyle<
3196
+ V extends UniversalAnimatedNumber<any> = UniversalAnimatedNumber<any>,
3197
+ > = (vals: V[], getStyle: (...currentValues: any[]) => any) => any
3198
+
3199
+ export type UseAnimatedNumber<
3200
+ N extends UniversalAnimatedNumber<any> = UniversalAnimatedNumber<any>,
3201
+ > = (initial: number) => N
3202
+
3203
+ export type AnimationDriver<A extends AnimationConfig = AnimationConfig> = {
3204
+ isReactNative?: boolean
3205
+ /** What style format the driver expects as input: 'css' (CSS variables) or 'value' (resolved values) */
3206
+ inputStyle?: 'css' | 'value'
3207
+ /** How the driver outputs styles: 'css' (className-based) or 'inline' (style object) */
3208
+ outputStyle?: 'css' | 'inline'
3209
+ needsCustomComponent?: boolean
3210
+ avoidReRenders?: boolean
3211
+ onMount?: () => void
3212
+ /** When true, this is a stub driver with no real animation support */
3213
+ isStub?: boolean
3214
+ useAnimations: UseAnimationHook
3215
+ usePresence: () => UsePresenceResult
3216
+ ResetPresence: (props: {
3217
+ children?: React.ReactNode
3218
+ disabled?: boolean
3219
+ }) => React.ReactNode
3220
+ useAnimatedNumber: UseAnimatedNumber
3221
+ useAnimatedNumberStyle: UseAnimatedNumberStyle
3222
+ useAnimatedNumbersStyle?: UseAnimatedNumbersStyle
3223
+ useAnimatedNumberReaction: UseAnimatedNumberReaction
3224
+ animations: A
3225
+ View?: any
3226
+ Text?: any
3227
+ }
3228
+
3229
+ export type UseAnimationProps = HanzoguiComponentPropsBase & Record<string, any>
3230
+
3231
+ type UseStyleListener = (
3232
+ nextStyle: Record<string, unknown>,
3233
+ effectiveTransition?: TransitionProp | null
3234
+ ) => void
3235
+ export type UseStyleEmitter = (cb: UseStyleListener) => void
3236
+
3237
+ export type UseAnimationHook = (props: {
3238
+ style: Record<string, any>
3239
+ props: Record<string, any>
3240
+ presence?: UsePresenceResult | null
3241
+ staticConfig: StaticConfig
3242
+ styleProps: SplitStyleProps
3243
+ componentState: HanzoguiComponentState
3244
+ useStyleEmitter?: UseStyleEmitter
3245
+ theme: ThemeParsed
3246
+ themeName: string
3247
+ pseudos: WithPseudoProps<ViewStyle> | null
3248
+ stateRef: { current: HanzoguiComponentStateRef }
3249
+ onDidAnimate?: any
3250
+ delay?: number
3251
+ }) => null | {
3252
+ style?: StackStyleBase | StackStyleBase[]
3253
+ className?: string
3254
+ ref?: any
3255
+ }
3256
+
3257
+ export type GestureReponderEvent =
3258
+ Exclude<View['props']['onResponderMove'], void> extends (event: infer Event) => void
3259
+ ? Event
3260
+ : never
3261
+
3262
+ export type RulesToInsert = Record<string, StyleObject>
3263
+
3264
+ export type GetStyleResult = {
3265
+ pseudos?: PseudoStyles | null
3266
+ style: ViewStyle | null
3267
+ classNames: ClassNamesObject
3268
+ rulesToInsert: RulesToInsert
3269
+ viewProps: (StackNonStyleProps & StackStyle) & Record<string, any>
3270
+ fontFamily: string | undefined
3271
+ space?: any // SpaceTokens?
3272
+ hasMedia: boolean | Set<string>
3273
+ dynamicThemeAccess?: boolean
3274
+ pseudoGroups?: Set<string>
3275
+ mediaGroups?: Set<string>
3276
+ // Style values that override context props (for issues #3670, #3676)
3277
+ overriddenContextProps?: Record<string, any>
3278
+ // Transitions extracted from pseudo-style props (e.g., hoverStyle.transition)
3279
+ pseudoTransitions?: PseudoTransitions | null
3280
+ // Effective transition to use (accounts for entering pseudo states)
3281
+ effectiveTransition?: TransitionProp | null
3282
+ }
3283
+
3284
+ export type ClassNamesObject = Record<string, string>
3285
+
3286
+ export type ModifyHanzoguiComponentStyleProps<
3287
+ Comp extends HanzoguiComponent,
3288
+ ChangedProps extends object,
3289
+ > =
3290
+ Comp extends HanzoguiComponent<infer A, infer B, infer C, infer D, infer E>
3291
+ ? A extends object
3292
+ ? HanzoguiComponent<Omit<A, keyof ChangedProps> & ChangedProps, B, C, D, E>
3293
+ : never
3294
+ : never
3295
+
3296
+ /**
3297
+ * Narrow copied from ts-toolbelt
3298
+ * https://github.com/millsp/ts-toolbelt/blob/master/sources/Function/Narrow.ts
3299
+ */
3300
+ export type Try<A1, A2, Catch = never> = A1 extends A2 ? A1 : Catch
3301
+
3302
+ type Narrowable = string | number | bigint | boolean
3303
+
3304
+ type NarrowRaw<A> =
3305
+ | (A extends [] ? [] : never)
3306
+ | (A extends Narrowable ? A : never)
3307
+ | {
3308
+ [K in keyof A]: A[K] extends Function ? A[K] : NarrowRaw<A[K]>
3309
+ }
3310
+
3311
+ export type Narrow<A> = Try<A, [], NarrowRaw<A>>
3312
+
3313
+ /**
3314
+ * `StyleProp` copied from React Native:
3315
+ * Exported to fix https://github.com/hanzoai/gui/issues/1258
3316
+ */
3317
+
3318
+ export type Falsy = undefined | null | false | ''
3319
+ export interface RecursiveArray<T> extends Array<
3320
+ T | ReadonlyArray<T> | RecursiveArray<T>
3321
+ > {}
3322
+ /** Keep a brand of 'T' so that calls to `StyleSheet.flatten` can take `RegisteredStyle<T>` and return `T`. */
3323
+
3324
+ export type RegisteredStyle<T> = number & { __registeredStyleBrand: T }
3325
+
3326
+ export type StyleProp<T> =
3327
+ | T
3328
+ | RegisteredStyle<T>
3329
+ | RecursiveArray<T | RegisteredStyle<T> | Falsy>
3330
+ | Falsy
3331
+
3332
+ export type FillInFont<A extends GenericFont, DefaultKeys extends string | number> = {
3333
+ family: string
3334
+ lineHeight: FillInFontValues<A, 'lineHeight', DefaultKeys>
3335
+ weight: FillInFontValues<A, 'weight', DefaultKeys>
3336
+ letterSpacing: FillInFontValues<A, 'letterSpacing', DefaultKeys>
3337
+ size: FillInFontValues<A, 'size', DefaultKeys>
3338
+ style: FillInFontValues<A, 'style', DefaultKeys>
3339
+ transform: FillInFontValues<A, 'transform', DefaultKeys>
3340
+ color: FillInFontValues<A, 'color', DefaultKeys>
3341
+ face: Partial<A['face']>
3342
+ }
3343
+
3344
+ type FillInFontValues<
3345
+ A extends GenericFont,
3346
+ K extends keyof A,
3347
+ DefaultKeys extends string | number,
3348
+ > = keyof A[K] extends GenericFontKey
3349
+ ? {
3350
+ [Key in DefaultKeys]: A[K][any]
3351
+ }
3352
+ : {
3353
+ [Key in keyof A[K] | DefaultKeys]: Key extends keyof A[K]
3354
+ ? Exclude<A[K][Key], Variable>
3355
+ : any
3356
+ }
3357
+
3358
+ export type ThemesLikeObject = Record<string, Record<string, string>>
3359
+
3360
+ // dedupe themes to avoid duplicate CSS generation
3361
+ export type DedupedTheme = {
3362
+ names: string[]
3363
+ theme: ThemeParsed
3364
+ }
3365
+
3366
+ export type DedupedThemes = DedupedTheme[]
3367
+
3368
+ export type UseMediaState = {
3369
+ [key in MediaQueryKey]: boolean
3370
+ }
3371
+
3372
+ export type TamaDefer = { __tamaDefer: true }