@ikas/component-cli 0.132.0 → 1.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 (398) hide show
  1. package/dist/commands/config.d.ts.map +1 -1
  2. package/dist/commands/config.js +43 -1
  3. package/dist/commands/config.js.map +1 -1
  4. package/dist/commands/create.d.ts +8 -3
  5. package/dist/commands/create.d.ts.map +1 -1
  6. package/dist/commands/create.js +8 -227
  7. package/dist/commands/create.js.map +1 -1
  8. package/dist/commands/dev.d.ts.map +1 -1
  9. package/dist/commands/dev.js +134 -32
  10. package/dist/commands/dev.js.map +1 -1
  11. package/dist/commands/proxy.js +1 -1
  12. package/dist/commands/proxy.js.map +1 -1
  13. package/dist/utils/component-helpers.d.ts +13 -0
  14. package/dist/utils/component-helpers.d.ts.map +1 -1
  15. package/dist/utils/component-helpers.js +52 -0
  16. package/dist/utils/component-helpers.js.map +1 -1
  17. package/dist/utils/websocket-server.d.ts +12 -0
  18. package/dist/utils/websocket-server.d.ts.map +1 -1
  19. package/dist/utils/websocket-server.js +25 -0
  20. package/dist/utils/websocket-server.js.map +1 -1
  21. package/package.json +4 -5
  22. package/bin/create-ikas-component.js +0 -8
  23. package/templates/create/README.md +0 -50
  24. package/templates/create/claude-md +0 -275
  25. package/templates/create/cursorrules +0 -123
  26. package/templates/create/gitignore +0 -6
  27. package/templates/create/ikas.config.json +0 -95
  28. package/templates/create/mcp.json +0 -10
  29. package/templates/create/package.json +0 -22
  30. package/templates/create/src/components/ExampleComponent/index.tsx +0 -22
  31. package/templates/create/src/components/ExampleComponent/styles.css +0 -36
  32. package/templates/create/src/components/ExampleComponent/types.ts +0 -7
  33. package/templates/create/src/components/ExampleSection/index.tsx +0 -14
  34. package/templates/create/src/components/ExampleSection/styles.css +0 -29
  35. package/templates/create/src/components/ExampleSection/types.ts +0 -6
  36. package/templates/create/src/components/index.ts +0 -2
  37. package/templates/create/src/global-types.ts +0 -5
  38. package/templates/create/src/global.css +0 -29
  39. package/templates/create/src/ikas-component-utils.d.ts +0 -3
  40. package/templates/create/tsconfig.json +0 -30
  41. package/templates/create/vite.config.ts +0 -15
  42. package/templates/create-full/README.md +0 -78
  43. package/templates/create-full/claude-md +0 -752
  44. package/templates/create-full/cursorrules +0 -117
  45. package/templates/create-full/gitignore +0 -4
  46. package/templates/create-full/ikas.config.json +0 -5009
  47. package/templates/create-full/mcp.json +0 -10
  48. package/templates/create-full/package.json +0 -23
  49. package/templates/create-full/src/components/AccountAddresses/components/AddressCard/index.tsx +0 -55
  50. package/templates/create-full/src/components/AccountAddresses/components/AddressCard/styles.css +0 -46
  51. package/templates/create-full/src/components/AccountAddresses/components/AddressModal/index.tsx +0 -298
  52. package/templates/create-full/src/components/AccountAddresses/components/AddressModal/styles.css +0 -23
  53. package/templates/create-full/src/components/AccountAddresses/index.tsx +0 -127
  54. package/templates/create-full/src/components/AccountAddresses/styles.css +0 -41
  55. package/templates/create-full/src/components/AccountAddresses/types.ts +0 -15
  56. package/templates/create-full/src/components/AccountFavorites/index.tsx +0 -82
  57. package/templates/create-full/src/components/AccountFavorites/styles.css +0 -52
  58. package/templates/create-full/src/components/AccountFavorites/types.ts +0 -7
  59. package/templates/create-full/src/components/AccountInfo/components/AccountSidebar/index.tsx +0 -171
  60. package/templates/create-full/src/components/AccountInfo/components/AccountSidebar/styles.css +0 -144
  61. package/templates/create-full/src/components/AccountInfo/index.tsx +0 -91
  62. package/templates/create-full/src/components/AccountInfo/styles.css +0 -35
  63. package/templates/create-full/src/components/AccountInfo/types.ts +0 -9
  64. package/templates/create-full/src/components/AccountInfoContent/index.tsx +0 -134
  65. package/templates/create-full/src/components/AccountInfoContent/styles.css +0 -57
  66. package/templates/create-full/src/components/AccountInfoContent/types.ts +0 -8
  67. package/templates/create-full/src/components/AccountOrderDetail/components/OrderHeader/index.tsx +0 -78
  68. package/templates/create-full/src/components/AccountOrderDetail/components/OrderHeader/styles.css +0 -46
  69. package/templates/create-full/src/components/AccountOrderDetail/components/OrderItemRow/index.tsx +0 -20
  70. package/templates/create-full/src/components/AccountOrderDetail/components/OrderItemRow/styles.css +0 -16
  71. package/templates/create-full/src/components/AccountOrderDetail/components/OrderLineItemDisplay/index.tsx +0 -112
  72. package/templates/create-full/src/components/AccountOrderDetail/components/OrderLineItemDisplay/styles.css +0 -86
  73. package/templates/create-full/src/components/AccountOrderDetail/components/OrderSidebar/index.tsx +0 -195
  74. package/templates/create-full/src/components/AccountOrderDetail/components/OrderSidebar/styles.css +0 -93
  75. package/templates/create-full/src/components/AccountOrderDetail/components/PackageGroup/index.tsx +0 -156
  76. package/templates/create-full/src/components/AccountOrderDetail/components/PackageGroup/styles.css +0 -100
  77. package/templates/create-full/src/components/AccountOrderDetail/components/ReturnItemRow/index.tsx +0 -56
  78. package/templates/create-full/src/components/AccountOrderDetail/components/ReturnItemRow/styles.css +0 -57
  79. package/templates/create-full/src/components/AccountOrderDetail/components/ReturnView/index.tsx +0 -159
  80. package/templates/create-full/src/components/AccountOrderDetail/components/ReturnView/styles.css +0 -29
  81. package/templates/create-full/src/components/AccountOrderDetail/index.tsx +0 -244
  82. package/templates/create-full/src/components/AccountOrderDetail/styles.css +0 -125
  83. package/templates/create-full/src/components/AccountOrderDetail/types.ts +0 -32
  84. package/templates/create-full/src/components/AccountOrders/components/OrderCard/index.tsx +0 -122
  85. package/templates/create-full/src/components/AccountOrders/components/OrderCard/styles.css +0 -114
  86. package/templates/create-full/src/components/AccountOrders/index.tsx +0 -105
  87. package/templates/create-full/src/components/AccountOrders/styles.css +0 -36
  88. package/templates/create-full/src/components/AccountOrders/types.ts +0 -11
  89. package/templates/create-full/src/components/Announcement/index.tsx +0 -11
  90. package/templates/create-full/src/components/Announcement/styles.css +0 -4
  91. package/templates/create-full/src/components/Announcement/types.ts +0 -4
  92. package/templates/create-full/src/components/Announcements/index.tsx +0 -91
  93. package/templates/create-full/src/components/Announcements/styles.css +0 -46
  94. package/templates/create-full/src/components/Announcements/types.ts +0 -8
  95. package/templates/create-full/src/components/BlogHome/components/BlogCard/index.tsx +0 -89
  96. package/templates/create-full/src/components/BlogHome/components/BlogCard/styles.css +0 -121
  97. package/templates/create-full/src/components/BlogHome/index.tsx +0 -124
  98. package/templates/create-full/src/components/BlogHome/styles.css +0 -118
  99. package/templates/create-full/src/components/BlogHome/types.ts +0 -15
  100. package/templates/create-full/src/components/BlogPost/index.tsx +0 -128
  101. package/templates/create-full/src/components/BlogPost/styles.css +0 -120
  102. package/templates/create-full/src/components/BlogPost/types.ts +0 -12
  103. package/templates/create-full/src/components/CardProductName/index.tsx +0 -25
  104. package/templates/create-full/src/components/CardProductName/styles.css +0 -22
  105. package/templates/create-full/src/components/CardProductName/types.ts +0 -7
  106. package/templates/create-full/src/components/CardProductPrice/index.tsx +0 -30
  107. package/templates/create-full/src/components/CardProductPrice/styles.css +0 -13
  108. package/templates/create-full/src/components/CardProductPrice/types.ts +0 -6
  109. package/templates/create-full/src/components/CardProductVariants/index.tsx +0 -10
  110. package/templates/create-full/src/components/CardProductVariants/styles.css +0 -1
  111. package/templates/create-full/src/components/CardProductVariants/types.ts +0 -6
  112. package/templates/create-full/src/components/CartPage/components/CouponCode/index.tsx +0 -108
  113. package/templates/create-full/src/components/CartPage/components/CouponCode/styles.css +0 -68
  114. package/templates/create-full/src/components/CartPage/components/EmptyState/index.tsx +0 -31
  115. package/templates/create-full/src/components/CartPage/components/EmptyState/styles.css +0 -18
  116. package/templates/create-full/src/components/CartPage/components/OrderSummary/index.tsx +0 -106
  117. package/templates/create-full/src/components/CartPage/components/OrderSummary/styles.css +0 -70
  118. package/templates/create-full/src/components/CartPage/index.tsx +0 -107
  119. package/templates/create-full/src/components/CartPage/styles.css +0 -54
  120. package/templates/create-full/src/components/CartPage/types.ts +0 -16
  121. package/templates/create-full/src/components/CategoryImageItem/components/Card/index.tsx +0 -64
  122. package/templates/create-full/src/components/CategoryImageItem/components/Card/styles.css +0 -56
  123. package/templates/create-full/src/components/CategoryImageItem/index.tsx +0 -64
  124. package/templates/create-full/src/components/CategoryImageItem/styles.css +0 -10
  125. package/templates/create-full/src/components/CategoryImageItem/types.ts +0 -16
  126. package/templates/create-full/src/components/CategoryImages/index.tsx +0 -62
  127. package/templates/create-full/src/components/CategoryImages/styles.css +0 -38
  128. package/templates/create-full/src/components/CategoryImages/types.ts +0 -11
  129. package/templates/create-full/src/components/CategoryList/components/CategoryListControls/index.tsx +0 -129
  130. package/templates/create-full/src/components/CategoryList/components/CategoryListControls/styles.css +0 -99
  131. package/templates/create-full/src/components/CategoryList/components/FilterBoxValues/index.tsx +0 -42
  132. package/templates/create-full/src/components/CategoryList/components/FilterBoxValues/styles.css +0 -27
  133. package/templates/create-full/src/components/CategoryList/components/FilterCategoryList/index.tsx +0 -43
  134. package/templates/create-full/src/components/CategoryList/components/FilterCategoryList/styles.css +0 -20
  135. package/templates/create-full/src/components/CategoryList/components/FilterGroupValues/index.tsx +0 -114
  136. package/templates/create-full/src/components/CategoryList/components/FilterGroupValues/styles.css +0 -1
  137. package/templates/create-full/src/components/CategoryList/components/FilterListValues/index.tsx +0 -54
  138. package/templates/create-full/src/components/CategoryList/components/FilterListValues/styles.css +0 -22
  139. package/templates/create-full/src/components/CategoryList/components/FilterRangeListValues/index.tsx +0 -50
  140. package/templates/create-full/src/components/CategoryList/components/FilterRangeListValues/styles.css +0 -25
  141. package/templates/create-full/src/components/CategoryList/components/FilterRangeValues/index.tsx +0 -189
  142. package/templates/create-full/src/components/CategoryList/components/FilterRangeValues/styles.css +0 -89
  143. package/templates/create-full/src/components/CategoryList/components/FilterSidebar/index.tsx +0 -92
  144. package/templates/create-full/src/components/CategoryList/components/FilterSidebar/styles.css +0 -27
  145. package/templates/create-full/src/components/CategoryList/components/FilterSwatchValues/index.tsx +0 -63
  146. package/templates/create-full/src/components/CategoryList/components/FilterSwatchValues/styles.css +0 -48
  147. package/templates/create-full/src/components/CategoryList/components/MobileFilterModal/index.tsx +0 -146
  148. package/templates/create-full/src/components/CategoryList/components/MobileFilterModal/styles.css +0 -133
  149. package/templates/create-full/src/components/CategoryList/index.tsx +0 -333
  150. package/templates/create-full/src/components/CategoryList/styles.css +0 -110
  151. package/templates/create-full/src/components/CategoryList/types.ts +0 -30
  152. package/templates/create-full/src/components/CollapsibleContent/index.tsx +0 -23
  153. package/templates/create-full/src/components/CollapsibleContent/styles.css +0 -11
  154. package/templates/create-full/src/components/CollapsibleContent/types.ts +0 -6
  155. package/templates/create-full/src/components/CookieBar/index.tsx +0 -78
  156. package/templates/create-full/src/components/CookieBar/styles.css +0 -111
  157. package/templates/create-full/src/components/CookieBar/types.ts +0 -10
  158. package/templates/create-full/src/components/CustomerEmailVerification/index.tsx +0 -168
  159. package/templates/create-full/src/components/CustomerEmailVerification/styles.css +0 -118
  160. package/templates/create-full/src/components/CustomerEmailVerification/types.ts +0 -17
  161. package/templates/create-full/src/components/FeatureItem/index.tsx +0 -27
  162. package/templates/create-full/src/components/FeatureItem/styles.css +0 -19
  163. package/templates/create-full/src/components/FeatureItem/types.ts +0 -7
  164. package/templates/create-full/src/components/Features/index.tsx +0 -25
  165. package/templates/create-full/src/components/Features/styles.css +0 -39
  166. package/templates/create-full/src/components/Features/types.ts +0 -5
  167. package/templates/create-full/src/components/Footer/index.tsx +0 -154
  168. package/templates/create-full/src/components/Footer/styles.css +0 -175
  169. package/templates/create-full/src/components/Footer/types.ts +0 -15
  170. package/templates/create-full/src/components/ForgotPassword/components/ForgotPasswordForm/index.tsx +0 -129
  171. package/templates/create-full/src/components/ForgotPassword/components/ForgotPasswordForm/styles.css +0 -0
  172. package/templates/create-full/src/components/ForgotPassword/index.tsx +0 -30
  173. package/templates/create-full/src/components/ForgotPassword/styles.css +0 -85
  174. package/templates/create-full/src/components/ForgotPassword/types.ts +0 -13
  175. package/templates/create-full/src/components/Header/index.tsx +0 -46
  176. package/templates/create-full/src/components/Header/styles.css +0 -4
  177. package/templates/create-full/src/components/Header/types.ts +0 -4
  178. package/templates/create-full/src/components/HeroSlider/index.tsx +0 -110
  179. package/templates/create-full/src/components/HeroSlider/styles.css +0 -129
  180. package/templates/create-full/src/components/HeroSlider/types.ts +0 -9
  181. package/templates/create-full/src/components/HeroSliderItem/index.tsx +0 -231
  182. package/templates/create-full/src/components/HeroSliderItem/styles.css +0 -152
  183. package/templates/create-full/src/components/HeroSliderItem/types.ts +0 -34
  184. package/templates/create-full/src/components/Login/components/LoginForm/index.tsx +0 -181
  185. package/templates/create-full/src/components/Login/components/LoginForm/styles.css +0 -0
  186. package/templates/create-full/src/components/Login/index.tsx +0 -37
  187. package/templates/create-full/src/components/Login/styles.css +0 -129
  188. package/templates/create-full/src/components/Login/types.ts +0 -18
  189. package/templates/create-full/src/components/Navbar/components/CartSidebar/index.tsx +0 -203
  190. package/templates/create-full/src/components/Navbar/components/CartSidebar/styles.css +0 -175
  191. package/templates/create-full/src/components/Navbar/components/MobileMenu/index.tsx +0 -198
  192. package/templates/create-full/src/components/Navbar/components/MobileMenu/styles.css +0 -122
  193. package/templates/create-full/src/components/Navbar/components/NavItem/index.tsx +0 -65
  194. package/templates/create-full/src/components/Navbar/components/SearchModal/index.tsx +0 -339
  195. package/templates/create-full/src/components/Navbar/components/SearchModal/styles.css +0 -191
  196. package/templates/create-full/src/components/Navbar/index.tsx +0 -254
  197. package/templates/create-full/src/components/Navbar/styles.css +0 -254
  198. package/templates/create-full/src/components/Navbar/types.ts +0 -42
  199. package/templates/create-full/src/components/NotFound/index.tsx +0 -39
  200. package/templates/create-full/src/components/NotFound/styles.css +0 -46
  201. package/templates/create-full/src/components/NotFound/types.ts +0 -8
  202. package/templates/create-full/src/components/ProductDetail/components/ProductGallery/index.tsx +0 -316
  203. package/templates/create-full/src/components/ProductDetail/components/ProductGallery/styles.css +0 -213
  204. package/templates/create-full/src/components/ProductDetail/index.tsx +0 -92
  205. package/templates/create-full/src/components/ProductDetail/styles.css +0 -58
  206. package/templates/create-full/src/components/ProductDetail/types.ts +0 -12
  207. package/templates/create-full/src/components/ProductDetailAddToCart/components/PayWithIkas/index.tsx +0 -34
  208. package/templates/create-full/src/components/ProductDetailAddToCart/components/PayWithIkas/styles.css +0 -4
  209. package/templates/create-full/src/components/ProductDetailAddToCart/index.tsx +0 -146
  210. package/templates/create-full/src/components/ProductDetailAddToCart/styles.css +0 -27
  211. package/templates/create-full/src/components/ProductDetailAddToCart/types.ts +0 -18
  212. package/templates/create-full/src/components/ProductDetailBundleFurniture/components/BundleFurnitureRow/index.tsx +0 -164
  213. package/templates/create-full/src/components/ProductDetailBundleFurniture/components/BundleFurnitureSection/index.tsx +0 -134
  214. package/templates/create-full/src/components/ProductDetailBundleFurniture/components/BundleFurnitureSection/styles.css +0 -188
  215. package/templates/create-full/src/components/ProductDetailBundleFurniture/index.tsx +0 -61
  216. package/templates/create-full/src/components/ProductDetailBundleFurniture/styles.css +0 -12
  217. package/templates/create-full/src/components/ProductDetailBundleFurniture/types.ts +0 -21
  218. package/templates/create-full/src/components/ProductDetailBundleProduct/components/BundleProductItem/index.tsx +0 -169
  219. package/templates/create-full/src/components/ProductDetailBundleProduct/components/BundleProductItem/styles.css +0 -141
  220. package/templates/create-full/src/components/ProductDetailBundleProduct/components/BundleSkeletonLoading/index.tsx +0 -35
  221. package/templates/create-full/src/components/ProductDetailBundleProduct/components/BundleSkeletonLoading/styles.css +0 -85
  222. package/templates/create-full/src/components/ProductDetailBundleProduct/components/FurnitureRow/index.tsx +0 -51
  223. package/templates/create-full/src/components/ProductDetailBundleProduct/components/FurnitureRow/styles.css +0 -30
  224. package/templates/create-full/src/components/ProductDetailBundleProduct/components/FurnitureView/index.tsx +0 -54
  225. package/templates/create-full/src/components/ProductDetailBundleProduct/components/FurnitureView/styles.css +0 -22
  226. package/templates/create-full/src/components/ProductDetailBundleProduct/index.tsx +0 -101
  227. package/templates/create-full/src/components/ProductDetailBundleProduct/styles.css +0 -20
  228. package/templates/create-full/src/components/ProductDetailBundleProduct/types.ts +0 -18
  229. package/templates/create-full/src/components/ProductDetailDescription/index.tsx +0 -56
  230. package/templates/create-full/src/components/ProductDetailDescription/styles.css +0 -21
  231. package/templates/create-full/src/components/ProductDetailDescription/types.ts +0 -13
  232. package/templates/create-full/src/components/ProductDetailFeatureItem/index.tsx +0 -28
  233. package/templates/create-full/src/components/ProductDetailFeatureItem/styles.css +0 -22
  234. package/templates/create-full/src/components/ProductDetailFeatureItem/types.ts +0 -7
  235. package/templates/create-full/src/components/ProductDetailFeatures/index.tsx +0 -40
  236. package/templates/create-full/src/components/ProductDetailFeatures/styles.css +0 -17
  237. package/templates/create-full/src/components/ProductDetailFeatures/types.ts +0 -10
  238. package/templates/create-full/src/components/ProductDetailNameFavorite/index.tsx +0 -66
  239. package/templates/create-full/src/components/ProductDetailNameFavorite/styles.css +0 -45
  240. package/templates/create-full/src/components/ProductDetailNameFavorite/types.ts +0 -11
  241. package/templates/create-full/src/components/ProductDetailOffer/components/OfferCard/index.tsx +0 -209
  242. package/templates/create-full/src/components/ProductDetailOffer/components/OfferCard/styles.css +0 -146
  243. package/templates/create-full/src/components/ProductDetailOffer/components/OfferSummary/index.tsx +0 -175
  244. package/templates/create-full/src/components/ProductDetailOffer/index.tsx +0 -199
  245. package/templates/create-full/src/components/ProductDetailOffer/styles.css +0 -211
  246. package/templates/create-full/src/components/ProductDetailOffer/types.ts +0 -24
  247. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionCheckbox/index.tsx +0 -52
  248. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionCheckbox/styles.css +0 -19
  249. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceBox/index.tsx +0 -60
  250. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceBox/styles.css +0 -38
  251. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceSelect/index.tsx +0 -102
  252. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceSelect/styles.css +0 -34
  253. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceSwatch/index.tsx +0 -121
  254. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/components/ChoiceSwatch/styles.css +0 -87
  255. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionChoice/index.tsx +0 -57
  256. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionColorPicker/index.tsx +0 -54
  257. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionColorPicker/styles.css +0 -0
  258. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionDatePicker/index.tsx +0 -124
  259. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionDatePicker/styles.css +0 -1
  260. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionFile/index.tsx +0 -217
  261. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionFile/styles.css +0 -87
  262. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionRenderer/index.tsx +0 -133
  263. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionText/index.tsx +0 -60
  264. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionText/styles.css +0 -1
  265. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionTextarea/index.tsx +0 -74
  266. package/templates/create-full/src/components/ProductDetailOptionSet/components/OptionTextarea/styles.css +0 -10
  267. package/templates/create-full/src/components/ProductDetailOptionSet/index.tsx +0 -99
  268. package/templates/create-full/src/components/ProductDetailOptionSet/styles.css +0 -30
  269. package/templates/create-full/src/components/ProductDetailOptionSet/types.ts +0 -21
  270. package/templates/create-full/src/components/ProductDetailPrices/index.tsx +0 -62
  271. package/templates/create-full/src/components/ProductDetailPrices/styles.css +0 -32
  272. package/templates/create-full/src/components/ProductDetailPrices/types.ts +0 -10
  273. package/templates/create-full/src/components/ProductDetailProductGroup/index.tsx +0 -74
  274. package/templates/create-full/src/components/ProductDetailProductGroup/styles.css +0 -33
  275. package/templates/create-full/src/components/ProductDetailProductGroup/types.ts +0 -10
  276. package/templates/create-full/src/components/ProductDetailReviews/index.tsx +0 -205
  277. package/templates/create-full/src/components/ProductDetailReviews/styles.css +0 -43
  278. package/templates/create-full/src/components/ProductDetailReviews/types.ts +0 -19
  279. package/templates/create-full/src/components/ProductDetailSku/index.tsx +0 -38
  280. package/templates/create-full/src/components/ProductDetailSku/styles.css +0 -16
  281. package/templates/create-full/src/components/ProductDetailSku/types.ts +0 -11
  282. package/templates/create-full/src/components/ProductDetailVariant/index.tsx +0 -38
  283. package/templates/create-full/src/components/ProductDetailVariant/styles.css +0 -14
  284. package/templates/create-full/src/components/ProductDetailVariant/types.ts +0 -12
  285. package/templates/create-full/src/components/ProductSlider/index.tsx +0 -151
  286. package/templates/create-full/src/components/ProductSlider/styles.css +0 -105
  287. package/templates/create-full/src/components/ProductSlider/types.ts +0 -17
  288. package/templates/create-full/src/components/RecoverPassword/components/RecoverPasswordForm/index.tsx +0 -133
  289. package/templates/create-full/src/components/RecoverPassword/components/RecoverPasswordForm/styles.css +0 -0
  290. package/templates/create-full/src/components/RecoverPassword/index.tsx +0 -30
  291. package/templates/create-full/src/components/RecoverPassword/styles.css +0 -93
  292. package/templates/create-full/src/components/RecoverPassword/types.ts +0 -13
  293. package/templates/create-full/src/components/Register/components/RegisterForm/index.tsx +0 -326
  294. package/templates/create-full/src/components/Register/components/RegisterForm/styles.css +0 -0
  295. package/templates/create-full/src/components/Register/index.tsx +0 -30
  296. package/templates/create-full/src/components/Register/styles.css +0 -152
  297. package/templates/create-full/src/components/Register/types.ts +0 -27
  298. package/templates/create-full/src/components/RichText/index.tsx +0 -25
  299. package/templates/create-full/src/components/RichText/styles.css +0 -51
  300. package/templates/create-full/src/components/RichText/types.ts +0 -5
  301. package/templates/create-full/src/components/SocialMediaIcon/index.tsx +0 -26
  302. package/templates/create-full/src/components/SocialMediaIcon/styles.css +0 -17
  303. package/templates/create-full/src/components/SocialMediaIcon/types.ts +0 -7
  304. package/templates/create-full/src/components/index.ts +0 -50
  305. package/templates/create-full/src/global-types.ts +0 -11
  306. package/templates/create-full/src/global.css +0 -598
  307. package/templates/create-full/src/hooks/useBundleProducts.ts +0 -75
  308. package/templates/create-full/src/hooks/useColumnPreference.ts +0 -26
  309. package/templates/create-full/src/hooks/useInfiniteScroll.ts +0 -49
  310. package/templates/create-full/src/hooks/usePageTracking.ts +0 -56
  311. package/templates/create-full/src/hooks/usePayWithIkas.ts +0 -114
  312. package/templates/create-full/src/hooks/useRedirectIfLoggedIn.ts +0 -35
  313. package/templates/create-full/src/hooks/useScrollLock.ts +0 -19
  314. package/templates/create-full/src/hooks/useToast.ts +0 -27
  315. package/templates/create-full/src/ikas-component-utils.d.ts +0 -3
  316. package/templates/create-full/src/sub-components/Badge/index.tsx +0 -208
  317. package/templates/create-full/src/sub-components/Badge/styles.css +0 -129
  318. package/templates/create-full/src/sub-components/Breadcrumb/index.tsx +0 -57
  319. package/templates/create-full/src/sub-components/Breadcrumb/styles.css +0 -49
  320. package/templates/create-full/src/sub-components/BundleMedia/index.tsx +0 -72
  321. package/templates/create-full/src/sub-components/BundleQuantityBox/index.tsx +0 -73
  322. package/templates/create-full/src/sub-components/BundleQuantityBox/styles.css +0 -43
  323. package/templates/create-full/src/sub-components/Button/index.tsx +0 -52
  324. package/templates/create-full/src/sub-components/Button/styles.css +0 -114
  325. package/templates/create-full/src/sub-components/CartItem/components/BundleProductItem/index.tsx +0 -59
  326. package/templates/create-full/src/sub-components/CartItem/components/BundleProductItem/styles.css +0 -24
  327. package/templates/create-full/src/sub-components/CartItem/components/BundleProducts/index.tsx +0 -55
  328. package/templates/create-full/src/sub-components/CartItem/components/BundleProducts/styles.css +0 -30
  329. package/templates/create-full/src/sub-components/CartItem/components/ItemOptions/index.tsx +0 -31
  330. package/templates/create-full/src/sub-components/CartItem/components/ItemOptions/styles.css +0 -6
  331. package/templates/create-full/src/sub-components/CartItem/components/OptionValueDisplay/index.tsx +0 -79
  332. package/templates/create-full/src/sub-components/CartItem/components/OptionValueDisplay/styles.css +0 -28
  333. package/templates/create-full/src/sub-components/CartItem/index.tsx +0 -216
  334. package/templates/create-full/src/sub-components/CartItem/styles.css +0 -170
  335. package/templates/create-full/src/sub-components/Checkbox/index.tsx +0 -42
  336. package/templates/create-full/src/sub-components/Checkbox/styles.css +0 -65
  337. package/templates/create-full/src/sub-components/CollapsibleGroup/index.tsx +0 -52
  338. package/templates/create-full/src/sub-components/CollapsibleGroup/styles.css +0 -51
  339. package/templates/create-full/src/sub-components/ColorInput/index.tsx +0 -33
  340. package/templates/create-full/src/sub-components/ColorInput/styles.css +0 -53
  341. package/templates/create-full/src/sub-components/ConfirmModal/index.tsx +0 -60
  342. package/templates/create-full/src/sub-components/ConfirmModal/styles.css +0 -20
  343. package/templates/create-full/src/sub-components/FormItem/index.tsx +0 -66
  344. package/templates/create-full/src/sub-components/FormItem/styles.css +0 -38
  345. package/templates/create-full/src/sub-components/ImagePreviewModal/index.tsx +0 -55
  346. package/templates/create-full/src/sub-components/ImagePreviewModal/styles.css +0 -50
  347. package/templates/create-full/src/sub-components/Input/index.tsx +0 -69
  348. package/templates/create-full/src/sub-components/Input/styles.css +0 -162
  349. package/templates/create-full/src/sub-components/Modal/index.tsx +0 -120
  350. package/templates/create-full/src/sub-components/Modal/styles.css +0 -70
  351. package/templates/create-full/src/sub-components/PageLoader/index.tsx +0 -14
  352. package/templates/create-full/src/sub-components/PageLoader/styles.css +0 -12
  353. package/templates/create-full/src/sub-components/Pagination/index.tsx +0 -107
  354. package/templates/create-full/src/sub-components/Pagination/styles.css +0 -88
  355. package/templates/create-full/src/sub-components/ProductCard/index.tsx +0 -276
  356. package/templates/create-full/src/sub-components/ProductCard/styles.css +0 -99
  357. package/templates/create-full/src/sub-components/QuantitySelector/index.tsx +0 -41
  358. package/templates/create-full/src/sub-components/QuantitySelector/styles.css +0 -51
  359. package/templates/create-full/src/sub-components/ReviewCard/index.tsx +0 -103
  360. package/templates/create-full/src/sub-components/ReviewCard/styles.css +0 -95
  361. package/templates/create-full/src/sub-components/ReviewForm/index.tsx +0 -115
  362. package/templates/create-full/src/sub-components/ReviewForm/styles.css +0 -11
  363. package/templates/create-full/src/sub-components/ReviewSummary/index.tsx +0 -65
  364. package/templates/create-full/src/sub-components/ReviewSummary/styles.css +0 -86
  365. package/templates/create-full/src/sub-components/Select/index.tsx +0 -86
  366. package/templates/create-full/src/sub-components/Select/styles.css +0 -110
  367. package/templates/create-full/src/sub-components/SkeletonField/index.tsx +0 -12
  368. package/templates/create-full/src/sub-components/SkeletonField/styles.css +0 -29
  369. package/templates/create-full/src/sub-components/SliderArrow/index.tsx +0 -26
  370. package/templates/create-full/src/sub-components/SliderArrow/styles.css +0 -24
  371. package/templates/create-full/src/sub-components/SocialLoginButton/index.tsx +0 -24
  372. package/templates/create-full/src/sub-components/SocialLoginButton/styles.css +0 -19
  373. package/templates/create-full/src/sub-components/SpinnerIcon/index.tsx +0 -10
  374. package/templates/create-full/src/sub-components/SpinnerIcon/styles.css +0 -8
  375. package/templates/create-full/src/sub-components/StarRating/index.tsx +0 -76
  376. package/templates/create-full/src/sub-components/StarRating/styles.css +0 -40
  377. package/templates/create-full/src/sub-components/Tag/index.tsx +0 -21
  378. package/templates/create-full/src/sub-components/Tag/styles.css +0 -30
  379. package/templates/create-full/src/sub-components/Textarea/index.tsx +0 -45
  380. package/templates/create-full/src/sub-components/Textarea/styles.css +0 -82
  381. package/templates/create-full/src/sub-components/Toast/index.tsx +0 -257
  382. package/templates/create-full/src/sub-components/Toast/styles.css +0 -3
  383. package/templates/create-full/src/sub-components/Toggle/index.tsx +0 -46
  384. package/templates/create-full/src/sub-components/Toggle/styles.css +0 -86
  385. package/templates/create-full/src/sub-components/VariantBadge/index.tsx +0 -153
  386. package/templates/create-full/src/sub-components/VariantBadge/styles.css +0 -47
  387. package/templates/create-full/src/sub-components/icons/index.tsx +0 -981
  388. package/templates/create-full/src/utils/bundle.ts +0 -70
  389. package/templates/create-full/src/utils/cx.ts +0 -4
  390. package/templates/create-full/src/utils/fullName.ts +0 -6
  391. package/templates/create-full/src/utils/media.ts +0 -36
  392. package/templates/create-full/src/utils/optionPrice.ts +0 -19
  393. package/templates/create-full/src/utils/optionSet.ts +0 -17
  394. package/templates/create-full/src/utils/orderStatus.ts +0 -28
  395. package/templates/create-full/src/utils/pagination.ts +0 -29
  396. package/templates/create-full/src/utils/toast.ts +0 -5
  397. package/templates/create-full/tsconfig.json +0 -30
  398. package/templates/create-full/vite.config.ts +0 -15
@@ -1,275 +0,0 @@
1
- # ikas Code Components Project
2
-
3
- You are building **Preact + TypeScript components for an e-commerce storefront**.
4
- This project uses the ikas Code Components framework with an MCP server for API documentation.
5
-
6
- **ALWAYS query MCP tools before writing code that uses storefront APIs.**
7
- Never guess function signatures or type shapes — the MCP server is the source of truth.
8
-
9
- ## CRITICAL: Auto-Generated Files
10
-
11
- **NEVER manually create or edit `ikas.config.json`, `types.ts`, `global-types.ts`, or `src/components/index.ts`** — they are all auto-generated by CLI commands.
12
- Use `npx ikas-component config add-component --props '[...]'` or `npx ikas-component config add-prop` to manage components and props.
13
- These commands update `ikas.config.json`, `types.ts`, `global-types.ts`, AND `src/components/index.ts` (including the component export) automatically.
14
-
15
- **The CLI does NOT edit your component source.** `remove-prop` and `remove-enum` update `ikas.config.json` and the generated `types.ts` / `global-types.ts` only — `index.tsx`, sub-components, and `styles.css` are untouched. After removing a prop or enum, grep the source for the old identifier and clean up dead references yourself before building.
16
-
17
- ## MCP Tools (12 tools)
18
-
19
- ### Starting a New Section
20
- | Tool | Purpose |
21
- |------|---------|
22
- | `get_section_template(sectionType)` | **Start here** — production-ready starter template (index.tsx + types.ts + styles.css + config) for common sections: header, footer, product-detail, product-list, cart, login, register, hero-banner, blog-post, faq, etc. |
23
- | `get_framework_guide(topic)` | Framework docs — "ai-workflow", "common-pitfalls", "prop-types", "css-scoping", "form-handling", "imports", "sections-vs-components" |
24
- | `get_code_example(task)` | Code examples — "add to cart", "variant selection", "image-handling", "product-detail-section", "cart-section" |
25
-
26
- ### Looking Up APIs
27
- | Tool | Purpose |
28
- |------|---------|
29
- | `search_docs(query)` | Search across all storefront API docs and framework guides |
30
- | `get_function_doc(name)` | Full docs for a specific function (e.g. "addItemToCart", "Router.navigate") |
31
- | `list_functions(category?)` | List functions by category: ProductDetail, Cart, ProductList, Navigation, Customer, Order, Image, Blog, Brand, Category, Pricing, Form, Validation, Pagination, Filtering |
32
- | `get_prop_types()` | All available ikas.config.json prop types with TS types and examples |
33
-
34
- ### Exploring Types
35
- | Tool | Purpose |
36
- |------|---------|
37
- | `get_model_guide(model)` | **One-stop-shop** — type definition + all utility functions + examples + related types for a model (e.g. "IkasProduct", "IkasOrder") |
38
- | `get_type_definition(name)` | Full definition of a type or enum (e.g. "IkasProduct", "IkasOrderStatus") |
39
- | `get_functions_for_type(typeName)` | All utility functions for a type (e.g. "IkasImage") |
40
- | `search_types(query)` | Search types/enums by keyword (e.g. "price", "address", "status") |
41
- | `list_types(domain?, kind?)` | List all types, optionally filtered by domain ("product", "cart", "order") or kind ("type", "enum") |
42
-
43
- ## CLI Commands
44
-
45
- **Never edit ikas.config.json or types.ts manually** — use the CLI commands:
46
-
47
- | Command | Purpose |
48
- |---------|---------|
49
- | `npx ikas-component config add-component --name "Name" --type section --props '[...]'` | **Primary** — create component with all props in one command |
50
- | `npx ikas-component config add-component --name "Name" --type section` | Create component with no props (add later) |
51
- | `npx ikas-component config add-prop --component "Name" --name title --displayName "Title" --type TEXT --required [--group content]` | Add a single prop incrementally |
52
- | `npx ikas-component config update-prop --component "Name" --prop title --type RICH_TEXT [--group colors]` | Update a prop's type or group |
53
- | `npx ikas-component config remove-prop --component "Name" --prop title` | Remove a prop |
54
- | `npx ikas-component config remove-component --name "Name"` | Remove a component |
55
- | `npx ikas-component config add-prop-group --component "Name" --id colors --name "Colors" [--description "..."] [--parent style]` | Create a prop group |
56
- | `npx ikas-component config update-prop-group --component "Name" --id colors [--name "..."] [--description "..."]` | Update a prop group |
57
- | `npx ikas-component config remove-prop-group --component "Name" --id colors` | Remove a prop group |
58
- | `npx ikas-component config list` | List all components and their props |
59
- | `npx ikas-component config add-enum --name "Size" --options '[{"name":"Small","value":"s"}]'` | Create a custom ENUM type (returns `enumTypeId`) |
60
- | `npx ikas-component config update-enum --id <enumId> --name "..." [--options '[...]']` | Update enum name/options |
61
- | `npx ikas-component config remove-enum --id <enumId>` | Remove enum (fails if any prop still references it) |
62
- | `npx ikas-component config list-enums` | List all custom enums |
63
- | `npx ikas-component check --json` | Type-check all components, output errors as JSON |
64
- | `npx ikas-component build` | Compile server.js + client.js + styles.css per component |
65
- | `npx ikas-component dev` | Start dev server (Vite 5200 + WebSocket 5201) |
66
-
67
- ## Workflow: Building a New Section
68
-
69
- 1. `get_section_template("product-detail-section")` → get starter files + CLI command with --props
70
- 2. For any custom ENUM props the section needs: `config add-enum` **first** (capture the returned `enumTypeId`), then reference it in `add-prop --type ENUM --enumTypeId <id>`. Order matters — an ENUM prop without a pre-existing `enumTypeId` is rejected.
71
- 3. Run the CLI command (creates component + props + types.ts in one step)
72
- 4. Write `index.tsx` and `styles.css` using the template (do NOT edit `types.ts` or `global-types.ts` — both are regenerated on every prop/enum mutation)
73
- 5. Look up APIs → `get_model_guide("IkasProduct")`, `get_function_doc("addItemToCart")`
74
- 6. `npx ikas-component check --json` → fix type errors
75
- 7. `npx ikas-component build` → verify clean build
76
-
77
- ### Custom ENUM lifecycle
78
-
79
- - **Create:** `add-enum` → `add-prop --type ENUM --enumTypeId <id>`. The enum must exist before the prop is created.
80
- - **Rename options:** `update-enum --id <id> --options '[...]'`. `types.ts` regenerates automatically.
81
- - **Remove:** remove (or repoint) every prop that references the enum **first**, then `remove-enum`. `remove-enum` blocks with an error while any prop still references the id.
82
- - `global-types.ts` is regenerated unconditionally on `add-enum` / `update-enum` / `remove-enum` / `remove-prop` — never hand-edit it.
83
- - Template snippets from `get_section_template` use `{{ENUM_ID:<EnumName>}}` placeholders (e.g. `{{ENUM_ID:AspectRatio}}`). Create the matching `add-enum` first, then substitute the returned id.
84
-
85
- ## Sub-Component Structure
86
-
87
- **ALWAYS create sub-components in `src/sub-components/` with their own folder containing `index.tsx` and `styles.css`. NEVER create flat .tsx files inside a component folder.**
88
-
89
- ```
90
- src/
91
- ├── components/
92
- │ ├── ProductList/
93
- │ │ ├── index.tsx # imports from ../../sub-components/...
94
- │ │ ├── types.ts # auto-generated (CLI-managed)
95
- │ │ └── styles.css
96
- │ └── index.ts
97
- ├── sub-components/
98
- │ ├── ProductCard/
99
- │ │ ├── index.tsx # sub-component with inline Props
100
- │ │ └── styles.css
101
- │ └── FilterSidebar/
102
- │ ├── index.tsx
103
- │ └── styles.css
104
- ├── global.css # unscoped global styles
105
- └── global-types.ts # auto-generated shared enum types
106
- ```
107
-
108
- **Key rules:**
109
- - `src/components/` = registered in ikas.config.json. `src/sub-components/` = internal helpers (NOT in ikas.config.json)
110
- - Sub-components do NOT have `types.ts` — define `Props` inline in `index.tsx`
111
- - Custom enum types are exported from `src/global-types.ts` (auto-generated). Sub-components can import them: `import type { MyEnum } from "../../global-types";`
112
- - TSX: use `import ProductCard from "../../sub-components/ProductCard";`
113
- - Sub-components should be wrapped with `observer()` from `@ikas/component-utils`
114
- - Sub-components can be shared across multiple parent sections
115
-
116
- ```tsx
117
- // src/sub-components/ProductCard/index.tsx — inline Props, no types.ts
118
- import { IkasProduct, getSelectedProductVariant } from "@ikas/bp-storefront";
119
-
120
- interface Props { product: IkasProduct; }
121
-
122
- export default function ProductCard({ product }: Props) { ... }
123
- ```
124
-
125
- ## Key Patterns
126
-
127
- ### Component Exports & Reactivity
128
- ```tsx
129
- // Root components are automatically reactive — the ikas runtime wraps them in autorun().
130
- // Do NOT import or use observer() on root exports.
131
- import { Props } from "./types";
132
-
133
- export function MySection({ product }: Props) { ... }
134
- export default MySection;
135
- ```
136
-
137
- ```tsx
138
- // Only use observer() on extracted SUB-COMPONENTS
139
- import { observer } from "@ikas/component-utils";
140
-
141
- const CartBadge = observer(function CartBadge() {
142
- const count = cartStore.order?.orderLineItems?.length ?? 0;
143
- return <span>{count}</span>;
144
- });
145
- ```
146
-
147
- ### Null Safety
148
- ```tsx
149
- // Storefront models can be null — always check before accessing
150
- if (!product) return null;
151
- const price = product.selectedVariant?.price?.formattedPrice ?? "";
152
- ```
153
-
154
- ### Mutations
155
- ```tsx
156
- // Functions like addItemToCart() mutate the model in-place (MobX observable)
157
- // No need to capture return value — root components re-render automatically via autorun()
158
- await addItemToCart({ product });
159
- ```
160
-
161
- ### COMPONENT & COMPONENT_LIST Props
162
- These props let you create **slot-based** architectures where store owners can drag child components into your section/component from the editor.
163
-
164
- - `COMPONENT` — a single child component slot (TS type: `any`)
165
- - `COMPONENT_LIST` — a list of child components (TS type: `any`)
166
-
167
- **Rendering:** Use the `<IkasComponentRenderer>` wrapper to render child components:
168
- ```tsx
169
- import { IkasComponentRenderer } from "@ikas/bp-storefront";
170
- import { Props } from "./types";
171
-
172
- export function MySection({ title, cardList, ...props }: Props) {
173
- return (
174
- <section>
175
- <h2>{title}</h2>
176
- <div className="cards">
177
- {/* COMPONENT_LIST — render a list of child components */}
178
- <IkasComponentRenderer
179
- id="card-list"
180
- components={cardList as any[]}
181
- parentProps={props}
182
- />
183
- </div>
184
- </section>
185
- );
186
- }
187
- export default MySection;
188
- ```
189
-
190
- **Key rules:**
191
- - Always pass `parentProps={props}` so child components can access parent data via dynamic values
192
- - Cast the prop value: `components={myList as any[]}` for COMPONENT_LIST, `components={[myComp] as any[]}` for COMPONENT
193
- - `<IkasComponentRenderer>` handles rendering, styling, and reactivity of child components automatically
194
-
195
- **Config example:**
196
- ```json
197
- {
198
- "name": "cardList",
199
- "displayName": "Card List",
200
- "type": "COMPONENT_LIST"
201
- }
202
- ```
203
-
204
- ### CSS Scoping
205
- All CSS is auto-scoped with `.cc_{componentId}` prefix. Write plain class names — they are scoped at build time.
206
-
207
- ### Preact Event Handling
208
- Use `onInput` instead of `onChange` for text inputs (Preact behavior).
209
-
210
- ### Import Source
211
- ```tsx
212
- import { addItemToCart, IkasProduct, IkasImage } from "@ikas/bp-storefront";
213
- ```
214
-
215
- ## No Static Text Rule
216
-
217
- **CRITICAL: Never hardcode user-visible text in JSX.** All text strings (headings, button labels,
218
- empty states, loading messages, form labels) MUST be TEXT props with defaultValues.
219
-
220
- Wrong: `<h1>Sign In</h1>`
221
- Correct: `<h1>{title}</h1>` with `title` as TEXT prop (defaultValue: "Sign In")
222
-
223
- For button loading states, use two separate props:
224
- - `submitButtonText` (default: "Sign In")
225
- - `submittingButtonText` (default: "Signing in...")
226
-
227
- Group text props under a "Texts" propGroup or another specific text group name.
228
-
229
- **Assistive strings (`aria-label`, `aria-describedby`, `alt`, sr-only text):** if the string is meaningful to end users (e.g. icon-only button label, product image alt), make it a TEXT prop. English literal defaults are acceptable for purely structural labels a merchant would never want to change (e.g. `role="dialog" aria-modal="true"`). When in doubt, make it a prop.
230
-
231
- ## Sections vs Components
232
-
233
- - **Sections** = page-level, full-width containers (Header, Hero, Product Grid, Footer).
234
- Set `"type": "section"` via CLI. Use `<section>` root element. Props interface: `Props`.
235
- **Sections MUST always include a `backgroundColor` COLOR prop** (default: `#ffffff`).
236
- Apply via inline style: `style={backgroundColor ? { backgroundColor } : undefined}`
237
- Consider also adding `textColor` COLOR props for text elements directly on the section background.
238
- - **Components** = child elements placed inside sections (buttons, cards, badges).
239
- Defaults to `"component"`. Use `<div>` root element. Props interface: `Props`.
240
-
241
- ## Prop Groups
242
-
243
- Organize props into collapsible groups in the editor sidebar. Use prop groups when a component has props that are related to each other.
244
-
245
- ### Config Format
246
- - Define groups in `propGroups` array on the component in `ikas.config.json`
247
- - Assign props to groups via `groupId` on each prop
248
- - Groups can nest 1 level deep via `children`
249
- - Props without `groupId` appear ungrouped at root level
250
- - Group IDs must be unique within a component
251
-
252
- ### CLI Commands
253
- - `config add-prop-group --component "Name" --id content --name "Content"` — create group
254
- - `config add-prop-group --component "Name" --id colors --name "Colors" --parent style` — create nested group
255
- - `config add-prop --component "Name" --name title --displayName "Title" --type TEXT --group content` — add prop to group
256
- - `config update-prop --component "Name" --prop title --group colors` — move prop to different group
257
- - `config remove-prop-group --component "Name" --id content` — remove group (props become ungrouped)
258
-
259
- ### When to Use
260
- - props that are related to each other → group related props
261
- - Sections with content + style props → separate "Content" and "Appearance" groups
262
- - Complex sections → use nested groups (e.g., "Style" → "Colors", "Typography")
263
-
264
- ## Workflow Addition
265
-
266
- When building a section with props that are related to each other, organize into prop groups after defining props:
267
- ```bash
268
- npx ikas-component config add-prop-group --component "Name" --id content --name "Content"
269
- npx ikas-component config update-prop --component "Name" --prop title --group content
270
- ```
271
-
272
- ## Build Verification
273
-
274
- IMPORTANT: After completing any task, always run `npx ikas-component build` (or `npm run build`) to check for
275
- TypeScript and build errors. Fix any errors before considering the task done.
@@ -1,123 +0,0 @@
1
- # ikas Code Components
2
-
3
- You are building **Preact + TypeScript components for an e-commerce storefront**.
4
- **ALWAYS query MCP tools before writing code that uses storefront APIs.**
5
-
6
- ## CRITICAL: Auto-Generated Files
7
-
8
- **NEVER manually create or edit `ikas.config.json`, `types.ts` or `global-types.ts`** — they are auto-generated by CLI commands.
9
- Use `npx ikas-component config add-component --props '[...]'` or `npx ikas-component config add-prop` to manage props.
10
- These commands update `ikas.config.json`, `types.ts`, and `global-types.ts` automatically.
11
-
12
- **The CLI does NOT edit your component source.** `remove-prop` and `remove-enum` update `ikas.config.json` and the generated `types.ts` / `global-types.ts` only — `index.tsx`, sub-components, and `styles.css` are untouched. After removing a prop or enum, grep the source for the old identifier and clean up dead references yourself before building.
13
-
14
- ## MCP Tools (12 tools)
15
-
16
- ### Starting a New Section
17
- - get_section_template(sectionType) — **Start here** — production-ready starter template for common sections (header, footer, product-detail, product-list, cart, login, hero-banner, blog-post, faq, etc.)
18
- - get_framework_guide(topic) — Framework docs ("ai-workflow", "common-pitfalls", "prop-types", "css-scoping", "form-handling", "imports")
19
- - get_code_example(task) — Code examples ("add to cart", "variant selection", "image-handling")
20
-
21
- ### Looking Up APIs
22
- - search_docs(query) — Search all storefront API docs and framework guides
23
- - get_function_doc(name) — Full docs for a function (e.g. "addItemToCart", "Router.navigate")
24
- - list_functions(category?) — List functions by category (ProductDetail, Cart, ProductList, Navigation, Customer, Order, Image, Blog, Brand, Pricing, Form, Validation, Pagination, Filtering)
25
- - get_prop_types() — All available ikas.config.json prop types
26
-
27
- ### Exploring Types
28
- - get_model_guide(model) — **One-stop-shop** — type def + utility functions + examples for a model (e.g. "IkasProduct", "IkasOrder")
29
- - get_type_definition(name) — Full definition of a type or enum
30
- - get_functions_for_type(typeName) — All utility functions for a type
31
- - search_types(query) — Search types/enums by keyword ("price", "address", "status")
32
- - list_types(domain?, kind?) — List all types, filter by domain or kind ("type"/"enum")
33
-
34
- ## CLI Commands (never edit ikas.config.json or types.ts manually)
35
- - npx ikas-component config add-component --name "Name" --type section --props '[...]' — **Primary** — create with all props in one command
36
- - npx ikas-component config add-component --name "Name" --type section — Create component with no props
37
- - npx ikas-component config add-prop --component "Name" --name title --displayName "Title" --type TEXT --required [--group content] — Add a prop incrementally
38
- - npx ikas-component config update-prop --component "Name" --prop title --type RICH_TEXT [--group colors] — Update a prop or group
39
- - npx ikas-component config remove-prop --component "Name" --prop title — Remove a prop
40
- - npx ikas-component config remove-component --name "Name" — Remove a component
41
- - npx ikas-component config add-prop-group --component "Name" --id colors --name "Colors" [--parent style] — Create a prop group
42
- - npx ikas-component config update-prop-group --component "Name" --id colors [--name "..."] — Update a prop group
43
- - npx ikas-component config remove-prop-group --component "Name" --id colors — Remove a prop group
44
- - npx ikas-component config list — List all components and their props
45
- - npx ikas-component config add-enum --name "Size" --options '[{"name":"Small","value":"s"}]' — Create a custom ENUM type (returns enumTypeId)
46
- - npx ikas-component config update-enum --id <enumId> --name "..." [--options '[...]'] — Update enum name/options
47
- - npx ikas-component config remove-enum --id <enumId> — Remove enum (fails if any prop still references it)
48
- - npx ikas-component config list-enums — List all custom enums
49
- - npx ikas-component check --json — Type-check all components
50
- - npx ikas-component build — Compile server.js + client.js + styles.css per component
51
- - npx ikas-component dev — Start dev server (Vite 5200 + WebSocket 5201)
52
-
53
- ## Workflow: Building a New Section
54
- 1. get_section_template("product-detail-section") → get starter files + CLI command with --props
55
- 2. For any custom ENUM props the section needs: `config add-enum` FIRST (capture the returned enumTypeId), then reference it in `add-prop --type ENUM --enumTypeId <id>`. Order matters — an ENUM prop without a pre-existing enumTypeId is rejected.
56
- 3. Run the CLI command (creates component + props + types.ts in one step)
57
- 4. Write index.tsx and styles.css using the template (do NOT edit types.ts or global-types.ts — both are regenerated on every prop/enum mutation)
58
- 5. Look up APIs: get_model_guide("IkasProduct"), get_function_doc("addItemToCart")
59
- 6. npx ikas-component check --json → fix type errors
60
- 7. npx ikas-component build → verify clean build
61
-
62
- ### Custom ENUM lifecycle
63
- - **Create:** `add-enum` → `add-prop --type ENUM --enumTypeId <id>` (enum must exist before the prop is created).
64
- - **Rename options:** `update-enum --id <id> --options '[...]'` — types.ts regenerates automatically.
65
- - **Remove:** remove (or repoint) every prop that references the enum FIRST, then `remove-enum`. `remove-enum` blocks with an error while any prop still references the id.
66
- - `global-types.ts` is regenerated unconditionally on `add-enum` / `update-enum` / `remove-enum` / `remove-prop` — never hand-edit it.
67
- - Template snippets from `get_section_template` use `{{ENUM_ID:<EnumName>}}` placeholders (e.g. `{{ENUM_ID:AspectRatio}}`). Create the matching `add-enum` first, then substitute the returned id.
68
-
69
- ## Sub-Component Structure
70
- **ALWAYS create sub-components in `src/sub-components/` with their own folder containing `index.tsx` and `styles.css`.**
71
- - `src/components/` = registered in ikas.config.json. `src/sub-components/` = internal helpers (NOT in ikas.config.json)
72
- - Sub-components do NOT have `types.ts` — define `Props` inline in `index.tsx`
73
- - Custom enum types are exported from `src/global-types.ts` (auto-generated). Sub-components can import them: `import type { MyEnum } from "../../global-types";`
74
- - TSX: `import ProductCard from "../../sub-components/ProductCard";`
75
- - Sub-components should be wrapped with `observer()` from `@ikas/component-utils`
76
- - Sub-components can be shared across multiple parent sections
77
- - NEVER create flat .tsx files inside a component folder
78
-
79
- ## Key Patterns
80
- - Root components are automatically reactive (ikas runtime uses autorun). Do NOT use observer() on root exports.
81
- Pattern: `export function MySection({ title }: Props) { ... }` + `export default MySection;`
82
- Only use observer() on sub-components.
83
- - Null safety: storefront models can be null — always check before accessing
84
- - Mutations: addItemToCart() etc. mutate MobX observables in-place — no return capture needed
85
- - COMPONENT & COMPONENT_LIST props: slot-based child components rendered via `<IkasComponentRenderer>`
86
- `import { IkasComponentRenderer } from "@ikas/bp-storefront"`
87
- `<IkasComponentRenderer components={myList as any[]} parentProps={props} />`
88
- Always pass `parentProps={props}` so children can access parent data. Cast with `as any[]`.
89
- - CSS: write plain class names — auto-scoped with .cc_{componentId} at build time
90
- - Events: use onInput (not onChange) for text inputs (Preact behavior)
91
- - Imports: `import { addItemToCart, IkasProduct } from "@ikas/bp-storefront"`
92
-
93
- ## No Static Text Rule
94
- **CRITICAL: Never hardcode user-visible text in JSX.** All text strings (headings, button labels,
95
- empty states, loading messages, form labels) MUST be TEXT props with defaultValues.
96
- Wrong: `<h1>Sign In</h1>`
97
- Correct: `<h1>{title}</h1>` with `title` as TEXT prop (defaultValue: "Sign In")
98
- For button loading states, use two separate props (e.g., `submitButtonText` + `submittingButtonText`).
99
- Group text props under a "Texts" propGroup or another specific text group name.
100
-
101
- **Assistive strings (`aria-label`, `aria-describedby`, `alt`, sr-only text):** if the string is meaningful to end users (e.g. icon-only button label, product image alt), make it a TEXT prop. English literal defaults are acceptable for purely structural labels where a merchant would never want to change them (e.g. `role="dialog" aria-modal="true"`). When in doubt, make it a prop.
102
-
103
- ## Sections vs Components
104
- - Sections = page-level containers (Header, Hero, Product Grid, Footer)
105
- Set "type": "section" via CLI. Use <section> root element. Props interface: Props.
106
- **Sections MUST always include a `backgroundColor` COLOR prop** (default: `#ffffff`).
107
- Apply via inline style: `style={backgroundColor ? { backgroundColor } : undefined}`
108
- Consider also adding `textColor` COLOR props for text elements directly on the section background.
109
- - Components = child elements inside sections (buttons, cards, badges)
110
- Defaults to "component". Use <div> root element. Props interface: Props.
111
-
112
- ## Prop Groups
113
- Organize props that are related to each other into collapsible groups in editor sidebar.
114
- - Define groups in `propGroups` on component in ikas.config.json
115
- - Assign props via `groupId` on each prop
116
- - Nest 1 level deep with `children`
117
- - Group IDs must be unique within a component
118
- - CLI: add-prop-group, update-prop-group, remove-prop-group
119
- - Add prop to group: add-prop --group <groupId> or update-prop --group <groupId>
120
-
121
- ## Build Verification
122
- IMPORTANT: After completing any task, always run `npx ikas-component build` (or `npm run build`)
123
- to check for TypeScript and build errors. Fix any errors before considering the task done.
@@ -1,6 +0,0 @@
1
- node_modules/
2
- dist/
3
- .DS_Store
4
- *.log
5
- .ikas-dev-state.json
6
- asd
@@ -1,95 +0,0 @@
1
- {
2
- "name": "{{PROJECT_NAME}}",
3
- "version": "1.0.0",
4
- "projectId": "{{PROJECT_ID}}",
5
- "globalStyles": "./src/global.css",
6
- "components": [
7
- {
8
- "id": "{{EXAMPLE_COMPONENT_ID}}",
9
- "name": "Example Component",
10
- "entry": "./src/components/ExampleComponent/index.tsx",
11
- "styles": "./src/components/ExampleComponent/styles.css",
12
- "props": [
13
- {
14
- "name": "title",
15
- "displayName": "Title",
16
- "type": "TEXT",
17
- "required": true,
18
- "defaultValue": "Hello World",
19
- "description": "The main title text"
20
- },
21
- {
22
- "name": "description",
23
- "displayName": "Description",
24
- "type": "TEXT",
25
- "required": false,
26
- "defaultValue": "This is an example ikas code component built with Preact.",
27
- "description": "The description text below the title"
28
- },
29
- {
30
- "name": "showButton",
31
- "displayName": "Show Button",
32
- "type": "BOOLEAN",
33
- "required": false,
34
- "defaultValue": true,
35
- "description": "Whether to show the action button"
36
- },
37
- {
38
- "name": "buttonText",
39
- "displayName": "Button Text",
40
- "type": "TEXT",
41
- "required": false,
42
- "defaultValue": "Click Me",
43
- "description": "The text displayed on the button"
44
- }
45
- ]
46
- },
47
- {
48
- "id": "{{EXAMPLE_SECTION_ID}}",
49
- "name": "Example Section",
50
- "entry": "./src/components/ExampleSection/index.tsx",
51
- "styles": "./src/components/ExampleSection/styles.css",
52
- "type": "section",
53
- "props": [
54
- {
55
- "name": "heading",
56
- "displayName": "Heading",
57
- "type": "TEXT",
58
- "required": true,
59
- "defaultValue": "Welcome to Our Store",
60
- "description": "The section heading text",
61
- "groupId": "content"
62
- },
63
- {
64
- "name": "subtitle",
65
- "displayName": "Subtitle",
66
- "type": "TEXT",
67
- "required": false,
68
- "defaultValue": "Discover our latest products and collections.",
69
- "description": "The subtitle text below the heading",
70
- "groupId": "content"
71
- },
72
- {
73
- "name": "backgroundColor",
74
- "displayName": "Background Color",
75
- "type": "COLOR",
76
- "required": false,
77
- "description": "The section background color",
78
- "groupId": "appearance"
79
- }
80
- ],
81
- "propGroups": [
82
- {
83
- "id": "content",
84
- "name": "Content",
85
- "description": "Text and copy settings"
86
- },
87
- {
88
- "id": "appearance",
89
- "name": "Appearance",
90
- "description": "Colors and visual style"
91
- }
92
- ]
93
- }
94
- ]
95
- }
@@ -1,10 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "ikas-code-components": {
4
- "command": "npx",
5
- "args": [
6
- "ikas-mcp"
7
- ]
8
- }
9
- }
10
- }
@@ -1,22 +0,0 @@
1
- {
2
- "name": "{{PROJECT_NAME}}",
3
- "version": "1.0.0",
4
- "type": "module",
5
- "scripts": {
6
- "dev": "ikas-component dev",
7
- "build": "ikas-component build",
8
- "add": "ikas-component add",
9
- "publish": "ikas-component publish"
10
- },
11
- "dependencies": {
12
- "preact": "^10.19.3"
13
- },
14
- "devDependencies": {
15
- "@ikas/component-cli": "*",
16
- "@ikas/bp-storefront": "*",
17
- "@ikas/code-components-mcp": "*",
18
- "@preact/preset-vite": "^2.10.3",
19
- "typescript": "^5.3.0",
20
- "vite": "^5.0.0"
21
- }
22
- }
@@ -1,22 +0,0 @@
1
- import { Props } from "./types";
2
-
3
- export function ExampleComponent({
4
- title,
5
- description = "This is an example ikas code component built with Preact.",
6
- showButton,
7
- buttonText = "Click Me",
8
- }: Props) {
9
- return (
10
- <div className="example-component">
11
- <h1 className="example-title">{title}</h1>
12
- <p className="example-description">{description}</p>
13
- {showButton && (
14
- <button className="example-button">
15
- {buttonText}
16
- </button>
17
- )}
18
- </div>
19
- );
20
- }
21
-
22
- export default ExampleComponent;
@@ -1,36 +0,0 @@
1
- .example-component {
2
- padding: 24px;
3
- border-radius: 8px;
4
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
5
- color: white;
6
- font-family: system-ui, -apple-system, sans-serif;
7
- }
8
-
9
- .example-title {
10
- margin: 0 0 12px 0;
11
- font-size: 28px;
12
- font-weight: 700;
13
- }
14
-
15
- .example-description {
16
- margin: 0 0 20px 0;
17
- font-size: 16px;
18
- opacity: 0.9;
19
- }
20
-
21
- .example-button {
22
- padding: 12px 24px;
23
- border: none;
24
- border-radius: 6px;
25
- background: white;
26
- color: #667eea;
27
- font-size: 16px;
28
- font-weight: 600;
29
- cursor: pointer;
30
- transition: transform 0.2s, box-shadow 0.2s;
31
- }
32
-
33
- .example-button:hover {
34
- transform: translateY(-2px);
35
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
36
- }
@@ -1,7 +0,0 @@
1
- // This file is auto-generated — do not edit manually.
2
- export interface Props {
3
- title: string;
4
- description?: string;
5
- showButton?: boolean;
6
- buttonText?: string;
7
- }
@@ -1,14 +0,0 @@
1
- import { Props } from "./types";
2
-
3
- export function ExampleSection({ heading, subtitle, backgroundColor }: Props) {
4
- return (
5
- <section className="example-section" style={backgroundColor ? { backgroundColor } : undefined}>
6
- <div className="example-section-inner">
7
- <h2 className="example-section-heading">{heading}</h2>
8
- {subtitle && <p className="example-section-subtitle">{subtitle}</p>}
9
- </div>
10
- </section>
11
- );
12
- }
13
-
14
- export default ExampleSection;
@@ -1,29 +0,0 @@
1
- .example-section {
2
- width: 100%;
3
- padding: 64px 24px;
4
- background: #f8f9fa;
5
- }
6
-
7
- .example-section-inner {
8
- max-width: 1200px;
9
- margin: 0 auto;
10
- text-align: center;
11
- }
12
-
13
- .example-section-heading {
14
- margin: 0 0 16px 0;
15
- font-size: 36px;
16
- font-weight: 700;
17
- color: #1a1a2e;
18
- font-family: system-ui, -apple-system, sans-serif;
19
- }
20
-
21
- .example-section-subtitle {
22
- margin: 0;
23
- font-size: 18px;
24
- color: #6b7280;
25
- font-family: system-ui, -apple-system, sans-serif;
26
- max-width: 600px;
27
- margin-left: auto;
28
- margin-right: auto;
29
- }
@@ -1,6 +0,0 @@
1
- // This file is auto-generated — do not edit manually.
2
- export interface Props {
3
- heading: string;
4
- subtitle?: string;
5
- backgroundColor?: string;
6
- }
@@ -1,2 +0,0 @@
1
- export { ExampleComponent } from "./ExampleComponent/index";
2
- export { ExampleSection } from "./ExampleSection/index";