breakouts 0.0.14 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,313 +1,172 @@
1
- # Breakouts
1
+ # 📐 Breakouts – SCSS/CSS Layout Framework
2
2
 
3
- **Breakouts** is a minimal and extensible SCSS/CSS utility framework for modern layout systems.
4
-
5
- It provides utilities for containers, full-bleed sections, breakout content, and grid layouts with named lines — built for flexibility and responsiveness, whether you're building a landing page, a blog, or a full-scale web app.
3
+ Breakouts is a minimal, modular layout framework for SCSS/CSS that gives you just the right amount of structure: full-bleed containers, responsive grids, spacing, theming, and a clean set of utilities.
6
4
 
7
5
  ---
8
6
 
9
7
  ## 🚀 Installation
10
8
 
11
- ### via npm
9
+ Using npm:
12
10
 
13
11
  ```bash
14
12
  npm install breakouts
15
13
  ```
16
14
 
17
- In your SCSS entry point:
15
+ Using bun:
18
16
 
19
- ```scss
20
- @use 'breakouts' as *;
17
+ ```bash
18
+ bun add breakouts
21
19
  ```
22
20
 
23
- Note: breakouts automatically forwards all core modules from src/index.scss. You can also import individual modules as needed for tree-shaking.
24
-
25
- ## 📦 Framework Structure
26
-
27
- Breakouts includes a small set of layout-focused utility classes to help you build responsive and consistent page structures.
28
-
29
- | Class | Purpose |
30
- |----------------|---------------------------------------------------------------------------|
31
- | `.container` | Creates a centered layout wrapper with a max-width and responsive padding |
32
- | `.full-bleed` | Stretches content edge-to-edge across the viewport |
33
- | `.breakout` | Expands content outside the container’s padding without going full-bleed |
34
- | `.grid` | Defines a named-line CSS grid with `main` and `full` layout regions |
35
- | `.grid--full` | Forces children of `.grid` to span the entire width (`full` region) |
36
- | `.breakouts-grid` | A more advanced named-line grid layout using CSS variables |
37
- | `.content` | Places content in the main centered column within `.breakouts-grid` |
38
- | `.popout` | Slightly outside the `.content` width for medium breakout |
39
- | `.feature` | Wider area used for highlighting visual components |
40
- | `.full` | Full-width layout spanning the entire grid |
41
-
42
- ## 🧩 Extending the Framework
21
+ ---
43
22
 
44
- Breakouts is fully configurable — you can override its core variables before importing it.
23
+ ## 🛠 Usage
45
24
 
46
- ### 🔁 Example: Override the color palette
25
+ ### SCSS with `@use`
47
26
 
48
27
  ```scss
49
- $colors: (
50
- primary: #ff6600,
51
- secondary: #222222,
52
- background: #fefefe,
53
- text: #111
54
- );
55
-
56
- @use "breakouts";
28
+ @use 'breakouts' as *;
57
29
  ```
58
30
 
59
- This replaces the default color palette defined in the framework. You can override any variable marked with !default.
31
+ ### Import CSS directly
60
32
 
61
- ## 🔌 Use Only What You Need
33
+ ```html
34
+ <link rel="stylesheet" href="/node_modules/breakouts/dist/breakouts.css" />
35
+ ```
62
36
 
63
- Breakouts is modular and each part of the framework can be imported individually.
37
+ ---
64
38
 
65
- ### Import specific modules
39
+ ## 🧱 Features
66
40
 
67
- If you only want color utilities, you can import them directly:
41
+ - Full-bleed layout with `.container`, `.full-bleed`, `.breakouts`
42
+ - ✅ Breakouts Grid with named areas (`.full`, `.popout`, `.feature`, etc.)
43
+ - ✅ Spacing utilities: `.m-1`, `.px-2`, etc.
44
+ - ✅ Text utilities: alignment, transformation, weight
45
+ - ✅ Responsive-friendly
46
+ - ✅ Dark mode support and theme overrides
47
+ - ✅ Prebuilt themes for fast prototyping
48
+ - ✅ Minimal reset and clean typography
68
49
 
69
- ```scss
70
- @use "breakouts/theme/colors" as *;
50
+ ---
71
51
 
72
- @include text-color-utilities();
73
- @include bg-color-utilities();
74
- ```
52
+ ## 🎨 Prebuilt Themes
75
53
 
76
- If you only need grid layout helpers:
54
+ | Theme Name | Description | Import Path |
55
+ |----------------|----------------------------------------------------------------|----------------------------------------|
56
+ | **Chupa Pop** | Bold and colorful palette inspired by candy tones | `@use 'breakouts/theme/chupa-pop'` |
57
+ | **Medical** | Calm, healthcare-inspired palette with blues and greens | `@use 'breakouts/theme/medical'` |
58
+ | **Tootsie Pop**| Retro and playful candy-themed palette | `@use 'breakouts/theme/tootsie-pop'` |
77
59
 
78
- ```scss
79
- @use "breakouts/layout/grid";
80
- ```
60
+ ---
81
61
 
82
- This gives you full control over what gets compiled into your CSS, keeping it lean and optimized for your project.
62
+ ## ✍️ Text Utilities
63
+
64
+ | Class | Description |
65
+ |------------------|--------------------------|
66
+ | `.text-left` | Align text left |
67
+ | `.text-center` | Align text center |
68
+ | `.text-right` | Align text right |
69
+ | `.text-justify` | Justify text |
70
+ | `.text-uppercase` | Uppercase text |
71
+ | `.text-lowercase` | Lowercase text |
72
+ | `.text-capitalize`| Capitalize text |
73
+ | `.font-bold` | Bold text |
74
+ | `.font-normal` | Normal weight text |
75
+ | `.italic` | Italic text |
76
+ | `.not-italic` | Not italic |
77
+ | `.leading-tight` | Line height 1.25 |
78
+ | `.leading-normal` | Line height 1.5 |
79
+ | `.leading-loose` | Line height 2 |
83
80
 
84
- ## 🧱 Define Your Own Utilities on Top
81
+ ---
85
82
 
86
- Breakouts exposes a consistent set of CSS variables (e.g. `--color-primary`, `--color-background`, etc.) that you can reuse to build your own custom components or utility classes.
83
+ ## 📏 Spacing Utilities
87
84
 
88
- ### Example: custom button style
85
+ Available spacing classes are based on the `$space-scale` map:
89
86
 
90
87
  ```scss
91
- .button {
92
- background-color: var(--color-primary);
93
- color: var(--color-background);
94
- padding: 0.5rem 1rem;
95
- border: none;
96
- border-radius: 0.25rem;
97
- font-weight: 600;
98
- cursor: pointer;
99
- }
100
-
101
- .button:hover {
102
- background-color: var(--color-secondary);
103
- }
88
+ $space-scale: (
89
+ 0: 0,
90
+ 1: 0.25rem,
91
+ 2: 0.5rem,
92
+ 3: 0.75rem,
93
+ 4: 1rem,
94
+ 5: 1.25rem,
95
+ 6: 1.5rem
96
+ );
104
97
  ```
105
98
 
106
- By using the same design tokens, your custom elements stay visually aligned with the rest of the system.
107
-
108
- This approach encourages consistency while giving you full creative freedom.
109
-
110
- ## ✍️ Typography
111
-
112
- Breakouts includes base typographic styles to ensure clean, readable text with consistent rhythm and spacing.
113
-
114
- - Responsive font sizing and heading scale
115
- - Theme-based color integration
116
- - Styled links and paragraphs
117
- - Easily extendable via SCSS variables
118
-
119
- ```scss
120
- body {
121
- font-family: system-ui, sans-serif;
122
- font-size: 1rem;
123
- line-height: 1.6;
124
- color: var(--color-text);
125
- }
99
+ | Type | Prefixes |
100
+ |----------|------------------------------------|
101
+ | Margin | `m`, `mt`, `mr`, `mb`, `ml`, `mx`, `my` |
102
+ | Padding | `p`, `pt`, `pr`, `pb`, `pl`, `px`, `py` |
126
103
 
127
- h1, h2, h3, h4, h5, h6 {
128
- line-height: 1.2;
129
- font-weight: 600;
130
- margin: 2rem 0 1rem;
131
- color: var(--color-text);
132
- }
104
+ ---
133
105
 
134
- p {
135
- margin: 1rem 0;
136
- }
106
+ ## 🌗 Dark Mode
137
107
 
138
- a {
139
- color: var(--color-primary);
140
- text-decoration: underline;
108
+ Breakouts supports dark mode automatically by toggling the `.dark` or `.light` class on the `<html>` tag.
141
109
 
142
- &:hover {
143
- color: var(--color-secondary);
144
- }
145
- }
110
+ ```html
111
+ <html class="dark">
112
+ <!-- or -->
113
+ <html class="light">
146
114
  ```
147
115
 
148
- You can override the heading scale, base sizes, and fonts by defining your own variables before importing Breakouts.
149
-
150
- ## 🌙 Dark Mode Support
151
-
152
- Breakouts includes built-in support for **dark mode**, using CSS variables and system preferences.
153
-
154
- ### 🌓 Automatic dark mode
155
-
156
- By default, the framework responds to the user's system setting using:
116
+ Use `prefers-color-scheme` if you want to auto-detect:
157
117
 
158
118
  ```scss
159
119
  @media (prefers-color-scheme: dark) {
160
- :root {
161
- // Dark color variables
162
- }
120
+ html { class: dark; }
163
121
  }
164
122
  ```
165
123
 
166
- This means all your color utility classes like .bg-primary, .text-muted, etc., automatically switch based on the user's device.
167
-
168
- ### 🌘 Manual Override (Optional)
169
-
170
- If you want to control dark mode manually—rather than relying on the user's system preferences—you can use the `.dark` class.
171
-
172
- Apply it to the root HTML element:
173
-
174
- ```html
175
- <html class="dark">
176
- ```
177
-
178
- When this class is present, Breakouts will use the dark color palette regardless of system settings.
179
-
180
- This is ideal for implementing a light/dark theme toggle in your application via JavaScript or local storage.
181
-
182
- All color-based utility classes like .text-* and .bg-* will respond automatically, as they rely on CSS variables.
183
-
184
- ### ✅ Compatible with All Color Utilities
185
-
186
- All utility classes that rely on colors—such as:
187
-
188
- - `.text-primary`
189
- - `.bg-surface`
190
- - `.text-muted`
191
- - `.bg-secondary`
192
-
193
- ...are automatically compatible with dark mode.
194
-
195
- This is possible because Breakouts uses CSS custom properties (variables) for all colors. When the color mode changes (automatically or via `.dark` class), the variables are updated, and the utilities respond instantly without requiring any changes to your HTML.
124
+ ---
196
125
 
197
- You can keep writing markup the same way in both themes:
126
+ ## 🧪 Demo & Examples
198
127
 
199
- ```html
200
- <div class="bg-background text-text">
201
- <p class="text-muted">This works in both light and dark modes.</p>
202
- </div>
203
- ```
128
+ View the live demo via GitHub Pages:
129
+ 👉 [https://cantilux.github.io/breakouts](https://cantilux.github.io/breakouts)
204
130
 
205
- ## 🎨 Theming with `@use`
131
+ ---
206
132
 
207
- Breakouts supports full theming via SCSS variable overrides using `@use with`. You can customize any design token before the framework compiles.
133
+ ## 🧩 Customize with `@use`
208
134
 
209
- ### 🧪 Example: Custom Primary and Accent Colors
135
+ Override core variables before importing:
210
136
 
211
137
  ```scss
212
138
  @use 'breakouts' with (
213
139
  $color-primary: #d1ff4a,
214
- $color-primary-dark: darken(#d1ff4a, 15%),
215
- $color-primary-light: lighten(#d1ff4a, 15%),
216
-
217
- $color-accent: #8a2be2,
218
- $color-accent-dark: darken(#8a2be2, 15%),
219
- $color-accent-light: lighten(#8a2be2, 15%)
140
+ $color-accent: #8a2be2
220
141
  );
221
142
  ```
222
143
 
223
- This will automatically update the corresponding CSS custom properties:
224
-
225
- ```scss
226
- --color-primary: #d1ff4a;
227
- --color-accent: #8a2be2;
228
- ```
229
-
230
- And will apply to utility classes like:
231
-
232
- ```html
233
- <section class="bg-primary text-background">Primary Background</section>
234
- <section class="bg-accent text-background">Accent Background</section>
235
- ```
236
-
237
- You can also override any other color or spacing variable defined in the framework for full control.
238
-
239
- ## 🎨 Custom Theme Setup
240
-
241
- If you're using a bundler like Vite or Webpack and encounter issues with `@use ... with`, the recommended approach is to recreate Breakouts' internal structure in your own project and apply theming from there.
242
-
243
- ### ✅ Example: Create a custom `breakouts.scss`
144
+ Or create a custom theme:
244
145
 
245
146
  ```scss
246
- // src/styles/breakouts.scss
247
-
147
+ // my-theme.scss
248
148
  @forward 'breakouts/src/theme/variables' with (
249
149
  $color-primary: #d1ff4a,
250
- $color-primary-dark: darken(#d1ff4a, 15%),
251
- $color-primary-light: lighten(#d1ff4a, 15%),
252
-
253
- $color-accent: #8a2be2,
254
- $color-accent-dark: darken(#8a2be2, 15%),
255
- $color-accent-light: lighten(#8a2be2, 15%)
150
+ $color-accent: #8a2be2
256
151
  );
257
152
 
258
153
  @use 'breakouts/src/theme/variables' as *;
259
154
  @forward 'breakouts/src/theme/colors';
260
- @forward 'breakouts/src/base/reset';
261
- @forward 'breakouts/src/base/typography';
262
- @forward 'breakouts/src/layout/container';
263
- @forward 'breakouts/src/layout/full-bleed';
264
- @forward 'breakouts/src/layout/breakouts';
265
- @forward 'breakouts/src/layout/grid';
266
- ```
267
-
268
- 💡 Use your custom theme
269
- In your app entry point or component:
270
-
271
- ```scss
272
- @use '@/styles/breakouts' as *;
273
- ```
274
-
275
- This gives you full control over the theme while keeping the rest of the framework intact.
276
-
277
- ## 🛠️ Development
278
-
279
- To build or modify Breakouts locally, follow these steps:
280
-
281
- 1. Install dependencies:
282
-
283
- ```bash
284
- npm install
285
- ```
286
-
287
- 2. Build the CSS files:
288
-
289
- ```bash
290
- npm run build
291
155
  ```
292
156
 
293
- This will generate two files in the dist/ folder:
294
-
295
- breakouts.css: the expanded, human-readable version (ideal for development)
157
+ ---
296
158
 
297
- breakouts.min.css: the minified version (ideal for production)
159
+ ## 💡 Extend Breakouts
298
160
 
299
- You can customize or extend the framework by editing the SCSS source files located in the src/ directory. The entry point is:
161
+ You can write your own mixins or import individual parts:
300
162
 
301
- ```bash
302
- src/_index.scss
163
+ ```scss
164
+ @use 'breakouts/utilities/spacing';
165
+ @use 'breakouts/base/typography';
303
166
  ```
304
167
 
305
- The build process uses Dart Sass under the hood.
306
-
307
- ## 📄 License
308
-
309
- This project is licensed under the [MIT License](LICENSE).
168
+ ---
310
169
 
311
- You are free to use, modify, distribute, and even sell this framework in personal or commercial projects — just include the original license and copyright.
170
+ ## 📦 License
312
171
 
313
- > © 2025 Cantilux
172
+ MIT [Cantilux](https://github.com/Cantilux)
@@ -105,6 +105,426 @@ body {
105
105
  line-height: 1.6;
106
106
  }
107
107
 
108
+ .m-0 {
109
+ margin: 0;
110
+ }
111
+
112
+ .mt-0 {
113
+ margin-top: 0;
114
+ }
115
+
116
+ .mr-0 {
117
+ margin-right: 0;
118
+ }
119
+
120
+ .mb-0 {
121
+ margin-bottom: 0;
122
+ }
123
+
124
+ .ml-0 {
125
+ margin-left: 0;
126
+ }
127
+
128
+ .mx-0 {
129
+ margin-left: 0;
130
+ margin-right: 0;
131
+ }
132
+
133
+ .my-0 {
134
+ margin-top: 0;
135
+ margin-bottom: 0;
136
+ }
137
+
138
+ .p-0 {
139
+ padding: 0;
140
+ }
141
+
142
+ .pt-0 {
143
+ padding-top: 0;
144
+ }
145
+
146
+ .pr-0 {
147
+ padding-right: 0;
148
+ }
149
+
150
+ .pb-0 {
151
+ padding-bottom: 0;
152
+ }
153
+
154
+ .pl-0 {
155
+ padding-left: 0;
156
+ }
157
+
158
+ .px-0 {
159
+ padding-left: 0;
160
+ padding-right: 0;
161
+ }
162
+
163
+ .py-0 {
164
+ padding-top: 0;
165
+ padding-bottom: 0;
166
+ }
167
+
168
+ .m-1 {
169
+ margin: 0.25rem;
170
+ }
171
+
172
+ .mt-1 {
173
+ margin-top: 0.25rem;
174
+ }
175
+
176
+ .mr-1 {
177
+ margin-right: 0.25rem;
178
+ }
179
+
180
+ .mb-1 {
181
+ margin-bottom: 0.25rem;
182
+ }
183
+
184
+ .ml-1 {
185
+ margin-left: 0.25rem;
186
+ }
187
+
188
+ .mx-1 {
189
+ margin-left: 0.25rem;
190
+ margin-right: 0.25rem;
191
+ }
192
+
193
+ .my-1 {
194
+ margin-top: 0.25rem;
195
+ margin-bottom: 0.25rem;
196
+ }
197
+
198
+ .p-1 {
199
+ padding: 0.25rem;
200
+ }
201
+
202
+ .pt-1 {
203
+ padding-top: 0.25rem;
204
+ }
205
+
206
+ .pr-1 {
207
+ padding-right: 0.25rem;
208
+ }
209
+
210
+ .pb-1 {
211
+ padding-bottom: 0.25rem;
212
+ }
213
+
214
+ .pl-1 {
215
+ padding-left: 0.25rem;
216
+ }
217
+
218
+ .px-1 {
219
+ padding-left: 0.25rem;
220
+ padding-right: 0.25rem;
221
+ }
222
+
223
+ .py-1 {
224
+ padding-top: 0.25rem;
225
+ padding-bottom: 0.25rem;
226
+ }
227
+
228
+ .m-2 {
229
+ margin: 0.5rem;
230
+ }
231
+
232
+ .mt-2 {
233
+ margin-top: 0.5rem;
234
+ }
235
+
236
+ .mr-2 {
237
+ margin-right: 0.5rem;
238
+ }
239
+
240
+ .mb-2 {
241
+ margin-bottom: 0.5rem;
242
+ }
243
+
244
+ .ml-2 {
245
+ margin-left: 0.5rem;
246
+ }
247
+
248
+ .mx-2 {
249
+ margin-left: 0.5rem;
250
+ margin-right: 0.5rem;
251
+ }
252
+
253
+ .my-2 {
254
+ margin-top: 0.5rem;
255
+ margin-bottom: 0.5rem;
256
+ }
257
+
258
+ .p-2 {
259
+ padding: 0.5rem;
260
+ }
261
+
262
+ .pt-2 {
263
+ padding-top: 0.5rem;
264
+ }
265
+
266
+ .pr-2 {
267
+ padding-right: 0.5rem;
268
+ }
269
+
270
+ .pb-2 {
271
+ padding-bottom: 0.5rem;
272
+ }
273
+
274
+ .pl-2 {
275
+ padding-left: 0.5rem;
276
+ }
277
+
278
+ .px-2 {
279
+ padding-left: 0.5rem;
280
+ padding-right: 0.5rem;
281
+ }
282
+
283
+ .py-2 {
284
+ padding-top: 0.5rem;
285
+ padding-bottom: 0.5rem;
286
+ }
287
+
288
+ .m-3 {
289
+ margin: 0.75rem;
290
+ }
291
+
292
+ .mt-3 {
293
+ margin-top: 0.75rem;
294
+ }
295
+
296
+ .mr-3 {
297
+ margin-right: 0.75rem;
298
+ }
299
+
300
+ .mb-3 {
301
+ margin-bottom: 0.75rem;
302
+ }
303
+
304
+ .ml-3 {
305
+ margin-left: 0.75rem;
306
+ }
307
+
308
+ .mx-3 {
309
+ margin-left: 0.75rem;
310
+ margin-right: 0.75rem;
311
+ }
312
+
313
+ .my-3 {
314
+ margin-top: 0.75rem;
315
+ margin-bottom: 0.75rem;
316
+ }
317
+
318
+ .p-3 {
319
+ padding: 0.75rem;
320
+ }
321
+
322
+ .pt-3 {
323
+ padding-top: 0.75rem;
324
+ }
325
+
326
+ .pr-3 {
327
+ padding-right: 0.75rem;
328
+ }
329
+
330
+ .pb-3 {
331
+ padding-bottom: 0.75rem;
332
+ }
333
+
334
+ .pl-3 {
335
+ padding-left: 0.75rem;
336
+ }
337
+
338
+ .px-3 {
339
+ padding-left: 0.75rem;
340
+ padding-right: 0.75rem;
341
+ }
342
+
343
+ .py-3 {
344
+ padding-top: 0.75rem;
345
+ padding-bottom: 0.75rem;
346
+ }
347
+
348
+ .m-4 {
349
+ margin: 1rem;
350
+ }
351
+
352
+ .mt-4 {
353
+ margin-top: 1rem;
354
+ }
355
+
356
+ .mr-4 {
357
+ margin-right: 1rem;
358
+ }
359
+
360
+ .mb-4 {
361
+ margin-bottom: 1rem;
362
+ }
363
+
364
+ .ml-4 {
365
+ margin-left: 1rem;
366
+ }
367
+
368
+ .mx-4 {
369
+ margin-left: 1rem;
370
+ margin-right: 1rem;
371
+ }
372
+
373
+ .my-4 {
374
+ margin-top: 1rem;
375
+ margin-bottom: 1rem;
376
+ }
377
+
378
+ .p-4 {
379
+ padding: 1rem;
380
+ }
381
+
382
+ .pt-4 {
383
+ padding-top: 1rem;
384
+ }
385
+
386
+ .pr-4 {
387
+ padding-right: 1rem;
388
+ }
389
+
390
+ .pb-4 {
391
+ padding-bottom: 1rem;
392
+ }
393
+
394
+ .pl-4 {
395
+ padding-left: 1rem;
396
+ }
397
+
398
+ .px-4 {
399
+ padding-left: 1rem;
400
+ padding-right: 1rem;
401
+ }
402
+
403
+ .py-4 {
404
+ padding-top: 1rem;
405
+ padding-bottom: 1rem;
406
+ }
407
+
408
+ .m-5 {
409
+ margin: 1.25rem;
410
+ }
411
+
412
+ .mt-5 {
413
+ margin-top: 1.25rem;
414
+ }
415
+
416
+ .mr-5 {
417
+ margin-right: 1.25rem;
418
+ }
419
+
420
+ .mb-5 {
421
+ margin-bottom: 1.25rem;
422
+ }
423
+
424
+ .ml-5 {
425
+ margin-left: 1.25rem;
426
+ }
427
+
428
+ .mx-5 {
429
+ margin-left: 1.25rem;
430
+ margin-right: 1.25rem;
431
+ }
432
+
433
+ .my-5 {
434
+ margin-top: 1.25rem;
435
+ margin-bottom: 1.25rem;
436
+ }
437
+
438
+ .p-5 {
439
+ padding: 1.25rem;
440
+ }
441
+
442
+ .pt-5 {
443
+ padding-top: 1.25rem;
444
+ }
445
+
446
+ .pr-5 {
447
+ padding-right: 1.25rem;
448
+ }
449
+
450
+ .pb-5 {
451
+ padding-bottom: 1.25rem;
452
+ }
453
+
454
+ .pl-5 {
455
+ padding-left: 1.25rem;
456
+ }
457
+
458
+ .px-5 {
459
+ padding-left: 1.25rem;
460
+ padding-right: 1.25rem;
461
+ }
462
+
463
+ .py-5 {
464
+ padding-top: 1.25rem;
465
+ padding-bottom: 1.25rem;
466
+ }
467
+
468
+ .m-6 {
469
+ margin: 1.5rem;
470
+ }
471
+
472
+ .mt-6 {
473
+ margin-top: 1.5rem;
474
+ }
475
+
476
+ .mr-6 {
477
+ margin-right: 1.5rem;
478
+ }
479
+
480
+ .mb-6 {
481
+ margin-bottom: 1.5rem;
482
+ }
483
+
484
+ .ml-6 {
485
+ margin-left: 1.5rem;
486
+ }
487
+
488
+ .mx-6 {
489
+ margin-left: 1.5rem;
490
+ margin-right: 1.5rem;
491
+ }
492
+
493
+ .my-6 {
494
+ margin-top: 1.5rem;
495
+ margin-bottom: 1.5rem;
496
+ }
497
+
498
+ .p-6 {
499
+ padding: 1.5rem;
500
+ }
501
+
502
+ .pt-6 {
503
+ padding-top: 1.5rem;
504
+ }
505
+
506
+ .pr-6 {
507
+ padding-right: 1.5rem;
508
+ }
509
+
510
+ .pb-6 {
511
+ padding-bottom: 1.5rem;
512
+ }
513
+
514
+ .pl-6 {
515
+ padding-left: 1.5rem;
516
+ }
517
+
518
+ .px-6 {
519
+ padding-left: 1.5rem;
520
+ padding-right: 1.5rem;
521
+ }
522
+
523
+ .py-6 {
524
+ padding-top: 1.5rem;
525
+ padding-bottom: 1.5rem;
526
+ }
527
+
108
528
  body {
109
529
  font-family: system-ui, sans-serif;
110
530
  font-size: 1rem;
@@ -174,6 +594,62 @@ a:hover {
174
594
  color: var(--color-secondary);
175
595
  }
176
596
 
597
+ .text-left {
598
+ text-align: left;
599
+ }
600
+
601
+ .text-center {
602
+ text-align: center;
603
+ }
604
+
605
+ .text-right {
606
+ text-align: right;
607
+ }
608
+
609
+ .text-justify {
610
+ text-align: justify;
611
+ }
612
+
613
+ .text-uppercase {
614
+ text-transform: uppercase;
615
+ }
616
+
617
+ .text-lowercase {
618
+ text-transform: lowercase;
619
+ }
620
+
621
+ .text-capitalize {
622
+ text-transform: capitalize;
623
+ }
624
+
625
+ .font-bold {
626
+ font-weight: bold;
627
+ }
628
+
629
+ .font-normal {
630
+ font-weight: normal;
631
+ }
632
+
633
+ .italic {
634
+ font-style: italic;
635
+ }
636
+
637
+ .not-italic {
638
+ font-style: normal;
639
+ }
640
+
641
+ .leading-tight {
642
+ line-height: 1.25;
643
+ }
644
+
645
+ .leading-normal {
646
+ line-height: 1.5;
647
+ }
648
+
649
+ .leading-loose {
650
+ line-height: 2;
651
+ }
652
+
177
653
  .container {
178
654
  margin-inline: auto;
179
655
  max-width: 72rem;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/theme/_colors.scss","../src/base/_reset.scss","../src/base/_typography.scss","../src/layout/_container.scss","../src/layout/_full-bleed.scss","../src/layout/_breakouts.scss","../src/layout/_grid.scss"],"names":[],"mappings":"AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;IACI;IACA;IACA;IACA;IACA;IACA;IACA;;;AAMR;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;ACvFJ;AACA;AAAA;AAAA;EAGI;EACA;EACA;;;AAGJ;AAAA;EAEI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;ACJJ;EACI,aAde;EAef,WAba;EAcb,aAbe;EAcf;EACA;EACA;;;AAMA;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AALJ;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AALJ;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AALJ;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AALJ;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AALJ;EACI,WApBG;EAqBH;EACA;EACA;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;;AAEA;EACI;;;AC9CR;EACI;EACA;EACA;;;ACHJ;EACI;EACA;EACA;;;ACHJ;EACI;EACA;;;ACFJ;EACI;EACA;EACA;EACA;EACA;;;AAIJ;EACI;EACA,uBACI;EACJ;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;EACA;EACA;;AAEA;EACI;;;AAIR;EACI","file":"breakouts.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/base/_colors.scss","../src/base/_reset.scss","../src/base/_spacing.scss","../src/base/_typography.scss","../src/layout/_container.scss","../src/layout/_full-bleed.scss","../src/layout/_breakouts.scss","../src/layout/_grid.scss"],"names":[],"mappings":"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","file":"breakouts.css"}
@@ -1 +1 @@
1
- :root{--color-background: #ffffff;--color-surface: #f0f0f0;--color-text: #111111;--color-muted: #666666;--color-primary: #0055ff;--color-secondary: #0033aa;--color-accent: #ff4081;--color-neutral-100: #f8f9fa;--color-neutral-200: #e9ecef;--color-neutral-300: #dee2e6;--color-neutral-400: #ced4da;--color-neutral-500: #adb5bd;--color-neutral-600: #6c757d;--color-neutral-700: #495057;--color-neutral-800: #343a40;--color-neutral-900: #212529}.dark,.dark :root{--color-background: #111111;--color-surface: #1a1a1a;--color-text: #eeeeee;--color-muted: #aaaaaa;--color-primary: #0033aa;--color-secondary: #002277;--color-accent: #c60055}.light,.light :root{--color-background: #ffffff;--color-surface: #f8f8f8;--color-text: #222222;--color-muted: #999999;--color-primary: #88b0ff;--color-secondary: #ccd9ff;--color-accent: #ff80ab}@media(prefers-color-scheme: dark){:root:not(.light):not(.dark){--color-background: #111111;--color-surface: #1a1a1a;--color-text: #eeeeee;--color-muted: #aaaaaa;--color-primary: #0033aa;--color-secondary: #002277;--color-accent: #c60055}}.bg-background{background-color:var(--color-background)}.bg-surface{background-color:var(--color-surface)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.bg-accent{background-color:var(--color-accent)}.text-text{color:var(--color-text)}.text-background{color:var(--color-background)}.text-muted{color:var(--color-muted)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{margin:0;padding:0;width:100%;overflow-x:hidden}body{padding:2rem;font-family:system-ui,sans-serif;line-height:1.6}body{font-family:system-ui,sans-serif;font-size:1rem;line-height:1.6;color:var(--color-text);background-color:var(--color-background);margin:0}h1{font-size:2.25rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h2{font-size:1.75rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h3{font-size:1.5rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h4{font-size:1.25rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h5{font-size:1.125rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h6{font-size:1rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}p{margin:1rem 0}a{color:var(--color-primary);text-decoration:underline}a:hover{color:var(--color-secondary)}.container{margin-inline:auto;max-width:72rem;padding-inline:1rem}.full-bleed{width:100vw;margin-left:50%;transform:translateX(-50%)}.breakout{width:100vw;margin-left:calc(-1*(100vw - 100%)/2)}:root{--gap: clamp(1rem, 6vw, 3rem);--full: minmax(var(--gap), 1fr);--feature: minmax(0, 5rem);--popout: minmax(0, 2rem);--content: min(50ch, 100% - var(--gap) * 2)}.breakouts-grid{display:grid;grid-template-columns:[full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end];gap:var(--gap)}.content{grid-column:content}.popout{grid-column:popout}.feature{grid-column:feature}.full{grid-column:full}.grid{display:grid;grid-template-columns:1fr minmax(0, var(--container-max-width, 64rem)) 1fr;gap:var(--gap)}.grid>*{grid-column:2}.grid--full>*{grid-column:1/-1}/*# sourceMappingURL=breakouts.min.css.map */
1
+ :root{--color-background: #ffffff;--color-surface: #f0f0f0;--color-text: #111111;--color-muted: #666666;--color-primary: #0055ff;--color-secondary: #0033aa;--color-accent: #ff4081;--color-neutral-100: #f8f9fa;--color-neutral-200: #e9ecef;--color-neutral-300: #dee2e6;--color-neutral-400: #ced4da;--color-neutral-500: #adb5bd;--color-neutral-600: #6c757d;--color-neutral-700: #495057;--color-neutral-800: #343a40;--color-neutral-900: #212529}.dark,.dark :root{--color-background: #111111;--color-surface: #1a1a1a;--color-text: #eeeeee;--color-muted: #aaaaaa;--color-primary: #0033aa;--color-secondary: #002277;--color-accent: #c60055}.light,.light :root{--color-background: #ffffff;--color-surface: #f8f8f8;--color-text: #222222;--color-muted: #999999;--color-primary: #88b0ff;--color-secondary: #ccd9ff;--color-accent: #ff80ab}@media(prefers-color-scheme: dark){:root:not(.light):not(.dark){--color-background: #111111;--color-surface: #1a1a1a;--color-text: #eeeeee;--color-muted: #aaaaaa;--color-primary: #0033aa;--color-secondary: #002277;--color-accent: #c60055}}.bg-background{background-color:var(--color-background)}.bg-surface{background-color:var(--color-surface)}.bg-primary{background-color:var(--color-primary)}.bg-secondary{background-color:var(--color-secondary)}.bg-accent{background-color:var(--color-accent)}.text-text{color:var(--color-text)}.text-background{color:var(--color-background)}.text-muted{color:var(--color-muted)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{margin:0;padding:0;width:100%;overflow-x:hidden}body{padding:2rem;font-family:system-ui,sans-serif;line-height:1.6}.m-0{margin:0}.mt-0{margin-top:0}.mr-0{margin-right:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mx-0{margin-left:0;margin-right:0}.my-0{margin-top:0;margin-bottom:0}.p-0{padding:0}.pt-0{padding-top:0}.pr-0{padding-right:0}.pb-0{padding-bottom:0}.pl-0{padding-left:0}.px-0{padding-left:0;padding-right:0}.py-0{padding-top:0;padding-bottom:0}.m-1{margin:.25rem}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.p-1{padding:.25rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.m-2{margin:.5rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.p-2{padding:.5rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.m-3{margin:.75rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.p-3{padding:.75rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.m-4{margin:1rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-4{margin-top:1rem;margin-bottom:1rem}.p-4{padding:1rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-4{padding-top:1rem;padding-bottom:1rem}.m-5{margin:1.25rem}.mt-5{margin-top:1.25rem}.mr-5{margin-right:1.25rem}.mb-5{margin-bottom:1.25rem}.ml-5{margin-left:1.25rem}.mx-5{margin-left:1.25rem;margin-right:1.25rem}.my-5{margin-top:1.25rem;margin-bottom:1.25rem}.p-5{padding:1.25rem}.pt-5{padding-top:1.25rem}.pr-5{padding-right:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.m-6{margin:1.5rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.p-6{padding:1.5rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}body{font-family:system-ui,sans-serif;font-size:1rem;line-height:1.6;color:var(--color-text);background-color:var(--color-background);margin:0}h1{font-size:2.25rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h2{font-size:1.75rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h3{font-size:1.5rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h4{font-size:1.25rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h5{font-size:1.125rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}h6{font-size:1rem;line-height:1.2;margin:2rem 0 1rem;font-weight:600;color:var(--color-text)}p{margin:1rem 0}a{color:var(--color-primary);text-decoration:underline}a:hover{color:var(--color-secondary)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.font-bold{font-weight:bold}.font-normal{font-weight:normal}.italic{font-style:italic}.not-italic{font-style:normal}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.leading-loose{line-height:2}.container{margin-inline:auto;max-width:72rem;padding-inline:1rem}.full-bleed{width:100vw;margin-left:50%;transform:translateX(-50%)}.breakout{width:100vw;margin-left:calc(-1*(100vw - 100%)/2)}:root{--gap: clamp(1rem, 6vw, 3rem);--full: minmax(var(--gap), 1fr);--feature: minmax(0, 5rem);--popout: minmax(0, 2rem);--content: min(50ch, 100% - var(--gap) * 2)}.breakouts-grid{display:grid;grid-template-columns:[full-start] var(--full) [feature-start] var(--feature) [popout-start] var(--popout) [content-start] var(--content) [content-end] var(--popout) [popout-end] var(--feature) [feature-end] var(--full) [full-end];gap:var(--gap)}.content{grid-column:content}.popout{grid-column:popout}.feature{grid-column:feature}.full{grid-column:full}.grid{display:grid;grid-template-columns:1fr minmax(0, var(--container-max-width, 64rem)) 1fr;gap:var(--gap)}.grid>*{grid-column:2}.grid--full>*{grid-column:1/-1}/*# sourceMappingURL=breakouts.min.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/theme/_colors.scss","../src/base/_reset.scss","../src/base/_typography.scss","../src/layout/_container.scss","../src/layout/_full-bleed.scss","../src/layout/_breakouts.scss","../src/layout/_grid.scss"],"names":[],"mappings":"AAEA,MACI,4BACA,yBACA,sBACA,uBACA,yBACA,2BACA,wBAEA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BACA,6BAGJ,kBAEI,4BACA,yBACA,sBACA,uBACA,yBACA,2BACA,wBAGJ,oBAEI,4BACA,yBACA,sBACA,uBACA,yBACA,2BACA,wBAGJ,mCACI,6BACI,4BACA,yBACA,sBACA,uBACA,yBACA,2BACA,yBAMR,eACI,yCAGJ,YACI,sCAGJ,YACI,sCAGJ,cACI,wCAGJ,WACI,qCAGJ,WACI,wBAGJ,iBACI,8BAGJ,YACI,yBCtFJ,qBAGI,sBACA,SACA,UAGJ,UAEI,SACA,UACA,WACA,kBAGJ,KACI,aACA,iCACA,gBCJJ,KACI,YAde,qBAef,UAba,KAcb,YAbe,IAcf,wBACA,yCACA,SAMA,GACI,UApBG,QAqBH,gBACA,mBACA,gBACA,wBALJ,GACI,UApBG,QAqBH,gBACA,mBACA,gBACA,wBALJ,GACI,UApBG,OAqBH,gBACA,mBACA,gBACA,wBALJ,GACI,UApBG,QAqBH,gBACA,mBACA,gBACA,wBALJ,GACI,UApBG,SAqBH,gBACA,mBACA,gBACA,wBALJ,GACI,UApBG,KAqBH,gBACA,mBACA,gBACA,wBAIR,EACI,cAGJ,EACI,2BACA,0BAEA,QACI,6BC9CR,WACI,mBACA,gBACA,oBCHJ,YACI,YACA,gBACA,2BCHJ,UACI,YACA,sCCFJ,MACI,8BACA,gCACA,2BACA,0BACA,4CAIJ,gBACI,aACA,sBACI,iNACJ,eAGJ,SACI,oBAGJ,QACI,mBAGJ,SACI,oBAGJ,MACI,iBAIJ,MACI,aACA,2EACA,eAEA,QACI,cAIR,cACI","file":"breakouts.min.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/base/_colors.scss","../src/base/_reset.scss","../src/base/_spacing.scss","../src/base/_typography.scss","../src/layout/_container.scss","../src/layout/_full-bleed.scss","../src/layout/_breakouts.scss","../src/layout/_grid.scss"],"names":[],"mappings":"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","file":"breakouts.min.css"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "breakouts",
3
- "version": "0.0.14",
3
+ "version": "0.1.1",
4
4
  "description": "A personal SCSS/CSS layout utility framework.",
5
5
  "main": "dist/breakouts.css",
6
6
  "files": [
@@ -17,6 +17,6 @@
17
17
  "author": "Tuo Nome",
18
18
  "license": "MIT",
19
19
  "devDependencies": {
20
- "sass": "^1.75.0"
20
+ "sass": "^1.86.2"
21
21
  }
22
22
  }
package/src/_index.scss CHANGED
@@ -1,10 +1,11 @@
1
1
  // Theme and configurable variables
2
- @forward 'theme/variables';
3
- @use 'theme/variables' as *;
4
- @forward 'theme/colors';
2
+ @forward 'base/variables';
3
+ @use 'base/variables' as *;
4
+ @forward 'base/colors';
5
5
 
6
6
  // Base styles
7
7
  @forward 'base/reset';
8
+ @forward 'base/spacing';
8
9
  @forward 'base/typography';
9
10
 
10
11
  // Layout utilities
@@ -0,0 +1,42 @@
1
+ $space-scale: (0: 0,
2
+ 1: 0.25rem,
3
+ 2: 0.5rem,
4
+ 3: 0.75rem,
5
+ 4: 1rem,
6
+ 5: 1.25rem,
7
+ 6: 1.5rem) !default;
8
+
9
+ $spacing-properties: (m: margin,
10
+ mt: margin-top,
11
+ mr: margin-right,
12
+ mb: margin-bottom,
13
+ ml: margin-left,
14
+ mx: (margin-left, margin-right),
15
+ my: (margin-top, margin-bottom),
16
+
17
+ p: padding,
18
+ pt: padding-top,
19
+ pr: padding-right,
20
+ pb: padding-bottom,
21
+ pl: padding-left,
22
+ px: (padding-left, padding-right),
23
+ py: (padding-top, padding-bottom));
24
+
25
+ @each $name,
26
+ $value in $space-scale {
27
+
28
+ @each $prefix,
29
+ $properties in $spacing-properties {
30
+ .#{$prefix}-#{$name} {
31
+ @if type-of($properties)=='list' {
32
+ @each $prop in $properties {
33
+ #{$prop}: $value;
34
+ }
35
+ }
36
+
37
+ @else {
38
+ #{$properties}: $value;
39
+ }
40
+ }
41
+ }
42
+ }
@@ -46,4 +46,64 @@ a {
46
46
  &:hover {
47
47
  color: var(--color-secondary);
48
48
  }
49
+ }
50
+
51
+ // Text alignment utilities
52
+ .text-left {
53
+ text-align: left;
54
+ }
55
+
56
+ .text-center {
57
+ text-align: center;
58
+ }
59
+
60
+ .text-right {
61
+ text-align: right;
62
+ }
63
+
64
+ .text-justify {
65
+ text-align: justify;
66
+ }
67
+
68
+ // Text transformation utilities
69
+ .text-uppercase {
70
+ text-transform: uppercase;
71
+ }
72
+
73
+ .text-lowercase {
74
+ text-transform: lowercase;
75
+ }
76
+
77
+ .text-capitalize {
78
+ text-transform: capitalize;
79
+ }
80
+
81
+ // Font style and weight
82
+ .font-bold {
83
+ font-weight: bold;
84
+ }
85
+
86
+ .font-normal {
87
+ font-weight: normal;
88
+ }
89
+
90
+ .italic {
91
+ font-style: italic;
92
+ }
93
+
94
+ .not-italic {
95
+ font-style: normal;
96
+ }
97
+
98
+ // Line height utilities
99
+ .leading-tight {
100
+ line-height: 1.25;
101
+ }
102
+
103
+ .leading-normal {
104
+ line-height: 1.5;
105
+ }
106
+
107
+ .leading-loose {
108
+ line-height: 2;
49
109
  }
@@ -0,0 +1,28 @@
1
+ // src/theme/_chupa-pop.scss
2
+
3
+ $color-primary: #ecb838 !default; // Giallo dorato
4
+ $color-secondary: #ab4073 !default; // Rosa scuro
5
+ $color-accent: #196484 !default; // Blu petrolio
6
+
7
+ @forward 'breakouts/src/theme/variables' with (
8
+ $color-primary: $primary,
9
+ $color-primary-dark: darken($primary, 15%),
10
+ $color-primary-light: lighten($primary, 15%),
11
+
12
+ $color-secondary: $secondary,
13
+ $color-secondary-dark: darken($secondary, 15%),
14
+ $color-secondary-light: lighten($secondary, 15%),
15
+
16
+ $color-accent: $accent,
17
+ $color-accent-dark: darken($accent, 15%),
18
+ $color-accent-light: lighten($accent, 15%),
19
+ );
20
+
21
+ @use 'breakouts/src/theme/variables' as *;
22
+ @forward 'breakouts/src/theme/colors';
23
+ @forward 'breakouts/src/base/reset';
24
+ @forward 'breakouts/src/base/typography';
25
+ @forward 'breakouts/src/layout/container';
26
+ @forward 'breakouts/src/layout/full-bleed';
27
+ @forward 'breakouts/src/layout/breakouts';
28
+ @forward 'breakouts/src/layout/grid';
@@ -0,0 +1,36 @@
1
+ // src/theme/medical.scss
2
+
3
+ $primary: #4682B4 !default; // Blu Acciaio
4
+ $secondary: #9DC183 !default; // Verde Salvia
5
+ $accent: #A9A9A9 !default; // Grigio scuro
6
+ $muted: #D3D3D3 !default; // Grigio chiaro
7
+ $background: #FFFFFF !default; // Bianco puro
8
+
9
+ @forward 'breakouts/src/theme/variables'with ($color-primary: $primary,
10
+ $color-primary-dark: darken($primary, 15%),
11
+ $color-primary-light: lighten($primary, 15%),
12
+
13
+ $color-secondary: $secondary,
14
+ $color-secondary-dark: darken($secondary, 15%),
15
+ $color-secondary-light: lighten($secondary, 15%),
16
+
17
+ $color-accent: $accent,
18
+ $color-accent-dark: darken($accent, 15%),
19
+ $color-accent-light: lighten($accent, 15%),
20
+
21
+ $color-muted: $muted,
22
+ $color-muted-dark: darken($muted, 15%),
23
+ $color-muted-light: lighten($muted, 15%),
24
+
25
+ $color-background: $background,
26
+ $color-background-dark: darken($background, 5%),
27
+ $color-background-light: lighten($background, 5%));
28
+
29
+ @use 'breakouts/src/theme/variables'as *;
30
+ @forward 'breakouts/src/theme/colors';
31
+ @forward 'breakouts/src/base/reset';
32
+ @forward 'breakouts/src/base/typography';
33
+ @forward 'breakouts/src/layout/container';
34
+ @forward 'breakouts/src/layout/full-bleed';
35
+ @forward 'breakouts/src/layout/breakouts';
36
+ @forward 'breakouts/src/layout/grid';
@@ -0,0 +1,38 @@
1
+ // src/theme/tootsie-pop.scss
2
+
3
+ $primary: #93329E !default; // Viola medio
4
+ $secondary: #F2711C !default; // Caramello
5
+ $accent: #E94057 !default; // Rosa lampone
6
+ $muted: #FFE5B4 !default; // Vaniglia chiara
7
+ $background: #4F2F4C !default; // Viola scuro (sfondo)
8
+
9
+ @forward 'breakouts/src/theme/variables' with (
10
+ $color-primary: $primary,
11
+ $color-primary-dark: darken($primary, 15%),
12
+ $color-primary-light: lighten($primary, 15%),
13
+
14
+ $color-secondary: $secondary,
15
+ $color-secondary-dark: darken($secondary, 15%),
16
+ $color-secondary-light: lighten($secondary, 15%),
17
+
18
+ $color-accent: $accent,
19
+ $color-accent-dark: darken($accent, 15%),
20
+ $color-accent-light: lighten($accent, 15%),
21
+
22
+ $color-muted: $muted,
23
+ $color-muted-dark: darken($muted, 15%),
24
+ $color-muted-light: lighten($muted, 15%),
25
+
26
+ $color-background: $background,
27
+ $color-background-dark: darken($background, 5%),
28
+ $color-background-light: lighten($background, 5%)
29
+ );
30
+
31
+ @use 'breakouts/src/theme/variables' as *;
32
+ @forward 'breakouts/src/theme/colors';
33
+ @forward 'breakouts/src/base/reset';
34
+ @forward 'breakouts/src/base/typography';
35
+ @forward 'breakouts/src/layout/container';
36
+ @forward 'breakouts/src/layout/full-bleed';
37
+ @forward 'breakouts/src/layout/breakouts';
38
+ @forward 'breakouts/src/layout/grid';
File without changes
File without changes