@archieai/ui 0.1.0 → 0.1.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.
- package/README.md +552 -54
- package/dist/{WhiteboardView-BceDPBkS.js → Search-0-cJubJ1.js} +1701 -1669
- package/dist/Search-0-cJubJ1.js.map +1 -0
- package/dist/Search-kD7BGyJw.cjs +2 -0
- package/dist/Search-kD7BGyJw.cjs.map +1 -0
- package/dist/components/atoms/Avatar/Avatar.d.ts +19 -0
- package/dist/components/atoms/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/atoms/Avatar/Avatar.styles.d.ts +9 -0
- package/dist/components/atoms/Avatar/Avatar.styles.d.ts.map +1 -0
- package/dist/components/atoms/StatusIndicator/StatusIndicator.d.ts +8 -0
- package/dist/components/atoms/StatusIndicator/StatusIndicator.d.ts.map +1 -0
- package/dist/components/atoms/StatusIndicator/StatusIndicator.styles.d.ts +10 -0
- package/dist/components/atoms/StatusIndicator/StatusIndicator.styles.d.ts.map +1 -0
- package/dist/components/atoms/icons/Search.d.ts +7 -0
- package/dist/components/atoms/icons/Search.d.ts.map +1 -0
- package/dist/components/atoms/icons/index.d.ts +2 -1
- package/dist/components/atoms/icons/index.d.ts.map +1 -1
- package/dist/components/atoms/logos/FullLogo.d.ts +8 -0
- package/dist/components/atoms/logos/FullLogo.d.ts.map +1 -0
- package/dist/components/atoms/logos/LogoA.d.ts +8 -0
- package/dist/components/atoms/logos/LogoA.d.ts.map +1 -0
- package/dist/components/atoms/logos/SignatureA.d.ts +11 -0
- package/dist/components/atoms/logos/SignatureA.d.ts.map +1 -0
- package/dist/components/atoms/logos/index.d.ts +7 -0
- package/dist/components/atoms/logos/index.d.ts.map +1 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.d.ts +3 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.d.ts.map +1 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.styles.d.ts +36 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.styles.d.ts.map +1 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.types.d.ts +26 -0
- package/dist/components/molecules/ArtifactCard/ArtifactCard.types.d.ts.map +1 -0
- package/dist/components/molecules/ArtifactCard/index.d.ts +3 -0
- package/dist/components/molecules/ArtifactCard/index.d.ts.map +1 -0
- package/dist/components/molecules/Button/Button.styles.d.ts +1 -1
- package/dist/components/molecules/ChatFile/ChatFile.styles.d.ts +4 -4
- package/dist/components/molecules/Dropdown/Dropdown.d.ts +41 -0
- package/dist/components/molecules/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/molecules/Dropdown/Dropdown.styles.d.ts +11 -0
- package/dist/components/molecules/Dropdown/Dropdown.styles.d.ts.map +1 -0
- package/dist/components/molecules/Input/Input.styles.d.ts +5 -5
- package/dist/components/molecules/MessageBubble/MessageBubble.d.ts +24 -0
- package/dist/components/molecules/MessageBubble/MessageBubble.d.ts.map +1 -0
- package/dist/components/molecules/MessageBubble/MessageBubble.styles.d.ts +16 -0
- package/dist/components/molecules/MessageBubble/MessageBubble.styles.d.ts.map +1 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.d.ts +37 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.styles.d.ts +10 -0
- package/dist/components/molecules/ProgressBar/ProgressBar.styles.d.ts.map +1 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.d.ts +17 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.d.ts.map +1 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.styles.d.ts +13 -0
- package/dist/components/molecules/SidebarItem/SidebarItem.styles.d.ts.map +1 -0
- package/dist/components/molecules/StatusMessage/StatusMessage.d.ts +7 -0
- package/dist/components/molecules/StatusMessage/StatusMessage.d.ts.map +1 -0
- package/dist/components/molecules/StatusMessage/StatusMessage.styles.d.ts +8 -0
- package/dist/components/molecules/StatusMessage/StatusMessage.styles.d.ts.map +1 -0
- package/dist/components/molecules/Timestamp/Timestamp.d.ts +18 -0
- package/dist/components/molecules/Timestamp/Timestamp.d.ts.map +1 -0
- package/dist/components/molecules/Timestamp/Timestamp.styles.d.ts +8 -0
- package/dist/components/molecules/Timestamp/Timestamp.styles.d.ts.map +1 -0
- package/dist/components/molecules/Toast/Toast.styles.d.ts +3 -3
- package/dist/components/organisms/ChatInput/ChatInput.d.ts +2 -0
- package/dist/components/organisms/ChatInput/ChatInput.d.ts.map +1 -1
- package/dist/components/organisms/ChatInput/ChatInput.styles.d.ts +3 -1
- package/dist/components/organisms/ChatInput/ChatInput.styles.d.ts.map +1 -1
- package/dist/components/organisms/ConversationHeader/ConversationHeader.d.ts +27 -0
- package/dist/components/organisms/ConversationHeader/ConversationHeader.d.ts.map +1 -0
- package/dist/components/organisms/ConversationHeader/ConversationHeader.styles.d.ts +7 -0
- package/dist/components/organisms/ConversationHeader/ConversationHeader.styles.d.ts.map +1 -0
- package/dist/components/organisms/Modal/Modal.d.ts +6 -0
- package/dist/components/organisms/Modal/Modal.d.ts.map +1 -0
- package/dist/components/organisms/Modal/Modal.styles.d.ts +17 -0
- package/dist/components/organisms/Modal/Modal.styles.d.ts.map +1 -0
- package/dist/components/organisms/Modal/Modal.types.d.ts +56 -0
- package/dist/components/organisms/Modal/Modal.types.d.ts.map +1 -0
- package/dist/components/organisms/Modal/index.d.ts +3 -0
- package/dist/components/organisms/Modal/index.d.ts.map +1 -0
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts +22 -0
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -0
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts +5 -0
- package/dist/components/renderers/MarkdownRenderer/MarkdownRenderer.styles.d.ts.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +5 -0
- package/dist/hooks/useClickOutside.d.ts.map +1 -0
- package/dist/icons.cjs +1 -1
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +297 -303
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +334 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +27 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17265 -1928
- package/dist/index.js.map +1 -1
- package/dist/logos/Full Logo.svg +14 -0
- package/dist/logos/Logo A.svg +4 -0
- package/dist/logos/Signature A.svg +4 -0
- package/dist/ui.css +1 -1
- package/package.json +17 -11
- package/dist/WhiteboardView-BWupryzA.cjs +0 -2
- package/dist/WhiteboardView-BWupryzA.cjs.map +0 -1
- package/dist/WhiteboardView-BceDPBkS.js.map +0 -1
- package/dist/components/organisms/Navbar/Navbar.d.ts +0 -15
- package/dist/components/organisms/Navbar/Navbar.d.ts.map +0 -1
- package/dist/components/organisms/Navbar/Navbar.styles.d.ts +0 -8
- package/dist/components/organisms/Navbar/Navbar.styles.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
A comprehensive React component library built with TypeScript, featuring 287+ custom icons and production-ready components.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@archieai/ui)
|
|
6
|
-
[](https://github.com/
|
|
6
|
+
[](https://github.com/heyarchie-ai/Archie-UI)
|
|
7
7
|
|
|
8
8
|
## ✨ Features
|
|
9
9
|
|
|
10
10
|
- 🎨 **287+ Custom Icons** - Beautiful SVG icons with customizable size and color
|
|
11
11
|
- 🧩 **Production-Ready Components** - Button, Input, Checkbox, Toast, Tabs, and more
|
|
12
|
+
- 💬 **Chat Components** - MessageBubble, ChatInput, MarkdownRenderer for AI/chat UIs
|
|
12
13
|
- 🎯 **TypeScript First** - Fully typed components with excellent IntelliSense
|
|
13
14
|
- 🎨 **Modern Design System** - Built with Tailwind CSS v4 and CSS variables
|
|
14
15
|
- ♿ **Accessible** - Built with Radix UI primitives following WCAG guidelines
|
|
@@ -51,27 +52,21 @@ import '@archieai/ui/styles';
|
|
|
51
52
|
### 2. Start Using Components
|
|
52
53
|
|
|
53
54
|
```tsx
|
|
54
|
-
import { Button, Input,
|
|
55
|
+
import { Button, Input, MessageBubble, MarkdownRenderer } from '@archieai/ui';
|
|
55
56
|
import { Star, Send } from '@archieai/ui/icons';
|
|
56
57
|
|
|
57
58
|
function App() {
|
|
58
|
-
const handleSubmit = () => {
|
|
59
|
-
showToast.success('Success!', 'Your changes have been saved.');
|
|
60
|
-
};
|
|
61
|
-
|
|
62
59
|
return (
|
|
63
60
|
<div>
|
|
64
|
-
<Input placeholder="Enter your
|
|
61
|
+
<Input placeholder="Enter your message" />
|
|
65
62
|
|
|
66
|
-
<Button
|
|
67
|
-
variant="primary"
|
|
68
|
-
startIcon={<Star size={16} />}
|
|
69
|
-
onClick={handleSubmit}
|
|
70
|
-
>
|
|
63
|
+
<Button variant="primary" startIcon={<Star size={16} />}>
|
|
71
64
|
Save
|
|
72
65
|
</Button>
|
|
73
66
|
|
|
74
|
-
<
|
|
67
|
+
<MessageBubble variant="assistant">
|
|
68
|
+
<MarkdownRenderer content="Hello! How can I **help** you today?" />
|
|
69
|
+
</MessageBubble>
|
|
75
70
|
</div>
|
|
76
71
|
);
|
|
77
72
|
}
|
|
@@ -79,6 +74,134 @@ function App() {
|
|
|
79
74
|
|
|
80
75
|
## 📚 Available Components
|
|
81
76
|
|
|
77
|
+
### Atoms
|
|
78
|
+
|
|
79
|
+
#### Avatar
|
|
80
|
+
|
|
81
|
+
User avatar component with text initials or image support.
|
|
82
|
+
|
|
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
|
+
```
|
|
107
|
+
|
|
108
|
+
**Props:**
|
|
109
|
+
|
|
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.
|
|
121
|
+
|
|
122
|
+
```tsx
|
|
123
|
+
import { StatusIndicator } from '@archieai/ui';
|
|
124
|
+
|
|
125
|
+
<StatusIndicator variant="success" />
|
|
126
|
+
<StatusIndicator variant="warning" />
|
|
127
|
+
<StatusIndicator variant="error" />
|
|
128
|
+
<StatusIndicator variant="info" />
|
|
129
|
+
<StatusIndicator variant="neutral" />
|
|
130
|
+
|
|
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} />
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Icons (287+)
|
|
178
|
+
|
|
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
|
+
---
|
|
204
|
+
|
|
82
205
|
### Molecules
|
|
83
206
|
|
|
84
207
|
#### Button
|
|
@@ -153,6 +276,271 @@ import { Checkbox } from '@archieai/ui';
|
|
|
153
276
|
- `id`: Required for accessibility
|
|
154
277
|
- All standard checkbox HTML attributes
|
|
155
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
|
+
/>
|
|
447
|
+
```
|
|
448
|
+
|
|
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
|
+
|
|
156
544
|
#### Toast
|
|
157
545
|
|
|
158
546
|
Toast notification system with multiple variants.
|
|
@@ -271,6 +659,8 @@ import { LoadingSpinner } from '@archieai/ui';
|
|
|
271
659
|
<LoadingSpinner size="large" />
|
|
272
660
|
```
|
|
273
661
|
|
|
662
|
+
---
|
|
663
|
+
|
|
274
664
|
### Organisms
|
|
275
665
|
|
|
276
666
|
#### ChatInput
|
|
@@ -290,62 +680,145 @@ import { ChatInput } from '@archieai/ui';
|
|
|
290
680
|
/>;
|
|
291
681
|
```
|
|
292
682
|
|
|
293
|
-
|
|
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
|
|
294
691
|
|
|
295
|
-
|
|
692
|
+
Header component for chat conversations with breadcrumbs, tags, and collaborators.
|
|
296
693
|
|
|
297
694
|
```tsx
|
|
298
|
-
import {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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}
|
|
307
720
|
/>;
|
|
308
721
|
```
|
|
309
722
|
|
|
310
|
-
|
|
723
|
+
**Props:**
|
|
311
724
|
|
|
312
|
-
|
|
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
|
|
313
731
|
|
|
314
|
-
|
|
732
|
+
---
|
|
733
|
+
|
|
734
|
+
### Renderers
|
|
735
|
+
|
|
736
|
+
#### MarkdownRenderer
|
|
737
|
+
|
|
738
|
+
Markdown content renderer with support for headings, lists, code blocks, tables, math (LaTeX), and more.
|
|
315
739
|
|
|
316
740
|
```tsx
|
|
317
|
-
import {
|
|
741
|
+
import { MarkdownRenderer } from '@archieai/ui';
|
|
318
742
|
|
|
319
|
-
|
|
320
|
-
<
|
|
321
|
-
<Typography variant="body1">Body text</Typography>
|
|
322
|
-
<Typography variant="caption">Caption text</Typography>
|
|
323
|
-
```
|
|
743
|
+
// Basic markdown
|
|
744
|
+
<MarkdownRenderer content="# Hello World\n\nThis is **bold** and *italic* text." />
|
|
324
745
|
|
|
325
|
-
|
|
746
|
+
// With code blocks
|
|
747
|
+
<MarkdownRenderer
|
|
748
|
+
content={`
|
|
749
|
+
## Code Example
|
|
326
750
|
|
|
327
|
-
|
|
751
|
+
\`\`\`javascript
|
|
752
|
+
const greeting = 'Hello, World!';
|
|
753
|
+
console.log(greeting);
|
|
754
|
+
\`\`\`
|
|
328
755
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
Home, Settings, User, Mail, Star, Check, X,
|
|
333
|
-
Plus, Minus, Search, Filter, Edit, Trash,
|
|
334
|
-
ArrowLeft, ArrowRight, ChevronDown, ChevronUp,
|
|
335
|
-
Heart, Bell, Calendar, Clock, Download, Upload
|
|
336
|
-
} from '@archieai/ui/icons';
|
|
756
|
+
Inline \`code\` also works!
|
|
757
|
+
`}
|
|
758
|
+
/>
|
|
337
759
|
|
|
338
|
-
//
|
|
339
|
-
<
|
|
340
|
-
|
|
341
|
-
|
|
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" />
|
|
342
796
|
```
|
|
343
797
|
|
|
344
|
-
**
|
|
798
|
+
**Props:**
|
|
345
799
|
|
|
346
|
-
- `
|
|
347
|
-
- `
|
|
348
|
-
- `
|
|
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
|
+
---
|
|
349
822
|
|
|
350
823
|
## 🎨 Theming
|
|
351
824
|
|
|
@@ -360,12 +833,25 @@ The library uses CSS custom properties for theming. You can customize colors by
|
|
|
360
833
|
--color-blue-400: #6aeafd;
|
|
361
834
|
--color-blue-200: #d6f4ff;
|
|
362
835
|
|
|
836
|
+
/* Orange Colors */
|
|
837
|
+
--color-orange-1000: #e15713;
|
|
838
|
+
--color-orange-800: #ff6f00;
|
|
839
|
+
--color-orange-200: #fff2e2;
|
|
840
|
+
|
|
363
841
|
/* Neutral Colors */
|
|
364
842
|
--color-gray-1000: #000626;
|
|
365
843
|
--color-gray-800: #595f7a;
|
|
366
844
|
--color-gray-600: #8c92af;
|
|
367
845
|
--color-gray-200: #e5e7f0;
|
|
368
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;
|
|
369
855
|
}
|
|
370
856
|
```
|
|
371
857
|
|
|
@@ -381,6 +867,17 @@ import type {
|
|
|
381
867
|
ToastProps,
|
|
382
868
|
TabsProps,
|
|
383
869
|
BreadcrumbsProps,
|
|
870
|
+
MessageBubbleProps,
|
|
871
|
+
ChatFileProps,
|
|
872
|
+
DropdownProps,
|
|
873
|
+
ProgressBarProps,
|
|
874
|
+
StatusMessageProps,
|
|
875
|
+
SidebarItemProps,
|
|
876
|
+
TimestampProps,
|
|
877
|
+
AvatarProps,
|
|
878
|
+
StatusIndicatorProps,
|
|
879
|
+
ConversationHeaderProps,
|
|
880
|
+
MarkdownRendererProps,
|
|
384
881
|
} from '@archieai/ui';
|
|
385
882
|
|
|
386
883
|
// Use types in your components
|
|
@@ -403,6 +900,7 @@ const MyButton: React.FC<ButtonProps> = (props) => {
|
|
|
403
900
|
- **Tailwind CSS v4** - Utility-first styling
|
|
404
901
|
- **Framer Motion** - Animations
|
|
405
902
|
- **Radix UI** - Accessible primitives
|
|
903
|
+
- **KaTeX** - Math/LaTeX rendering
|
|
406
904
|
- **Class Variance Authority** - Variant management
|
|
407
905
|
- **Vite** - Build tool
|
|
408
906
|
|
|
@@ -417,7 +915,7 @@ The library is optimized for minimal bundle size:
|
|
|
417
915
|
|
|
418
916
|
```tsx
|
|
419
917
|
// Import only what you need
|
|
420
|
-
import { Button, Input } from '@archieai/ui'; // Main components
|
|
918
|
+
import { Button, Input, MessageBubble } from '@archieai/ui'; // Main components
|
|
421
919
|
import { Home, Star } from '@archieai/ui/icons'; // Icons separately
|
|
422
920
|
import '@archieai/ui/styles'; // Styles
|
|
423
921
|
```
|
|
@@ -456,7 +954,7 @@ pnpm build:lib
|
|
|
456
954
|
# - dist/icons.js (Icons ESM)
|
|
457
955
|
# - dist/icons.cjs (Icons CommonJS)
|
|
458
956
|
# - dist/styles.js (Styles entry point)
|
|
459
|
-
# - dist/
|
|
957
|
+
# - dist/ui.css (Compiled CSS)
|
|
460
958
|
```
|
|
461
959
|
|
|
462
960
|
## 📄 License
|
|
@@ -481,7 +979,7 @@ This package is maintained by the Archie AI team. For internal contributors:
|
|
|
481
979
|
For issues and questions:
|
|
482
980
|
|
|
483
981
|
- Internal team: Contact the Archie AI development team
|
|
484
|
-
- GitHub Issues: [https://github.com/
|
|
982
|
+
- GitHub Issues: [https://github.com/heyarchie-ai/Archie-UI/issues](https://github.com/heyarchie-ai/Archie-UI/issues)
|
|
485
983
|
|
|
486
984
|
## 📚 Additional Resources
|
|
487
985
|
|