@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
@@ -0,0 +1,104 @@
1
+ {% doc %}
2
+ Baseline Toggle as a snippet (spec: components/toggle/spec.md): a <label> drawn as a button around a visually hidden
3
+ <input type="checkbox">, so it presses and releases with no JavaScript and its state submits with a form. Native
4
+ (ADR-0030, user 2026-10-06). Inside a toggle-group, pass `type: 'radio'` and the group's `name` for a single choice.
5
+
6
+ @param {string} [label] - visible text
7
+ @param {string} [icon] - a Baseline system icon (snippets/icon.liquid)
8
+ @param {string} [icon_position] - start (default) | end
9
+ @param {string} [aria_label] - the accessible name of an icon-only toggle (goes on the input)
10
+ @param {string} [variant] - default | outline
11
+ @param {string} [size] - sm | md (default) | lg
12
+ @param {boolean} [pressed] - on at first
13
+ @param {boolean} [disabled] - disabled
14
+ @param {string} [name] - the input's name (a form field, or the group's)
15
+ @param {string} [value] - the input's value
16
+ @param {string} [type] - checkbox (default) | radio (a single-choice group's item)
17
+ @param {string} [slot] - data-slot (toggle-group-item inside a group)
18
+ @param {string} [class] - extra classes on the label
19
+
20
+ @example
21
+ {% render 'toggle', label: 'Gift wrap', name: 'properties[Gift wrap]', value: 'Yes', variant: 'outline' %}
22
+ {% enddoc %}
23
+
24
+ {%- liquid
25
+ assign v = variant | default: 'default'
26
+ unless v == 'outline'
27
+ assign v = 'default'
28
+ endunless
29
+ assign s = size | default: 'md'
30
+ case s
31
+ when 'sm', 'md', 'lg'
32
+ else
33
+ assign s = 'md'
34
+ endcase
35
+ assign t = type | default: 'checkbox'
36
+ unless t == 'radio'
37
+ assign t = 'checkbox'
38
+ endunless
39
+ -%}
40
+ <label class="bl-toggle bl-toggle--{{ v }} bl-toggle--{{ s }}{% if class != blank %} {{ class }}{% endif %}" data-slot="{{ slot | default: 'toggle' }}" data-variant="{{ v }}" data-size="{{ s }}">
41
+ <input type="{{ t }}" class="bl-toggle__input"{% if name != blank %} name="{{ name | escape }}"{% endif %}{% if value != blank %} value="{{ value | escape }}"{% endif %}{% if pressed %} checked{% endif %}{% if disabled %} disabled{% endif %}{% if aria_label != blank %} aria-label="{{ aria_label | escape }}"{% endif %}>
42
+ {%- comment -%} the icon's side is marked on a wrapper (the icon snippet takes no attributes); with a label it tightens that side {%- endcomment -%}
43
+ {%- if icon != blank and icon_position != 'end' -%}
44
+ <span class="bl-toggle__icon-wrap"{% if label != blank %} data-icon="inline-start"{% endif %}>{%- render 'icon', name: icon, class: 'bl-toggle__icon' -%}</span>
45
+ {%- endif -%}
46
+ {%- if label != blank -%}<span>{{ label | escape }}</span>{%- endif -%}
47
+ {%- if icon != blank and icon_position == 'end' -%}
48
+ <span class="bl-toggle__icon-wrap"{% if label != blank %} data-icon="inline-end"{% endif %}>{%- render 'icon', name: icon, class: 'bl-toggle__icon' -%}</span>
49
+ {%- endif -%}
50
+ </label>
51
+
52
+ {% stylesheet %}
53
+ /* Mirrors registry/src/ui/toggle/toggle.tsx. Colours come from the scheme class; geometry from the toggle/* tokens
54
+ in baseline-tokens.liquid (ADR-0017). Pressed, focus and disabled follow the hidden checkbox through :has(). */
55
+ .bl-toggle {
56
+ position: relative;
57
+ display: inline-flex;
58
+ flex-shrink: 0;
59
+ align-items: center;
60
+ justify-content: center;
61
+ white-space: nowrap;
62
+ user-select: none;
63
+ cursor: pointer;
64
+ border: 0 solid transparent;
65
+ border-radius: var(--toggle-radius);
66
+ background: transparent;
67
+ color: inherit;
68
+ font-weight: var(--bl-toggle-font-weight);
69
+ outline: none;
70
+ transition: all 150ms;
71
+ }
72
+ .bl-toggle:hover,
73
+ .bl-toggle:has(.bl-toggle__input:checked) { background-color: var(--muted); color: var(--foreground); }
74
+ .bl-toggle:has(.bl-toggle__input:focus-visible) { z-index: 10; border-color: var(--ring); box-shadow: 0 0 0 var(--bl-control-ring-width) var(--ring); }
75
+ .bl-toggle:has(.bl-toggle__input:disabled) { opacity: 0.5; pointer-events: none; }
76
+ .bl-toggle:has(.bl-toggle__input[aria-invalid='true']) { border-color: var(--destructive); box-shadow: 0 0 0 var(--bl-control-ring-width) color-mix(in oklab, var(--destructive) 20%, transparent); }
77
+ .bl-toggle--outline { border-width: var(--bl-toggle-border-width); border-color: var(--input); }
78
+ /* the checkbox stays in the DOM and in the tab order, visually hidden (as .sr-only) */
79
+ .bl-toggle__input {
80
+ position: absolute;
81
+ width: 1px;
82
+ height: 1px;
83
+ padding: 0;
84
+ margin: -1px;
85
+ overflow: hidden;
86
+ clip: rect(0, 0, 0, 0);
87
+ white-space: nowrap;
88
+ border: 0;
89
+ }
90
+ .bl-toggle svg { flex-shrink: 0; pointer-events: none; }
91
+ .bl-toggle__icon-wrap { display: inline-flex; flex-shrink: 0; }
92
+ .bl-toggle--sm { --toggle-radius: var(--bl-toggle-sm-radius); height: var(--bl-toggle-sm-height); min-width: var(--bl-toggle-sm-height); gap: var(--bl-toggle-sm-gap); padding-inline: var(--bl-toggle-sm-padding-x); font-size: var(--bl-toggle-sm-font-size); line-height: var(--bl-toggle-sm-line-height); }
93
+ .bl-toggle--md { --toggle-radius: var(--bl-toggle-md-radius); height: var(--bl-toggle-md-height); min-width: var(--bl-toggle-md-height); gap: var(--bl-toggle-md-gap); padding-inline: var(--bl-toggle-md-padding-x); font-size: var(--bl-toggle-md-font-size); line-height: var(--bl-toggle-md-line-height); }
94
+ .bl-toggle--lg { --toggle-radius: var(--bl-toggle-lg-radius); height: var(--bl-toggle-lg-height); min-width: var(--bl-toggle-lg-height); gap: var(--bl-toggle-lg-gap); padding-inline: var(--bl-toggle-lg-padding-x); font-size: var(--bl-toggle-lg-font-size); line-height: var(--bl-toggle-lg-line-height); }
95
+ .bl-toggle--sm .bl-toggle__icon { width: var(--bl-toggle-sm-icon-size); height: var(--bl-toggle-sm-icon-size); }
96
+ .bl-toggle--md .bl-toggle__icon { width: var(--bl-toggle-md-icon-size); height: var(--bl-toggle-md-icon-size); }
97
+ .bl-toggle--lg .bl-toggle__icon { width: var(--bl-toggle-lg-icon-size); height: var(--bl-toggle-lg-icon-size); }
98
+ .bl-toggle--sm:has([data-icon='inline-start']) { padding-inline-start: var(--bl-toggle-sm-padding-x-icon); }
99
+ .bl-toggle--sm:has([data-icon='inline-end']) { padding-inline-end: var(--bl-toggle-sm-padding-x-icon); }
100
+ .bl-toggle--md:has([data-icon='inline-start']) { padding-inline-start: var(--bl-toggle-md-padding-x-icon); }
101
+ .bl-toggle--md:has([data-icon='inline-end']) { padding-inline-end: var(--bl-toggle-md-padding-x-icon); }
102
+ .bl-toggle--lg:has([data-icon='inline-start']) { padding-inline-start: var(--bl-toggle-lg-padding-x-icon); }
103
+ .bl-toggle--lg:has([data-icon='inline-end']) { padding-inline-end: var(--bl-toggle-lg-padding-x-icon); }
104
+ {% endstylesheet %}
@@ -0,0 +1,498 @@
1
+ {% comment %} Generated by tokens/build.mjs from tokens/typeset.css. Do not edit. Prose rhythm (ADR-0028): render once from layout/theme.liquid; class="typeset" on every richtext output. {% endcomment %}
2
+ {% stylesheet %}
3
+ .typeset {
4
+ --typeset-font-body: inherit;
5
+ --typeset-font-heading: var(--bl-font-heading);
6
+ --typeset-font-mono: var(--bl-font-mono);
7
+ --typeset-size: 1em;
8
+ --typeset-leading: 1.75;
9
+ --typeset-flow: 1.25em;
10
+ }
11
+
12
+ .typeset {
13
+ font-family: var(--typeset-font-body);
14
+ font-size: calc(var(--typeset-size) * 1.125);
15
+ line-height: var(--typeset-leading);
16
+ color: var(--foreground);
17
+ overflow-wrap: break-word;
18
+ margin-trim: block-start;
19
+
20
+ @media (min-width: 48rem), print {
21
+ font-size: var(--typeset-size);
22
+ }
23
+
24
+ --typeset-muted: var(--muted-foreground);
25
+ --typeset-rule: var(--border);
26
+ }
27
+
28
+ .typeset
29
+ *:not(
30
+ :where(
31
+ .not-typeset,
32
+ [data-not-typeset],
33
+ .not-typeset *,
34
+ [data-not-typeset] *
35
+ )
36
+ ) {
37
+ /* Paragraphs. */
38
+ &:where(p) {
39
+ margin-block-start: var(--typeset-flow);
40
+ margin-block-end: 0;
41
+ }
42
+
43
+ /* Headings. */
44
+ &:where(h1, h2, h3, h4, h5, h6) {
45
+ color: var(--foreground);
46
+ font-family: var(--typeset-font-heading);
47
+ font-weight: 600;
48
+ margin-block-end: 0;
49
+ }
50
+ &:where(h1) {
51
+ font-size: 1.75em;
52
+ line-height: 1.3;
53
+ margin-block-start: var(--typeset-flow);
54
+ }
55
+ &:where(h2) {
56
+ font-size: 1.25em;
57
+ line-height: 1.4;
58
+ margin-block-start: calc(var(--typeset-flow) * 1.4);
59
+ }
60
+ &:where(h3) {
61
+ font-size: 1.125em;
62
+ line-height: 1.45;
63
+ margin-block-start: var(--typeset-flow);
64
+ }
65
+ &:where(h4) {
66
+ font-size: 1em;
67
+ line-height: 1.5;
68
+ margin-block-start: var(--typeset-flow);
69
+ }
70
+ &:where(h5) {
71
+ font-size: 0.875em;
72
+ line-height: 1.5;
73
+ font-weight: 500;
74
+ color: var(--typeset-muted);
75
+ margin-block-start: calc(var(--typeset-flow) / 0.875);
76
+ }
77
+ &:where(h6) {
78
+ font-size: 0.8125em;
79
+ line-height: 1.5;
80
+ font-weight: 500;
81
+ letter-spacing: 0.08em;
82
+ text-transform: uppercase;
83
+ color: var(--typeset-muted);
84
+ margin-block-start: calc(var(--typeset-flow) / 0.8125);
85
+ }
86
+ /* Anchors. */
87
+ &:where([id]) {
88
+ scroll-margin-block-start: var(--typeset-flow);
89
+ }
90
+
91
+ /* Headings own the space below them. */
92
+ &:where(h1 + *, h2 + *, h3 + *, h4 + *, h5 + *, h6 + *) {
93
+ margin-block-start: 1em;
94
+ }
95
+ &:where(:is(h1, h2, h3, h4) :is(code)) {
96
+ font-size: 0.9em;
97
+ }
98
+
99
+ /* Links. */
100
+ &:where(a) {
101
+ color: inherit;
102
+ font-weight: 500;
103
+ text-decoration-line: underline;
104
+ text-decoration-color: color-mix(in oklab, currentColor 30%, transparent);
105
+ }
106
+ &:where(a:hover) {
107
+ text-decoration-color: currentColor;
108
+ }
109
+ &:where(a:focus-visible) {
110
+ outline: 2px solid var(--ring);
111
+ outline-offset: 2px;
112
+ border-radius: 0.125em;
113
+ }
114
+ &:where(:is(h1, h2, h3, h4, h5, h6) :is(a)) {
115
+ font-weight: inherit;
116
+ }
117
+
118
+ /* Inline semantics. */
119
+ &:where(strong, b) {
120
+ font-weight: 600;
121
+ }
122
+ &:where(:is(h1, h2, h3, h4) :is(strong, b)) {
123
+ font-weight: 600;
124
+ }
125
+ &:where(mark) {
126
+ background-color: color-mix(
127
+ in oklab,
128
+ oklch(0.86 0.17 95) 40%,
129
+ transparent
130
+ );
131
+ color: inherit;
132
+ padding: 0.05em 0.15em;
133
+ border-radius: 0.2em;
134
+ }
135
+ &:where(abbr[title]) {
136
+ text-decoration-line: underline;
137
+ text-decoration-style: dotted;
138
+ text-underline-offset: 0.2em;
139
+ cursor: help;
140
+ }
141
+ &:where(del, s) {
142
+ color: var(--typeset-muted);
143
+ text-decoration-line: line-through;
144
+ }
145
+ &:where(sup, sub) {
146
+ font-size: 0.75em;
147
+ line-height: 0;
148
+ position: relative;
149
+ vertical-align: baseline;
150
+ }
151
+ &:where(sup) {
152
+ top: -0.5em;
153
+ }
154
+ &:where(sub) {
155
+ bottom: -0.25em;
156
+ }
157
+ &:where(sup a) {
158
+ text-decoration-line: none;
159
+ font-weight: 500;
160
+ }
161
+
162
+ /* Lists. */
163
+ &:where(ul) {
164
+ list-style-type: disc;
165
+ }
166
+ &:where(ol) {
167
+ list-style-type: decimal;
168
+ }
169
+ &:where(ul ul) {
170
+ list-style-type: circle;
171
+ }
172
+ &:where(ul ul ul) {
173
+ list-style-type: square;
174
+ }
175
+ &:where(ol[type="a" i]) {
176
+ list-style-type: lower-alpha;
177
+ }
178
+ &:where(ol[type="i" i]) {
179
+ list-style-type: lower-roman;
180
+ }
181
+ &:where(ol[type="A" s]) {
182
+ list-style-type: upper-alpha;
183
+ }
184
+ &:where(ol[type="I" s]) {
185
+ list-style-type: upper-roman;
186
+ }
187
+ &:where(ul, ol) {
188
+ margin-block-start: var(--typeset-flow);
189
+ margin-block-end: 0;
190
+ padding-inline-start: 1.5em;
191
+ }
192
+ &:where(li) {
193
+ margin-block-start: 0.5em;
194
+ padding-inline-start: 0.4em;
195
+ }
196
+ &:where(li > p, li > ul, li > ol) {
197
+ margin-block-start: 0.5em;
198
+ }
199
+ &:where(ul > li)::marker {
200
+ color: var(--typeset-muted);
201
+ }
202
+ &:where(ol > li)::marker {
203
+ color: var(--typeset-muted);
204
+ }
205
+
206
+ /* GFM task lists. */
207
+ &:where(ul.contains-task-list) {
208
+ list-style-type: none;
209
+ padding-inline-start: 0.25em;
210
+ }
211
+ &:where(li.task-list-item > input[type="checkbox"]) {
212
+ margin-inline-end: 0.5em;
213
+ vertical-align: -0.1em;
214
+ accent-color: var(--primary);
215
+ }
216
+
217
+ /* Disclosures. */
218
+ &:where(details) {
219
+ margin-block-start: var(--typeset-flow);
220
+ margin-block-end: 0;
221
+ }
222
+ &:where(summary) {
223
+ cursor: pointer;
224
+ font-weight: 500;
225
+ }
226
+ &:where(summary)::marker {
227
+ color: var(--typeset-muted);
228
+ }
229
+
230
+ /* Keyboard keys. */
231
+ &:where(kbd) {
232
+ font-family: inherit;
233
+ font-size: 0.85em;
234
+ font-weight: 500;
235
+ border: 1px solid var(--typeset-rule);
236
+ border-block-end-width: 2px;
237
+ border-radius: min(calc(var(--bl-radius-lg) * 0.6), 0.35em);
238
+ padding: 0.0625em 0.35em;
239
+ }
240
+
241
+ /* Definition lists. */
242
+ &:where(dl) {
243
+ margin-block-start: var(--typeset-flow);
244
+ margin-block-end: 0;
245
+ }
246
+ &:where(dt) {
247
+ font-weight: 500;
248
+ margin-block-start: 1em;
249
+ }
250
+ &:where(dt + dt) {
251
+ margin-block-start: 0.25em;
252
+ }
253
+ &:where(dd) {
254
+ margin-block-start: 0.25em;
255
+ margin-inline-start: 0;
256
+ padding-inline-start: 1em;
257
+ color: var(--typeset-muted);
258
+ }
259
+
260
+ /* Inline code. */
261
+ &:where(:not(pre) > code) {
262
+ background-color: var(--muted);
263
+ font-family: var(--typeset-font-mono);
264
+ font-size: 0.85em;
265
+ border-radius: min(calc(var(--bl-radius-lg) * 0.6), 0.35em);
266
+ padding: 0.125em 0.3em;
267
+ }
268
+
269
+ /* Code blocks. */
270
+ &:where(pre) {
271
+ background-color: var(--muted);
272
+ font-family: var(--typeset-font-mono);
273
+ font-size: 0.875em;
274
+ line-height: 1.5;
275
+ tab-size: 2;
276
+ direction: ltr;
277
+ border-radius: var(--bl-radius-lg);
278
+ padding: 0.75em 1em;
279
+ overflow-x: auto;
280
+ margin-block-start: calc(var(--typeset-flow) / 0.875);
281
+ margin-block-end: 0;
282
+ }
283
+ &:where(pre code) {
284
+ background-color: transparent;
285
+ font-family: inherit;
286
+ font-size: inherit;
287
+ padding: 0;
288
+ border-radius: 0;
289
+ }
290
+
291
+ /* Blockquote. */
292
+ &:where(blockquote) {
293
+ border-inline-start: 2px solid var(--typeset-rule);
294
+ padding-inline-start: 1em;
295
+ margin-block-start: var(--typeset-flow);
296
+ margin-block-end: 0;
297
+ margin-inline: 0;
298
+ }
299
+
300
+ /* Dividers. */
301
+ &:where(hr) {
302
+ border: 0;
303
+ border-block-start: 1px solid var(--typeset-rule);
304
+ margin-block-start: calc(var(--typeset-flow) * 2.4);
305
+ margin-block-end: 0;
306
+ }
307
+ &:where(hr + h1, hr + h2, hr + h3, hr + h4) {
308
+ margin-block-start: var(--typeset-flow);
309
+ }
310
+
311
+ /* GFM footnotes. */
312
+ &:where(.footnotes, [data-footnotes]) {
313
+ margin-block-start: calc(var(--typeset-flow) * 2);
314
+ border-block-start: 1px solid var(--typeset-rule);
315
+ padding-block-start: var(--typeset-flow);
316
+ font-size: 0.875em;
317
+ color: var(--typeset-muted);
318
+ }
319
+
320
+ /* Math. */
321
+ &:where(math[display="block"]) {
322
+ margin-block-start: var(--typeset-flow);
323
+ margin-block-end: 0;
324
+ overflow-x: auto;
325
+ overflow-y: hidden;
326
+ padding-block: 0.25em;
327
+ }
328
+
329
+ /* Media. */
330
+ &:where(img, video) {
331
+ border-radius: var(--bl-radius-lg);
332
+ max-width: 100%;
333
+ height: auto;
334
+ margin-block-start: var(--typeset-flow);
335
+ margin-block-end: 0;
336
+ }
337
+ &:where(p img) {
338
+ margin-block-start: 0;
339
+ }
340
+ &:where(figure) {
341
+ margin-block-start: var(--typeset-flow);
342
+ margin-block-end: 0;
343
+ margin-inline: 0;
344
+ }
345
+ &:where(figcaption) {
346
+ color: var(--typeset-muted);
347
+ font-size: 0.875em;
348
+ text-align: center;
349
+ margin-block-start: calc(0.75em / 0.875);
350
+ }
351
+
352
+ /* Tables: Baseline change (ADR-0028 §2, amended 2026-10-02, user decision; not upstream typeset). A table in prose
353
+ takes the Table component's look (registry/src/ui/table/table.tsx, upstream shadcn Table) on the same table/*
354
+ tokens, so a table reads the same wherever it appears: rules under the header and between body rows, the
355
+ footer filled, a row filled on hover, 40px header cells, 8px cells, no wrapping. Wide tables scroll inside a
356
+ .typeset-scroll wrapper (WordPress's core/table figure already scrolls). */
357
+ &:where(table) {
358
+ width: 100%;
359
+ caption-side: bottom;
360
+ font-size: var(--bl-table-font-size);
361
+ line-height: var(--bl-table-line-height);
362
+ border-collapse: collapse;
363
+ margin-block-start: var(--typeset-flow);
364
+ margin-block-end: 0;
365
+ }
366
+
367
+ /* Horizontal scroll for any wide block. Wrap it and the wrapper owns the
368
+ flow margin. */
369
+ &:where(.typeset-scroll) {
370
+ overflow-x: auto;
371
+ margin-block-start: var(--typeset-flow);
372
+ }
373
+ &:where(.typeset-scroll > *) {
374
+ margin-block-start: 0;
375
+ }
376
+ &:where(thead tr) {
377
+ border-block-end: var(--bl-table-border-width) solid var(--typeset-rule);
378
+ }
379
+ &:where(tbody tr) {
380
+ border-block-end: var(--bl-table-border-width) solid var(--typeset-rule);
381
+ transition: background-color 150ms;
382
+ }
383
+ &:where(tbody tr:last-child) {
384
+ border-block-end-width: 0;
385
+ }
386
+ &:where(tbody tr:hover) {
387
+ background-color: var(--bl-table-row-hover-background);
388
+ }
389
+ &:where(tfoot) {
390
+ border-block-start: var(--bl-table-border-width) solid var(--typeset-rule);
391
+ background-color: var(--bl-table-footer-background);
392
+ font-weight: var(--bl-table-head-font-weight);
393
+ }
394
+ &:where(thead th) {
395
+ height: var(--bl-table-head-height);
396
+ padding: 0 var(--bl-table-cell-padding-x);
397
+ color: var(--foreground);
398
+ font-weight: var(--bl-table-head-font-weight);
399
+ text-align: start;
400
+ vertical-align: middle;
401
+ white-space: nowrap;
402
+ }
403
+ &:where(:is(tbody, tfoot) :is(td, th)) {
404
+ padding: var(--bl-table-cell-padding-y) var(--bl-table-cell-padding-x);
405
+ text-align: start;
406
+ vertical-align: middle;
407
+ white-space: nowrap;
408
+ }
409
+ &:where(tbody th) {
410
+ font-weight: var(--bl-table-head-font-weight);
411
+ }
412
+ &:where(caption) {
413
+ margin-block-start: var(--bl-table-caption-gap);
414
+ color: var(--typeset-muted);
415
+ font-size: var(--bl-table-font-size);
416
+ line-height: var(--bl-table-line-height);
417
+ }
418
+ &:where(th[align="center"], td[align="center"]) {
419
+ text-align: center;
420
+ }
421
+ &:where(th[align="right"], td[align="right"]) {
422
+ text-align: end;
423
+ }
424
+
425
+ /* Blocks inside list items keep the list's tighter rhythm. */
426
+ &:where(li > blockquote, li > table, li > figure) {
427
+ margin-block-start: 0.5em;
428
+ }
429
+ &:where(li > pre) {
430
+ margin-block-start: calc(0.5em / 0.875);
431
+ }
432
+
433
+ @media print {
434
+ &:where(pre, table, blockquote, figure) {
435
+ break-inside: avoid;
436
+ }
437
+ &:where(h1, h2, h3, h4) {
438
+ break-after: avoid;
439
+ }
440
+ }
441
+
442
+ /* Forced colors strips the code background, so give it a border. */
443
+ @media (forced-colors: active) {
444
+ &:where(:not(pre) > code) {
445
+ border: 1px solid;
446
+ }
447
+ }
448
+ }
449
+
450
+ /* Baseline addition (ADR-0028 §2, amended 2026-10-01; not in upstream). A component embedded in flowing content opts
451
+ out of typeset (.not-typeset, or the data-slot every Baseline component root carries), and that also took away the
452
+ space above it, so an Alert or Card sat flush against the paragraph before it. A direct child of the typeset root
453
+ that is a component gets the flow gap above it, except as the first child; whatever follows it already has its own
454
+ flow margin. Same specificity as the rules above. */
455
+ .typeset > :where(.not-typeset, [data-not-typeset], [data-slot]):where(:not(:first-child)) {
456
+ margin-block-start: var(--typeset-flow);
457
+ }
458
+
459
+ /* First child adds no space above. Last so it wins ties. */
460
+ .typeset
461
+ > :where(:first-child):not(
462
+ :where(
463
+ .not-typeset,
464
+ [data-not-typeset],
465
+ .not-typeset *,
466
+ [data-not-typeset] *
467
+ )
468
+ ),
469
+ .typeset
470
+ > :where(:first-child)
471
+ > :where(:first-child):not(
472
+ :where(
473
+ .not-typeset,
474
+ [data-not-typeset],
475
+ .not-typeset *,
476
+ [data-not-typeset] *
477
+ )
478
+ ),
479
+ .typeset
480
+ :where(
481
+ li > :first-child,
482
+ blockquote > :first-child,
483
+ td > :first-child,
484
+ th > :first-child,
485
+ dd > :first-child,
486
+ figure > :first-child,
487
+ figure > picture > img
488
+ ):not(
489
+ :where(
490
+ .not-typeset,
491
+ [data-not-typeset],
492
+ .not-typeset *,
493
+ [data-not-typeset] *
494
+ )
495
+ ) {
496
+ margin-block-start: 0;
497
+ }
498
+ {% endstylesheet %}
@@ -0,0 +1,94 @@
1
+ /* Baseline Carousel without React (spec: components/carousel/spec.md): Embla on the markup React's Carousel renders
2
+ (data-slot carousel / carousel-content / carousel-previous / carousel-next / carousel-dots), for the HTML build,
3
+ WordPress (acf/carousel) and Shopify (the carousel snippet). One engine everywhere, as React's embla-carousel-react.
4
+ - options: the root's data-options (JSON, Embla's options, as React's `opts`), data-orientation (vertical -> axis y),
5
+ data-autoplay (ms between slides; Embla's autoplay plugin, paused while the pointer is over the carousel or focus is
6
+ in it, stopped by an interaction)
7
+ - Previous / Next scroll one snap and disable at the ends (unless the carousel loops); the dots container gets one
8
+ button per snap ("Go to slide n", the current one aria-current); ArrowLeft / ArrowRight inside the carousel move it
9
+ - carousels added later (Shopify's theme editor) start too: a MutationObserver watches for new roots
10
+ This file is the SOURCE: it imports Embla from npm, and a build bundles it (with a banner naming Embla's version):
11
+ the monorepo's scripts/gen-html.mjs to platforms/html/dist/carousel.js, and each theme's own `npm run build` from its
12
+ copy in src/ (written here by gen-html), so a scaffolded project updates Embla with npm install + npm run build. */
13
+ import EmblaCarousel from "embla-carousel";
14
+ import Autoplay from "embla-carousel-autoplay";
15
+
16
+ const started = new WeakSet();
17
+
18
+ function start(root) {
19
+ if (started.has(root)) return;
20
+ const viewport = root.querySelector("[data-slot=carousel-content]");
21
+ if (!viewport) return;
22
+ started.add(root);
23
+ let options = {};
24
+ try { options = JSON.parse(root.getAttribute("data-options") || "{}"); } catch { /* not JSON: Embla's defaults */ }
25
+ options.axis = root.getAttribute("data-orientation") === "vertical" ? "y" : "x";
26
+ // the track (the slides' parent) is the viewport's first child, or the element its data-track selector names (a
27
+ // WordPress ACF block wraps its inner blocks in div.acf-innerblocks-container)
28
+ const trackSelector = viewport.getAttribute("data-track");
29
+ const track = trackSelector && viewport.querySelector(trackSelector);
30
+ if (track) options.container = track;
31
+ const plugins = [];
32
+ const delay = Number(root.getAttribute("data-autoplay"));
33
+ if (delay > 0) plugins.push(Autoplay({ delay, stopOnMouseEnter: true, stopOnFocusIn: true, stopOnInteraction: true }));
34
+ const api = EmblaCarousel(viewport, options, plugins);
35
+
36
+ // a control is data-slot carousel-previous / -next, or carries data-carousel-previous / -next where its own component
37
+ // owns data-slot (Shopify's button snippet)
38
+ const prev = root.querySelector("[data-slot=carousel-previous], [data-carousel-previous]");
39
+ const next = root.querySelector("[data-slot=carousel-next], [data-carousel-next]");
40
+ const dotsBox = root.querySelector("[data-slot=carousel-dots]");
41
+ const dotClass = dotsBox && dotsBox.getAttribute("data-dot-class");
42
+ prev?.addEventListener("click", () => api.scrollPrev());
43
+ next?.addEventListener("click", () => api.scrollNext());
44
+
45
+ const buildDots = () => {
46
+ if (!dotsBox) return;
47
+ dotsBox.replaceChildren(...api.scrollSnapList().map((_, i) => {
48
+ const b = document.createElement("button");
49
+ b.type = "button";
50
+ b.setAttribute("data-slot", "carousel-dot");
51
+ b.setAttribute("aria-label", `Go to slide ${i + 1}`);
52
+ if (dotClass) b.className = dotClass;
53
+ b.addEventListener("click", () => api.scrollTo(i));
54
+ return b;
55
+ }));
56
+ };
57
+ const update = () => {
58
+ if (prev) prev.disabled = !api.canScrollPrev();
59
+ if (next) next.disabled = !api.canScrollNext();
60
+ if (dotsBox) [...dotsBox.children].forEach((d, i) => {
61
+ if (i === api.selectedScrollSnap()) d.setAttribute("aria-current", "true");
62
+ else d.removeAttribute("aria-current");
63
+ });
64
+ };
65
+ api.on("init", () => { buildDots(); update(); });
66
+ api.on("reInit", () => { buildDots(); update(); });
67
+ api.on("select", update);
68
+ buildDots();
69
+ update();
70
+
71
+ root.addEventListener("keydown", (e) => {
72
+ if (e.key === "ArrowLeft") { e.preventDefault(); api.scrollPrev(); }
73
+ else if (e.key === "ArrowRight") { e.preventDefault(); api.scrollNext(); }
74
+ }, true);
75
+ }
76
+
77
+ function startAll(scope) {
78
+ scope.querySelectorAll?.("[data-slot=carousel]").forEach(start);
79
+ }
80
+
81
+ if (!window.baselineCarousel) {
82
+ window.baselineCarousel = true;
83
+ const go = () => {
84
+ startAll(document);
85
+ new MutationObserver((records) => {
86
+ for (const r of records) for (const n of r.addedNodes) if (n instanceof Element) {
87
+ if (n.matches("[data-slot=carousel]")) start(n);
88
+ startAll(n);
89
+ }
90
+ }).observe(document.documentElement, { childList: true, subtree: true });
91
+ };
92
+ if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", go);
93
+ else go();
94
+ }