@vadimcomanescu/nadicode-design-system 4.0.0 → 4.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.
Files changed (49) hide show
  1. package/.agents/skills/seed/SKILL.md +38 -166
  2. package/.agents/skills/seed/references/animation.md +2 -2
  3. package/.agents/skills/seed/references/responsive.md +1 -1
  4. package/README.md +2 -2
  5. package/dist/catalog/components.js +4 -4
  6. package/dist/{chunk-7A2RXKGH.js → chunk-GJ557DGH.js} +1 -1
  7. package/dist/{chunk-7XLZCXUL.js → chunk-K4U67BVG.js} +1 -1
  8. package/dist/{chunk-TUJZMJXW.js → chunk-LK2L3C7D.js} +1 -1
  9. package/dist/{chunk-DSMGCFMJ.js → chunk-POFFOUQW.js} +2 -5
  10. package/dist/components/blocks/HeroBlock.js +2 -2
  11. package/dist/components/page-kits/LandingPageKit.js +3 -3
  12. package/dist/components/page-kits/ServiceSuitePageKit.js +3 -3
  13. package/dist/components/ui/AvatarUpload.js +1 -1
  14. package/dist/components/ui/MouseEffect.js +1 -1
  15. package/eslint-rules/nadicode/config.js +1 -0
  16. package/eslint-rules/nadicode/index.js +2 -0
  17. package/eslint-rules/nadicode/rules/__tests__/require-catalog-import.test.js +111 -0
  18. package/eslint-rules/nadicode/rules/no-has-svg-selector.js +1 -1
  19. package/eslint-rules/nadicode/rules/require-catalog-import.js +59 -0
  20. package/package.json +1 -338
  21. package/scripts/ds-check.mjs +0 -10
  22. package/scripts/sync-seed-skill.mjs +0 -3
  23. package/.agents/skills/seed/contract.md +0 -104
  24. package/.agents/skills/seed/intent-map.md +0 -320
  25. package/.agents/skills/seed/recipes/agency-home.md +0 -311
  26. package/.agents/skills/seed/recipes/agents-chat.md +0 -305
  27. package/.agents/skills/seed/recipes/analytics.md +0 -253
  28. package/.agents/skills/seed/recipes/auth.md +0 -254
  29. package/.agents/skills/seed/recipes/blog-content.md +0 -307
  30. package/.agents/skills/seed/recipes/checkout.md +0 -311
  31. package/.agents/skills/seed/recipes/company-about.md +0 -276
  32. package/.agents/skills/seed/recipes/company-contact.md +0 -234
  33. package/.agents/skills/seed/recipes/crud-form.md +0 -233
  34. package/.agents/skills/seed/recipes/crud-list-detail.md +0 -230
  35. package/.agents/skills/seed/recipes/dashboard.md +0 -354
  36. package/.agents/skills/seed/recipes/digital-workers.md +0 -314
  37. package/.agents/skills/seed/recipes/error-pages.md +0 -199
  38. package/.agents/skills/seed/recipes/marketing-landing.md +0 -293
  39. package/.agents/skills/seed/recipes/marketing-shell.md +0 -156
  40. package/.agents/skills/seed/recipes/navigation-shell.md +0 -786
  41. package/.agents/skills/seed/recipes/onboarding.md +0 -258
  42. package/.agents/skills/seed/recipes/pricing.md +0 -271
  43. package/.agents/skills/seed/recipes/service-detail.md +0 -302
  44. package/.agents/skills/seed/recipes/settings.md +0 -252
  45. package/.agents/skills/seed/references/blocks.md +0 -128
  46. package/.agents/skills/seed/references/components.md +0 -287
  47. package/.agents/skills/seed/references/icons.md +0 -169
  48. package/.agents/skills/seed/references/nextjs.md +0 -49
  49. package/.agents/skills/seed/references/tokens.md +0 -88
@@ -1,276 +0,0 @@
1
- # Recipe: Company About
2
-
3
- About, manifesto, or team page showcasing company mission, values, team, and partnerships.
4
-
5
- ## Route Pattern
6
-
7
- `/about`, `/manifesto`, or `/chi-siamo`
8
-
9
- ## Shell
10
-
11
- `marketing-shell` (HeaderBlock + FooterBlock)
12
-
13
- ---
14
-
15
- ## Layout Blueprint (Desktop)
16
-
17
- ```
18
- +------------------------------------------------+
19
- | HeaderBlock: Logo [Nav links] [CTA Button] |
20
- +------------------------------------------------+
21
- | |
22
- | MISSION HERO |
23
- | Company mission statement |
24
- | Subtitle: founding story or tagline |
25
- | |
26
- +------------------------------------------------+
27
- | |
28
- | VALUES GRID (3-col) |
29
- | +----------+ +----------+ +----------+ |
30
- | | Value 1 | | Value 2 | | Value 3 | |
31
- | +----------+ +----------+ +----------+ |
32
- | +----------+ +----------+ +----------+ |
33
- | | Value 4 | | Value 5 | | Value 6 | |
34
- | +----------+ +----------+ +----------+ |
35
- | |
36
- +------------------------------------------------+
37
- | |
38
- | TEAM SECTION |
39
- | +--------+ +--------+ +--------+ +--------+ |
40
- | | Member | | Member | | Member | | Member | |
41
- | +--------+ +--------+ +--------+ +--------+ |
42
- | |
43
- +------------------------------------------------+
44
- | COMPANY STATS |
45
- | +------+ +------+ +------+ +------+ |
46
- | | Year | | Team | | Clients| | Projects |
47
- | | 2020 | | 25 | | 100+ | | 500+ | |
48
- | +------+ +------+ +------+ +------+ |
49
- +------------------------------------------------+
50
- | PARTNERS / LOGO CLOUD |
51
- | Partner and technology logos |
52
- +------------------------------------------------+
53
- | FINAL CTA SECTION |
54
- | "Join our mission" + [CTA Button] |
55
- +------------------------------------------------+
56
- | FooterBlock: columns + social + legal |
57
- +------------------------------------------------+
58
- ```
59
-
60
- ---
61
-
62
- ## Section Sequence
63
-
64
- ### 1. Header
65
-
66
- ```tsx
67
- <HeaderBlock logo={<Logo />} links={navLinks} actions={<Button>Contact Us</Button>} />
68
- ```
69
-
70
- ### 2. Mission Hero
71
-
72
- ```tsx
73
- <section className="relative py-24 md:py-32 overflow-hidden">
74
- <ShaderBackground shader="meshGradient" intent="hero" opacity={0.15} />
75
- <div className="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
76
- <motion.div variants={heroStagger.container} initial="hidden" animate="visible">
77
- <motion.div variants={heroStagger.child}>
78
- <Badge variant="outline" className="mb-4">Our Story</Badge>
79
- </motion.div>
80
- <motion.h1 variants={heroStagger.child} className="text-4xl md:text-6xl font-bold tracking-tight">
81
- {missionStatement}
82
- </motion.h1>
83
- <motion.p variants={heroStagger.child} className="mt-6 text-lg md:text-xl text-text-secondary max-w-3xl mx-auto">
84
- {foundingStory}
85
- </motion.p>
86
- </motion.div>
87
- </div>
88
- </section>
89
- ```
90
-
91
- ### 3. Values Grid
92
-
93
- ```tsx
94
- <ScrollFadeIn>
95
- <section className="py-16 md:py-24">
96
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
97
- <div className="text-center mb-12">
98
- <Heading level={2} size="section" >Our Values</Heading>
99
- <Typography variant="lead" className="mt-4 text-text-secondary">
100
- The principles that guide everything we do
101
- </Typography>
102
- </div>
103
- <FeatureGridBlock features={values} columns={3} />
104
- </div>
105
- </section>
106
- </ScrollFadeIn>
107
- ```
108
-
109
- ### 4. Team Section
110
-
111
- ```tsx
112
- <ScrollFadeIn>
113
- <section className="py-16 md:py-24 bg-muted">
114
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
115
- <div className="text-center mb-12">
116
- <Heading level={2} size="section" >Meet the Team</Heading>
117
- <Typography variant="lead" className="mt-4 text-text-secondary">
118
- The people behind the mission
119
- </Typography>
120
- </div>
121
- <TeamBlock members={teamMembers} />
122
- </div>
123
- </section>
124
- </ScrollFadeIn>
125
- ```
126
-
127
- ### 5. Company Stats
128
-
129
- ```tsx
130
- <ScrollFadeIn>
131
- <section className="py-16 md:py-24">
132
- <StatsMarketingBlock stats={companyStats} />
133
- </section>
134
- </ScrollFadeIn>
135
- ```
136
-
137
- ### 6. Partners / Logo Cloud
138
-
139
- ```tsx
140
- <ScrollFadeIn>
141
- <section className="py-12 md:py-16 bg-muted">
142
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
143
- <Typography variant="small" className="text-center text-text-tertiary mb-6">
144
- Our partners and technology stack
145
- </Typography>
146
- <LogoCloud logos={partnerLogos} />
147
- </div>
148
- </section>
149
- </ScrollFadeIn>
150
- ```
151
-
152
- ### 7. Final CTA
153
-
154
- ```tsx
155
- <ScrollFadeIn>
156
- <section className="py-16 md:py-24">
157
- <CallToActionBlock
158
- title="Join our mission"
159
- description="We're always looking for talented people who share our values."
160
- action={<Button size="lg">Get in Touch</Button>}
161
- />
162
- </section>
163
- </ScrollFadeIn>
164
- ```
165
-
166
- ### 8. Footer
167
-
168
- ```tsx
169
- <FooterBlock columns={footerColumns} social={socialLinks} legal={legalLinks} />
170
- ```
171
-
172
- ---
173
-
174
- ## Animation Storyboard
175
-
176
- ```
177
- ANIMATION STORYBOARD
178
- ====================
179
- BUDGET: 800ms (above-fold) | SPRING: dramatic (hero), snappy (rest) | REDUCED: opacity-only
180
-
181
- T+0ms [nav] Header visible (instant)
182
- T+100ms [badge] Story badge {fadeIn, snappy}
183
- T+200ms [headline] Mission statement {fadeInUp, dramatic}
184
- T+400ms [subtitle] Founding story {fadeInUp, dramatic}
185
- T+600ms [shader] Hero shader appears {fadeIn, gentle}
186
-
187
- SCROLL-TRIGGERED (below fold):
188
- [values] ScrollFadeIn at 20% visible {fadeInUp, snappy, stagger 100ms}
189
- [team] ScrollFadeIn at 20% visible {fadeInUp, snappy, stagger 80ms}
190
- [stats] ScrollFadeIn at 20% visible {fadeInUp, snappy}
191
- [partners] ScrollFadeIn at 20% visible {fadeIn, gentle}
192
- [cta] ScrollFadeIn at 20% visible {scaleIn, gentle}
193
-
194
- REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
195
- ```
196
-
197
- ---
198
-
199
- ## Required Components
200
-
201
- | Component | Import Path | Purpose |
202
- |-----------|-------------|---------|
203
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
204
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
205
- | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs |
206
- | `Badge` | `@vadimcomanescu/nadicode-design-system/badge` | Hero tag |
207
- | `Typography` | `@vadimcomanescu/nadicode-design-system/typography` | Headings, body text |
208
- | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
209
- | `TeamBlock` | `@vadimcomanescu/nadicode-design-system/team-block` | Team member grid |
210
-
211
- ### Allowed (optional)
212
-
213
- `FeatureBlock`, `FeatureGridBlock`, `StatsMarketingBlock`, `LogoCloud`, `CallToActionBlock`, `HeroBlock`, `HeroSectionBlock`, `Card`, `ShaderBackground`, `TestimonialsBlock`
214
-
215
- ### Forbidden
216
-
217
- `Sidebar`, `DataTable`, `Form`, `FormWizard`, `AgentTeamPanel`, `PricingBlock`, `SettingsLayout`, `ChatLayout`
218
-
219
- ---
220
-
221
- ## Required States
222
-
223
- | State | Trigger | Visual |
224
- |-------|---------|--------|
225
- | `default` | Page loaded | Full about page content |
226
- | `mobile-navigation` | Hamburger tap | Mobile nav drawer/sheet |
227
-
228
- ---
229
-
230
- ## Responsive Contract
231
-
232
- | Breakpoint | Hero | Values | Team | Stats | Content Width |
233
- |------------|------|--------|------|-------|---------------|
234
- | Mobile | Stacked, text-center | 1 col | 1 col | 2 col | px-4 |
235
- | `sm:` | Stacked, text-center | 2 col | 2 col | 2 col | px-6, max-w-7xl |
236
- | `lg:` | Centered | 3 col | 4 col | 4 col | px-8, max-w-7xl |
237
-
238
- ---
239
-
240
- ## Styling Rules
241
-
242
- - Mission hero uses `ShaderBackground` with low opacity for subtle ambient
243
- - Value cards use `glass-panel` with icon + heading + description
244
- - Team cards use circular avatar, name, role, and social links
245
- - Section backgrounds alternate: `bg-background` and `bg-muted`
246
- - Partner logos are grayscale with hover color reveal
247
- - No raw palette colors; semantic tokens only
248
-
249
- ---
250
-
251
- ## Accessibility
252
-
253
- - Hero heading is `<h1>`, section headings are `<h2>`
254
- - Skip-nav link to main content
255
- - Team member images have alt text with name and role
256
- - Social links have aria-labels
257
- - Mobile nav is keyboard accessible with focus trap
258
-
259
- ---
260
-
261
- ## Reference Implementations
262
-
263
- - `src/components/blocks/TeamBlock.tsx`
264
- - `src/components/blocks/FeatureGridBlock.tsx`
265
- - `src/components/blocks/StatsMarketingBlock.tsx`
266
-
267
- ---
268
-
269
- ## Verification
270
-
271
- ```bash
272
- npx tsc --noEmit
273
- npm run lint
274
- npm run test
275
- npx vitest run src/test/css-variable-usage.test.ts
276
- ```
@@ -1,234 +0,0 @@
1
- # Recipe: Company Contact
2
-
3
- Contact page with form, company information, and FAQ.
4
-
5
- ## Route Pattern
6
-
7
- `/contact` or `/contatti`
8
-
9
- ## Shell
10
-
11
- `marketing-shell` (HeaderBlock + FooterBlock)
12
-
13
- ---
14
-
15
- ## Layout Blueprint (Desktop)
16
-
17
- ```
18
- +------------------------------------------------+
19
- | HeaderBlock: Logo [Nav links] [CTA Button] |
20
- +------------------------------------------------+
21
- | |
22
- | HEADING |
23
- | "Get in Touch" |
24
- | Subtitle |
25
- | |
26
- +------------------------------------------------+
27
- | |
28
- | CONTACT BLOCK (2-col) |
29
- | +-------------------+ +------------------+ |
30
- | | Contact form | | Company info | |
31
- | | Name, Email, | | Address, phone, | |
32
- | | Subject, Message | | email, map | |
33
- | | [Submit] | | | |
34
- | +-------------------+ +------------------+ |
35
- | |
36
- +------------------------------------------------+
37
- | |
38
- | INFO CARDS (3-col) |
39
- | +----------+ +----------+ +----------+ |
40
- | | Email | | Phone | | Office | |
41
- | +----------+ +----------+ +----------+ |
42
- | |
43
- +------------------------------------------------+
44
- | |
45
- | FAQ (Accordion) |
46
- | |
47
- +------------------------------------------------+
48
- | FooterBlock: columns + social + legal |
49
- +------------------------------------------------+
50
- ```
51
-
52
- ---
53
-
54
- ## Section Sequence
55
-
56
- ### 1. Header
57
-
58
- ```tsx
59
- <HeaderBlock logo={<Logo />} links={navLinks} actions={<Button>Book a Call</Button>} />
60
- ```
61
-
62
- ### 2. Heading
63
-
64
- ```tsx
65
- <section className="py-16 md:py-24">
66
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
67
- <motion.div variants={heroStagger.container} initial="hidden" animate="visible">
68
- <motion.h1 variants={heroStagger.child} className="text-4xl md:text-5xl font-bold tracking-tight">
69
- Get in Touch
70
- </motion.h1>
71
- <motion.p variants={heroStagger.child} className="mt-4 text-lg text-text-secondary max-w-xl mx-auto">
72
- Have a question or want to work together? We'd love to hear from you.
73
- </motion.p>
74
- </motion.div>
75
- </div>
76
- </section>
77
- ```
78
-
79
- ### 3. Contact Block
80
-
81
- ```tsx
82
- <ScrollFadeIn>
83
- <section className="pb-16 md:pb-24">
84
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
85
- <ContactBlock
86
- fields={contactFields}
87
- companyInfo={companyInfo}
88
- onSubmit={handleSubmit}
89
- />
90
- </div>
91
- </section>
92
- </ScrollFadeIn>
93
- ```
94
-
95
- ### 4. Info Cards
96
-
97
- ```tsx
98
- <ScrollFadeIn>
99
- <section className="py-16 md:py-24 bg-muted">
100
- <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
101
- <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
102
- {contactChannels.map(channel => (
103
- <Card key={channel.id} className="glass-panel p-6 text-center">
104
- <channel.icon className="mx-auto mb-4 h-8 w-8 text-accent" />
105
- <Heading level={4} size="title" >{channel.label}</Heading>
106
- <Typography variant="body" className="mt-2 text-text-secondary">
107
- {channel.value}
108
- </Typography>
109
- </Card>
110
- ))}
111
- </div>
112
- </div>
113
- </section>
114
- </ScrollFadeIn>
115
- ```
116
-
117
- ### 5. FAQ
118
-
119
- ```tsx
120
- <ScrollFadeIn>
121
- <section className="py-16 md:py-24">
122
- <FAQBlock items={contactFaqItems} />
123
- </section>
124
- </ScrollFadeIn>
125
- ```
126
-
127
- ### 6. Footer
128
-
129
- ```tsx
130
- <FooterBlock columns={footerColumns} social={socialLinks} legal={legalLinks} />
131
- ```
132
-
133
- ---
134
-
135
- ## Animation Storyboard
136
-
137
- ```
138
- ANIMATION STORYBOARD
139
- ====================
140
- BUDGET: 600ms (above-fold) | SPRING: dramatic (heading), snappy (rest) | REDUCED: opacity-only
141
-
142
- T+0ms [nav] Header visible (instant)
143
- T+100ms [headline] Page heading {fadeInUp, dramatic}
144
- T+250ms [subtitle] Subtitle {fadeInUp, dramatic}
145
-
146
- SCROLL-TRIGGERED (below fold):
147
- [contact] ScrollFadeIn at 20% visible {fadeInUp, snappy}
148
- [info-cards] ScrollFadeIn at 20% visible {fadeInUp, snappy, stagger 100ms}
149
- [faq] ScrollFadeIn at 20% visible {fadeInUp, snappy}
150
-
151
- REDUCED MOTION: All items visible immediately, opacity 0->1 in 10ms
152
- ```
153
-
154
- ---
155
-
156
- ## Required Components
157
-
158
- | Component | Import Path | Purpose |
159
- |-----------|-------------|---------|
160
- | `HeaderBlock` | `@vadimcomanescu/nadicode-design-system/header-block` | Site navigation |
161
- | `FooterBlock` | `@vadimcomanescu/nadicode-design-system/footer-block` | Site footer |
162
- | `Button` | `@vadimcomanescu/nadicode-design-system/button` | CTAs and form submit |
163
- | `ScrollFadeIn` | `@vadimcomanescu/nadicode-design-system/scroll-fade-in` | Below-fold animations |
164
- | `ContactBlock` | `@vadimcomanescu/nadicode-design-system/contact-block` | Contact form + company info |
165
-
166
- ### Allowed (optional)
167
-
168
- `FAQBlock`, `Card`, `FeatureGridBlock`, `Badge`, `HeroBlock`, `HeroSectionBlock`, `CallToActionBlock`, `Typography`
169
-
170
- ### Forbidden
171
-
172
- `Sidebar`, `DataTable`, `FormWizard`, `AgentTeamPanel`, `PricingBlock`, `SettingsLayout`, `ChatLayout`
173
-
174
- ---
175
-
176
- ## Required States
177
-
178
- | State | Trigger | Visual |
179
- |-------|---------|--------|
180
- | `default` | Page loaded | Form ready for input |
181
- | `form-submitting` | Form submit | Button shows loading spinner, fields disabled |
182
- | `form-success` | Submission succeeds | Success toast/message, form resets |
183
- | `form-error` | Submission fails | Error toast/message, form retains values |
184
-
185
- ---
186
-
187
- ## Responsive Contract
188
-
189
- | Breakpoint | Heading | Contact Block | Info Cards | Content Width |
190
- |------------|---------|---------------|------------|---------------|
191
- | Mobile | text-center | Stacked (form above info) | 1 col | px-4 |
192
- | `sm:` | text-center | Stacked (form above info) | 2 col | px-6, max-w-7xl |
193
- | `lg:` | text-center | Side-by-side (form left, info right) | 3 col | px-8, max-w-7xl |
194
-
195
- ---
196
-
197
- ## Styling Rules
198
-
199
- - Contact form container uses `glass-panel` for visual depth
200
- - Info cards use `glass-panel` with centered icon layout
201
- - Section backgrounds alternate: `bg-background` and `bg-muted`
202
- - Form inputs use standard Seed Input/Textarea components
203
- - Submit button uses `Button` with loading state
204
- - No raw palette colors; semantic tokens only
205
-
206
- ---
207
-
208
- ## Accessibility
209
-
210
- - Page heading is `<h1>`, section headings are `<h2>`
211
- - Form fields have visible stacked labels (no floating labels)
212
- - Required fields marked with `aria-required="true"`
213
- - Form errors announced via `aria-live="polite"` region
214
- - Submit button disabled during submission with `aria-disabled`
215
- - Skip-nav link to main content
216
- - Mobile nav is keyboard accessible with focus trap
217
-
218
- ---
219
-
220
- ## Reference Implementations
221
-
222
- - `src/components/blocks/ContactBlock.tsx`
223
- - `src/components/blocks/FAQBlock.tsx`
224
-
225
- ---
226
-
227
- ## Verification
228
-
229
- ```bash
230
- npx tsc --noEmit
231
- npm run lint
232
- npm run test
233
- npx vitest run src/test/css-variable-usage.test.ts
234
- ```