@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,329 @@
1
+ <!--
2
+ SettingsBlock.svelte
3
+ Tabbed settings page with Profile, Account, Appearance, Notifications, Display tabs.
4
+ Vertical tab list on the left, form content on the right.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+ import {
9
+ Button,
10
+ Card,
11
+ CardContent,
12
+ CardDescription,
13
+ CardFooter,
14
+ CardHeader,
15
+ CardTitle,
16
+ Input,
17
+ Label,
18
+ Tabs,
19
+ TabsList,
20
+ TabsTrigger,
21
+ TabsContent,
22
+ Checkbox,
23
+ RadioGroup,
24
+ RadioGroupItem,
25
+ Textarea
26
+ } from '$lib/components/ui';
27
+ import Separator from '$lib/components/ui/Separator.svelte';
28
+
29
+ let {
30
+ class: className = '',
31
+ activeTab = 'profile'
32
+ }: {
33
+ class?: string;
34
+ activeTab?: string;
35
+ } = $props();
36
+
37
+ // Profile form state
38
+ let profileName = $state('');
39
+ let profileEmail = $state('');
40
+ let profileBio = $state('');
41
+ let profileUrl1 = $state('');
42
+ let profileUrl2 = $state('');
43
+
44
+ // Account form state
45
+ let accountLanguage = $state('en');
46
+ let accountTimezone = $state('utc');
47
+
48
+ // Appearance state
49
+ let selectedTheme = $state('light');
50
+
51
+ // Notifications state
52
+ let emailNotifications = $state(true);
53
+ let pushNotifications = $state(false);
54
+ let marketingEmails = $state(false);
55
+ let securityEmails = $state(true);
56
+
57
+ // Display state
58
+ let displayMode = $state('comfortable');
59
+
60
+ const tabs = [
61
+ { value: 'profile', label: 'Profile' },
62
+ { value: 'account', label: 'Account' },
63
+ { value: 'appearance', label: 'Appearance' },
64
+ { value: 'notifications', label: 'Notifications' },
65
+ { value: 'display', label: 'Display' }
66
+ ];
67
+
68
+ const themes = [
69
+ { value: 'light', label: 'Light', description: 'Clean light theme' },
70
+ { value: 'dark', label: 'Dark', description: 'Easy on the eyes' },
71
+ { value: 'system', label: 'System', description: 'Match OS setting' }
72
+ ];
73
+ </script>
74
+
75
+ <div class={cn('mx-auto max-w-4xl space-y-6 p-6', className)}>
76
+ <div>
77
+ <h2 class="text-2xl font-bold tracking-tight">Settings</h2>
78
+ <p class="text-muted-foreground">Manage your account settings and preferences.</p>
79
+ </div>
80
+ <Separator />
81
+
82
+ <Tabs value={activeTab} orientation="vertical">
83
+ <div class="flex gap-8">
84
+ <!-- Vertical Tab List -->
85
+ <aside class="w-48 shrink-0">
86
+ <TabsList class="flex flex-col items-stretch gap-1 bg-transparent p-0">
87
+ {#each tabs as tab}
88
+ <TabsTrigger
89
+ value={tab.value}
90
+ class="justify-start rounded-md px-3 py-1.5 text-sm font-medium data-[state=active]:bg-muted"
91
+ >
92
+ {tab.label}
93
+ </TabsTrigger>
94
+ {/each}
95
+ </TabsList>
96
+ </aside>
97
+
98
+ <!-- Tab Content -->
99
+ <div class="flex-1">
100
+ <!-- Profile Tab -->
101
+ <TabsContent value="profile">
102
+ <Card>
103
+ <CardHeader>
104
+ <CardTitle>Profile</CardTitle>
105
+ <CardDescription>This is how others will see you on the site.</CardDescription>
106
+ </CardHeader>
107
+ <CardContent class="space-y-4">
108
+ <div class="space-y-2">
109
+ <Label htmlFor="settings-name">Name</Label>
110
+ <Input
111
+ placeholder="Your name"
112
+ bind:value={profileName}
113
+ />
114
+ <p class="text-xs text-muted-foreground">
115
+ This is your public display name. It can be your real name or a pseudonym.
116
+ </p>
117
+ </div>
118
+ <div class="space-y-2">
119
+ <Label htmlFor="settings-email">Email</Label>
120
+ <Input
121
+ type="email"
122
+ placeholder="email@example.com"
123
+ bind:value={profileEmail}
124
+ />
125
+ <p class="text-xs text-muted-foreground">
126
+ You can manage verified email addresses in your email settings.
127
+ </p>
128
+ </div>
129
+ <div class="space-y-2">
130
+ <Label htmlFor="settings-bio">Bio</Label>
131
+ <Textarea
132
+ placeholder="Tell us a little bit about yourself"
133
+ bind:value={profileBio}
134
+ />
135
+ <p class="text-xs text-muted-foreground">
136
+ You can @mention other users and organizations to link to them.
137
+ </p>
138
+ </div>
139
+ <div class="space-y-2">
140
+ <Label>URLs</Label>
141
+ <p class="text-xs text-muted-foreground">
142
+ Add links to your website, blog, or social media profiles.
143
+ </p>
144
+ <Input
145
+ placeholder="https://example.com"
146
+ bind:value={profileUrl1}
147
+ />
148
+ <Input
149
+ placeholder="https://twitter.com/username"
150
+ bind:value={profileUrl2}
151
+ />
152
+ </div>
153
+ </CardContent>
154
+ <CardFooter>
155
+ <Button>Update profile</Button>
156
+ </CardFooter>
157
+ </Card>
158
+ </TabsContent>
159
+
160
+ <!-- Account Tab -->
161
+ <TabsContent value="account">
162
+ <Card>
163
+ <CardHeader>
164
+ <CardTitle>Account</CardTitle>
165
+ <CardDescription>Update your account settings. Set your preferred language and timezone.</CardDescription>
166
+ </CardHeader>
167
+ <CardContent class="space-y-4">
168
+ <div class="space-y-2">
169
+ <Label htmlFor="settings-language">Language</Label>
170
+ <Input
171
+ placeholder="English"
172
+ bind:value={accountLanguage}
173
+ />
174
+ <p class="text-xs text-muted-foreground">
175
+ This is the language that will be used in the dashboard.
176
+ </p>
177
+ </div>
178
+ <div class="space-y-2">
179
+ <Label htmlFor="settings-timezone">Timezone</Label>
180
+ <Input
181
+ placeholder="UTC"
182
+ bind:value={accountTimezone}
183
+ />
184
+ <p class="text-xs text-muted-foreground">
185
+ Your timezone is used to display dates and times correctly.
186
+ </p>
187
+ </div>
188
+ </CardContent>
189
+ <CardFooter>
190
+ <Button>Update account</Button>
191
+ </CardFooter>
192
+ </Card>
193
+ </TabsContent>
194
+
195
+ <!-- Appearance Tab -->
196
+ <TabsContent value="appearance">
197
+ <Card>
198
+ <CardHeader>
199
+ <CardTitle>Appearance</CardTitle>
200
+ <CardDescription>Customize the appearance of the app. Automatically switch between day and night themes.</CardDescription>
201
+ </CardHeader>
202
+ <CardContent class="space-y-4">
203
+ <div class="space-y-2">
204
+ <Label>Theme</Label>
205
+ <p class="text-xs text-muted-foreground">Select the theme for the dashboard.</p>
206
+ </div>
207
+ <div class="grid grid-cols-3 gap-4">
208
+ {#each themes as theme}
209
+ <button
210
+ type="button"
211
+ class={cn(
212
+ 'flex flex-col items-center gap-2 rounded-lg border-2 p-4 transition-colors hover:bg-muted',
213
+ selectedTheme === theme.value
214
+ ? 'border-primary'
215
+ : 'border-transparent'
216
+ )}
217
+ onclick={() => (selectedTheme = theme.value)}
218
+ >
219
+ <!-- Theme preview placeholder -->
220
+ <div class={cn(
221
+ 'flex h-20 w-full items-center justify-center rounded-md border',
222
+ theme.value === 'dark' ? 'bg-zinc-900' : 'bg-white'
223
+ )}>
224
+ <div class="space-y-1">
225
+ <div class={cn('h-1.5 w-12 rounded', theme.value === 'dark' ? 'bg-zinc-700' : 'bg-zinc-200')} />
226
+ <div class={cn('h-1.5 w-8 rounded', theme.value === 'dark' ? 'bg-zinc-700' : 'bg-zinc-200')} />
227
+ </div>
228
+ </div>
229
+ <span class="text-sm font-medium">{theme.label}</span>
230
+ </button>
231
+ {/each}
232
+ </div>
233
+ </CardContent>
234
+ <CardFooter>
235
+ <Button>Update appearance</Button>
236
+ </CardFooter>
237
+ </Card>
238
+ </TabsContent>
239
+
240
+ <!-- Notifications Tab -->
241
+ <TabsContent value="notifications">
242
+ <Card>
243
+ <CardHeader>
244
+ <CardTitle>Notifications</CardTitle>
245
+ <CardDescription>Configure how you receive notifications.</CardDescription>
246
+ </CardHeader>
247
+ <CardContent class="space-y-6">
248
+ <div class="space-y-4">
249
+ <h4 class="text-sm font-medium">Email Notifications</h4>
250
+ <div class="space-y-3">
251
+ <label class="flex items-center gap-3">
252
+ <Checkbox bind:checked={emailNotifications} />
253
+ <div>
254
+ <p class="text-sm font-medium">Communication emails</p>
255
+ <p class="text-xs text-muted-foreground">Receive emails about your account activity.</p>
256
+ </div>
257
+ </label>
258
+ <label class="flex items-center gap-3">
259
+ <Checkbox bind:checked={marketingEmails} />
260
+ <div>
261
+ <p class="text-sm font-medium">Marketing emails</p>
262
+ <p class="text-xs text-muted-foreground">Receive emails about new products, features, and more.</p>
263
+ </div>
264
+ </label>
265
+ <label class="flex items-center gap-3">
266
+ <Checkbox bind:checked={securityEmails} />
267
+ <div>
268
+ <p class="text-sm font-medium">Security emails</p>
269
+ <p class="text-xs text-muted-foreground">Receive emails about your account security.</p>
270
+ </div>
271
+ </label>
272
+ </div>
273
+ </div>
274
+ <Separator />
275
+ <div class="space-y-4">
276
+ <h4 class="text-sm font-medium">Push Notifications</h4>
277
+ <label class="flex items-center gap-3">
278
+ <Checkbox bind:checked={pushNotifications} />
279
+ <div>
280
+ <p class="text-sm font-medium">Push notifications</p>
281
+ <p class="text-xs text-muted-foreground">Receive push notifications on your devices.</p>
282
+ </div>
283
+ </label>
284
+ </div>
285
+ </CardContent>
286
+ <CardFooter>
287
+ <Button>Update notifications</Button>
288
+ </CardFooter>
289
+ </Card>
290
+ </TabsContent>
291
+
292
+ <!-- Display Tab -->
293
+ <TabsContent value="display">
294
+ <Card>
295
+ <CardHeader>
296
+ <CardTitle>Display</CardTitle>
297
+ <CardDescription>Turn items on or off to control what is displayed in the app.</CardDescription>
298
+ </CardHeader>
299
+ <CardContent class="space-y-4">
300
+ <div class="space-y-2">
301
+ <Label>Display Mode</Label>
302
+ <p class="text-xs text-muted-foreground">Set the display density for the interface.</p>
303
+ </div>
304
+ <RadioGroup name="display-mode" value={displayMode} onchange={({ value }: { value: string }) => displayMode = value}>
305
+ <label class="flex items-center gap-3">
306
+ <RadioGroupItem value="comfortable" />
307
+ <div>
308
+ <p class="text-sm font-medium">Comfortable</p>
309
+ <p class="text-xs text-muted-foreground">Default spacing with more room to breathe.</p>
310
+ </div>
311
+ </label>
312
+ <label class="flex items-center gap-3">
313
+ <RadioGroupItem value="compact" />
314
+ <div>
315
+ <p class="text-sm font-medium">Compact</p>
316
+ <p class="text-xs text-muted-foreground">Tighter spacing for more content density.</p>
317
+ </div>
318
+ </label>
319
+ </RadioGroup>
320
+ </CardContent>
321
+ <CardFooter>
322
+ <Button>Update display</Button>
323
+ </CardFooter>
324
+ </Card>
325
+ </TabsContent>
326
+ </div>
327
+ </div>
328
+ </Tabs>
329
+ </div>
@@ -0,0 +1 @@
1
+ export { default as SettingsBlock } from './SettingsBlock.svelte';
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 12 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+ </script>
20
+
21
+ <section class={cn('w-full px-4 py-16', className)}>
22
+ <div class="mx-auto max-w-6xl">
23
+ {#if title || description}
24
+ <div class="mb-8 text-center">
25
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
26
+ {#if title}
27
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
28
+ {/if}
29
+ {#if description}
30
+ <p class="text-lg text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+ {/if}
34
+
35
+ <div class="mt-8 grid grid-cols-2 gap-3 sm:grid-cols-3">
36
+ {#each images.slice(0, 12) as image}
37
+ <div class="aspect-square">
38
+ {@html imagePlaceholder}
39
+ </div>
40
+ {/each}
41
+ </div>
42
+ </div>
43
+ </section>
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 6 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+
20
+ const aspectRatios = ['aspect-square', 'aspect-square', 'aspect-[3/4]', 'aspect-[3/4]', 'aspect-square', 'aspect-square'];
21
+ </script>
22
+
23
+ <section class={cn('w-full px-4 py-16', className)}>
24
+ <div class="mx-auto max-w-6xl">
25
+ {#if title || description}
26
+ <div class="mb-8 text-center">
27
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
28
+ {#if title}
29
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
30
+ {/if}
31
+ {#if description}
32
+ <p class="text-lg text-muted-foreground">{description}</p>
33
+ {/if}
34
+ </div>
35
+ {/if}
36
+
37
+ <div class="mt-8 grid grid-cols-2 gap-3 sm:grid-cols-3">
38
+ {#each images.slice(0, 6) as image, index}
39
+ <div class={aspectRatios[index]}>
40
+ {@html imagePlaceholder}
41
+ </div>
42
+ {/each}
43
+ </div>
44
+ </div>
45
+ </section>
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 8 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+ </script>
20
+
21
+ <section class={cn('w-full px-4 py-16', className)}>
22
+ <div class="mx-auto max-w-6xl">
23
+ {#if title || description}
24
+ <div class="mb-8 text-center">
25
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
26
+ {#if title}
27
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
28
+ {/if}
29
+ {#if description}
30
+ <p class="text-lg text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+ {/if}
34
+
35
+ <div class="mt-8 grid grid-cols-2 gap-2 sm:grid-cols-4">
36
+ {#each images.slice(0, 8) as image}
37
+ <div class="aspect-square">
38
+ {@html imagePlaceholder}
39
+ </div>
40
+ {/each}
41
+ </div>
42
+ </div>
43
+ </section>
@@ -0,0 +1,49 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 5 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+ </script>
20
+
21
+ <section class={cn('w-full px-4 py-16', className)}>
22
+ <div class="mx-auto max-w-6xl">
23
+ {#if title || description}
24
+ <div class="mb-8 text-center">
25
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
26
+ {#if title}
27
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
28
+ {/if}
29
+ {#if description}
30
+ <p class="text-lg text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+ {/if}
34
+
35
+ <div class="mt-8">
36
+ <div class="aspect-[16/7] w-full">
37
+ {@html imagePlaceholder}
38
+ </div>
39
+
40
+ <div class="mt-3 grid grid-cols-2 gap-3 sm:grid-cols-4">
41
+ {#each images.slice(1, 5) as image}
42
+ <div class="aspect-square">
43
+ {@html imagePlaceholder}
44
+ </div>
45
+ {/each}
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </section>
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 9 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+
20
+ const aspectRatios = ['aspect-square', 'aspect-[3/4]', 'aspect-square', 'aspect-[3/4]', 'aspect-square', 'aspect-square', 'aspect-[3/4]', 'aspect-square', 'aspect-[3/4]'];
21
+ </script>
22
+
23
+ <section class={cn('w-full px-4 py-16', className)}>
24
+ <div class="mx-auto max-w-6xl">
25
+ {#if title || description}
26
+ <div class="mb-8 text-center">
27
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
28
+ {#if title}
29
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
30
+ {/if}
31
+ {#if description}
32
+ <p class="text-lg text-muted-foreground">{description}</p>
33
+ {/if}
34
+ </div>
35
+ {/if}
36
+
37
+ <div class="mt-8 columns-2 gap-3 space-y-3 sm:columns-3">
38
+ {#each images.slice(0, 9) as image, index}
39
+ <div class="break-inside-avoid {aspectRatios[index]}">
40
+ {@html imagePlaceholder}
41
+ </div>
42
+ {/each}
43
+ </div>
44
+ </div>
45
+ </section>
@@ -0,0 +1,49 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 5 }, (_, i) => ({ alt: `Image ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+ </script>
20
+
21
+ <section class={cn('w-full px-4 py-16', className)}>
22
+ <div class="mx-auto max-w-6xl">
23
+ {#if title || description}
24
+ <div class="mb-8 text-center">
25
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
26
+ {#if title}
27
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
28
+ {/if}
29
+ {#if description}
30
+ <p class="text-lg text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+ {/if}
34
+
35
+ <div class="mt-8 grid grid-cols-1 gap-3 sm:grid-cols-2">
36
+ <div class="aspect-square sm:row-span-2">
37
+ {@html imagePlaceholder}
38
+ </div>
39
+
40
+ <div class="grid grid-cols-2 gap-3">
41
+ {#each images.slice(1, 5) as image}
42
+ <div class="aspect-square">
43
+ {@html imagePlaceholder}
44
+ </div>
45
+ {/each}
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </section>
@@ -0,0 +1,48 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ title?: string;
7
+ description?: string;
8
+ images?: Array<{ src?: string; alt?: string; caption?: string }>;
9
+ }
10
+
11
+ let {
12
+ class: className,
13
+ title = 'Explore our gallery',
14
+ description,
15
+ images = Array.from({ length: 12 }, (_, i) => ({ alt: `Image ${i + 1}`, caption: `Caption ${i + 1}` }))
16
+ }: Props = $props();
17
+
18
+ const imagePlaceholder = `<div class="w-full h-full bg-muted rounded-lg flex items-center justify-center overflow-hidden"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" class="text-muted-foreground/40"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg></div>`;
19
+ </script>
20
+
21
+ <section class={cn('w-full px-4 py-16', className)}>
22
+ <div class="mx-auto max-w-6xl">
23
+ {#if title || description}
24
+ <div class="mb-8 text-center">
25
+ <p class="mb-2 text-sm font-medium text-muted-foreground">Gallery Section</p>
26
+ {#if title}
27
+ <h2 class="mb-2 text-3xl font-bold tracking-tight sm:text-4xl">{title}</h2>
28
+ {/if}
29
+ {#if description}
30
+ <p class="text-lg text-muted-foreground">{description}</p>
31
+ {/if}
32
+ </div>
33
+ {/if}
34
+
35
+ <div class="mt-8 grid grid-cols-1 gap-6 sm:grid-cols-3">
36
+ {#each images.slice(0, 12) as image}
37
+ <div>
38
+ <div class="aspect-square">
39
+ {@html imagePlaceholder}
40
+ </div>
41
+ {#if image.caption}
42
+ <p class="mt-2 text-sm text-muted-foreground">{image.caption}</p>
43
+ {/if}
44
+ </div>
45
+ {/each}
46
+ </div>
47
+ </div>
48
+ </section>