@archieai/ui 1.0.0 → 1.1.1

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 (138) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +879 -75
  3. package/dist/Search-BGRkl1S5.js +2460 -0
  4. package/dist/Search-BGRkl1S5.js.map +1 -0
  5. package/dist/Search-DXvng049.cjs +2 -0
  6. package/dist/Search-DXvng049.cjs.map +1 -0
  7. package/dist/components/atoms/Avatar/Avatar.d.ts +19 -0
  8. package/dist/components/atoms/Avatar/Avatar.d.ts.map +1 -0
  9. package/dist/components/atoms/Avatar/Avatar.styles.d.ts +9 -0
  10. package/dist/components/atoms/Avatar/Avatar.styles.d.ts.map +1 -0
  11. package/dist/components/atoms/StatusIndicator/StatusIndicator.d.ts +8 -0
  12. package/dist/components/atoms/StatusIndicator/StatusIndicator.d.ts.map +1 -0
  13. package/dist/components/atoms/StatusIndicator/StatusIndicator.styles.d.ts +10 -0
  14. package/dist/components/atoms/StatusIndicator/StatusIndicator.styles.d.ts.map +1 -0
  15. package/dist/components/atoms/Typography/Typography.d.ts +4 -3
  16. package/dist/components/atoms/Typography/Typography.d.ts.map +1 -1
  17. package/dist/components/atoms/icons/Check.d.ts +1 -0
  18. package/dist/components/atoms/icons/Check.d.ts.map +1 -1
  19. package/dist/components/atoms/icons/Search.d.ts +7 -0
  20. package/dist/components/atoms/icons/Search.d.ts.map +1 -0
  21. package/dist/components/atoms/icons/Textile.d.ts +7 -0
  22. package/dist/components/atoms/icons/Textile.d.ts.map +1 -0
  23. package/dist/components/atoms/icons/TextileIcon.d.ts +7 -0
  24. package/dist/components/atoms/icons/TextileIcon.d.ts.map +1 -0
  25. package/dist/components/atoms/icons/X.d.ts +1 -0
  26. package/dist/components/atoms/icons/X.d.ts.map +1 -1
  27. package/dist/components/atoms/icons/index.d.ts +3 -1
  28. package/dist/components/atoms/icons/index.d.ts.map +1 -1
  29. package/dist/components/atoms/logos/FullLogo.d.ts +8 -0
  30. package/dist/components/atoms/logos/FullLogo.d.ts.map +1 -0
  31. package/dist/components/atoms/logos/LogoA.d.ts +8 -0
  32. package/dist/components/atoms/logos/LogoA.d.ts.map +1 -0
  33. package/dist/components/atoms/logos/SignatureA.d.ts +11 -0
  34. package/dist/components/atoms/logos/SignatureA.d.ts.map +1 -0
  35. package/dist/components/atoms/logos/index.d.ts +7 -0
  36. package/dist/components/atoms/logos/index.d.ts.map +1 -0
  37. package/dist/components/molecules/ArtifactCard/ArtifactCard.d.ts +3 -0
  38. package/dist/components/molecules/ArtifactCard/ArtifactCard.d.ts.map +1 -0
  39. package/dist/components/molecules/ArtifactCard/ArtifactCard.styles.d.ts +27 -0
  40. package/dist/components/molecules/ArtifactCard/ArtifactCard.styles.d.ts.map +1 -0
  41. package/dist/components/molecules/ArtifactCard/ArtifactCard.types.d.ts +23 -0
  42. package/dist/components/molecules/ArtifactCard/ArtifactCard.types.d.ts.map +1 -0
  43. package/dist/components/molecules/ArtifactCard/index.d.ts +3 -0
  44. package/dist/components/molecules/ArtifactCard/index.d.ts.map +1 -0
  45. package/dist/components/molecules/Button/Button.d.ts +1 -1
  46. package/dist/components/molecules/Button/Button.d.ts.map +1 -1
  47. package/dist/components/molecules/Button/Button.styles.d.ts +2 -2
  48. package/dist/components/molecules/Button/Button.styles.d.ts.map +1 -1
  49. package/dist/components/molecules/ChatFile/ChatFile.styles.d.ts +4 -4
  50. package/dist/components/molecules/Dropdown/Dropdown.d.ts +41 -0
  51. package/dist/components/molecules/Dropdown/Dropdown.d.ts.map +1 -0
  52. package/dist/components/molecules/Dropdown/Dropdown.styles.d.ts +11 -0
  53. package/dist/components/molecules/Dropdown/Dropdown.styles.d.ts.map +1 -0
  54. package/dist/components/molecules/Input/Input.styles.d.ts +5 -5
  55. package/dist/components/molecules/MessageBubble/MessageBubble.d.ts +26 -0
  56. package/dist/components/molecules/MessageBubble/MessageBubble.d.ts.map +1 -0
  57. package/dist/components/molecules/MessageBubble/MessageBubble.styles.d.ts +32 -0
  58. package/dist/components/molecules/MessageBubble/MessageBubble.styles.d.ts.map +1 -0
  59. package/dist/components/molecules/ProgressBar/ProgressBar.d.ts +37 -0
  60. package/dist/components/molecules/ProgressBar/ProgressBar.d.ts.map +1 -0
  61. package/dist/components/molecules/ProgressBar/ProgressBar.styles.d.ts +10 -0
  62. package/dist/components/molecules/ProgressBar/ProgressBar.styles.d.ts.map +1 -0
  63. package/dist/components/molecules/RangeInput/RangeInput.d.ts +7 -0
  64. package/dist/components/molecules/RangeInput/RangeInput.d.ts.map +1 -0
  65. package/dist/components/molecules/RangeInput/RangeInput.styles.d.ts +5 -0
  66. package/dist/components/molecules/RangeInput/RangeInput.styles.d.ts.map +1 -0
  67. package/dist/components/molecules/SidebarItem/SidebarItem.d.ts +17 -0
  68. package/dist/components/molecules/SidebarItem/SidebarItem.d.ts.map +1 -0
  69. package/dist/components/molecules/SidebarItem/SidebarItem.styles.d.ts +13 -0
  70. package/dist/components/molecules/SidebarItem/SidebarItem.styles.d.ts.map +1 -0
  71. package/dist/components/molecules/StatusMessage/StatusMessage.d.ts +7 -0
  72. package/dist/components/molecules/StatusMessage/StatusMessage.d.ts.map +1 -0
  73. package/dist/components/molecules/StatusMessage/StatusMessage.styles.d.ts +8 -0
  74. package/dist/components/molecules/StatusMessage/StatusMessage.styles.d.ts.map +1 -0
  75. package/dist/components/molecules/Tag/Tag.d.ts +1 -0
  76. package/dist/components/molecules/Tag/Tag.d.ts.map +1 -1
  77. package/dist/components/molecules/TextArea/TextArea.d.ts +8 -0
  78. package/dist/components/molecules/TextArea/TextArea.d.ts.map +1 -0
  79. package/dist/components/molecules/TextArea/TextArea.styles.d.ts +9 -0
  80. package/dist/components/molecules/TextArea/TextArea.styles.d.ts.map +1 -0
  81. package/dist/components/molecules/Timestamp/Timestamp.d.ts +18 -0
  82. package/dist/components/molecules/Timestamp/Timestamp.d.ts.map +1 -0
  83. package/dist/components/molecules/Timestamp/Timestamp.styles.d.ts +8 -0
  84. package/dist/components/molecules/Timestamp/Timestamp.styles.d.ts.map +1 -0
  85. package/dist/components/molecules/Toast/Toast.styles.d.ts +3 -3
  86. package/dist/components/molecules/Toggle/Toggle.d.ts +8 -0
  87. package/dist/components/molecules/Toggle/Toggle.d.ts.map +1 -0
  88. package/dist/components/molecules/Toggle/Toggle.styles.d.ts +9 -0
  89. package/dist/components/molecules/Toggle/Toggle.styles.d.ts.map +1 -0
  90. package/dist/components/molecules/Tooltip/Tooltip.d.ts +5 -1
  91. package/dist/components/molecules/Tooltip/Tooltip.d.ts.map +1 -1
  92. package/dist/components/molecules/Tooltip/Tooltip.styles.d.ts +4 -2
  93. package/dist/components/molecules/Tooltip/Tooltip.styles.d.ts.map +1 -1
  94. package/dist/components/organisms/ChatInput/ChatInput.d.ts +38 -5
  95. package/dist/components/organisms/ChatInput/ChatInput.d.ts.map +1 -1
  96. package/dist/components/organisms/ChatInput/ChatInput.styles.d.ts +20 -1
  97. package/dist/components/organisms/ChatInput/ChatInput.styles.d.ts.map +1 -1
  98. package/dist/components/organisms/ConversationHeader/ConversationHeader.d.ts +27 -0
  99. package/dist/components/organisms/ConversationHeader/ConversationHeader.d.ts.map +1 -0
  100. package/dist/components/organisms/ConversationHeader/ConversationHeader.styles.d.ts +7 -0
  101. package/dist/components/organisms/ConversationHeader/ConversationHeader.styles.d.ts.map +1 -0
  102. package/dist/components/organisms/Modal/Modal.d.ts +6 -0
  103. package/dist/components/organisms/Modal/Modal.d.ts.map +1 -0
  104. package/dist/components/organisms/Modal/Modal.styles.d.ts +14 -0
  105. package/dist/components/organisms/Modal/Modal.styles.d.ts.map +1 -0
  106. package/dist/components/organisms/Modal/Modal.types.d.ts +54 -0
  107. package/dist/components/organisms/Modal/Modal.types.d.ts.map +1 -0
  108. package/dist/components/organisms/Modal/index.d.ts +3 -0
  109. package/dist/components/organisms/Modal/index.d.ts.map +1 -0
  110. package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts +22 -0
  111. package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -0
  112. package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts +5 -0
  113. package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts.map +1 -0
  114. package/dist/hooks/useClickOutside.d.ts +5 -0
  115. package/dist/hooks/useClickOutside.d.ts.map +1 -0
  116. package/dist/icons.cjs +1 -1
  117. package/dist/icons.cjs.map +1 -1
  118. package/dist/icons.js +296 -301
  119. package/dist/icons.js.map +1 -1
  120. package/dist/index.cjs +334 -1
  121. package/dist/index.cjs.map +1 -1
  122. package/dist/index.d.ts +35 -6
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +17131 -1427
  125. package/dist/index.js.map +1 -1
  126. package/dist/logos/Full Logo.svg +14 -0
  127. package/dist/logos/Logo A.svg +4 -0
  128. package/dist/logos/Signature A.svg +4 -0
  129. package/dist/ui.css +1 -1
  130. package/package.json +18 -12
  131. package/dist/WhiteboardView-BWupryzA.cjs +0 -2
  132. package/dist/WhiteboardView-BWupryzA.cjs.map +0 -1
  133. package/dist/WhiteboardView-BceDPBkS.js +0 -2360
  134. package/dist/WhiteboardView-BceDPBkS.js.map +0 -1
  135. package/dist/components/organisms/Navbar/Navbar.d.ts +0 -15
  136. package/dist/components/organisms/Navbar/Navbar.d.ts.map +0 -1
  137. package/dist/components/organisms/Navbar/Navbar.styles.d.ts +0 -8
  138. package/dist/components/organisms/Navbar/Navbar.styles.d.ts.map +0 -1
package/README.md CHANGED
@@ -3,19 +3,21 @@
3
3
  A comprehensive React component library built with TypeScript, featuring 287+ custom icons and production-ready components.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@archieai/ui.svg)](https://www.npmjs.com/package/@archieai/ui)
6
- [![License](https://img.shields.io/npm/l/@archieai/ui.svg)](https://github.com/archieai/archie-ui)
6
+ [![License](https://img.shields.io/npm/l/@archieai/ui.svg)](https://github.com/heyarchie-ai/Archie-UI)
7
7
 
8
- ## Features
8
+ ## Features
9
9
 
10
- **287+ Custom Icons** - Beautiful SVG icons with customizable size and color
11
- 🎨 **Modern Design System** - Built with Tailwind CSS and CSS variables
12
- **Accessible** - Built with Radix UI primitives
13
- 🎭 **Animated** - Smooth animations with Framer Motion
14
- 📦 **Tree-shakeable** - Only import what you need
15
- 🔧 **TypeScript** - Fully typed components
16
- 🚀 **Production Ready** - Optimized and tested
10
+ - 🎨 **287+ Custom Icons** - Beautiful SVG icons with customizable size and color
11
+ - 🧩 **Production-Ready Components** - Button, Input, Checkbox, Toast, Tabs, and more
12
+ - 💬 **Chat Components** - MessageBubble, ChatInput, MarkdownRenderer for AI/chat UIs
13
+ - 🎯 **TypeScript First** - Fully typed components with excellent IntelliSense
14
+ - 🎨 **Modern Design System** - Built with Tailwind CSS v4 and CSS variables
15
+ - **Accessible** - Built with Radix UI primitives following WCAG guidelines
16
+ - 🎭 **Animated** - Smooth animations powered by Framer Motion
17
+ - 📦 **Tree-Shakeable** - Optimized bundle size with separate entry points
18
+ - 🔧 **Class Variance Authority** - Powerful variant management system
17
19
 
18
- ## Installation
20
+ ## 📦 Installation
19
21
 
20
22
  ```bash
21
23
  npm install @archieai/ui
@@ -25,163 +27,965 @@ pnpm add @archieai/ui
25
27
  yarn add @archieai/ui
26
28
  ```
27
29
 
28
- ### Peer Dependencies
29
-
30
- Install the required peer dependencies:
30
+ ### Required Peer Dependencies
31
31
 
32
32
  ```bash
33
33
  npm install react react-dom framer-motion sonner @radix-ui/react-tabs @radix-ui/react-tooltip
34
34
  ```
35
35
 
36
- ## Quick Start
36
+ Or if using pnpm:
37
+
38
+ ```bash
39
+ pnpm add react react-dom framer-motion sonner @radix-ui/react-tabs @radix-ui/react-tooltip
40
+ ```
41
+
42
+ ## 🚀 Quick Start
37
43
 
38
44
  ### 1. Import Styles
39
45
 
40
- In your main file (`main.tsx`, `App.tsx`, or `_app.tsx`):
46
+ Add the component styles to your app's entry point (`main.tsx`, `App.tsx`, or `_app.tsx`):
41
47
 
42
48
  ```tsx
43
- // Import the component styles
44
49
  import '@archieai/ui/styles';
45
50
  ```
46
51
 
47
- ### 2. Use Components
52
+ ### 2. Start Using Components
48
53
 
49
54
  ```tsx
50
- import { Button, Input, Toast, showToast, ToastContainer } from '@archieai/ui';
55
+ import { Button, Input, MessageBubble, MarkdownRenderer } from '@archieai/ui';
56
+ import { Star, Send } from '@archieai/ui/icons';
51
57
 
52
58
  function App() {
53
59
  return (
54
60
  <div>
55
- <Input placeholder="Enter your name" />
61
+ <Input placeholder="Enter your message" />
56
62
 
57
- <Button
58
- onClick={() => showToast.success('Hello!', 'Welcome to Archie UI')}
59
- >
60
- Click Me
63
+ <Button variant="primary" startIcon={<Star size={16} />}>
64
+ Save
61
65
  </Button>
62
66
 
63
- <ToastContainer />
67
+ <MessageBubble variant="assistant">
68
+ <MarkdownRenderer content="Hello! How can I **help** you today?" />
69
+ </MessageBubble>
64
70
  </div>
65
71
  );
66
72
  }
67
73
  ```
68
74
 
69
- ## Available Components
75
+ ## 📚 Available Components
76
+
77
+ ### Atoms
78
+
79
+ #### Avatar
70
80
 
71
- ### UI Components
81
+ User avatar component with text initials or image support.
72
82
 
73
- - **Button** - Primary, secondary, tertiary variants with icons
74
- - **Input** - Text inputs with icons and validation states
75
- - **Checkbox** - Styled checkboxes with labels
76
- - **Breadcrumbs** - Navigation breadcrumbs
77
- - **Tabs** - Tab navigation with badges
78
- - **Tag** - Labels and badges with avatars
79
- - **Toast** - Toast notifications with actions
80
- - **Tooltip** - Hover tooltips
81
- - **ChatInput** - Rich chat input with file uploads
82
- - **Navbar** - Navigation bar
83
- - **LoadingSpinner** - Loading indicators
83
+ ```tsx
84
+ import { Avatar } from '@archieai/ui';
85
+
86
+ // Text avatar with initials
87
+ <Avatar type="text" initials="JD" />
88
+
89
+ // Image avatar
90
+ <Avatar type="image" src="/path/to/image.jpg" alt="John Doe" />
91
+
92
+ // Different shapes
93
+ <Avatar type="text" initials="AR" shape="circular" />
94
+ <Avatar type="text" initials="AR" shape="square" />
95
+
96
+ // Different sizes
97
+ <Avatar type="text" initials="AR" size="small" />
98
+ <Avatar type="text" initials="AR" size="big" />
99
+
100
+ // With fallback when image fails to load
101
+ <Avatar
102
+ type="image"
103
+ src="/invalid-image.jpg"
104
+ fallbackInitials="JD"
105
+ />
106
+ ```
84
107
 
85
- ### Icons (287+)
108
+ **Props:**
86
109
 
87
- All icons are available as React components. Import from the dedicated icons entry for better tree-shaking:
110
+ - `type`: `'text'` | `'image'`
111
+ - `shape`: `'circular'` | `'square'`
112
+ - `size`: `'small'` | `'big'`
113
+ - `initials`: String for text avatar
114
+ - `src`: Image URL for image avatar
115
+ - `alt`: Alt text for accessibility
116
+ - `fallbackInitials`: Initials to show when image fails
117
+
118
+ #### StatusIndicator
119
+
120
+ Visual status indicator dot with optional animation.
88
121
 
89
122
  ```tsx
90
- // Recommended: Import from /icons for better bundle splitting
91
- import { Home, Settings, User, Mail, Star } from '@archieai/ui/icons';
123
+ import { StatusIndicator } from '@archieai/ui';
92
124
 
93
- // Also works: Import from main entry
94
- import { Plus, X, Check, ArrowUp } from '@archieai/ui';
125
+ <StatusIndicator variant="success" />
126
+ <StatusIndicator variant="warning" />
127
+ <StatusIndicator variant="error" />
128
+ <StatusIndicator variant="info" />
129
+ <StatusIndicator variant="neutral" />
95
130
 
96
- function MyComponent() {
97
- return <Home size={24} color="#8C92AF" />;
98
- }
131
+ // With animation
132
+ <StatusIndicator variant="success" animated />
133
+
134
+ // Different sizes
135
+ <StatusIndicator variant="info" size="small" />
136
+ <StatusIndicator variant="info" size="medium" />
137
+ <StatusIndicator variant="info" size="large" />
138
+ ```
139
+
140
+ **Props:**
141
+
142
+ - `variant`: `'success'` | `'warning'` | `'error'` | `'info'` | `'neutral'`
143
+ - `size`: `'small'` | `'medium'` | `'large'`
144
+ - `animated`: Boolean for pulsing animation
145
+
146
+ #### Typography
147
+
148
+ Text components with semantic HTML.
149
+
150
+ ```tsx
151
+ import { Typography } from '@archieai/ui';
152
+
153
+ <Typography variant="h1">Heading 1</Typography>
154
+ <Typography variant="h2">Heading 2</Typography>
155
+ <Typography variant="body1">Body text</Typography>
156
+ <Typography variant="caption">Caption text</Typography>
157
+ ```
158
+
159
+ #### Logos
160
+
161
+ Archie brand logos with customizable colors and animations.
162
+
163
+ ```tsx
164
+ import { LogoA, SignatureA, FullLogo } from '@archieai/ui';
165
+
166
+ // Logo A (icon mark)
167
+ <LogoA size={32} colorVariant="lightTeal" />
168
+ <LogoA size={32} colorVariant="darkTeal" />
169
+
170
+ // Animated Signature
171
+ <SignatureA size={40} colorVariant="orange" animated animationDuration={2} />
172
+
173
+ // Full Logo
174
+ <FullLogo width={120} />
99
175
  ```
100
176
 
101
- ## Documentation
177
+ #### Icons (287+)
102
178
 
103
- - [Quick Start Guide](./QUICK_START.md)
104
- - [Comprehensive Examples](./USAGE_EXAMPLE.md)
105
- - [Changelog](./CHANGELOG.md)
179
+ All icons are available as React components. Import from the dedicated `/icons` entry point for better tree-shaking:
180
+
181
+ ```tsx
182
+ // Recommended: Import from /icons entry point
183
+ import {
184
+ Home, Settings, User, Mail, Star, Check, X,
185
+ Plus, Minus, Search, Filter, Edit, Trash,
186
+ ArrowLeft, ArrowRight, ChevronDown, ChevronUp,
187
+ Heart, Bell, Calendar, Clock, Download, Upload,
188
+ Clipboard, ThumbsUp, ThumbsDown, FileText
189
+ } from '@archieai/ui/icons';
190
+
191
+ // All icons support size and color props
192
+ <Home size={24} color="#8C92AF" />
193
+ <Settings size={20} color="var(--color-blue-800)" />
194
+ <Star size={16} />
195
+ ```
196
+
197
+ **Icon Props:**
198
+
199
+ - `size`: Number (default: 24)
200
+ - `color`: String (CSS color value)
201
+ - `className`: String for additional styling
202
+
203
+ ---
106
204
 
107
- ## Component Examples
205
+ ### Molecules
108
206
 
109
- ### Button
207
+ #### Button
208
+
209
+ Flexible button component with multiple variants, sizes, and icon support.
110
210
 
111
211
  ```tsx
112
212
  import { Button } from '@archieai/ui';
113
213
  import { Star } from '@archieai/ui/icons';
114
214
 
115
- <Button onClick={() => console.log('Clicked!')}>Click me</Button>
215
+ // Basic button
216
+ <Button onClick={handleClick}>Click me</Button>
217
+
218
+ // With variants
219
+ <Button variant="primary" tone="brand" size="large">Primary</Button>
220
+ <Button variant="secondary" tone="neutral">Secondary</Button>
221
+ <Button variant="tertiary">Tertiary</Button>
222
+
223
+ // With icons
224
+ <Button startIcon={<Star size={16} />}>Favorite</Button>
225
+ <Button endIcon={<Star size={16} />}>Continue</Button>
226
+
227
+ // Disabled state
228
+ <Button disabled>Disabled</Button>
229
+ ```
230
+
231
+ **Props:**
232
+
233
+ - `variant`: `'primary'` | `'secondary'` | `'tertiary'`
234
+ - `tone`: `'brand'` | `'neutral'`
235
+ - `size`: `'small'` | `'medium'` | `'large'`
236
+ - `startIcon`: React node for leading icon
237
+ - `endIcon`: React node for trailing icon
238
+ - All standard button HTML attributes
239
+
240
+ #### Input
241
+
242
+ Text input component with icon support and validation states.
243
+
244
+ ```tsx
245
+ import { Input } from '@archieai/ui';
246
+ import { Search } from '@archieai/ui/icons';
247
+
248
+ <Input placeholder="Search..." />
249
+ <Input type="email" placeholder="Email" />
250
+ <Input
251
+ startIcon={<Search size={16} />}
252
+ placeholder="Search..."
253
+ />
254
+ ```
255
+
256
+ **Props:**
116
257
 
117
- <Button variant="secondary" size="small" startIcon={<Star size={16} />}>
118
- Favorite
119
- </Button>
258
+ - `startIcon`: React node for leading icon
259
+ - `endIcon`: React node for trailing icon
260
+ - All standard input HTML attributes
261
+
262
+ #### Checkbox
263
+
264
+ Styled checkbox component with label support.
265
+
266
+ ```tsx
267
+ import { Checkbox } from '@archieai/ui';
268
+
269
+ <Checkbox id="terms" label="I agree to the terms" />
270
+ <Checkbox id="newsletter" label="Subscribe to newsletter" defaultChecked />
271
+ ```
272
+
273
+ **Props:**
274
+
275
+ - `label`: String or React node for checkbox label
276
+ - `id`: Required for accessibility
277
+ - All standard checkbox HTML attributes
278
+
279
+ #### MessageBubble
280
+
281
+ Chat message bubble component for user, assistant, and system messages.
282
+
283
+ ```tsx
284
+ import { MessageBubble, MarkdownRenderer } from '@archieai/ui';
285
+
286
+ // User message
287
+ <MessageBubble variant="user">
288
+ What is the weather today?
289
+ </MessageBubble>
290
+
291
+ // Assistant message with avatar
292
+ <MessageBubble variant="assistant">
293
+ <MarkdownRenderer content="The weather is **sunny** with a high of 72°F." />
294
+ </MessageBubble>
295
+
296
+ // Initial prompt (centered)
297
+ <MessageBubble variant="user" isInitialPrompt>
298
+ Help me write a poem about nature
299
+ </MessageBubble>
300
+
301
+ // System message
302
+ <MessageBubble variant="system">
303
+ Connected to the assistant
304
+ </MessageBubble>
305
+
306
+ // Loading state
307
+ <MessageBubble variant="loader" />
308
+
309
+ // With action handlers
310
+ <MessageBubble
311
+ variant="assistant"
312
+ onCopy={() => console.log('Copied')}
313
+ onHelpful={() => console.log('Helpful')}
314
+ onUnhelpful={() => console.log('Not helpful')}
315
+ >
316
+ Here's my response...
317
+ </MessageBubble>
318
+
319
+ // Sticky mode (no action controls, adds shadow)
320
+ <MessageBubble variant="assistant" isSticky>
321
+ Pinned message
322
+ </MessageBubble>
323
+ ```
324
+
325
+ **Props:**
326
+
327
+ - `variant`: `'user'` | `'assistant'` | `'system'` | `'loader'`
328
+ - `heading`: Optional heading text (assistant only)
329
+ - `isLoading`: Shows loading animation
330
+ - `showAvatar`: Show Archie logo (defaults to true for assistant)
331
+ - `showTimestamp`: Show timestamp (default: false)
332
+ - `timestamp`: Date or string for timestamp
333
+ - `isSticky`: Sticky mode with shadow
334
+ - `isInitialPrompt`: Center align (user variant only)
335
+ - `alignment`: `'left'` | `'center'` | `'right'`
336
+ - `onCopy`, `onEdit`, `onHelpful`, `onUnhelpful`: Action callbacks
337
+
338
+ #### ChatFile
339
+
340
+ File attachment component with upload progress states.
341
+
342
+ ```tsx
343
+ import { ChatFile, FileStatus } from '@archieai/ui';
344
+
345
+ // Completed file
346
+ <ChatFile filename="document.pdf" status={FileStatus.Done} />
347
+
348
+ // Uploading with progress
349
+ <ChatFile
350
+ filename="report.xlsx"
351
+ status={FileStatus.Uploading}
352
+ progress={45}
353
+ />
354
+
355
+ // Processing
356
+ <ChatFile filename="image.png" status={FileStatus.Processing} progress={80} />
357
+
358
+ // Error state
359
+ <ChatFile filename="failed.doc" status={FileStatus.Error} />
360
+
361
+ // With delete handler
362
+ <ChatFile
363
+ filename="attachment.pdf"
364
+ status={FileStatus.Done}
365
+ onDelete={() => console.log('Delete file')}
366
+ />
367
+ ```
368
+
369
+ **Props:**
370
+
371
+ - `filename`: File name to display
372
+ - `status`: `FileStatus.Uploading` | `FileStatus.Processing` | `FileStatus.Done` | `FileStatus.Error`
373
+ - `progress`: Number (0-100) for upload progress
374
+ - `onDelete`: Callback when delete is clicked
375
+
376
+ #### Dropdown
377
+
378
+ Dropdown menu component with animation support.
379
+
380
+ ```tsx
381
+ import {
382
+ Dropdown,
383
+ DropdownTrigger,
384
+ DropdownContent,
385
+ DropdownItem,
386
+ } from '@archieai/ui';
387
+ import { Button } from '@archieai/ui';
388
+
389
+ <Dropdown>
390
+ <DropdownTrigger>
391
+ <Button>Open Menu</Button>
392
+ </DropdownTrigger>
393
+ <DropdownContent align="start">
394
+ <DropdownItem onClick={() => console.log('Edit')}>Edit</DropdownItem>
395
+ <DropdownItem onClick={() => console.log('Duplicate')}>
396
+ Duplicate
397
+ </DropdownItem>
398
+ <DropdownItem variant="destructive" onClick={() => console.log('Delete')}>
399
+ Delete
400
+ </DropdownItem>
401
+ </DropdownContent>
402
+ </Dropdown>;
403
+
404
+ // Controlled dropdown
405
+ const [isOpen, setIsOpen] = useState(false);
406
+ <Dropdown open={isOpen} onOpenChange={setIsOpen}>
407
+ ...
408
+ </Dropdown>;
409
+ ```
410
+
411
+ **Props:**
412
+
413
+ - `Dropdown`: `defaultOpen`, `open`, `onOpenChange`
414
+ - `DropdownContent`: `align` (`'start'` | `'end'` | `'center'`), `attached`
415
+ - `DropdownItem`: `active`, `variant` (`'default'` | `'destructive'`), `closeOnSelect`
416
+
417
+ #### ProgressBar
418
+
419
+ Progress indicator component with labels and variants.
420
+
421
+ ```tsx
422
+ import { ProgressBar } from '@archieai/ui';
423
+
424
+ // Basic progress
425
+ <ProgressBar value={60} />
426
+
427
+ // With label and value display
428
+ <ProgressBar value={75} max={100} label="Uploading..." showValueLabel />
429
+
430
+ // Different variants
431
+ <ProgressBar value={100} variant="success" />
432
+ <ProgressBar value={30} variant="warning" />
433
+ <ProgressBar value={15} variant="error" />
434
+
435
+ // Different sizes
436
+ <ProgressBar value={50} size="small" />
437
+ <ProgressBar value={50} size="medium" />
438
+ <ProgressBar value={50} size="large" />
439
+
440
+ // Custom value formatter
441
+ <ProgressBar
442
+ value={750}
443
+ max={1000}
444
+ showValueLabel
445
+ valueFormatter={(value, max) => `${value}/${max} items`}
446
+ />
120
447
  ```
121
448
 
122
- ### Toast Notifications
449
+ **Props:**
450
+
451
+ - `value`: Current progress value
452
+ - `max`: Maximum value (default: 100)
453
+ - `variant`: `'default'` | `'success'` | `'error'` | `'warning'`
454
+ - `size`: `'small'` | `'medium'` | `'large'`
455
+ - `showValueLabel`: Show percentage/value label
456
+ - `label`: Custom label text
457
+ - `valueFormatter`: Custom value formatting function
458
+
459
+ #### StatusMessage
460
+
461
+ Status message component with icon and indicator.
462
+
463
+ ```tsx
464
+ import { StatusMessage } from '@archieai/ui';
465
+
466
+ <StatusMessage status="success" message="Operation completed successfully" />
467
+ <StatusMessage status="warning" message="Please review your changes" />
468
+ <StatusMessage status="error" message="An error occurred" />
469
+ <StatusMessage status="info" message="Processing your request" />
470
+ <StatusMessage status="loading" message="Loading data..." />
471
+ <StatusMessage status="neutral" message="No updates available" />
472
+ ```
473
+
474
+ **Props:**
475
+
476
+ - `status`: `'success'` | `'warning'` | `'error'` | `'info'` | `'neutral'` | `'loading'`
477
+ - `message`: Message text to display
478
+
479
+ #### SidebarItem
480
+
481
+ Navigation sidebar item component.
482
+
483
+ ```tsx
484
+ import { SidebarItem } from '@archieai/ui';
485
+ import { Home, Settings, User } from '@archieai/ui/icons';
486
+
487
+ // Basic item
488
+ <SidebarItem icon={<Home size={20} />} label="Home" onClick={() => navigate('/')} />
489
+
490
+ // Active state
491
+ <SidebarItem icon={<Settings size={20} />} label="Settings" isActive />
492
+
493
+ // Brand variant
494
+ <SidebarItem icon={<User size={20} />} label="Profile" variant="brand" />
495
+
496
+ // Collapsed mode (icon only)
497
+ <SidebarItem icon={<Home size={20} />} label="Home" isCollapsed />
498
+ ```
499
+
500
+ **Props:**
501
+
502
+ - `icon`: React node for the icon
503
+ - `label`: Label text
504
+ - `isCollapsed`: Collapsed mode (icon only)
505
+ - `isActive`: Active/selected state
506
+ - `variant`: `'default'` | `'brand'`
507
+ - `onClick`: Click handler
508
+
509
+ #### Timestamp
510
+
511
+ Formatted timestamp component with relative time support.
512
+
513
+ ```tsx
514
+ import { Timestamp } from '@archieai/ui';
515
+
516
+ // Relative time (default)
517
+ <Timestamp date={new Date()} /> // "just now"
518
+ <Timestamp date={Date.now() - 3600000} /> // "1 hour ago"
519
+
520
+ // Different formats
521
+ <Timestamp date={new Date()} format="relative" /> // "just now"
522
+ <Timestamp date={new Date()} format="short" /> // "Nov 26, 2024"
523
+ <Timestamp date={new Date()} format="long" /> // "November 26, 2024"
524
+ <Timestamp date={new Date()} format="time" /> // "3:45 PM"
525
+ <Timestamp date={new Date()} format="datetime" /> // "Nov 26, 2024, 3:45 PM"
526
+
527
+ // With icon
528
+ <Timestamp date={new Date()} showIcon />
529
+
530
+ // Different sizes and variants
531
+ <Timestamp date={new Date()} size="small" variant="muted" />
532
+ <Timestamp date={new Date()} size="large" variant="primary" />
533
+ ```
534
+
535
+ **Props:**
536
+
537
+ - `date`: Date object, timestamp number, or ISO string
538
+ - `format`: `'relative'` | `'short'` | `'long'` | `'time'` | `'datetime'`
539
+ - `size`: `'small'` | `'medium'` | `'large'`
540
+ - `variant`: `'default'` | `'primary'` | `'muted'`
541
+ - `showIcon`: Show clock icon
542
+ - `locale`: Locale string (default: 'en-US')
543
+
544
+ #### Toast
545
+
546
+ Toast notification system with multiple variants.
123
547
 
124
548
  ```tsx
125
549
  import { showToast, ToastContainer } from '@archieai/ui';
126
550
 
551
+ // Add ToastContainer once at your app root
552
+ <ToastContainer />;
553
+
554
+ // Show notifications
127
555
  showToast.success('Success!', 'Your changes have been saved.');
128
556
  showToast.error('Error!', 'Something went wrong.');
557
+ showToast.info('Info', 'Please check your email.');
558
+ showToast.warning('Warning', 'Are you sure?');
129
559
 
130
- // Add ToastContainer once in your app
131
- <ToastContainer />;
560
+ // With custom duration
561
+ showToast.success('Success!', 'Saved', { duration: 5000 });
562
+ ```
563
+
564
+ #### Tooltip
565
+
566
+ Hover tooltips with customizable positioning.
567
+
568
+ ```tsx
569
+ import { Tooltip } from '@archieai/ui';
570
+ import { Info } from '@archieai/ui/icons';
571
+
572
+ <Tooltip content="This is a tooltip">
573
+ <button>Hover me</button>
574
+ </Tooltip>
575
+
576
+ <Tooltip content="Help information" side="right">
577
+ <Info size={16} />
578
+ </Tooltip>
579
+ ```
580
+
581
+ **Props:**
582
+
583
+ - `content`: String or React node for tooltip content
584
+ - `side`: `'top'` | `'right'` | `'bottom'` | `'left'`
585
+ - `delayDuration`: Number (milliseconds)
586
+
587
+ #### Tabs
588
+
589
+ Tab navigation component with badge support.
590
+
591
+ ```tsx
592
+ import { Tabs } from '@archieai/ui';
593
+
594
+ const tabs = [
595
+ { id: 'overview', label: 'Overview' },
596
+ { id: 'analytics', label: 'Analytics', badge: '12' },
597
+ { id: 'settings', label: 'Settings' },
598
+ ];
599
+
600
+ <Tabs
601
+ tabs={tabs}
602
+ defaultValue="overview"
603
+ onValueChange={(value) => console.log(value)}
604
+ >
605
+ <Tabs.Content value="overview">Overview content</Tabs.Content>
606
+ <Tabs.Content value="analytics">Analytics content</Tabs.Content>
607
+ <Tabs.Content value="settings">Settings content</Tabs.Content>
608
+ </Tabs>;
609
+ ```
610
+
611
+ #### Tag
612
+
613
+ Label and badge component with avatar support.
614
+
615
+ ```tsx
616
+ import { Tag } from '@archieai/ui';
617
+
618
+ <Tag>Default Tag</Tag>
619
+ <Tag variant="success">Success</Tag>
620
+ <Tag variant="error">Error</Tag>
621
+ <Tag onRemove={() => console.log('removed')}>Removable</Tag>
132
622
  ```
133
623
 
134
- ### Breadcrumbs
624
+ #### Breadcrumbs
625
+
626
+ Navigation breadcrumb component.
135
627
 
136
628
  ```tsx
137
629
  import { Breadcrumbs } from '@archieai/ui';
138
630
  import { Home, Settings } from '@archieai/ui/icons';
139
631
 
140
632
  const items = [
141
- { label: 'Home', href: '/', icon: <Home size={16} />, onClick: () => {} },
142
- { label: 'Settings', href: '/settings', icon: <Settings size={16} /> },
633
+ {
634
+ label: 'Home',
635
+ href: '/',
636
+ icon: <Home size={16} />,
637
+ onClick: () => navigate('/'),
638
+ },
639
+ {
640
+ label: 'Settings',
641
+ href: '/settings',
642
+ icon: <Settings size={16} />,
643
+ },
143
644
  { label: 'Profile' },
144
645
  ];
145
646
 
146
647
  <Breadcrumbs items={items} />;
147
648
  ```
148
649
 
149
- ## TypeScript Support
650
+ #### LoadingSpinner
150
651
 
151
- All components are fully typed:
652
+ Loading indicator component.
152
653
 
153
654
  ```tsx
154
- import type { ButtonProps, InputProps, ToastProps } from '@archieai/ui';
655
+ import { LoadingSpinner } from '@archieai/ui';
656
+
657
+ <LoadingSpinner />
658
+ <LoadingSpinner size="small" />
659
+ <LoadingSpinner size="large" />
155
660
  ```
156
661
 
157
- ## Browser Support
662
+ ---
663
+
664
+ ### Organisms
665
+
666
+ #### ChatInput
667
+
668
+ Rich chat input with file upload support.
669
+
670
+ ```tsx
671
+ import { ChatInput } from '@archieai/ui';
672
+
673
+ <ChatInput
674
+ placeholder="Type a message..."
675
+ onSend={(message, files) => {
676
+ console.log('Message:', message);
677
+ console.log('Files:', files);
678
+ }}
679
+ onFileSelect={(files) => console.log('Files selected:', files)}
680
+ />;
681
+ ```
682
+
683
+ **Props:**
684
+
685
+ - `placeholder`: Input placeholder text
686
+ - `onSend`: Callback with message and files
687
+ - `onFileSelect`: Callback when files are selected
688
+ - All standard textarea HTML attributes
689
+
690
+ #### ConversationHeader
691
+
692
+ Header component for chat conversations with breadcrumbs, tags, and collaborators.
693
+
694
+ ```tsx
695
+ import { ConversationHeader } from '@archieai/ui';
696
+ import { Home, MessageSquare } from '@archieai/ui/icons';
697
+
698
+ const breadcrumbs = [
699
+ { label: 'Conversations', icon: <Home size={16} />, onClick: () => {} },
700
+ { label: 'Project Discussion', icon: <MessageSquare size={16} /> },
701
+ ];
702
+
703
+ const tags = [
704
+ { id: '1', label: 'Design' },
705
+ { id: '2', label: 'Urgent' },
706
+ ];
707
+
708
+ const collaborators = [
709
+ { id: '1', name: 'John Doe', src: '/avatar1.jpg' },
710
+ { id: '2', name: 'Jane Smith', src: '/avatar2.jpg' },
711
+ ];
712
+
713
+ <ConversationHeader
714
+ breadcrumbs={breadcrumbs}
715
+ tags={tags}
716
+ collaborators={collaborators}
717
+ onAddTag={() => console.log('Add tag')}
718
+ onAddCollaborator={() => console.log('Add collaborator')}
719
+ tagsOverflowCount={3}
720
+ />;
721
+ ```
722
+
723
+ **Props:**
724
+
725
+ - `breadcrumbs`: Array of breadcrumb items
726
+ - `tags`: Array of tag objects with `id` and `label`
727
+ - `collaborators`: Array of collaborator objects with `id`, `name`, and optional `src`
728
+ - `onAddTag`: Callback for adding a tag
729
+ - `onAddCollaborator`: Callback for adding a collaborator
730
+ - `tagsOverflowCount`: Number showing additional hidden tags
731
+
732
+ ---
733
+
734
+ ### Renderers
735
+
736
+ #### MarkdownRenderer
737
+
738
+ Markdown content renderer with support for headings, lists, code blocks, tables, math (LaTeX), and more.
739
+
740
+ ```tsx
741
+ import { MarkdownRenderer } from '@archieai/ui';
742
+
743
+ // Basic markdown
744
+ <MarkdownRenderer content="# Hello World\n\nThis is **bold** and *italic* text." />
745
+
746
+ // With code blocks
747
+ <MarkdownRenderer
748
+ content={`
749
+ ## Code Example
750
+
751
+ \`\`\`javascript
752
+ const greeting = 'Hello, World!';
753
+ console.log(greeting);
754
+ \`\`\`
755
+
756
+ Inline \`code\` also works!
757
+ `}
758
+ />
759
+
760
+ // With tables
761
+ <MarkdownRenderer
762
+ content={`
763
+ | Feature | Status |
764
+ |---------|--------|
765
+ | Tables | ✅ |
766
+ | Lists | ✅ |
767
+ | Code | ✅ |
768
+ `}
769
+ />
770
+
771
+ // With math (LaTeX)
772
+ <MarkdownRenderer
773
+ content={`
774
+ The quadratic formula: $x = \\frac{-b \\pm \\sqrt{b^2-4ac}}{2a}$
775
+
776
+ Block math:
777
+ $$
778
+ \\int_0^\\infty e^{-x^2} dx = \\frac{\\sqrt{\\pi}}{2}
779
+ $$
780
+ `}
781
+ />
782
+
783
+ // Custom renderers
784
+ <MarkdownRenderer
785
+ content="Check `this code` and [this link](https://example.com)"
786
+ renderCodeBlock={(code, language) => (
787
+ <SyntaxHighlighter language={language}>{code}</SyntaxHighlighter>
788
+ )}
789
+ renderLink={(href, text) => (
790
+ <CustomLink href={href}>{text}</CustomLink>
791
+ )}
792
+ />
793
+
794
+ // Size and variant
795
+ <MarkdownRenderer content="# Title" size="small" variant="muted" />
796
+ ```
797
+
798
+ **Props:**
799
+
800
+ - `content`: Markdown string to render
801
+ - `size`: `'small'` | `'medium'` | `'large'`
802
+ - `variant`: `'default'` | `'muted'` | `'primary'`
803
+ - `renderCodeBlock`: Custom code block renderer
804
+ - `renderInlineCode`: Custom inline code renderer
805
+ - `renderMathBlock`: Custom math block renderer (LaTeX)
806
+ - `renderInlineMath`: Custom inline math renderer
807
+ - `renderLink`: Custom link renderer
808
+
809
+ **Supported Markdown Features:**
810
+
811
+ - Headings (H1-H6)
812
+ - Bold, italic, strikethrough
813
+ - Links
814
+ - Inline code and code blocks with language support
815
+ - Ordered and unordered lists
816
+ - Blockquotes
817
+ - Tables with alignment
818
+ - Horizontal rules
819
+ - Math/LaTeX (inline with `$...$`, block with `$$...$$`)
820
+
821
+ ---
822
+
823
+ ## 🎨 Theming
824
+
825
+ The library uses CSS custom properties for theming. You can customize colors by overriding these variables:
826
+
827
+ ```css
828
+ :root {
829
+ /* Primary Colors */
830
+ --color-white: #ffffff;
831
+ --color-blue-1000: #022e40;
832
+ --color-blue-800: #15b1cd;
833
+ --color-blue-400: #6aeafd;
834
+ --color-blue-200: #d6f4ff;
835
+
836
+ /* Orange Colors */
837
+ --color-orange-1000: #e15713;
838
+ --color-orange-800: #ff6f00;
839
+ --color-orange-200: #fff2e2;
840
+
841
+ /* Neutral Colors */
842
+ --color-gray-1000: #000626;
843
+ --color-gray-800: #595f7a;
844
+ --color-gray-600: #8c92af;
845
+ --color-gray-200: #e5e7f0;
846
+ --color-gray-100: #f5f6fa;
847
+ --color-gray-50: #fafafc;
848
+
849
+ /* System Colors */
850
+ --color-red-1000: #fb6060;
851
+ --color-red-200: #ffecec;
852
+ --color-green-1000: #71d481;
853
+ --color-green-200: #e2f7e5;
854
+ --color-amber-1000: #8f6c1a;
855
+ }
856
+ ```
857
+
858
+ ## 📘 TypeScript Support
859
+
860
+ All components are fully typed with TypeScript:
861
+
862
+ ```tsx
863
+ import type {
864
+ ButtonProps,
865
+ InputProps,
866
+ CheckboxProps,
867
+ ToastProps,
868
+ TabsProps,
869
+ BreadcrumbsProps,
870
+ MessageBubbleProps,
871
+ ChatFileProps,
872
+ DropdownProps,
873
+ ProgressBarProps,
874
+ StatusMessageProps,
875
+ SidebarItemProps,
876
+ TimestampProps,
877
+ AvatarProps,
878
+ StatusIndicatorProps,
879
+ ConversationHeaderProps,
880
+ MarkdownRendererProps,
881
+ } from '@archieai/ui';
882
+
883
+ // Use types in your components
884
+ const MyButton: React.FC<ButtonProps> = (props) => {
885
+ return <Button {...props} />;
886
+ };
887
+ ```
888
+
889
+ ## 🌐 Browser Support
158
890
 
159
891
  - Chrome (latest)
160
892
  - Firefox (latest)
161
893
  - Safari (latest)
162
894
  - Edge (latest)
163
895
 
164
- ## Tech Stack
896
+ ## 🛠️ Tech Stack
165
897
 
166
898
  - **React** 18.3+ - UI library
167
899
  - **TypeScript** - Type safety
168
- - **Tailwind CSS** - Utility-first styling
900
+ - **Tailwind CSS v4** - Utility-first styling
169
901
  - **Framer Motion** - Animations
170
902
  - **Radix UI** - Accessible primitives
903
+ - **KaTeX** - Math/LaTeX rendering
171
904
  - **Class Variance Authority** - Variant management
905
+ - **Vite** - Build tool
906
+
907
+ ## 📦 Bundle Size
908
+
909
+ The library is optimized for minimal bundle size:
910
+
911
+ - **Separate entry points** for icons and styles
912
+ - **Tree-shakeable** - only import what you use
913
+ - **CSS**: ~50 KB (minified)
914
+ - **JS**: ~49 KB (minified, gzipped)
915
+
916
+ ```tsx
917
+ // Import only what you need
918
+ import { Button, Input, MessageBubble } from '@archieai/ui'; // Main components
919
+ import { Home, Star } from '@archieai/ui/icons'; // Icons separately
920
+ import '@archieai/ui/styles'; // Styles
921
+ ```
922
+
923
+ ## 📝 Development
924
+
925
+ ### Running Locally
926
+
927
+ ```bash
928
+ # Install dependencies
929
+ pnpm install
930
+
931
+ # Start development server
932
+ pnpm dev
933
+
934
+ # Run tests
935
+ pnpm test
936
+
937
+ # Build library
938
+ pnpm build:lib
939
+
940
+ # Run Storybook
941
+ pnpm storybook
942
+ ```
943
+
944
+ ### Building
945
+
946
+ ```bash
947
+ # Build the library for production
948
+ pnpm build:lib
949
+
950
+ # This generates:
951
+ # - dist/index.js (ESM)
952
+ # - dist/index.cjs (CommonJS)
953
+ # - dist/index.d.ts (TypeScript declarations)
954
+ # - dist/icons.js (Icons ESM)
955
+ # - dist/icons.cjs (Icons CommonJS)
956
+ # - dist/styles.js (Styles entry point)
957
+ # - dist/ui.css (Compiled CSS)
958
+ ```
959
+
960
+ ## 📄 License
961
+
962
+ MIT License - See LICENSE file for details.
963
+
964
+ ## 🤝 Contributing
965
+
966
+ This package is maintained by the Archie AI team. For internal contributors:
172
967
 
173
- ## License
968
+ 1. Follow the component creation standards in `.cursor/rules/component-creation.mdc`
969
+ 2. Ensure all components have:
970
+ - Main component file (`.tsx`)
971
+ - Styles file (`.styles.ts`)
972
+ - Stories file (`.stories.tsx`)
973
+ - Test file (`.test.tsx`)
974
+ 3. Run tests before committing
975
+ 4. Update CHANGELOG.md for significant changes
174
976
 
175
- UNLICENSED
977
+ ## 📞 Support
176
978
 
177
- ## Contributing
979
+ For issues and questions:
178
980
 
179
- This is a private package for the Archie team.
981
+ - Internal team: Contact the Archie AI development team
982
+ - GitHub Issues: [https://github.com/heyarchie-ai/Archie-UI/issues](https://github.com/heyarchie-ai/Archie-UI/issues)
180
983
 
181
- ## Support
984
+ ## 📚 Additional Resources
182
985
 
183
- For issues and questions, please contact the Archie team.
986
+ - [Changelog](./CHANGELOG.md) - Version history and updates
987
+ - [Figma Design System](https://www.figma.com/design/lXoDTTuMaUscHm9sG86eh8/Archie-Design-System) - Design specifications
184
988
 
185
989
  ---
186
990
 
187
- Made with ❤️ by the Archie Team
991
+ Made with ❤️ by the Archie AI Team