@ankhorage/zora 1.3.0 → 1.4.1

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 (367) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +208 -0
  3. package/dist/components/app-bar/meta.d.ts +9 -0
  4. package/dist/components/app-bar/meta.d.ts.map +1 -0
  5. package/dist/components/app-bar/meta.js +9 -0
  6. package/dist/components/app-bar/meta.js.map +1 -0
  7. package/dist/components/avatar/meta.d.ts +9 -0
  8. package/dist/components/avatar/meta.d.ts.map +1 -0
  9. package/dist/components/avatar/meta.js +9 -0
  10. package/dist/components/avatar/meta.js.map +1 -0
  11. package/dist/components/avatar-group/meta.d.ts +9 -0
  12. package/dist/components/avatar-group/meta.d.ts.map +1 -0
  13. package/dist/components/avatar-group/meta.js +9 -0
  14. package/dist/components/avatar-group/meta.js.map +1 -0
  15. package/dist/components/badge/meta.d.ts +9 -0
  16. package/dist/components/badge/meta.d.ts.map +1 -0
  17. package/dist/components/badge/meta.js +9 -0
  18. package/dist/components/badge/meta.js.map +1 -0
  19. package/dist/components/button/meta.d.ts +45 -0
  20. package/dist/components/button/meta.d.ts.map +1 -0
  21. package/dist/components/button/meta.js +45 -0
  22. package/dist/components/button/meta.js.map +1 -0
  23. package/dist/components/card/meta.d.ts +44 -0
  24. package/dist/components/card/meta.d.ts.map +1 -0
  25. package/dist/components/card/meta.js +45 -0
  26. package/dist/components/card/meta.js.map +1 -0
  27. package/dist/components/checkbox/meta.d.ts +17 -0
  28. package/dist/components/checkbox/meta.d.ts.map +1 -0
  29. package/dist/components/checkbox/meta.js +17 -0
  30. package/dist/components/checkbox/meta.js.map +1 -0
  31. package/dist/components/chip/meta.d.ts +9 -0
  32. package/dist/components/chip/meta.d.ts.map +1 -0
  33. package/dist/components/chip/meta.js +9 -0
  34. package/dist/components/chip/meta.js.map +1 -0
  35. package/dist/components/chip-group/meta.d.ts +9 -0
  36. package/dist/components/chip-group/meta.d.ts.map +1 -0
  37. package/dist/components/chip-group/meta.js +9 -0
  38. package/dist/components/chip-group/meta.js.map +1 -0
  39. package/dist/components/drawer/meta.d.ts +9 -0
  40. package/dist/components/drawer/meta.d.ts.map +1 -0
  41. package/dist/components/drawer/meta.js +9 -0
  42. package/dist/components/drawer/meta.js.map +1 -0
  43. package/dist/components/form/index.d.ts +1 -1
  44. package/dist/components/form/index.d.ts.map +1 -1
  45. package/dist/components/form/index.js.map +1 -1
  46. package/dist/components/form/meta.d.ts +79 -0
  47. package/dist/components/form/meta.d.ts.map +1 -0
  48. package/dist/components/form/meta.js +79 -0
  49. package/dist/components/form/meta.js.map +1 -0
  50. package/dist/components/form/types.d.ts +2 -1
  51. package/dist/components/form/types.d.ts.map +1 -1
  52. package/dist/components/form/types.js.map +1 -1
  53. package/dist/components/heading/meta.d.ts +69 -0
  54. package/dist/components/heading/meta.d.ts.map +1 -0
  55. package/dist/components/heading/meta.js +66 -0
  56. package/dist/components/heading/meta.js.map +1 -0
  57. package/dist/components/icon/meta.d.ts +9 -0
  58. package/dist/components/icon/meta.d.ts.map +1 -0
  59. package/dist/components/icon/meta.js +9 -0
  60. package/dist/components/icon/meta.js.map +1 -0
  61. package/dist/components/icon-button/meta.d.ts +9 -0
  62. package/dist/components/icon-button/meta.d.ts.map +1 -0
  63. package/dist/components/icon-button/meta.js +9 -0
  64. package/dist/components/icon-button/meta.js.map +1 -0
  65. package/dist/components/image/meta.d.ts +9 -0
  66. package/dist/components/image/meta.d.ts.map +1 -0
  67. package/dist/components/image/meta.js +9 -0
  68. package/dist/components/image/meta.js.map +1 -0
  69. package/dist/components/input/meta.d.ts +45 -0
  70. package/dist/components/input/meta.d.ts.map +1 -0
  71. package/dist/components/input/meta.js +45 -0
  72. package/dist/components/input/meta.js.map +1 -0
  73. package/dist/components/media-card/meta.d.ts +9 -0
  74. package/dist/components/media-card/meta.d.ts.map +1 -0
  75. package/dist/components/media-card/meta.js +9 -0
  76. package/dist/components/media-card/meta.js.map +1 -0
  77. package/dist/components/metric-card/meta.d.ts +9 -0
  78. package/dist/components/metric-card/meta.d.ts.map +1 -0
  79. package/dist/components/metric-card/meta.js +9 -0
  80. package/dist/components/metric-card/meta.js.map +1 -0
  81. package/dist/components/modal/meta.d.ts +9 -0
  82. package/dist/components/modal/meta.d.ts.map +1 -0
  83. package/dist/components/modal/meta.js +9 -0
  84. package/dist/components/modal/meta.js.map +1 -0
  85. package/dist/components/navigation-item/meta.d.ts +9 -0
  86. package/dist/components/navigation-item/meta.d.ts.map +1 -0
  87. package/dist/components/navigation-item/meta.js +9 -0
  88. package/dist/components/navigation-item/meta.js.map +1 -0
  89. package/dist/components/navigation-list/meta.d.ts +9 -0
  90. package/dist/components/navigation-list/meta.d.ts.map +1 -0
  91. package/dist/components/navigation-list/meta.js +9 -0
  92. package/dist/components/navigation-list/meta.js.map +1 -0
  93. package/dist/components/progress/meta.d.ts +9 -0
  94. package/dist/components/progress/meta.d.ts.map +1 -0
  95. package/dist/components/progress/meta.js +9 -0
  96. package/dist/components/progress/meta.js.map +1 -0
  97. package/dist/components/radio/meta.d.ts +17 -0
  98. package/dist/components/radio/meta.d.ts.map +1 -0
  99. package/dist/components/radio/meta.js +17 -0
  100. package/dist/components/radio/meta.js.map +1 -0
  101. package/dist/components/rating/meta.d.ts +9 -0
  102. package/dist/components/rating/meta.d.ts.map +1 -0
  103. package/dist/components/rating/meta.js +9 -0
  104. package/dist/components/rating/meta.js.map +1 -0
  105. package/dist/components/search-bar/meta.d.ts +9 -0
  106. package/dist/components/search-bar/meta.d.ts.map +1 -0
  107. package/dist/components/search-bar/meta.js +9 -0
  108. package/dist/components/search-bar/meta.js.map +1 -0
  109. package/dist/components/select/meta.d.ts +9 -0
  110. package/dist/components/select/meta.d.ts.map +1 -0
  111. package/dist/components/select/meta.js +9 -0
  112. package/dist/components/select/meta.js.map +1 -0
  113. package/dist/components/tabs/meta.d.ts +9 -0
  114. package/dist/components/tabs/meta.d.ts.map +1 -0
  115. package/dist/components/tabs/meta.js +9 -0
  116. package/dist/components/tabs/meta.js.map +1 -0
  117. package/dist/components/text/meta.d.ts +71 -0
  118. package/dist/components/text/meta.d.ts.map +1 -0
  119. package/dist/components/text/meta.js +68 -0
  120. package/dist/components/text/meta.js.map +1 -0
  121. package/dist/components/textarea/meta.d.ts +45 -0
  122. package/dist/components/textarea/meta.d.ts.map +1 -0
  123. package/dist/components/textarea/meta.js +45 -0
  124. package/dist/components/textarea/meta.js.map +1 -0
  125. package/dist/components/toolbar/meta.d.ts +17 -0
  126. package/dist/components/toolbar/meta.d.ts.map +1 -0
  127. package/dist/components/toolbar/meta.js +17 -0
  128. package/dist/components/toolbar/meta.js.map +1 -0
  129. package/dist/foundation/meta.d.ts +93 -0
  130. package/dist/foundation/meta.d.ts.map +1 -0
  131. package/dist/foundation/meta.js +84 -0
  132. package/dist/foundation/meta.js.map +1 -0
  133. package/dist/index.d.ts +5 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +2 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/layout/app-shell/meta.d.ts +9 -0
  138. package/dist/layout/app-shell/meta.d.ts.map +1 -0
  139. package/dist/layout/app-shell/meta.js +9 -0
  140. package/dist/layout/app-shell/meta.js.map +1 -0
  141. package/dist/layout/auth-layout/meta.d.ts +33 -0
  142. package/dist/layout/auth-layout/meta.d.ts.map +1 -0
  143. package/dist/layout/auth-layout/meta.js +34 -0
  144. package/dist/layout/auth-layout/meta.js.map +1 -0
  145. package/dist/layout/page/meta.d.ts +19 -0
  146. package/dist/layout/page/meta.d.ts.map +1 -0
  147. package/dist/layout/page/meta.js +20 -0
  148. package/dist/layout/page/meta.js.map +1 -0
  149. package/dist/layout/page-header/meta.d.ts +38 -0
  150. package/dist/layout/page-header/meta.d.ts.map +1 -0
  151. package/dist/layout/page-header/meta.js +38 -0
  152. package/dist/layout/page-header/meta.js.map +1 -0
  153. package/dist/layout/page-section/meta.d.ts +28 -0
  154. package/dist/layout/page-section/meta.d.ts.map +1 -0
  155. package/dist/layout/page-section/meta.js +29 -0
  156. package/dist/layout/page-section/meta.js.map +1 -0
  157. package/dist/layout/settings-layout/meta.d.ts +9 -0
  158. package/dist/layout/settings-layout/meta.d.ts.map +1 -0
  159. package/dist/layout/settings-layout/meta.js +9 -0
  160. package/dist/layout/settings-layout/meta.js.map +1 -0
  161. package/dist/layout/sidebar-layout/meta.d.ts +9 -0
  162. package/dist/layout/sidebar-layout/meta.d.ts.map +1 -0
  163. package/dist/layout/sidebar-layout/meta.js +9 -0
  164. package/dist/layout/sidebar-layout/meta.js.map +1 -0
  165. package/dist/layout/topbar-layout/meta.d.ts +9 -0
  166. package/dist/layout/topbar-layout/meta.d.ts.map +1 -0
  167. package/dist/layout/topbar-layout/meta.js +9 -0
  168. package/dist/layout/topbar-layout/meta.js.map +1 -0
  169. package/dist/metadata/allowedChildren.d.ts +4 -0
  170. package/dist/metadata/allowedChildren.d.ts.map +1 -0
  171. package/dist/metadata/allowedChildren.js +26 -0
  172. package/dist/metadata/allowedChildren.js.map +1 -0
  173. package/dist/metadata/componentMeta.d.ts +3 -0
  174. package/dist/metadata/componentMeta.d.ts.map +1 -0
  175. package/dist/metadata/componentMeta.js +143 -0
  176. package/dist/metadata/componentMeta.js.map +1 -0
  177. package/dist/metadata/index.d.ts +3 -0
  178. package/dist/metadata/index.d.ts.map +1 -0
  179. package/dist/metadata/index.js +2 -0
  180. package/dist/metadata/index.js.map +1 -0
  181. package/dist/metadata/types.d.ts +49 -0
  182. package/dist/metadata/types.d.ts.map +1 -0
  183. package/dist/metadata/types.js +2 -0
  184. package/dist/metadata/types.js.map +1 -0
  185. package/dist/patterns/auth/meta.d.ts +33 -0
  186. package/dist/patterns/auth/meta.d.ts.map +1 -0
  187. package/dist/patterns/auth/meta.js +34 -0
  188. package/dist/patterns/auth/meta.js.map +1 -0
  189. package/dist/patterns/collection-editor/meta.d.ts +9 -0
  190. package/dist/patterns/collection-editor/meta.d.ts.map +1 -0
  191. package/dist/patterns/collection-editor/meta.js +9 -0
  192. package/dist/patterns/collection-editor/meta.js.map +1 -0
  193. package/dist/patterns/confirm-dialog/meta.d.ts +9 -0
  194. package/dist/patterns/confirm-dialog/meta.d.ts.map +1 -0
  195. package/dist/patterns/confirm-dialog/meta.js +9 -0
  196. package/dist/patterns/confirm-dialog/meta.js.map +1 -0
  197. package/dist/patterns/disclosure-section/meta.d.ts +9 -0
  198. package/dist/patterns/disclosure-section/meta.d.ts.map +1 -0
  199. package/dist/patterns/disclosure-section/meta.js +9 -0
  200. package/dist/patterns/disclosure-section/meta.js.map +1 -0
  201. package/dist/patterns/empty-state/meta.d.ts +33 -0
  202. package/dist/patterns/empty-state/meta.d.ts.map +1 -0
  203. package/dist/patterns/empty-state/meta.js +33 -0
  204. package/dist/patterns/empty-state/meta.js.map +1 -0
  205. package/dist/patterns/filter-bar/meta.d.ts +9 -0
  206. package/dist/patterns/filter-bar/meta.d.ts.map +1 -0
  207. package/dist/patterns/filter-bar/meta.js +9 -0
  208. package/dist/patterns/filter-bar/meta.js.map +1 -0
  209. package/dist/patterns/hero/Hero.d.ts +4 -0
  210. package/dist/patterns/hero/Hero.d.ts.map +1 -0
  211. package/dist/patterns/hero/Hero.js +59 -0
  212. package/dist/patterns/hero/Hero.js.map +1 -0
  213. package/dist/patterns/hero/index.d.ts +3 -0
  214. package/dist/patterns/hero/index.d.ts.map +1 -0
  215. package/dist/patterns/hero/index.js +2 -0
  216. package/dist/patterns/hero/index.js.map +1 -0
  217. package/dist/patterns/hero/meta.d.ts +101 -0
  218. package/dist/patterns/hero/meta.d.ts.map +1 -0
  219. package/dist/patterns/hero/meta.js +94 -0
  220. package/dist/patterns/hero/meta.js.map +1 -0
  221. package/dist/patterns/hero/types.d.ts +27 -0
  222. package/dist/patterns/hero/types.d.ts.map +1 -0
  223. package/dist/patterns/hero/types.js +2 -0
  224. package/dist/patterns/hero/types.js.map +1 -0
  225. package/dist/patterns/image-preview/meta.d.ts +9 -0
  226. package/dist/patterns/image-preview/meta.d.ts.map +1 -0
  227. package/dist/patterns/image-preview/meta.js +9 -0
  228. package/dist/patterns/image-preview/meta.js.map +1 -0
  229. package/dist/patterns/image-upload-field/meta.d.ts +9 -0
  230. package/dist/patterns/image-upload-field/meta.d.ts.map +1 -0
  231. package/dist/patterns/image-upload-field/meta.js +9 -0
  232. package/dist/patterns/image-upload-field/meta.js.map +1 -0
  233. package/dist/patterns/inspector-field/meta.d.ts +9 -0
  234. package/dist/patterns/inspector-field/meta.d.ts.map +1 -0
  235. package/dist/patterns/inspector-field/meta.js +9 -0
  236. package/dist/patterns/inspector-field/meta.js.map +1 -0
  237. package/dist/patterns/list/meta.d.ts +25 -0
  238. package/dist/patterns/list/meta.d.ts.map +1 -0
  239. package/dist/patterns/list/meta.js +26 -0
  240. package/dist/patterns/list/meta.js.map +1 -0
  241. package/dist/patterns/notice/meta.d.ts +34 -0
  242. package/dist/patterns/notice/meta.d.ts.map +1 -0
  243. package/dist/patterns/notice/meta.js +35 -0
  244. package/dist/patterns/notice/meta.js.map +1 -0
  245. package/dist/patterns/panel/meta.d.ts +44 -0
  246. package/dist/patterns/panel/meta.d.ts.map +1 -0
  247. package/dist/patterns/panel/meta.js +45 -0
  248. package/dist/patterns/panel/meta.js.map +1 -0
  249. package/dist/patterns/responsive-panel/meta.d.ts +9 -0
  250. package/dist/patterns/responsive-panel/meta.d.ts.map +1 -0
  251. package/dist/patterns/responsive-panel/meta.js +9 -0
  252. package/dist/patterns/responsive-panel/meta.js.map +1 -0
  253. package/dist/patterns/section-header/meta.d.ts +33 -0
  254. package/dist/patterns/section-header/meta.d.ts.map +1 -0
  255. package/dist/patterns/section-header/meta.js +33 -0
  256. package/dist/patterns/section-header/meta.js.map +1 -0
  257. package/dist/patterns/selection/meta.d.ts +17 -0
  258. package/dist/patterns/selection/meta.d.ts.map +1 -0
  259. package/dist/patterns/selection/meta.js +18 -0
  260. package/dist/patterns/selection/meta.js.map +1 -0
  261. package/dist/patterns/settings-row/meta.d.ts +39 -0
  262. package/dist/patterns/settings-row/meta.d.ts.map +1 -0
  263. package/dist/patterns/settings-row/meta.js +39 -0
  264. package/dist/patterns/settings-row/meta.js.map +1 -0
  265. package/dist/patterns/switch-field/meta.d.ts +9 -0
  266. package/dist/patterns/switch-field/meta.d.ts.map +1 -0
  267. package/dist/patterns/switch-field/meta.js +9 -0
  268. package/dist/patterns/switch-field/meta.js.map +1 -0
  269. package/dist/patterns/theme-composer/meta.d.ts +9 -0
  270. package/dist/patterns/theme-composer/meta.d.ts.map +1 -0
  271. package/dist/patterns/theme-composer/meta.js +9 -0
  272. package/dist/patterns/theme-composer/meta.js.map +1 -0
  273. package/dist/patterns/tile-grid/meta.d.ts +17 -0
  274. package/dist/patterns/tile-grid/meta.d.ts.map +1 -0
  275. package/dist/patterns/tile-grid/meta.js +18 -0
  276. package/dist/patterns/tile-grid/meta.js.map +1 -0
  277. package/dist/patterns/timeline/meta.d.ts +9 -0
  278. package/dist/patterns/timeline/meta.d.ts.map +1 -0
  279. package/dist/patterns/timeline/meta.js +9 -0
  280. package/dist/patterns/timeline/meta.js.map +1 -0
  281. package/dist/patterns/tree-view/meta.d.ts +17 -0
  282. package/dist/patterns/tree-view/meta.d.ts.map +1 -0
  283. package/dist/patterns/tree-view/meta.js +18 -0
  284. package/dist/patterns/tree-view/meta.js.map +1 -0
  285. package/dist/patterns/zora-drawer-content/meta.d.ts +9 -0
  286. package/dist/patterns/zora-drawer-content/meta.d.ts.map +1 -0
  287. package/dist/patterns/zora-drawer-content/meta.js +9 -0
  288. package/dist/patterns/zora-drawer-content/meta.js.map +1 -0
  289. package/dist/patterns/zora-tab-bar/meta.d.ts +9 -0
  290. package/dist/patterns/zora-tab-bar/meta.d.ts.map +1 -0
  291. package/dist/patterns/zora-tab-bar/meta.js +9 -0
  292. package/dist/patterns/zora-tab-bar/meta.js.map +1 -0
  293. package/package.json +1 -1
  294. package/src/components/app-bar/meta.ts +10 -0
  295. package/src/components/avatar/meta.ts +10 -0
  296. package/src/components/avatar-group/meta.ts +10 -0
  297. package/src/components/badge/meta.ts +10 -0
  298. package/src/components/button/meta.ts +46 -0
  299. package/src/components/card/meta.ts +46 -0
  300. package/src/components/checkbox/meta.ts +19 -0
  301. package/src/components/chip/meta.ts +10 -0
  302. package/src/components/chip-group/meta.ts +10 -0
  303. package/src/components/drawer/meta.ts +10 -0
  304. package/src/components/form/index.ts +0 -1
  305. package/src/components/form/meta.ts +83 -0
  306. package/src/components/form/types.ts +1 -1
  307. package/src/components/heading/meta.ts +67 -0
  308. package/src/components/icon/meta.ts +10 -0
  309. package/src/components/icon-button/meta.ts +10 -0
  310. package/src/components/image/meta.ts +10 -0
  311. package/src/components/input/meta.ts +46 -0
  312. package/src/components/media-card/meta.ts +10 -0
  313. package/src/components/metric-card/meta.ts +10 -0
  314. package/src/components/modal/meta.ts +10 -0
  315. package/src/components/navigation-item/meta.ts +10 -0
  316. package/src/components/navigation-list/meta.ts +10 -0
  317. package/src/components/progress/meta.ts +10 -0
  318. package/src/components/radio/meta.ts +19 -0
  319. package/src/components/rating/meta.ts +10 -0
  320. package/src/components/search-bar/meta.ts +10 -0
  321. package/src/components/select/meta.ts +10 -0
  322. package/src/components/tabs/meta.ts +10 -0
  323. package/src/components/text/meta.ts +69 -0
  324. package/src/components/textarea/meta.ts +46 -0
  325. package/src/components/toolbar/meta.ts +19 -0
  326. package/src/foundation/meta.ts +85 -0
  327. package/src/index.ts +15 -1
  328. package/src/layout/app-shell/meta.ts +10 -0
  329. package/src/layout/auth-layout/meta.ts +35 -0
  330. package/src/layout/page/meta.ts +21 -0
  331. package/src/layout/page-header/meta.ts +39 -0
  332. package/src/layout/page-section/meta.ts +30 -0
  333. package/src/layout/settings-layout/meta.ts +10 -0
  334. package/src/layout/sidebar-layout/meta.ts +10 -0
  335. package/src/layout/topbar-layout/meta.ts +10 -0
  336. package/src/metadata/allowedChildren.ts +27 -0
  337. package/src/metadata/componentMeta.test.ts +205 -0
  338. package/src/metadata/componentMeta.ts +149 -0
  339. package/src/metadata/index.ts +13 -0
  340. package/src/metadata/types.ts +74 -0
  341. package/src/patterns/auth/meta.ts +39 -0
  342. package/src/patterns/collection-editor/meta.ts +10 -0
  343. package/src/patterns/confirm-dialog/meta.ts +10 -0
  344. package/src/patterns/disclosure-section/meta.ts +10 -0
  345. package/src/patterns/empty-state/meta.ts +34 -0
  346. package/src/patterns/filter-bar/meta.ts +10 -0
  347. package/src/patterns/hero/Hero.tsx +112 -0
  348. package/src/patterns/hero/index.ts +2 -0
  349. package/src/patterns/hero/meta.ts +95 -0
  350. package/src/patterns/hero/types.ts +30 -0
  351. package/src/patterns/image-preview/meta.ts +10 -0
  352. package/src/patterns/image-upload-field/meta.ts +10 -0
  353. package/src/patterns/inspector-field/meta.ts +10 -0
  354. package/src/patterns/list/meta.ts +30 -0
  355. package/src/patterns/notice/meta.ts +36 -0
  356. package/src/patterns/panel/meta.ts +46 -0
  357. package/src/patterns/responsive-panel/meta.ts +10 -0
  358. package/src/patterns/section-header/meta.ts +34 -0
  359. package/src/patterns/selection/meta.ts +21 -0
  360. package/src/patterns/settings-row/meta.ts +40 -0
  361. package/src/patterns/switch-field/meta.ts +10 -0
  362. package/src/patterns/theme-composer/meta.ts +10 -0
  363. package/src/patterns/tile-grid/meta.ts +21 -0
  364. package/src/patterns/timeline/meta.ts +10 -0
  365. package/src/patterns/tree-view/meta.ts +21 -0
  366. package/src/patterns/zora-drawer-content/meta.ts +10 -0
  367. package/src/patterns/zora-tab-bar/meta.ts +10 -0
@@ -0,0 +1,69 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const textMeta = {
4
+ name: 'Text',
5
+ category: 'component',
6
+ directManifestNode: true,
7
+ allowedChildren: [],
8
+ blueprint: {
9
+ label: 'Text',
10
+ defaultProps: {
11
+ text: 'Text',
12
+ tone: 'default',
13
+ variant: 'body',
14
+ },
15
+ },
16
+ i18n: {
17
+ fields: [{ keyProp: 'i18nKey', defaultTextProp: 'text' }],
18
+ },
19
+ props: {
20
+ text: {
21
+ type: 'string',
22
+ category: 'Content',
23
+ label: 'Text',
24
+ default: 'Text',
25
+ },
26
+ i18nKey: {
27
+ type: 'string',
28
+ category: 'Content',
29
+ label: 'i18n key',
30
+ },
31
+ variant: {
32
+ type: 'enum',
33
+ category: 'Typography',
34
+ label: 'Variant',
35
+ enum: ['body', 'lead', 'bodySmall', 'caption', 'label', 'eyebrow', 'code'],
36
+ default: 'body',
37
+ },
38
+ tone: {
39
+ type: 'enum',
40
+ category: 'Style',
41
+ label: 'Tone',
42
+ enum: ['default', 'muted', 'subtle', 'inverse', 'primary', 'danger', 'success', 'warning'],
43
+ default: 'default',
44
+ },
45
+ align: {
46
+ type: 'enum',
47
+ category: 'Layout',
48
+ label: 'Align',
49
+ enum: ['auto', 'left', 'right', 'center', 'justify'],
50
+ },
51
+ weight: {
52
+ type: 'enum',
53
+ category: 'Typography',
54
+ label: 'Weight',
55
+ enum: ['regular', 'medium', 'semiBold', 'bold'],
56
+ },
57
+ italic: {
58
+ type: 'boolean',
59
+ category: 'Typography',
60
+ label: 'Italic',
61
+ default: false,
62
+ },
63
+ numberOfLines: {
64
+ type: 'number',
65
+ category: 'Layout',
66
+ label: 'Line clamp',
67
+ },
68
+ },
69
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,46 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const textareaMeta = {
4
+ name: 'Textarea',
5
+ category: 'component',
6
+ directManifestNode: true,
7
+ allowedChildren: [],
8
+ blueprint: {
9
+ label: 'Textarea',
10
+ defaultProps: {
11
+ placeholder: 'Enter text…',
12
+ value: '',
13
+ },
14
+ },
15
+ props: {
16
+ placeholder: {
17
+ type: 'string',
18
+ category: 'Content',
19
+ label: 'Placeholder',
20
+ },
21
+ value: {
22
+ type: 'string',
23
+ category: 'Content',
24
+ label: 'Value',
25
+ default: '',
26
+ },
27
+ size: {
28
+ type: 'enum',
29
+ category: 'Style',
30
+ label: 'Size',
31
+ enum: ['s', 'm', 'l'],
32
+ },
33
+ disabled: {
34
+ type: 'boolean',
35
+ category: 'State',
36
+ label: 'Disabled',
37
+ default: false,
38
+ },
39
+ readOnly: {
40
+ type: 'boolean',
41
+ category: 'State',
42
+ label: 'Read-only',
43
+ default: false,
44
+ },
45
+ },
46
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,19 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const toolbarMeta = {
4
+ name: 'Toolbar',
5
+ category: 'component',
6
+ directManifestNode: false,
7
+ allowedChildren: [],
8
+ note: 'Action bar component; not represented as a manifest node in v1.',
9
+ props: {},
10
+ } as const satisfies ZoraComponentMeta;
11
+
12
+ export const toolbarActionMeta = {
13
+ name: 'ToolbarAction',
14
+ category: 'component',
15
+ directManifestNode: false,
16
+ allowedChildren: [],
17
+ note: 'Action bar item; not represented as a manifest node in v1.',
18
+ props: {},
19
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,85 @@
1
+ import type { ZoraComponentMetaRegistry } from '../metadata';
2
+ import { CONTAINER_ALLOWED_CHILDREN } from '../metadata/allowedChildren';
3
+
4
+ export const foundationMetas = {
5
+ Box: {
6
+ name: 'Box',
7
+ category: 'foundation',
8
+ directManifestNode: true,
9
+ allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],
10
+ blueprint: { label: 'Box' },
11
+ props: {},
12
+ },
13
+ Center: {
14
+ name: 'Center',
15
+ category: 'foundation',
16
+ directManifestNode: false,
17
+ allowedChildren: [],
18
+ note: 'Layout helper component; not represented as a manifest node in v1.',
19
+ props: {},
20
+ },
21
+ Container: {
22
+ name: 'Container',
23
+ category: 'foundation',
24
+ directManifestNode: true,
25
+ allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],
26
+ blueprint: { label: 'Container' },
27
+ props: {},
28
+ },
29
+ Divider: {
30
+ name: 'Divider',
31
+ category: 'foundation',
32
+ directManifestNode: true,
33
+ allowedChildren: [],
34
+ blueprint: { label: 'Divider' },
35
+ props: {},
36
+ },
37
+ Grid: {
38
+ name: 'Grid',
39
+ category: 'foundation',
40
+ directManifestNode: true,
41
+ allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],
42
+ blueprint: { label: 'Grid' },
43
+ props: {},
44
+ },
45
+ Inline: {
46
+ name: 'Inline',
47
+ category: 'foundation',
48
+ directManifestNode: false,
49
+ allowedChildren: [],
50
+ note: 'Layout helper component; not represented as a manifest node in v1.',
51
+ props: {},
52
+ },
53
+ Show: {
54
+ name: 'Show',
55
+ category: 'foundation',
56
+ directManifestNode: false,
57
+ allowedChildren: [],
58
+ note: 'Responsive utility component; not represented as a manifest node in v1.',
59
+ props: {},
60
+ },
61
+ Spacer: {
62
+ name: 'Spacer',
63
+ category: 'foundation',
64
+ directManifestNode: false,
65
+ allowedChildren: [],
66
+ note: 'Spacing utility component; not represented as a manifest node in v1.',
67
+ props: {},
68
+ },
69
+ Stack: {
70
+ name: 'Stack',
71
+ category: 'foundation',
72
+ directManifestNode: true,
73
+ allowedChildren: [...CONTAINER_ALLOWED_CHILDREN],
74
+ blueprint: { label: 'Stack' },
75
+ props: {},
76
+ },
77
+ Surface: {
78
+ name: 'Surface',
79
+ category: 'foundation',
80
+ directManifestNode: false,
81
+ allowedChildren: [],
82
+ note: 'Low-level surface wrapper; not represented as a manifest node in v1.',
83
+ props: {},
84
+ },
85
+ } as const satisfies ZoraComponentMetaRegistry;
package/src/index.ts CHANGED
@@ -27,7 +27,6 @@ export type {
27
27
  FormFieldInputType,
28
28
  FormFieldProps,
29
29
  FormFieldValue,
30
- FormFieldWrapperProps,
31
30
  FormProps,
32
31
  FormValidationErrors,
33
32
  FormValidationResult,
@@ -137,6 +136,19 @@ export type { SidebarLayoutProps } from './layout/sidebar-layout';
137
136
  export { SidebarLayout } from './layout/sidebar-layout';
138
137
  export type { TopbarLayoutProps } from './layout/topbar-layout';
139
138
  export { TopbarLayout } from './layout/topbar-layout';
139
+ export type {
140
+ ZoraComponentBlueprint,
141
+ ZoraComponentCategory,
142
+ ZoraComponentI18nMeta,
143
+ ZoraComponentMeta,
144
+ ZoraComponentMetaRegistry,
145
+ ZoraComponentPropArrayItemSchema,
146
+ ZoraComponentPropSchema,
147
+ ZoraComponentPropType,
148
+ ZoraComponentPropValue,
149
+ ZoraComponentSlotMeta,
150
+ } from './metadata';
151
+ export { ZORA_COMPONENT_META } from './metadata';
140
152
  export type {
141
153
  AuthFormBaseProps,
142
154
  AuthIdentifierKind,
@@ -164,6 +176,8 @@ export type { EmptyStateAction, EmptyStateProps } from './patterns/empty-state';
164
176
  export { EmptyState } from './patterns/empty-state';
165
177
  export type { FilterBarProps } from './patterns/filter-bar';
166
178
  export { FilterBar } from './patterns/filter-bar';
179
+ export type { HeroAction, HeroAlign, HeroLayout, HeroProps, HeroTone } from './patterns/hero';
180
+ export { Hero } from './patterns/hero';
167
181
  export type {
168
182
  ImagePreviewProps,
169
183
  ZoraImageAsset,
@@ -0,0 +1,10 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const appShellMeta = {
4
+ name: 'AppShell',
5
+ category: 'layout',
6
+ directManifestNode: false,
7
+ allowedChildren: [],
8
+ note: 'Application shell layout; not represented as a manifest node in v1.',
9
+ props: {},
10
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,35 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+ import { PAGE_SECTION_ALLOWED_CHILDREN } from '../../metadata/allowedChildren';
3
+
4
+ export const authLayoutMeta = {
5
+ name: 'AuthLayout',
6
+ category: 'layout',
7
+ directManifestNode: true,
8
+ allowedChildren: [...PAGE_SECTION_ALLOWED_CHILDREN],
9
+ blueprint: {
10
+ label: 'Auth layout',
11
+ defaultProps: {
12
+ title: 'Welcome',
13
+ description: 'Sign in to continue.',
14
+ },
15
+ },
16
+ props: {
17
+ title: {
18
+ type: 'string',
19
+ category: 'Content',
20
+ label: 'Title',
21
+ default: 'Welcome',
22
+ },
23
+ description: {
24
+ type: 'string',
25
+ category: 'Content',
26
+ label: 'Description',
27
+ default: 'Sign in to continue.',
28
+ },
29
+ eyebrow: {
30
+ type: 'string',
31
+ category: 'Content',
32
+ label: 'Eyebrow',
33
+ },
34
+ },
35
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,21 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+ import { PAGE_ALLOWED_CHILDREN } from '../../metadata/allowedChildren';
3
+
4
+ export const pageMeta = {
5
+ name: 'Page',
6
+ category: 'layout',
7
+ directManifestNode: true,
8
+ allowedChildren: [...PAGE_ALLOWED_CHILDREN],
9
+ blueprint: {
10
+ label: 'Page',
11
+ },
12
+ props: {
13
+ width: {
14
+ type: 'enum',
15
+ category: 'Layout',
16
+ label: 'Width',
17
+ enum: ['narrow', 'default', 'wide'],
18
+ default: 'default',
19
+ },
20
+ },
21
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,39 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const pageHeaderMeta = {
4
+ name: 'PageHeader',
5
+ category: 'layout',
6
+ directManifestNode: true,
7
+ allowedChildren: [],
8
+ blueprint: {
9
+ label: 'Page header',
10
+ defaultProps: {
11
+ title: 'Page title',
12
+ description: 'Short description.',
13
+ },
14
+ },
15
+ props: {
16
+ title: {
17
+ type: 'string',
18
+ category: 'Content',
19
+ label: 'Title',
20
+ default: 'Page title',
21
+ },
22
+ description: {
23
+ type: 'string',
24
+ category: 'Content',
25
+ label: 'Description',
26
+ default: 'Short description.',
27
+ },
28
+ eyebrow: {
29
+ type: 'string',
30
+ category: 'Content',
31
+ label: 'Eyebrow',
32
+ },
33
+ meta: {
34
+ type: 'string',
35
+ category: 'Content',
36
+ label: 'Meta',
37
+ },
38
+ },
39
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,30 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+ import { PAGE_SECTION_ALLOWED_CHILDREN } from '../../metadata/allowedChildren';
3
+
4
+ export const pageSectionMeta = {
5
+ name: 'PageSection',
6
+ category: 'layout',
7
+ directManifestNode: true,
8
+ allowedChildren: [...PAGE_SECTION_ALLOWED_CHILDREN],
9
+ blueprint: {
10
+ label: 'Page section',
11
+ defaultProps: {
12
+ title: 'Section',
13
+ description: 'Section description.',
14
+ },
15
+ },
16
+ props: {
17
+ title: {
18
+ type: 'string',
19
+ category: 'Content',
20
+ label: 'Title',
21
+ default: 'Section',
22
+ },
23
+ description: {
24
+ type: 'string',
25
+ category: 'Content',
26
+ label: 'Description',
27
+ default: 'Section description.',
28
+ },
29
+ },
30
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,10 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const settingsLayoutMeta = {
4
+ name: 'SettingsLayout',
5
+ category: 'layout',
6
+ directManifestNode: false,
7
+ allowedChildren: [],
8
+ note: 'Application layout; not represented as a manifest node in v1.',
9
+ props: {},
10
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,10 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const sidebarLayoutMeta = {
4
+ name: 'SidebarLayout',
5
+ category: 'layout',
6
+ directManifestNode: false,
7
+ allowedChildren: [],
8
+ note: 'Application layout; not represented as a manifest node in v1.',
9
+ props: {},
10
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,10 @@
1
+ import type { ZoraComponentMeta } from '../../metadata';
2
+
3
+ export const topbarLayoutMeta = {
4
+ name: 'TopbarLayout',
5
+ category: 'layout',
6
+ directManifestNode: false,
7
+ allowedChildren: [],
8
+ note: 'Application layout; not represented as a manifest node in v1.',
9
+ props: {},
10
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,27 @@
1
+ export const CONTAINER_ALLOWED_CHILDREN = [
2
+ 'Box',
3
+ 'Stack',
4
+ 'Grid',
5
+ 'Container',
6
+ 'Divider',
7
+ 'Text',
8
+ 'Heading',
9
+ 'Button',
10
+ 'Input',
11
+ 'Textarea',
12
+ 'FormField',
13
+ 'Card',
14
+ 'Panel',
15
+ 'Notice',
16
+ 'EmptyState',
17
+ 'SectionHeader',
18
+ 'SettingsRow',
19
+ ] as const;
20
+
21
+ export const PAGE_SECTION_ALLOWED_CHILDREN = [...CONTAINER_ALLOWED_CHILDREN] as const;
22
+
23
+ export const PAGE_ALLOWED_CHILDREN = [
24
+ 'PageHeader',
25
+ 'PageSection',
26
+ ...CONTAINER_ALLOWED_CHILDREN,
27
+ ] as const;
@@ -0,0 +1,205 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+
4
+ import { describe, expect, test } from 'bun:test';
5
+
6
+ import { ZORA_COMPONENT_META } from './componentMeta';
7
+
8
+ const ROOT = process.cwd();
9
+ const SRC_ROOT = join(ROOT, 'src');
10
+
11
+ const INDEX_PATH = join(SRC_ROOT, 'index.ts');
12
+ const THEME_INDEX_PATH = join(SRC_ROOT, 'theme', 'index.ts');
13
+
14
+ function parseReexportBlocks(source: string): { names: string[]; from: string; isType: boolean }[] {
15
+ const pattern = /\bexport\s+(type\s+)?\{([\s\S]*?)\}\s*from\s*['"]([^'"]+)['"]/g;
16
+ const blocks: { names: string[]; from: string; isType: boolean }[] = [];
17
+
18
+ for (const match of source.matchAll(pattern)) {
19
+ const isType = match[1] !== undefined;
20
+ const rawNames = match[2] ?? '';
21
+ const from = match[3] ?? '';
22
+
23
+ const names = rawNames
24
+ .split(',')
25
+ .map((item) => item.trim())
26
+ .filter(Boolean)
27
+ .map((item) =>
28
+ item
29
+ .replace(/^type\s+/, '')
30
+ .split(/\s+as\s+/)[0]
31
+ ?.trim(),
32
+ )
33
+ .filter((item): item is string => Boolean(item));
34
+
35
+ blocks.push({ names, from, isType });
36
+ }
37
+
38
+ return blocks;
39
+ }
40
+
41
+ function readSource(filePath: string): string {
42
+ return readFileSync(filePath, 'utf8');
43
+ }
44
+
45
+ function isComponentExportName(name: string): boolean {
46
+ return /^[A-Z][A-Za-z0-9]*$/.test(name);
47
+ }
48
+
49
+ function isJsonSerializable(value: unknown): boolean {
50
+ if (value === null) return true;
51
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
52
+ return true;
53
+ if (Array.isArray(value)) return value.every((item) => isJsonSerializable(item));
54
+ if (typeof value !== 'object') return false;
55
+
56
+ const record = value as Record<string, unknown>;
57
+ return Object.values(record).every((item) => isJsonSerializable(item));
58
+ }
59
+
60
+ describe('ZORA_COMPONENT_META public API', () => {
61
+ test('src/index.ts re-exports ZORA_COMPONENT_META', () => {
62
+ const indexSource = readSource(INDEX_PATH);
63
+ expect(indexSource).toContain('ZORA_COMPONENT_META');
64
+ });
65
+ });
66
+
67
+ describe('ZORA_COMPONENT_META registry coverage', () => {
68
+ test('covers every public UI React component export (foundation/components/patterns/layout)', () => {
69
+ // Avoid importing the full src/index.ts barrel here; Bun has been observed to crash when executing
70
+ // module graphs that touch react-native. We do drift checks via static source parsing instead.
71
+ const indexSource = readSource(INDEX_PATH);
72
+ const blocks = parseReexportBlocks(indexSource).filter((block) => !block.isType);
73
+
74
+ const uiComponentNames = new Set(
75
+ blocks
76
+ .filter((block) => {
77
+ return (
78
+ block.from.startsWith('./foundation') ||
79
+ block.from.startsWith('./components') ||
80
+ block.from.startsWith('./patterns') ||
81
+ block.from.startsWith('./layout')
82
+ );
83
+ })
84
+ .flatMap((block) => block.names)
85
+ .filter(isComponentExportName),
86
+ );
87
+
88
+ const registryKeys = new Set(Object.keys(ZORA_COMPONENT_META));
89
+ expect([...uiComponentNames].sort()).toEqual([...registryKeys].sort());
90
+ });
91
+
92
+ test('does not treat providers/scopes as UI component registry entries', () => {
93
+ const indexSource = readSource(INDEX_PATH);
94
+ expect(indexSource).toContain("export * from './theme';");
95
+
96
+ const themeSource = readSource(THEME_INDEX_PATH);
97
+ const themeBlocks = parseReexportBlocks(themeSource).filter((block) => !block.isType);
98
+ const themeValueExports = new Set(
99
+ themeBlocks.flatMap((block) => block.names).filter(isComponentExportName),
100
+ );
101
+
102
+ const providerExports = new Set(['ZoraProvider', 'ZoraThemeScope']);
103
+
104
+ for (const providerExport of providerExports) {
105
+ expect(themeValueExports.has(providerExport)).toBe(true);
106
+ expect(Object.prototype.hasOwnProperty.call(ZORA_COMPONENT_META, providerExport)).toBe(false);
107
+ }
108
+ });
109
+ });
110
+
111
+ describe('ZORA_COMPONENT_META invariants', () => {
112
+ test('every key matches meta.name', () => {
113
+ for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
114
+ expect(meta.name).toBe(key);
115
+ }
116
+ });
117
+
118
+ test('allowedChildren always points to a known direct manifest node', () => {
119
+ for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
120
+ for (const child of meta.allowedChildren) {
121
+ const childMeta = ZORA_COMPONENT_META[child];
122
+ expect(childMeta, `${key} allowedChildren includes unknown key '${child}'`).toBeDefined();
123
+ expect(
124
+ childMeta.directManifestNode,
125
+ `${key} allowedChildren includes non-directManifestNode key '${child}'`,
126
+ ).toBe(true);
127
+ }
128
+ }
129
+ });
130
+
131
+ test('direct manifest node leaf/container rules', () => {
132
+ const expectedLeafNodes = new Set([
133
+ 'PageHeader',
134
+ 'SectionHeader',
135
+ 'SettingsRow',
136
+ 'EmptyState',
137
+ 'Hero',
138
+ 'Button',
139
+ 'Input',
140
+ 'Textarea',
141
+ 'Text',
142
+ 'Heading',
143
+ 'Divider',
144
+ ]);
145
+
146
+ const expectedContainerNodes = new Set([
147
+ 'FormField',
148
+ 'Page',
149
+ 'PageSection',
150
+ 'AuthLayout',
151
+ 'Card',
152
+ 'Panel',
153
+ 'Notice',
154
+ 'Box',
155
+ 'Stack',
156
+ 'Grid',
157
+ 'Container',
158
+ ]);
159
+
160
+ for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
161
+ if (!meta.directManifestNode) continue;
162
+
163
+ if (expectedLeafNodes.has(key)) {
164
+ expect(meta.allowedChildren.length, `${key} should be a leaf manifest node`).toBe(0);
165
+ continue;
166
+ }
167
+
168
+ if (expectedContainerNodes.has(key)) {
169
+ expect(
170
+ meta.allowedChildren.length,
171
+ `${key} should be a container manifest node`,
172
+ ).toBeGreaterThan(0);
173
+ continue;
174
+ }
175
+
176
+ throw new Error(
177
+ `Direct manifest node '${key}' must be categorized as leaf or container in the test.`,
178
+ );
179
+ }
180
+ });
181
+
182
+ test('non-direct manifest nodes include an explicit note', () => {
183
+ for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
184
+ if (meta.directManifestNode) continue;
185
+
186
+ expect(
187
+ typeof meta.note === 'string' && meta.note.trim().length > 0,
188
+ `${key} must include a note when directManifestNode is false`,
189
+ ).toBe(true);
190
+ }
191
+ });
192
+
193
+ test('registry and blueprints are JSON serializable', () => {
194
+ expect(() => JSON.stringify(ZORA_COMPONENT_META)).not.toThrow();
195
+
196
+ for (const [key, meta] of Object.entries(ZORA_COMPONENT_META)) {
197
+ if (!meta.blueprint?.defaultProps) continue;
198
+
199
+ expect(
200
+ isJsonSerializable(meta.blueprint.defaultProps),
201
+ `${key} blueprint.defaultProps contains a non-serializable value`,
202
+ ).toBe(true);
203
+ }
204
+ });
205
+ });