@astuteo/breakout-grid 5.1.5 → 5.2.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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
"use strict";
|
|
3
|
-
const VERSION = `v${"5.
|
|
3
|
+
const VERSION = `v${"5.2.0"} lite`;
|
|
4
4
|
const LOREM_CONTENT = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
|
|
5
5
|
|
|
6
6
|
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet.`;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function() {
|
|
2
2
|
"use strict";
|
|
3
|
-
const VERSION = `v${"5.
|
|
3
|
+
const VERSION = `v${"5.2.0"}`;
|
|
4
4
|
const LOREM_CONTENT = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
|
|
5
5
|
|
|
6
6
|
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet.`;
|
|
@@ -77,13 +77,42 @@ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
|
|
|
77
77
|
restoreInput: "",
|
|
78
78
|
restoreError: null,
|
|
79
79
|
sectionCopied: null,
|
|
80
|
+
cssDropdownOpen: false,
|
|
80
81
|
hasConfigOverride: false,
|
|
81
82
|
showCloseWarningModal: false,
|
|
82
83
|
gridOpacity: 0.8,
|
|
83
84
|
backdropOpacity: 0.85
|
|
84
85
|
};
|
|
85
86
|
}
|
|
86
|
-
const BUILD_VERSION = "5.
|
|
87
|
+
const BUILD_VERSION = "5.2.0";
|
|
88
|
+
function wrapWithTailwindUtilities(css) {
|
|
89
|
+
return css.replace(
|
|
90
|
+
/^\.(-?[a-zA-Z_][\w-]*)\s*\{/gm,
|
|
91
|
+
"@utility $1 {"
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
function generateTailwindCSSExport(c, version = BUILD_VERSION) {
|
|
95
|
+
const css = generateCSSExport(c, version);
|
|
96
|
+
const tailwindCss = wrapWithTailwindUtilities(css);
|
|
97
|
+
return tailwindCss.replace(
|
|
98
|
+
/INTEGRATION \(ITCSS \+ Tailwind v4\)[\s\S]*?QUICK START/,
|
|
99
|
+
`INTEGRATION (Tailwind v4 @utility)
|
|
100
|
+
* ============================================================================
|
|
101
|
+
*
|
|
102
|
+
* This file uses @utility directives — requires Tailwind CSS v4+.
|
|
103
|
+
* All utilities support responsive and state variants:
|
|
104
|
+
*
|
|
105
|
+
* <div class="col-content md:col-feature lg:col-full">...</div>
|
|
106
|
+
*
|
|
107
|
+
* Add this file to your CSS imports:
|
|
108
|
+
*
|
|
109
|
+
* @import 'tailwindcss';
|
|
110
|
+
* @import './_objects.breakout-grid.tw.css';
|
|
111
|
+
*
|
|
112
|
+
* ============================================================================
|
|
113
|
+
* QUICK START`
|
|
114
|
+
);
|
|
115
|
+
}
|
|
87
116
|
function generateCSSExport(c, version = BUILD_VERSION) {
|
|
88
117
|
var _a, _b, _c, _d, _e;
|
|
89
118
|
const VERSION2 = version;
|
|
@@ -979,13 +1008,15 @@ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
|
|
|
979
1008
|
setTimeout(() => this.copySuccess = false, 2e3);
|
|
980
1009
|
});
|
|
981
1010
|
},
|
|
982
|
-
downloadCSS() {
|
|
983
|
-
const
|
|
1011
|
+
downloadCSS(format = "plain") {
|
|
1012
|
+
const config = this.generateConfigExport();
|
|
1013
|
+
const css = format === "tailwind" ? this.generateTailwindCSSExport(config) : this.generateCSSExport(config);
|
|
1014
|
+
const filename = format === "tailwind" ? "_objects.breakout-grid.tw.css" : "_objects.breakout-grid.css";
|
|
984
1015
|
const blob = new Blob([css], { type: "text/css" });
|
|
985
1016
|
const url = URL.createObjectURL(blob);
|
|
986
1017
|
const a = document.createElement("a");
|
|
987
1018
|
a.href = url;
|
|
988
|
-
a.download =
|
|
1019
|
+
a.download = filename;
|
|
989
1020
|
a.click();
|
|
990
1021
|
URL.revokeObjectURL(url);
|
|
991
1022
|
},
|
|
@@ -2396,9 +2427,24 @@ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
|
|
|
2396
2427
|
Reset
|
|
2397
2428
|
</button>
|
|
2398
2429
|
</div>
|
|
2399
|
-
<
|
|
2400
|
-
|
|
2401
|
-
|
|
2430
|
+
<div style="position: relative; width: 100%;">
|
|
2431
|
+
<button @click="cssDropdownOpen = !cssDropdownOpen" style="width: 100%; padding: 10px 12px; font-size: 12px; font-weight: 600; border: none; border-radius: 4px; cursor: pointer; background: #1a1a2e; color: white; display: flex; align-items: center; justify-content: center; gap: 6px;">
|
|
2432
|
+
Download CSS <span style="font-size: 9px;">▾</span>
|
|
2433
|
+
</button>
|
|
2434
|
+
<div x-show="cssDropdownOpen" @click.away="cssDropdownOpen = false" x-transition
|
|
2435
|
+
style="position: absolute; bottom: 100%; left: 0; right: 0; margin-bottom: 4px; background: white; border: 1px solid #e5e5e5; border-radius: 4px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); overflow: hidden; z-index: 10;">
|
|
2436
|
+
<button @click="downloadCSS('plain'); cssDropdownOpen = false"
|
|
2437
|
+
style="display: block; width: 100%; padding: 10px 16px; font-size: 11px; font-weight: 600; border: none; background: white; color: #374151; cursor: pointer; text-align: left;"
|
|
2438
|
+
@mouseenter="$el.style.background='#f3f4f6'" @mouseleave="$el.style.background='white'">
|
|
2439
|
+
Plain CSS
|
|
2440
|
+
</button>
|
|
2441
|
+
<button @click="downloadCSS('tailwind'); cssDropdownOpen = false"
|
|
2442
|
+
style="display: block; width: 100%; padding: 10px 16px; font-size: 11px; font-weight: 600; border: none; background: white; color: #374151; cursor: pointer; text-align: left; border-top: 1px solid #f3f4f6;"
|
|
2443
|
+
@mouseenter="$el.style.background='#f3f4f6'" @mouseleave="$el.style.background='white'">
|
|
2444
|
+
Tailwind v4
|
|
2445
|
+
</button>
|
|
2446
|
+
</div>
|
|
2447
|
+
</div>
|
|
2402
2448
|
</div>
|
|
2403
2449
|
</div>
|
|
2404
2450
|
</div>
|
|
@@ -2584,6 +2630,7 @@ Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed
|
|
|
2584
2630
|
...methods,
|
|
2585
2631
|
// CSS export
|
|
2586
2632
|
generateCSSExport,
|
|
2633
|
+
generateTailwindCSSExport,
|
|
2587
2634
|
cssExportVersion: BUILD_VERSION,
|
|
2588
2635
|
// Template
|
|
2589
2636
|
template
|
|
@@ -0,0 +1,653 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breakout Grid - Objects Layer (ITCSS)
|
|
3
|
+
* Version: 5.2.0
|
|
4
|
+
*
|
|
5
|
+
* Documentation: https://github.com/astuteo-llc/breakout-grid
|
|
6
|
+
*
|
|
7
|
+
* ============================================================================
|
|
8
|
+
* TABLE OF CONTENTS
|
|
9
|
+
* ============================================================================
|
|
10
|
+
*
|
|
11
|
+
* CONFIGURATION
|
|
12
|
+
* - Configuration Variables ........... Customizable :root variables
|
|
13
|
+
* - Computed Values ................... Auto-calculated (do not edit)
|
|
14
|
+
*
|
|
15
|
+
* GRID CONTAINERS
|
|
16
|
+
* - Grid Container - Main ............. .grid-cols-breakout
|
|
17
|
+
* - Subgrid ........................... .grid-cols-breakout-subgrid
|
|
18
|
+
* - Left/Right Aligned Variants ....... .grid-cols-{area}-{left|right}
|
|
19
|
+
* - Breakout Modifiers ................ .breakout-to-{content|popout|feature}
|
|
20
|
+
* - Breakout None ..................... .breakout-none, .breakout-none-flex
|
|
21
|
+
*
|
|
22
|
+
* COLUMN UTILITIES
|
|
23
|
+
* - Basic ............................. .col-{full|feature|popout|content|center}
|
|
24
|
+
* - Start/End ......................... .col-start-*, .col-end-*
|
|
25
|
+
* - Left/Right Spans .................. .col-*-left, .col-*-right
|
|
26
|
+
* - Advanced Spans .................... .col-*-to-*
|
|
27
|
+
* - Full Limit ........................ .col-full-limit
|
|
28
|
+
*
|
|
29
|
+
* SPACING UTILITIES
|
|
30
|
+
* - Padding ........................... .p-breakout, .p-gap, .p-*-to-content
|
|
31
|
+
* - Margins ........................... .m-breakout, .m-gap, .-m-*
|
|
32
|
+
*
|
|
33
|
+
* ============================================================================
|
|
34
|
+
* INTEGRATION (Tailwind v4 @utility)
|
|
35
|
+
* ============================================================================
|
|
36
|
+
*
|
|
37
|
+
* This file uses @utility directives — requires Tailwind CSS v4+.
|
|
38
|
+
* All utilities support responsive and state variants:
|
|
39
|
+
*
|
|
40
|
+
* <div class="col-content md:col-feature lg:col-full">...</div>
|
|
41
|
+
*
|
|
42
|
+
* Add this file to your CSS imports:
|
|
43
|
+
*
|
|
44
|
+
* @import 'tailwindcss';
|
|
45
|
+
* @import './_objects.breakout-grid.tw.css';
|
|
46
|
+
*
|
|
47
|
+
* ============================================================================
|
|
48
|
+
* QUICK START
|
|
49
|
+
* ============================================================================
|
|
50
|
+
*
|
|
51
|
+
* <main class="grid-cols-breakout">
|
|
52
|
+
* <article class="col-content">Reading width</article>
|
|
53
|
+
* <figure class="col-feature">Wider for images</figure>
|
|
54
|
+
* <div class="col-full">Edge to edge</div>
|
|
55
|
+
* </main>
|
|
56
|
+
*
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
/* ============================================================================
|
|
60
|
+
CONFIGURATION VARIABLES
|
|
61
|
+
============================================================================
|
|
62
|
+
To restore this grid in the visualizer, copy from here to END CONFIGURATION.
|
|
63
|
+
Paste into the "Restore" dialog at:
|
|
64
|
+
https://github.com/astuteo-llc/breakout-grid
|
|
65
|
+
============================================================================ */
|
|
66
|
+
|
|
67
|
+
:root {
|
|
68
|
+
/* Content (text width) */
|
|
69
|
+
--content-min: 53rem;
|
|
70
|
+
--content-base: 75vw;
|
|
71
|
+
--content-max: 61rem;
|
|
72
|
+
|
|
73
|
+
/* Default column for children without col-* class */
|
|
74
|
+
--default-col: content;
|
|
75
|
+
|
|
76
|
+
/* Track widths */
|
|
77
|
+
--popout-width: 5rem;
|
|
78
|
+
--full-limit: 115rem;
|
|
79
|
+
|
|
80
|
+
/* Feature track */
|
|
81
|
+
--feature-min: 0rem;
|
|
82
|
+
--feature-scale: 12vw;
|
|
83
|
+
--feature-max: 12rem;
|
|
84
|
+
|
|
85
|
+
/* Outer margins */
|
|
86
|
+
--base-gap: 1rem;
|
|
87
|
+
--max-gap: 15rem;
|
|
88
|
+
|
|
89
|
+
/* Responsive scale */
|
|
90
|
+
--gap-scale-default: 4vw;
|
|
91
|
+
--gap-scale-lg: 5vw;
|
|
92
|
+
--gap-scale-xl: 6vw;
|
|
93
|
+
|
|
94
|
+
/* Breakout padding */
|
|
95
|
+
--breakout-min: 1rem;
|
|
96
|
+
--breakout-scale: 5vw;
|
|
97
|
+
|
|
98
|
+
/* Breakpoints (used in media queries below) */
|
|
99
|
+
/* --breakpoint-lg: 1024pxpx; */
|
|
100
|
+
/* --breakpoint-xl: 1280pxpx; */
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* ============================================================================
|
|
104
|
+
END CONFIGURATION
|
|
105
|
+
============================================================================ */
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
/* ============================================================================
|
|
109
|
+
COMPUTED VALUES - DO NOT EDIT
|
|
110
|
+
============================================================================
|
|
111
|
+
These are calculated from the customizable variables above.
|
|
112
|
+
Editing these directly will break the grid calculations.
|
|
113
|
+
============================================================================ */
|
|
114
|
+
|
|
115
|
+
:root {
|
|
116
|
+
/* Responsive gap: scales between base and max based on viewport */
|
|
117
|
+
--gap: clamp(var(--base-gap), var(--gap-scale-default), var(--max-gap));
|
|
118
|
+
|
|
119
|
+
/* Computed gap: larger value for full-width spacing */
|
|
120
|
+
--computed-gap: max(var(--gap), calc((100vw - var(--content)) / 10));
|
|
121
|
+
|
|
122
|
+
/* Content width: fluid between min/max, respects gap on both sides */
|
|
123
|
+
--content: min(clamp(var(--content-min), var(--content-base), var(--content-max)), 100% - var(--gap) * 2);
|
|
124
|
+
|
|
125
|
+
/* Content inset: for left/right aligned grids (single gap) */
|
|
126
|
+
--content-inset: min(clamp(var(--content-min), var(--content-base), var(--content-max)), calc(100% - var(--gap)));
|
|
127
|
+
|
|
128
|
+
/* Half content: used for center alignment */
|
|
129
|
+
--content-half: calc(var(--content) / 2);
|
|
130
|
+
|
|
131
|
+
/* Track definitions for grid-template-columns */
|
|
132
|
+
--full: minmax(var(--gap), 1fr);
|
|
133
|
+
--feature: minmax(0, clamp(var(--feature-min), var(--feature-scale), var(--feature-max)));
|
|
134
|
+
--popout: minmax(0, var(--popout-width));
|
|
135
|
+
|
|
136
|
+
/* Alignment padding: for aligning content inside wider columns */
|
|
137
|
+
--breakout-padding: clamp(var(--breakout-min), var(--breakout-scale), var(--popout-width));
|
|
138
|
+
--popout-to-content: clamp(var(--breakout-min), var(--breakout-scale), var(--popout-width));
|
|
139
|
+
--feature-to-content: calc(clamp(var(--feature-min), var(--feature-scale), var(--feature-max)) + var(--popout-width));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Responsive gap scaling */
|
|
143
|
+
@media (min-width: 1024pxpx) {
|
|
144
|
+
:root {
|
|
145
|
+
--gap: clamp(var(--base-gap), var(--gap-scale-lg), var(--max-gap));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@media (min-width: 1280pxpx) {
|
|
150
|
+
:root {
|
|
151
|
+
--gap: clamp(var(--base-gap), var(--gap-scale-xl), var(--max-gap));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* ========================================
|
|
156
|
+
Grid Container - Main
|
|
157
|
+
========================================
|
|
158
|
+
|
|
159
|
+
The primary grid container. Apply to any element that should use
|
|
160
|
+
the breakout grid system. All direct children default to the
|
|
161
|
+
content column unless given a col-* class.
|
|
162
|
+
|
|
163
|
+
Basic usage:
|
|
164
|
+
<main class="grid-cols-breakout">
|
|
165
|
+
<article>Default content width</article>
|
|
166
|
+
<figure class="col-feature">Wider for images</figure>
|
|
167
|
+
<div class="col-full">Edge to edge</div>
|
|
168
|
+
</main>
|
|
169
|
+
*/
|
|
170
|
+
@utility grid-cols-breakout {
|
|
171
|
+
display: grid;
|
|
172
|
+
grid-template-columns:
|
|
173
|
+
[full-start] var(--full)
|
|
174
|
+
[feature-start] var(--feature)
|
|
175
|
+
[popout-start] var(--popout)
|
|
176
|
+
[content-start] var(--content-half) [center-start center-end] var(--content-half) [content-end]
|
|
177
|
+
var(--popout) [popout-end]
|
|
178
|
+
var(--feature) [feature-end]
|
|
179
|
+
var(--full) [full-end];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* Default column for direct children without explicit col-* class */
|
|
183
|
+
[class*='grid-cols-breakout'] > *:not([class*='col-']),
|
|
184
|
+
[class*='grid-cols-feature'] > *:not([class*='col-']),
|
|
185
|
+
[class*='grid-cols-popout'] > *:not([class*='col-']),
|
|
186
|
+
[class*='grid-cols-content'] > *:not([class*='col-']) {
|
|
187
|
+
grid-column: var(--default-col, content);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* ----------------------------------------
|
|
191
|
+
Subgrid - Nested Alignment
|
|
192
|
+
----------------------------------------
|
|
193
|
+
|
|
194
|
+
Use subgrid when you need children of a spanning element to align
|
|
195
|
+
with the parent grid's tracks. The child inherits the parent's
|
|
196
|
+
column lines.
|
|
197
|
+
|
|
198
|
+
Example - Card grid inside a feature-width container:
|
|
199
|
+
<div class="col-feature grid-cols-breakout-subgrid">
|
|
200
|
+
<h2 class="col-content">Title aligns with content</h2>
|
|
201
|
+
<div class="col-feature">Full width of parent</div>
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
Browser support: ~93% (check caniuse.com/css-subgrid)
|
|
205
|
+
*/
|
|
206
|
+
@utility grid-cols-breakout-subgrid {
|
|
207
|
+
display: grid;
|
|
208
|
+
grid-template-columns: subgrid;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* ========================================
|
|
212
|
+
Grid Container - Left/Right Aligned Variants
|
|
213
|
+
========================================
|
|
214
|
+
|
|
215
|
+
Use these when content should anchor to one side instead of centering.
|
|
216
|
+
Common for asymmetric layouts, sidebars, or split-screen designs.
|
|
217
|
+
|
|
218
|
+
Left variants: Content anchors to left edge, right side has outer tracks
|
|
219
|
+
Right variants: Content anchors to right edge, left side has outer tracks
|
|
220
|
+
|
|
221
|
+
Example - Image left, text right:
|
|
222
|
+
<section class="grid-cols-feature-left">
|
|
223
|
+
<figure class="col-feature">Image anchored left</figure>
|
|
224
|
+
<div class="col-content">Text in content area</div>
|
|
225
|
+
</section>
|
|
226
|
+
|
|
227
|
+
Example - Sidebar layout:
|
|
228
|
+
<div class="grid-cols-content-right">
|
|
229
|
+
<aside class="col-full">Sidebar fills left</aside>
|
|
230
|
+
<main class="col-content">Main content right-aligned</main>
|
|
231
|
+
</div>
|
|
232
|
+
*/
|
|
233
|
+
@utility grid-cols-feature-left {
|
|
234
|
+
display: grid;
|
|
235
|
+
grid-template-columns:
|
|
236
|
+
[full-start] var(--full)
|
|
237
|
+
[feature-start] var(--feature)
|
|
238
|
+
[popout-start] var(--popout)
|
|
239
|
+
[content-start] var(--content-inset) [content-end]
|
|
240
|
+
var(--popout) [popout-end]
|
|
241
|
+
var(--feature) [feature-end full-end];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@utility grid-cols-popout-left {
|
|
245
|
+
display: grid;
|
|
246
|
+
grid-template-columns:
|
|
247
|
+
[full-start] var(--full)
|
|
248
|
+
[feature-start] var(--feature)
|
|
249
|
+
[popout-start] var(--popout)
|
|
250
|
+
[content-start] var(--content-inset) [content-end]
|
|
251
|
+
var(--popout) [popout-end full-end];
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
@utility grid-cols-content-left {
|
|
255
|
+
display: grid;
|
|
256
|
+
grid-template-columns:
|
|
257
|
+
[full-start] var(--full)
|
|
258
|
+
[feature-start] var(--feature)
|
|
259
|
+
[popout-start] var(--popout)
|
|
260
|
+
[content-start] var(--content-inset) [content-end full-end];
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/* ========================================
|
|
264
|
+
Grid Container - Right Aligned Variants
|
|
265
|
+
======================================== */
|
|
266
|
+
@utility grid-cols-feature-right {
|
|
267
|
+
display: grid;
|
|
268
|
+
grid-template-columns:
|
|
269
|
+
[full-start feature-start] var(--feature)
|
|
270
|
+
[popout-start] var(--popout)
|
|
271
|
+
[content-start] var(--content-inset) [content-end]
|
|
272
|
+
var(--popout) [popout-end]
|
|
273
|
+
var(--feature) [feature-end]
|
|
274
|
+
var(--full) [full-end];
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
@utility grid-cols-popout-right {
|
|
278
|
+
display: grid;
|
|
279
|
+
grid-template-columns:
|
|
280
|
+
[full-start popout-start] var(--popout)
|
|
281
|
+
[content-start] var(--content-inset) [content-end]
|
|
282
|
+
var(--popout) [popout-end]
|
|
283
|
+
var(--feature) [feature-end]
|
|
284
|
+
var(--full) [full-end];
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
@utility grid-cols-content-right {
|
|
288
|
+
display: grid;
|
|
289
|
+
grid-template-columns:
|
|
290
|
+
[full-start content-start] var(--content-inset) [content-end]
|
|
291
|
+
var(--popout) [popout-end]
|
|
292
|
+
var(--feature) [feature-end]
|
|
293
|
+
var(--full) [full-end];
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/* ========================================
|
|
297
|
+
Breakout Modifiers (for nested grids)
|
|
298
|
+
========================================
|
|
299
|
+
|
|
300
|
+
When you nest a grid inside another element (like inside col-feature),
|
|
301
|
+
the nested grid doesn't know about the parent's constraints. Use these
|
|
302
|
+
modifiers to "reset" the grid to fit its container.
|
|
303
|
+
|
|
304
|
+
breakout-to-content: Collapses all tracks - nested grid fills container
|
|
305
|
+
breakout-to-popout: Keeps popout tracks, collapses feature/full
|
|
306
|
+
breakout-to-feature: Keeps feature+popout tracks, collapses full
|
|
307
|
+
|
|
308
|
+
Example - Full-width hero with nested content grid:
|
|
309
|
+
<div class="col-full bg-blue-500">
|
|
310
|
+
<div class="grid-cols-breakout breakout-to-content">
|
|
311
|
+
<h1>This h1 fills the blue container</h1>
|
|
312
|
+
<p class="col-content">But content still works!</p>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
Example - Feature-width card with internal grid:
|
|
317
|
+
<article class="col-feature">
|
|
318
|
+
<div class="grid-cols-breakout breakout-to-feature">
|
|
319
|
+
<img class="col-feature">Full width of card</img>
|
|
320
|
+
<p class="col-content">Padded text inside</p>
|
|
321
|
+
</div>
|
|
322
|
+
</article>
|
|
323
|
+
*/
|
|
324
|
+
.grid-cols-breakout.breakout-to-content {
|
|
325
|
+
grid-template-columns: [full-start feature-start popout-start content-start center-start] minmax(0, 1fr) [center-end content-end popout-end feature-end full-end];
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.grid-cols-breakout.breakout-to-popout {
|
|
329
|
+
grid-template-columns: [full-start feature-start popout-start] var(--popout) [content-start center-start] minmax(0, 1fr) [center-end content-end] var(--popout) [popout-end feature-end full-end];
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.grid-cols-breakout.breakout-to-feature {
|
|
333
|
+
grid-template-columns: [full-start feature-start] var(--feature) [popout-start] var(--popout) [content-start center-start] minmax(0, 1fr) [center-end content-end] var(--popout) [popout-end] var(--feature) [feature-end full-end];
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/* ----------------------------------------
|
|
337
|
+
Breakout None - Disable Grid
|
|
338
|
+
----------------------------------------
|
|
339
|
+
|
|
340
|
+
Use when you need to escape the grid entirely. Useful for:
|
|
341
|
+
- Sidebar layouts where one column shouldn't use grid
|
|
342
|
+
- Components that manage their own layout
|
|
343
|
+
- CMS blocks that shouldn't inherit grid behavior
|
|
344
|
+
|
|
345
|
+
Example - Two-column layout with sidebar:
|
|
346
|
+
<div class="grid grid-cols-[300px_1fr]">
|
|
347
|
+
<aside class="breakout-none">Sidebar - no grid here</aside>
|
|
348
|
+
<main class="grid-cols-breakout">Main content uses grid</main>
|
|
349
|
+
</div>
|
|
350
|
+
*/
|
|
351
|
+
@utility breakout-none { display: block; }
|
|
352
|
+
@utility breakout-none-flex { display: flex; }
|
|
353
|
+
@utility breakout-none-grid { display: grid; }
|
|
354
|
+
|
|
355
|
+
/* ========================================
|
|
356
|
+
Column Utilities - Basic
|
|
357
|
+
========================================
|
|
358
|
+
|
|
359
|
+
Place elements in specific grid tracks. These are the core utilities
|
|
360
|
+
you'll use most often.
|
|
361
|
+
|
|
362
|
+
col-full: Edge to edge (viewport width minus gap)
|
|
363
|
+
col-feature: Wide content (images, videos, heroes)
|
|
364
|
+
col-popout: Slightly wider than content (pull quotes, callouts)
|
|
365
|
+
col-content: Standard reading width (articles, text)
|
|
366
|
+
col-center: Centered within content (rare, for precise centering)
|
|
367
|
+
*/
|
|
368
|
+
@utility col-full { grid-column: full; }
|
|
369
|
+
@utility col-feature { grid-column: feature; }
|
|
370
|
+
@utility col-popout { grid-column: popout; }
|
|
371
|
+
@utility col-content { grid-column: content; }
|
|
372
|
+
@utility col-center { grid-column: center; }
|
|
373
|
+
|
|
374
|
+
/* Backward compatibility: col-narrow maps to content */
|
|
375
|
+
@utility col-narrow { grid-column: content; }
|
|
376
|
+
|
|
377
|
+
/* ========================================
|
|
378
|
+
Column Utilities - Start/End
|
|
379
|
+
========================================
|
|
380
|
+
|
|
381
|
+
Fine-grained control for custom spans. Combine start and end
|
|
382
|
+
utilities to create any span you need.
|
|
383
|
+
|
|
384
|
+
Example - Span from popout to feature on right:
|
|
385
|
+
<div class="col-start-popout col-end-feature">
|
|
386
|
+
Custom span
|
|
387
|
+
</div>
|
|
388
|
+
*/
|
|
389
|
+
@utility col-start-full { grid-column-start: full-start; }
|
|
390
|
+
@utility col-start-feature { grid-column-start: feature-start; }
|
|
391
|
+
@utility col-start-popout { grid-column-start: popout-start; }
|
|
392
|
+
@utility col-start-content { grid-column-start: content-start; }
|
|
393
|
+
@utility col-start-center { grid-column-start: center-start; }
|
|
394
|
+
|
|
395
|
+
/* Backward compatibility */
|
|
396
|
+
@utility col-start-narrow { grid-column-start: content-start; }
|
|
397
|
+
|
|
398
|
+
@utility col-end-full { grid-column-end: full-end; }
|
|
399
|
+
@utility col-end-feature { grid-column-end: feature-end; }
|
|
400
|
+
@utility col-end-popout { grid-column-end: popout-end; }
|
|
401
|
+
@utility col-end-content { grid-column-end: content-end; }
|
|
402
|
+
@utility col-end-center { grid-column-end: center-end; }
|
|
403
|
+
|
|
404
|
+
/* Backward compatibility */
|
|
405
|
+
@utility col-end-narrow { grid-column-end: content-end; }
|
|
406
|
+
|
|
407
|
+
/* ========================================
|
|
408
|
+
Column Utilities - Left/Right Spans
|
|
409
|
+
========================================
|
|
410
|
+
|
|
411
|
+
Asymmetric spans that anchor to one edge. Perfect for:
|
|
412
|
+
- Split layouts (image left, text right)
|
|
413
|
+
- Overlapping elements
|
|
414
|
+
- Pull quotes that bleed to one edge
|
|
415
|
+
|
|
416
|
+
Pattern: col-{track}-left = full-start → {track}-end
|
|
417
|
+
col-{track}-right = {track}-start → full-end
|
|
418
|
+
|
|
419
|
+
Example - Image bleeds left, caption stays in content:
|
|
420
|
+
<figure class="col-content-left">
|
|
421
|
+
<img class="w-full">Spans from left edge to content</img>
|
|
422
|
+
</figure>
|
|
423
|
+
|
|
424
|
+
Example - Quote pulls right:
|
|
425
|
+
<blockquote class="col-popout-right">
|
|
426
|
+
Spans from popout through to right edge
|
|
427
|
+
</blockquote>
|
|
428
|
+
*/
|
|
429
|
+
@utility col-feature-left { grid-column: full-start / feature-end; }
|
|
430
|
+
@utility col-feature-right { grid-column: feature-start / full-end; }
|
|
431
|
+
@utility col-popout-left { grid-column: full-start / popout-end; }
|
|
432
|
+
@utility col-popout-right { grid-column: popout-start / full-end; }
|
|
433
|
+
@utility col-content-left { grid-column: full-start / content-end; }
|
|
434
|
+
@utility col-content-right { grid-column: content-start / full-end; }
|
|
435
|
+
@utility col-center-left { grid-column: full-start / center-end; }
|
|
436
|
+
@utility col-center-right { grid-column: center-start / full-end; }
|
|
437
|
+
|
|
438
|
+
/* Backward compatibility */
|
|
439
|
+
@utility col-narrow-left { grid-column: full-start / content-end; }
|
|
440
|
+
@utility col-narrow-right { grid-column: content-start / full-end; }
|
|
441
|
+
|
|
442
|
+
/* ========================================
|
|
443
|
+
Column Utilities - Advanced Spans
|
|
444
|
+
========================================
|
|
445
|
+
|
|
446
|
+
Partial spans between non-adjacent tracks. Use when you need
|
|
447
|
+
elements that span from an inner track outward but not all
|
|
448
|
+
the way to the edge.
|
|
449
|
+
|
|
450
|
+
Example - Card that spans feature to content (not to edge):
|
|
451
|
+
<div class="col-feature-to-content">
|
|
452
|
+
Wide but doesn't bleed to viewport edge
|
|
453
|
+
</div>
|
|
454
|
+
*/
|
|
455
|
+
/* Feature to other columns */
|
|
456
|
+
@utility col-feature-to-popout { grid-column: feature-start / popout-end; }
|
|
457
|
+
@utility col-feature-to-content { grid-column: feature-start / content-end; }
|
|
458
|
+
@utility col-feature-to-center { grid-column: feature-start / center-end; }
|
|
459
|
+
|
|
460
|
+
/* Popout to other columns */
|
|
461
|
+
@utility col-popout-to-content { grid-column: popout-start / content-end; }
|
|
462
|
+
@utility col-popout-to-center { grid-column: popout-start / center-end; }
|
|
463
|
+
@utility col-popout-to-feature { grid-column: popout-start / feature-end; }
|
|
464
|
+
|
|
465
|
+
/* Content to other columns */
|
|
466
|
+
@utility col-content-to-center { grid-column: content-start / center-end; }
|
|
467
|
+
@utility col-content-to-popout { grid-column: content-start / popout-end; }
|
|
468
|
+
@utility col-content-to-feature { grid-column: content-start / feature-end; }
|
|
469
|
+
|
|
470
|
+
/* ----------------------------------------
|
|
471
|
+
Full Limit - Capped Full Width
|
|
472
|
+
----------------------------------------
|
|
473
|
+
|
|
474
|
+
Goes edge-to-edge like col-full, but caps at --full-limit on
|
|
475
|
+
ultra-wide screens. Prevents content from becoming too wide
|
|
476
|
+
on large monitors while still being full-width on normal screens.
|
|
477
|
+
|
|
478
|
+
Example - Hero that doesn't get absurdly wide:
|
|
479
|
+
<section class="col-full-limit">
|
|
480
|
+
Full width up to 115rem, then centered
|
|
481
|
+
</section>
|
|
482
|
+
*/
|
|
483
|
+
@utility col-full-limit {
|
|
484
|
+
grid-column: full;
|
|
485
|
+
width: 100%;
|
|
486
|
+
max-width: var(--full-limit);
|
|
487
|
+
margin-left: auto;
|
|
488
|
+
margin-right: auto;
|
|
489
|
+
box-sizing: border-box;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/* ========================================
|
|
493
|
+
Padding Utilities
|
|
494
|
+
========================================
|
|
495
|
+
|
|
496
|
+
Match padding to grid measurements for alignment. These utilities
|
|
497
|
+
help content inside non-grid elements align with the grid.
|
|
498
|
+
|
|
499
|
+
--breakout-padding: Fluid padding that matches popout track behavior
|
|
500
|
+
--gap: Matches the outer grid gap
|
|
501
|
+
--computed-gap: Larger gap for full-width elements
|
|
502
|
+
--popout-to-content: Align edges with content track from popout
|
|
503
|
+
--feature-to-content: Align edges with content track from feature
|
|
504
|
+
|
|
505
|
+
Example - Full-width section with content-aligned padding:
|
|
506
|
+
<section class="col-full bg-gray-100 px-feature-to-content">
|
|
507
|
+
<p>This text aligns with content column above/below</p>
|
|
508
|
+
</section>
|
|
509
|
+
|
|
510
|
+
Example - Card with consistent internal spacing:
|
|
511
|
+
<div class="col-popout p-breakout">
|
|
512
|
+
Padding scales with the grid
|
|
513
|
+
</div>
|
|
514
|
+
*/
|
|
515
|
+
@utility p-breakout { padding: var(--breakout-padding); }
|
|
516
|
+
@utility px-breakout { padding-left: var(--breakout-padding); padding-right: var(--breakout-padding); }
|
|
517
|
+
@utility py-breakout { padding-top: var(--breakout-padding); padding-bottom: var(--breakout-padding); }
|
|
518
|
+
@utility pl-breakout { padding-left: var(--breakout-padding); }
|
|
519
|
+
@utility pr-breakout { padding-right: var(--breakout-padding); }
|
|
520
|
+
@utility pt-breakout { padding-top: var(--breakout-padding); }
|
|
521
|
+
@utility pb-breakout { padding-bottom: var(--breakout-padding); }
|
|
522
|
+
|
|
523
|
+
/* Gap-based padding */
|
|
524
|
+
@utility p-gap { padding: var(--gap); }
|
|
525
|
+
@utility px-gap { padding-left: var(--gap); padding-right: var(--gap); }
|
|
526
|
+
@utility py-gap { padding-top: var(--gap); padding-bottom: var(--gap); }
|
|
527
|
+
@utility pl-gap { padding-left: var(--gap); }
|
|
528
|
+
@utility pr-gap { padding-right: var(--gap); }
|
|
529
|
+
@utility pt-gap { padding-top: var(--gap); }
|
|
530
|
+
@utility pb-gap { padding-bottom: var(--gap); }
|
|
531
|
+
|
|
532
|
+
/* Full-gap padding (computed, for full-width elements) */
|
|
533
|
+
@utility p-full-gap { padding: var(--computed-gap); }
|
|
534
|
+
@utility px-full-gap { padding-left: var(--computed-gap); padding-right: var(--computed-gap); }
|
|
535
|
+
@utility py-full-gap { padding-top: var(--computed-gap); padding-bottom: var(--computed-gap); }
|
|
536
|
+
@utility pl-full-gap { padding-left: var(--computed-gap); }
|
|
537
|
+
@utility pr-full-gap { padding-right: var(--computed-gap); }
|
|
538
|
+
@utility pt-full-gap { padding-top: var(--computed-gap); }
|
|
539
|
+
@utility pb-full-gap { padding-bottom: var(--computed-gap); }
|
|
540
|
+
|
|
541
|
+
/* Popout-width padding */
|
|
542
|
+
@utility p-popout { padding: var(--popout); }
|
|
543
|
+
@utility px-popout { padding-left: var(--popout); padding-right: var(--popout); }
|
|
544
|
+
@utility py-popout { padding-top: var(--popout); padding-bottom: var(--popout); }
|
|
545
|
+
@utility pl-popout { padding-left: var(--popout); }
|
|
546
|
+
@utility pr-popout { padding-right: var(--popout); }
|
|
547
|
+
@utility pt-popout { padding-top: var(--popout); }
|
|
548
|
+
@utility pb-popout { padding-bottom: var(--popout); }
|
|
549
|
+
|
|
550
|
+
/* Alignment padding - align content inside wider columns */
|
|
551
|
+
@utility p-popout-to-content { padding: var(--popout-to-content); }
|
|
552
|
+
@utility px-popout-to-content { padding-left: var(--popout-to-content); padding-right: var(--popout-to-content); }
|
|
553
|
+
@utility py-popout-to-content { padding-top: var(--popout-to-content); padding-bottom: var(--popout-to-content); }
|
|
554
|
+
@utility pt-popout-to-content { padding-top: var(--popout-to-content); }
|
|
555
|
+
@utility pr-popout-to-content { padding-right: var(--popout-to-content); }
|
|
556
|
+
@utility pb-popout-to-content { padding-bottom: var(--popout-to-content); }
|
|
557
|
+
@utility pl-popout-to-content { padding-left: var(--popout-to-content); }
|
|
558
|
+
|
|
559
|
+
@utility p-feature-to-content { padding: var(--feature-to-content); }
|
|
560
|
+
@utility px-feature-to-content { padding-left: var(--feature-to-content); padding-right: var(--feature-to-content); }
|
|
561
|
+
@utility py-feature-to-content { padding-top: var(--feature-to-content); padding-bottom: var(--feature-to-content); }
|
|
562
|
+
@utility pt-feature-to-content { padding-top: var(--feature-to-content); }
|
|
563
|
+
@utility pr-feature-to-content { padding-right: var(--feature-to-content); }
|
|
564
|
+
@utility pb-feature-to-content { padding-bottom: var(--feature-to-content); }
|
|
565
|
+
@utility pl-feature-to-content { padding-left: var(--feature-to-content); }
|
|
566
|
+
|
|
567
|
+
/* ========================================
|
|
568
|
+
Margin Utilities
|
|
569
|
+
========================================
|
|
570
|
+
|
|
571
|
+
Same values as padding utilities, but for margins. Includes
|
|
572
|
+
negative variants for pulling elements outside their container.
|
|
573
|
+
|
|
574
|
+
Example - Pull image outside its container:
|
|
575
|
+
<div class="col-content">
|
|
576
|
+
<img class="-mx-breakout">Bleeds into popout area</img>
|
|
577
|
+
</div>
|
|
578
|
+
|
|
579
|
+
Example - Overlap previous section:
|
|
580
|
+
<section class="-mt-gap">
|
|
581
|
+
Pulls up into the section above
|
|
582
|
+
</section>
|
|
583
|
+
*/
|
|
584
|
+
@utility m-breakout { margin: var(--breakout-padding); }
|
|
585
|
+
@utility mx-breakout { margin-left: var(--breakout-padding); margin-right: var(--breakout-padding); }
|
|
586
|
+
@utility my-breakout { margin-top: var(--breakout-padding); margin-bottom: var(--breakout-padding); }
|
|
587
|
+
@utility ml-breakout { margin-left: var(--breakout-padding); }
|
|
588
|
+
@utility mr-breakout { margin-right: var(--breakout-padding); }
|
|
589
|
+
@utility mt-breakout { margin-top: var(--breakout-padding); }
|
|
590
|
+
@utility mb-breakout { margin-bottom: var(--breakout-padding); }
|
|
591
|
+
|
|
592
|
+
/* Negative margins */
|
|
593
|
+
@utility -m-breakout { margin: calc(var(--breakout-padding) * -1); }
|
|
594
|
+
@utility -mx-breakout { margin-left: calc(var(--breakout-padding) * -1); margin-right: calc(var(--breakout-padding) * -1); }
|
|
595
|
+
@utility -my-breakout { margin-top: calc(var(--breakout-padding) * -1); margin-bottom: calc(var(--breakout-padding) * -1); }
|
|
596
|
+
@utility -ml-breakout { margin-left: calc(var(--breakout-padding) * -1); }
|
|
597
|
+
@utility -mr-breakout { margin-right: calc(var(--breakout-padding) * -1); }
|
|
598
|
+
@utility -mt-breakout { margin-top: calc(var(--breakout-padding) * -1); }
|
|
599
|
+
@utility -mb-breakout { margin-bottom: calc(var(--breakout-padding) * -1); }
|
|
600
|
+
|
|
601
|
+
/* Gap-based margins */
|
|
602
|
+
@utility m-gap { margin: var(--gap); }
|
|
603
|
+
@utility mx-gap { margin-left: var(--gap); margin-right: var(--gap); }
|
|
604
|
+
@utility my-gap { margin-top: var(--gap); margin-bottom: var(--gap); }
|
|
605
|
+
@utility ml-gap { margin-left: var(--gap); }
|
|
606
|
+
@utility mr-gap { margin-right: var(--gap); }
|
|
607
|
+
@utility mt-gap { margin-top: var(--gap); }
|
|
608
|
+
@utility mb-gap { margin-bottom: var(--gap); }
|
|
609
|
+
|
|
610
|
+
/* Negative margins */
|
|
611
|
+
@utility -m-gap { margin: calc(var(--gap) * -1); }
|
|
612
|
+
@utility -mx-gap { margin-left: calc(var(--gap) * -1); margin-right: calc(var(--gap) * -1); }
|
|
613
|
+
@utility -my-gap { margin-top: calc(var(--gap) * -1); margin-bottom: calc(var(--gap) * -1); }
|
|
614
|
+
@utility -ml-gap { margin-left: calc(var(--gap) * -1); }
|
|
615
|
+
@utility -mr-gap { margin-right: calc(var(--gap) * -1); }
|
|
616
|
+
@utility -mt-gap { margin-top: calc(var(--gap) * -1); }
|
|
617
|
+
@utility -mb-gap { margin-bottom: calc(var(--gap) * -1); }
|
|
618
|
+
|
|
619
|
+
/* Full-gap margins */
|
|
620
|
+
@utility m-full-gap { margin: var(--computed-gap); }
|
|
621
|
+
@utility mx-full-gap { margin-left: var(--computed-gap); margin-right: var(--computed-gap); }
|
|
622
|
+
@utility my-full-gap { margin-top: var(--computed-gap); margin-bottom: var(--computed-gap); }
|
|
623
|
+
@utility ml-full-gap { margin-left: var(--computed-gap); }
|
|
624
|
+
@utility mr-full-gap { margin-right: var(--computed-gap); }
|
|
625
|
+
@utility mt-full-gap { margin-top: var(--computed-gap); }
|
|
626
|
+
@utility mb-full-gap { margin-bottom: var(--computed-gap); }
|
|
627
|
+
|
|
628
|
+
/* Negative margins */
|
|
629
|
+
@utility -m-full-gap { margin: calc(var(--computed-gap) * -1); }
|
|
630
|
+
@utility -mx-full-gap { margin-left: calc(var(--computed-gap) * -1); margin-right: calc(var(--computed-gap) * -1); }
|
|
631
|
+
@utility -my-full-gap { margin-top: calc(var(--computed-gap) * -1); margin-bottom: calc(var(--computed-gap) * -1); }
|
|
632
|
+
@utility -ml-full-gap { margin-left: calc(var(--computed-gap) * -1); }
|
|
633
|
+
@utility -mr-full-gap { margin-right: calc(var(--computed-gap) * -1); }
|
|
634
|
+
@utility -mt-full-gap { margin-top: calc(var(--computed-gap) * -1); }
|
|
635
|
+
@utility -mb-full-gap { margin-bottom: calc(var(--computed-gap) * -1); }
|
|
636
|
+
|
|
637
|
+
/* Popout-width margins */
|
|
638
|
+
@utility m-popout { margin: var(--popout); }
|
|
639
|
+
@utility mx-popout { margin-left: var(--popout); margin-right: var(--popout); }
|
|
640
|
+
@utility my-popout { margin-top: var(--popout); margin-bottom: var(--popout); }
|
|
641
|
+
@utility ml-popout { margin-left: var(--popout); }
|
|
642
|
+
@utility mr-popout { margin-right: var(--popout); }
|
|
643
|
+
@utility mt-popout { margin-top: var(--popout); }
|
|
644
|
+
@utility mb-popout { margin-bottom: var(--popout); }
|
|
645
|
+
|
|
646
|
+
/* Negative margins */
|
|
647
|
+
@utility -m-popout { margin: calc(var(--popout) * -1); }
|
|
648
|
+
@utility -mx-popout { margin-left: calc(var(--popout) * -1); margin-right: calc(var(--popout) * -1); }
|
|
649
|
+
@utility -my-popout { margin-top: calc(var(--popout) * -1); margin-bottom: calc(var(--popout) * -1); }
|
|
650
|
+
@utility -ml-popout { margin-left: calc(var(--popout) * -1); }
|
|
651
|
+
@utility -mr-popout { margin-right: calc(var(--popout) * -1); }
|
|
652
|
+
@utility -mt-popout { margin-top: calc(var(--popout) * -1); }
|
|
653
|
+
@utility -mb-popout { margin-bottom: calc(var(--popout) * -1); }
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astuteo/breakout-grid",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CSS Grid breakout layout system with visual configurator",
|
|
6
6
|
"main": "dist/_objects.breakout-grid.css",
|
|
7
7
|
"style": "dist/_objects.breakout-grid.css",
|
|
8
8
|
"files": [
|
|
9
9
|
"dist/_objects.breakout-grid.css",
|
|
10
|
+
"dist/_objects.breakout-grid.tw.css",
|
|
10
11
|
"breakout-grid-visualizer.js",
|
|
11
12
|
"breakout-grid-visualizer-lite.js",
|
|
12
13
|
"craft-integration.twig",
|
|
@@ -16,6 +17,7 @@
|
|
|
16
17
|
"exports": {
|
|
17
18
|
".": "./dist/_objects.breakout-grid.css",
|
|
18
19
|
"./css": "./dist/_objects.breakout-grid.css",
|
|
20
|
+
"./tailwind": "./dist/_objects.breakout-grid.tw.css",
|
|
19
21
|
"./visualizer": "./breakout-grid-visualizer.js",
|
|
20
22
|
"./visualizer-lite": "./breakout-grid-visualizer-lite.js"
|
|
21
23
|
},
|