@goldencomm/create-baseline 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (756) hide show
  1. package/README.md +18 -79
  2. package/index.mjs +175 -283
  3. package/package.json +13 -30
  4. package/templates/ci/bitbucket-pipelines.yml +29 -0
  5. package/templates/code-connect/accordion-item.figma.ts +45 -0
  6. package/templates/code-connect/accordion.figma.ts +40 -0
  7. package/templates/code-connect/alert.figma.ts +378 -0
  8. package/templates/code-connect/avatar-badge.figma.ts +14 -0
  9. package/templates/code-connect/avatar-group-count.figma.ts +16 -0
  10. package/templates/code-connect/avatar-group.figma.ts +30 -0
  11. package/templates/code-connect/avatar.figma.ts +34 -0
  12. package/templates/code-connect/badge.figma.ts +383 -0
  13. package/templates/code-connect/breadcrumb-item.figma.ts +23 -0
  14. package/templates/code-connect/breadcrumb-separator.figma.ts +12 -0
  15. package/templates/code-connect/breadcrumb.figma.ts +32 -0
  16. package/templates/code-connect/button-group.figma.ts +28 -0
  17. package/templates/code-connect/button.figma.ts +408 -0
  18. package/templates/code-connect/card.figma.ts +74 -0
  19. package/templates/code-connect/carousel.figma.ts +27 -0
  20. package/templates/code-connect/checkbox.figma.ts +34 -0
  21. package/templates/code-connect/columns-1.figma.ts +43 -0
  22. package/templates/code-connect/columns-2.figma.ts +49 -0
  23. package/templates/code-connect/columns-3.figma.ts +45 -0
  24. package/templates/code-connect/columns-4.figma.ts +46 -0
  25. package/templates/code-connect/container.figma.ts +42 -0
  26. package/templates/code-connect/dialog.figma.ts +72 -0
  27. package/templates/code-connect/drawer.figma.ts +69 -0
  28. package/templates/code-connect/dropdown-menu-checkbox-item.figma.ts +19 -0
  29. package/templates/code-connect/dropdown-menu-item.figma.ts +25 -0
  30. package/templates/code-connect/dropdown-menu-label.figma.ts +16 -0
  31. package/templates/code-connect/dropdown-menu-radio-item.figma.ts +19 -0
  32. package/templates/code-connect/dropdown-menu-separator.figma.ts +12 -0
  33. package/templates/code-connect/dropdown-menu-sub-trigger.figma.ts +22 -0
  34. package/templates/code-connect/dropdown-menu.figma.ts +44 -0
  35. package/templates/code-connect/field-horizontal.figma.ts +73 -0
  36. package/templates/code-connect/field.figma.ts +68 -0
  37. package/templates/code-connect/hover-card.figma.ts +41 -0
  38. package/templates/code-connect/icon-button.figma.ts +382 -0
  39. package/templates/code-connect/input-group.figma.ts +51 -0
  40. package/templates/code-connect/input-otp.figma.ts +40 -0
  41. package/templates/code-connect/input.figma.ts +42 -0
  42. package/templates/code-connect/item-group.figma.ts +30 -0
  43. package/templates/code-connect/item.figma.ts +50 -0
  44. package/templates/code-connect/kbd.figma.ts +16 -0
  45. package/templates/code-connect/media.figma.ts +35 -0
  46. package/templates/code-connect/meter.figma.ts +31 -0
  47. package/templates/code-connect/native-select.figma.ts +36 -0
  48. package/templates/code-connect/navigation-menu-link.figma.ts +33 -0
  49. package/templates/code-connect/navigation-menu-trigger.figma.ts +28 -0
  50. package/templates/code-connect/navigation-menu.figma.ts +30 -0
  51. package/templates/code-connect/pagination-ellipsis.figma.ts +11 -0
  52. package/templates/code-connect/pagination-link.figma.ts +24 -0
  53. package/templates/code-connect/pagination-next.figma.ts +17 -0
  54. package/templates/code-connect/pagination-previous.figma.ts +17 -0
  55. package/templates/code-connect/pagination.figma.ts +33 -0
  56. package/templates/code-connect/panel.figma.ts +40 -0
  57. package/templates/code-connect/popover.figma.ts +58 -0
  58. package/templates/code-connect/progress.figma.ts +34 -0
  59. package/templates/code-connect/radio.figma.ts +29 -0
  60. package/templates/code-connect/section.figma.ts +42 -0
  61. package/templates/code-connect/select.figma.ts +30 -0
  62. package/templates/code-connect/sheet.figma.ts +70 -0
  63. package/templates/code-connect/sidebar-menu-button.figma.ts +36 -0
  64. package/templates/code-connect/sidebar.figma.ts +44 -0
  65. package/templates/code-connect/spinner.figma.ts +13 -0
  66. package/templates/code-connect/switch.figma.ts +32 -0
  67. package/templates/code-connect/table-cell.figma.ts +21 -0
  68. package/templates/code-connect/table.figma.ts +62 -0
  69. package/templates/code-connect/tabs-trigger.figma.ts +369 -0
  70. package/templates/code-connect/tabs.figma.ts +28 -0
  71. package/templates/code-connect/textarea.figma.ts +32 -0
  72. package/templates/code-connect/toggle-group.figma.ts +24 -0
  73. package/templates/code-connect/toggle.figma.ts +385 -0
  74. package/templates/code-connect/tooltip.figma.ts +29 -0
  75. package/templates/next/app/globals.css +13 -12
  76. package/templates/next/app/page.tsx +38 -26
  77. package/templates/next/public/placeholder.svg +1 -0
  78. package/templates/shopify/.gitattributes +1 -0
  79. package/templates/shopify/.shopifyignore +23 -0
  80. package/templates/shopify/.theme-check.yml +1 -0
  81. package/templates/shopify/CODE_OF_CONDUCT.md +132 -0
  82. package/templates/shopify/CONTRIBUTING.md +24 -0
  83. package/templates/shopify/LICENSE.md +9 -0
  84. package/templates/shopify/README.md +160 -0
  85. package/templates/shopify/assets/carousel.js +2 -0
  86. package/templates/shopify/assets/critical.css +117 -0
  87. package/templates/shopify/assets/icon-account.svg +6 -0
  88. package/templates/shopify/assets/icon-cart.svg +5 -0
  89. package/templates/shopify/assets/predictive-search.js +65 -0
  90. package/templates/shopify/assets/shoppy-x-ray.svg +1 -0
  91. package/templates/shopify/blocks/_accordion-item.liquid +44 -0
  92. package/templates/shopify/blocks/_card-footer.liquid +26 -0
  93. package/templates/shopify/blocks/_carousel-slide.liquid +21 -0
  94. package/templates/shopify/blocks/_column.liquid +30 -0
  95. package/templates/shopify/blocks/_dialog-footer.liquid +28 -0
  96. package/templates/shopify/blocks/_sheet-footer.liquid +28 -0
  97. package/templates/shopify/blocks/_tab.liquid +21 -0
  98. package/templates/shopify/blocks/accordion.liquid +40 -0
  99. package/templates/shopify/blocks/blog-posts.liquid +70 -0
  100. package/templates/shopify/blocks/button.figma.ts +359 -0
  101. package/templates/shopify/blocks/button.liquid +477 -0
  102. package/templates/shopify/blocks/card.liquid +73 -0
  103. package/templates/shopify/blocks/carousel.liquid +47 -0
  104. package/templates/shopify/blocks/columns.liquid +73 -0
  105. package/templates/shopify/blocks/contact-form.liquid +69 -0
  106. package/templates/shopify/blocks/container.liquid +29 -0
  107. package/templates/shopify/blocks/dialog.liquid +77 -0
  108. package/templates/shopify/blocks/group.liquid +105 -0
  109. package/templates/shopify/blocks/heading.liquid +57 -0
  110. package/templates/shopify/blocks/icon-button.figma.ts +358 -0
  111. package/templates/shopify/blocks/media.liquid +80 -0
  112. package/templates/shopify/blocks/navigation-menu.liquid +23 -0
  113. package/templates/shopify/blocks/panel.liquid +64 -0
  114. package/templates/shopify/blocks/popover.liquid +88 -0
  115. package/templates/shopify/blocks/section-heading.liquid +68 -0
  116. package/templates/shopify/blocks/sheet.liquid +90 -0
  117. package/templates/shopify/blocks/tabs.liquid +58 -0
  118. package/templates/shopify/blocks/text.liquid +59 -0
  119. package/templates/shopify/build-js.mjs +22 -0
  120. package/templates/shopify/config/settings_data.json +182 -0
  121. package/templates/shopify/config/settings_schema.json +365 -0
  122. package/templates/shopify/layout/password.liquid +19 -0
  123. package/templates/shopify/layout/theme.liquid +57 -0
  124. package/templates/shopify/locales/en.default.json +58 -0
  125. package/templates/shopify/locales/en.default.schema.json +303 -0
  126. package/templates/shopify/package-lock.json +521 -0
  127. package/templates/shopify/package.json +17 -0
  128. package/templates/shopify/sections/404.liquid +23 -0
  129. package/templates/shopify/sections/article.liquid +81 -0
  130. package/templates/shopify/sections/baseline-header.liquid +236 -0
  131. package/templates/shopify/sections/baseline-kitchen-sink.liquid +988 -0
  132. package/templates/shopify/sections/baseline-section.liquid +661 -0
  133. package/templates/shopify/sections/blog.liquid +36 -0
  134. package/templates/shopify/sections/cart.liquid +65 -0
  135. package/templates/shopify/sections/collection.liquid +54 -0
  136. package/templates/shopify/sections/collections.liquid +83 -0
  137. package/templates/shopify/sections/custom-section.liquid +60 -0
  138. package/templates/shopify/sections/footer-group.json +25 -0
  139. package/templates/shopify/sections/footer.liquid +57 -0
  140. package/templates/shopify/sections/header-group.json +22 -0
  141. package/templates/shopify/sections/page.liquid +18 -0
  142. package/templates/shopify/sections/password.liquid +36 -0
  143. package/templates/shopify/sections/product.liquid +60 -0
  144. package/templates/shopify/sections/search.liquid +73 -0
  145. package/templates/shopify/snippets/accordion-item.figma.ts +34 -0
  146. package/templates/shopify/snippets/accordion-item.liquid +36 -0
  147. package/templates/shopify/snippets/accordion.figma.ts +37 -0
  148. package/templates/shopify/snippets/accordion.liquid +169 -0
  149. package/templates/shopify/snippets/alert.figma.ts +31 -0
  150. package/templates/shopify/snippets/alert.liquid +104 -0
  151. package/templates/shopify/snippets/avatar-group.figma.ts +17 -0
  152. package/templates/shopify/snippets/avatar-group.liquid +66 -0
  153. package/templates/shopify/snippets/avatar.figma.ts +24 -0
  154. package/templates/shopify/snippets/avatar.liquid +143 -0
  155. package/templates/shopify/snippets/badge.figma.ts +355 -0
  156. package/templates/shopify/snippets/badge.liquid +111 -0
  157. package/templates/shopify/snippets/baseline-schemes.liquid +44 -0
  158. package/templates/shopify/snippets/baseline-tokens.liquid +712 -0
  159. package/templates/shopify/snippets/breadcrumb.figma.ts +12 -0
  160. package/templates/shopify/snippets/breadcrumb.liquid +124 -0
  161. package/templates/shopify/snippets/button-group.liquid +148 -0
  162. package/templates/shopify/snippets/button.liquid +144 -0
  163. package/templates/shopify/snippets/card.figma.ts +43 -0
  164. package/templates/shopify/snippets/card.liquid +196 -0
  165. package/templates/shopify/snippets/carousel-item.liquid +18 -0
  166. package/templates/shopify/snippets/carousel.figma.ts +28 -0
  167. package/templates/shopify/snippets/carousel.liquid +121 -0
  168. package/templates/shopify/snippets/checkbox.liquid +147 -0
  169. package/templates/shopify/snippets/container.liquid +52 -0
  170. package/templates/shopify/snippets/css-variables.liquid +18 -0
  171. package/templates/shopify/snippets/dialog.figma.ts +36 -0
  172. package/templates/shopify/snippets/dialog.liquid +217 -0
  173. package/templates/shopify/snippets/field-separator.liquid +68 -0
  174. package/templates/shopify/snippets/field.liquid +187 -0
  175. package/templates/shopify/snippets/icon.liquid +101 -0
  176. package/templates/shopify/snippets/image.liquid +64 -0
  177. package/templates/shopify/snippets/input-group.liquid +196 -0
  178. package/templates/shopify/snippets/input.liquid +126 -0
  179. package/templates/shopify/snippets/item-group.liquid +31 -0
  180. package/templates/shopify/snippets/item.figma.ts +40 -0
  181. package/templates/shopify/snippets/item.liquid +162 -0
  182. package/templates/shopify/snippets/media.figma.ts +33 -0
  183. package/templates/shopify/snippets/media.liquid +273 -0
  184. package/templates/shopify/snippets/meta-tags.liquid +105 -0
  185. package/templates/shopify/snippets/meter.figma.ts +24 -0
  186. package/templates/shopify/snippets/meter.liquid +118 -0
  187. package/templates/shopify/snippets/native-select.liquid +141 -0
  188. package/templates/shopify/snippets/navigation-menu-item.figma.ts +23 -0
  189. package/templates/shopify/snippets/navigation-menu-item.liquid +40 -0
  190. package/templates/shopify/snippets/navigation-menu-link.figma.ts +27 -0
  191. package/templates/shopify/snippets/navigation-menu-link.liquid +31 -0
  192. package/templates/shopify/snippets/navigation-menu.figma.ts +12 -0
  193. package/templates/shopify/snippets/navigation-menu.liquid +300 -0
  194. package/templates/shopify/snippets/pagination.figma.ts +13 -0
  195. package/templates/shopify/snippets/pagination.liquid +208 -0
  196. package/templates/shopify/snippets/popover.figma.ts +41 -0
  197. package/templates/shopify/snippets/popover.liquid +203 -0
  198. package/templates/shopify/snippets/progress.figma.ts +26 -0
  199. package/templates/shopify/snippets/progress.liquid +114 -0
  200. package/templates/shopify/snippets/radio.liquid +145 -0
  201. package/templates/shopify/snippets/sheet.figma.ts +37 -0
  202. package/templates/shopify/snippets/sheet.liquid +197 -0
  203. package/templates/shopify/snippets/sidebar-menu-item.liquid +34 -0
  204. package/templates/shopify/snippets/sidebar-menu-sub-link.liquid +17 -0
  205. package/templates/shopify/snippets/sidebar-menu.liquid +139 -0
  206. package/templates/shopify/snippets/spinner.liquid +42 -0
  207. package/templates/shopify/snippets/switch.liquid +180 -0
  208. package/templates/shopify/snippets/tab.figma.ts +353 -0
  209. package/templates/shopify/snippets/tab.liquid +33 -0
  210. package/templates/shopify/snippets/tabs.figma.ts +21 -0
  211. package/templates/shopify/snippets/tabs.liquid +260 -0
  212. package/templates/shopify/snippets/text-styles.liquid +45 -0
  213. package/templates/shopify/snippets/textarea.liquid +103 -0
  214. package/templates/shopify/snippets/toggle-group.figma.ts +30 -0
  215. package/templates/shopify/snippets/toggle-group.liquid +46 -0
  216. package/templates/shopify/snippets/toggle.figma.ts +357 -0
  217. package/templates/shopify/snippets/toggle.liquid +104 -0
  218. package/templates/shopify/snippets/typeset.liquid +498 -0
  219. package/templates/shopify/src/carousel.js +94 -0
  220. package/templates/shopify/templates/404.json +20 -0
  221. package/templates/shopify/templates/article.json +20 -0
  222. package/templates/shopify/templates/blog.json +20 -0
  223. package/templates/shopify/templates/cart.json +20 -0
  224. package/templates/shopify/templates/collection.json +20 -0
  225. package/templates/shopify/templates/gift_card.liquid +73 -0
  226. package/templates/shopify/templates/index.json +18 -0
  227. package/templates/shopify/templates/list-collections.json +20 -0
  228. package/templates/shopify/templates/page.json +20 -0
  229. package/templates/shopify/templates/password.json +21 -0
  230. package/templates/shopify/templates/product.json +20 -0
  231. package/templates/shopify/templates/search.json +20 -0
  232. package/templates/skills/baseline-client-tokens/SKILL.md +74 -0
  233. package/templates/wordpress/.ddev/commands/web/seed +258 -3
  234. package/templates/wordpress/.ddev/config.yaml +10 -7
  235. package/templates/wordpress/.ddev/seed/gravityforms-contact.json +1 -0
  236. package/templates/wordpress/README.md +37 -39
  237. package/templates/wordpress/auth.json.example +1 -1
  238. package/templates/wordpress/composer.json +88 -84
  239. package/templates/wordpress/theme/README.md +3 -0
  240. package/templates/wordpress/theme/acf-json/.gitkeep +0 -0
  241. package/templates/wordpress/theme/acf-json/group_baseline_alert.json +83 -0
  242. package/templates/wordpress/theme/acf-json/group_baseline_avatar.json +82 -0
  243. package/templates/wordpress/theme/acf-json/group_baseline_avatar_group.json +35 -0
  244. package/templates/wordpress/theme/acf-json/group_baseline_badge.json +93 -0
  245. package/templates/wordpress/theme/acf-json/group_baseline_carousel.json +21 -0
  246. package/templates/wordpress/theme/acf-json/group_baseline_carousel_slide.json +16 -0
  247. package/templates/wordpress/theme/acf-json/group_baseline_dialog.json +68 -0
  248. package/templates/wordpress/theme/acf-json/group_baseline_dialog_footer.json +23 -0
  249. package/templates/wordpress/theme/acf-json/group_baseline_item.json +101 -0
  250. package/templates/wordpress/theme/acf-json/group_baseline_item_group.json +26 -0
  251. package/templates/wordpress/theme/acf-json/group_baseline_sheet.json +104 -0
  252. package/templates/wordpress/theme/acf-json/group_baseline_sheet_footer.json +31 -0
  253. package/templates/wordpress/theme/assets/app.css +2 -0
  254. package/templates/wordpress/theme/assets/editor.css +2 -0
  255. package/templates/wordpress/theme/assets/images/placeholder.svg +1 -0
  256. package/templates/wordpress/theme/assets/js/carousel-editor.js +85 -0
  257. package/templates/wordpress/theme/assets/js/carousel.js +2 -0
  258. package/templates/wordpress/theme/assets/js/core-button-editor.js +243 -0
  259. package/templates/wordpress/theme/assets/js/core-layout-editor.js +144 -0
  260. package/templates/wordpress/theme/assets/js/core-navigation.js +11 -0
  261. package/templates/wordpress/theme/assets/js/media-editor.js +52 -0
  262. package/templates/wordpress/theme/assets/js/media.js +38 -0
  263. package/templates/wordpress/theme/assets/tokens.css +1030 -0
  264. package/templates/wordpress/theme/blocks/alert/alert.figma.ts +32 -0
  265. package/templates/wordpress/theme/blocks/alert/block.json +24 -0
  266. package/templates/wordpress/theme/blocks/alert/render.php +30 -0
  267. package/templates/wordpress/theme/blocks/avatar/block.json +24 -0
  268. package/templates/wordpress/theme/blocks/avatar/render.php +35 -0
  269. package/templates/wordpress/theme/blocks/avatar-group/avatar-group.figma.ts +16 -0
  270. package/templates/wordpress/theme/blocks/avatar-group/block.json +25 -0
  271. package/templates/wordpress/theme/blocks/avatar-group/render.php +27 -0
  272. package/templates/wordpress/theme/blocks/badge/badge.figma.ts +349 -0
  273. package/templates/wordpress/theme/blocks/badge/block.json +23 -0
  274. package/templates/wordpress/theme/blocks/badge/render.php +28 -0
  275. package/templates/wordpress/theme/blocks/carousel/block.json +25 -0
  276. package/templates/wordpress/theme/blocks/carousel/carousel.figma.ts +22 -0
  277. package/templates/wordpress/theme/blocks/carousel/render.php +54 -0
  278. package/templates/wordpress/theme/blocks/carousel-slide/block.json +24 -0
  279. package/templates/wordpress/theme/blocks/carousel-slide/render.php +13 -0
  280. package/templates/wordpress/theme/blocks/dialog/block.json +24 -0
  281. package/templates/wordpress/theme/blocks/dialog/dialog.figma.ts +36 -0
  282. package/templates/wordpress/theme/blocks/dialog/render.php +41 -0
  283. package/templates/wordpress/theme/blocks/dialog-footer/block.json +25 -0
  284. package/templates/wordpress/theme/blocks/dialog-footer/render.php +18 -0
  285. package/templates/wordpress/theme/blocks/item/block.json +25 -0
  286. package/templates/wordpress/theme/blocks/item/item.figma.ts +43 -0
  287. package/templates/wordpress/theme/blocks/item/render.php +38 -0
  288. package/templates/wordpress/theme/blocks/item-group/block.json +25 -0
  289. package/templates/wordpress/theme/blocks/item-group/item-group.figma.ts +28 -0
  290. package/templates/wordpress/theme/blocks/item-group/render.php +22 -0
  291. package/templates/wordpress/theme/blocks/sheet/block.json +24 -0
  292. package/templates/wordpress/theme/blocks/sheet/render.php +39 -0
  293. package/templates/wordpress/theme/blocks/sheet/sheet.figma.ts +38 -0
  294. package/templates/wordpress/theme/blocks/sheet-footer/block.json +25 -0
  295. package/templates/wordpress/theme/blocks/sheet-footer/render.php +18 -0
  296. package/templates/wordpress/theme/build-js.mjs +22 -0
  297. package/templates/wordpress/theme/code-connect/accordion-item.figma.ts +47 -0
  298. package/templates/wordpress/theme/code-connect/accordion.figma.ts +37 -0
  299. package/templates/wordpress/theme/code-connect/avatar.figma.ts +25 -0
  300. package/templates/wordpress/theme/code-connect/breadcrumb.figma.ts +12 -0
  301. package/templates/wordpress/theme/code-connect/button.figma.ts +360 -0
  302. package/templates/wordpress/theme/code-connect/card.figma.ts +45 -0
  303. package/templates/wordpress/theme/code-connect/icon-button.figma.ts +359 -0
  304. package/templates/wordpress/theme/code-connect/navigation-menu.figma.ts +20 -0
  305. package/templates/wordpress/theme/code-connect/pagination.figma.ts +17 -0
  306. package/templates/wordpress/theme/code-connect/popover.figma.ts +42 -0
  307. package/templates/wordpress/theme/code-connect/tabs.figma.ts +32 -0
  308. package/templates/wordpress/theme/code-connect/toggle-group.figma.ts +34 -0
  309. package/templates/wordpress/theme/code-connect/toggle.figma.ts +356 -0
  310. package/templates/wordpress/theme/composer.json +7 -0
  311. package/templates/wordpress/theme/footer.php +4 -0
  312. package/templates/wordpress/theme/functions.php +86 -0
  313. package/templates/wordpress/theme/header.php +17 -0
  314. package/templates/wordpress/theme/inc/acf.php +13 -0
  315. package/templates/wordpress/theme/inc/blocks.php +41 -0
  316. package/templates/wordpress/theme/inc/carousel.php +36 -0
  317. package/templates/wordpress/theme/inc/components/alert.php +83 -0
  318. package/templates/wordpress/theme/inc/components/avatar.php +111 -0
  319. package/templates/wordpress/theme/inc/components/badge.php +96 -0
  320. package/templates/wordpress/theme/inc/components/button.php +77 -0
  321. package/templates/wordpress/theme/inc/components/dialog.php +98 -0
  322. package/templates/wordpress/theme/inc/components/item.php +111 -0
  323. package/templates/wordpress/theme/inc/components/popover.php +125 -0
  324. package/templates/wordpress/theme/inc/components/sheet.php +88 -0
  325. package/templates/wordpress/theme/inc/components/toggle.php +127 -0
  326. package/templates/wordpress/theme/inc/core-button.php +96 -0
  327. package/templates/wordpress/theme/inc/core-card.php +30 -0
  328. package/templates/wordpress/theme/inc/core-layout.php +76 -0
  329. package/templates/wordpress/theme/inc/core-navigation.php +31 -0
  330. package/templates/wordpress/theme/inc/core-pagination.php +87 -0
  331. package/templates/wordpress/theme/inc/header.php +39 -0
  332. package/templates/wordpress/theme/inc/icons.generated.php +94 -0
  333. package/templates/wordpress/theme/inc/icons.php +70 -0
  334. package/templates/wordpress/theme/inc/looks.generated.php +18 -0
  335. package/templates/wordpress/theme/inc/media.php +183 -0
  336. package/templates/wordpress/theme/inc/sections.php +16 -0
  337. package/templates/wordpress/theme/index.php +24 -0
  338. package/templates/wordpress/theme/package-lock.json +1637 -0
  339. package/templates/wordpress/theme/package.json +23 -0
  340. package/templates/wordpress/theme/parts/header.html +23 -0
  341. package/templates/wordpress/theme/patterns/blog-card-grid.php +41 -0
  342. package/templates/wordpress/theme/patterns/card.php +46 -0
  343. package/templates/wordpress/theme/patterns/contact-centered.php +22 -0
  344. package/templates/wordpress/theme/patterns/cta-left.php +25 -0
  345. package/templates/wordpress/theme/patterns/faq-centered.php +36 -0
  346. package/templates/wordpress/theme/patterns/header-inline.php +33 -0
  347. package/templates/wordpress/theme/patterns/header-stacked.php +25 -0
  348. package/templates/wordpress/theme/patterns/hero-centered.php +28 -0
  349. package/templates/wordpress/theme/patterns/hero-split.php +41 -0
  350. package/templates/wordpress/theme/patterns/section.php +28 -0
  351. package/templates/wordpress/theme/src/app.css +45 -0
  352. package/templates/wordpress/theme/src/carousel.css +93 -0
  353. package/templates/wordpress/theme/src/carousel.js +94 -0
  354. package/templates/wordpress/theme/src/checkbox.css +102 -0
  355. package/templates/wordpress/theme/src/core-accordion.css +158 -0
  356. package/templates/wordpress/theme/src/core-avatar.css +68 -0
  357. package/templates/wordpress/theme/src/core-breadcrumbs.css +124 -0
  358. package/templates/wordpress/theme/src/core-button-editor.css +45 -0
  359. package/templates/wordpress/theme/src/core-button.css +155 -0
  360. package/templates/wordpress/theme/src/core-card.css +157 -0
  361. package/templates/wordpress/theme/src/core-layout.css +73 -0
  362. package/templates/wordpress/theme/src/core-navigation.css +290 -0
  363. package/templates/wordpress/theme/src/core-pagination.css +112 -0
  364. package/templates/wordpress/theme/src/core-table.css +88 -0
  365. package/templates/wordpress/theme/src/core-tabs.css +86 -0
  366. package/templates/wordpress/theme/src/dialog.css +29 -0
  367. package/templates/wordpress/theme/src/editor.css +65 -0
  368. package/templates/wordpress/theme/src/field.css +95 -0
  369. package/templates/wordpress/theme/src/fonts.css +3 -0
  370. package/templates/wordpress/theme/src/gravityforms.css +919 -0
  371. package/templates/wordpress/theme/src/header.css +80 -0
  372. package/templates/wordpress/theme/src/icons.generated.css +16 -0
  373. package/templates/wordpress/theme/src/input-group.css +105 -0
  374. package/templates/wordpress/theme/src/input.css +116 -0
  375. package/templates/wordpress/theme/src/item.css +7 -0
  376. package/templates/wordpress/theme/src/looks.generated.css +358 -0
  377. package/templates/wordpress/theme/src/media.css +160 -0
  378. package/templates/wordpress/theme/src/radio.css +88 -0
  379. package/templates/wordpress/theme/src/sections.css +80 -0
  380. package/templates/wordpress/theme/src/sheet.css +24 -0
  381. package/templates/wordpress/theme/src/switch.css +120 -0
  382. package/templates/wordpress/theme/src/text-styles.css +44 -0
  383. package/templates/wordpress/theme/src/textarea.css +61 -0
  384. package/templates/wordpress/theme/src/toggle-group.css +28 -0
  385. package/templates/wordpress/theme/src/typeset.css +510 -0
  386. package/templates/wordpress/theme/style.css +13 -0
  387. package/templates/wordpress/theme/theme.json +362 -0
  388. package/templates/wordpress/web/wp-config.php +38 -0
  389. package/templates/wordpress/wp-cli.yml +1 -0
  390. package/templates/next/.claude/skills/ai-elements/SKILL.md +0 -160
  391. package/templates/next/.claude/skills/ai-elements/references/agent.md +0 -134
  392. package/templates/next/.claude/skills/ai-elements/references/artifact.md +0 -84
  393. package/templates/next/.claude/skills/ai-elements/references/attachments.md +0 -190
  394. package/templates/next/.claude/skills/ai-elements/references/audio-player.md +0 -134
  395. package/templates/next/.claude/skills/ai-elements/references/canvas.md +0 -34
  396. package/templates/next/.claude/skills/ai-elements/references/chain-of-thought.md +0 -81
  397. package/templates/next/.claude/skills/ai-elements/references/checkpoint.md +0 -183
  398. package/templates/next/.claude/skills/ai-elements/references/code-block.md +0 -170
  399. package/templates/next/.claude/skills/ai-elements/references/commit.md +0 -177
  400. package/templates/next/.claude/skills/ai-elements/references/confirmation.md +0 -262
  401. package/templates/next/.claude/skills/ai-elements/references/connection.md +0 -34
  402. package/templates/next/.claude/skills/ai-elements/references/context.md +0 -126
  403. package/templates/next/.claude/skills/ai-elements/references/controls.md +0 -32
  404. package/templates/next/.claude/skills/ai-elements/references/conversation.md +0 -224
  405. package/templates/next/.claude/skills/ai-elements/references/edge.md +0 -52
  406. package/templates/next/.claude/skills/ai-elements/references/environment-variables.md +0 -102
  407. package/templates/next/.claude/skills/ai-elements/references/file-tree.md +0 -72
  408. package/templates/next/.claude/skills/ai-elements/references/image.md +0 -146
  409. package/templates/next/.claude/skills/ai-elements/references/inline-citation.md +0 -299
  410. package/templates/next/.claude/skills/ai-elements/references/jsx-preview.md +0 -104
  411. package/templates/next/.claude/skills/ai-elements/references/message.md +0 -237
  412. package/templates/next/.claude/skills/ai-elements/references/mic-selector.md +0 -189
  413. package/templates/next/.claude/skills/ai-elements/references/model-selector.md +0 -112
  414. package/templates/next/.claude/skills/ai-elements/references/node.md +0 -73
  415. package/templates/next/.claude/skills/ai-elements/references/open-in-chat.md +0 -67
  416. package/templates/next/.claude/skills/ai-elements/references/package-info.md +0 -95
  417. package/templates/next/.claude/skills/ai-elements/references/panel.md +0 -33
  418. package/templates/next/.claude/skills/ai-elements/references/persona.md +0 -166
  419. package/templates/next/.claude/skills/ai-elements/references/plan.md +0 -79
  420. package/templates/next/.claude/skills/ai-elements/references/prompt-input.md +0 -579
  421. package/templates/next/.claude/skills/ai-elements/references/queue.md +0 -172
  422. package/templates/next/.claude/skills/ai-elements/references/reasoning.md +0 -238
  423. package/templates/next/.claude/skills/ai-elements/references/sandbox.md +0 -129
  424. package/templates/next/.claude/skills/ai-elements/references/schema-display.md +0 -102
  425. package/templates/next/.claude/skills/ai-elements/references/shimmer.md +0 -48
  426. package/templates/next/.claude/skills/ai-elements/references/snippet.md +0 -64
  427. package/templates/next/.claude/skills/ai-elements/references/sources.md +0 -209
  428. package/templates/next/.claude/skills/ai-elements/references/speech-input.md +0 -163
  429. package/templates/next/.claude/skills/ai-elements/references/stack-trace.md +0 -224
  430. package/templates/next/.claude/skills/ai-elements/references/suggestion.md +0 -124
  431. package/templates/next/.claude/skills/ai-elements/references/task.md +0 -222
  432. package/templates/next/.claude/skills/ai-elements/references/terminal.md +0 -103
  433. package/templates/next/.claude/skills/ai-elements/references/test-results.md +0 -157
  434. package/templates/next/.claude/skills/ai-elements/references/tool.md +0 -285
  435. package/templates/next/.claude/skills/ai-elements/references/toolbar.md +0 -32
  436. package/templates/next/.claude/skills/ai-elements/references/transcription.md +0 -120
  437. package/templates/next/.claude/skills/ai-elements/references/voice-selector.md +0 -241
  438. package/templates/next/.claude/skills/ai-elements/references/web-preview.md +0 -200
  439. package/templates/next/.claude/skills/ai-elements/scripts/agent.tsx +0 -61
  440. package/templates/next/.claude/skills/ai-elements/scripts/artifact.tsx +0 -127
  441. package/templates/next/.claude/skills/ai-elements/scripts/attachments-inline.tsx +0 -128
  442. package/templates/next/.claude/skills/ai-elements/scripts/attachments-list.tsx +0 -95
  443. package/templates/next/.claude/skills/ai-elements/scripts/attachments.tsx +0 -85
  444. package/templates/next/.claude/skills/ai-elements/scripts/audio-player-remote.tsx +0 -35
  445. package/templates/next/.claude/skills/ai-elements/scripts/audio-player.tsx +0 -68
  446. package/templates/next/.claude/skills/ai-elements/scripts/chain-of-thought.tsx +0 -82
  447. package/templates/next/.claude/skills/ai-elements/scripts/checkpoint.tsx +0 -110
  448. package/templates/next/.claude/skills/ai-elements/scripts/code-block-dark.tsx +0 -46
  449. package/templates/next/.claude/skills/ai-elements/scripts/code-block.tsx +0 -120
  450. package/templates/next/.claude/skills/ai-elements/scripts/commit.tsx +0 -94
  451. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-accepted.tsx +0 -40
  452. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-rejected.tsx +0 -40
  453. package/templates/next/.claude/skills/ai-elements/scripts/confirmation-request.tsx +0 -54
  454. package/templates/next/.claude/skills/ai-elements/scripts/confirmation.tsx +0 -55
  455. package/templates/next/.claude/skills/ai-elements/scripts/context.tsx +0 -45
  456. package/templates/next/.claude/skills/ai-elements/scripts/conversation.tsx +0 -177
  457. package/templates/next/.claude/skills/ai-elements/scripts/environment-variables.tsx +0 -62
  458. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-basic.tsx +0 -18
  459. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-expanded.tsx +0 -21
  460. package/templates/next/.claude/skills/ai-elements/scripts/file-tree-selection.tsx +0 -24
  461. package/templates/next/.claude/skills/ai-elements/scripts/file-tree.tsx +0 -42
  462. package/templates/next/.claude/skills/ai-elements/scripts/image.tsx +0 -20
  463. package/templates/next/.claude/skills/ai-elements/scripts/inline-citation.tsx +0 -97
  464. package/templates/next/.claude/skills/ai-elements/scripts/jsx-preview.tsx +0 -104
  465. package/templates/next/.claude/skills/ai-elements/scripts/message.tsx +0 -365
  466. package/templates/next/.claude/skills/ai-elements/scripts/mic-selector.tsx +0 -49
  467. package/templates/next/.claude/skills/ai-elements/scripts/model-selector.tsx +0 -365
  468. package/templates/next/.claude/skills/ai-elements/scripts/open-in-chat.tsx +0 -33
  469. package/templates/next/.claude/skills/ai-elements/scripts/package-info.tsx +0 -51
  470. package/templates/next/.claude/skills/ai-elements/scripts/persona-command.tsx +0 -110
  471. package/templates/next/.claude/skills/ai-elements/scripts/persona-glint.tsx +0 -110
  472. package/templates/next/.claude/skills/ai-elements/scripts/persona-halo.tsx +0 -110
  473. package/templates/next/.claude/skills/ai-elements/scripts/persona-mana.tsx +0 -110
  474. package/templates/next/.claude/skills/ai-elements/scripts/persona-obsidian.tsx +0 -110
  475. package/templates/next/.claude/skills/ai-elements/scripts/persona-opal.tsx +0 -110
  476. package/templates/next/.claude/skills/ai-elements/scripts/plan.tsx +0 -65
  477. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-cursor.tsx +0 -502
  478. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input-tooltip.tsx +0 -44
  479. package/templates/next/.claude/skills/ai-elements/scripts/prompt-input.tsx +0 -267
  480. package/templates/next/.claude/skills/ai-elements/scripts/queue-prompt-input.tsx +0 -394
  481. package/templates/next/.claude/skills/ai-elements/scripts/queue.tsx +0 -295
  482. package/templates/next/.claude/skills/ai-elements/scripts/reasoning.tsx +0 -71
  483. package/templates/next/.claude/skills/ai-elements/scripts/sandbox.tsx +0 -178
  484. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-basic.tsx +0 -9
  485. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-body.tsx +0 -20
  486. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-nested.tsx +0 -23
  487. package/templates/next/.claude/skills/ai-elements/scripts/schema-display-params.tsx +0 -16
  488. package/templates/next/.claude/skills/ai-elements/scripts/schema-display.tsx +0 -110
  489. package/templates/next/.claude/skills/ai-elements/scripts/shimmer-duration.tsx +0 -31
  490. package/templates/next/.claude/skills/ai-elements/scripts/shimmer-elements.tsx +0 -43
  491. package/templates/next/.claude/skills/ai-elements/scripts/shimmer.tsx +0 -17
  492. package/templates/next/.claude/skills/ai-elements/scripts/snippet-plain.tsx +0 -19
  493. package/templates/next/.claude/skills/ai-elements/scripts/snippet.tsx +0 -25
  494. package/templates/next/.claude/skills/ai-elements/scripts/sources-custom.tsx +0 -39
  495. package/templates/next/.claude/skills/ai-elements/scripts/sources.tsx +0 -32
  496. package/templates/next/.claude/skills/ai-elements/scripts/speech-input.tsx +0 -84
  497. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-collapsed.tsx +0 -39
  498. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace-no-internal.tsx +0 -41
  499. package/templates/next/.claude/skills/ai-elements/scripts/stack-trace.tsx +0 -58
  500. package/templates/next/.claude/skills/ai-elements/scripts/suggestion-input.tsx +0 -144
  501. package/templates/next/.claude/skills/ai-elements/scripts/suggestion.tsx +0 -32
  502. package/templates/next/.claude/skills/ai-elements/scripts/task.tsx +0 -59
  503. package/templates/next/.claude/skills/ai-elements/scripts/terminal-basic.tsx +0 -7
  504. package/templates/next/.claude/skills/ai-elements/scripts/terminal-clear.tsx +0 -19
  505. package/templates/next/.claude/skills/ai-elements/scripts/terminal-streaming.tsx +0 -38
  506. package/templates/next/.claude/skills/ai-elements/scripts/terminal.tsx +0 -82
  507. package/templates/next/.claude/skills/ai-elements/scripts/test-results-basic.tsx +0 -27
  508. package/templates/next/.claude/skills/ai-elements/scripts/test-results-errors.tsx +0 -51
  509. package/templates/next/.claude/skills/ai-elements/scripts/test-results-suites.tsx +0 -40
  510. package/templates/next/.claude/skills/ai-elements/scripts/test-results.tsx +0 -102
  511. package/templates/next/.claude/skills/ai-elements/scripts/tool-input-available.tsx +0 -31
  512. package/templates/next/.claude/skills/ai-elements/scripts/tool-input-streaming.tsx +0 -30
  513. package/templates/next/.claude/skills/ai-elements/scripts/tool-output-available.tsx +0 -80
  514. package/templates/next/.claude/skills/ai-elements/scripts/tool-output-error.tsx +0 -44
  515. package/templates/next/.claude/skills/ai-elements/scripts/tool.tsx +0 -222
  516. package/templates/next/.claude/skills/ai-elements/scripts/transcription.tsx +0 -290
  517. package/templates/next/.claude/skills/ai-elements/scripts/voice-selector.tsx +0 -245
  518. package/templates/next/.claude/skills/ai-elements/scripts/web-preview.tsx +0 -115
  519. package/templates/next/.claude/skills/ai-sdk/SKILL.md +0 -78
  520. package/templates/next/.claude/skills/frontend-design/LICENSE.txt +0 -177
  521. package/templates/next/.claude/skills/frontend-design/SKILL.md +0 -55
  522. package/templates/next/.claude/skills/gc-implement-figma-page/SKILL.md +0 -93
  523. package/templates/next/.claude/skills/migrate-ai-sdk-v6-to-v7/SKILL.md +0 -108
  524. package/templates/next/.claude/skills/vercel-composition-patterns/AGENTS.md +0 -946
  525. package/templates/next/.claude/skills/vercel-composition-patterns/README.md +0 -60
  526. package/templates/next/.claude/skills/vercel-composition-patterns/SKILL.md +0 -89
  527. package/templates/next/.claude/skills/vercel-composition-patterns/metadata.json +0 -11
  528. package/templates/next/.claude/skills/vercel-composition-patterns/rules/_sections.md +0 -29
  529. package/templates/next/.claude/skills/vercel-composition-patterns/rules/_template.md +0 -24
  530. package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +0 -100
  531. package/templates/next/.claude/skills/vercel-composition-patterns/rules/architecture-compound-components.md +0 -112
  532. package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +0 -87
  533. package/templates/next/.claude/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +0 -100
  534. package/templates/next/.claude/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +0 -42
  535. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-context-interface.md +0 -191
  536. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +0 -113
  537. package/templates/next/.claude/skills/vercel-composition-patterns/rules/state-lift-state.md +0 -125
  538. package/templates/next/.claude/skills/vercel-react-best-practices/AGENTS.md +0 -3810
  539. package/templates/next/.claude/skills/vercel-react-best-practices/README.md +0 -123
  540. package/templates/next/.claude/skills/vercel-react-best-practices/SKILL.md +0 -149
  541. package/templates/next/.claude/skills/vercel-react-best-practices/metadata.json +0 -15
  542. package/templates/next/.claude/skills/vercel-react-best-practices/rules/_sections.md +0 -46
  543. package/templates/next/.claude/skills/vercel-react-best-practices/rules/_template.md +0 -28
  544. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +0 -56
  545. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  546. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-init-once.md +0 -42
  547. package/templates/next/.claude/skills/vercel-react-best-practices/rules/advanced-use-latest.md +0 -39
  548. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-api-routes.md +0 -38
  549. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +0 -37
  550. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-defer-await.md +0 -82
  551. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-dependencies.md +0 -51
  552. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-parallel.md +0 -28
  553. package/templates/next/.claude/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +0 -99
  554. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +0 -63
  555. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +0 -60
  556. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-conditional.md +0 -31
  557. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +0 -49
  558. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  559. package/templates/next/.claude/skills/vercel-react-best-practices/rules/bundle-preload.md +0 -50
  560. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-event-listeners.md +0 -74
  561. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +0 -71
  562. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +0 -48
  563. package/templates/next/.claude/skills/vercel-react-best-practices/rules/client-swr-dedup.md +0 -56
  564. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +0 -107
  565. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-function-results.md +0 -80
  566. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-property-access.md +0 -28
  567. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-cache-storage.md +0 -70
  568. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-combine-iterations.md +0 -32
  569. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-early-exit.md +0 -50
  570. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-flatmap-filter.md +0 -60
  571. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +0 -45
  572. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-index-maps.md +0 -37
  573. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-length-check-first.md +0 -49
  574. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-min-max-loop.md +0 -82
  575. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-request-idle-callback.md +0 -105
  576. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +0 -24
  577. package/templates/next/.claude/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +0 -57
  578. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-activity.md +0 -26
  579. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  580. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +0 -40
  581. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +0 -38
  582. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  583. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  584. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  585. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-resource-hints.md +0 -85
  586. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +0 -68
  587. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +0 -28
  588. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  589. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +0 -39
  590. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-dependencies.md +0 -45
  591. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  592. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-derived-state.md +0 -29
  593. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +0 -74
  594. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  595. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  596. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-memo.md +0 -44
  597. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  598. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +0 -82
  599. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  600. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +0 -64
  601. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-transitions.md +0 -40
  602. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +0 -59
  603. package/templates/next/.claude/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  604. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +0 -73
  605. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-auth-actions.md +0 -96
  606. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-lru.md +0 -41
  607. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-cache-react.md +0 -76
  608. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-dedup-props.md +0 -65
  609. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-hoist-static-io.md +0 -149
  610. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +0 -50
  611. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +0 -83
  612. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +0 -34
  613. package/templates/next/.claude/skills/vercel-react-best-practices/rules/server-serialization.md +0 -38
  614. package/templates/next/.claude/skills/web-design-guidelines/SKILL.md +0 -39
  615. package/templates/next/CLAUDE.md +0 -42
  616. package/templates/next/README.md +0 -30
  617. package/templates/next/_gitignore +0 -4
  618. package/templates/next/app/layout.tsx +0 -44
  619. package/templates/next/globals.d.ts +0 -8
  620. package/templates/next/next.config.mjs +0 -6
  621. package/templates/next/package.json +0 -38
  622. package/templates/next/postcss.config.mjs +0 -5
  623. package/templates/next/skills-lock.json +0 -47
  624. package/templates/next/tsconfig.json +0 -36
  625. package/templates/shopify-theme/.claude/skills/gc-shopify-block/SKILL.md +0 -44
  626. package/templates/shopify-theme/.claude/skills/shopify-dev/SKILL.md +0 -51
  627. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/log_skill_use.mjs +0 -205
  628. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/search_docs.mjs +0 -272
  629. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.ps1 +0 -361
  630. package/templates/shopify-theme/.claude/skills/shopify-dev/scripts/track-telemetry.sh +0 -527
  631. package/templates/shopify-theme/.claude/skills/shopify-liquid/SKILL.md +0 -343
  632. package/templates/shopify-theme/.claude/skills/shopify-liquid/blocks/hero-slide.liquid +0 -342
  633. package/templates/shopify-theme/.claude/skills/shopify-liquid/config/settings_schema.json +0 -1
  634. package/templates/shopify-theme/.claude/skills/shopify-liquid/featured-collection.liquid +0 -457
  635. package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.json +0 -10
  636. package/templates/shopify-theme/.claude/skills/shopify-liquid/locales/en.default.schema.json +0 -103
  637. package/templates/shopify-theme/.claude/skills/shopify-liquid/package.json +0 -10
  638. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/search_docs.mjs +0 -759
  639. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.ps1 +0 -361
  640. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/track-telemetry.sh +0 -527
  641. package/templates/shopify-theme/.claude/skills/shopify-liquid/scripts/validate.mjs +0 -654
  642. package/templates/shopify-theme/.claude/skills/shopify-liquid/sections/hero-banner.liquid +0 -329
  643. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/SKILL.md +0 -165
  644. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/log_skill_use.mjs +0 -205
  645. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.ps1 +0 -361
  646. package/templates/shopify-theme/.claude/skills/shopify-use-shopify-cli/scripts/track-telemetry.sh +0 -527
  647. package/templates/shopify-theme/.shopifyignore +0 -9
  648. package/templates/shopify-theme/CLAUDE.md +0 -51
  649. package/templates/shopify-theme/README.md +0 -92
  650. package/templates/shopify-theme/assets/baseline.css +0 -8390
  651. package/templates/shopify-theme/assets/swiper-element-bundle.min.js +0 -14
  652. package/templates/shopify-theme/blocks/_accordion.liquid +0 -59
  653. package/templates/shopify-theme/blocks/_carousel-slide.liquid +0 -24
  654. package/templates/shopify-theme/blocks/_modal-body.liquid +0 -18
  655. package/templates/shopify-theme/blocks/_modal-footer.liquid +0 -36
  656. package/templates/shopify-theme/blocks/_modal-header.liquid +0 -19
  657. package/templates/shopify-theme/blocks/_modal-media.liquid +0 -37
  658. package/templates/shopify-theme/blocks/accordion-group.liquid +0 -53
  659. package/templates/shopify-theme/blocks/alert.liquid +0 -92
  660. package/templates/shopify-theme/blocks/avatar-group.liquid +0 -51
  661. package/templates/shopify-theme/blocks/avatar.liquid +0 -56
  662. package/templates/shopify-theme/blocks/badge.liquid +0 -33
  663. package/templates/shopify-theme/blocks/breadcrumb.liquid +0 -45
  664. package/templates/shopify-theme/blocks/button.liquid +0 -51
  665. package/templates/shopify-theme/blocks/buttons.liquid +0 -41
  666. package/templates/shopify-theme/blocks/card.liquid +0 -67
  667. package/templates/shopify-theme/blocks/carousel.liquid +0 -55
  668. package/templates/shopify-theme/blocks/column.liquid +0 -33
  669. package/templates/shopify-theme/blocks/image.liquid +0 -37
  670. package/templates/shopify-theme/blocks/modal.liquid +0 -52
  671. package/templates/shopify-theme/blocks/popover.liquid +0 -24
  672. package/templates/shopify-theme/blocks/skeleton.liquid +0 -22
  673. package/templates/shopify-theme/blocks/spinner.liquid +0 -22
  674. package/templates/shopify-theme/blocks/split.liquid +0 -39
  675. package/templates/shopify-theme/blocks/tab.liquid +0 -19
  676. package/templates/shopify-theme/blocks/tabs.liquid +0 -78
  677. package/templates/shopify-theme/blocks/tags.liquid +0 -55
  678. package/templates/shopify-theme/blocks/text.liquid +0 -55
  679. package/templates/shopify-theme/blocks/tooltip.liquid +0 -50
  680. package/templates/shopify-theme/blocks/typography.liquid +0 -90
  681. package/templates/shopify-theme/config/settings_data.json +0 -4
  682. package/templates/shopify-theme/config/settings_schema.json +0 -10
  683. package/templates/shopify-theme/layout/theme.liquid +0 -21
  684. package/templates/shopify-theme/locales/en.default.json +0 -5
  685. package/templates/shopify-theme/locales/en.default.schema.json +0 -131
  686. package/templates/shopify-theme/package.json +0 -21
  687. package/templates/shopify-theme/scripts/sync-tokens.mjs +0 -32
  688. package/templates/shopify-theme/sections/baseline-components.liquid +0 -81
  689. package/templates/shopify-theme/skills-lock.json +0 -23
  690. package/templates/shopify-theme/snippets/lucide.liquid +0 -34
  691. package/templates/shopify-theme/snippets/pagination.liquid +0 -44
  692. package/templates/shopify-theme/templates/collection.json +0 -13
  693. package/templates/shopify-theme/templates/gift_card.liquid +0 -5
  694. package/templates/shopify-theme/templates/index.json +0 -135
  695. package/templates/shopify-theme/templates/list-collections.json +0 -13
  696. package/templates/shopify-theme/templates/product.json +0 -13
  697. package/templates/wordpress/.claude/CLAUDE.md +0 -37
  698. package/templates/wordpress/.claude/skills/wp-block-development/SKILL.md +0 -174
  699. package/templates/wordpress/.claude/skills/wp-block-development/references/attributes-and-serialization.md +0 -22
  700. package/templates/wordpress/.claude/skills/wp-block-development/references/block-json.md +0 -49
  701. package/templates/wordpress/.claude/skills/wp-block-development/references/creating-new-blocks.md +0 -46
  702. package/templates/wordpress/.claude/skills/wp-block-development/references/debugging.md +0 -36
  703. package/templates/wordpress/.claude/skills/wp-block-development/references/deprecations.md +0 -24
  704. package/templates/wordpress/.claude/skills/wp-block-development/references/dynamic-rendering.md +0 -23
  705. package/templates/wordpress/.claude/skills/wp-block-development/references/inner-blocks.md +0 -25
  706. package/templates/wordpress/.claude/skills/wp-block-development/references/registration.md +0 -30
  707. package/templates/wordpress/.claude/skills/wp-block-development/references/supports-and-wrappers.md +0 -18
  708. package/templates/wordpress/.claude/skills/wp-block-development/references/tooling-and-testing.md +0 -21
  709. package/templates/wordpress/.claude/skills/wp-block-development/scripts/list_blocks.mjs +0 -121
  710. package/templates/wordpress/.claude/skills/wp-block-themes/SKILL.md +0 -116
  711. package/templates/wordpress/.claude/skills/wp-block-themes/references/creating-new-block-theme.md +0 -37
  712. package/templates/wordpress/.claude/skills/wp-block-themes/references/debugging.md +0 -24
  713. package/templates/wordpress/.claude/skills/wp-block-themes/references/patterns.md +0 -18
  714. package/templates/wordpress/.claude/skills/wp-block-themes/references/style-variations.md +0 -14
  715. package/templates/wordpress/.claude/skills/wp-block-themes/references/templates-and-parts.md +0 -16
  716. package/templates/wordpress/.claude/skills/wp-block-themes/references/theme-json.md +0 -59
  717. package/templates/wordpress/.claude/skills/wp-block-themes/scripts/detect_block_themes.mjs +0 -117
  718. package/templates/wordpress/.claude/skills/wp-performance/SKILL.md +0 -146
  719. package/templates/wordpress/.claude/skills/wp-performance/references/autoload-options.md +0 -24
  720. package/templates/wordpress/.claude/skills/wp-performance/references/cron.md +0 -20
  721. package/templates/wordpress/.claude/skills/wp-performance/references/database.md +0 -20
  722. package/templates/wordpress/.claude/skills/wp-performance/references/http-api.md +0 -15
  723. package/templates/wordpress/.claude/skills/wp-performance/references/measurement.md +0 -21
  724. package/templates/wordpress/.claude/skills/wp-performance/references/object-cache.md +0 -24
  725. package/templates/wordpress/.claude/skills/wp-performance/references/query-monitor-headless.md +0 -38
  726. package/templates/wordpress/.claude/skills/wp-performance/references/server-timing.md +0 -22
  727. package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-doctor.md +0 -24
  728. package/templates/wordpress/.claude/skills/wp-performance/references/wp-cli-profile.md +0 -32
  729. package/templates/wordpress/.claude/skills/wp-performance/scripts/perf_inspect.mjs +0 -128
  730. package/templates/wordpress/.claude/skills/wp-plugin-development/SKILL.md +0 -112
  731. package/templates/wordpress/.claude/skills/wp-plugin-development/references/data-and-cron.md +0 -19
  732. package/templates/wordpress/.claude/skills/wp-plugin-development/references/debugging.md +0 -19
  733. package/templates/wordpress/.claude/skills/wp-plugin-development/references/lifecycle.md +0 -33
  734. package/templates/wordpress/.claude/skills/wp-plugin-development/references/security.md +0 -29
  735. package/templates/wordpress/.claude/skills/wp-plugin-development/references/settings-api.md +0 -22
  736. package/templates/wordpress/.claude/skills/wp-plugin-development/references/structure.md +0 -16
  737. package/templates/wordpress/.claude/skills/wp-plugin-development/scripts/detect_plugins.mjs +0 -122
  738. package/templates/wordpress/.claude/skills/wp-rest-api/SKILL.md +0 -114
  739. package/templates/wordpress/.claude/skills/wp-rest-api/references/authentication.md +0 -18
  740. package/templates/wordpress/.claude/skills/wp-rest-api/references/custom-content-types.md +0 -20
  741. package/templates/wordpress/.claude/skills/wp-rest-api/references/discovery-and-params.md +0 -20
  742. package/templates/wordpress/.claude/skills/wp-rest-api/references/responses-and-fields.md +0 -30
  743. package/templates/wordpress/.claude/skills/wp-rest-api/references/routes-and-endpoints.md +0 -36
  744. package/templates/wordpress/.claude/skills/wp-rest-api/references/schema.md +0 -22
  745. package/templates/wordpress/.ddev/docker-compose.packages.yaml +0 -14
  746. package/templates/wordpress/.ddev/docker-compose.redis.yaml +0 -11
  747. package/templates/wordpress/.env.example +0 -33
  748. package/templates/wordpress/CLAUDE.md +0 -34
  749. package/templates/wordpress/_gitignore +0 -33
  750. package/templates/wordpress/composer.lock +0 -1594
  751. package/templates/wordpress/package.json +0 -13
  752. package/templates/wordpress/scripts/seed.sh +0 -64
  753. package/templates/wordpress/skills-lock.json +0 -35
  754. package/templates/wordpress/wp-config.php +0 -89
  755. package/templates/wordpress/wp-content/index.php +0 -2
  756. package/templates/wordpress/wp-content/mu-plugins/baseline-bootstrap.php +0 -26
package/README.md CHANGED
@@ -1,88 +1,27 @@
1
1
  # @goldencomm/create-baseline
2
2
 
3
- Scaffolds a **standalone project** from a Baseline template — copies the template,
4
- then rewires it into its own project (names, README, the design-system deps, and
5
- platform-specific fixups). Zero dependencies; Node built-ins only.
6
-
7
- ## Usage
8
-
9
- ### Standalone (npm)
10
-
11
- Because the package is named `@goldencomm/create-baseline`, npm's `create` prefix
12
- mapping means the exact command is:
13
-
14
- ```bash
15
- npm create @goldencomm/baseline <platform> <name>
16
- # flags need a `--` separator so npm doesn't eat them:
17
- npm create @goldencomm/baseline <platform> <name> -- --dir ../my-app --ds-version ^0.0.1
18
- ```
19
-
20
- (`pnpm create @goldencomm/baseline …` and `npx @goldencomm/create-baseline …` work too.)
21
-
22
- ### Inside the monorepo
3
+ Scaffolds a GC Baseline project for one platform (ADR-0035):
23
4
 
24
5
  ```bash
25
- pnpm create-baseline <platform> <name> [options]
26
- # or directly:
27
- node tools/create-baseline/index.mjs <platform> <name> [options]
6
+ npm create @goldencomm/baseline@latest next my-site [--figma-file <client library key or URL>]
7
+ npm create @goldencomm/baseline@latest wordpress my-site
8
+ npm create @goldencomm/baseline@latest shopify my-theme
28
9
  ```
29
10
 
30
- | Platform | Produces |
31
- |---|---|
32
- | `next` | Next.js App Router app (React + `ds-core`/`ds-react`) |
33
- | `shopify` | Shopify OS 2.0 theme (vendored `baseline.css`) |
34
- | `wordpress` | WordPress site scaffold (Composer + DDEV) |
35
- | `dotnet` | *(no scaffold)* — prints how to consume `ds-html` + `baseline.css` (Q-005) |
36
-
37
- **Options**
38
-
39
- | Flag | Default | Meaning |
40
- |---|---|---|
41
- | `--dir <path>` | `./<name>` | Target directory |
42
- | `--ds-version <ver>` | `^0.0.1` | Version pinned for the `@goldencomm/ds-*` deps |
43
- | `--force` | — | Allow scaffolding into a non-empty directory |
44
-
45
- ```bash
46
- pnpm create-baseline shopify acme-store
47
- pnpm create-baseline next acme-proto --dir ../acme-proto --ds-version ^0.1.0
48
- pnpm create-baseline wordpress acme-site
49
- ```
50
-
51
- ## What it does
52
-
53
- 1. **Copies** the template. Two auto-detected source modes:
54
- - **monorepo** — inside the design-system repo it copies the committed files of
55
- `baselines/<platform>` via `git ls-files` (so `node_modules`, `dist`, `.next`,
56
- `.turbo`, `vendor` are excluded automatically);
57
- - **bundled** — installed from npm it copies the `templates/` snapshot that the
58
- `prepack` script (`scripts/bundle-templates.mjs`) baked into the package at
59
- publish time from the same `git ls-files` listing. (npm strips `.gitignore`/
60
- `.npmrc`/`.npmignore` from tarballs, so those are stored renamed —
61
- `_gitignore` etc. — and restored on scaffold.)
62
- 2. **Rewires** identifiers: `package.json`/`composer.json` name + description, the
63
- README title, and the Shopify `theme_name`.
64
- 3. **Rewrites DS deps** — any `workspace:*` (`@goldencomm/ds-core`, `ds-react`) becomes
65
- `--ds-version` so the project resolves them from npm.
66
- 4. **Platform fixups:**
67
- - **shopify** — repoints the `dev` token-watch at `node_modules/@goldencomm/ds-core`.
68
- - **wordpress** — removes the monorepo bind-mount (`.ddev/docker-compose.packages.yaml`),
69
- adds Composer `require` + VCS repos for `goldencomm/wp-theme` and
70
- `goldencomm/wp-blocks-plugin`, renames the DDEV project, and updates `seed.sh`
71
- (theme slug → `wp-theme`, site host → `<name>.ddev.site`).
72
-
73
- ## Standalone readiness
11
+ - **next:** `create-next-app` (App Router, Tailwind v4), `shadcn init` with GC Baseline's base, then **every component and
12
+ block** from `@goldencomm/baseline-registry` at this version (default looks), the Code Connect templates beside them,
13
+ `app/globals.css` importing the project's own token build, and a starter page made of blocks.
14
+ - **wordpress:** the DDEV project and the GC Baseline theme (`theme/`) from `platforms/wordpress` at this version.
15
+ - **shopify:** the GC Baseline theme from `platforms/shopify/theme` at this version.
74
16
 
75
- - **Shopify** — works **now**; `baseline.css` is vendored into `assets/`.
76
- - **Next** — needs `@goldencomm/ds-core` + `ds-react` on npm before `npm install`
77
- resolves (they ship at `0.0.1`).
78
- - **WordPress** — `goldencomm/wp-theme` + `wp-blocks-plugin` are **not published as
79
- Composer packages yet**; `composer install` currently requires monorepo/Bitbucket
80
- VCS access and your own gitignored `auth.json` for the ACF/Gravity/Bitbucket
81
- credentials (never copied by the scaffolder). The scaffolder prints this caveat.
17
+ Every project gets `client.tokens.json` (empty: GC Baseline core values) with an `npm run tokens` script on
18
+ `@goldencomm/baseline-tokens`, the `baseline-client-tokens` Claude skill that fills it from the client's Figma library,
19
+ `baseline.json` (platform, version, Figma file), and a Bitbucket pipeline that publishes Code Connect against the
20
+ client's library from master.
82
21
 
83
- ## Publishing notes
22
+ Fonts are the project's decision (ADR-0017): the Next.js scaffold loads none, so text falls back to the system face
23
+ until the client's font is added in `app/layout.tsx` (for example with `next/font`).
84
24
 
85
- - `templates/` is generated by `prepack` and gitignored — never commit it; it is
86
- rebuilt from the committed baselines on every `pnpm pack` / `npm publish`.
87
- - Packing/publishing must therefore happen from a monorepo checkout (prepack runs
88
- `git ls-files`).
25
+ The packages release in lockstep: create-baseline installs the registry items and the tokens package at its own
26
+ version. Options for testing a release before it is published: `--registry <url to an r/ folder>`, `--tokens <path to
27
+ a packed tokens tarball>`.
package/index.mjs CHANGED
@@ -1,296 +1,188 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * create-baseline — scaffold a standalone project from a Baseline template.
4
- *
5
- * create-baseline <platform> <name> [--dir <path>] [--ds-version <ver>] [--force]
6
- * npm create @goldencomm/baseline <platform> <name> (outside the monorepo)
7
- *
8
- * Platforms: next | wordpress | shopify (dotnet prints guidance — see Q-005).
9
- *
10
- * Template source (auto-detected):
11
- * - monorepo mode — inside the design-system repo, copies the committed files
12
- * of `baselines/<platform>` (via `git ls-files`, so node_modules/dist/vendor/
13
- * .next/.turbo are excluded for free);
14
- * - bundled mode — standalone (installed from npm), copies the `templates/`
15
- * snapshot bundled into the package at prepack time.
16
- *
17
- * Either way it then rewires the copy into a standalone project: package/composer
18
- * names, README title, the DS `workspace:*` deps (-> --ds-version), and
19
- * platform-specific fixups (e.g. the WP monorepo bind-mount -> a Composer require).
20
- *
21
- * Zero dependencies — Node built-ins only.
22
- */
23
- import { execFileSync } from "node:child_process";
24
- import {
25
- existsSync, mkdirSync, copyFileSync, readFileSync, writeFileSync, readdirSync, rmSync,
26
- } from "node:fs";
27
- import { dirname, resolve, join } from "node:path";
2
+ // @goldencomm/create-baseline (ADR-0035): scaffolds a GC Baseline project for one platform.
3
+ //
4
+ // npm create @goldencomm/baseline@latest <next|wordpress|shopify> <directory> [options]
5
+ //
6
+ // --figma-file <key|url> the client's Figma library (a copy of GC Baseline Core); recorded in baseline.json
7
+ // --registry <url> where the registry items are (default: this version of @goldencomm/baseline-registry on jsDelivr)
8
+ // --tokens <spec> the tokens package to install (default: @goldencomm/baseline-tokens@<this version>)
9
+ // --skip-install write the files only (next: still needs installs, so it is refused)
10
+ //
11
+ // Every GC Baseline package releases in lockstep, so this scaffolder installs the registry items and the tokens package
12
+ // at its own version. No runtime dependencies beyond Node.
13
+ import { spawnSync } from "node:child_process";
14
+ import { cpSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
15
+ import { basename, dirname, join, resolve } from "node:path";
28
16
  import { fileURLToPath } from "node:url";
29
17
 
30
- const HERE = dirname(fileURLToPath(import.meta.url));
31
- const REPO_ROOT = resolve(HERE, "../..");
18
+ const here = dirname(fileURLToPath(import.meta.url));
19
+ const self = JSON.parse(readFileSync(join(here, "package.json"), "utf8"));
20
+ const VERSION = self.version;
21
+ const NEXT_VERSION = "16"; // the Next.js major the registry is built and tested with (registry/package.json)
22
+ const SHADCN = "shadcn@4.21.0"; // the shadcn CLI version the registry is built with
32
23
 
33
- const PLATFORMS = {
34
- next: { dir: "next", kind: "npm" },
35
- shopify: { dir: "shopify-theme", kind: "npm" },
36
- wordpress: { dir: "wordpress", kind: "composer" },
24
+ const fail = (msg) => {
25
+ console.error(`create-baseline: ${msg}`);
26
+ process.exit(1);
37
27
  };
38
-
39
- // ---- arg parsing -----------------------------------------------------------
28
+ const VALUE_OPTIONS = new Set(["figma-file", "registry", "tokens"]);
29
+ const positional = [];
30
+ const options = {};
31
+ const flags = new Set();
40
32
  const argv = process.argv.slice(2);
41
- function takeFlag(name, hasValue = true) {
42
- const i = argv.indexOf(name);
43
- if (i === -1) return undefined;
44
- const val = hasValue ? argv[i + 1] : true;
45
- argv.splice(i, hasValue ? 2 : 1);
46
- return val;
47
- }
48
- const force = takeFlag("--force", false);
49
- const dirFlag = takeFlag("--dir");
50
- const dsVersion = takeFlag("--ds-version") || "^0.0.1";
51
- const [platform, nameArg] = argv;
52
-
53
- function die(msg) {
54
- console.error(`\n✖ ${msg}\n`);
55
- process.exit(1);
56
- }
57
- function usage() {
58
- console.log(`
59
- create-baseline — scaffold a standalone project from a Baseline baseline
60
-
61
- Usage:
62
- create-baseline <platform> <name> [options]
63
-
64
- Platforms:
65
- next Next.js App Router app (React + ds-core/ds-react)
66
- shopify Shopify OS 2.0 theme (vendored baseline.css)
67
- wordpress WordPress site scaffold (Composer + DDEV)
68
- dotnet (no scaffold — prints how to consume ds-html + baseline.css)
69
-
70
- Options:
71
- --dir <path> target directory (default: ./<name>)
72
- --ds-version <ver> version for @goldencomm/ds-* deps (default: ^0.0.1)
73
- --force allow scaffolding into a non-empty directory
74
- `);
75
- }
76
-
77
- if (!platform || platform === "--help" || platform === "-h") {
78
- usage();
79
- process.exit(platform ? 0 : 1);
80
- }
81
-
82
- if (platform === "dotnet") {
83
- console.log(`
84
- .NET has no scaffolded baseline (decision Q-005). Consume the shared contract:
85
-
86
- 1. Vendor @goldencomm/ds-core's baseline.css into your app's wwwroot and link it.
87
- 2. Render components with the gcds-* markup from packages/ds-html
88
- (e.g. <button class="gcds-button gcds-button--primary gcds-button--md">),
89
- directly or via a Razor partial.
90
-
91
- See packages/ds-html/README.md for the full guide.
92
- `);
93
- process.exit(0);
94
- }
95
-
96
- const cfg = PLATFORMS[platform];
97
- if (!cfg) die(`Unknown platform "${platform}". Use: next | wordpress | shopify | dotnet`);
98
- if (!nameArg) die(`Missing <name>. Try: create-baseline ${platform} my-project`);
99
-
100
- // name derivations
101
- const name = nameArg.trim();
102
- const slug = (name.includes("/") ? name.split("/").pop() : name).toLowerCase();
103
- if (!/^[a-z0-9][a-z0-9._-]*$/.test(slug)) {
104
- die(`"${name}" isn't a safe project slug. Use lowercase letters, digits, - . _`);
105
- }
106
- const npmName = name.toLowerCase();
107
- const composerName = name.includes("/") ? name.toLowerCase() : `goldencomm/${slug}`;
108
- const description = `${slug} — scaffolded from the Baseline ${platform} baseline.`;
109
-
110
- // ---- template source: monorepo baselines/ or bundled templates/ -------------
111
- // prepack stores npm-packlist-hostile basenames renamed; restore them on copy.
112
- // Keep in sync with PACK_SAFE_NAMES in scripts/bundle-templates.mjs.
113
- const RESTORE_NAMES = {
114
- _gitignore: ".gitignore",
115
- _npmrc: ".npmrc",
116
- _npmignore: ".npmignore",
33
+ for (let i = 0; i < argv.length; i++) {
34
+ const a = argv[i];
35
+ if (!a.startsWith("--")) positional.push(a);
36
+ else if (VALUE_OPTIONS.has(a.slice(2))) options[a.slice(2)] = argv[++i];
37
+ else flags.add(a.slice(2));
38
+ }
39
+ const opt = (key) => options[key];
40
+ const flag = (key) => flags.has(key);
41
+ const [platform, dirArg] = positional;
42
+ if (!["next", "wordpress", "shopify"].includes(platform) || !dirArg) {
43
+ console.log(`Usage: npm create @goldencomm/baseline@latest <next|wordpress|shopify> <directory> [--figma-file <key|url>]`);
44
+ process.exit(platform ? 1 : 0);
45
+ }
46
+ const dir = resolve(dirArg);
47
+ const name = basename(dir).toLowerCase().replace(/[^a-z0-9-]+/g, "-");
48
+ if (existsSync(dir) && readdirSync(dir).length) fail(`${dir} exists and is not empty`);
49
+ const registry = (opt("registry") ?? `https://cdn.jsdelivr.net/npm/@goldencomm/baseline-registry@${VERSION}/r`).replace(/\/$/, "");
50
+ const tokensSpec = opt("tokens") ?? `@goldencomm/baseline-tokens@${VERSION}`;
51
+ const figmaFile = opt("figma-file") ?? null;
52
+ const skipInstall = flag("skip-install");
53
+
54
+ const run = (cmd, cmdArgs, cwd) => {
55
+ console.log(`\n> ${cmd} ${cmdArgs.join(" ")}`);
56
+ const r = spawnSync(cmd, cmdArgs, { cwd, stdio: "inherit", shell: process.platform === "win32" });
57
+ if (r.status !== 0) fail(`${cmd} ${cmdArgs[0]} failed (exit ${r.status})`);
58
+ };
59
+ const npx = process.platform === "win32" ? "npx.cmd" : "npx";
60
+ const npm = process.platform === "win32" ? "npm.cmd" : "npm";
61
+ const readJson = (f) => JSON.parse(readFileSync(f, "utf8"));
62
+ const writeJson = (f, o) => writeFileSync(f, JSON.stringify(o, null, 2) + "\n");
63
+ const template = (sub) => {
64
+ const p = join(here, "templates", sub);
65
+ if (!existsSync(p)) fail(`template ${sub} is missing from this package (run its prepack to build templates/)`);
66
+ return p;
67
+ };
68
+ // workdir: where the project's package.json is (theme/ for WordPress), so CI installs and runs Code Connect there
69
+ const writeCi = (root, workdir) => {
70
+ const ci = readFileSync(join(template("ci"), "bitbucket-pipelines.yml"), "utf8")
71
+ .replaceAll("{{PLATFORM}}", platform)
72
+ .replaceAll("{{WORKDIR}}", workdir);
73
+ writeFileSync(join(root, "bitbucket-pipelines.yml"), ci);
74
+ };
75
+ const writeBaselineJson = (root, extra = {}) =>
76
+ writeJson(join(root, "baseline.json"), { name, platform, version: VERSION, figmaFile, ...extra });
77
+ const addScripts = (pkgFile, scripts, devDeps = {}) => {
78
+ const pkg = readJson(pkgFile);
79
+ pkg.scripts = { ...(pkg.scripts ?? {}), ...scripts };
80
+ pkg.devDependencies = { ...(pkg.devDependencies ?? {}), ...devDeps };
81
+ writeJson(pkgFile, pkg);
82
+ };
83
+ // The icon build needs the active icon set's Iconify package; Core's choice is in the tokens package's Primitives
84
+ // (icons/<set>/active). A client that switches sets installs its package (the CLI names it if it is missing).
85
+ const installActiveIconSet = (projectRoot) => {
86
+ const prim = join(projectRoot, "node_modules", "@goldencomm", "baseline-tokens", "src", "figma", "primitives.mode-1.json");
87
+ const icons = readJson(prim).icons ?? {};
88
+ const set = Object.keys(icons).find((s) => icons[s]?.active?.$value === true);
89
+ if (!set) fail("no active icon set in the tokens package (icons/<set>/active)");
90
+ const ICONIFY = { lucide: "lucide", "material-symbols": "material-symbols", phosphor: "ph", remix: "ri", tabler: "tabler" };
91
+ run(npm, ["install", "--save-dev", `@iconify-json/${ICONIFY[set] ?? set}`], projectRoot);
92
+ };
93
+ const tokensDevDep = () => {
94
+ // "@goldencomm/baseline-tokens@0.1.0" -> { name: version }; a path or tarball (testing) -> file: spec
95
+ const m = tokensSpec.match(/^(@goldencomm\/baseline-tokens)@(.+)$/);
96
+ return m ? { [m[1]]: m[2] } : { "@goldencomm/baseline-tokens": `file:${resolve(tokensSpec)}` };
117
97
  };
118
98
 
119
- /** Monorepo mode: the committed files of baselines/<dir>, or null if unavailable. */
120
- function monorepoSource() {
121
- const root = join(REPO_ROOT, "baselines", cfg.dir);
122
- if (!existsSync(root)) return null;
123
- try {
124
- const tracked = execFileSync("git", ["-C", REPO_ROOT, "ls-files", `baselines/${cfg.dir}`], {
125
- encoding: "utf8", stdio: ["ignore", "pipe", "ignore"],
126
- }).split("\n").filter(Boolean);
127
- if (tracked.length === 0) return null;
128
- const prefix = `baselines/${cfg.dir}/`;
129
- return {
130
- mode: "monorepo", root,
131
- files: tracked.map((f) => ({ src: f.slice(prefix.length), dest: f.slice(prefix.length) })),
132
- };
133
- } catch {
134
- return null;
99
+ // ---------------------------------------------------------------------------------------------------------------
100
+ if (platform === "next") {
101
+ if (skipInstall) fail("--skip-install is not available for next: the components are installed with the shadcn CLI");
102
+ mkdirSync(dirname(dir), { recursive: true });
103
+ run(npx, ["--yes", `create-next-app@${NEXT_VERSION}`, dir, "--ts", "--tailwind", "--eslint", "--app", "--no-src-dir", "--import-alias", "@/*", "--use-npm", "--yes"], dirname(dir));
104
+
105
+ // base: components.json, lib/utils and the dependencies every item needs; its inline token values are replaced below
106
+ run(npx, ["--yes", SHADCN, "init", `${registry}/base.json`, "--yes", "--no-monorepo"], dir);
107
+ const cj = join(dir, "components.json");
108
+ const components = readJson(cj);
109
+ components.registries = { ...(components.registries ?? {}), "@baseline": `${registry}/{name}.json` };
110
+ writeJson(cj, components);
111
+
112
+ // globals.css imports the project's own token build; shadcn add appends component keyframes after it
113
+ cpSync(template("next"), dir, { recursive: true });
114
+
115
+ // every component and block, default looks only (an extra look would overwrite the default's file, ADR-0031)
116
+ const index = await (await fetch(`${registry}/registry.json`)).json();
117
+ const items = index.items.filter((i) => i.name !== "base" && !i.meta?.look).map((i) => `@baseline/${i.name}`);
118
+ run(npx, ["--yes", SHADCN, "add", ...items, "--yes", "--overwrite"], dir);
119
+
120
+ // Code Connect templates beside the components, kept out of the TypeScript build (they import the figma runtime)
121
+ cpSync(template("code-connect"), join(dir, "components", "ui"), { recursive: true });
122
+ const tsconfigFile = join(dir, "tsconfig.json");
123
+ const tsconfig = readJson(tsconfigFile);
124
+ tsconfig.exclude = [...new Set([...(tsconfig.exclude ?? []), "**/*.figma.ts"])];
125
+ writeJson(tsconfigFile, tsconfig);
126
+
127
+ // tokens: GC Baseline core + this client's overrides -> app/tokens.css, app/text-styles.css, the icon map
128
+ writeJson(join(dir, "client.tokens.json"), {});
129
+ addScripts(join(dir, "package.json"), {
130
+ tokens: "baseline-tokens build --platform next --out app --client client.tokens.json && baseline-tokens icons --platform next --out . --client client.tokens.json",
131
+ }, tokensDevDep());
132
+ run(npm, ["install"], dir);
133
+ run(npm, ["run", "tokens"], dir);
134
+
135
+ cpSync(template("skills"), join(dir, ".claude", "skills"), { recursive: true });
136
+ writeBaselineJson(dir, { registry: `${registry}/{name}.json` });
137
+ writeCi(dir, ".");
138
+ }
139
+
140
+ // ---------------------------------------------------------------------------------------------------------------
141
+ if (platform === "wordpress") {
142
+ cpSync(template("wordpress"), dir, { recursive: true });
143
+ // the DDEV project takes the site's name
144
+ const ddev = join(dir, ".ddev", "config.yaml");
145
+ writeFileSync(ddev, readFileSync(ddev, "utf8").replace(/^name: .*$/m, `name: ${name}`));
146
+ writeJson(join(dir, "client.tokens.json"), {});
147
+ addScripts(join(dir, "theme", "package.json"), {
148
+ tokens: "baseline-tokens build --platform wordpress --out . --client ../client.tokens.json && baseline-tokens icons --platform wordpress --out . --client ../client.tokens.json && npm run build",
149
+ }, tokensDevDep());
150
+ if (!skipInstall) {
151
+ run(npm, ["install"], join(dir, "theme"));
152
+ installActiveIconSet(join(dir, "theme"));
153
+ run(npm, ["run", "tokens"], join(dir, "theme"));
135
154
  }
136
- }
137
-
138
- /** Bundled mode: the templates/<dir> snapshot shipped in the npm package. */
139
- function bundledSource() {
140
- const root = join(HERE, "templates", cfg.dir);
141
- if (!existsSync(root)) return null;
142
- const files = [];
143
- (function walk(sub) {
144
- for (const e of readdirSync(join(root, sub), { withFileTypes: true })) {
145
- const rel = sub ? `${sub}/${e.name}` : e.name;
146
- if (e.isDirectory()) walk(rel);
147
- else files.push({ src: rel, dest: RESTORE_NAMES[e.name] ? rel.slice(0, rel.length - e.name.length) + RESTORE_NAMES[e.name] : rel });
148
- }
149
- })("");
150
- return files.length > 0 ? { mode: "bundled", root, files } : null;
151
- }
152
-
153
- const source = monorepoSource() || bundledSource();
154
- if (!source) {
155
- die(`No template found for "${platform}" — neither the monorepo's baselines/${cfg.dir} nor a bundled templates/${cfg.dir}. If running from a git checkout, run \`node scripts/bundle-templates.mjs\` or use the published @goldencomm/create-baseline package.`);
156
- }
157
-
158
- const target = resolve(process.cwd(), dirFlag || slug);
159
- if (existsSync(target) && readdirSync(target).length > 0 && !force) {
160
- die(`Target ${target} exists and is not empty. Pass --force to scaffold anyway.`);
161
- }
162
-
163
- // ---- helpers ---------------------------------------------------------------
164
- const tFile = (rel) => join(target, rel);
165
- const has = (rel) => existsSync(tFile(rel));
166
- function editJson(rel, fn) {
167
- const p = tFile(rel);
168
- const json = JSON.parse(readFileSync(p, "utf8"));
169
- fn(json);
170
- writeFileSync(p, JSON.stringify(json, null, 2) + "\n");
171
- }
172
- function patch(rel, replacers) {
173
- const p = tFile(rel);
174
- let s = readFileSync(p, "utf8");
175
- for (const [find, repl] of replacers) s = s.replace(find, repl);
176
- writeFileSync(p, s);
177
- }
178
- function setReadmeTitle(rel, title) {
179
- if (has(rel)) patch(rel, [[/^#[^\n]*/, `# ${title}`]]);
180
- }
181
- function rewriteWorkspaceDeps(pkg) {
182
- for (const field of ["dependencies", "devDependencies", "peerDependencies"]) {
183
- const deps = pkg[field];
184
- if (!deps) continue;
185
- for (const k of Object.keys(deps)) {
186
- if (typeof deps[k] === "string" && deps[k].startsWith("workspace:")) deps[k] = dsVersion;
187
- }
155
+ cpSync(template("skills"), join(dir, ".claude", "skills"), { recursive: true });
156
+ writeBaselineJson(dir);
157
+ writeCi(dir, "theme");
158
+ }
159
+
160
+ // ---------------------------------------------------------------------------------------------------------------
161
+ if (platform === "shopify") {
162
+ cpSync(template("shopify"), dir, { recursive: true });
163
+ writeJson(join(dir, "client.tokens.json"), {});
164
+ addScripts(join(dir, "package.json"), {
165
+ tokens: "baseline-tokens build --platform shopify --out . --client client.tokens.json && baseline-tokens icons --platform shopify --out . --client client.tokens.json",
166
+ }, tokensDevDep());
167
+ // repo files Shopify must not upload
168
+ const ignore = join(dir, ".shopifyignore");
169
+ writeFileSync(ignore, readFileSync(ignore, "utf8") + "\n# GC Baseline project files\nclient.tokens.json\nbaseline.json\nbitbucket-pipelines.yml\n/^\\.claude\\//\n");
170
+ if (!skipInstall) {
171
+ run(npm, ["install"], dir);
172
+ installActiveIconSet(dir);
173
+ run(npm, ["run", "tokens"], dir);
188
174
  }
175
+ cpSync(template("skills"), join(dir, ".claude", "skills"), { recursive: true });
176
+ writeBaselineJson(dir);
177
+ writeCi(dir, ".");
189
178
  }
190
179
 
191
- // ---- copy ------------------------------------------------------------------
192
- mkdirSync(target, { recursive: true });
193
- for (const { src, dest } of source.files) {
194
- const out = tFile(dest);
195
- mkdirSync(dirname(out), { recursive: true });
196
- copyFileSync(join(source.root, src), out);
197
- }
198
-
199
- // ---- rewire ----------------------------------------------------------------
200
- const nextSteps = [];
201
-
202
- if (cfg.kind === "npm") {
203
- editJson("package.json", (pkg) => {
204
- pkg.name = npmName;
205
- pkg.description = description;
206
- rewriteWorkspaceDeps(pkg);
207
- if (platform === "shopify" && pkg.scripts?.dev) {
208
- // monorepo watch path no longer exists standalone
209
- pkg.scripts.dev = "node --watch-path=node_modules/@goldencomm/ds-core/dist scripts/sync-tokens.mjs";
210
- }
211
- });
212
- setReadmeTitle("README.md", npmName);
213
- }
214
-
215
- if (platform === "shopify" && has("config/settings_schema.json")) {
216
- editJson("config/settings_schema.json", (schema) => {
217
- const info = Array.isArray(schema) ? schema.find((s) => s.name === "theme_info") : null;
218
- if (info) info.theme_name = slug;
219
- });
220
- nextSteps.push(
221
- "Shopify theme works immediately — baseline.css is vendored.",
222
- " Run: cd " + target + " && shopify theme dev --store your-store.myshopify.com",
223
- ` (Once @goldencomm/ds-core is published, 'npm i' enables re-syncing tokens; until then assets/baseline.css is the pinned copy.)`,
224
- );
225
- }
226
-
227
- if (platform === "next") {
228
- nextSteps.push(
229
- `Next.js app depends on @goldencomm/ds-core@${dsVersion} + ds-react@${dsVersion} (npm).`,
230
- " cd " + target + " && npm install && npm run dev",
231
- );
232
- }
233
-
234
- if (cfg.kind === "composer") {
235
- // 1) drop the monorepo-only bind-mount
236
- const bindMount = ".ddev/docker-compose.packages.yaml";
237
- if (has(bindMount)) rmSync(tFile(bindMount));
238
-
239
- // 2) composer.json — name/description + require the theme & blocks plugin from VCS
240
- editJson("composer.json", (c) => {
241
- c.name = composerName;
242
- c.description = description;
243
- c.repositories = c.repositories || [];
244
- c.repositories.push(
245
- {
246
- type: "package",
247
- package: {
248
- name: "goldencomm/wp-theme", type: "wordpress-theme", version: "dev-master",
249
- source: { url: "https://bitbucket.org/goldencomm/wp-theme.git", type: "git", reference: "master" },
250
- },
251
- },
252
- {
253
- type: "package",
254
- package: {
255
- name: "goldencomm/wp-blocks-plugin", type: "wordpress-plugin", version: "dev-master",
256
- source: { url: "https://bitbucket.org/goldencomm/wp-blocks-plugin.git", type: "git", reference: "master" },
257
- },
258
- },
259
- );
260
- c.require = c.require || {};
261
- c.require["goldencomm/wp-theme"] = "dev-master";
262
- c.require["goldencomm/wp-blocks-plugin"] = "dev-master";
263
- });
180
+ console.log(`
181
+ GC Baseline ${VERSION}: ${platform} project in ${dir}
264
182
 
265
- // 3) .ddev project name
266
- if (has(".ddev/config.yaml")) patch(".ddev/config.yaml", [[/^name:\s*.*$/m, `name: ${slug}`]]);
267
-
268
- // 4) seed.sh — Composer installs the theme as "wp-theme"; site host follows the ddev name
269
- if (has("scripts/seed.sh")) {
270
- patch("scripts/seed.sh", [
271
- [/baseline-wordpress\.ddev\.site/g, `${slug}.ddev.site`],
272
- [/wp theme activate baseline\b/, "wp theme activate wp-theme"],
273
- ]);
274
- }
275
-
276
- setReadmeTitle("README.md", slug);
277
-
278
- nextSteps.push(
279
- "WordPress scaffold rewired to install the theme + blocks plugin via Composer.",
280
- "",
281
- " IMPORTANT: goldencomm/wp-theme and goldencomm/wp-blocks-plugin are NOT published",
282
- " as Composer packages yet — `composer install` currently requires monorepo/Bitbucket",
283
- " VCS access (the Phase 6 repo split is still pending). Until then this scaffold only",
284
- " resolves for GoldenComm developers with Bitbucket access + their own auth.json with",
285
- " Composer creds (never copied by the scaffolder — add your own).",
286
- "",
287
- " Then: cd " + target + " && ddev start && ddev composer install && ddev exec bash scripts/seed.sh",
288
- );
289
- }
290
-
291
- // ---- report ----------------------------------------------------------------
292
- console.log(`\n✓ Scaffolded ${platform} baseline → ${target}`);
293
- console.log(` name: ${cfg.kind === "composer" ? composerName : npmName} ds-version: ${dsVersion} files: ${source.files.length} (templates: ${source.mode})\n`);
294
- console.log("Next steps:");
295
- for (const line of nextSteps) console.log(" " + line);
296
- console.log("");
183
+ Next steps
184
+ 1. Point client.tokens.json at the client's Figma library: open the project in Claude Code and run the
185
+ baseline-client-tokens skill with the library URL, then \`npm run tokens\`${platform === "wordpress" ? " (in theme/)" : ""}.
186
+ 2. Set FIGMA_ACCESS_TOKEN (secured) and FIGMA_FILE_KEY in the repository's pipeline variables for Code Connect.
187
+ ${platform === "next" ? " 3. npm run dev" : platform === "wordpress" ? " 3. cp auth.json.example auth.json (ACF Pro), ddev start, ddev seed" : " 3. shopify theme dev --store <store>"}
188
+ `);