@xbg.solutions/create-frontend 1.1.1 → 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,109 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface PricingPlan {
6
+ name: string;
7
+ price: string;
8
+ period?: string;
9
+ description?: string;
10
+ features: string[];
11
+ ctaLabel?: string;
12
+ highlighted?: boolean;
13
+ }
14
+
15
+ interface Props {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ plans?: PricingPlan[];
20
+ }
21
+
22
+ const defaultPlans: PricingPlan[] = [
23
+ {
24
+ name: 'Free',
25
+ price: '$0',
26
+ period: '/month',
27
+ description: 'Perfect for getting started',
28
+ features: ['5 projects', '10GB storage', 'Basic analytics', 'Email support'],
29
+ ctaLabel: 'Get started'
30
+ },
31
+ {
32
+ name: 'Pro',
33
+ price: '$29',
34
+ period: '/month',
35
+ description: 'Everything you need to grow',
36
+ features: ['Unlimited projects', '1TB storage', 'Advanced analytics', 'Priority support'],
37
+ ctaLabel: 'Start free trial',
38
+ highlighted: true
39
+ },
40
+ {
41
+ name: 'Enterprise',
42
+ price: '$99',
43
+ period: '/month',
44
+ description: 'For large-scale operations',
45
+ features: ['Unlimited everything', 'Custom storage', 'Custom integrations', '24/7 support'],
46
+ ctaLabel: 'Contact sales'
47
+ }
48
+ ];
49
+
50
+ let { class: customClass = '', title = 'Simple, transparent pricing', description = '', plans = defaultPlans }: Props = $props();
51
+
52
+ const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
53
+ </script>
54
+
55
+ <section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
56
+ <div class="mx-auto max-w-7xl">
57
+ <div class="text-center mb-12">
58
+ <p class="text-sm font-semibold text-foreground/60 mb-2">Pricing Section</p>
59
+ <h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
60
+ {#if description}
61
+ <p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
62
+ {/if}
63
+ </div>
64
+
65
+ <div class="mt-10 grid grid-cols-1 gap-6 sm:grid-cols-3">
66
+ {#each plans as plan}
67
+ <div class={cn(
68
+ 'rounded-xl border p-6 flex flex-col',
69
+ plan.highlighted
70
+ ? 'border-foreground ring-2 ring-foreground bg-background'
71
+ : 'bg-background'
72
+ )}>
73
+ {#if plan.highlighted}
74
+ <div class="mb-4 inline-flex items-center rounded-full bg-foreground px-3 py-1 text-xs font-semibold text-background w-fit">
75
+ Most popular
76
+ </div>
77
+ {/if}
78
+
79
+ <h3 class="text-lg font-semibold mb-2">{plan.name}</h3>
80
+ {#if plan.description}
81
+ <p class="text-sm text-muted-foreground mb-4">{plan.description}</p>
82
+ {/if}
83
+
84
+ <div class="mb-6">
85
+ <span class="text-4xl font-bold">{plan.price}</span>
86
+ {#if plan.period}
87
+ <span class="text-muted-foreground ml-1">{plan.period}</span>
88
+ {/if}
89
+ </div>
90
+
91
+ <ul class="space-y-3 mb-6 flex-grow">
92
+ {#each plan.features as feature}
93
+ <li class="flex items-start gap-3">
94
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
95
+ {checkIcon}
96
+ </svg>
97
+ <span class="text-sm">{feature}</span>
98
+ </li>
99
+ {/each}
100
+ </ul>
101
+
102
+ <Button class="w-full" variant={plan.highlighted ? 'default' : 'outline'}>
103
+ {plan.ctaLabel || 'Get started'}
104
+ </Button>
105
+ </div>
106
+ {/each}
107
+ </div>
108
+ </div>
109
+ </section>
@@ -0,0 +1,145 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface PricingPlan {
6
+ name: string;
7
+ price: string;
8
+ period?: string;
9
+ description?: string;
10
+ features: string[];
11
+ ctaLabel?: string;
12
+ highlighted?: boolean;
13
+ }
14
+
15
+ interface Props {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ plans?: PricingPlan[];
20
+ }
21
+
22
+ const defaultPlans: PricingPlan[] = [
23
+ {
24
+ name: 'Free',
25
+ price: '$0',
26
+ period: '/month',
27
+ features: ['5 projects', '10GB storage', 'Basic analytics', 'Email support'],
28
+ ctaLabel: 'Get started'
29
+ },
30
+ {
31
+ name: 'Pro',
32
+ price: '$29',
33
+ period: '/month',
34
+ features: ['Unlimited projects', '1TB storage', 'Advanced analytics', 'Priority support'],
35
+ ctaLabel: 'Start free trial',
36
+ highlighted: true
37
+ },
38
+ {
39
+ name: 'Enterprise',
40
+ price: '$99',
41
+ period: '/month',
42
+ features: ['Everything unlimited', 'Custom integrations', '24/7 support'],
43
+ ctaLabel: 'Contact sales'
44
+ }
45
+ ];
46
+
47
+ let { class: customClass = '', title = 'Simple, transparent pricing', description = '', plans = defaultPlans }: Props = $props();
48
+
49
+ let billing: 'monthly' | 'annual' = $state('monthly');
50
+
51
+ const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
52
+
53
+ function getPrice(plan: PricingPlan): string {
54
+ if (billing === 'annual') {
55
+ const monthlyPrice = parseFloat(plan.price.replace('$', ''));
56
+ const annualMonthly = Math.round(monthlyPrice * 12 * 0.8);
57
+ return '$' + annualMonthly;
58
+ }
59
+ return plan.price;
60
+ }
61
+ </script>
62
+
63
+ <section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
64
+ <div class="mx-auto max-w-7xl">
65
+ <div class="text-center mb-12">
66
+ <p class="text-sm font-semibold text-foreground/60 mb-2">Pricing Section</p>
67
+ <h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
68
+ {#if description}
69
+ <p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
70
+ {/if}
71
+ </div>
72
+
73
+ <!-- Billing Toggle -->
74
+ <div class="flex items-center justify-center gap-4 mb-12">
75
+ <button
76
+ onclick={() => { billing = 'monthly'; }}
77
+ class={cn(
78
+ 'px-4 py-2 rounded-lg font-medium transition-colors',
79
+ billing === 'monthly'
80
+ ? 'bg-foreground text-background'
81
+ : 'text-foreground/60'
82
+ )}
83
+ >
84
+ Monthly
85
+ </button>
86
+ <button
87
+ onclick={() => { billing = 'annual'; }}
88
+ class={cn(
89
+ 'px-4 py-2 rounded-lg font-medium transition-colors relative',
90
+ billing === 'annual'
91
+ ? 'bg-foreground text-background'
92
+ : 'text-foreground/60'
93
+ )}
94
+ >
95
+ Annual
96
+ {#if billing === 'annual'}
97
+ <span class="absolute -top-2 -right-8 inline-flex items-center rounded-full bg-green-500 px-2 py-1 text-xs font-semibold text-white">
98
+ Save 20%
99
+ </span>
100
+ {/if}
101
+ </button>
102
+ </div>
103
+
104
+ <div class="mt-10 grid grid-cols-1 gap-6 sm:grid-cols-3">
105
+ {#each plans as plan}
106
+ <div class={cn(
107
+ 'rounded-xl border p-6 flex flex-col',
108
+ plan.highlighted
109
+ ? 'border-foreground ring-2 ring-foreground bg-background'
110
+ : 'bg-background'
111
+ )}>
112
+ {#if plan.highlighted}
113
+ <div class="mb-4 inline-flex items-center rounded-full bg-foreground px-3 py-1 text-xs font-semibold text-background w-fit">
114
+ Most popular
115
+ </div>
116
+ {/if}
117
+
118
+ <h3 class="text-lg font-semibold mb-2">{plan.name}</h3>
119
+
120
+ <div class="mb-6">
121
+ <span class="text-4xl font-bold">{getPrice(plan)}</span>
122
+ {#if plan.period}
123
+ <span class="text-muted-foreground ml-1">{plan.period}</span>
124
+ {/if}
125
+ </div>
126
+
127
+ <ul class="space-y-3 mb-6 flex-grow">
128
+ {#each plan.features as feature}
129
+ <li class="flex items-start gap-3">
130
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
131
+ {checkIcon}
132
+ </svg>
133
+ <span class="text-sm">{feature}</span>
134
+ </li>
135
+ {/each}
136
+ </ul>
137
+
138
+ <Button class="w-full" variant={plan.highlighted ? 'default' : 'outline'}>
139
+ {plan.ctaLabel || 'Get started'}
140
+ </Button>
141
+ </div>
142
+ {/each}
143
+ </div>
144
+ </div>
145
+ </section>
@@ -0,0 +1,94 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface PricingPlan {
6
+ name: string;
7
+ price: string;
8
+ period?: string;
9
+ description?: string;
10
+ features: string[];
11
+ ctaLabel?: string;
12
+ highlighted?: boolean;
13
+ }
14
+
15
+ interface Props {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ plans?: PricingPlan[];
20
+ }
21
+
22
+ const defaultPlans: PricingPlan[] = [
23
+ {
24
+ name: 'Pro',
25
+ price: '$29',
26
+ period: '/month',
27
+ description: 'Everything you need to grow',
28
+ features: ['Unlimited projects', '1TB storage', 'Advanced analytics', 'Priority support', 'Custom integrations'],
29
+ ctaLabel: 'Start free trial',
30
+ highlighted: true
31
+ }
32
+ ];
33
+
34
+ let { class: customClass = '', title = 'Simple, transparent pricing', description = '', plans = defaultPlans }: Props = $props();
35
+
36
+ const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
37
+ const proPlan = plans[0];
38
+ </script>
39
+
40
+ <section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
41
+ <div class="mx-auto max-w-7xl">
42
+ <div class="text-center mb-12">
43
+ <p class="text-sm font-semibold text-foreground/60 mb-2">Pricing Section</p>
44
+ <h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
45
+ {#if description}
46
+ <p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
47
+ {/if}
48
+ </div>
49
+
50
+ <!-- Featured Plan Card -->
51
+ {#if proPlan}
52
+ <div class="mt-10 mx-auto max-w-lg">
53
+ <div class="rounded-xl border-2 border-foreground ring-2 ring-foreground bg-background p-8">
54
+ <div class="inline-flex items-center rounded-full bg-foreground px-3 py-1 text-xs font-semibold text-background mb-4">
55
+ Most popular
56
+ </div>
57
+
58
+ <h3 class="text-2xl font-semibold mb-2">{proPlan.name}</h3>
59
+
60
+ <div class="mb-6">
61
+ <span class="text-5xl font-bold">{proPlan.price}</span>
62
+ {#if proPlan.period}
63
+ <span class="text-muted-foreground ml-2">{proPlan.period}</span>
64
+ {/if}
65
+ </div>
66
+
67
+ <ul class="space-y-3 mb-8">
68
+ {#each proPlan.features as feature}
69
+ <li class="flex items-start gap-3">
70
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
71
+ {checkIcon}
72
+ </svg>
73
+ <span class="text-sm">{feature}</span>
74
+ </li>
75
+ {/each}
76
+ </ul>
77
+
78
+ <Button class="w-full mb-6">
79
+ {proPlan.ctaLabel || 'Get started'}
80
+ </Button>
81
+
82
+ <p class="text-center text-sm text-muted-foreground">30-day free trial, no credit card required.</p>
83
+ </div>
84
+ </div>
85
+
86
+ <!-- Compare link -->
87
+ <div class="mt-8 text-center">
88
+ <a href="#" class="text-sm font-semibold text-foreground hover:underline">
89
+ Compare all plans →
90
+ </a>
91
+ </div>
92
+ {/if}
93
+ </div>
94
+ </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 PricingPlan {
6
+ name: string;
7
+ price: string;
8
+ period?: string;
9
+ description?: string;
10
+ features: string[];
11
+ ctaLabel?: string;
12
+ highlighted?: boolean;
13
+ }
14
+
15
+ interface Props {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ plans?: PricingPlan[];
20
+ }
21
+
22
+ const defaultPlans: PricingPlan[] = [
23
+ {
24
+ name: 'Free',
25
+ price: '$0',
26
+ period: '/month',
27
+ features: ['5 projects', '10GB storage', 'Basic analytics'],
28
+ ctaLabel: 'Get started'
29
+ },
30
+ {
31
+ name: 'Pro',
32
+ price: '$29',
33
+ period: '/month',
34
+ features: ['Unlimited projects', '1TB storage', 'Advanced analytics'],
35
+ ctaLabel: 'Start free trial',
36
+ highlighted: true
37
+ },
38
+ {
39
+ name: 'Enterprise',
40
+ price: '$99',
41
+ period: '/month',
42
+ features: ['Everything unlimited', 'Custom integrations', '24/7 support'],
43
+ ctaLabel: 'Contact sales'
44
+ }
45
+ ];
46
+
47
+ let { class: customClass = '', title = 'Simple, transparent pricing', description = '', plans = defaultPlans }: Props = $props();
48
+
49
+ const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
50
+ </script>
51
+
52
+ <section class={cn('w-full bg-foreground text-background py-16 px-4 sm:px-6', customClass)}>
53
+ <div class="mx-auto max-w-7xl">
54
+ <div class="text-center mb-12">
55
+ <p class="text-sm font-semibold text-background/60 mb-2">Pricing Section</p>
56
+ <h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
57
+ {#if description}
58
+ <p class="text-lg text-background/80 max-w-2xl mx-auto">{description}</p>
59
+ {/if}
60
+ </div>
61
+
62
+ <div class="mt-10 grid grid-cols-1 gap-6 sm:grid-cols-3">
63
+ {#each plans as plan}
64
+ <div class={cn(
65
+ 'rounded-xl border p-6 flex flex-col',
66
+ plan.highlighted
67
+ ? 'border-background ring-2 ring-background bg-background/5'
68
+ : 'bg-background/10 border-background/20'
69
+ )}>
70
+ {#if plan.highlighted}
71
+ <div class="mb-4 inline-flex items-center rounded-full bg-background px-3 py-1 text-xs font-semibold text-foreground w-fit">
72
+ Most popular
73
+ </div>
74
+ {/if}
75
+
76
+ <h3 class="text-lg font-semibold mb-2">{plan.name}</h3>
77
+
78
+ <div class="mb-6">
79
+ <span class="text-4xl font-bold">{plan.price}</span>
80
+ {#if plan.period}
81
+ <span class="text-background/60 ml-1">{plan.period}</span>
82
+ {/if}
83
+ </div>
84
+
85
+ <ul class="space-y-3 mb-6 flex-grow">
86
+ {#each plan.features as feature}
87
+ <li class="flex items-start gap-3">
88
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-background flex-shrink-0 mt-0.5">
89
+ {checkIcon}
90
+ </svg>
91
+ <span class="text-sm">{feature}</span>
92
+ </li>
93
+ {/each}
94
+ </ul>
95
+
96
+ <Button class="w-full" variant={plan.highlighted ? 'default' : 'outline'}>
97
+ {plan.ctaLabel || 'Get started'}
98
+ </Button>
99
+ </div>
100
+ {/each}
101
+ </div>
102
+ </div>
103
+ </section>
@@ -0,0 +1,128 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface PricingPlan {
6
+ name: string;
7
+ price: string;
8
+ period?: string;
9
+ description?: string;
10
+ features: string[];
11
+ ctaLabel?: string;
12
+ highlighted?: boolean;
13
+ }
14
+
15
+ interface Props {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ plans?: PricingPlan[];
20
+ }
21
+
22
+ const defaultPlans: PricingPlan[] = [
23
+ {
24
+ name: 'Free',
25
+ price: '$0',
26
+ features: ['5 projects', '10GB storage', 'Basic analytics', 'Email support'],
27
+ ctaLabel: 'Get started'
28
+ },
29
+ {
30
+ name: 'Pro',
31
+ price: '$29',
32
+ period: '/month',
33
+ features: ['Unlimited projects', '1TB storage', 'Advanced analytics', 'Priority support'],
34
+ ctaLabel: 'Start free trial',
35
+ highlighted: true
36
+ }
37
+ ];
38
+
39
+ let { class: customClass = '', title = 'Plans & Comparison', description = '', plans = defaultPlans }: Props = $props();
40
+
41
+ const checkIcon = `<polyline points="20 6 9 17 4 12"/>`;
42
+ const allFeatures = ['Projects', 'Storage', 'Analytics', 'Support', 'API Access', 'Integrations'];
43
+ </script>
44
+
45
+ <section class={cn('w-full py-16 px-4 sm:px-6', customClass)}>
46
+ <div class="mx-auto max-w-7xl">
47
+ <div class="text-center mb-12">
48
+ <p class="text-sm font-semibold text-foreground/60 mb-2">Pricing Section</p>
49
+ <h2 class="text-3xl sm:text-4xl font-bold mb-4">{title}</h2>
50
+ {#if description}
51
+ <p class="text-lg text-muted-foreground max-w-2xl mx-auto">{description}</p>
52
+ {/if}
53
+ </div>
54
+
55
+ <!-- Cards -->
56
+ <div class="mt-10 grid grid-cols-1 gap-6 sm:grid-cols-2 mb-12">
57
+ {#each plans as plan}
58
+ <div class={cn(
59
+ 'rounded-xl border p-6 flex flex-col',
60
+ plan.highlighted
61
+ ? 'border-foreground ring-2 ring-foreground bg-background'
62
+ : 'bg-background'
63
+ )}>
64
+ {#if plan.highlighted}
65
+ <div class="mb-4 inline-flex items-center rounded-full bg-foreground px-3 py-1 text-xs font-semibold text-background w-fit">
66
+ Most popular
67
+ </div>
68
+ {/if}
69
+
70
+ <h3 class="text-lg font-semibold mb-2">{plan.name}</h3>
71
+
72
+ <div class="mb-6">
73
+ <span class="text-4xl font-bold">{plan.price}</span>
74
+ {#if plan.period}
75
+ <span class="text-muted-foreground ml-1">{plan.period}</span>
76
+ {/if}
77
+ </div>
78
+
79
+ <ul class="space-y-3 mb-6 flex-grow">
80
+ {#each plan.features as feature}
81
+ <li class="flex items-start gap-3">
82
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-foreground flex-shrink-0 mt-0.5">
83
+ {checkIcon}
84
+ </svg>
85
+ <span class="text-sm">{feature}</span>
86
+ </li>
87
+ {/each}
88
+ </ul>
89
+
90
+ <Button class="w-full" variant={plan.highlighted ? 'default' : 'outline'}>
91
+ {plan.ctaLabel || 'Get started'}
92
+ </Button>
93
+ </div>
94
+ {/each}
95
+ </div>
96
+
97
+ <!-- Feature Comparison Table -->
98
+ <div class="border-t pt-12">
99
+ <h3 class="text-xl font-semibold mb-6 text-center">Detailed Comparison</h3>
100
+ <div class="overflow-x-auto">
101
+ <table class="w-full text-sm">
102
+ <thead>
103
+ <tr class="border-b">
104
+ <th class="text-left py-3 px-4 font-semibold">Feature</th>
105
+ {#each plans.slice(0, 2) as plan}
106
+ <th class="text-center py-3 px-4 font-semibold">{plan.name}</th>
107
+ {/each}
108
+ </tr>
109
+ </thead>
110
+ <tbody>
111
+ {#each allFeatures as feature}
112
+ <tr class="border-b hover:bg-muted/30">
113
+ <td class="text-left py-3 px-4">{feature}</td>
114
+ {#each plans.slice(0, 2) as plan}
115
+ <td class="text-center py-3 px-4">
116
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="mx-auto text-foreground">
117
+ {checkIcon}
118
+ </svg>
119
+ </td>
120
+ {/each}
121
+ </tr>
122
+ {/each}
123
+ </tbody>
124
+ </table>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </section>
@@ -0,0 +1,20 @@
1
+ export { default as PricingSection01 } from './PricingSection01.svelte';
2
+ export { default as PricingSection02 } from './PricingSection02.svelte';
3
+ export { default as PricingSection03 } from './PricingSection03.svelte';
4
+ export { default as PricingSection04 } from './PricingSection04.svelte';
5
+ export { default as PricingSection05 } from './PricingSection05.svelte';
6
+
7
+ export interface PricingPlan {
8
+ name: string;
9
+ price: string;
10
+ period?: string;
11
+ description?: string;
12
+ features: string[];
13
+ ctaLabel?: string;
14
+ highlighted?: boolean;
15
+ }
16
+
17
+ export interface FAQ {
18
+ q: string;
19
+ a: string;
20
+ }
@@ -0,0 +1,74 @@
1
+ <!--
2
+ ProductCard01.svelte
3
+ Standard e-commerce product card with image, category, name, rating, and price.
4
+ -->
5
+ <script lang="ts">
6
+ import { cn } from '$lib/utils/cn';
7
+ import { Button } from '$lib/components/ui';
8
+
9
+ let {
10
+ class: className = '',
11
+ category = 'Electronics',
12
+ name = 'Premium Leather Wallet',
13
+ rating = 4.5,
14
+ reviewCount = 128,
15
+ price = '$49.99',
16
+ onAddToCart = () => {}
17
+ }: {
18
+ class?: string;
19
+ category?: string;
20
+ name?: string;
21
+ rating?: number;
22
+ reviewCount?: number;
23
+ price?: string;
24
+ onAddToCart?: () => void;
25
+ } = $props();
26
+
27
+ function renderStars(rate: number) {
28
+ const stars = [];
29
+ for (let i = 1; i <= 5; i++) {
30
+ const isFilled = i <= Math.floor(rate);
31
+ const isHalf = i === Math.ceil(rate) && rate % 1 !== 0;
32
+ stars.push({ isFilled, isHalf });
33
+ }
34
+ return stars;
35
+ }
36
+ </script>
37
+
38
+ <div class={cn('rounded-lg border bg-background overflow-hidden', className)}>
39
+ <!-- Image placeholder -->
40
+ <div class="aspect-square bg-gray-100 rounded-lg flex items-center justify-center">
41
+ <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="text-gray-400">
42
+ <rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
43
+ <circle cx="8.5" cy="8.5" r="1.5"/>
44
+ <polyline points="21 15 16 10 5 21"/>
45
+ </svg>
46
+ </div>
47
+
48
+ <!-- Content -->
49
+ <div class="p-4">
50
+ <!-- Category -->
51
+ <p class="text-xs font-medium text-muted-foreground uppercase tracking-wider">{category}</p>
52
+
53
+ <!-- Name -->
54
+ <h3 class="mt-2 font-semibold text-sm line-clamp-2">{name}</h3>
55
+
56
+ <!-- Rating -->
57
+ <div class="mt-2 flex items-center gap-1">
58
+ <div class="flex gap-0.5">
59
+ {#each renderStars(rating) as star}
60
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill={star.isFilled ? 'currentColor' : 'none'} stroke="currentColor" stroke-width="2" class={star.isFilled ? 'text-yellow-400 fill-yellow-400' : 'text-gray-300'}>
61
+ <polygon points="12 2 15.09 10.26 24 10.35 17.77 16.01 19.85 24.29 12 18.77 4.15 24.29 6.23 16.01 0 10.35 8.91 10.26"/>
62
+ </svg>
63
+ {/each}
64
+ </div>
65
+ <span class="text-xs text-muted-foreground">{rating} ({reviewCount})</span>
66
+ </div>
67
+
68
+ <!-- Price -->
69
+ <p class="mt-3 text-lg font-bold">{price}</p>
70
+
71
+ <!-- Button -->
72
+ <Button onclick={onAddToCart} class="mt-4 w-full">Add to cart</Button>
73
+ </div>
74
+ </div>