@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,10 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "ikas-code-components": {
4
- "command": "npx",
5
- "args": [
6
- "ikas-mcp"
7
- ]
8
- }
9
- }
10
- }
@@ -1,23 +0,0 @@
1
- {
2
- "name": "{{PROJECT_NAME}}",
3
- "version": "1.0.0",
4
- "private": true,
5
- "type": "module",
6
- "scripts": {
7
- "dev": "ikas-component dev",
8
- "build": "ikas-component build",
9
- "publish": "ikas-component publish",
10
- "check": "ikas-component check"
11
- },
12
- "dependencies": {
13
- "preact": "^10.19.3"
14
- },
15
- "devDependencies": {
16
- "@ikas/component-cli": "*",
17
- "@ikas/bp-storefront": "*",
18
- "@ikas/code-components-mcp": "*",
19
- "@preact/preset-vite": "^2.10.3",
20
- "typescript": "^5.3.3",
21
- "vite": "^5.0.0"
22
- }
23
- }
@@ -1,55 +0,0 @@
1
- import {
2
- IkasCustomerAddress,
3
- getCustomerAddressText,
4
- } from "@ikas/bp-storefront";
5
- import { getFullName } from "../../../../utils/fullName";
6
-
7
- interface Props {
8
- address: IkasCustomerAddress;
9
- editButtonText: string;
10
- deleteButtonText: string;
11
- onEdit: () => void;
12
- onDelete: () => void;
13
- }
14
-
15
- export default function AddressCard({
16
- address,
17
- editButtonText,
18
- deleteButtonText,
19
- onEdit,
20
- onDelete,
21
- }: Props) {
22
- const fullName = getFullName(address?.firstName, address?.lastName);
23
-
24
- return (
25
- <div className="kombos-address-card">
26
- <div className="kombos-address-card__header">
27
- <span className="kombos-address-card__title text-sm-medium">
28
- {address.title}
29
- </span>
30
- <div className="kombos-address-card__actions">
31
- <button
32
- type="button"
33
- className="kombos-address-card__edit text-sm-semibold"
34
- onClick={onEdit}
35
- >
36
- {editButtonText}
37
- </button>
38
- <button
39
- type="button"
40
- className="kombos-address-card__delete text-sm-semibold"
41
- onClick={onDelete}
42
- >
43
- {deleteButtonText}
44
- </button>
45
- </div>
46
- </div>
47
- <div className="kombos-address-card__body">
48
- <span className="text-sm-medium">{fullName}</span>
49
- <span className="text-sm-regular">
50
- {getCustomerAddressText(address)}
51
- </span>
52
- </div>
53
- </div>
54
- );
55
- }
@@ -1,46 +0,0 @@
1
- /* ── Address Card ── */
2
- .kombos-address-card {
3
- border: 1px solid var(--kombos-gray-200);
4
- border-radius: 6px;
5
- padding: 1.5rem;
6
- display: flex;
7
- flex-direction: column;
8
- gap: 0.75rem;
9
- }
10
-
11
- .kombos-address-card__header {
12
- display: flex;
13
- justify-content: space-between;
14
- align-items: center;
15
- }
16
-
17
- .kombos-address-card__title {
18
- color: var(--kombos-gray-900);
19
- }
20
-
21
- .kombos-address-card__actions {
22
- display: flex;
23
- gap: 0.75rem;
24
- align-items: center;
25
- }
26
-
27
- .kombos-address-card__edit,
28
- .kombos-address-card__delete {
29
- text-decoration: underline;
30
- color: var(--kombos-gray-900);
31
- background: none;
32
- border: none;
33
- cursor: pointer;
34
- padding: 0;
35
- }
36
-
37
- .kombos-address-card__delete {
38
- color: var(--kombos-gray-500);
39
- }
40
-
41
- .kombos-address-card__body {
42
- display: flex;
43
- flex-direction: column;
44
- gap: 0.375rem;
45
- color: var(--kombos-gray-900);
46
- }
@@ -1,298 +0,0 @@
1
- import { Fragment } from "preact";
2
- import { useState, useEffect, useRef } from "preact/hooks";
3
- import {
4
- type AddressForm,
5
- type IkasFormItem,
6
- type IkasFormItemOption,
7
- type IkasFormFreeText,
8
- type AddressFormItem,
9
- IkasCustomerAddress,
10
- getIkasCustomerAddressForm,
11
- getEmptyAddressForm,
12
- initAddressForm,
13
- submitAddressForm,
14
- setAddressFormFirstName,
15
- setAddressFormLastName,
16
- setAddressFormIdentityNumber,
17
- setAddressFormPhone,
18
- setAddressFormAddressLine1,
19
- setAddressFormAddressLine2,
20
- setAddressFormCountry,
21
- setAddressFormState,
22
- setAddressFormCity,
23
- setAddressFormDistrict,
24
- setAddressFormRegion,
25
- setAddressFormPostalCode,
26
- setAddressFormTitle,
27
- customerStore,
28
- } from "@ikas/bp-storefront";
29
- import { observer } from "@ikas/component-utils";
30
- import Modal from "../../../../sub-components/Modal";
31
- import FormItem from "../../../../sub-components/FormItem";
32
- import Input from "../../../../sub-components/Input";
33
- import Select from "../../../../sub-components/Select";
34
- import SkeletonField from "../../../../sub-components/SkeletonField";
35
-
36
- interface Props {
37
- address?: IkasCustomerAddress;
38
- title: string;
39
- saveButtonText: string;
40
- savingButtonText: string;
41
- cancelButtonText: string;
42
- onClose: () => void;
43
- onSaved: () => void;
44
- }
45
-
46
- type FormFieldSetter = (form: AddressForm, value: string) => void;
47
-
48
- const SKELETON_ROWS: AddressFormItem[][] = [
49
- ["firstName", "lastName"],
50
- ["identityNumber"],
51
- ["phone"],
52
- ["addressLine1"],
53
- ["addressLine2"],
54
- ["country"],
55
- ["state", "city"],
56
- ["district", "postalCode"],
57
- ];
58
-
59
- const getFieldStatus = (field?: { hasError: boolean }): "default" | "error" =>
60
- field?.hasError ? "error" : "default";
61
-
62
- const getFieldHelper = (field?: { hasError: boolean; message?: string }) =>
63
- field?.hasError ? field.message : undefined;
64
-
65
- const AddressModal = observer(function AddressModal({
66
- address,
67
- title,
68
- saveButtonText,
69
- savingButtonText,
70
- cancelButtonText,
71
- onClose,
72
- onSaved,
73
- }: Props) {
74
- const onSavedRef = useRef(onSaved);
75
- onSavedRef.current = onSaved;
76
-
77
- const [addressForm] = useState<AddressForm>(() =>
78
- address
79
- ? getIkasCustomerAddressForm(address)
80
- : getEmptyAddressForm(customerStore),
81
- );
82
-
83
- const [isLoading, setIsLoading] = useState(true);
84
-
85
- useEffect(() => {
86
- initAddressForm(addressForm, address).then(() => setIsLoading(false));
87
- }, []);
88
-
89
- const handleSubmit = async (e: Event) => {
90
- e.preventDefault();
91
- const success = await submitAddressForm(addressForm);
92
- if (success) {
93
- onSavedRef.current();
94
- onClose();
95
- }
96
- };
97
-
98
- const renderInput = (
99
- field: IkasFormItem | undefined,
100
- setter: FormFieldSetter,
101
- id: string,
102
- type?: string,
103
- ) => {
104
- if (!field) return null;
105
-
106
- return (
107
- <FormItem
108
- label={field.label ?? ""}
109
- htmlFor={id}
110
- status={getFieldStatus(field)}
111
- helper={getFieldHelper(field)}
112
- >
113
- <Input
114
- id={id}
115
- type={type}
116
- value={field.value ?? ""}
117
- placeholder={field.placeholder}
118
- onInput={(e: Event) =>
119
- setter(addressForm, (e.target as HTMLInputElement).value)
120
- }
121
- />
122
- </FormItem>
123
- );
124
- };
125
-
126
- const renderSelect = (
127
- field: IkasFormFreeText | undefined,
128
- options: IkasFormItemOption[] | undefined,
129
- setter: FormFieldSetter,
130
- id: string,
131
- ) => {
132
- if (!field) return null;
133
-
134
- if (field.isFreeText || !options?.length) {
135
- return renderInput(field, setter, id);
136
- }
137
-
138
- return (
139
- <FormItem
140
- label={field.label ?? ""}
141
- htmlFor={id}
142
- status={getFieldStatus(field)}
143
- helper={getFieldHelper(field)}
144
- >
145
- <Select
146
- id={id}
147
- options={[{ value: "", label: field.placeholder ?? "" }, ...options]}
148
- value={field.value ?? ""}
149
- onChange={(e: Event) =>
150
- setter(addressForm, (e.target as HTMLSelectElement).value)
151
- }
152
- disabled={field.isLoading}
153
- />
154
- </FormItem>
155
- );
156
- };
157
-
158
- const renderFormField = (key: AddressFormItem) => {
159
- switch (key) {
160
- case "firstName":
161
- return renderInput(
162
- addressForm.firstName,
163
- setAddressFormFirstName,
164
- "addr-first-name",
165
- );
166
- case "lastName":
167
- return renderInput(
168
- addressForm.lastName,
169
- setAddressFormLastName,
170
- "addr-last-name",
171
- );
172
- case "identityNumber":
173
- return renderInput(
174
- addressForm.identityNumber,
175
- setAddressFormIdentityNumber,
176
- "addr-identity",
177
- );
178
- case "phone":
179
- return renderInput(
180
- addressForm.phone,
181
- setAddressFormPhone,
182
- "addr-phone",
183
- "tel",
184
- );
185
- case "addressLine1":
186
- return renderInput(
187
- addressForm.addressLine1,
188
- setAddressFormAddressLine1,
189
- "addr-line1",
190
- );
191
- case "addressLine2":
192
- return renderInput(
193
- addressForm.addressLine2,
194
- setAddressFormAddressLine2,
195
- "addr-line2",
196
- );
197
- case "country":
198
- return renderSelect(
199
- addressForm.country,
200
- addressForm.countryOptions,
201
- setAddressFormCountry,
202
- "addr-country",
203
- );
204
- case "state":
205
- return renderSelect(
206
- addressForm.state,
207
- addressForm.stateOptions,
208
- setAddressFormState,
209
- "addr-state",
210
- );
211
- case "city":
212
- return renderSelect(
213
- addressForm.city,
214
- addressForm.cityOptions,
215
- setAddressFormCity,
216
- "addr-city",
217
- );
218
- case "district":
219
- return renderSelect(
220
- addressForm.district,
221
- addressForm.districtOptions,
222
- setAddressFormDistrict,
223
- "addr-district",
224
- );
225
- case "region":
226
- return addressForm.regionOptions?.length
227
- ? renderSelect(
228
- addressForm.region,
229
- addressForm.regionOptions,
230
- setAddressFormRegion,
231
- "addr-region",
232
- )
233
- : null;
234
- case "postalCode":
235
- return renderInput(
236
- addressForm.postalCode,
237
- setAddressFormPostalCode,
238
- "addr-postal",
239
- );
240
- default:
241
- return null;
242
- }
243
- };
244
-
245
- const renderRowLayout = (
246
- rows: AddressFormItem[][],
247
- renderItem: (key: AddressFormItem) => preact.JSX.Element | null,
248
- ) =>
249
- rows.map((row) => {
250
- const visibleKeys = row.filter((key) => addressForm[key] != null);
251
- if (visibleKeys.length === 0) return null;
252
- const rowKey = visibleKeys.join("-");
253
- if (visibleKeys.length === 1) {
254
- return <Fragment key={rowKey}>{renderItem(visibleKeys[0])}</Fragment>;
255
- }
256
- return (
257
- <div key={rowKey} className="kombos-address-modal__row">
258
- {visibleKeys.map((key) => (
259
- <Fragment key={key}>{renderItem(key)}</Fragment>
260
- ))}
261
- </div>
262
- );
263
- });
264
-
265
- return (
266
- <Modal
267
- onClose={onClose}
268
- title={title}
269
- cancelText={cancelButtonText}
270
- okText={addressForm.isSubmitting ? savingButtonText : saveButtonText}
271
- okButtonProps={{
272
- type: "submit",
273
- form: "kombos-address-form",
274
- disabled: addressForm.isSubmitting || isLoading,
275
- }}
276
- >
277
- {isLoading ? (
278
- <div className="kombos-address-modal__form">
279
- <SkeletonField labelWidth="40%" />
280
- {renderRowLayout(SKELETON_ROWS, () => (
281
- <SkeletonField labelWidth="40%" />
282
- ))}
283
- </div>
284
- ) : (
285
- <form
286
- id="kombos-address-form"
287
- className="kombos-address-modal__form"
288
- onSubmit={handleSubmit}
289
- >
290
- {renderInput(addressForm.title, setAddressFormTitle, "addr-title")}
291
- {renderRowLayout(addressForm.addressFormat ?? [], renderFormField)}
292
- </form>
293
- )}
294
- </Modal>
295
- );
296
- });
297
-
298
- export default AddressModal;
@@ -1,23 +0,0 @@
1
- /* ── Address Modal (form-specific styles) ── */
2
- .kombos-address-modal__form {
3
- display: flex;
4
- flex-direction: column;
5
- gap: 1rem;
6
- }
7
-
8
- .kombos-address-modal__row {
9
- display: flex;
10
- flex-direction: column;
11
- gap: 1rem;
12
- }
13
-
14
- @media (min-width: 768px) {
15
- .kombos-address-modal__row {
16
- flex-direction: row;
17
- }
18
-
19
- .kombos-address-modal__row > * {
20
- flex: 1;
21
- min-width: 0;
22
- }
23
- }
@@ -1,127 +0,0 @@
1
- import { useState } from "preact/hooks";
2
- import {
3
- customerStore,
4
- IkasCustomerAddress,
5
- deleteCustomerAddress,
6
- } from "@ikas/bp-storefront";
7
- import Button from "../../sub-components/Button";
8
- import AddressCard from "./components/AddressCard";
9
- import AddressModal from "./components/AddressModal";
10
- import ConfirmModal from "../../sub-components/ConfirmModal";
11
- import { Props } from "./types";
12
-
13
- export function AccountAddresses({
14
- title = "My Addresses",
15
- addButtonText = "Add Address",
16
- emptyMessage = "No addresses added yet.",
17
- editButtonText = "Edit",
18
- deleteButtonText = "Delete",
19
- saveButtonText = "Save",
20
- savingButtonText = "Saving...",
21
- cancelButtonText = "Cancel",
22
- modalTitleAdd = "Add Address",
23
- modalTitleEdit = "Edit Address",
24
- deleteConfirmMessage = "Are you sure you want to delete this address?",
25
- deleteConfirmTitle = "Delete Address",
26
- }: Props) {
27
- const [modalOpen, setModalOpen] = useState(false);
28
- const [editingAddress, setEditingAddress] = useState<
29
- IkasCustomerAddress | undefined
30
- >(undefined);
31
- const [deletingAddress, setDeletingAddress] = useState<
32
- IkasCustomerAddress | undefined
33
- >(undefined);
34
-
35
- const addresses = customerStore.customer?.addresses ?? [];
36
-
37
- const handleAdd = () => {
38
- setEditingAddress(undefined);
39
- setModalOpen(true);
40
- };
41
-
42
- const handleEdit = (addr: IkasCustomerAddress) => {
43
- setEditingAddress(addr);
44
- setModalOpen(true);
45
- };
46
-
47
- const handleDeleteConfirm = async () => {
48
- if (!deletingAddress) return;
49
- await deleteCustomerAddress(customerStore, deletingAddress);
50
- setDeletingAddress(undefined);
51
- };
52
-
53
- const handleModalClose = () => {
54
- setModalOpen(false);
55
- setEditingAddress(undefined);
56
- };
57
-
58
- return (
59
- <div className="kombos-account-addresses">
60
- <h1 className="kombos-account-addresses__title text-md-medium">{title}</h1>
61
-
62
- {addresses.length === 0 ? (
63
- <div className="kombos-account-addresses__empty-state">
64
- <p className="kombos-account-addresses__empty text-sm-medium">{emptyMessage}</p>
65
- <Button
66
- variant="primary"
67
- size="s"
68
- onClick={handleAdd}
69
- className="kombos-account-addresses__add"
70
- >
71
- {addButtonText}
72
- </Button>
73
- </div>
74
- ) : (
75
- <>
76
- <div className="kombos-account-addresses__grid">
77
- {addresses.map((addr) => (
78
- <AddressCard
79
- key={addr.id}
80
- address={addr}
81
- editButtonText={editButtonText}
82
- deleteButtonText={deleteButtonText}
83
- onEdit={() => handleEdit(addr)}
84
- onDelete={() => setDeletingAddress(addr)}
85
- />
86
- ))}
87
- </div>
88
-
89
- <Button
90
- variant="primary"
91
- size="s"
92
- onClick={handleAdd}
93
- className="kombos-account-addresses__add"
94
- >
95
- {addButtonText}
96
- </Button>
97
- </>
98
- )}
99
-
100
- {modalOpen && (
101
- <AddressModal
102
- address={editingAddress}
103
- title={editingAddress ? modalTitleEdit : modalTitleAdd}
104
- saveButtonText={saveButtonText}
105
- savingButtonText={savingButtonText}
106
- cancelButtonText={cancelButtonText}
107
- onClose={handleModalClose}
108
- onSaved={handleModalClose}
109
- />
110
- )}
111
-
112
- {deletingAddress && (
113
- <ConfirmModal
114
- title={deleteConfirmTitle}
115
- message={deleteConfirmMessage}
116
- cancelText={cancelButtonText}
117
- confirmText={deleteButtonText}
118
- confirmVariant="dangerous"
119
- onClose={() => setDeletingAddress(undefined)}
120
- onConfirm={handleDeleteConfirm}
121
- />
122
- )}
123
- </div>
124
- );
125
- }
126
-
127
- export default AccountAddresses;
@@ -1,41 +0,0 @@
1
- /* ── Account Addresses ── */
2
- .kombos-account-addresses {
3
- display: flex;
4
- flex-direction: column;
5
- gap: 1.5rem;
6
- }
7
-
8
- .kombos-account-addresses__title {
9
- color: var(--kombos-gray-900);
10
- }
11
-
12
- .kombos-account-addresses__add {
13
- width: fit-content;
14
- min-width: 12.5rem;
15
- }
16
-
17
- /* Cards grid: 1 col mobile, 2 col desktop */
18
- .kombos-account-addresses__grid {
19
- display: grid;
20
- grid-template-columns: 1fr;
21
- gap: 1.5rem;
22
- }
23
-
24
- @media (min-width: 768px) {
25
- .kombos-account-addresses__grid {
26
- grid-template-columns: repeat(2, 1fr);
27
- }
28
- }
29
-
30
- /* Empty state */
31
- .kombos-account-addresses__empty-state {
32
- display: flex;
33
- flex-direction: column;
34
- align-items: center;
35
- gap: 1.5rem;
36
- padding: 3rem 0;
37
- }
38
-
39
- .kombos-account-addresses__empty {
40
- color: var(--kombos-gray-500);
41
- }
@@ -1,15 +0,0 @@
1
- // This file is auto-generated — do not edit manually.
2
- export interface Props {
3
- title?: string;
4
- emptyMessage?: string;
5
- addButtonText?: string;
6
- editButtonText?: string;
7
- modalTitleAdd?: string;
8
- modalTitleEdit?: string;
9
- saveButtonText?: string;
10
- savingButtonText?: string;
11
- cancelButtonText?: string;
12
- deleteConfirmTitle?: string;
13
- deleteConfirmMessage?: string;
14
- deleteButtonText?: string;
15
- }