@xbg.solutions/create-frontend 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/bin/xbg-frontend.cjs +32 -0
  2. package/package.json +17 -3
  3. package/src/commands/add.cjs +470 -0
  4. package/src/commands/generate.cjs +24 -0
  5. package/src/manifest.json +1578 -0
  6. package/src/registry/advanced/ChartWrapper.svelte +587 -0
  7. package/src/registry/advanced/DataTable.svelte +645 -0
  8. package/src/registry/advanced/FormWizard.svelte +546 -0
  9. package/src/registry/advanced/ImageUpload.svelte +663 -0
  10. package/src/registry/advanced/index.ts +33 -0
  11. package/src/registry/atoms/calendar/Calendar.svelte +181 -0
  12. package/src/registry/atoms/calendar/index.ts +1 -0
  13. package/src/registry/atoms/dialog/Dialog.svelte +179 -0
  14. package/src/registry/atoms/dialog/DialogDescription.svelte +16 -0
  15. package/src/registry/atoms/dialog/DialogFooter.svelte +16 -0
  16. package/src/registry/atoms/dialog/DialogHeader.svelte +16 -0
  17. package/src/registry/atoms/dialog/DialogTitle.svelte +16 -0
  18. package/src/registry/atoms/dialog/index.ts +10 -0
  19. package/src/registry/atoms/icon/BrandIcon.svelte +47 -0
  20. package/src/registry/atoms/icon/DynamicIcon.svelte +49 -0
  21. package/src/registry/atoms/icon/index.ts +2 -0
  22. package/src/registry/atoms/legend/Legend.svelte +32 -0
  23. package/src/registry/atoms/legend/index.ts +1 -0
  24. package/src/registry/atoms/menu/MenuItem.svelte +85 -0
  25. package/src/registry/atoms/menu/index.ts +1 -0
  26. package/src/registry/atoms/message/Message.svelte +62 -0
  27. package/src/registry/atoms/message/index.ts +1 -0
  28. package/src/registry/atoms/nav/NavItem.svelte +67 -0
  29. package/src/registry/atoms/nav/index.ts +1 -0
  30. package/src/registry/atoms/notification-badge/NotificationBadge.svelte +30 -0
  31. package/src/registry/atoms/notification-badge/index.ts +1 -0
  32. package/src/registry/atoms/otp-input/OtpInput.svelte +108 -0
  33. package/src/registry/atoms/otp-input/index.ts +1 -0
  34. package/src/registry/atoms/select/Select.svelte +216 -0
  35. package/src/registry/atoms/select/index.ts +6 -0
  36. package/src/registry/atoms/settings-card/SettingsCard.svelte +48 -0
  37. package/src/registry/atoms/settings-card/index.ts +1 -0
  38. package/src/registry/atoms/sidebar-item/SidebarItem.svelte +90 -0
  39. package/src/registry/atoms/sidebar-item/index.ts +1 -0
  40. package/src/registry/atoms/statistic-card/StatisticCard.svelte +53 -0
  41. package/src/registry/atoms/statistic-card/index.ts +1 -0
  42. package/src/registry/atoms/text-editor/TextEditor.svelte +77 -0
  43. package/src/registry/atoms/text-editor/index.ts +1 -0
  44. package/src/registry/atoms/uploader/Uploader.svelte +102 -0
  45. package/src/registry/atoms/uploader/index.ts +1 -0
  46. package/src/registry/atoms/user-item/UserItem.svelte +39 -0
  47. package/src/registry/atoms/user-item/index.ts +1 -0
  48. package/src/registry/blocks/account-section/AccountSection01.svelte +112 -0
  49. package/src/registry/blocks/account-section/AccountSection02.svelte +190 -0
  50. package/src/registry/blocks/account-section/AccountSection03.svelte +161 -0
  51. package/src/registry/blocks/account-section/AccountSection04.svelte +164 -0
  52. package/src/registry/blocks/account-section/AccountSection05.svelte +76 -0
  53. package/src/registry/blocks/account-section/index.ts +5 -0
  54. package/src/registry/blocks/app-shell/AppShell01.svelte +74 -0
  55. package/src/registry/blocks/app-shell/AppShell02.svelte +87 -0
  56. package/src/registry/blocks/app-shell/AppShell03.svelte +79 -0
  57. package/src/registry/blocks/app-shell/AppShell04.svelte +177 -0
  58. package/src/registry/blocks/app-shell/index.ts +4 -0
  59. package/src/registry/blocks/auth/AuthSplitScreen.svelte +132 -0
  60. package/src/registry/blocks/auth/LoginBlock01.svelte +94 -0
  61. package/src/registry/blocks/auth/LoginBlock02.svelte +103 -0
  62. package/src/registry/blocks/auth/LoginBlock03.svelte +53 -0
  63. package/src/registry/blocks/auth/LoginBlock04.svelte +99 -0
  64. package/src/registry/blocks/auth/LoginBlock05.svelte +101 -0
  65. package/src/registry/blocks/auth/OtpBlock01.svelte +115 -0
  66. package/src/registry/blocks/auth/OtpBlock02.svelte +113 -0
  67. package/src/registry/blocks/auth/OtpBlock03.svelte +143 -0
  68. package/src/registry/blocks/auth/OtpBlock04.svelte +122 -0
  69. package/src/registry/blocks/auth/OtpBlock05.svelte +81 -0
  70. package/src/registry/blocks/auth/SignupBlock01.svelte +103 -0
  71. package/src/registry/blocks/auth/SignupBlock02.svelte +94 -0
  72. package/src/registry/blocks/auth/SignupBlock03.svelte +120 -0
  73. package/src/registry/blocks/auth/SignupBlock04.svelte +112 -0
  74. package/src/registry/blocks/auth/SignupBlock05.svelte +77 -0
  75. package/src/registry/blocks/auth/index.ts +31 -0
  76. package/src/registry/blocks/banner/Banner01.svelte +67 -0
  77. package/src/registry/blocks/banner/Banner02.svelte +61 -0
  78. package/src/registry/blocks/banner/Banner03.svelte +54 -0
  79. package/src/registry/blocks/banner/Banner04.svelte +49 -0
  80. package/src/registry/blocks/banner/Banner05.svelte +47 -0
  81. package/src/registry/blocks/banner/index.ts +5 -0
  82. package/src/registry/blocks/bento-grid/BentoGrid01.svelte +92 -0
  83. package/src/registry/blocks/bento-grid/BentoGrid02.svelte +79 -0
  84. package/src/registry/blocks/bento-grid/BentoGrid03.svelte +79 -0
  85. package/src/registry/blocks/bento-grid/BentoGrid04.svelte +58 -0
  86. package/src/registry/blocks/bento-grid/BentoGrid05.svelte +92 -0
  87. package/src/registry/blocks/bento-grid/BentoGrid06.svelte +42 -0
  88. package/src/registry/blocks/bento-grid/index.ts +14 -0
  89. package/src/registry/blocks/blog-section/BlogSection01.svelte +100 -0
  90. package/src/registry/blocks/blog-section/BlogSection02.svelte +93 -0
  91. package/src/registry/blocks/blog-section/BlogSection03.svelte +92 -0
  92. package/src/registry/blocks/blog-section/BlogSection04.svelte +97 -0
  93. package/src/registry/blocks/blog-section/BlogSection05.svelte +120 -0
  94. package/src/registry/blocks/blog-section/index.ts +15 -0
  95. package/src/registry/blocks/buttons/ButtonBookmark.svelte +37 -0
  96. package/src/registry/blocks/buttons/ButtonLike.svelte +37 -0
  97. package/src/registry/blocks/buttons/ButtonMenu.svelte +37 -0
  98. package/src/registry/blocks/buttons/ButtonSplitDropdown.svelte +46 -0
  99. package/src/registry/blocks/buttons/ButtonStepper.svelte +55 -0
  100. package/src/registry/blocks/buttons/ButtonSteps.svelte +73 -0
  101. package/src/registry/blocks/buttons/ButtonToggleGroup.svelte +35 -0
  102. package/src/registry/blocks/buttons/ButtonsGroup.svelte +63 -0
  103. package/src/registry/blocks/buttons/SocialButtonsHorizontal.svelte +41 -0
  104. package/src/registry/blocks/buttons/SocialButtonsVertical.svelte +53 -0
  105. package/src/registry/blocks/buttons/index.ts +10 -0
  106. package/src/registry/blocks/calendar/CalendarBlock01.svelte +169 -0
  107. package/src/registry/blocks/calendar/CalendarBlock02.svelte +133 -0
  108. package/src/registry/blocks/calendar/CalendarBlock03.svelte +194 -0
  109. package/src/registry/blocks/calendar/CalendarBlock04.svelte +96 -0
  110. package/src/registry/blocks/calendar/CalendarBlock05.svelte +97 -0
  111. package/src/registry/blocks/calendar/CalendarBlock06.svelte +98 -0
  112. package/src/registry/blocks/calendar/CalendarBlock07.svelte +109 -0
  113. package/src/registry/blocks/calendar/CalendarBlock08.svelte +71 -0
  114. package/src/registry/blocks/calendar/CalendarBlock09.svelte +99 -0
  115. package/src/registry/blocks/calendar/CalendarBlock10.svelte +88 -0
  116. package/src/registry/blocks/calendar/CalendarBlock11.svelte +99 -0
  117. package/src/registry/blocks/calendar/CalendarBlock12.svelte +121 -0
  118. package/src/registry/blocks/calendar/CalendarBlock13.svelte +92 -0
  119. package/src/registry/blocks/calendar/CalendarBlock14.svelte +71 -0
  120. package/src/registry/blocks/calendar/CalendarBlock15.svelte +96 -0
  121. package/src/registry/blocks/calendar/CalendarBlock16.svelte +98 -0
  122. package/src/registry/blocks/calendar/CalendarBlock17.svelte +88 -0
  123. package/src/registry/blocks/calendar/CalendarBlock18.svelte +84 -0
  124. package/src/registry/blocks/calendar/CalendarBlock19.svelte +105 -0
  125. package/src/registry/blocks/calendar/CalendarBlock20.svelte +78 -0
  126. package/src/registry/blocks/calendar/CalendarBlock21.svelte +115 -0
  127. package/src/registry/blocks/calendar/CalendarBlock22.svelte +136 -0
  128. package/src/registry/blocks/calendar/CalendarBlock23.svelte +112 -0
  129. package/src/registry/blocks/calendar/CalendarBlock24.svelte +116 -0
  130. package/src/registry/blocks/calendar/CalendarBlock25.svelte +144 -0
  131. package/src/registry/blocks/calendar/CalendarBlock26.svelte +163 -0
  132. package/src/registry/blocks/calendar/CalendarBlock27.svelte +112 -0
  133. package/src/registry/blocks/calendar/CalendarBlock28.svelte +109 -0
  134. package/src/registry/blocks/calendar/CalendarBlock29.svelte +126 -0
  135. package/src/registry/blocks/calendar/CalendarBlock30.svelte +122 -0
  136. package/src/registry/blocks/calendar/CalendarBlock31.svelte +161 -0
  137. package/src/registry/blocks/calendar/CalendarBlock32.svelte +154 -0
  138. package/src/registry/blocks/calendar/index.ts +32 -0
  139. package/src/registry/blocks/card/Card01.svelte +69 -0
  140. package/src/registry/blocks/card/Card02.svelte +50 -0
  141. package/src/registry/blocks/card/Card03.svelte +60 -0
  142. package/src/registry/blocks/card/Card04.svelte +89 -0
  143. package/src/registry/blocks/card/Card05.svelte +51 -0
  144. package/src/registry/blocks/card/Card06.svelte +77 -0
  145. package/src/registry/blocks/card/Card07.svelte +35 -0
  146. package/src/registry/blocks/card/Card08.svelte +36 -0
  147. package/src/registry/blocks/card/index.ts +8 -0
  148. package/src/registry/blocks/cart/Cart01.svelte +183 -0
  149. package/src/registry/blocks/cart/Cart02.svelte +103 -0
  150. package/src/registry/blocks/cart/Cart03.svelte +38 -0
  151. package/src/registry/blocks/cart/Cart04.svelte +174 -0
  152. package/src/registry/blocks/cart/index.ts +4 -0
  153. package/src/registry/blocks/checkout/Checkout01.svelte +237 -0
  154. package/src/registry/blocks/checkout/Checkout02.svelte +205 -0
  155. package/src/registry/blocks/checkout/Checkout03.svelte +189 -0
  156. package/src/registry/blocks/checkout/Checkout04.svelte +109 -0
  157. package/src/registry/blocks/checkout/index.ts +4 -0
  158. package/src/registry/blocks/comparison-section/ComparisonSection01.svelte +116 -0
  159. package/src/registry/blocks/comparison-section/ComparisonSection02.svelte +98 -0
  160. package/src/registry/blocks/comparison-section/ComparisonSection03.svelte +93 -0
  161. package/src/registry/blocks/comparison-section/ComparisonSection04.svelte +98 -0
  162. package/src/registry/blocks/comparison-section/ComparisonSection05.svelte +119 -0
  163. package/src/registry/blocks/comparison-section/ComparisonSection06.svelte +154 -0
  164. package/src/registry/blocks/comparison-section/index.ts +6 -0
  165. package/src/registry/blocks/contact-section/ContactSection01.svelte +64 -0
  166. package/src/registry/blocks/contact-section/ContactSection02.svelte +108 -0
  167. package/src/registry/blocks/contact-section/ContactSection03.svelte +64 -0
  168. package/src/registry/blocks/contact-section/ContactSection04.svelte +30 -0
  169. package/src/registry/blocks/contact-section/ContactSection05.svelte +71 -0
  170. package/src/registry/blocks/contact-section/ContactSection06.svelte +88 -0
  171. package/src/registry/blocks/contact-section/index.ts +6 -0
  172. package/src/registry/blocks/cta/CTA01.svelte +44 -0
  173. package/src/registry/blocks/cta/CTA02.svelte +48 -0
  174. package/src/registry/blocks/cta/CTA03.svelte +53 -0
  175. package/src/registry/blocks/cta/CTA04.svelte +60 -0
  176. package/src/registry/blocks/cta/CTA05.svelte +53 -0
  177. package/src/registry/blocks/cta/CTA06.svelte +44 -0
  178. package/src/registry/blocks/cta/CTA07.svelte +39 -0
  179. package/src/registry/blocks/cta/index.ts +7 -0
  180. package/src/registry/blocks/dashboard/ChartsBlock01.svelte +275 -0
  181. package/src/registry/blocks/dashboard/DashboardBlock01.svelte +207 -0
  182. package/src/registry/blocks/dashboard/DashboardBlock02.svelte +259 -0
  183. package/src/registry/blocks/dashboard/DashboardBlock03.svelte +315 -0
  184. package/src/registry/blocks/dashboard/DashboardBlock04.svelte +220 -0
  185. package/src/registry/blocks/dashboard/DashboardBlock05.svelte +158 -0
  186. package/src/registry/blocks/dashboard/DashboardBlock06.svelte +173 -0
  187. package/src/registry/blocks/dashboard/DashboardBlock07.svelte +103 -0
  188. package/src/registry/blocks/dashboard/index.ts +16 -0
  189. package/src/registry/blocks/description-list/DescriptionList01.svelte +75 -0
  190. package/src/registry/blocks/description-list/DescriptionList02.svelte +50 -0
  191. package/src/registry/blocks/description-list/DescriptionList03.svelte +74 -0
  192. package/src/registry/blocks/description-list/DescriptionList04.svelte +88 -0
  193. package/src/registry/blocks/description-list/index.ts +4 -0
  194. package/src/registry/blocks/empty-lp/EmptyLP01.svelte +46 -0
  195. package/src/registry/blocks/empty-lp/EmptyLP02.svelte +49 -0
  196. package/src/registry/blocks/empty-lp/EmptyLP03.svelte +61 -0
  197. package/src/registry/blocks/empty-lp/EmptyLP04.svelte +37 -0
  198. package/src/registry/blocks/empty-lp/index.ts +4 -0
  199. package/src/registry/blocks/empty-section/EmptySection01.svelte +47 -0
  200. package/src/registry/blocks/empty-section/EmptySection02.svelte +93 -0
  201. package/src/registry/blocks/empty-section/EmptySection03.svelte +101 -0
  202. package/src/registry/blocks/empty-section/EmptySection04.svelte +76 -0
  203. package/src/registry/blocks/empty-section/index.ts +4 -0
  204. package/src/registry/blocks/faq-section/FaqSection01.svelte +114 -0
  205. package/src/registry/blocks/faq-section/FaqSection02.svelte +137 -0
  206. package/src/registry/blocks/faq-section/FaqSection03.svelte +107 -0
  207. package/src/registry/blocks/faq-section/FaqSection04.svelte +74 -0
  208. package/src/registry/blocks/faq-section/FaqSection05.svelte +69 -0
  209. package/src/registry/blocks/faq-section/index.ts +11 -0
  210. package/src/registry/blocks/feature-section/FeatureSection01.svelte +94 -0
  211. package/src/registry/blocks/feature-section/FeatureSection02.svelte +61 -0
  212. package/src/registry/blocks/feature-section/FeatureSection03.svelte +85 -0
  213. package/src/registry/blocks/feature-section/FeatureSection04.svelte +67 -0
  214. package/src/registry/blocks/feature-section/FeatureSection05.svelte +61 -0
  215. package/src/registry/blocks/feature-section/FeatureSection06.svelte +58 -0
  216. package/src/registry/blocks/feature-section/FeatureSection07.svelte +79 -0
  217. package/src/registry/blocks/feature-section/FeatureSection08.svelte +92 -0
  218. package/src/registry/blocks/feature-section/FeatureSection09.svelte +58 -0
  219. package/src/registry/blocks/feature-section/FeatureSection10.svelte +87 -0
  220. package/src/registry/blocks/feature-section/FeatureSection11.svelte +118 -0
  221. package/src/registry/blocks/feature-section/FeatureSection12.svelte +76 -0
  222. package/src/registry/blocks/feature-section/FeatureSection13.svelte +88 -0
  223. package/src/registry/blocks/feature-section/FeatureSection14.svelte +119 -0
  224. package/src/registry/blocks/feature-section/FeatureSection15.svelte +122 -0
  225. package/src/registry/blocks/feature-section/FeatureSection16.svelte +113 -0
  226. package/src/registry/blocks/feature-section/FeatureSection17.svelte +93 -0
  227. package/src/registry/blocks/feature-section/FeatureSection18.svelte +97 -0
  228. package/src/registry/blocks/feature-section/FeatureSection19.svelte +74 -0
  229. package/src/registry/blocks/feature-section/FeatureSection20.svelte +69 -0
  230. package/src/registry/blocks/feature-section/index.ts +20 -0
  231. package/src/registry/blocks/footer/Footer01.svelte +62 -0
  232. package/src/registry/blocks/footer/Footer02.svelte +67 -0
  233. package/src/registry/blocks/footer/Footer03.svelte +87 -0
  234. package/src/registry/blocks/footer/Footer04.svelte +67 -0
  235. package/src/registry/blocks/footer/Footer05.svelte +20 -0
  236. package/src/registry/blocks/footer/Footer06.svelte +107 -0
  237. package/src/registry/blocks/footer/Footer07.svelte +88 -0
  238. package/src/registry/blocks/footer/Footer08.svelte +84 -0
  239. package/src/registry/blocks/footer/Footer09.svelte +65 -0
  240. package/src/registry/blocks/footer/index.ts +19 -0
  241. package/src/registry/blocks/forms/SettingsBlock.svelte +329 -0
  242. package/src/registry/blocks/forms/index.ts +1 -0
  243. package/src/registry/blocks/gallery-section/GallerySection01.svelte +43 -0
  244. package/src/registry/blocks/gallery-section/GallerySection02.svelte +45 -0
  245. package/src/registry/blocks/gallery-section/GallerySection03.svelte +43 -0
  246. package/src/registry/blocks/gallery-section/GallerySection04.svelte +49 -0
  247. package/src/registry/blocks/gallery-section/GallerySection05.svelte +45 -0
  248. package/src/registry/blocks/gallery-section/GallerySection06.svelte +49 -0
  249. package/src/registry/blocks/gallery-section/GallerySection07.svelte +48 -0
  250. package/src/registry/blocks/gallery-section/GallerySection08.svelte +43 -0
  251. package/src/registry/blocks/gallery-section/GallerySection09.svelte +55 -0
  252. package/src/registry/blocks/gallery-section/GallerySection10.svelte +43 -0
  253. package/src/registry/blocks/gallery-section/GallerySection11.svelte +75 -0
  254. package/src/registry/blocks/gallery-section/GallerySection12.svelte +76 -0
  255. package/src/registry/blocks/gallery-section/index.ts +12 -0
  256. package/src/registry/blocks/header-section/HeaderSection01.svelte +53 -0
  257. package/src/registry/blocks/header-section/HeaderSection02.svelte +53 -0
  258. package/src/registry/blocks/header-section/HeaderSection03.svelte +61 -0
  259. package/src/registry/blocks/header-section/HeaderSection04.svelte +63 -0
  260. package/src/registry/blocks/header-section/HeaderSection05.svelte +53 -0
  261. package/src/registry/blocks/header-section/HeaderSection06.svelte +70 -0
  262. package/src/registry/blocks/header-section/HeaderSection07.svelte +97 -0
  263. package/src/registry/blocks/header-section/HeaderSection08.svelte +61 -0
  264. package/src/registry/blocks/header-section/HeaderSection09.svelte +53 -0
  265. package/src/registry/blocks/header-section/HeaderSection10.svelte +63 -0
  266. package/src/registry/blocks/header-section/HeaderSection11.svelte +68 -0
  267. package/src/registry/blocks/header-section/HeaderSection12.svelte +60 -0
  268. package/src/registry/blocks/header-section/HeaderSection13.svelte +92 -0
  269. package/src/registry/blocks/header-section/HeaderSection14.svelte +77 -0
  270. package/src/registry/blocks/header-section/HeaderSection15.svelte +49 -0
  271. package/src/registry/blocks/header-section/HeaderSection16.svelte +74 -0
  272. package/src/registry/blocks/header-section/HeaderSection17.svelte +58 -0
  273. package/src/registry/blocks/header-section/HeaderSection18.svelte +66 -0
  274. package/src/registry/blocks/header-section/HeaderSection19.svelte +47 -0
  275. package/src/registry/blocks/header-section/HeaderSection20.svelte +53 -0
  276. package/src/registry/blocks/header-section/index.ts +20 -0
  277. package/src/registry/blocks/hero-section/HeroSection01.svelte +69 -0
  278. package/src/registry/blocks/hero-section/HeroSection02.svelte +47 -0
  279. package/src/registry/blocks/hero-section/HeroSection03.svelte +56 -0
  280. package/src/registry/blocks/hero-section/HeroSection04.svelte +69 -0
  281. package/src/registry/blocks/hero-section/HeroSection05.svelte +73 -0
  282. package/src/registry/blocks/hero-section/HeroSection06.svelte +78 -0
  283. package/src/registry/blocks/hero-section/HeroSection07.svelte +48 -0
  284. package/src/registry/blocks/hero-section/HeroSection08.svelte +73 -0
  285. package/src/registry/blocks/hero-section/HeroSection09.svelte +51 -0
  286. package/src/registry/blocks/hero-section/HeroSection10.svelte +47 -0
  287. package/src/registry/blocks/hero-section/HeroSection11.svelte +60 -0
  288. package/src/registry/blocks/hero-section/HeroSection12.svelte +74 -0
  289. package/src/registry/blocks/hero-section/HeroSection13.svelte +86 -0
  290. package/src/registry/blocks/hero-section/HeroSection14.svelte +116 -0
  291. package/src/registry/blocks/hero-section/HeroSection15.svelte +75 -0
  292. package/src/registry/blocks/hero-section/HeroSection16.svelte +92 -0
  293. package/src/registry/blocks/hero-section/HeroSection17.svelte +78 -0
  294. package/src/registry/blocks/hero-section/HeroSection18.svelte +82 -0
  295. package/src/registry/blocks/hero-section/HeroSection19.svelte +72 -0
  296. package/src/registry/blocks/hero-section/HeroSection20.svelte +79 -0
  297. package/src/registry/blocks/hero-section/HeroSection21.svelte +75 -0
  298. package/src/registry/blocks/hero-section/HeroSection22.svelte +103 -0
  299. package/src/registry/blocks/hero-section/index.ts +22 -0
  300. package/src/registry/blocks/logo-section/LogoSection01.svelte +54 -0
  301. package/src/registry/blocks/logo-section/LogoSection02.svelte +56 -0
  302. package/src/registry/blocks/logo-section/LogoSection03.svelte +58 -0
  303. package/src/registry/blocks/logo-section/LogoSection04.svelte +58 -0
  304. package/src/registry/blocks/logo-section/LogoSection05.svelte +43 -0
  305. package/src/registry/blocks/logo-section/LogoSection06.svelte +43 -0
  306. package/src/registry/blocks/logo-section/LogoSection07.svelte +56 -0
  307. package/src/registry/blocks/logo-section/index.ts +7 -0
  308. package/src/registry/blocks/lp-navbar/LPNavbar01.svelte +94 -0
  309. package/src/registry/blocks/lp-navbar/LPNavbar02.svelte +96 -0
  310. package/src/registry/blocks/lp-navbar/LPNavbar03.svelte +97 -0
  311. package/src/registry/blocks/lp-navbar/LPNavbar04.svelte +103 -0
  312. package/src/registry/blocks/lp-navbar/LPNavbar05.svelte +173 -0
  313. package/src/registry/blocks/lp-navbar/LPNavbar06.svelte +200 -0
  314. package/src/registry/blocks/lp-navbar/LPNavbar07.svelte +202 -0
  315. package/src/registry/blocks/lp-navbar/index.ts +7 -0
  316. package/src/registry/blocks/mail/MailBlock.svelte +321 -0
  317. package/src/registry/blocks/mail/index.ts +2 -0
  318. package/src/registry/blocks/music/MusicBlock.svelte +239 -0
  319. package/src/registry/blocks/music/index.ts +1 -0
  320. package/src/registry/blocks/navbar/Navbar01.svelte +234 -0
  321. package/src/registry/blocks/navbar/Navbar02.svelte +111 -0
  322. package/src/registry/blocks/navbar/Navbar03.svelte +88 -0
  323. package/src/registry/blocks/navbar/index.ts +3 -0
  324. package/src/registry/blocks/not-found/NotFound01.svelte +29 -0
  325. package/src/registry/blocks/not-found/NotFound02.svelte +28 -0
  326. package/src/registry/blocks/not-found/NotFound03.svelte +25 -0
  327. package/src/registry/blocks/not-found/index.ts +3 -0
  328. package/src/registry/blocks/order-history/OrderHistory01.svelte +208 -0
  329. package/src/registry/blocks/order-history/OrderHistory02.svelte +131 -0
  330. package/src/registry/blocks/order-history/OrderHistory03.svelte +133 -0
  331. package/src/registry/blocks/order-history/index.ts +3 -0
  332. package/src/registry/blocks/page-header/PageHeader01.svelte +39 -0
  333. package/src/registry/blocks/page-header/PageHeader02.svelte +58 -0
  334. package/src/registry/blocks/page-header/PageHeader03.svelte +64 -0
  335. package/src/registry/blocks/page-header/PageHeader04.svelte +49 -0
  336. package/src/registry/blocks/page-header/PageHeader05.svelte +49 -0
  337. package/src/registry/blocks/page-header/PageHeader06.svelte +58 -0
  338. package/src/registry/blocks/page-header/PageHeader07.svelte +64 -0
  339. package/src/registry/blocks/page-header/PageHeader08.svelte +68 -0
  340. package/src/registry/blocks/page-header/index.ts +8 -0
  341. package/src/registry/blocks/playground/PlaygroundBlock01.svelte +162 -0
  342. package/src/registry/blocks/playground/PlaygroundBlock02.svelte +156 -0
  343. package/src/registry/blocks/playground/index.ts +2 -0
  344. package/src/registry/blocks/pricing-section/PricingSection01.svelte +109 -0
  345. package/src/registry/blocks/pricing-section/PricingSection02.svelte +145 -0
  346. package/src/registry/blocks/pricing-section/PricingSection03.svelte +94 -0
  347. package/src/registry/blocks/pricing-section/PricingSection04.svelte +103 -0
  348. package/src/registry/blocks/pricing-section/PricingSection05.svelte +128 -0
  349. package/src/registry/blocks/pricing-section/index.ts +20 -0
  350. package/src/registry/blocks/product-card/ProductCard01.svelte +74 -0
  351. package/src/registry/blocks/product-card/ProductCard02.svelte +108 -0
  352. package/src/registry/blocks/product-card/ProductCard03.svelte +80 -0
  353. package/src/registry/blocks/product-card/ProductCard04.svelte +50 -0
  354. package/src/registry/blocks/product-card/ProductCard05.svelte +107 -0
  355. package/src/registry/blocks/product-card/index.ts +5 -0
  356. package/src/registry/blocks/product-detail/ProductDetail01.svelte +174 -0
  357. package/src/registry/blocks/product-detail/ProductDetail02.svelte +170 -0
  358. package/src/registry/blocks/product-detail/ProductDetail03.svelte +159 -0
  359. package/src/registry/blocks/product-detail/ProductDetail04.svelte +106 -0
  360. package/src/registry/blocks/product-detail/ProductDetail05.svelte +181 -0
  361. package/src/registry/blocks/product-detail/index.ts +5 -0
  362. package/src/registry/blocks/product-listing/ProductListing01.svelte +194 -0
  363. package/src/registry/blocks/product-listing/ProductListing02.svelte +163 -0
  364. package/src/registry/blocks/product-listing/ProductListing03.svelte +173 -0
  365. package/src/registry/blocks/product-listing/ProductListing04.svelte +179 -0
  366. package/src/registry/blocks/product-listing/ProductListing05.svelte +126 -0
  367. package/src/registry/blocks/product-listing/index.ts +5 -0
  368. package/src/registry/blocks/product-reviews/ProductReviews01.svelte +156 -0
  369. package/src/registry/blocks/product-reviews/ProductReviews02.svelte +139 -0
  370. package/src/registry/blocks/product-reviews/ProductReviews03.svelte +137 -0
  371. package/src/registry/blocks/product-reviews/ProductReviews04.svelte +129 -0
  372. package/src/registry/blocks/product-reviews/index.ts +4 -0
  373. package/src/registry/blocks/promo-section/PromoSection01.svelte +72 -0
  374. package/src/registry/blocks/promo-section/PromoSection02.svelte +61 -0
  375. package/src/registry/blocks/promo-section/PromoSection03.svelte +110 -0
  376. package/src/registry/blocks/promo-section/PromoSection04.svelte +103 -0
  377. package/src/registry/blocks/promo-section/index.ts +4 -0
  378. package/src/registry/blocks/rich-text/RichText01.svelte +30 -0
  379. package/src/registry/blocks/rich-text/RichText02.svelte +72 -0
  380. package/src/registry/blocks/rich-text/RichText03.svelte +52 -0
  381. package/src/registry/blocks/rich-text/RichText04.svelte +44 -0
  382. package/src/registry/blocks/rich-text/RichText05.svelte +56 -0
  383. package/src/registry/blocks/rich-text/index.ts +5 -0
  384. package/src/registry/blocks/section/Section01.svelte +38 -0
  385. package/src/registry/blocks/section/Section02.svelte +90 -0
  386. package/src/registry/blocks/section/Section03.svelte +95 -0
  387. package/src/registry/blocks/section/Section04.svelte +117 -0
  388. package/src/registry/blocks/section/index.ts +4 -0
  389. package/src/registry/blocks/section-footer/SectionFooter01.svelte +39 -0
  390. package/src/registry/blocks/section-footer/SectionFooter02.svelte +33 -0
  391. package/src/registry/blocks/section-footer/SectionFooter03.svelte +33 -0
  392. package/src/registry/blocks/section-footer/SectionFooter04.svelte +34 -0
  393. package/src/registry/blocks/section-footer/SectionFooter05.svelte +69 -0
  394. package/src/registry/blocks/section-footer/index.ts +5 -0
  395. package/src/registry/blocks/section-header/SectionHeader01.svelte +39 -0
  396. package/src/registry/blocks/section-header/SectionHeader02.svelte +58 -0
  397. package/src/registry/blocks/section-header/SectionHeader03.svelte +88 -0
  398. package/src/registry/blocks/section-header/SectionHeader04.svelte +45 -0
  399. package/src/registry/blocks/section-header/SectionHeader05.svelte +64 -0
  400. package/src/registry/blocks/section-header/index.ts +5 -0
  401. package/src/registry/blocks/settings/Settings01.svelte +202 -0
  402. package/src/registry/blocks/settings/Settings02.svelte +201 -0
  403. package/src/registry/blocks/settings/Settings03.svelte +156 -0
  404. package/src/registry/blocks/settings/Settings04.svelte +175 -0
  405. package/src/registry/blocks/settings/Settings05.svelte +248 -0
  406. package/src/registry/blocks/settings/Settings06.svelte +120 -0
  407. package/src/registry/blocks/settings/Settings07.svelte +136 -0
  408. package/src/registry/blocks/settings/index.ts +7 -0
  409. package/src/registry/blocks/sidebar/SidebarLayout01.svelte +108 -0
  410. package/src/registry/blocks/sidebar/SidebarLayout02.svelte +75 -0
  411. package/src/registry/blocks/sidebar/SidebarLayout03.svelte +108 -0
  412. package/src/registry/blocks/sidebar/SidebarLayout04.svelte +111 -0
  413. package/src/registry/blocks/sidebar/SidebarLayout05.svelte +103 -0
  414. package/src/registry/blocks/sidebar/SidebarLayout06.svelte +122 -0
  415. package/src/registry/blocks/sidebar/SidebarLayout07.svelte +183 -0
  416. package/src/registry/blocks/sidebar/SidebarLayout08.svelte +162 -0
  417. package/src/registry/blocks/sidebar/SidebarLayout09.svelte +167 -0
  418. package/src/registry/blocks/sidebar/SidebarLayout10.svelte +159 -0
  419. package/src/registry/blocks/sidebar/SidebarLayout11.svelte +135 -0
  420. package/src/registry/blocks/sidebar/SidebarLayout12.svelte +159 -0
  421. package/src/registry/blocks/sidebar/SidebarLayout13.svelte +103 -0
  422. package/src/registry/blocks/sidebar/SidebarLayout14.svelte +87 -0
  423. package/src/registry/blocks/sidebar/SidebarLayout15.svelte +228 -0
  424. package/src/registry/blocks/sidebar/index.ts +15 -0
  425. package/src/registry/blocks/sign-in/SignIn01.svelte +140 -0
  426. package/src/registry/blocks/sign-in/SignIn02.svelte +155 -0
  427. package/src/registry/blocks/sign-in/SignIn03.svelte +214 -0
  428. package/src/registry/blocks/sign-in/SignIn04.svelte +163 -0
  429. package/src/registry/blocks/sign-in/SignIn05.svelte +209 -0
  430. package/src/registry/blocks/sign-in/SignIn06.svelte +233 -0
  431. package/src/registry/blocks/sign-in/SignIn07.svelte +268 -0
  432. package/src/registry/blocks/sign-in/SignIn08.svelte +125 -0
  433. package/src/registry/blocks/sign-in/SignIn09.svelte +93 -0
  434. package/src/registry/blocks/sign-in/SignIn10.svelte +74 -0
  435. package/src/registry/blocks/sign-in/index.ts +10 -0
  436. package/src/registry/blocks/sign-up/SignUp01.svelte +124 -0
  437. package/src/registry/blocks/sign-up/SignUp02.svelte +110 -0
  438. package/src/registry/blocks/sign-up/SignUp03.svelte +182 -0
  439. package/src/registry/blocks/sign-up/SignUp04.svelte +126 -0
  440. package/src/registry/blocks/sign-up/SignUp05.svelte +182 -0
  441. package/src/registry/blocks/sign-up/SignUp06.svelte +221 -0
  442. package/src/registry/blocks/sign-up/SignUp07.svelte +98 -0
  443. package/src/registry/blocks/sign-up/index.ts +7 -0
  444. package/src/registry/blocks/stats-section/StatsSection01.svelte +66 -0
  445. package/src/registry/blocks/stats-section/StatsSection02.svelte +60 -0
  446. package/src/registry/blocks/stats-section/StatsSection03.svelte +66 -0
  447. package/src/registry/blocks/stats-section/StatsSection04.svelte +66 -0
  448. package/src/registry/blocks/stats-section/StatsSection05.svelte +60 -0
  449. package/src/registry/blocks/stats-section/StatsSection06.svelte +48 -0
  450. package/src/registry/blocks/stats-section/StatsSection07.svelte +66 -0
  451. package/src/registry/blocks/stats-section/index.ts +7 -0
  452. package/src/registry/blocks/store-navbar/StoreNavbar01.svelte +101 -0
  453. package/src/registry/blocks/store-navbar/StoreNavbar02.svelte +65 -0
  454. package/src/registry/blocks/store-navbar/StoreNavbar03.svelte +83 -0
  455. package/src/registry/blocks/store-navbar/StoreNavbar04.svelte +110 -0
  456. package/src/registry/blocks/store-navbar/StoreNavbar05.svelte +80 -0
  457. package/src/registry/blocks/store-navbar/index.ts +5 -0
  458. package/src/registry/blocks/table-header/TableHeader01.svelte +96 -0
  459. package/src/registry/blocks/table-header/TableHeader02.svelte +86 -0
  460. package/src/registry/blocks/table-header/TableHeader03.svelte +99 -0
  461. package/src/registry/blocks/table-header/TableHeader04.svelte +107 -0
  462. package/src/registry/blocks/table-header/index.ts +4 -0
  463. package/src/registry/blocks/tasks/TasksBlock.svelte +286 -0
  464. package/src/registry/blocks/tasks/index.ts +1 -0
  465. package/src/registry/blocks/team-section/TeamSection01.svelte +80 -0
  466. package/src/registry/blocks/team-section/TeamSection02.svelte +102 -0
  467. package/src/registry/blocks/team-section/TeamSection03.svelte +76 -0
  468. package/src/registry/blocks/team-section/TeamSection04.svelte +106 -0
  469. package/src/registry/blocks/team-section/index.ts +13 -0
  470. package/src/registry/blocks/testimonials/Testimonial01.svelte +74 -0
  471. package/src/registry/blocks/testimonials/Testimonial02.svelte +74 -0
  472. package/src/registry/blocks/testimonials/Testimonial03.svelte +79 -0
  473. package/src/registry/blocks/testimonials/Testimonial04.svelte +113 -0
  474. package/src/registry/blocks/testimonials/Testimonial05.svelte +74 -0
  475. package/src/registry/blocks/testimonials/Testimonial06.svelte +114 -0
  476. package/src/registry/blocks/testimonials/Testimonial07.svelte +131 -0
  477. package/src/registry/blocks/testimonials/Testimonials01.svelte +60 -0
  478. package/src/registry/blocks/testimonials/Testimonials02.svelte +61 -0
  479. package/src/registry/blocks/testimonials/Testimonials03.svelte +79 -0
  480. package/src/registry/blocks/testimonials/Testimonials04.svelte +74 -0
  481. package/src/registry/blocks/testimonials/Testimonials05.svelte +68 -0
  482. package/src/registry/blocks/testimonials/Testimonials06.svelte +82 -0
  483. package/src/registry/blocks/testimonials/Testimonials07.svelte +98 -0
  484. package/src/registry/blocks/testimonials/index.ts +16 -0
  485. package/src/registry/templates/cn.ts +42 -0
  486. package/src/index.ts +0 -2
  487. package/tsconfig.json +0 -20
  488. /package/src/{generate-component.cjs → commands/generate-component.cjs} +0 -0
  489. /package/src/{generate-route.cjs → commands/generate-route.cjs} +0 -0
  490. /package/src/{generate-service.cjs → commands/generate-service.cjs} +0 -0
  491. /package/src/{manage-auth-users.cjs → commands/manage-auth-users.cjs} +0 -0
  492. /package/src/{setup.cjs → commands/setup.cjs} +0 -0
  493. /package/src/{validate-setup.cjs → commands/validate.cjs} +0 -0
@@ -0,0 +1,75 @@
1
+ <!--
2
+ DescriptionList01.svelte
3
+ Card with title + description + Edit button. Rows of label/value (read-only).
4
+ Last row can show downloadable file items.
5
+ Desktop: label left / value right. Mobile: stacked.
6
+ -->
7
+ <script lang="ts">
8
+ import { cn } from '$lib/utils/cn';
9
+ import { Button } from '$lib/components/ui';
10
+
11
+ interface DLFile { name: string; size?: string; }
12
+ interface DLRow { label: string; value?: string; files?: DLFile[]; }
13
+
14
+ let {
15
+ class: className = '',
16
+ title = 'Application information',
17
+ description = 'Personal details and general information',
18
+ rows = [
19
+ { label: 'Full name', value: 'Alex Thompson' },
20
+ { label: 'Address', value: '123 Main Street, City, Country' },
21
+ { label: 'Email address', value: 'alex@example.com' },
22
+ { label: 'Phone number', value: '+1 234 567 890' },
23
+ { label: 'About', value: 'A motivated professional with 5+ years of experience in software development.' },
24
+ { label: 'Documents', files: [{ name: 'CV.pdf', size: '2,51mb' }, { name: 'Portfolio.pdf', size: '11,24mb' }] }
25
+ ] as DLRow[],
26
+ onedit = () => {},
27
+ ondownload = (_: string) => {}
28
+ }: {
29
+ class?: string;
30
+ title?: string;
31
+ description?: string;
32
+ rows?: DLRow[];
33
+ onedit?: () => void;
34
+ ondownload?: (filename: string) => void;
35
+ } = $props();
36
+ </script>
37
+
38
+ <div class={cn('rounded-lg border bg-background', className)}>
39
+ <!-- Header -->
40
+ <div class="flex items-start justify-between p-4 sm:p-6">
41
+ <div>
42
+ <h2 class="font-semibold">{title}</h2>
43
+ {#if description}<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>{/if}
44
+ </div>
45
+ <Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
46
+ </div>
47
+
48
+ <!-- Rows -->
49
+ <div class="border-t">
50
+ {#each rows as row}
51
+ <div class="flex flex-col gap-1 border-b px-4 py-3 last:border-0 sm:flex-row sm:gap-4 sm:px-6">
52
+ <dt class="w-40 shrink-0 text-sm font-medium text-muted-foreground">{row.label}</dt>
53
+ <dd class="flex-1 text-sm">
54
+ {#if row.files}
55
+ <div class="flex flex-col gap-2">
56
+ {#each row.files as file}
57
+ <div class="flex items-center gap-2 rounded-md border px-3 py-2">
58
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="shrink-0 text-muted-foreground"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>
59
+ <span class="flex-1 font-medium">{file.name}</span>
60
+ {#if file.size}<span class="text-xs text-muted-foreground">{file.size}</span>{/if}
61
+ <Button variant="ghost" size="sm" onclick={() => ondownload(file.name)} class="hidden sm:inline-flex">Download</Button>
62
+ <Button variant="ghost" size="icon" class="h-7 w-7 sm:hidden" onclick={() => ondownload(file.name)}>
63
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
64
+ </Button>
65
+ </div>
66
+ {/each}
67
+ </div>
68
+ {:else}
69
+ {row.value ?? ''}
70
+ {/if}
71
+ </dd>
72
+ </div>
73
+ {/each}
74
+ </div>
75
+ </div>
@@ -0,0 +1,50 @@
1
+ <!--
2
+ DescriptionList02.svelte
3
+ Card with title + description. Each row has label + value + individual "Edit" button.
4
+ Desktop: label left / value center / edit right. Mobile: stacked with Edit below.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Button } from '$lib/components/ui';
9
+
10
+ interface DLRow { label: string; value: string; key?: string; }
11
+
12
+ let {
13
+ class: className = '',
14
+ title = 'Profile Information',
15
+ description = 'Personal details and general information.',
16
+ rows = [
17
+ { label: 'Full name', value: 'Alex Thompson', key: 'fullName' },
18
+ { label: 'Address', value: '123 Main Street, City, Country', key: 'address' },
19
+ { label: 'Email address', value: 'alex@example.com', key: 'email' },
20
+ { label: 'Phone number', value: '+1 234 567 890', key: 'phone' },
21
+ { label: 'About', value: 'A motivated professional with 5+ years of experience in software development.', key: 'about' }
22
+ ] as DLRow[],
23
+ onedit = (_key: string) => {}
24
+ }: {
25
+ class?: string;
26
+ title?: string;
27
+ description?: string;
28
+ rows?: DLRow[];
29
+ onedit?: (key: string) => void;
30
+ } = $props();
31
+ </script>
32
+
33
+ <div class={cn('rounded-lg border bg-background', className)}>
34
+ <!-- Header -->
35
+ <div class="p-4 sm:p-6">
36
+ <h2 class="font-semibold">{title}</h2>
37
+ {#if description}<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>{/if}
38
+ </div>
39
+
40
+ <!-- Rows -->
41
+ <div class="border-t">
42
+ {#each rows as row}
43
+ <div class="flex flex-col gap-1 border-b px-4 py-3 last:border-0 sm:flex-row sm:items-center sm:gap-4 sm:px-6">
44
+ <dt class="w-40 shrink-0 text-sm font-medium">{row.label}</dt>
45
+ <dd class="flex-1 text-sm text-muted-foreground">{row.value}</dd>
46
+ <Button variant="outline" size="sm" onclick={() => onedit(row.key ?? row.label)} class="self-start sm:self-auto">Edit</Button>
47
+ </div>
48
+ {/each}
49
+ </div>
50
+ </div>
@@ -0,0 +1,74 @@
1
+ <!--
2
+ DescriptionList03.svelte
3
+ Editable form-style description list: title + description + "Save" button.
4
+ Each row: label left + input/textarea right (editable).
5
+ Desktop: 2-column. Mobile: stacked.
6
+ -->
7
+ <script lang="ts">
8
+ import { cn } from '$lib/utils/cn';
9
+ import { Button } from '$lib/components/ui';
10
+
11
+ interface DLField {
12
+ label: string;
13
+ key: string;
14
+ value?: string;
15
+ type?: 'text' | 'textarea' | 'email' | 'tel';
16
+ }
17
+
18
+ let {
19
+ class: className = '',
20
+ title = 'Profile Information',
21
+ description = 'Personal details and general information.',
22
+ fields = [
23
+ { label: 'Full name', key: 'fullName', value: 'Alex Thompson', type: 'text' },
24
+ { label: 'Address', key: 'address', value: '123 Main Street, City, Country', type: 'text' },
25
+ { label: 'Email address', key: 'email', value: 'alex@example.com', type: 'email' },
26
+ { label: 'Phone number', key: 'phone', value: '+1 234 567 890', type: 'tel' },
27
+ { label: 'About', key: 'about', value: 'A motivated professional with 5+ years of experience in software development.', type: 'textarea' }
28
+ ] as DLField[],
29
+ onsave = (_values: Record<string, string>) => {}
30
+ }: {
31
+ class?: string;
32
+ title?: string;
33
+ description?: string;
34
+ fields?: DLField[];
35
+ onsave?: (values: Record<string, string>) => void;
36
+ } = $props();
37
+
38
+ let values = $state(Object.fromEntries(fields.map(f => [f.key, f.value ?? ''])));
39
+ </script>
40
+
41
+ <div class={cn('rounded-lg border bg-background', className)}>
42
+ <!-- Header -->
43
+ <div class="flex items-start justify-between p-4 sm:p-6">
44
+ <div>
45
+ <h2 class="font-semibold">{title}</h2>
46
+ {#if description}<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>{/if}
47
+ </div>
48
+ <Button size="sm" onclick={() => onsave(values)}>Save</Button>
49
+ </div>
50
+
51
+ <!-- Editable rows -->
52
+ <div class="border-t">
53
+ {#each fields as field}
54
+ <div class="flex flex-col gap-1.5 border-b px-4 py-3 last:border-0 sm:flex-row sm:items-start sm:gap-4 sm:px-6">
55
+ <label for={field.key} class="w-40 shrink-0 pt-1.5 text-sm font-medium">{field.label}</label>
56
+ {#if field.type === 'textarea'}
57
+ <textarea
58
+ id={field.key}
59
+ rows={4}
60
+ bind:value={values[field.key]}
61
+ class="flex-1 resize-none rounded-md border bg-background px-3 py-1.5 text-sm outline-none focus:ring-2 focus:ring-ring"
62
+ ></textarea>
63
+ {:else}
64
+ <input
65
+ id={field.key}
66
+ type={field.type ?? 'text'}
67
+ bind:value={values[field.key]}
68
+ class="flex-1 rounded-md border bg-background px-3 py-1.5 text-sm outline-none focus:ring-2 focus:ring-ring"
69
+ />
70
+ {/if}
71
+ </div>
72
+ {/each}
73
+ </div>
74
+ </div>
@@ -0,0 +1,88 @@
1
+ <!--
2
+ DescriptionList04.svelte
3
+ Application information card: title + description + Edit button.
4
+ Two-column layout for text rows. Full-width About row. Documents section with 2-col file cards.
5
+ Desktop: 2-col grid layout. Mobile: stacked.
6
+ -->
7
+ <script lang="ts">
8
+ import { cn } from '$lib/utils/cn';
9
+ import { Button } from '$lib/components/ui';
10
+
11
+ interface DLFile { name: string; size?: string; }
12
+ interface DLRow { label: string; value: string; }
13
+
14
+ let {
15
+ class: className = '',
16
+ title = 'Application information',
17
+ description = 'Personal details and general information.',
18
+ rows = [
19
+ { label: 'Full name', value: 'Alex Thompson' },
20
+ { label: 'Email address', value: 'alex@example.com' },
21
+ { label: 'Address', value: '123 Main Street, City, Country' },
22
+ { label: 'Phone number', value: '+1 234 567 890' }
23
+ ] as DLRow[],
24
+ about = 'A seasoned software engineer with 5+ years of experience specializing in full-stack web development.',
25
+ files = [
26
+ { name: 'Resume.pdf' },
27
+ { name: 'Portfolio.pdf' }
28
+ ] as DLFile[],
29
+ onedit = () => {},
30
+ ondownload = (_: string) => {}
31
+ }: {
32
+ class?: string;
33
+ title?: string;
34
+ description?: string;
35
+ rows?: DLRow[];
36
+ about?: string;
37
+ files?: DLFile[];
38
+ onedit?: () => void;
39
+ ondownload?: (filename: string) => void;
40
+ } = $props();
41
+ </script>
42
+
43
+ <div class={cn('rounded-lg border bg-background', className)}>
44
+ <!-- Header -->
45
+ <div class="flex items-start justify-between p-4 sm:p-6">
46
+ <div>
47
+ <h2 class="font-semibold">{title}</h2>
48
+ {#if description}<p class="mt-0.5 text-sm text-muted-foreground">{description}</p>{/if}
49
+ </div>
50
+ <Button variant="outline" size="sm" onclick={onedit}>Edit</Button>
51
+ </div>
52
+
53
+ <!-- 2-column rows -->
54
+ <div class="grid grid-cols-1 gap-0 border-t sm:grid-cols-2">
55
+ {#each rows as row, i}
56
+ <div class={cn('flex flex-col gap-0.5 border-b px-4 py-3 sm:px-6', i % 2 === 1 && 'sm:border-l')}>
57
+ <dt class="text-xs font-medium text-muted-foreground">{row.label}</dt>
58
+ <dd class="text-sm">{row.value}</dd>
59
+ </div>
60
+ {/each}
61
+ </div>
62
+
63
+ <!-- About (full-width) -->
64
+ {#if about}
65
+ <div class="border-b px-4 py-3 sm:px-6">
66
+ <dt class="text-xs font-medium text-muted-foreground">About</dt>
67
+ <dd class="mt-1 text-sm leading-relaxed">{about}</dd>
68
+ </div>
69
+ {/if}
70
+
71
+ <!-- Documents (2-column) -->
72
+ {#if files.length}
73
+ <div class="px-4 py-3 sm:px-6">
74
+ <p class="mb-2 text-xs font-medium text-muted-foreground">Documents</p>
75
+ <div class="grid grid-cols-1 gap-2 sm:grid-cols-2">
76
+ {#each files as file}
77
+ <div class="flex items-center gap-2 rounded-md border px-3 py-2">
78
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="shrink-0 text-muted-foreground"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>
79
+ <span class="flex-1 text-sm font-medium truncate">{file.name}</span>
80
+ <Button variant="ghost" size="icon" class="h-7 w-7 shrink-0" onclick={() => ondownload(file.name)}>
81
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
82
+ </Button>
83
+ </div>
84
+ {/each}
85
+ </div>
86
+ </div>
87
+ {/if}
88
+ </div>
@@ -0,0 +1,4 @@
1
+ export { default as DescriptionList01 } from './DescriptionList01.svelte';
2
+ export { default as DescriptionList02 } from './DescriptionList02.svelte';
3
+ export { default as DescriptionList03 } from './DescriptionList03.svelte';
4
+ export { default as DescriptionList04 } from './DescriptionList04.svelte';
@@ -0,0 +1,46 @@
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
+ title?: string;
8
+ description?: string;
9
+ primaryLabel?: string;
10
+ secondaryLabel?: string;
11
+ onPrimary?: () => void;
12
+ onSecondary?: () => void;
13
+ }
14
+
15
+ const {
16
+ class: className,
17
+ title = 'No data yet',
18
+ description = 'Start creating your first item to see it appear here.',
19
+ primaryLabel = 'Create now',
20
+ secondaryLabel = 'Learn more',
21
+ onPrimary,
22
+ onSecondary
23
+ }: Props = $props();
24
+ </script>
25
+
26
+ <section class={cn('w-full bg-background py-24 px-4 text-center', className)}>
27
+ <div class="mx-auto flex flex-col items-center gap-6">
28
+ <div class="h-16 w-16 rounded-full bg-muted flex items-center justify-center text-muted-foreground">
29
+ <svg class="h-8 w-8" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
30
+ <path
31
+ d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"
32
+ />
33
+ </svg>
34
+ </div>
35
+
36
+ <div>
37
+ <h2 class="text-2xl font-bold">{title}</h2>
38
+ <p class="mt-2 text-muted-foreground max-w-sm mx-auto">{description}</p>
39
+ </div>
40
+
41
+ <div class="flex gap-3">
42
+ <Button onclick={onPrimary}>{primaryLabel}</Button>
43
+ <Button variant="outline" onclick={onSecondary}>{secondaryLabel}</Button>
44
+ </div>
45
+ </div>
46
+ </section>
@@ -0,0 +1,49 @@
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
+ title?: string;
8
+ description?: string;
9
+ placeholder?: string;
10
+ ctaLabel?: string;
11
+ onSubmit?: (email: string) => void;
12
+ }
13
+
14
+ let email = $state('');
15
+
16
+ const {
17
+ class: className,
18
+ title = 'Get started today',
19
+ description = 'Join thousands of users and start your journey with us.',
20
+ placeholder = 'Enter your email',
21
+ ctaLabel = 'Get started',
22
+ onSubmit
23
+ }: Props = $props();
24
+
25
+ function handleSubmit() {
26
+ if (onSubmit && email) {
27
+ onSubmit(email);
28
+ email = '';
29
+ }
30
+ }
31
+ </script>
32
+
33
+ <section class={cn('w-full bg-foreground text-background py-24 px-4 text-center', className)}>
34
+ <div class="mx-auto max-w-lg">
35
+ <h2 class="text-3xl font-bold">{title}</h2>
36
+ <p class="mt-4 text-background/80">{description}</p>
37
+
38
+ <div class="mt-8 flex gap-2">
39
+ <input
40
+ type="email"
41
+ placeholder={placeholder}
42
+ bind:value={email}
43
+ class="flex-1 rounded-lg bg-background/10 px-4 py-2 text-background placeholder:text-background/40 focus:outline-none focus:ring-2 focus:ring-background/30"
44
+ onkeydown={(e) => e.key === 'Enter' && handleSubmit()}
45
+ />
46
+ <Button onclick={handleSubmit} variant="secondary">{ctaLabel}</Button>
47
+ </div>
48
+ </div>
49
+ </section>
@@ -0,0 +1,61 @@
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
+ title?: string;
8
+ description?: string;
9
+ onNotify?: (email: string) => void;
10
+ }
11
+
12
+ let email = $state('');
13
+
14
+ const {
15
+ class: className,
16
+ title = 'Something amazing is coming',
17
+ description = 'Be the first to know when we launch.',
18
+ onNotify
19
+ }: Props = $props();
20
+
21
+ function handleNotify() {
22
+ if (onNotify && email) {
23
+ onNotify(email);
24
+ email = '';
25
+ }
26
+ }
27
+ </script>
28
+
29
+ <section class={cn('w-full bg-background py-24 px-4 text-center', className)}>
30
+ <div class="mx-auto max-w-lg">
31
+ <p class="text-sm font-semibold text-muted-foreground uppercase tracking-wide">Coming soon</p>
32
+ <h2 class="mt-4 text-4xl font-bold">{title}</h2>
33
+ <p class="mt-4 text-muted-foreground">{description}</p>
34
+
35
+ <div class="mt-12 flex justify-center gap-8">
36
+ <div class="flex flex-col items-center">
37
+ <p class="text-4xl font-bold">12</p>
38
+ <p class="text-sm text-muted-foreground mt-2">Days</p>
39
+ </div>
40
+ <div class="flex flex-col items-center">
41
+ <p class="text-4xl font-bold">04</p>
42
+ <p class="text-sm text-muted-foreground mt-2">Hours</p>
43
+ </div>
44
+ <div class="flex flex-col items-center">
45
+ <p class="text-4xl font-bold">32</p>
46
+ <p class="text-sm text-muted-foreground mt-2">Minutes</p>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="mt-12 flex gap-2">
51
+ <input
52
+ type="email"
53
+ placeholder="Enter your email"
54
+ bind:value={email}
55
+ class="flex-1 rounded-lg border border-input bg-background px-4 py-2 focus:outline-none focus:ring-2 focus:ring-ring"
56
+ onkeydown={(e) => e.key === 'Enter' && handleNotify()}
57
+ />
58
+ <Button onclick={handleNotify}>Notify me</Button>
59
+ </div>
60
+ </div>
61
+ </section>
@@ -0,0 +1,37 @@
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
+ title?: string;
8
+ description?: string;
9
+ onClear?: () => void;
10
+ }
11
+
12
+ const {
13
+ class: className,
14
+ title = 'No results found',
15
+ description = 'Try adjusting your search or filters to find what you are looking for.',
16
+ onClear
17
+ }: Props = $props();
18
+ </script>
19
+
20
+ <section class={cn('w-full bg-background py-24 px-4 text-center', className)}>
21
+ <div class="mx-auto flex flex-col items-center gap-6">
22
+ <div class="h-16 w-16 rounded-full bg-muted flex items-center justify-center text-muted-foreground">
23
+ <svg class="h-8 w-8" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
24
+ <circle cx="11" cy="11" r="8" />
25
+ <line x1="21" y1="21" x2="16.65" y2="16.65" />
26
+ <line x1="8" y1="11" x2="14" y2="11" />
27
+ </svg>
28
+ </div>
29
+
30
+ <div>
31
+ <h2 class="text-2xl font-bold">{title}</h2>
32
+ <p class="mt-2 text-muted-foreground max-w-sm mx-auto">{description}</p>
33
+ </div>
34
+
35
+ <Button variant="outline" onclick={onClear}>Clear filters</Button>
36
+ </div>
37
+ </section>
@@ -0,0 +1,4 @@
1
+ export { default as EmptyLP01 } from './EmptyLP01.svelte';
2
+ export { default as EmptyLP02 } from './EmptyLP02.svelte';
3
+ export { default as EmptyLP03 } from './EmptyLP03.svelte';
4
+ export { default as EmptyLP04 } from './EmptyLP04.svelte';
@@ -0,0 +1,47 @@
1
+ <!--
2
+ EmptySection01.svelte
3
+ Empty state: centered icon + title + description + Create new / Learn more buttons.
4
+ Flat and card variants.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+ import { Button } from '$lib/components/ui';
9
+
10
+ let {
11
+ class: className = '',
12
+ variant = 'flat' as 'flat' | 'card',
13
+ title = 'No databases added',
14
+ description = 'Read and write directly to databases and stores from your projects.',
15
+ createLabel = 'Create new',
16
+ learnLabel = 'Learn more',
17
+ oncreate = () => {},
18
+ onlearn = () => {}
19
+ }: {
20
+ class?: string;
21
+ variant?: 'flat' | 'card';
22
+ title?: string;
23
+ description?: string;
24
+ createLabel?: string;
25
+ learnLabel?: string;
26
+ oncreate?: () => void;
27
+ onlearn?: () => void;
28
+ } = $props();
29
+ </script>
30
+
31
+ <div
32
+ class={cn(
33
+ 'flex flex-col items-center justify-center py-12 text-center',
34
+ variant === 'card' && 'rounded-lg border bg-background px-4',
35
+ className
36
+ )}
37
+ >
38
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="mb-3 text-muted-foreground"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg>
39
+ <p class="font-semibold">{title}</p>
40
+ {#if description}
41
+ <p class="mt-1 max-w-xs text-sm text-muted-foreground">{description}</p>
42
+ {/if}
43
+ <div class="mt-4 flex w-full max-w-xs flex-col gap-2 sm:flex-row sm:justify-center">
44
+ <Button size="sm" onclick={oncreate} class="sm:flex-1">{createLabel}</Button>
45
+ <Button variant="outline" size="sm" onclick={onlearn} class="sm:flex-1">{learnLabel}</Button>
46
+ </div>
47
+ </div>
@@ -0,0 +1,93 @@
1
+ <!--
2
+ EmptySection02.svelte
3
+ Empty state with action grid: title + description + 2x3 grid of action items
4
+ (icon + label + description + arrow button).
5
+ Desktop: 3-col grid. Mobile: single-col list. Flat and card variants.
6
+ -->
7
+ <script lang="ts">
8
+ import { cn } from '$lib/utils/cn';
9
+
10
+ interface ActionItem {
11
+ icon?: string;
12
+ label: string;
13
+ description?: string;
14
+ href?: string;
15
+ onclick?: () => void;
16
+ }
17
+
18
+ let {
19
+ class: className = '',
20
+ variant = 'flat' as 'flat' | 'card',
21
+ title = 'Products',
22
+ description = 'Create your first project by selecting a template or starting from scratch.',
23
+ actions = [
24
+ { label: 'Create a list', description: 'Organize tasks into simple lists.' },
25
+ { label: 'Create a gallery', description: 'Showcase items visually and neatly.' },
26
+ { label: 'Create a calendar', description: 'Plan events with clear schedules.' },
27
+ { label: 'Create a board', description: 'Manage projects with visual boards.' },
28
+ { label: 'Create a team', description: 'Collaborate effectively with your team.' },
29
+ { label: 'Create a timeline', description: 'Track progress with chronological views.' }
30
+ ] as ActionItem[]
31
+ }: {
32
+ class?: string;
33
+ variant?: 'flat' | 'card';
34
+ title?: string;
35
+ description?: string;
36
+ actions?: ActionItem[];
37
+ } = $props();
38
+
39
+ const iconPaths: Record<string, string> = {
40
+ list: 'M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01',
41
+ gallery: 'M4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6zM4 14a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4z',
42
+ calendar: 'M3 4h18v18H3V4zM16 2v4M8 2v4M3 10h18',
43
+ board: 'M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z',
44
+ team: 'M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75',
45
+ timeline: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z'
46
+ };
47
+
48
+ function getIconPath(label: string): string {
49
+ const key = label.toLowerCase();
50
+ if (key.includes('list')) return iconPaths.list;
51
+ if (key.includes('gallery')) return iconPaths.gallery;
52
+ if (key.includes('calendar')) return iconPaths.calendar;
53
+ if (key.includes('board')) return iconPaths.board;
54
+ if (key.includes('team')) return iconPaths.team;
55
+ if (key.includes('timeline')) return iconPaths.timeline;
56
+ return 'M12 5v14M5 12h14';
57
+ }
58
+ </script>
59
+
60
+ <div
61
+ class={cn(
62
+ variant === 'card' && 'rounded-lg border bg-background p-4 sm:p-6',
63
+ className
64
+ )}
65
+ >
66
+ <h2 class="font-semibold">{title}</h2>
67
+ {#if description}
68
+ <p class="mt-0.5 text-sm text-muted-foreground">{description}</p>
69
+ {/if}
70
+
71
+ <div class="mt-4 grid grid-cols-1 gap-2 sm:grid-cols-3">
72
+ {#each actions as action}
73
+ <button
74
+ type="button"
75
+ onclick={action.onclick}
76
+ class="flex items-center gap-3 rounded-lg border bg-background px-3 py-2.5 text-left transition-colors hover:bg-muted/50"
77
+ >
78
+ <div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-md border bg-muted">
79
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
80
+ <path d={getIconPath(action.label)} />
81
+ </svg>
82
+ </div>
83
+ <div class="flex-1 min-w-0">
84
+ <p class="text-sm font-medium">{action.label}</p>
85
+ {#if action.description}
86
+ <p class="text-xs text-muted-foreground truncate">{action.description}</p>
87
+ {/if}
88
+ </div>
89
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="shrink-0 text-muted-foreground"><path d="m9 18 6-6-6-6"/></svg>
90
+ </button>
91
+ {/each}
92
+ </div>
93
+ </div>