@hanzo/ui 5.0.0 → 5.0.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 (685) hide show
  1. package/README.md +192 -185
  2. package/assets/ai-icons.tsx +207 -0
  3. package/assets/crypto.tsx +33 -0
  4. package/assets/file-type-icon.tsx +66 -0
  5. package/assets/file.tsx +45 -0
  6. package/assets/general.tsx +2318 -0
  7. package/assets/hanzo-logo.svg +9 -0
  8. package/assets/hanzo-logo.tsx +17 -0
  9. package/assets/index.ts +122 -0
  10. package/assets/index.tsx +4 -0
  11. package/assets/llm-provider.tsx +1094 -0
  12. package/bin/cli.js +100 -0
  13. package/bin/create-registry.js +108 -0
  14. package/bin/mcp.js +403 -0
  15. package/bin/npx-registry-mcp.js +15 -0
  16. package/bin/registry-mcp-wrapper.sh +19 -0
  17. package/bin/registry-mcp.js +100 -0
  18. package/bin/start-mcp-server.sh +22 -0
  19. package/bin/test-mcp.sh +52 -0
  20. package/bin/update-registry.js +196 -0
  21. package/blocks/auth/index.ts +6 -0
  22. package/blocks/auth/login-2fa.tsx +165 -0
  23. package/blocks/auth/login-basic.tsx +94 -0
  24. package/blocks/auth/login-social.tsx +148 -0
  25. package/blocks/auth/magic-link.tsx +129 -0
  26. package/blocks/auth/password-reset.tsx +97 -0
  27. package/blocks/auth/signup.tsx +157 -0
  28. package/blocks/components/accordian-block.tsx +48 -0
  29. package/blocks/components/block-component-props.ts +11 -0
  30. package/blocks/components/bullet-cards-block.tsx +46 -0
  31. package/blocks/components/card-block/index.tsx +171 -0
  32. package/blocks/components/card-block/link-out-button.tsx +20 -0
  33. package/blocks/components/card-block/util.ts +28 -0
  34. package/blocks/components/carte-blanche-block/index.tsx +127 -0
  35. package/blocks/components/carte-blanche-block/variant-content-left.tsx +49 -0
  36. package/blocks/components/content.tsx +70 -0
  37. package/blocks/components/cta-block.tsx +115 -0
  38. package/blocks/components/enh-heading-block.tsx +204 -0
  39. package/blocks/components/grid-block/grid-block-mutator.ts +12 -0
  40. package/blocks/components/grid-block/index.tsx +83 -0
  41. package/blocks/components/grid-block/mutator-registry.ts +10 -0
  42. package/blocks/components/grid-block/table-borders.mutator.ts +47 -0
  43. package/blocks/components/group-block.tsx +83 -0
  44. package/blocks/components/heading-block.tsx +88 -0
  45. package/blocks/components/image-block.tsx +111 -0
  46. package/blocks/components/index.ts +30 -0
  47. package/blocks/components/screenful-block/content.tsx +123 -0
  48. package/blocks/components/screenful-block/index.tsx +107 -0
  49. package/blocks/components/screenful-block/poster-background.tsx +34 -0
  50. package/blocks/components/screenful-block/video-background.tsx +45 -0
  51. package/blocks/components/space-block.tsx +66 -0
  52. package/blocks/components/video-block.tsx +138 -0
  53. package/blocks/data-display/activity-feed.tsx +242 -0
  54. package/blocks/data-display/data-table.tsx +235 -0
  55. package/blocks/data-display/stats-grid.tsx +194 -0
  56. package/blocks/def/accordian-block.ts +14 -0
  57. package/blocks/def/block.ts +7 -0
  58. package/blocks/def/bullet-cards-block.ts +22 -0
  59. package/blocks/def/card-block.ts +22 -0
  60. package/blocks/def/carte-blanche-block.ts +21 -0
  61. package/blocks/def/cta-block.ts +19 -0
  62. package/blocks/def/element-block.ts +11 -0
  63. package/blocks/def/enh-heading-block.ts +44 -0
  64. package/blocks/def/grid-block.ts +16 -0
  65. package/blocks/def/group-block.ts +11 -0
  66. package/blocks/def/heading-block.ts +15 -0
  67. package/blocks/def/image-block.ts +31 -0
  68. package/blocks/def/index.ts +35 -0
  69. package/blocks/def/screenful-block.ts +54 -0
  70. package/blocks/def/space-block.ts +64 -0
  71. package/blocks/def/video-block.ts +9 -0
  72. package/blocks/ecommerce/checkout.tsx +242 -0
  73. package/blocks/ecommerce/index.ts +7 -0
  74. package/blocks/ecommerce/product-detail.tsx +257 -0
  75. package/blocks/ecommerce/product-grid.tsx +148 -0
  76. package/blocks/ecommerce/shopping-cart.tsx +181 -0
  77. package/blocks/index.ts +2 -0
  78. package/blocks/marketing/cta-section.tsx +207 -0
  79. package/blocks/marketing/faq.tsx +159 -0
  80. package/blocks/marketing/features-grid.tsx +156 -0
  81. package/blocks/marketing/hero-section.tsx +192 -0
  82. package/blocks/marketing/index.ts +6 -0
  83. package/blocks/marketing/pricing-table.tsx +121 -0
  84. package/blocks/marketing/testimonials.tsx +196 -0
  85. package/components/index.ts +9 -0
  86. package/dist/index.js +9070 -1089
  87. package/dist/index.js.map +1 -1
  88. package/dist/index.mjs +8695 -45
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/tailwind.js +2025 -0
  91. package/dist/tailwind.js.map +1 -0
  92. package/dist/tailwind.mjs +2013 -0
  93. package/dist/tailwind.mjs.map +1 -0
  94. package/dist/types.js +59 -0
  95. package/dist/types.js.map +1 -0
  96. package/dist/types.mjs +53 -0
  97. package/dist/types.mjs.map +1 -0
  98. package/dist/utils.js +30 -0
  99. package/dist/utils.js.map +1 -0
  100. package/dist/utils.mjs +26 -0
  101. package/dist/utils.mjs.map +1 -0
  102. package/frameworks/core/index.ts +6 -0
  103. package/frameworks/core/utils/index.ts +64 -0
  104. package/frameworks/react/components/button.tsx +26 -0
  105. package/frameworks/react/components/index.ts +5 -0
  106. package/frameworks/react/hooks/index.ts +5 -0
  107. package/frameworks/react/index.ts +9 -0
  108. package/frameworks/react/package.json +8 -0
  109. package/frameworks/react/utils/index.ts +2 -0
  110. package/frameworks/react-native/index.ts +9 -0
  111. package/frameworks/react-native/package.json +8 -0
  112. package/frameworks/registry.json +371 -0
  113. package/frameworks/setup.sh +69 -0
  114. package/frameworks/svelte/index.ts +9 -0
  115. package/frameworks/svelte/package.json +8 -0
  116. package/frameworks/tracker.json +1854 -0
  117. package/frameworks/vue/index.ts +9 -0
  118. package/frameworks/vue/package.json +8 -0
  119. package/helpers/file.ts +33 -0
  120. package/helpers/memoization.ts +40 -0
  121. package/package.json +272 -153
  122. package/primitives/accordion.tsx +74 -0
  123. package/primitives/action-button.tsx +42 -0
  124. package/primitives/alert-dialog.tsx +185 -0
  125. package/primitives/alert.tsx +74 -0
  126. package/primitives/apply-typography.tsx +55 -0
  127. package/primitives/aspect-ratio.tsx +5 -0
  128. package/primitives/avatar.tsx +57 -0
  129. package/primitives/background-beams.tsx +142 -0
  130. package/primitives/badge.tsx +45 -0
  131. package/primitives/breadcrumb.tsx +130 -0
  132. package/primitives/breakpoint-indicator.tsx +19 -0
  133. package/primitives/button.tsx +72 -0
  134. package/primitives/calendar.tsx +72 -0
  135. package/primitives/card.tsx +97 -0
  136. package/primitives/carousel.tsx +238 -0
  137. package/primitives/chat/chat-input-area.tsx +88 -0
  138. package/primitives/chat/chat-input.tsx +71 -0
  139. package/primitives/chat/files-preview.tsx +331 -0
  140. package/primitives/chat/index.ts +6 -0
  141. package/primitives/chat/json-form.tsx +8 -0
  142. package/primitives/chat/message-list.tsx +308 -0
  143. package/primitives/chat/message.tsx +569 -0
  144. package/primitives/chat/sqlite-preview.tsx +215 -0
  145. package/primitives/checkbox.tsx +32 -0
  146. package/primitives/collapsible.tsx +9 -0
  147. package/primitives/combobox.tsx +239 -0
  148. package/primitives/command.tsx +151 -0
  149. package/primitives/context-menu.tsx +206 -0
  150. package/primitives/copy-to-clipboard-icon.tsx +60 -0
  151. package/primitives/dialog-video-controller.tsx +38 -0
  152. package/primitives/dialog.tsx +128 -0
  153. package/primitives/dot-pattern.tsx +57 -0
  154. package/primitives/dots-loader.tsx +13 -0
  155. package/primitives/drawer.tsx +113 -0
  156. package/primitives/dropdown-menu.tsx +199 -0
  157. package/primitives/error-message.tsx +19 -0
  158. package/primitives/file-uploader.tsx +203 -0
  159. package/primitives/form.tsx +185 -0
  160. package/primitives/hover-card.tsx +28 -0
  161. package/primitives/icons/github.tsx +14 -0
  162. package/primitives/icons/index.ts +18 -0
  163. package/primitives/icons/youtube-logo.tsx +59 -0
  164. package/primitives/index-client.ts +4 -0
  165. package/primitives/index-common.ts +304 -0
  166. package/primitives/index-next.ts +4 -0
  167. package/primitives/input-otp.tsx +65 -0
  168. package/primitives/input.tsx +128 -0
  169. package/primitives/label.tsx +21 -0
  170. package/primitives/list-adaptor.ts +12 -0
  171. package/primitives/list-box.tsx +74 -0
  172. package/primitives/loading-spinner.tsx +33 -0
  173. package/primitives/markdown-preview.tsx +612 -0
  174. package/primitives/mermaid.tsx +191 -0
  175. package/primitives/navigation-menu.tsx +147 -0
  176. package/primitives/next/image.tsx +91 -0
  177. package/primitives/next/index.ts +7 -0
  178. package/primitives/next/inline-icon.tsx +36 -0
  179. package/primitives/next/link-element.tsx +109 -0
  180. package/primitives/next/mdx-link.tsx +22 -0
  181. package/primitives/next/media-stack.tsx +52 -0
  182. package/primitives/next/nav-items.tsx +45 -0
  183. package/primitives/next/youtube-embed.tsx +83 -0
  184. package/primitives/pagination.tsx +117 -0
  185. package/primitives/popover.tsx +34 -0
  186. package/primitives/pretty-json-print.tsx +28 -0
  187. package/primitives/progress.tsx +27 -0
  188. package/primitives/prompt-textarea.tsx +72 -0
  189. package/primitives/qr-code.tsx +112 -0
  190. package/primitives/radio-group.tsx +42 -0
  191. package/primitives/resizable.tsx +47 -0
  192. package/primitives/scroll-area.tsx +57 -0
  193. package/primitives/search-input.tsx +66 -0
  194. package/primitives/select.tsx +122 -0
  195. package/primitives/separator.tsx +26 -0
  196. package/primitives/sheet.tsx +139 -0
  197. package/primitives/skeleton.tsx +18 -0
  198. package/primitives/slider.tsx +63 -0
  199. package/primitives/sonner.tsx +35 -0
  200. package/primitives/step-indicator.tsx +69 -0
  201. package/primitives/stepper.tsx +272 -0
  202. package/primitives/switch.tsx +27 -0
  203. package/primitives/table.tsx +105 -0
  204. package/primitives/tabs.tsx +50 -0
  205. package/primitives/text-area.tsx +26 -0
  206. package/primitives/text-link.tsx +27 -0
  207. package/primitives/textarea.tsx +64 -0
  208. package/primitives/textfield.tsx +78 -0
  209. package/primitives/toast.tsx +30 -0
  210. package/primitives/toggle-group.tsx +63 -0
  211. package/primitives/toggle.tsx +44 -0
  212. package/primitives/tooltip.tsx +47 -0
  213. package/primitives/video-player.tsx +23 -0
  214. package/src/button.ts +1 -0
  215. package/src/hooks/index.ts +7 -0
  216. package/src/hooks/use-click-away.ts +31 -0
  217. package/src/hooks/use-combined-refs.ts +22 -0
  218. package/src/hooks/use-copy-clipboard.ts +30 -0
  219. package/src/hooks/use-debounce.ts +17 -0
  220. package/src/hooks/use-fill-ids.ts +25 -0
  221. package/src/hooks/use-map.ts +26 -0
  222. package/src/hooks/use-measure.ts +42 -0
  223. package/src/hooks/use-reverse-video-playback.ts +43 -0
  224. package/src/hooks/use-scroll-restoration.ts +50 -0
  225. package/src/index-lean.ts +87 -0
  226. package/src/index.ts +54 -0
  227. package/src/mcp/README.md +141 -0
  228. package/src/mcp/enhanced-server.ts +1208 -0
  229. package/src/mcp/index.ts +518 -0
  230. package/src/mcp/package.json +10 -0
  231. package/src/registry/api.ts +164 -0
  232. package/src/registry/index.ts +60 -0
  233. package/src/registry/package.json +10 -0
  234. package/src/utils.ts +19 -0
  235. package/style/drawer.css +163 -0
  236. package/style/globals.css +13 -0
  237. package/style/hanzo-common.css +31 -0
  238. package/style/hanzo-default-colors.css +82 -0
  239. package/style/theme-provider.tsx +20 -0
  240. package/tailwind/colors.tailwind.js +53 -0
  241. package/tailwind/fontFamily.tailwind.ts +7 -0
  242. package/tailwind/fontSize.tailwind.ts +13 -0
  243. package/tailwind/index.ts +7 -0
  244. package/tailwind/safelist.tailwind.js +26 -0
  245. package/tailwind/screens.tailwind.js +8 -0
  246. package/tailwind/spacing.tailwind.js +65 -0
  247. package/tailwind/tailwind.config.hanzo-preset.d.ts +5 -0
  248. package/tailwind/tailwind.config.hanzo-preset.js +915 -0
  249. package/tailwind/tw-font-desc.ts +15 -0
  250. package/tailwind/typo-plugin/get-plugin-styles.js +679 -0
  251. package/tailwind/typo-plugin/index.d.ts +9 -0
  252. package/tailwind/typo-plugin/index.js +141 -0
  253. package/tailwind/typo-plugin/utils.js +60 -0
  254. package/tailwind/typography-test.mdx +35 -0
  255. package/tailwind/z-index.tailwind.js +71 -0
  256. package/types/animation-def.ts +3 -0
  257. package/types/breakpoints.ts +11 -0
  258. package/types/bullet-item.ts +10 -0
  259. package/types/button-def.ts +39 -0
  260. package/types/dimensions.ts +8 -0
  261. package/types/grid-def.ts +56 -0
  262. package/types/image-def.ts +32 -0
  263. package/types/index.ts +30 -0
  264. package/types/link-def.ts +56 -0
  265. package/types/media-stack-def.ts +31 -0
  266. package/types/t-shirt-size.ts +5 -0
  267. package/types/tshirt-dimensions.ts +20 -0
  268. package/types/video-def.ts +25 -0
  269. package/util/blob.ts +33 -0
  270. package/util/copy-to-clipboard.ts +17 -0
  271. package/util/create-shadow-root.ts +22 -0
  272. package/util/date.ts +84 -0
  273. package/util/debounce.ts +11 -0
  274. package/util/file.ts +15 -0
  275. package/util/format-and-abbreviate-as-currency.ts +125 -0
  276. package/util/format-text.ts +34 -0
  277. package/util/format-to-max-char.ts +68 -0
  278. package/util/index-client.ts +3 -0
  279. package/util/index.ts +112 -0
  280. package/util/number-abbreviate.ts +49 -0
  281. package/util/specifier.ts +43 -0
  282. package/util/spread-to-transform.ts +25 -0
  283. package/util/step-animation.ts +90 -0
  284. package/util/timing.ts +3 -0
  285. package/util/toasts.tsx +17 -0
  286. package/util/two-way-map.ts +19 -0
  287. package/CHANGELOG.md +0 -184
  288. package/LICENSE +0 -21
  289. package/dist/ai/index.js +0 -53
  290. package/dist/ai/index.js.map +0 -1
  291. package/dist/ai/index.mjs +0 -4
  292. package/dist/ai/index.mjs.map +0 -1
  293. package/dist/blocks/index.js +0 -983
  294. package/dist/blocks/index.js.map +0 -1
  295. package/dist/blocks/index.mjs +0 -945
  296. package/dist/blocks/index.mjs.map +0 -1
  297. package/dist/calendar/index.js +0 -14
  298. package/dist/calendar/index.js.map +0 -1
  299. package/dist/calendar/index.mjs +0 -5
  300. package/dist/calendar/index.mjs.map +0 -1
  301. package/dist/carousel/index.js +0 -220
  302. package/dist/carousel/index.js.map +0 -1
  303. package/dist/carousel/index.mjs +0 -191
  304. package/dist/carousel/index.mjs.map +0 -1
  305. package/dist/charts/index.js +0 -945
  306. package/dist/charts/index.js.map +0 -1
  307. package/dist/charts/index.mjs +0 -901
  308. package/dist/charts/index.mjs.map +0 -1
  309. package/dist/chunk-26T4V5QU.mjs +0 -111
  310. package/dist/chunk-26T4V5QU.mjs.map +0 -1
  311. package/dist/chunk-2A5KXDLJ.js +0 -22
  312. package/dist/chunk-2A5KXDLJ.js.map +0 -1
  313. package/dist/chunk-2CJ4HMF4.js +0 -79
  314. package/dist/chunk-2CJ4HMF4.js.map +0 -1
  315. package/dist/chunk-2OIQKC5E.js +0 -236
  316. package/dist/chunk-2OIQKC5E.js.map +0 -1
  317. package/dist/chunk-2X3KSYBN.js +0 -44
  318. package/dist/chunk-2X3KSYBN.js.map +0 -1
  319. package/dist/chunk-3PBQGYR7.mjs +0 -100
  320. package/dist/chunk-3PBQGYR7.mjs.map +0 -1
  321. package/dist/chunk-3POQQ6L7.js +0 -62
  322. package/dist/chunk-3POQQ6L7.js.map +0 -1
  323. package/dist/chunk-4B47GITH.mjs +0 -28
  324. package/dist/chunk-4B47GITH.mjs.map +0 -1
  325. package/dist/chunk-4BC2OH6B.js +0 -129
  326. package/dist/chunk-4BC2OH6B.js.map +0 -1
  327. package/dist/chunk-5AQSGH4R.js +0 -130
  328. package/dist/chunk-5AQSGH4R.js.map +0 -1
  329. package/dist/chunk-5IHRJFOO.mjs +0 -102
  330. package/dist/chunk-5IHRJFOO.mjs.map +0 -1
  331. package/dist/chunk-5LDGR7YN.mjs +0 -28
  332. package/dist/chunk-5LDGR7YN.mjs.map +0 -1
  333. package/dist/chunk-5MCN3VYM.mjs +0 -23
  334. package/dist/chunk-5MCN3VYM.mjs.map +0 -1
  335. package/dist/chunk-6AVAMRMB.mjs +0 -47
  336. package/dist/chunk-6AVAMRMB.mjs.map +0 -1
  337. package/dist/chunk-6H62JRNM.mjs +0 -120
  338. package/dist/chunk-6H62JRNM.mjs.map +0 -1
  339. package/dist/chunk-6KCII3F6.mjs +0 -126
  340. package/dist/chunk-6KCII3F6.mjs.map +0 -1
  341. package/dist/chunk-7EHB43BJ.js +0 -155
  342. package/dist/chunk-7EHB43BJ.js.map +0 -1
  343. package/dist/chunk-7LRD23Q5.js +0 -191
  344. package/dist/chunk-7LRD23Q5.js.map +0 -1
  345. package/dist/chunk-7SAHKOJG.mjs +0 -45
  346. package/dist/chunk-7SAHKOJG.mjs.map +0 -1
  347. package/dist/chunk-A3D2YZK3.js +0 -50
  348. package/dist/chunk-A3D2YZK3.js.map +0 -1
  349. package/dist/chunk-AL4QFH7V.js +0 -63
  350. package/dist/chunk-AL4QFH7V.js.map +0 -1
  351. package/dist/chunk-B3WFEG6U.js +0 -69
  352. package/dist/chunk-B3WFEG6U.js.map +0 -1
  353. package/dist/chunk-BDZQJ6GK.js +0 -242
  354. package/dist/chunk-BDZQJ6GK.js.map +0 -1
  355. package/dist/chunk-BRWFYRGX.js +0 -61
  356. package/dist/chunk-BRWFYRGX.js.map +0 -1
  357. package/dist/chunk-C5DNTLBO.js +0 -53
  358. package/dist/chunk-C5DNTLBO.js.map +0 -1
  359. package/dist/chunk-CRALRACO.js +0 -54
  360. package/dist/chunk-CRALRACO.js.map +0 -1
  361. package/dist/chunk-CVACQJRM.js +0 -149
  362. package/dist/chunk-CVACQJRM.js.map +0 -1
  363. package/dist/chunk-DEIUKFPZ.mjs +0 -63
  364. package/dist/chunk-DEIUKFPZ.mjs.map +0 -1
  365. package/dist/chunk-DN2AEEA2.js +0 -13
  366. package/dist/chunk-DN2AEEA2.js.map +0 -1
  367. package/dist/chunk-DTNRWU4B.mjs +0 -35
  368. package/dist/chunk-DTNRWU4B.mjs.map +0 -1
  369. package/dist/chunk-DXIUEWRJ.mjs +0 -31
  370. package/dist/chunk-DXIUEWRJ.mjs.map +0 -1
  371. package/dist/chunk-DYFV66JX.mjs +0 -54
  372. package/dist/chunk-DYFV66JX.mjs.map +0 -1
  373. package/dist/chunk-F3WMAHXV.mjs +0 -86
  374. package/dist/chunk-F3WMAHXV.mjs.map +0 -1
  375. package/dist/chunk-F4RWPBBB.js +0 -79
  376. package/dist/chunk-F4RWPBBB.js.map +0 -1
  377. package/dist/chunk-FEGAPM6U.js +0 -194
  378. package/dist/chunk-FEGAPM6U.js.map +0 -1
  379. package/dist/chunk-G5TS56PW.mjs +0 -160
  380. package/dist/chunk-G5TS56PW.mjs.map +0 -1
  381. package/dist/chunk-GG6VGOEN.mjs +0 -590
  382. package/dist/chunk-GG6VGOEN.mjs.map +0 -1
  383. package/dist/chunk-GLAMGK32.mjs +0 -54
  384. package/dist/chunk-GLAMGK32.mjs.map +0 -1
  385. package/dist/chunk-GNMMUJXD.mjs +0 -200
  386. package/dist/chunk-GNMMUJXD.mjs.map +0 -1
  387. package/dist/chunk-GNPBULLS.mjs +0 -600
  388. package/dist/chunk-GNPBULLS.mjs.map +0 -1
  389. package/dist/chunk-GTE2DELE.js +0 -65
  390. package/dist/chunk-GTE2DELE.js.map +0 -1
  391. package/dist/chunk-GUQAFFTH.js +0 -94
  392. package/dist/chunk-GUQAFFTH.js.map +0 -1
  393. package/dist/chunk-H5VOYZHT.mjs +0 -34
  394. package/dist/chunk-H5VOYZHT.mjs.map +0 -1
  395. package/dist/chunk-HR6PBOGG.mjs +0 -59
  396. package/dist/chunk-HR6PBOGG.mjs.map +0 -1
  397. package/dist/chunk-HROONQS3.js +0 -55
  398. package/dist/chunk-HROONQS3.js.map +0 -1
  399. package/dist/chunk-IAO7SOQ3.mjs +0 -56
  400. package/dist/chunk-IAO7SOQ3.mjs.map +0 -1
  401. package/dist/chunk-K2QKU3K6.mjs +0 -40
  402. package/dist/chunk-K2QKU3K6.mjs.map +0 -1
  403. package/dist/chunk-KEUZZCCP.js +0 -53
  404. package/dist/chunk-KEUZZCCP.js.map +0 -1
  405. package/dist/chunk-KJXSLTG7.mjs +0 -73
  406. package/dist/chunk-KJXSLTG7.mjs.map +0 -1
  407. package/dist/chunk-L5AFUCVH.mjs +0 -26
  408. package/dist/chunk-L5AFUCVH.mjs.map +0 -1
  409. package/dist/chunk-LB3I52KZ.mjs +0 -42
  410. package/dist/chunk-LB3I52KZ.mjs.map +0 -1
  411. package/dist/chunk-LN75MJQ2.js +0 -71
  412. package/dist/chunk-LN75MJQ2.js.map +0 -1
  413. package/dist/chunk-LRBOFJUV.js +0 -60
  414. package/dist/chunk-LRBOFJUV.js.map +0 -1
  415. package/dist/chunk-MMNYRBOU.js +0 -157
  416. package/dist/chunk-MMNYRBOU.js.map +0 -1
  417. package/dist/chunk-MO65YF6P.js +0 -236
  418. package/dist/chunk-MO65YF6P.js.map +0 -1
  419. package/dist/chunk-N4KHP5FC.mjs +0 -33
  420. package/dist/chunk-N4KHP5FC.mjs.map +0 -1
  421. package/dist/chunk-NP2J7AB7.mjs +0 -121
  422. package/dist/chunk-NP2J7AB7.mjs.map +0 -1
  423. package/dist/chunk-OLR6SGYO.js +0 -57
  424. package/dist/chunk-OLR6SGYO.js.map +0 -1
  425. package/dist/chunk-ON7NQ4DY.js +0 -21
  426. package/dist/chunk-ON7NQ4DY.js.map +0 -1
  427. package/dist/chunk-PE3VFRLV.mjs +0 -198
  428. package/dist/chunk-PE3VFRLV.mjs.map +0 -1
  429. package/dist/chunk-Q7LOOIE5.mjs +0 -8
  430. package/dist/chunk-Q7LOOIE5.mjs.map +0 -1
  431. package/dist/chunk-QFA6U75G.mjs +0 -51
  432. package/dist/chunk-QFA6U75G.mjs.map +0 -1
  433. package/dist/chunk-QJQPT4WX.js +0 -638
  434. package/dist/chunk-QJQPT4WX.js.map +0 -1
  435. package/dist/chunk-QKHQPBSR.mjs +0 -20
  436. package/dist/chunk-QKHQPBSR.mjs.map +0 -1
  437. package/dist/chunk-SJD4XRFJ.mjs +0 -141
  438. package/dist/chunk-SJD4XRFJ.mjs.map +0 -1
  439. package/dist/chunk-SOOJLU4C.mjs +0 -19
  440. package/dist/chunk-SOOJLU4C.mjs.map +0 -1
  441. package/dist/chunk-T66B5IM5.js +0 -51
  442. package/dist/chunk-T66B5IM5.js.map +0 -1
  443. package/dist/chunk-T7RPZDO4.js +0 -645
  444. package/dist/chunk-T7RPZDO4.js.map +0 -1
  445. package/dist/chunk-TGRMDGTV.mjs +0 -38
  446. package/dist/chunk-TGRMDGTV.mjs.map +0 -1
  447. package/dist/chunk-TH2UKMCO.mjs +0 -11
  448. package/dist/chunk-TH2UKMCO.mjs.map +0 -1
  449. package/dist/chunk-TMV45OKE.mjs +0 -113
  450. package/dist/chunk-TMV45OKE.mjs.map +0 -1
  451. package/dist/chunk-TUJ7EVEK.js +0 -171
  452. package/dist/chunk-TUJ7EVEK.js.map +0 -1
  453. package/dist/chunk-ULNWDOI7.js +0 -122
  454. package/dist/chunk-ULNWDOI7.js.map +0 -1
  455. package/dist/chunk-UNUTTHCH.mjs +0 -210
  456. package/dist/chunk-UNUTTHCH.mjs.map +0 -1
  457. package/dist/chunk-VJMI6BG4.mjs +0 -10
  458. package/dist/chunk-VJMI6BG4.mjs.map +0 -1
  459. package/dist/chunk-VZVOB5MG.mjs +0 -26
  460. package/dist/chunk-VZVOB5MG.mjs.map +0 -1
  461. package/dist/chunk-WD67O22C.js +0 -50
  462. package/dist/chunk-WD67O22C.js.map +0 -1
  463. package/dist/chunk-WYPMLIJN.js +0 -53
  464. package/dist/chunk-WYPMLIJN.js.map +0 -1
  465. package/dist/chunk-X32I34NH.js +0 -109
  466. package/dist/chunk-X32I34NH.js.map +0 -1
  467. package/dist/chunk-X5MOZ3YL.js +0 -65
  468. package/dist/chunk-X5MOZ3YL.js.map +0 -1
  469. package/dist/chunk-Y4JVIPQZ.mjs +0 -31
  470. package/dist/chunk-Y4JVIPQZ.mjs.map +0 -1
  471. package/dist/chunk-Y6WOV2LZ.js +0 -95
  472. package/dist/chunk-Y6WOV2LZ.js.map +0 -1
  473. package/dist/chunk-YAEN5SCU.mjs +0 -41
  474. package/dist/chunk-YAEN5SCU.mjs.map +0 -1
  475. package/dist/chunk-YH6XDF3N.js +0 -121
  476. package/dist/chunk-YH6XDF3N.js.map +0 -1
  477. package/dist/chunk-YJKA4D75.mjs +0 -124
  478. package/dist/chunk-YJKA4D75.mjs.map +0 -1
  479. package/dist/chunk-ZANAF7WB.js +0 -88
  480. package/dist/chunk-ZANAF7WB.js.map +0 -1
  481. package/dist/chunk-ZDBWNPLO.js +0 -30
  482. package/dist/chunk-ZDBWNPLO.js.map +0 -1
  483. package/dist/chunk-ZDT2IOK2.js +0 -56
  484. package/dist/chunk-ZDT2IOK2.js.map +0 -1
  485. package/dist/chunk-ZKGVLTSI.js +0 -25
  486. package/dist/chunk-ZKGVLTSI.js.map +0 -1
  487. package/dist/chunk-ZLELESO7.js +0 -34
  488. package/dist/chunk-ZLELESO7.js.map +0 -1
  489. package/dist/chunk-ZUFUEQTX.mjs +0 -157
  490. package/dist/chunk-ZUFUEQTX.mjs.map +0 -1
  491. package/dist/chunk-ZZZWRQQE.mjs +0 -42
  492. package/dist/chunk-ZZZWRQQE.mjs.map +0 -1
  493. package/dist/command/index.js +0 -138
  494. package/dist/command/index.js.map +0 -1
  495. package/dist/command/index.mjs +0 -128
  496. package/dist/command/index.mjs.map +0 -1
  497. package/dist/components/accordion.js +0 -25
  498. package/dist/components/accordion.js.map +0 -1
  499. package/dist/components/accordion.mjs +0 -4
  500. package/dist/components/accordion.mjs.map +0 -1
  501. package/dist/components/alert.js +0 -21
  502. package/dist/components/alert.js.map +0 -1
  503. package/dist/components/alert.mjs +0 -4
  504. package/dist/components/alert.mjs.map +0 -1
  505. package/dist/components/aspect-ratio.js +0 -12
  506. package/dist/components/aspect-ratio.js.map +0 -1
  507. package/dist/components/aspect-ratio.mjs +0 -3
  508. package/dist/components/aspect-ratio.mjs.map +0 -1
  509. package/dist/components/avatar.js +0 -21
  510. package/dist/components/avatar.js.map +0 -1
  511. package/dist/components/avatar.mjs +0 -4
  512. package/dist/components/avatar.mjs.map +0 -1
  513. package/dist/components/badge.js +0 -17
  514. package/dist/components/badge.js.map +0 -1
  515. package/dist/components/badge.mjs +0 -4
  516. package/dist/components/badge.mjs.map +0 -1
  517. package/dist/components/breadcrumb.js +0 -37
  518. package/dist/components/breadcrumb.js.map +0 -1
  519. package/dist/components/breadcrumb.mjs +0 -4
  520. package/dist/components/breadcrumb.mjs.map +0 -1
  521. package/dist/components/button.js +0 -17
  522. package/dist/components/button.js.map +0 -1
  523. package/dist/components/button.mjs +0 -4
  524. package/dist/components/button.mjs.map +0 -1
  525. package/dist/components/card.js +0 -37
  526. package/dist/components/card.js.map +0 -1
  527. package/dist/components/card.mjs +0 -4
  528. package/dist/components/card.mjs.map +0 -1
  529. package/dist/components/checkbox.js +0 -13
  530. package/dist/components/checkbox.js.map +0 -1
  531. package/dist/components/checkbox.mjs +0 -4
  532. package/dist/components/checkbox.mjs.map +0 -1
  533. package/dist/components/collapsible.js +0 -20
  534. package/dist/components/collapsible.js.map +0 -1
  535. package/dist/components/collapsible.mjs +0 -3
  536. package/dist/components/collapsible.mjs.map +0 -1
  537. package/dist/components/context-menu.js +0 -69
  538. package/dist/components/context-menu.js.map +0 -1
  539. package/dist/components/context-menu.mjs +0 -4
  540. package/dist/components/context-menu.mjs.map +0 -1
  541. package/dist/components/dialog.js +0 -49
  542. package/dist/components/dialog.js.map +0 -1
  543. package/dist/components/dialog.mjs +0 -4
  544. package/dist/components/dialog.mjs.map +0 -1
  545. package/dist/components/drawer.js +0 -49
  546. package/dist/components/drawer.js.map +0 -1
  547. package/dist/components/drawer.mjs +0 -4
  548. package/dist/components/drawer.mjs.map +0 -1
  549. package/dist/components/dropdown-menu.js +0 -69
  550. package/dist/components/dropdown-menu.js.map +0 -1
  551. package/dist/components/dropdown-menu.mjs +0 -4
  552. package/dist/components/dropdown-menu.mjs.map +0 -1
  553. package/dist/components/form.js +0 -42
  554. package/dist/components/form.js.map +0 -1
  555. package/dist/components/form.mjs +0 -5
  556. package/dist/components/form.mjs.map +0 -1
  557. package/dist/components/hover-card.js +0 -21
  558. package/dist/components/hover-card.js.map +0 -1
  559. package/dist/components/hover-card.mjs +0 -4
  560. package/dist/components/hover-card.mjs.map +0 -1
  561. package/dist/components/index.js +0 -1047
  562. package/dist/components/index.js.map +0 -1
  563. package/dist/components/index.mjs +0 -46
  564. package/dist/components/index.mjs.map +0 -1
  565. package/dist/components/input-otp.js +0 -25
  566. package/dist/components/input-otp.js.map +0 -1
  567. package/dist/components/input-otp.mjs +0 -4
  568. package/dist/components/input-otp.mjs.map +0 -1
  569. package/dist/components/input.js +0 -13
  570. package/dist/components/input.js.map +0 -1
  571. package/dist/components/input.mjs +0 -4
  572. package/dist/components/input.mjs.map +0 -1
  573. package/dist/components/label.js +0 -13
  574. package/dist/components/label.js.map +0 -1
  575. package/dist/components/label.mjs +0 -4
  576. package/dist/components/label.mjs.map +0 -1
  577. package/dist/components/menubar.js +0 -73
  578. package/dist/components/menubar.js.map +0 -1
  579. package/dist/components/menubar.mjs +0 -4
  580. package/dist/components/menubar.mjs.map +0 -1
  581. package/dist/components/navigation-menu.js +0 -45
  582. package/dist/components/navigation-menu.js.map +0 -1
  583. package/dist/components/navigation-menu.mjs +0 -4
  584. package/dist/components/navigation-menu.mjs.map +0 -1
  585. package/dist/components/pagination.js +0 -38
  586. package/dist/components/pagination.js.map +0 -1
  587. package/dist/components/pagination.mjs +0 -5
  588. package/dist/components/pagination.mjs.map +0 -1
  589. package/dist/components/popover.js +0 -25
  590. package/dist/components/popover.js.map +0 -1
  591. package/dist/components/popover.mjs +0 -4
  592. package/dist/components/popover.mjs.map +0 -1
  593. package/dist/components/progress.js +0 -13
  594. package/dist/components/progress.js.map +0 -1
  595. package/dist/components/progress.mjs +0 -4
  596. package/dist/components/progress.mjs.map +0 -1
  597. package/dist/components/radio-group.js +0 -17
  598. package/dist/components/radio-group.js.map +0 -1
  599. package/dist/components/radio-group.mjs +0 -4
  600. package/dist/components/radio-group.mjs.map +0 -1
  601. package/dist/components/resizable.js +0 -21
  602. package/dist/components/resizable.js.map +0 -1
  603. package/dist/components/resizable.mjs +0 -4
  604. package/dist/components/resizable.mjs.map +0 -1
  605. package/dist/components/scroll-area.js +0 -17
  606. package/dist/components/scroll-area.js.map +0 -1
  607. package/dist/components/scroll-area.mjs +0 -4
  608. package/dist/components/scroll-area.mjs.map +0 -1
  609. package/dist/components/select.js +0 -49
  610. package/dist/components/select.js.map +0 -1
  611. package/dist/components/select.mjs +0 -4
  612. package/dist/components/select.mjs.map +0 -1
  613. package/dist/components/separator.js +0 -13
  614. package/dist/components/separator.js.map +0 -1
  615. package/dist/components/separator.mjs +0 -4
  616. package/dist/components/separator.mjs.map +0 -1
  617. package/dist/components/sheet.js +0 -49
  618. package/dist/components/sheet.js.map +0 -1
  619. package/dist/components/sheet.mjs +0 -4
  620. package/dist/components/sheet.mjs.map +0 -1
  621. package/dist/components/sidebar.js +0 -111
  622. package/dist/components/sidebar.js.map +0 -1
  623. package/dist/components/sidebar.mjs +0 -10
  624. package/dist/components/sidebar.mjs.map +0 -1
  625. package/dist/components/skeleton.js +0 -13
  626. package/dist/components/skeleton.js.map +0 -1
  627. package/dist/components/skeleton.mjs +0 -4
  628. package/dist/components/skeleton.mjs.map +0 -1
  629. package/dist/components/slider.js +0 -13
  630. package/dist/components/slider.js.map +0 -1
  631. package/dist/components/slider.mjs +0 -4
  632. package/dist/components/slider.mjs.map +0 -1
  633. package/dist/components/switch.js +0 -13
  634. package/dist/components/switch.js.map +0 -1
  635. package/dist/components/switch.mjs +0 -4
  636. package/dist/components/switch.mjs.map +0 -1
  637. package/dist/components/table.js +0 -41
  638. package/dist/components/table.js.map +0 -1
  639. package/dist/components/table.mjs +0 -4
  640. package/dist/components/table.mjs.map +0 -1
  641. package/dist/components/tabs.js +0 -25
  642. package/dist/components/tabs.js.map +0 -1
  643. package/dist/components/tabs.mjs +0 -4
  644. package/dist/components/tabs.mjs.map +0 -1
  645. package/dist/components/textarea.js +0 -13
  646. package/dist/components/textarea.js.map +0 -1
  647. package/dist/components/textarea.mjs +0 -4
  648. package/dist/components/textarea.mjs.map +0 -1
  649. package/dist/components/toast.js +0 -37
  650. package/dist/components/toast.js.map +0 -1
  651. package/dist/components/toast.mjs +0 -4
  652. package/dist/components/toast.mjs.map +0 -1
  653. package/dist/components/toggle-group.js +0 -18
  654. package/dist/components/toggle-group.js.map +0 -1
  655. package/dist/components/toggle-group.mjs +0 -5
  656. package/dist/components/toggle-group.mjs.map +0 -1
  657. package/dist/components/toggle.js +0 -17
  658. package/dist/components/toggle.js.map +0 -1
  659. package/dist/components/toggle.mjs +0 -4
  660. package/dist/components/toggle.mjs.map +0 -1
  661. package/dist/components/tooltip.js +0 -25
  662. package/dist/components/tooltip.js.map +0 -1
  663. package/dist/components/tooltip.mjs +0 -4
  664. package/dist/components/tooltip.mjs.map +0 -1
  665. package/dist/effects/index.js +0 -162
  666. package/dist/effects/index.js.map +0 -1
  667. package/dist/effects/index.mjs +0 -156
  668. package/dist/effects/index.mjs.map +0 -1
  669. package/dist/lib/utils.js +0 -12
  670. package/dist/lib/utils.js.map +0 -1
  671. package/dist/lib/utils.mjs +0 -3
  672. package/dist/lib/utils.mjs.map +0 -1
  673. package/dist/markdown/index.js +0 -669
  674. package/dist/markdown/index.js.map +0 -1
  675. package/dist/markdown/index.mjs +0 -635
  676. package/dist/markdown/index.mjs.map +0 -1
  677. package/dist/qr/index.js +0 -101
  678. package/dist/qr/index.js.map +0 -1
  679. package/dist/qr/index.mjs +0 -98
  680. package/dist/qr/index.mjs.map +0 -1
  681. package/dist/upload/index.js +0 -166
  682. package/dist/upload/index.js.map +0 -1
  683. package/dist/upload/index.mjs +0 -163
  684. package/dist/upload/index.mjs.map +0 -1
  685. package/publish.sh +0 -27
@@ -0,0 +1,22 @@
1
+ import type Block from './block'
2
+
3
+ import type { BulletItem, GridDef } from '../../types'
4
+
5
+ interface BulletCardsBlock extends Block {
6
+ blockType: 'bullet-cards'
7
+ /**
8
+ * no-card-border
9
+ * mobile-small-text
10
+ * borders-muted-1 / borders-muted-3
11
+ * default: 2
12
+ */
13
+ specifiers?: string
14
+ grid: GridDef
15
+ cards: BulletItem[]
16
+ /** in px */
17
+ iconSize?: number
18
+ }
19
+
20
+ export {
21
+ type BulletCardsBlock as default
22
+ }
@@ -0,0 +1,22 @@
1
+ import React from 'react'
2
+
3
+ import type CTABlock from './cta-block'
4
+ import type Block from './block'
5
+ import type ImageBlock from './image-block'
6
+ import type VideoBlock from './video-block'
7
+
8
+ interface CardBlock extends Block {
9
+ blockType: 'card'
10
+ specifiers?: string // 'media-left' or 'appear-disabled' or 'no-borders', etc... can be combined
11
+ title?: string
12
+ byline?: string
13
+ icon?: React.ReactNode // for title area
14
+ iconAfter?: boolean
15
+ media?: ImageBlock | VideoBlock // TODO: Media Stack
16
+ content?: React.ReactNode
17
+ cta?: CTABlock
18
+ }
19
+
20
+ export {
21
+ type CardBlock as default
22
+ }
@@ -0,0 +1,21 @@
1
+
2
+ import type Block from './block'
3
+ import type CTABlock from './cta-block'
4
+ import type EnhHeadingBlock from './enh-heading-block'
5
+
6
+ interface CarteBlancheBlock extends Block {
7
+ blockType: 'carte-blanche'
8
+ // big-padding
9
+ // no-outer-borders
10
+ // no-internal-borders
11
+ // style-ghost (no-internal-borders, no outer border, no padding)
12
+ specifiers?: string
13
+ topContent?: Block[]
14
+ heading?: EnhHeadingBlock
15
+ content?: Block[]
16
+ cta?: CTABlock
17
+ }
18
+
19
+ export {
20
+ type CarteBlancheBlock as default
21
+ }
@@ -0,0 +1,19 @@
1
+ import type { LinkDef, ButtonDef } from '../../types'
2
+ import type Block from './block'
3
+
4
+ interface CTABlock extends Block {
5
+ blockType: 'cta'
6
+ // fill: fills the parent width with the elements
7
+ // left / right: (>= md) left or right justify the elements (default is center)
8
+ // mobile-2-columns: mobile defaults to rendering each element full width,
9
+ // on it's own line. This renders them in two columns instead.
10
+ // mobile-center-first-if-odd: if (mobile-2-columns) and length is odd,
11
+ // default is to center last
12
+ // mobile-odd-full-width: fills the full two columns w the centered element
13
+ specifiers?: string
14
+ elements: (LinkDef | ButtonDef)[]
15
+ }
16
+
17
+ export {
18
+ type CTABlock as default
19
+ }
@@ -0,0 +1,11 @@
1
+ import React from 'react'
2
+ import type Block from './block'
3
+
4
+ interface ElementBlock extends Block {
5
+ blockType: 'element'
6
+ element: React.ReactNode | JSX.Element
7
+ }
8
+
9
+ export {
10
+ type ElementBlock as default
11
+ }
@@ -0,0 +1,44 @@
1
+ import type Block from './block'
2
+
3
+ // level is heading tag level. 1 renders as <h1>, etc... 0 renders as <p>
4
+ //
5
+ // mb: is bottom margin in tw units. 'mb-1' produces 0.25rem, so a value of 4 would produce 1rem
6
+ // These are dynamically generated from a template string. mb-1 --> mb-12 have been safelisted.
7
+ // Any higher values used would have to explicitly safelisted in tailwind config.
8
+ // The margin will only be applied if the next element down is present.
9
+ // (eg, heading mb applies only if there is a byline.)
10
+
11
+ interface EnhHeadingBlock extends Block {
12
+ blockType: 'enh-heading'
13
+ // tbd: icon-w-heading (if preheading is present),
14
+ // tbd: icon-w-byline (if preheading and heading is present),
15
+ // tbd: icon-above: above first element
16
+ // tbd: icon-to-right: to right of corresponding element or right justified if 'icon-above'
17
+ // mobile-heading-centered
18
+ // left / right / center for preheading and heading (byline stays left)
19
+ // byline-left / byline-right / byline-center
20
+ // preheading-heading-font
21
+ specifiers?: string
22
+ // By default, appears inline to left of first element (preheading or heading)
23
+ // unless indicated otherwise in specifiers
24
+ icon?: React.ReactNode // ReactNode or url string to asset
25
+ iconSize?: number // if url string, this sets the size
26
+ preheading?: {
27
+ text: string
28
+ level?: number // default: 4
29
+ mb?: number // default: 2
30
+ }
31
+ heading: {
32
+ text: string
33
+ level?: number // default: 1
34
+ mb?: number // default: 2
35
+ }
36
+ byline?: {
37
+ text: string
38
+ level?: number // default: 6
39
+ }
40
+ }
41
+
42
+ export {
43
+ type EnhHeadingBlock as default
44
+ }
@@ -0,0 +1,16 @@
1
+ import type Block from "./block"
2
+ import type GridDef from "../../types/grid-def"
3
+
4
+ interface GridBlock {
5
+ blockType: 'grid'
6
+ specifiers?: string
7
+ grid: GridDef
8
+ /**
9
+ * Ignored if children are supplied to the GridBlockComp
10
+ */
11
+ cells?: Block[]
12
+ }
13
+
14
+ export {
15
+ type GridBlock as default
16
+ }
@@ -0,0 +1,11 @@
1
+ import type Block from './block'
2
+
3
+ interface GroupBlock extends Block {
4
+ blockType: 'group'
5
+ specifiers?: string // grid-2 slider disabled or whatever
6
+ elements: Block[]
7
+ }
8
+
9
+ export {
10
+ type GroupBlock as default
11
+ }
@@ -0,0 +1,15 @@
1
+ import type Block from './block'
2
+
3
+ interface HeadingBlock extends Block {
4
+ blockType: 'heading'
5
+ heading: string
6
+ byline?: string
7
+ level?: number
8
+ bylineLevel?: number
9
+ spaceBetween?: number
10
+ spaceAfter?: number
11
+ }
12
+
13
+ export {
14
+ type HeadingBlock as default
15
+ }
@@ -0,0 +1,31 @@
1
+ import type { ImageDef } from '../../types'
2
+ import type Block from './block'
3
+
4
+ /**
5
+ * See {@link ImageDef}
6
+ * see https://nextjs.org/docs/app/api-reference/components/image
7
+ * as well as React.ImgHTMLAttributes.
8
+ */
9
+ interface ImageBlock extends Block, ImageDef {
10
+ blockType: 'image'
11
+
12
+ /**
13
+ * Alignement: 'left' (default) / 'right' / 'center' (must be in flex-col parent)
14
+ * 'mobile-no-scale': By default, scales to 3/4 height (mobile and w < 'md')
15
+ * 'mobile-full-width': Overrides dim, etc. and renders full width (maintaining aspect ratio)
16
+ */
17
+ specifiers?: string
18
+ /** @deprecated Please use 'mobile-full-width' in specifiers */
19
+ fullWidthOnMobile?: boolean
20
+ /** Next props */
21
+ props?: {
22
+ sizes?: string
23
+ /** if true, any alignement specifiers are ignored */
24
+ fill?: boolean
25
+ style?: any
26
+ }
27
+ }
28
+
29
+ export {
30
+ type ImageBlock as default,
31
+ }
@@ -0,0 +1,35 @@
1
+ import type AccordianBlock from './accordian-block'
2
+ import type Block from './block'
3
+ import type BulletCardsBlock from './bullet-cards-block'
4
+ import type CardBlock from './card-block'
5
+ import type CarteBlancheBlock from './carte-blanche-block'
6
+ import type CTABlock from './cta-block'
7
+ import type ElementBlock from './element-block'
8
+ import type GridBlock from './grid-block'
9
+ import type GroupBlock from './group-block'
10
+ import type EnhHeadingBlock from './enh-heading-block'
11
+ import type HeadingBlock from './heading-block'
12
+ import type ImageBlock from './image-block'
13
+ import type VideoBlock from './video-block'
14
+ import type SpaceBlock from './space-block'
15
+ import { SPACE_DEFAULTS } from './space-block'
16
+ import type ScreenfulBlock from './screenful-block'
17
+
18
+ export {
19
+ type AccordianBlock,
20
+ type Block,
21
+ type BulletCardsBlock,
22
+ type CardBlock,
23
+ type CarteBlancheBlock,
24
+ type CTABlock,
25
+ type ElementBlock,
26
+ type GridBlock,
27
+ type GroupBlock,
28
+ type HeadingBlock,
29
+ type EnhHeadingBlock,
30
+ type ImageBlock,
31
+ type VideoBlock,
32
+ type SpaceBlock,
33
+ type ScreenfulBlock,
34
+ SPACE_DEFAULTS
35
+ }
@@ -0,0 +1,54 @@
1
+ import type { ReactNode } from 'react'
2
+
3
+ import type Block from './block'
4
+ import type VideoBlock from './video-block'
5
+
6
+ /**
7
+ * A common screenful of content
8
+ * An optional banner image or video
9
+ * Content can be in columns
10
+ */
11
+ interface ScreenfulBlock extends Block {
12
+ blockType: 'screenful'
13
+
14
+
15
+ /**
16
+ * Either an image URL, or a Video Block
17
+ *
18
+ * If VideoBlock, then it's poster will be rendered server-side
19
+ * and the <video> component will be lazy-loaded client-side.
20
+ *
21
+ * If in a scrolling situation, the video will autoplay when 75% in view
22
+ */
23
+ banner?: string | VideoBlock // TODO: should be VideoDef
24
+
25
+ /** Specifies rendering and layout hints and variants for block as a whole */
26
+ specifiers?: string
27
+
28
+ /** Specifies rendering and layout hints and variants for corresponding column */
29
+ columnSpecifiers?: string[]
30
+
31
+ /**
32
+ * Mobile: The order in the single column mobile layout in which the columns appear.
33
+ * Overrides column order.
34
+ * eg, if you want the second tile of three at the top: [1, 0, 2]
35
+ */
36
+ mobileOrder?: number[]
37
+
38
+ /**
39
+ * Content Blocks for 1-3 columns.
40
+ * (More than that is allowed, but impractical at many resolutions!)
41
+ * If > 1, it will be enclosed in a 'grid grid-cols-<x>' div.
42
+ */
43
+ contentColumns: Block[][]
44
+
45
+ /** optional footer element below the grid */
46
+ footer?: ReactNode
47
+
48
+ /** optional id for linking to this slide / screenful */
49
+ anchorId?: string
50
+ }
51
+
52
+ export {
53
+ type ScreenfulBlock as default
54
+ }
@@ -0,0 +1,64 @@
1
+ import type { Breakpoint } from '../../types'
2
+
3
+ import type Block from './block'
4
+
5
+ type TWSpaceUnit = number // TODO, pull from tw conf
6
+ type HeadingLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6
7
+
8
+ const SPACE_DEFAULTS = {
9
+ xs: 2,
10
+ sm: 4,
11
+ md: 5,
12
+ lg: 6,
13
+ xl: 8
14
+ } satisfies {
15
+ [key in (Breakpoint)]?: TWSpaceUnit
16
+ }
17
+
18
+
19
+ interface SpaceBlock extends Block {
20
+ blockType: 'space'
21
+
22
+ /**
23
+ * TW units of vertical space, applied at Breakpoints
24
+ * or
25
+ * if just a number, that number at all Breakpoints
26
+ *
27
+ * default {
28
+ * xs: 2,
29
+ * sm: 4,
30
+ * md: 5,
31
+ * lg: 6,
32
+ * xl: 8
33
+ * }
34
+ *
35
+ * Any provided values will be merge w the defaults
36
+ * And applied as if they were tw classes in ascending
37
+ * order.
38
+ *
39
+ * impl: <div className='invisible w-[1px] xs:h-<xsval> sm:h-<smval> etc...' />
40
+ */
41
+ sizes?: {
42
+ [key in (Breakpoint)]?: TWSpaceUnit
43
+ } | TWSpaceUnit
44
+
45
+ /**
46
+ * Heading levels. Gives the vertical space that the corresponding
47
+ * h tag would give.
48
+ * default: 3 (height of <h3>)
49
+ * 0 = 1rem (plus any gaps),
50
+ * For example, 1 = <h1 style={visibility: hidden}>&nbsp;</h1>
51
+ * As <ApplyTypography> would render it, plus any gap.
52
+ */
53
+ level?: HeadingLevel
54
+
55
+ test?: boolean
56
+
57
+ }
58
+
59
+ export {
60
+ type SpaceBlock as default,
61
+ type TWSpaceUnit,
62
+ type HeadingLevel,
63
+ SPACE_DEFAULTS
64
+ }
@@ -0,0 +1,9 @@
1
+ import type { VideoDef } from '../../types'
2
+
3
+ interface VideoBlock extends VideoDef {
4
+ blockType: 'video'
5
+ }
6
+
7
+ export {
8
+ type VideoBlock as default,
9
+ }
@@ -0,0 +1,242 @@
1
+ 'use client'
2
+
3
+ import { cn } from '@hanzo/ui/util'
4
+ import { Button } from '@hanzo/ui/primitives'
5
+ import { Input } from '@hanzo/ui/primitives'
6
+ import { Label } from '@hanzo/ui/primitives'
7
+ import { RadioGroup, RadioGroupItem } from '@hanzo/ui/primitives'
8
+ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@hanzo/ui/primitives'
9
+ import { Separator } from '@hanzo/ui/primitives'
10
+ import { Checkbox } from '@hanzo/ui/primitives'
11
+
12
+ interface CheckoutProps extends React.ComponentPropsWithoutRef<'div'> {
13
+ orderSummary: {
14
+ items: Array<{
15
+ name: string
16
+ quantity: number
17
+ price: number
18
+ }>
19
+ subtotal: number
20
+ shipping: number
21
+ tax: number
22
+ total: number
23
+ currency?: string
24
+ }
25
+ onSubmit?: (data: any) => void
26
+ onBack?: () => void
27
+ }
28
+
29
+ export function Checkout({
30
+ className,
31
+ orderSummary,
32
+ onSubmit,
33
+ onBack,
34
+ ...props
35
+ }: CheckoutProps) {
36
+ const formatPrice = (price: number, currency = '$') => {
37
+ return `${currency}${price.toFixed(2)}`
38
+ }
39
+
40
+ const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
41
+ e.preventDefault()
42
+ const formData = new FormData(e.currentTarget)
43
+ const data = Object.fromEntries(formData.entries())
44
+ onSubmit?.(data)
45
+ }
46
+
47
+ return (
48
+ <div className={cn('container py-8', className)} {...props}>
49
+ <form onSubmit={handleSubmit} className="grid gap-8 lg:grid-cols-3">
50
+ <div className="lg:col-span-2 space-y-6">
51
+ {/* Shipping Information */}
52
+ <Card>
53
+ <CardHeader>
54
+ <CardTitle>Shipping Information</CardTitle>
55
+ <CardDescription>
56
+ Enter your shipping address details
57
+ </CardDescription>
58
+ </CardHeader>
59
+ <CardContent className="grid gap-4">
60
+ <div className="grid gap-4 sm:grid-cols-2">
61
+ <div className="grid gap-2">
62
+ <Label htmlFor="firstName">First Name</Label>
63
+ <Input id="firstName" name="firstName" required />
64
+ </div>
65
+ <div className="grid gap-2">
66
+ <Label htmlFor="lastName">Last Name</Label>
67
+ <Input id="lastName" name="lastName" required />
68
+ </div>
69
+ </div>
70
+ <div className="grid gap-2">
71
+ <Label htmlFor="email">Email</Label>
72
+ <Input id="email" name="email" type="email" required />
73
+ </div>
74
+ <div className="grid gap-2">
75
+ <Label htmlFor="address">Street Address</Label>
76
+ <Input id="address" name="address" required />
77
+ </div>
78
+ <div className="grid gap-2">
79
+ <Label htmlFor="address2">Apartment, suite, etc. (optional)</Label>
80
+ <Input id="address2" name="address2" />
81
+ </div>
82
+ <div className="grid gap-4 sm:grid-cols-3">
83
+ <div className="grid gap-2">
84
+ <Label htmlFor="city">City</Label>
85
+ <Input id="city" name="city" required />
86
+ </div>
87
+ <div className="grid gap-2">
88
+ <Label htmlFor="state">State / Province</Label>
89
+ <Input id="state" name="state" required />
90
+ </div>
91
+ <div className="grid gap-2">
92
+ <Label htmlFor="zip">ZIP / Postal Code</Label>
93
+ <Input id="zip" name="zip" required />
94
+ </div>
95
+ </div>
96
+ <div className="grid gap-2">
97
+ <Label htmlFor="phone">Phone Number</Label>
98
+ <Input id="phone" name="phone" type="tel" />
99
+ </div>
100
+ </CardContent>
101
+ </Card>
102
+
103
+ {/* Payment Method */}
104
+ <Card>
105
+ <CardHeader>
106
+ <CardTitle>Payment Method</CardTitle>
107
+ <CardDescription>
108
+ Select your payment method
109
+ </CardDescription>
110
+ </CardHeader>
111
+ <CardContent className="grid gap-6">
112
+ <RadioGroup defaultValue="card" name="paymentMethod">
113
+ <div className="flex items-center space-x-2">
114
+ <RadioGroupItem value="card" id="card" />
115
+ <Label htmlFor="card">Credit Card</Label>
116
+ </div>
117
+ <div className="flex items-center space-x-2">
118
+ <RadioGroupItem value="paypal" id="paypal" />
119
+ <Label htmlFor="paypal">PayPal</Label>
120
+ </div>
121
+ <div className="flex items-center space-x-2">
122
+ <RadioGroupItem value="crypto" id="crypto" />
123
+ <Label htmlFor="crypto">Cryptocurrency</Label>
124
+ </div>
125
+ </RadioGroup>
126
+
127
+ <div className="grid gap-4">
128
+ <div className="grid gap-2">
129
+ <Label htmlFor="cardNumber">Card Number</Label>
130
+ <Input
131
+ id="cardNumber"
132
+ name="cardNumber"
133
+ placeholder="1234 5678 9012 3456"
134
+ />
135
+ </div>
136
+ <div className="grid gap-4 sm:grid-cols-3">
137
+ <div className="grid gap-2 sm:col-span-2">
138
+ <Label htmlFor="expiry">Expiry Date</Label>
139
+ <Input
140
+ id="expiry"
141
+ name="expiry"
142
+ placeholder="MM/YY"
143
+ />
144
+ </div>
145
+ <div className="grid gap-2">
146
+ <Label htmlFor="cvc">CVC</Label>
147
+ <Input
148
+ id="cvc"
149
+ name="cvc"
150
+ placeholder="123"
151
+ />
152
+ </div>
153
+ </div>
154
+ </div>
155
+ </CardContent>
156
+ </Card>
157
+
158
+ {/* Billing Address */}
159
+ <Card>
160
+ <CardHeader>
161
+ <CardTitle>Billing Address</CardTitle>
162
+ </CardHeader>
163
+ <CardContent>
164
+ <div className="flex items-center space-x-2">
165
+ <Checkbox id="sameAsShipping" name="sameAsShipping" defaultChecked />
166
+ <label
167
+ htmlFor="sameAsShipping"
168
+ className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
169
+ >
170
+ Same as shipping address
171
+ </label>
172
+ </div>
173
+ </CardContent>
174
+ </Card>
175
+ </div>
176
+
177
+ {/* Order Summary */}
178
+ <div>
179
+ <Card>
180
+ <CardHeader>
181
+ <CardTitle>Order Summary</CardTitle>
182
+ </CardHeader>
183
+ <CardContent className="space-y-4">
184
+ <div className="space-y-2">
185
+ {orderSummary.items.map((item, i) => (
186
+ <div key={i} className="flex justify-between text-sm">
187
+ <span className="text-muted-foreground">
188
+ {item.name} x {item.quantity}
189
+ </span>
190
+ <span>
191
+ {formatPrice(item.price * item.quantity, orderSummary.currency)}
192
+ </span>
193
+ </div>
194
+ ))}
195
+ </div>
196
+ <Separator />
197
+ <div className="space-y-2">
198
+ <div className="flex justify-between">
199
+ <span>Subtotal</span>
200
+ <span>{formatPrice(orderSummary.subtotal, orderSummary.currency)}</span>
201
+ </div>
202
+ <div className="flex justify-between">
203
+ <span>Shipping</span>
204
+ <span>{formatPrice(orderSummary.shipping, orderSummary.currency)}</span>
205
+ </div>
206
+ <div className="flex justify-between">
207
+ <span>Tax</span>
208
+ <span>{formatPrice(orderSummary.tax, orderSummary.currency)}</span>
209
+ </div>
210
+ </div>
211
+ <Separator />
212
+ <div className="flex justify-between text-lg font-semibold">
213
+ <span>Total</span>
214
+ <span>{formatPrice(orderSummary.total, orderSummary.currency)}</span>
215
+ </div>
216
+ </CardContent>
217
+ <CardFooter className="flex-col gap-2">
218
+ <Button type="submit" className="w-full" size="lg">
219
+ Complete Order
220
+ </Button>
221
+ {onBack && (
222
+ <Button
223
+ type="button"
224
+ variant="outline"
225
+ className="w-full"
226
+ onClick={onBack}
227
+ >
228
+ Back to Cart
229
+ </Button>
230
+ )}
231
+ </CardFooter>
232
+ </Card>
233
+
234
+ <div className="mt-4 text-xs text-center text-muted-foreground">
235
+ Your payment information is encrypted and secure.
236
+ We never store your credit card details.
237
+ </div>
238
+ </div>
239
+ </form>
240
+ </div>
241
+ )
242
+ }
@@ -0,0 +1,7 @@
1
+ export { ProductGrid } from './product-grid'
2
+ export { ProductDetail } from './product-detail'
3
+ export { ShoppingCart } from './shopping-cart'
4
+ export { Checkout } from './checkout'
5
+
6
+ export type { Product } from './product-grid'
7
+ export type { CartItem } from './shopping-cart'