@xbg.solutions/create-frontend 1.1.2 → 1.2.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 (493) hide show
  1. package/bin/xbg-frontend.cjs +32 -0
  2. package/package.json +17 -3
  3. package/src/commands/add.cjs +470 -0
  4. package/src/commands/generate.cjs +24 -0
  5. package/src/manifest.json +1578 -0
  6. package/src/registry/advanced/ChartWrapper.svelte +587 -0
  7. package/src/registry/advanced/DataTable.svelte +645 -0
  8. package/src/registry/advanced/FormWizard.svelte +546 -0
  9. package/src/registry/advanced/ImageUpload.svelte +663 -0
  10. package/src/registry/advanced/index.ts +33 -0
  11. package/src/registry/atoms/calendar/Calendar.svelte +181 -0
  12. package/src/registry/atoms/calendar/index.ts +1 -0
  13. package/src/registry/atoms/dialog/Dialog.svelte +179 -0
  14. package/src/registry/atoms/dialog/DialogDescription.svelte +16 -0
  15. package/src/registry/atoms/dialog/DialogFooter.svelte +16 -0
  16. package/src/registry/atoms/dialog/DialogHeader.svelte +16 -0
  17. package/src/registry/atoms/dialog/DialogTitle.svelte +16 -0
  18. package/src/registry/atoms/dialog/index.ts +10 -0
  19. package/src/registry/atoms/icon/BrandIcon.svelte +47 -0
  20. package/src/registry/atoms/icon/DynamicIcon.svelte +49 -0
  21. package/src/registry/atoms/icon/index.ts +2 -0
  22. package/src/registry/atoms/legend/Legend.svelte +32 -0
  23. package/src/registry/atoms/legend/index.ts +1 -0
  24. package/src/registry/atoms/menu/MenuItem.svelte +85 -0
  25. package/src/registry/atoms/menu/index.ts +1 -0
  26. package/src/registry/atoms/message/Message.svelte +62 -0
  27. package/src/registry/atoms/message/index.ts +1 -0
  28. package/src/registry/atoms/nav/NavItem.svelte +67 -0
  29. package/src/registry/atoms/nav/index.ts +1 -0
  30. package/src/registry/atoms/notification-badge/NotificationBadge.svelte +30 -0
  31. package/src/registry/atoms/notification-badge/index.ts +1 -0
  32. package/src/registry/atoms/otp-input/OtpInput.svelte +108 -0
  33. package/src/registry/atoms/otp-input/index.ts +1 -0
  34. package/src/registry/atoms/select/Select.svelte +216 -0
  35. package/src/registry/atoms/select/index.ts +6 -0
  36. package/src/registry/atoms/settings-card/SettingsCard.svelte +48 -0
  37. package/src/registry/atoms/settings-card/index.ts +1 -0
  38. package/src/registry/atoms/sidebar-item/SidebarItem.svelte +90 -0
  39. package/src/registry/atoms/sidebar-item/index.ts +1 -0
  40. package/src/registry/atoms/statistic-card/StatisticCard.svelte +53 -0
  41. package/src/registry/atoms/statistic-card/index.ts +1 -0
  42. package/src/registry/atoms/text-editor/TextEditor.svelte +77 -0
  43. package/src/registry/atoms/text-editor/index.ts +1 -0
  44. package/src/registry/atoms/uploader/Uploader.svelte +102 -0
  45. package/src/registry/atoms/uploader/index.ts +1 -0
  46. package/src/registry/atoms/user-item/UserItem.svelte +39 -0
  47. package/src/registry/atoms/user-item/index.ts +1 -0
  48. package/src/registry/blocks/account-section/AccountSection01.svelte +112 -0
  49. package/src/registry/blocks/account-section/AccountSection02.svelte +190 -0
  50. package/src/registry/blocks/account-section/AccountSection03.svelte +161 -0
  51. package/src/registry/blocks/account-section/AccountSection04.svelte +164 -0
  52. package/src/registry/blocks/account-section/AccountSection05.svelte +76 -0
  53. package/src/registry/blocks/account-section/index.ts +5 -0
  54. package/src/registry/blocks/app-shell/AppShell01.svelte +74 -0
  55. package/src/registry/blocks/app-shell/AppShell02.svelte +87 -0
  56. package/src/registry/blocks/app-shell/AppShell03.svelte +79 -0
  57. package/src/registry/blocks/app-shell/AppShell04.svelte +177 -0
  58. package/src/registry/blocks/app-shell/index.ts +4 -0
  59. package/src/registry/blocks/auth/AuthSplitScreen.svelte +132 -0
  60. package/src/registry/blocks/auth/LoginBlock01.svelte +94 -0
  61. package/src/registry/blocks/auth/LoginBlock02.svelte +103 -0
  62. package/src/registry/blocks/auth/LoginBlock03.svelte +53 -0
  63. package/src/registry/blocks/auth/LoginBlock04.svelte +99 -0
  64. package/src/registry/blocks/auth/LoginBlock05.svelte +101 -0
  65. package/src/registry/blocks/auth/OtpBlock01.svelte +115 -0
  66. package/src/registry/blocks/auth/OtpBlock02.svelte +113 -0
  67. package/src/registry/blocks/auth/OtpBlock03.svelte +143 -0
  68. package/src/registry/blocks/auth/OtpBlock04.svelte +122 -0
  69. package/src/registry/blocks/auth/OtpBlock05.svelte +81 -0
  70. package/src/registry/blocks/auth/SignupBlock01.svelte +103 -0
  71. package/src/registry/blocks/auth/SignupBlock02.svelte +94 -0
  72. package/src/registry/blocks/auth/SignupBlock03.svelte +120 -0
  73. package/src/registry/blocks/auth/SignupBlock04.svelte +112 -0
  74. package/src/registry/blocks/auth/SignupBlock05.svelte +77 -0
  75. package/src/registry/blocks/auth/index.ts +31 -0
  76. package/src/registry/blocks/banner/Banner01.svelte +67 -0
  77. package/src/registry/blocks/banner/Banner02.svelte +61 -0
  78. package/src/registry/blocks/banner/Banner03.svelte +54 -0
  79. package/src/registry/blocks/banner/Banner04.svelte +49 -0
  80. package/src/registry/blocks/banner/Banner05.svelte +47 -0
  81. package/src/registry/blocks/banner/index.ts +5 -0
  82. package/src/registry/blocks/bento-grid/BentoGrid01.svelte +92 -0
  83. package/src/registry/blocks/bento-grid/BentoGrid02.svelte +79 -0
  84. package/src/registry/blocks/bento-grid/BentoGrid03.svelte +79 -0
  85. package/src/registry/blocks/bento-grid/BentoGrid04.svelte +58 -0
  86. package/src/registry/blocks/bento-grid/BentoGrid05.svelte +92 -0
  87. package/src/registry/blocks/bento-grid/BentoGrid06.svelte +42 -0
  88. package/src/registry/blocks/bento-grid/index.ts +14 -0
  89. package/src/registry/blocks/blog-section/BlogSection01.svelte +100 -0
  90. package/src/registry/blocks/blog-section/BlogSection02.svelte +93 -0
  91. package/src/registry/blocks/blog-section/BlogSection03.svelte +92 -0
  92. package/src/registry/blocks/blog-section/BlogSection04.svelte +97 -0
  93. package/src/registry/blocks/blog-section/BlogSection05.svelte +120 -0
  94. package/src/registry/blocks/blog-section/index.ts +15 -0
  95. package/src/registry/blocks/buttons/ButtonBookmark.svelte +37 -0
  96. package/src/registry/blocks/buttons/ButtonLike.svelte +37 -0
  97. package/src/registry/blocks/buttons/ButtonMenu.svelte +37 -0
  98. package/src/registry/blocks/buttons/ButtonSplitDropdown.svelte +46 -0
  99. package/src/registry/blocks/buttons/ButtonStepper.svelte +55 -0
  100. package/src/registry/blocks/buttons/ButtonSteps.svelte +73 -0
  101. package/src/registry/blocks/buttons/ButtonToggleGroup.svelte +35 -0
  102. package/src/registry/blocks/buttons/ButtonsGroup.svelte +63 -0
  103. package/src/registry/blocks/buttons/SocialButtonsHorizontal.svelte +41 -0
  104. package/src/registry/blocks/buttons/SocialButtonsVertical.svelte +53 -0
  105. package/src/registry/blocks/buttons/index.ts +10 -0
  106. package/src/registry/blocks/calendar/CalendarBlock01.svelte +169 -0
  107. package/src/registry/blocks/calendar/CalendarBlock02.svelte +133 -0
  108. package/src/registry/blocks/calendar/CalendarBlock03.svelte +194 -0
  109. package/src/registry/blocks/calendar/CalendarBlock04.svelte +96 -0
  110. package/src/registry/blocks/calendar/CalendarBlock05.svelte +97 -0
  111. package/src/registry/blocks/calendar/CalendarBlock06.svelte +98 -0
  112. package/src/registry/blocks/calendar/CalendarBlock07.svelte +109 -0
  113. package/src/registry/blocks/calendar/CalendarBlock08.svelte +71 -0
  114. package/src/registry/blocks/calendar/CalendarBlock09.svelte +99 -0
  115. package/src/registry/blocks/calendar/CalendarBlock10.svelte +88 -0
  116. package/src/registry/blocks/calendar/CalendarBlock11.svelte +99 -0
  117. package/src/registry/blocks/calendar/CalendarBlock12.svelte +121 -0
  118. package/src/registry/blocks/calendar/CalendarBlock13.svelte +92 -0
  119. package/src/registry/blocks/calendar/CalendarBlock14.svelte +71 -0
  120. package/src/registry/blocks/calendar/CalendarBlock15.svelte +96 -0
  121. package/src/registry/blocks/calendar/CalendarBlock16.svelte +98 -0
  122. package/src/registry/blocks/calendar/CalendarBlock17.svelte +88 -0
  123. package/src/registry/blocks/calendar/CalendarBlock18.svelte +84 -0
  124. package/src/registry/blocks/calendar/CalendarBlock19.svelte +105 -0
  125. package/src/registry/blocks/calendar/CalendarBlock20.svelte +78 -0
  126. package/src/registry/blocks/calendar/CalendarBlock21.svelte +115 -0
  127. package/src/registry/blocks/calendar/CalendarBlock22.svelte +136 -0
  128. package/src/registry/blocks/calendar/CalendarBlock23.svelte +112 -0
  129. package/src/registry/blocks/calendar/CalendarBlock24.svelte +116 -0
  130. package/src/registry/blocks/calendar/CalendarBlock25.svelte +144 -0
  131. package/src/registry/blocks/calendar/CalendarBlock26.svelte +163 -0
  132. package/src/registry/blocks/calendar/CalendarBlock27.svelte +112 -0
  133. package/src/registry/blocks/calendar/CalendarBlock28.svelte +109 -0
  134. package/src/registry/blocks/calendar/CalendarBlock29.svelte +126 -0
  135. package/src/registry/blocks/calendar/CalendarBlock30.svelte +122 -0
  136. package/src/registry/blocks/calendar/CalendarBlock31.svelte +161 -0
  137. package/src/registry/blocks/calendar/CalendarBlock32.svelte +154 -0
  138. package/src/registry/blocks/calendar/index.ts +32 -0
  139. package/src/registry/blocks/card/Card01.svelte +69 -0
  140. package/src/registry/blocks/card/Card02.svelte +50 -0
  141. package/src/registry/blocks/card/Card03.svelte +60 -0
  142. package/src/registry/blocks/card/Card04.svelte +89 -0
  143. package/src/registry/blocks/card/Card05.svelte +51 -0
  144. package/src/registry/blocks/card/Card06.svelte +77 -0
  145. package/src/registry/blocks/card/Card07.svelte +35 -0
  146. package/src/registry/blocks/card/Card08.svelte +36 -0
  147. package/src/registry/blocks/card/index.ts +8 -0
  148. package/src/registry/blocks/cart/Cart01.svelte +183 -0
  149. package/src/registry/blocks/cart/Cart02.svelte +103 -0
  150. package/src/registry/blocks/cart/Cart03.svelte +38 -0
  151. package/src/registry/blocks/cart/Cart04.svelte +174 -0
  152. package/src/registry/blocks/cart/index.ts +4 -0
  153. package/src/registry/blocks/checkout/Checkout01.svelte +237 -0
  154. package/src/registry/blocks/checkout/Checkout02.svelte +205 -0
  155. package/src/registry/blocks/checkout/Checkout03.svelte +189 -0
  156. package/src/registry/blocks/checkout/Checkout04.svelte +109 -0
  157. package/src/registry/blocks/checkout/index.ts +4 -0
  158. package/src/registry/blocks/comparison-section/ComparisonSection01.svelte +116 -0
  159. package/src/registry/blocks/comparison-section/ComparisonSection02.svelte +98 -0
  160. package/src/registry/blocks/comparison-section/ComparisonSection03.svelte +93 -0
  161. package/src/registry/blocks/comparison-section/ComparisonSection04.svelte +98 -0
  162. package/src/registry/blocks/comparison-section/ComparisonSection05.svelte +119 -0
  163. package/src/registry/blocks/comparison-section/ComparisonSection06.svelte +154 -0
  164. package/src/registry/blocks/comparison-section/index.ts +6 -0
  165. package/src/registry/blocks/contact-section/ContactSection01.svelte +64 -0
  166. package/src/registry/blocks/contact-section/ContactSection02.svelte +108 -0
  167. package/src/registry/blocks/contact-section/ContactSection03.svelte +64 -0
  168. package/src/registry/blocks/contact-section/ContactSection04.svelte +30 -0
  169. package/src/registry/blocks/contact-section/ContactSection05.svelte +71 -0
  170. package/src/registry/blocks/contact-section/ContactSection06.svelte +88 -0
  171. package/src/registry/blocks/contact-section/index.ts +6 -0
  172. package/src/registry/blocks/cta/CTA01.svelte +44 -0
  173. package/src/registry/blocks/cta/CTA02.svelte +48 -0
  174. package/src/registry/blocks/cta/CTA03.svelte +53 -0
  175. package/src/registry/blocks/cta/CTA04.svelte +60 -0
  176. package/src/registry/blocks/cta/CTA05.svelte +53 -0
  177. package/src/registry/blocks/cta/CTA06.svelte +44 -0
  178. package/src/registry/blocks/cta/CTA07.svelte +39 -0
  179. package/src/registry/blocks/cta/index.ts +7 -0
  180. package/src/registry/blocks/dashboard/ChartsBlock01.svelte +275 -0
  181. package/src/registry/blocks/dashboard/DashboardBlock01.svelte +207 -0
  182. package/src/registry/blocks/dashboard/DashboardBlock02.svelte +259 -0
  183. package/src/registry/blocks/dashboard/DashboardBlock03.svelte +315 -0
  184. package/src/registry/blocks/dashboard/DashboardBlock04.svelte +220 -0
  185. package/src/registry/blocks/dashboard/DashboardBlock05.svelte +158 -0
  186. package/src/registry/blocks/dashboard/DashboardBlock06.svelte +173 -0
  187. package/src/registry/blocks/dashboard/DashboardBlock07.svelte +103 -0
  188. package/src/registry/blocks/dashboard/index.ts +16 -0
  189. package/src/registry/blocks/description-list/DescriptionList01.svelte +75 -0
  190. package/src/registry/blocks/description-list/DescriptionList02.svelte +50 -0
  191. package/src/registry/blocks/description-list/DescriptionList03.svelte +74 -0
  192. package/src/registry/blocks/description-list/DescriptionList04.svelte +88 -0
  193. package/src/registry/blocks/description-list/index.ts +4 -0
  194. package/src/registry/blocks/empty-lp/EmptyLP01.svelte +46 -0
  195. package/src/registry/blocks/empty-lp/EmptyLP02.svelte +49 -0
  196. package/src/registry/blocks/empty-lp/EmptyLP03.svelte +61 -0
  197. package/src/registry/blocks/empty-lp/EmptyLP04.svelte +37 -0
  198. package/src/registry/blocks/empty-lp/index.ts +4 -0
  199. package/src/registry/blocks/empty-section/EmptySection01.svelte +47 -0
  200. package/src/registry/blocks/empty-section/EmptySection02.svelte +93 -0
  201. package/src/registry/blocks/empty-section/EmptySection03.svelte +101 -0
  202. package/src/registry/blocks/empty-section/EmptySection04.svelte +76 -0
  203. package/src/registry/blocks/empty-section/index.ts +4 -0
  204. package/src/registry/blocks/faq-section/FaqSection01.svelte +114 -0
  205. package/src/registry/blocks/faq-section/FaqSection02.svelte +137 -0
  206. package/src/registry/blocks/faq-section/FaqSection03.svelte +107 -0
  207. package/src/registry/blocks/faq-section/FaqSection04.svelte +74 -0
  208. package/src/registry/blocks/faq-section/FaqSection05.svelte +69 -0
  209. package/src/registry/blocks/faq-section/index.ts +11 -0
  210. package/src/registry/blocks/feature-section/FeatureSection01.svelte +94 -0
  211. package/src/registry/blocks/feature-section/FeatureSection02.svelte +61 -0
  212. package/src/registry/blocks/feature-section/FeatureSection03.svelte +85 -0
  213. package/src/registry/blocks/feature-section/FeatureSection04.svelte +67 -0
  214. package/src/registry/blocks/feature-section/FeatureSection05.svelte +61 -0
  215. package/src/registry/blocks/feature-section/FeatureSection06.svelte +58 -0
  216. package/src/registry/blocks/feature-section/FeatureSection07.svelte +79 -0
  217. package/src/registry/blocks/feature-section/FeatureSection08.svelte +92 -0
  218. package/src/registry/blocks/feature-section/FeatureSection09.svelte +58 -0
  219. package/src/registry/blocks/feature-section/FeatureSection10.svelte +87 -0
  220. package/src/registry/blocks/feature-section/FeatureSection11.svelte +118 -0
  221. package/src/registry/blocks/feature-section/FeatureSection12.svelte +76 -0
  222. package/src/registry/blocks/feature-section/FeatureSection13.svelte +88 -0
  223. package/src/registry/blocks/feature-section/FeatureSection14.svelte +119 -0
  224. package/src/registry/blocks/feature-section/FeatureSection15.svelte +122 -0
  225. package/src/registry/blocks/feature-section/FeatureSection16.svelte +113 -0
  226. package/src/registry/blocks/feature-section/FeatureSection17.svelte +93 -0
  227. package/src/registry/blocks/feature-section/FeatureSection18.svelte +97 -0
  228. package/src/registry/blocks/feature-section/FeatureSection19.svelte +74 -0
  229. package/src/registry/blocks/feature-section/FeatureSection20.svelte +69 -0
  230. package/src/registry/blocks/feature-section/index.ts +20 -0
  231. package/src/registry/blocks/footer/Footer01.svelte +62 -0
  232. package/src/registry/blocks/footer/Footer02.svelte +67 -0
  233. package/src/registry/blocks/footer/Footer03.svelte +87 -0
  234. package/src/registry/blocks/footer/Footer04.svelte +67 -0
  235. package/src/registry/blocks/footer/Footer05.svelte +20 -0
  236. package/src/registry/blocks/footer/Footer06.svelte +107 -0
  237. package/src/registry/blocks/footer/Footer07.svelte +88 -0
  238. package/src/registry/blocks/footer/Footer08.svelte +84 -0
  239. package/src/registry/blocks/footer/Footer09.svelte +65 -0
  240. package/src/registry/blocks/footer/index.ts +19 -0
  241. package/src/registry/blocks/forms/SettingsBlock.svelte +329 -0
  242. package/src/registry/blocks/forms/index.ts +1 -0
  243. package/src/registry/blocks/gallery-section/GallerySection01.svelte +43 -0
  244. package/src/registry/blocks/gallery-section/GallerySection02.svelte +45 -0
  245. package/src/registry/blocks/gallery-section/GallerySection03.svelte +43 -0
  246. package/src/registry/blocks/gallery-section/GallerySection04.svelte +49 -0
  247. package/src/registry/blocks/gallery-section/GallerySection05.svelte +45 -0
  248. package/src/registry/blocks/gallery-section/GallerySection06.svelte +49 -0
  249. package/src/registry/blocks/gallery-section/GallerySection07.svelte +48 -0
  250. package/src/registry/blocks/gallery-section/GallerySection08.svelte +43 -0
  251. package/src/registry/blocks/gallery-section/GallerySection09.svelte +55 -0
  252. package/src/registry/blocks/gallery-section/GallerySection10.svelte +43 -0
  253. package/src/registry/blocks/gallery-section/GallerySection11.svelte +75 -0
  254. package/src/registry/blocks/gallery-section/GallerySection12.svelte +76 -0
  255. package/src/registry/blocks/gallery-section/index.ts +12 -0
  256. package/src/registry/blocks/header-section/HeaderSection01.svelte +53 -0
  257. package/src/registry/blocks/header-section/HeaderSection02.svelte +53 -0
  258. package/src/registry/blocks/header-section/HeaderSection03.svelte +61 -0
  259. package/src/registry/blocks/header-section/HeaderSection04.svelte +63 -0
  260. package/src/registry/blocks/header-section/HeaderSection05.svelte +53 -0
  261. package/src/registry/blocks/header-section/HeaderSection06.svelte +70 -0
  262. package/src/registry/blocks/header-section/HeaderSection07.svelte +97 -0
  263. package/src/registry/blocks/header-section/HeaderSection08.svelte +61 -0
  264. package/src/registry/blocks/header-section/HeaderSection09.svelte +53 -0
  265. package/src/registry/blocks/header-section/HeaderSection10.svelte +63 -0
  266. package/src/registry/blocks/header-section/HeaderSection11.svelte +68 -0
  267. package/src/registry/blocks/header-section/HeaderSection12.svelte +60 -0
  268. package/src/registry/blocks/header-section/HeaderSection13.svelte +92 -0
  269. package/src/registry/blocks/header-section/HeaderSection14.svelte +77 -0
  270. package/src/registry/blocks/header-section/HeaderSection15.svelte +49 -0
  271. package/src/registry/blocks/header-section/HeaderSection16.svelte +74 -0
  272. package/src/registry/blocks/header-section/HeaderSection17.svelte +58 -0
  273. package/src/registry/blocks/header-section/HeaderSection18.svelte +66 -0
  274. package/src/registry/blocks/header-section/HeaderSection19.svelte +47 -0
  275. package/src/registry/blocks/header-section/HeaderSection20.svelte +53 -0
  276. package/src/registry/blocks/header-section/index.ts +20 -0
  277. package/src/registry/blocks/hero-section/HeroSection01.svelte +69 -0
  278. package/src/registry/blocks/hero-section/HeroSection02.svelte +47 -0
  279. package/src/registry/blocks/hero-section/HeroSection03.svelte +56 -0
  280. package/src/registry/blocks/hero-section/HeroSection04.svelte +69 -0
  281. package/src/registry/blocks/hero-section/HeroSection05.svelte +73 -0
  282. package/src/registry/blocks/hero-section/HeroSection06.svelte +78 -0
  283. package/src/registry/blocks/hero-section/HeroSection07.svelte +48 -0
  284. package/src/registry/blocks/hero-section/HeroSection08.svelte +73 -0
  285. package/src/registry/blocks/hero-section/HeroSection09.svelte +51 -0
  286. package/src/registry/blocks/hero-section/HeroSection10.svelte +47 -0
  287. package/src/registry/blocks/hero-section/HeroSection11.svelte +60 -0
  288. package/src/registry/blocks/hero-section/HeroSection12.svelte +74 -0
  289. package/src/registry/blocks/hero-section/HeroSection13.svelte +86 -0
  290. package/src/registry/blocks/hero-section/HeroSection14.svelte +116 -0
  291. package/src/registry/blocks/hero-section/HeroSection15.svelte +75 -0
  292. package/src/registry/blocks/hero-section/HeroSection16.svelte +92 -0
  293. package/src/registry/blocks/hero-section/HeroSection17.svelte +78 -0
  294. package/src/registry/blocks/hero-section/HeroSection18.svelte +82 -0
  295. package/src/registry/blocks/hero-section/HeroSection19.svelte +72 -0
  296. package/src/registry/blocks/hero-section/HeroSection20.svelte +79 -0
  297. package/src/registry/blocks/hero-section/HeroSection21.svelte +75 -0
  298. package/src/registry/blocks/hero-section/HeroSection22.svelte +103 -0
  299. package/src/registry/blocks/hero-section/index.ts +22 -0
  300. package/src/registry/blocks/logo-section/LogoSection01.svelte +54 -0
  301. package/src/registry/blocks/logo-section/LogoSection02.svelte +56 -0
  302. package/src/registry/blocks/logo-section/LogoSection03.svelte +58 -0
  303. package/src/registry/blocks/logo-section/LogoSection04.svelte +58 -0
  304. package/src/registry/blocks/logo-section/LogoSection05.svelte +43 -0
  305. package/src/registry/blocks/logo-section/LogoSection06.svelte +43 -0
  306. package/src/registry/blocks/logo-section/LogoSection07.svelte +56 -0
  307. package/src/registry/blocks/logo-section/index.ts +7 -0
  308. package/src/registry/blocks/lp-navbar/LPNavbar01.svelte +94 -0
  309. package/src/registry/blocks/lp-navbar/LPNavbar02.svelte +96 -0
  310. package/src/registry/blocks/lp-navbar/LPNavbar03.svelte +97 -0
  311. package/src/registry/blocks/lp-navbar/LPNavbar04.svelte +103 -0
  312. package/src/registry/blocks/lp-navbar/LPNavbar05.svelte +173 -0
  313. package/src/registry/blocks/lp-navbar/LPNavbar06.svelte +200 -0
  314. package/src/registry/blocks/lp-navbar/LPNavbar07.svelte +202 -0
  315. package/src/registry/blocks/lp-navbar/index.ts +7 -0
  316. package/src/registry/blocks/mail/MailBlock.svelte +321 -0
  317. package/src/registry/blocks/mail/index.ts +2 -0
  318. package/src/registry/blocks/music/MusicBlock.svelte +239 -0
  319. package/src/registry/blocks/music/index.ts +1 -0
  320. package/src/registry/blocks/navbar/Navbar01.svelte +234 -0
  321. package/src/registry/blocks/navbar/Navbar02.svelte +111 -0
  322. package/src/registry/blocks/navbar/Navbar03.svelte +88 -0
  323. package/src/registry/blocks/navbar/index.ts +3 -0
  324. package/src/registry/blocks/not-found/NotFound01.svelte +29 -0
  325. package/src/registry/blocks/not-found/NotFound02.svelte +28 -0
  326. package/src/registry/blocks/not-found/NotFound03.svelte +25 -0
  327. package/src/registry/blocks/not-found/index.ts +3 -0
  328. package/src/registry/blocks/order-history/OrderHistory01.svelte +208 -0
  329. package/src/registry/blocks/order-history/OrderHistory02.svelte +131 -0
  330. package/src/registry/blocks/order-history/OrderHistory03.svelte +133 -0
  331. package/src/registry/blocks/order-history/index.ts +3 -0
  332. package/src/registry/blocks/page-header/PageHeader01.svelte +39 -0
  333. package/src/registry/blocks/page-header/PageHeader02.svelte +58 -0
  334. package/src/registry/blocks/page-header/PageHeader03.svelte +64 -0
  335. package/src/registry/blocks/page-header/PageHeader04.svelte +49 -0
  336. package/src/registry/blocks/page-header/PageHeader05.svelte +49 -0
  337. package/src/registry/blocks/page-header/PageHeader06.svelte +58 -0
  338. package/src/registry/blocks/page-header/PageHeader07.svelte +64 -0
  339. package/src/registry/blocks/page-header/PageHeader08.svelte +68 -0
  340. package/src/registry/blocks/page-header/index.ts +8 -0
  341. package/src/registry/blocks/playground/PlaygroundBlock01.svelte +162 -0
  342. package/src/registry/blocks/playground/PlaygroundBlock02.svelte +156 -0
  343. package/src/registry/blocks/playground/index.ts +2 -0
  344. package/src/registry/blocks/pricing-section/PricingSection01.svelte +109 -0
  345. package/src/registry/blocks/pricing-section/PricingSection02.svelte +145 -0
  346. package/src/registry/blocks/pricing-section/PricingSection03.svelte +94 -0
  347. package/src/registry/blocks/pricing-section/PricingSection04.svelte +103 -0
  348. package/src/registry/blocks/pricing-section/PricingSection05.svelte +128 -0
  349. package/src/registry/blocks/pricing-section/index.ts +20 -0
  350. package/src/registry/blocks/product-card/ProductCard01.svelte +74 -0
  351. package/src/registry/blocks/product-card/ProductCard02.svelte +108 -0
  352. package/src/registry/blocks/product-card/ProductCard03.svelte +80 -0
  353. package/src/registry/blocks/product-card/ProductCard04.svelte +50 -0
  354. package/src/registry/blocks/product-card/ProductCard05.svelte +107 -0
  355. package/src/registry/blocks/product-card/index.ts +5 -0
  356. package/src/registry/blocks/product-detail/ProductDetail01.svelte +174 -0
  357. package/src/registry/blocks/product-detail/ProductDetail02.svelte +170 -0
  358. package/src/registry/blocks/product-detail/ProductDetail03.svelte +159 -0
  359. package/src/registry/blocks/product-detail/ProductDetail04.svelte +106 -0
  360. package/src/registry/blocks/product-detail/ProductDetail05.svelte +181 -0
  361. package/src/registry/blocks/product-detail/index.ts +5 -0
  362. package/src/registry/blocks/product-listing/ProductListing01.svelte +194 -0
  363. package/src/registry/blocks/product-listing/ProductListing02.svelte +163 -0
  364. package/src/registry/blocks/product-listing/ProductListing03.svelte +173 -0
  365. package/src/registry/blocks/product-listing/ProductListing04.svelte +179 -0
  366. package/src/registry/blocks/product-listing/ProductListing05.svelte +126 -0
  367. package/src/registry/blocks/product-listing/index.ts +5 -0
  368. package/src/registry/blocks/product-reviews/ProductReviews01.svelte +156 -0
  369. package/src/registry/blocks/product-reviews/ProductReviews02.svelte +139 -0
  370. package/src/registry/blocks/product-reviews/ProductReviews03.svelte +137 -0
  371. package/src/registry/blocks/product-reviews/ProductReviews04.svelte +129 -0
  372. package/src/registry/blocks/product-reviews/index.ts +4 -0
  373. package/src/registry/blocks/promo-section/PromoSection01.svelte +72 -0
  374. package/src/registry/blocks/promo-section/PromoSection02.svelte +61 -0
  375. package/src/registry/blocks/promo-section/PromoSection03.svelte +110 -0
  376. package/src/registry/blocks/promo-section/PromoSection04.svelte +103 -0
  377. package/src/registry/blocks/promo-section/index.ts +4 -0
  378. package/src/registry/blocks/rich-text/RichText01.svelte +30 -0
  379. package/src/registry/blocks/rich-text/RichText02.svelte +72 -0
  380. package/src/registry/blocks/rich-text/RichText03.svelte +52 -0
  381. package/src/registry/blocks/rich-text/RichText04.svelte +44 -0
  382. package/src/registry/blocks/rich-text/RichText05.svelte +56 -0
  383. package/src/registry/blocks/rich-text/index.ts +5 -0
  384. package/src/registry/blocks/section/Section01.svelte +38 -0
  385. package/src/registry/blocks/section/Section02.svelte +90 -0
  386. package/src/registry/blocks/section/Section03.svelte +95 -0
  387. package/src/registry/blocks/section/Section04.svelte +117 -0
  388. package/src/registry/blocks/section/index.ts +4 -0
  389. package/src/registry/blocks/section-footer/SectionFooter01.svelte +39 -0
  390. package/src/registry/blocks/section-footer/SectionFooter02.svelte +33 -0
  391. package/src/registry/blocks/section-footer/SectionFooter03.svelte +33 -0
  392. package/src/registry/blocks/section-footer/SectionFooter04.svelte +34 -0
  393. package/src/registry/blocks/section-footer/SectionFooter05.svelte +69 -0
  394. package/src/registry/blocks/section-footer/index.ts +5 -0
  395. package/src/registry/blocks/section-header/SectionHeader01.svelte +39 -0
  396. package/src/registry/blocks/section-header/SectionHeader02.svelte +58 -0
  397. package/src/registry/blocks/section-header/SectionHeader03.svelte +88 -0
  398. package/src/registry/blocks/section-header/SectionHeader04.svelte +45 -0
  399. package/src/registry/blocks/section-header/SectionHeader05.svelte +64 -0
  400. package/src/registry/blocks/section-header/index.ts +5 -0
  401. package/src/registry/blocks/settings/Settings01.svelte +202 -0
  402. package/src/registry/blocks/settings/Settings02.svelte +201 -0
  403. package/src/registry/blocks/settings/Settings03.svelte +156 -0
  404. package/src/registry/blocks/settings/Settings04.svelte +175 -0
  405. package/src/registry/blocks/settings/Settings05.svelte +248 -0
  406. package/src/registry/blocks/settings/Settings06.svelte +120 -0
  407. package/src/registry/blocks/settings/Settings07.svelte +136 -0
  408. package/src/registry/blocks/settings/index.ts +7 -0
  409. package/src/registry/blocks/sidebar/SidebarLayout01.svelte +108 -0
  410. package/src/registry/blocks/sidebar/SidebarLayout02.svelte +75 -0
  411. package/src/registry/blocks/sidebar/SidebarLayout03.svelte +108 -0
  412. package/src/registry/blocks/sidebar/SidebarLayout04.svelte +111 -0
  413. package/src/registry/blocks/sidebar/SidebarLayout05.svelte +103 -0
  414. package/src/registry/blocks/sidebar/SidebarLayout06.svelte +122 -0
  415. package/src/registry/blocks/sidebar/SidebarLayout07.svelte +183 -0
  416. package/src/registry/blocks/sidebar/SidebarLayout08.svelte +162 -0
  417. package/src/registry/blocks/sidebar/SidebarLayout09.svelte +167 -0
  418. package/src/registry/blocks/sidebar/SidebarLayout10.svelte +159 -0
  419. package/src/registry/blocks/sidebar/SidebarLayout11.svelte +135 -0
  420. package/src/registry/blocks/sidebar/SidebarLayout12.svelte +159 -0
  421. package/src/registry/blocks/sidebar/SidebarLayout13.svelte +103 -0
  422. package/src/registry/blocks/sidebar/SidebarLayout14.svelte +87 -0
  423. package/src/registry/blocks/sidebar/SidebarLayout15.svelte +228 -0
  424. package/src/registry/blocks/sidebar/index.ts +15 -0
  425. package/src/registry/blocks/sign-in/SignIn01.svelte +140 -0
  426. package/src/registry/blocks/sign-in/SignIn02.svelte +155 -0
  427. package/src/registry/blocks/sign-in/SignIn03.svelte +214 -0
  428. package/src/registry/blocks/sign-in/SignIn04.svelte +163 -0
  429. package/src/registry/blocks/sign-in/SignIn05.svelte +209 -0
  430. package/src/registry/blocks/sign-in/SignIn06.svelte +233 -0
  431. package/src/registry/blocks/sign-in/SignIn07.svelte +268 -0
  432. package/src/registry/blocks/sign-in/SignIn08.svelte +125 -0
  433. package/src/registry/blocks/sign-in/SignIn09.svelte +93 -0
  434. package/src/registry/blocks/sign-in/SignIn10.svelte +74 -0
  435. package/src/registry/blocks/sign-in/index.ts +10 -0
  436. package/src/registry/blocks/sign-up/SignUp01.svelte +124 -0
  437. package/src/registry/blocks/sign-up/SignUp02.svelte +110 -0
  438. package/src/registry/blocks/sign-up/SignUp03.svelte +182 -0
  439. package/src/registry/blocks/sign-up/SignUp04.svelte +126 -0
  440. package/src/registry/blocks/sign-up/SignUp05.svelte +182 -0
  441. package/src/registry/blocks/sign-up/SignUp06.svelte +221 -0
  442. package/src/registry/blocks/sign-up/SignUp07.svelte +98 -0
  443. package/src/registry/blocks/sign-up/index.ts +7 -0
  444. package/src/registry/blocks/stats-section/StatsSection01.svelte +66 -0
  445. package/src/registry/blocks/stats-section/StatsSection02.svelte +60 -0
  446. package/src/registry/blocks/stats-section/StatsSection03.svelte +66 -0
  447. package/src/registry/blocks/stats-section/StatsSection04.svelte +66 -0
  448. package/src/registry/blocks/stats-section/StatsSection05.svelte +60 -0
  449. package/src/registry/blocks/stats-section/StatsSection06.svelte +48 -0
  450. package/src/registry/blocks/stats-section/StatsSection07.svelte +66 -0
  451. package/src/registry/blocks/stats-section/index.ts +7 -0
  452. package/src/registry/blocks/store-navbar/StoreNavbar01.svelte +101 -0
  453. package/src/registry/blocks/store-navbar/StoreNavbar02.svelte +65 -0
  454. package/src/registry/blocks/store-navbar/StoreNavbar03.svelte +83 -0
  455. package/src/registry/blocks/store-navbar/StoreNavbar04.svelte +110 -0
  456. package/src/registry/blocks/store-navbar/StoreNavbar05.svelte +80 -0
  457. package/src/registry/blocks/store-navbar/index.ts +5 -0
  458. package/src/registry/blocks/table-header/TableHeader01.svelte +96 -0
  459. package/src/registry/blocks/table-header/TableHeader02.svelte +86 -0
  460. package/src/registry/blocks/table-header/TableHeader03.svelte +99 -0
  461. package/src/registry/blocks/table-header/TableHeader04.svelte +107 -0
  462. package/src/registry/blocks/table-header/index.ts +4 -0
  463. package/src/registry/blocks/tasks/TasksBlock.svelte +286 -0
  464. package/src/registry/blocks/tasks/index.ts +1 -0
  465. package/src/registry/blocks/team-section/TeamSection01.svelte +80 -0
  466. package/src/registry/blocks/team-section/TeamSection02.svelte +102 -0
  467. package/src/registry/blocks/team-section/TeamSection03.svelte +76 -0
  468. package/src/registry/blocks/team-section/TeamSection04.svelte +106 -0
  469. package/src/registry/blocks/team-section/index.ts +13 -0
  470. package/src/registry/blocks/testimonials/Testimonial01.svelte +74 -0
  471. package/src/registry/blocks/testimonials/Testimonial02.svelte +74 -0
  472. package/src/registry/blocks/testimonials/Testimonial03.svelte +79 -0
  473. package/src/registry/blocks/testimonials/Testimonial04.svelte +113 -0
  474. package/src/registry/blocks/testimonials/Testimonial05.svelte +74 -0
  475. package/src/registry/blocks/testimonials/Testimonial06.svelte +114 -0
  476. package/src/registry/blocks/testimonials/Testimonial07.svelte +131 -0
  477. package/src/registry/blocks/testimonials/Testimonials01.svelte +60 -0
  478. package/src/registry/blocks/testimonials/Testimonials02.svelte +61 -0
  479. package/src/registry/blocks/testimonials/Testimonials03.svelte +79 -0
  480. package/src/registry/blocks/testimonials/Testimonials04.svelte +74 -0
  481. package/src/registry/blocks/testimonials/Testimonials05.svelte +68 -0
  482. package/src/registry/blocks/testimonials/Testimonials06.svelte +82 -0
  483. package/src/registry/blocks/testimonials/Testimonials07.svelte +98 -0
  484. package/src/registry/blocks/testimonials/index.ts +16 -0
  485. package/src/registry/templates/cn.ts +42 -0
  486. package/src/index.ts +0 -2
  487. package/tsconfig.json +0 -20
  488. /package/src/{generate-component.cjs → commands/generate-component.cjs} +0 -0
  489. /package/src/{generate-route.cjs → commands/generate-route.cjs} +0 -0
  490. /package/src/{generate-service.cjs → commands/generate-service.cjs} +0 -0
  491. /package/src/{manage-auth-users.cjs → commands/manage-auth-users.cjs} +0 -0
  492. /package/src/{setup.cjs → commands/setup.cjs} +0 -0
  493. /package/src/{validate-setup.cjs → commands/validate.cjs} +0 -0
@@ -0,0 +1,137 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ }
8
+
9
+ let { class: className }: Props = $props();
10
+
11
+ const reviews = [
12
+ {
13
+ id: 1,
14
+ author: 'John Doe',
15
+ date: 'Mar 15, 2024',
16
+ rating: 5,
17
+ title: 'Perfect! Great quality',
18
+ text: 'This product exceeded all my expectations. The build quality is outstanding and it arrived in perfect condition.',
19
+ images: [1, 2, 3],
20
+ },
21
+ {
22
+ id: 2,
23
+ author: 'Sarah Smith',
24
+ date: 'Mar 12, 2024',
25
+ rating: 4,
26
+ title: 'Good value for money',
27
+ text: 'Solid product at a reasonable price. Does exactly what it claims to do.',
28
+ images: [1, 2],
29
+ },
30
+ {
31
+ id: 3,
32
+ author: 'Mike Johnson',
33
+ date: 'Mar 10, 2024',
34
+ rating: 5,
35
+ title: 'Best purchase ever',
36
+ text: 'Absolutely love this! The quality is incredible and customer service was super helpful.',
37
+ images: [1, 2, 3, 4],
38
+ },
39
+ ];
40
+ </script>
41
+
42
+ <section class={cn('w-full bg-background px-4 py-12 sm:px-6 lg:px-8', className)}>
43
+ <div class="mx-auto max-w-4xl">
44
+ <!-- Header -->
45
+ <div class="mb-8">
46
+ <h2 class="text-3xl font-bold">Reviews with Photos</h2>
47
+ <p class="text-muted-foreground">{reviews.length} reviews with images</p>
48
+ </div>
49
+
50
+ <!-- Reviews List -->
51
+ <div class="space-y-8">
52
+ {#each reviews as review (review.id)}
53
+ <div class="pb-8 border-b last:border-b-0">
54
+ <!-- Review Header -->
55
+ <div class="flex items-start gap-3 mb-4">
56
+ <!-- Avatar -->
57
+ <div class="w-12 h-12 rounded-full bg-gray-300 flex items-center justify-center flex-shrink-0">
58
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" class="text-gray-600">
59
+ <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" />
60
+ <circle cx="12" cy="7" r="4" />
61
+ </svg>
62
+ </div>
63
+
64
+ <!-- Review Meta -->
65
+ <div class="flex-1">
66
+ <div class="flex items-center justify-between mb-1">
67
+ <h4 class="font-semibold">{review.author}</h4>
68
+ <span class="text-sm text-muted-foreground">{review.date}</span>
69
+ </div>
70
+
71
+ <!-- Rating -->
72
+ <div class="flex gap-0.5 mb-2">
73
+ {#each { length: 5 } as _, i}
74
+ <svg
75
+ width="16"
76
+ height="16"
77
+ viewBox="0 0 24 24"
78
+ fill={i < review.rating ? 'currentColor' : 'none'}
79
+ stroke="currentColor"
80
+ stroke-width="1"
81
+ class={i < review.rating ? 'text-yellow-400' : 'text-gray-300'}
82
+ >
83
+ <polygon points="12 2 15.09 10.26 24 10.35 17.77 16.88 20.16 25.54 12 20.01 3.84 25.54 6.23 16.88 0 10.35 8.91 10.26" />
84
+ </svg>
85
+ {/each}
86
+ </div>
87
+ </div>
88
+ </div>
89
+
90
+ <!-- Review Content -->
91
+ <h5 class="font-semibold mb-2">{review.title}</h5>
92
+ <p class="text-muted-foreground mb-4">{review.text}</p>
93
+
94
+ <!-- Images -->
95
+ {#if review.images && review.images.length > 0}
96
+ <div class="mb-4">
97
+ <p class="text-sm font-semibold mb-2">Photos</p>
98
+ <div class="grid grid-cols-2 gap-3 sm:grid-cols-4">
99
+ {#each review.images as image}
100
+ <div class="aspect-square bg-gray-100 rounded-lg flex items-center justify-center cursor-pointer hover:bg-gray-200 transition-colors">
101
+ <svg
102
+ width="24"
103
+ height="24"
104
+ viewBox="0 0 24 24"
105
+ fill="none"
106
+ stroke="currentColor"
107
+ stroke-width="1"
108
+ class="text-gray-400"
109
+ >
110
+ <rect x="3" y="3" width="18" height="18" rx="2" />
111
+ <circle cx="8.5" cy="8.5" r="1.5" />
112
+ <polyline points="21 15 16 10 5 21" />
113
+ </svg>
114
+ </div>
115
+ {/each}
116
+ </div>
117
+ </div>
118
+ {/if}
119
+
120
+ <!-- Helpful Button -->
121
+ <button class="text-sm text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1">
122
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
123
+ <polyline points="20 12 20 22 4 22 4 12" />
124
+ <polyline points="2 7 12 2 22 7" />
125
+ </svg>
126
+ Helpful
127
+ </button>
128
+ </div>
129
+ {/each}
130
+ </div>
131
+
132
+ <!-- View All -->
133
+ <div class="mt-8 text-center">
134
+ <Button variant="outline">View All Reviews</Button>
135
+ </div>
136
+ </div>
137
+ </section>
@@ -0,0 +1,129 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ }
8
+
9
+ let { class: className }: Props = $props();
10
+
11
+ const qaItems = [
12
+ {
13
+ id: 1,
14
+ question: 'What is the warranty period for this product?',
15
+ answer: 'This product comes with a 2-year manufacturer warranty covering defects in materials and workmanship.',
16
+ isSellerResponse: true,
17
+ },
18
+ {
19
+ id: 2,
20
+ question: 'Does this product ship internationally?',
21
+ answer: 'Yes, we ship to most countries worldwide. Shipping costs and delivery times vary by location. Please check your cart for specific shipping details.',
22
+ isSellerResponse: true,
23
+ },
24
+ {
25
+ id: 3,
26
+ question: 'Is there a size/color guide available?',
27
+ answer: 'A detailed size and color guide is available in the product specifications tab. You can also contact our customer service team for personalized recommendations.',
28
+ isSellerResponse: true,
29
+ },
30
+ ];
31
+
32
+ let showAskForm = $state(false);
33
+ let questionTitle = $state('');
34
+ let questionText = $state('');
35
+ </script>
36
+
37
+ <section class={cn('w-full bg-background px-4 py-12 sm:px-6 lg:px-8', className)}>
38
+ <div class="mx-auto max-w-4xl">
39
+ <!-- Header -->
40
+ <div class="mb-8 flex items-center justify-between">
41
+ <div>
42
+ <h2 class="text-3xl font-bold">Questions & Answers</h2>
43
+ <p class="text-muted-foreground">{qaItems.length} questions answered</p>
44
+ </div>
45
+ <Button onclick={() => (showAskForm = !showAskForm)}>
46
+ {showAskForm ? 'Cancel' : 'Ask a Question'}
47
+ </Button>
48
+ </div>
49
+
50
+ <!-- Ask Question Form -->
51
+ {#if showAskForm}
52
+ <div class="bg-gray-50 rounded-lg p-6 mb-8">
53
+ <h3 class="font-semibold mb-4">Ask Your Question</h3>
54
+ <div class="space-y-4">
55
+ <div>
56
+ <label for="question-title" class="block text-sm font-semibold mb-2">Question Title</label>
57
+ <input
58
+ id="question-title"
59
+ type="text"
60
+ bind:value={questionTitle}
61
+ placeholder="What would you like to know?"
62
+ class="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary"
63
+ />
64
+ </div>
65
+
66
+ <div>
67
+ <label for="question-text" class="block text-sm font-semibold mb-2">Details</label>
68
+ <textarea
69
+ id="question-text"
70
+ bind:value={questionText}
71
+ placeholder="Provide more context for your question"
72
+ rows="4"
73
+ class="w-full px-4 py-2 border border-gray-300 rounded-lg bg-white text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary"
74
+ />
75
+ </div>
76
+
77
+ <div class="flex gap-3">
78
+ <Button size="sm" disabled={!questionTitle.trim()}>Submit Question</Button>
79
+ <Button
80
+ variant="outline"
81
+ size="sm"
82
+ onclick={() => {
83
+ showAskForm = false;
84
+ questionTitle = '';
85
+ questionText = '';
86
+ }}
87
+ >
88
+ Cancel
89
+ </Button>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ {/if}
94
+
95
+ <!-- Q&A List -->
96
+ <div class="space-y-6">
97
+ {#each qaItems as item (item.id)}
98
+ <div class="border-b pb-6 last:border-b-0">
99
+ <!-- Question -->
100
+ <h4 class="font-semibold text-base mb-3">{item.question}</h4>
101
+
102
+ <!-- Answer -->
103
+ <div class="ml-4 pl-4 border-l-2 border-gray-200">
104
+ {#if item.isSellerResponse}
105
+ <p class="text-xs font-semibold text-green-700 bg-green-50 px-2 py-1 rounded w-fit mb-2">
106
+ Seller response
107
+ </p>
108
+ {/if}
109
+ <p class="text-muted-foreground">{item.answer}</p>
110
+ </div>
111
+
112
+ <!-- Helpful -->
113
+ <button class="text-sm text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1 mt-3">
114
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
115
+ <polyline points="20 12 20 22 4 22 4 12" />
116
+ <polyline points="2 7 12 2 22 7" />
117
+ </svg>
118
+ Was this helpful?
119
+ </button>
120
+ </div>
121
+ {/each}
122
+ </div>
123
+
124
+ <!-- Load More -->
125
+ <div class="mt-8 text-center">
126
+ <Button variant="outline">View More Questions</Button>
127
+ </div>
128
+ </div>
129
+ </section>
@@ -0,0 +1,4 @@
1
+ export { default as ProductReviews01 } from './ProductReviews01.svelte';
2
+ export { default as ProductReviews02 } from './ProductReviews02.svelte';
3
+ export { default as ProductReviews03 } from './ProductReviews03.svelte';
4
+ export { default as ProductReviews04 } from './ProductReviews04.svelte';
@@ -0,0 +1,72 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ heading?: string;
8
+ subtitle?: string;
9
+ }
10
+
11
+ let { class: className, heading = 'Flash Sale', subtitle = 'Limited time offer - Save big today!' }: Props = $props();
12
+
13
+ let timeLeft = $state({
14
+ hours: 2,
15
+ minutes: 34,
16
+ seconds: 56,
17
+ });
18
+ </script>
19
+
20
+ <section
21
+ class={cn(
22
+ 'w-full bg-gradient-to-r from-red-600 to-red-700 px-4 py-20 sm:px-6 lg:px-8 text-white',
23
+ className
24
+ )}
25
+ >
26
+ <div class="mx-auto max-w-6xl">
27
+ <div class="text-center">
28
+ <!-- Badge -->
29
+ <div class="inline-block bg-red-500 text-white text-xs font-bold px-3 py-1 rounded-full mb-4">
30
+ Flash Sale
31
+ </div>
32
+
33
+ <!-- Heading -->
34
+ <h2 class="text-5xl sm:text-6xl font-bold mb-4">Up to 50% Off</h2>
35
+
36
+ <!-- Subtitle -->
37
+ <p class="text-lg sm:text-xl text-red-100 mb-8 max-w-2xl mx-auto">
38
+ {subtitle}
39
+ </p>
40
+
41
+ <!-- Countdown Timer -->
42
+ <div class="mb-8 inline-block">
43
+ <p class="text-sm text-red-100 mb-3">Offer ends in:</p>
44
+ <div class="flex gap-4 justify-center">
45
+ <div class="flex flex-col items-center">
46
+ <span class="text-4xl sm:text-5xl font-bold">{String(timeLeft.hours).padStart(2, '0')}</span>
47
+ <span class="text-xs sm:text-sm text-red-100 mt-1">Hours</span>
48
+ </div>
49
+ <div class="flex flex-col items-center">
50
+ <span class="text-4xl sm:text-5xl font-bold">:</span>
51
+ </div>
52
+ <div class="flex flex-col items-center">
53
+ <span class="text-4xl sm:text-5xl font-bold">{String(timeLeft.minutes).padStart(2, '0')}</span>
54
+ <span class="text-xs sm:text-sm text-red-100 mt-1">Minutes</span>
55
+ </div>
56
+ <div class="flex flex-col items-center">
57
+ <span class="text-4xl sm:text-5xl font-bold">:</span>
58
+ </div>
59
+ <div class="flex flex-col items-center">
60
+ <span class="text-4xl sm:text-5xl font-bold">{String(timeLeft.seconds).padStart(2, '0')}</span>
61
+ <span class="text-xs sm:text-sm text-red-100 mt-1">Seconds</span>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <!-- CTA Button -->
67
+ <Button size="lg" class="bg-white text-red-600 hover:bg-gray-100 font-semibold px-8">
68
+ Shop Now
69
+ </Button>
70
+ </div>
71
+ </div>
72
+ </section>
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ heading?: string;
7
+ }
8
+
9
+ let { class: className, heading = 'Shop by Category' }: Props = $props();
10
+
11
+ const categories = [
12
+ { id: 1, name: 'Electronics' },
13
+ { id: 2, name: 'Fashion' },
14
+ { id: 3, name: 'Home & Garden' },
15
+ ];
16
+ </script>
17
+
18
+ <section class={cn('w-full bg-background px-4 py-16 sm:px-6 lg:px-8', className)}>
19
+ <div class="mx-auto max-w-7xl">
20
+ <!-- Heading -->
21
+ <h2 class="text-3xl sm:text-4xl font-bold mb-12 text-center">{heading}</h2>
22
+
23
+ <!-- Category Cards Grid -->
24
+ <div class="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
25
+ {#each categories as category (category.id)}
26
+ <div class="relative group overflow-hidden rounded-xl aspect-square">
27
+ <!-- Background Image Placeholder -->
28
+ <div class="absolute inset-0 bg-gradient-to-b from-gray-300 via-gray-200 to-gray-300 flex items-center justify-center">
29
+ <svg
30
+ width="80"
31
+ height="80"
32
+ viewBox="0 0 24 24"
33
+ fill="none"
34
+ stroke="currentColor"
35
+ stroke-width="1"
36
+ class="text-gray-400"
37
+ >
38
+ <rect x="3" y="3" width="18" height="18" rx="2" />
39
+ <circle cx="8.5" cy="8.5" r="1.5" />
40
+ <polyline points="21 15 16 10 5 21" />
41
+ </svg>
42
+ </div>
43
+
44
+ <!-- Overlay -->
45
+ <div class="absolute inset-0 bg-black/40 group-hover:bg-black/50 transition-colors flex flex-col items-center justify-center text-white">
46
+ <!-- Category Name -->
47
+ <h3 class="text-3xl sm:text-4xl font-bold mb-4 text-center">{category.name}</h3>
48
+
49
+ <!-- Shop Now Link -->
50
+ <a
51
+ href="#"
52
+ class="inline-block px-6 py-2 bg-white text-black font-semibold rounded-lg hover:bg-gray-100 transition-colors"
53
+ >
54
+ Shop now
55
+ </a>
56
+ </div>
57
+ </div>
58
+ {/each}
59
+ </div>
60
+ </div>
61
+ </section>
@@ -0,0 +1,110 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ heading?: string;
8
+ }
9
+
10
+ let { class: className, heading = 'Join Our Loyalty Program' }: Props = $props();
11
+
12
+ let email = $state('');
13
+ </script>
14
+
15
+ <section class={cn('w-full bg-background px-4 py-16 sm:px-6 lg:px-8', className)}>
16
+ <div class="mx-auto max-w-6xl">
17
+ <div class="grid grid-cols-1 gap-8 lg:grid-cols-2 items-center">
18
+ <!-- Left Section -->
19
+ <div class="bg-gray-950 text-white rounded-xl p-8 sm:p-12">
20
+ <h2 class="text-3xl sm:text-4xl font-bold mb-6">{heading}</h2>
21
+
22
+ <!-- Benefits List -->
23
+ <ul class="space-y-4">
24
+ <li class="flex items-start gap-3">
25
+ <svg
26
+ width="20"
27
+ height="20"
28
+ viewBox="0 0 24 24"
29
+ fill="none"
30
+ stroke="currentColor"
31
+ stroke-width="2"
32
+ class="text-green-400 mt-1 flex-shrink-0"
33
+ >
34
+ <polyline points="20 6 9 17 4 12" />
35
+ </svg>
36
+ <span>Free shipping on all orders</span>
37
+ </li>
38
+ <li class="flex items-start gap-3">
39
+ <svg
40
+ width="20"
41
+ height="20"
42
+ viewBox="0 0 24 24"
43
+ fill="none"
44
+ stroke="currentColor"
45
+ stroke-width="2"
46
+ class="text-green-400 mt-1 flex-shrink-0"
47
+ >
48
+ <polyline points="20 6 9 17 4 12" />
49
+ </svg>
50
+ <span>Exclusive members-only deals</span>
51
+ </li>
52
+ <li class="flex items-start gap-3">
53
+ <svg
54
+ width="20"
55
+ height="20"
56
+ viewBox="0 0 24 24"
57
+ fill="none"
58
+ stroke="currentColor"
59
+ stroke-width="2"
60
+ class="text-green-400 mt-1 flex-shrink-0"
61
+ >
62
+ <polyline points="20 6 9 17 4 12" />
63
+ </svg>
64
+ <span>Earn points on every purchase</span>
65
+ </li>
66
+ <li class="flex items-start gap-3">
67
+ <svg
68
+ width="20"
69
+ height="20"
70
+ viewBox="0 0 24 24"
71
+ fill="none"
72
+ stroke="currentColor"
73
+ stroke-width="2"
74
+ class="text-green-400 mt-1 flex-shrink-0"
75
+ >
76
+ <polyline points="20 6 9 17 4 12" />
77
+ </svg>
78
+ <span>Priority customer support</span>
79
+ </li>
80
+ </ul>
81
+ </div>
82
+
83
+ <!-- Right Section -->
84
+ <div class="flex flex-col">
85
+ <h3 class="text-2xl font-semibold mb-4">Sign Up Today</h3>
86
+ <p class="text-muted-foreground mb-6">Get exclusive offers and discounts delivered to your inbox</p>
87
+
88
+ <!-- Form -->
89
+ <form class="space-y-4">
90
+ <div>
91
+ <label for="email" class="block text-sm font-semibold mb-2">Email Address</label>
92
+ <input
93
+ id="email"
94
+ type="email"
95
+ bind:value={email}
96
+ placeholder="your@email.com"
97
+ class="w-full px-4 py-3 border border-gray-300 rounded-lg bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary"
98
+ />
99
+ </div>
100
+
101
+ <Button class="w-full" disabled={!email}>Sign Up</Button>
102
+
103
+ <p class="text-xs text-muted-foreground">
104
+ We respect your privacy. Unsubscribe at any time.
105
+ </p>
106
+ </form>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ </section>
@@ -0,0 +1,103 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ productName?: string;
8
+ originalPrice?: number;
9
+ salePrice?: number;
10
+ }
11
+
12
+ let {
13
+ class: className,
14
+ productName = 'Premium Wireless Headphones',
15
+ originalPrice = 299.99,
16
+ salePrice = 149.99,
17
+ }: Props = $props();
18
+
19
+ const features = [
20
+ 'Active Noise Cancellation',
21
+ '40-hour battery life',
22
+ 'Premium sound quality',
23
+ 'Comfortable fit for all-day wear',
24
+ ];
25
+ </script>
26
+
27
+ <section class={cn('w-full bg-gray-950 text-white px-4 py-16 sm:px-6 lg:px-8', className)}>
28
+ <div class="mx-auto max-w-7xl">
29
+ <div class="grid grid-cols-1 gap-12 lg:grid-cols-2 items-center">
30
+ <!-- Left Content -->
31
+ <div>
32
+ <!-- Label -->
33
+ <span class="inline-block bg-red-600 text-white text-xs font-bold px-3 py-1 rounded-full mb-4">
34
+ Deal of the Day
35
+ </span>
36
+
37
+ <!-- Product Name -->
38
+ <h2 class="text-4xl sm:text-5xl font-bold mb-4">{productName}</h2>
39
+
40
+ <!-- Pricing -->
41
+ <div class="mb-6 flex items-center gap-4">
42
+ <span class="text-lg line-through text-gray-400">${originalPrice.toFixed(2)}</span>
43
+ <span class="text-4xl font-bold text-red-500">${salePrice.toFixed(2)}</span>
44
+ <span class="text-lg font-semibold text-green-400">
45
+ Save {Math.round(((originalPrice - salePrice) / originalPrice) * 100)}%
46
+ </span>
47
+ </div>
48
+
49
+ <!-- Features List -->
50
+ <ul class="space-y-3 mb-8">
51
+ {#each features as feature}
52
+ <li class="flex items-center gap-3">
53
+ <svg
54
+ width="20"
55
+ height="20"
56
+ viewBox="0 0 24 24"
57
+ fill="none"
58
+ stroke="currentColor"
59
+ stroke-width="2"
60
+ class="text-green-400 flex-shrink-0"
61
+ >
62
+ <polyline points="20 6 9 17 4 12" />
63
+ </svg>
64
+ <span>{feature}</span>
65
+ </li>
66
+ {/each}
67
+ </ul>
68
+
69
+ <!-- CTA -->
70
+ <div class="flex flex-col sm:flex-row gap-3">
71
+ <Button size="lg" class="bg-red-600 hover:bg-red-700">Add to Cart</Button>
72
+ <Button variant="outline" size="lg" class="border-white text-white hover:bg-white/10">
73
+ View Details
74
+ </Button>
75
+ </div>
76
+
77
+ <!-- Limited Time Notice -->
78
+ <p class="text-sm text-gray-400 mt-4">
79
+ Limited stock available. Offer ends in 3 days.
80
+ </p>
81
+ </div>
82
+
83
+ <!-- Right - Product Image Placeholder -->
84
+ <div class="flex items-center justify-center">
85
+ <div class="w-full aspect-square bg-gradient-to-b from-gray-800 to-gray-900 rounded-xl flex items-center justify-center">
86
+ <svg
87
+ width="120"
88
+ height="120"
89
+ viewBox="0 0 24 24"
90
+ fill="none"
91
+ stroke="currentColor"
92
+ stroke-width="1"
93
+ class="text-gray-600"
94
+ >
95
+ <rect x="3" y="3" width="18" height="18" rx="2" />
96
+ <circle cx="8.5" cy="8.5" r="1.5" />
97
+ <polyline points="21 15 16 10 5 21" />
98
+ </svg>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </section>
@@ -0,0 +1,4 @@
1
+ export { default as PromoSection01 } from './PromoSection01.svelte';
2
+ export { default as PromoSection02 } from './PromoSection02.svelte';
3
+ export { default as PromoSection03 } from './PromoSection03.svelte';
4
+ export { default as PromoSection04 } from './PromoSection04.svelte';
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ subtitle?: string;
8
+ paragraph1?: string;
9
+ paragraph2?: string;
10
+ }
11
+
12
+ const {
13
+ class: className,
14
+ title = 'Article Title',
15
+ subtitle = 'A compelling subtitle that draws readers in...',
16
+ paragraph1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
17
+ paragraph2 = 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
18
+ }: Props = $props();
19
+ </script>
20
+
21
+ <section class={cn('w-full bg-background py-16 px-4 sm:px-6', className)}>
22
+ <div class="mx-auto max-w-2xl">
23
+ <h1 class="text-3xl font-bold tracking-tight">{title}</h1>
24
+ <p class="mt-4 text-xl text-muted-foreground">{subtitle}</p>
25
+ <div class="mt-8 space-y-4 text-base leading-7 text-muted-foreground">
26
+ <p>{paragraph1}</p>
27
+ <p>{paragraph2}</p>
28
+ </div>
29
+ </div>
30
+ </section>