@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,33 @@
1
+ <!--
2
+ SectionFooter03.svelte
3
+ Save/Edit/View action buttons left. Description text center-right.
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
+ description = 'This feature is available in the Pro Plan for additional $10 per month.',
12
+ onview = () => {},
13
+ onedit = () => {},
14
+ onsave = () => {}
15
+ }: {
16
+ class?: string;
17
+ description?: string;
18
+ onview?: () => void;
19
+ onedit?: () => void;
20
+ onsave?: () => void;
21
+ } = $props();
22
+ </script>
23
+
24
+ <div class={cn('flex flex-col gap-3 py-4 sm:flex-row sm:items-center sm:justify-between', className)}>
25
+ <div class="flex shrink-0 items-center gap-2">
26
+ <Button size="sm" onclick={onsave}>Save</Button>
27
+ <Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
28
+ <Button variant="outline" size="sm" onclick={onview}>View</Button>
29
+ </div>
30
+ {#if description}
31
+ <p class="text-sm text-muted-foreground sm:text-right">{description}</p>
32
+ {/if}
33
+ </div>
@@ -0,0 +1,34 @@
1
+ <!--
2
+ SectionFooter04.svelte
3
+ Primary CTA button left. "Need more?" text + secondary link/button right.
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
+ ctaLabel = 'Purchase credits',
12
+ needMoreText = 'Need more?',
13
+ contactLabel = 'Contact sales',
14
+ oncta = () => {},
15
+ oncontact = () => {}
16
+ }: {
17
+ class?: string;
18
+ ctaLabel?: string;
19
+ needMoreText?: string;
20
+ contactLabel?: string;
21
+ oncta?: () => void;
22
+ oncontact?: () => void;
23
+ } = $props();
24
+ </script>
25
+
26
+ <div class={cn('flex flex-col gap-3 py-4 sm:flex-row sm:items-center sm:justify-between', className)}>
27
+ <Button size="sm" onclick={oncta}>{ctaLabel}</Button>
28
+ <div class="flex items-center gap-2 text-sm">
29
+ {#if needMoreText}
30
+ <span class="text-muted-foreground">{needMoreText}</span>
31
+ {/if}
32
+ <Button variant="outline" size="sm" onclick={oncontact}>{contactLabel}</Button>
33
+ </div>
34
+ </div>
@@ -0,0 +1,69 @@
1
+ <!--
2
+ SectionFooter05.svelte
3
+ Pagination row: ← Previous | 1–7 of 120 | Next →
4
+ Mobile: icon-only prev/next buttons flanking the count.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Button } from '$lib/components/ui';
9
+
10
+ let {
11
+ class: className = '',
12
+ page = 1,
13
+ pageSize = 7,
14
+ total = 120,
15
+ onprev = () => {},
16
+ onnext = () => {}
17
+ }: {
18
+ class?: string;
19
+ page?: number;
20
+ pageSize?: number;
21
+ total?: number;
22
+ onprev?: () => void;
23
+ onnext?: () => void;
24
+ } = $props();
25
+
26
+ const start = $derived((page - 1) * pageSize + 1);
27
+ const end = $derived(Math.min(page * pageSize, total));
28
+ const hasPrev = $derived(page > 1);
29
+ const hasNext = $derived(end < total);
30
+ </script>
31
+
32
+ <div class={cn('flex items-center justify-between gap-4 py-4', className)}>
33
+ <!-- Desktop Previous -->
34
+ <Button
35
+ variant="outline"
36
+ size="sm"
37
+ onclick={onprev}
38
+ disabled={!hasPrev}
39
+ class="hidden gap-1 sm:inline-flex"
40
+ >
41
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
42
+ Previous
43
+ </Button>
44
+
45
+ <!-- Mobile Previous (icon only) -->
46
+ <Button variant="outline" size="icon" class="h-8 w-8 sm:hidden" onclick={onprev} disabled={!hasPrev}>
47
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
48
+ </Button>
49
+
50
+ <!-- Count -->
51
+ <span class="text-sm text-muted-foreground">{start}–{end} of {total}</span>
52
+
53
+ <!-- Desktop Next -->
54
+ <Button
55
+ variant="outline"
56
+ size="sm"
57
+ onclick={onnext}
58
+ disabled={!hasNext}
59
+ class="hidden gap-1 sm:inline-flex"
60
+ >
61
+ Next
62
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
63
+ </Button>
64
+
65
+ <!-- Mobile Next (icon only) -->
66
+ <Button variant="outline" size="icon" class="h-8 w-8 sm:hidden" onclick={onnext} disabled={!hasNext}>
67
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
68
+ </Button>
69
+ </div>
@@ -0,0 +1,5 @@
1
+ export { default as SectionFooter01 } from './SectionFooter01.svelte';
2
+ export { default as SectionFooter02 } from './SectionFooter02.svelte';
3
+ export { default as SectionFooter03 } from './SectionFooter03.svelte';
4
+ export { default as SectionFooter04 } from './SectionFooter04.svelte';
5
+ export { default as SectionFooter05 } from './SectionFooter05.svelte';
@@ -0,0 +1,39 @@
1
+ <!--
2
+ SectionHeader01.svelte
3
+ Minimal two-slot horizontal layout: wide left slot + narrow right slot.
4
+ -->
5
+ <script lang="ts">
6
+ import { cn } from '$lib/utils/cn';
7
+ import type { Snippet } from 'svelte';
8
+
9
+ let {
10
+ class: className = '',
11
+ left,
12
+ right
13
+ }: {
14
+ class?: string;
15
+ left?: Snippet;
16
+ right?: Snippet;
17
+ } = $props();
18
+ </script>
19
+
20
+ <div class={cn('flex items-center gap-4 py-4', className)}>
21
+ <div class="flex-1">
22
+ {#if left}
23
+ {@render left()}
24
+ {:else}
25
+ <div class="flex min-h-10 items-center justify-center rounded-lg border border-dashed bg-background text-sm text-muted-foreground">
26
+ Slot (swap it with your content)
27
+ </div>
28
+ {/if}
29
+ </div>
30
+ <div class="w-44 shrink-0">
31
+ {#if right}
32
+ {@render right()}
33
+ {:else}
34
+ <div class="flex min-h-10 items-center justify-center rounded-lg border border-dashed bg-background text-sm text-muted-foreground">
35
+ Slot (swap it with your content)
36
+ </div>
37
+ {/if}
38
+ </div>
39
+ </div>
@@ -0,0 +1,58 @@
1
+ <!--
2
+ SectionHeader02.svelte
3
+ Title + Status badge + description left. Search + View/Edit/Create New right.
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
+ title = 'Storage',
12
+ badge = 'Status',
13
+ description = 'Read and write directly to databases and stores from your projects.',
14
+ searchPlaceholder = 'Search',
15
+ onview = () => {},
16
+ onedit = () => {},
17
+ oncreate = () => {}
18
+ }: {
19
+ class?: string;
20
+ title?: string;
21
+ badge?: string;
22
+ description?: string;
23
+ searchPlaceholder?: string;
24
+ onview?: () => void;
25
+ onedit?: () => void;
26
+ oncreate?: () => void;
27
+ } = $props();
28
+ </script>
29
+
30
+ <div class={cn('py-4', className)}>
31
+ <div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
32
+ <!-- Left: title + badge + description -->
33
+ <div>
34
+ <div class="flex items-center gap-2">
35
+ <h2 class="text-lg font-semibold">{title}</h2>
36
+ {#if badge}
37
+ <span class="inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium">{badge}</span>
38
+ {/if}
39
+ </div>
40
+ {#if description}
41
+ <p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
42
+ {/if}
43
+ </div>
44
+
45
+ <!-- Right: search + actions -->
46
+ <div class="flex shrink-0 flex-col items-end gap-2 sm:flex-row sm:items-center">
47
+ <div class="flex items-center gap-2 rounded-md border bg-background px-3 py-1.5">
48
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
49
+ <input type="text" placeholder={searchPlaceholder} class="w-36 bg-transparent text-sm outline-none placeholder:text-muted-foreground" />
50
+ </div>
51
+ <div class="flex items-center gap-2">
52
+ <Button variant="outline" size="sm" onclick={onview}>View</Button>
53
+ <Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
54
+ <Button size="sm" onclick={oncreate}>Create new</Button>
55
+ </div>
56
+ </div>
57
+ </div>
58
+ </div>
@@ -0,0 +1,88 @@
1
+ <!--
2
+ SectionHeader03.svelte
3
+ Title + Status badge + description left. View/Edit/Create New right. Segmented tabs below.
4
+ Mobile: dropdown select for tabs.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Button } from '$lib/components/ui';
9
+
10
+ let {
11
+ class: className = '',
12
+ title = 'Storage',
13
+ badge = 'Status',
14
+ description = 'Read and write directly to databases and stores from your projects.',
15
+ tabs = ['Tab 1', 'Tab 2', 'Tab 3', 'Tab 4'],
16
+ activeTab = 'Tab 1',
17
+ onview = () => {},
18
+ onedit = () => {},
19
+ oncreate = () => {}
20
+ }: {
21
+ class?: string;
22
+ title?: string;
23
+ badge?: string;
24
+ description?: string;
25
+ tabs?: string[];
26
+ activeTab?: string;
27
+ onview?: () => void;
28
+ onedit?: () => void;
29
+ oncreate?: () => void;
30
+ } = $props();
31
+
32
+ let currentTab = $state(activeTab);
33
+ </script>
34
+
35
+ <div class={cn('py-4', className)}>
36
+ <!-- Top row: title/desc left, actions right -->
37
+ <div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
38
+ <div>
39
+ <div class="flex items-center gap-2">
40
+ <h2 class="text-lg font-semibold">{title}</h2>
41
+ {#if badge}
42
+ <span class="inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium">{badge}</span>
43
+ {/if}
44
+ </div>
45
+ {#if description}
46
+ <p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
47
+ {/if}
48
+ </div>
49
+ <div class="flex shrink-0 items-center gap-2">
50
+ <Button variant="outline" size="sm" onclick={onview}>View</Button>
51
+ <Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
52
+ <Button size="sm" onclick={oncreate}>Create new</Button>
53
+ <Button variant="ghost" size="icon" class="h-8 w-8">
54
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>
55
+ </Button>
56
+ </div>
57
+ </div>
58
+
59
+ <!-- Tabs: pill/segmented on desktop, select on mobile -->
60
+ <div class="mt-4">
61
+ <!-- Desktop segmented tabs -->
62
+ <div class="hidden grid-flow-col grid-cols-[repeat(auto-fit,minmax(0,1fr))] overflow-hidden rounded-md border bg-muted p-1 sm:grid">
63
+ {#each tabs as tab}
64
+ <button
65
+ type="button"
66
+ onclick={() => (currentTab = tab)}
67
+ class={cn(
68
+ 'rounded-sm px-4 py-1.5 text-sm font-medium transition-colors',
69
+ currentTab === tab
70
+ ? 'bg-background text-foreground shadow-sm'
71
+ : 'text-muted-foreground hover:text-foreground'
72
+ )}
73
+ >{tab}</button>
74
+ {/each}
75
+ </div>
76
+
77
+ <!-- Mobile select -->
78
+ <select
79
+ class="sm:hidden w-full rounded-md border bg-background px-3 py-1.5 text-sm"
80
+ value={currentTab}
81
+ onchange={(e) => (currentTab = (e.target as HTMLSelectElement).value)}
82
+ >
83
+ {#each tabs as tab}
84
+ <option value={tab}>{tab}</option>
85
+ {/each}
86
+ </select>
87
+ </div>
88
+ </div>
@@ -0,0 +1,45 @@
1
+ <!--
2
+ SectionHeader04.svelte
3
+ Title + description left. Search + more (…) button right.
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
+ title = 'Storage',
12
+ description = 'Read and write directly to databases and stores from your projects.',
13
+ searchPlaceholder = 'Search',
14
+ onmore = () => {}
15
+ }: {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ searchPlaceholder?: string;
20
+ onmore?: () => void;
21
+ } = $props();
22
+ </script>
23
+
24
+ <div class={cn('py-4', className)}>
25
+ <div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
26
+ <!-- Left -->
27
+ <div>
28
+ <h2 class="text-lg font-semibold">{title}</h2>
29
+ {#if description}
30
+ <p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+
34
+ <!-- Right: search + more -->
35
+ <div class="flex shrink-0 items-center gap-2">
36
+ <div class="flex items-center gap-2 rounded-md border bg-background px-3 py-1.5">
37
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
38
+ <input type="text" placeholder={searchPlaceholder} class="w-36 bg-transparent text-sm outline-none placeholder:text-muted-foreground" />
39
+ </div>
40
+ <Button variant="ghost" size="icon" class="h-8 w-8" onclick={onmore}>
41
+ <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/></svg>
42
+ </Button>
43
+ </div>
44
+ </div>
45
+ </div>
@@ -0,0 +1,64 @@
1
+ <!--
2
+ SectionHeader05.svelte
3
+ Title + description left. Labeled toggle switch right.
4
+ -->
5
+ <script lang="ts">
6
+ import { cn } from '$lib/utils/cn';
7
+
8
+ let {
9
+ class: className = '',
10
+ title = 'Storage',
11
+ description = 'Read and write directly to databases and stores from your projects.',
12
+ toggleLabel = 'Enabled',
13
+ enabled = false,
14
+ ontoggle = (_: boolean) => {}
15
+ }: {
16
+ class?: string;
17
+ title?: string;
18
+ description?: string;
19
+ toggleLabel?: string;
20
+ enabled?: boolean;
21
+ ontoggle?: (value: boolean) => void;
22
+ } = $props();
23
+
24
+ let isEnabled = $state(enabled);
25
+
26
+ function handleToggle() {
27
+ isEnabled = !isEnabled;
28
+ ontoggle(isEnabled);
29
+ }
30
+ </script>
31
+
32
+ <div class={cn('py-4', className)}>
33
+ <div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
34
+ <!-- Left -->
35
+ <div>
36
+ <h2 class="text-lg font-semibold">{title}</h2>
37
+ {#if description}
38
+ <p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
39
+ {/if}
40
+ </div>
41
+
42
+ <!-- Right: toggle -->
43
+ <div class="flex shrink-0 items-center gap-2">
44
+ <span class="text-sm text-muted-foreground">{toggleLabel}</span>
45
+ <button
46
+ type="button"
47
+ role="switch"
48
+ aria-checked={isEnabled}
49
+ onclick={handleToggle}
50
+ class={cn(
51
+ 'relative inline-flex h-5 w-9 shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
52
+ isEnabled ? 'bg-foreground' : 'bg-input'
53
+ )}
54
+ >
55
+ <span
56
+ class={cn(
57
+ 'pointer-events-none inline-block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform',
58
+ isEnabled ? 'translate-x-4' : 'translate-x-0'
59
+ )}
60
+ />
61
+ </button>
62
+ </div>
63
+ </div>
64
+ </div>
@@ -0,0 +1,5 @@
1
+ export { default as SectionHeader01 } from './SectionHeader01.svelte';
2
+ export { default as SectionHeader02 } from './SectionHeader02.svelte';
3
+ export { default as SectionHeader03 } from './SectionHeader03.svelte';
4
+ export { default as SectionHeader04 } from './SectionHeader04.svelte';
5
+ export { default as SectionHeader05 } from './SectionHeader05.svelte';
@@ -0,0 +1,202 @@
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
+ onSaveCard?: () => void;
8
+ onSaveClient?: () => void;
9
+ }
10
+
11
+ const { class: className, onSaveCard, onSaveClient }: Props = $props();
12
+
13
+ // Card details state
14
+ let nameOnCard = $state('Kathy Pacheco');
15
+ let cardExpiry = $state('05/2025');
16
+ let cardNumber = $state('•••• •••• •••• 4242');
17
+ let cardCvv = $state('•••');
18
+
19
+ // Client details state
20
+ let clientName = $state('Kathy Pacheco');
21
+ let clientEmail = $state('kathy@example.com');
22
+ let clientCountry = $state('United States');
23
+ let streetAddress = $state('2825 Winding Way');
24
+ let city = $state('Providence');
25
+ let state = $state('Rhode Island');
26
+
27
+ function handleSaveCard() {
28
+ onSaveCard?.();
29
+ }
30
+
31
+ function handleSaveClient() {
32
+ onSaveClient?.();
33
+ }
34
+
35
+ // SVG Icons
36
+ function GlobeIcon() {
37
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 1 10 4M12 22a14.5 14.5 0 0 1-10-4M2 12h20M12 2a14.5 14.5 0 0 0 0 20M12 22a14.5 14.5 0 0 0 0-20"/></svg>`;
38
+ }
39
+ </script>
40
+
41
+ <div class={cn('space-y-6', className)}>
42
+ <!-- Plan Banner -->
43
+ <div class="rounded-lg bg-black px-6 py-4 text-white sm:px-8 sm:py-6">
44
+ <div class="flex items-center justify-between">
45
+ <div>
46
+ <h2 class="text-lg font-semibold">You're using free plan</h2>
47
+ <p class="mt-1 text-sm text-gray-300">Upgrade your account to unlock more features and higher limits.</p>
48
+ </div>
49
+ <Button class="ml-4 flex-shrink-0">
50
+ View plans →
51
+ </Button>
52
+ </div>
53
+ </div>
54
+
55
+ <!-- Card Details Section -->
56
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
57
+ <div class="mb-6">
58
+ <h3 class="text-lg font-semibold">Card details</h3>
59
+ <p class="mt-1 text-sm text-muted-foreground">Manage your payment method and billing information.</p>
60
+ </div>
61
+
62
+ <div class="grid gap-4 sm:grid-cols-2">
63
+ <div>
64
+ <label class="block text-sm font-medium mb-2">Name on card</label>
65
+ <input
66
+ type="text"
67
+ bind:value={nameOnCard}
68
+ placeholder="Full name"
69
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
70
+ />
71
+ </div>
72
+
73
+ <div>
74
+ <label class="block text-sm font-medium mb-2">Expiry</label>
75
+ <input
76
+ type="text"
77
+ bind:value={cardExpiry}
78
+ placeholder="MM/YYYY"
79
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
80
+ />
81
+ </div>
82
+
83
+ <div>
84
+ <label class="block text-sm font-medium mb-2">Card number</label>
85
+ <input
86
+ type="text"
87
+ bind:value={cardNumber}
88
+ placeholder="•••• •••• •••• ••••"
89
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
90
+ />
91
+ </div>
92
+
93
+ <div>
94
+ <label class="block text-sm font-medium mb-2">CVV</label>
95
+ <input
96
+ type="text"
97
+ bind:value={cardCvv}
98
+ placeholder="•••"
99
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
100
+ />
101
+ </div>
102
+ </div>
103
+
104
+ <div class="mt-6 flex justify-end">
105
+ <Button onclick={handleSaveCard}>
106
+ Save changes
107
+ </Button>
108
+ </div>
109
+ </div>
110
+
111
+ <!-- Client Details Section -->
112
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
113
+ <div class="mb-6">
114
+ <h3 class="text-lg font-semibold">Client details</h3>
115
+ <p class="mt-1 text-sm text-muted-foreground">Update your personal and billing address information.</p>
116
+ </div>
117
+
118
+ <div class="grid gap-4 sm:grid-cols-2">
119
+ <div>
120
+ <label class="block text-sm font-medium mb-2">Client name</label>
121
+ <input
122
+ type="text"
123
+ bind:value={clientName}
124
+ placeholder="Full name"
125
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
126
+ />
127
+ </div>
128
+
129
+ <div>
130
+ <label class="block text-sm font-medium mb-2">Email address</label>
131
+ <input
132
+ type="email"
133
+ bind:value={clientEmail}
134
+ placeholder="email@example.com"
135
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
136
+ />
137
+ </div>
138
+
139
+ <div>
140
+ <label class="block text-sm font-medium mb-2">Country</label>
141
+ <div class="relative">
142
+ <select
143
+ bind:value={clientCountry}
144
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring appearance-none pr-8"
145
+ >
146
+ <option>United States</option>
147
+ <option>Canada</option>
148
+ <option>United Kingdom</option>
149
+ <option>Australia</option>
150
+ </select>
151
+ <div class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground">
152
+ {@html GlobeIcon()}
153
+ </div>
154
+ </div>
155
+ </div>
156
+
157
+ <div>
158
+ <label class="block text-sm font-medium mb-2">Street address</label>
159
+ <input
160
+ type="text"
161
+ bind:value={streetAddress}
162
+ placeholder="Street address"
163
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
164
+ />
165
+ </div>
166
+
167
+ <div>
168
+ <label class="block text-sm font-medium mb-2">City</label>
169
+ <input
170
+ type="text"
171
+ bind:value={city}
172
+ placeholder="City"
173
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
174
+ />
175
+ </div>
176
+
177
+ <div>
178
+ <label class="block text-sm font-medium mb-2">State</label>
179
+ <div class="relative">
180
+ <select
181
+ bind:value={state}
182
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring appearance-none pr-8"
183
+ >
184
+ <option>Alabama</option>
185
+ <option>Rhode Island</option>
186
+ <option>California</option>
187
+ <option>Texas</option>
188
+ </select>
189
+ <div class="pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground">
190
+ {@html GlobeIcon()}
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ <div class="mt-6 flex justify-end">
197
+ <Button onclick={handleSaveClient}>
198
+ Save changes
199
+ </Button>
200
+ </div>
201
+ </div>
202
+ </div>