@ankhorage/zora 11.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +2 -1
  3. package/dist/constants.d.ts +5 -0
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +12 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthForm.d.ts +3 -3
  8. package/dist/features/auth/adapters/inbound/AuthForm.d.ts.map +1 -0
  9. package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthForm.js +2 -2
  10. package/dist/features/auth/adapters/inbound/AuthForm.js.map +1 -0
  11. package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.d.ts +2 -2
  12. package/dist/features/auth/adapters/inbound/AuthFormField.d.ts.map +1 -0
  13. package/dist/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.js +2 -2
  14. package/dist/features/auth/adapters/inbound/AuthFormField.js.map +1 -0
  15. package/dist/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.d.ts +1 -1
  16. package/dist/features/auth/adapters/inbound/ForgotPasswordForm.d.ts.map +1 -0
  17. package/dist/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.js +5 -5
  18. package/dist/features/auth/adapters/inbound/ForgotPasswordForm.js.map +1 -0
  19. package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.d.ts +1 -1
  20. package/dist/features/auth/adapters/inbound/OAuthProviderButton.d.ts.map +1 -0
  21. package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.js +3 -3
  22. package/dist/features/auth/adapters/inbound/OAuthProviderButton.js.map +1 -0
  23. package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.d.ts +1 -1
  24. package/dist/features/auth/adapters/inbound/OAuthProviderList.d.ts.map +1 -0
  25. package/dist/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.js +2 -2
  26. package/dist/features/auth/adapters/inbound/OAuthProviderList.js.map +1 -0
  27. package/dist/{patterns/auth → features/auth/adapters/inbound}/OtpForm.d.ts +1 -1
  28. package/dist/features/auth/adapters/inbound/OtpForm.d.ts.map +1 -0
  29. package/dist/{patterns/auth → features/auth/adapters/inbound}/OtpForm.js +4 -4
  30. package/dist/features/auth/adapters/inbound/OtpForm.js.map +1 -0
  31. package/dist/{patterns/auth → features/auth/adapters/inbound}/SignInForm.d.ts +1 -1
  32. package/dist/features/auth/adapters/inbound/SignInForm.d.ts.map +1 -0
  33. package/dist/{patterns/auth → features/auth/adapters/inbound}/SignInForm.js +5 -5
  34. package/dist/features/auth/adapters/inbound/SignInForm.js.map +1 -0
  35. package/dist/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.d.ts +1 -1
  36. package/dist/features/auth/adapters/inbound/SignUpForm.d.ts.map +1 -0
  37. package/dist/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.js +3 -3
  38. package/dist/features/auth/adapters/inbound/SignUpForm.js.map +1 -0
  39. package/dist/features/auth/forgotPasswordFormMeta.d.ts +79 -0
  40. package/dist/features/auth/forgotPasswordFormMeta.d.ts.map +1 -0
  41. package/dist/features/auth/forgotPasswordFormMeta.js +48 -0
  42. package/dist/features/auth/forgotPasswordFormMeta.js.map +1 -0
  43. package/dist/features/auth/oauthProviderButtonMeta.d.ts +83 -0
  44. package/dist/features/auth/oauthProviderButtonMeta.d.ts.map +1 -0
  45. package/dist/features/auth/oauthProviderButtonMeta.js +61 -0
  46. package/dist/features/auth/oauthProviderButtonMeta.js.map +1 -0
  47. package/dist/features/auth/oauthProviderListMeta.d.ts +109 -0
  48. package/dist/features/auth/oauthProviderListMeta.d.ts.map +1 -0
  49. package/dist/features/auth/oauthProviderListMeta.js +66 -0
  50. package/dist/features/auth/oauthProviderListMeta.js.map +1 -0
  51. package/dist/features/auth/otpFormMeta.d.ts +89 -0
  52. package/dist/features/auth/otpFormMeta.d.ts.map +1 -0
  53. package/dist/features/auth/otpFormMeta.js +54 -0
  54. package/dist/features/auth/otpFormMeta.js.map +1 -0
  55. package/dist/features/auth/public.d.ts +9 -0
  56. package/dist/features/auth/public.d.ts.map +1 -0
  57. package/dist/features/auth/public.js +8 -0
  58. package/dist/features/auth/public.js.map +1 -0
  59. package/dist/features/auth/signInFormMeta.d.ts +100 -0
  60. package/dist/features/auth/signInFormMeta.d.ts.map +1 -0
  61. package/dist/features/auth/signInFormMeta.js +62 -0
  62. package/dist/features/auth/signInFormMeta.js.map +1 -0
  63. package/dist/features/auth/signUpFormMeta.d.ts +111 -0
  64. package/dist/features/auth/signUpFormMeta.d.ts.map +1 -0
  65. package/dist/features/auth/signUpFormMeta.js +66 -0
  66. package/dist/features/auth/signUpFormMeta.js.map +1 -0
  67. package/dist/{patterns/auth/utils.d.ts → features/auth/utils/authForm.d.ts} +3 -3
  68. package/dist/features/auth/utils/authForm.d.ts.map +1 -0
  69. package/dist/{patterns/auth/utils.js → features/auth/utils/authForm.js} +1 -1
  70. package/dist/features/auth/utils/authForm.js.map +1 -0
  71. package/dist/{patterns/auth → features/auth/utils}/oauthProviders.d.ts +1 -1
  72. package/dist/features/auth/utils/oauthProviders.d.ts.map +1 -0
  73. package/dist/features/auth/utils/oauthProviders.js.map +1 -0
  74. package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
  75. package/dist/features/card/cardMeta.d.ts +1 -1
  76. package/dist/features/card/mediaCardMeta.d.ts +1 -1
  77. package/dist/features/card/postCardMeta.d.ts +1 -1
  78. package/dist/features/data-table/adapters/inbound/DataTable.d.ts.map +1 -1
  79. package/dist/features/data-table/adapters/inbound/DataTable.js +1 -1
  80. package/dist/features/data-table/adapters/inbound/DataTable.js.map +1 -1
  81. package/dist/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.d.ts +1 -1
  82. package/dist/features/date-picker/adapters/inbound/DatePicker.d.ts.map +1 -0
  83. package/dist/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.js +23 -26
  84. package/dist/features/date-picker/adapters/inbound/DatePicker.js.map +1 -0
  85. package/dist/features/date-picker/datePickerMeta.d.ts +83 -0
  86. package/dist/features/date-picker/datePickerMeta.d.ts.map +1 -0
  87. package/dist/features/date-picker/datePickerMeta.js +57 -0
  88. package/dist/features/date-picker/datePickerMeta.js.map +1 -0
  89. package/dist/features/date-picker/public.d.ts +3 -0
  90. package/dist/features/date-picker/public.d.ts.map +1 -0
  91. package/dist/features/date-picker/public.js +2 -0
  92. package/dist/features/date-picker/public.js.map +1 -0
  93. package/dist/features/date-picker/utils/localDate.d.ts +5 -0
  94. package/dist/features/date-picker/utils/localDate.d.ts.map +1 -0
  95. package/dist/features/date-picker/utils/localDate.js +27 -0
  96. package/dist/features/date-picker/utils/localDate.js.map +1 -0
  97. package/dist/{components/gradient → features/gradient/adapters/inbound}/Gradient.d.ts +1 -1
  98. package/dist/features/gradient/adapters/inbound/Gradient.d.ts.map +1 -0
  99. package/dist/{components/gradient → features/gradient/adapters/inbound}/Gradient.js +2 -2
  100. package/dist/features/gradient/adapters/inbound/Gradient.js.map +1 -0
  101. package/dist/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.d.ts +3 -2
  102. package/dist/features/gradient/adapters/inbound/GradientRendererContext.d.ts.map +1 -0
  103. package/dist/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.js +2 -1
  104. package/dist/features/gradient/adapters/inbound/GradientRendererContext.js.map +1 -0
  105. package/dist/features/gradient/gradientMeta.d.ts +48 -0
  106. package/dist/features/gradient/gradientMeta.d.ts.map +1 -0
  107. package/dist/features/gradient/gradientMeta.js +25 -0
  108. package/dist/features/gradient/gradientMeta.js.map +1 -0
  109. package/dist/features/gradient/public.d.ts +4 -0
  110. package/dist/features/gradient/public.d.ts.map +1 -0
  111. package/dist/features/gradient/public.js +3 -0
  112. package/dist/features/gradient/public.js.map +1 -0
  113. package/dist/{patterns/hero → features/hero/adapters/inbound}/Hero.d.ts +1 -1
  114. package/dist/features/hero/adapters/inbound/Hero.d.ts.map +1 -0
  115. package/dist/{patterns/hero → features/hero/adapters/inbound}/Hero.js +5 -6
  116. package/dist/features/hero/adapters/inbound/Hero.js.map +1 -0
  117. package/dist/{patterns/hero/meta.d.ts → features/hero/heroMeta.d.ts} +1 -1
  118. package/dist/features/hero/heroMeta.d.ts.map +1 -0
  119. package/dist/{patterns/hero/meta.js → features/hero/heroMeta.js} +1 -1
  120. package/dist/features/hero/heroMeta.js.map +1 -0
  121. package/dist/features/hero/public.d.ts +3 -0
  122. package/dist/features/hero/public.d.ts.map +1 -0
  123. package/dist/features/hero/public.js +2 -0
  124. package/dist/features/hero/public.js.map +1 -0
  125. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
  126. package/dist/features/layout/boxMeta.d.ts +1 -1
  127. package/dist/features/layout/containerMeta.d.ts +1 -1
  128. package/dist/features/layout/gridMeta.d.ts +1 -1
  129. package/dist/features/layout/stackMeta.d.ts +1 -1
  130. package/dist/features/list/flatListMeta.d.ts +1 -1
  131. package/dist/features/list/sectionListMeta.d.ts +1 -1
  132. package/dist/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.d.ts +1 -1
  133. package/dist/features/missing-element/adapters/inbound/MissingElement.d.ts.map +1 -0
  134. package/dist/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.js +5 -5
  135. package/dist/features/missing-element/adapters/inbound/MissingElement.js.map +1 -0
  136. package/dist/{patterns/missing-element/meta.d.ts → features/missing-element/missingElementMeta.d.ts} +1 -1
  137. package/dist/features/missing-element/missingElementMeta.d.ts.map +1 -0
  138. package/dist/{patterns/missing-element/meta.js → features/missing-element/missingElementMeta.js} +1 -1
  139. package/dist/features/missing-element/missingElementMeta.js.map +1 -0
  140. package/dist/features/missing-element/public.d.ts +3 -0
  141. package/dist/features/missing-element/public.d.ts.map +1 -0
  142. package/dist/features/missing-element/public.js +2 -0
  143. package/dist/features/missing-element/public.js.map +1 -0
  144. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.d.ts +1 -1
  145. package/dist/features/skeleton/adapters/inbound/Skeleton.d.ts.map +1 -0
  146. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.js +3 -3
  147. package/dist/features/skeleton/adapters/inbound/Skeleton.js.map +1 -0
  148. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.d.ts +1 -1
  149. package/dist/features/skeleton/adapters/inbound/SkeletonCard.d.ts.map +1 -0
  150. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.js +4 -4
  151. package/dist/features/skeleton/adapters/inbound/SkeletonCard.js.map +1 -0
  152. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.d.ts +1 -1
  153. package/dist/features/skeleton/adapters/inbound/SkeletonList.d.ts.map +1 -0
  154. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.js +2 -2
  155. package/dist/features/skeleton/adapters/inbound/SkeletonList.js.map +1 -0
  156. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.d.ts +1 -1
  157. package/dist/features/skeleton/adapters/inbound/SkeletonText.d.ts.map +1 -0
  158. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.js +2 -2
  159. package/dist/features/skeleton/adapters/inbound/SkeletonText.js.map +1 -0
  160. package/dist/features/skeleton/public.d.ts +6 -0
  161. package/dist/features/skeleton/public.d.ts.map +1 -0
  162. package/dist/features/skeleton/public.js +5 -0
  163. package/dist/features/skeleton/public.js.map +1 -0
  164. package/dist/features/skeleton/skeletonMeta.d.ts +178 -0
  165. package/dist/features/skeleton/skeletonMeta.d.ts.map +1 -0
  166. package/dist/features/skeleton/skeletonMeta.js +84 -0
  167. package/dist/features/skeleton/skeletonMeta.js.map +1 -0
  168. package/dist/features/surface/surfaceMeta.d.ts +1 -1
  169. package/dist/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.d.ts +1 -1
  170. package/dist/features/time-picker/adapters/inbound/TimePicker.d.ts.map +1 -0
  171. package/dist/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.js +8 -11
  172. package/dist/features/time-picker/adapters/inbound/TimePicker.js.map +1 -0
  173. package/dist/features/time-picker/public.d.ts +3 -0
  174. package/dist/features/time-picker/public.d.ts.map +1 -0
  175. package/dist/features/time-picker/public.js +2 -0
  176. package/dist/features/time-picker/public.js.map +1 -0
  177. package/dist/features/time-picker/timePickerMeta.d.ts +90 -0
  178. package/dist/features/time-picker/timePickerMeta.d.ts.map +1 -0
  179. package/dist/features/time-picker/timePickerMeta.js +64 -0
  180. package/dist/features/time-picker/timePickerMeta.js.map +1 -0
  181. package/dist/index.d.ts +9 -14
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +7 -7
  184. package/dist/index.js.map +1 -1
  185. package/dist/layout/screen/meta.d.ts +1 -1
  186. package/dist/layout/screen-section/meta.d.ts +1 -1
  187. package/dist/metadata/allowedChildren.d.ts +3 -3
  188. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  189. package/dist/metadata/allowedChildren.js +14 -0
  190. package/dist/metadata/allowedChildren.js.map +1 -1
  191. package/dist/metadata/bindableComponentMeta.d.ts +2 -2
  192. package/dist/metadata/componentMeta.d.ts.map +1 -1
  193. package/dist/metadata/componentMeta.js +12 -7
  194. package/dist/metadata/componentMeta.js.map +1 -1
  195. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  196. package/dist/patterns/notice/meta.d.ts +1 -1
  197. package/dist/patterns/panel/meta.d.ts +1 -1
  198. package/dist/patterns/reader/meta.d.ts +2 -2
  199. package/dist/patterns/scanner/meta.d.ts +2 -2
  200. package/dist/registry.js +7 -7
  201. package/dist/registry.js.map +1 -1
  202. package/dist/{patterns/auth/types.d.ts → types/auth.d.ts} +8 -8
  203. package/dist/types/auth.d.ts.map +1 -0
  204. package/dist/types/auth.js +2 -0
  205. package/dist/types/auth.js.map +1 -0
  206. package/dist/{components/date-picker/types.d.ts → types/date-picker.d.ts} +6 -6
  207. package/dist/types/date-picker.d.ts.map +1 -0
  208. package/dist/types/date-picker.js +2 -0
  209. package/dist/types/date-picker.js.map +1 -0
  210. package/dist/{components/gradient/types.d.ts → types/gradient.d.ts} +3 -3
  211. package/dist/types/gradient.d.ts.map +1 -0
  212. package/dist/types/gradient.js +2 -0
  213. package/dist/types/gradient.js.map +1 -0
  214. package/dist/{patterns/hero/types.d.ts → types/hero.d.ts} +3 -3
  215. package/dist/types/hero.d.ts.map +1 -0
  216. package/dist/types/hero.js +2 -0
  217. package/dist/types/hero.js.map +1 -0
  218. package/dist/{patterns/missing-element/types.d.ts → types/missing-element.d.ts} +2 -2
  219. package/dist/types/missing-element.d.ts.map +1 -0
  220. package/dist/types/missing-element.js +2 -0
  221. package/dist/types/missing-element.js.map +1 -0
  222. package/dist/{components/skeleton/types.d.ts → types/skeleton.d.ts} +3 -3
  223. package/dist/types/skeleton.d.ts.map +1 -0
  224. package/dist/types/skeleton.js +2 -0
  225. package/dist/types/skeleton.js.map +1 -0
  226. package/dist/{components/time-picker/types.d.ts → types/time-picker.d.ts} +2 -2
  227. package/dist/types/time-picker.d.ts.map +1 -0
  228. package/dist/types/time-picker.js +2 -0
  229. package/dist/types/time-picker.js.map +1 -0
  230. package/package.json +1 -1
  231. package/src/constants.ts +12 -0
  232. package/src/expo57Migration.test.ts +1 -1
  233. package/src/featureManifest.test.ts +14 -0
  234. package/src/{patterns/auth → features/auth/adapters/inbound}/AuthForm.tsx +5 -5
  235. package/src/{patterns/auth → features/auth/adapters/inbound}/AuthFormField.tsx +4 -4
  236. package/src/{patterns/auth → features/auth/adapters/inbound}/ForgotPasswordForm.tsx +8 -8
  237. package/src/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderButton.tsx +4 -4
  238. package/src/{patterns/auth → features/auth/adapters/inbound}/OAuthProviderList.tsx +3 -3
  239. package/src/{patterns/auth → features/auth/adapters/inbound}/OtpForm.tsx +6 -6
  240. package/src/{patterns/auth → features/auth/adapters/inbound}/SignInForm.tsx +8 -8
  241. package/src/{patterns/auth → features/auth/adapters/inbound}/SignUpForm.tsx +5 -5
  242. package/src/features/auth/forgotPasswordFormMeta.ts +49 -0
  243. package/src/features/auth/oauthProviderButtonMeta.ts +62 -0
  244. package/src/features/auth/oauthProviderListMeta.ts +67 -0
  245. package/src/features/auth/otpFormMeta.ts +55 -0
  246. package/src/features/auth/public.test.ts +34 -0
  247. package/src/{patterns/auth/index.ts → features/auth/public.ts} +12 -12
  248. package/src/features/auth/signInFormMeta.ts +63 -0
  249. package/src/features/auth/signUpFormMeta.ts +67 -0
  250. package/src/{patterns/auth/utils.ts → features/auth/utils/authForm.ts} +2 -2
  251. package/src/{patterns/auth → features/auth/utils}/oauthProviders.test.ts +1 -1
  252. package/src/{patterns/auth → features/auth/utils}/oauthProviders.ts +1 -1
  253. package/src/features/bottom-sheet/public.test.ts +2 -2
  254. package/src/features/data-table/adapters/inbound/DataTable.tsx +1 -1
  255. package/src/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.tsx +41 -32
  256. package/src/features/date-picker/datePickerMeta.ts +58 -0
  257. package/src/features/date-picker/public.test.ts +15 -0
  258. package/src/features/date-picker/public.ts +2 -0
  259. package/src/features/date-picker/utils/localDate.test.ts +18 -0
  260. package/src/features/date-picker/utils/localDate.ts +29 -0
  261. package/src/{components/gradient → features/gradient/adapters/inbound}/Gradient.tsx +3 -3
  262. package/src/{components/gradient → features/gradient/adapters/inbound}/GradientRendererContext.tsx +3 -2
  263. package/src/features/gradient/gradientMeta.ts +26 -0
  264. package/src/features/gradient/public.test.ts +15 -0
  265. package/src/{components/gradient/index.ts → features/gradient/public.ts} +3 -3
  266. package/src/{patterns/hero → features/hero/adapters/inbound}/Hero.tsx +6 -7
  267. package/src/features/hero/public.ts +2 -0
  268. package/src/{patterns → features}/missing-element/MissingElement.test.ts +6 -4
  269. package/src/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.tsx +6 -6
  270. package/src/features/missing-element/public.ts +2 -0
  271. package/src/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.tsx +4 -4
  272. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.tsx +5 -5
  273. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.tsx +3 -3
  274. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.tsx +3 -3
  275. package/src/features/skeleton/public.test.ts +24 -0
  276. package/src/features/skeleton/public.ts +13 -0
  277. package/src/features/skeleton/skeletonMeta.ts +88 -0
  278. package/src/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.tsx +9 -12
  279. package/src/features/time-picker/public.test.ts +14 -0
  280. package/src/features/time-picker/public.ts +2 -0
  281. package/src/features/time-picker/timePickerMeta.ts +65 -0
  282. package/src/index.ts +72 -58
  283. package/src/interactionPolicy.test.ts +3 -3
  284. package/src/metadata/allowedChildren.ts +14 -0
  285. package/src/metadata/componentMeta.test.ts +13 -0
  286. package/src/metadata/componentMeta.ts +17 -19
  287. package/src/registry.ts +14 -14
  288. package/src/theme/themeScopeStructure.test.ts +7 -5
  289. package/src/{patterns/auth/types.ts → types/auth.ts} +7 -7
  290. package/src/{components/date-picker/types.ts → types/date-picker.ts} +5 -5
  291. package/src/{components/gradient/types.ts → types/gradient.ts} +2 -2
  292. package/src/{patterns/hero/types.ts → types/hero.ts} +2 -2
  293. package/src/{patterns/missing-element/types.ts → types/missing-element.ts} +1 -1
  294. package/src/{components/skeleton/types.ts → types/skeleton.ts} +2 -2
  295. package/src/{components/time-picker/types.ts → types/time-picker.ts} +1 -1
  296. package/dist/components/date-picker/DatePicker.d.ts.map +0 -1
  297. package/dist/components/date-picker/DatePicker.js.map +0 -1
  298. package/dist/components/date-picker/index.d.ts +0 -3
  299. package/dist/components/date-picker/index.d.ts.map +0 -1
  300. package/dist/components/date-picker/index.js +0 -2
  301. package/dist/components/date-picker/index.js.map +0 -1
  302. package/dist/components/date-picker/meta.d.ts +0 -9
  303. package/dist/components/date-picker/meta.d.ts.map +0 -1
  304. package/dist/components/date-picker/meta.js +0 -9
  305. package/dist/components/date-picker/meta.js.map +0 -1
  306. package/dist/components/date-picker/types.d.ts.map +0 -1
  307. package/dist/components/date-picker/types.js +0 -2
  308. package/dist/components/date-picker/types.js.map +0 -1
  309. package/dist/components/gradient/Gradient.d.ts.map +0 -1
  310. package/dist/components/gradient/Gradient.js.map +0 -1
  311. package/dist/components/gradient/GradientRendererContext.d.ts.map +0 -1
  312. package/dist/components/gradient/GradientRendererContext.js.map +0 -1
  313. package/dist/components/gradient/index.d.ts +0 -4
  314. package/dist/components/gradient/index.d.ts.map +0 -1
  315. package/dist/components/gradient/index.js +0 -3
  316. package/dist/components/gradient/index.js.map +0 -1
  317. package/dist/components/gradient/meta.d.ts +0 -9
  318. package/dist/components/gradient/meta.d.ts.map +0 -1
  319. package/dist/components/gradient/meta.js +0 -9
  320. package/dist/components/gradient/meta.js.map +0 -1
  321. package/dist/components/gradient/types.d.ts.map +0 -1
  322. package/dist/components/gradient/types.js +0 -2
  323. package/dist/components/gradient/types.js.map +0 -1
  324. package/dist/components/skeleton/Skeleton.d.ts.map +0 -1
  325. package/dist/components/skeleton/Skeleton.js.map +0 -1
  326. package/dist/components/skeleton/SkeletonCard.d.ts.map +0 -1
  327. package/dist/components/skeleton/SkeletonCard.js.map +0 -1
  328. package/dist/components/skeleton/SkeletonList.d.ts.map +0 -1
  329. package/dist/components/skeleton/SkeletonList.js.map +0 -1
  330. package/dist/components/skeleton/SkeletonText.d.ts.map +0 -1
  331. package/dist/components/skeleton/SkeletonText.js.map +0 -1
  332. package/dist/components/skeleton/index.d.ts +0 -6
  333. package/dist/components/skeleton/index.d.ts.map +0 -1
  334. package/dist/components/skeleton/index.js +0 -5
  335. package/dist/components/skeleton/index.js.map +0 -1
  336. package/dist/components/skeleton/meta.d.ts +0 -33
  337. package/dist/components/skeleton/meta.d.ts.map +0 -1
  338. package/dist/components/skeleton/meta.js +0 -33
  339. package/dist/components/skeleton/meta.js.map +0 -1
  340. package/dist/components/skeleton/types.d.ts.map +0 -1
  341. package/dist/components/skeleton/types.js +0 -2
  342. package/dist/components/skeleton/types.js.map +0 -1
  343. package/dist/components/time-picker/TimePicker.d.ts.map +0 -1
  344. package/dist/components/time-picker/TimePicker.js.map +0 -1
  345. package/dist/components/time-picker/index.d.ts +0 -3
  346. package/dist/components/time-picker/index.d.ts.map +0 -1
  347. package/dist/components/time-picker/index.js +0 -2
  348. package/dist/components/time-picker/index.js.map +0 -1
  349. package/dist/components/time-picker/meta.d.ts +0 -9
  350. package/dist/components/time-picker/meta.d.ts.map +0 -1
  351. package/dist/components/time-picker/meta.js +0 -9
  352. package/dist/components/time-picker/meta.js.map +0 -1
  353. package/dist/components/time-picker/types.d.ts.map +0 -1
  354. package/dist/components/time-picker/types.js +0 -2
  355. package/dist/components/time-picker/types.js.map +0 -1
  356. package/dist/patterns/auth/AuthForm.d.ts.map +0 -1
  357. package/dist/patterns/auth/AuthForm.js.map +0 -1
  358. package/dist/patterns/auth/AuthFormField.d.ts.map +0 -1
  359. package/dist/patterns/auth/AuthFormField.js.map +0 -1
  360. package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +0 -1
  361. package/dist/patterns/auth/ForgotPasswordForm.js.map +0 -1
  362. package/dist/patterns/auth/OAuthProviderButton.d.ts.map +0 -1
  363. package/dist/patterns/auth/OAuthProviderButton.js.map +0 -1
  364. package/dist/patterns/auth/OAuthProviderList.d.ts.map +0 -1
  365. package/dist/patterns/auth/OAuthProviderList.js.map +0 -1
  366. package/dist/patterns/auth/OtpForm.d.ts.map +0 -1
  367. package/dist/patterns/auth/OtpForm.js.map +0 -1
  368. package/dist/patterns/auth/SignInForm.d.ts.map +0 -1
  369. package/dist/patterns/auth/SignInForm.js.map +0 -1
  370. package/dist/patterns/auth/SignUpForm.d.ts.map +0 -1
  371. package/dist/patterns/auth/SignUpForm.js.map +0 -1
  372. package/dist/patterns/auth/index.d.ts +0 -9
  373. package/dist/patterns/auth/index.d.ts.map +0 -1
  374. package/dist/patterns/auth/index.js +0 -8
  375. package/dist/patterns/auth/index.js.map +0 -1
  376. package/dist/patterns/auth/meta.d.ts +0 -49
  377. package/dist/patterns/auth/meta.d.ts.map +0 -1
  378. package/dist/patterns/auth/meta.js +0 -50
  379. package/dist/patterns/auth/meta.js.map +0 -1
  380. package/dist/patterns/auth/oauthProviders.d.ts.map +0 -1
  381. package/dist/patterns/auth/oauthProviders.js.map +0 -1
  382. package/dist/patterns/auth/types.d.ts.map +0 -1
  383. package/dist/patterns/auth/types.js +0 -2
  384. package/dist/patterns/auth/types.js.map +0 -1
  385. package/dist/patterns/auth/utils.d.ts.map +0 -1
  386. package/dist/patterns/auth/utils.js.map +0 -1
  387. package/dist/patterns/hero/Hero.d.ts.map +0 -1
  388. package/dist/patterns/hero/Hero.js.map +0 -1
  389. package/dist/patterns/hero/index.d.ts +0 -3
  390. package/dist/patterns/hero/index.d.ts.map +0 -1
  391. package/dist/patterns/hero/index.js +0 -2
  392. package/dist/patterns/hero/index.js.map +0 -1
  393. package/dist/patterns/hero/meta.d.ts.map +0 -1
  394. package/dist/patterns/hero/meta.js.map +0 -1
  395. package/dist/patterns/hero/types.d.ts.map +0 -1
  396. package/dist/patterns/hero/types.js +0 -2
  397. package/dist/patterns/hero/types.js.map +0 -1
  398. package/dist/patterns/missing-element/MissingElement.d.ts.map +0 -1
  399. package/dist/patterns/missing-element/MissingElement.js.map +0 -1
  400. package/dist/patterns/missing-element/index.d.ts +0 -3
  401. package/dist/patterns/missing-element/index.d.ts.map +0 -1
  402. package/dist/patterns/missing-element/index.js +0 -2
  403. package/dist/patterns/missing-element/index.js.map +0 -1
  404. package/dist/patterns/missing-element/meta.d.ts.map +0 -1
  405. package/dist/patterns/missing-element/meta.js.map +0 -1
  406. package/dist/patterns/missing-element/types.d.ts.map +0 -1
  407. package/dist/patterns/missing-element/types.js +0 -2
  408. package/dist/patterns/missing-element/types.js.map +0 -1
  409. package/src/components/date-picker/index.ts +0 -2
  410. package/src/components/date-picker/meta.ts +0 -10
  411. package/src/components/gradient/meta.ts +0 -10
  412. package/src/components/skeleton/index.ts +0 -13
  413. package/src/components/skeleton/meta.ts +0 -37
  414. package/src/components/time-picker/index.ts +0 -2
  415. package/src/components/time-picker/meta.ts +0 -10
  416. package/src/patterns/auth/meta.ts +0 -57
  417. package/src/patterns/hero/index.ts +0 -2
  418. package/src/patterns/missing-element/index.ts +0 -2
  419. /package/dist/{patterns/auth → features/auth/utils}/oauthProviders.js +0 -0
  420. /package/src/{patterns/hero/meta.ts → features/hero/heroMeta.ts} +0 -0
  421. /package/src/{patterns/missing-element/meta.ts → features/missing-element/missingElementMeta.ts} +0 -0
@@ -1,10 +1,11 @@
1
1
  import { Field } from '@ankhorage/surface';
2
2
  import React from 'react';
3
- import { useBottomSheet } from '../../features/bottom-sheet/public';
4
- import { Button } from '../../features/button/public';
5
- import { Box, Stack } from '../../features/layout/public';
6
- import { Text } from '../../features/typography/public';
7
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
3
+ import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
4
+ import { useBottomSheet } from '../../../bottom-sheet/public';
5
+ import { Button } from '../../../button/public';
6
+ import { Box, Stack } from '../../../layout/public';
7
+ import { Text } from '../../../typography/public';
8
+ import { formatLocalDate, parseLocalDate } from '../../utils/localDate';
8
9
  const WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
9
10
  const DAY_CELL_WIDTH = 42;
10
11
  /*** Render the field label and optional supporting description. */
@@ -18,15 +19,13 @@ function renderLabel(label, description) {
18
19
  </Text>) : null}
19
20
  </Stack>);
20
21
  }
21
- /*** Normalize a date to the start of its local calendar day. */
22
- function startOfLocalDay(value) {
23
- return new Date(value.getFullYear(), value.getMonth(), value.getDate());
24
- }
25
22
  /*** Compare two values by local calendar day. */
26
23
  function isSameLocalDay(left, right) {
27
- if (!left)
28
- return false;
29
- return startOfLocalDay(left).getTime() === startOfLocalDay(right).getTime();
24
+ return left === formatLocalDate(right);
25
+ }
26
+ /*** Normalize a Date to the start of its local calendar day for range comparisons. */
27
+ function startOfLocalDay(value) {
28
+ return new Date(value.getFullYear(), value.getMonth(), value.getDate());
30
29
  }
31
30
  /*** Report whether one local calendar day precedes another. */
32
31
  function isBeforeLocalDay(left, right) {
@@ -50,25 +49,21 @@ function formatMonthLabel(value) {
50
49
  }
51
50
  /*** Format a selected date with the platform locale defaults. */
52
51
  function formatDefaultDate(value) {
53
- return value.toLocaleDateString();
52
+ return parseLocalDate(value)?.toLocaleDateString() ?? value;
54
53
  }
55
54
  /*** Build the padded calendar grid for one month. */
56
55
  function createMonthDays(month) {
57
56
  const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);
58
57
  const dayCount = new Date(month.getFullYear(), month.getMonth() + 1, 0).getDate();
59
- const days = [];
60
- for (let offset = 0; offset < firstDay.getDay(); offset += 1)
61
- days.push(null);
62
- for (let day = 1; day <= dayCount; day += 1) {
63
- days.push(new Date(month.getFullYear(), month.getMonth(), day));
64
- }
65
- while (days.length % 7 !== 0)
66
- days.push(null);
67
- return days;
58
+ const populatedLength = firstDay.getDay() + dayCount;
59
+ const paddedLength = Math.ceil(populatedLength / 7) * 7;
60
+ return Array.from({ length: paddedLength }, (_, index) => index < firstDay.getDay()
61
+ ? null
62
+ : new Date(month.getFullYear(), month.getMonth(), index - firstDay.getDay() + 1));
68
63
  }
69
64
  /*** Resolve the month initially shown by the calendar sheet. */
70
65
  function resolveInitialMonth(value, minDate) {
71
- const base = value ?? minDate ?? new Date();
66
+ const base = parseLocalDate(value) ?? parseLocalDate(minDate) ?? new Date();
72
67
  return new Date(base.getFullYear(), base.getMonth(), 1);
73
68
  }
74
69
  /*** Report whether the configured range intersects a candidate month. */
@@ -95,7 +90,7 @@ function DatePickerInner({ themeId: _themeId, mode: _mode, value, onValueChange,
95
90
  return;
96
91
  present({
97
92
  content: (<DatePickerSheet description={description} interactionPolicy={interactionPolicy} label={label} maxDate={maxDate} minDate={minDate} onDismiss={dismiss} onSelect={(date) => {
98
- onValueChange?.(startOfLocalDay(date));
93
+ onValueChange?.(formatLocalDate(date));
99
94
  dismiss();
100
95
  }} testID={testID} value={value}/>),
101
96
  });
@@ -110,11 +105,13 @@ function DatePickerInner({ themeId: _themeId, mode: _mode, value, onValueChange,
110
105
  function DatePickerSheet({ description, interactionPolicy, label, maxDate, minDate, onDismiss, onSelect, testID, value, }) {
111
106
  const [displayMonth, setDisplayMonth] = React.useState(() => resolveInitialMonth(value, minDate));
112
107
  const monthDays = React.useMemo(() => createMonthDays(displayMonth), [displayMonth]);
108
+ const resolvedMaxDate = React.useMemo(() => parseLocalDate(maxDate), [maxDate]);
109
+ const resolvedMinDate = React.useMemo(() => parseLocalDate(minDate), [minDate]);
113
110
  return (<Stack gap="m" p="m" testID={testID ? `${testID}-sheet` : undefined}>
114
111
  <PickerSheetHeader description={description} title={label ?? 'Choose date'}/>
115
- <DatePickerMonthNavigation displayMonth={displayMonth} interactionPolicy={interactionPolicy} maxDate={maxDate} minDate={minDate} onMonthChange={setDisplayMonth}/>
112
+ <DatePickerMonthNavigation displayMonth={displayMonth} interactionPolicy={interactionPolicy} maxDate={resolvedMaxDate} minDate={resolvedMinDate} onMonthChange={setDisplayMonth}/>
116
113
  <DatePickerWeekdays />
117
- <DatePickerCalendar interactionPolicy={interactionPolicy} maxDate={maxDate} minDate={minDate} monthDays={monthDays} onSelect={onSelect} testID={testID} value={value}/>
114
+ <DatePickerCalendar interactionPolicy={interactionPolicy} maxDate={resolvedMaxDate} minDate={resolvedMinDate} monthDays={monthDays} onSelect={onSelect} testID={testID} value={value}/>
118
115
  <Button fullWidth interactionPolicy={interactionPolicy} onPress={onDismiss} variant="ghost">
119
116
  Cancel
120
117
  </Button>
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../../src/features/date-picker/adapters/inbound/DatePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Field } from '@ankhorage/surface';\nimport React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { DatePickerProps } from '../../../../types/date-picker';\nimport { useBottomSheet } from '../../../bottom-sheet/public';\nimport { Button } from '../../../button/public';\nimport { Box, Stack } from '../../../layout/public';\nimport { Text } from '../../../typography/public';\nimport { formatLocalDate, parseLocalDate } from '../../utils/localDate';\n\nconst WEEKDAY_LABELS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] as const;\nconst DAY_CELL_WIDTH = 42;\n\n/*** Render the field label and optional supporting description. */\nfunction renderLabel(label: React.ReactNode, description: React.ReactNode | undefined) {\n return (\n <Stack gap=\"xs\">\n <Text variant=\"label\" weight=\"semiBold\">\n {label}\n </Text>\n {description ? (\n <Text emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </Stack>\n );\n}\n\n/*** Compare two values by local calendar day. */\nfunction isSameLocalDay(left: string | null, right: Date): boolean {\n return left === formatLocalDate(right);\n}\n\n/*** Normalize a Date to the start of its local calendar day for range comparisons. */\nfunction startOfLocalDay(value: Date): Date {\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n}\n\n/*** Report whether one local calendar day precedes another. */\nfunction isBeforeLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() < startOfLocalDay(right).getTime();\n}\n\n/*** Report whether one local calendar day follows another. */\nfunction isAfterLocalDay(left: Date, right: Date): boolean {\n return startOfLocalDay(left).getTime() > startOfLocalDay(right).getTime();\n}\n\n/*** Resolve whether a date falls outside the configured picker range. */\nfunction isDateDisabled(\n value: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n if (minDate && isBeforeLocalDay(value, minDate)) return true;\n if (maxDate && isAfterLocalDay(value, maxDate)) return true;\n return false;\n}\n\n/*** Format the current calendar month for the picker heading. */\nfunction formatMonthLabel(value: Date): string {\n return value.toLocaleDateString(undefined, { month: 'long', year: 'numeric' });\n}\n\n/*** Format a selected date with the platform locale defaults. */\nfunction formatDefaultDate(value: string): string {\n return parseLocalDate(value)?.toLocaleDateString() ?? value;\n}\n\n/*** Build the padded calendar grid for one month. */\nfunction createMonthDays(month: Date): (Date | null)[] {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const dayCount = new Date(month.getFullYear(), month.getMonth() + 1, 0).getDate();\n const populatedLength = firstDay.getDay() + dayCount;\n const paddedLength = Math.ceil(populatedLength / 7) * 7;\n\n return Array.from({ length: paddedLength }, (_, index) =>\n index < firstDay.getDay()\n ? null\n : new Date(month.getFullYear(), month.getMonth(), index - firstDay.getDay() + 1),\n );\n}\n\n/*** Resolve the month initially shown by the calendar sheet. */\nfunction resolveInitialMonth(value: string | null, minDate: string | undefined): Date {\n const base = parseLocalDate(value) ?? parseLocalDate(minDate) ?? new Date();\n return new Date(base.getFullYear(), base.getMonth(), 1);\n}\n\n/*** Report whether the configured range intersects a candidate month. */\nfunction canNavigateToMonth(\n month: Date,\n minDate: Date | undefined,\n maxDate: Date | undefined,\n): boolean {\n const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);\n const lastDay = new Date(month.getFullYear(), month.getMonth() + 1, 0);\n\n if (maxDate && isAfterLocalDay(firstDay, maxDate)) return false;\n if (minDate && isBeforeLocalDay(lastDay, minDate)) return false;\n return true;\n}\n\nfunction DatePickerInner({\n themeId: _themeId,\n mode: _mode,\n value,\n onValueChange,\n label,\n description,\n error,\n placeholder = 'Choose date',\n minDate,\n maxDate,\n disabled = false,\n required = false,\n formatDate,\n testID,\n interactionPolicy,\n}: DatePickerProps) {\n const { dismiss, present } = useBottomSheet();\n const passive = interactionPolicy === 'passive';\n const displayValue = value\n ? formatDate\n ? formatDate(value)\n : formatDefaultDate(value)\n : placeholder;\n\n /*** Present the calendar content through the shared BottomSheet controller. */\n function openPicker() {\n if (passive) return;\n present({\n content: (\n <DatePickerSheet\n description={description}\n interactionPolicy={interactionPolicy}\n label={label}\n maxDate={maxDate}\n minDate={minDate}\n onDismiss={dismiss}\n onSelect={(date) => {\n onValueChange?.(formatLocalDate(date));\n dismiss();\n }}\n testID={testID}\n value={value}\n />\n ),\n });\n }\n\n return (\n <Field\n disabled={disabled}\n errorText={error}\n invalid={Boolean(error)}\n label={label ? renderLabel(label, description) : undefined}\n required={required}\n testID={testID}\n >\n <Button\n disabled={disabled}\n interactionPolicy={interactionPolicy}\n onPress={openPicker}\n testID={testID ? `${testID}-trigger` : undefined}\n trailingIcon={{ name: 'calendar-outline' }}\n variant=\"outline\"\n >\n {displayValue}\n </Button>\n </Field>\n );\n}\n\ninterface DatePickerSheetProps extends Pick<\n DatePickerProps,\n 'description' | 'interactionPolicy' | 'label' | 'maxDate' | 'minDate' | 'testID' | 'value'\n> {\n onDismiss: () => void;\n onSelect: (value: Date) => void;\n}\n\n/*** Render the calendar-specific content inside the shared BottomSheet host. */\nfunction DatePickerSheet({\n description,\n interactionPolicy,\n label,\n maxDate,\n minDate,\n onDismiss,\n onSelect,\n testID,\n value,\n}: DatePickerSheetProps) {\n const [displayMonth, setDisplayMonth] = React.useState(() => resolveInitialMonth(value, minDate));\n const monthDays = React.useMemo(() => createMonthDays(displayMonth), [displayMonth]);\n const resolvedMaxDate = React.useMemo(() => parseLocalDate(maxDate), [maxDate]);\n const resolvedMinDate = React.useMemo(() => parseLocalDate(minDate), [minDate]);\n\n return (\n <Stack gap=\"m\" p=\"m\" testID={testID ? `${testID}-sheet` : undefined}>\n <PickerSheetHeader description={description} title={label ?? 'Choose date'} />\n <DatePickerMonthNavigation\n displayMonth={displayMonth}\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n onMonthChange={setDisplayMonth}\n />\n <DatePickerWeekdays />\n <DatePickerCalendar\n interactionPolicy={interactionPolicy}\n maxDate={resolvedMaxDate}\n minDate={resolvedMinDate}\n monthDays={monthDays}\n onSelect={onSelect}\n testID={testID}\n value={value}\n />\n <Button fullWidth interactionPolicy={interactionPolicy} onPress={onDismiss} variant=\"ghost\">\n Cancel\n </Button>\n </Stack>\n );\n}\n\n/*** Render the shared title block used by the calendar sheet. */\nfunction PickerSheetHeader({\n description,\n title,\n}: {\n description: React.ReactNode | undefined;\n title: React.ReactNode;\n}) {\n return (\n <Stack gap=\"xxs\">\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {title}\n </Text>\n {description ? (\n <Text align=\"center\" emphasis=\"muted\" variant=\"bodySmall\">\n {description}\n </Text>\n ) : null}\n </Stack>\n );\n}\n\n/*** Render previous/next month controls for the calendar sheet. */\nfunction DatePickerMonthNavigation({\n displayMonth,\n interactionPolicy,\n maxDate,\n minDate,\n onMonthChange,\n}: {\n displayMonth: Date;\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n onMonthChange: (month: Date) => void;\n}) {\n const previousMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() - 1, 1);\n const nextMonth = new Date(displayMonth.getFullYear(), displayMonth.getMonth() + 1, 1);\n\n return (\n <Stack align=\"center\" direction=\"row\" justify=\"space-between\">\n <Button\n disabled={!canNavigateToMonth(previousMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(previousMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Previous\n </Button>\n <Text align=\"center\" variant=\"label\" weight=\"semiBold\">\n {formatMonthLabel(displayMonth)}\n </Text>\n <Button\n disabled={!canNavigateToMonth(nextMonth, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onMonthChange(nextMonth)}\n size=\"s\"\n variant=\"ghost\"\n >\n Next\n </Button>\n </Stack>\n );\n}\n\n/*** Render weekday headings for the calendar grid. */\nfunction DatePickerWeekdays() {\n return (\n <Stack direction=\"row\" justify=\"space-between\">\n {WEEKDAY_LABELS.map((weekday) => (\n <Box key={weekday} width={DAY_CELL_WIDTH}>\n <Text align=\"center\" emphasis=\"muted\" variant=\"caption\" weight=\"semiBold\">\n {weekday}\n </Text>\n </Box>\n ))}\n </Stack>\n );\n}\n\n/*** Render selectable day cells for the current calendar month. */\nfunction DatePickerCalendar({\n interactionPolicy,\n maxDate,\n minDate,\n monthDays,\n onSelect,\n testID,\n value,\n}: {\n interactionPolicy: DatePickerProps['interactionPolicy'];\n maxDate: Date | undefined;\n minDate: Date | undefined;\n monthDays: readonly (Date | null)[];\n onSelect: (value: Date) => void;\n testID: string | undefined;\n value: DatePickerProps['value'];\n}) {\n return (\n <Stack direction=\"row\" gap=\"xs\" wrap=\"wrap\">\n {monthDays.map((day, index) => {\n if (!day) return <Box key={`empty-${index}`} width={DAY_CELL_WIDTH} />;\n const selected = isSameLocalDay(value, day);\n return (\n <Box key={day.toISOString()} width={DAY_CELL_WIDTH}>\n <Button\n color={selected ? 'primary' : 'neutral'}\n disabled={isDateDisabled(day, minDate, maxDate)}\n interactionPolicy={interactionPolicy}\n onPress={() => onSelect(day)}\n size=\"s\"\n testID={testID ? `${testID}-day-${day.getDate()}` : undefined}\n variant={selected ? 'solid' : 'ghost'}\n >\n {day.getDate()}\n </Button>\n </Box>\n );\n })}\n </Stack>\n );\n}\n\n/***\n * Date input control with calendar selection and formatted display value.\n */\nexport const DatePicker = withZoraThemeScope(DatePickerInner);\n"]}
@@ -0,0 +1,83 @@
1
+ export declare const datePickerMeta: {
2
+ readonly name: "DatePicker";
3
+ readonly category: "component";
4
+ readonly description: "Captures a local calendar date through the shared BottomSheet picker host.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly [];
7
+ readonly blueprint: {
8
+ readonly label: "Date picker";
9
+ readonly defaultProps: {
10
+ readonly value: null;
11
+ readonly placeholder: "Choose date";
12
+ readonly disabled: false;
13
+ readonly required: false;
14
+ };
15
+ };
16
+ readonly events: {
17
+ readonly valueChange: {
18
+ readonly label: "Value change";
19
+ readonly eventType: "datePicker.valueChange";
20
+ readonly description: "Emitted when a local calendar date is selected.";
21
+ readonly payloadFields: readonly [{
22
+ readonly path: "value";
23
+ readonly type: "string";
24
+ readonly label: "Value";
25
+ }];
26
+ };
27
+ };
28
+ readonly props: {
29
+ readonly value: {
30
+ readonly type: "string";
31
+ readonly category: "State";
32
+ readonly label: "Value";
33
+ readonly default: null;
34
+ readonly authoring: {
35
+ readonly authority: "instance";
36
+ };
37
+ };
38
+ readonly label: {
39
+ readonly type: "string";
40
+ readonly category: "Content";
41
+ readonly label: "Label";
42
+ };
43
+ readonly description: {
44
+ readonly type: "string";
45
+ readonly category: "Content";
46
+ readonly label: "Description";
47
+ };
48
+ readonly error: {
49
+ readonly type: "string";
50
+ readonly category: "Validation";
51
+ readonly label: "Error";
52
+ };
53
+ readonly placeholder: {
54
+ readonly type: "string";
55
+ readonly category: "Content";
56
+ readonly label: "Placeholder";
57
+ readonly default: "Choose date";
58
+ };
59
+ readonly minDate: {
60
+ readonly type: "string";
61
+ readonly category: "Validation";
62
+ readonly label: "Minimum date";
63
+ };
64
+ readonly maxDate: {
65
+ readonly type: "string";
66
+ readonly category: "Validation";
67
+ readonly label: "Maximum date";
68
+ };
69
+ readonly disabled: {
70
+ readonly type: "boolean";
71
+ readonly category: "State";
72
+ readonly label: "Disabled";
73
+ readonly default: false;
74
+ };
75
+ readonly required: {
76
+ readonly type: "boolean";
77
+ readonly category: "Validation";
78
+ readonly label: "Required";
79
+ readonly default: false;
80
+ };
81
+ };
82
+ };
83
+ //# sourceMappingURL=datePickerMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datePickerMeta.d.ts","sourceRoot":"","sources":["../../../src/features/date-picker/datePickerMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDW,CAAC"}
@@ -0,0 +1,57 @@
1
+ export const datePickerMeta = {
2
+ name: 'DatePicker',
3
+ category: 'component',
4
+ description: 'Captures a local calendar date through the shared BottomSheet picker host.',
5
+ directManifestNode: true,
6
+ allowedChildren: [],
7
+ blueprint: {
8
+ label: 'Date picker',
9
+ defaultProps: {
10
+ value: null,
11
+ placeholder: 'Choose date',
12
+ disabled: false,
13
+ required: false,
14
+ },
15
+ },
16
+ events: {
17
+ valueChange: {
18
+ label: 'Value change',
19
+ eventType: 'datePicker.valueChange',
20
+ description: 'Emitted when a local calendar date is selected.',
21
+ payloadFields: [{ path: 'value', type: 'string', label: 'Value' }],
22
+ },
23
+ },
24
+ props: {
25
+ value: {
26
+ type: 'string',
27
+ category: 'State',
28
+ label: 'Value',
29
+ default: null,
30
+ authoring: { authority: 'instance' },
31
+ },
32
+ label: { type: 'string', category: 'Content', label: 'Label' },
33
+ description: { type: 'string', category: 'Content', label: 'Description' },
34
+ error: { type: 'string', category: 'Validation', label: 'Error' },
35
+ placeholder: {
36
+ type: 'string',
37
+ category: 'Content',
38
+ label: 'Placeholder',
39
+ default: 'Choose date',
40
+ },
41
+ minDate: { type: 'string', category: 'Validation', label: 'Minimum date' },
42
+ maxDate: { type: 'string', category: 'Validation', label: 'Maximum date' },
43
+ disabled: {
44
+ type: 'boolean',
45
+ category: 'State',
46
+ label: 'Disabled',
47
+ default: false,
48
+ },
49
+ required: {
50
+ type: 'boolean',
51
+ category: 'Validation',
52
+ label: 'Required',
53
+ default: false,
54
+ },
55
+ },
56
+ };
57
+ //# sourceMappingURL=datePickerMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datePickerMeta.js","sourceRoot":"","sources":["../../../src/features/date-picker/datePickerMeta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,4EAA4E;IACzF,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE;QACT,KAAK,EAAE,aAAa;QACpB,YAAY,EAAE;YACZ,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,MAAM,EAAE;QACN,WAAW,EAAE;YACX,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,wBAAwB;YACnC,WAAW,EAAE,iDAAiD;YAC9D,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SACnE;KACF;IACD,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE;SACrC;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;QAC1E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,aAAa;SACvB;QACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE;QAC1E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE;QAC1E,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,KAAK;SACf;KACF;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nexport const datePickerMeta = {\n name: 'DatePicker',\n category: 'component',\n description: 'Captures a local calendar date through the shared BottomSheet picker host.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Date picker',\n defaultProps: {\n value: null,\n placeholder: 'Choose date',\n disabled: false,\n required: false,\n },\n },\n events: {\n valueChange: {\n label: 'Value change',\n eventType: 'datePicker.valueChange',\n description: 'Emitted when a local calendar date is selected.',\n payloadFields: [{ path: 'value', type: 'string', label: 'Value' }],\n },\n },\n props: {\n value: {\n type: 'string',\n category: 'State',\n label: 'Value',\n default: null,\n authoring: { authority: 'instance' },\n },\n label: { type: 'string', category: 'Content', label: 'Label' },\n description: { type: 'string', category: 'Content', label: 'Description' },\n error: { type: 'string', category: 'Validation', label: 'Error' },\n placeholder: {\n type: 'string',\n category: 'Content',\n label: 'Placeholder',\n default: 'Choose date',\n },\n minDate: { type: 'string', category: 'Validation', label: 'Minimum date' },\n maxDate: { type: 'string', category: 'Validation', label: 'Maximum date' },\n disabled: {\n type: 'boolean',\n category: 'State',\n label: 'Disabled',\n default: false,\n },\n required: {\n type: 'boolean',\n category: 'Validation',\n label: 'Required',\n default: false,\n },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,3 @@
1
+ export type { DatePickerProps, DatePickerValue } from '../../types/date-picker';
2
+ export { DatePicker } from './adapters/inbound/DatePicker';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/date-picker/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DatePicker } from './adapters/inbound/DatePicker';
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/date-picker/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["export type { DatePickerProps, DatePickerValue } from '../../types/date-picker';\nexport { DatePicker } from './adapters/inbound/DatePicker';\n"]}
@@ -0,0 +1,5 @@
1
+ /*** Parse a calendar date without applying a UTC offset. */
2
+ export declare function parseLocalDate(value: string | null | undefined): Date | undefined;
3
+ /*** Serialize a Date as a local calendar date suitable for manifest state. */
4
+ export declare function formatLocalDate(value: Date): string;
5
+ //# sourceMappingURL=localDate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localDate.d.ts","sourceRoot":"","sources":["../../../../src/features/date-picker/utils/localDate.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAiBjF;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,27 @@
1
+ const LOCAL_DATE_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/u;
2
+ /*** Parse a calendar date without applying a UTC offset. */
3
+ export function parseLocalDate(value) {
4
+ if (!value)
5
+ return undefined;
6
+ const match = LOCAL_DATE_PATTERN.exec(value);
7
+ if (!match)
8
+ return undefined;
9
+ const year = Number(match[1]);
10
+ const month = Number(match[2]);
11
+ const day = Number(match[3]);
12
+ const parsed = new Date(year, month - 1, day);
13
+ parsed.setFullYear(year);
14
+ return parsed.getFullYear() === year &&
15
+ parsed.getMonth() === month - 1 &&
16
+ parsed.getDate() === day
17
+ ? parsed
18
+ : undefined;
19
+ }
20
+ /*** Serialize a Date as a local calendar date suitable for manifest state. */
21
+ export function formatLocalDate(value) {
22
+ const year = String(value.getFullYear()).padStart(4, '0');
23
+ const month = String(value.getMonth() + 1).padStart(2, '0');
24
+ const day = String(value.getDate()).padStart(2, '0');
25
+ return `${year}-${month}-${day}`;
26
+ }
27
+ //# sourceMappingURL=localDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localDate.js","sourceRoot":"","sources":["../../../../src/features/date-picker/utils/localDate.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAExD,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEzB,OAAO,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI;QAClC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,GAAG,CAAC;QAC/B,MAAM,CAAC,OAAO,EAAE,KAAK,GAAG;QACxB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,KAAW;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;AACnC,CAAC","sourcesContent":["const LOCAL_DATE_PATTERN = /^(\\d{4})-(\\d{2})-(\\d{2})$/u;\n\n/*** Parse a calendar date without applying a UTC offset. */\nexport function parseLocalDate(value: string | null | undefined): Date | undefined {\n if (!value) return undefined;\n\n const match = LOCAL_DATE_PATTERN.exec(value);\n if (!match) return undefined;\n\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n const parsed = new Date(year, month - 1, day);\n parsed.setFullYear(year);\n\n return parsed.getFullYear() === year &&\n parsed.getMonth() === month - 1 &&\n parsed.getDate() === day\n ? parsed\n : undefined;\n}\n\n/*** Serialize a Date as a local calendar date suitable for manifest state. */\nexport function formatLocalDate(value: Date): string {\n const year = String(value.getFullYear()).padStart(4, '0');\n const month = String(value.getMonth() + 1).padStart(2, '0');\n const day = String(value.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { GradientProps } from './types';
2
+ import type { GradientProps } from '../../../../types/gradient';
3
3
  /***
4
4
  * Gradient background container for branded loading surfaces, hero blocks, and previews.
5
5
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gradient.d.ts","sourceRoot":"","sources":["../../../../../src/features/gradient/adapters/inbound/Gradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAgDhE;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import { Box } from '../../features/layout/public';
3
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
2
+ import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
3
+ import { Box } from '../../../layout/public';
4
4
  import { useGradientRenderer } from './GradientRendererContext';
5
5
  function GradientInner({ themeId: _themeId, mode: _mode, interactionPolicy: _interactionPolicy, children, colors, locations, start, end, width = '100%', height, minHeight, radius, p, testID, }) {
6
6
  const gradientRenderer = useGradientRenderer();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gradient.js","sourceRoot":"","sources":["../../../../../src/features/gradient/adapters/inbound/Gradient.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,SAAS,aAAa,CAAC,EACrB,OAAO,EAAE,QAAQ,EACjB,IAAI,EAAE,KAAK,EACX,iBAAiB,EAAE,kBAAkB,EACrC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,KAAK,GAAG,MAAM,EACd,MAAM,EACN,SAAS,EACT,MAAM,EACN,CAAC,EACD,MAAM,GACQ;IACd,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,OAAO,CACL,CAAC,GAAG,CACF,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,SAAS,CAAC,CAAC,SAAS,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAE9B;MAAA,CAAC,KAAK,CAAC,aAAa,CAClB,gBAAgB,EAChB;YACE,MAAM;YACN,GAAG;YACH,SAAS;YACT,KAAK;YACL,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;SACnB,EACD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAC5B;UAAA,CAAC,QAAQ,CACX;QAAA,EAAE,GAAG,CAAC,CACP,CACH;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { GradientProps } from '../../../../types/gradient';\nimport { Box } from '../../../layout/public';\nimport { useGradientRenderer } from './GradientRendererContext';\n\nfunction GradientInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy: _interactionPolicy,\n children,\n colors,\n locations,\n start,\n end,\n width = '100%',\n height,\n minHeight,\n radius,\n p,\n testID,\n}: GradientProps) {\n const gradientRenderer = useGradientRenderer();\n\n return (\n <Box\n height={height}\n minHeight={minHeight}\n radius={radius}\n testID={testID}\n width={width}\n style={{ overflow: 'hidden' }}\n >\n {React.createElement(\n gradientRenderer,\n {\n colors,\n end,\n locations,\n start,\n style: { flex: 1 },\n },\n <Box p={p} style={{ flex: 1 }}>\n {children}\n </Box>,\n )}\n </Box>\n );\n}\n\n/***\n * Gradient background container for branded loading surfaces, hero blocks, and previews.\n *\n * The host supplies a platform-compatible renderer through\n * `GradientRendererProvider`; ZORA does not require an Expo runtime.\n */\nexport const Gradient = withZoraThemeScope(GradientInner);\n"]}
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
- import type { GradientRenderer, GradientRendererProviderProps } from './types';
3
- /**
2
+ import type { GradientRenderer, GradientRendererProviderProps } from '../../../../types/gradient';
3
+ /***
4
4
  * Supplies the host-owned renderer used by `Gradient`.
5
5
  *
6
6
  * Expo apps can adapt `expo-linear-gradient` here, while standalone React
7
7
  * Native hosts can inject another compatible implementation.
8
8
  */
9
9
  export declare function GradientRendererProvider({ children, renderer }: GradientRendererProviderProps): React.JSX.Element;
10
+ /*** Resolves the host-owned gradient renderer for a Gradient instance. */
10
11
  export declare function useGradientRenderer(): GradientRenderer;
11
12
  //# sourceMappingURL=GradientRendererContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientRendererContext.d.ts","sourceRoot":"","sources":["../../../../../src/features/gradient/adapters/inbound/GradientRendererContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAElD,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAIlG;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,6BAA6B,qBAE7F;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,IAAI,gBAAgB,CAUtD"}
@@ -1,6 +1,6 @@
1
1
  import React, { createContext, use } from 'react';
2
2
  const GradientRendererContext = createContext(null);
3
- /**
3
+ /***
4
4
  * Supplies the host-owned renderer used by `Gradient`.
5
5
  *
6
6
  * Expo apps can adapt `expo-linear-gradient` here, while standalone React
@@ -9,6 +9,7 @@ const GradientRendererContext = createContext(null);
9
9
  export function GradientRendererProvider({ children, renderer }) {
10
10
  return <GradientRendererContext value={renderer}>{children}</GradientRendererContext>;
11
11
  }
12
+ /*** Resolves the host-owned gradient renderer for a Gradient instance. */
12
13
  export function useGradientRenderer() {
13
14
  const renderer = use(GradientRendererContext);
14
15
  if (!renderer) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientRendererContext.js","sourceRoot":"","sources":["../../../../../src/features/gradient/adapters/inbound/GradientRendererContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAIlD,MAAM,uBAAuB,GAAG,aAAa,CAA0B,IAAI,CAAC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAiC;IAC5F,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACxF,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import React, { createContext, use } from 'react';\n\nimport type { GradientRenderer, GradientRendererProviderProps } from '../../../../types/gradient';\n\nconst GradientRendererContext = createContext<GradientRenderer | null>(null);\n\n/***\n * Supplies the host-owned renderer used by `Gradient`.\n *\n * Expo apps can adapt `expo-linear-gradient` here, while standalone React\n * Native hosts can inject another compatible implementation.\n */\nexport function GradientRendererProvider({ children, renderer }: GradientRendererProviderProps) {\n return <GradientRendererContext value={renderer}>{children}</GradientRendererContext>;\n}\n\n/*** Resolves the host-owned gradient renderer for a Gradient instance. */\nexport function useGradientRenderer(): GradientRenderer {\n const renderer = use(GradientRendererContext);\n\n if (!renderer) {\n throw new Error(\n 'Gradient requires a renderer. Wrap the app in GradientRendererProvider with a platform-compatible gradient implementation.',\n );\n }\n\n return renderer;\n}\n"]}
@@ -0,0 +1,48 @@
1
+ export declare const gradientMeta: {
2
+ readonly name: "Gradient";
3
+ readonly category: "component";
4
+ readonly description: "Renders a host-backed gradient container for nested manifest content.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly ["ActivityIndicator", "ForgotPasswordForm", "OAuthProviderButton", "OAuthProviderList", "OtpForm", "SignInForm", "SignUpForm", "Surface", "Avatar", "AvatarGroup", "Badge", "MediaCard", "MetricCard", "Chip", "ChipGroup", "DataTable", "DatePicker", "Skeleton", "SkeletonCard", "SkeletonList", "SkeletonText", "IconButton", "Uploader", "FlatList", "SectionList", "BottomSheet", "ProductCard", "Box", "Stack", "Grid", "Gradient", "Container", "Divider", "Text", "Heading", "Icon", "Image", "Hero", "KeyboardAvoidingView", "Button", "ButtonGroup", "RadioGroup", "ThemeModeToggle", "TextInput", "TimePicker", "Form", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail", "MissingElement"];
7
+ readonly blueprint: {
8
+ readonly label: "Gradient";
9
+ };
10
+ readonly props: {
11
+ readonly colors: {
12
+ readonly type: "array";
13
+ readonly category: "Style";
14
+ readonly label: "Colors";
15
+ };
16
+ readonly locations: {
17
+ readonly type: "array";
18
+ readonly category: "Style";
19
+ readonly label: "Locations";
20
+ };
21
+ readonly width: {
22
+ readonly type: "number";
23
+ readonly category: "Layout";
24
+ readonly label: "Width";
25
+ };
26
+ readonly height: {
27
+ readonly type: "number";
28
+ readonly category: "Layout";
29
+ readonly label: "Height";
30
+ };
31
+ readonly minHeight: {
32
+ readonly type: "number";
33
+ readonly category: "Layout";
34
+ readonly label: "Minimum height";
35
+ };
36
+ readonly radius: {
37
+ readonly type: "radius";
38
+ readonly category: "Style";
39
+ readonly label: "Corner radius";
40
+ };
41
+ readonly p: {
42
+ readonly type: "spacing";
43
+ readonly category: "Layout";
44
+ readonly label: "Padding";
45
+ };
46
+ };
47
+ };
48
+ //# sourceMappingURL=gradientMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradientMeta.d.ts","sourceRoot":"","sources":["../../../src/features/gradient/gradientMeta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBa,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { CONTAINER_ALLOWED_CHILDREN } from '../../metadata/allowedChildren';
2
+ export const gradientMeta = {
3
+ name: 'Gradient',
4
+ category: 'component',
5
+ description: 'Renders a host-backed gradient container for nested manifest content.',
6
+ directManifestNode: true,
7
+ allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],
8
+ blueprint: {
9
+ label: 'Gradient',
10
+ },
11
+ props: {
12
+ colors: {
13
+ type: 'array',
14
+ category: 'Style',
15
+ label: 'Colors',
16
+ },
17
+ locations: { type: 'array', category: 'Style', label: 'Locations' },
18
+ width: { type: 'number', category: 'Layout', label: 'Width' },
19
+ height: { type: 'number', category: 'Layout', label: 'Height' },
20
+ minHeight: { type: 'number', category: 'Layout', label: 'Minimum height' },
21
+ radius: { type: 'radius', category: 'Style', label: 'Corner radius' },
22
+ p: { type: 'spacing', category: 'Layout', label: 'Padding' },
23
+ },
24
+ };
25
+ //# sourceMappingURL=gradientMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradientMeta.js","sourceRoot":"","sources":["../../../src/features/gradient/gradientMeta.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,uEAAuE;IACpF,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,CAAC,GAAG,0BAA0B,CAAC;IAChD,SAAS,EAAE;QACT,KAAK,EAAE,UAAU;KAClB;IACD,KAAK,EAAE;QACL,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,QAAQ;SAChB;QACD,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;QACnE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;QAC7D,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC/D,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE;QAC1E,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE;QACrE,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;KAC7D;CACmC,CAAC","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\nimport { CONTAINER_ALLOWED_CHILDREN } from '../../metadata/allowedChildren';\n\nexport const gradientMeta = {\n name: 'Gradient',\n category: 'component',\n description: 'Renders a host-backed gradient container for nested manifest content.',\n directManifestNode: true,\n allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],\n blueprint: {\n label: 'Gradient',\n },\n props: {\n colors: {\n type: 'array',\n category: 'Style',\n label: 'Colors',\n },\n locations: { type: 'array', category: 'Style', label: 'Locations' },\n width: { type: 'number', category: 'Layout', label: 'Width' },\n height: { type: 'number', category: 'Layout', label: 'Height' },\n minHeight: { type: 'number', category: 'Layout', label: 'Minimum height' },\n radius: { type: 'radius', category: 'Style', label: 'Corner radius' },\n p: { type: 'spacing', category: 'Layout', label: 'Padding' },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -0,0 +1,4 @@
1
+ export type { GradientColor, GradientColors, GradientLocations, GradientPoint, GradientProps, GradientRenderer, GradientRendererProps, GradientRendererProviderProps, } from '../../types/gradient';
2
+ export { Gradient } from './adapters/inbound/Gradient';
3
+ export { GradientRendererProvider } from './adapters/inbound/GradientRendererContext';
4
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/gradient/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Gradient } from './adapters/inbound/Gradient';
2
+ export { GradientRendererProvider } from './adapters/inbound/GradientRendererContext';
3
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/gradient/public.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC","sourcesContent":["export type {\n GradientColor,\n GradientColors,\n GradientLocations,\n GradientPoint,\n GradientProps,\n GradientRenderer,\n GradientRendererProps,\n GradientRendererProviderProps,\n} from '../../types/gradient';\nexport { Gradient } from './adapters/inbound/Gradient';\nexport { GradientRendererProvider } from './adapters/inbound/GradientRendererContext';\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { HeroProps } from './types';
2
+ import type { HeroProps } from '../../../../types/hero';
3
3
  /***
4
4
  * Hero section pattern for prominent page introductions with actions.
5
5
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.d.ts","sourceRoot":"","sources":["../../../../../src/features/hero/adapters/inbound/Hero.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAyB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAyH/E;;;;GAIG;AACH,eAAO,MAAM,IAAI,iDAAgC,CAAC"}
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
- import { Button } from '../../features/button/public';
3
- import { Card } from '../../features/card/public';
4
- import { Box, Grid, Stack } from '../../features/layout/public';
5
- import { Heading } from '../../features/typography/public';
6
- import { Text } from '../../features/typography/public';
7
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
2
+ import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
3
+ import { Button } from '../../../button/public';
4
+ import { Card } from '../../../card/public';
5
+ import { Box, Grid, Stack } from '../../../layout/public';
6
+ import { Heading, Text } from '../../../typography/public';
8
7
  function HeroInner({ themeId: _themeId, mode: _mode, interactionPolicy, title, description, eyebrow, primaryAction, secondaryAction, media, footer, align = 'start', layout = 'split', tone = 'subtle', compact = false, testID, }) {
9
8
  const hasActions = primaryAction !== undefined || secondaryAction !== undefined;
10
9
  const hasMedia = media !== undefined;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hero.js","sourceRoot":"","sources":["../../../../../src/features/hero/adapters/inbound/Hero.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { HeroAction, HeroAlign, HeroProps } from '../../../../types/hero';\nimport { Button } from '../../../button/public';\nimport { Card } from '../../../card/public';\nimport { Box, Grid, Stack } from '../../../layout/public';\nimport { Heading, Text } from '../../../typography/public';\n\nfunction HeroInner({\n themeId: _themeId,\n mode: _mode,\n interactionPolicy,\n title,\n description,\n eyebrow,\n primaryAction,\n secondaryAction,\n media,\n footer,\n align = 'start',\n layout = 'split',\n tone = 'subtle',\n compact = false,\n testID,\n}: HeroProps) {\n const hasActions = primaryAction !== undefined || secondaryAction !== undefined;\n const hasMedia = media !== undefined;\n const contentAlign = resolveContentAlign(align);\n const textAlign = align === 'center' ? 'center' : undefined;\n const mediaFirst = layout === 'mediaFirst';\n\n const content = (\n <Box width=\"100%\">\n <Stack align={contentAlign} gap={compact ? 's' : 'm'}>\n <Stack align={contentAlign} gap=\"xs\">\n {eyebrow !== undefined ? (\n <Text align={textAlign} color=\"primary\" variant=\"eyebrow\">\n {eyebrow}\n </Text>\n ) : null}\n <Heading\n align={textAlign}\n level={1}\n size={{ base: 'h2', md: compact ? 'h2' : 'display' }}\n >\n {title}\n </Heading>\n {description !== undefined ? (\n <Text\n align={textAlign}\n emphasis=\"muted\"\n variant={{ base: 'body', md: compact ? 'body' : 'lead' }}\n >\n {description}\n </Text>\n ) : null}\n </Stack>\n\n {hasActions ? (\n <Stack\n align={contentAlign}\n direction={{ base: 'column', md: 'row' }}\n gap=\"s\"\n justify={align === 'center' ? 'center' : 'flex-start'}\n >\n {primaryAction !== undefined\n ? renderAction(primaryAction, 'primary', interactionPolicy)\n : null}\n {secondaryAction !== undefined\n ? renderAction(secondaryAction, 'secondary', interactionPolicy)\n : null}\n </Stack>\n ) : null}\n\n {footer}\n </Stack>\n </Box>\n );\n\n const mediaSlot = hasMedia ? <Box width=\"100%\">{media}</Box> : null;\n\n const body =\n hasMedia && layout !== 'stack' ? (\n <Grid cols={{ base: 1, md: 2 }} gap={compact ? 'm' : 'l'}>\n {mediaFirst ? mediaSlot : content}\n {mediaFirst ? content : mediaSlot}\n </Grid>\n ) : (\n <Stack align=\"center\" direction=\"column\" gap={compact ? 'm' : 'l'}>\n {mediaFirst ? mediaSlot : content}\n {mediaFirst ? content : mediaSlot}\n </Stack>\n );\n\n return (\n <Card compact={compact} interactionPolicy={interactionPolicy} testID={testID} tone={tone}>\n {body}\n </Card>\n );\n}\n\nfunction renderAction(\n action: HeroAction,\n role: 'primary' | 'secondary',\n interactionPolicy: HeroProps['interactionPolicy'],\n) {\n return (\n <Button\n disabled={action.disabled}\n interactionPolicy={interactionPolicy}\n variant={action.variant ?? (role === 'primary' ? 'solid' : 'soft')}\n onPress={action.onPress}\n color={action.color ?? (role === 'primary' ? 'primary' : 'neutral')}\n >\n {action.label}\n </Button>\n );\n}\n\nfunction resolveContentAlign(align: HeroAlign) {\n return align === 'center' ? 'center' : 'flex-start';\n}\n\n/***\n * Hero section pattern for prominent page introductions with actions.\n *\n \n */\nexport const Hero = withZoraThemeScope(HeroInner);\n"]}
@@ -98,4 +98,4 @@ export declare const heroMeta: {
98
98
  };
99
99
  };
100
100
  };
101
- //# sourceMappingURL=meta.d.ts.map
101
+ //# sourceMappingURL=heroMeta.d.ts.map