@donotdev/cli 0.0.3

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 (281) hide show
  1. package/LICENSE.md +48 -0
  2. package/README.md +291 -0
  3. package/dependencies-matrix.json +694 -0
  4. package/dist/bin/commands/build.d.ts +11 -0
  5. package/dist/bin/commands/build.d.ts.map +1 -0
  6. package/dist/bin/commands/build.js +8162 -0
  7. package/dist/bin/commands/build.js.map +1 -0
  8. package/dist/bin/commands/bump.d.ts +11 -0
  9. package/dist/bin/commands/bump.d.ts.map +1 -0
  10. package/dist/bin/commands/bump.js +8004 -0
  11. package/dist/bin/commands/bump.js.map +1 -0
  12. package/dist/bin/commands/cacheout.d.ts +11 -0
  13. package/dist/bin/commands/cacheout.d.ts.map +1 -0
  14. package/dist/bin/commands/cacheout.js +7630 -0
  15. package/dist/bin/commands/cacheout.js.map +1 -0
  16. package/dist/bin/commands/create-app.d.ts +11 -0
  17. package/dist/bin/commands/create-app.d.ts.map +1 -0
  18. package/dist/bin/commands/create-app.js +9032 -0
  19. package/dist/bin/commands/create-app.js.map +1 -0
  20. package/dist/bin/commands/create-project.d.ts +11 -0
  21. package/dist/bin/commands/create-project.d.ts.map +1 -0
  22. package/dist/bin/commands/create-project.js +9643 -0
  23. package/dist/bin/commands/create-project.js.map +1 -0
  24. package/dist/bin/commands/deploy.d.ts +11 -0
  25. package/dist/bin/commands/deploy.d.ts.map +1 -0
  26. package/dist/bin/commands/deploy.js +9007 -0
  27. package/dist/bin/commands/deploy.js.map +1 -0
  28. package/dist/bin/commands/dev.d.ts +11 -0
  29. package/dist/bin/commands/dev.d.ts.map +1 -0
  30. package/dist/bin/commands/dev.js +7892 -0
  31. package/dist/bin/commands/dev.js.map +1 -0
  32. package/dist/bin/commands/emu.d.ts +11 -0
  33. package/dist/bin/commands/emu.d.ts.map +1 -0
  34. package/dist/bin/commands/emu.js +8302 -0
  35. package/dist/bin/commands/emu.js.map +1 -0
  36. package/dist/bin/commands/format.d.ts +11 -0
  37. package/dist/bin/commands/format.d.ts.map +1 -0
  38. package/dist/bin/commands/format.js +8009 -0
  39. package/dist/bin/commands/format.js.map +1 -0
  40. package/dist/bin/commands/lint.d.ts +11 -0
  41. package/dist/bin/commands/lint.d.ts.map +1 -0
  42. package/dist/bin/commands/lint.js +7481 -0
  43. package/dist/bin/commands/lint.js.map +1 -0
  44. package/dist/bin/commands/preview.d.ts +11 -0
  45. package/dist/bin/commands/preview.d.ts.map +1 -0
  46. package/dist/bin/commands/preview.js +7909 -0
  47. package/dist/bin/commands/preview.js.map +1 -0
  48. package/dist/bin/commands/sync-secrets.d.ts +11 -0
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/bin/commands/sync-secrets.js +8227 -0
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/dndev.js +222 -0
  53. package/dist/bin/donotdev.js +222 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +12820 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +71 -0
  59. package/templates/app-demo/index.html.example +20 -0
  60. package/templates/app-demo/public/favicon.ico.example +0 -0
  61. package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
  62. package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
  63. package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
  64. package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
  65. package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
  66. package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
  67. package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
  68. package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
  69. package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
  70. package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
  71. package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
  72. package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
  73. package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
  74. package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
  75. package/templates/app-demo/public/fonts/fonts.css.example +144 -0
  76. package/templates/app-demo/public/logo.png.example +0 -0
  77. package/templates/app-demo/public/logo.svg.example +1 -0
  78. package/templates/app-demo/public/manifest.json.example +10 -0
  79. package/templates/app-demo/src/App.tsx.example +17 -0
  80. package/templates/app-demo/src/Routes.tsx.example +20 -0
  81. package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
  82. package/templates/app-demo/src/globals.css.example +4 -0
  83. package/templates/app-demo/src/main.tsx.example +27 -0
  84. package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
  85. package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
  86. package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
  87. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
  88. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
  89. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
  90. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
  91. package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
  92. package/templates/app-demo/src/themes.css.example +179 -0
  93. package/templates/app-demo/tsconfig.json.example +9 -0
  94. package/templates/app-demo/vite.config.ts.example +53 -0
  95. package/templates/app-next/.env.example +92 -0
  96. package/templates/app-next/next.config.ts.example +8 -0
  97. package/templates/app-next/postcss.config.js.example +58 -0
  98. package/templates/app-next/service-account-key.json.example +2 -0
  99. package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
  100. package/templates/app-next/src/app/layout.tsx.example +52 -0
  101. package/templates/app-next/src/app/not-found.tsx.example +21 -0
  102. package/templates/app-next/src/config/app.ts.example +75 -0
  103. package/templates/app-next/src/config/legal.ts.example +170 -0
  104. package/templates/app-next/src/globals.css.example +15 -0
  105. package/templates/app-next/src/locales/dndev_en.json.example +516 -0
  106. package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
  107. package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  108. package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
  109. package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
  110. package/templates/app-next/src/themes.css.example +179 -0
  111. package/templates/app-next/tsconfig.json.example +11 -0
  112. package/templates/app-payload/.env.example +28 -0
  113. package/templates/app-payload/README.md.example +233 -0
  114. package/templates/app-payload/collections/Company.ts.example +125 -0
  115. package/templates/app-payload/collections/Hero.ts.example +62 -0
  116. package/templates/app-payload/collections/Media.ts.example +41 -0
  117. package/templates/app-payload/collections/Products.ts.example +115 -0
  118. package/templates/app-payload/collections/Services.ts.example +104 -0
  119. package/templates/app-payload/collections/Testimonials.ts.example +92 -0
  120. package/templates/app-payload/collections/Users.ts.example +35 -0
  121. package/templates/app-payload/src/server.ts.example +79 -0
  122. package/templates/app-payload/tsconfig.json.example +24 -0
  123. package/templates/app-vite/.env.example +77 -0
  124. package/templates/app-vite/index.html.example +127 -0
  125. package/templates/app-vite/service-account-key.json.example +2 -0
  126. package/templates/app-vite/src/App.tsx.example +39 -0
  127. package/templates/app-vite/src/Routes.tsx.example +16 -0
  128. package/templates/app-vite/src/config/app.ts.example +75 -0
  129. package/templates/app-vite/src/config/legal.ts.example +170 -0
  130. package/templates/app-vite/src/globals.css.example +11 -0
  131. package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
  132. package/templates/app-vite/src/main.tsx.example +21 -0
  133. package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
  134. package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
  135. package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  136. package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
  137. package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
  138. package/templates/app-vite/src/pages/locales/README.md.example +1 -0
  139. package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
  140. package/templates/app-vite/src/themes.css.example +179 -0
  141. package/templates/app-vite/tsconfig.json.example +9 -0
  142. package/templates/app-vite/vite.config.ts.example +9 -0
  143. package/templates/functions-firebase/README.md.example +129 -0
  144. package/templates/functions-firebase/build.mjs.example +52 -0
  145. package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
  146. package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
  147. package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
  148. package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  149. package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  150. package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
  151. package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  152. package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  153. package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  154. package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
  155. package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  156. package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  157. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
  158. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  159. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
  160. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
  161. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
  162. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  163. package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
  164. package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  165. package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  166. package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  167. package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  168. package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  169. package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
  170. package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  171. package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  172. package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
  173. package/templates/functions-firebase/functions.yaml.example +14 -0
  174. package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  175. package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  176. package/templates/functions-firebase/src/auth/index.ts.example +11 -0
  177. package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  178. package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  179. package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  180. package/templates/functions-firebase/src/billing/index.ts.example +10 -0
  181. package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  182. package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  183. package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
  184. package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  185. package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
  186. package/templates/functions-firebase/src/crud/index.ts.example +12 -0
  187. package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
  188. package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  189. package/templates/functions-firebase/src/index.ts.example +45 -0
  190. package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  191. package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  192. package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  193. package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  194. package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  195. package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
  196. package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  197. package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  198. package/templates/functions-firebase/tsconfig.json.example +24 -0
  199. package/templates/functions-vercel/README.md.example +116 -0
  200. package/templates/functions-vercel/build.mjs.example +52 -0
  201. package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
  202. package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
  203. package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
  204. package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  205. package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  206. package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  207. package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  208. package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  209. package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  210. package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  211. package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  212. package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  213. package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  214. package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  215. package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  216. package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  217. package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  218. package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  219. package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  220. package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  221. package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  222. package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  223. package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
  224. package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
  225. package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  226. package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  227. package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  228. package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  229. package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  230. package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  231. package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  232. package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  233. package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  234. package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  235. package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  236. package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  237. package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  238. package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  239. package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  240. package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  241. package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  242. package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  243. package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  244. package/templates/functions-vercel/tsconfig.json.example +24 -0
  245. package/templates/functions-vercel/vercel.json.example +14 -0
  246. package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
  247. package/templates/github/workflows/firebase-deploy.yml.example +79 -0
  248. package/templates/root-consumer/.env.example +19 -0
  249. package/templates/root-consumer/.gitignore.example +82 -0
  250. package/templates/root-consumer/.prettierrc.cjs.example +12 -0
  251. package/templates/root-consumer/CLAUDE.md.example +73 -0
  252. package/templates/root-consumer/README.md.example +295 -0
  253. package/templates/root-consumer/bunfig.toml.example +68 -0
  254. package/templates/root-consumer/eslint.config.js.example +336 -0
  255. package/templates/root-consumer/firebase.json.example +348 -0
  256. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
  257. package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
  258. package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
  259. package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
  260. package/templates/root-consumer/guides/CLI.md.example +293 -0
  261. package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
  262. package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
  263. package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
  264. package/templates/root-consumer/guides/FEATURES.md.example +286 -0
  265. package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
  266. package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
  267. package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
  268. package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
  269. package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
  270. package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
  271. package/templates/root-consumer/guides/INDEX.md.example +50 -0
  272. package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
  273. package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
  274. package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
  275. package/templates/root-consumer/guides/STYLING.md.example +273 -0
  276. package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
  277. package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
  278. package/templates/root-consumer/tsconfig.functions.json.example +15 -0
  279. package/templates/root-consumer/tsconfig.json.example +18 -0
  280. package/templates/root-consumer/turbo.json.example +46 -0
  281. package/templates/root-consumer/vercel.json.example +124 -0
@@ -0,0 +1,921 @@
1
+ // apps/demo/src/pages/components/componentConfig.ts
2
+ // Single source of truth for all component metadata
3
+
4
+ import { Rocket } from 'lucide-react';
5
+ import { createElement } from 'react';
6
+
7
+ import {
8
+ Accordion,
9
+ Alert,
10
+ ALERT_VARIANT,
11
+ AlertDialog,
12
+ Avatar,
13
+ Badge,
14
+ BADGE_VARIANT,
15
+ Blockquote,
16
+ Button,
17
+ BUTTON_VARIANT,
18
+ Calendar,
19
+ CallToAction,
20
+ Card,
21
+ CARD_VARIANT,
22
+ Checkbox,
23
+ Code,
24
+ Collapsible,
25
+ Combobox,
26
+ Command,
27
+ CommandDialog,
28
+ ContextMenu,
29
+ CopyToClipboard,
30
+ DataTable,
31
+ DescriptionList,
32
+ Dialog,
33
+ DIALOG_VARIANT,
34
+ DropdownMenu,
35
+ FeatureFallback,
36
+ FileButton,
37
+ Grid,
38
+ HeroSection,
39
+ HoverCard,
40
+ Stack,
41
+ InfiniteScroll,
42
+ Input,
43
+ Label,
44
+ List,
45
+ NavigationMenu,
46
+ Pagination,
47
+ PasswordInput,
48
+ Popover,
49
+ POPOVER_VARIANT,
50
+ FLOATING_VARIANT,
51
+ Portal,
52
+ Progress,
53
+ RadioGroup,
54
+ ScrollArea,
55
+ Section,
56
+ Select,
57
+ Separator,
58
+ Sheet,
59
+ SHEET_VARIANT,
60
+ Skeleton,
61
+ Slider,
62
+ Slot,
63
+ Spinner,
64
+ Stepper,
65
+ Switch,
66
+ Tabs,
67
+ Tag,
68
+ Text,
69
+ TEXT_VARIANT,
70
+ Textarea,
71
+ Toaster,
72
+ Toggle,
73
+ ToggleGroup,
74
+ Tooltip,
75
+ VideoPlayer,
76
+ VisuallyHidden,
77
+ } from '@donotdev/components';
78
+
79
+ import type { ComponentType, ReactNode } from 'react';
80
+ import type { CSSFamily, PropType } from './ComponentsData';
81
+
82
+ /**
83
+ * Extract variant values from VARIANT constant object
84
+ * Converts { DEFAULT: 'default', PRIMARY: 'primary' } to ['default', 'primary']
85
+ */
86
+ function getVariantValues<T extends Record<string, string>>(variantObj: T): string[] {
87
+ return Object.values(variantObj);
88
+ }
89
+
90
+ export interface ComponentConfig {
91
+ id: string;
92
+ name: string;
93
+ component: ComponentType<any>;
94
+ cssFamily: CSSFamily;
95
+ variants: {
96
+ variant?: string[];
97
+ size?: string[];
98
+ shadow?: string[];
99
+ radius?: string[];
100
+ tone?: string[];
101
+ type?: string[];
102
+ side?: string[];
103
+ mode?: string[];
104
+ };
105
+ propTypes?: PropType[];
106
+ stateType?: 'controlled-value' | 'controlled-checked' | 'controlled-pressed' | 'controlled-range' | 'controlled-date' | 'controlled-dates' | 'controlled-date-range' | 'custom';
107
+ defaultStateValue?: any;
108
+ renderMode?: 'default' | 'overlay' | 'modal' | 'tabs-generator';
109
+ supportsCommonProps: {
110
+ title?: boolean;
111
+ description?: boolean;
112
+ content?: boolean;
113
+ tooltip?: boolean;
114
+ icon?: boolean;
115
+ label?: boolean;
116
+ placeholder?: boolean;
117
+ };
118
+ needsTrigger?: boolean;
119
+ triggerText?: string;
120
+ customProps?: Record<string, any>;
121
+ showStateLabel?: boolean;
122
+ layoutDescription?: string;
123
+ notes?: string;
124
+ demoContent?: (value: any, setValue: (val: any) => void) => ReactNode;
125
+ }
126
+
127
+ export function getCSSFamilies(): Array<{ id: CSSFamily | 'all'; label: string }> {
128
+ const families = new Set<CSSFamily>();
129
+ COMPONENT_CONFIGS.forEach((config) => {
130
+ families.add(config.cssFamily);
131
+ });
132
+
133
+ const labels: Record<CSSFamily, string> = {
134
+ surface: 'Card-based',
135
+ floating: 'Floating',
136
+ interactive: 'Interactive',
137
+ layout: 'Layout',
138
+ input: 'Input',
139
+ other: 'Others',
140
+ };
141
+
142
+ const order: CSSFamily[] = ['layout', 'surface', 'floating', 'interactive', 'input', 'other'];
143
+
144
+ return [
145
+ { id: 'all', label: 'All' },
146
+ ...order
147
+ .filter((id) => families.has(id))
148
+ .map((id) => ({ id, label: labels[id] || id })),
149
+ ];
150
+ }
151
+
152
+ export const COMPONENT_CONFIGS: ComponentConfig[] = [
153
+ {
154
+ id: 'blockquote',
155
+ name: 'Blockquote',
156
+ component: Blockquote,
157
+ cssFamily: 'other',
158
+ variants: {
159
+ variant: ['default', 'editorial', 'testimonial'],
160
+ },
161
+ supportsCommonProps: {},
162
+ customProps: {
163
+ children: 'The web is inclusive by default.',
164
+ author: 'Tim Berners-Lee',
165
+ source: 'W3C',
166
+ },
167
+ },
168
+ {
169
+ id: 'code',
170
+ name: 'Code',
171
+ component: Code,
172
+ cssFamily: 'surface',
173
+ variants: {},
174
+ supportsCommonProps: {},
175
+ customProps: {
176
+ children: 'npm install @donotdev/components',
177
+ language: 'bash',
178
+ },
179
+ },
180
+ {
181
+ id: 'progress',
182
+ name: 'Progress',
183
+ component: Progress,
184
+ cssFamily: 'other',
185
+ variants: {},
186
+ supportsCommonProps: {},
187
+ customProps: {
188
+ value: 60,
189
+ },
190
+ },
191
+ {
192
+ id: 'toaster',
193
+ name: 'Toaster',
194
+ component: Toaster,
195
+ cssFamily: 'other',
196
+ variants: {},
197
+ supportsCommonProps: {},
198
+ notes: 'Rendered at app root. Use useToast() hook to trigger.',
199
+ },
200
+ {
201
+ id: 'copy-to-clipboard',
202
+ name: 'CopyToClipboard',
203
+ component: CopyToClipboard,
204
+ cssFamily: 'interactive',
205
+ variants: {},
206
+ supportsCommonProps: {},
207
+ customProps: {
208
+ text: 'Copied text!',
209
+ },
210
+ },
211
+ {
212
+ id: 'button',
213
+ name: 'Button',
214
+ component: Button,
215
+ cssFamily: 'interactive',
216
+ variants: {
217
+ variant: getVariantValues(BUTTON_VARIANT),
218
+ },
219
+ supportsCommonProps: {
220
+ icon: true,
221
+ tooltip: true,
222
+ content: true,
223
+ },
224
+ },
225
+ {
226
+ id: 'file-button',
227
+ name: 'FileButton',
228
+ component: FileButton,
229
+ cssFamily: 'interactive',
230
+ variants: {},
231
+ supportsCommonProps: {
232
+ label: true,
233
+ },
234
+ },
235
+ {
236
+ id: 'calendar',
237
+ name: 'Calendar',
238
+ component: Calendar,
239
+ cssFamily: 'other',
240
+ variants: {
241
+ mode: ['single', 'multiple', 'range'],
242
+ },
243
+ stateType: 'custom',
244
+ supportsCommonProps: {},
245
+ },
246
+ {
247
+ id: 'infinite-scroll',
248
+ name: 'InfiniteScroll',
249
+ component: InfiniteScroll,
250
+ cssFamily: 'other',
251
+ variants: {},
252
+ supportsCommonProps: {},
253
+ customProps: {
254
+ items: ['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo'],
255
+ },
256
+ },
257
+ {
258
+ id: 'stepper',
259
+ name: 'Stepper',
260
+ component: Stepper,
261
+ cssFamily: 'interactive',
262
+ variants: {},
263
+ supportsCommonProps: {},
264
+ customProps: {
265
+ steps: [
266
+ { number: 1, title: 'Step 1', content: 'First step content' },
267
+ { number: 2, title: 'Step 2', content: 'Second step content' },
268
+ { number: 3, title: 'Step 3', content: 'Third step content' },
269
+ ],
270
+ },
271
+ },
272
+ {
273
+ id: 'toggle',
274
+ name: 'Toggle',
275
+ component: Toggle,
276
+ cssFamily: 'interactive',
277
+ variants: {},
278
+ stateType: 'controlled-pressed',
279
+ defaultStateValue: false,
280
+ customProps: {
281
+ children: 'Toggle',
282
+ },
283
+ showStateLabel: true,
284
+ supportsCommonProps: {},
285
+ },
286
+ {
287
+ id: 'toggle-group',
288
+ name: 'ToggleGroup',
289
+ component: ToggleGroup,
290
+ cssFamily: 'interactive',
291
+ variants: {},
292
+ propTypes: ['toggleGroupItems'],
293
+ stateType: 'controlled-value',
294
+ defaultStateValue: 'left',
295
+ supportsCommonProps: {},
296
+ customProps: {
297
+ type: 'single',
298
+ },
299
+ demoContent: (alignment: string) => createElement(
300
+ Card,
301
+ {
302
+ title: 'Text Alignment Demo',
303
+ variant: 'muted',
304
+ style: { width: '100%', maxWidth: '600px' },
305
+ },
306
+ createElement(
307
+ Text,
308
+ {
309
+ style: {
310
+ textAlign: alignment === 'left' ? 'left' : alignment === 'center' ? 'center' : 'right',
311
+ },
312
+ children: 'This text aligns based on your selection. ToggleGroup is a segmented control for selecting one option from a set (like text alignment, view mode, or filter).',
313
+ }
314
+ )
315
+ ),
316
+ },
317
+ {
318
+ id: 'avatar',
319
+ name: 'Avatar',
320
+ component: Avatar,
321
+ cssFamily: 'other',
322
+ variants: {},
323
+ propTypes: ['avatarSrc', 'avatarFallback'],
324
+ supportsCommonProps: {},
325
+ },
326
+ {
327
+ id: 'badge',
328
+ name: 'Badge',
329
+ component: Badge,
330
+ cssFamily: 'other',
331
+ variants: {
332
+ variant: getVariantValues(BADGE_VARIANT),
333
+ },
334
+ supportsCommonProps: {
335
+ tooltip: true,
336
+ content: true,
337
+ },
338
+ },
339
+ {
340
+ id: 'card',
341
+ name: 'Card',
342
+ component: Card,
343
+ cssFamily: 'surface',
344
+ variants: {
345
+ variant: getVariantValues(CARD_VARIANT),
346
+ },
347
+ propTypes: ['title', 'subtitle', 'icon', 'content'],
348
+ supportsCommonProps: {
349
+ icon: true,
350
+ title: true,
351
+ content: true,
352
+ tooltip: true,
353
+ },
354
+ customProps: {
355
+ title: 'Card Title',
356
+ content: 'This is a card with customizable variants. Each variant uses different brand colors.',
357
+ },
358
+ },
359
+ {
360
+ id: 'data-table',
361
+ name: 'DataTable',
362
+ component: DataTable,
363
+ cssFamily: 'other',
364
+ variants: {},
365
+ supportsCommonProps: {},
366
+ customProps: {
367
+ data: [
368
+ { id: 1, name: 'Alpha', status: 'Active' },
369
+ { id: 2, name: 'Beta', status: 'Pending' },
370
+ { id: 3, name: 'Gamma', status: 'Disabled' },
371
+ ],
372
+ columns: [
373
+ { key: 'id', title: 'ID', dataIndex: 'id' },
374
+ { key: 'name', title: 'Name', dataIndex: 'name' },
375
+ { key: 'status', title: 'Status', dataIndex: 'status' },
376
+ ],
377
+ searchable: true,
378
+ filterable: true,
379
+ pagination: false,
380
+ },
381
+ },
382
+ {
383
+ id: 'separator',
384
+ name: 'Separator',
385
+ component: Separator,
386
+ cssFamily: 'other',
387
+ variants: {
388
+ variant: ['default', 'primary', 'accent', 'muted'],
389
+ },
390
+ supportsCommonProps: {},
391
+ },
392
+ {
393
+ id: 'text',
394
+ name: 'Text',
395
+ component: Text,
396
+ cssFamily: 'other',
397
+ variants: {
398
+ variant: getVariantValues(TEXT_VARIANT),
399
+ },
400
+ supportsCommonProps: {
401
+ content: true,
402
+ },
403
+ },
404
+ {
405
+ id: 'alert',
406
+ name: 'Alert',
407
+ component: Alert,
408
+ cssFamily: 'surface',
409
+ variants: {
410
+ variant: ['default', 'error', 'warning', 'success', 'info'],
411
+ },
412
+ propTypes: ['title', 'description'],
413
+ supportsCommonProps: {
414
+ title: true,
415
+ description: true,
416
+ tooltip: true,
417
+ },
418
+ },
419
+ {
420
+ id: 'feature-fallback',
421
+ name: 'FeatureFallback',
422
+ component: FeatureFallback,
423
+ cssFamily: 'other',
424
+ variants: {},
425
+ supportsCommonProps: {
426
+ icon: true,
427
+ },
428
+ },
429
+ {
430
+ id: 'skeleton',
431
+ name: 'Skeleton',
432
+ component: Skeleton,
433
+ cssFamily: 'other',
434
+ variants: {
435
+ variant: ['pulse', 'wave', 'shimmer', 'none'],
436
+ size: ['text', 'heading', 'avatar', 'button', 'card', 'image', 'custom'],
437
+ },
438
+ supportsCommonProps: {},
439
+ },
440
+ {
441
+ id: 'spinner',
442
+ name: 'Spinner',
443
+ component: Spinner,
444
+ cssFamily: 'other',
445
+ variants: {
446
+ variant: ['default', 'muted', 'primary', 'secondary', 'accent', 'success', 'warning', 'destructive'],
447
+ },
448
+ renderMode: 'overlay',
449
+ stateType: 'custom',
450
+ supportsCommonProps: {},
451
+ },
452
+ {
453
+ id: 'input',
454
+ name: 'Input',
455
+ component: Input,
456
+ cssFamily: 'input',
457
+ variants: {},
458
+ supportsCommonProps: {
459
+ placeholder: true,
460
+ },
461
+ },
462
+ {
463
+ id: 'label',
464
+ name: 'Label',
465
+ component: Label,
466
+ cssFamily: 'other',
467
+ variants: {},
468
+ supportsCommonProps: {
469
+ icon: true,
470
+ content: true,
471
+ },
472
+ },
473
+ {
474
+ id: 'password-input',
475
+ name: 'PasswordInput',
476
+ component: PasswordInput,
477
+ cssFamily: 'input',
478
+ variants: {},
479
+ supportsCommonProps: {
480
+ placeholder: true,
481
+ },
482
+ },
483
+ {
484
+ id: 'radio-group',
485
+ name: 'RadioGroup',
486
+ component: RadioGroup,
487
+ cssFamily: 'interactive',
488
+ variants: {
489
+ variant: ['default', 'primary', 'secondary', 'muted', 'accent', 'success', 'warning', 'destructive'],
490
+ },
491
+ propTypes: ['radioGroupItems'],
492
+ stateType: 'controlled-value',
493
+ defaultStateValue: 'option1',
494
+ supportsCommonProps: {},
495
+ },
496
+ {
497
+ id: 'checkbox',
498
+ name: 'Checkbox',
499
+ component: Checkbox,
500
+ cssFamily: 'input',
501
+ variants: {
502
+ variant: ['default', 'primary', 'secondary', 'muted', 'accent', 'success', 'warning', 'destructive'],
503
+ },
504
+ stateType: 'controlled-checked',
505
+ defaultStateValue: false,
506
+ showStateLabel: true,
507
+ supportsCommonProps: {
508
+ label: true,
509
+ },
510
+ },
511
+ {
512
+ id: 'switch',
513
+ name: 'Switch',
514
+ component: Switch,
515
+ cssFamily: 'input',
516
+ variants: {
517
+ variant: ['default', 'primary', 'secondary', 'muted', 'accent', 'success', 'warning', 'destructive'],
518
+ },
519
+ stateType: 'controlled-checked',
520
+ defaultStateValue: true,
521
+ showStateLabel: true,
522
+ supportsCommonProps: {},
523
+ },
524
+ {
525
+ id: 'slider',
526
+ name: 'Slider',
527
+ component: Slider,
528
+ cssFamily: 'input',
529
+ variants: {
530
+ variant: ['default', 'primary', 'secondary', 'muted', 'accent', 'success', 'warning', 'destructive'],
531
+ },
532
+ stateType: 'controlled-range',
533
+ defaultStateValue: [2],
534
+ supportsCommonProps: {},
535
+ customProps: {
536
+ min: 0,
537
+ max: 5,
538
+ step: 1,
539
+ showValue: true,
540
+ },
541
+ },
542
+ {
543
+ id: 'select',
544
+ name: 'Select',
545
+ component: Select,
546
+ cssFamily: 'input',
547
+ variants: {},
548
+ propTypes: ['selectOptions'],
549
+ stateType: 'controlled-value',
550
+ supportsCommonProps: {
551
+ placeholder: true,
552
+ },
553
+ },
554
+ {
555
+ id: 'combobox',
556
+ name: 'Combobox',
557
+ component: Combobox,
558
+ cssFamily: 'input',
559
+ variants: {},
560
+ propTypes: ['comboboxOptions'],
561
+ stateType: 'controlled-value',
562
+ supportsCommonProps: {
563
+ placeholder: true,
564
+ },
565
+ customProps: {
566
+ searchPlaceholder: 'Search...',
567
+ emptyMessage: 'No results found',
568
+ },
569
+ },
570
+ {
571
+ id: 'textarea',
572
+ name: 'Textarea',
573
+ component: Textarea,
574
+ cssFamily: 'input',
575
+ variants: {},
576
+ supportsCommonProps: {
577
+ placeholder: true,
578
+ },
579
+ },
580
+ {
581
+ id: 'alert-dialog',
582
+ name: 'AlertDialog',
583
+ component: AlertDialog,
584
+ cssFamily: 'surface',
585
+ variants: {},
586
+ propTypes: ['title', 'description', 'confirmLabel'],
587
+ needsTrigger: true,
588
+ triggerText: 'Trigger: Open AlertDialog',
589
+ supportsCommonProps: {
590
+ title: true,
591
+ description: true,
592
+ },
593
+ customProps: {
594
+ onConfirm: () => {},
595
+ onCancel: () => {},
596
+ },
597
+ },
598
+ {
599
+ id: 'context-menu',
600
+ name: 'ContextMenu',
601
+ component: ContextMenu,
602
+ cssFamily: 'floating',
603
+ variants: {},
604
+ needsTrigger: true,
605
+ triggerText: 'Trigger: Right click me',
606
+ supportsCommonProps: {},
607
+ customProps: {
608
+ items: [
609
+ { label: 'Item 1', onSelect: () => {} },
610
+ { label: 'Item 2', onSelect: () => {} },
611
+ { type: 'separator' },
612
+ { label: 'Item 3', onSelect: () => {} },
613
+ ],
614
+ },
615
+ },
616
+ {
617
+ id: 'dialog',
618
+ name: 'Dialog',
619
+ component: Dialog,
620
+ cssFamily: 'surface',
621
+ variants: {
622
+ variant: getVariantValues(DIALOG_VARIANT),
623
+ },
624
+ propTypes: ['title', 'description', 'content'],
625
+ needsTrigger: true,
626
+ triggerText: 'Open Dialog',
627
+ supportsCommonProps: {
628
+ title: true,
629
+ description: true,
630
+ content: true,
631
+ },
632
+ },
633
+ {
634
+ id: 'dropdown-menu',
635
+ name: 'DropdownMenu',
636
+ component: DropdownMenu,
637
+ cssFamily: 'floating',
638
+ variants: {},
639
+ needsTrigger: true,
640
+ triggerText: 'Trigger: Open DropdownMenu',
641
+ supportsCommonProps: {},
642
+ customProps: {
643
+ items: [
644
+ { label: 'Regular Item', onClick: () => {} },
645
+ { label: 'Separator below', onClick: () => {} },
646
+ { type: 'separator' },
647
+ { label: 'Destructive Item', variant: 'destructive', onClick: () => {} },
648
+ ],
649
+ },
650
+ },
651
+ {
652
+ id: 'hover-card',
653
+ name: 'HoverCard',
654
+ component: HoverCard,
655
+ cssFamily: 'floating',
656
+ variants: {},
657
+ propTypes: ['content'],
658
+ needsTrigger: true,
659
+ triggerText: 'Trigger: Hover me',
660
+ supportsCommonProps: {
661
+ content: true,
662
+ },
663
+ },
664
+ {
665
+ id: 'popover',
666
+ name: 'Popover',
667
+ component: Popover,
668
+ cssFamily: 'floating',
669
+ variants: {
670
+ side: ['top', 'right', 'bottom', 'left'],
671
+ variant: getVariantValues(POPOVER_VARIANT),
672
+ },
673
+ propTypes: ['content'],
674
+ needsTrigger: true,
675
+ triggerText: 'Open Popover',
676
+ supportsCommonProps: {
677
+ content: true,
678
+ },
679
+ },
680
+ {
681
+ id: 'sheet',
682
+ name: 'Sheet',
683
+ component: Sheet,
684
+ cssFamily: 'surface',
685
+ variants: {
686
+ side: ['top', 'bottom', 'left', 'right'],
687
+ variant: getVariantValues(SHEET_VARIANT),
688
+ },
689
+ propTypes: ['title', 'description', 'content'],
690
+ needsTrigger: true,
691
+ triggerText: 'Open Sheet',
692
+ supportsCommonProps: {
693
+ title: true,
694
+ description: true,
695
+ content: true,
696
+ },
697
+ },
698
+ {
699
+ id: 'tooltip',
700
+ name: 'Tooltip',
701
+ component: Tooltip,
702
+ cssFamily: 'floating',
703
+ variants: {
704
+ side: ['top', 'right', 'bottom', 'left'],
705
+ variant: getVariantValues(FLOATING_VARIANT),
706
+ },
707
+ needsTrigger: true,
708
+ triggerText: 'Trigger: Hover me',
709
+ supportsCommonProps: {
710
+ content: true,
711
+ },
712
+ },
713
+ {
714
+ id: 'call-to-action',
715
+ name: 'CallToAction',
716
+ component: CallToAction,
717
+ cssFamily: 'layout',
718
+ variants: {},
719
+ propTypes: ['title', 'subtitle', 'primaryAction', 'secondaryAction'],
720
+ supportsCommonProps: {
721
+ title: true,
722
+ },
723
+ },
724
+ {
725
+ id: 'hero-section',
726
+ name: 'HeroSection',
727
+ component: HeroSection,
728
+ cssFamily: 'layout',
729
+ variants: {},
730
+ supportsCommonProps: {
731
+ title: true,
732
+ },
733
+ customProps: {
734
+ subtitle: 'Premium defaults with gradient accent',
735
+ description: 'Swap content freely; supports CTA and secondary text.',
736
+ primaryActionLabel: 'Get started',
737
+ secondaryActionLabel: 'Learn more',
738
+ variant: 'accent',
739
+ },
740
+ },
741
+ {
742
+ id: 'scroll-area',
743
+ name: 'ScrollArea',
744
+ component: ScrollArea,
745
+ cssFamily: 'other',
746
+ variants: {},
747
+ supportsCommonProps: {},
748
+ },
749
+ {
750
+ id: 'section',
751
+ name: 'Section',
752
+ component: Section,
753
+ cssFamily: 'layout',
754
+ variants: {
755
+ tone: ['base', 'muted', 'elevated', 'contrast', 'accent'],
756
+ },
757
+ supportsCommonProps: {
758
+ title: true,
759
+ },
760
+ layoutDescription: 'Full-width container with padding, background, and optional separator. Use for page sections.',
761
+ },
762
+ {
763
+ id: 'accordion',
764
+ name: 'Accordion',
765
+ component: Accordion,
766
+ cssFamily: 'other',
767
+ variants: {
768
+ type: ['single', 'multiple'],
769
+ },
770
+ propTypes: ['accordionItems'],
771
+ supportsCommonProps: {
772
+ icon: true,
773
+ },
774
+ },
775
+ {
776
+ id: 'command',
777
+ name: 'Command',
778
+ component: Command,
779
+ cssFamily: 'floating',
780
+ variants: {},
781
+ propTypes: ['commandGroups', 'placeholder'],
782
+ supportsCommonProps: {
783
+ placeholder: true,
784
+ },
785
+ },
786
+ {
787
+ id: 'command-dialog',
788
+ name: 'CommandDialog',
789
+ component: CommandDialog,
790
+ cssFamily: 'floating',
791
+ variants: {},
792
+ propTypes: ['title', 'description', 'commandGroups', 'footer'],
793
+ needsTrigger: true,
794
+ triggerText: 'Open Command Palette',
795
+ supportsCommonProps: {
796
+ title: true,
797
+ description: true,
798
+ },
799
+ },
800
+ {
801
+ id: 'navigation-menu',
802
+ name: 'NavigationMenu',
803
+ component: NavigationMenu,
804
+ cssFamily: 'interactive',
805
+ variants: {},
806
+ supportsCommonProps: {},
807
+ customProps: {
808
+ items: [
809
+ { label: 'Home', path: '/home' },
810
+ {
811
+ label: 'Products',
812
+ children: [
813
+ { label: 'Framework', description: 'Core UI kit', path: '/products/framework' },
814
+ { label: 'CLI', description: 'Dev tooling', path: '/products/cli' },
815
+ ],
816
+ },
817
+ { label: 'Docs', path: '/docs' },
818
+ ],
819
+ },
820
+ },
821
+ {
822
+ id: 'pagination',
823
+ name: 'Pagination',
824
+ component: Pagination,
825
+ cssFamily: 'other',
826
+ variants: {},
827
+ stateType: 'custom',
828
+ supportsCommonProps: {},
829
+ customProps: {
830
+ totalPages: 10,
831
+ },
832
+ },
833
+ {
834
+ id: 'tabs',
835
+ name: 'Tabs',
836
+ component: Tabs,
837
+ cssFamily: 'other',
838
+ variants: {},
839
+ propTypes: ['tabsItems'],
840
+ supportsCommonProps: {},
841
+ customProps: {
842
+ defaultValue: 'tab1',
843
+ },
844
+ },
845
+ {
846
+ id: 'collapsible',
847
+ name: 'Collapsible',
848
+ component: Collapsible,
849
+ cssFamily: 'other',
850
+ variants: {},
851
+ propTypes: ['collapsibleContent'],
852
+ needsTrigger: true,
853
+ triggerText: 'View technical details',
854
+ supportsCommonProps: {
855
+ content: true,
856
+ },
857
+ customProps: {
858
+ defaultOpen: true,
859
+ },
860
+ },
861
+ {
862
+ id: 'description-list',
863
+ name: 'DescriptionList',
864
+ component: DescriptionList,
865
+ cssFamily: 'other',
866
+ variants: {},
867
+ propTypes: ['descriptionListItems'],
868
+ supportsCommonProps: {},
869
+ customProps: {
870
+ orientation: 'vertical',
871
+ },
872
+ },
873
+ {
874
+ id: 'grid',
875
+ name: 'Grid',
876
+ component: Grid,
877
+ cssFamily: 'layout',
878
+ variants: {},
879
+ supportsCommonProps: {},
880
+ layoutDescription: 'CSS Grid layout primitive for 2D layouts. Use for multi-column layouts or named areas.',
881
+ },
882
+ {
883
+ id: 'list',
884
+ name: 'List',
885
+ component: List,
886
+ cssFamily: 'other',
887
+ variants: {},
888
+ propTypes: ['listItems'],
889
+ supportsCommonProps: {},
890
+ },
891
+ {
892
+ id: 'video-player',
893
+ name: 'VideoPlayer',
894
+ component: VideoPlayer,
895
+ cssFamily: 'other',
896
+ variants: {},
897
+ supportsCommonProps: {
898
+ title: true,
899
+ },
900
+ customProps: {
901
+ url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',
902
+ modal: true,
903
+ },
904
+ },
905
+ {
906
+ id: 'visually-hidden',
907
+ name: 'VisuallyHidden',
908
+ component: VisuallyHidden,
909
+ cssFamily: 'other',
910
+ variants: {},
911
+ supportsCommonProps: {},
912
+ },
913
+ {
914
+ id: 'stack',
915
+ name: 'Stack',
916
+ component: Stack,
917
+ cssFamily: 'layout',
918
+ variants: {},
919
+ supportsCommonProps: {},
920
+ },
921
+ ];