designkit-ai 1.0.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 (530) hide show
  1. package/AI-AGENT.md +51 -0
  2. package/LICENSE +21 -0
  3. package/README.md +517 -0
  4. package/bin/designkit.js +61 -0
  5. package/components/_index.md +81 -0
  6. package/components/app-mobile/README.md +117 -0
  7. package/components/app-mobile/badges/badge-count.html +9 -0
  8. package/components/app-mobile/badges/badge-dot.html +9 -0
  9. package/components/app-mobile/badges/badge-large.html +9 -0
  10. package/components/app-mobile/buttons/button-filled.html +9 -0
  11. package/components/app-mobile/buttons/button-icon.html +11 -0
  12. package/components/app-mobile/buttons/button-outlined.html +9 -0
  13. package/components/app-mobile/buttons/button-text.html +9 -0
  14. package/components/app-mobile/buttons/button-tonal.html +9 -0
  15. package/components/app-mobile/buttons/fab-extended.html +12 -0
  16. package/components/app-mobile/buttons/fab-small.html +11 -0
  17. package/components/app-mobile/buttons/fab.html +11 -0
  18. package/components/app-mobile/buttons/icon-button-filled.html +11 -0
  19. package/components/app-mobile/buttons/icon-button-tonal.html +11 -0
  20. package/components/app-mobile/buttons/segmented-button.html +13 -0
  21. package/components/app-mobile/cards/card-elevated.html +15 -0
  22. package/components/app-mobile/cards/card-filled.html +15 -0
  23. package/components/app-mobile/cards/card-outlined.html +15 -0
  24. package/components/app-mobile/charts/bar-chart.html +20 -0
  25. package/components/app-mobile/charts/donut-chart.html +20 -0
  26. package/components/app-mobile/charts/horizontal-bar.html +15 -0
  27. package/components/app-mobile/charts/line-chart.html +26 -0
  28. package/components/app-mobile/charts/progress-ring.html +17 -0
  29. package/components/app-mobile/charts/sparkline.html +11 -0
  30. package/components/app-mobile/charts/stat-card.html +18 -0
  31. package/components/app-mobile/chips/chip-assist.html +12 -0
  32. package/components/app-mobile/chips/chip-filter.html +12 -0
  33. package/components/app-mobile/chips/chip-input.html +14 -0
  34. package/components/app-mobile/chips/chip-suggestion.html +9 -0
  35. package/components/app-mobile/data-display/avatar-group.html +35 -0
  36. package/components/app-mobile/dialogs/dialog-basic.html +16 -0
  37. package/components/app-mobile/dialogs/dialog-fullscreen.html +18 -0
  38. package/components/app-mobile/dividers/divider-full.html +9 -0
  39. package/components/app-mobile/dividers/divider-inset.html +9 -0
  40. package/components/app-mobile/ecommerce/cart-item.html +29 -0
  41. package/components/app-mobile/ecommerce/cart-summary.html +31 -0
  42. package/components/app-mobile/ecommerce/color-selector.html +17 -0
  43. package/components/app-mobile/ecommerce/order-status.html +25 -0
  44. package/components/app-mobile/ecommerce/product-detail-hero.html +45 -0
  45. package/components/app-mobile/ecommerce/size-selector.html +17 -0
  46. package/components/app-mobile/ecommerce/wishlist-item.html +22 -0
  47. package/components/app-mobile/education/assignment-card.html +24 -0
  48. package/components/app-mobile/education/certificate.html +30 -0
  49. package/components/app-mobile/education/course-card.html +32 -0
  50. package/components/app-mobile/education/grade-report.html +53 -0
  51. package/components/app-mobile/education/lesson-progress.html +21 -0
  52. package/components/app-mobile/education/quiz-mcq.html +35 -0
  53. package/components/app-mobile/education/quiz-truefalse.html +26 -0
  54. package/components/app-mobile/education/student-dashboard.html +57 -0
  55. package/components/app-mobile/feedback/banner.html +13 -0
  56. package/components/app-mobile/feedback/progress-circular.html +14 -0
  57. package/components/app-mobile/feedback/progress-linear.html +11 -0
  58. package/components/app-mobile/feedback/skeleton.html +20 -0
  59. package/components/app-mobile/feedback/snackbar.html +15 -0
  60. package/components/app-mobile/feedback/tooltip.html +9 -0
  61. package/components/app-mobile/finance/bank-account-card.html +36 -0
  62. package/components/app-mobile/finance/budget-category.html +24 -0
  63. package/components/app-mobile/finance/credit-score.html +29 -0
  64. package/components/app-mobile/finance/investment-portfolio.html +52 -0
  65. package/components/app-mobile/finance/transaction-row.html +26 -0
  66. package/components/app-mobile/finance/transfer-form.html +42 -0
  67. package/components/app-mobile/fitness/body-metrics.html +41 -0
  68. package/components/app-mobile/fitness/calorie-tracker.html +48 -0
  69. package/components/app-mobile/fitness/exercise-timer.html +30 -0
  70. package/components/app-mobile/fitness/meal-plan.html +36 -0
  71. package/components/app-mobile/fitness/sleep-tracker.html +50 -0
  72. package/components/app-mobile/fitness/workout-card.html +37 -0
  73. package/components/app-mobile/food/cuisine-filter.html +39 -0
  74. package/components/app-mobile/food/menu-item.html +25 -0
  75. package/components/app-mobile/food/order-tracker.html +46 -0
  76. package/components/app-mobile/food/restaurant-card.html +34 -0
  77. package/components/app-mobile/food/review-card.html +35 -0
  78. package/components/app-mobile/food/table-reservation.html +42 -0
  79. package/components/app-mobile/forms/form-address.html +41 -0
  80. package/components/app-mobile/forms/form-payment.html +37 -0
  81. package/components/app-mobile/forms/form-profile.html +39 -0
  82. package/components/app-mobile/forms/time-picker.html +28 -0
  83. package/components/app-mobile/healthcare/appointment-card.html +26 -0
  84. package/components/app-mobile/healthcare/doctor-profile.html +32 -0
  85. package/components/app-mobile/healthcare/health-metric-chart.html +51 -0
  86. package/components/app-mobile/healthcare/insurance-card.html +35 -0
  87. package/components/app-mobile/healthcare/lab-results.html +23 -0
  88. package/components/app-mobile/healthcare/medication-reminder.html +24 -0
  89. package/components/app-mobile/healthcare/symptom-checker.html +42 -0
  90. package/components/app-mobile/healthcare/vitals-dashboard.html +56 -0
  91. package/components/app-mobile/inputs/date-picker.html +68 -0
  92. package/components/app-mobile/inputs/file-upload.html +13 -0
  93. package/components/app-mobile/inputs/otp-input.html +16 -0
  94. package/components/app-mobile/inputs/password-field.html +13 -0
  95. package/components/app-mobile/inputs/search-bar.html +17 -0
  96. package/components/app-mobile/inputs/select.html +17 -0
  97. package/components/app-mobile/inputs/text-field-filled.html +12 -0
  98. package/components/app-mobile/inputs/text-field-outlined.html +12 -0
  99. package/components/app-mobile/inputs/textarea.html +12 -0
  100. package/components/app-mobile/inputs/time-picker.html +33 -0
  101. package/components/app-mobile/job/application-status.html +18 -0
  102. package/components/app-mobile/job/interview-schedule.html +32 -0
  103. package/components/app-mobile/lists/list-item-1line.html +14 -0
  104. package/components/app-mobile/lists/list-item-2line.html +20 -0
  105. package/components/app-mobile/lists/list-item-3line.html +17 -0
  106. package/components/app-mobile/logistics/delivery-map.html +40 -0
  107. package/components/app-mobile/logistics/driver-card.html +25 -0
  108. package/components/app-mobile/logistics/package-tracker.html +42 -0
  109. package/components/app-mobile/logistics/shipment-row.html +20 -0
  110. package/components/app-mobile/media/audio-player.html +38 -0
  111. package/components/app-mobile/media/image-carousel.html +28 -0
  112. package/components/app-mobile/menus/menu-context.html +13 -0
  113. package/components/app-mobile/menus/menu-dropdown.html +14 -0
  114. package/components/app-mobile/native/gesture-nav-bar.html +11 -0
  115. package/components/app-mobile/native/ios-action-sheet.html +19 -0
  116. package/components/app-mobile/native/ios-alert.html +18 -0
  117. package/components/app-mobile/native/ios-home-indicator.html +11 -0
  118. package/components/app-mobile/native/ios-list-cell.html +14 -0
  119. package/components/app-mobile/native/ios-nav-bar.html +16 -0
  120. package/components/app-mobile/native/ios-page-sheet.html +17 -0
  121. package/components/app-mobile/native/ios-search-bar.html +15 -0
  122. package/components/app-mobile/native/ios-segmented-control.html +13 -0
  123. package/components/app-mobile/native/ios-status-bar.html +17 -0
  124. package/components/app-mobile/native/ios-tab-bar.html +31 -0
  125. package/components/app-mobile/native/ios-wheel-picker.html +34 -0
  126. package/components/app-mobile/native/notification-item.html +19 -0
  127. package/components/app-mobile/native/permission-dialog.html +18 -0
  128. package/components/app-mobile/native/status-bar.html +16 -0
  129. package/components/app-mobile/navbars/bottom-app-bar.html +19 -0
  130. package/components/app-mobile/navbars/bottom-nav-3.html +28 -0
  131. package/components/app-mobile/navbars/bottom-nav-4.html +26 -0
  132. package/components/app-mobile/navbars/bottom-nav-5.html +30 -0
  133. package/components/app-mobile/navbars/top-app-bar-center.html +17 -0
  134. package/components/app-mobile/navbars/top-app-bar-large.html +20 -0
  135. package/components/app-mobile/navbars/top-app-bar-medium.html +20 -0
  136. package/components/app-mobile/navbars/top-app-bar-small.html +22 -0
  137. package/components/app-mobile/navigation/back-header.html +32 -0
  138. package/components/app-mobile/navigation/segmented-control.html +19 -0
  139. package/components/app-mobile/navigation/stepper-vertical.html +65 -0
  140. package/components/app-mobile/patterns/accordion.html +20 -0
  141. package/components/app-mobile/patterns/activity-feed.html +26 -0
  142. package/components/app-mobile/patterns/audio-waveform.html +34 -0
  143. package/components/app-mobile/patterns/avatar-group.html +14 -0
  144. package/components/app-mobile/patterns/breadcrumb.html +15 -0
  145. package/components/app-mobile/patterns/calendar-month.html +56 -0
  146. package/components/app-mobile/patterns/camera-viewfinder.html +33 -0
  147. package/components/app-mobile/patterns/card-horizontal.html +15 -0
  148. package/components/app-mobile/patterns/cart-item.html +23 -0
  149. package/components/app-mobile/patterns/category-pills.html +15 -0
  150. package/components/app-mobile/patterns/chat-bubble-received.html +15 -0
  151. package/components/app-mobile/patterns/chat-bubble-sent.html +14 -0
  152. package/components/app-mobile/patterns/chat-conversation.html +27 -0
  153. package/components/app-mobile/patterns/chat-input-bar.html +13 -0
  154. package/components/app-mobile/patterns/code-editor.html +29 -0
  155. package/components/app-mobile/patterns/comment-item.html +15 -0
  156. package/components/app-mobile/patterns/contact-card.html +19 -0
  157. package/components/app-mobile/patterns/data-table.html +25 -0
  158. package/components/app-mobile/patterns/empty-state.html +19 -0
  159. package/components/app-mobile/patterns/error-screen.html +14 -0
  160. package/components/app-mobile/patterns/event-card.html +22 -0
  161. package/components/app-mobile/patterns/image-editor.html +34 -0
  162. package/components/app-mobile/patterns/image-grid.html +16 -0
  163. package/components/app-mobile/patterns/login-form.html +22 -0
  164. package/components/app-mobile/patterns/map-card.html +19 -0
  165. package/components/app-mobile/patterns/media-player.html +26 -0
  166. package/components/app-mobile/patterns/notification-list.html +25 -0
  167. package/components/app-mobile/patterns/onboarding-slide.html +24 -0
  168. package/components/app-mobile/patterns/order-summary.html +16 -0
  169. package/components/app-mobile/patterns/order-tracker.html +27 -0
  170. package/components/app-mobile/patterns/pagination.html +17 -0
  171. package/components/app-mobile/patterns/post-card.html +28 -0
  172. package/components/app-mobile/patterns/product-card.html +26 -0
  173. package/components/app-mobile/patterns/profile-header.html +18 -0
  174. package/components/app-mobile/patterns/rating-stars.html +15 -0
  175. package/components/app-mobile/patterns/review-card.html +22 -0
  176. package/components/app-mobile/patterns/search-results.html +35 -0
  177. package/components/app-mobile/patterns/settings-group.html +30 -0
  178. package/components/app-mobile/patterns/stepper-horizontal.html +24 -0
  179. package/components/app-mobile/patterns/story-circle.html +16 -0
  180. package/components/app-mobile/patterns/swipe-action.html +19 -0
  181. package/components/app-mobile/patterns/tag-pills.html +14 -0
  182. package/components/app-mobile/patterns/timeline-item.html +19 -0
  183. package/components/app-mobile/patterns/todo-item.html +18 -0
  184. package/components/app-mobile/patterns/video-editor-timeline.html +36 -0
  185. package/components/app-mobile/patterns/video-player.html +33 -0
  186. package/components/app-mobile/patterns/wallet-card.html +18 -0
  187. package/components/app-mobile/sliders/slider-continuous.html +14 -0
  188. package/components/app-mobile/sliders/slider-discrete.html +21 -0
  189. package/components/app-mobile/social/chat-bubble-received.html +15 -0
  190. package/components/app-mobile/social/chat-bubble-sent.html +16 -0
  191. package/components/app-mobile/social/notification-item.html +17 -0
  192. package/components/app-mobile/social/post-card.html +46 -0
  193. package/components/app-mobile/social/reaction-bar.html +29 -0
  194. package/components/app-mobile/social/story-circle.html +15 -0
  195. package/components/app-mobile/social/user-profile-card.html +29 -0
  196. package/components/app-mobile/surfaces/bottom-sheet.html +23 -0
  197. package/components/app-mobile/surfaces/nav-drawer.html +20 -0
  198. package/components/app-mobile/surfaces/nav-rail.html +14 -0
  199. package/components/app-mobile/surfaces/side-sheet.html +17 -0
  200. package/components/app-mobile/tabs/tabs-primary.html +13 -0
  201. package/components/app-mobile/tabs/tabs-secondary.html +13 -0
  202. package/components/app-mobile/toggles/checkbox.html +14 -0
  203. package/components/app-mobile/toggles/radio.html +14 -0
  204. package/components/app-mobile/toggles/switch.html +11 -0
  205. package/components/app-mobile/travel/booking-summary.html +51 -0
  206. package/components/app-mobile/travel/flight-card.html +41 -0
  207. package/components/app-mobile/travel/hotel-card.html +35 -0
  208. package/components/app-mobile/travel/itinerary-item.html +29 -0
  209. package/components/app-mobile/travel/map-pins.html +42 -0
  210. package/components/app-mobile/travel/travel-date-picker.html +72 -0
  211. package/components/common/decorations/abstract-lines.html +30 -0
  212. package/components/common/decorations/circle-rings.html +26 -0
  213. package/components/common/decorations/corner-decoration.html +27 -0
  214. package/components/common/decorations/dots-pattern.html +51 -0
  215. package/components/common/decorations/gradient-blob.html +19 -0
  216. package/components/common/decorations/mesh-gradient.html +32 -0
  217. package/components/common/decorations/sparkle-burst.html +35 -0
  218. package/components/common/decorations/wave-divider.html +17 -0
  219. package/components/common/illustrations/empty-cart.html +27 -0
  220. package/components/common/illustrations/empty-inbox.html +28 -0
  221. package/components/common/illustrations/empty-search.html +26 -0
  222. package/components/common/illustrations/error-404.html +29 -0
  223. package/components/common/illustrations/no-data.html +31 -0
  224. package/components/common/illustrations/success-check.html +33 -0
  225. package/components/common/illustrations/upload-cloud.html +23 -0
  226. package/components/common/illustrations/welcome.html +31 -0
  227. package/components/common/mockup-elements/avatar-placeholder.html +17 -0
  228. package/components/common/mockup-elements/browser-chrome.html +37 -0
  229. package/components/common/mockup-elements/chart-bar.html +42 -0
  230. package/components/common/mockup-elements/image-placeholder.html +27 -0
  231. package/components/common/mockup-elements/laptop-frame.html +32 -0
  232. package/components/common/mockup-elements/map-placeholder.html +39 -0
  233. package/components/common/mockup-elements/phone-frame.html +29 -0
  234. package/components/common/mockup-elements/status-bar-android.html +30 -0
  235. package/components/common/mockup-elements/status-bar-ios.html +26 -0
  236. package/components/common/mockup-elements/video-placeholder.html +29 -0
  237. package/components/common/ui-icons/icon-add-circle.html +12 -0
  238. package/components/common/ui-icons/icon-airdrop.html +10 -0
  239. package/components/common/ui-icons/icon-airplay.html +10 -0
  240. package/components/common/ui-icons/icon-apple-logo.html +10 -0
  241. package/components/common/ui-icons/icon-arrow-back.html +11 -0
  242. package/components/common/ui-icons/icon-arrow-down.html +10 -0
  243. package/components/common/ui-icons/icon-arrow-right.html +10 -0
  244. package/components/common/ui-icons/icon-arrow-up.html +10 -0
  245. package/components/common/ui-icons/icon-bag.html +10 -0
  246. package/components/common/ui-icons/icon-battery.html +10 -0
  247. package/components/common/ui-icons/icon-bluetooth.html +10 -0
  248. package/components/common/ui-icons/icon-bolt.html +10 -0
  249. package/components/common/ui-icons/icon-bookmark-fill.html +10 -0
  250. package/components/common/ui-icons/icon-bookmark.html +10 -0
  251. package/components/common/ui-icons/icon-bubble-left.html +10 -0
  252. package/components/common/ui-icons/icon-calendar.html +19 -0
  253. package/components/common/ui-icons/icon-camera.html +11 -0
  254. package/components/common/ui-icons/icon-cart.html +10 -0
  255. package/components/common/ui-icons/icon-checkmark.html +10 -0
  256. package/components/common/ui-icons/icon-chevron-down.html +10 -0
  257. package/components/common/ui-icons/icon-chevron-left.html +10 -0
  258. package/components/common/ui-icons/icon-chevron-right.html +10 -0
  259. package/components/common/ui-icons/icon-chevron-up.html +10 -0
  260. package/components/common/ui-icons/icon-clock.html +10 -0
  261. package/components/common/ui-icons/icon-creditcard.html +10 -0
  262. package/components/common/ui-icons/icon-doc.html +10 -0
  263. package/components/common/ui-icons/icon-download.html +10 -0
  264. package/components/common/ui-icons/icon-ellipsis-vertical.html +10 -0
  265. package/components/common/ui-icons/icon-ellipsis.html +10 -0
  266. package/components/common/ui-icons/icon-envelope.html +10 -0
  267. package/components/common/ui-icons/icon-eye-slash.html +10 -0
  268. package/components/common/ui-icons/icon-eye.html +10 -0
  269. package/components/common/ui-icons/icon-faceid.html +10 -0
  270. package/components/common/ui-icons/icon-favorite.html +10 -0
  271. package/components/common/ui-icons/icon-folder.html +10 -0
  272. package/components/common/ui-icons/icon-globe.html +10 -0
  273. package/components/common/ui-icons/icon-heart-fill.html +10 -0
  274. package/components/common/ui-icons/icon-heart.html +10 -0
  275. package/components/common/ui-icons/icon-home.html +10 -0
  276. package/components/common/ui-icons/icon-link.html +10 -0
  277. package/components/common/ui-icons/icon-list-bullet.html +10 -0
  278. package/components/common/ui-icons/icon-location.html +11 -0
  279. package/components/common/ui-icons/icon-lock.html +10 -0
  280. package/components/common/ui-icons/icon-magnifying-glass.html +10 -0
  281. package/components/common/ui-icons/icon-map.html +10 -0
  282. package/components/common/ui-icons/icon-menu-hamburger.html +12 -0
  283. package/components/common/ui-icons/icon-mic.html +10 -0
  284. package/components/common/ui-icons/icon-minus.html +10 -0
  285. package/components/common/ui-icons/icon-notification.html +11 -0
  286. package/components/common/ui-icons/icon-paperplane.html +10 -0
  287. package/components/common/ui-icons/icon-pause.html +10 -0
  288. package/components/common/ui-icons/icon-pencil.html +10 -0
  289. package/components/common/ui-icons/icon-person-2.html +10 -0
  290. package/components/common/ui-icons/icon-person-crop-circle.html +10 -0
  291. package/components/common/ui-icons/icon-phone-fill.html +10 -0
  292. package/components/common/ui-icons/icon-photo.html +10 -0
  293. package/components/common/ui-icons/icon-play-fill.html +10 -0
  294. package/components/common/ui-icons/icon-plus.html +10 -0
  295. package/components/common/ui-icons/icon-profile.html +11 -0
  296. package/components/common/ui-icons/icon-qrcode.html +10 -0
  297. package/components/common/ui-icons/icon-settings.html +11 -0
  298. package/components/common/ui-icons/icon-share.html +14 -0
  299. package/components/common/ui-icons/icon-slider-horizontal.html +10 -0
  300. package/components/common/ui-icons/icon-square-grid.html +10 -0
  301. package/components/common/ui-icons/icon-star-fill.html +10 -0
  302. package/components/common/ui-icons/icon-star.html +10 -0
  303. package/components/common/ui-icons/icon-touchid.html +10 -0
  304. package/components/common/ui-icons/icon-trash.html +10 -0
  305. package/components/common/ui-icons/icon-upload.html +10 -0
  306. package/components/common/ui-icons/icon-video.html +10 -0
  307. package/components/common/ui-icons/icon-wifi.html +10 -0
  308. package/components/common/ui-icons/icon-xmark.html +10 -0
  309. package/components/componentmap-app-mobile.md +210 -0
  310. package/components/componentmap-web.md +206 -0
  311. package/components/web/README.md +110 -0
  312. package/components/web/account/payment-method.html +13 -0
  313. package/components/web/account/profile-card.html +18 -0
  314. package/components/web/account/subscription-card.html +21 -0
  315. package/components/web/badges/badge-set.html +14 -0
  316. package/components/web/buttons/button-danger.html +10 -0
  317. package/components/web/buttons/button-ghost.html +10 -0
  318. package/components/web/buttons/button-group.html +12 -0
  319. package/components/web/buttons/button-icon.html +10 -0
  320. package/components/web/buttons/button-primary.html +11 -0
  321. package/components/web/buttons/button-secondary.html +10 -0
  322. package/components/web/cards/card-basic.html +11 -0
  323. package/components/web/cards/card-feature.html +12 -0
  324. package/components/web/cards/card-image.html +16 -0
  325. package/components/web/cards/card-pricing.html +21 -0
  326. package/components/web/cards/card-stat.html +15 -0
  327. package/components/web/cards/card-testimonial.html +21 -0
  328. package/components/web/cart/cart-page.html +30 -0
  329. package/components/web/cart/checkout-form.html +27 -0
  330. package/components/web/cart/order-confirmation.html +24 -0
  331. package/components/web/charts/chart-area.html +25 -0
  332. package/components/web/charts/chart-bar.html +19 -0
  333. package/components/web/charts/chart-donut.html +27 -0
  334. package/components/web/content/author-card.html +15 -0
  335. package/components/web/content/blog-card-horizontal.html +16 -0
  336. package/components/web/cta/cta-centered.html +15 -0
  337. package/components/web/cta/cta-newsletter.html +16 -0
  338. package/components/web/cta/cta-with-image.html +17 -0
  339. package/components/web/data-display/accordion.html +45 -0
  340. package/components/web/data-display/grid-view.html +21 -0
  341. package/components/web/data-display/list-view.html +27 -0
  342. package/components/web/data-display/progress-steps.html +39 -0
  343. package/components/web/data-display/rating-stars.html +38 -0
  344. package/components/web/data-display/stat-card-compact.html +32 -0
  345. package/components/web/data-display/stat-card-large.html +34 -0
  346. package/components/web/data-display/table-selectable.html +127 -0
  347. package/components/web/data-display/table-sortable.html +120 -0
  348. package/components/web/data-display/tag-group.html +25 -0
  349. package/components/web/data-display/timeline-horizontal.html +55 -0
  350. package/components/web/data-display/timeline-vertical.html +76 -0
  351. package/components/web/data-display/tree-view.html +86 -0
  352. package/components/web/dividers/divider-text.html +8 -0
  353. package/components/web/ecommerce/coupon-input.html +11 -0
  354. package/components/web/ecommerce/product-card-grid.html +29 -0
  355. package/components/web/ecommerce/product-card-list.html +32 -0
  356. package/components/web/features/features-alternating.html +35 -0
  357. package/components/web/features/features-bento.html +43 -0
  358. package/components/web/features/features-icon-list.html +44 -0
  359. package/components/web/feedback/alert-banner.html +12 -0
  360. package/components/web/feedback/empty-state-error.html +18 -0
  361. package/components/web/feedback/empty-state-no-data.html +18 -0
  362. package/components/web/feedback/empty-state-no-search.html +15 -0
  363. package/components/web/feedback/empty-state.html +16 -0
  364. package/components/web/feedback/loading-spinner.html +14 -0
  365. package/components/web/feedback/progress-bar.html +11 -0
  366. package/components/web/feedback/skeleton-card.html +17 -0
  367. package/components/web/feedback/skeleton-list.html +45 -0
  368. package/components/web/feedback/skeleton.html +16 -0
  369. package/components/web/feedback/toast-error.html +12 -0
  370. package/components/web/feedback/toast-info.html +12 -0
  371. package/components/web/feedback/toast-success.html +12 -0
  372. package/components/web/feedback/tooltip.html +8 -0
  373. package/components/web/forms/date-picker.html +67 -0
  374. package/components/web/forms/file-upload.html +16 -0
  375. package/components/web/forms/form-contact.html +35 -0
  376. package/components/web/forms/form-login.html +29 -0
  377. package/components/web/forms/form-search-filters.html +57 -0
  378. package/components/web/forms/form-signup.html +35 -0
  379. package/components/web/heroes/hero-gradient.html +20 -0
  380. package/components/web/heroes/hero-image-bg.html +21 -0
  381. package/components/web/heroes/hero-video.html +17 -0
  382. package/components/web/inputs/checkbox.html +11 -0
  383. package/components/web/inputs/date-input.html +15 -0
  384. package/components/web/inputs/file-upload.html +12 -0
  385. package/components/web/inputs/radio-group.html +15 -0
  386. package/components/web/inputs/search-command.html +12 -0
  387. package/components/web/inputs/select.html +14 -0
  388. package/components/web/inputs/tag-input.html +15 -0
  389. package/components/web/inputs/text-input.html +11 -0
  390. package/components/web/inputs/textarea.html +11 -0
  391. package/components/web/inputs/toggle.html +11 -0
  392. package/components/web/job/candidate-profile.html +47 -0
  393. package/components/web/job/job-listing.html +44 -0
  394. package/components/web/job/resume-section.html +41 -0
  395. package/components/web/job/salary-range.html +19 -0
  396. package/components/web/layout/cta-banner.html +15 -0
  397. package/components/web/layout/features-grid.html +31 -0
  398. package/components/web/layout/hero-centered.html +19 -0
  399. package/components/web/layout/hero-split.html +21 -0
  400. package/components/web/layout/pricing-section.html +37 -0
  401. package/components/web/layout/stats-row.html +13 -0
  402. package/components/web/logos/logo-grid.html +20 -0
  403. package/components/web/logos/logo-ticker.html +19 -0
  404. package/components/web/marketing/cta-simple.html +18 -0
  405. package/components/web/marketing/cta-split.html +20 -0
  406. package/components/web/marketing/faq-accordion.html +55 -0
  407. package/components/web/marketing/feature-centered.html +35 -0
  408. package/components/web/marketing/feature-grid-2col.html +58 -0
  409. package/components/web/marketing/feature-grid-3col.html +44 -0
  410. package/components/web/marketing/footer-complex.html +86 -0
  411. package/components/web/marketing/footer-simple.html +59 -0
  412. package/components/web/marketing/hero-centered.html +44 -0
  413. package/components/web/marketing/hero-split-left.html +41 -0
  414. package/components/web/marketing/hero-split-right.html +35 -0
  415. package/components/web/marketing/logo-cloud.html +18 -0
  416. package/components/web/marketing/newsletter-signup.html +25 -0
  417. package/components/web/marketing/pricing-3tier.html +72 -0
  418. package/components/web/marketing/pricing-toggle.html +85 -0
  419. package/components/web/marketing/social-proof-bar.html +32 -0
  420. package/components/web/marketing/stats-row.html +45 -0
  421. package/components/web/marketing/team-grid.html +65 -0
  422. package/components/web/marketing/testimonial-carousel.html +45 -0
  423. package/components/web/marketing/testimonial-grid.html +75 -0
  424. package/components/web/media/blog-post-card.html +24 -0
  425. package/components/web/media/comment-single.html +26 -0
  426. package/components/web/media/image-gallery-grid.html +18 -0
  427. package/components/web/media/rich-text-block.html +20 -0
  428. package/components/web/media/testimonial-quote.html +20 -0
  429. package/components/web/media/video-player.html +44 -0
  430. package/components/web/menus/dropdown-menu.html +14 -0
  431. package/components/web/metrics/kpi-row.html +13 -0
  432. package/components/web/modals/modal-basic.html +21 -0
  433. package/components/web/modals/modal-form.html +22 -0
  434. package/components/web/navbars/breadcrumb.html +14 -0
  435. package/components/web/navbars/footer.html +35 -0
  436. package/components/web/navbars/sidebar-dark.html +21 -0
  437. package/components/web/navbars/sidebar.html +23 -0
  438. package/components/web/navbars/topnav-search.html +25 -0
  439. package/components/web/navbars/topnav.html +20 -0
  440. package/components/web/navigation/mega-menu.html +92 -0
  441. package/components/web/navigation/pagination.html +43 -0
  442. package/components/web/navigation/sidebar-collapsed.html +93 -0
  443. package/components/web/navigation/sidebar-expanded.html +121 -0
  444. package/components/web/navigation/stepper-horizontal.html +51 -0
  445. package/components/web/patterns/accordion.html +19 -0
  446. package/components/web/patterns/activity-feed.html +25 -0
  447. package/components/web/patterns/auth-login.html +24 -0
  448. package/components/web/patterns/avatar-group.html +13 -0
  449. package/components/web/patterns/calendar-month.html +44 -0
  450. package/components/web/patterns/category-pills.html +15 -0
  451. package/components/web/patterns/chat-web.html +24 -0
  452. package/components/web/patterns/code-editor.html +34 -0
  453. package/components/web/patterns/comparison-table.html +39 -0
  454. package/components/web/patterns/cookie-banner.html +14 -0
  455. package/components/web/patterns/error-page.html +16 -0
  456. package/components/web/patterns/file-list.html +24 -0
  457. package/components/web/patterns/filter-toolbar.html +14 -0
  458. package/components/web/patterns/kanban-column.html +27 -0
  459. package/components/web/patterns/notification-list.html +26 -0
  460. package/components/web/patterns/order-tracker.html +16 -0
  461. package/components/web/patterns/pagination.html +16 -0
  462. package/components/web/patterns/product-card-web.html +23 -0
  463. package/components/web/patterns/settings-form.html +24 -0
  464. package/components/web/patterns/stepper.html +16 -0
  465. package/components/web/patterns/user-table-row.html +15 -0
  466. package/components/web/patterns/video-player.html +26 -0
  467. package/components/web/presentation/slide-content.html +17 -0
  468. package/components/web/presentation/slide-title.html +13 -0
  469. package/components/web/pricing/pricing-table.html +51 -0
  470. package/components/web/pricing/pricing-toggle.html +62 -0
  471. package/components/web/print/business-card.html +20 -0
  472. package/components/web/products/product-card-horizontal.html +19 -0
  473. package/components/web/products/product-detail.html +39 -0
  474. package/components/web/products/product-grid.html +13 -0
  475. package/components/web/products/review-section.html +29 -0
  476. package/components/web/promotions/coupon-card.html +17 -0
  477. package/components/web/promotions/promo-banner.html +24 -0
  478. package/components/web/real-estate/agent-contact.html +32 -0
  479. package/components/web/real-estate/listing-detail-hero.html +44 -0
  480. package/components/web/real-estate/price-range-slider.html +20 -0
  481. package/components/web/real-estate/property-card.html +38 -0
  482. package/components/web/real-estate/property-map-pin.html +19 -0
  483. package/components/web/real-estate/virtual-tour-button.html +17 -0
  484. package/components/web/saas/api-key-row.html +31 -0
  485. package/components/web/saas/audit-log-row.html +21 -0
  486. package/components/web/saas/billing-plan.html +50 -0
  487. package/components/web/saas/kpi-row.html +61 -0
  488. package/components/web/saas/team-member-row.html +30 -0
  489. package/components/web/saas/webhook-config.html +44 -0
  490. package/components/web/screenshots/app-screenshot.html +32 -0
  491. package/components/web/screenshots/screenshot-gallery.html +45 -0
  492. package/components/web/social/comment-thread.html +75 -0
  493. package/components/web/social-media/instagram-post.html +17 -0
  494. package/components/web/social-proof/logo-cloud.html +18 -0
  495. package/components/web/social-proof/testimonial-carousel.html +30 -0
  496. package/components/web/surfaces/slide-over.html +20 -0
  497. package/components/web/tables/data-table.html +41 -0
  498. package/components/web/tables/table-simple.html +13 -0
  499. package/components/web/tabs/tabs-pills.html +12 -0
  500. package/components/web/tabs/tabs-underline.html +13 -0
  501. package/components/web/toggles/toggle-dark-mode.html +19 -0
  502. package/components/web/toggles/toggle-group.html +38 -0
  503. package/components/web/toggles/toggle-switch.html +14 -0
  504. package/components/web/widgets/api-key-row.html +16 -0
  505. package/components/web/widgets/billing-card.html +14 -0
  506. package/components/web/widgets/changelog-item.html +15 -0
  507. package/components/web/widgets/integration-card.html +15 -0
  508. package/components/web/widgets/onboarding-checklist.html +18 -0
  509. package/components/web/widgets/pricing-toggle.html +13 -0
  510. package/components/web/widgets/team-member-row.html +13 -0
  511. package/components/web/widgets/usage-meter.html +12 -0
  512. package/package.json +46 -0
  513. package/skills/README.md +35 -0
  514. package/skills/contribute.md +267 -0
  515. package/skills/design.md +470 -0
  516. package/skills/flutter.md +156 -0
  517. package/skills/nextjs.md +143 -0
  518. package/skills/react-native.md +258 -0
  519. package/skills/react.md +171 -0
  520. package/skills/svelte.md +95 -0
  521. package/skills/swiftui.md +171 -0
  522. package/skills/tailwind.md +108 -0
  523. package/skills/vue.md +111 -0
  524. package/src/commands/add.js +51 -0
  525. package/src/commands/convert.js +120 -0
  526. package/src/commands/design.js +89 -0
  527. package/src/commands/init.js +136 -0
  528. package/src/commands/list.js +52 -0
  529. package/src/commands/search.js +40 -0
  530. package/src/lib/index.js +100 -0
@@ -0,0 +1,171 @@
1
+ # Skill: SwiftUI (iOS)
2
+
3
+ Build, design, and convert DesignKit UI using SwiftUI.
4
+
5
+ ## Your role
6
+
7
+ You are an iOS developer with strong UI skills.
8
+ You can:
9
+ - **Design** a screen from scratch using the token system
10
+ - **Convert** a DesignKit HTML file to SwiftUI Views
11
+ - **Build** a full feature (onboarding, tab bar app, list + detail, settings, etc.)
12
+
13
+ Read the request and determine which mode applies.
14
+
15
+ ## Token struct (`Tokens.swift`)
16
+
17
+ ```swift
18
+ import SwiftUI
19
+
20
+ struct T {
21
+ // Colors
22
+ static let primary = Color(hex: "#6366F1")
23
+ static let primaryText = Color.white
24
+ static let bg = Color(hex: "#FFFFFF")
25
+ static let surface = Color(hex: "#F8FAFC")
26
+ static let surface2 = Color(hex: "#F1F5F9")
27
+ static let textPrimary = Color(hex: "#0F172A")
28
+ static let text2 = Color(hex: "#475569")
29
+ static let text3 = Color(hex: "#94A3B8")
30
+ static let border = Color(hex: "#E2E8F0")
31
+ static let success = Color(hex: "#22C55E")
32
+ static let error = Color(hex: "#EF4444")
33
+ static let warning = Color(hex: "#F59E0B")
34
+
35
+ // Border radius
36
+ static let radiusSm: CGFloat = 6
37
+ static let radius: CGFloat = 10
38
+ static let radiusLg: CGFloat = 14
39
+ static let radiusXl: CGFloat = 20
40
+
41
+ // Spacing
42
+ static let space1: CGFloat = 4
43
+ static let space2: CGFloat = 8
44
+ static let space3: CGFloat = 12
45
+ static let space4: CGFloat = 16
46
+ static let space5: CGFloat = 20
47
+ static let space6: CGFloat = 24
48
+ static let space8: CGFloat = 32
49
+
50
+ // Typography
51
+ static let fontSm: Font = .system(size: 13)
52
+ static let fontMd: Font = .system(size: 15)
53
+ static let fontLg: Font = .system(size: 17)
54
+ static let fontXl: Font = .system(size: 20, weight: .semibold)
55
+ static let font2xl: Font = .system(size: 24, weight: .bold)
56
+ static let font3xl: Font = .system(size: 32, weight: .bold)
57
+ }
58
+
59
+ // Hex color initializer
60
+ extension Color {
61
+ init(hex: String) {
62
+ let hex = hex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
63
+ var int: UInt64 = 0
64
+ Scanner(string: hex).scanHexInt64(&int)
65
+ let r = Double((int >> 16) & 0xFF) / 255
66
+ let g = Double((int >> 8) & 0xFF) / 255
67
+ let b = Double(int & 0xFF) / 255
68
+ self.init(red: r, green: g, blue: b)
69
+ }
70
+ }
71
+ ```
72
+
73
+ ## HTML → SwiftUI mapping
74
+
75
+ | HTML | SwiftUI |
76
+ |------|---------|
77
+ | `<div style="display:flex">` | `HStack {}` |
78
+ | `<div style="flex-direction:column">` | `VStack(alignment: .leading) {}` |
79
+ | `<div style="position:relative">` | `ZStack {}` |
80
+ | `<div style="overflow-y:auto">` | `ScrollView {}` |
81
+ | `<div style="background:X; border-radius:Y; padding:Z">` | `.background(X).clipShape(RoundedRectangle(cornerRadius: Y)).padding(Z)` |
82
+ | `<button>` | `Button {}` |
83
+ | `<input>` | `TextField("placeholder", text: $value)` |
84
+ | `<img>` | `AsyncImage(url:)` or `Rectangle().fill(Color.gray.opacity(0.2))` |
85
+ | `<span>` / `<p>` | `Text("...")` |
86
+ | `<h1>` | `Text("...").font(.largeTitle).fontWeight(.bold)` |
87
+ | `gap: 16px` | `VStack(spacing: 16)` or `HStack(spacing: 16)` |
88
+ | `flex: 1` | `.frame(maxWidth: .infinity)` |
89
+
90
+ ## Output format
91
+
92
+ ```swift
93
+ import SwiftUI
94
+
95
+ struct ScreenNameView: View {
96
+ // @State, @Binding, @ObservedObject here
97
+
98
+ var body: some View {
99
+ NavigationStack {
100
+ ScrollView {
101
+ VStack(spacing: T.space4) {
102
+ // content here
103
+ }
104
+ .padding(T.space4)
105
+ }
106
+ .background(T.bg)
107
+ .navigationTitle("Screen Name")
108
+ .navigationBarTitleDisplayMode(.large)
109
+ }
110
+ }
111
+ }
112
+
113
+ #Preview {
114
+ ScreenNameView()
115
+ }
116
+ ```
117
+
118
+ ## iOS-specific patterns
119
+
120
+ ```swift
121
+ // Safe area + tab bar
122
+ TabView {
123
+ HomeView().tabItem { Label("Home", systemImage: "house.fill") }
124
+ SearchView().tabItem { Label("Search", systemImage: "magnifyingglass") }
125
+ }
126
+
127
+ // Card
128
+ RoundedRectangle(cornerRadius: T.radiusLg)
129
+ .fill(T.surface)
130
+ .overlay(
131
+ VStack(alignment: .leading, spacing: T.space2) {
132
+ Text("Title").font(T.fontLg).fontWeight(.semibold)
133
+ Text("Subtitle").font(T.fontSm).foregroundColor(T.text2)
134
+ }
135
+ .padding(T.space4)
136
+ , alignment: .topLeading
137
+ )
138
+ .shadow(color: .black.opacity(0.08), radius: 3, y: 1)
139
+
140
+ // Gradient card
141
+ LinearGradient(colors: [T.primary, Color(hex: "#8B5CF6")],
142
+ startPoint: .topLeading, endPoint: .bottomTrailing)
143
+ .clipShape(RoundedRectangle(cornerRadius: T.radiusXl))
144
+ ```
145
+
146
+ ## Rules
147
+
148
+ - **`T.*` tokens** — never hardcode Color or CGFloat
149
+ - **`@State` / `@Binding`** for local vs passed state
150
+ - **`NavigationStack`** not deprecated `NavigationView`
151
+ - **`.frame(maxWidth: .infinity)`** for full-width elements
152
+ - **`Spacer()`** for flex alignment
153
+ - **iOS 17+** target — use latest SwiftUI APIs
154
+
155
+ ## Example prompt
156
+
157
+ ```
158
+ Read AI-AGENT.md and skills/swiftui.md, then:
159
+
160
+ Design and build a finance app home screen in SwiftUI:
161
+ - Navigation bar: greeting + notification bell icon
162
+ - Balance card: gradient (indigo → purple), large balance $12,450, +12.5% badge
163
+ - Quick actions HStack: Send, Receive, Pay, More (icon + label)
164
+ - "Recent Transactions" section header
165
+ - 4 transaction rows (icon, merchant, date, amount with color)
166
+ - TabView bottom bar: Home, Cards, Analytics, Profile
167
+
168
+ Output:
169
+ - HomeView.swift
170
+ - Tokens.swift
171
+ ```
@@ -0,0 +1,108 @@
1
+ # Skill: Tailwind CSS v4
2
+
3
+ Build, design, and convert DesignKit UI using Tailwind CSS.
4
+
5
+ ## Your role
6
+
7
+ You are a frontend developer with strong UI skills, using Tailwind CSS v4.
8
+ You can:
9
+ - **Design** a component or page from scratch with Tailwind utility classes
10
+ - **Convert** a DesignKit HTML file (inline styles → Tailwind classes)
11
+ - **Build** a full section or feature (hero, pricing page, dashboard layout, etc.)
12
+
13
+ Read the request and determine which mode applies.
14
+
15
+ ## Token mapping to Tailwind
16
+
17
+ ```
18
+ --kit-primary → bg-indigo-500 / text-indigo-500 / border-indigo-500
19
+ --kit-bg → bg-white
20
+ --kit-surface → bg-slate-50
21
+ --kit-surface-2 → bg-slate-100
22
+ --kit-text → text-slate-900
23
+ --kit-text-2 → text-slate-600
24
+ --kit-text-3 → text-slate-400
25
+ --kit-border → border-slate-200
26
+ --kit-radius → rounded-[10px] or rounded-lg
27
+ --kit-radius-sm → rounded-md
28
+ --kit-radius-lg → rounded-xl
29
+ --kit-radius-full → rounded-full
30
+ --kit-shadow-sm → shadow-sm
31
+ --kit-shadow → shadow-md
32
+ --kit-shadow-lg → shadow-lg
33
+ --kit-space-4 → p-4 / gap-4 / m-4
34
+ --kit-space-6 → p-6 / gap-6
35
+ --kit-text-sm → text-sm
36
+ --kit-text-md → text-base
37
+ --kit-text-lg → text-lg
38
+ --kit-text-xl → text-xl
39
+ --kit-text-2xl → text-2xl
40
+ --kit-text-3xl → text-3xl
41
+ --kit-text-4xl → text-4xl / text-5xl
42
+ ```
43
+
44
+ ## Tailwind v4 CSS config
45
+
46
+ ```css
47
+ /* app.css */
48
+ @import "tailwindcss";
49
+
50
+ @theme {
51
+ --color-primary: #6366F1;
52
+ --color-surface: #F8FAFC;
53
+ --color-surface-2: #F1F5F9;
54
+ --color-kit-text: #0F172A;
55
+ --color-kit-text-2: #475569;
56
+ --color-kit-text-3: #94A3B8;
57
+ --radius-kit: 10px;
58
+ --font-kit: 'Inter', system-ui, sans-serif;
59
+ }
60
+ ```
61
+
62
+ ## Output format
63
+
64
+ ```html
65
+ <!-- Card example -->
66
+ <div class="bg-white rounded-xl border border-slate-200 shadow-sm p-4">
67
+ <h2 class="text-base font-semibold text-slate-900">Card Title</h2>
68
+ <p class="text-sm text-slate-500 mt-1">Supporting text goes here.</p>
69
+ </div>
70
+
71
+ <!-- Button example -->
72
+ <button class="h-10 px-5 bg-indigo-500 text-white text-sm font-medium rounded-lg
73
+ hover:bg-indigo-600 active:bg-indigo-700 transition-colors">
74
+ Get Started
75
+ </button>
76
+ ```
77
+
78
+ ## Rules
79
+
80
+ - **Utility classes only** — no `style=""` in output
81
+ - **Semantic HTML** — `<button>`, `<nav>`, `<a>`, `<ul>/<li>`
82
+ - **`hover:` / `focus:` / `active:`** variants for interactive elements
83
+ - **`dark:` variants** if dark mode is requested
84
+ - **`transition-colors`** on all interactive elements
85
+ - **No arbitrary values unless necessary** — prefer Tailwind scale
86
+ - **`gap-*` not `space-x-*`** for flex/grid spacing
87
+
88
+ ## Example prompt
89
+
90
+ ```
91
+ Read skills/tailwind.md, then convert this component to Tailwind CSS:
92
+ [paste HTML or file path]
93
+
94
+ Use Tailwind v4 utility classes. Keep the same visual design.
95
+ ```
96
+
97
+ Or design from scratch:
98
+
99
+ ```
100
+ Read AI-AGENT.md and skills/tailwind.md, then:
101
+
102
+ Design a SaaS top navigation bar using Tailwind CSS:
103
+ - Logo left
104
+ - Nav links center: Features, Pricing, Docs, Blog
105
+ - Right: "Sign in" ghost button + "Get started" primary button
106
+
107
+ Output: components/Navbar.html
108
+ ```
package/skills/vue.md ADDED
@@ -0,0 +1,111 @@
1
+ # Skill: Vue 3 (Composition API + TypeScript)
2
+
3
+ Build, design, and convert DesignKit UI using Vue 3.
4
+
5
+ ## Your role
6
+
7
+ You are a Vue 3 developer with strong UI skills.
8
+ You can:
9
+ - **Design** a component or view from scratch using the token system
10
+ - **Convert** a DesignKit HTML file to Vue SFC components
11
+ - **Build** a full feature (auth page, dashboard layout, form with validation, etc.)
12
+
13
+ Read the request and determine which mode applies.
14
+
15
+ ## Token composable (output to `composables/useTokens.ts`)
16
+
17
+ ```ts
18
+ // composables/useTokens.ts
19
+ export const tokens = {
20
+ primary: '#6366F1',
21
+ primaryText: '#FFFFFF',
22
+ bg: '#FFFFFF',
23
+ surface: '#F8FAFC',
24
+ surface2: '#F1F5F9',
25
+ text: '#0F172A',
26
+ text2: '#475569',
27
+ text3: '#94A3B8',
28
+ border: '#E2E8F0',
29
+ radius: '10px',
30
+ radiusSm: '6px',
31
+ radiusLg: '14px',
32
+ radiusFull: '9999px',
33
+ shadow: '0 4px 12px rgba(0,0,0,0.10)',
34
+ font: "'Inter', system-ui, sans-serif",
35
+ } as const
36
+
37
+ export function useTokens() {
38
+ return tokens
39
+ }
40
+ ```
41
+
42
+ ## Output format
43
+
44
+ ```vue
45
+ <script setup lang="ts">
46
+ import { ref, computed } from 'vue'
47
+ import { useTokens } from '@/composables/useTokens'
48
+
49
+ // props
50
+ interface Props {
51
+ title?: string
52
+ }
53
+ const props = withDefaults(defineProps<Props>(), {
54
+ title: 'Default'
55
+ })
56
+
57
+ // emits
58
+ const emit = defineEmits<{
59
+ change: [value: string]
60
+ }>()
61
+
62
+ const t = useTokens()
63
+ const isOpen = ref(false)
64
+ </script>
65
+
66
+ <template>
67
+ <div :style="{ fontFamily: t.font, background: t.bg, color: t.text }">
68
+ <!-- template here -->
69
+ </div>
70
+ </template>
71
+ ```
72
+
73
+ ## Rules
74
+
75
+ - **`<script setup lang="ts">`** — always, never Options API
76
+ - **`:style` binding** — use object syntax `:style="{ color: t.primary }"`
77
+ - **No scoped CSS** — use inline `:style` with tokens
78
+ - **`v-for` with `:key`** on all lists
79
+ - **`@click`, `@input`** for events — not `onclick`
80
+ - **`defineProps`, `defineEmits`, `defineExpose`** — typed
81
+ - **Semantic HTML** — `<button>`, `<nav>`, `<header>`, `<ul>/<li>`
82
+
83
+ ## Vue Router navigation
84
+
85
+ ```vue
86
+ <template>
87
+ <RouterLink to="/dashboard" :style="{ color: t.primary }">
88
+ Dashboard
89
+ </RouterLink>
90
+ </template>
91
+ ```
92
+
93
+ ## Example prompt
94
+
95
+ ```
96
+ Read AI-AGENT.md and skills/vue.md, then:
97
+
98
+ Design and build a mobile app login screen in Vue 3:
99
+ - Logo at top
100
+ - Email + password inputs
101
+ - "Sign in" button (full width, primary color)
102
+ - "Forgot password" link
103
+ - Divider + Google OAuth button
104
+ - "Don't have an account? Sign up" footer
105
+
106
+ Output:
107
+ - src/views/LoginView.vue
108
+ - src/components/ui/BaseButton.vue
109
+ - src/components/ui/BaseInput.vue
110
+ - src/composables/useTokens.ts
111
+ ```
@@ -0,0 +1,51 @@
1
+ import { buildIndex, searchComponents } from '../lib/index.js'
2
+ import { copyFileSync, mkdirSync, existsSync } from 'fs'
3
+ import { join, basename } from 'path'
4
+
5
+ export function addCommand(query, options) {
6
+ const { output } = options
7
+ const all = buildIndex()
8
+
9
+ // Exact match first
10
+ let component = all.find(c => c.id === query)
11
+
12
+ // Fuzzy match if not found
13
+ if (!component) {
14
+ const results = searchComponents(all, query)
15
+ if (results.length === 0) {
16
+ console.log(`\n ✗ No component found for "${query}"\n`)
17
+ console.log(' Try: designkit search <query>')
18
+ console.log(' Or: designkit list\n')
19
+ process.exit(1)
20
+ }
21
+ if (results.length === 1) {
22
+ component = results[0]
23
+ } else {
24
+ console.log(`\n Multiple matches for "${query}":\n`)
25
+ for (const c of results.slice(0, 10)) {
26
+ console.log(` ${c.id}`)
27
+ }
28
+ console.log(`\n Be more specific: designkit add ${results[0].id}\n`)
29
+ process.exit(1)
30
+ }
31
+ }
32
+
33
+ // Ensure output dir exists
34
+ if (!existsSync(output)) {
35
+ mkdirSync(output, { recursive: true })
36
+ }
37
+
38
+ const fileName = basename(component.file)
39
+ const dest = join(output, fileName)
40
+ copyFileSync(component.file, dest)
41
+
42
+ console.log()
43
+ console.log(` ✓ Added: ${component.name}`)
44
+ console.log(` From: ${component.relativePath}`)
45
+ console.log(` To: ${dest}`)
46
+ console.log()
47
+ console.log(` Open ${fileName} in a browser to preview.`)
48
+ console.log(` Make sure --kit-* tokens are defined in your CSS.`)
49
+ console.log(` Run "designkit init" to get a tokens.css file.`)
50
+ console.log()
51
+ }
@@ -0,0 +1,120 @@
1
+ import Anthropic from '@anthropic-ai/sdk'
2
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'
3
+ import { fileURLToPath } from 'url'
4
+ import { dirname, join, resolve, extname, basename } from 'path'
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url))
7
+ const ROOT = join(__dirname, '../../')
8
+
9
+ const FRAMEWORK_EXTENSIONS = {
10
+ react: '.jsx',
11
+ nextjs: '.jsx',
12
+ vue: '.vue',
13
+ svelte: '.svelte',
14
+ tailwind: '.html',
15
+ flutter: '.dart',
16
+ swiftui: '.swift',
17
+ 'react-native': '.jsx'
18
+ }
19
+
20
+ function loadSkill(name) {
21
+ const skillPath = join(ROOT, 'skills', `${name}.md`)
22
+ if (!existsSync(skillPath)) return ''
23
+ return readFileSync(skillPath, 'utf8')
24
+ }
25
+
26
+ function loadAgentContext() {
27
+ const agentPath = join(ROOT, 'AI-AGENT.md')
28
+ if (!existsSync(agentPath)) return ''
29
+ return readFileSync(agentPath, 'utf8')
30
+ }
31
+
32
+ export async function convertCommand(file, options) {
33
+ const apiKey = process.env.ANTHROPIC_API_KEY
34
+ if (!apiKey) {
35
+ console.error('Error: ANTHROPIC_API_KEY environment variable is required')
36
+ console.error('Set it with: export ANTHROPIC_API_KEY=your_key_here')
37
+ process.exit(1)
38
+ }
39
+
40
+ const framework = options.to
41
+ if (!framework) {
42
+ console.error('Error: --to <framework> is required')
43
+ console.error('Available: react, nextjs, vue, svelte, tailwind, flutter, swiftui, react-native')
44
+ process.exit(1)
45
+ }
46
+
47
+ if (!FRAMEWORK_EXTENSIONS[framework]) {
48
+ console.error(`Error: Unknown framework "${framework}"`)
49
+ console.error(`Available: ${Object.keys(FRAMEWORK_EXTENSIONS).join(', ')}`)
50
+ process.exit(1)
51
+ }
52
+
53
+ const inputPath = resolve(file)
54
+ if (!existsSync(inputPath)) {
55
+ console.error(`Error: File not found: ${file}`)
56
+ process.exit(1)
57
+ }
58
+
59
+ const htmlContent = readFileSync(inputPath, 'utf8')
60
+ const agentContext = loadAgentContext()
61
+ const skillContent = loadSkill(framework)
62
+
63
+ if (!skillContent) {
64
+ console.error(`Error: Skill file not found: skills/${framework}.md`)
65
+ process.exit(1)
66
+ }
67
+
68
+ const systemPrompt = [
69
+ agentContext,
70
+ '---',
71
+ `# Active Skill: ${framework} (Convert mode)`,
72
+ skillContent
73
+ ].join('\n\n')
74
+
75
+ const userMessage = `Convert the following HTML component to ${framework}.\n\nFollow the Convert mode instructions in the skill above.\n\n\`\`\`html\n${htmlContent}\n\`\`\``
76
+
77
+ const client = new Anthropic({ apiKey })
78
+
79
+ console.error(`\nConverting: ${file}`)
80
+ console.error(`Framework: ${framework}\n`)
81
+
82
+ // Determine output path
83
+ let outputPath = options.output
84
+ if (!outputPath) {
85
+ const name = basename(inputPath, extname(inputPath))
86
+ const ext = FRAMEWORK_EXTENSIONS[framework]
87
+ outputPath = resolve(dirname(inputPath), `${name}${ext}`)
88
+ } else {
89
+ outputPath = resolve(outputPath)
90
+ }
91
+
92
+ const dir = dirname(outputPath)
93
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
94
+
95
+ let fullOutput = ''
96
+
97
+ const stream = client.messages.stream({
98
+ model: 'claude-opus-4-6',
99
+ max_tokens: 8000,
100
+ thinking: { type: 'adaptive' },
101
+ system: systemPrompt,
102
+ messages: [
103
+ { role: 'user', content: userMessage }
104
+ ]
105
+ })
106
+
107
+ stream.on('text', (text) => {
108
+ process.stdout.write(text)
109
+ fullOutput += text
110
+ })
111
+
112
+ await stream.finalMessage()
113
+
114
+ // Extract code block if present
115
+ const codeMatch = fullOutput.match(/```(?:\w+)?\n([\s\S]*?)```/)
116
+ const codeToWrite = codeMatch ? codeMatch[1] : fullOutput
117
+
118
+ writeFileSync(outputPath, codeToWrite, 'utf8')
119
+ console.error(`\n\nSaved to: ${outputPath}`)
120
+ }
@@ -0,0 +1,89 @@
1
+ import Anthropic from '@anthropic-ai/sdk'
2
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'
3
+ import { fileURLToPath } from 'url'
4
+ import { dirname, join, resolve } from 'path'
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url))
7
+ const ROOT = join(__dirname, '../../')
8
+
9
+ function loadSkill(name) {
10
+ const skillPath = join(ROOT, 'skills', `${name}.md`)
11
+ if (!existsSync(skillPath)) return ''
12
+ return readFileSync(skillPath, 'utf8')
13
+ }
14
+
15
+ function loadAgentContext() {
16
+ const agentPath = join(ROOT, 'AI-AGENT.md')
17
+ if (!existsSync(agentPath)) return ''
18
+ return readFileSync(agentPath, 'utf8')
19
+ }
20
+
21
+ export async function designCommand(prompt, options) {
22
+ const apiKey = process.env.ANTHROPIC_API_KEY
23
+ if (!apiKey) {
24
+ console.error('Error: ANTHROPIC_API_KEY environment variable is required')
25
+ console.error('Set it with: export ANTHROPIC_API_KEY=your_key_here')
26
+ process.exit(1)
27
+ }
28
+
29
+ const skill = options.skill || 'design'
30
+ const validSkills = ['design', 'react', 'nextjs', 'vue', 'svelte', 'tailwind', 'flutter', 'swiftui', 'react-native']
31
+
32
+ if (!validSkills.includes(skill)) {
33
+ console.error(`Error: Unknown skill "${skill}". Available: ${validSkills.join(', ')}`)
34
+ process.exit(1)
35
+ }
36
+
37
+ const agentContext = loadAgentContext()
38
+ const skillContent = loadSkill(skill)
39
+
40
+ if (!skillContent) {
41
+ console.error(`Error: Skill file not found: skills/${skill}.md`)
42
+ process.exit(1)
43
+ }
44
+
45
+ const systemPrompt = [
46
+ agentContext,
47
+ '---',
48
+ `# Active Skill: ${skill}`,
49
+ skillContent
50
+ ].join('\n\n')
51
+
52
+ const client = new Anthropic({ apiKey })
53
+
54
+ console.error(`\nDesigning with skill: ${skill}`)
55
+ console.error(`Prompt: ${prompt}\n`)
56
+
57
+ const outputFile = options.output
58
+
59
+ if (outputFile) {
60
+ const dir = resolve(dirname(outputFile))
61
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
62
+ }
63
+
64
+ let fullOutput = ''
65
+
66
+ const stream = client.messages.stream({
67
+ model: 'claude-opus-4-6',
68
+ max_tokens: 8000,
69
+ thinking: { type: 'adaptive' },
70
+ system: systemPrompt,
71
+ messages: [
72
+ { role: 'user', content: prompt }
73
+ ]
74
+ })
75
+
76
+ stream.on('text', (text) => {
77
+ process.stdout.write(text)
78
+ fullOutput += text
79
+ })
80
+
81
+ await stream.finalMessage()
82
+
83
+ if (outputFile) {
84
+ writeFileSync(resolve(outputFile), fullOutput, 'utf8')
85
+ console.error(`\n\nSaved to: ${outputFile}`)
86
+ } else {
87
+ process.stdout.write('\n')
88
+ }
89
+ }