@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,45 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=2282-9358
2
+ // source=registry/src/ui/columns/columns.tsx
3
+ // component=Columns
4
+ // Code Connect template (v2, parserless) for Columns/3. Spec: components/columns/spec.md. Device is Figma's
5
+ // viewport preview, not a prop: the code collapses by breakpoint. The gap is a per-instance binding.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const columns = 3;
10
+
11
+ // a slot (found by layer name at any depth) rendered as its instances' own templates; loose layers become "…"
12
+ function slot(name: string, node: any = instance): any {
13
+ for (const child of node?.children ?? []) {
14
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
15
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
16
+ if (hit) return hit;
17
+ }
18
+ return undefined;
19
+ }
20
+ const parts = (name: string) => {
21
+ const out = (slot(name)?.children ?? [])
22
+ .filter((c: any) => c.type === "INSTANCE")
23
+ .map((c: any) => {
24
+ try {
25
+ return c.executeTemplate().example;
26
+ } catch {
27
+ return undefined;
28
+ }
29
+ })
30
+ .filter(Boolean);
31
+ return out.length ? out : "…";
32
+ };
33
+
34
+ export default {
35
+ example: figma.code`
36
+ <Columns columns={${columns}}>
37
+ <Column>${parts("Column 1")}</Column>
38
+ <Column>${parts("Column 2")}</Column>
39
+ <Column>${parts("Column 3")}</Column>
40
+ </Columns>
41
+ `,
42
+ imports: ['import { Column, Columns } from "@/components/ui/columns"'],
43
+ id: "columns-3",
44
+ metadata: { nestable: true },
45
+ };
@@ -0,0 +1,46 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=2282-9463
2
+ // source=registry/src/ui/columns/columns.tsx
3
+ // component=Columns
4
+ // Code Connect template (v2, parserless) for Columns/4. Spec: components/columns/spec.md. Device is Figma's
5
+ // viewport preview, not a prop: the code collapses by breakpoint. The gap is a per-instance binding.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const columns = 4;
10
+
11
+ // a slot (found by layer name at any depth) rendered as its instances' own templates; loose layers become "…"
12
+ function slot(name: string, node: any = instance): any {
13
+ for (const child of node?.children ?? []) {
14
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
15
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
16
+ if (hit) return hit;
17
+ }
18
+ return undefined;
19
+ }
20
+ const parts = (name: string) => {
21
+ const out = (slot(name)?.children ?? [])
22
+ .filter((c: any) => c.type === "INSTANCE")
23
+ .map((c: any) => {
24
+ try {
25
+ return c.executeTemplate().example;
26
+ } catch {
27
+ return undefined;
28
+ }
29
+ })
30
+ .filter(Boolean);
31
+ return out.length ? out : "…";
32
+ };
33
+
34
+ export default {
35
+ example: figma.code`
36
+ <Columns columns={${columns}}>
37
+ <Column>${parts("Column 1")}</Column>
38
+ <Column>${parts("Column 2")}</Column>
39
+ <Column>${parts("Column 3")}</Column>
40
+ <Column>${parts("Column 4")}</Column>
41
+ </Columns>
42
+ `,
43
+ imports: ['import { Column, Columns } from "@/components/ui/columns"'],
44
+ id: "columns-4",
45
+ metadata: { nestable: true },
46
+ };
@@ -0,0 +1,42 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=1794-10438
2
+ // source=registry/src/ui/container/container.tsx
3
+ // component=Container
4
+ // Code Connect template (v2, parserless). Spec: components/container/spec.md. Padding is a per-instance binding.
5
+ import figma from "figma";
6
+ const instance = figma.selectedInstance;
7
+
8
+ const width = instance.getEnum("Width", { Content: "content", Wide: "wide", Full: "full" });
9
+
10
+ // a slot (found by layer name at any depth) rendered as its instances' own templates; loose layers become "…"
11
+ function slot(name: string, node: any = instance): any {
12
+ for (const child of node?.children ?? []) {
13
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
14
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
15
+ if (hit) return hit;
16
+ }
17
+ return undefined;
18
+ }
19
+ const parts = (name: string) => {
20
+ const out = (slot(name)?.children ?? [])
21
+ .filter((c: any) => c.type === "INSTANCE")
22
+ .map((c: any) => {
23
+ try {
24
+ return c.executeTemplate().example;
25
+ } catch {
26
+ return undefined;
27
+ }
28
+ })
29
+ .filter(Boolean);
30
+ return out.length ? out : "…";
31
+ };
32
+
33
+ export default {
34
+ example: figma.code`
35
+ <Container${width !== "content" ? figma.code` width="${width}"` : ""}>
36
+ ${parts("Children")}
37
+ </Container>
38
+ `,
39
+ imports: ['import { Container } from "@/components/ui/container"'],
40
+ id: "container",
41
+ metadata: { nestable: true },
42
+ };
@@ -0,0 +1,72 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4461-13577
2
+ // source=registry/src/ui/dialog/dialog.tsx
3
+ // component=Dialog
4
+ // Code Connect template (v2, parserless). Spec: components/dialog/spec.md.
5
+ // Figma draws the open dialog; code is the whole composition, so the snippet includes a trigger. Server components with
6
+ // explicit ids (ADR-0033): the trigger and the closes are Buttons with command / commandfor.
7
+ import figma from "figma";
8
+ const instance = figma.selectedInstance;
9
+
10
+ // Show booleans map to CHILDREN, never to props (ADR-0013), except Show Close Button, which is upstream's own prop.
11
+ const showMedia = instance.getBoolean("Show Media");
12
+ const showHeader = instance.getBoolean("Show Header");
13
+ const showFooter = instance.getBoolean("Show Footer");
14
+ const showClose = instance.getBoolean("Show Close Button");
15
+ const title = instance.getString("Title");
16
+ const description = instance.getBoolean("Show Description") ? instance.getString("Description") : "";
17
+ // Footer Orientation=vertical previews the narrow layout; code stacks the footer below sm on its own, so it maps to nothing.
18
+
19
+ // a slot (found by layer name at any depth) rendered as its instances' own templates
20
+ function slot(name: string, node: any = instance): any {
21
+ for (const child of node?.children ?? []) {
22
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
23
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
24
+ if (hit) return hit;
25
+ }
26
+ return undefined;
27
+ }
28
+ const parts = (name: string) =>
29
+ (slot(name)?.children ?? [])
30
+ .filter((c: any) => c.type === "INSTANCE")
31
+ .map((c: any) => {
32
+ try {
33
+ return c.executeTemplate().example;
34
+ } catch {
35
+ return undefined;
36
+ }
37
+ })
38
+ .filter(Boolean);
39
+ const content = parts("Content");
40
+ const actions = parts("Actions");
41
+
42
+ const header = showHeader
43
+ ? figma.code`
44
+ <DialogHeader>
45
+ <DialogTitle id="dialog-title">${title}</DialogTitle>
46
+ ${description ? figma.code`<DialogDescription id="dialog-description">${description}</DialogDescription>` : ""}
47
+ </DialogHeader>`
48
+ : figma.code``;
49
+ const footer = showFooter
50
+ ? figma.code`
51
+ <DialogFooter>
52
+ ${actions.length ? actions : figma.code`<Button variant="outline" command="close" commandfor="dialog">Cancel</Button>`}
53
+ </DialogFooter>`
54
+ : figma.code``;
55
+
56
+ export default {
57
+ example: figma.code`
58
+ <Button variant="outline" command="show-modal" commandfor="dialog">Open</Button>
59
+ <DialogContent id="dialog"${showClose ? "" : figma.code` showCloseButton={false}`}>
60
+ ${showMedia ? figma.code`<img src="/image.jpg" alt="" className="aspect-video object-cover" />` : ""}
61
+ ${header}
62
+ ${content.length ? content : "…"}
63
+ ${footer}
64
+ </DialogContent>
65
+ `,
66
+ imports: [
67
+ 'import { DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"',
68
+ 'import { Button } from "@/components/ui/button"',
69
+ ],
70
+ id: "dialog",
71
+ metadata: { nestable: true },
72
+ };
@@ -0,0 +1,69 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4468-100
2
+ // source=registry/src/ui/drawer/drawer.tsx
3
+ // component=Drawer
4
+ // Code Connect template (v2, parserless). Spec: components/drawer/spec.md. React only (ADR-0030); WordPress and Shopify
5
+ // have no Drawer template: their counterpart is Sheet.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const direction = instance.getEnum("Direction", { down: "down", up: "up", left: "left", right: "right" });
10
+ const showHandle = instance.getBoolean("Show Handle");
11
+ const showHeader = instance.getBoolean("Show Header");
12
+ const showFooter = instance.getBoolean("Show Footer");
13
+ const title = instance.getString("Title");
14
+ const description = instance.getBoolean("Show Description") ? instance.getString("Description") : "";
15
+
16
+ function slot(name: string, node: any = instance): any {
17
+ for (const child of node?.children ?? []) {
18
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
19
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
20
+ if (hit) return hit;
21
+ }
22
+ return undefined;
23
+ }
24
+ const parts = (name: string) =>
25
+ (slot(name)?.children ?? [])
26
+ .filter((c: any) => c.type === "INSTANCE")
27
+ .map((c: any) => {
28
+ try {
29
+ return c.executeTemplate().example;
30
+ } catch {
31
+ return undefined;
32
+ }
33
+ })
34
+ .filter(Boolean);
35
+ const content = parts("Content");
36
+ const actions = parts("Actions");
37
+
38
+ const header = showHeader
39
+ ? figma.code`
40
+ <DrawerHeader>
41
+ <DrawerTitle>${title}</DrawerTitle>
42
+ ${description ? figma.code`<DrawerDescription>${description}</DrawerDescription>` : ""}
43
+ </DrawerHeader>`
44
+ : figma.code``;
45
+ const footer = showFooter
46
+ ? figma.code`
47
+ <DrawerFooter>
48
+ ${actions.length ? actions : figma.code`<DrawerClose render={<Button variant="outline" />}>Cancel</DrawerClose>`}
49
+ </DrawerFooter>`
50
+ : figma.code``;
51
+
52
+ export default {
53
+ example: figma.code`
54
+ <Drawer${direction !== "down" ? figma.code` swipeDirection="${direction}"` : ""}${showHandle ? " showSwipeHandle" : ""}>
55
+ <DrawerTrigger render={<Button variant="outline" />}>Open</DrawerTrigger>
56
+ <DrawerContent>
57
+ ${header}
58
+ <div className="p-4">${content.length ? content : "…"}</div>
59
+ ${footer}
60
+ </DrawerContent>
61
+ </Drawer>
62
+ `,
63
+ imports: [
64
+ 'import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger } from "@/components/ui/drawer"',
65
+ 'import { Button } from "@/components/ui/button"',
66
+ ],
67
+ id: "drawer",
68
+ metadata: { nestable: true },
69
+ };
@@ -0,0 +1,19 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4518-98
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuCheckboxItem
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ // State focus is the highlight (runtime); State disabled is the disabled prop. Checked is the uncontrolled defaultChecked.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const label = instance.getString("Label");
10
+ const checked = instance.getBoolean("Checked");
11
+ const disabled = instance.getEnum("State", { default: false, focus: false, disabled: true }) === true;
12
+ const inset = instance.getBoolean("Inset");
13
+
14
+ export default {
15
+ example: figma.code`<DropdownMenuCheckboxItem${checked ? " defaultChecked" : ""}${inset ? " inset" : ""}${disabled ? " disabled" : ""}>${label}</DropdownMenuCheckboxItem>`,
16
+ imports: ['import { DropdownMenuCheckboxItem } from "@/components/ui/dropdown-menu"'],
17
+ id: "dropdown-menu-checkbox-item",
18
+ metadata: { nestable: true },
19
+ };
@@ -0,0 +1,25 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4518-64
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuItem
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ // State focus is the highlight, a runtime state, so it maps to nothing; State disabled is the disabled prop.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const label = instance.getString("Label");
10
+ const destructive = instance.getEnum("Variant", { default: false, destructive: true }) === true;
11
+ const disabled = instance.getEnum("State", { default: false, focus: false, disabled: true }) === true;
12
+ const inset = instance.getBoolean("Inset");
13
+ const shortcut = instance.getBoolean("Show Shortcut") ? instance.getString("Shortcut") : "";
14
+ const icon = instance.getBoolean("Show Icon");
15
+
16
+ const props = [destructive ? ` variant="destructive"` : "", inset ? " inset" : "", disabled ? " disabled" : ""].join("");
17
+ export default {
18
+ example: figma.code`<DropdownMenuItem${props}>${icon ? figma.code`<Icon name="…" />` : ""}${label}${shortcut ? figma.code`<DropdownMenuShortcut>${shortcut}</DropdownMenuShortcut>` : ""}</DropdownMenuItem>`,
19
+ imports: [
20
+ 'import { DropdownMenuItem, DropdownMenuShortcut } from "@/components/ui/dropdown-menu"',
21
+ ...(icon ? ['import { Icon } from "@/components/ui/icon"'] : []),
22
+ ],
23
+ id: "dropdown-menu-item",
24
+ metadata: { nestable: true },
25
+ };
@@ -0,0 +1,16 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=1203-10
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuLabel
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ import figma from "figma";
6
+ const instance = figma.selectedInstance;
7
+
8
+ const label = instance.getString("Label");
9
+ const inset = instance.getBoolean("Inset");
10
+
11
+ export default {
12
+ example: figma.code`<DropdownMenuLabel${inset ? " inset" : ""}>${label}</DropdownMenuLabel>`,
13
+ imports: ['import { DropdownMenuLabel } from "@/components/ui/dropdown-menu"'],
14
+ id: "dropdown-menu-label",
15
+ metadata: { nestable: true },
16
+ };
@@ -0,0 +1,19 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4518-132
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuRadioItem
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ // State focus is the highlight (runtime); State disabled is the disabled prop. A radio item sits in a DropdownMenuRadioGroup,
6
+ // whose value (or defaultValue) decides which is checked.
7
+ import figma from "figma";
8
+ const instance = figma.selectedInstance;
9
+
10
+ const label = instance.getString("Label");
11
+ const disabled = instance.getEnum("State", { default: false, focus: false, disabled: true }) === true;
12
+ const inset = instance.getBoolean("Inset");
13
+
14
+ export default {
15
+ example: figma.code`<DropdownMenuRadioItem${` value="${label.toLowerCase().replace(/\s+/g, "-")}"`}${inset ? " inset" : ""}${disabled ? " disabled" : ""}>${label}</DropdownMenuRadioItem>`,
16
+ imports: ['import { DropdownMenuRadioItem } from "@/components/ui/dropdown-menu"'],
17
+ id: "dropdown-menu-radio-item",
18
+ metadata: { nestable: true },
19
+ };
@@ -0,0 +1,12 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=1203-12
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuSeparator
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ import figma from "figma";
6
+
7
+ export default {
8
+ example: figma.code`<DropdownMenuSeparator />`,
9
+ imports: ['import { DropdownMenuSeparator } from "@/components/ui/dropdown-menu"'],
10
+ id: "dropdown-menu-separator",
11
+ metadata: { nestable: true },
12
+ };
@@ -0,0 +1,22 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4518-164
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuSub
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ // The Sub Trigger is drawn alone; code is the submenu around it. State open is runtime.
6
+ import figma from "figma";
7
+ const instance = figma.selectedInstance;
8
+
9
+ const label = instance.getString("Label");
10
+ const inset = instance.getBoolean("Inset");
11
+
12
+ export default {
13
+ example: figma.code`<DropdownMenuSub>
14
+ <DropdownMenuSubTrigger${inset ? " inset" : ""}>${label}</DropdownMenuSubTrigger>
15
+ <DropdownMenuPortal>
16
+ <DropdownMenuSubContent>…</DropdownMenuSubContent>
17
+ </DropdownMenuPortal>
18
+ </DropdownMenuSub>`,
19
+ imports: ['import { DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from "@/components/ui/dropdown-menu"'],
20
+ id: "dropdown-menu-sub-trigger",
21
+ metadata: { nestable: true },
22
+ };
@@ -0,0 +1,44 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=484-16
2
+ // source=registry/src/ui/dropdown-menu/dropdown-menu.tsx
3
+ // component=DropdownMenuContent
4
+ // Code Connect template (v2, parserless). Spec: components/dropdown-menu/spec.md.
5
+ // Figma draws the open panel; code is the whole menu, so the snippet adds the root and an unstyled trigger rendered
6
+ // as a Button. The Menu slot's rows render their own templates.
7
+ import figma from "figma";
8
+ const instance = figma.selectedInstance;
9
+
10
+ function slot(name: string, node: any = instance): any {
11
+ for (const child of node?.children ?? []) {
12
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
13
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
14
+ if (hit) return hit;
15
+ }
16
+ return undefined;
17
+ }
18
+ const rows = (slot("Menu")?.children ?? [])
19
+ .filter((c: any) => c.type === "INSTANCE")
20
+ .map((c: any) => {
21
+ try {
22
+ return c.executeTemplate().example;
23
+ } catch {
24
+ return undefined;
25
+ }
26
+ })
27
+ .filter(Boolean);
28
+
29
+ export default {
30
+ example: figma.code`
31
+ <DropdownMenu>
32
+ <DropdownMenuTrigger render={<Button variant="outline" />}>Open</DropdownMenuTrigger>
33
+ <DropdownMenuContent>
34
+ ${rows}
35
+ </DropdownMenuContent>
36
+ </DropdownMenu>
37
+ `,
38
+ imports: [
39
+ 'import { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"',
40
+ 'import { Button } from "@/components/ui/button"',
41
+ ],
42
+ id: "dropdown-menu",
43
+ metadata: { nestable: true },
44
+ };
@@ -0,0 +1,73 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=4294-300
2
+ // source=registry/src/ui/field/field.tsx
3
+ // component=Field
4
+ // Code Connect template (v2, parserless). Spec: components/field/spec.md.
5
+ //
6
+ // `Field/Horizontal`, the other half of the split made on 2026-09-28. One code component, two Figma sets: the
7
+ // anatomy differs enough that a single set carried eight variants nobody could select. Orientation is fixed
8
+ // here, so it is emitted as a literal rather than read from an axis.
9
+ import figma from "figma";
10
+ const instance = figma.selectedInstance;
11
+
12
+ // Which side the control sits on. In code this is child order, not a prop: a checkbox or radio row puts the
13
+ // control before the label (upstream's own checkbox-group and radio-group demos), a switch or choice card puts
14
+ // it after (upstream's choice-card demo). Figma cannot reorder children, so it is an axis.
15
+ const controlPlacement = instance.getEnum("Control Placement", { left: "left", right: "right" });
16
+ const controlFirst = controlPlacement === "left";
17
+
18
+ const state = instance.getEnum("State", { default: "default", invalid: "invalid" });
19
+ const isInvalid = state === "invalid";
20
+
21
+ const label = instance.getString("Label");
22
+ const description = instance.getString("Description");
23
+ const error = instance.getString("Error");
24
+ const showDescription = instance.getBoolean("Show Description");
25
+ const showError = instance.getBoolean("Show Error");
26
+
27
+ // Same Control swap as the vertical set, with the same eight preferred values. The property ids differ between
28
+ // the two sets because Figma re-issues them when a variant leaves a set, but Code Connect reads properties by
29
+ // name, so both templates are written identically.
30
+ let control;
31
+ const controlInstance = (instance.children || []).filter((c) => c.type === "INSTANCE")[0];
32
+ if (controlInstance) {
33
+ try {
34
+ control = controlInstance.executeTemplate().example;
35
+ } catch (e) {
36
+ control = undefined;
37
+ }
38
+ }
39
+
40
+ const descriptionCode = showDescription ? figma.code`<FieldDescription>${description}</FieldDescription>` : "";
41
+ const errorCode = showError ? figma.code`<FieldError>${error}</FieldError>` : "";
42
+ const controlCode = control ? figma.code`${control}` : figma.code`<Input id="field" />`;
43
+
44
+ // The label, description and error stack together in a FieldContent column; the control sits beside it on
45
+ // whichever side the axis says. FieldContent is what makes only the text side grow.
46
+ const content = figma.code`
47
+ <FieldContent>
48
+ <FieldLabel htmlFor="field">${label}</FieldLabel>
49
+ ${descriptionCode}
50
+ ${errorCode}
51
+ </FieldContent>`;
52
+
53
+ const example = controlFirst
54
+ ? figma.code`
55
+ <Field orientation="horizontal"${isInvalid ? " data-invalid" : ""}>
56
+ ${controlCode}${content}
57
+ </Field>
58
+ `
59
+ : figma.code`
60
+ <Field orientation="horizontal"${isInvalid ? " data-invalid" : ""}>${content}
61
+ ${controlCode}
62
+ </Field>
63
+ `;
64
+
65
+ export default {
66
+ example,
67
+ imports: [
68
+ 'import { Field, FieldContent, FieldLabel, FieldDescription, FieldError } from "@/components/ui/field"',
69
+ 'import { Input } from "@/components/ui/input"',
70
+ ],
71
+ id: "field-horizontal",
72
+ metadata: { nestable: true },
73
+ };
@@ -0,0 +1,68 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=2040-34976
2
+ // source=registry/src/ui/field/field.tsx
3
+ // component=Field
4
+ // Code Connect template (v2, parserless). Spec: components/field/spec.md.
5
+ // Figma property VALUES are lower-kebab and identical to the code enums, so every getEnum map is an identity map.
6
+ //
7
+ // This template covers `Field/Vertical` only. The set was split on 2026-09-28: vertical and horizontal Field
8
+ // have genuinely different anatomy (horizontal wraps label + description in a FieldContent column, vertical
9
+ // does not), and keeping them as one set meant half its variants were combinations nobody could use. The
10
+ // horizontal half lives in field-horizontal.figma.ts. This node id is the original set's, so this mapping
11
+ // survived the split untouched.
12
+ import figma from "figma";
13
+ const instance = figma.selectedInstance;
14
+
15
+ // Figma cannot reorder children, so placement is a variant axis. In code it is simply where FieldDescription
16
+ // sits in the JSX, which is why this maps to order rather than to a prop.
17
+ const placement = instance.getEnum("Description Placement", {
18
+ "under-label": "under-label",
19
+ "under-input": "under-input",
20
+ });
21
+ const state = instance.getEnum("State", { default: "default", invalid: "invalid" });
22
+ const isInvalid = state === "invalid";
23
+
24
+ const label = instance.getString("Label");
25
+ const description = instance.getString("Description");
26
+ const error = instance.getString("Error");
27
+ const showDescription = instance.getBoolean("Show Description");
28
+ const showError = instance.getBoolean("Show Error");
29
+
30
+ // The Control swap holds the real control (Input, Input Group, Input OTP, Select, Textarea, Checkbox, Radio or
31
+ // Switch). The layer is named after whichever component is swapped in, never "Control", so it is found by type
32
+ // rather than by name. Render that component's own Code Connect template; fall back to a bare <Input /> for
33
+ // controls whose template has not shipped yet, so the snippet stays useful instead of dropping the control.
34
+ let control;
35
+ const controlInstance = (instance.children || []).filter((c) => c.type === "INSTANCE")[0];
36
+ if (controlInstance) {
37
+ try {
38
+ control = controlInstance.executeTemplate().example;
39
+ } catch (e) {
40
+ control = undefined;
41
+ }
42
+ }
43
+
44
+ const descriptionCode = showDescription ? figma.code`<FieldDescription>${description}</FieldDescription>` : "";
45
+ const errorCode = showError ? figma.code`<FieldError>${error}</FieldError>` : "";
46
+ const controlCode = control ? figma.code`${control}` : figma.code`<Input id="field" />`;
47
+
48
+ // Vertical is the code default, so no orientation prop is emitted. Label, control, description and error are
49
+ // siblings; the description's position is the one thing the axis decides.
50
+ const example = figma.code`
51
+ <Field${isInvalid ? " data-invalid" : ""}>
52
+ <FieldLabel htmlFor="field">${label}</FieldLabel>
53
+ ${placement === "under-label" ? descriptionCode : ""}
54
+ ${controlCode}
55
+ ${placement === "under-input" ? descriptionCode : ""}
56
+ ${errorCode}
57
+ </Field>
58
+ `;
59
+
60
+ export default {
61
+ example,
62
+ imports: [
63
+ 'import { Field, FieldLabel, FieldDescription, FieldError } from "@/components/ui/field"',
64
+ 'import { Input } from "@/components/ui/input"',
65
+ ],
66
+ id: "field",
67
+ metadata: { nestable: true },
68
+ };
@@ -0,0 +1,41 @@
1
+ // url=https://www.figma.com/design/ba28zZ49PAkXhE7PW5kyT9/Design-System?node-id=1942-39787
2
+ // source=registry/src/ui/hover-card/hover-card.tsx
3
+ // component=HoverCardContent
4
+ // Code Connect template (v2, parserless). Spec: components/hover-card/spec.md.
5
+ // Figma draws the shown card; code is the whole composition, so the snippet includes its trigger (an <a> by default).
6
+ // Server components with explicit ids (ADR-0033): HoverCardTrigger points at the card with interestfor.
7
+ import figma from "figma";
8
+ const instance = figma.selectedInstance;
9
+
10
+ // the Children slot (found by layer name at any depth): its text as a paragraph, its instances as their own templates
11
+ function slot(name: string, node: any = instance): any {
12
+ for (const child of node?.children ?? []) {
13
+ if (child.name === name && child.type !== "INSTANCE" && child.type !== "TEXT") return child;
14
+ const hit = child.type === "INSTANCE" ? undefined : slot(name, child);
15
+ if (hit) return hit;
16
+ }
17
+ return undefined;
18
+ }
19
+ const content = (slot("Children")?.children ?? [])
20
+ .map((c: any) => {
21
+ if (c.type === "TEXT") return figma.code`<p>${c.textContent}</p>`;
22
+ if (c.type !== "INSTANCE") return undefined;
23
+ try {
24
+ return c.executeTemplate().example;
25
+ } catch {
26
+ return undefined;
27
+ }
28
+ })
29
+ .filter(Boolean);
30
+
31
+ export default {
32
+ example: figma.code`
33
+ <HoverCardTrigger interestfor="hover-card" href="#">Hover here</HoverCardTrigger>
34
+ <HoverCardContent id="hover-card">
35
+ ${content.length ? content : figma.code`<p>…</p>`}
36
+ </HoverCardContent>
37
+ `,
38
+ imports: ['import { HoverCardContent, HoverCardTrigger } from "@/components/ui/hover-card"'],
39
+ id: "hover-card",
40
+ metadata: { nestable: true },
41
+ };