@ankhorage/zora 10.0.0 → 12.0.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 (401) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +2 -1
  3. package/dist/constants.d.ts +4 -0
  4. package/dist/constants.d.ts.map +1 -1
  5. package/dist/constants.js +4 -0
  6. package/dist/constants.js.map +1 -1
  7. package/dist/features/bottom-sheet/bottomSheetMeta.d.ts +1 -1
  8. package/dist/features/card/cardMeta.d.ts +1 -1
  9. package/dist/features/card/mediaCardMeta.d.ts +1 -1
  10. package/dist/features/card/postCardMeta.d.ts +1 -1
  11. package/dist/features/data-table/adapters/inbound/DataTable.d.ts.map +1 -1
  12. package/dist/features/data-table/adapters/inbound/DataTable.js +1 -1
  13. package/dist/features/data-table/adapters/inbound/DataTable.js.map +1 -1
  14. package/dist/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.d.ts +1 -1
  15. package/dist/features/date-picker/adapters/inbound/DatePicker.d.ts.map +1 -0
  16. package/dist/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.js +23 -26
  17. package/dist/features/date-picker/adapters/inbound/DatePicker.js.map +1 -0
  18. package/dist/features/date-picker/datePickerMeta.d.ts +83 -0
  19. package/dist/features/date-picker/datePickerMeta.d.ts.map +1 -0
  20. package/dist/features/date-picker/datePickerMeta.js +57 -0
  21. package/dist/features/date-picker/datePickerMeta.js.map +1 -0
  22. package/dist/features/date-picker/public.d.ts +3 -0
  23. package/dist/features/date-picker/public.d.ts.map +1 -0
  24. package/dist/features/date-picker/public.js +2 -0
  25. package/dist/features/date-picker/public.js.map +1 -0
  26. package/dist/features/date-picker/utils/localDate.d.ts +5 -0
  27. package/dist/features/date-picker/utils/localDate.d.ts.map +1 -0
  28. package/dist/features/date-picker/utils/localDate.js +27 -0
  29. package/dist/features/date-picker/utils/localDate.js.map +1 -0
  30. package/dist/features/form/adapters/inbound/Form.d.ts +5 -0
  31. package/dist/features/form/adapters/inbound/Form.d.ts.map +1 -0
  32. package/dist/features/form/adapters/inbound/Form.js +18 -0
  33. package/dist/features/form/adapters/inbound/Form.js.map +1 -0
  34. package/dist/{components/form → features/form/adapters/inbound}/FormActions.d.ts +1 -1
  35. package/dist/features/form/adapters/inbound/FormActions.d.ts.map +1 -0
  36. package/dist/{components/form → features/form/adapters/inbound}/FormActions.js +3 -3
  37. package/dist/features/form/adapters/inbound/FormActions.js.map +1 -0
  38. package/dist/features/form/adapters/inbound/FormError.d.ts +5 -0
  39. package/dist/features/form/adapters/inbound/FormError.d.ts.map +1 -0
  40. package/dist/features/form/adapters/inbound/FormError.js +18 -0
  41. package/dist/features/form/adapters/inbound/FormError.js.map +1 -0
  42. package/dist/features/form/adapters/inbound/FormField.d.ts +5 -0
  43. package/dist/features/form/adapters/inbound/FormField.d.ts.map +1 -0
  44. package/dist/{patterns/form-field → features/form/adapters/inbound}/FormField.js +5 -4
  45. package/dist/features/form/adapters/inbound/FormField.js.map +1 -0
  46. package/dist/features/form/formActionsMeta.d.ts +9 -0
  47. package/dist/features/form/formActionsMeta.d.ts.map +1 -0
  48. package/dist/features/form/formActionsMeta.js +9 -0
  49. package/dist/features/form/formActionsMeta.js.map +1 -0
  50. package/dist/features/form/formErrorMeta.d.ts +32 -0
  51. package/dist/features/form/formErrorMeta.d.ts.map +1 -0
  52. package/dist/features/form/formErrorMeta.js +19 -0
  53. package/dist/features/form/formErrorMeta.js.map +1 -0
  54. package/dist/{components/form/meta.d.ts → features/form/formFieldMeta.d.ts} +28 -39
  55. package/dist/features/form/formFieldMeta.d.ts.map +1 -0
  56. package/dist/features/form/formFieldMeta.js +35 -0
  57. package/dist/features/form/formFieldMeta.js.map +1 -0
  58. package/dist/features/form/formMeta.d.ts +61 -0
  59. package/dist/features/form/formMeta.d.ts.map +1 -0
  60. package/dist/features/form/formMeta.js +34 -0
  61. package/dist/features/form/formMeta.js.map +1 -0
  62. package/dist/features/form/public.d.ts +8 -0
  63. package/dist/features/form/public.d.ts.map +1 -0
  64. package/dist/features/form/public.js +7 -0
  65. package/dist/features/form/public.js.map +1 -0
  66. package/dist/{components → features}/form/useFormController.d.ts +1 -1
  67. package/dist/features/form/useFormController.d.ts.map +1 -0
  68. package/dist/{components → features}/form/useFormController.js +1 -1
  69. package/dist/features/form/useFormController.js.map +1 -0
  70. package/dist/{components/form → features/form/utils}/validation.d.ts +1 -1
  71. package/dist/features/form/utils/validation.d.ts.map +1 -0
  72. package/dist/{components/form → features/form/utils}/validation.js +2 -4
  73. package/dist/features/form/utils/validation.js.map +1 -0
  74. package/dist/{patterns/hero → features/hero/adapters/inbound}/Hero.d.ts +1 -1
  75. package/dist/features/hero/adapters/inbound/Hero.d.ts.map +1 -0
  76. package/dist/{patterns/hero → features/hero/adapters/inbound}/Hero.js +5 -6
  77. package/dist/features/hero/adapters/inbound/Hero.js.map +1 -0
  78. package/dist/{patterns/hero/meta.d.ts → features/hero/heroMeta.d.ts} +1 -1
  79. package/dist/features/hero/heroMeta.d.ts.map +1 -0
  80. package/dist/{patterns/hero/meta.js → features/hero/heroMeta.js} +1 -1
  81. package/dist/features/hero/heroMeta.js.map +1 -0
  82. package/dist/features/hero/public.d.ts +3 -0
  83. package/dist/features/hero/public.d.ts.map +1 -0
  84. package/dist/features/hero/public.js +2 -0
  85. package/dist/features/hero/public.js.map +1 -0
  86. package/dist/features/keyboard-avoiding-view/keyboardAvoidingViewMeta.d.ts +1 -1
  87. package/dist/features/layout/boxMeta.d.ts +1 -1
  88. package/dist/features/layout/containerMeta.d.ts +1 -1
  89. package/dist/features/layout/gridMeta.d.ts +1 -1
  90. package/dist/features/layout/stackMeta.d.ts +1 -1
  91. package/dist/features/list/flatListMeta.d.ts +1 -1
  92. package/dist/features/list/sectionListMeta.d.ts +1 -1
  93. package/dist/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.d.ts +1 -1
  94. package/dist/features/missing-element/adapters/inbound/MissingElement.d.ts.map +1 -0
  95. package/dist/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.js +5 -5
  96. package/dist/features/missing-element/adapters/inbound/MissingElement.js.map +1 -0
  97. package/dist/{patterns/missing-element/meta.d.ts → features/missing-element/missingElementMeta.d.ts} +1 -1
  98. package/dist/features/missing-element/missingElementMeta.d.ts.map +1 -0
  99. package/dist/{patterns/missing-element/meta.js → features/missing-element/missingElementMeta.js} +1 -1
  100. package/dist/features/missing-element/missingElementMeta.js.map +1 -0
  101. package/dist/features/missing-element/public.d.ts +3 -0
  102. package/dist/features/missing-element/public.d.ts.map +1 -0
  103. package/dist/features/missing-element/public.js +2 -0
  104. package/dist/features/missing-element/public.js.map +1 -0
  105. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.d.ts +1 -1
  106. package/dist/features/skeleton/adapters/inbound/Skeleton.d.ts.map +1 -0
  107. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.js +3 -3
  108. package/dist/features/skeleton/adapters/inbound/Skeleton.js.map +1 -0
  109. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.d.ts +1 -1
  110. package/dist/features/skeleton/adapters/inbound/SkeletonCard.d.ts.map +1 -0
  111. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.js +4 -4
  112. package/dist/features/skeleton/adapters/inbound/SkeletonCard.js.map +1 -0
  113. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.d.ts +1 -1
  114. package/dist/features/skeleton/adapters/inbound/SkeletonList.d.ts.map +1 -0
  115. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.js +2 -2
  116. package/dist/features/skeleton/adapters/inbound/SkeletonList.js.map +1 -0
  117. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.d.ts +1 -1
  118. package/dist/features/skeleton/adapters/inbound/SkeletonText.d.ts.map +1 -0
  119. package/dist/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.js +2 -2
  120. package/dist/features/skeleton/adapters/inbound/SkeletonText.js.map +1 -0
  121. package/dist/features/skeleton/public.d.ts +6 -0
  122. package/dist/features/skeleton/public.d.ts.map +1 -0
  123. package/dist/features/skeleton/public.js +5 -0
  124. package/dist/features/skeleton/public.js.map +1 -0
  125. package/dist/features/skeleton/skeletonMeta.d.ts +178 -0
  126. package/dist/features/skeleton/skeletonMeta.d.ts.map +1 -0
  127. package/dist/features/skeleton/skeletonMeta.js +84 -0
  128. package/dist/features/skeleton/skeletonMeta.js.map +1 -0
  129. package/dist/features/surface/surfaceMeta.d.ts +1 -1
  130. package/dist/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.d.ts +1 -1
  131. package/dist/features/time-picker/adapters/inbound/TimePicker.d.ts.map +1 -0
  132. package/dist/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.js +8 -11
  133. package/dist/features/time-picker/adapters/inbound/TimePicker.js.map +1 -0
  134. package/dist/features/time-picker/public.d.ts +3 -0
  135. package/dist/features/time-picker/public.d.ts.map +1 -0
  136. package/dist/features/time-picker/public.js +2 -0
  137. package/dist/features/time-picker/public.js.map +1 -0
  138. package/dist/features/time-picker/timePickerMeta.d.ts +90 -0
  139. package/dist/features/time-picker/timePickerMeta.d.ts.map +1 -0
  140. package/dist/features/time-picker/timePickerMeta.js +64 -0
  141. package/dist/features/time-picker/timePickerMeta.js.map +1 -0
  142. package/dist/features/uploader/adapters/inbound/Uploader.d.ts.map +1 -1
  143. package/dist/features/uploader/adapters/inbound/Uploader.js +1 -1
  144. package/dist/features/uploader/adapters/inbound/Uploader.js.map +1 -1
  145. package/dist/index.d.ts +7 -12
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +6 -6
  148. package/dist/index.js.map +1 -1
  149. package/dist/layout/screen/meta.d.ts +1 -1
  150. package/dist/layout/screen-section/meta.d.ts +1 -1
  151. package/dist/metadata/allowedChildren.d.ts +3 -3
  152. package/dist/metadata/allowedChildren.d.ts.map +1 -1
  153. package/dist/metadata/allowedChildren.js +8 -1
  154. package/dist/metadata/allowedChildren.js.map +1 -1
  155. package/dist/metadata/bindableComponentMeta.d.ts +2 -2
  156. package/dist/metadata/componentMeta.d.ts.map +1 -1
  157. package/dist/metadata/componentMeta.js +9 -6
  158. package/dist/metadata/componentMeta.js.map +1 -1
  159. package/dist/patterns/auth/AuthForm.d.ts +21 -0
  160. package/dist/patterns/auth/AuthForm.d.ts.map +1 -0
  161. package/dist/patterns/auth/AuthForm.js +19 -0
  162. package/dist/patterns/auth/AuthForm.js.map +1 -0
  163. package/dist/patterns/auth/AuthFormField.d.ts +16 -0
  164. package/dist/patterns/auth/AuthFormField.d.ts.map +1 -0
  165. package/dist/patterns/auth/AuthFormField.js +38 -0
  166. package/dist/patterns/auth/AuthFormField.js.map +1 -0
  167. package/dist/patterns/auth/ForgotPasswordForm.d.ts.map +1 -1
  168. package/dist/patterns/auth/ForgotPasswordForm.js +2 -2
  169. package/dist/patterns/auth/ForgotPasswordForm.js.map +1 -1
  170. package/dist/patterns/auth/OtpForm.d.ts.map +1 -1
  171. package/dist/patterns/auth/OtpForm.js +2 -2
  172. package/dist/patterns/auth/OtpForm.js.map +1 -1
  173. package/dist/patterns/auth/SignInForm.d.ts.map +1 -1
  174. package/dist/patterns/auth/SignInForm.js +2 -2
  175. package/dist/patterns/auth/SignInForm.js.map +1 -1
  176. package/dist/patterns/auth/SignUpForm.d.ts.map +1 -1
  177. package/dist/patterns/auth/SignUpForm.js +2 -2
  178. package/dist/patterns/auth/SignUpForm.js.map +1 -1
  179. package/dist/patterns/auth/types.d.ts +1 -1
  180. package/dist/patterns/auth/types.d.ts.map +1 -1
  181. package/dist/patterns/auth/types.js.map +1 -1
  182. package/dist/patterns/auth/utils.d.ts +1 -1
  183. package/dist/patterns/auth/utils.d.ts.map +1 -1
  184. package/dist/patterns/auth/utils.js.map +1 -1
  185. package/dist/patterns/inspector-field/InspectorField.js +1 -1
  186. package/dist/patterns/inspector-field/InspectorField.js.map +1 -1
  187. package/dist/patterns/message-bubble/meta.d.ts +1 -1
  188. package/dist/patterns/notice/meta.d.ts +1 -1
  189. package/dist/patterns/panel/meta.d.ts +1 -1
  190. package/dist/patterns/reader/meta.d.ts +2 -2
  191. package/dist/patterns/scanner/meta.d.ts +2 -2
  192. package/dist/registry.js +6 -6
  193. package/dist/registry.js.map +1 -1
  194. package/dist/{components/date-picker/types.d.ts → types/date-picker.d.ts} +6 -6
  195. package/dist/types/date-picker.d.ts.map +1 -0
  196. package/dist/types/date-picker.js +2 -0
  197. package/dist/types/date-picker.js.map +1 -0
  198. package/dist/{components/form/types.d.ts → types/form.d.ts} +12 -28
  199. package/dist/types/form.d.ts.map +1 -0
  200. package/dist/types/form.js +2 -0
  201. package/dist/types/form.js.map +1 -0
  202. package/dist/{patterns/hero/types.d.ts → types/hero.d.ts} +3 -3
  203. package/dist/types/hero.d.ts.map +1 -0
  204. package/dist/types/hero.js +2 -0
  205. package/dist/types/hero.js.map +1 -0
  206. package/dist/{patterns/missing-element/types.d.ts → types/missing-element.d.ts} +2 -2
  207. package/dist/types/missing-element.d.ts.map +1 -0
  208. package/dist/types/missing-element.js +2 -0
  209. package/dist/types/missing-element.js.map +1 -0
  210. package/dist/{components/skeleton/types.d.ts → types/skeleton.d.ts} +3 -3
  211. package/dist/types/skeleton.d.ts.map +1 -0
  212. package/dist/types/skeleton.js +2 -0
  213. package/dist/types/skeleton.js.map +1 -0
  214. package/dist/{components/time-picker/types.d.ts → types/time-picker.d.ts} +2 -2
  215. package/dist/types/time-picker.d.ts.map +1 -0
  216. package/dist/types/time-picker.js +2 -0
  217. package/dist/types/time-picker.js.map +1 -0
  218. package/package.json +2 -1
  219. package/src/audit.test.ts +2 -4
  220. package/src/constants.ts +4 -0
  221. package/src/featureManifest.test.ts +19 -0
  222. package/src/features/bottom-sheet/public.test.ts +2 -2
  223. package/src/features/data-table/adapters/inbound/DataTable.tsx +1 -1
  224. package/src/{components/date-picker → features/date-picker/adapters/inbound}/DatePicker.tsx +41 -32
  225. package/src/features/date-picker/datePickerMeta.ts +58 -0
  226. package/src/features/date-picker/public.test.ts +15 -0
  227. package/src/features/date-picker/public.ts +2 -0
  228. package/src/features/date-picker/utils/localDate.test.ts +18 -0
  229. package/src/features/date-picker/utils/localDate.ts +29 -0
  230. package/src/features/form/adapters/inbound/Form.tsx +39 -0
  231. package/src/{components/form → features/form/adapters/inbound}/FormActions.tsx +4 -4
  232. package/src/features/form/adapters/inbound/FormError.tsx +22 -0
  233. package/src/{patterns/form-field → features/form/adapters/inbound}/FormField.tsx +6 -4
  234. package/src/{components/date-picker/meta.ts → features/form/formActionsMeta.ts} +3 -4
  235. package/src/features/form/formErrorMeta.ts +19 -0
  236. package/src/features/form/formFieldMeta.ts +35 -0
  237. package/src/features/form/formMeta.ts +34 -0
  238. package/src/{components/form/index.ts → features/form/public.ts} +6 -7
  239. package/src/{components → features}/form/useFormController.ts +2 -2
  240. package/src/{components/form → features/form/utils}/validation.test.ts +4 -1
  241. package/src/{components/form → features/form/utils}/validation.ts +4 -8
  242. package/src/{patterns/hero → features/hero/adapters/inbound}/Hero.tsx +6 -7
  243. package/src/features/hero/public.ts +2 -0
  244. package/src/{patterns → features}/missing-element/MissingElement.test.ts +6 -4
  245. package/src/{patterns/missing-element → features/missing-element/adapters/inbound}/MissingElement.tsx +6 -6
  246. package/src/features/missing-element/public.ts +2 -0
  247. package/src/{components/skeleton → features/skeleton/adapters/inbound}/Skeleton.tsx +4 -4
  248. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonCard.tsx +5 -5
  249. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonList.tsx +3 -3
  250. package/src/{components/skeleton → features/skeleton/adapters/inbound}/SkeletonText.tsx +3 -3
  251. package/src/features/skeleton/public.test.ts +24 -0
  252. package/src/features/skeleton/public.ts +13 -0
  253. package/src/features/skeleton/skeletonMeta.ts +88 -0
  254. package/src/{components/time-picker → features/time-picker/adapters/inbound}/TimePicker.tsx +9 -12
  255. package/src/features/time-picker/public.test.ts +14 -0
  256. package/src/features/time-picker/public.ts +2 -0
  257. package/src/features/time-picker/timePickerMeta.ts +65 -0
  258. package/src/features/uploader/adapters/inbound/Uploader.tsx +1 -1
  259. package/src/index.ts +58 -45
  260. package/src/interactionPolicy.test.ts +3 -3
  261. package/src/metadata/allowedChildren.ts +8 -1
  262. package/src/metadata/componentMeta.test.ts +24 -1
  263. package/src/metadata/componentMeta.ts +14 -11
  264. package/src/patterns/auth/AuthForm.tsx +68 -0
  265. package/src/patterns/auth/AuthFormField.tsx +81 -0
  266. package/src/patterns/auth/ForgotPasswordForm.tsx +3 -2
  267. package/src/patterns/auth/OtpForm.tsx +3 -2
  268. package/src/patterns/auth/SignInForm.tsx +3 -2
  269. package/src/patterns/auth/SignUpForm.tsx +3 -2
  270. package/src/patterns/auth/types.ts +1 -1
  271. package/src/patterns/auth/utils.ts +1 -1
  272. package/src/patterns/inspector-field/InspectorField.tsx +1 -1
  273. package/src/registry.ts +6 -6
  274. package/src/theme/themeScopeStructure.test.ts +5 -7
  275. package/src/{components/date-picker/types.ts → types/date-picker.ts} +5 -5
  276. package/src/{components/form/types.ts → types/form.ts} +12 -36
  277. package/src/{patterns/hero/types.ts → types/hero.ts} +2 -2
  278. package/src/{patterns/missing-element/types.ts → types/missing-element.ts} +1 -1
  279. package/src/{components/skeleton/types.ts → types/skeleton.ts} +2 -2
  280. package/src/{components/time-picker/types.ts → types/time-picker.ts} +1 -1
  281. package/dist/components/date-picker/DatePicker.d.ts.map +0 -1
  282. package/dist/components/date-picker/DatePicker.js.map +0 -1
  283. package/dist/components/date-picker/index.d.ts +0 -3
  284. package/dist/components/date-picker/index.d.ts.map +0 -1
  285. package/dist/components/date-picker/index.js +0 -2
  286. package/dist/components/date-picker/index.js.map +0 -1
  287. package/dist/components/date-picker/meta.d.ts +0 -9
  288. package/dist/components/date-picker/meta.d.ts.map +0 -1
  289. package/dist/components/date-picker/meta.js +0 -9
  290. package/dist/components/date-picker/meta.js.map +0 -1
  291. package/dist/components/date-picker/types.d.ts.map +0 -1
  292. package/dist/components/date-picker/types.js +0 -2
  293. package/dist/components/date-picker/types.js.map +0 -1
  294. package/dist/components/form/Form.d.ts +0 -7
  295. package/dist/components/form/Form.d.ts.map +0 -1
  296. package/dist/components/form/Form.js +0 -34
  297. package/dist/components/form/Form.js.map +0 -1
  298. package/dist/components/form/FormActions.d.ts.map +0 -1
  299. package/dist/components/form/FormActions.js.map +0 -1
  300. package/dist/components/form/FormError.d.ts +0 -7
  301. package/dist/components/form/FormError.d.ts.map +0 -1
  302. package/dist/components/form/FormError.js +0 -21
  303. package/dist/components/form/FormError.js.map +0 -1
  304. package/dist/components/form/FormField.d.ts +0 -7
  305. package/dist/components/form/FormField.d.ts.map +0 -1
  306. package/dist/components/form/FormField.js +0 -81
  307. package/dist/components/form/FormField.js.map +0 -1
  308. package/dist/components/form/index.d.ts +0 -8
  309. package/dist/components/form/index.d.ts.map +0 -1
  310. package/dist/components/form/index.js +0 -7
  311. package/dist/components/form/index.js.map +0 -1
  312. package/dist/components/form/meta.d.ts.map +0 -1
  313. package/dist/components/form/meta.js +0 -94
  314. package/dist/components/form/meta.js.map +0 -1
  315. package/dist/components/form/types.d.ts.map +0 -1
  316. package/dist/components/form/types.js +0 -2
  317. package/dist/components/form/types.js.map +0 -1
  318. package/dist/components/form/useFormController.d.ts.map +0 -1
  319. package/dist/components/form/useFormController.js.map +0 -1
  320. package/dist/components/form/validation.d.ts.map +0 -1
  321. package/dist/components/form/validation.js.map +0 -1
  322. package/dist/components/skeleton/Skeleton.d.ts.map +0 -1
  323. package/dist/components/skeleton/Skeleton.js.map +0 -1
  324. package/dist/components/skeleton/SkeletonCard.d.ts.map +0 -1
  325. package/dist/components/skeleton/SkeletonCard.js.map +0 -1
  326. package/dist/components/skeleton/SkeletonList.d.ts.map +0 -1
  327. package/dist/components/skeleton/SkeletonList.js.map +0 -1
  328. package/dist/components/skeleton/SkeletonText.d.ts.map +0 -1
  329. package/dist/components/skeleton/SkeletonText.js.map +0 -1
  330. package/dist/components/skeleton/index.d.ts +0 -6
  331. package/dist/components/skeleton/index.d.ts.map +0 -1
  332. package/dist/components/skeleton/index.js +0 -5
  333. package/dist/components/skeleton/index.js.map +0 -1
  334. package/dist/components/skeleton/meta.d.ts +0 -33
  335. package/dist/components/skeleton/meta.d.ts.map +0 -1
  336. package/dist/components/skeleton/meta.js +0 -33
  337. package/dist/components/skeleton/meta.js.map +0 -1
  338. package/dist/components/skeleton/types.d.ts.map +0 -1
  339. package/dist/components/skeleton/types.js +0 -2
  340. package/dist/components/skeleton/types.js.map +0 -1
  341. package/dist/components/time-picker/TimePicker.d.ts.map +0 -1
  342. package/dist/components/time-picker/TimePicker.js.map +0 -1
  343. package/dist/components/time-picker/index.d.ts +0 -3
  344. package/dist/components/time-picker/index.d.ts.map +0 -1
  345. package/dist/components/time-picker/index.js +0 -2
  346. package/dist/components/time-picker/index.js.map +0 -1
  347. package/dist/components/time-picker/meta.d.ts +0 -9
  348. package/dist/components/time-picker/meta.d.ts.map +0 -1
  349. package/dist/components/time-picker/meta.js +0 -9
  350. package/dist/components/time-picker/meta.js.map +0 -1
  351. package/dist/components/time-picker/types.d.ts.map +0 -1
  352. package/dist/components/time-picker/types.js +0 -2
  353. package/dist/components/time-picker/types.js.map +0 -1
  354. package/dist/patterns/form-field/FormField.d.ts +0 -4
  355. package/dist/patterns/form-field/FormField.d.ts.map +0 -1
  356. package/dist/patterns/form-field/FormField.js.map +0 -1
  357. package/dist/patterns/form-field/index.d.ts +0 -2
  358. package/dist/patterns/form-field/index.d.ts.map +0 -1
  359. package/dist/patterns/form-field/index.js +0 -2
  360. package/dist/patterns/form-field/index.js.map +0 -1
  361. package/dist/patterns/form-field/types.d.ts +0 -9
  362. package/dist/patterns/form-field/types.d.ts.map +0 -1
  363. package/dist/patterns/form-field/types.js +0 -2
  364. package/dist/patterns/form-field/types.js.map +0 -1
  365. package/dist/patterns/hero/Hero.d.ts.map +0 -1
  366. package/dist/patterns/hero/Hero.js.map +0 -1
  367. package/dist/patterns/hero/index.d.ts +0 -3
  368. package/dist/patterns/hero/index.d.ts.map +0 -1
  369. package/dist/patterns/hero/index.js +0 -2
  370. package/dist/patterns/hero/index.js.map +0 -1
  371. package/dist/patterns/hero/meta.d.ts.map +0 -1
  372. package/dist/patterns/hero/meta.js.map +0 -1
  373. package/dist/patterns/hero/types.d.ts.map +0 -1
  374. package/dist/patterns/hero/types.js +0 -2
  375. package/dist/patterns/hero/types.js.map +0 -1
  376. package/dist/patterns/missing-element/MissingElement.d.ts.map +0 -1
  377. package/dist/patterns/missing-element/MissingElement.js.map +0 -1
  378. package/dist/patterns/missing-element/index.d.ts +0 -3
  379. package/dist/patterns/missing-element/index.d.ts.map +0 -1
  380. package/dist/patterns/missing-element/index.js +0 -2
  381. package/dist/patterns/missing-element/index.js.map +0 -1
  382. package/dist/patterns/missing-element/meta.d.ts.map +0 -1
  383. package/dist/patterns/missing-element/meta.js.map +0 -1
  384. package/dist/patterns/missing-element/types.d.ts.map +0 -1
  385. package/dist/patterns/missing-element/types.js +0 -2
  386. package/dist/patterns/missing-element/types.js.map +0 -1
  387. package/src/components/date-picker/index.ts +0 -2
  388. package/src/components/form/Form.tsx +0 -74
  389. package/src/components/form/FormError.tsx +0 -34
  390. package/src/components/form/FormField.tsx +0 -157
  391. package/src/components/form/meta.ts +0 -98
  392. package/src/components/skeleton/index.ts +0 -13
  393. package/src/components/skeleton/meta.ts +0 -37
  394. package/src/components/time-picker/index.ts +0 -2
  395. package/src/components/time-picker/meta.ts +0 -10
  396. package/src/patterns/form-field/index.ts +0 -1
  397. package/src/patterns/form-field/types.ts +0 -16
  398. package/src/patterns/hero/index.ts +0 -2
  399. package/src/patterns/missing-element/index.ts +0 -2
  400. /package/src/{patterns/hero/meta.ts → features/hero/heroMeta.ts} +0 -0
  401. /package/src/{patterns/missing-element/meta.ts → features/missing-element/missingElementMeta.ts} +0 -0
@@ -0,0 +1,178 @@
1
+ export declare const skeletonMeta: {
2
+ readonly name: "Skeleton";
3
+ readonly category: "component";
4
+ readonly description: "Generic visual placeholder for a loading content region.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly [];
7
+ readonly blueprint: {
8
+ readonly label: "Skeleton";
9
+ readonly defaultProps: {
10
+ readonly height: 16;
11
+ readonly radius: "m";
12
+ };
13
+ };
14
+ readonly props: {
15
+ readonly width: {
16
+ readonly type: "number";
17
+ readonly category: "Layout";
18
+ readonly label: "Width";
19
+ };
20
+ readonly height: {
21
+ readonly type: "number";
22
+ readonly category: "Layout";
23
+ readonly label: "Height";
24
+ readonly default: 16;
25
+ };
26
+ readonly radius: {
27
+ readonly type: "radius";
28
+ readonly category: "Appearance";
29
+ readonly label: "Radius";
30
+ readonly default: "m";
31
+ };
32
+ };
33
+ };
34
+ export declare const skeletonTextMeta: {
35
+ readonly name: "SkeletonText";
36
+ readonly category: "component";
37
+ readonly description: "Multi-line placeholder for loading text content.";
38
+ readonly directManifestNode: true;
39
+ readonly allowedChildren: readonly [];
40
+ readonly blueprint: {
41
+ readonly label: "Skeleton text";
42
+ readonly defaultProps: {
43
+ readonly lines: 3;
44
+ readonly lineHeight: 12;
45
+ readonly gap: "xs";
46
+ };
47
+ };
48
+ readonly props: {
49
+ readonly lines: {
50
+ readonly type: "number";
51
+ readonly category: "Content";
52
+ readonly label: "Lines";
53
+ readonly default: 3;
54
+ };
55
+ readonly lineHeight: {
56
+ readonly type: "number";
57
+ readonly category: "Layout";
58
+ readonly label: "Line height";
59
+ readonly default: 12;
60
+ };
61
+ readonly gap: {
62
+ readonly type: "spacing";
63
+ readonly category: "Spacing";
64
+ readonly label: "Gap";
65
+ readonly default: "xs";
66
+ };
67
+ readonly width: {
68
+ readonly type: "number";
69
+ readonly category: "Layout";
70
+ readonly label: "Width";
71
+ };
72
+ readonly lastLineWidth: {
73
+ readonly type: "number";
74
+ readonly category: "Layout";
75
+ readonly label: "Last line width";
76
+ };
77
+ };
78
+ };
79
+ export declare const skeletonCardMeta: {
80
+ readonly name: "SkeletonCard";
81
+ readonly category: "component";
82
+ readonly description: "Card-shaped placeholder for loading media, copy, and actions.";
83
+ readonly directManifestNode: true;
84
+ readonly allowedChildren: readonly [];
85
+ readonly blueprint: {
86
+ readonly label: "Skeleton card";
87
+ readonly defaultProps: {
88
+ readonly media: false;
89
+ readonly actions: false;
90
+ readonly lines: 3;
91
+ readonly compact: false;
92
+ };
93
+ };
94
+ readonly props: {
95
+ readonly media: {
96
+ readonly type: "boolean";
97
+ readonly category: "Content";
98
+ readonly label: "Media";
99
+ readonly default: false;
100
+ };
101
+ readonly actions: {
102
+ readonly type: "boolean";
103
+ readonly category: "Content";
104
+ readonly label: "Actions";
105
+ readonly default: false;
106
+ };
107
+ readonly lines: {
108
+ readonly type: "number";
109
+ readonly category: "Content";
110
+ readonly label: "Lines";
111
+ readonly default: 3;
112
+ };
113
+ readonly compact: {
114
+ readonly type: "boolean";
115
+ readonly category: "Layout";
116
+ readonly label: "Compact";
117
+ readonly default: false;
118
+ };
119
+ };
120
+ };
121
+ export declare const skeletonListMeta: {
122
+ readonly name: "SkeletonList";
123
+ readonly category: "component";
124
+ readonly description: "List-shaped placeholder for loading rows with optional leading content.";
125
+ readonly directManifestNode: true;
126
+ readonly allowedChildren: readonly [];
127
+ readonly blueprint: {
128
+ readonly label: "Skeleton list";
129
+ readonly defaultProps: {
130
+ readonly rows: 5;
131
+ readonly avatar: false;
132
+ readonly media: false;
133
+ readonly lines: 2;
134
+ readonly variant: "divider";
135
+ readonly compact: false;
136
+ };
137
+ };
138
+ readonly props: {
139
+ readonly rows: {
140
+ readonly type: "number";
141
+ readonly category: "Content";
142
+ readonly label: "Rows";
143
+ readonly default: 5;
144
+ };
145
+ readonly avatar: {
146
+ readonly type: "boolean";
147
+ readonly category: "Content";
148
+ readonly label: "Avatar";
149
+ readonly default: false;
150
+ };
151
+ readonly media: {
152
+ readonly type: "boolean";
153
+ readonly category: "Content";
154
+ readonly label: "Media";
155
+ readonly default: false;
156
+ };
157
+ readonly lines: {
158
+ readonly type: "number";
159
+ readonly category: "Content";
160
+ readonly label: "Lines";
161
+ readonly default: 2;
162
+ };
163
+ readonly variant: {
164
+ readonly type: "enum";
165
+ readonly category: "Appearance";
166
+ readonly label: "Variant";
167
+ readonly enum: readonly ["divider", "card"];
168
+ readonly default: "divider";
169
+ };
170
+ readonly compact: {
171
+ readonly type: "boolean";
172
+ readonly category: "Layout";
173
+ readonly label: "Compact";
174
+ readonly default: false;
175
+ };
176
+ };
177
+ };
178
+ //# sourceMappingURL=skeletonMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeletonMeta.d.ts","sourceRoot":"","sources":["../../../src/features/skeleton/skeletonMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAea,CAAC;AAEvC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBS,CAAC;AAEvC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBS,CAAC;AAEvC,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BS,CAAC"}
@@ -0,0 +1,84 @@
1
+ export const skeletonMeta = {
2
+ name: 'Skeleton',
3
+ category: 'component',
4
+ description: 'Generic visual placeholder for a loading content region.',
5
+ directManifestNode: true,
6
+ allowedChildren: [],
7
+ blueprint: {
8
+ label: 'Skeleton',
9
+ defaultProps: { height: 16, radius: 'm' },
10
+ },
11
+ props: {
12
+ width: { type: 'number', category: 'Layout', label: 'Width' },
13
+ height: { type: 'number', category: 'Layout', label: 'Height', default: 16 },
14
+ radius: { type: 'radius', category: 'Appearance', label: 'Radius', default: 'm' },
15
+ },
16
+ };
17
+ export const skeletonTextMeta = {
18
+ name: 'SkeletonText',
19
+ category: 'component',
20
+ description: 'Multi-line placeholder for loading text content.',
21
+ directManifestNode: true,
22
+ allowedChildren: [],
23
+ blueprint: {
24
+ label: 'Skeleton text',
25
+ defaultProps: { lines: 3, lineHeight: 12, gap: 'xs' },
26
+ },
27
+ props: {
28
+ lines: { type: 'number', category: 'Content', label: 'Lines', default: 3 },
29
+ lineHeight: { type: 'number', category: 'Layout', label: 'Line height', default: 12 },
30
+ gap: { type: 'spacing', category: 'Spacing', label: 'Gap', default: 'xs' },
31
+ width: { type: 'number', category: 'Layout', label: 'Width' },
32
+ lastLineWidth: { type: 'number', category: 'Layout', label: 'Last line width' },
33
+ },
34
+ };
35
+ export const skeletonCardMeta = {
36
+ name: 'SkeletonCard',
37
+ category: 'component',
38
+ description: 'Card-shaped placeholder for loading media, copy, and actions.',
39
+ directManifestNode: true,
40
+ allowedChildren: [],
41
+ blueprint: {
42
+ label: 'Skeleton card',
43
+ defaultProps: { media: false, actions: false, lines: 3, compact: false },
44
+ },
45
+ props: {
46
+ media: { type: 'boolean', category: 'Content', label: 'Media', default: false },
47
+ actions: { type: 'boolean', category: 'Content', label: 'Actions', default: false },
48
+ lines: { type: 'number', category: 'Content', label: 'Lines', default: 3 },
49
+ compact: { type: 'boolean', category: 'Layout', label: 'Compact', default: false },
50
+ },
51
+ };
52
+ export const skeletonListMeta = {
53
+ name: 'SkeletonList',
54
+ category: 'component',
55
+ description: 'List-shaped placeholder for loading rows with optional leading content.',
56
+ directManifestNode: true,
57
+ allowedChildren: [],
58
+ blueprint: {
59
+ label: 'Skeleton list',
60
+ defaultProps: {
61
+ rows: 5,
62
+ avatar: false,
63
+ media: false,
64
+ lines: 2,
65
+ variant: 'divider',
66
+ compact: false,
67
+ },
68
+ },
69
+ props: {
70
+ rows: { type: 'number', category: 'Content', label: 'Rows', default: 5 },
71
+ avatar: { type: 'boolean', category: 'Content', label: 'Avatar', default: false },
72
+ media: { type: 'boolean', category: 'Content', label: 'Media', default: false },
73
+ lines: { type: 'number', category: 'Content', label: 'Lines', default: 2 },
74
+ variant: {
75
+ type: 'enum',
76
+ category: 'Appearance',
77
+ label: 'Variant',
78
+ enum: ['divider', 'card'],
79
+ default: 'divider',
80
+ },
81
+ compact: { type: 'boolean', category: 'Layout', label: 'Compact', default: false },
82
+ },
83
+ };
84
+ //# sourceMappingURL=skeletonMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeletonMeta.js","sourceRoot":"","sources":["../../../src/features/skeleton/skeletonMeta.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ZoraComponentMeta } from '../../metadata';\n\nexport const skeletonMeta = {\n name: 'Skeleton',\n category: 'component',\n description: 'Generic visual placeholder for a loading content region.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Skeleton',\n defaultProps: { height: 16, radius: 'm' },\n },\n props: {\n width: { type: 'number', category: 'Layout', label: 'Width' },\n height: { type: 'number', category: 'Layout', label: 'Height', default: 16 },\n radius: { type: 'radius', category: 'Appearance', label: 'Radius', default: 'm' },\n },\n} as const satisfies ZoraComponentMeta;\n\nexport const skeletonTextMeta = {\n name: 'SkeletonText',\n category: 'component',\n description: 'Multi-line placeholder for loading text content.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Skeleton text',\n defaultProps: { lines: 3, lineHeight: 12, gap: 'xs' },\n },\n props: {\n lines: { type: 'number', category: 'Content', label: 'Lines', default: 3 },\n lineHeight: { type: 'number', category: 'Layout', label: 'Line height', default: 12 },\n gap: { type: 'spacing', category: 'Spacing', label: 'Gap', default: 'xs' },\n width: { type: 'number', category: 'Layout', label: 'Width' },\n lastLineWidth: { type: 'number', category: 'Layout', label: 'Last line width' },\n },\n} as const satisfies ZoraComponentMeta;\n\nexport const skeletonCardMeta = {\n name: 'SkeletonCard',\n category: 'component',\n description: 'Card-shaped placeholder for loading media, copy, and actions.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Skeleton card',\n defaultProps: { media: false, actions: false, lines: 3, compact: false },\n },\n props: {\n media: { type: 'boolean', category: 'Content', label: 'Media', default: false },\n actions: { type: 'boolean', category: 'Content', label: 'Actions', default: false },\n lines: { type: 'number', category: 'Content', label: 'Lines', default: 3 },\n compact: { type: 'boolean', category: 'Layout', label: 'Compact', default: false },\n },\n} as const satisfies ZoraComponentMeta;\n\nexport const skeletonListMeta = {\n name: 'SkeletonList',\n category: 'component',\n description: 'List-shaped placeholder for loading rows with optional leading content.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Skeleton list',\n defaultProps: {\n rows: 5,\n avatar: false,\n media: false,\n lines: 2,\n variant: 'divider',\n compact: false,\n },\n },\n props: {\n rows: { type: 'number', category: 'Content', label: 'Rows', default: 5 },\n avatar: { type: 'boolean', category: 'Content', label: 'Avatar', default: false },\n media: { type: 'boolean', category: 'Content', label: 'Media', default: false },\n lines: { type: 'number', category: 'Content', label: 'Lines', default: 2 },\n variant: {\n type: 'enum',\n category: 'Appearance',\n label: 'Variant',\n enum: ['divider', 'card'],\n default: 'divider',\n },\n compact: { type: 'boolean', category: 'Layout', label: 'Compact', default: false },\n },\n} as const satisfies ZoraComponentMeta;\n"]}
@@ -2,7 +2,7 @@ export declare const surfaceMeta: {
2
2
  readonly name: "Surface";
3
3
  readonly category: "foundation";
4
4
  readonly directManifestNode: true;
5
- readonly allowedChildren: readonly ["ActivityIndicator", "Surface", "Avatar", "AvatarGroup", "Badge", "MediaCard", "MetricCard", "Chip", "ChipGroup", "DataTable", "IconButton", "Uploader", "FlatList", "SectionList", "BottomSheet", "ProductCard", "Box", "Stack", "Grid", "Container", "Divider", "Text", "Heading", "Icon", "Image", "KeyboardAvoidingView", "Button", "ButtonGroup", "RadioGroup", "ThemeModeToggle", "TextInput", "FormField", "Card", "Panel", "Notice", "EmptyState", "SectionHeader", "SettingsRow", "PostCard", "ChatListItem", "MessageBubble", "ProgressRing", "ReaderSurface", "ContentRail", "MissingElement"];
5
+ readonly allowedChildren: readonly ["ActivityIndicator", "Surface", "Avatar", "AvatarGroup", "Badge", "MediaCard", "MetricCard", "Chip", "ChipGroup", "DataTable", "DatePicker", "Skeleton", "SkeletonCard", "SkeletonList", "SkeletonText", "IconButton", "Uploader", "FlatList", "SectionList", "BottomSheet", "ProductCard", "Box", "Stack", "Grid", "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"];
6
6
  readonly props: {
7
7
  readonly variant: {
8
8
  readonly type: "enum";
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { TimePickerProps } from './types';
2
+ import type { TimePickerProps } from '../../../../types/time-picker';
3
3
  /***
4
4
  * Time input control with bottom-sheet selection and formatted display value.
5
5
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/time-picker/adapters/inbound/TimePicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAyPrE;;GAEG;AACH,eAAO,MAAM,UAAU,uDAAsC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { Field } from '@ankhorage/surface';
2
2
  import React from 'react';
3
3
  import { ScrollView, StyleSheet } from 'react-native';
4
- import { useBottomSheet } from '../../features/bottom-sheet/public';
5
- import { Button } from '../../features/button/public';
6
- import { Stack } from '../../features/layout/public';
7
- import { Text } from '../../features/typography/public';
8
- import { withZoraThemeScope } from '../../theme/withZoraThemeScope';
4
+ import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
5
+ import { useBottomSheet } from '../../../bottom-sheet/public';
6
+ import { Button } from '../../../button/public';
7
+ import { Stack } from '../../../layout/public';
8
+ import { Text } from '../../../typography/public';
9
9
  const MINUTES_PER_DAY = 24 * 60;
10
10
  const DEFAULT_STEP_MINUTES = 30;
11
11
  /*** Render the field label and optional supporting description. */
@@ -50,12 +50,9 @@ function generateTimeOptions({ minTime, maxTime, stepMinutes, }) {
50
50
  const step = resolveStepMinutes(stepMinutes);
51
51
  const min = parseTimeToMinutes(minTime) ?? 0;
52
52
  const max = parseTimeToMinutes(maxTime) ?? MINUTES_PER_DAY - 1;
53
- const options = [];
54
- for (let minute = 0; minute < MINUTES_PER_DAY; minute += step) {
55
- if (minute >= min && minute <= max)
56
- options.push(formatMinutes(minute));
57
- }
58
- return options;
53
+ return Array.from({ length: Math.ceil(MINUTES_PER_DAY / step) }, (_, index) => index * step)
54
+ .filter((minute) => minute >= min && minute <= max)
55
+ .map(formatMinutes);
59
56
  }
60
57
  function TimePickerInner({ themeId: _themeId, mode: _mode, value, onValueChange, label, description, error, placeholder = 'Choose time', minTime, maxTime, stepMinutes, disabled = false, required = false, formatTime, testID, interactionPolicy, }) {
61
58
  const { dismiss, present } = useBottomSheet();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker.js","sourceRoot":"","sources":["../../../../../src/features/time-picker/adapters/inbound/TimePicker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Field } from '@ankhorage/surface';\nimport React from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\n\nimport { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';\nimport type { TimePickerProps } from '../../../../types/time-picker';\nimport { useBottomSheet } from '../../../bottom-sheet/public';\nimport { Button } from '../../../button/public';\nimport { Stack } from '../../../layout/public';\nimport { Text } from '../../../typography/public';\n\nconst MINUTES_PER_DAY = 24 * 60;\nconst DEFAULT_STEP_MINUTES = 30;\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/*** Parse one HH:mm value to minutes since midnight. */\nfunction parseTimeToMinutes(value: string | undefined): number | undefined {\n if (!value) return undefined;\n const match = /^(\\d{2}):(\\d{2})$/.exec(value);\n if (!match) return undefined;\n\n const hours = Number(match[1]);\n const minutes = Number(match[2]);\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return undefined;\n return hours * 60 + minutes;\n}\n\n/*** Format minutes since midnight as HH:mm. */\nfunction formatMinutes(value: number): string {\n const hours = Math.floor(value / 60);\n const minutes = value % 60;\n return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n}\n\n/*** Normalize the configured time step to a positive whole minute. */\nfunction resolveStepMinutes(stepMinutes: number | undefined): number {\n if (stepMinutes === undefined || !Number.isFinite(stepMinutes) || stepMinutes <= 0) {\n return DEFAULT_STEP_MINUTES;\n }\n return Math.max(1, Math.floor(stepMinutes));\n}\n\n/*** Generate selectable HH:mm values within the configured range. */\nfunction generateTimeOptions({\n minTime,\n maxTime,\n stepMinutes,\n}: Pick<TimePickerProps, 'maxTime' | 'minTime' | 'stepMinutes'>): string[] {\n const step = resolveStepMinutes(stepMinutes);\n const min = parseTimeToMinutes(minTime) ?? 0;\n const max = parseTimeToMinutes(maxTime) ?? MINUTES_PER_DAY - 1;\n return Array.from({ length: Math.ceil(MINUTES_PER_DAY / step) }, (_, index) => index * step)\n .filter((minute) => minute >= min && minute <= max)\n .map(formatMinutes);\n}\n\nfunction TimePickerInner({\n themeId: _themeId,\n mode: _mode,\n value,\n onValueChange,\n label,\n description,\n error,\n placeholder = 'Choose time',\n minTime,\n maxTime,\n stepMinutes,\n disabled = false,\n required = false,\n formatTime,\n testID,\n interactionPolicy,\n}: TimePickerProps) {\n const { dismiss, present } = useBottomSheet();\n const passive = interactionPolicy === 'passive';\n const displayValue = value ? (formatTime ? formatTime(value) : value) : placeholder;\n\n /*** Present the time options through the shared BottomSheet controller. */\n function openPicker() {\n if (passive) return;\n present({\n content: (\n <TimePickerSheet\n description={description}\n formatTime={formatTime}\n interactionPolicy={interactionPolicy}\n label={label}\n maxTime={maxTime}\n minTime={minTime}\n onDismiss={dismiss}\n onSelect={(time) => {\n onValueChange?.(time);\n dismiss();\n }}\n stepMinutes={stepMinutes}\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: 'chevron-down-outline' }}\n variant=\"outline\"\n >\n {displayValue}\n </Button>\n </Field>\n );\n}\n\ninterface TimePickerSheetProps extends Pick<\n TimePickerProps,\n | 'description'\n | 'formatTime'\n | 'interactionPolicy'\n | 'label'\n | 'maxTime'\n | 'minTime'\n | 'stepMinutes'\n | 'testID'\n | 'value'\n> {\n onDismiss: () => void;\n onSelect: (value: string) => void;\n}\n\n/*** Render time selection content inside the shared BottomSheet host. */\nfunction TimePickerSheet({\n description,\n formatTime,\n interactionPolicy,\n label,\n maxTime,\n minTime,\n onDismiss,\n onSelect,\n stepMinutes,\n testID,\n value,\n}: TimePickerSheetProps) {\n const options = React.useMemo(\n () => generateTimeOptions({ maxTime, minTime, stepMinutes }),\n [maxTime, minTime, stepMinutes],\n );\n\n return (\n <Stack gap=\"m\" p=\"m\" testID={testID ? `${testID}-sheet` : undefined}>\n <PickerSheetHeader description={description} title={label ?? 'Choose time'} />\n <ScrollView style={styles.options}>\n <Stack gap=\"xxs\">\n {options.map((option) => (\n <TimePickerOption\n formatTime={formatTime}\n interactionPolicy={interactionPolicy}\n key={option}\n onSelect={onSelect}\n option={option}\n selected={option === value}\n testID={testID}\n />\n ))}\n </Stack>\n </ScrollView>\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 time 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 one accessible selectable time option. */\nfunction TimePickerOption({\n formatTime,\n interactionPolicy,\n onSelect,\n option,\n selected,\n testID,\n}: Pick<TimePickerSheetProps, 'formatTime' | 'interactionPolicy' | 'testID'> & {\n onSelect: (value: string) => void;\n option: string;\n selected: boolean;\n}) {\n return (\n <Button\n accessibilityState={{ selected }}\n fullWidth\n interactionPolicy={interactionPolicy}\n onPress={() => onSelect(option)}\n testID={testID ? `${testID}-option-${option}` : undefined}\n variant={selected ? 'soft' : 'ghost'}\n >\n {formatTime ? formatTime(option) : option}\n </Button>\n );\n}\n\nconst styles = StyleSheet.create({\n options: { maxHeight: 360 },\n});\n\n/***\n * Time input control with bottom-sheet selection and formatted display value.\n */\nexport const TimePicker = withZoraThemeScope(TimePickerInner);\n"]}
@@ -0,0 +1,3 @@
1
+ export type { TimePickerProps, TimePickerValue } from '../../types/time-picker';
2
+ export { TimePicker } from './adapters/inbound/TimePicker';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/features/time-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 { TimePicker } from './adapters/inbound/TimePicker';
2
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/features/time-picker/public.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC","sourcesContent":["export type { TimePickerProps, TimePickerValue } from '../../types/time-picker';\nexport { TimePicker } from './adapters/inbound/TimePicker';\n"]}
@@ -0,0 +1,90 @@
1
+ export declare const timePickerMeta: {
2
+ readonly name: "TimePicker";
3
+ readonly category: "component";
4
+ readonly description: "Captures a local HH:mm time through the shared BottomSheet picker host.";
5
+ readonly directManifestNode: true;
6
+ readonly allowedChildren: readonly [];
7
+ readonly blueprint: {
8
+ readonly label: "Time picker";
9
+ readonly defaultProps: {
10
+ readonly value: null;
11
+ readonly placeholder: "Choose time";
12
+ readonly stepMinutes: 30;
13
+ readonly disabled: false;
14
+ readonly required: false;
15
+ };
16
+ };
17
+ readonly events: {
18
+ readonly valueChange: {
19
+ readonly label: "Value change";
20
+ readonly eventType: "timePicker.valueChange";
21
+ readonly description: "Emitted when an HH:mm time value is selected.";
22
+ readonly payloadFields: readonly [{
23
+ readonly path: "value";
24
+ readonly type: "string";
25
+ readonly label: "Value";
26
+ }];
27
+ };
28
+ };
29
+ readonly props: {
30
+ readonly value: {
31
+ readonly type: "string";
32
+ readonly category: "State";
33
+ readonly label: "Value";
34
+ readonly default: null;
35
+ readonly authoring: {
36
+ readonly authority: "instance";
37
+ };
38
+ };
39
+ readonly label: {
40
+ readonly type: "string";
41
+ readonly category: "Content";
42
+ readonly label: "Label";
43
+ };
44
+ readonly description: {
45
+ readonly type: "string";
46
+ readonly category: "Content";
47
+ readonly label: "Description";
48
+ };
49
+ readonly error: {
50
+ readonly type: "string";
51
+ readonly category: "Validation";
52
+ readonly label: "Error";
53
+ };
54
+ readonly placeholder: {
55
+ readonly type: "string";
56
+ readonly category: "Content";
57
+ readonly label: "Placeholder";
58
+ readonly default: "Choose time";
59
+ };
60
+ readonly minTime: {
61
+ readonly type: "string";
62
+ readonly category: "Validation";
63
+ readonly label: "Minimum time";
64
+ };
65
+ readonly maxTime: {
66
+ readonly type: "string";
67
+ readonly category: "Validation";
68
+ readonly label: "Maximum time";
69
+ };
70
+ readonly stepMinutes: {
71
+ readonly type: "number";
72
+ readonly category: "Behavior";
73
+ readonly label: "Step in minutes";
74
+ readonly default: 30;
75
+ };
76
+ readonly disabled: {
77
+ readonly type: "boolean";
78
+ readonly category: "State";
79
+ readonly label: "Disabled";
80
+ readonly default: false;
81
+ };
82
+ readonly required: {
83
+ readonly type: "boolean";
84
+ readonly category: "Validation";
85
+ readonly label: "Required";
86
+ readonly default: false;
87
+ };
88
+ };
89
+ };
90
+ //# sourceMappingURL=timePickerMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timePickerMeta.d.ts","sourceRoot":"","sources":["../../../src/features/time-picker/timePickerMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DW,CAAC"}
@@ -0,0 +1,64 @@
1
+ export const timePickerMeta = {
2
+ name: 'TimePicker',
3
+ category: 'component',
4
+ description: 'Captures a local HH:mm time through the shared BottomSheet picker host.',
5
+ directManifestNode: true,
6
+ allowedChildren: [],
7
+ blueprint: {
8
+ label: 'Time picker',
9
+ defaultProps: {
10
+ value: null,
11
+ placeholder: 'Choose time',
12
+ stepMinutes: 30,
13
+ disabled: false,
14
+ required: false,
15
+ },
16
+ },
17
+ events: {
18
+ valueChange: {
19
+ label: 'Value change',
20
+ eventType: 'timePicker.valueChange',
21
+ description: 'Emitted when an HH:mm time value is selected.',
22
+ payloadFields: [{ path: 'value', type: 'string', label: 'Value' }],
23
+ },
24
+ },
25
+ props: {
26
+ value: {
27
+ type: 'string',
28
+ category: 'State',
29
+ label: 'Value',
30
+ default: null,
31
+ authoring: { authority: 'instance' },
32
+ },
33
+ label: { type: 'string', category: 'Content', label: 'Label' },
34
+ description: { type: 'string', category: 'Content', label: 'Description' },
35
+ error: { type: 'string', category: 'Validation', label: 'Error' },
36
+ placeholder: {
37
+ type: 'string',
38
+ category: 'Content',
39
+ label: 'Placeholder',
40
+ default: 'Choose time',
41
+ },
42
+ minTime: { type: 'string', category: 'Validation', label: 'Minimum time' },
43
+ maxTime: { type: 'string', category: 'Validation', label: 'Maximum time' },
44
+ stepMinutes: {
45
+ type: 'number',
46
+ category: 'Behavior',
47
+ label: 'Step in minutes',
48
+ default: 30,
49
+ },
50
+ disabled: {
51
+ type: 'boolean',
52
+ category: 'State',
53
+ label: 'Disabled',
54
+ default: false,
55
+ },
56
+ required: {
57
+ type: 'boolean',
58
+ category: 'Validation',
59
+ label: 'Required',
60
+ default: false,
61
+ },
62
+ },
63
+ };
64
+ //# sourceMappingURL=timePickerMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timePickerMeta.js","sourceRoot":"","sources":["../../../src/features/time-picker/timePickerMeta.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,WAAW;IACrB,WAAW,EAAE,yEAAyE;IACtF,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,WAAW,EAAE,EAAE;YACf,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,+CAA+C;YAC5D,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,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,EAAE;SACZ;QACD,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 timePickerMeta = {\n name: 'TimePicker',\n category: 'component',\n description: 'Captures a local HH:mm time through the shared BottomSheet picker host.',\n directManifestNode: true,\n allowedChildren: [],\n blueprint: {\n label: 'Time picker',\n defaultProps: {\n value: null,\n placeholder: 'Choose time',\n stepMinutes: 30,\n disabled: false,\n required: false,\n },\n },\n events: {\n valueChange: {\n label: 'Value change',\n eventType: 'timePicker.valueChange',\n description: 'Emitted when an HH:mm time value 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 time',\n },\n minTime: { type: 'string', category: 'Validation', label: 'Minimum time' },\n maxTime: { type: 'string', category: 'Validation', label: 'Maximum time' },\n stepMinutes: {\n type: 'number',\n category: 'Behavior',\n label: 'Step in minutes',\n default: 30,\n },\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../../../../src/features/uploader/adapters/inbound/Uploader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAe,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAUvF,gFAAgF;AAChF,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
1
+ {"version":3,"file":"Uploader.d.ts","sourceRoot":"","sources":["../../../../../src/features/uploader/adapters/inbound/Uploader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAe,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAWvF,gFAAgF;AAChF,eAAO,MAAM,QAAQ,qDAAoC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Modal } from '../../../../components/modal';
3
- import { FormField } from '../../../../patterns/form-field';
4
3
  import { withZoraThemeScope } from '../../../../theme/withZoraThemeScope';
5
4
  import { Button } from '../../../button/public';
5
+ import { FormField } from '../../../form/public';
6
6
  import { Icon } from '../../../icon/public';
7
7
  import { Image } from '../../../image/public';
8
8
  import { Box, Stack } from '../../../layout/public';