@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,248 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Invoice {
6
+ id: string;
7
+ name: string;
8
+ status: 'Paid' | 'Due' | 'Sent';
9
+ date: string;
10
+ plan: string;
11
+ }
12
+
13
+ interface Props {
14
+ class?: string;
15
+ invoices?: Invoice[];
16
+ onUpgrade?: () => void;
17
+ onDownloadAll?: () => void;
18
+ }
19
+
20
+ const {
21
+ class: className,
22
+ invoices = [
23
+ { id: '2', name: 'Invoice #2', status: 'Paid', date: 'Sep 5 2024', plan: 'Pro' },
24
+ { id: '5', name: 'Invoice #5', status: 'Paid', date: 'Aug 26 2024', plan: 'Pro' },
25
+ { id: '4', name: 'Invoice #4', status: 'Paid', date: 'Sep 18 2024', plan: 'Pro' },
26
+ { id: '3', name: 'Invoice #3', status: 'Due', date: 'Sep 11 2024', plan: 'Pro' },
27
+ { id: '12', name: 'Invoice #12', status: 'Sent', date: 'Sep 19 2024', plan: 'Pro' },
28
+ { id: '13', name: 'Invoice #13', status: 'Sent', date: 'Sep 19 2024', plan: 'Pro' }
29
+ ],
30
+ onUpgrade,
31
+ onDownloadAll
32
+ }: Props = $props();
33
+
34
+ let searchQuery = $state('');
35
+ let currentPage = $state(1);
36
+ let selectedCheckboxes = $state<Set<string>>(new Set());
37
+
38
+ const itemsPerPage = 5;
39
+ const filteredInvoices = $derived(
40
+ invoices.filter((inv) => inv.name.toLowerCase().includes(searchQuery.toLowerCase()))
41
+ );
42
+ const totalPages = $derived(Math.ceil(filteredInvoices.length / itemsPerPage));
43
+ const paginatedInvoices = $derived(
44
+ filteredInvoices.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage)
45
+ );
46
+
47
+ function toggleCheckbox(id: string) {
48
+ if (selectedCheckboxes.has(id)) {
49
+ selectedCheckboxes.delete(id);
50
+ } else {
51
+ selectedCheckboxes.add(id);
52
+ }
53
+ }
54
+
55
+ function goToPage(page: number) {
56
+ if (page >= 1 && page <= totalPages) {
57
+ currentPage = page;
58
+ }
59
+ }
60
+
61
+ const pages = $derived.by(() => {
62
+ const result: (number | string)[] = [];
63
+ for (let i = 1; i <= totalPages; i++) {
64
+ if (i === 1 || i === totalPages || (i >= currentPage - 1 && i <= currentPage + 1)) {
65
+ result.push(i);
66
+ } else if (result[result.length - 1] !== '...') {
67
+ result.push('...');
68
+ }
69
+ }
70
+ return result;
71
+ });
72
+
73
+ // SVG Icons
74
+ const ExternalLinkIcon = `<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"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line></svg>`;
75
+
76
+ const ChevronLeftIcon = `<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"><polyline points="15 18 9 12 15 6"></polyline></svg>`;
77
+
78
+ const ChevronRightIcon = `<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"><polyline points="9 18 15 12 9 6"></polyline></svg>`;
79
+ </script>
80
+
81
+ <div class={cn('space-y-6', className)}>
82
+ <!-- Header -->
83
+ <div class="flex items-start justify-between">
84
+ <div>
85
+ <h2 class="text-2xl font-semibold">Billing & Invoices</h2>
86
+ <p class="text-sm text-muted-foreground mt-1">Manage your billing and view invoices</p>
87
+ </div>
88
+ <Button variant="outline">Contact support</Button>
89
+ </div>
90
+
91
+ <!-- Your Plan Section -->
92
+ <div class="border rounded-lg p-6 space-y-4">
93
+ <div>
94
+ <h3 class="text-lg font-semibold">Your plan</h3>
95
+ <p class="text-sm text-muted-foreground">Manage or upgrade your plan.</p>
96
+ </div>
97
+
98
+ <div class="border rounded-lg p-4 space-y-4">
99
+ <div>
100
+ <p class="text-xs text-muted-foreground mb-2">Plan Summary</p>
101
+ <div class="flex items-center gap-2">
102
+ <span class="text-xs border rounded px-2 py-0.5 bg-muted">Free Plan</span>
103
+ </div>
104
+ </div>
105
+
106
+ <div>
107
+ <p class="font-semibold">100 credits left</p>
108
+ </div>
109
+
110
+ <div class="space-y-1">
111
+ <div class="h-1 bg-muted rounded-full overflow-hidden">
112
+ <div class="bg-foreground h-full rounded-full" style="width: 50%"></div>
113
+ </div>
114
+ <p class="text-xs text-muted-foreground text-right">50% of 200 credits used</p>
115
+ </div>
116
+
117
+ <div class="grid grid-cols-3 gap-4">
118
+ <div>
119
+ <p class="text-xs text-muted-foreground">Price/Month</p>
120
+ <p class="font-semibold">$0</p>
121
+ </div>
122
+ <div>
123
+ <p class="text-xs text-muted-foreground">Included Credits</p>
124
+ <p class="font-semibold">200</p>
125
+ </div>
126
+ <div>
127
+ <p class="text-xs text-muted-foreground">Renewal Date</p>
128
+ <p class="font-semibold text-sm">Oct 3, 2024</p>
129
+ </div>
130
+ </div>
131
+
132
+ <Button class="w-full" onclick={onUpgrade}>
133
+ Upgrade plan
134
+ <span class="ml-2">
135
+ {@html ExternalLinkIcon}
136
+ </span>
137
+ </Button>
138
+ </div>
139
+ </div>
140
+
141
+ <!-- Invoices Section -->
142
+ <div class="border rounded-lg p-6 space-y-4">
143
+ <div>
144
+ <h3 class="text-lg font-semibold">Invoices</h3>
145
+ <p class="text-sm text-muted-foreground">View and download your invoices</p>
146
+ </div>
147
+
148
+ <div class="flex items-center gap-2">
149
+ <input
150
+ type="text"
151
+ placeholder="Search invoices..."
152
+ bind:value={searchQuery}
153
+ class="flex-1 px-3 py-2 border rounded-md bg-background text-sm"
154
+ />
155
+ <Button variant="outline" onclick={onDownloadAll}>↓ Download all</Button>
156
+ </div>
157
+
158
+ <div class="border rounded-lg overflow-hidden">
159
+ <table class="w-full text-sm">
160
+ <thead class="bg-muted border-b">
161
+ <tr>
162
+ <th class="w-8 px-4 py-2 text-left">
163
+ <input type="checkbox" class="rounded" />
164
+ </th>
165
+ <th class="px-4 py-2 text-left font-semibold">Name</th>
166
+ <th class="px-4 py-2 text-left font-semibold">Status</th>
167
+ <th class="px-4 py-2 text-left font-semibold">Billing date</th>
168
+ <th class="px-4 py-2 text-left font-semibold">Plan</th>
169
+ <th class="w-8 px-4 py-2 text-center">Actions</th>
170
+ </tr>
171
+ </thead>
172
+ <tbody>
173
+ {#each paginatedInvoices as invoice (invoice.id)}
174
+ <tr class="border-b hover:bg-muted/50">
175
+ <td class="px-4 py-3">
176
+ <input
177
+ type="checkbox"
178
+ class="rounded"
179
+ checked={selectedCheckboxes.has(invoice.id)}
180
+ onchange={() => toggleCheckbox(invoice.id)}
181
+ />
182
+ </td>
183
+ <td class="px-4 py-3">{invoice.name}</td>
184
+ <td class="px-4 py-3">
185
+ {#if invoice.status === 'Paid'}
186
+ <span class="inline-block bg-foreground text-background text-xs px-2 py-1 rounded-full"
187
+ >{invoice.status}</span
188
+ >
189
+ {:else if invoice.status === 'Due'}
190
+ <span
191
+ class="inline-block text-destructive border border-destructive rounded-full px-2 py-1 text-xs"
192
+ >{invoice.status}</span
193
+ >
194
+ {:else}
195
+ <span class="text-xs">{invoice.status}</span>
196
+ {/if}
197
+ </td>
198
+ <td class="px-4 py-3">{invoice.date}</td>
199
+ <td class="px-4 py-3">{invoice.plan}</td>
200
+ <td class="px-4 py-3 text-center">
201
+ <button class="text-muted-foreground hover:text-foreground">...</button>
202
+ </td>
203
+ </tr>
204
+ {/each}
205
+ </tbody>
206
+ </table>
207
+ </div>
208
+
209
+ <!-- Pagination -->
210
+ {#if totalPages > 1}
211
+ <div class="flex items-center justify-center gap-1">
212
+ <Button
213
+ variant="outline"
214
+ size="sm"
215
+ disabled={currentPage === 1}
216
+ onclick={() => goToPage(currentPage - 1)}
217
+ >
218
+ {@html ChevronLeftIcon}
219
+ Previous
220
+ </Button>
221
+
222
+ {#each pages as page}
223
+ {#if page === '...'}
224
+ <span class="px-2">...</span>
225
+ {:else}
226
+ <Button
227
+ variant={currentPage === page ? 'default' : 'outline'}
228
+ size="sm"
229
+ onclick={() => goToPage(page as number)}
230
+ >
231
+ {page}
232
+ </Button>
233
+ {/if}
234
+ {/each}
235
+
236
+ <Button
237
+ variant="outline"
238
+ size="sm"
239
+ disabled={currentPage === totalPages}
240
+ onclick={() => goToPage(currentPage + 1)}
241
+ >
242
+ Next
243
+ {@html ChevronRightIcon}
244
+ </Button>
245
+ </div>
246
+ {/if}
247
+ </div>
248
+ </div>
@@ -0,0 +1,120 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ type NotifOption = 'All' | 'Email' | 'In app' | 'None';
6
+
7
+ interface Props {
8
+ class?: string;
9
+ onSave?: () => void;
10
+ }
11
+
12
+ const { class: className, onSave }: Props = $props();
13
+
14
+ let generalSettings = $state<Record<string, NotifOption>>({
15
+ newMessages: 'All',
16
+ accountActivity: 'All',
17
+ mentions: 'All',
18
+ appUpdates: 'All'
19
+ });
20
+
21
+ let summarySettings = $state<Record<string, NotifOption>>({
22
+ dailySummary: 'All',
23
+ weeklyReport: 'All',
24
+ monthlyBilling: 'All',
25
+ eventReminder: 'All'
26
+ });
27
+
28
+ const notificationOptions: NotifOption[] = ['All', 'Email', 'In app', 'None'];
29
+
30
+ function handleSave() {
31
+ onSave?.();
32
+ }
33
+ </script>
34
+
35
+ <div class={cn('space-y-6', className)}>
36
+ <!-- Header -->
37
+ <div>
38
+ <h2 class="text-2xl font-semibold">Notifications</h2>
39
+ <p class="text-sm text-muted-foreground mt-1">
40
+ Stay informed with customizable notifications about your account and activities.
41
+ </p>
42
+ </div>
43
+
44
+ <!-- General Notifications -->
45
+ <div class="border rounded-lg p-6 space-y-4">
46
+ <div>
47
+ <h3 class="text-lg font-semibold">General notifications</h3>
48
+ <p class="text-sm text-muted-foreground">Choose how you receive general updates</p>
49
+ </div>
50
+
51
+ <div class="space-y-4">
52
+ {#each [
53
+ { key: 'newMessages', label: 'New messages' },
54
+ { key: 'accountActivity', label: 'Account activity' },
55
+ { key: 'mentions', label: 'Mentions in discussions' },
56
+ { key: 'appUpdates', label: 'Application updates' }
57
+ ] as item}
58
+ <div class="flex items-center justify-between">
59
+ <label class="text-sm font-medium">{item.label}</label>
60
+ <div class="flex gap-1">
61
+ {#each notificationOptions as option}
62
+ <button
63
+ class={cn(
64
+ 'px-2.5 py-1 rounded text-sm border transition-colors',
65
+ generalSettings[item.key] === option
66
+ ? 'bg-foreground text-background border-foreground'
67
+ : 'border-muted-foreground/20 hover:border-muted-foreground/40'
68
+ )}
69
+ onclick={() => (generalSettings[item.key] = option)}
70
+ >
71
+ {option}
72
+ </button>
73
+ {/each}
74
+ </div>
75
+ </div>
76
+ {/each}
77
+ </div>
78
+ </div>
79
+
80
+ <!-- Summary Notifications -->
81
+ <div class="border rounded-lg p-6 space-y-4">
82
+ <div>
83
+ <h3 class="text-lg font-semibold">Summary notifications</h3>
84
+ <p class="text-sm text-muted-foreground">Receive digest summaries of your activity</p>
85
+ </div>
86
+
87
+ <div class="space-y-4">
88
+ {#each [
89
+ { key: 'dailySummary', label: 'Daily activity summary' },
90
+ { key: 'weeklyReport', label: 'Weekly progress report' },
91
+ { key: 'monthlyBilling', label: 'Monthly billing summary' },
92
+ { key: 'eventReminder', label: 'Event reminder summary' }
93
+ ] as item}
94
+ <div class="flex items-center justify-between">
95
+ <label class="text-sm font-medium">{item.label}</label>
96
+ <div class="flex gap-1">
97
+ {#each notificationOptions as option}
98
+ <button
99
+ class={cn(
100
+ 'px-2.5 py-1 rounded text-sm border transition-colors',
101
+ summarySettings[item.key] === option
102
+ ? 'bg-foreground text-background border-foreground'
103
+ : 'border-muted-foreground/20 hover:border-muted-foreground/40'
104
+ )}
105
+ onclick={() => (summarySettings[item.key] = option)}
106
+ >
107
+ {option}
108
+ </button>
109
+ {/each}
110
+ </div>
111
+ </div>
112
+ {/each}
113
+ </div>
114
+ </div>
115
+
116
+ <!-- Save Button -->
117
+ <div class="flex justify-end">
118
+ <Button onclick={handleSave}>Save preferences</Button>
119
+ </div>
120
+ </div>
@@ -0,0 +1,136 @@
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
+ avatarUrl?: string;
8
+ onSave?: () => void;
9
+ onDelete?: () => void;
10
+ }
11
+
12
+ const { class: className, avatarUrl, onSave, onDelete }: Props = $props();
13
+
14
+ let displayName = $state('Shadon Design');
15
+ let isAvatarEditing = $state(false);
16
+ let isNameEditing = $state(false);
17
+ let isTeamsEditing = $state(false);
18
+
19
+ const teams = [
20
+ { name: 'Creative Studio', joined: '5 September 2024', role: 'Admin' },
21
+ { name: 'Design Team', joined: '2 August 2024', role: 'Admin' },
22
+ { name: 'Development', joined: '14 January 2023', role: 'Designer' },
23
+ { name: 'Product Team', joined: '11 May 2023', role: 'Developer' }
24
+ ];
25
+
26
+ function handleDeleteAccount() {
27
+ onDelete?.();
28
+ }
29
+
30
+ function handleSave() {
31
+ isAvatarEditing = false;
32
+ isNameEditing = false;
33
+ isTeamsEditing = false;
34
+ onSave?.();
35
+ }
36
+ </script>
37
+
38
+ <div class={cn('space-y-6', className)}>
39
+ <!-- Avatar Section -->
40
+ <div class="border rounded-lg p-6 space-y-4">
41
+ <div>
42
+ <p class="text-sm text-muted-foreground">Avatar is your profile picture visible across the platform.</p>
43
+ </div>
44
+
45
+ <div class="flex items-end gap-4">
46
+ <div
47
+ class="w-12 h-12 rounded-full bg-muted flex items-center justify-center flex-shrink-0 overflow-hidden"
48
+ >
49
+ {#if avatarUrl}
50
+ <img src={avatarUrl} alt="Avatar" class="w-full h-full object-cover" />
51
+ {:else}
52
+ <span class="text-muted-foreground text-xs">Profile</span>
53
+ {/if}
54
+ </div>
55
+ <div class="flex gap-2">
56
+ <Button variant="outline">Upload</Button>
57
+ <Button variant="outline">Remove</Button>
58
+ </div>
59
+ </div>
60
+
61
+ <div class="flex justify-end">
62
+ <Button onclick={handleSave}>Save</Button>
63
+ </div>
64
+ </div>
65
+
66
+ <!-- Display Name Section -->
67
+ <div class="border rounded-lg p-6 space-y-4">
68
+ <div>
69
+ <p class="text-sm text-muted-foreground">Enter your full name or a display name to customize your profile.</p>
70
+ </div>
71
+
72
+ <div class="space-y-2">
73
+ <input
74
+ type="text"
75
+ bind:value={displayName}
76
+ class="w-full px-3 py-2 border rounded-md bg-background text-sm"
77
+ placeholder="Display name"
78
+ />
79
+ <p class="text-xs text-muted-foreground">Maximum allowed length is 32 characters.</p>
80
+ </div>
81
+
82
+ <div class="flex justify-end">
83
+ <Button onclick={handleSave}>Save</Button>
84
+ </div>
85
+ </div>
86
+
87
+ <!-- Teams Section -->
88
+ <div class="border rounded-lg p-6 space-y-4">
89
+ <div>
90
+ <h3 class="font-semibold">Teams</h3>
91
+ <p class="text-sm text-muted-foreground">Here is your URL namespace and team memberships.</p>
92
+ </div>
93
+
94
+ <div class="border rounded-lg overflow-hidden">
95
+ <table class="w-full text-sm">
96
+ <thead class="bg-muted border-b">
97
+ <tr>
98
+ <th class="px-4 py-2 text-left font-semibold">Team name</th>
99
+ <th class="px-4 py-2 text-left font-semibold">Joined</th>
100
+ <th class="px-4 py-2 text-right font-semibold">Role</th>
101
+ </tr>
102
+ </thead>
103
+ <tbody>
104
+ {#each teams as team (team.name)}
105
+ <tr class="border-b hover:bg-muted/50">
106
+ <td class="px-4 py-3">Table Cell Text</td>
107
+ <td class="px-4 py-3">{team.joined}</td>
108
+ <td class="px-4 py-3 text-right">
109
+ <span class="inline-block bg-muted text-xs px-2 py-0.5 rounded">{team.role}</span>
110
+ </td>
111
+ </tr>
112
+ {/each}
113
+ </tbody>
114
+ </table>
115
+ </div>
116
+
117
+ <div class="flex justify-end gap-2">
118
+ <Button variant="outline">Edit</Button>
119
+ <Button onclick={handleSave}>Save</Button>
120
+ </div>
121
+ </div>
122
+
123
+ <!-- Delete Account Section -->
124
+ <div class="border border-destructive rounded-lg p-6">
125
+ <div class="flex items-start justify-between gap-4">
126
+ <div class="flex-1 space-y-2">
127
+ <p class="text-sm text-muted-foreground">
128
+ This will permanently delete your Personal Account. Please note that this action is irreversible, so proceed
129
+ with caution.
130
+ </p>
131
+ <p class="text-sm text-destructive font-semibold">This action cannot be undone!</p>
132
+ </div>
133
+ <Button variant="destructive" onclick={handleDeleteAccount}>Delete account</Button>
134
+ </div>
135
+ </div>
136
+ </div>
@@ -0,0 +1,7 @@
1
+ export { default as Settings01 } from './Settings01.svelte';
2
+ export { default as Settings02 } from './Settings02.svelte';
3
+ export { default as Settings03 } from './Settings03.svelte';
4
+ export { default as Settings04 } from './Settings04.svelte';
5
+ export { default as Settings05 } from './Settings05.svelte';
6
+ export { default as Settings06 } from './Settings06.svelte';
7
+ export { default as Settings07 } from './Settings07.svelte';
@@ -0,0 +1,108 @@
1
+ <!--
2
+ SidebarLayout01.svelte
3
+ Documentation sidebar with grouped nav links, search, and breadcrumb.
4
+ -->
5
+ <script lang="ts">
6
+ import type { Snippet } from 'svelte';
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Input, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbSeparator } from '$lib/components/ui';
9
+
10
+ let {
11
+ class: className = '',
12
+ sections = [],
13
+ breadcrumbs = [],
14
+ logo = 'Docs',
15
+ version = 'v1.0.0',
16
+ children
17
+ }: {
18
+ class?: string;
19
+ sections?: Array<{
20
+ title: string;
21
+ links: Array<{ label: string; href: string; active?: boolean }>;
22
+ }>;
23
+ breadcrumbs?: Array<{ label: string; href?: string }>;
24
+ logo?: string;
25
+ version?: string;
26
+ children?: Snippet;
27
+ } = $props();
28
+
29
+ let searchQuery = $state('');
30
+ </script>
31
+
32
+ <div class={cn('flex h-screen', className)}>
33
+ <!-- Sidebar -->
34
+ <aside class="flex w-64 flex-col border-r bg-background">
35
+ <!-- Logo + Version -->
36
+ <div class="flex items-center gap-2 border-b px-4 py-3">
37
+ <!-- Lucide: BookOpen -->
38
+ <span class="flex h-6 w-6 items-center justify-center rounded bg-primary text-xs text-primary-foreground">D</span>
39
+ <span class="font-semibold">{logo}</span>
40
+ <span class="ml-auto text-xs text-muted-foreground">{version}</span>
41
+ </div>
42
+
43
+ <!-- Search -->
44
+ <div class="p-4">
45
+ <Input
46
+ type="search"
47
+ placeholder="Search documentation..."
48
+ bind:value={searchQuery}
49
+ />
50
+ </div>
51
+
52
+ <!-- Nav Sections -->
53
+ <nav class="flex-1 overflow-y-auto px-3 pb-4">
54
+ {#each sections as section}
55
+ <div class="mb-4">
56
+ <h4 class="mb-1 px-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground">
57
+ {section.title}
58
+ </h4>
59
+ <ul class="space-y-0.5">
60
+ {#each section.links as link}
61
+ <li>
62
+ <a
63
+ href={link.href}
64
+ class={cn(
65
+ 'block rounded-md px-2 py-1.5 text-sm transition-colors',
66
+ link.active
67
+ ? 'bg-muted font-semibold text-foreground'
68
+ : 'text-muted-foreground hover:bg-muted hover:text-foreground'
69
+ )}
70
+ >
71
+ {link.label}
72
+ </a>
73
+ </li>
74
+ {/each}
75
+ </ul>
76
+ </div>
77
+ {/each}
78
+ </nav>
79
+ </aside>
80
+
81
+ <!-- Main Content -->
82
+ <main class="flex flex-1 flex-col overflow-hidden">
83
+ <!-- Breadcrumb -->
84
+ {#if breadcrumbs.length > 0}
85
+ <div class="border-b px-6 py-3">
86
+ <Breadcrumb>
87
+ {#each breadcrumbs as crumb, i}
88
+ <BreadcrumbItem>
89
+ {#if crumb.href}
90
+ <BreadcrumbLink href={crumb.href}>{crumb.label}</BreadcrumbLink>
91
+ {:else}
92
+ <span class="text-sm text-foreground">{crumb.label}</span>
93
+ {/if}
94
+ </BreadcrumbItem>
95
+ {#if i < breadcrumbs.length - 1}
96
+ <BreadcrumbSeparator />
97
+ {/if}
98
+ {/each}
99
+ </Breadcrumb>
100
+ </div>
101
+ {/if}
102
+
103
+ <!-- Content Slot -->
104
+ <div class="flex-1 overflow-y-auto p-6">
105
+ {@render children?.()}
106
+ </div>
107
+ </main>
108
+ </div>
@@ -0,0 +1,75 @@
1
+ <!--
2
+ SidebarLayout02.svelte
3
+ Icon-only sidebar that expands on hover to show labels.
4
+ -->
5
+ <script lang="ts">
6
+ import type { Snippet } from 'svelte';
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Button } from '$lib/components/ui';
9
+ import { DynamicIcon } from '$lib/components/ui/icon';
10
+
11
+ let {
12
+ class: className = '',
13
+ items = [],
14
+ children
15
+ }: {
16
+ class?: string;
17
+ items?: Array<{
18
+ icon: string;
19
+ label: string;
20
+ href: string;
21
+ active?: boolean;
22
+ }>;
23
+ children?: Snippet;
24
+ } = $props();
25
+
26
+ let expanded = $state(false);
27
+ </script>
28
+
29
+ <div class={cn('flex h-screen', className)}>
30
+ <!-- Sidebar -->
31
+ <aside
32
+ class={cn(
33
+ 'flex flex-col border-r bg-background transition-all duration-200',
34
+ expanded ? 'w-48' : 'w-16'
35
+ )}
36
+ onmouseenter={() => (expanded = true)}
37
+ onmouseleave={() => (expanded = false)}
38
+ role="navigation"
39
+ >
40
+ <!-- Logo -->
41
+ <div class="flex h-14 items-center justify-center border-b">
42
+ <!-- Lucide: Command -->
43
+ <span class="flex h-8 w-8 items-center justify-center rounded-md bg-primary text-sm font-bold text-primary-foreground">
44
+ C
45
+ </span>
46
+ </div>
47
+
48
+ <!-- Nav Items -->
49
+ <nav class="flex flex-1 flex-col gap-1 p-2">
50
+ {#each items as item}
51
+ <a
52
+ href={item.href}
53
+ class={cn(
54
+ 'flex items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors',
55
+ item.active
56
+ ? 'bg-muted font-medium text-foreground'
57
+ : 'text-muted-foreground hover:bg-muted hover:text-foreground'
58
+ )}
59
+ title={item.label}
60
+ >
61
+ <!-- Icon -->
62
+ <DynamicIcon name={item.icon} size={20} />
63
+ {#if expanded}
64
+ <span class="truncate">{item.label}</span>
65
+ {/if}
66
+ </a>
67
+ {/each}
68
+ </nav>
69
+ </aside>
70
+
71
+ <!-- Main Content -->
72
+ <main class="flex-1 overflow-y-auto">
73
+ {@render children?.()}
74
+ </main>
75
+ </div>