@hypoth-ui/cli 0.0.1 → 0.1.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 (375) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -115
  3. package/dist/{add-PDBC4JTE.js → add-V5PW73GC.js} +29 -17
  4. package/dist/{chunk-5LTQ2XVL.js → chunk-27CLUUVC.js} +0 -2
  5. package/dist/{chunk-YPKFYE45.js → chunk-NWIRSZUQ.js} +6 -13
  6. package/dist/{chunk-GJ6JOQ3Q.js → chunk-PBK72SJJ.js} +1 -1
  7. package/dist/{diff-BQEXG7HU.js → diff-776UATCA.js} +2 -2
  8. package/dist/index.js +5 -5
  9. package/dist/{init-7AZXYAPJ.js → init-GDU2PW7K.js} +10 -13
  10. package/dist/{list-X6ZLM2NQ.js → list-XDP5I537.js} +3 -3
  11. package/package.json +16 -12
  12. package/registry/components.json +1820 -206
  13. package/templates/accordion/index.tsx +266 -0
  14. package/templates/accordion/wc/accordion-content.ts +113 -0
  15. package/templates/accordion/wc/accordion-item.ts +111 -0
  16. package/templates/accordion/wc/accordion-trigger.ts +105 -0
  17. package/templates/accordion/wc/accordion.ts +213 -0
  18. package/templates/accordion/wc/index.ts +12 -0
  19. package/templates/alert/index.tsx +177 -0
  20. package/templates/alert/wc/alert.ts +167 -0
  21. package/templates/alert/wc/index.ts +1 -0
  22. package/templates/alert-dialog/index.tsx +360 -0
  23. package/templates/alert-dialog/wc/alert-dialog-action.ts +43 -0
  24. package/templates/alert-dialog/wc/alert-dialog-cancel.ts +43 -0
  25. package/templates/alert-dialog/wc/alert-dialog-content.ts +42 -0
  26. package/templates/alert-dialog/wc/alert-dialog-description.ts +34 -0
  27. package/templates/alert-dialog/wc/alert-dialog-footer.ts +25 -0
  28. package/templates/alert-dialog/wc/alert-dialog-header.ts +25 -0
  29. package/templates/alert-dialog/wc/alert-dialog-title.ts +34 -0
  30. package/templates/alert-dialog/wc/alert-dialog-trigger.ts +46 -0
  31. package/templates/alert-dialog/wc/alert-dialog.ts +302 -0
  32. package/templates/alert-dialog/wc/index.ts +13 -0
  33. package/templates/aspect-ratio/index.tsx +50 -0
  34. package/templates/aspect-ratio/wc/aspect-ratio.ts +78 -0
  35. package/templates/aspect-ratio/wc/index.ts +5 -0
  36. package/templates/avatar/avatar-group.tsx +88 -0
  37. package/templates/avatar/avatar.tsx +124 -0
  38. package/templates/avatar/index.tsx +33 -0
  39. package/templates/avatar/wc/avatar-group.ts +112 -0
  40. package/templates/avatar/wc/avatar.ts +184 -0
  41. package/templates/avatar/wc/index.ts +5 -0
  42. package/templates/badge/index.tsx +140 -0
  43. package/templates/badge/wc/badge.ts +119 -0
  44. package/templates/badge/wc/index.ts +9 -0
  45. package/templates/breadcrumb/index.tsx +157 -0
  46. package/templates/breadcrumb/wc/breadcrumb-item.ts +30 -0
  47. package/templates/breadcrumb/wc/breadcrumb-link.ts +70 -0
  48. package/templates/breadcrumb/wc/breadcrumb-list.ts +30 -0
  49. package/templates/breadcrumb/wc/breadcrumb-page.ts +32 -0
  50. package/templates/breadcrumb/wc/breadcrumb-separator.ts +31 -0
  51. package/templates/breadcrumb/wc/breadcrumb.ts +55 -0
  52. package/templates/breadcrumb/wc/index.ts +10 -0
  53. package/templates/button/button.tsx +119 -0
  54. package/templates/button/index.ts +1 -0
  55. package/templates/button/wc/button.ts +169 -0
  56. package/templates/calendar/index.tsx +149 -0
  57. package/templates/calendar/wc/calendar.ts +316 -0
  58. package/templates/calendar/wc/index.ts +4 -0
  59. package/templates/card/index.tsx +108 -0
  60. package/templates/card/wc/card-content.ts +25 -0
  61. package/templates/card/wc/card-footer.ts +25 -0
  62. package/templates/card/wc/card-header.ts +25 -0
  63. package/templates/card/wc/card.ts +43 -0
  64. package/templates/card/wc/index.ts +8 -0
  65. package/templates/checkbox/checkbox.tsx +85 -0
  66. package/templates/checkbox/wc/checkbox.ts +247 -0
  67. package/templates/collapsible/index.tsx +172 -0
  68. package/templates/collapsible/wc/collapsible-content.ts +97 -0
  69. package/templates/collapsible/wc/collapsible-trigger.ts +39 -0
  70. package/templates/collapsible/wc/collapsible.ts +143 -0
  71. package/templates/collapsible/wc/index.ts +7 -0
  72. package/templates/combobox/combobox-content.tsx +141 -0
  73. package/templates/combobox/combobox-context.ts +36 -0
  74. package/templates/combobox/combobox-empty.tsx +38 -0
  75. package/templates/combobox/combobox-input.tsx +159 -0
  76. package/templates/combobox/combobox-loading.tsx +38 -0
  77. package/templates/combobox/combobox-option.tsx +99 -0
  78. package/templates/combobox/combobox-root.tsx +207 -0
  79. package/templates/combobox/combobox-tag.tsx +62 -0
  80. package/templates/combobox/index.ts +62 -0
  81. package/templates/combobox/wc/combobox-content.ts +97 -0
  82. package/templates/combobox/wc/combobox-input.ts +134 -0
  83. package/templates/combobox/wc/combobox-option.ts +111 -0
  84. package/templates/combobox/wc/combobox-tag.ts +103 -0
  85. package/templates/combobox/wc/combobox.ts +981 -0
  86. package/templates/combobox/wc/index.ts +5 -0
  87. package/templates/command/index.tsx +279 -0
  88. package/templates/command/wc/command-empty.ts +24 -0
  89. package/templates/command/wc/command-group.ts +60 -0
  90. package/templates/command/wc/command-input.ts +136 -0
  91. package/templates/command/wc/command-item.ts +78 -0
  92. package/templates/command/wc/command-list.ts +103 -0
  93. package/templates/command/wc/command-loading.ts +24 -0
  94. package/templates/command/wc/command-separator.ts +23 -0
  95. package/templates/command/wc/command.ts +176 -0
  96. package/templates/context-menu/index.tsx +262 -0
  97. package/templates/context-menu/wc/context-menu-content.ts +41 -0
  98. package/templates/context-menu/wc/context-menu-item.ts +83 -0
  99. package/templates/context-menu/wc/context-menu-label.ts +30 -0
  100. package/templates/context-menu/wc/context-menu-separator.ts +28 -0
  101. package/templates/context-menu/wc/context-menu.ts +324 -0
  102. package/templates/context-menu/wc/index.ts +9 -0
  103. package/templates/data-table/index.tsx +263 -0
  104. package/templates/data-table/wc/data-table.ts +405 -0
  105. package/templates/data-table/wc/index.ts +10 -0
  106. package/templates/date-picker/date-picker-calendar.tsx +352 -0
  107. package/templates/date-picker/date-picker-content.tsx +121 -0
  108. package/templates/date-picker/date-picker-context.ts +46 -0
  109. package/templates/date-picker/date-picker-root.tsx +201 -0
  110. package/templates/date-picker/date-picker-trigger.tsx +95 -0
  111. package/templates/date-picker/index.ts +44 -0
  112. package/templates/date-picker/wc/date-picker-calendar.ts +457 -0
  113. package/templates/date-picker/wc/date-picker.ts +592 -0
  114. package/templates/date-picker/wc/date-utils.ts +467 -0
  115. package/templates/date-picker/wc/index.ts +3 -0
  116. package/templates/dialog/dialog-close.tsx +57 -0
  117. package/templates/dialog/dialog-content.tsx +106 -0
  118. package/templates/dialog/dialog-context.ts +24 -0
  119. package/templates/dialog/dialog-description.tsx +51 -0
  120. package/templates/dialog/dialog-root.tsx +104 -0
  121. package/templates/dialog/dialog-title.tsx +38 -0
  122. package/templates/dialog/dialog-trigger.tsx +94 -0
  123. package/templates/dialog/index.ts +52 -0
  124. package/templates/dialog/wc/dialog-content.ts +59 -0
  125. package/templates/dialog/wc/dialog-description.ts +58 -0
  126. package/templates/dialog/wc/dialog-title.ts +56 -0
  127. package/templates/dialog/wc/dialog.ts +411 -0
  128. package/templates/drawer/index.tsx +263 -0
  129. package/templates/drawer/wc/drawer-content.ts +150 -0
  130. package/templates/drawer/wc/drawer-description.ts +34 -0
  131. package/templates/drawer/wc/drawer-footer.ts +25 -0
  132. package/templates/drawer/wc/drawer-header.ts +25 -0
  133. package/templates/drawer/wc/drawer-title.ts +34 -0
  134. package/templates/drawer/wc/drawer.ts +348 -0
  135. package/templates/drawer/wc/index.ts +10 -0
  136. package/templates/dropdown-menu/index.tsx +454 -0
  137. package/templates/dropdown-menu/wc/dropdown-menu-checkbox-item.ts +93 -0
  138. package/templates/dropdown-menu/wc/dropdown-menu-content.ts +43 -0
  139. package/templates/dropdown-menu/wc/dropdown-menu-item.ts +85 -0
  140. package/templates/dropdown-menu/wc/dropdown-menu-label.ts +31 -0
  141. package/templates/dropdown-menu/wc/dropdown-menu-radio-group.ts +80 -0
  142. package/templates/dropdown-menu/wc/dropdown-menu-radio-item.ts +101 -0
  143. package/templates/dropdown-menu/wc/dropdown-menu-separator.ts +28 -0
  144. package/templates/dropdown-menu/wc/dropdown-menu.ts +358 -0
  145. package/templates/dropdown-menu/wc/index.ts +12 -0
  146. package/templates/field/field-description.tsx +39 -0
  147. package/templates/field/field-error.tsx +37 -0
  148. package/templates/field/field.tsx +46 -0
  149. package/templates/field/index.ts +4 -0
  150. package/templates/field/label.tsx +40 -0
  151. package/templates/field/wc/field-description.ts +42 -0
  152. package/templates/field/wc/field-error.ts +46 -0
  153. package/templates/field/wc/field.ts +210 -0
  154. package/templates/field/wc/label.ts +54 -0
  155. package/templates/file-upload/file-upload-context.ts +26 -0
  156. package/templates/file-upload/file-upload-dropzone.tsx +111 -0
  157. package/templates/file-upload/file-upload-input.tsx +86 -0
  158. package/templates/file-upload/file-upload-item.tsx +105 -0
  159. package/templates/file-upload/file-upload-root.tsx +115 -0
  160. package/templates/file-upload/index.ts +50 -0
  161. package/templates/file-upload/wc/file-upload.ts +380 -0
  162. package/templates/file-upload/wc/index.ts +1 -0
  163. package/templates/hover-card/index.tsx +203 -0
  164. package/templates/hover-card/wc/hover-card-content.ts +50 -0
  165. package/templates/hover-card/wc/hover-card.ts +382 -0
  166. package/templates/hover-card/wc/index.ts +6 -0
  167. package/templates/icon/icon.tsx +76 -0
  168. package/templates/icon/wc/icon-adapter.ts +108 -0
  169. package/templates/icon/wc/icon.ts +161 -0
  170. package/templates/input/input.tsx +130 -0
  171. package/templates/input/wc/input.ts +216 -0
  172. package/templates/layout/app-shell.tsx +177 -0
  173. package/templates/layout/box.tsx +53 -0
  174. package/templates/layout/center.tsx +42 -0
  175. package/templates/layout/container.tsx +43 -0
  176. package/templates/layout/flow.tsx +83 -0
  177. package/templates/layout/grid.tsx +79 -0
  178. package/templates/layout/index.ts +33 -0
  179. package/templates/layout/inline.tsx +16 -0
  180. package/templates/layout/page.tsx +43 -0
  181. package/templates/layout/section.tsx +39 -0
  182. package/templates/layout/spacer.tsx +30 -0
  183. package/templates/layout/split.tsx +47 -0
  184. package/templates/layout/stack.tsx +16 -0
  185. package/templates/layout/wc/app-shell.ts +58 -0
  186. package/templates/layout/wc/box.ts +117 -0
  187. package/templates/layout/wc/center.ts +78 -0
  188. package/templates/layout/wc/container.ts +77 -0
  189. package/templates/layout/wc/flow.ts +149 -0
  190. package/templates/layout/wc/footer.ts +57 -0
  191. package/templates/layout/wc/grid.ts +142 -0
  192. package/templates/layout/wc/header.ts +57 -0
  193. package/templates/layout/wc/index.ts +41 -0
  194. package/templates/layout/wc/main.ts +46 -0
  195. package/templates/layout/wc/page.ts +81 -0
  196. package/templates/layout/wc/section.ts +65 -0
  197. package/templates/layout/wc/spacer.ts +77 -0
  198. package/templates/layout/wc/split.ts +94 -0
  199. package/templates/layout/wc/wrap.ts +93 -0
  200. package/templates/layout/wrap.tsx +46 -0
  201. package/templates/link/link.tsx +109 -0
  202. package/templates/link/wc/link.ts +124 -0
  203. package/templates/list/index.tsx +55 -0
  204. package/templates/list/list-item.tsx +117 -0
  205. package/templates/list/list.tsx +115 -0
  206. package/templates/list/wc/index.ts +5 -0
  207. package/templates/list/wc/list-item.ts +127 -0
  208. package/templates/list/wc/list.ts +114 -0
  209. package/templates/menu/index.ts +49 -0
  210. package/templates/menu/menu-content.tsx +109 -0
  211. package/templates/menu/menu-context.ts +17 -0
  212. package/templates/menu/menu-item.tsx +108 -0
  213. package/templates/menu/menu-label.tsx +32 -0
  214. package/templates/menu/menu-root.tsx +108 -0
  215. package/templates/menu/menu-separator.tsx +24 -0
  216. package/templates/menu/menu-trigger.tsx +104 -0
  217. package/templates/menu/wc/menu-content.ts +67 -0
  218. package/templates/menu/wc/menu-item.ts +109 -0
  219. package/templates/menu/wc/menu.ts +449 -0
  220. package/templates/navigation-menu/index.tsx +328 -0
  221. package/templates/navigation-menu/wc/index.ts +12 -0
  222. package/templates/navigation-menu/wc/navigation-menu-content.ts +30 -0
  223. package/templates/navigation-menu/wc/navigation-menu-indicator.ts +30 -0
  224. package/templates/navigation-menu/wc/navigation-menu-item.ts +60 -0
  225. package/templates/navigation-menu/wc/navigation-menu-link.ts +97 -0
  226. package/templates/navigation-menu/wc/navigation-menu-list.ts +30 -0
  227. package/templates/navigation-menu/wc/navigation-menu-trigger.ts +110 -0
  228. package/templates/navigation-menu/wc/navigation-menu-viewport.ts +85 -0
  229. package/templates/navigation-menu/wc/navigation-menu.ts +272 -0
  230. package/templates/number-input/index.ts +46 -0
  231. package/templates/number-input/number-input-context.ts +38 -0
  232. package/templates/number-input/number-input-decrement.tsx +53 -0
  233. package/templates/number-input/number-input-field.tsx +93 -0
  234. package/templates/number-input/number-input-increment.tsx +53 -0
  235. package/templates/number-input/number-input-root.tsx +137 -0
  236. package/templates/number-input/wc/index.ts +1 -0
  237. package/templates/number-input/wc/number-input.ts +283 -0
  238. package/templates/pagination/index.tsx +198 -0
  239. package/templates/pagination/wc/index.ts +11 -0
  240. package/templates/pagination/wc/pagination-content.ts +30 -0
  241. package/templates/pagination/wc/pagination-ellipsis.ts +28 -0
  242. package/templates/pagination/wc/pagination-item.ts +30 -0
  243. package/templates/pagination/wc/pagination-link.ts +76 -0
  244. package/templates/pagination/wc/pagination-next.ts +69 -0
  245. package/templates/pagination/wc/pagination-previous.ts +69 -0
  246. package/templates/pagination/wc/pagination.ts +156 -0
  247. package/templates/pin-input/index.ts +39 -0
  248. package/templates/pin-input/pin-input-context.ts +30 -0
  249. package/templates/pin-input/pin-input-field.tsx +186 -0
  250. package/templates/pin-input/pin-input-root.tsx +120 -0
  251. package/templates/pin-input/wc/index.ts +1 -0
  252. package/templates/pin-input/wc/pin-input.ts +259 -0
  253. package/templates/popover/popover.tsx +121 -0
  254. package/templates/popover/wc/popover-content.ts +66 -0
  255. package/templates/popover/wc/popover.ts +343 -0
  256. package/templates/progress/index.tsx +117 -0
  257. package/templates/progress/wc/index.ts +4 -0
  258. package/templates/progress/wc/progress.ts +174 -0
  259. package/templates/radio/radio.tsx +43 -0
  260. package/templates/radio/wc/radio-group.ts +261 -0
  261. package/templates/radio/wc/radio.ts +145 -0
  262. package/templates/scroll-area/index.tsx +144 -0
  263. package/templates/scroll-area/wc/index.ts +8 -0
  264. package/templates/scroll-area/wc/scroll-area-scrollbar.ts +143 -0
  265. package/templates/scroll-area/wc/scroll-area-thumb.ts +225 -0
  266. package/templates/scroll-area/wc/scroll-area-viewport.ts +120 -0
  267. package/templates/scroll-area/wc/scroll-area.ts +63 -0
  268. package/templates/select/index.ts +57 -0
  269. package/templates/select/select-content.tsx +243 -0
  270. package/templates/select/select-context.ts +30 -0
  271. package/templates/select/select-group.tsx +53 -0
  272. package/templates/select/select-label.tsx +34 -0
  273. package/templates/select/select-option.tsx +97 -0
  274. package/templates/select/select-root.tsx +153 -0
  275. package/templates/select/select-separator.tsx +27 -0
  276. package/templates/select/select-trigger.tsx +112 -0
  277. package/templates/select/select-value.tsx +48 -0
  278. package/templates/select/wc/index.ts +6 -0
  279. package/templates/select/wc/select-content.ts +89 -0
  280. package/templates/select/wc/select-group.ts +82 -0
  281. package/templates/select/wc/select-label.ts +49 -0
  282. package/templates/select/wc/select-option.ts +111 -0
  283. package/templates/select/wc/select-trigger.ts +101 -0
  284. package/templates/select/wc/select.ts +840 -0
  285. package/templates/separator/index.tsx +49 -0
  286. package/templates/separator/wc/index.ts +5 -0
  287. package/templates/separator/wc/separator.ts +60 -0
  288. package/templates/sheet/index.tsx +291 -0
  289. package/templates/sheet/wc/index.ts +12 -0
  290. package/templates/sheet/wc/sheet-close.ts +43 -0
  291. package/templates/sheet/wc/sheet-content.ts +47 -0
  292. package/templates/sheet/wc/sheet-description.ts +34 -0
  293. package/templates/sheet/wc/sheet-footer.ts +25 -0
  294. package/templates/sheet/wc/sheet-header.ts +25 -0
  295. package/templates/sheet/wc/sheet-overlay.ts +23 -0
  296. package/templates/sheet/wc/sheet-title.ts +34 -0
  297. package/templates/sheet/wc/sheet.ts +336 -0
  298. package/templates/skeleton/index.tsx +131 -0
  299. package/templates/skeleton/wc/index.ts +10 -0
  300. package/templates/skeleton/wc/skeleton.ts +107 -0
  301. package/templates/slider/index.ts +41 -0
  302. package/templates/slider/slider-context.ts +36 -0
  303. package/templates/slider/slider-range.tsx +59 -0
  304. package/templates/slider/slider-root.tsx +166 -0
  305. package/templates/slider/slider-thumb.tsx +213 -0
  306. package/templates/slider/slider-track.tsx +113 -0
  307. package/templates/slider/wc/index.ts +1 -0
  308. package/templates/slider/wc/slider.ts +465 -0
  309. package/templates/spinner/spinner.tsx +64 -0
  310. package/templates/spinner/wc/spinner.ts +70 -0
  311. package/templates/stepper/index.tsx +230 -0
  312. package/templates/stepper/wc/index.ts +12 -0
  313. package/templates/stepper/wc/stepper-content.ts +30 -0
  314. package/templates/stepper/wc/stepper-description.ts +25 -0
  315. package/templates/stepper/wc/stepper-indicator.ts +30 -0
  316. package/templates/stepper/wc/stepper-item.ts +55 -0
  317. package/templates/stepper/wc/stepper-separator.ts +29 -0
  318. package/templates/stepper/wc/stepper-title.ts +25 -0
  319. package/templates/stepper/wc/stepper-trigger.ts +67 -0
  320. package/templates/stepper/wc/stepper.ts +164 -0
  321. package/templates/switch/switch.tsx +90 -0
  322. package/templates/switch/wc/switch.ts +228 -0
  323. package/templates/table/body.tsx +21 -0
  324. package/templates/table/cell.tsx +44 -0
  325. package/templates/table/head.tsx +112 -0
  326. package/templates/table/header.tsx +21 -0
  327. package/templates/table/index.tsx +93 -0
  328. package/templates/table/root.tsx +82 -0
  329. package/templates/table/row.tsx +36 -0
  330. package/templates/table/wc/index.ts +9 -0
  331. package/templates/table/wc/table-body.ts +32 -0
  332. package/templates/table/wc/table-cell.ts +58 -0
  333. package/templates/table/wc/table-head.ts +129 -0
  334. package/templates/table/wc/table-header.ts +32 -0
  335. package/templates/table/wc/table-row.ts +50 -0
  336. package/templates/table/wc/table.ts +93 -0
  337. package/templates/tabs/index.tsx +222 -0
  338. package/templates/tabs/wc/index.ts +8 -0
  339. package/templates/tabs/wc/tabs-content.ts +82 -0
  340. package/templates/tabs/wc/tabs-list.ts +56 -0
  341. package/templates/tabs/wc/tabs-trigger.ts +136 -0
  342. package/templates/tabs/wc/tabs.ts +202 -0
  343. package/templates/tag/index.tsx +186 -0
  344. package/templates/tag/wc/index.ts +4 -0
  345. package/templates/tag/wc/tag.ts +166 -0
  346. package/templates/text/text.tsx +100 -0
  347. package/templates/text/wc/text.ts +94 -0
  348. package/templates/textarea/textarea.tsx +134 -0
  349. package/templates/textarea/wc/textarea.ts +280 -0
  350. package/templates/time-picker/index.ts +42 -0
  351. package/templates/time-picker/time-picker-context.ts +28 -0
  352. package/templates/time-picker/time-picker-root.tsx +113 -0
  353. package/templates/time-picker/time-picker-segment.tsx +91 -0
  354. package/templates/time-picker/wc/index.ts +1 -0
  355. package/templates/time-picker/wc/time-picker.ts +221 -0
  356. package/templates/toast/index.tsx +71 -0
  357. package/templates/toast/provider.tsx +228 -0
  358. package/templates/toast/toast.tsx +142 -0
  359. package/templates/toast/use-toast.ts +89 -0
  360. package/templates/toast/wc/index.ts +15 -0
  361. package/templates/toast/wc/toast-controller.ts +282 -0
  362. package/templates/toast/wc/toast-provider.ts +161 -0
  363. package/templates/toast/wc/toast.ts +165 -0
  364. package/templates/tooltip/tooltip.tsx +62 -0
  365. package/templates/tooltip/wc/tooltip-content.ts +64 -0
  366. package/templates/tooltip/wc/tooltip.ts +289 -0
  367. package/templates/tree/index.tsx +60 -0
  368. package/templates/tree/tree-item.tsx +131 -0
  369. package/templates/tree/tree.tsx +138 -0
  370. package/templates/tree/wc/index.ts +11 -0
  371. package/templates/tree/wc/tree-item.ts +273 -0
  372. package/templates/tree/wc/tree-utils.ts +143 -0
  373. package/templates/tree/wc/tree.ts +139 -0
  374. package/templates/visually-hidden/visually-hidden.tsx +45 -0
  375. package/templates/visually-hidden/wc/visually-hidden.ts +64 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 hypoth-org
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,153 +1,57 @@
1
1
  # @hypoth-ui/cli
2
2
 
3
- CLI tool for adding hypoth-ui components to your project.
3
+ ![Alpha](https://img.shields.io/badge/status-alpha-orange)
4
4
 
5
- ## Installation
6
-
7
- ```bash
8
- npx @hypoth-ui/cli init
9
- ```
5
+ CLI tool for scaffolding and managing hypoth-ui components in your project. Initialize configuration, browse available components, and add them with a single command.
10
6
 
11
- Or install globally:
7
+ ## Installation
12
8
 
13
9
  ```bash
14
10
  npm install -g @hypoth-ui/cli
15
11
  ```
16
12
 
17
- ## Quick Start
18
-
19
- 1. Initialize hypoth-ui in your project:
13
+ Or use directly with `npx`:
20
14
 
21
15
  ```bash
22
16
  npx @hypoth-ui/cli init
23
17
  ```
24
18
 
25
- 2. Add components:
26
-
27
- ```bash
28
- npx @hypoth-ui/cli add button
29
- npx @hypoth-ui/cli add dialog menu
30
- ```
31
-
32
- 3. List available components:
33
-
34
- ```bash
35
- npx @hypoth-ui/cli list
36
- ```
37
-
38
- ## Commands
39
-
40
- ### `init`
41
-
42
- Initialize hypoth-ui in your project. Creates `ds.config.json` and installs core dependencies.
43
-
44
- ```bash
45
- npx @hypoth-ui/cli init [options]
46
- ```
47
-
48
- Options:
49
- - `-s, --style <style>` - Installation style: `copy` (source files) or `package` (npm packages)
50
- - `-f, --framework <framework>` - Framework: `react`, `next`, `wc`, or `vanilla`
51
- - `-y, --yes` - Skip prompts and use defaults
52
-
53
- ### `add`
54
-
55
- Add components to your project.
56
-
57
- ```bash
58
- npx @hypoth-ui/cli add <components...> [options]
59
- ```
60
-
61
- Options:
62
- - `-o, --overwrite` - Overwrite existing components
63
- - `-a, --all` - Add all available components
64
-
65
- Examples:
66
- ```bash
67
- npx @hypoth-ui/cli add button # Add single component
68
- npx @hypoth-ui/cli add button dialog # Add multiple components
69
- npx @hypoth-ui/cli add --all # Add all components
70
- npx @hypoth-ui/cli add button -o # Overwrite existing
71
- ```
72
-
73
- ### `list`
19
+ ## Usage
74
20
 
75
- List all available components.
21
+ ### Initialize a Project
76
22
 
77
23
  ```bash
78
- npx @hypoth-ui/cli list [options]
24
+ npx @hypoth-ui/cli init
79
25
  ```
80
26
 
81
- Options:
82
- - `-j, --json` - Output as JSON
83
-
84
- ### `diff`
27
+ Creates a `ds.config.json` with your project settings (framework, package manager, paths).
85
28
 
86
- Check for component updates.
29
+ ### Add Components
87
30
 
88
31
  ```bash
89
- npx @hypoth-ui/cli diff [options]
32
+ npx @hypoth-ui/cli add button dialog
90
33
  ```
91
34
 
92
- Options:
93
- - `-j, --json` - Output as JSON
94
-
95
- ## Installation Modes
35
+ Installs the component packages and any required dependencies.
96
36
 
97
- ### Package Mode (Recommended)
98
-
99
- Components are installed as npm packages. Easier to update, tree-shakeable.
37
+ ### Copy Component Source
100
38
 
101
39
  ```bash
102
- npx @hypoth-ui/cli init --style package
40
+ npx @hypoth-ui/cli add button --copy
103
41
  ```
104
42
 
105
- ### Copy Mode
43
+ Copies the component source files into your project instead of installing a package.
106
44
 
107
- Component source files are copied to your project. Full customization, you own the code.
45
+ ### List Available Components
108
46
 
109
47
  ```bash
110
- npx @hypoth-ui/cli init --style copy
111
- ```
112
-
113
- ## Configuration
114
-
115
- Configuration is stored in `ds.config.json`:
116
-
117
- ```json
118
- {
119
- "$schema": "https://hypoth-ui.dev/schema/ds.config.json",
120
- "style": "package",
121
- "framework": "next",
122
- "typescript": true,
123
- "packageManager": "pnpm",
124
- "paths": {
125
- "components": "src/components/ui",
126
- "utils": "src/lib"
127
- },
128
- "aliases": {
129
- "components": "@/components/ui",
130
- "lib": "@/lib"
131
- },
132
- "components": []
133
- }
48
+ npx @hypoth-ui/cli list
49
+ npx @hypoth-ui/cli list --installed
134
50
  ```
135
51
 
136
- ## Supported Frameworks
137
-
138
- - **React** - Standard React applications
139
- - **Next.js** - Next.js App Router projects
140
- - **Web Components** - Lit-based Web Components
141
- - **Vanilla** - Vanilla JS using Web Components
142
-
143
- ## Supported Package Managers
144
-
145
- - npm
146
- - pnpm
147
- - yarn
148
- - bun
52
+ ## Documentation
149
53
 
150
- The CLI automatically detects your package manager from lock files.
54
+ See the [main README](../../README.md) for full documentation and architecture overview.
151
55
 
152
56
  ## License
153
57
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installPackages
3
- } from "./chunk-5LTQ2XVL.js";
3
+ } from "./chunk-27CLUUVC.js";
4
4
  import {
5
5
  getComponent,
6
6
  getComponentNames,
@@ -8,13 +8,13 @@ import {
8
8
  isComponentCompatible,
9
9
  loadBundledRegistry,
10
10
  resolveDependencies
11
- } from "./chunk-GJ6JOQ3Q.js";
11
+ } from "./chunk-PBK72SJJ.js";
12
12
  import {
13
13
  addInstalledComponent,
14
14
  isComponentInstalled,
15
15
  readConfig,
16
16
  writeConfig
17
- } from "./chunk-YPKFYE45.js";
17
+ } from "./chunk-NWIRSZUQ.js";
18
18
 
19
19
  // src/commands/add.ts
20
20
  import * as p from "@clack/prompts";
@@ -96,14 +96,8 @@ function transformImports(content, config, fileType) {
96
96
  return content;
97
97
  }
98
98
  let result = content;
99
- result = result.replace(
100
- /@\/components\//g,
101
- `${config.aliases.components}/`
102
- );
103
- result = result.replace(
104
- /@\/lib\//g,
105
- `${config.aliases.lib}/`
106
- );
99
+ result = result.replace(/@\/components\//g, `${config.aliases.components}/`);
100
+ result = result.replace(/@\/lib\//g, `${config.aliases.lib}/`);
107
101
  return result;
108
102
  }
109
103
  function ensureComponentsDir(config, cwd = process.cwd()) {
@@ -114,7 +108,7 @@ function ensureComponentsDir(config, cwd = process.cwd()) {
114
108
  }
115
109
 
116
110
  // src/commands/add.ts
117
- async function addCommand(components, options = {}) {
111
+ async function addCommand(componentArgs, options = {}) {
118
112
  p.intro(pc.bgCyan(pc.black(" hypoth-ui add ")));
119
113
  const cwd = process.cwd();
120
114
  let config;
@@ -125,8 +119,8 @@ async function addCommand(components, options = {}) {
125
119
  process.exit(1);
126
120
  }
127
121
  const registry = loadBundledRegistry();
122
+ const components = options.all ? getComponentNames(registry) : componentArgs;
128
123
  if (options.all) {
129
- components = getComponentNames(registry);
130
124
  p.log.info(`Installing all ${components.length} components`);
131
125
  }
132
126
  if (components.length === 0) {
@@ -186,14 +180,28 @@ async function addCommand(components, options = {}) {
186
180
  spinner3.start(`Installing npm dependencies: ${npmDeps.join(", ")}`);
187
181
  try {
188
182
  await installPackages(npmDeps, config.packageManager, { cwd });
189
- spinner3.stop(`Installed npm dependencies`);
183
+ spinner3.stop("Installed npm dependencies");
190
184
  } catch (error) {
191
185
  spinner3.stop(pc.red(`Failed to install npm dependencies: ${error.message}`));
192
186
  process.exit(1);
193
187
  }
194
188
  }
189
+ const useCopyMode = options.copy || config.style === "copy";
195
190
  const spinner2 = p.spinner();
196
- if (config.style === "copy") {
191
+ if (useCopyMode) {
192
+ const noTemplates = finalComponents.filter((c) => c.files.length === 0);
193
+ if (noTemplates.length > 0) {
194
+ const withTemplates = finalComponents.filter((c) => c.files.length > 0);
195
+ p.log.error(
196
+ `No template files available for: ${noTemplates.map((c) => pc.yellow(c.name)).join(", ")}`
197
+ );
198
+ p.log.info(
199
+ `Copy mode supports: ${withTemplates.length > 0 ? withTemplates.map((c) => c.name).join(", ") : "run 'pnpm sync:templates' to generate templates"}`
200
+ );
201
+ if (withTemplates.length === 0) {
202
+ process.exit(1);
203
+ }
204
+ }
197
205
  ensureComponentsDir(config, cwd);
198
206
  for (const component of finalComponents) {
199
207
  spinner2.start(`Copying ${component.name}...`);
@@ -203,7 +211,11 @@ async function addCommand(components, options = {}) {
203
211
  overwrite: options.overwrite
204
212
  });
205
213
  if (result.errors.length > 0) {
206
- spinner2.stop(pc.red(`Failed to copy ${component.name}: ${result.errors[0]?.error ?? "Unknown error"}`));
214
+ spinner2.stop(
215
+ pc.red(
216
+ `Failed to copy ${component.name}: ${result.errors[0]?.error ?? "Unknown error"}`
217
+ )
218
+ );
207
219
  continue;
208
220
  }
209
221
  config = addInstalledComponent(config, {
@@ -228,7 +240,7 @@ async function addCommand(components, options = {}) {
228
240
  writeConfig(config, cwd);
229
241
  const installed = finalComponents.map((c) => c.name);
230
242
  p.outro(pc.green(`Added ${installed.length} component(s): ${installed.join(", ")}`));
231
- if (config.style === "copy") {
243
+ if (useCopyMode) {
232
244
  console.log("");
233
245
  console.log(`Components copied to: ${pc.dim(config.paths.components)}`);
234
246
  }
@@ -30,7 +30,6 @@ function getInstallSubcommand(pm) {
30
30
  case "pnpm":
31
31
  case "bun":
32
32
  return "add";
33
- case "npm":
34
33
  default:
35
34
  return "install";
36
35
  }
@@ -41,7 +40,6 @@ function getDevFlag(pm) {
41
40
  case "pnpm":
42
41
  case "bun":
43
42
  return "-D";
44
- case "npm":
45
43
  default:
46
44
  return "--save-dev";
47
45
  }
@@ -12,9 +12,7 @@ function getConfigPath(cwd = process.cwd()) {
12
12
  function readConfig(cwd = process.cwd()) {
13
13
  const configPath = getConfigPath(cwd);
14
14
  if (!existsSync(configPath)) {
15
- throw new Error(
16
- `Configuration file not found. Run 'hypoth-ui init' first.`
17
- );
15
+ throw new Error(`Configuration file not found. Run 'hypoth-ui init' first.`);
18
16
  }
19
17
  try {
20
18
  const content = readFileSync(configPath, "utf-8");
@@ -30,7 +28,8 @@ function readConfig(cwd = process.cwd()) {
30
28
  function writeConfig(config, cwd = process.cwd()) {
31
29
  const configPath = getConfigPath(cwd);
32
30
  const content = JSON.stringify(config, null, 2);
33
- writeFileSync(configPath, content + "\n", "utf-8");
31
+ writeFileSync(configPath, `${content}
32
+ `, "utf-8");
34
33
  }
35
34
  function createConfig(options) {
36
35
  const config = {
@@ -60,9 +59,7 @@ function validateConfig(config) {
60
59
  throw new Error('Invalid configuration: style must be "copy" or "package"');
61
60
  }
62
61
  if (!["react", "next", "wc", "vanilla"].includes(cfg.framework)) {
63
- throw new Error(
64
- 'Invalid configuration: framework must be "react", "next", "wc", or "vanilla"'
65
- );
62
+ throw new Error('Invalid configuration: framework must be "react", "next", "wc", or "vanilla"');
66
63
  }
67
64
  if (typeof cfg.typescript !== "boolean") {
68
65
  throw new Error("Invalid configuration: typescript must be a boolean");
@@ -77,18 +74,14 @@ function validateConfig(config) {
77
74
  }
78
75
  const paths = cfg.paths;
79
76
  if (typeof paths.components !== "string" || typeof paths.utils !== "string") {
80
- throw new Error(
81
- "Invalid configuration: paths.components and paths.utils must be strings"
82
- );
77
+ throw new Error("Invalid configuration: paths.components and paths.utils must be strings");
83
78
  }
84
79
  if (!cfg.aliases || typeof cfg.aliases !== "object") {
85
80
  throw new Error("Invalid configuration: aliases must be an object");
86
81
  }
87
82
  const aliases = cfg.aliases;
88
83
  if (typeof aliases.components !== "string" || typeof aliases.lib !== "string") {
89
- throw new Error(
90
- "Invalid configuration: aliases.components and aliases.lib must be strings"
91
- );
84
+ throw new Error("Invalid configuration: aliases.components and aliases.lib must be strings");
92
85
  }
93
86
  if (!Array.isArray(cfg.components)) {
94
87
  throw new Error("Invalid configuration: components must be an array");
@@ -1,6 +1,6 @@
1
1
  // src/utils/registry.ts
2
2
  import { readFileSync } from "fs";
3
- import { join, dirname } from "path";
3
+ import { dirname, join } from "path";
4
4
  import { fileURLToPath } from "url";
5
5
  var __dirname = dirname(fileURLToPath(import.meta.url));
6
6
  var BUNDLED_REGISTRY_PATH = join(__dirname, "../registry/components.json");
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  fetchRegistry,
3
3
  getComponent
4
- } from "./chunk-GJ6JOQ3Q.js";
4
+ } from "./chunk-PBK72SJJ.js";
5
5
  import {
6
6
  readConfig
7
- } from "./chunk-YPKFYE45.js";
7
+ } from "./chunk-NWIRSZUQ.js";
8
8
 
9
9
  // src/commands/diff.ts
10
10
  import pc from "picocolors";
package/dist/index.js CHANGED
@@ -6,19 +6,19 @@ var VERSION = "0.0.1";
6
6
  var program = new Command();
7
7
  program.name("hypoth-ui").description("CLI for installing hypoth-ui components").version(VERSION);
8
8
  program.command("init").description("Initialize hypoth-ui in your project").option("-s, --style <style>", "Installation style (copy or package)").option("-f, --framework <framework>", "Framework (react, next, wc, vanilla)").option("-y, --yes", "Skip prompts and use defaults").action(async (options) => {
9
- const { initCommand } = await import("./init-7AZXYAPJ.js");
9
+ const { initCommand } = await import("./init-GDU2PW7K.js");
10
10
  await initCommand(options);
11
11
  });
12
- program.command("add").description("Add components to your project").argument("[components...]", "Component names to add").option("-o, --overwrite", "Overwrite existing components").option("-a, --all", "Add all available components").action(async (components, options) => {
13
- const { addCommand } = await import("./add-PDBC4JTE.js");
12
+ program.command("add").description("Add components to your project").argument("[components...]", "Component names to add").option("-c, --copy", "Copy component source files instead of installing package").option("-o, --overwrite", "Overwrite existing components").option("-a, --all", "Add all available components").action(async (components, options) => {
13
+ const { addCommand } = await import("./add-V5PW73GC.js");
14
14
  await addCommand(components, options);
15
15
  });
16
16
  program.command("list").description("List available components").option("-j, --json", "Output as JSON").action(async (options) => {
17
- const { listCommand } = await import("./list-X6ZLM2NQ.js");
17
+ const { listCommand } = await import("./list-XDP5I537.js");
18
18
  await listCommand(options);
19
19
  });
20
20
  program.command("diff").description("Check for component updates").option("-j, --json", "Output as JSON").action(async (options) => {
21
- const { diffCommand } = await import("./diff-BQEXG7HU.js");
21
+ const { diffCommand } = await import("./diff-776UATCA.js");
22
22
  await diffCommand(options);
23
23
  });
24
24
  program.parse();
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  installPackages
3
- } from "./chunk-5LTQ2XVL.js";
3
+ } from "./chunk-27CLUUVC.js";
4
4
  import {
5
5
  configExists,
6
6
  createConfig,
7
7
  readConfig,
8
8
  writeConfig
9
- } from "./chunk-YPKFYE45.js";
9
+ } from "./chunk-NWIRSZUQ.js";
10
10
 
11
11
  // src/commands/init.ts
12
12
  import * as p from "@clack/prompts";
@@ -53,11 +53,7 @@ function detectPackageManager(cwd, signals) {
53
53
  return "npm";
54
54
  }
55
55
  function detectTypeScript(cwd, signals) {
56
- const tsconfigPaths = [
57
- "tsconfig.json",
58
- "tsconfig.base.json",
59
- "jsconfig.json"
60
- ];
56
+ const tsconfigPaths = ["tsconfig.json", "tsconfig.base.json", "jsconfig.json"];
61
57
  for (const configPath of tsconfigPaths) {
62
58
  const fullPath = join(cwd, configPath);
63
59
  if (existsSync(fullPath)) {
@@ -136,7 +132,9 @@ async function initCommand(options = {}) {
136
132
  p.intro(pc.bgCyan(pc.black(" hypoth-ui init ")));
137
133
  const cwd = process.cwd();
138
134
  if (!isValidProject(cwd)) {
139
- p.cancel(pc.red("No package.json found. Please run this command in a valid project directory."));
135
+ p.cancel(
136
+ pc.red("No package.json found. Please run this command in a valid project directory.")
137
+ );
140
138
  process.exit(1);
141
139
  }
142
140
  if (configExists(cwd)) {
@@ -174,9 +172,7 @@ async function handleExistingConfig(cwd, options) {
174
172
  }
175
173
  const existingConfig = readConfig(cwd);
176
174
  const componentsCount = existingConfig.components.length;
177
- p.log.warn(
178
- `Found existing ds.config.json with ${componentsCount} installed component(s)`
179
- );
175
+ p.log.warn(`Found existing ds.config.json with ${componentsCount} installed component(s)`);
180
176
  const action = await p.select({
181
177
  message: "What would you like to do?",
182
178
  options: [
@@ -317,7 +313,9 @@ function displayNextSteps(config) {
317
313
  console.log(` ${pc.dim("npx @hypoth-ui/cli list")}`);
318
314
  console.log("");
319
315
  if (config.style === "copy") {
320
- console.log(` ${pc.cyan("3.")} Components will be copied to: ${pc.dim(config.paths.components)}`);
316
+ console.log(
317
+ ` ${pc.cyan("3.")} Components will be copied to: ${pc.dim(config.paths.components)}`
318
+ );
321
319
  console.log("");
322
320
  }
323
321
  }
@@ -330,7 +328,6 @@ function getInstallCommandForDisplay(pm, packages) {
330
328
  return `yarn add ${pkgList}`;
331
329
  case "bun":
332
330
  return `bun add ${pkgList}`;
333
- case "npm":
334
331
  default:
335
332
  return `npm install ${pkgList}`;
336
333
  }
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  getComponentsForFramework,
3
3
  loadBundledRegistry
4
- } from "./chunk-GJ6JOQ3Q.js";
4
+ } from "./chunk-PBK72SJJ.js";
5
5
  import {
6
6
  configExists,
7
7
  readConfig
8
- } from "./chunk-YPKFYE45.js";
8
+ } from "./chunk-NWIRSZUQ.js";
9
9
 
10
10
  // src/commands/list.ts
11
11
  import pc from "picocolors";
@@ -56,7 +56,7 @@ async function listCommand(options = {}) {
56
56
  const name = (installedMark + component.name).padEnd(nameWidth + 2).slice(0, nameWidth + 2);
57
57
  const status = formatStatus(component.status).padEnd(statusWidth);
58
58
  const version = component.version.padEnd(versionWidth);
59
- const desc = component.description.length > descWidth ? component.description.slice(0, descWidth - 3) + "..." : component.description;
59
+ const desc = component.description.length > descWidth ? `${component.description.slice(0, descWidth - 3)}...` : component.description;
60
60
  console.log(`${name}${status}${version}${pc.dim(desc)}`);
61
61
  }
62
62
  console.log("");
package/package.json CHANGED
@@ -1,28 +1,22 @@
1
1
  {
2
2
  "name": "@hypoth-ui/cli",
3
- "version": "0.0.1",
4
- "description": "CLI tool for adding hypoth-ui components to your project",
3
+ "version": "0.1.1",
4
+ "description": "CLI tool for adding hypoth-ui components to your project (Alpha)",
5
+ "homepage": "https://github.com/hypoth-ui/hypoth-ui#readme",
5
6
  "type": "module",
6
7
  "bin": {
7
8
  "hypoth-ui": "./dist/index.js"
8
9
  },
9
10
  "files": [
10
11
  "dist",
11
- "registry"
12
+ "registry",
13
+ "templates"
12
14
  ],
13
15
  "exports": {
14
16
  ".": {
15
17
  "import": "./dist/index.js"
16
18
  }
17
19
  },
18
- "scripts": {
19
- "build": "tsup",
20
- "dev": "tsup --watch",
21
- "typecheck": "tsc --noEmit",
22
- "test": "vitest run",
23
- "test:unit": "vitest run tests/unit",
24
- "test:watch": "vitest"
25
- },
26
20
  "dependencies": {
27
21
  "commander": "^12.1.0",
28
22
  "@clack/prompts": "^0.7.0",
@@ -33,6 +27,7 @@
33
27
  "devDependencies": {
34
28
  "@types/node": "^20.10.0",
35
29
  "tsup": "^8.0.0",
30
+ "tsx": "^4.7.0",
36
31
  "typescript": "^5.3.0",
37
32
  "vitest": "^1.0.0"
38
33
  },
@@ -50,5 +45,14 @@
50
45
  "type": "git",
51
46
  "url": "https://github.com/hypoth-ui/hypoth-ui.git",
52
47
  "directory": "packages/cli"
48
+ },
49
+ "scripts": {
50
+ "build": "tsup",
51
+ "dev": "tsup --watch",
52
+ "typecheck": "tsc --noEmit",
53
+ "test": "vitest run",
54
+ "test:unit": "vitest run tests/unit",
55
+ "test:watch": "vitest",
56
+ "sync:templates": "tsx scripts/sync-templates.ts"
53
57
  }
54
- }
58
+ }