@vadimcomanescu/nadicode-design-system 2.0.0 → 2.0.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/.agents/skills/seed/SKILL.md +15 -4
- package/.agents/skills/seed/contract.md +4 -0
- package/.agents/skills/seed/references/blocks.md +57 -55
- package/.agents/skills/seed/references/components.md +98 -101
- package/dist/catalog.json +3217 -0
- package/dist/{chunk-ALUL3PF7.js → chunk-6MFAZU4B.js} +7 -7
- package/dist/components/blocks/AuthLayout.js +2 -1
- package/dist/components/blocks/LoginBlock.js +2 -1
- package/dist/components/blocks/PasswordRecoveryBlock.js +4 -3
- package/dist/components/blocks/ResetPasswordBlock.js +6 -5
- package/dist/components/blocks/SignUpBlock.js +10 -9
- package/dist/components/blocks/WizardBlock.js +10 -9
- package/dist/components/blocks/user/InviteUserModal.js +6 -5
- package/eslint-rules/nadicode/config.js +1 -0
- package/eslint-rules/nadicode/index.js +2 -0
- package/eslint-rules/nadicode/rules/__tests__/no-handcoded-field.test.js +110 -0
- package/eslint-rules/nadicode/rules/no-handcoded-field.js +120 -0
- package/package.json +6 -3
|
@@ -18,14 +18,25 @@ In consumer apps, Seed runtime normally comes from an exact released `@vadimcoma
|
|
|
18
18
|
|
|
19
19
|
Consumer scaffold contract: brand customization stays palette-only unless the task is explicitly DS development. In seeded apps, edit seed-palette.css in the app src/ root for brand colors. Do not tell consumers to edit the package tokens stylesheet, `src/lib/tokens.config.js`, or font/layout wiring as part of normal branding.
|
|
20
20
|
|
|
21
|
+
## Component Discovery
|
|
22
|
+
|
|
23
|
+
For exact component names, variant values, props, and tiers, read the machine-readable catalog:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
cat node_modules/@vadimcomanescu/nadicode-design-system/dist/catalog.json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The catalog is auto-generated from source and always accurate. Use exact variant names from the catalog. Do not guess.
|
|
30
|
+
|
|
21
31
|
## Read Order
|
|
22
32
|
|
|
23
33
|
1. **This file** -- router, quick references, forbidden patterns
|
|
24
34
|
2. **`contract.md`** -- binary rules, package integration contract
|
|
25
|
-
3.
|
|
26
|
-
4. **`
|
|
27
|
-
5. **`
|
|
28
|
-
6. **`references
|
|
35
|
+
3. **catalog.json** (in dist/) -- machine-readable component metadata (variants, props, tiers)
|
|
36
|
+
4. **`intent-map.md`** -- intent decision tree + recipe index
|
|
37
|
+
5. **`recipes/<page-type>.md`** -- matching recipe for your page
|
|
38
|
+
6. **`references/`** -- deep dives as needed
|
|
39
|
+
7. **`references/brand-override.md`** -- palette-only brand customization guide for seeded apps
|
|
29
40
|
|
|
30
41
|
---
|
|
31
42
|
|
|
@@ -7,6 +7,10 @@ Binary rules for consumer apps using the Seed Design System. Every rule is non-n
|
|
|
7
7
|
- Apply only to the explicit migration scope you were given.
|
|
8
8
|
- Do not edit files outside scope unless the build is blocked by a required wiring step.
|
|
9
9
|
|
|
10
|
+
## Component Catalog
|
|
11
|
+
|
|
12
|
+
Read catalog.json (shipped in the package under dist/) for the authoritative list of components, variant names, props, and tiers. Verify component names and variant values against the catalog. Do not guess variant names or prop values.
|
|
13
|
+
|
|
10
14
|
## Import Rules
|
|
11
15
|
|
|
12
16
|
1. Import Seed primitives, blocks, charts, icons, and text effects from `@vadimcomanescu/nadicode-design-system/*` subpaths. Do not vendor or recreate DS runtime files inside the scaffold.
|
|
@@ -8,101 +8,103 @@ Run `npm run docs:inventory` for the current filesystem-backed list.
|
|
|
8
8
|
|
|
9
9
|
| Block | Purpose | Key Props |
|
|
10
10
|
| --- | --- | --- |
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
11
|
+
| AccountLockedBlock | Account locked notification | `reason`, `unlockMinutes`, `onContactSupport`, `onBackToLogin`, `title`, `description` |
|
|
12
|
+
| AuthLayout | Split-screen auth layout wrapper | `mode`, `action`, `error`, `googleAction`, `labels` |
|
|
13
|
+
| AuthSuccessBlock | Generic auth success state | `icon`, `title`, `description`, `buttonText`, `onContinue`, `autoRedirectSeconds` |
|
|
14
|
+
| LoginBlock | Email/password login with social OAuth | `type`, `showSocial`, `labels`, `action`, `error`, `onLogin`, `googleAction`, `forgotPasswordHref`, `signUpHref`, `signInHref` |
|
|
15
|
+
| PasswordRecoveryBlock | Password reset request | `mode`, `onSubmit`, `onBackToLogin`, `title`, `description`, `buttonText`, `successTitle` |
|
|
16
|
+
| ResetPasswordBlock | New password entry (from email link) | `onSubmit`, `onBackToLogin`, `title`, `description` |
|
|
17
|
+
| SignUpBlock | Registration form | `title`, `description`, `showSocial`, `signInHref`, `onSubmit` |
|
|
18
|
+
| TwoFactorChallengeBlock | 2FA code entry challenge | `onVerify`, `onUseBackupCode`, `onBackToLogin`, `error`, `title`, `description`, `backupCodeLabel` |
|
|
19
|
+
| TwoFactorSetupBlock | 2FA setup with QR code | `qrCodeUrl`, `secret`, `backupCodes`, `onVerify`, `onComplete`, `title`, `description` |
|
|
20
20
|
|
|
21
21
|
## Marketing
|
|
22
22
|
|
|
23
23
|
| Block | Purpose | Key Props |
|
|
24
24
|
| --- | --- | --- |
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
25
|
+
| AgentProfileGridBlock | Agent/worker profile card grid ("Meet your AI team") | `title`, `description`, `agents`, `columns` |
|
|
26
|
+
| CallToActionBlock | Call-to-action section | - |
|
|
27
|
+
| ComparisonBlock | Side-by-side feature comparison | `plans`, `title`, `description` |
|
|
28
|
+
| FAQBlock | FAQ accordion | `items`, `title`, `description` |
|
|
29
|
+
| FeatureBlock | Single feature showcase | - |
|
|
30
|
+
| FeatureGridBlock | Multi-feature grid layout | - |
|
|
31
|
+
| HeroBlock | Full hero with gradient text | - |
|
|
32
|
+
| HeroSectionBlock | Alternate hero layout | - |
|
|
33
|
+
| LogoCloud | Partner/client logo grid | `title`, `logos` |
|
|
34
|
+
| PricingBlock | Pricing cards comparison | - |
|
|
35
|
+
| ProcessFlowBlock | "How it works" numbered step sequence | `title`, `description`, `badge`, `steps` |
|
|
36
|
+
| SocialProofBlock | Social proof metrics/logos | - |
|
|
37
|
+
| SolutionShowcaseBlock | Problem -> Solution -> Output narrative with color-coded arc | `title`, `description`, `badge`, `sections` |
|
|
38
|
+
| StatsMarketingBlock | Marketing statistics display | - |
|
|
39
|
+
| TestimonialsBlock | Customer testimonial carousel/grid | - |
|
|
40
40
|
|
|
41
41
|
## Navigation
|
|
42
42
|
|
|
43
43
|
| Block | Purpose | Key Props |
|
|
44
44
|
| --- | --- | --- |
|
|
45
|
-
|
|
|
46
|
-
| FooterBlock | Site footer with link columns |
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
45
|
+
| BannerBlock | Top-of-page promotional banner | `variant`, `dismissible`, `onDismiss` |
|
|
46
|
+
| FooterBlock | Site footer with link columns | - |
|
|
47
|
+
| HeaderBlock | Site header with nav links | - |
|
|
48
|
+
| NavUser | Sidebar user menu with dropdown | `user`, `name`, `email`, `avatar`, `items`, `footer` |
|
|
49
|
+
| NotFoundBlock | 404 page content | `title`, `description`, `backHref`, `backLabel` |
|
|
50
50
|
|
|
51
51
|
## Dashboard & Data
|
|
52
52
|
|
|
53
53
|
| Block | Purpose | Key Props |
|
|
54
54
|
| --- | --- | --- |
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
55
|
+
| ActivityFeedBlock | Activity/event timeline | `activities`, `title` |
|
|
56
|
+
| BarChartBlock | Pre-configured bar chart | - |
|
|
57
|
+
| ChartBlock | Single chart container | `data`, `config`, `title`, `description` |
|
|
58
|
+
| ChartCollectionBlock | Multiple chart grid | - |
|
|
59
|
+
| CodeBlock | Syntax-highlighted code display | - |
|
|
60
|
+
| DataGridBlock | Data grid/table block | `data`, `columns`, `title`, `description` |
|
|
61
|
+
| HeatmapChartBlock | Heatmap visualization | - |
|
|
62
|
+
| InteractiveAreaChartBlock | Zoomable/interactive area chart | - |
|
|
63
|
+
| StatsBlock | KPI statistics cards | - |
|
|
64
|
+
| UsageDonutBlock | Usage/quota donut chart | - |
|
|
65
65
|
|
|
66
66
|
## Application
|
|
67
67
|
|
|
68
68
|
| Block | Purpose | Key Props |
|
|
69
69
|
| --- | --- | --- |
|
|
70
|
-
|
|
|
71
|
-
| ChatLayout | Chat application layout | `
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
|
77
|
-
|
|
|
78
|
-
|
|
|
70
|
+
| ChangelogBlock | Version changelog display | `entries`, `title` |
|
|
71
|
+
| ChatLayout | Chat application layout | `initialMessages`, `assistantName`, `assistantStatus`, `placeholder` |
|
|
72
|
+
| ContactBlock | Contact form | `onSubmit`, `title`, `description`, `namePlaceholder`, `emailPlaceholder`, `messagePlaceholder`, `successTitle`, `submitLabel` |
|
|
73
|
+
| CreateBlock | Entity creation form | `title`, `description`, `submitLabel`, `onSubmit` |
|
|
74
|
+
| DirectoryBlock | User/item directory with search | `navItems`, `projects` |
|
|
75
|
+
| IntegrationsBlock | Integration marketplace grid | - |
|
|
76
|
+
| KanbanDemoBlock | Kanban board demo with sample data | - |
|
|
77
|
+
| OnboardingBlock | Multi-step onboarding wizard | `steps`, `title`, `onToggle` |
|
|
78
|
+
| SettingsLayout | Settings page with nav sidebar | `links`, `title`, `subtitle`, `defaultActive`, `renderContent` |
|
|
79
|
+
| WizardBlock | Generic step-by-step wizard | `title`, `description`, `steps`, `onFinish` |
|
|
79
80
|
|
|
80
81
|
## Content & Media
|
|
81
82
|
|
|
82
83
|
| Block | Purpose | Key Props |
|
|
83
84
|
| --- | --- | --- |
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| NewsletterBlock | Email newsletter signup | `onSubscribe` |
|
|
85
|
+
| AudioVisualizerBlock | Audio visualization display | - |
|
|
86
|
+
| GalleryBlock | Image/media gallery grid | `images`, `columns`, `title` |
|
|
87
|
+
| NewsletterBlock | Email newsletter signup | `onSubscribe`, `title`, `description` |
|
|
87
88
|
|
|
88
89
|
## User
|
|
89
90
|
|
|
90
91
|
| Block | Purpose | Key Props |
|
|
91
92
|
| --- | --- | --- |
|
|
92
|
-
| TeamBlock | Team members grid with roles/avatars |
|
|
93
|
-
| InviteUserModal | Invite user flow modal | `onInvite?`, `onInvited?` |
|
|
93
|
+
| TeamBlock | Team members grid with roles/avatars | - |
|
|
94
94
|
|
|
95
95
|
## AI/Voice
|
|
96
96
|
|
|
97
97
|
| Block | Purpose | Key Props |
|
|
98
98
|
| --- | --- | --- |
|
|
99
|
-
| VoiceAgentCard | AI voice agent interface card | `agent`, `state`, `selected
|
|
99
|
+
| VoiceAgentCard | AI voice agent interface card | `agent`, `state`, `selected`, `onSelect` |
|
|
100
100
|
|
|
101
101
|
## Agentic
|
|
102
102
|
|
|
103
103
|
| Block | Purpose | Key Props |
|
|
104
104
|
| --- | --- | --- |
|
|
105
|
-
| AgentConversationBlock | Agent conversation UI (messages, tool calls, thinking) |
|
|
105
|
+
| AgentConversationBlock | Agent conversation UI (messages, tool calls, thinking) | - |
|
|
106
|
+
| AgentRunOverviewBlock | Agent run summary with status, duration, and output | - |
|
|
107
|
+
| AgentWorkbenchBlock | Agent workbench layout with tool panels and conversation | - |
|
|
106
108
|
|
|
107
109
|
## Usage Pattern
|
|
108
110
|
|
|
@@ -11,29 +11,29 @@ Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (ma
|
|
|
11
11
|
| Component | Path | Tier | Radix/Lib | Notes |
|
|
12
12
|
|-----------|------|------|-----------|-------|
|
|
13
13
|
| Button | `ui/Button` | 1 | `react-slot` | 8 variants (primary, secondary, outline, ghost, link, destructive, accent, glass), 4 sizes |
|
|
14
|
-
|
|
|
15
|
-
| PasswordInput | `ui/PasswordInput` | 1 | - | Input with show/hide toggle |
|
|
16
|
-
| Textarea | `ui/Textarea` | 1 | - | Auto-grow text area |
|
|
17
|
-
| Select | `ui/Select` | 1 | `react-select` | Compound: Trigger, Content, Item, Group, Separator |
|
|
18
|
-
| NativeSelect | `ui/NativeSelect` | 4 | - | Browser-native `<select>` styled |
|
|
14
|
+
| Calendar | `ui/Calendar` | 1 | `react-day-picker` | Calendar grid primitive |
|
|
19
15
|
| Checkbox | `ui/Checkbox` | 1 | `react-checkbox` | With optional label |
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
| Slider | `ui/Slider` | 1 | `react-slider` | Range slider |
|
|
16
|
+
| CheckoutForm | `ui/CheckoutForm` | 2 | `@stripe/react-stripe-js` | Stripe Elements checkout form |
|
|
17
|
+
| CheckoutFormDemo | `ui/CheckoutFormDemo` | 2 | `@stripe/react-stripe-js` | Demo checkout with pre-wired state |
|
|
23
18
|
| Combobox | `ui/Combobox` | 1 | `cmdk` | Searchable select |
|
|
24
|
-
| TagInput | `ui/TagInput` | 1 | - | Multi-value tag input |
|
|
25
19
|
| DatePicker | `ui/DatePicker` | 1 | `react-day-picker` | Single date picker |
|
|
26
20
|
| DateRangePicker | `ui/DateRangePicker` | 1 | `react-day-picker` | Date range selection |
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
| InputGroup | `ui/InputGroup` | 1 | - | Input + addon composition |
|
|
21
|
+
| Field | `ui/Field` | 1 | - | Generic field wrapper (label + error) |
|
|
22
|
+
| FileUpload | `ui/FileUpload` | 1 | - | Drag-and-drop file upload zone |
|
|
30
23
|
| Form | `ui/Form` | 1 | `react-hook-form` | FormField, FormItem, FormLabel, FormControl, FormMessage |
|
|
31
24
|
| FormWizard | `ui/FormWizard` | 1 | - | Multi-step form wizard |
|
|
32
|
-
|
|
|
25
|
+
| Input | `ui/Input` | 1 | - | size: sm/default/lg, props: label, error, startIcon, endIcon |
|
|
26
|
+
| InputGroup | `ui/InputGroup` | 1 | - | Input + addon composition |
|
|
27
|
+
| InputOTP | `ui/InputOTP` | 1 | `input-otp` | OTP input with groups, slots, separators |
|
|
33
28
|
| Label | `ui/Label` | 1 | `react-label` | Accessible label |
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
29
|
+
| NativeSelect | `ui/NativeSelect` | 4 | - | Browser-native <select> styled |
|
|
30
|
+
| PasswordInput | `ui/PasswordInput` | 1 | - | Input with show/hide toggle |
|
|
31
|
+
| RadioGroup | `ui/RadioGroup` | 1 | `react-radio-group` | RadioGroup + RadioGroupItem |
|
|
32
|
+
| Select | `ui/Select` | 1 | `react-select` | Compound: Trigger, Content, Item, Group, Separator |
|
|
33
|
+
| Slider | `ui/Slider` | 1 | `react-slider` | Range slider |
|
|
34
|
+
| Switch | `ui/Switch` | 1 | `react-switch` | Toggle switch |
|
|
35
|
+
| TagInput | `ui/TagInput` | 1 | - | Multi-value tag input |
|
|
36
|
+
| Textarea | `ui/Textarea` | 1 | - | Auto-grow text area |
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -41,34 +41,40 @@ Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (ma
|
|
|
41
41
|
|
|
42
42
|
| Component | Path | Tier | Radix/Lib | Notes |
|
|
43
43
|
|-----------|------|------|-----------|-------|
|
|
44
|
-
|
|
|
44
|
+
| Accordion | `ui/Accordion` | 1 | `react-accordion` | Accordion, Item, Trigger, Content |
|
|
45
|
+
| Alert | `ui/Alert` | 1 | - | variant: default, destructive |
|
|
46
|
+
| AlertDialog | `ui/AlertDialog` | 1 | `react-alert-dialog` | Full compound set with actions |
|
|
47
|
+
| AnimatedTabs | `ui/AnimatedTabs` | 3 | - | Tabs with sliding indicator (layoutId) |
|
|
48
|
+
| AnnouncementBanner | `ui/AnnouncementBanner` | 1 | - | Top-of-page announcement |
|
|
45
49
|
| Avatar | `ui/Avatar` | 1 | `react-avatar` | Avatar, AvatarImage, AvatarFallback |
|
|
46
50
|
| AvatarUpload | `ui/AvatarUpload` | 1 | - | Avatar with upload functionality |
|
|
47
|
-
| Badge | `ui/Badge` | 1 | - | variant:
|
|
48
|
-
|
|
|
49
|
-
|
|
|
51
|
+
| Badge | `ui/Badge` | 1 | - | variant: primary, secondary, destructive, outline, accent |
|
|
52
|
+
| Breadcrumb | `ui/Breadcrumb` | 1 | - | Breadcrumb, List, Item, Link, Separator |
|
|
53
|
+
| Card | `ui/Card` | 1 | - | Card, Header, Title, Description, Content, Footer |
|
|
54
|
+
| Carousel | `ui/Carousel` | 1 | `embla-carousel-react` | Content, Item, Previous, Next |
|
|
55
|
+
| CheckStatus | `ui/CheckStatus` | 2 | - | Status check indicator component |
|
|
56
|
+
| DataFreshness | `ui/DataFreshness` | 2 | - | Data freshness/staleness indicator |
|
|
50
57
|
| DataTable | `ui/DataTable` | 1 | `@tanstack/react-table` | Full-featured with sorting/filtering |
|
|
58
|
+
| Empty | `ui/Empty` | 1 | - | Empty state placeholder |
|
|
59
|
+
| Heading | `ui/Heading` | 1 | - | Semantic headings with explicit level + visual size |
|
|
60
|
+
| HoverCard | `ui/HoverCard` | 4 | `react-hover-card` | HoverCard, Trigger, Content |
|
|
61
|
+
| KanbanBoard | `ui/KanbanBoard` | 2 | - | Drag-and-drop kanban board component |
|
|
62
|
+
| Kbd | `ui/Kbd` | 1 | - | Keyboard shortcut display |
|
|
63
|
+
| MetricCard | `ui/MetricCard` | 2 | - | Single metric display card with label, value, and trend |
|
|
64
|
+
| Popover | `ui/Popover` | 1 | `react-popover` | Popover, Trigger, Content |
|
|
65
|
+
| Progress | `ui/Progress` | 1 | `react-progress` | Progress bar |
|
|
66
|
+
| ProgressRing | `ui/ProgressRing` | 2 | - | Circular progress ring indicator |
|
|
67
|
+
| PromoCard | `ui/PromoCard` | 4 | - | Promotional card (Card + glass-floating may replace) |
|
|
68
|
+
| RoleBadge | `ui/RoleBadge` | 4 | - | Role-specific badge styling (merge into Badge) |
|
|
51
69
|
| Skeleton | `ui/Skeleton` | 1 | - | Loading placeholder |
|
|
52
70
|
| Spinner | `ui/Spinner` | 1 | - | Loading spinner |
|
|
53
|
-
| Progress | `ui/Progress` | 1 | `react-progress` | Progress bar |
|
|
54
|
-
| Empty | `ui/Empty` | 1 | - | Empty state placeholder |
|
|
55
|
-
| Timeline | `ui/Timeline` | 1 | - | Vertical timeline |
|
|
56
71
|
| StatusDot | `ui/StatusDot` | 4 | - | Status indicator dot (can be CSS utility) |
|
|
57
|
-
|
|
|
72
|
+
| Table | `ui/Table` | 1 | - | Table, Header, Body, Row, Head, Cell |
|
|
58
73
|
| Tabs | `ui/Tabs` | 1 | `react-tabs` | Tabs, TabsList, TabsTrigger, TabsContent |
|
|
59
|
-
|
|
|
74
|
+
| Timeline | `ui/Timeline` | 1 | - | Vertical timeline |
|
|
60
75
|
| Tooltip | `ui/Tooltip` | 1 | `react-tooltip` | Provider, Tooltip, Trigger, Content |
|
|
61
|
-
|
|
|
62
|
-
| Popover | `ui/Popover` | 1 | `react-popover` | Popover, Trigger, Content |
|
|
63
|
-
| Alert | `ui/Alert` | 1 | - | variant: default, destructive |
|
|
64
|
-
| AlertDialog | `ui/AlertDialog` | 1 | `react-alert-dialog` | Full compound set with actions |
|
|
65
|
-
| Breadcrumb | `ui/Breadcrumb` | 1 | - | Breadcrumb, List, Item, Link, Separator |
|
|
66
|
-
| Kbd | `ui/Kbd` | 1 | - | Keyboard shortcut display |
|
|
67
|
-
| PromoCard | `ui/PromoCard` | 4 | - | Promotional card (Card + glass-floating may replace) |
|
|
68
|
-
| AnnouncementBanner | `ui/AnnouncementBanner` | 1 | - | Top-of-page announcement |
|
|
69
|
-
| Heading | `ui/Heading` | 1 | - | Semantic headings with explicit `level` + visual `size` |
|
|
76
|
+
| TrendIndicator | `ui/TrendIndicator` | 2 | - | Trend direction indicator (up/down/neutral) |
|
|
70
77
|
| Typography | `ui/Typography` | 1 | - | Body, small, and muted text only |
|
|
71
|
-
| Carousel | `ui/Carousel` | 1 | `embla-carousel-react` | Content, Item, Previous, Next |
|
|
72
78
|
|
|
73
79
|
---
|
|
74
80
|
|
|
@@ -76,15 +82,16 @@ Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (ma
|
|
|
76
82
|
|
|
77
83
|
| Component | Path | Tier | Radix/Lib | Notes |
|
|
78
84
|
|-----------|------|------|-----------|-------|
|
|
79
|
-
|
|
|
80
|
-
| NavigationMenu | `ui/NavigationMenu` | 1 | `react-navigation-menu` | Menu, List, Item, Trigger, Content |
|
|
81
|
-
| Menubar | `ui/Menubar` | 4 | `react-menubar` | Rare in modern SaaS |
|
|
82
|
-
| DropdownMenu | `ui/DropdownMenu` | 1 | `react-dropdown-menu` | Full compound set |
|
|
85
|
+
| Command | `ui/Command` | 1 | `cmdk` | Command palette primitive |
|
|
83
86
|
| ContextMenu | `ui/ContextMenu` | 4 | `react-context-menu` | Rarely needed |
|
|
84
|
-
|
|
|
87
|
+
| DropdownMenu | `ui/DropdownMenu` | 1 | `react-dropdown-menu` | Full compound set |
|
|
85
88
|
| FloatingDock | `ui/FloatingDock` | 4 | - | macOS-style floating dock |
|
|
89
|
+
| LanguageSwitcher | `ui/LanguageSwitcher` | 2 | - | Locale/language selection switcher |
|
|
90
|
+
| Menubar | `ui/Menubar` | 4 | `react-menubar` | Rare in modern SaaS |
|
|
91
|
+
| NavigationMenu | `ui/NavigationMenu` | 1 | `react-navigation-menu` | Menu, List, Item, Trigger, Content |
|
|
92
|
+
| Pagination | `ui/Pagination` | 1 | - | Content, Item, Previous, Next |
|
|
86
93
|
| SearchCommand | `ui/SearchCommand` | 1 | `cmdk` | Cmd+K search dialog |
|
|
87
|
-
|
|
|
94
|
+
| Sidebar | `ui/Sidebar` | 1 | - | Full system: Provider, Trigger, Content, Group, Menu |
|
|
88
95
|
| TreeView | `ui/TreeView` | 1 | - | Recursive collapsible tree with keyboard nav |
|
|
89
96
|
|
|
90
97
|
---
|
|
@@ -93,20 +100,22 @@ Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (ma
|
|
|
93
100
|
|
|
94
101
|
| Component | Path | Tier | Radix/Lib | Notes |
|
|
95
102
|
|-----------|------|------|-----------|-------|
|
|
96
|
-
| Dialog | `ui/Dialog` | 1 | `react-dialog` | Full compound set with close button |
|
|
97
103
|
| AnimatedDialog | `ui/AnimatedDialog` | 3 | `react-dialog` | Dialog with motion spring animations |
|
|
98
|
-
| Drawer | `ui/Drawer` | 1 | `vaul` | Mobile-friendly bottom drawer |
|
|
99
|
-
| Sheet | `ui/Sheet` | 1 | `react-dialog` | Slide-in side panel |
|
|
100
104
|
| AnimatedSheet | `ui/AnimatedSheet` | 3 | `react-dialog` | Sheet with motion animations |
|
|
105
|
+
| AspectRatio | `ui/AspectRatio` | 1 | `react-aspect-ratio` | Fixed aspect ratio container |
|
|
106
|
+
| BentoGrid | `ui/BentoGrid` | 1 | - | CSS grid layout system |
|
|
107
|
+
| Collapsible | `ui/Collapsible` | 4 | `react-collapsible` | Used by Sidebar internally |
|
|
108
|
+
| Dialog | `ui/Dialog` | 1 | `react-dialog` | Full compound set with close button |
|
|
109
|
+
| Drawer | `ui/Drawer` | 1 | `vaul` | Mobile-friendly bottom drawer |
|
|
110
|
+
| Grid | `layout/Grid` | 1 | - | CSS Grid wrapper |
|
|
111
|
+
| GridSystem | `layout/GridSystem` | 2 | - | Extended grid system with responsive column and gap utilities |
|
|
101
112
|
| Resizable | `ui/Resizable` | 1 | `react-resizable-panels` | PanelGroup, Panel, Handle |
|
|
102
113
|
| ScrollArea | `ui/ScrollArea` | 1 | `react-scroll-area` | Custom scrollbar |
|
|
103
|
-
| Collapsible | `ui/Collapsible` | 4 | `react-collapsible` | Used by Sidebar internally |
|
|
104
|
-
| BentoGrid | `ui/BentoGrid` | 1 | - | CSS grid layout system |
|
|
105
|
-
| AspectRatio | `ui/AspectRatio` | 1 | `react-aspect-ratio` | Fixed aspect ratio container |
|
|
106
114
|
| Separator | `ui/Separator` | 1 | `react-separator` | Horizontal/vertical divider |
|
|
115
|
+
| SettingsModal | `ui/SettingsModal` | 2 | - | Modal dialog for application settings |
|
|
116
|
+
| Sheet | `ui/Sheet` | 1 | `react-dialog` | Slide-in side panel |
|
|
107
117
|
| Toggle | `ui/Toggle` | 4 | `react-toggle` | variant: default, outline |
|
|
108
118
|
| ToggleGroup | `ui/ToggleGroup` | 4 | `react-toggle-group` | Group of toggles |
|
|
109
|
-
| Grid | `layout/Grid` | 1 | - | CSS Grid wrapper |
|
|
110
119
|
|
|
111
120
|
---
|
|
112
121
|
|
|
@@ -115,15 +124,16 @@ Tiers: **1**=Core (3+ recipes), **2**=Domain (1-2 recipes), **3**=Decorative (ma
|
|
|
115
124
|
| Component | Path | Tier | Notes |
|
|
116
125
|
|-----------|------|------|-------|
|
|
117
126
|
| AmbientGrid | `ui/AmbientGrid` | 3 | CSS grid overlay (24px cells, 0.06 opacity) |
|
|
127
|
+
| AnimatedBackground | `ui/AnimatedBackground` | 3 | CSS animated gradient background |
|
|
118
128
|
| AuroraEffect | `ui/AuroraEffect` | 3 | Animated gradient aurora background |
|
|
129
|
+
| InfiniteSlider | `ui/InfiniteSlider` | 3 | Auto-scrolling content slider |
|
|
130
|
+
| MagneticElement | `ui/MagneticElement` | 3 | Magnetic cursor attraction |
|
|
119
131
|
| MeteorShower | `ui/MeteorShower` | 3 | Falling meteor particles |
|
|
120
|
-
| AnimatedBackground | `ui/AnimatedBackground` | 3 | CSS animated gradient background |
|
|
121
132
|
| MouseEffect | `ui/MouseEffect` | 3 | Mouse-tracking effects (MouseGlow, MouseSpotlight) |
|
|
122
133
|
| MovingBorder | `ui/MovingBorder` | 3 | Animated border rotation |
|
|
123
134
|
| ProgressiveBlur | `ui/ProgressiveBlur` | 3 | Gradient blur effect |
|
|
135
|
+
| ShaderBackground | `ui/ShaderBackground` | 2 | 21 shader types with intent-based presets (hero, section, ambient, card) |
|
|
124
136
|
| TiltCard | `ui/TiltCard` | 3 | 3D perspective tilt on hover |
|
|
125
|
-
| MagneticElement | `ui/MagneticElement` | 3 | Magnetic cursor attraction |
|
|
126
|
-
| InfiniteSlider | `ui/InfiniteSlider` | 3 | Auto-scrolling content slider |
|
|
127
137
|
|
|
128
138
|
---
|
|
129
139
|
|
|
@@ -133,15 +143,15 @@ All in `@vadimcomanescu/nadicode-design-system/text-effects/`.
|
|
|
133
143
|
|
|
134
144
|
| Component | Path | Tier | Notes |
|
|
135
145
|
|-----------|------|------|-------|
|
|
136
|
-
| TextReveal | `ui/text-effects/TextReveal` | 3 | Scroll-triggered text reveal |
|
|
137
146
|
| AnimatedGradientText | `ui/text-effects/AnimatedGradientText` | 3 | Animated gradient sweep on text |
|
|
138
|
-
| FlipWords | `ui/text-effects/FlipWords` | 3 | Word cycling with flip animation |
|
|
139
|
-
| StreamingText | `ui/text-effects/StreamingText` | 3 | ChatGPT-style streaming output |
|
|
140
|
-
| ShimmeringText | `ui/text-effects/ShimmeringText` | 3 | Shimmer highlight sweep |
|
|
141
147
|
| CountingNumber | `ui/text-effects/CountingNumber` | 3 | Animated number counter (also used in dashboard) |
|
|
142
|
-
|
|
|
148
|
+
| FlipWords | `ui/text-effects/FlipWords` | 3 | Word cycling with flip animation |
|
|
143
149
|
| HighlightText | `ui/text-effects/HighlightText` | 3 | Animated highlight marker |
|
|
150
|
+
| MorphingText | `ui/text-effects/MorphingText` | 3 | SVG text morphing transitions |
|
|
151
|
+
| ShimmeringText | `ui/text-effects/ShimmeringText` | 3 | Shimmer highlight sweep |
|
|
144
152
|
| SlidingNumber | `ui/text-effects/SlidingNumber` | 3 | Digit-by-digit sliding animation |
|
|
153
|
+
| StreamingText | `ui/text-effects/StreamingText` | 3 | ChatGPT-style streaming output |
|
|
154
|
+
| TextReveal | `ui/text-effects/TextReveal` | 3 | Scroll-triggered text reveal |
|
|
145
155
|
|
|
146
156
|
---
|
|
147
157
|
|
|
@@ -149,12 +159,12 @@ All in `@vadimcomanescu/nadicode-design-system/text-effects/`.
|
|
|
149
159
|
|
|
150
160
|
| Component | Path | Tier | Notes |
|
|
151
161
|
|-----------|------|------|-------|
|
|
162
|
+
| ConfettiBurst | `ui/ConfettiBurst` | 1 | Celebratory confetti animation |
|
|
163
|
+
| PageTransition | `ui/PageTransition` | 1 | Route transition wrapper (keyed on pathname) |
|
|
152
164
|
| ScrollFadeIn | `ui/ScrollFadeIn` | 1 | Fade in on scroll intersection |
|
|
165
|
+
| SpringHover | `ui/SpringHover` | 3 | Spring-based hover effect wrapper |
|
|
153
166
|
| StaggerChildren | `ui/StaggerChildren` | 1 | Stagger child element entrances |
|
|
154
167
|
| StaggeredEntrance | `ui/StaggeredEntrance` | 3 | Sequential entrance animation |
|
|
155
|
-
| PageTransition | `ui/PageTransition` | 1 | Route transition wrapper (keyed on pathname) |
|
|
156
|
-
| ConfettiBurst | `ui/ConfettiBurst` | 1 | Celebratory confetti animation |
|
|
157
|
-
| SpringHover | `ui/SpringHover` | 3 | Spring-based hover effect wrapper |
|
|
158
168
|
| SuccessCheck | `ui/SuccessCheck` | 1 | Animated success checkmark |
|
|
159
169
|
|
|
160
170
|
---
|
|
@@ -165,14 +175,16 @@ Base `Chart.tsx` in `ui/` (not `ui/charts/`). The 7 chart variants in `ui/charts
|
|
|
165
175
|
|
|
166
176
|
| Component | Path | Tier | Notes |
|
|
167
177
|
|-----------|------|------|-------|
|
|
168
|
-
| Chart | `ui/Chart` | 2 | Base config: ChartContainer, ChartTooltip, ChartLegend |
|
|
169
178
|
| AreaChart | `ui/charts/AreaChart` | 2 | Recharts area chart |
|
|
170
179
|
| BarChart | `ui/charts/BarChart` | 2 | Recharts bar chart |
|
|
180
|
+
| Chart | `ui/Chart` | 2 | Base config: ChartContainer, ChartTooltip, ChartLegend |
|
|
181
|
+
| ChartCard | `ui/ChartCard` | 2 | Card wrapper for chart display with title and description |
|
|
182
|
+
| HeatmapChart | `ui/charts/HeatmapChart` | 2 | Custom heatmap visualization |
|
|
171
183
|
| LineChart | `ui/charts/LineChart` | 2 | Recharts line chart |
|
|
172
184
|
| PieChart | `ui/charts/PieChart` | 2 | Recharts pie/donut chart |
|
|
173
185
|
| RadarChart | `ui/charts/RadarChart` | 2 | Recharts radar chart |
|
|
174
186
|
| RadialBarChart | `ui/charts/RadialBarChart` | 2 | Recharts radial bar chart |
|
|
175
|
-
|
|
|
187
|
+
| Sparkline | `ui/charts/Sparkline` | 2 | Inline sparkline chart for compact trend display |
|
|
176
188
|
|
|
177
189
|
---
|
|
178
190
|
|
|
@@ -181,9 +193,9 @@ Base `Chart.tsx` in `ui/` (not `ui/charts/`). The 7 chart variants in `ui/charts
|
|
|
181
193
|
| Component | Path | Tier | Notes |
|
|
182
194
|
|-----------|------|------|-------|
|
|
183
195
|
| AgentAvatar | `ui/AgentAvatar` | 2 | AI agent avatar with idle/listening/speaking states |
|
|
184
|
-
| Avatar3D | `ui/Avatar3D` | 2 | 3D avatar with Three.js |
|
|
185
196
|
| AgentStatus | `ui/AgentStatus` | 2 | Agent connection status indicator |
|
|
186
197
|
| AudioWaveform | `ui/AudioWaveform` | 2 | Real-time audio visualization |
|
|
198
|
+
| Avatar3D | `ui/Avatar3D` | 2 | 3D avatar with Three.js |
|
|
187
199
|
| ConversationThread | `ui/ConversationThread` | 2 | Chat message thread |
|
|
188
200
|
|
|
189
201
|
---
|
|
@@ -192,40 +204,24 @@ Base `Chart.tsx` in `ui/` (not `ui/charts/`). The 7 chart variants in `ui/charts
|
|
|
192
204
|
|
|
193
205
|
Components for AI agent interfaces, tool-use visualization, and multi-agent workflows.
|
|
194
206
|
|
|
195
|
-
### Core
|
|
196
|
-
|
|
197
207
|
| Component | Path | Tier | Notes |
|
|
198
208
|
|-----------|------|------|-------|
|
|
199
|
-
| ToolCallCard | `ui/ToolCallCard` | 2 | Tool invocation with name, args, status, result |
|
|
200
|
-
| ThinkingIndicator | `ui/ThinkingIndicator` | 2 | Animated "thinking..." for agent reasoning |
|
|
201
209
|
| AgentMessageBubble | `ui/AgentMessageBubble` | 2 | Chat bubble with role-based styling |
|
|
202
|
-
|
|
|
203
|
-
|
|
204
|
-
### Multi-Agent
|
|
205
|
-
|
|
206
|
-
| Component | Path | Tier | Notes |
|
|
207
|
-
|-----------|------|------|-------|
|
|
210
|
+
| AgentMetricsCard | `ui/AgentMetricsCard` | 2 | Agent performance metrics dashboard |
|
|
208
211
|
| AgentTeamPanel | `ui/AgentTeamPanel` | 2 | Agent team members and statuses |
|
|
212
|
+
| AgentTerminal | `ui/AgentTerminal` | 2 | Terminal-style command output |
|
|
209
213
|
| AgentTimeline | `ui/AgentTimeline` | 2 | Timeline of agent actions |
|
|
210
|
-
|
|
|
211
|
-
| HandoffIndicator | `ui/HandoffIndicator` | 2 | Agent-to-agent task handoff |
|
|
212
|
-
|
|
213
|
-
### Observability
|
|
214
|
-
|
|
215
|
-
| Component | Path | Tier | Notes |
|
|
216
|
-
|-----------|------|------|-------|
|
|
217
|
-
| ContextMeter | `ui/ContextMeter` | 2 | Context window usage visualization |
|
|
218
|
-
| SourceCitation | `ui/SourceCitation` | 2 | Cited sources with links |
|
|
219
|
-
| AgentMetricsCard | `ui/AgentMetricsCard` | 2 | Agent performance metrics dashboard |
|
|
220
|
-
| MemoryInspector | `ui/MemoryInspector` | 2 | Agent memory/state inspector |
|
|
221
|
-
|
|
222
|
-
### Artifacts
|
|
223
|
-
|
|
224
|
-
| Component | Path | Tier | Notes |
|
|
225
|
-
|-----------|------|------|-------|
|
|
214
|
+
| ApprovalCard | `ui/ApprovalCard` | 2 | Human-in-the-loop approval/reject |
|
|
226
215
|
| ArtifactCard | `ui/ArtifactCard` | 2 | Generated artifacts display |
|
|
227
216
|
| CodeDiffViewer | `ui/CodeDiffViewer` | 2 | Side-by-side or unified diff view |
|
|
228
|
-
|
|
|
217
|
+
| ContextMeter | `ui/ContextMeter` | 2 | Context window usage visualization |
|
|
218
|
+
| DiffStat | `ui/DiffStat` | 2 | Diff statistics display (additions/deletions) |
|
|
219
|
+
| HandoffIndicator | `ui/HandoffIndicator` | 2 | Agent-to-agent task handoff |
|
|
220
|
+
| MemoryInspector | `ui/MemoryInspector` | 2 | Agent memory/state inspector |
|
|
221
|
+
| SourceCitation | `ui/SourceCitation` | 2 | Cited sources with links |
|
|
222
|
+
| ThinkingIndicator | `ui/ThinkingIndicator` | 2 | Animated "thinking..." for agent reasoning |
|
|
223
|
+
| ToolCallCard | `ui/ToolCallCard` | 2 | Tool invocation with name, args, status, result |
|
|
224
|
+
| WorkflowGraph | `ui/WorkflowGraph` | 2 | Visual graph of workflow steps |
|
|
229
225
|
|
|
230
226
|
---
|
|
231
227
|
|
|
@@ -235,8 +231,8 @@ All in `src/components/ui/stepper/`. Distinct from FormWizard.
|
|
|
235
231
|
|
|
236
232
|
| Component | Path | Tier | Notes |
|
|
237
233
|
|-----------|------|------|-------|
|
|
238
|
-
| Stepper | `ui/stepper/stepper` | 1 | Root stepper, exports `useStepper` hook |
|
|
239
234
|
| Step | `ui/stepper/step` | 1 | Individual step |
|
|
235
|
+
| Stepper | `ui/stepper/stepper` | 1 | Root stepper, exports useStepper hook |
|
|
240
236
|
|
|
241
237
|
---
|
|
242
238
|
|
|
@@ -244,17 +240,18 @@ All in `src/components/ui/stepper/`. Distinct from FormWizard.
|
|
|
244
240
|
|
|
245
241
|
| Component | Path | Tier | Notes |
|
|
246
242
|
|-----------|------|------|-------|
|
|
247
|
-
| ThemeToggle | `ui/ThemeToggle` | 1 | Light/dark/system theme switcher |
|
|
248
|
-
| StyleToggle | `ui/StyleToggle` | 1 | Arctic/bloom style switcher |
|
|
249
|
-
| Toast / Toaster | `ui/Toast`, `ui/Toaster` | 1 | `react-toast` based |
|
|
250
|
-
| Sonner | `ui/Sonner` | 1 | Sonner toast integration |
|
|
251
|
-
| NotificationCenter | `ui/NotificationCenter` | 4 | Overlaps with Sonner/Toast |
|
|
252
|
-
| Logo | `ui/Logo` | 1 | Brand logo component |
|
|
253
243
|
| BrandIcons | `ui/BrandIcons` | 1 | Google, GitHub brand SVGs |
|
|
254
|
-
| SkipNav | `ui/SkipNav` | 1 | Accessibility skip navigation |
|
|
255
|
-
| VisuallyHidden | `ui/VisuallyHidden` | 1 | Screen-reader-only content |
|
|
256
244
|
| ButtonGroup | `ui/ButtonGroup` | 4 | Grouped button layout (use flex+gap) |
|
|
257
245
|
| Item | `ui/Item` | 4 | Generic list item (too generic) |
|
|
246
|
+
| Logo | `ui/Logo` | 1 | Brand logo component |
|
|
247
|
+
| NotificationCenter | `ui/NotificationCenter` | 4 | Overlaps with Sonner/Toast |
|
|
248
|
+
| SkipNav | `ui/SkipNav` | 1 | Accessibility skip navigation |
|
|
249
|
+
| Sonner | `ui/Sonner` | 1 | Sonner toast integration |
|
|
250
|
+
| StyleToggle | `ui/StyleToggle` | 1 | Arctic/bloom style switcher |
|
|
251
|
+
| ThemeToggle | `ui/ThemeToggle` | 1 | Light/dark/system theme switcher |
|
|
252
|
+
| Toast | `ui/Toast` | 1 | Toast notification primitive |
|
|
253
|
+
| Toaster | `ui/Toaster` | 1 | Toast container and renderer |
|
|
254
|
+
| VisuallyHidden | `ui/VisuallyHidden` | 1 | Screen-reader-only content |
|
|
258
255
|
|
|
259
256
|
---
|
|
260
257
|
|
|
@@ -262,9 +259,9 @@ All in `src/components/ui/stepper/`. Distinct from FormWizard.
|
|
|
262
259
|
|
|
263
260
|
| Tier | Count | Usage |
|
|
264
261
|
|------|-------|-------|
|
|
265
|
-
| 1 (Core) | ~
|
|
266
|
-
| 2 (Domain) | ~
|
|
267
|
-
| 3 (Decorative) | ~
|
|
262
|
+
| 1 (Core) | ~76 | 3+ recipes, always available |
|
|
263
|
+
| 2 (Domain) | ~43 | Agentic, charts, AI/voice, checkout |
|
|
264
|
+
| 3 (Decorative) | ~24 | Marketing/showcase only |
|
|
268
265
|
| 4 (Deprecation) | ~14 | Evaluate for removal/consolidation |
|
|
269
266
|
|
|
270
267
|
Use `npm run docs:inventory` for filesystem-backed inventory output.
|