mozaic-mcp-server 1.0.0
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/INSTALLATION.md +232 -0
- package/README.md +262 -0
- package/SKILLS.md +411 -0
- package/bin/install-skills.js +171 -0
- package/data/mozaic.db +0 -0
- package/data/mozaic.db-shm +0 -0
- package/data/mozaic.db-wal +0 -0
- package/dist/__tests__/sanity-check.test.d.ts +2 -0
- package/dist/__tests__/sanity-check.test.d.ts.map +1 -0
- package/dist/__tests__/sanity-check.test.js +167 -0
- package/dist/__tests__/sanity-check.test.js.map +1 -0
- package/dist/__tests__/tools.integration.test.d.ts +2 -0
- package/dist/__tests__/tools.integration.test.d.ts.map +1 -0
- package/dist/__tests__/tools.integration.test.js +220 -0
- package/dist/__tests__/tools.integration.test.js.map +1 -0
- package/dist/db/queries.d.ts +144 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +536 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.d.ts +4 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +253 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +416 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/__tests__/docs-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/docs-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/docs-parser.test.js +251 -0
- package/dist/parsers/__tests__/docs-parser.test.js.map +1 -0
- package/dist/parsers/__tests__/icons-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/icons-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/icons-parser.test.js +169 -0
- package/dist/parsers/__tests__/icons-parser.test.js.map +1 -0
- package/dist/parsers/__tests__/react-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/react-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/react-parser.test.js +274 -0
- package/dist/parsers/__tests__/react-parser.test.js.map +1 -0
- package/dist/parsers/__tests__/scss-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/scss-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/scss-parser.test.js +364 -0
- package/dist/parsers/__tests__/scss-parser.test.js.map +1 -0
- package/dist/parsers/__tests__/tokens-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/tokens-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/tokens-parser.test.js +172 -0
- package/dist/parsers/__tests__/tokens-parser.test.js.map +1 -0
- package/dist/parsers/__tests__/vue-parser.test.d.ts +2 -0
- package/dist/parsers/__tests__/vue-parser.test.d.ts.map +1 -0
- package/dist/parsers/__tests__/vue-parser.test.js +207 -0
- package/dist/parsers/__tests__/vue-parser.test.js.map +1 -0
- package/dist/parsers/docs-parser.d.ts +4 -0
- package/dist/parsers/docs-parser.d.ts.map +1 -0
- package/dist/parsers/docs-parser.js +237 -0
- package/dist/parsers/docs-parser.js.map +1 -0
- package/dist/parsers/icons-parser.d.ts +33 -0
- package/dist/parsers/icons-parser.d.ts.map +1 -0
- package/dist/parsers/icons-parser.js +125 -0
- package/dist/parsers/icons-parser.js.map +1 -0
- package/dist/parsers/react-parser.d.ts +3 -0
- package/dist/parsers/react-parser.d.ts.map +1 -0
- package/dist/parsers/react-parser.js +406 -0
- package/dist/parsers/react-parser.js.map +1 -0
- package/dist/parsers/scss-parser.d.ts +9 -0
- package/dist/parsers/scss-parser.d.ts.map +1 -0
- package/dist/parsers/scss-parser.js +351 -0
- package/dist/parsers/scss-parser.js.map +1 -0
- package/dist/parsers/tokens/border-parser.d.ts +3 -0
- package/dist/parsers/tokens/border-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/border-parser.js +83 -0
- package/dist/parsers/tokens/border-parser.js.map +1 -0
- package/dist/parsers/tokens/color-parser.d.ts +3 -0
- package/dist/parsers/tokens/color-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/color-parser.js +88 -0
- package/dist/parsers/tokens/color-parser.js.map +1 -0
- package/dist/parsers/tokens/grid-parser.d.ts +3 -0
- package/dist/parsers/tokens/grid-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/grid-parser.js +97 -0
- package/dist/parsers/tokens/grid-parser.js.map +1 -0
- package/dist/parsers/tokens/index.d.ts +9 -0
- package/dist/parsers/tokens/index.d.ts.map +1 -0
- package/dist/parsers/tokens/index.js +10 -0
- package/dist/parsers/tokens/index.js.map +1 -0
- package/dist/parsers/tokens/screen-parser.d.ts +3 -0
- package/dist/parsers/tokens/screen-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/screen-parser.js +54 -0
- package/dist/parsers/tokens/screen-parser.js.map +1 -0
- package/dist/parsers/tokens/shadow-parser.d.ts +3 -0
- package/dist/parsers/tokens/shadow-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/shadow-parser.js +62 -0
- package/dist/parsers/tokens/shadow-parser.js.map +1 -0
- package/dist/parsers/tokens/spacing-parser.d.ts +4 -0
- package/dist/parsers/tokens/spacing-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/spacing-parser.js +85 -0
- package/dist/parsers/tokens/spacing-parser.js.map +1 -0
- package/dist/parsers/tokens/types.d.ts +33 -0
- package/dist/parsers/tokens/types.d.ts.map +1 -0
- package/dist/parsers/tokens/types.js +42 -0
- package/dist/parsers/tokens/types.js.map +1 -0
- package/dist/parsers/tokens/typography-parser.d.ts +3 -0
- package/dist/parsers/tokens/typography-parser.d.ts.map +1 -0
- package/dist/parsers/tokens/typography-parser.js +76 -0
- package/dist/parsers/tokens/typography-parser.js.map +1 -0
- package/dist/parsers/tokens-parser.d.ts +18 -0
- package/dist/parsers/tokens-parser.d.ts.map +1 -0
- package/dist/parsers/tokens-parser.js +57 -0
- package/dist/parsers/tokens-parser.js.map +1 -0
- package/dist/parsers/vue-parser.d.ts +3 -0
- package/dist/parsers/vue-parser.d.ts.map +1 -0
- package/dist/parsers/vue-parser.js +343 -0
- package/dist/parsers/vue-parser.js.map +1 -0
- package/dist/tools/generate-react-component.d.ts +35 -0
- package/dist/tools/generate-react-component.d.ts.map +1 -0
- package/dist/tools/generate-react-component.js +81 -0
- package/dist/tools/generate-react-component.js.map +1 -0
- package/dist/tools/generate-vue-component.d.ts +35 -0
- package/dist/tools/generate-vue-component.d.ts.map +1 -0
- package/dist/tools/generate-vue-component.js +81 -0
- package/dist/tools/generate-vue-component.js.map +1 -0
- package/dist/tools/get-component-info.d.ts +52 -0
- package/dist/tools/get-component-info.d.ts.map +1 -0
- package/dist/tools/get-component-info.js +94 -0
- package/dist/tools/get-component-info.js.map +1 -0
- package/dist/tools/get-css-utility.d.ts +41 -0
- package/dist/tools/get-css-utility.d.ts.map +1 -0
- package/dist/tools/get-css-utility.js +57 -0
- package/dist/tools/get-css-utility.js.map +1 -0
- package/dist/tools/get-design-tokens.d.ts +44 -0
- package/dist/tools/get-design-tokens.d.ts.map +1 -0
- package/dist/tools/get-design-tokens.js +124 -0
- package/dist/tools/get-design-tokens.js.map +1 -0
- package/dist/tools/get-icon.d.ts +32 -0
- package/dist/tools/get-icon.d.ts.map +1 -0
- package/dist/tools/get-icon.js +108 -0
- package/dist/tools/get-icon.js.map +1 -0
- package/dist/tools/get-install-info.d.ts +39 -0
- package/dist/tools/get-install-info.d.ts.map +1 -0
- package/dist/tools/get-install-info.js +160 -0
- package/dist/tools/get-install-info.js.map +1 -0
- package/dist/tools/list-components.d.ts +32 -0
- package/dist/tools/list-components.d.ts.map +1 -0
- package/dist/tools/list-components.js +62 -0
- package/dist/tools/list-components.js.map +1 -0
- package/dist/tools/list-css-utilities.d.ts +27 -0
- package/dist/tools/list-css-utilities.d.ts.map +1 -0
- package/dist/tools/list-css-utilities.js +48 -0
- package/dist/tools/list-css-utilities.js.map +1 -0
- package/dist/tools/search-documentation.d.ts +37 -0
- package/dist/tools/search-documentation.d.ts.map +1 -0
- package/dist/tools/search-documentation.js +120 -0
- package/dist/tools/search-documentation.js.map +1 -0
- package/dist/tools/search-icons.d.ts +41 -0
- package/dist/tools/search-icons.d.ts.map +1 -0
- package/dist/tools/search-icons.js +134 -0
- package/dist/tools/search-icons.js.map +1 -0
- package/package.json +98 -0
- package/skills/mozaic-css-utilities/skill.md +633 -0
- package/skills/mozaic-design-tokens/skill.md +621 -0
- package/skills/mozaic-icons/skill.md +624 -0
- package/skills/mozaic-react-builder/skill.md +652 -0
- package/skills/mozaic-vue-builder/skill.md +491 -0
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mozaic-css-utilities
|
|
3
|
+
description: Mozaic CSS utility classes and layout systems expert. Master Flexy grid, Container, Margin, Padding, Ratio, and Scroll utilities for responsive layouts without writing custom CSS.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Mozaic CSS Utilities
|
|
8
|
+
|
|
9
|
+
An expert assistant for working with Mozaic CSS-only utility classes. These utilities work without any framework (no Vue or React needed) and provide powerful layout and spacing capabilities through simple CSS classes.
|
|
10
|
+
|
|
11
|
+
## What This Skill Does
|
|
12
|
+
|
|
13
|
+
1. **Browse Utilities**: Discover available CSS utilities (Flexy, Container, Margin, Padding, etc.)
|
|
14
|
+
2. **Layout Systems**: Build responsive grids with Flexy
|
|
15
|
+
3. **Spacing Utilities**: Apply consistent margins and padding
|
|
16
|
+
4. **Container Management**: Create centered, responsive containers
|
|
17
|
+
5. **Aspect Ratios**: Maintain element ratios with Ratio utility
|
|
18
|
+
6. **Scroll Behavior**: Control scrolling with Scroll utility
|
|
19
|
+
|
|
20
|
+
## MCP Tools Used
|
|
21
|
+
|
|
22
|
+
This skill uses the Mozaic MCP server tools:
|
|
23
|
+
- `mcp__mozaic__list_css_utilities` - Browse utilities by category
|
|
24
|
+
- `mcp__mozaic__get_css_utility` - Get detailed utility class documentation
|
|
25
|
+
- `mcp__mozaic__search_documentation` - Search for utility usage examples
|
|
26
|
+
|
|
27
|
+
## When to Use This Skill
|
|
28
|
+
|
|
29
|
+
Use this skill when you:
|
|
30
|
+
- Need to build responsive grid layouts
|
|
31
|
+
- Want to apply consistent spacing without custom CSS
|
|
32
|
+
- Need container components for page layouts
|
|
33
|
+
- Want to maintain aspect ratios (videos, images)
|
|
34
|
+
- Need to control scroll behavior
|
|
35
|
+
- Prefer utility-first CSS approach
|
|
36
|
+
- Don't want to write custom CSS for common patterns
|
|
37
|
+
|
|
38
|
+
## Available CSS Utilities
|
|
39
|
+
|
|
40
|
+
### Layout Utilities
|
|
41
|
+
- **Flexy**: Flexbox-based responsive grid system
|
|
42
|
+
- **Container**: Centered, max-width containers
|
|
43
|
+
|
|
44
|
+
### Spacing Utilities
|
|
45
|
+
- **Margin**: Margin utility classes
|
|
46
|
+
- **Padding**: Padding utility classes
|
|
47
|
+
|
|
48
|
+
### Display Utilities
|
|
49
|
+
- **Ratio**: Aspect ratio containers
|
|
50
|
+
- **Scroll**: Scroll behavior control
|
|
51
|
+
|
|
52
|
+
## Interactive Workflow
|
|
53
|
+
|
|
54
|
+
### Step 1: What Do You Need?
|
|
55
|
+
|
|
56
|
+
When you activate this skill, I'll ask:
|
|
57
|
+
|
|
58
|
+
**"What type of layout or utility do you need?"**
|
|
59
|
+
|
|
60
|
+
Options:
|
|
61
|
+
- A) Grid/Layout (Flexy for responsive columns)
|
|
62
|
+
- B) Container (Centered page containers)
|
|
63
|
+
- C) Spacing (Margin and Padding)
|
|
64
|
+
- D) Aspect Ratio (Ratio for videos/images)
|
|
65
|
+
- E) Scroll Control (Scroll utilities)
|
|
66
|
+
- F) Browse all utilities
|
|
67
|
+
|
|
68
|
+
### Step 2: Get Utility Details
|
|
69
|
+
|
|
70
|
+
I'll use `mcp__mozaic__list_css_utilities` and `mcp__mozaic__get_css_utility` to show:
|
|
71
|
+
- Available CSS classes
|
|
72
|
+
- Responsive modifiers
|
|
73
|
+
- Usage examples
|
|
74
|
+
- Best practices
|
|
75
|
+
|
|
76
|
+
### Step 3: Generate Examples
|
|
77
|
+
|
|
78
|
+
Provide ready-to-use HTML examples with utility classes applied.
|
|
79
|
+
|
|
80
|
+
## Flexy Grid System
|
|
81
|
+
|
|
82
|
+
The Flexy utility is a powerful flexbox-based grid system.
|
|
83
|
+
|
|
84
|
+
### Basic Grid
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<!-- 2-column grid -->
|
|
88
|
+
<div class="flexy">
|
|
89
|
+
<div class="flexy__col flexy__col--6">Column 1 (50%)</div>
|
|
90
|
+
<div class="flexy__col flexy__col--6">Column 2 (50%)</div>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
<!-- 3-column grid -->
|
|
94
|
+
<div class="flexy">
|
|
95
|
+
<div class="flexy__col flexy__col--4">Column 1 (33.33%)</div>
|
|
96
|
+
<div class="flexy__col flexy__col--4">Column 2 (33.33%)</div>
|
|
97
|
+
<div class="flexy__col flexy__col--4">Column 3 (33.33%)</div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<!-- 4-column grid -->
|
|
101
|
+
<div class="flexy">
|
|
102
|
+
<div class="flexy__col flexy__col--3">Column 1 (25%)</div>
|
|
103
|
+
<div class="flexy__col flexy__col--3">Column 2 (25%)</div>
|
|
104
|
+
<div class="flexy__col flexy__col--3">Column 3 (25%)</div>
|
|
105
|
+
<div class="flexy__col flexy__col--3">Column 4 (25%)</div>
|
|
106
|
+
</div>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Responsive Grid
|
|
110
|
+
|
|
111
|
+
```html
|
|
112
|
+
<!-- Mobile: 1 column, Tablet: 2 columns, Desktop: 3 columns -->
|
|
113
|
+
<div class="flexy">
|
|
114
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
115
|
+
Item 1
|
|
116
|
+
</div>
|
|
117
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
118
|
+
Item 2
|
|
119
|
+
</div>
|
|
120
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
121
|
+
Item 3
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
**Responsive Modifiers**:
|
|
127
|
+
- `@s`: Small screens (≥480px)
|
|
128
|
+
- `@m`: Medium screens (≥768px)
|
|
129
|
+
- `@l`: Large screens (≥1024px)
|
|
130
|
+
- `@xl`: Extra large screens (≥1280px)
|
|
131
|
+
|
|
132
|
+
### Grid Gutters
|
|
133
|
+
|
|
134
|
+
```html
|
|
135
|
+
<!-- Default gutter (16px) -->
|
|
136
|
+
<div class="flexy flexy--gutter">
|
|
137
|
+
<div class="flexy__col flexy__col--6">Column 1</div>
|
|
138
|
+
<div class="flexy__col flexy__col--6">Column 2</div>
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<!-- Small gutter (8px) -->
|
|
142
|
+
<div class="flexy flexy--gutter-s">
|
|
143
|
+
<div class="flexy__col flexy__col--6">Column 1</div>
|
|
144
|
+
<div class="flexy__col flexy__col--6">Column 2</div>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<!-- Large gutter (24px) -->
|
|
148
|
+
<div class="flexy flexy--gutter-l">
|
|
149
|
+
<div class="flexy__col flexy__col--6">Column 1</div>
|
|
150
|
+
<div class="flexy__col flexy__col--6">Column 2</div>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<!-- No gutter -->
|
|
154
|
+
<div class="flexy flexy--gutter-none">
|
|
155
|
+
<div class="flexy__col flexy__col--6">Column 1</div>
|
|
156
|
+
<div class="flexy__col flexy__col--6">Column 2</div>
|
|
157
|
+
</div>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Alignment
|
|
161
|
+
|
|
162
|
+
```html
|
|
163
|
+
<!-- Vertical alignment -->
|
|
164
|
+
<div class="flexy flexy--align-start">Start aligned</div>
|
|
165
|
+
<div class="flexy flexy--align-center">Center aligned</div>
|
|
166
|
+
<div class="flexy flexy--align-end">End aligned</div>
|
|
167
|
+
|
|
168
|
+
<!-- Horizontal alignment -->
|
|
169
|
+
<div class="flexy flexy--justify-start">Start justified</div>
|
|
170
|
+
<div class="flexy flexy--justify-center">Center justified</div>
|
|
171
|
+
<div class="flexy flexy--justify-end">End justified</div>
|
|
172
|
+
<div class="flexy flexy--justify-between">Space between</div>
|
|
173
|
+
<div class="flexy flexy--justify-around">Space around</div>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Column Offset
|
|
177
|
+
|
|
178
|
+
```html
|
|
179
|
+
<!-- Offset column by 2 (push right) -->
|
|
180
|
+
<div class="flexy">
|
|
181
|
+
<div class="flexy__col flexy__col--6 flexy__col--offset-2">
|
|
182
|
+
Offset by 2 columns
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
|
|
186
|
+
<!-- Responsive offset -->
|
|
187
|
+
<div class="flexy">
|
|
188
|
+
<div class="flexy__col flexy__col--8 flexy__col--offset-2@l">
|
|
189
|
+
Offset only on large screens
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Column Order
|
|
195
|
+
|
|
196
|
+
```html
|
|
197
|
+
<!-- Change order on different screens -->
|
|
198
|
+
<div class="flexy">
|
|
199
|
+
<div class="flexy__col flexy__col--6 flexy__col--order-2@m">
|
|
200
|
+
First on mobile, second on tablet+
|
|
201
|
+
</div>
|
|
202
|
+
<div class="flexy__col flexy__col--6 flexy__col--order-1@m">
|
|
203
|
+
Second on mobile, first on tablet+
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Container Utility
|
|
209
|
+
|
|
210
|
+
Create centered, max-width containers.
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<!-- Default container (max-width responsive) -->
|
|
214
|
+
<div class="container">
|
|
215
|
+
<p>Centered content with responsive max-width</p>
|
|
216
|
+
</div>
|
|
217
|
+
|
|
218
|
+
<!-- Fluid container (full width with padding) -->
|
|
219
|
+
<div class="container container--fluid">
|
|
220
|
+
<p>Full width with consistent padding</p>
|
|
221
|
+
</div>
|
|
222
|
+
|
|
223
|
+
<!-- Fixed width containers -->
|
|
224
|
+
<div class="container container--sm">Max 540px</div>
|
|
225
|
+
<div class="container container--md">Max 720px</div>
|
|
226
|
+
<div class="container container--lg">Max 960px</div>
|
|
227
|
+
<div class="container container--xl">Max 1140px</div>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Margin Utilities
|
|
231
|
+
|
|
232
|
+
Apply consistent margins using the spacing scale.
|
|
233
|
+
|
|
234
|
+
### All Sides
|
|
235
|
+
|
|
236
|
+
```html
|
|
237
|
+
<!-- Margin all sides -->
|
|
238
|
+
<div class="m-0">No margin</div>
|
|
239
|
+
<div class="m-xs">Margin 8px</div>
|
|
240
|
+
<div class="m-s">Margin 12px</div>
|
|
241
|
+
<div class="m-m">Margin 16px</div>
|
|
242
|
+
<div class="m-l">Margin 24px</div>
|
|
243
|
+
<div class="m-xl">Margin 32px</div>
|
|
244
|
+
<div class="m-auto">Margin auto (centering)</div>
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Specific Sides
|
|
248
|
+
|
|
249
|
+
```html
|
|
250
|
+
<!-- Margin top -->
|
|
251
|
+
<div class="mt-m">Margin top 16px</div>
|
|
252
|
+
|
|
253
|
+
<!-- Margin bottom -->
|
|
254
|
+
<div class="mb-l">Margin bottom 24px</div>
|
|
255
|
+
|
|
256
|
+
<!-- Margin left -->
|
|
257
|
+
<div class="ml-s">Margin left 12px</div>
|
|
258
|
+
|
|
259
|
+
<!-- Margin right -->
|
|
260
|
+
<div class="mr-s">Margin right 12px</div>
|
|
261
|
+
|
|
262
|
+
<!-- Margin horizontal (left + right) -->
|
|
263
|
+
<div class="mx-m">Margin horizontal 16px</div>
|
|
264
|
+
|
|
265
|
+
<!-- Margin vertical (top + bottom) -->
|
|
266
|
+
<div class="my-l">Margin vertical 24px</div>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Responsive Margins
|
|
270
|
+
|
|
271
|
+
```html
|
|
272
|
+
<!-- Different margins at breakpoints -->
|
|
273
|
+
<div class="m-s m-m@m m-l@l">
|
|
274
|
+
Small margin on mobile, medium on tablet, large on desktop
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
<!-- Remove margin on specific breakpoints -->
|
|
278
|
+
<div class="mb-m mb-0@l">
|
|
279
|
+
Margin bottom on mobile/tablet, none on desktop
|
|
280
|
+
</div>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Negative Margins
|
|
284
|
+
|
|
285
|
+
```html
|
|
286
|
+
<!-- Pull element up/left -->
|
|
287
|
+
<div class="mt--m">Negative margin top -16px</div>
|
|
288
|
+
<div class="ml--l">Negative margin left -24px</div>
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Padding Utilities
|
|
292
|
+
|
|
293
|
+
Apply consistent padding using the spacing scale.
|
|
294
|
+
|
|
295
|
+
### All Sides
|
|
296
|
+
|
|
297
|
+
```html
|
|
298
|
+
<!-- Padding all sides -->
|
|
299
|
+
<div class="p-0">No padding</div>
|
|
300
|
+
<div class="p-xs">Padding 8px</div>
|
|
301
|
+
<div class="p-s">Padding 12px</div>
|
|
302
|
+
<div class="p-m">Padding 16px</div>
|
|
303
|
+
<div class="p-l">Padding 24px</div>
|
|
304
|
+
<div class="p-xl">Padding 32px</div>
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Specific Sides
|
|
308
|
+
|
|
309
|
+
```html
|
|
310
|
+
<!-- Padding top -->
|
|
311
|
+
<div class="pt-m">Padding top 16px</div>
|
|
312
|
+
|
|
313
|
+
<!-- Padding bottom -->
|
|
314
|
+
<div class="pb-l">Padding bottom 24px</div>
|
|
315
|
+
|
|
316
|
+
<!-- Padding left -->
|
|
317
|
+
<div class="pl-s">Padding left 12px</div>
|
|
318
|
+
|
|
319
|
+
<!-- Padding right -->
|
|
320
|
+
<div class="pr-s">Padding right 12px</div>
|
|
321
|
+
|
|
322
|
+
<!-- Padding horizontal (left + right) -->
|
|
323
|
+
<div class="px-m">Padding horizontal 16px</div>
|
|
324
|
+
|
|
325
|
+
<!-- Padding vertical (top + bottom) -->
|
|
326
|
+
<div class="py-l">Padding vertical 24px</div>
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Responsive Padding
|
|
330
|
+
|
|
331
|
+
```html
|
|
332
|
+
<!-- Different padding at breakpoints -->
|
|
333
|
+
<div class="p-s p-m@m p-l@l">
|
|
334
|
+
Small padding on mobile, medium on tablet, large on desktop
|
|
335
|
+
</div>
|
|
336
|
+
|
|
337
|
+
<!-- Card with responsive padding -->
|
|
338
|
+
<div class="card p-m p-l@m p-xl@l">
|
|
339
|
+
Responsive card padding
|
|
340
|
+
</div>
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Ratio Utility
|
|
344
|
+
|
|
345
|
+
Maintain aspect ratios for images, videos, and containers.
|
|
346
|
+
|
|
347
|
+
```html
|
|
348
|
+
<!-- 16:9 ratio (video) -->
|
|
349
|
+
<div class="ratio ratio--16x9">
|
|
350
|
+
<iframe src="video.mp4"></iframe>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<!-- 4:3 ratio -->
|
|
354
|
+
<div class="ratio ratio--4x3">
|
|
355
|
+
<img src="image.jpg" alt="4:3 image">
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<!-- 1:1 ratio (square) -->
|
|
359
|
+
<div class="ratio ratio--1x1">
|
|
360
|
+
<img src="avatar.jpg" alt="Square avatar">
|
|
361
|
+
</div>
|
|
362
|
+
|
|
363
|
+
<!-- 21:9 ratio (ultrawide) -->
|
|
364
|
+
<div class="ratio ratio--21x9">
|
|
365
|
+
<video src="ultrawide.mp4"></video>
|
|
366
|
+
</div>
|
|
367
|
+
|
|
368
|
+
<!-- Custom ratio with CSS variable -->
|
|
369
|
+
<div class="ratio" style="--ratio: 2.35;">
|
|
370
|
+
<img src="cinema.jpg" alt="Cinematic ratio">
|
|
371
|
+
</div>
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## Scroll Utility
|
|
375
|
+
|
|
376
|
+
Control scroll behavior.
|
|
377
|
+
|
|
378
|
+
```html
|
|
379
|
+
<!-- Horizontal scroll container -->
|
|
380
|
+
<div class="scroll scroll--x">
|
|
381
|
+
<div style="width: 2000px">
|
|
382
|
+
Wide content that scrolls horizontally
|
|
383
|
+
</div>
|
|
384
|
+
</div>
|
|
385
|
+
|
|
386
|
+
<!-- Vertical scroll container -->
|
|
387
|
+
<div class="scroll scroll--y" style="height: 300px">
|
|
388
|
+
<p>Long content...</p>
|
|
389
|
+
<p>That scrolls...</p>
|
|
390
|
+
<p>Vertically...</p>
|
|
391
|
+
</div>
|
|
392
|
+
|
|
393
|
+
<!-- Scroll with shadows at edges -->
|
|
394
|
+
<div class="scroll scroll--x scroll--shadow">
|
|
395
|
+
<div style="width: 2000px">
|
|
396
|
+
Scrollable with edge shadows
|
|
397
|
+
</div>
|
|
398
|
+
</div>
|
|
399
|
+
|
|
400
|
+
<!-- Smooth scrolling -->
|
|
401
|
+
<div class="scroll scroll--smooth">
|
|
402
|
+
Content with smooth scroll behavior
|
|
403
|
+
</div>
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
## Common Layout Patterns
|
|
407
|
+
|
|
408
|
+
### Pattern 1: Sidebar Layout
|
|
409
|
+
|
|
410
|
+
```html
|
|
411
|
+
<div class="container">
|
|
412
|
+
<div class="flexy flexy--gutter">
|
|
413
|
+
<!-- Sidebar: full width on mobile, 1/3 on desktop -->
|
|
414
|
+
<aside class="flexy__col flexy__col--12 flexy__col--4@l">
|
|
415
|
+
<div class="p-m">Sidebar</div>
|
|
416
|
+
</aside>
|
|
417
|
+
|
|
418
|
+
<!-- Main: full width on mobile, 2/3 on desktop -->
|
|
419
|
+
<main class="flexy__col flexy__col--12 flexy__col--8@l">
|
|
420
|
+
<div class="p-m">Main content</div>
|
|
421
|
+
</main>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Pattern 2: Card Grid
|
|
427
|
+
|
|
428
|
+
```html
|
|
429
|
+
<div class="container">
|
|
430
|
+
<div class="flexy flexy--gutter">
|
|
431
|
+
<!-- 1 column mobile, 2 columns tablet, 3 columns desktop -->
|
|
432
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
433
|
+
<div class="card p-m mb-m">Card 1</div>
|
|
434
|
+
</div>
|
|
435
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
436
|
+
<div class="card p-m mb-m">Card 2</div>
|
|
437
|
+
</div>
|
|
438
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
439
|
+
<div class="card p-m mb-m">Card 3</div>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
</div>
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
### Pattern 3: Hero Section
|
|
446
|
+
|
|
447
|
+
```html
|
|
448
|
+
<section class="hero py-xl">
|
|
449
|
+
<div class="container">
|
|
450
|
+
<div class="flexy flexy--align-center flexy--justify-center">
|
|
451
|
+
<div class="flexy__col flexy__col--12 flexy__col--8@m flexy__col--6@l">
|
|
452
|
+
<h1 class="mb-m">Hero Title</h1>
|
|
453
|
+
<p class="mb-l">Hero description text</p>
|
|
454
|
+
<button class="btn">Call to Action</button>
|
|
455
|
+
</div>
|
|
456
|
+
</div>
|
|
457
|
+
</div>
|
|
458
|
+
</section>
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Pattern 4: Feature Grid
|
|
462
|
+
|
|
463
|
+
```html
|
|
464
|
+
<div class="container py-xl">
|
|
465
|
+
<div class="flexy flexy--gutter-l">
|
|
466
|
+
<!-- 1 col mobile, 2 col tablet, 4 col desktop -->
|
|
467
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--3@l">
|
|
468
|
+
<div class="text-center p-m">
|
|
469
|
+
<div class="ratio ratio--1x1 mb-m">
|
|
470
|
+
<img src="icon1.svg" alt="Feature 1">
|
|
471
|
+
</div>
|
|
472
|
+
<h3>Feature 1</h3>
|
|
473
|
+
</div>
|
|
474
|
+
</div>
|
|
475
|
+
<!-- Repeat for more features -->
|
|
476
|
+
</div>
|
|
477
|
+
</div>
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
### Pattern 5: Form Layout
|
|
481
|
+
|
|
482
|
+
```html
|
|
483
|
+
<div class="container">
|
|
484
|
+
<div class="flexy flexy--gutter">
|
|
485
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m">
|
|
486
|
+
<div class="mb-m">
|
|
487
|
+
<label>First Name</label>
|
|
488
|
+
<input type="text" class="px-s py-s">
|
|
489
|
+
</div>
|
|
490
|
+
</div>
|
|
491
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m">
|
|
492
|
+
<div class="mb-m">
|
|
493
|
+
<label>Last Name</label>
|
|
494
|
+
<input type="text" class="px-s py-s">
|
|
495
|
+
</div>
|
|
496
|
+
</div>
|
|
497
|
+
<div class="flexy__col flexy__col--12">
|
|
498
|
+
<div class="mb-m">
|
|
499
|
+
<label>Email</label>
|
|
500
|
+
<input type="email" class="px-s py-s">
|
|
501
|
+
</div>
|
|
502
|
+
</div>
|
|
503
|
+
</div>
|
|
504
|
+
</div>
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
## Best Practices
|
|
508
|
+
|
|
509
|
+
### 1. Mobile-First Approach
|
|
510
|
+
|
|
511
|
+
```html
|
|
512
|
+
<!-- Good: Start mobile, add breakpoints up -->
|
|
513
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
514
|
+
Mobile: 100%, Tablet: 50%, Desktop: 33.33%
|
|
515
|
+
</div>
|
|
516
|
+
|
|
517
|
+
<!-- Avoid: Desktop-first -->
|
|
518
|
+
<div class="flexy__col flexy__col--4 flexy__col--6@m flexy__col--12@s">
|
|
519
|
+
Harder to reason about
|
|
520
|
+
</div>
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### 2. Consistent Spacing Scale
|
|
524
|
+
|
|
525
|
+
```html
|
|
526
|
+
<!-- Good: Use spacing utilities -->
|
|
527
|
+
<div class="mb-m p-l">Consistent spacing</div>
|
|
528
|
+
|
|
529
|
+
<!-- Avoid: Arbitrary values -->
|
|
530
|
+
<div style="margin-bottom: 17px; padding: 23px">
|
|
531
|
+
Inconsistent spacing
|
|
532
|
+
</div>
|
|
533
|
+
```
|
|
534
|
+
|
|
535
|
+
### 3. Semantic Container Usage
|
|
536
|
+
|
|
537
|
+
```html
|
|
538
|
+
<!-- Good: Use container for page sections -->
|
|
539
|
+
<section class="py-xl">
|
|
540
|
+
<div class="container">
|
|
541
|
+
<h2>Section Title</h2>
|
|
542
|
+
</div>
|
|
543
|
+
</section>
|
|
544
|
+
|
|
545
|
+
<!-- Avoid: Multiple nested containers -->
|
|
546
|
+
<div class="container">
|
|
547
|
+
<div class="container">
|
|
548
|
+
Don't nest containers
|
|
549
|
+
</div>
|
|
550
|
+
</div>
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
### 4. Grid Within Grid (Nested Grids)
|
|
554
|
+
|
|
555
|
+
```html
|
|
556
|
+
<!-- Good: Nest grids for complex layouts -->
|
|
557
|
+
<div class="flexy flexy--gutter">
|
|
558
|
+
<div class="flexy__col flexy__col--8">
|
|
559
|
+
<div class="flexy flexy--gutter">
|
|
560
|
+
<div class="flexy__col flexy__col--6">Nested 1</div>
|
|
561
|
+
<div class="flexy__col flexy__col--6">Nested 2</div>
|
|
562
|
+
</div>
|
|
563
|
+
</div>
|
|
564
|
+
<div class="flexy__col flexy__col--4">Sidebar</div>
|
|
565
|
+
</div>
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
## Commands
|
|
569
|
+
|
|
570
|
+
When this skill is active:
|
|
571
|
+
|
|
572
|
+
- **"Show [utility] classes"**: Get all classes for a utility
|
|
573
|
+
- **"Build a [layout] with Flexy"**: Get layout examples
|
|
574
|
+
- **"How do I [task]?"**: Get utility guidance
|
|
575
|
+
- **"Responsive [pattern]"**: Get responsive patterns
|
|
576
|
+
- **"Spacing utilities"**: Get margin/padding classes
|
|
577
|
+
|
|
578
|
+
## Integration with Other Skills
|
|
579
|
+
|
|
580
|
+
This skill works well with:
|
|
581
|
+
- **mozaic-design-tokens**: Get spacing/breakpoint values
|
|
582
|
+
- **mozaic-vue-builder**: Add utilities to Vue components
|
|
583
|
+
- **mozaic-react-builder**: Add utilities to React components
|
|
584
|
+
|
|
585
|
+
## Example Session
|
|
586
|
+
|
|
587
|
+
**User**: "I need a 3-column product grid"
|
|
588
|
+
|
|
589
|
+
**Skill**:
|
|
590
|
+
I'll help you build a responsive 3-column grid with Flexy!
|
|
591
|
+
|
|
592
|
+
Do you want:
|
|
593
|
+
- A) Equal columns (33.33% each)
|
|
594
|
+
- B) Responsive (1 col mobile, 2 tablet, 3 desktop)
|
|
595
|
+
- C) With gutters between items
|
|
596
|
+
|
|
597
|
+
**User**: "B - Responsive with gutters"
|
|
598
|
+
|
|
599
|
+
**Skill**:
|
|
600
|
+
Perfect! Here's your responsive product grid:
|
|
601
|
+
|
|
602
|
+
[Uses `mcp__mozaic__get_css_utility` for Flexy]
|
|
603
|
+
|
|
604
|
+
```html
|
|
605
|
+
<div class="container">
|
|
606
|
+
<div class="flexy flexy--gutter">
|
|
607
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
608
|
+
<div class="card p-m">Product 1</div>
|
|
609
|
+
</div>
|
|
610
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
611
|
+
<div class="card p-m">Product 2</div>
|
|
612
|
+
</div>
|
|
613
|
+
<div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
|
|
614
|
+
<div class="card p-m">Product 3</div>
|
|
615
|
+
</div>
|
|
616
|
+
</div>
|
|
617
|
+
</div>
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
This creates:
|
|
621
|
+
- Mobile: 1 column (stacked)
|
|
622
|
+
- Tablet (≥768px): 2 columns
|
|
623
|
+
- Desktop (≥1024px): 3 columns
|
|
624
|
+
- With 16px gutters between items
|
|
625
|
+
|
|
626
|
+
Would you like me to:
|
|
627
|
+
- Add more products?
|
|
628
|
+
- Adjust gutter size?
|
|
629
|
+
- Add card styling?
|
|
630
|
+
|
|
631
|
+
---
|
|
632
|
+
|
|
633
|
+
**Let's build beautiful layouts with Mozaic CSS utilities!**
|