@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,234 @@
1
+ <!--
2
+ Navbar01.svelte
3
+ Full app navbar: logo left, nav links with badge + dropdown centre-left,
4
+ search + avatar + upgrade button right. Mobile: hamburger → slide-down menu
5
+ with collapsible Settings sub-items + user profile footer.
6
+ -->
7
+ <script lang="ts">
8
+ import { cn } from '$lib/utils/cn';
9
+ import type { Snippet } from 'svelte';
10
+
11
+ interface NavItem {
12
+ label: string;
13
+ href?: string;
14
+ badge?: number | string;
15
+ children?: NavItem[];
16
+ }
17
+
18
+ interface User {
19
+ name: string;
20
+ email: string;
21
+ avatar?: string;
22
+ }
23
+
24
+ let {
25
+ class: className = '',
26
+ logo,
27
+ navItems = defaultNavItems(),
28
+ user = { name: 'John Doe', email: 'hi@shadcndesign.com' },
29
+ upgradeLabel = 'Upgrade',
30
+ onupgrade = () => {},
31
+ children
32
+ }: {
33
+ class?: string;
34
+ logo?: Snippet;
35
+ navItems?: NavItem[];
36
+ user?: User;
37
+ upgradeLabel?: string;
38
+ onupgrade?: () => void;
39
+ children?: Snippet;
40
+ } = $props();
41
+
42
+ function defaultNavItems(): NavItem[] {
43
+ return [
44
+ { label: 'Dashboard', href: '#' },
45
+ { label: 'Orders', href: '#', badge: 2 },
46
+ { label: 'Products', href: '#' },
47
+ { label: 'Customers', href: '#' },
48
+ {
49
+ label: 'Settings',
50
+ children: [
51
+ { label: 'General', href: '#' },
52
+ { label: 'Security', href: '#' },
53
+ { label: 'API', href: '#' },
54
+ { label: 'Advanced', href: '#' }
55
+ ]
56
+ }
57
+ ];
58
+ }
59
+
60
+ let mobileOpen = $state(false);
61
+ let openDropdown = $state<string | null>(null);
62
+ let userMenuOpen = $state(false);
63
+
64
+ function initials(name: string) {
65
+ return name.split(' ').map(w => w[0]).join('').slice(0, 2).toUpperCase();
66
+ }
67
+ </script>
68
+
69
+ <nav class={cn('w-full border-b bg-background', className)}>
70
+ <!-- Desktop -->
71
+ <div class="hidden h-14 items-center gap-6 px-4 md:flex">
72
+ <!-- Logo -->
73
+ <div class="flex shrink-0 items-center">
74
+ {#if logo}
75
+ {@render logo()}
76
+ {:else}
77
+ <div class="flex h-8 w-8 items-center justify-center rounded-md bg-foreground text-background">
78
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
79
+ </div>
80
+ {/if}
81
+ </div>
82
+
83
+ <!-- Nav links -->
84
+ <div class="flex items-center gap-1">
85
+ {#each navItems as item}
86
+ {#if item.children}
87
+ <div class="relative">
88
+ <button
89
+ type="button"
90
+ onclick={() => (openDropdown = openDropdown === item.label ? null : item.label)}
91
+ class="flex items-center gap-1 rounded-md px-3 py-1.5 text-sm hover:bg-muted"
92
+ >
93
+ {item.label}
94
+ <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="m6 9 6 6 6-6"/></svg>
95
+ </button>
96
+ {#if openDropdown === item.label}
97
+ <div class="absolute left-0 top-full z-20 mt-1 min-w-[160px] rounded-md border bg-background p-1 shadow-md">
98
+ {#each item.children as child}
99
+ <a href={child.href ?? '#'} class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">{child.label}</a>
100
+ {/each}
101
+ </div>
102
+ {/if}
103
+ </div>
104
+ {:else}
105
+ <a
106
+ href={item.href ?? '#'}
107
+ class="flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm hover:bg-muted"
108
+ >
109
+ {item.label}
110
+ {#if item.badge}
111
+ <span class="flex h-4 min-w-4 items-center justify-center rounded-full bg-foreground px-1 text-[10px] font-bold text-background">{item.badge}</span>
112
+ {/if}
113
+ </a>
114
+ {/if}
115
+ {/each}
116
+ </div>
117
+
118
+ <div class="ml-auto flex items-center gap-2">
119
+ <!-- Search -->
120
+ <button type="button" class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
121
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
122
+ </button>
123
+ <!-- Avatar -->
124
+ <div class="relative">
125
+ <button type="button" onclick={() => (userMenuOpen = !userMenuOpen)} class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border hover:opacity-80">
126
+ {#if user.avatar}
127
+ <img src={user.avatar} alt={user.name} class="h-full w-full object-cover" />
128
+ {:else}
129
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
130
+ {/if}
131
+ </button>
132
+ {#if userMenuOpen}
133
+ <div class="absolute right-0 top-full z-20 mt-1 w-52 rounded-md border bg-background p-1 shadow-md">
134
+ <div class="px-3 py-2 text-sm font-medium">{user.name}</div>
135
+ <div class="px-3 pb-2 text-xs text-muted-foreground">{user.email}</div>
136
+ <hr class="my-1" />
137
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">My profile</a>
138
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">Account settings</a>
139
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">Billing</a>
140
+ <hr class="my-1" />
141
+ <button type="button" class="w-full rounded-sm px-3 py-1.5 text-left text-sm hover:bg-muted">Sign out</button>
142
+ </div>
143
+ {/if}
144
+ </div>
145
+ <!-- Upgrade -->
146
+ <button
147
+ type="button"
148
+ onclick={onupgrade}
149
+ class="flex items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-sm font-medium text-background hover:bg-foreground/90"
150
+ >
151
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
152
+ {upgradeLabel}
153
+ </button>
154
+ </div>
155
+ </div>
156
+
157
+ <!-- Mobile closed -->
158
+ <div class="flex h-14 items-center justify-between px-4 md:hidden">
159
+ <button type="button" onclick={() => (mobileOpen = !mobileOpen)} class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
160
+ {#if mobileOpen}
161
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
162
+ {:else}
163
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
164
+ {/if}
165
+ </button>
166
+ <div class="flex h-8 w-8 items-center justify-center rounded-md bg-foreground text-background">
167
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
168
+ </div>
169
+ <div class="flex items-center gap-2">
170
+ <button type="button" class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
171
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
172
+ </button>
173
+ <button type="button" onclick={onupgrade} class="flex items-center gap-1 rounded-md bg-foreground px-3 py-1.5 text-sm font-medium text-background">
174
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
175
+ {upgradeLabel}
176
+ </button>
177
+ <button type="button" onclick={() => (userMenuOpen = !userMenuOpen)} class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border">
178
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
179
+ </button>
180
+ </div>
181
+ </div>
182
+
183
+ <!-- Mobile drawer -->
184
+ {#if mobileOpen}
185
+ <div class="border-t px-4 pb-4 md:hidden">
186
+ {#each navItems as item}
187
+ {#if item.children}
188
+ <div>
189
+ <button
190
+ type="button"
191
+ onclick={() => (openDropdown = openDropdown === item.label ? null : item.label)}
192
+ class="flex w-full items-center justify-between rounded-md px-2 py-2 text-sm hover:bg-muted"
193
+ >
194
+ {item.label}
195
+ <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={cn('transition-transform', openDropdown === item.label && 'rotate-180')}><path d="m6 9 6 6 6-6"/></svg>
196
+ </button>
197
+ {#if openDropdown === item.label}
198
+ <div class="ml-4 flex flex-col">
199
+ {#each item.children as child}
200
+ <a href={child.href ?? '#'} class="rounded-md px-2 py-2 text-sm text-muted-foreground hover:bg-muted">{child.label}</a>
201
+ {/each}
202
+ </div>
203
+ {/if}
204
+ </div>
205
+ {:else}
206
+ <a href={item.href ?? '#'} class="flex items-center gap-2 rounded-md px-2 py-2 text-sm hover:bg-muted">
207
+ {item.label}
208
+ {#if item.badge}
209
+ <span class="flex h-4 min-w-4 items-center justify-center rounded-full bg-foreground px-1 text-[10px] font-bold text-background">{item.badge}</span>
210
+ {/if}
211
+ </a>
212
+ {/if}
213
+ {/each}
214
+ <hr class="my-3" />
215
+ <div class="flex items-center gap-3 px-2 py-2">
216
+ <div class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border">
217
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
218
+ </div>
219
+ <div>
220
+ <p class="text-sm font-medium">{user.name}</p>
221
+ <p class="text-xs text-muted-foreground">{user.email}</p>
222
+ </div>
223
+ </div>
224
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">My profile</a>
225
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">Account settings</a>
226
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">Billing</a>
227
+ <button type="button" class="w-full rounded-md px-2 py-2 text-left text-sm hover:bg-muted">Sign out</button>
228
+ </div>
229
+ {/if}
230
+ </nav>
231
+
232
+ {#if children}
233
+ {@render children()}
234
+ {/if}
@@ -0,0 +1,111 @@
1
+ <!--
2
+ Navbar02.svelte
3
+ Logo-only left, right-aligned nav links + Upgrade button + avatar.
4
+ Mobile: hamburger → full-screen menu.
5
+ -->
6
+ <script lang="ts">
7
+ import { cn } from '$lib/utils/cn';
8
+
9
+ interface NavItem { label: string; href?: string; current?: boolean; }
10
+ interface User { name: string; email: string; avatar?: string; }
11
+
12
+ let {
13
+ class: className = '',
14
+ navItems = defaultNav(),
15
+ user = { name: 'John Doe', email: 'hi@shadcndesign.com' },
16
+ upgradeLabel = 'Upgrade',
17
+ onupgrade = () => {}
18
+ }: {
19
+ class?: string;
20
+ navItems?: NavItem[];
21
+ user?: User;
22
+ upgradeLabel?: string;
23
+ onupgrade?: () => void;
24
+ } = $props();
25
+
26
+ function defaultNav(): NavItem[] {
27
+ return [
28
+ { label: 'Dashboard', href: '#', current: true },
29
+ { label: 'Orders', href: '#' },
30
+ { label: 'Products', href: '#' },
31
+ { label: 'Customers', href: '#' },
32
+ { label: 'Settings', href: '#' }
33
+ ];
34
+ }
35
+
36
+ let mobileOpen = $state(false);
37
+ let userMenuOpen = $state(false);
38
+ function initials(n: string) { return n.split(' ').map(w => w[0]).join('').slice(0,2).toUpperCase(); }
39
+ </script>
40
+
41
+ <nav class={cn('w-full border-b bg-background', className)}>
42
+ <!-- Desktop -->
43
+ <div class="hidden h-14 items-center justify-between px-4 md:flex">
44
+ <div class="flex h-8 w-8 items-center justify-center rounded-md bg-foreground text-background">
45
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
46
+ </div>
47
+ <div class="flex items-center gap-1">
48
+ {#each navItems as item}
49
+ <a
50
+ href={item.href ?? '#'}
51
+ class={cn('rounded-md px-3 py-1.5 text-sm hover:bg-muted', item.current && 'bg-muted font-medium')}
52
+ >{item.label}</a>
53
+ {/each}
54
+ <button type="button" onclick={onupgrade} class="ml-2 flex items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-sm font-medium text-background hover:bg-foreground/90">
55
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
56
+ {upgradeLabel}
57
+ </button>
58
+ <div class="relative ml-1">
59
+ <button type="button" onclick={() => (userMenuOpen = !userMenuOpen)} class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border hover:opacity-80">
60
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
61
+ </button>
62
+ {#if userMenuOpen}
63
+ <div class="absolute right-0 top-full z-20 mt-1 w-52 rounded-md border bg-background p-1 shadow-md">
64
+ <div class="px-3 py-2"><p class="text-sm font-medium">{user.name}</p><p class="text-xs text-muted-foreground">{user.email}</p></div>
65
+ <hr class="my-1" />
66
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">My profile</a>
67
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">Account settings</a>
68
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">Billing</a>
69
+ <hr class="my-1" />
70
+ <button type="button" class="w-full rounded-sm px-3 py-1.5 text-left text-sm hover:bg-muted">Sign out</button>
71
+ </div>
72
+ {/if}
73
+ </div>
74
+ </div>
75
+ </div>
76
+
77
+ <!-- Mobile -->
78
+ <div class="flex h-14 items-center justify-between px-4 md:hidden">
79
+ <button type="button" onclick={() => (mobileOpen = !mobileOpen)} class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
80
+ {#if mobileOpen}
81
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>
82
+ {:else}
83
+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
84
+ {/if}
85
+ </button>
86
+ <div class="flex h-8 w-8 items-center justify-center rounded-md bg-foreground text-background">
87
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
88
+ </div>
89
+ <button type="button" onclick={onupgrade} class="flex items-center gap-1 rounded-md bg-foreground px-3 py-1.5 text-sm font-medium text-background">
90
+ <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
91
+ {upgradeLabel}
92
+ </button>
93
+ </div>
94
+
95
+ {#if mobileOpen}
96
+ <div class="border-t px-4 pb-4 md:hidden">
97
+ {#each navItems as item}
98
+ <a href={item.href ?? '#'} class={cn('block rounded-md px-2 py-2 text-sm hover:bg-muted', item.current && 'font-medium')}>{item.label}</a>
99
+ {/each}
100
+ <hr class="my-3" />
101
+ <div class="flex items-center gap-3 px-2 py-2">
102
+ <div class="flex h-8 w-8 items-center justify-center rounded-full border-2 border-border"><span class="text-xs font-semibold">{initials(user.name)}</span></div>
103
+ <div><p class="text-sm font-medium">{user.name}</p><p class="text-xs text-muted-foreground">{user.email}</p></div>
104
+ </div>
105
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">My profile</a>
106
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">Account settings</a>
107
+ <a href="#" class="block rounded-md px-2 py-2 text-sm hover:bg-muted">Billing</a>
108
+ <button type="button" class="w-full rounded-md px-2 py-2 text-left text-sm hover:bg-muted">Sign out</button>
109
+ </div>
110
+ {/if}
111
+ </nav>
@@ -0,0 +1,88 @@
1
+ <!--
2
+ Navbar03.svelte
3
+ Minimal: logo left, centred search bar, notification badge + avatar right.
4
+ -->
5
+ <script lang="ts">
6
+ import { cn } from '$lib/utils/cn';
7
+
8
+ interface User { name: string; email: string; avatar?: string; }
9
+
10
+ let {
11
+ class: className = '',
12
+ searchPlaceholder = 'Search…',
13
+ notificationCount = 2,
14
+ user = { name: 'John Doe', email: 'hi@shadcndesign.com' }
15
+ }: {
16
+ class?: string;
17
+ searchPlaceholder?: string;
18
+ notificationCount?: number;
19
+ user?: User;
20
+ } = $props();
21
+
22
+ let userMenuOpen = $state(false);
23
+ function initials(n: string) { return n.split(' ').map(w => w[0]).join('').slice(0,2).toUpperCase(); }
24
+ </script>
25
+
26
+ <nav class={cn('w-full border-b bg-background', className)}>
27
+ <!-- Desktop -->
28
+ <div class="hidden h-14 items-center gap-4 px-4 md:flex">
29
+ <div class="flex h-8 w-8 shrink-0 items-center justify-center rounded-md bg-foreground text-background">
30
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
31
+ </div>
32
+ <!-- Search -->
33
+ <div class="flex flex-1 items-center gap-2 rounded-md border px-3 py-1.5">
34
+ <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-muted-foreground"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
35
+ <input type="text" placeholder={searchPlaceholder} class="flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground" />
36
+ </div>
37
+ <div class="flex items-center gap-2">
38
+ <!-- Notification bell -->
39
+ <div class="relative">
40
+ <button type="button" class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
41
+ <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="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
42
+ </button>
43
+ {#if notificationCount > 0}
44
+ <span class="absolute -right-0.5 -top-0.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-foreground px-1 text-[9px] font-bold text-background">{notificationCount}</span>
45
+ {/if}
46
+ </div>
47
+ <!-- Avatar -->
48
+ <div class="relative">
49
+ <button type="button" onclick={() => (userMenuOpen = !userMenuOpen)} class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border hover:opacity-80">
50
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
51
+ </button>
52
+ {#if userMenuOpen}
53
+ <div class="absolute right-0 top-full z-20 mt-1 w-52 rounded-md border bg-background p-1 shadow-md">
54
+ <div class="px-3 py-2"><p class="text-sm font-medium">{user.name}</p><p class="text-xs text-muted-foreground">{user.email}</p></div>
55
+ <hr class="my-1" />
56
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">My profile</a>
57
+ <a href="#" class="block rounded-sm px-3 py-1.5 text-sm hover:bg-muted">Account settings</a>
58
+ <hr class="my-1" />
59
+ <button type="button" class="w-full rounded-sm px-3 py-1.5 text-left text-sm hover:bg-muted">Sign out</button>
60
+ </div>
61
+ {/if}
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <!-- Mobile -->
67
+ <div class="flex h-14 items-center justify-between px-4 md:hidden">
68
+ <div class="flex h-8 w-8 items-center justify-center rounded-md bg-foreground text-background">
69
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>
70
+ </div>
71
+ <div class="flex items-center gap-2">
72
+ <button type="button" class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
73
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
74
+ </button>
75
+ <div class="relative">
76
+ <button type="button" class="flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted">
77
+ <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="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9"/><path d="M10.3 21a1.94 1.94 0 0 0 3.4 0"/></svg>
78
+ </button>
79
+ {#if notificationCount > 0}
80
+ <span class="absolute -right-0.5 -top-0.5 flex h-4 min-w-4 items-center justify-center rounded-full bg-foreground px-1 text-[9px] font-bold text-background">{notificationCount}</span>
81
+ {/if}
82
+ </div>
83
+ <button type="button" class="flex h-8 w-8 items-center justify-center overflow-hidden rounded-full border-2 border-border">
84
+ <span class="text-xs font-semibold">{initials(user.name)}</span>
85
+ </button>
86
+ </div>
87
+ </div>
88
+ </nav>
@@ -0,0 +1,3 @@
1
+ export { default as Navbar01 } from './Navbar01.svelte';
2
+ export { default as Navbar02 } from './Navbar02.svelte';
3
+ export { default as Navbar03 } from './Navbar03.svelte';
@@ -0,0 +1,29 @@
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
+ onHome?: () => void;
8
+ onContact?: () => void;
9
+ }
10
+
11
+ const { class: className, onHome, onContact }: Props = $props();
12
+ </script>
13
+
14
+ <section
15
+ class={cn(
16
+ 'w-full bg-background min-h-[60vh] flex flex-col items-center justify-center px-4 text-center',
17
+ className
18
+ )}
19
+ >
20
+ <p class="text-8xl font-black text-muted-foreground/20">404</p>
21
+ <h1 class="mt-4 text-3xl font-bold">Page not found</h1>
22
+ <p class="mt-2 text-muted-foreground max-w-sm">
23
+ Sorry, we couldn't find the page you're looking for.
24
+ </p>
25
+ <div class="mt-8 flex gap-3">
26
+ <Button onclick={onHome}>Go home</Button>
27
+ <Button variant="outline" onclick={onContact}>Contact support</Button>
28
+ </div>
29
+ </section>
@@ -0,0 +1,28 @@
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
+ onHome?: () => void;
8
+ }
9
+
10
+ const { class: className, onHome }: Props = $props();
11
+ </script>
12
+
13
+ <section
14
+ class={cn('w-full bg-background min-h-[60vh] flex items-center px-4', className)}
15
+ >
16
+ <div class="mx-auto max-w-5xl grid grid-cols-1 gap-8 sm:grid-cols-2 sm:items-center w-full">
17
+ <div>
18
+ <p class="text-sm font-semibold text-muted-foreground uppercase tracking-wide">404</p>
19
+ <h1 class="mt-4 text-3xl font-bold">Oops! Page not found</h1>
20
+ <p class="mt-4 text-muted-foreground">
21
+ The page you're looking for doesn't exist or has been moved.
22
+ </p>
23
+ <Button onclick={onHome} class="mt-8">Back to home</Button>
24
+ </div>
25
+
26
+ <div class="aspect-square w-full rounded-2xl bg-muted" />
27
+ </div>
28
+ </section>
@@ -0,0 +1,25 @@
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
+ onHome?: () => void;
8
+ }
9
+
10
+ const { class: className, onHome }: Props = $props();
11
+ </script>
12
+
13
+ <section
14
+ class={cn(
15
+ 'w-full bg-foreground text-background min-h-[60vh] flex flex-col items-center justify-center px-4 text-center',
16
+ className
17
+ )}
18
+ >
19
+ <p class="text-9xl font-black opacity-10">404</p>
20
+ <h1 class="mt-4 text-3xl font-bold">Page not found</h1>
21
+ <p class="mt-2 opacity-60 max-w-sm">
22
+ The page you're looking for doesn't exist or has been moved to another location.
23
+ </p>
24
+ <Button onclick={onHome} variant="secondary" class="mt-8">Go back home</Button>
25
+ </section>
@@ -0,0 +1,3 @@
1
+ export { default as NotFound01 } from './NotFound01.svelte';
2
+ export { default as NotFound02 } from './NotFound02.svelte';
3
+ export { default as NotFound03 } from './NotFound03.svelte';