@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,201 @@
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
+ onSave?: () => void;
8
+ }
9
+
10
+ const { class: className, onSave }: Props = $props();
11
+
12
+ // Basic information state
13
+ let username = $state('kathypacheco');
14
+ let firstName = $state('Kathy');
15
+ let lastName = $state('Pacheco');
16
+ let email = $state('kathy@example.com');
17
+
18
+ // Change password state
19
+ let currentPassword = $state('');
20
+ let newPassword = $state('');
21
+ let confirmPassword = $state('');
22
+
23
+ // Advanced settings state
24
+ let dataExportAccess = $state(true);
25
+ let allowAdminToAddMembers = $state(true);
26
+ let enableTwoFactorAuth = $state(true);
27
+
28
+ function handleSave() {
29
+ onSave?.();
30
+ }
31
+ </script>
32
+
33
+ <div class={cn('space-y-6', className)}>
34
+ <!-- Basic Information Section -->
35
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
36
+ <div class="flex flex-col gap-6 sm:grid sm:grid-cols-[200px_1fr] sm:gap-6">
37
+ <div>
38
+ <h3 class="text-lg font-semibold">Basic information</h3>
39
+ <p class="mt-2 text-sm text-muted-foreground">Update your profile details.</p>
40
+ </div>
41
+
42
+ <div class="space-y-4">
43
+ <div>
44
+ <label class="block text-sm font-medium mb-2">Username</label>
45
+ <input
46
+ type="text"
47
+ bind:value={username}
48
+ placeholder="Username"
49
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
50
+ />
51
+ </div>
52
+
53
+ <div class="grid grid-cols-2 gap-4">
54
+ <div>
55
+ <label class="block text-sm font-medium mb-2">First name</label>
56
+ <input
57
+ type="text"
58
+ bind:value={firstName}
59
+ placeholder="First name"
60
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
61
+ />
62
+ </div>
63
+
64
+ <div>
65
+ <label class="block text-sm font-medium mb-2">Last name</label>
66
+ <input
67
+ type="text"
68
+ bind:value={lastName}
69
+ placeholder="Last name"
70
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
71
+ />
72
+ </div>
73
+ </div>
74
+
75
+ <div>
76
+ <label class="block text-sm font-medium mb-2">Email address</label>
77
+ <input
78
+ type="email"
79
+ bind:value={email}
80
+ placeholder="email@example.com"
81
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
82
+ />
83
+ </div>
84
+
85
+ <div class="flex justify-end pt-2">
86
+ <Button onclick={handleSave}>
87
+ Save changes
88
+ </Button>
89
+ </div>
90
+ </div>
91
+ </div>
92
+ </div>
93
+
94
+ <!-- Change Password Section -->
95
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
96
+ <div class="flex flex-col gap-6 sm:grid sm:grid-cols-[200px_1fr] sm:gap-6">
97
+ <div>
98
+ <h3 class="text-lg font-semibold">Change password</h3>
99
+ <p class="mt-2 text-sm text-muted-foreground">Update your account password.</p>
100
+ </div>
101
+
102
+ <div class="space-y-4">
103
+ <div>
104
+ <label class="block text-sm font-medium mb-2">Current password</label>
105
+ <input
106
+ type="password"
107
+ bind:value={currentPassword}
108
+ placeholder="Enter current password"
109
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
110
+ />
111
+ </div>
112
+
113
+ <div>
114
+ <label class="block text-sm font-medium mb-2">New password</label>
115
+ <input
116
+ type="password"
117
+ bind:value={newPassword}
118
+ placeholder="Enter new password"
119
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
120
+ />
121
+ </div>
122
+
123
+ <div>
124
+ <label class="block text-sm font-medium mb-2">Confirm password</label>
125
+ <input
126
+ type="password"
127
+ bind:value={confirmPassword}
128
+ placeholder="Confirm new password"
129
+ class="w-full rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
130
+ />
131
+ </div>
132
+
133
+ <div class="flex justify-end pt-2">
134
+ <Button onclick={handleSave}>
135
+ Save changes
136
+ </Button>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+
142
+ <!-- Advanced Settings Section -->
143
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
144
+ <div class="flex flex-col gap-6 sm:grid sm:grid-cols-[200px_1fr] sm:gap-6">
145
+ <div>
146
+ <h3 class="text-lg font-semibold">Advanced settings</h3>
147
+ <p class="mt-2 text-sm text-muted-foreground">Manage additional account options.</p>
148
+ </div>
149
+
150
+ <div class="space-y-4">
151
+ <!-- Data Export Access -->
152
+ <div class="flex items-start gap-3">
153
+ <input
154
+ type="checkbox"
155
+ bind:checked={dataExportAccess}
156
+ id="data-export"
157
+ class="mt-1 rounded border bg-background"
158
+ />
159
+ <div class="flex-1">
160
+ <label for="data-export" class="text-sm font-medium cursor-pointer block">Data Export Access</label>
161
+ <p class="text-xs text-muted-foreground mt-1">Allow export of personal data and backups.</p>
162
+ </div>
163
+ </div>
164
+
165
+ <!-- Allow Admin to Add Members -->
166
+ <div class="flex items-start gap-3">
167
+ <input
168
+ type="checkbox"
169
+ bind:checked={allowAdminToAddMembers}
170
+ id="admin-members"
171
+ class="mt-1 rounded border bg-background"
172
+ />
173
+ <div class="flex-1">
174
+ <label for="admin-members" class="text-sm font-medium cursor-pointer block">Allow Admin to Add Members</label>
175
+ <p class="text-xs text-muted-foreground mt-1">Admins can invite and manage members.</p>
176
+ </div>
177
+ </div>
178
+
179
+ <!-- Enable Two-Factor Authentication -->
180
+ <div class="flex items-start gap-3">
181
+ <input
182
+ type="checkbox"
183
+ bind:checked={enableTwoFactorAuth}
184
+ id="two-factor"
185
+ class="mt-1 rounded border bg-background"
186
+ />
187
+ <div class="flex-1">
188
+ <label for="two-factor" class="text-sm font-medium cursor-pointer block">Enable Two-Factor Authentication</label>
189
+ <p class="text-xs text-muted-foreground mt-1">Require 2FA for added account security.</p>
190
+ </div>
191
+ </div>
192
+
193
+ <div class="flex justify-end pt-2">
194
+ <Button onclick={handleSave}>
195
+ Save changes
196
+ </Button>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
@@ -0,0 +1,156 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface ApiRow {
6
+ name: string;
7
+ date: string;
8
+ status: 'Active' | 'Revoked' | 'Disabled' | 'Sent';
9
+ actions?: () => void;
10
+ }
11
+
12
+ interface Props {
13
+ class?: string;
14
+ publicApis?: ApiRow[];
15
+ privateApis?: ApiRow[];
16
+ onNewPublic?: () => void;
17
+ onNewPrivate?: () => void;
18
+ }
19
+
20
+ const {
21
+ class: className,
22
+ publicApis = [
23
+ { name: 'Table Cell Text', date: 'Sep 6, 2024 2:08 am', status: 'Active' },
24
+ { name: 'Table Cell Text', date: 'Sep 12, 2024 2:07 pm', status: 'Active' },
25
+ { name: 'User Data API', date: 'Aug 20, 2024 7:59 am', status: 'Revoked' }
26
+ ],
27
+ privateApis = [
28
+ { name: 'Webhook Manager', date: 'Sep 10, 2024 3:45 pm', status: 'Active' },
29
+ { name: 'Analytics Engine', date: 'Sep 5, 2024 11:22 am', status: 'Active' },
30
+ { name: 'Billing API', date: 'Aug 19, 2024 8:51 pm', status: 'Disabled' }
31
+ ],
32
+ onNewPublic,
33
+ onNewPrivate
34
+ }: Props = $props();
35
+
36
+ function getStatusBadgeClass(status: string): string {
37
+ if (status === 'Active') {
38
+ return 'bg-foreground text-background text-xs px-2 py-0.5 rounded-full';
39
+ } else if (status === 'Revoked') {
40
+ return 'text-foreground text-xs';
41
+ } else if (status === 'Disabled') {
42
+ return 'text-destructive text-xs';
43
+ }
44
+ return 'text-xs';
45
+ }
46
+
47
+ // SVG Icons
48
+ function MoreIcon() {
49
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg>`;
50
+ }
51
+ </script>
52
+
53
+ <div class={cn('space-y-6', className)}>
54
+ <!-- Header -->
55
+ <div class="flex items-center justify-between">
56
+ <div>
57
+ <h2 class="text-2xl font-semibold">API Settings</h2>
58
+ <p class="mt-1 text-sm text-muted-foreground">Manage your API keys and integrations.</p>
59
+ </div>
60
+ <Button variant="outline">
61
+ Contact Support
62
+ </Button>
63
+ </div>
64
+
65
+ <!-- Public APIs Section -->
66
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
67
+ <div class="flex items-center justify-between mb-6">
68
+ <div>
69
+ <h3 class="text-lg font-semibold">Public APIs</h3>
70
+ <p class="mt-1 text-sm text-muted-foreground">Your public API endpoints.</p>
71
+ </div>
72
+ <Button onclick={onNewPublic}>
73
+ + New
74
+ </Button>
75
+ </div>
76
+
77
+ <div class="overflow-x-auto">
78
+ <table class="w-full text-sm">
79
+ <thead>
80
+ <tr class="border-b">
81
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">API Name</th>
82
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Date of Creation</th>
83
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Status</th>
84
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Head Text</th>
85
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2"></th>
86
+ </tr>
87
+ </thead>
88
+ <tbody>
89
+ {#each publicApis as api (api.name)}
90
+ <tr class="border-b">
91
+ <td class="py-3">{api.name}</td>
92
+ <td class="py-3 text-muted-foreground">{api.date}</td>
93
+ <td class="py-3">
94
+ <span class={getStatusBadgeClass(api.status)}>
95
+ {api.status}
96
+ </span>
97
+ </td>
98
+ <td class="py-3 text-muted-foreground">—</td>
99
+ <td class="py-3 text-right">
100
+ <button class="text-muted-foreground hover:text-foreground transition-colors">
101
+ {@html MoreIcon()}
102
+ </button>
103
+ </td>
104
+ </tr>
105
+ {/each}
106
+ </tbody>
107
+ </table>
108
+ </div>
109
+ </div>
110
+
111
+ <!-- Private APIs Section -->
112
+ <div class="rounded-lg border bg-background p-4 sm:p-6">
113
+ <div class="flex items-center justify-between mb-6">
114
+ <div>
115
+ <h3 class="text-lg font-semibold">Private APIs</h3>
116
+ <p class="mt-1 text-sm text-muted-foreground">Your private API endpoints.</p>
117
+ </div>
118
+ <Button onclick={onNewPrivate}>
119
+ + New
120
+ </Button>
121
+ </div>
122
+
123
+ <div class="overflow-x-auto">
124
+ <table class="w-full text-sm">
125
+ <thead>
126
+ <tr class="border-b">
127
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">API Name</th>
128
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Date of Creation</th>
129
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Status</th>
130
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2">Head Text</th>
131
+ <th class="text-left text-xs text-muted-foreground font-medium pb-2"></th>
132
+ </tr>
133
+ </thead>
134
+ <tbody>
135
+ {#each privateApis as api (api.name)}
136
+ <tr class="border-b">
137
+ <td class="py-3">{api.name}</td>
138
+ <td class="py-3 text-muted-foreground">{api.date}</td>
139
+ <td class="py-3">
140
+ <span class={getStatusBadgeClass(api.status)}>
141
+ {api.status}
142
+ </span>
143
+ </td>
144
+ <td class="py-3 text-muted-foreground">—</td>
145
+ <td class="py-3 text-right">
146
+ <button class="text-muted-foreground hover:text-foreground transition-colors">
147
+ {@html MoreIcon()}
148
+ </button>
149
+ </td>
150
+ </tr>
151
+ {/each}
152
+ </tbody>
153
+ </table>
154
+ </div>
155
+ </div>
156
+ </div>
@@ -0,0 +1,175 @@
1
+ <script lang="ts">
2
+ import { cn } from '$lib/utils/cn';
3
+ import { Button } from '$lib/components/ui';
4
+
5
+ interface Integration {
6
+ name: string;
7
+ description?: string;
8
+ logoUrl?: string;
9
+ enabled?: boolean;
10
+ href?: string;
11
+ }
12
+
13
+ interface Props {
14
+ class?: string;
15
+ integrations?: Integration[];
16
+ onCreate?: () => void;
17
+ onExport?: () => void;
18
+ }
19
+
20
+ const defaultIntegrations: Integration[] = [
21
+ { name: 'Facebook', enabled: false },
22
+ { name: 'GitHub', enabled: false },
23
+ { name: 'WhatsApp', enabled: false },
24
+ { name: 'Figma', enabled: false },
25
+ { name: 'Google', enabled: false },
26
+ { name: 'Pinterest', enabled: false },
27
+ { name: 'Messenger', enabled: false },
28
+ { name: 'PayPal', enabled: false },
29
+ { name: 'Vimeo', enabled: false }
30
+ ];
31
+
32
+ const {
33
+ class: className,
34
+ integrations = defaultIntegrations,
35
+ onCreate,
36
+ onExport
37
+ }: Props = $props();
38
+
39
+ let activeFilter = $state<'All' | 'Active' | 'Inactive'>('All');
40
+ let searchQuery = $state('');
41
+ let enabledStates = $state<Record<string, boolean>>(
42
+ Object.fromEntries(integrations.map((int, idx) => [`${idx}`, int.enabled ?? false]))
43
+ );
44
+
45
+ $derived filteredIntegrations = integrations.filter((int, idx) => {
46
+ const isEnabled = enabledStates[`${idx}`];
47
+ const matchesFilter =
48
+ activeFilter === 'All' ||
49
+ (activeFilter === 'Active' && isEnabled) ||
50
+ (activeFilter === 'Inactive' && !isEnabled);
51
+
52
+ const matchesSearch = int.name.toLowerCase().includes(searchQuery.toLowerCase());
53
+
54
+ return matchesFilter && matchesSearch;
55
+ });
56
+
57
+ // SVG Icons
58
+ function ExternalLinkIcon() {
59
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>`;
60
+ }
61
+
62
+ function SettingsIcon() {
63
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M12 1v6m0 6v6M4.22 4.22l4.24 4.24m5.08 5.08l4.24 4.24M1 12h6m6 0h6M4.22 19.78l4.24-4.24m5.08-5.08l4.24-4.24"/></svg>`;
64
+ }
65
+
66
+ function toggleIntegration(idx: number) {
67
+ enabledStates[`${idx}`] = !enabledStates[`${idx}`];
68
+ }
69
+ </script>
70
+
71
+ <div class={cn('space-y-6', className)}>
72
+ <!-- Header -->
73
+ <div class="flex items-center justify-between">
74
+ <h2 class="text-2xl font-semibold">Integrations</h2>
75
+ <div class="flex gap-2">
76
+ <Button variant="outline" onclick={onExport}>
77
+ Export
78
+ </Button>
79
+ <Button onclick={onCreate}>
80
+ Create new
81
+ </Button>
82
+ </div>
83
+ </div>
84
+
85
+ <!-- Filter Tabs and Search -->
86
+ <div class="flex items-center justify-between gap-4">
87
+ <div class="flex gap-1 p-1 bg-muted rounded-md">
88
+ <button
89
+ onclick={() => (activeFilter = 'All')}
90
+ class={cn(
91
+ 'px-3 py-1 rounded text-sm font-medium transition-colors',
92
+ activeFilter === 'All' ? 'bg-background shadow-sm' : 'text-muted-foreground hover:text-foreground'
93
+ )}
94
+ >
95
+ All
96
+ </button>
97
+ <button
98
+ onclick={() => (activeFilter = 'Active')}
99
+ class={cn(
100
+ 'px-3 py-1 rounded text-sm font-medium transition-colors',
101
+ activeFilter === 'Active' ? 'bg-background shadow-sm' : 'text-muted-foreground hover:text-foreground'
102
+ )}
103
+ >
104
+ Active
105
+ </button>
106
+ <button
107
+ onclick={() => (activeFilter = 'Inactive')}
108
+ class={cn(
109
+ 'px-3 py-1 rounded text-sm font-medium transition-colors',
110
+ activeFilter === 'Inactive' ? 'bg-background shadow-sm' : 'text-muted-foreground hover:text-foreground'
111
+ )}
112
+ >
113
+ Inactive
114
+ </button>
115
+ </div>
116
+
117
+ <input
118
+ type="search"
119
+ bind:value={searchQuery}
120
+ placeholder="Search integrations..."
121
+ class="w-48 rounded-md border bg-background px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-ring"
122
+ />
123
+ </div>
124
+
125
+ <!-- Integration Cards Grid -->
126
+ <div class="grid gap-4 sm:grid-cols-3">
127
+ {#each filteredIntegrations as integration, idx (integration.name)}
128
+ {@const globalIdx = integrations.indexOf(integration)}
129
+ <div class="rounded-lg border bg-background p-4">
130
+ <!-- Top Row with Logo and External Link -->
131
+ <div class="flex items-center justify-between mb-4">
132
+ <div class="w-8 h-8 rounded bg-muted flex-shrink-0"></div>
133
+ <button class="text-muted-foreground hover:text-foreground transition-colors">
134
+ {@html ExternalLinkIcon()}
135
+ </button>
136
+ </div>
137
+
138
+ <!-- Title and Description -->
139
+ <div class="mb-4">
140
+ <h3 class="text-sm font-semibold">{integration.name}</h3>
141
+ <p class="text-xs text-muted-foreground mt-1">{integration.description || 'Connect and manage integrations'}</p>
142
+ </div>
143
+
144
+ <!-- Bottom Row with Settings Button and Toggle -->
145
+ <div class="flex items-center justify-between">
146
+ <Button variant="outline" size="sm">
147
+ ⚙ Settings
148
+ </Button>
149
+
150
+ <!-- Custom Toggle Switch -->
151
+ <button
152
+ onclick={() => toggleIntegration(globalIdx)}
153
+ class={cn(
154
+ 'relative inline-flex h-5 w-9 items-center rounded-full transition-colors',
155
+ enabledStates[`${globalIdx}`] ? 'bg-foreground' : 'bg-muted'
156
+ )}
157
+ >
158
+ <span
159
+ class={cn(
160
+ 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',
161
+ enabledStates[`${globalIdx}`] ? 'translate-x-4' : 'translate-x-0.5'
162
+ )}
163
+ ></span>
164
+ </button>
165
+ </div>
166
+ </div>
167
+ {/each}
168
+ </div>
169
+
170
+ {#if filteredIntegrations.length === 0}
171
+ <div class="text-center py-12">
172
+ <p class="text-muted-foreground">No integrations found</p>
173
+ </div>
174
+ {/if}
175
+ </div>