@symbo.ls/mcp 1.0.10 → 1.0.13

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 (46) hide show
  1. package/README.md +1 -0
  2. package/package.json +5 -2
  3. package/symbols_mcp/skills/AUDIT.md +148 -174
  4. package/symbols_mcp/skills/BRAND_IDENTITY.md +75 -0
  5. package/symbols_mcp/skills/COMPONENTS.md +266 -0
  6. package/symbols_mcp/skills/COOKBOOK.md +850 -0
  7. package/symbols_mcp/skills/DEFAULT_COMPONENTS.md +3491 -1637
  8. package/symbols_mcp/skills/DEFAULT_LIBRARY.md +301 -0
  9. package/symbols_mcp/skills/DESIGN_CRITIQUE.md +70 -59
  10. package/symbols_mcp/skills/DESIGN_DIRECTION.md +109 -175
  11. package/symbols_mcp/skills/DESIGN_SYSTEM.md +722 -0
  12. package/symbols_mcp/skills/DESIGN_SYSTEM_ARCHITECT.md +65 -57
  13. package/symbols_mcp/skills/DESIGN_TO_CODE.md +83 -64
  14. package/symbols_mcp/skills/DESIGN_TREND.md +62 -50
  15. package/symbols_mcp/skills/FIGMA_MATCHING.md +69 -58
  16. package/symbols_mcp/skills/LEARNINGS.md +374 -0
  17. package/symbols_mcp/skills/MARKETING_ASSETS.md +71 -59
  18. package/symbols_mcp/skills/MIGRATION.md +561 -0
  19. package/symbols_mcp/skills/PATTERNS.md +536 -0
  20. package/symbols_mcp/skills/PRESENTATION.md +78 -0
  21. package/symbols_mcp/skills/PROJECT_STRUCTURE.md +398 -0
  22. package/symbols_mcp/skills/RULES.md +519 -0
  23. package/symbols_mcp/skills/RUNNING_APPS.md +476 -0
  24. package/symbols_mcp/skills/SEO-METADATA.md +64 -9
  25. package/symbols_mcp/skills/SNIPPETS.md +598 -0
  26. package/symbols_mcp/skills/SSR-BRENDER.md +99 -0
  27. package/symbols_mcp/skills/SYNTAX.md +835 -0
  28. package/symbols_mcp/skills/ACCESSIBILITY.md +0 -471
  29. package/symbols_mcp/skills/ACCESSIBILITY_AUDITORY.md +0 -70
  30. package/symbols_mcp/skills/AGENT_INSTRUCTIONS.md +0 -265
  31. package/symbols_mcp/skills/BRAND_INDENTITY.md +0 -69
  32. package/symbols_mcp/skills/BUILT_IN_COMPONENTS.md +0 -304
  33. package/symbols_mcp/skills/CLAUDE.md +0 -2158
  34. package/symbols_mcp/skills/CLI_QUICK_START.md +0 -205
  35. package/symbols_mcp/skills/DEFAULT_DESIGN_SYSTEM.md +0 -496
  36. package/symbols_mcp/skills/DESIGN_SYSTEM_CONFIG.md +0 -487
  37. package/symbols_mcp/skills/DESIGN_SYSTEM_IN_PROPS.md +0 -136
  38. package/symbols_mcp/skills/DOMQL_v2-v3_MIGRATION.md +0 -236
  39. package/symbols_mcp/skills/MIGRATE_TO_SYMBOLS.md +0 -634
  40. package/symbols_mcp/skills/OPTIMIZATIONS_FOR_AGENT.md +0 -253
  41. package/symbols_mcp/skills/PROJECT_SETUP.md +0 -217
  42. package/symbols_mcp/skills/QUICKSTART.md +0 -79
  43. package/symbols_mcp/skills/REMOTE_PREVIEW.md +0 -144
  44. package/symbols_mcp/skills/SYMBOLS_LOCAL_INSTRUCTIONS.md +0 -1405
  45. package/symbols_mcp/skills/THE_PRESENTATION.md +0 -69
  46. package/symbols_mcp/skills/UI_UX_PATTERNS.md +0 -68
@@ -0,0 +1,266 @@
1
+ # Component API Reference
2
+
3
+ Use flattened props (no `props` wrapper). CSS props go at the top level. Events use `onX` syntax.
4
+
5
+ ---
6
+
7
+ ## Built-in Atoms
8
+
9
+ | Atom | HTML Tag | Props | Example |
10
+ |------|----------|-------|---------|
11
+ | `Text` | `<span>` | `text`, `color`, `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`, `textTransform`, `textDecoration`, `textAlign`, `maxWidth`, `overflow`, `whiteSpace` | `Text: { text: 'Hello', fontSize: 'B', color: 'title' }` |
12
+ | `Box` | `<div>` | `padding`, `margin`, `border`, `borderRadius`, `background`, `shadow`, `width`, `height`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight`, `position`, `inset`, `top`, `right`, `bottom`, `left`, `overflow`, `zIndex` | `Box: { padding: 'A B', background: 'surface', borderRadius: 'B' }` |
13
+ | `Flex` | `<div>` | `flow`/`flexFlow`, `align`, `alignItems`, `justifyContent`, `gap`, `flex`, `flexGrow`, `flexShrink`, `flexBasis`, `wrap` | `Flex: { flow: 'y', align: 'center space-between', gap: 'B' }` |
14
+ | `Grid` | `<div>` | `columns`/`gridTemplateColumns`, `rows`/`gridTemplateRows`, `gap`, `columnGap`, `rowGap`, `gridAutoFlow`, `gridAutoColumns`, `gridAutoRows` | `Grid: { columns: 'repeat(3, 1fr)', gap: 'A' }` |
15
+ | `Link` | `<a>` | `href`, `target`, `rel`, `text`, `color`, `textDecoration`, `onClick` | `Link: { text: 'Docs', href: '/docs' }` |
16
+ | `Input` | `<input>` | `type`, `name`, `value`, `placeholder`, `required`, `disabled`, `onInput`, `onChange`, `onKeydown`, `padding`, `background`, `border`, `round` | `Input: { type: 'text', name: 'title', placeholder: 'Enter title' }` |
17
+ | `Radio` | `<input>` | `name`, `value`, `checked`, `disabled`, `onChange` | `Radio: { name: 'opt', value: 'a' }` |
18
+ | `Checkbox` | `<input>` | `name`, `value`, `checked`, `disabled`, `onChange` | `Checkbox: { name: 'agree', checked: true }` |
19
+ | `Svg` | `<svg>` | `html` (inline SVG markup), `width`, `height`, `viewBox`, `fill`, `stroke`. For non-icon SVGs only (decorative/structural). Use `Icon` for icons. | `Svg: { html: '<path d="..." />', viewBox: '0 0 24 24', width: '22', height: '22' }` |
20
+ | `Icon` | `<svg>` | `name` (sprite symbol id), `size`/`boxSize`, `color` | `Icon: { name: 'chevronRight', boxSize: 'A' }` |
21
+ | `IconText` | `<div>` | `icon`, `text`, `gap`, `align`, `color` | `IconText: { icon: 'search', text: 'Search', gap: 'Z' }` |
22
+ | `Button` | `<button>` | `text`, `icon`, `type`, `disabled`, `theme`, `padding`, `round`, `onClick`, `onSubmit` | `Button: { text: 'Save', theme: 'primary', type: 'submit' }` |
23
+ | `Img` | `<img>` | `src`, `alt`, `loading`, `width`, `height`, `boxSize`, `objectFit` | `Img: { src: '/logo.png', alt: 'Logo', boxSize: 'B' }` |
24
+ | `Iframe` | `<iframe>` | `src`, `width`, `height` | `Iframe: { src: 'https://example.com', width: '100%', height: '300px' }` |
25
+ | `Video` | `<video>` | `src`, `controls`, `width`, `height` | `Video: { src: '/demo.mp4', controls: true, width: '100%' }` |
26
+
27
+ ### Img — file resolution
28
+
29
+ If `src` is not a valid URL, it resolves via `context.files[filename]`. Paths starting with `/files/` have the prefix stripped automatically (`/files/logo.png` looks up `"logo.png"` in context.files).
30
+
31
+ ### Svg rule
32
+
33
+ Use `Icon` (not `Svg`) for icons. `Icon: { name: 'iconName' }` references `designSystem.icons`. Use `Svg` only for decorative/structural SVGs that are not icons.
34
+
35
+ ### Picture
36
+
37
+ **CRITICAL**: `<picture>` does NOT support `src`. Never put `src` on Picture — it is silently ignored. Always put `src` on the `Img` child.
38
+
39
+ The Picture `Img` child can also read `src` from `element.parent.props.src` or `state.src`.
40
+
41
+ ```js
42
+ // Basic
43
+ Picture: {
44
+ Img: { src: '/files/photo.jpg' },
45
+ width: '100%',
46
+ aspectRatio: '16/9'
47
+ }
48
+
49
+ // Theme-aware sources
50
+ Picture: {
51
+ extends: 'Picture',
52
+ Img: { src: '/files/map-dark.svg' },
53
+ '@dark': { srcset: '/files/map-dark.svg' },
54
+ '@light': { srcset: '/files/map-light.svg' }
55
+ }
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Cross-cutting Props (all atoms)
61
+
62
+ All atoms support these additional features:
63
+
64
+ | Feature | Syntax |
65
+ |---------|--------|
66
+ | Media queries | `@mobile`, `@tablet`, `@tabletSm`, `@dark`, `@light` |
67
+ | Pseudo selectors | `:hover`, `:active`, `:focus-visible` |
68
+ | Conditional cases | `.isActive`, `.disabled`, `.hidden`, `!isActive` |
69
+ | Child overrides | `childProps` — one-level child overrides |
70
+ | Children | `children` — arrays or nested object trees |
71
+ | Lifecycle events | `onInit`, `onRender`, `onUpdate`, `onStateUpdate` |
72
+
73
+ ---
74
+
75
+ ## Typography
76
+
77
+ All accept a `text` prop.
78
+
79
+ | Component | Tag | Use |
80
+ |-----------|-----|-----|
81
+ | `H1`–`H6` | `<h1>`–`<h6>` | Semantic section headings |
82
+ | `P` | `<p>` | Body paragraph text |
83
+ | `Caption` | `<span>` | Small labels, hints |
84
+ | `Headline` | `<span>` | Display-size heading |
85
+ | `Subhead` | `<span>` | Sub-section text |
86
+ | `Footnote` | `<span>` | Footer reference text |
87
+ | `Strong` | `<strong>` | Bold inline emphasis |
88
+ | `Italic` | `<em>` | Italic inline emphasis |
89
+ | `U` | `<u>` | Underline inline emphasis |
90
+
91
+ ```js
92
+ H2: { text: 'Section title' }
93
+ P: { text: 'Body copy goes here.' }
94
+ Caption: { text: 'Updated 3 days ago', color: 'caption' }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Dividers
100
+
101
+ | Component | Use | Example |
102
+ |-----------|-----|---------|
103
+ | `Hr` | Horizontal rule | `Hr: { minWidth: 'F' }` |
104
+ | `HrLegend` | Divider with centered label | `HrLegend: { text: 'Or' }` |
105
+
106
+ ---
107
+
108
+ ## Buttons
109
+
110
+ | Component | Use | Example |
111
+ |-----------|-----|---------|
112
+ | `IconButton` | Icon-only circular button | `IconButton: { Icon: { name: 'plus' }, theme: 'dialog' }` |
113
+ | `IconButtonSet` | Group of icon buttons | — |
114
+ | `CounterButton` | Button with notification badge | — |
115
+ | `CounterIconButton` | Icon button with positioned badge | — |
116
+ | `IconCounterButton` | Button with icon, label, and counter | — |
117
+ | `UploadButton` | Text button that opens file picker | — |
118
+ | `UploadIconButton` | Icon button that opens file picker | — |
119
+ | `SubmitButton` | Form submit button | `SubmitButton: { value: 'Create account' }` |
120
+ | `ButtonSet` | Group of buttons | `ButtonSet: { children: [{ text: 'Cancel' }, { text: 'Save', theme: 'primary' }] }` |
121
+ | `ConfirmationButtons` | Yes/No pair | `ConfirmationButtons: { children: [{ text: 'Cancel' }, { text: 'Delete', theme: 'warning' }] }` |
122
+ | `InputButton` | Input with inline submit button | `InputButton: { Input: { placeholder: 'Enter email' }, Button: { text: 'Sign up' } }` |
123
+
124
+ ---
125
+
126
+ ## Avatar
127
+
128
+ | Component | Use | Example |
129
+ |-----------|-----|---------|
130
+ | `Avatar` | Single avatar image | `Avatar: { boxSize: 'C2' }` |
131
+ | `AvatarSet` | Overlapping group of avatars | — |
132
+ | `AvatarStatus` | Avatar with online/offline dot | `AvatarStatus: { Avatar: { boxSize: 'C' }, StatusDot: { theme: 'success' } }` |
133
+ | `AvatarHgroup` | Avatar + name + subtitle | `AvatarHgroup: { H: { text: 'Nika Tomadze' }, P: { text: 'Product Designer' } }` |
134
+ | `AvatarBadgeHgroup` | Avatar + heading + badge | — |
135
+ | `AvatarChatPreview` | Avatar + message preview row | `AvatarChatPreview: { H: { text: 'Design Team' }, P: { text: 'Can you join us today?' }, Value: { text: '2:20' } }` |
136
+
137
+ ---
138
+
139
+ ## Badge & Notification
140
+
141
+ Themes: `primary`, `warning`, `success`, `transparent`, `bordered`, `dialog`, `field`
142
+
143
+ | Component | Use | Example |
144
+ |-----------|-----|---------|
145
+ | `Badge` | Colored label (status, category) | `Badge: { text: 'New', theme: 'primary' }` |
146
+ | `BadgeCaption` | Caption paired with badge | `BadgeCaption: { Caption: { text: 'Status' }, Badge: { text: 'Active', theme: 'success' } }` |
147
+ | `NotificationCounter` | Circular number badge | `NotificationCounter: { text: '5' }` |
148
+
149
+ ---
150
+
151
+ ## Form & Input
152
+
153
+ | Component | Use | Example |
154
+ |-----------|-----|---------|
155
+ | `Field` | Styled input, optionally with trailing icon | `Field: { Input: { placeholder: 'Enter name' }, Icon: { icon: 'user' } }` |
156
+ | `FieldCaption` | Field with label above | `FieldCaption: { Caption: { text: 'Email' }, Field: { Input: { placeholder: 'you@example.com' } } }` |
157
+ | `IconInput` | Input with overlaid icon | — |
158
+ | `Select` | Native select | — |
159
+ | `SelectPicker` | Styled select with chevron | `SelectPicker: { Select: { children: [{ text: 'A', value: 'a' }, { text: 'B', value: 'b' }] } }` |
160
+ | `NumberPicker` | Increment/decrement control | — |
161
+ | `Search` | Search input with icon | `Search: { Input: { placeholder: 'Search…' } }` |
162
+ | `SearchDropdown` | Filterable dropdown with search | `SearchDropdown: { state: { data: ['New York', 'Los Angeles'] } }` |
163
+ | `TextareaIconButton` | Textarea with send button | `TextareaIconButton: { Textarea: { placeholder: 'Write a message…' } }` |
164
+
165
+ ---
166
+
167
+ ## Composition
168
+
169
+ Pair a primary element (heading, icon, image) with text content or controls.
170
+
171
+ | Component | Use | Example |
172
+ |-----------|-----|---------|
173
+ | `ButtonHgroup` | Heading group + button | `ButtonHgroup: { H: { text: 'Upgrade plan' }, P: { text: 'Get all features' }, Button: { text: 'Upgrade' } }` |
174
+ | `IconHeading` | Icon + heading | — |
175
+ | `IconHgroup` | Large icon + heading group | — |
176
+ | `ImgHgroup` | Image + heading group | `ImgHgroup: { Img: { src: '/icon.png', boxSize: 'C' }, H: { text: 'Product' }, P: { text: 'Tagline' } }` |
177
+ | `SectionHeader` | Section header with icon buttons | `SectionHeader: { Hgroup: { H: { text: 'Activity' } }, IconButtonSet: { children: [{ Icon: { name: 'filter' } }] } }` |
178
+ | `ValueHeading` | Heading with trailing value/unit | `ValueHeading: { H: { tag: 'h6', text: 'Revenue' }, UnitValue: { Unit: { text: '$' }, Value: { text: '1,200' } } }` |
179
+ | `IconTextSet` | List of icon + text pairs | — |
180
+
181
+ ---
182
+
183
+ ## Selection
184
+
185
+ Three flavors: **Check**, **Radio**, **Toggle** — each in caption, hgroup, and list variants.
186
+
187
+ | Component | Use | Example |
188
+ |-----------|-----|---------|
189
+ | `CheckCaption` | Checkbox + short label | `CheckCaption: { Caption: { text: 'Accept terms' } }` |
190
+ | `CheckHgroup` | Checkbox + title + description | — |
191
+ | `CheckCaptionList` | Stacked list of CheckCaption | — |
192
+ | `RadioCaption` | Radio + short label | — |
193
+ | `RadioHgroup` | Radio + title + description | — |
194
+ | `ToggleCaption` | Toggle switch + short label | — |
195
+ | `ToggleHgroup` | Toggle switch + title + desc | `ToggleHgroup: { H: { text: 'Email alerts' }, P: { text: 'Sent daily' } }` |
196
+ | `CheckStep` | Step with completion state | `CheckStep: { H6: { text: 'Verify email' }, Progress: { value: 1 } }` |
197
+ | `RadioStep` | Step with completion state | — |
198
+
199
+ ```js
200
+ // ToggleHgroupList example
201
+ ToggleHgroupList: {
202
+ children: [
203
+ { H: { text: 'Email alerts' }, P: { text: 'Sent daily' } },
204
+ { H: { text: 'Push notifications' }, P: { text: 'Instant' } }
205
+ ]
206
+ }
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Progress & Status
212
+
213
+ | Component | Use | Example |
214
+ |-----------|-----|---------|
215
+ | `Progress` | Linear progress bar (value 0–1) | `Progress: { value: 0.6, height: 'X', round: 'Y' }` |
216
+ | `CircleProgress` | Circular progress ring | `CircleProgress: { value: 0.73, boxSize: 'D' }` |
217
+ | `ValueProgress` | Progress bar + readable label | `ValueProgress: { Progress: { value: 0.73 }, UnitValue: { Value: { text: '73' }, Unit: { text: '%' } } }` |
218
+ | `ProgressStepSet` | Row of progress bars for steps | — |
219
+ | `StatusDot` | Small colored indicator dot | `StatusDot: { theme: 'success' }` |
220
+ | `Stars` | 5-star rating display | — |
221
+
222
+ ---
223
+
224
+ ## Navigation & Links
225
+
226
+ | Component | Use | Example |
227
+ |-----------|-----|---------|
228
+ | `Link` | Hyperlink | `Link: { text: 'Docs', href: '/docs' }` |
229
+ | `LinkSet` | Navigation list of links | `LinkSet: { tag: 'nav', children: [{ text: 'Home', href: '/' }, { text: 'Docs', href: '/docs' }] }` |
230
+ | `Breadcrumb` | Breadcrumb path navigation | `Breadcrumb: { tag: 'nav' }` |
231
+ | `TabSet` | Horizontal tab bar | `TabSet: { children: [{ text: 'Overview', isActive: true }, { text: 'Details' }] }` |
232
+ | `Pagination` | Numbered page controls | `Pagination: { Flex: { children: [{ text: '1', isActive: true }, { text: '2' }, { text: '3' }] } }` |
233
+ | `NavigationDots` | Dot indicators for carousels | — |
234
+ | `NavigationArrows` | Previous/next arrow buttons | — |
235
+ | `ScrollableList` | Vertically scrollable menu list | — |
236
+
237
+ ---
238
+
239
+ ## Overlay & Disclosure
240
+
241
+ | Component | Use | Example |
242
+ |-----------|-----|---------|
243
+ | `Modal` | Dialog overlay container | `Modal: { Hgroup: { H: { text: 'Confirm action' } }, IconButton: { Icon: { name: 'x' } } }` |
244
+ | `MessageModal` | Informational modal | — |
245
+ | `Accordion` | Expandable/collapsible section | `Accordion: { ButtonParagraph: { P: { text: 'How does billing work?' } }, P: { text: 'You are billed monthly…' } }` |
246
+
247
+ ---
248
+
249
+ ## Data Display
250
+
251
+ | Component | Use | Example |
252
+ |-----------|-----|---------|
253
+ | `UnitValue` | Unit + value pair (price, stat) | `UnitValue: { Unit: { text: '$' }, Value: { text: '99' } }` |
254
+ | `BulletCaption` | Caption with colored bullet dot | `BulletCaption: { text: 'Orders', ':before': { background: 'blue' } }` |
255
+ | `StoryCard` | Full-bleed image card with overlay | — |
256
+ | `ListingItem` | Post/listing row item | — |
257
+ | `UserNavbar` | User profile row in navbar | `UserNavbar: { H: { text: 'Nika Tomadze' }, P: { text: 'Product Designer' } }` |
258
+ | `LoadingGif` | Animated loading spinner | `LoadingGif: { opacity: '.5', boxSize: 'B' }` |
259
+
260
+ ---
261
+
262
+ ## Misc
263
+
264
+ | Component | Use | Example |
265
+ |-----------|-----|---------|
266
+ | `Scrollbar` | Custom scrollbar with arrow navigation | `Scrollbar: { NavigationArrows: {} }` |