ui-lab-registry 0.3.1 → 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 (196) 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/components/Color/examples/03-format-switching.d.ts +0 -4
  6. package/dist/components/Color/examples/03-format-switching.d.ts.map +1 -1
  7. package/dist/components/Color/examples/03-format-switching.js +2 -2
  8. package/dist/components/Color/examples/03-format-switching.js.map +1 -1
  9. package/dist/components/Color/examples.json +0 -5
  10. package/dist/components/Command/examples/01-basic-command.js +1 -1
  11. package/dist/components/Command/examples/01-basic-command.js.map +1 -1
  12. package/dist/components/Command/examples.json +1 -1
  13. package/dist/components/Command/index.js +3 -3
  14. package/dist/components/Command/index.js.map +1 -1
  15. package/dist/components/Divider/examples/02-pattern-variants.js +1 -1
  16. package/dist/components/Divider/examples.json +1 -1
  17. package/dist/components/Grid/examples/01-basic-grid.js +1 -1
  18. package/dist/components/Grid/examples/01-basic-grid.js.map +1 -1
  19. package/dist/components/Grid/examples.json +1 -1
  20. package/dist/components/Grid/index.js +2 -2
  21. package/dist/components/Grid/index.js.map +1 -1
  22. package/dist/components/Input/examples/02-validation.js +1 -1
  23. package/dist/components/Input/examples/02-validation.js.map +1 -1
  24. package/dist/components/Input/examples.json +1 -1
  25. package/dist/components/Path/examples.json +0 -5
  26. package/dist/components/Radio/index.js +1 -1
  27. package/dist/components/Select/examples/02-searchable-select.js +1 -1
  28. package/dist/components/Select/examples/02-searchable-select.js.map +1 -1
  29. package/dist/components/Select/examples.json +1 -1
  30. package/dist/components/Tabs/examples/01-basic-tabs.js +2 -2
  31. package/dist/components/Tabs/examples/01-basic-tabs.js.map +1 -1
  32. package/dist/components/Tabs/examples/02-vertical-tabs.js +2 -2
  33. package/dist/components/Tabs/examples/02-vertical-tabs.js.map +1 -1
  34. package/dist/components/Tabs/examples.json +2 -2
  35. package/dist/components/Tabs/index.js +11 -11
  36. package/dist/components/Tabs/index.js.map +1 -1
  37. package/dist/elements/AI/AIChatInput/index.js +1 -1
  38. package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/index.js +1 -1
  39. package/dist/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.js +1 -1
  40. package/dist/elements/AI/AIChatInput/variations.json +2 -2
  41. package/dist/elements/AI/ChainOfThought/index.js +1 -1
  42. package/dist/elements/AI/Chat/index.js +1 -1
  43. package/dist/elements/AI/Chat/variations/02-with-actions/index.js +1 -1
  44. package/dist/elements/AI/Chat/variations.json +1 -1
  45. package/dist/elements/Documentation/CopyPage/index.js +1 -1
  46. package/dist/elements/Documentation/NextArticle/index.js +1 -1
  47. package/dist/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.js +1 -1
  48. package/dist/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.js +1 -1
  49. package/dist/elements/Documentation/NextArticle/variations.json +2 -2
  50. package/dist/elements/Documentation/TOC/index.js +1 -1
  51. package/dist/generated-data.d.ts.map +1 -1
  52. package/dist/generated-data.js +213 -947
  53. package/dist/generated-data.js.map +1 -1
  54. package/dist/generated-styles.d.ts.map +1 -1
  55. package/dist/generated-styles.js +171 -63
  56. package/dist/generated-styles.js.map +1 -1
  57. package/dist/generated-styles.json +171 -63
  58. package/dist/patterns/data/data-table-row/metadata.json +3 -3
  59. package/dist/patterns/data/data-table-row/variations/expandable/index.js +1 -1
  60. package/dist/patterns/data/data-table-row/variations/main/index.js +1 -1
  61. package/dist/patterns/data/data-table-row/variations/selectable/index.js +1 -1
  62. package/dist/patterns/data/progress-metric/metadata.json +3 -3
  63. package/dist/patterns/data/progress-metric/variations/colored/index.js +1 -1
  64. package/dist/patterns/data/progress-metric/variations/main/index.js +1 -1
  65. package/dist/patterns/data/progress-metric/variations/stacked/index.js +1 -1
  66. package/dist/patterns/form/labeled-field/metadata.json +4 -4
  67. package/dist/patterns/form/labeled-field/variations/main/index.js +1 -1
  68. package/dist/patterns/form/labeled-field/variations/with-error/index.js +1 -1
  69. package/dist/patterns/form/labeled-field/variations/with-hint/index.js +1 -1
  70. package/dist/patterns/form/select-row/metadata.json +2 -2
  71. package/dist/patterns/form/select-row/variations/main/index.js +1 -1
  72. package/dist/patterns/form/select-row/variations/with-icon/index.js +1 -1
  73. package/dist/patterns/form/toggle-setting-row/metadata.json +2 -2
  74. package/dist/patterns/form/toggle-setting-row/variations/destructive/index.js +1 -1
  75. package/dist/patterns/form/toggle-setting-row/variations/main/index.js +1 -1
  76. package/dist/patterns/interaction/icon-action-bar/variations/compact/index.js +1 -1
  77. package/dist/patterns/layout/media-object/metadata.json +1 -1
  78. package/dist/patterns/layout/media-object/variations/sm/index.js +1 -1
  79. package/dist/patterns/layout/split-row/metadata.json +3 -3
  80. package/dist/patterns/layout/split-row/variations/actions/index.js +1 -1
  81. package/dist/patterns/layout/split-row/variations/main/index.js +1 -1
  82. package/dist/patterns/layout/split-row/variations/meta/index.js +1 -1
  83. package/dist/patterns/layout/stat-block/metadata.json +3 -3
  84. package/dist/patterns/layout/stat-block/variations/compact/index.js +1 -1
  85. package/dist/patterns/layout/stat-block/variations/main/index.js +1 -1
  86. package/dist/patterns/layout/stat-block/variations/with-icon/index.js +1 -1
  87. package/dist/registry.d.ts.map +1 -1
  88. package/dist/registry.js +17 -27
  89. package/dist/registry.js.map +1 -1
  90. package/dist/sections/CTA/variations/02-split/index.js +1 -1
  91. package/dist/sections/CTA/variations.json +1 -1
  92. package/dist/sections/Pricing/variations/01-cards/index.js +1 -1
  93. package/dist/sections/Pricing/variations/02-comparison/index.js +1 -1
  94. package/dist/sections/Pricing/variations.json +2 -2
  95. package/dist/sections/categories.d.ts +0 -11
  96. package/dist/sections/categories.d.ts.map +1 -1
  97. package/dist/sections/categories.js +2 -2
  98. package/dist/sections/categories.js.map +1 -1
  99. package/dist/starters/NextJS/index.js +1 -1
  100. package/dist/types.d.ts +0 -5
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/utils/load-component-examples.d.ts +3 -2
  103. package/dist/utils/load-component-examples.d.ts.map +1 -1
  104. package/package.json +2 -6
  105. package/src/component-dependencies.ts +4 -4
  106. package/src/components/Anchor/metadata.json +1 -1
  107. package/src/components/Banner/metadata.json +1 -1
  108. package/src/components/Code/metadata.json +1 -1
  109. package/src/components/Color/examples/03-format-switching.tsx +3 -3
  110. package/src/components/Color/examples.json +0 -5
  111. package/src/components/Command/examples/01-basic-command.tsx +1 -1
  112. package/src/components/Command/examples.json +1 -1
  113. package/src/components/Command/index.tsx +3 -3
  114. package/src/components/Date/metadata.json +1 -1
  115. package/src/components/Divider/examples/02-pattern-variants.tsx +3 -3
  116. package/src/components/Divider/examples.json +1 -1
  117. package/src/components/Flex/metadata.json +1 -1
  118. package/src/components/Gallery/metadata.json +1 -1
  119. package/src/components/Grid/examples/01-basic-grid.tsx +1 -1
  120. package/src/components/Grid/examples.json +1 -1
  121. package/src/components/Grid/index.tsx +2 -2
  122. package/src/components/Group/metadata.json +1 -1
  123. package/src/components/Input/examples/02-validation.tsx +2 -2
  124. package/src/components/Input/examples.json +1 -1
  125. package/src/components/List/metadata.json +1 -1
  126. package/src/components/Page/metadata.json +1 -1
  127. package/src/components/Panel/metadata.json +1 -1
  128. package/src/components/Path/examples.json +0 -5
  129. package/src/components/Radio/index.tsx +1 -1
  130. package/src/components/Select/examples/02-searchable-select.tsx +1 -1
  131. package/src/components/Select/examples.json +1 -1
  132. package/src/components/Tabs/examples/01-basic-tabs.tsx +12 -12
  133. package/src/components/Tabs/examples/02-vertical-tabs.tsx +19 -19
  134. package/src/components/Tabs/examples.json +2 -2
  135. package/src/components/Tabs/index.tsx +45 -45
  136. package/src/elements/AI/AIChatInput/index.tsx +2 -2
  137. package/src/elements/AI/AIChatInput/variations/02-with-suggestions/index.tsx +1 -1
  138. package/src/elements/AI/AIChatInput/variations/02-with-suggestions/layout/PromptInputWithSuggestions.tsx +1 -1
  139. package/src/elements/AI/AIChatInput/variations.json +2 -2
  140. package/src/elements/AI/ChainOfThought/index.tsx +1 -1
  141. package/src/elements/AI/Chat/index.tsx +4 -4
  142. package/src/elements/AI/Chat/variations/02-with-actions/index.tsx +3 -3
  143. package/src/elements/AI/Chat/variations.json +1 -1
  144. package/src/elements/Documentation/CopyPage/index.tsx +1 -1
  145. package/src/elements/Documentation/NextArticle/index.tsx +1 -1
  146. package/src/elements/Documentation/NextArticle/variations/01-basic/layout/NextArticleCard.tsx +1 -1
  147. package/src/elements/Documentation/NextArticle/variations/02-with-icon/layout/NextArticleWithIconCard.tsx +1 -1
  148. package/src/elements/Documentation/NextArticle/variations.json +2 -2
  149. package/src/elements/Documentation/TOC/index.tsx +4 -4
  150. package/src/generated-data.ts +213 -947
  151. package/src/generated-styles.ts +171 -63
  152. package/src/patterns/data/data-table-row/metadata.json +4 -4
  153. package/src/patterns/data/data-table-row/variations/expandable/index.tsx +3 -3
  154. package/src/patterns/data/data-table-row/variations/main/index.tsx +2 -2
  155. package/src/patterns/data/data-table-row/variations/selectable/index.tsx +2 -2
  156. package/src/patterns/data/progress-metric/metadata.json +4 -4
  157. package/src/patterns/data/progress-metric/variations/colored/index.tsx +2 -2
  158. package/src/patterns/data/progress-metric/variations/main/index.tsx +2 -2
  159. package/src/patterns/data/progress-metric/variations/stacked/index.tsx +2 -2
  160. package/src/patterns/form/labeled-field/metadata.json +5 -5
  161. package/src/patterns/form/labeled-field/variations/main/index.tsx +1 -1
  162. package/src/patterns/form/labeled-field/variations/with-error/index.tsx +1 -1
  163. package/src/patterns/form/labeled-field/variations/with-hint/index.tsx +1 -1
  164. package/src/patterns/form/select-row/metadata.json +3 -3
  165. package/src/patterns/form/select-row/variations/main/index.tsx +1 -1
  166. package/src/patterns/form/select-row/variations/with-icon/index.tsx +1 -1
  167. package/src/patterns/form/toggle-setting-row/metadata.json +3 -3
  168. package/src/patterns/form/toggle-setting-row/variations/destructive/index.tsx +1 -1
  169. package/src/patterns/form/toggle-setting-row/variations/main/index.tsx +1 -1
  170. package/src/patterns/interaction/icon-action-bar/variations/compact/index.tsx +1 -1
  171. package/src/patterns/layout/media-object/metadata.json +2 -2
  172. package/src/patterns/layout/media-object/variations/sm/index.tsx +2 -2
  173. package/src/patterns/layout/split-row/metadata.json +4 -4
  174. package/src/patterns/layout/split-row/variations/actions/index.tsx +1 -1
  175. package/src/patterns/layout/split-row/variations/main/index.tsx +2 -2
  176. package/src/patterns/layout/split-row/variations/meta/index.tsx +3 -3
  177. package/src/patterns/layout/stat-block/metadata.json +4 -4
  178. package/src/patterns/layout/stat-block/variations/compact/index.tsx +1 -1
  179. package/src/patterns/layout/stat-block/variations/main/index.tsx +1 -1
  180. package/src/patterns/layout/stat-block/variations/with-icon/index.tsx +1 -1
  181. package/src/registry.ts +17 -27
  182. package/src/sections/CTA/variations/02-split/index.tsx +1 -1
  183. package/src/sections/CTA/variations.json +1 -1
  184. package/src/sections/Pricing/variations/01-cards/index.tsx +1 -1
  185. package/src/sections/Pricing/variations/02-comparison/index.tsx +1 -1
  186. package/src/sections/Pricing/variations.json +2 -2
  187. package/src/sections/categories.ts +2 -2
  188. package/src/starters/NextJS/index.tsx +2 -2
  189. package/src/types.ts +1 -1
  190. package/src/utils/load-component-examples.ts +2 -2
  191. package/src/components/Path/examples/01-basic-breadcrumbs.tsx +0 -17
  192. package/src/providers/Theme/examples/01-provider-setup.tsx +0 -37
  193. package/src/providers/Theme/examples/02-toggle-component.tsx +0 -52
  194. package/src/providers/Theme/examples/03-advanced-patterns.tsx +0 -138
  195. package/src/providers/Theme/examples/index.ts +0 -3
  196. package/src/src/generated-styles.ts +0 -1359
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Tabs, TabsList, TabsTrigger, TabsContent, Card } from 'ui-lab-components';
2
+ import { Tabs, Card } from 'ui-lab-components';
3
3
  import { User, Settings, Bell, Shield } from 'lucide-react';
4
4
 
5
5
  export const metadata = {
@@ -13,27 +13,27 @@ export default function Example() {
13
13
  <Card className="w-full max-w-2xl">
14
14
  <Tabs defaultValue="profile" className="flex flex-row">
15
15
  {/* Vertical tab list - styled as sidebar */}
16
- <TabsList
16
+ <Tabs.List
17
17
  aria-label="Settings sections"
18
18
  className="flex-col items-stretch justify-start h-auto w-48 border-r border-background-700 rounded-none bg-transparent p-2"
19
19
  >
20
- <TabsTrigger value="profile" icon={<User className="w-4 h-4" />} className="justify-start">
20
+ <Tabs.Trigger value="profile" icon={<User className="w-4 h-4" />} className="justify-start">
21
21
  Profile
22
- </TabsTrigger>
23
- <TabsTrigger value="notifications" icon={<Bell className="w-4 h-4" />} className="justify-start">
22
+ </Tabs.Trigger>
23
+ <Tabs.Trigger value="notifications" icon={<Bell className="w-4 h-4" />} className="justify-start">
24
24
  Notifications
25
- </TabsTrigger>
26
- <TabsTrigger value="security" icon={<Shield className="w-4 h-4" />} className="justify-start">
25
+ </Tabs.Trigger>
26
+ <Tabs.Trigger value="security" icon={<Shield className="w-4 h-4" />} className="justify-start">
27
27
  Security
28
- </TabsTrigger>
29
- <TabsTrigger value="preferences" icon={<Settings className="w-4 h-4" />} className="justify-start">
28
+ </Tabs.Trigger>
29
+ <Tabs.Trigger value="preferences" icon={<Settings className="w-4 h-4" />} className="justify-start">
30
30
  Preferences
31
- </TabsTrigger>
32
- </TabsList>
31
+ </Tabs.Trigger>
32
+ </Tabs.List>
33
33
 
34
34
  {/* Content panels */}
35
35
  <div className="flex-1 p-6">
36
- <TabsContent value="profile" className="mt-0">
36
+ <Tabs.Content value="profile" className="mt-0">
37
37
  <h3 className="text-lg font-semibold text-foreground-100 mb-2">Profile Settings</h3>
38
38
  <p className="text-foreground-400 text-sm mb-4">
39
39
  Manage your personal information and how others see you on the platform.
@@ -43,9 +43,9 @@ export default function Example() {
43
43
  <div className="h-10 w-full bg-background-800 rounded border border-background-700" />
44
44
  <div className="h-10 w-2/3 bg-background-800 rounded border border-background-700" />
45
45
  </div>
46
- </TabsContent>
46
+ </Tabs.Content>
47
47
 
48
- <TabsContent value="notifications" className="mt-0">
48
+ <Tabs.Content value="notifications" className="mt-0">
49
49
  <h3 className="text-lg font-semibold text-foreground-100 mb-2">Notification Preferences</h3>
50
50
  <p className="text-foreground-400 text-sm mb-4">
51
51
  Control how and when you receive alerts and updates.
@@ -64,9 +64,9 @@ export default function Example() {
64
64
  <div className="h-4 w-28 bg-background-800 rounded" />
65
65
  </div>
66
66
  </div>
67
- </TabsContent>
67
+ </Tabs.Content>
68
68
 
69
- <TabsContent value="security" className="mt-0">
69
+ <Tabs.Content value="security" className="mt-0">
70
70
  <h3 className="text-lg font-semibold text-foreground-100 mb-2">Security Settings</h3>
71
71
  <p className="text-foreground-400 text-sm mb-4">
72
72
  Protect your account with passwords, two-factor authentication, and more.
@@ -81,9 +81,9 @@ export default function Example() {
81
81
  <div className="h-3 w-40 bg-background-700/50 rounded" />
82
82
  </div>
83
83
  </div>
84
- </TabsContent>
84
+ </Tabs.Content>
85
85
 
86
- <TabsContent value="preferences" className="mt-0">
86
+ <Tabs.Content value="preferences" className="mt-0">
87
87
  <h3 className="text-lg font-semibold text-foreground-100 mb-2">General Preferences</h3>
88
88
  <p className="text-foreground-400 text-sm mb-4">
89
89
  Customize your experience with theme, language, and display options.
@@ -94,7 +94,7 @@ export default function Example() {
94
94
  <div className="h-20 bg-background-800 rounded border border-background-700" />
95
95
  <div className="h-20 bg-background-800 rounded border border-background-700" />
96
96
  </div>
97
- </TabsContent>
97
+ </Tabs.Content>
98
98
  </div>
99
99
  </Tabs>
100
100
  </Card>
@@ -2,11 +2,11 @@
2
2
  "01-basic-tabs": {
3
3
  "title": "Basic Tabs",
4
4
  "description": "A simple tabbed interface with content switching. Use this to organize related content into separate views.",
5
- "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}"
5
+ "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}"
6
6
  },
7
7
  "02-vertical-tabs": {
8
8
  "title": "Vertical Tabs (Sidebar)",
9
9
  "description": "A vertical tab layout ideal for settings pages or sidebar navigation. Tabs are stacked vertically with content panels beside them.",
10
- "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}"
10
+ "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}"
11
11
  }
12
12
  }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Tabs, TabsContent, TabsList, TabsTrigger } from 'ui-lab-components';
2
+ import { Tabs } from 'ui-lab-components';
3
3
  import { ControlDef, ComponentDetail } from '@/types';
4
4
  import Example1, { metadata as metadata1 } from './examples/01-basic-tabs.js';
5
5
  import Example2, { metadata as metadata2 } from './examples/02-vertical-tabs.js';
@@ -37,12 +37,12 @@ const tabsBasicCode = `import { Tabs } from "ui-lab-components";
37
37
  export function Example() {
38
38
  return (
39
39
  <Tabs defaultValue="tab1">
40
- <TabsList>
41
- <TabsTrigger value="tab1">Tab 1</TabsTrigger>
42
- <TabsTrigger value="tab2">Tab 2</TabsTrigger>
43
- </TabsList>
44
- <TabsContent value="tab1">Content 1</TabsContent>
45
- <TabsContent value="tab2">Content 2</TabsContent>
40
+ <Tabs.List>
41
+ <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
42
+ <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
43
+ </Tabs.List>
44
+ <Tabs.Content value="tab1">Content 1</Tabs.Content>
45
+ <Tabs.Content value="tab2">Content 2</Tabs.Content>
46
46
  </Tabs>
47
47
  );
48
48
  }`;
@@ -70,39 +70,39 @@ export const tabsDetail: ComponentDetail = {
70
70
  code: tabsBasicCode,
71
71
  preview: (
72
72
  <Tabs defaultValue="tab1">
73
- <TabsList>
74
- <TabsTrigger value="tab1">Tab 1</TabsTrigger>
75
- <TabsTrigger value="tab2">Tab 2</TabsTrigger>
76
- <TabsTrigger value="tab3">Tab 3</TabsTrigger>
77
- </TabsList>
78
- <TabsContent value="tab1">
73
+ <Tabs.List>
74
+ <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
75
+ <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
76
+ <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
77
+ </Tabs.List>
78
+ <Tabs.Content value="tab1">
79
79
  <p className="text-foreground-300">Content for Tab 1</p>
80
- </TabsContent>
81
- <TabsContent value="tab2">
80
+ </Tabs.Content>
81
+ <Tabs.Content value="tab2">
82
82
  <p className="text-foreground-300">Content for Tab 2</p>
83
- </TabsContent>
84
- <TabsContent value="tab3">
83
+ </Tabs.Content>
84
+ <Tabs.Content value="tab3">
85
85
  <p className="text-foreground-300">Content for Tab 3</p>
86
- </TabsContent>
86
+ </Tabs.Content>
87
87
  </Tabs>
88
88
  ),
89
89
  controls: tabsControls,
90
90
  renderPreview: (props: any) => (
91
91
  <Tabs defaultValue="tab1" variant={props.variant}>
92
- <TabsList>
93
- <TabsTrigger value="tab1">Tab 1</TabsTrigger>
94
- <TabsTrigger value="tab2" disabled={props.disabled}>Tab 2</TabsTrigger>
95
- <TabsTrigger value="tab3">Tab 3</TabsTrigger>
96
- </TabsList>
97
- <TabsContent value="tab1">
92
+ <Tabs.List>
93
+ <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
94
+ <Tabs.Trigger value="tab2" disabled={props.disabled}>Tab 2</Tabs.Trigger>
95
+ <Tabs.Trigger value="tab3">Tab 3</Tabs.Trigger>
96
+ </Tabs.List>
97
+ <Tabs.Content value="tab1">
98
98
  <p className="text-foreground-300">Content for Tab 1</p>
99
- </TabsContent>
100
- <TabsContent value="tab2">
99
+ </Tabs.Content>
100
+ <Tabs.Content value="tab2">
101
101
  <p className="text-foreground-300">Content for Tab 2</p>
102
- </TabsContent>
103
- <TabsContent value="tab3">
102
+ </Tabs.Content>
103
+ <Tabs.Content value="tab3">
104
104
  <p className="text-foreground-300">Content for Tab 3</p>
105
- </TabsContent>
105
+ </Tabs.Content>
106
106
  </Tabs>
107
107
  ),
108
108
  },
@@ -117,16 +117,16 @@ export const tabsDetail: ComponentDetail = {
117
117
  code: tabsBasicCode,
118
118
  preview: (
119
119
  <Tabs defaultValue="tab1">
120
- <TabsList>
121
- <TabsTrigger value="tab1">Tab 1</TabsTrigger>
122
- <TabsTrigger value="tab2">Tab 2</TabsTrigger>
123
- </TabsList>
124
- <TabsContent value="tab1">
120
+ <Tabs.List>
121
+ <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
122
+ <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
123
+ </Tabs.List>
124
+ <Tabs.Content value="tab1">
125
125
  <p className="text-foreground-300">Content 1</p>
126
- </TabsContent>
127
- <TabsContent value="tab2">
126
+ </Tabs.Content>
127
+ <Tabs.Content value="tab2">
128
128
  <p className="text-foreground-300">Content 2</p>
129
- </TabsContent>
129
+ </Tabs.Content>
130
130
  </Tabs>
131
131
  ),
132
132
  },
@@ -137,16 +137,16 @@ export const tabsDetail: ComponentDetail = {
137
137
  code: `<Tabs variant="underline">...</Tabs>`,
138
138
  preview: (
139
139
  <Tabs defaultValue="tab1" variant="underline">
140
- <TabsList>
141
- <TabsTrigger value="tab1">Tab 1</TabsTrigger>
142
- <TabsTrigger value="tab2">Tab 2</TabsTrigger>
143
- </TabsList>
144
- <TabsContent value="tab1" className="mt-6">
140
+ <Tabs.List>
141
+ <Tabs.Trigger value="tab1">Tab 1</Tabs.Trigger>
142
+ <Tabs.Trigger value="tab2">Tab 2</Tabs.Trigger>
143
+ </Tabs.List>
144
+ <Tabs.Content value="tab1" className="mt-6">
145
145
  <p className="text-foreground-300">Content 1</p>
146
- </TabsContent>
147
- <TabsContent value="tab2" className="mt-6">
146
+ </Tabs.Content>
147
+ <Tabs.Content value="tab2" className="mt-6">
148
148
  <p className="text-foreground-300">Content 2</p>
149
- </TabsContent>
149
+ </Tabs.Content>
150
150
  </Tabs>
151
151
  ),
152
152
  },
@@ -32,10 +32,10 @@ export function getPreview(): React.ReactNode {
32
32
  <input
33
33
  type="text"
34
34
  placeholder="Ask AI..."
35
- className="flex-1 bg-background-800 border border-background-700 rounded px-2 py-1 text-xs text-foreground-400 placeholder-foreground-400"
35
+ className="flex-1 bg-background-800 border border-background-700 rounded px-2 py-1 text-sm text-foreground-400 placeholder-foreground-400"
36
36
  readOnly
37
37
  />
38
- <button className="px-2 py-1 bg-accent-500 text-foreground-50 rounded text-xs font-medium hover:bg-accent-600">
38
+ <button className="px-2 py-1 bg-accent-500 text-foreground-50 rounded text-sm font-medium hover:bg-accent-600">
39
39
 
40
40
  </button>
41
41
  </div>
@@ -56,7 +56,7 @@ export function AIChatInputWithSuggestions() {
56
56
 
57
57
  {selectedSuggestion && (
58
58
  <div className="p-4 bg-background-800 border border-accent-500/30 rounded-md">
59
- <p className="text-xs text-foreground-400 mb-1">Using suggestion:</p>
59
+ <p className="text-sm text-foreground-400 mb-1">Using suggestion:</p>
60
60
  <p className="text-foreground-50">{selectedSuggestion}</p>
61
61
  </div>
62
62
  )}
@@ -54,7 +54,7 @@ export function PromptInputWithSuggestions({
54
54
  >
55
55
  Send
56
56
  </button>
57
- <button className="px-2 py-1 text-foreground-400 hover:text-foreground-200 text-xs rounded border border-background-700 hover:border-background-600 transition-colors">
57
+ <button className="px-2 py-1 text-foreground-400 hover:text-foreground-200 text-sm rounded border border-background-700 hover:border-background-600 transition-colors">
58
58
  ⌘K
59
59
  </button>
60
60
  </div>
@@ -28,13 +28,13 @@
28
28
  {
29
29
  "filename": "index.tsx",
30
30
  "language": "typescript",
31
- "code": "\"use client\"\nimport React, { useState } from 'react';\nimport { PromptInputWithSuggestions } from './layout/PromptInputWithSuggestions.js';\n\nexport function AIChatInputWithSuggestions() {\n const [prompt, setPrompt] = useState('');\n const [selectedSuggestion, setSelectedSuggestion] = useState<string | null>(null);\n\n const suggestions = [\n 'Explain this concept in simple terms',\n 'Write a code example',\n 'What are the best practices?',\n 'How do I debug this?',\n ];\n\n const handleSubmit = (value: string) => {\n console.log('Prompt submitted:', value);\n setPrompt('');\n setSelectedSuggestion(null);\n };\n\n const handleSuggestionClick = (suggestion: string) => {\n setSelectedSuggestion(suggestion);\n setPrompt(suggestion);\n };\n\n return (\n <div className=\"min-h-screen bg-background-950 p-8\">\n <div className=\"max-w-2xl mx-auto\">\n <h1 className=\"text-3xl font-bold text-foreground-50 mb-8\">Chat with AI</h1>\n\n <div className=\"space-y-6\">\n {prompt.length === 0 && (\n <div>\n <p className=\"text-sm text-foreground-400 mb-3\">Quick suggestions:</p>\n <div className=\"grid grid-cols-2 gap-2\">\n {suggestions.map((suggestion) => (\n <button\n key={suggestion}\n onClick={() => handleSuggestionClick(suggestion)}\n className=\"text-left px-3 py-2 bg-background-800 border border-background-700 rounded hover:border-accent-500 hover:bg-background-700/80 transition-colors text-sm text-foreground-300 hover:text-foreground-200\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <PromptInputWithSuggestions\n value={prompt}\n onChange={setPrompt}\n onSubmit={handleSubmit}\n placeholder=\"Enter your prompt or use a suggestion...\"\n />\n\n {selectedSuggestion && (\n <div className=\"p-4 bg-background-800 border border-accent-500/30 rounded-md\">\n <p className=\"text-xs text-foreground-400 mb-1\">Using suggestion:</p>\n <p className=\"text-foreground-50\">{selectedSuggestion}</p>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n",
31
+ "code": "\"use client\"\nimport React, { useState } from 'react';\nimport { PromptInputWithSuggestions } from './layout/PromptInputWithSuggestions.js';\n\nexport function AIChatInputWithSuggestions() {\n const [prompt, setPrompt] = useState('');\n const [selectedSuggestion, setSelectedSuggestion] = useState<string | null>(null);\n\n const suggestions = [\n 'Explain this concept in simple terms',\n 'Write a code example',\n 'What are the best practices?',\n 'How do I debug this?',\n ];\n\n const handleSubmit = (value: string) => {\n console.log('Prompt submitted:', value);\n setPrompt('');\n setSelectedSuggestion(null);\n };\n\n const handleSuggestionClick = (suggestion: string) => {\n setSelectedSuggestion(suggestion);\n setPrompt(suggestion);\n };\n\n return (\n <div className=\"min-h-screen bg-background-950 p-8\">\n <div className=\"max-w-2xl mx-auto\">\n <h1 className=\"text-3xl font-bold text-foreground-50 mb-8\">Chat with AI</h1>\n\n <div className=\"space-y-6\">\n {prompt.length === 0 && (\n <div>\n <p className=\"text-sm text-foreground-400 mb-3\">Quick suggestions:</p>\n <div className=\"grid grid-cols-2 gap-2\">\n {suggestions.map((suggestion) => (\n <button\n key={suggestion}\n onClick={() => handleSuggestionClick(suggestion)}\n className=\"text-left px-3 py-2 bg-background-800 border border-background-700 rounded hover:border-accent-500 hover:bg-background-700/80 transition-colors text-sm text-foreground-300 hover:text-foreground-200\"\n >\n {suggestion}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <PromptInputWithSuggestions\n value={prompt}\n onChange={setPrompt}\n onSubmit={handleSubmit}\n placeholder=\"Enter your prompt or use a suggestion...\"\n />\n\n {selectedSuggestion && (\n <div className=\"p-4 bg-background-800 border border-accent-500/30 rounded-md\">\n <p className=\"text-sm text-foreground-400 mb-1\">Using suggestion:</p>\n <p className=\"text-foreground-50\">{selectedSuggestion}</p>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n",
32
32
  "isEntryPoint": true
33
33
  },
34
34
  {
35
35
  "filename": "PromptInputWithSuggestions.tsx",
36
36
  "language": "typescript",
37
- "code": "import React, { useRef, useEffect } from 'react';\n\ninterface PromptInputWithSuggestionsProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (value: string) => void;\n placeholder?: string;\n}\n\nexport function PromptInputWithSuggestions({\n value,\n onChange,\n onSubmit,\n placeholder = 'Ask AI...',\n}: PromptInputWithSuggestionsProps) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 150)}px`;\n }\n }, [value]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n if (value.trim()) {\n onSubmit(value);\n }\n }\n };\n\n return (\n <div className=\"flex gap-3 p-4 bg-background-800 border border-background-700 rounded-md\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"flex-1 bg-transparent border-0 text-foreground-50 placeholder-foreground-400 focus:outline-none resize-none\"\n rows={1}\n />\n <div className=\"flex flex-col gap-2\">\n <button\n onClick={() => {\n if (value.trim()) {\n onSubmit(value);\n }\n }}\n disabled={!value.trim()}\n className=\"px-4 py-2 bg-accent-500 text-foreground-50 rounded font-medium hover:bg-accent-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 text-sm\"\n >\n Send\n </button>\n <button className=\"px-2 py-1 text-foreground-400 hover:text-foreground-200 text-xs rounded border border-background-700 hover:border-background-600 transition-colors\">\n ⌘K\n </button>\n </div>\n </div>\n );\n}\n",
37
+ "code": "import React, { useRef, useEffect } from 'react';\n\ninterface PromptInputWithSuggestionsProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (value: string) => void;\n placeholder?: string;\n}\n\nexport function PromptInputWithSuggestions({\n value,\n onChange,\n onSubmit,\n placeholder = 'Ask AI...',\n}: PromptInputWithSuggestionsProps) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n useEffect(() => {\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 150)}px`;\n }\n }, [value]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n if (value.trim()) {\n onSubmit(value);\n }\n }\n };\n\n return (\n <div className=\"flex gap-3 p-4 bg-background-800 border border-background-700 rounded-md\">\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"flex-1 bg-transparent border-0 text-foreground-50 placeholder-foreground-400 focus:outline-none resize-none\"\n rows={1}\n />\n <div className=\"flex flex-col gap-2\">\n <button\n onClick={() => {\n if (value.trim()) {\n onSubmit(value);\n }\n }}\n disabled={!value.trim()}\n className=\"px-4 py-2 bg-accent-500 text-foreground-50 rounded font-medium hover:bg-accent-600 transition-colors disabled:opacity-50 disabled:cursor-not-allowed flex-shrink-0 text-sm\"\n >\n Send\n </button>\n <button className=\"px-2 py-1 text-foreground-400 hover:text-foreground-200 text-sm rounded border border-background-700 hover:border-background-600 transition-colors\">\n ⌘K\n </button>\n </div>\n </div>\n );\n}\n",
38
38
  "isEntryPoint": false
39
39
  }
40
40
  ]
@@ -29,7 +29,7 @@ const elementMetadata: ElementMetadata = {
29
29
  export function getPreview(): React.ReactNode {
30
30
  return (
31
31
  <div className="flex flex-col gap-2 w-full h-full p-3 bg-background-900 rounded-sm border border-background-700">
32
- <div className="space-y-2 text-xs">
32
+ <div className="space-y-2 text-sm">
33
33
  <div className="flex items-start gap-2">
34
34
  <span className="text-accent-500 font-bold">1.</span>
35
35
  <div className="text-foreground-400">Analyzing the problem</div>
@@ -31,23 +31,23 @@ export function getPreview(): React.ReactNode {
31
31
  <div className="flex flex-col h-full w-full bg-background-900 rounded-sm border border-background-700 overflow-hidden">
32
32
  <div className="flex-1 overflow-y-auto space-y-3 p-3">
33
33
  <div className="flex justify-start">
34
- <div className="bg-background-700 rounded px-3 py-2 max-w-xs text-xs text-foreground-400">
34
+ <div className="bg-background-700 rounded px-3 py-2 max-w-xs text-sm text-foreground-400">
35
35
  Hello, how can I help?
36
36
  </div>
37
37
  </div>
38
38
  <div className="flex justify-end">
39
- <div className="bg-accent-500 rounded px-3 py-2 max-w-xs text-xs text-foreground-50">
39
+ <div className="bg-accent-500 rounded px-3 py-2 max-w-xs text-sm text-foreground-50">
40
40
  I need some assistance
41
41
  </div>
42
42
  </div>
43
43
  <div className="flex justify-start">
44
- <div className="bg-background-700 rounded px-3 py-2 max-w-xs text-xs text-foreground-400">
44
+ <div className="bg-background-700 rounded px-3 py-2 max-w-xs text-sm text-foreground-400">
45
45
  I'm here to help!
46
46
  </div>
47
47
  </div>
48
48
  </div>
49
49
  <div className="border-t border-background-700 p-2 bg-background-800">
50
- <div className="h-6 bg-background-700 rounded text-xs flex items-center px-2 text-foreground-400">
50
+ <div className="h-6 bg-background-700 rounded text-sm flex items-center px-2 text-foreground-400">
51
51
  Type a message...
52
52
  </div>
53
53
  </div>
@@ -57,19 +57,19 @@ export function ChatWithActions() {
57
57
  <div className="flex gap-2 mb-3 flex-wrap">
58
58
  <button
59
59
  onClick={() => handleAction('Copy code')}
60
- className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors"
60
+ className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors"
61
61
  >
62
62
  📋 Copy
63
63
  </button>
64
64
  <button
65
65
  onClick={() => handleAction('Explain')}
66
- className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors"
66
+ className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors"
67
67
  >
68
68
  💡 Explain
69
69
  </button>
70
70
  <button
71
71
  onClick={() => handleAction('Refactor')}
72
- className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors"
72
+ className="px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors"
73
73
  >
74
74
  ✨ Refactor
75
75
  </button>
@@ -40,7 +40,7 @@
40
40
  {
41
41
  "filename": "index.tsx",
42
42
  "language": "typescript",
43
- "code": "\"use client\"\nimport React, { useState } from 'react';\nimport { ChatContainerWithActions } from './layout/ChatContainerWithActions.js';\nimport { ChatMessage } from './layout/ChatMessage.js';\nimport { ChatInputWithActions } from './layout/ChatInputWithActions.js';\n\ninterface Message {\n id: string;\n content: string;\n sender: 'ai' | 'user';\n}\n\nexport function ChatWithActions() {\n const [messages, setMessages] = useState<Message[]>([\n { id: '1', content: 'Hello! I can help you with questions or tasks.', sender: 'ai' },\n { id: '2', content: 'Can you help me with debugging?', sender: 'user' },\n { id: '3', content: 'Absolutely! I can help you debug your code. What issue are you facing?', sender: 'ai' },\n ]);\n\n const handleSendMessage = (content: string) => {\n const userMessage = {\n id: String(messages.length + 1),\n content,\n sender: 'user' as const,\n };\n setMessages([...messages, userMessage]);\n\n setTimeout(() => {\n const aiMessage = {\n id: String(messages.length + 2),\n content: 'I can help with that. Let me analyze your code.',\n sender: 'ai' as const,\n };\n setMessages((prev) => [...prev, aiMessage]);\n }, 500);\n };\n\n const handleAction = (action: string) => {\n const actionMessage = {\n id: String(messages.length + 1),\n content: `[Action: ${action}]`,\n sender: 'user' as const,\n };\n setMessages([...messages, actionMessage]);\n };\n\n return (\n <div className=\"min-h-screen bg-background-950 p-8\">\n <div className=\"max-w-2xl mx-auto h-96\">\n <ChatContainerWithActions>\n <div className=\"flex-1 overflow-y-auto space-y-4 p-4\">\n {messages.map((message) => (\n <ChatMessage key={message.id} message={message.content} sender={message.sender} />\n ))}\n </div>\n <div className=\"border-t border-background-700 p-4 bg-background-700/50\">\n <div className=\"flex gap-2 mb-3 flex-wrap\">\n <button\n onClick={() => handleAction('Copy code')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors\"\n >\n 📋 Copy\n </button>\n <button\n onClick={() => handleAction('Explain')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors\"\n >\n 💡 Explain\n </button>\n <button\n onClick={() => handleAction('Refactor')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-xs transition-colors\"\n >\n ✨ Refactor\n </button>\n </div>\n <ChatInputWithActions onSendMessage={handleSendMessage} />\n </div>\n </ChatContainerWithActions>\n </div>\n </div>\n );\n}\n",
43
+ "code": "\"use client\"\nimport React, { useState } from 'react';\nimport { ChatContainerWithActions } from './layout/ChatContainerWithActions.js';\nimport { ChatMessage } from './layout/ChatMessage.js';\nimport { ChatInputWithActions } from './layout/ChatInputWithActions.js';\n\ninterface Message {\n id: string;\n content: string;\n sender: 'ai' | 'user';\n}\n\nexport function ChatWithActions() {\n const [messages, setMessages] = useState<Message[]>([\n { id: '1', content: 'Hello! I can help you with questions or tasks.', sender: 'ai' },\n { id: '2', content: 'Can you help me with debugging?', sender: 'user' },\n { id: '3', content: 'Absolutely! I can help you debug your code. What issue are you facing?', sender: 'ai' },\n ]);\n\n const handleSendMessage = (content: string) => {\n const userMessage = {\n id: String(messages.length + 1),\n content,\n sender: 'user' as const,\n };\n setMessages([...messages, userMessage]);\n\n setTimeout(() => {\n const aiMessage = {\n id: String(messages.length + 2),\n content: 'I can help with that. Let me analyze your code.',\n sender: 'ai' as const,\n };\n setMessages((prev) => [...prev, aiMessage]);\n }, 500);\n };\n\n const handleAction = (action: string) => {\n const actionMessage = {\n id: String(messages.length + 1),\n content: `[Action: ${action}]`,\n sender: 'user' as const,\n };\n setMessages([...messages, actionMessage]);\n };\n\n return (\n <div className=\"min-h-screen bg-background-950 p-8\">\n <div className=\"max-w-2xl mx-auto h-96\">\n <ChatContainerWithActions>\n <div className=\"flex-1 overflow-y-auto space-y-4 p-4\">\n {messages.map((message) => (\n <ChatMessage key={message.id} message={message.content} sender={message.sender} />\n ))}\n </div>\n <div className=\"border-t border-background-700 p-4 bg-background-700/50\">\n <div className=\"flex gap-2 mb-3 flex-wrap\">\n <button\n onClick={() => handleAction('Copy code')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors\"\n >\n 📋 Copy\n </button>\n <button\n onClick={() => handleAction('Explain')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors\"\n >\n 💡 Explain\n </button>\n <button\n onClick={() => handleAction('Refactor')}\n className=\"px-2 py-1 bg-background-700 hover:bg-background-600 text-foreground-400 hover:text-foreground-300 rounded text-sm transition-colors\"\n >\n ✨ Refactor\n </button>\n </div>\n <ChatInputWithActions onSendMessage={handleSendMessage} />\n </div>\n </ChatContainerWithActions>\n </div>\n </div>\n );\n}\n",
44
44
  "isEntryPoint": true
45
45
  },
46
46
  {
@@ -29,7 +29,7 @@ const elementMetadata: ElementMetadata = {
29
29
  export function getPreview(): React.ReactNode {
30
30
  return (
31
31
  <div className="flex items-center justify-center w-full h-full p-3 bg-background-900 rounded-sm border border-background-700">
32
- <button className="px-3 py-2 bg-accent-500 text-foreground-50 text-xs font-medium rounded hover:bg-accent-600 transition-colors flex items-center gap-2">
32
+ <button className="px-3 py-2 bg-accent-500 text-foreground-50 text-sm font-medium rounded hover:bg-accent-600 transition-colors flex items-center gap-2">
33
33
  <span>📋</span>
34
34
  Copy
35
35
  </button>
@@ -30,7 +30,7 @@ export function getPreview(): React.ReactNode {
30
30
  return (
31
31
  <div className="flex items-center justify-between w-full h-full p-4 bg-background-900 rounded-sm border border-background-700 cursor-pointer hover:bg-background-800 transition-colors">
32
32
  <div className="flex-1">
33
- <div className="text-xs text-foreground-400 mb-1">Next Article</div>
33
+ <div className="text-sm text-foreground-400 mb-1">Next Article</div>
34
34
  <div className="text-sm font-medium text-foreground-200">Advanced Setup Guide</div>
35
35
  </div>
36
36
  <div className="text-foreground-400">→</div>
@@ -12,7 +12,7 @@ export function NextArticleCard({ title, description, href }: NextArticleCardPro
12
12
  >
13
13
  <div className="flex items-center justify-between">
14
14
  <div className="flex-1">
15
- <div className="text-xs text-foreground-400 mb-1">Next Article</div>
15
+ <div className="text-sm text-foreground-400 mb-1">Next Article</div>
16
16
  <h3 className="text-lg font-semibold text-foreground-50 mb-2 group-hover:text-accent-400 transition-colors">
17
17
  {title}
18
18
  </h3>
@@ -20,7 +20,7 @@ export function NextArticleWithIconCard({
20
20
  >
21
21
  <div className="text-3xl flex-shrink-0 mt-1">{icon}</div>
22
22
  <div className="flex-1 min-w-0">
23
- <div className="text-xs text-accent-400 font-medium mb-1">{category}</div>
23
+ <div className="text-sm text-accent-400 font-medium mb-1">{category}</div>
24
24
  <h3 className="text-lg font-semibold text-foreground-50 mb-1 group-hover:text-accent-400 transition-colors">
25
25
  {title}
26
26
  </h3>
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "filename": "NextArticleCard.tsx",
16
16
  "language": "typescript",
17
- "code": "interface NextArticleCardProps {\n title: string;\n description: string;\n href: string;\n}\n\nexport function NextArticleCard({ title, description, href }: NextArticleCardProps) {\n return (\n <a\n href={href}\n className=\"block bg-background-700 border border-background-600 rounded-md p-4 hover:border-accent-500 hover:bg-background-700/80 transition-colors group\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex-1\">\n <div className=\"text-xs text-foreground-400 mb-1\">Next Article</div>\n <h3 className=\"text-lg font-semibold text-foreground-50 mb-2 group-hover:text-accent-400 transition-colors\">\n {title}\n </h3>\n <p className=\"text-sm text-foreground-400\">{description}</p>\n </div>\n <div className=\"ml-4 text-xl text-foreground-400 group-hover:text-accent-400 transition-colors flex-shrink-0\">\n →\n </div>\n </div>\n </a>\n );\n}\n",
17
+ "code": "interface NextArticleCardProps {\n title: string;\n description: string;\n href: string;\n}\n\nexport function NextArticleCard({ title, description, href }: NextArticleCardProps) {\n return (\n <a\n href={href}\n className=\"block bg-background-700 border border-background-600 rounded-md p-4 hover:border-accent-500 hover:bg-background-700/80 transition-colors group\"\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex-1\">\n <div className=\"text-sm text-foreground-400 mb-1\">Next Article</div>\n <h3 className=\"text-lg font-semibold text-foreground-50 mb-2 group-hover:text-accent-400 transition-colors\">\n {title}\n </h3>\n <p className=\"text-sm text-foreground-400\">{description}</p>\n </div>\n <div className=\"ml-4 text-xl text-foreground-400 group-hover:text-accent-400 transition-colors flex-shrink-0\">\n →\n </div>\n </div>\n </a>\n );\n}\n",
18
18
  "isEntryPoint": false
19
19
  }
20
20
  ]
@@ -34,7 +34,7 @@
34
34
  {
35
35
  "filename": "NextArticleWithIconCard.tsx",
36
36
  "language": "typescript",
37
- "code": "interface NextArticleWithIconCardProps {\n icon: string;\n title: string;\n description: string;\n category: string;\n href: string;\n}\n\nexport function NextArticleWithIconCard({\n icon,\n title,\n description,\n category,\n href,\n}: NextArticleWithIconCardProps) {\n return (\n <a\n href={href}\n className=\"flex items-start gap-4 p-4 bg-background-700 border border-background-600 rounded-md hover:border-accent-500 hover:bg-background-700/80 transition-colors group\"\n >\n <div className=\"text-3xl flex-shrink-0 mt-1\">{icon}</div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-xs text-accent-400 font-medium mb-1\">{category}</div>\n <h3 className=\"text-lg font-semibold text-foreground-50 mb-1 group-hover:text-accent-400 transition-colors\">\n {title}\n </h3>\n <p className=\"text-sm text-foreground-400\">{description}</p>\n </div>\n <div className=\"text-foreground-400 group-hover:text-accent-400 transition-colors flex-shrink-0 text-lg\">\n →\n </div>\n </a>\n );\n}\n",
37
+ "code": "interface NextArticleWithIconCardProps {\n icon: string;\n title: string;\n description: string;\n category: string;\n href: string;\n}\n\nexport function NextArticleWithIconCard({\n icon,\n title,\n description,\n category,\n href,\n}: NextArticleWithIconCardProps) {\n return (\n <a\n href={href}\n className=\"flex items-start gap-4 p-4 bg-background-700 border border-background-600 rounded-md hover:border-accent-500 hover:bg-background-700/80 transition-colors group\"\n >\n <div className=\"text-3xl flex-shrink-0 mt-1\">{icon}</div>\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-sm text-accent-400 font-medium mb-1\">{category}</div>\n <h3 className=\"text-lg font-semibold text-foreground-50 mb-1 group-hover:text-accent-400 transition-colors\">\n {title}\n </h3>\n <p className=\"text-sm text-foreground-400\">{description}</p>\n </div>\n <div className=\"text-foreground-400 group-hover:text-accent-400 transition-colors flex-shrink-0 text-lg\">\n →\n </div>\n </a>\n );\n}\n",
38
38
  "isEntryPoint": false
39
39
  }
40
40
  ]
@@ -29,14 +29,14 @@ const elementMetadata: ElementMetadata = {
29
29
  export function getPreview(): React.ReactNode {
30
30
  return (
31
31
  <div className="flex flex-col gap-2 w-full h-full p-3 bg-background-900 rounded-sm border border-background-700">
32
- <div className="space-y-2 text-xs">
32
+ <div className="space-y-2 text-sm">
33
33
  <div className="font-semibold text-foreground-200 mb-2">Contents</div>
34
34
  <div className="text-foreground-400">• Introduction</div>
35
- <div className="ml-3 text-foreground-400 text-xs">◦ Overview</div>
36
- <div className="ml-3 text-foreground-400 text-xs">◦ Getting Started</div>
35
+ <div className="ml-3 text-foreground-400 text-sm">◦ Overview</div>
36
+ <div className="ml-3 text-foreground-400 text-sm">◦ Getting Started</div>
37
37
  <div className="text-foreground-400">• Installation</div>
38
38
  <div className="text-foreground-400">• Usage</div>
39
- <div className="ml-3 text-foreground-400 text-xs">◦ Basic</div>
39
+ <div className="ml-3 text-foreground-400 text-sm">◦ Basic</div>
40
40
  </div>
41
41
  </div>
42
42
  );