ui-lab-registry 0.3.0 → 0.3.2

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 (569) hide show
  1. package/dist/component-dependencies.d.ts +0 -11
  2. package/dist/component-dependencies.d.ts.map +1 -1
  3. package/dist/component-dependencies.js +4 -4
  4. package/dist/component-dependencies.js.map +1 -1
  5. package/dist/component-order.js +3 -3
  6. package/dist/component-order.js.map +1 -1
  7. package/dist/components/Anchor/index.d.ts +1 -1
  8. package/dist/components/Anchor/index.d.ts.map +1 -1
  9. package/dist/components/Anchor/index.js.map +1 -1
  10. package/dist/components/Badge/index.d.ts +1 -1
  11. package/dist/components/Badge/index.d.ts.map +1 -1
  12. package/dist/components/Badge/index.js.map +1 -1
  13. package/dist/components/Banner/index.d.ts +1 -1
  14. package/dist/components/Banner/index.d.ts.map +1 -1
  15. package/dist/components/Banner/index.js.map +1 -1
  16. package/dist/components/Button/index.d.ts +1 -1
  17. package/dist/components/Button/index.d.ts.map +1 -1
  18. package/dist/components/Button/index.js.map +1 -1
  19. package/dist/components/Card/index.d.ts +1 -1
  20. package/dist/components/Card/index.d.ts.map +1 -1
  21. package/dist/components/Card/index.js.map +1 -1
  22. package/dist/components/Checkbox/examples/index.d.ts +4 -4
  23. package/dist/components/Checkbox/examples/index.d.ts.map +1 -1
  24. package/dist/components/Checkbox/examples/index.js.map +1 -1
  25. package/dist/components/Checkbox/index.d.ts +1 -1
  26. package/dist/components/Checkbox/index.d.ts.map +1 -1
  27. package/dist/components/Checkbox/index.js.map +1 -1
  28. package/dist/components/Color/examples/03-format-switching.d.ts +0 -4
  29. package/dist/components/Color/examples/03-format-switching.d.ts.map +1 -1
  30. package/dist/components/Color/examples/03-format-switching.js +2 -2
  31. package/dist/components/Color/examples/03-format-switching.js.map +1 -1
  32. package/dist/components/Color/examples/index.d.ts +3 -3
  33. package/dist/components/Color/examples/index.d.ts.map +1 -1
  34. package/dist/components/Color/examples/index.js.map +1 -1
  35. package/dist/components/Color/examples.json +0 -5
  36. package/dist/components/Color/index.d.ts +1 -1
  37. package/dist/components/Color/index.d.ts.map +1 -1
  38. package/dist/components/Color/index.js.map +1 -1
  39. package/dist/components/Command/examples/01-basic-command.js +1 -1
  40. package/dist/components/Command/examples/01-basic-command.js.map +1 -1
  41. package/dist/components/Command/examples/index.d.ts +2 -2
  42. package/dist/components/Command/examples/index.d.ts.map +1 -1
  43. package/dist/components/Command/examples/index.js.map +1 -1
  44. package/dist/components/Command/examples.json +1 -1
  45. package/dist/components/Command/index.d.ts +1 -1
  46. package/dist/components/Command/index.d.ts.map +1 -1
  47. package/dist/components/Command/index.js +3 -3
  48. package/dist/components/Command/index.js.map +1 -1
  49. package/dist/components/Confirm/examples/index.d.ts +2 -2
  50. package/dist/components/Confirm/examples/index.d.ts.map +1 -1
  51. package/dist/components/Confirm/examples/index.js.map +1 -1
  52. package/dist/components/Confirm/index.d.ts +1 -1
  53. package/dist/components/Confirm/index.d.ts.map +1 -1
  54. package/dist/components/Confirm/index.js.map +1 -1
  55. package/dist/components/Date/index.js.map +1 -1
  56. package/dist/components/Divider/examples/02-pattern-variants.js +1 -1
  57. package/dist/components/Divider/examples.json +1 -1
  58. package/dist/components/Divider/index.d.ts +1 -1
  59. package/dist/components/Divider/index.d.ts.map +1 -1
  60. package/dist/components/Divider/index.js.map +1 -1
  61. package/dist/components/Expand/index.d.ts +1 -1
  62. package/dist/components/Expand/index.d.ts.map +1 -1
  63. package/dist/components/Expand/index.js.map +1 -1
  64. package/dist/components/Flex/index.d.ts +1 -1
  65. package/dist/components/Flex/index.d.ts.map +1 -1
  66. package/dist/components/Flex/index.js.map +1 -1
  67. package/dist/components/Frame/index.d.ts +1 -1
  68. package/dist/components/Frame/index.d.ts.map +1 -1
  69. package/dist/components/Frame/index.js.map +1 -1
  70. package/dist/components/Gallery/index.d.ts +1 -1
  71. package/dist/components/Gallery/index.d.ts.map +1 -1
  72. package/dist/components/Gallery/index.js.map +1 -1
  73. package/dist/components/Grid/examples/01-basic-grid.js +1 -1
  74. package/dist/components/Grid/examples/01-basic-grid.js.map +1 -1
  75. package/dist/components/Grid/examples.json +1 -1
  76. package/dist/components/Grid/index.d.ts +1 -1
  77. package/dist/components/Grid/index.d.ts.map +1 -1
  78. package/dist/components/Grid/index.js +2 -2
  79. package/dist/components/Grid/index.js.map +1 -1
  80. package/dist/components/Group/index.d.ts +1 -1
  81. package/dist/components/Group/index.d.ts.map +1 -1
  82. package/dist/components/Group/index.js.map +1 -1
  83. package/dist/components/Input/examples/02-validation.js +1 -1
  84. package/dist/components/Input/examples/02-validation.js.map +1 -1
  85. package/dist/components/Input/examples.json +1 -1
  86. package/dist/components/Input/index.d.ts +1 -1
  87. package/dist/components/Input/index.d.ts.map +1 -1
  88. package/dist/components/Input/index.js.map +1 -1
  89. package/dist/components/Label/index.d.ts +1 -1
  90. package/dist/components/Label/index.d.ts.map +1 -1
  91. package/dist/components/Label/index.js.map +1 -1
  92. package/dist/components/List/index.d.ts +1 -1
  93. package/dist/components/List/index.d.ts.map +1 -1
  94. package/dist/components/List/index.js.map +1 -1
  95. package/dist/components/Mask/index.d.ts +1 -1
  96. package/dist/components/Mask/index.d.ts.map +1 -1
  97. package/dist/components/Mask/index.js.map +1 -1
  98. package/dist/components/Menu/index.d.ts +1 -1
  99. package/dist/components/Menu/index.d.ts.map +1 -1
  100. package/dist/components/Menu/index.js.map +1 -1
  101. package/dist/components/Modal/index.d.ts +1 -1
  102. package/dist/components/Modal/index.d.ts.map +1 -1
  103. package/dist/components/Modal/index.js.map +1 -1
  104. package/dist/components/Path/examples.json +0 -5
  105. package/dist/components/Path/index.d.ts +1 -1
  106. package/dist/components/Path/index.d.ts.map +1 -1
  107. package/dist/components/Path/index.js.map +1 -1
  108. package/dist/components/Popover/index.d.ts +1 -1
  109. package/dist/components/Popover/index.d.ts.map +1 -1
  110. package/dist/components/Popover/index.js.map +1 -1
  111. package/dist/components/Progress/index.d.ts +1 -1
  112. package/dist/components/Progress/index.d.ts.map +1 -1
  113. package/dist/components/Progress/index.js.map +1 -1
  114. package/dist/components/Radio/index.d.ts +1 -1
  115. package/dist/components/Radio/index.d.ts.map +1 -1
  116. package/dist/components/Radio/index.js +1 -1
  117. package/dist/components/Radio/index.js.map +1 -1
  118. package/dist/components/Scroll/index.d.ts +1 -1
  119. package/dist/components/Scroll/index.d.ts.map +1 -1
  120. package/dist/components/Scroll/index.js.map +1 -1
  121. package/dist/components/Select/examples/02-searchable-select.js +1 -1
  122. package/dist/components/Select/examples/02-searchable-select.js.map +1 -1
  123. package/dist/components/Select/examples.json +1 -1
  124. package/dist/components/Select/index.d.ts +1 -1
  125. package/dist/components/Select/index.d.ts.map +1 -1
  126. package/dist/components/Select/index.js.map +1 -1
  127. package/dist/components/Slider/index.d.ts +1 -1
  128. package/dist/components/Slider/index.d.ts.map +1 -1
  129. package/dist/components/Slider/index.js.map +1 -1
  130. package/dist/components/Switch/index.d.ts +1 -1
  131. package/dist/components/Switch/index.d.ts.map +1 -1
  132. package/dist/components/Switch/index.js.map +1 -1
  133. package/dist/components/Table/index.d.ts +1 -1
  134. package/dist/components/Table/index.d.ts.map +1 -1
  135. package/dist/components/Table/index.js.map +1 -1
  136. package/dist/components/Tabs/examples/01-basic-tabs.js +2 -2
  137. package/dist/components/Tabs/examples/01-basic-tabs.js.map +1 -1
  138. package/dist/components/Tabs/examples/02-vertical-tabs.js +2 -2
  139. package/dist/components/Tabs/examples/02-vertical-tabs.js.map +1 -1
  140. package/dist/components/Tabs/examples.json +2 -2
  141. package/dist/components/Tabs/index.d.ts +1 -1
  142. package/dist/components/Tabs/index.d.ts.map +1 -1
  143. package/dist/components/Tabs/index.js +11 -11
  144. package/dist/components/Tabs/index.js.map +1 -1
  145. package/dist/components/Textarea/index.d.ts +1 -1
  146. package/dist/components/Textarea/index.d.ts.map +1 -1
  147. package/dist/components/Textarea/index.js.map +1 -1
  148. package/dist/components/Toast/index.d.ts +1 -1
  149. package/dist/components/Toast/index.d.ts.map +1 -1
  150. package/dist/components/Toast/index.js.map +1 -1
  151. package/dist/components/Tooltip/index.d.ts +1 -1
  152. package/dist/components/Tooltip/index.d.ts.map +1 -1
  153. package/dist/components/Tooltip/index.js.map +1 -1
  154. package/dist/elements/AI/AIChatInput/index.d.ts +1 -1
  155. package/dist/elements/AI/AIChatInput/index.d.ts.map +1 -1
  156. package/dist/elements/AI/AIChatInput/index.js +1 -1
  157. package/dist/elements/AI/AIChatInput/variations/01-basic/index.js.map +1 -1
  158. package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/index.js +1 -1
  159. package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/index.js.map +1 -1
  160. package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.js +1 -1
  161. package/dist/elements/AI/AIChatInput/variations.json +3 -3
  162. package/dist/elements/AI/ChainOfThought/index.d.ts +1 -1
  163. package/dist/elements/AI/ChainOfThought/index.d.ts.map +1 -1
  164. package/dist/elements/AI/ChainOfThought/index.js +1 -1
  165. package/dist/elements/AI/ChainOfThought/variations/01-basic/index.js.map +1 -1
  166. package/dist/elements/AI/ChainOfThought/variations/02-with-details/index.js.map +1 -1
  167. package/dist/elements/AI/ChainOfThought/variations.json +2 -2
  168. package/dist/elements/AI/Chat/index.d.ts +1 -1
  169. package/dist/elements/AI/Chat/index.d.ts.map +1 -1
  170. package/dist/elements/AI/Chat/index.js +1 -1
  171. package/dist/elements/AI/Chat/variations/01-basic/index.js.map +1 -1
  172. package/dist/elements/AI/Chat/variations/02-with-actions/index.js +1 -1
  173. package/dist/elements/AI/Chat/variations/02-with-actions/index.js.map +1 -1
  174. package/dist/elements/AI/Chat/variations.json +2 -2
  175. package/dist/elements/Documentation/CopyPage/index.d.ts +1 -1
  176. package/dist/elements/Documentation/CopyPage/index.d.ts.map +1 -1
  177. package/dist/elements/Documentation/CopyPage/index.js +1 -1
  178. package/dist/elements/Documentation/CopyPage/variations/01-basic/index.js.map +1 -1
  179. package/dist/elements/Documentation/CopyPage/variations/02-with-success/index.js.map +1 -1
  180. package/dist/elements/Documentation/CopyPage/variations.json +2 -2
  181. package/dist/elements/Documentation/NextArticle/index.d.ts +1 -1
  182. package/dist/elements/Documentation/NextArticle/index.d.ts.map +1 -1
  183. package/dist/elements/Documentation/NextArticle/index.js +1 -1
  184. package/dist/elements/Documentation/NextArticle/variations/01-basic/index.js.map +1 -1
  185. package/dist/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.js +1 -1
  186. package/dist/elements/Documentation/NextArticle/variations/02-with-icon/index.js.map +1 -1
  187. package/dist/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.js +1 -1
  188. package/dist/elements/Documentation/NextArticle/variations.json +4 -4
  189. package/dist/elements/Documentation/TOC/index.d.ts +1 -1
  190. package/dist/elements/Documentation/TOC/index.d.ts.map +1 -1
  191. package/dist/elements/Documentation/TOC/index.js +1 -1
  192. package/dist/elements/Documentation/TOC/variations/01-basic/index.js.map +1 -1
  193. package/dist/elements/Documentation/TOC/variations/02-expanded/index.js.map +1 -1
  194. package/dist/elements/Documentation/TOC/variations.json +2 -2
  195. package/dist/elements/Elements/Carousel/index.d.ts +1 -1
  196. package/dist/elements/Elements/Carousel/index.d.ts.map +1 -1
  197. package/dist/elements/Elements/Rating/index.d.ts +1 -1
  198. package/dist/elements/Elements/Rating/index.d.ts.map +1 -1
  199. package/dist/elements/Elements/Timeline/index.d.ts +1 -1
  200. package/dist/elements/Elements/Timeline/index.d.ts.map +1 -1
  201. package/dist/elements/Elements/TreeView/index.d.ts +1 -1
  202. package/dist/elements/Elements/TreeView/index.d.ts.map +1 -1
  203. package/dist/elements/categories.d.ts +1 -1
  204. package/dist/elements/categories.d.ts.map +1 -1
  205. package/dist/elements/foundation/Header/index.d.ts +1 -1
  206. package/dist/elements/foundation/Header/index.d.ts.map +1 -1
  207. package/dist/elements/foundation/Header/variations/01-basic/index.js.map +1 -1
  208. package/dist/elements/foundation/Header/variations.json +1 -1
  209. package/dist/elements/foundation/Page/index.d.ts +1 -1
  210. package/dist/elements/foundation/Page/index.d.ts.map +1 -1
  211. package/dist/elements/foundation/Page/variations/01-basic/index.js.map +1 -1
  212. package/dist/elements/foundation/Page/variations.json +1 -1
  213. package/dist/elements/foundation/Sidebar/index.d.ts +1 -1
  214. package/dist/elements/foundation/Sidebar/index.d.ts.map +1 -1
  215. package/dist/elements/foundation/Sidebar/variations/01-basic/index.js.map +1 -1
  216. package/dist/elements/foundation/Sidebar/variations.json +1 -1
  217. package/dist/generated-controls.d.ts +3 -0
  218. package/dist/generated-controls.d.ts.map +1 -0
  219. package/dist/generated-controls.js +161 -0
  220. package/dist/generated-controls.js.map +1 -0
  221. package/dist/generated-data.d.ts.map +1 -1
  222. package/dist/generated-data.js +214 -948
  223. package/dist/generated-data.js.map +1 -1
  224. package/dist/generated-styles.d.ts.map +1 -1
  225. package/dist/generated-styles.js +177 -69
  226. package/dist/generated-styles.js.map +1 -1
  227. package/dist/generated-styles.json +177 -69
  228. package/dist/index.d.ts +1 -0
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +1 -0
  231. package/dist/index.js.map +1 -1
  232. package/dist/patterns/data/data-table-row/metadata.json +3 -3
  233. package/dist/patterns/data/data-table-row/variations/expandable/index.js +1 -1
  234. package/dist/patterns/data/data-table-row/variations/main/index.js +1 -1
  235. package/dist/patterns/data/data-table-row/variations/selectable/index.js +1 -1
  236. package/dist/patterns/data/progress-metric/metadata.json +3 -3
  237. package/dist/patterns/data/progress-metric/variations/colored/index.js +1 -1
  238. package/dist/patterns/data/progress-metric/variations/main/index.js +1 -1
  239. package/dist/patterns/data/progress-metric/variations/stacked/index.js +1 -1
  240. package/dist/patterns/form/labeled-field/metadata.json +4 -4
  241. package/dist/patterns/form/labeled-field/variations/main/index.js +1 -1
  242. package/dist/patterns/form/labeled-field/variations/with-error/index.js +1 -1
  243. package/dist/patterns/form/labeled-field/variations/with-hint/index.js +1 -1
  244. package/dist/patterns/form/select-row/metadata.json +2 -2
  245. package/dist/patterns/form/select-row/variations/main/index.js +1 -1
  246. package/dist/patterns/form/select-row/variations/with-icon/index.js +1 -1
  247. package/dist/patterns/form/toggle-setting-row/metadata.json +2 -2
  248. package/dist/patterns/form/toggle-setting-row/variations/destructive/index.js +1 -1
  249. package/dist/patterns/form/toggle-setting-row/variations/main/index.js +1 -1
  250. package/dist/patterns/interaction/icon-action-bar/variations/compact/index.js +1 -1
  251. package/dist/patterns/layout/media-object/metadata.json +1 -1
  252. package/dist/patterns/layout/media-object/variations/sm/index.js +1 -1
  253. package/dist/patterns/layout/split-row/metadata.json +3 -3
  254. package/dist/patterns/layout/split-row/variations/actions/index.js +1 -1
  255. package/dist/patterns/layout/split-row/variations/main/index.js +1 -1
  256. package/dist/patterns/layout/split-row/variations/meta/index.js +1 -1
  257. package/dist/patterns/layout/stat-block/metadata.json +3 -3
  258. package/dist/patterns/layout/stat-block/variations/compact/index.js +1 -1
  259. package/dist/patterns/layout/stat-block/variations/main/index.js +1 -1
  260. package/dist/patterns/layout/stat-block/variations/with-icon/index.js +1 -1
  261. package/dist/providers/Theme/examples/01-provider-setup.d.ts +1 -1
  262. package/dist/providers/Theme/examples/index.d.ts +3 -3
  263. package/dist/providers/Theme/examples/index.d.ts.map +1 -1
  264. package/dist/providers/Theme/examples/index.js.map +1 -1
  265. package/dist/registry.d.ts.map +1 -1
  266. package/dist/registry.js +18 -28
  267. package/dist/registry.js.map +1 -1
  268. package/dist/sections/CTA/index.d.ts +1 -1
  269. package/dist/sections/CTA/index.d.ts.map +1 -1
  270. package/dist/sections/CTA/variations/02-split/index.js +1 -1
  271. package/dist/sections/CTA/variations.json +1 -1
  272. package/dist/sections/Features/index.d.ts +1 -1
  273. package/dist/sections/Features/index.d.ts.map +1 -1
  274. package/dist/sections/Hero/index.d.ts +1 -1
  275. package/dist/sections/Hero/index.d.ts.map +1 -1
  276. package/dist/sections/Pricing/index.d.ts +1 -1
  277. package/dist/sections/Pricing/index.d.ts.map +1 -1
  278. package/dist/sections/Pricing/variations/01-cards/index.js +1 -1
  279. package/dist/sections/Pricing/variations/02-comparison/index.js +1 -1
  280. package/dist/sections/Pricing/variations.json +2 -2
  281. package/dist/sections/Testimonials/index.d.ts +1 -1
  282. package/dist/sections/Testimonials/index.d.ts.map +1 -1
  283. package/dist/sections/categories.d.ts +0 -11
  284. package/dist/sections/categories.d.ts.map +1 -1
  285. package/dist/sections/categories.js +2 -2
  286. package/dist/sections/categories.js.map +1 -1
  287. package/dist/starters/Astro/index.d.ts +1 -1
  288. package/dist/starters/Astro/index.d.ts.map +1 -1
  289. package/dist/starters/Blog/index.d.ts +1 -1
  290. package/dist/starters/Blog/index.d.ts.map +1 -1
  291. package/dist/starters/CRM/index.d.ts +1 -1
  292. package/dist/starters/CRM/index.d.ts.map +1 -1
  293. package/dist/starters/Documentation/index.d.ts +1 -1
  294. package/dist/starters/Documentation/index.d.ts.map +1 -1
  295. package/dist/starters/NextJS/index.d.ts +1 -1
  296. package/dist/starters/NextJS/index.d.ts.map +1 -1
  297. package/dist/starters/NextJS/index.js +1 -1
  298. package/dist/starters/Productivity/index.d.ts +1 -1
  299. package/dist/starters/Productivity/index.d.ts.map +1 -1
  300. package/dist/starters/Tauri/index.d.ts +1 -1
  301. package/dist/starters/Tauri/index.d.ts.map +1 -1
  302. package/dist/starters/Vite/index.d.ts +1 -1
  303. package/dist/starters/Vite/index.d.ts.map +1 -1
  304. package/dist/types.d.ts +0 -6
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/utils/get-category-icon.d.ts +1 -1
  307. package/dist/utils/get-category-icon.d.ts.map +1 -1
  308. package/dist/utils/load-component-examples.d.ts +3 -2
  309. package/dist/utils/load-component-examples.d.ts.map +1 -1
  310. package/package.json +3 -7
  311. package/src/component-dependencies.ts +4 -4
  312. package/src/component-order.ts +3 -3
  313. package/src/components/Anchor/index.tsx +2 -2
  314. package/src/components/Anchor/metadata.json +1 -1
  315. package/src/components/Badge/index.tsx +2 -2
  316. package/src/components/Banner/index.tsx +2 -2
  317. package/src/components/Banner/metadata.json +1 -1
  318. package/src/components/Button/index.tsx +2 -2
  319. package/src/components/Card/index.tsx +2 -2
  320. package/src/components/Card/metadata.json +1 -1
  321. package/src/components/Checkbox/examples/index.ts +4 -4
  322. package/src/components/Checkbox/index.tsx +2 -2
  323. package/src/components/Code/metadata.json +1 -1
  324. package/src/components/Color/examples/03-format-switching.tsx +3 -3
  325. package/src/components/Color/examples/index.ts +3 -3
  326. package/src/components/Color/examples.json +0 -5
  327. package/src/components/Color/index.tsx +2 -2
  328. package/src/components/Command/examples/01-basic-command.tsx +1 -1
  329. package/src/components/Command/examples/index.ts +2 -2
  330. package/src/components/Command/examples.json +1 -1
  331. package/src/components/Command/index.tsx +5 -5
  332. package/src/components/Confirm/examples/index.ts +2 -2
  333. package/src/components/Confirm/index.tsx +2 -2
  334. package/src/components/Date/index.tsx +1 -1
  335. package/src/components/Date/metadata.json +1 -1
  336. package/src/components/Divider/examples/02-pattern-variants.tsx +3 -3
  337. package/src/components/Divider/examples.json +1 -1
  338. package/src/components/Divider/index.tsx +2 -2
  339. package/src/components/Expand/index.tsx +2 -2
  340. package/src/components/Flex/index.tsx +2 -2
  341. package/src/components/Flex/metadata.json +1 -1
  342. package/src/components/Frame/index.tsx +2 -2
  343. package/src/components/Gallery/index.tsx +2 -2
  344. package/src/components/Gallery/metadata.json +1 -1
  345. package/src/components/Grid/examples/01-basic-grid.tsx +1 -1
  346. package/src/components/Grid/examples.json +1 -1
  347. package/src/components/Grid/index.tsx +5 -5
  348. package/src/components/Group/index.tsx +2 -2
  349. package/src/components/Group/metadata.json +1 -1
  350. package/src/components/Input/examples/02-validation.tsx +2 -2
  351. package/src/components/Input/examples.json +1 -1
  352. package/src/components/Input/index.tsx +2 -2
  353. package/src/components/Label/index.tsx +2 -2
  354. package/src/components/List/index.tsx +2 -2
  355. package/src/components/List/metadata.json +1 -1
  356. package/src/components/Mask/index.tsx +2 -2
  357. package/src/components/Menu/index.tsx +2 -2
  358. package/src/components/Modal/index.tsx +2 -2
  359. package/src/components/Page/metadata.json +1 -1
  360. package/src/components/Panel/metadata.json +2 -2
  361. package/src/components/Path/examples.json +0 -5
  362. package/src/components/Path/index.tsx +2 -2
  363. package/src/components/Popover/index.tsx +2 -2
  364. package/src/components/Progress/index.tsx +3 -3
  365. package/src/components/Radio/index.tsx +5 -5
  366. package/src/components/Scroll/index.tsx +2 -2
  367. package/src/components/Select/examples/02-searchable-select.tsx +1 -1
  368. package/src/components/Select/examples.json +1 -1
  369. package/src/components/Select/index.tsx +2 -2
  370. package/src/components/Slider/index.tsx +2 -2
  371. package/src/components/Switch/index.tsx +2 -2
  372. package/src/components/Table/index.tsx +2 -2
  373. package/src/components/Tabs/examples/01-basic-tabs.tsx +12 -12
  374. package/src/components/Tabs/examples/02-vertical-tabs.tsx +19 -19
  375. package/src/components/Tabs/examples.json +2 -2
  376. package/src/components/Tabs/index.tsx +47 -47
  377. package/src/components/Textarea/index.tsx +2 -2
  378. package/src/components/Toast/index.tsx +2 -2
  379. package/src/components/Tooltip/index.tsx +2 -2
  380. package/src/elements/AI/AIChatInput/index.tsx +3 -3
  381. package/src/elements/AI/AIChatInput/variations/01-basic/index.tsx +1 -1
  382. package/src/elements/AI/AIChatInput/variations/02-with-suggestions/index.tsx +2 -2
  383. package/src/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.tsx +1 -1
  384. package/src/elements/AI/AIChatInput/variations.json +3 -3
  385. package/src/elements/AI/ChainOfThought/index.tsx +2 -2
  386. package/src/elements/AI/ChainOfThought/variations/01-basic/index.tsx +1 -1
  387. package/src/elements/AI/ChainOfThought/variations/02-with-details/index.tsx +1 -1
  388. package/src/elements/AI/ChainOfThought/variations.json +2 -2
  389. package/src/elements/AI/Chat/index.tsx +5 -5
  390. package/src/elements/AI/Chat/variations/01-basic/index.tsx +3 -3
  391. package/src/elements/AI/Chat/variations/02-with-actions/index.tsx +6 -6
  392. package/src/elements/AI/Chat/variations.json +2 -2
  393. package/src/elements/Documentation/CopyPage/index.tsx +2 -2
  394. package/src/elements/Documentation/CopyPage/variations/01-basic/index.tsx +1 -1
  395. package/src/elements/Documentation/CopyPage/variations/02-with-success/index.tsx +1 -1
  396. package/src/elements/Documentation/CopyPage/variations.json +2 -2
  397. package/src/elements/Documentation/NextArticle/index.tsx +2 -2
  398. package/src/elements/Documentation/NextArticle/variations/01-basic/index.tsx +1 -1
  399. package/src/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.tsx +1 -1
  400. package/src/elements/Documentation/NextArticle/variations/02-with-icon/index.tsx +1 -1
  401. package/src/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.tsx +1 -1
  402. package/src/elements/Documentation/NextArticle/variations.json +4 -4
  403. package/src/elements/Documentation/TOC/index.tsx +5 -5
  404. package/src/elements/Documentation/TOC/variations/01-basic/index.tsx +1 -1
  405. package/src/elements/Documentation/TOC/variations/02-expanded/index.tsx +1 -1
  406. package/src/elements/Documentation/TOC/variations.json +2 -2
  407. package/src/elements/Elements/Carousel/index.tsx +1 -1
  408. package/src/elements/Elements/Rating/index.tsx +1 -1
  409. package/src/elements/Elements/Timeline/index.tsx +1 -1
  410. package/src/elements/Elements/TreeView/index.tsx +1 -1
  411. package/src/elements/categories.ts +1 -1
  412. package/src/elements/foundation/Header/index.tsx +1 -1
  413. package/src/elements/foundation/Header/variations/01-basic/index.tsx +1 -1
  414. package/src/elements/foundation/Header/variations.json +1 -1
  415. package/src/elements/foundation/Page/index.tsx +1 -1
  416. package/src/elements/foundation/Page/variations/01-basic/index.tsx +1 -1
  417. package/src/elements/foundation/Page/variations.json +1 -1
  418. package/src/elements/foundation/Sidebar/index.tsx +1 -1
  419. package/src/elements/foundation/Sidebar/variations/01-basic/index.tsx +1 -1
  420. package/src/elements/foundation/Sidebar/variations.json +1 -1
  421. package/src/generated-controls.ts +194 -0
  422. package/src/generated-data.ts +214 -948
  423. package/src/generated-styles.ts +177 -69
  424. package/src/index.ts +1 -0
  425. package/src/patterns/data/data-table-row/metadata.json +4 -4
  426. package/src/patterns/data/data-table-row/variations/expandable/index.tsx +3 -3
  427. package/src/patterns/data/data-table-row/variations/main/index.tsx +2 -2
  428. package/src/patterns/data/data-table-row/variations/selectable/index.tsx +2 -2
  429. package/src/patterns/data/progress-metric/metadata.json +4 -4
  430. package/src/patterns/data/progress-metric/variations/colored/index.tsx +2 -2
  431. package/src/patterns/data/progress-metric/variations/main/index.tsx +2 -2
  432. package/src/patterns/data/progress-metric/variations/stacked/index.tsx +2 -2
  433. package/src/patterns/form/labeled-field/metadata.json +5 -5
  434. package/src/patterns/form/labeled-field/variations/main/index.tsx +1 -1
  435. package/src/patterns/form/labeled-field/variations/with-error/index.tsx +1 -1
  436. package/src/patterns/form/labeled-field/variations/with-hint/index.tsx +1 -1
  437. package/src/patterns/form/select-row/metadata.json +3 -3
  438. package/src/patterns/form/select-row/variations/main/index.tsx +1 -1
  439. package/src/patterns/form/select-row/variations/with-icon/index.tsx +1 -1
  440. package/src/patterns/form/toggle-setting-row/metadata.json +3 -3
  441. package/src/patterns/form/toggle-setting-row/variations/destructive/index.tsx +1 -1
  442. package/src/patterns/form/toggle-setting-row/variations/main/index.tsx +1 -1
  443. package/src/patterns/interaction/icon-action-bar/variations/compact/index.tsx +1 -1
  444. package/src/patterns/layout/media-object/metadata.json +2 -2
  445. package/src/patterns/layout/media-object/variations/sm/index.tsx +2 -2
  446. package/src/patterns/layout/split-row/metadata.json +4 -4
  447. package/src/patterns/layout/split-row/variations/actions/index.tsx +1 -1
  448. package/src/patterns/layout/split-row/variations/main/index.tsx +2 -2
  449. package/src/patterns/layout/split-row/variations/meta/index.tsx +3 -3
  450. package/src/patterns/layout/stat-block/metadata.json +4 -4
  451. package/src/patterns/layout/stat-block/variations/compact/index.tsx +1 -1
  452. package/src/patterns/layout/stat-block/variations/main/index.tsx +1 -1
  453. package/src/patterns/layout/stat-block/variations/with-icon/index.tsx +1 -1
  454. package/src/registry.ts +18 -28
  455. package/src/sections/CTA/index.tsx +1 -1
  456. package/src/sections/CTA/variations/02-split/index.tsx +1 -1
  457. package/src/sections/CTA/variations.json +1 -1
  458. package/src/sections/Features/index.tsx +1 -1
  459. package/src/sections/Hero/index.tsx +1 -1
  460. package/src/sections/Pricing/index.tsx +1 -1
  461. package/src/sections/Pricing/variations/01-cards/index.tsx +1 -1
  462. package/src/sections/Pricing/variations/02-comparison/index.tsx +1 -1
  463. package/src/sections/Pricing/variations.json +2 -2
  464. package/src/sections/Testimonials/index.tsx +1 -1
  465. package/src/sections/categories.ts +2 -2
  466. package/src/starters/Astro/index.tsx +1 -1
  467. package/src/starters/Blog/index.tsx +1 -1
  468. package/src/starters/CRM/index.tsx +1 -1
  469. package/src/starters/Documentation/index.tsx +1 -1
  470. package/src/starters/NextJS/index.tsx +3 -3
  471. package/src/starters/Productivity/index.tsx +1 -1
  472. package/src/starters/Tauri/index.tsx +1 -1
  473. package/src/starters/Vite/index.tsx +1 -1
  474. package/src/types.ts +1 -2
  475. package/src/utils/get-category-icon.tsx +1 -1
  476. package/src/utils/load-component-examples.ts +2 -2
  477. package/dist/components/Button/examples/02-joined-toggle-buttons.d.ts +0 -6
  478. package/dist/components/Button/examples/02-joined-toggle-buttons.d.ts.map +0 -1
  479. package/dist/components/Button/examples/02-joined-toggle-buttons.js +0 -15
  480. package/dist/components/Button/examples/02-joined-toggle-buttons.js.map +0 -1
  481. package/dist/components/Button/examples/03-split-action-button.d.ts +0 -6
  482. package/dist/components/Button/examples/03-split-action-button.d.ts.map +0 -1
  483. package/dist/components/Button/examples/03-split-action-button.js +0 -11
  484. package/dist/components/Button/examples/03-split-action-button.js.map +0 -1
  485. package/dist/components/Button/examples/04-toolbar-buttons.d.ts +0 -6
  486. package/dist/components/Button/examples/04-toolbar-buttons.d.ts.map +0 -1
  487. package/dist/components/Button/examples/04-toolbar-buttons.js +0 -11
  488. package/dist/components/Button/examples/04-toolbar-buttons.js.map +0 -1
  489. package/dist/components/Button/examples/05-pagination-controls.d.ts +0 -6
  490. package/dist/components/Button/examples/05-pagination-controls.d.ts.map +0 -1
  491. package/dist/components/Button/examples/05-pagination-controls.js +0 -16
  492. package/dist/components/Button/examples/05-pagination-controls.js.map +0 -1
  493. package/dist/components/Card/examples/02-user-profile-card.d.ts +0 -6
  494. package/dist/components/Card/examples/02-user-profile-card.d.ts.map +0 -1
  495. package/dist/components/Card/examples/02-user-profile-card.js +0 -12
  496. package/dist/components/Card/examples/02-user-profile-card.js.map +0 -1
  497. package/dist/components/Card/examples/03-settings-panel-card.d.ts +0 -6
  498. package/dist/components/Card/examples/03-settings-panel-card.d.ts.map +0 -1
  499. package/dist/components/Card/examples/03-settings-panel-card.js +0 -17
  500. package/dist/components/Card/examples/03-settings-panel-card.js.map +0 -1
  501. package/dist/components/Card/examples/04-task-progress-card.d.ts +0 -6
  502. package/dist/components/Card/examples/04-task-progress-card.d.ts.map +0 -1
  503. package/dist/components/Card/examples/04-task-progress-card.js +0 -12
  504. package/dist/components/Card/examples/04-task-progress-card.js.map +0 -1
  505. package/dist/components/Card/examples/05-data-summary-card.d.ts +0 -6
  506. package/dist/components/Card/examples/05-data-summary-card.d.ts.map +0 -1
  507. package/dist/components/Card/examples/05-data-summary-card.js +0 -12
  508. package/dist/components/Card/examples/05-data-summary-card.js.map +0 -1
  509. package/dist/components/CodeBlock/index.d.ts +0 -3
  510. package/dist/components/CodeBlock/index.d.ts.map +0 -1
  511. package/dist/components/CodeBlock/index.js +0 -58
  512. package/dist/components/CodeBlock/index.js.map +0 -1
  513. package/dist/components/Fold/examples/01-basic-fold.d.ts +0 -6
  514. package/dist/components/Fold/examples/01-basic-fold.d.ts.map +0 -1
  515. package/dist/components/Fold/examples/01-basic-fold.js +0 -11
  516. package/dist/components/Fold/examples/01-basic-fold.js.map +0 -1
  517. package/dist/components/Fold/examples/index.d.ts +0 -3
  518. package/dist/components/Fold/examples/index.d.ts.map +0 -1
  519. package/dist/components/Fold/examples/index.js +0 -4
  520. package/dist/components/Fold/examples/index.js.map +0 -1
  521. package/dist/components/Fold/examples.json +0 -7
  522. package/dist/components/Fold/index.d.ts +0 -6
  523. package/dist/components/Fold/index.d.ts.map +0 -1
  524. package/dist/components/Fold/index.js +0 -68
  525. package/dist/components/Fold/index.js.map +0 -1
  526. package/dist/components/Group/examples/02-active-buttons.d.ts +0 -6
  527. package/dist/components/Group/examples/02-active-buttons.d.ts.map +0 -1
  528. package/dist/components/Group/examples/02-active-buttons.js +0 -13
  529. package/dist/components/Group/examples/02-active-buttons.js.map +0 -1
  530. package/dist/components/Layout/index.d.ts +0 -5
  531. package/dist/components/Layout/index.d.ts.map +0 -1
  532. package/dist/components/Layout/index.js +0 -85
  533. package/dist/components/Layout/index.js.map +0 -1
  534. package/dist/components/Toast/examples/03-destructive-toast.d.ts +0 -6
  535. package/dist/components/Toast/examples/03-destructive-toast.d.ts.map +0 -1
  536. package/dist/components/Toast/examples/03-destructive-toast.js +0 -15
  537. package/dist/components/Toast/examples/03-destructive-toast.js.map +0 -1
  538. package/dist/patterns/content/feature-grid/example.d.ts +0 -6
  539. package/dist/patterns/content/feature-grid/example.d.ts.map +0 -1
  540. package/dist/patterns/content/feature-grid/example.js +0 -44
  541. package/dist/patterns/content/feature-grid/example.js.map +0 -1
  542. package/dist/patterns/content/feature-grid/metadata.json +0 -17
  543. package/dist/patterns/content/pricing-cards/example.d.ts +0 -6
  544. package/dist/patterns/content/pricing-cards/example.d.ts.map +0 -1
  545. package/dist/patterns/content/pricing-cards/example.js +0 -65
  546. package/dist/patterns/content/pricing-cards/example.js.map +0 -1
  547. package/dist/patterns/content/pricing-cards/metadata.json +0 -17
  548. package/dist/patterns/forms/settings-form-layout/example.d.ts +0 -6
  549. package/dist/patterns/forms/settings-form-layout/example.d.ts.map +0 -1
  550. package/dist/patterns/forms/settings-form-layout/example.js +0 -11
  551. package/dist/patterns/forms/settings-form-layout/example.js.map +0 -1
  552. package/dist/patterns/forms/settings-form-layout/metadata.json +0 -17
  553. package/dist/patterns/hero-landing/hero-with-cta/example.d.ts +0 -6
  554. package/dist/patterns/hero-landing/hero-with-cta/example.d.ts.map +0 -1
  555. package/dist/patterns/hero-landing/hero-with-cta/example.js +0 -11
  556. package/dist/patterns/hero-landing/hero-with-cta/example.js.map +0 -1
  557. package/dist/patterns/hero-landing/hero-with-cta/metadata.json +0 -17
  558. package/dist/patterns/navigation/sticky-header/example.d.ts +0 -6
  559. package/dist/patterns/navigation/sticky-header/example.d.ts.map +0 -1
  560. package/dist/patterns/navigation/sticky-header/example.js +0 -12
  561. package/dist/patterns/navigation/sticky-header/example.js.map +0 -1
  562. package/dist/patterns/navigation/sticky-header/metadata.json +0 -17
  563. package/dist/styles.css +0 -2042
  564. package/src/components/Path/examples/01-basic-breadcrumbs.tsx +0 -17
  565. package/src/providers/Theme/examples/01-provider-setup.tsx +0 -37
  566. package/src/providers/Theme/examples/02-toggle-component.tsx +0 -52
  567. package/src/providers/Theme/examples/03-advanced-patterns.tsx +0 -138
  568. package/src/providers/Theme/examples/index.ts +0 -3
  569. package/src/src/generated-styles.ts +0 -1359
package/src/registry.ts CHANGED
@@ -4,7 +4,7 @@ export const componentRegistry: ComponentRegistry = {
4
4
  anchor: {
5
5
  id: "anchor",
6
6
  name: "Anchor",
7
- description: "Styled link with custom underline animation and popover preview on hover.",
7
+ description: "Styled link with animated underline and hover popover preview.",
8
8
  category: "information",
9
9
  source: {
10
10
  "packageName": "ui-lab-components",
@@ -53,7 +53,7 @@ export const componentRegistry: ComponentRegistry = {
53
53
  banner: {
54
54
  id: "banner",
55
55
  name: "Banner",
56
- description: "Full-width banner for displaying important information, notifications, and alerts.",
56
+ description: "Full-width strip for surfacing alerts, notices, and messages.",
57
57
  category: "information",
58
58
  source: {
59
59
  "packageName": "ui-lab-components",
@@ -140,7 +140,7 @@ export const componentRegistry: ComponentRegistry = {
140
140
  code: {
141
141
  id: "code",
142
142
  name: "Code",
143
- description: "Syntax-highlighted code display with horizontal scroll, line expand, and copy button.",
143
+ description: "Displays syntax-highlighted code with a built-in copy button.",
144
144
  category: "display",
145
145
  experimental: true,
146
146
  source: {
@@ -178,11 +178,6 @@ export const componentRegistry: ComponentRegistry = {
178
178
  "title": "Opacity Slider",
179
179
  "description": "Color picker with opacity/alpha slider enabled for transparent color selection.",
180
180
  "code": "import React, { useState } from 'react';\nimport { Color } from 'ui-lab-components';\n\nexport default function Example() {\n const [color, setColor] = useState('rgba(106, 90, 205, 0.75)');\n\n return (\n <div className=\"p-4 space-y-4\">\n <div>\n <p className=\"text-sm text-foreground-300 mb-3\">Selected color: <code className=\"text-accent-500 font-mono\">{color}</code></p>\n <Color\n value={color}\n onChange={setColor}\n showOpacity\n format=\"rgb\"\n defaultValue=\"rgba(106, 90, 205, 0.75)\"\n />\n </div>\n </div>\n );\n}"
181
- },
182
- {
183
- "title": "Format Switching",
184
- "description": "Color picker with format toggle between hex and RGB to copy colors in different formats.",
185
- "code": "import React, { useState } from 'react';\nimport { Color } from 'ui-lab-components';\n\nexport default function Example() {\n const [color, setColor] = useState('#3B82F6');\n const [format, setFormat] = useState<'hex' | 'rgb'>('hex');\n\n const handleFormatChange = () => {\n setFormat(format === 'hex' ? 'rgb' : 'hex');\n };\n\n return (\n <div className=\"p-4 space-y-4\">\n <div>\n <div className=\"flex items-center justify-between mb-3\">\n <p className=\"text-sm text-foreground-300\">\n Selected color: <code className=\"text-accent-500 font-mono\">{color}</code>\n </p>\n <button\n onClick={handleFormatChange}\n className=\"px-3 py-1 text-xs bg-foreground-400 hover:bg-foreground-400 text-foreground-100 rounded transition-colors\"\n >\n Format: {format.toUpperCase()}\n </button>\n </div>\n <Color\n value={color}\n onChange={setColor}\n format={format}\n defaultValue=\"#3B82F6\"\n />\n </div>\n <div className=\"mt-4 p-3 bg-foreground-400 rounded border border-foreground-400\">\n <p className=\"text-xs text-foreground-300\">\n <strong>Tip:</strong> Click the format button to switch between hex and RGB output formats.\n This is useful when you need to copy colors in different formats for different contexts.\n </p>\n </div>\n </div>\n );\n}"
186
181
  }
187
182
  ],
188
183
  },
@@ -205,7 +200,7 @@ export const componentRegistry: ComponentRegistry = {
205
200
  {
206
201
  "title": "Basic Command Palette",
207
202
  "description": "A searchable command palette with keyboard shortcuts. Use Cmd+K (or Ctrl+K) to open.",
208
- "code": "'use client';\n\nimport React from 'react';\nimport { Command, Button, Badge } from 'ui-lab-components';\n\nexport default function Example() {\n const [open, setOpen] = React.useState(false);\n\n const commands = [\n {\n id: 'search',\n label: 'Search',\n description: 'Search documents',\n shortcut: '⌘F',\n action: () => console.log('Search'),\n },\n {\n id: 'create',\n label: 'Create new',\n description: 'Create a new document',\n shortcut: '⌘N',\n action: () => console.log('Create'),\n },\n {\n id: 'settings',\n label: 'Settings',\n description: 'Open application settings',\n shortcut: '⌘,',\n action: () => console.log('Settings'),\n },\n ];\n\n return (\n <>\n <Button onClick={() => setOpen(true)}>\n Open Palette (⌘K)\n </Button>\n <Command\n open={open}\n onOpenChange={setOpen}\n items={commands}\n >\n <Command.SearchInput placeholder=\"Search commands...\" />\n <Command.List>\n <Command.Groups\n renderCategory={(category) =>\n category ? <Command.Category>{category}</Command.Category> : null\n }\n renderItem={(cmd) => (\n <Command.Item\n key={cmd.id}\n value={cmd.id}\n textValue={cmd.label}\n action={cmd.action}\n hint={cmd.shortcut}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <div style={{ fontWeight: 500 }}>{cmd.label}</div>\n {cmd.description && (\n <div style={{ fontSize: '0.875em', opacity: 0.7 }}>\n {cmd.description}\n </div>\n )}\n </div>\n </div>\n </Command.Item>\n )}\n />\n </Command.List>\n </Command>\n </>\n );\n}"
203
+ "code": "'use client';\n\nimport React from 'react';\nimport { Command, Button, Badge } from 'ui-lab-components';\n\nexport default function Example() {\n const [open, setOpen] = React.useState(false);\n\n const commands = [\n {\n id: 'search',\n label: 'Search',\n description: 'Search documents',\n shortcut: '⌘F',\n action: () => console.log('Search'),\n },\n {\n id: 'create',\n label: 'Create new',\n description: 'Create a new document',\n shortcut: '⌘N',\n action: () => console.log('Create'),\n },\n {\n id: 'settings',\n label: 'Settings',\n description: 'Open application settings',\n shortcut: '⌘,',\n action: () => console.log('Settings'),\n },\n ];\n\n return (\n <>\n <Button onClick={() => setOpen(true)}>\n Open Palette (⌘K)\n </Button>\n <Command\n open={open}\n onOpenChange={setOpen}\n items={commands}\n >\n <Command.Input placeholder=\"Search commands...\" />\n <Command.List>\n <Command.Groups\n renderCategory={(category) =>\n category ? <Command.Category>{category}</Command.Category> : null\n }\n renderItem={(cmd) => (\n <Command.Item\n key={cmd.id}\n value={cmd.id}\n textValue={cmd.label}\n action={cmd.action}\n hint={cmd.shortcut}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>\n <div>\n <div style={{ fontWeight: 500 }}>{cmd.label}</div>\n {cmd.description && (\n <div style={{ fontSize: '0.875em', opacity: 0.7 }}>\n {cmd.description}\n </div>\n )}\n </div>\n </div>\n </Command.Item>\n )}\n />\n </Command.List>\n </Command>\n </>\n );\n}"
209
204
  }
210
205
  ],
211
206
  },
@@ -235,7 +230,7 @@ export const componentRegistry: ComponentRegistry = {
235
230
  date: {
236
231
  id: "date",
237
232
  name: "Date",
238
- description: "Minimal date picker with keyboard navigation and full accessibility support.",
233
+ description: "Calendar date picker with keyboard navigation and accessibility.",
239
234
  category: "input",
240
235
  source: {
241
236
  "packageName": "ui-lab-components",
@@ -270,7 +265,7 @@ export const componentRegistry: ComponentRegistry = {
270
265
  {
271
266
  "title": "Pattern Variants",
272
267
  "description": "Dividers support three distinct pattern styles: solid for continuous lines, dashed for rectangular segments, and dotted for circular dots.",
273
- "code": "import { Divider } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <div className=\"space-y-6 w-full\">\n <div className=\"space-y-2\">\n <span className=\"text-xs text-foreground-400\">Solid</span>\n <Divider variant=\"solid\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-xs text-foreground-400\">Dashed</span>\n <Divider variant=\"dashed\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-xs text-foreground-400\">Dotted</span>\n <Divider variant=\"dotted\" />\n </div>\n </div>\n );\n}"
268
+ "code": "import { Divider } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <div className=\"space-y-6 w-full\">\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Solid</span>\n <Divider variant=\"solid\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Dashed</span>\n <Divider variant=\"dashed\" />\n </div>\n <div className=\"space-y-2\">\n <span className=\"text-sm text-foreground-400\">Dotted</span>\n <Divider variant=\"dotted\" />\n </div>\n </div>\n );\n}"
274
269
  },
275
270
  {
276
271
  "title": "Vertical Orientation",
@@ -305,7 +300,7 @@ export const componentRegistry: ComponentRegistry = {
305
300
  flex: {
306
301
  id: "flex",
307
302
  name: "Flex",
308
- description: "Flexible layout component with container query support for responsive designs.",
303
+ description: "Flexbox layout primitive with container query support for UIs.",
309
304
  category: "layout",
310
305
  source: {
311
306
  "packageName": "ui-lab-components",
@@ -359,7 +354,7 @@ export const componentRegistry: ComponentRegistry = {
359
354
  gallery: {
360
355
  id: "gallery",
361
356
  name: "Gallery",
362
- description: "Responsive grid layout for displaying media content, images, videos, and product cards.",
357
+ description: "Responsive grid layout for displaying images and media items.",
363
358
  category: "layout",
364
359
  source: {
365
360
  "packageName": "ui-lab-components",
@@ -395,7 +390,7 @@ export const componentRegistry: ComponentRegistry = {
395
390
  {
396
391
  "title": "Basic Grid",
397
392
  "description": "A simple grid layout with multiple cells. Use this for organizing content in a responsive grid structure.",
398
- "code": "import React from 'react';\nimport { Grid } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Grid columns=\"3\" gap=\"md\">\n <div style={{ padding: '1rem', background: '#e0e0e0' }}>Cell 1</div>\n <div style={{ padding: '1rem', background: '#d0d0d0' }}>Cell 2</div>\n <div style={{ padding: '1rem', background: '#c0c0c0' }}>Cell 3</div>\n <div style={{ padding: '1rem', background: '#b0b0b0' }}>Cell 4</div>\n <div style={{ padding: '1rem', background: '#a0a0a0' }}>Cell 5</div>\n <div style={{ padding: '1rem', background: '#909090' }}>Cell 6</div>\n </Grid>\n );\n}"
393
+ "code": "import React from 'react';\nimport { Grid } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Grid columns={3} gap=\"md\">\n <div style={{ padding: '1rem', background: '#e0e0e0' }}>Cell 1</div>\n <div style={{ padding: '1rem', background: '#d0d0d0' }}>Cell 2</div>\n <div style={{ padding: '1rem', background: '#c0c0c0' }}>Cell 3</div>\n <div style={{ padding: '1rem', background: '#b0b0b0' }}>Cell 4</div>\n <div style={{ padding: '1rem', background: '#a0a0a0' }}>Cell 5</div>\n <div style={{ padding: '1rem', background: '#909090' }}>Cell 6</div>\n </Grid>\n );\n}"
399
394
  }
400
395
  ],
401
396
  },
@@ -403,7 +398,7 @@ export const componentRegistry: ComponentRegistry = {
403
398
  group: {
404
399
  id: "group",
405
400
  name: "Group",
406
- description: "Flexible container for grouping Button, Input, and Select components with unified styling.",
401
+ description: "Groups Button, Input, and Select with unified border styling.",
407
402
  category: "composition",
408
403
  experimental: true,
409
404
  source: {
@@ -445,7 +440,7 @@ export const componentRegistry: ComponentRegistry = {
445
440
  {
446
441
  "title": "Validation States",
447
442
  "description": "Input fields with error and success validation states, including helper text for user feedback.",
448
- "code": "import React from 'react';\nimport { Input, Label } from 'ui-lab-components';\nimport { FaCircleExclamation, FaCircleCheck } from 'react-icons/fa6';\n\nexport default function Example() {\n return (\n <div className=\"flex flex-col gap-6 w-full max-w-sm\">\n {/* Error State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label error helperText=\"Please enter a valid email address\" helperTextError>\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n error\n defaultValue=\"invalid-email\"\n suffixIcon={<FaCircleExclamation className=\"text-danger-600\" size={14} />}\n />\n </div>\n\n {/* Success State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label helperText=\"Email address is available\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n defaultValue=\"user@example.com\"\n suffixIcon={<FaCircleCheck className=\"text-success-600\" size={14} />}\n className=\"border-success-600 focus:border-success-600\"\n />\n </div>\n\n {/* Default State with Helper Text */}\n <div className=\"flex flex-col gap-1.5\">\n <Label required helperText=\"We'll never share your email with anyone else.\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n />\n </div>\n </div>\n );\n}"
443
+ "code": "import React from 'react';\nimport { Input, Label } from 'ui-lab-components';\nimport { FaCircleExclamation, FaCircleCheck } from 'react-icons/fa6';\n\nexport default function Example() {\n return (\n <div className=\"flex flex-col gap-6 w-full max-w-sm\">\n {/* Error State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label error helperText=\"Please enter a valid email address\" helperTextError>\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n error\n defaultValue=\"invalid-email\"\n icon={{ suffix: <FaCircleExclamation className=\"text-danger-600\" size={14} /> }}\n />\n </div>\n\n {/* Success State */}\n <div className=\"flex flex-col gap-1.5\">\n <Label helperText=\"Email address is available\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n defaultValue=\"user@example.com\"\n icon={{ suffix: <FaCircleCheck className=\"text-success-600\" size={14} /> }}\n className=\"border-success-600 focus:border-success-600\"\n />\n </div>\n\n {/* Default State with Helper Text */}\n <div className=\"flex flex-col gap-1.5\">\n <Label required helperText=\"We'll never share your email with anyone else.\">\n Email\n </Label>\n <Input\n type=\"email\"\n placeholder=\"Enter your email\"\n />\n </div>\n </div>\n );\n}"
449
444
  }
450
445
  ],
451
446
  },
@@ -475,7 +470,7 @@ export const componentRegistry: ComponentRegistry = {
475
470
  list: {
476
471
  id: "list",
477
472
  name: "List",
478
- description: "Compound component for displaying item collections with selection and actions.",
473
+ description: "Displays item collections with built-in selection and actions.",
479
474
  category: "composition",
480
475
  experimental: true,
481
476
  source: {
@@ -581,7 +576,7 @@ export const componentRegistry: ComponentRegistry = {
581
576
  page: {
582
577
  id: "page",
583
578
  name: "Page",
584
- description: "A lightweight page container that provides page-level context, constraints, and semantic structure.",
579
+ description: "Top-level page container with constraints and semantic structure.",
585
580
  category: "container",
586
581
  experimental: true,
587
582
  source: {
@@ -598,8 +593,8 @@ export const componentRegistry: ComponentRegistry = {
598
593
  panel: {
599
594
  id: "panel",
600
595
  name: "Panel",
601
- description: "A flexible region coordinator that manages header, footer, and content areas with responsive stacking behavior.",
602
- category: "composition",
596
+ description: "Region container managing header, content, and footer areas.",
597
+ category: "layout",
603
598
  experimental: true,
604
599
  source: {
605
600
  "packageName": "ui-lab-components",
@@ -626,11 +621,6 @@ export const componentRegistry: ComponentRegistry = {
626
621
  tags: ["navigation","path","hierarchy","parent-pages"],
627
622
  accessibility: {"hasAriaSupport":true,"notes":["Uses nav element with landmark role","Semantic ordered list structure","Current page marked with aria-current","Full keyboard navigation support","Screen reader friendly labels"]},
628
623
  examples: [
629
- {
630
- "title": "Basic Path",
631
- "description": "A simple path navigation showing the current page location. Use this to help users understand their position in the site hierarchy.",
632
- "code": "import { PathItem, Path } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Path>\n <PathItem href=\"/\">Home</PathItem>\n <PathItem href=\"/products\">Products</PathItem>\n <PathItem href=\"/products/electronics\">Electronics</PathItem>\n <PathItem>Laptop</PathItem>\n </Path>\n );\n}"
633
- },
634
624
  {
635
625
  "title": "Basic Path",
636
626
  "description": "A simple path navigation showing the current page location. Use this to help users understand their position in the site hierarchy.",
@@ -755,7 +745,7 @@ export const componentRegistry: ComponentRegistry = {
755
745
  {
756
746
  "title": "Searchable Select",
757
747
  "description": "A filterable select component with search input. Type to filter through a large list of options.",
758
- "code": "import React from 'react';\nimport { Select, Searchable } from 'ui-lab-components';\n\nconst countries = [\n { value: 'us', label: 'United States' },\n { value: 'ca', label: 'Canada' },\n { value: 'mx', label: 'Mexico' },\n { value: 'br', label: 'Brazil' },\n { value: 'ar', label: 'Argentina' },\n { value: 'uk', label: 'United Kingdom' },\n { value: 'fr', label: 'France' },\n { value: 'de', label: 'Germany' },\n { value: 'it', label: 'Italy' },\n { value: 'es', label: 'Spain' },\n { value: 'pt', label: 'Portugal' },\n { value: 'nl', label: 'Netherlands' },\n { value: 'be', label: 'Belgium' },\n { value: 'ch', label: 'Switzerland' },\n { value: 'at', label: 'Austria' },\n { value: 'se', label: 'Sweden' },\n { value: 'no', label: 'Norway' },\n { value: 'dk', label: 'Denmark' },\n { value: 'fi', label: 'Finland' },\n { value: 'pl', label: 'Poland' },\n { value: 'jp', label: 'Japan' },\n { value: 'cn', label: 'China' },\n { value: 'kr', label: 'South Korea' },\n { value: 'in', label: 'India' },\n { value: 'au', label: 'Australia' },\n { value: 'nz', label: 'New Zealand' },\n];\n\nexport default function Example() {\n return (\n <Select>\n <Searchable.Trigger placeholder=\"Search countries...\" />\n <Searchable.Content searchPlaceholder=\"Type to filter...\">\n {countries.map((country) => (\n <Select.Item key={country.value} value={country.value} textValue={country.label}>\n {country.label}\n </Select.Item>\n ))}\n </Searchable.Content>\n </Select>\n );\n}"
748
+ "code": "import React from 'react';\nimport { Select, Searchable } from 'ui-lab-components';\n\nconst countries = [\n { value: 'us', label: 'United States' },\n { value: 'ca', label: 'Canada' },\n { value: 'mx', label: 'Mexico' },\n { value: 'br', label: 'Brazil' },\n { value: 'ar', label: 'Argentina' },\n { value: 'uk', label: 'United Kingdom' },\n { value: 'fr', label: 'France' },\n { value: 'de', label: 'Germany' },\n { value: 'it', label: 'Italy' },\n { value: 'es', label: 'Spain' },\n { value: 'pt', label: 'Portugal' },\n { value: 'nl', label: 'Netherlands' },\n { value: 'be', label: 'Belgium' },\n { value: 'ch', label: 'Switzerland' },\n { value: 'at', label: 'Austria' },\n { value: 'se', label: 'Sweden' },\n { value: 'no', label: 'Norway' },\n { value: 'dk', label: 'Denmark' },\n { value: 'fi', label: 'Finland' },\n { value: 'pl', label: 'Poland' },\n { value: 'jp', label: 'Japan' },\n { value: 'cn', label: 'China' },\n { value: 'kr', label: 'South Korea' },\n { value: 'in', label: 'India' },\n { value: 'au', label: 'Australia' },\n { value: 'nz', label: 'New Zealand' },\n];\n\nexport default function Example() {\n return (\n <Select>\n <Searchable.Input placeholder=\"Search countries...\" />\n <Searchable.Content searchPlaceholder=\"Type to filter...\">\n {countries.map((country) => (\n <Select.Item key={country.value} value={country.value} textValue={country.label}>\n {country.label}\n </Select.Item>\n ))}\n </Searchable.Content>\n </Select>\n );\n}"
759
749
  }
760
750
  ],
761
751
  },
@@ -843,12 +833,12 @@ export const componentRegistry: ComponentRegistry = {
843
833
  {
844
834
  "title": "Basic Tabs",
845
835
  "description": "A simple tabbed interface with content switching. Use this to organize related content into separate views.",
846
- "code": "import React from 'react';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Tabs defaultValue=\"overview\">\n <TabsList aria-label=\"Content sections\">\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"details\">Details</TabsTrigger>\n <TabsTrigger value=\"settings\">Settings</TabsTrigger>\n </TabsList>\n <TabsContent value=\"overview\">\n <p>Overview content goes here.</p>\n </TabsContent>\n <TabsContent value=\"details\">\n <p>Details content goes here.</p>\n </TabsContent>\n <TabsContent value=\"settings\">\n <p>Settings content goes here.</p>\n </TabsContent>\n </Tabs>\n );\n}"
836
+ "code": "import React from 'react';\nimport { Tabs } from 'ui-lab-components';\n\nexport default function Example() {\n return (\n <Tabs defaultValue=\"overview\">\n <Tabs.List aria-label=\"Content sections\">\n <Tabs.Trigger value=\"overview\">Overview</Tabs.Trigger>\n <Tabs.Trigger value=\"details\">Details</Tabs.Trigger>\n <Tabs.Trigger value=\"settings\">Settings</Tabs.Trigger>\n </Tabs.List>\n <Tabs.Content value=\"overview\">\n <p>Overview content goes here.</p>\n </Tabs.Content>\n <Tabs.Content value=\"details\">\n <p>Details content goes here.</p>\n </Tabs.Content>\n <Tabs.Content value=\"settings\">\n <p>Settings content goes here.</p>\n </Tabs.Content>\n </Tabs>\n );\n}"
847
837
  },
848
838
  {
849
839
  "title": "Vertical Tabs (Sidebar)",
850
840
  "description": "A vertical tab layout ideal for settings pages or sidebar navigation. Tabs are stacked vertically with content panels beside them.",
851
- "code": "import React from 'react';\nimport { Tabs, TabsList, TabsTrigger, TabsContent, Card } from 'ui-lab-components';\nimport { User, Settings, Bell, Shield } from 'lucide-react';\n\nexport default function Example() {\n return (\n <div className=\"flex items-center justify-center bg-background-950 p-4 min-h-[400px]\">\n <Card className=\"w-full max-w-2xl\">\n <Tabs defaultValue=\"profile\" className=\"flex flex-row\">\n {/* Vertical tab list - styled as sidebar */}\n <TabsList\n aria-label=\"Settings sections\"\n className=\"flex-col items-stretch justify-start h-auto w-48 border-r border-background-700 rounded-none bg-transparent p-2\"\n >\n <TabsTrigger value=\"profile\" icon={<User className=\"w-4 h-4\" />} className=\"justify-start\">\n Profile\n </TabsTrigger>\n <TabsTrigger value=\"notifications\" icon={<Bell className=\"w-4 h-4\" />} className=\"justify-start\">\n Notifications\n </TabsTrigger>\n <TabsTrigger value=\"security\" icon={<Shield className=\"w-4 h-4\" />} className=\"justify-start\">\n Security\n </TabsTrigger>\n <TabsTrigger value=\"preferences\" icon={<Settings className=\"w-4 h-4\" />} className=\"justify-start\">\n Preferences\n </TabsTrigger>\n </TabsList>\n\n {/* Content panels */}\n <div className=\"flex-1 p-6\">\n <TabsContent value=\"profile\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Profile Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Manage your personal information and how others see you on the platform.\n </p>\n <div className=\"space-y-3\">\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-2/3 bg-background-800 rounded border border-background-700\" />\n </div>\n </TabsContent>\n\n <TabsContent value=\"notifications\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Notification Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Control how and when you receive alerts and updates.\n </p>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-32 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-background-700 rounded\" />\n <div className=\"h-4 w-40 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-28 bg-background-800 rounded\" />\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"security\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Security Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Protect your account with passwords, two-factor authentication, and more.\n </p>\n <div className=\"space-y-3\">\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-24 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-48 bg-background-700/50 rounded\" />\n </div>\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-32 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-40 bg-background-700/50 rounded\" />\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"preferences\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">General Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Customize your experience with theme, language, and display options.\n </p>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n </div>\n </TabsContent>\n </div>\n </Tabs>\n </Card>\n </div>\n );\n}"
841
+ "code": "import React from 'react';\nimport { Tabs, Card } from 'ui-lab-components';\nimport { User, Settings, Bell, Shield } from 'lucide-react';\n\nexport default function Example() {\n return (\n <div className=\"flex items-center justify-center bg-background-950 p-4 min-h-[400px]\">\n <Card className=\"w-full max-w-2xl\">\n <Tabs defaultValue=\"profile\" className=\"flex flex-row\">\n {/* Vertical tab list - styled as sidebar */}\n <Tabs.List\n aria-label=\"Settings sections\"\n className=\"flex-col items-stretch justify-start h-auto w-48 border-r border-background-700 rounded-none bg-transparent p-2\"\n >\n <Tabs.Trigger value=\"profile\" icon={<User className=\"w-4 h-4\" />} className=\"justify-start\">\n Profile\n </Tabs.Trigger>\n <Tabs.Trigger value=\"notifications\" icon={<Bell className=\"w-4 h-4\" />} className=\"justify-start\">\n Notifications\n </Tabs.Trigger>\n <Tabs.Trigger value=\"security\" icon={<Shield className=\"w-4 h-4\" />} className=\"justify-start\">\n Security\n </Tabs.Trigger>\n <Tabs.Trigger value=\"preferences\" icon={<Settings className=\"w-4 h-4\" />} className=\"justify-start\">\n Preferences\n </Tabs.Trigger>\n </Tabs.List>\n\n {/* Content panels */}\n <div className=\"flex-1 p-6\">\n <Tabs.Content value=\"profile\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Profile Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Manage your personal information and how others see you on the platform.\n </p>\n <div className=\"space-y-3\">\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-full bg-background-800 rounded border border-background-700\" />\n <div className=\"h-10 w-2/3 bg-background-800 rounded border border-background-700\" />\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"notifications\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Notification Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Control how and when you receive alerts and updates.\n </p>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-32 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-background-700 rounded\" />\n <div className=\"h-4 w-40 bg-background-800 rounded\" />\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-5 w-5 bg-accent-500 rounded\" />\n <div className=\"h-4 w-28 bg-background-800 rounded\" />\n </div>\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"security\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">Security Settings</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Protect your account with passwords, two-factor authentication, and more.\n </p>\n <div className=\"space-y-3\">\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-24 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-48 bg-background-700/50 rounded\" />\n </div>\n <div className=\"p-3 bg-background-800 rounded border border-background-700\">\n <div className=\"h-4 w-32 bg-background-700 rounded mb-2\" />\n <div className=\"h-3 w-40 bg-background-700/50 rounded\" />\n </div>\n </div>\n </Tabs.Content>\n\n <Tabs.Content value=\"preferences\" className=\"mt-0\">\n <h3 className=\"text-lg font-semibold text-foreground-100 mb-2\">General Preferences</h3>\n <p className=\"text-foreground-400 text-sm mb-4\">\n Customize your experience with theme, language, and display options.\n </p>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n <div className=\"h-20 bg-background-800 rounded border border-background-700\" />\n </div>\n </Tabs.Content>\n </div>\n </Tabs>\n </Card>\n </div>\n );\n}"
852
842
  }
853
843
  ],
854
844
  },
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SectionMetadata } from '../../types';
2
+ import type { SectionMetadata } from '../../types.js';
3
3
  import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
4
4
  import variationsData from './variations.json' with { type: 'json' };
5
5
 
@@ -69,7 +69,7 @@ export function SplitCTA() {
69
69
  {[1, 2, 3].map((i) => (
70
70
  <div key={i} className="rounded bg-background-700 p-3 text-center">
71
71
  <div className="text-lg font-bold text-accent-500">42K</div>
72
- <div className="text-xs text-foreground-400">Active Users</div>
72
+ <div className="text-sm text-foreground-400">Active Users</div>
73
73
  </div>
74
74
  ))}
75
75
  </div>
@@ -20,7 +20,7 @@
20
20
  {
21
21
  "filename": "index.tsx",
22
22
  "language": "typescript",
23
- "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { CheckCircle2 } from 'lucide-react';\n\nexport function SplitCTA() {\n const features = [\n 'Instant setup and configuration',\n 'Real-time analytics and reporting',\n 'Dedicated customer support',\n 'Enterprise-grade security',\n ];\n\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n <div className=\"grid gap-8 md:gap-12 md:grid-cols-2 items-center\">\n {/* Left content */}\n <div className=\"order-2 md:order-1\">\n <div className=\"mb-4 inline-block rounded-full bg-accent-500/10 px-4 py-1.5\">\n <span className=\"text-sm font-medium text-accent-600\">Limited Time Offer</span>\n </div>\n\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Get 50% off for the first 3 months\n </h2>\n <p className=\"mb-8 text-lg text-foreground-400\">\n Upgrade your workflow and unlock powerful features that will transform how your team collaborates.\n </p>\n\n <ul className=\"mb-8 space-y-3\">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-center gap-3\">\n <CheckCircle2 className=\"h-5 w-5 flex-shrink-0 text-accent-500\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <Button size=\"lg\" className=\"w-full sm:w-auto\">\n Claim Offer\n </Button>\n <Button variant=\"outline\" size=\"lg\" className=\"w-full sm:w-auto\">\n Learn More\n </Button>\n </div>\n\n <p className=\"mt-6 text-sm text-foreground-400\">\n No credit card needed. Cancel anytime.\n </p>\n </div>\n\n {/* Right visual */}\n <div className=\"order-1 md:order-2\">\n <div className=\"relative\">\n {/* Decorative background */}\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-br from-background-800 to-background-900\" />\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-tr from-accent-500/20 to-accent-600/20\" />\n\n {/* Content */}\n <div className=\"relative rounded-2xl border border-background-700 bg-background-900/50 p-8 backdrop-blur-sm\">\n <div className=\"space-y-4\">\n <div className=\"h-3 w-24 rounded-full bg-background-700\" />\n <div className=\"h-3 w-32 rounded-full bg-background-700\" />\n <div className=\"mt-6 h-32 rounded-md bg-gradient-to-br from-accent-500/30 to-accent-600/30\" />\n <div className=\"grid grid-cols-3 gap-4 pt-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"rounded bg-background-700 p-3 text-center\">\n <div className=\"text-lg font-bold text-accent-500\">42K</div>\n <div className=\"text-xs text-foreground-400\">Active Users</div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Split CTA',\n description: 'Two-column layout with promotional content on left and visual mockup on right',\n demoPath: 'cta-split',\n};",
23
+ "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { CheckCircle2 } from 'lucide-react';\n\nexport function SplitCTA() {\n const features = [\n 'Instant setup and configuration',\n 'Real-time analytics and reporting',\n 'Dedicated customer support',\n 'Enterprise-grade security',\n ];\n\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n <div className=\"grid gap-8 md:gap-12 md:grid-cols-2 items-center\">\n {/* Left content */}\n <div className=\"order-2 md:order-1\">\n <div className=\"mb-4 inline-block rounded-full bg-accent-500/10 px-4 py-1.5\">\n <span className=\"text-sm font-medium text-accent-600\">Limited Time Offer</span>\n </div>\n\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Get 50% off for the first 3 months\n </h2>\n <p className=\"mb-8 text-lg text-foreground-400\">\n Upgrade your workflow and unlock powerful features that will transform how your team collaborates.\n </p>\n\n <ul className=\"mb-8 space-y-3\">\n {features.map((feature, index) => (\n <li key={index} className=\"flex items-center gap-3\">\n <CheckCircle2 className=\"h-5 w-5 flex-shrink-0 text-accent-500\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n\n <div className=\"flex flex-col gap-3 sm:flex-row\">\n <Button size=\"lg\" className=\"w-full sm:w-auto\">\n Claim Offer\n </Button>\n <Button variant=\"outline\" size=\"lg\" className=\"w-full sm:w-auto\">\n Learn More\n </Button>\n </div>\n\n <p className=\"mt-6 text-sm text-foreground-400\">\n No credit card needed. Cancel anytime.\n </p>\n </div>\n\n {/* Right visual */}\n <div className=\"order-1 md:order-2\">\n <div className=\"relative\">\n {/* Decorative background */}\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-br from-background-800 to-background-900\" />\n <div className=\"absolute inset-0 rounded-2xl bg-gradient-to-tr from-accent-500/20 to-accent-600/20\" />\n\n {/* Content */}\n <div className=\"relative rounded-2xl border border-background-700 bg-background-900/50 p-8 backdrop-blur-sm\">\n <div className=\"space-y-4\">\n <div className=\"h-3 w-24 rounded-full bg-background-700\" />\n <div className=\"h-3 w-32 rounded-full bg-background-700\" />\n <div className=\"mt-6 h-32 rounded-md bg-gradient-to-br from-accent-500/30 to-accent-600/30\" />\n <div className=\"grid grid-cols-3 gap-4 pt-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"rounded bg-background-700 p-3 text-center\">\n <div className=\"text-lg font-bold text-accent-500\">42K</div>\n <div className=\"text-sm text-foreground-400\">Active Users</div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Split CTA',\n description: 'Two-column layout with promotional content on left and visual mockup on right',\n demoPath: 'cta-split',\n};",
24
24
  "isEntryPoint": true
25
25
  }
26
26
  ]
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SectionMetadata } from '../../types';
2
+ import type { SectionMetadata } from '../../types.js';
3
3
  import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
4
4
  import variationsData from './variations.json' with { type: 'json' };
5
5
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SectionMetadata } from '../../types';
2
+ import type { SectionMetadata } from '../../types.js';
3
3
  import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
4
4
  import variationsData from './variations.json' with { type: 'json' };
5
5
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SectionMetadata } from '../../types';
2
+ import type { SectionMetadata } from '../../types.js';
3
3
  import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
4
4
  import variationsData from './variations.json' with { type: 'json' };
5
5
 
@@ -83,7 +83,7 @@ export function PricingCards() {
83
83
  >
84
84
  {plan.highlighted && (
85
85
  <div className="absolute -top-4 left-1/2 -translate-x-1/2">
86
- <span className="rounded-full bg-accent-500 px-4 py-1 text-xs font-semibold text-white">
86
+ <span className="rounded-full bg-accent-500 px-4 py-1 text-sm font-semibold text-white">
87
87
  Most Popular
88
88
  </span>
89
89
  </div>
@@ -72,7 +72,7 @@ export function PricingComparison() {
72
72
  {plan.price ? (
73
73
  <div className="text-lg font-bold text-accent-500">
74
74
  ${plan.price}
75
- <span className="text-xs text-foreground-400">/mo</span>
75
+ <span className="text-sm text-foreground-400">/mo</span>
76
76
  </div>
77
77
  ) : (
78
78
  <div className="text-sm text-foreground-400">Custom</div>
@@ -7,7 +7,7 @@
7
7
  {
8
8
  "filename": "index.tsx",
9
9
  "language": "typescript",
10
- "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check } from 'lucide-react';\n\nconst pricingPlans = [\n {\n id: 1,\n name: 'Starter',\n description: 'Perfect for getting started',\n price: 29,\n period: 'month',\n cta: 'Get Started',\n highlighted: false,\n features: [\n 'Up to 1,000 requests/month',\n 'Basic analytics',\n 'Community support',\n 'API access',\n ],\n },\n {\n id: 2,\n name: 'Professional',\n description: 'Best for growing teams',\n price: 99,\n period: 'month',\n cta: 'Start Free Trial',\n highlighted: true,\n features: [\n 'Up to 100,000 requests/month',\n 'Advanced analytics',\n 'Priority email support',\n 'API access',\n 'Custom integrations',\n 'Team collaboration',\n ],\n },\n {\n id: 3,\n name: 'Enterprise',\n description: 'For large-scale operations',\n price: null,\n period: 'contact',\n cta: 'Contact Sales',\n highlighted: false,\n features: [\n 'Unlimited requests',\n 'Real-time analytics',\n '24/7 dedicated support',\n 'Custom API endpoints',\n 'Advanced security',\n 'SLA guarantee',\n ],\n },\n];\n\nexport function PricingCards() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n {/* Header */}\n <div className=\"mb-12 text-center md:mb-16\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Simple, transparent pricing\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Choose the perfect plan for your needs. Always flexible to scale.\n </p>\n </div>\n\n {/* Pricing Cards */}\n <div className=\"grid gap-8 md:grid-cols-3 items-start\">\n {pricingPlans.map((plan) => (\n <div\n key={plan.id}\n className={`relative rounded-2xl p-8 transition-all ${\n plan.highlighted\n ? 'border border-accent-500 bg-gradient-to-br from-accent-500/10 to-accent-600/5 ring-1 ring-accent-500/20'\n : 'border border-background-700 bg-background-900/50 hover:border-background-600'\n }`}\n >\n {plan.highlighted && (\n <div className=\"absolute -top-4 left-1/2 -translate-x-1/2\">\n <span className=\"rounded-full bg-accent-500 px-4 py-1 text-xs font-semibold text-white\">\n Most Popular\n </span>\n </div>\n )}\n\n <h3 className=\"mb-2 text-2xl font-bold text-foreground-900\">\n {plan.name}\n </h3>\n <p className=\"mb-6 text-foreground-400\">{plan.description}</p>\n\n {/* Pricing */}\n <div className=\"mb-8\">\n {plan.price ? (\n <>\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-4xl font-bold text-foreground-900\">\n ${plan.price}\n </span>\n <span className=\"text-foreground-400\">/{plan.period}</span>\n </div>\n </>\n ) : (\n <div className=\"text-lg font-semibold text-foreground-900\">\n Custom pricing\n </div>\n )}\n </div>\n\n {/* CTA */}\n <Button\n className=\"mb-8 w-full\"\n variant={plan.highlighted ? 'default' : 'outline'}\n >\n {plan.cta}\n </Button>\n\n {/* Features */}\n <div className=\"border-t border-background-700 pt-8\">\n <ul className=\"space-y-4\">\n {plan.features.map((feature, index) => (\n <li key={index} className=\"flex items-start gap-3\">\n <Check className=\"h-5 w-5 flex-shrink-0 text-accent-500 mt-0.5\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer note */}\n <div className=\"mt-12 text-center\">\n <p className=\"text-foreground-400\">\n All plans include a 14-day free trial. No credit card required.\n </p>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Cards',\n description: '3-column pricing tier cards with features list and highlighted popular plan',\n demoPath: 'pricing-cards',\n};",
10
+ "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check } from 'lucide-react';\n\nconst pricingPlans = [\n {\n id: 1,\n name: 'Starter',\n description: 'Perfect for getting started',\n price: 29,\n period: 'month',\n cta: 'Get Started',\n highlighted: false,\n features: [\n 'Up to 1,000 requests/month',\n 'Basic analytics',\n 'Community support',\n 'API access',\n ],\n },\n {\n id: 2,\n name: 'Professional',\n description: 'Best for growing teams',\n price: 99,\n period: 'month',\n cta: 'Start Free Trial',\n highlighted: true,\n features: [\n 'Up to 100,000 requests/month',\n 'Advanced analytics',\n 'Priority email support',\n 'API access',\n 'Custom integrations',\n 'Team collaboration',\n ],\n },\n {\n id: 3,\n name: 'Enterprise',\n description: 'For large-scale operations',\n price: null,\n period: 'contact',\n cta: 'Contact Sales',\n highlighted: false,\n features: [\n 'Unlimited requests',\n 'Real-time analytics',\n '24/7 dedicated support',\n 'Custom API endpoints',\n 'Advanced security',\n 'SLA guarantee',\n ],\n },\n];\n\nexport function PricingCards() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-6xl\">\n {/* Header */}\n <div className=\"mb-12 text-center md:mb-16\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Simple, transparent pricing\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Choose the perfect plan for your needs. Always flexible to scale.\n </p>\n </div>\n\n {/* Pricing Cards */}\n <div className=\"grid gap-8 md:grid-cols-3 items-start\">\n {pricingPlans.map((plan) => (\n <div\n key={plan.id}\n className={`relative rounded-2xl p-8 transition-all ${\n plan.highlighted\n ? 'border border-accent-500 bg-gradient-to-br from-accent-500/10 to-accent-600/5 ring-1 ring-accent-500/20'\n : 'border border-background-700 bg-background-900/50 hover:border-background-600'\n }`}\n >\n {plan.highlighted && (\n <div className=\"absolute -top-4 left-1/2 -translate-x-1/2\">\n <span className=\"rounded-full bg-accent-500 px-4 py-1 text-sm font-semibold text-white\">\n Most Popular\n </span>\n </div>\n )}\n\n <h3 className=\"mb-2 text-2xl font-bold text-foreground-900\">\n {plan.name}\n </h3>\n <p className=\"mb-6 text-foreground-400\">{plan.description}</p>\n\n {/* Pricing */}\n <div className=\"mb-8\">\n {plan.price ? (\n <>\n <div className=\"flex items-baseline gap-1\">\n <span className=\"text-4xl font-bold text-foreground-900\">\n ${plan.price}\n </span>\n <span className=\"text-foreground-400\">/{plan.period}</span>\n </div>\n </>\n ) : (\n <div className=\"text-lg font-semibold text-foreground-900\">\n Custom pricing\n </div>\n )}\n </div>\n\n {/* CTA */}\n <Button\n className=\"mb-8 w-full\"\n variant={plan.highlighted ? 'default' : 'outline'}\n >\n {plan.cta}\n </Button>\n\n {/* Features */}\n <div className=\"border-t border-background-700 pt-8\">\n <ul className=\"space-y-4\">\n {plan.features.map((feature, index) => (\n <li key={index} className=\"flex items-start gap-3\">\n <Check className=\"h-5 w-5 flex-shrink-0 text-accent-500 mt-0.5\" />\n <span className=\"text-foreground-700\">{feature}</span>\n </li>\n ))}\n </ul>\n </div>\n </div>\n ))}\n </div>\n\n {/* Footer note */}\n <div className=\"mt-12 text-center\">\n <p className=\"text-foreground-400\">\n All plans include a 14-day free trial. No credit card required.\n </p>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Cards',\n description: '3-column pricing tier cards with features list and highlighted popular plan',\n demoPath: 'pricing-cards',\n};",
11
11
  "isEntryPoint": true
12
12
  }
13
13
  ]
@@ -20,7 +20,7 @@
20
20
  {
21
21
  "filename": "index.tsx",
22
22
  "language": "typescript",
23
- "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check, X } from 'lucide-react';\n\nconst comparisonData = {\n plans: [\n { id: 1, name: 'Starter', price: 29 },\n { id: 2, name: 'Professional', price: 99 },\n { id: 3, name: 'Enterprise', price: null },\n ],\n features: [\n {\n category: 'Core Features',\n items: [\n { name: 'API Requests', starter: '1K/month', professional: '100K/month', enterprise: 'Unlimited' },\n { name: 'Rate Limits', starter: '10 req/sec', professional: '100 req/sec', enterprise: 'Custom' },\n { name: 'Data Retention', starter: '30 days', professional: '90 days', enterprise: 'Unlimited' },\n { name: 'Webhook Support', starter: true, professional: true, enterprise: true },\n ],\n },\n {\n category: 'Analytics & Reporting',\n items: [\n { name: 'Basic Analytics', starter: true, professional: true, enterprise: true },\n { name: 'Advanced Analytics', starter: false, professional: true, enterprise: true },\n { name: 'Custom Reports', starter: false, professional: true, enterprise: true },\n { name: 'Real-time Dashboards', starter: false, professional: false, enterprise: true },\n ],\n },\n {\n category: 'Support & Security',\n items: [\n { name: 'Email Support', starter: true, professional: true, enterprise: true },\n { name: 'Priority Support', starter: false, professional: true, enterprise: true },\n { name: '24/7 Phone Support', starter: false, professional: false, enterprise: true },\n { name: 'SSO & SAML', starter: false, professional: false, enterprise: true },\n ],\n },\n ],\n};\n\nexport function PricingComparison() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-7xl\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Compare all plans\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Find the perfect plan with detailed feature comparison\n </p>\n </div>\n\n {/* Comparison Table */}\n <div className=\"overflow-x-auto rounded-2xl border border-background-700 bg-background-900/50\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-background-700\">\n <th className=\"px-6 py-4 text-left text-sm font-semibold text-foreground-900\">\n Features\n </th>\n {comparisonData.plans.map((plan) => (\n <th\n key={plan.id}\n className=\"px-6 py-4 text-center text-sm font-semibold text-foreground-900\"\n >\n <div className=\"mb-2\">{plan.name}</div>\n {plan.price ? (\n <div className=\"text-lg font-bold text-accent-500\">\n ${plan.price}\n <span className=\"text-xs text-foreground-400\">/mo</span>\n </div>\n ) : (\n <div className=\"text-sm text-foreground-400\">Custom</div>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {comparisonData.features.map((category, categoryIndex) => (\n <React.Fragment key={categoryIndex}>\n <tr className=\"border-t border-background-700 bg-background-900/30\">\n <td\n colSpan={4}\n className=\"px-6 py-4 text-sm font-semibold text-foreground-700\"\n >\n {category.category}\n </td>\n </tr>\n {category.items.map((item, itemIndex) => (\n <tr key={itemIndex} className=\"border-t border-background-700/50\">\n <td className=\"px-6 py-4 text-sm text-foreground-700\">\n {item.name}\n </td>\n {comparisonData.plans.map((plan) => {\n const value =\n item[plan.name.toLowerCase() as keyof typeof item];\n return (\n <td key={plan.id} className=\"px-6 py-4 text-center\">\n {typeof value === 'boolean' ? (\n value ? (\n <Check className=\"mx-auto h-5 w-5 text-accent-500\" />\n ) : (\n <X className=\"mx-auto h-5 w-5 text-foreground-400\" />\n )\n ) : (\n <span className=\"text-sm text-foreground-700\">\n {value}\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </React.Fragment>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* CTA Section */}\n <div className=\"mt-12 rounded-2xl border border-background-700 bg-background-900/50 p-8 text-center\">\n <h3 className=\"mb-4 text-2xl font-bold text-foreground-900\">\n Ready to get started?\n </h3>\n <p className=\"mb-6 text-foreground-400\">\n Choose your plan and start building today. All plans include a 14-day free trial.\n </p>\n <div className=\"flex flex-col gap-3 sm:flex-row sm:justify-center\">\n <Button variant=\"outline\">View Starter</Button>\n <Button>View Professional</Button>\n <Button variant=\"outline\">Contact Sales</Button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Comparison',\n description: 'Feature comparison table showing all plans with detailed breakdown',\n demoPath: 'pricing-comparison',\n};",
23
+ "code": "'use client';\n\nimport React from 'react';\nimport { Button } from 'ui-lab-components';\nimport { Check, X } from 'lucide-react';\n\nconst comparisonData = {\n plans: [\n { id: 1, name: 'Starter', price: 29 },\n { id: 2, name: 'Professional', price: 99 },\n { id: 3, name: 'Enterprise', price: null },\n ],\n features: [\n {\n category: 'Core Features',\n items: [\n { name: 'API Requests', starter: '1K/month', professional: '100K/month', enterprise: 'Unlimited' },\n { name: 'Rate Limits', starter: '10 req/sec', professional: '100 req/sec', enterprise: 'Custom' },\n { name: 'Data Retention', starter: '30 days', professional: '90 days', enterprise: 'Unlimited' },\n { name: 'Webhook Support', starter: true, professional: true, enterprise: true },\n ],\n },\n {\n category: 'Analytics & Reporting',\n items: [\n { name: 'Basic Analytics', starter: true, professional: true, enterprise: true },\n { name: 'Advanced Analytics', starter: false, professional: true, enterprise: true },\n { name: 'Custom Reports', starter: false, professional: true, enterprise: true },\n { name: 'Real-time Dashboards', starter: false, professional: false, enterprise: true },\n ],\n },\n {\n category: 'Support & Security',\n items: [\n { name: 'Email Support', starter: true, professional: true, enterprise: true },\n { name: 'Priority Support', starter: false, professional: true, enterprise: true },\n { name: '24/7 Phone Support', starter: false, professional: false, enterprise: true },\n { name: 'SSO & SAML', starter: false, professional: false, enterprise: true },\n ],\n },\n ],\n};\n\nexport function PricingComparison() {\n return (\n <section className=\"w-full py-16 px-4 md:py-24\">\n <div className=\"mx-auto max-w-7xl\">\n {/* Header */}\n <div className=\"mb-12 text-center\">\n <h2 className=\"mb-4 text-3xl font-bold text-foreground-900 md:text-4xl\">\n Compare all plans\n </h2>\n <p className=\"mx-auto max-w-2xl text-lg text-foreground-400\">\n Find the perfect plan with detailed feature comparison\n </p>\n </div>\n\n {/* Comparison Table */}\n <div className=\"overflow-x-auto rounded-2xl border border-background-700 bg-background-900/50\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b border-background-700\">\n <th className=\"px-6 py-4 text-left text-sm font-semibold text-foreground-900\">\n Features\n </th>\n {comparisonData.plans.map((plan) => (\n <th\n key={plan.id}\n className=\"px-6 py-4 text-center text-sm font-semibold text-foreground-900\"\n >\n <div className=\"mb-2\">{plan.name}</div>\n {plan.price ? (\n <div className=\"text-lg font-bold text-accent-500\">\n ${plan.price}\n <span className=\"text-sm text-foreground-400\">/mo</span>\n </div>\n ) : (\n <div className=\"text-sm text-foreground-400\">Custom</div>\n )}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {comparisonData.features.map((category, categoryIndex) => (\n <React.Fragment key={categoryIndex}>\n <tr className=\"border-t border-background-700 bg-background-900/30\">\n <td\n colSpan={4}\n className=\"px-6 py-4 text-sm font-semibold text-foreground-700\"\n >\n {category.category}\n </td>\n </tr>\n {category.items.map((item, itemIndex) => (\n <tr key={itemIndex} className=\"border-t border-background-700/50\">\n <td className=\"px-6 py-4 text-sm text-foreground-700\">\n {item.name}\n </td>\n {comparisonData.plans.map((plan) => {\n const value =\n item[plan.name.toLowerCase() as keyof typeof item];\n return (\n <td key={plan.id} className=\"px-6 py-4 text-center\">\n {typeof value === 'boolean' ? (\n value ? (\n <Check className=\"mx-auto h-5 w-5 text-accent-500\" />\n ) : (\n <X className=\"mx-auto h-5 w-5 text-foreground-400\" />\n )\n ) : (\n <span className=\"text-sm text-foreground-700\">\n {value}\n </span>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </React.Fragment>\n ))}\n </tbody>\n </table>\n </div>\n\n {/* CTA Section */}\n <div className=\"mt-12 rounded-2xl border border-background-700 bg-background-900/50 p-8 text-center\">\n <h3 className=\"mb-4 text-2xl font-bold text-foreground-900\">\n Ready to get started?\n </h3>\n <p className=\"mb-6 text-foreground-400\">\n Choose your plan and start building today. All plans include a 14-day free trial.\n </p>\n <div className=\"flex flex-col gap-3 sm:flex-row sm:justify-center\">\n <Button variant=\"outline\">View Starter</Button>\n <Button>View Professional</Button>\n <Button variant=\"outline\">Contact Sales</Button>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nexport const metadata = {\n name: 'Pricing Comparison',\n description: 'Feature comparison table showing all plans with detailed breakdown',\n demoPath: 'pricing-comparison',\n};",
24
24
  "isEntryPoint": true
25
25
  }
26
26
  ]
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { SectionMetadata } from '../../types';
2
+ import type { SectionMetadata } from '../../types.js';
3
3
  import { createSectionSkeleton } from '../utils/create-section-skeleton.js';
4
4
  import variationsData from './variations.json' with { type: 'json' };
5
5
 
@@ -84,14 +84,14 @@ export function groupSectionsByCategory(sections: Array<{ id: string; category:
84
84
  return grouped;
85
85
  }
86
86
 
87
- export function getSectionsInCategory(
87
+ function getSectionsInCategory(
88
88
  sections: Array<{ id: string; category: SectionCategoryId }>,
89
89
  categoryId: SectionCategoryId
90
90
  ) {
91
91
  return sections.filter(s => s.category === categoryId);
92
92
  }
93
93
 
94
- export function getCategoriesWithSections(
94
+ function getCategoriesWithSections(
95
95
  sections: Array<{ id: string; category: SectionCategoryId }>
96
96
  ): SectionCategoryDefinition[] {
97
97
  const grouped = groupSectionsByCategory(sections);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { SiAstro } from 'react-icons/si';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'astro-static',
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FaPen } from 'react-icons/fa6';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'blog-platform',
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FaBriefcase } from 'react-icons/fa6';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'crm-starter',
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FaBook } from 'react-icons/fa6';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'docs-site',
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { StarterMetadata } from '../../types';
2
+ import type { StarterMetadata } from '../../types.js';
3
3
 
4
4
  const baseMetadata = {
5
5
  id: 'nextjs-basic',
@@ -118,10 +118,10 @@ export function getPreview(): React.ReactNode {
118
118
  </svg>
119
119
  <div>
120
120
  <div className="text-sm font-semibold text-foreground-50">Next.js</div>
121
- <div className="text-xs text-foreground-400">App Router + TypeScript</div>
121
+ <div className="text-sm text-foreground-400">App Router + TypeScript</div>
122
122
  </div>
123
123
  </div>
124
- <div className="flex-1 border border-background-700 rounded bg-background-900/50 p-2 text-xs font-mono">
124
+ <div className="flex-1 border border-background-700 rounded bg-background-900/50 p-2 text-sm font-mono">
125
125
  <div className="text-foreground-300 mb-1">📁 Project Structure</div>
126
126
  <div className="pl-2 text-foreground-400 space-y-0.5">
127
127
  <div>📄 package.json</div>
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { FaCheck } from 'react-icons/fa6';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'productivity-app',
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { SiTauri } from 'react-icons/si';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'tauri-desktop',
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { SiVite } from 'react-icons/si';
3
- import type { StarterMetadata } from '../../types';
3
+ import type { StarterMetadata } from '../../types.js';
4
4
 
5
5
  const baseMetadata = {
6
6
  id: 'vite-react',
package/src/types.ts CHANGED
@@ -213,7 +213,7 @@ export interface CategoryDefinition {
213
213
  iconName: string;
214
214
  }
215
215
 
216
- export interface StarterPreset {
216
+ interface StarterPreset {
217
217
  templateName: 'next' | 'vite' | 'tauri';
218
218
  components: string[];
219
219
  description: string;
@@ -272,7 +272,6 @@ export interface SiteComponentExample {
272
272
  preview: React.ReactNode;
273
273
  controls?: ControlDef[];
274
274
  renderPreview?: (props: Record<string, any>) => React.ReactNode;
275
- previewHeight?: string;
276
275
  previewLayout?: 'center' | 'start';
277
276
  }
278
277
 
@@ -1,6 +1,6 @@
1
1
  import { categoryIconConfig } from '../icons-config.js';
2
2
  import { categories } from '../categories.js';
3
- import type { ComponentCategory } from '../types';
3
+ import type { ComponentCategory } from '../types.js';
4
4
 
5
5
  // Generate icon map from config
6
6
  const iconMap = Object.fromEntries(
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { SiteComponentExample } from '@/types';
3
3
 
4
- export interface ExampleData {
4
+ interface ExampleData {
5
5
  id: string;
6
6
  Component: React.ComponentType;
7
7
  metadata: {
@@ -10,7 +10,7 @@ export interface ExampleData {
10
10
  };
11
11
  }
12
12
 
13
- export interface ExamplesJsonEntry {
13
+ interface ExamplesJsonEntry {
14
14
  title: string;
15
15
  description: string;
16
16
  code: string;
@@ -1,6 +0,0 @@
1
- export declare const metadata: {
2
- title: string;
3
- description: string;
4
- };
5
- export default function Example(): import("react/jsx-runtime").JSX.Element;
6
- //# sourceMappingURL=02-joined-toggle-buttons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"02-joined-toggle-buttons.d.ts","sourceRoot":"","sources":["../../../../src/components/Button/examples/02-joined-toggle-buttons.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;CAGpB,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,4CAgC9B"}
@@ -1,15 +0,0 @@
1
- "use client";
2
- 'use client';
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { useState } from 'react';
5
- import { Group } from 'ui-lab-components';
6
- import { LayoutList, LayoutGrid, Table } from 'lucide-react';
7
- export const metadata = {
8
- title: 'Joined Toggle Buttons',
9
- description: 'Multiple buttons grouped together for view/mode selection. Demonstrates Group component with toggle state.'
10
- };
11
- export default function Example() {
12
- const [viewMode, setViewMode] = useState('list');
13
- return (_jsx("div", { className: "p-4 space-y-4", children: _jsx("div", { className: "space-y-2", children: _jsxs(Group, { orientation: "horizontal", spacing: "none", children: [_jsxs(Group.Button, { variant: viewMode === 'list' ? 'default' : 'outline', onClick: () => setViewMode('list'), children: [_jsx(LayoutList, { size: 17, className: "mr-2 text-foreground-400" }), "List"] }), _jsxs(Group.Button, { variant: viewMode === 'grid' ? 'default' : 'outline', onClick: () => setViewMode('grid'), children: [_jsx(LayoutGrid, { size: 17, className: "mr-2 text-foreground-400" }), "Grid"] }), _jsxs(Group.Button, { variant: viewMode === 'table' ? 'default' : 'outline', onClick: () => setViewMode('table'), children: [_jsx(Table, { size: 17, className: "mr-2 text-foreground-400" }), "Table"] })] }) }) }));
14
- }
15
- //# sourceMappingURL=02-joined-toggle-buttons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"02-joined-toggle-buttons.js","sourceRoot":"","sources":["../../../../src/components/Button/examples/02-joined-toggle-buttons.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE,4GAA4G;CAC1H,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,OAAO;IAC7B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAEhD,OAAO,CACL,cAAK,SAAS,EAAC,eAAe,YAC5B,cAAK,SAAS,EAAC,WAAW,YACxB,MAAC,KAAK,IAAC,WAAW,EAAC,YAAY,EAAC,OAAO,EAAC,MAAM,aAC5C,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAElC,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,YAEhD,EACf,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACpD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAElC,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,YAEhD,EACf,MAAC,KAAK,CAAC,MAAM,IACX,OAAO,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,aAEnC,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0BAA0B,GAAG,aAE3C,IACT,GACJ,GACF,CACP,CAAA;AACH,CAAC"}