clipper-css 0.1.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.
@@ -0,0 +1,416 @@
1
+ /**
2
+ * Clipper CSS Framework
3
+ * v0.1.0
4
+ *
5
+ * Ensure @import "tailwindcss"; is added before clipper.css in your project.
6
+ *
7
+ * THIS FILE SHOULD NOT BE EDITED:
8
+ * Customize the framework with variables.css and components.css instead.
9
+ */
10
+ @import "./variables.css";
11
+ @import "./components.css";
12
+
13
+ /* Custom variants exposed to templates for app-level state styling */
14
+ @custom-variant theme-dark (&:where(.dark, .dark *));
15
+ @custom-variant theme-light (&:where(.light, .light *));
16
+ /* Matches common open-state attributes from native + headless UI patterns */
17
+ @custom-variant data-open (&:where([data-open], [data-open="true"], [data-state="open"], [data-state="open"] *));
18
+
19
+ :root {
20
+ /* Grid Templates */
21
+ --layout-page-width: minmax(var(--page-margin), 1fr) minmax(0, var(--max-page-width)) minmax(var(--page-margin), 1fr);
22
+ --layout-readable: minmax(var(--page-margin), 1fr) minmax(0, var(--readable-width)) minmax(var(--page-margin), 1fr);
23
+ }
24
+
25
+ @layer base {
26
+ html,
27
+ body {
28
+ min-height: 100vh;
29
+ -webkit-font-smoothing: antialiased;
30
+ -moz-osx-font-smoothing: grayscale;
31
+ }
32
+
33
+ html {
34
+ /* Prevents horizontal layout jump when vertical scrollbar appears/disappears */
35
+ scrollbar-gutter: stable;
36
+ }
37
+
38
+ body {
39
+ display: flex;
40
+ flex-direction: column;
41
+ font-size: var(--text-base);
42
+ font-family: var(--font-text);
43
+ background-color: var(--background);
44
+ color: var(--foreground);
45
+ }
46
+
47
+ main {
48
+ flex: 1 0 auto;
49
+ }
50
+
51
+ /* ===== Layout grid system ===== */
52
+
53
+ :where(header, footer, section) {
54
+ display: grid;
55
+ grid-template-columns: var(--layout-page-width);
56
+ }
57
+
58
+ section {
59
+ padding-block: var(--section-row-padding);
60
+ row-gap: var(--section-row-gap);
61
+ /* Rendering hint: skip off-screen section painting until needed */
62
+ content-visibility: auto;
63
+ /* Reserve intrinsic size to reduce layout pop-in before rendering */
64
+ contain-intrinsic-size: 1px 700px;
65
+
66
+ /* Readable width variant for content-heavy sections */
67
+ &.readable {
68
+ grid-template-columns: var(--layout-readable);
69
+ }
70
+ }
71
+
72
+ /* All direct children on grid use center column */
73
+ :where(header, footer, section) > * {
74
+ grid-column: 2;
75
+ min-width: 0; /* Prevent overflow */
76
+ }
77
+
78
+ /* Full-width breakout: use `.full-width` on children */
79
+ :where(header, footer, section) > .full-width {
80
+ grid-column: 1 / -1;
81
+ width: 100%;
82
+ }
83
+
84
+ .page-width {
85
+ width: min(var(--max-page-width), max(0px, calc(100% - (2 * var(--page-margin)))));
86
+ max-width: var(--max-page-width);
87
+ margin-inline: auto;
88
+ }
89
+
90
+ .readable-width {
91
+ width: min(var(--readable-width), max(0px, calc(100% - (2 * var(--page-margin)))));
92
+ max-width: var(--readable-width);
93
+ margin-inline: auto;
94
+ }
95
+
96
+ .header-sticky {
97
+ position: sticky;
98
+ top: 0;
99
+ z-index: 10;
100
+ backdrop-filter: blur(var(--backdrop-blur));
101
+ -webkit-backdrop-filter: blur(var(--backdrop-blur));
102
+ }
103
+
104
+ :where(section[id], main[id], [id^="section-"]) {
105
+ /* Keeps anchor target visible below sticky header */
106
+ scroll-margin-top: var(--anchor-offset);
107
+ }
108
+
109
+ /* Make html5 semantic elements (and div) flex containers for easier layout */
110
+
111
+ address,
112
+ article,
113
+ aside,
114
+ details,
115
+ div,
116
+ dl,
117
+ fieldset,
118
+ figure,
119
+ form,
120
+ menu,
121
+ nav,
122
+ ol,
123
+ ul {
124
+ @apply flex flex-col;
125
+ gap: var(--div-gap);
126
+ }
127
+
128
+ /* ===== Typography ===== */
129
+
130
+ h1,
131
+ .h1,
132
+ h2,
133
+ .h2,
134
+ h3,
135
+ .h3,
136
+ h4,
137
+ .h4,
138
+ h5,
139
+ .h5 {
140
+ font-family: var(--font-heading);
141
+ letter-spacing: var(--heading-letter-spacing);
142
+ --heading-start-current: calc(var(--heading-margin-top) + var(--heading-margin-top-offset));
143
+ --heading-end-current: calc(var(--heading-margin-bottom) + var(--heading-margin-bottom-offset));
144
+ margin-block-start: var(--heading-start-current);
145
+ margin-block-end: var(--heading-end-current);
146
+ text-wrap: balance;
147
+ }
148
+
149
+ p,
150
+ li {
151
+ /* Improves rag/line endings for longer paragraph text */
152
+ text-wrap: pretty;
153
+ }
154
+
155
+ a:not([class]) {
156
+ color: var(--link);
157
+ text-decoration-line: var(--link-underline);
158
+ text-underline-offset: var(--link-underline-offset);
159
+ text-decoration-thickness: var(--link-underline-thickness);
160
+ text-decoration-color: currentColor;
161
+ transition:
162
+ color 180ms ease,
163
+ text-decoration-color 180ms ease;
164
+ }
165
+
166
+ a:not([class]):hover {
167
+ color: var(--link-hover);
168
+ text-decoration-line: var(--link-underline-hover);
169
+ text-decoration-color: var(--link-hover);
170
+ }
171
+
172
+ h1,
173
+ .h1 {
174
+ @apply text-5xl font-bold;
175
+ line-height: var(--heading-line-height, var(--text-5xl--line-height));
176
+ --heading-start-current: calc((var(--heading-margin-top) * 1.45) + var(--heading-margin-top-offset));
177
+ --heading-end-current: calc((var(--heading-margin-bottom) * 1.45) + var(--heading-margin-bottom-offset));
178
+ }
179
+
180
+ h2,
181
+ .h2 {
182
+ @apply text-4xl font-bold;
183
+ line-height: var(--heading-line-height, var(--text-4xl--line-height));
184
+ --heading-start-current: calc((var(--heading-margin-top) * 1.3) + var(--heading-margin-top-offset));
185
+ --heading-end-current: calc((var(--heading-margin-bottom) * 1.3) + var(--heading-margin-bottom-offset));
186
+ }
187
+
188
+ h3,
189
+ .h3 {
190
+ @apply text-3xl font-semibold;
191
+ line-height: var(--heading-line-height, var(--text-3xl--line-height));
192
+ --heading-start-current: calc((var(--heading-margin-top) * 1.15) + var(--heading-margin-top-offset));
193
+ --heading-end-current: calc((var(--heading-margin-bottom) * 1.15) + var(--heading-margin-bottom-offset));
194
+ }
195
+
196
+ h4,
197
+ .h4 {
198
+ @apply text-2xl font-semibold;
199
+ line-height: var(--heading-line-height, var(--text-2xl--line-height));
200
+ --heading-start-current: calc((var(--heading-margin-top) * 1) + var(--heading-margin-top-offset));
201
+ --heading-end-current: calc((var(--heading-margin-bottom) * 1) + var(--heading-margin-bottom-offset));
202
+ }
203
+
204
+ h5,
205
+ .h5 {
206
+ @apply text-xl font-semibold;
207
+ line-height: var(--heading-line-height, var(--text-xl--line-height));
208
+ --heading-start-current: calc((var(--heading-margin-top) * 0.9) + var(--heading-margin-top-offset));
209
+ --heading-end-current: calc((var(--heading-margin-bottom) * 0.9) + var(--heading-margin-bottom-offset));
210
+ }
211
+
212
+ :where(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5):first-child {
213
+ margin-block-start: calc(var(--heading-start-current) * (1 - var(--heading-trim-first-child)));
214
+ }
215
+
216
+ :where(h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5):last-child {
217
+ margin-block-end: calc(var(--heading-end-current) * (1 - var(--heading-trim-last-child)));
218
+ }
219
+
220
+ *,
221
+ ::after,
222
+ ::before,
223
+ ::backdrop,
224
+ ::file-selector-button {
225
+ border-color: var(--border, currentColor);
226
+ }
227
+
228
+ /* I mean why not? */
229
+ button {
230
+ cursor: pointer;
231
+ }
232
+
233
+ :where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
234
+ /* Unified keyboard-focus style across interactive controls */
235
+ outline: 2px solid var(--focus-outline-color);
236
+ outline-offset: 2px;
237
+ }
238
+ }
239
+
240
+ /* Respect user motion preferences for accessibility */
241
+ @media (prefers-reduced-motion: reduce) {
242
+ html:focus-within {
243
+ scroll-behavior: auto;
244
+ }
245
+
246
+ *,
247
+ *::before,
248
+ *::after {
249
+ animation-duration: 0.01ms !important;
250
+ animation-iteration-count: 1 !important;
251
+ transition-duration: 0.01ms !important;
252
+ scroll-behavior: auto !important;
253
+ }
254
+ }
255
+
256
+ /* Forced-colors support (Windows High Contrast, etc.) */
257
+ @media (forced-colors: active) {
258
+ :where(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
259
+ outline-color: Highlight;
260
+ }
261
+ }
262
+
263
+ /* Fallback for browsers without text-wrap balancing */
264
+ @supports not (text-wrap: balance) {
265
+ h1,
266
+ .h1,
267
+ h2,
268
+ .h2,
269
+ h3,
270
+ .h3 {
271
+ overflow-wrap: anywhere;
272
+ }
273
+ }
274
+
275
+ /* Fallback for browsers without backdrop-filter blur */
276
+ @supports not (backdrop-filter: blur(1px)) {
277
+ .header-sticky {
278
+ background-color: color-mix(in oklch, var(--background) 92%, transparent);
279
+ }
280
+ }
281
+
282
+ /* =========================================================================
283
+ DARK MODE (Colors are defined in variables.css)
284
+ ========================================================================= */
285
+
286
+ :root {
287
+ color-scheme: light dark;
288
+ }
289
+
290
+ .dark {
291
+ color-scheme: dark;
292
+ }
293
+
294
+ .light {
295
+ color-scheme: light;
296
+ }
297
+
298
+ /* =========================================================================
299
+ UTILITIES — Minimal helpers for layout
300
+ ========================================================================= */
301
+
302
+ @utility row {
303
+ display: flex;
304
+ flex-direction: row;
305
+ align-items: center;
306
+ gap: var(--div-gap);
307
+ }
308
+
309
+ @utility readable {
310
+ &:not(section) {
311
+ max-width: var(--readable-width);
312
+ }
313
+ }
314
+
315
+ /* Opt-in container query utility */
316
+ @utility cq {
317
+ container-type: inline-size;
318
+ }
319
+
320
+ /* Named container utility for nested component queries */
321
+ @utility cq-main {
322
+ container: main / inline-size;
323
+ }
324
+
325
+ /*
326
+ ==============================================================================
327
+ Color and spacing theme definitions based on variables.css
328
+ If you need to add more colors, add them as tokens in variables.css and then
329
+ reference them here.
330
+ ==============================================================================
331
+ */
332
+
333
+ @theme inline {
334
+ /* Spacing */
335
+ --spacing-4xs: var(--space-4xs);
336
+ --spacing-3xs: var(--space-3xs);
337
+ --spacing-2xs: var(--space-2xs);
338
+ --spacing-xs: var(--space-xs);
339
+ --spacing-sm: var(--space-sm);
340
+ --spacing-base: var(--space-base);
341
+ --spacing-lg: var(--space-lg);
342
+ --spacing-xl: var(--space-xl);
343
+ --spacing-2xl: var(--space-2xl);
344
+ --spacing-3xl: var(--space-3xl);
345
+ --spacing-4xl: var(--space-4xl);
346
+ }
347
+
348
+ @theme inline {
349
+ /* Colors */
350
+ --color-background: var(--background);
351
+ --color-foreground: var(--foreground);
352
+
353
+ --color-accent: var(--accent);
354
+ --color-accent-foreground: var(--accent-foreground);
355
+
356
+ --color-muted: var(--muted);
357
+ --color-muted-foreground: var(--muted-foreground);
358
+
359
+ --color-link: var(--link);
360
+ --color-link-hover: var(--link-hover);
361
+ --color-link-underline: var(--link-underline);
362
+ --color-link-underline-hover: var(--link-underline-hover);
363
+
364
+ --color-border: var(--border);
365
+
366
+ /* Primary */
367
+ --color-primary-50: var(--primary-50);
368
+ --color-primary-100: var(--primary-100);
369
+ --color-primary-200: var(--primary-200);
370
+ --color-primary-300: var(--primary-300);
371
+ --color-primary-400: var(--primary-400);
372
+ --color-primary-500: var(--primary-500);
373
+ --color-primary-600: var(--primary-600);
374
+ --color-primary-700: var(--primary-700);
375
+ --color-primary-800: var(--primary-800);
376
+ --color-primary-900: var(--primary-900);
377
+
378
+ --color-primary: var(--primary);
379
+ --color-primary-foreground: var(--primary-foreground);
380
+ --color-primary-hover: var(--primary-hover);
381
+ --color-primary-muted: var(--primary-muted);
382
+
383
+ /* Secondary */
384
+ --color-secondary-50: var(--secondary-50);
385
+ --color-secondary-100: var(--secondary-100);
386
+ --color-secondary-200: var(--secondary-200);
387
+ --color-secondary-300: var(--secondary-300);
388
+ --color-secondary-400: var(--secondary-400);
389
+ --color-secondary-500: var(--secondary-500);
390
+ --color-secondary-600: var(--secondary-600);
391
+ --color-secondary-700: var(--secondary-700);
392
+ --color-secondary-800: var(--secondary-800);
393
+ --color-secondary-900: var(--secondary-900);
394
+
395
+ --color-secondary: var(--secondary);
396
+ --color-secondary-foreground: var(--secondary-foreground);
397
+ --color-secondary-hover: var(--secondary-hover);
398
+ --color-secondary-muted: var(--secondary-muted);
399
+
400
+ /* Tertiary */
401
+ --color-tertiary-50: var(--tertiary-50);
402
+ --color-tertiary-100: var(--tertiary-100);
403
+ --color-tertiary-200: var(--tertiary-200);
404
+ --color-tertiary-300: var(--tertiary-300);
405
+ --color-tertiary-400: var(--tertiary-400);
406
+ --color-tertiary-500: var(--tertiary-500);
407
+ --color-tertiary-600: var(--tertiary-600);
408
+ --color-tertiary-700: var(--tertiary-700);
409
+ --color-tertiary-800: var(--tertiary-800);
410
+ --color-tertiary-900: var(--tertiary-900);
411
+
412
+ --color-tertiary: var(--tertiary);
413
+ --color-tertiary-foreground: var(--tertiary-foreground);
414
+ --color-tertiary-hover: var(--tertiary-hover);
415
+ --color-tertiary-muted: var(--tertiary-muted);
416
+ }
@@ -0,0 +1,42 @@
1
+ @layer components {
2
+ .btn {
3
+ @apply inline-flex items-center justify-center rounded-md px-4 py-2 font-heading text-sm font-semibold no-underline transition-colors;
4
+ background-color: var(--primary);
5
+ color: var(--primary-foreground);
6
+ inline-size: fit-content;
7
+ max-inline-size: 100%;
8
+
9
+ &.btn-outline {
10
+ background-color: var(--background);
11
+ color: var(--foreground);
12
+ border: 1px solid var(--border);
13
+
14
+ &:hover {
15
+ background-color: var(--muted);
16
+ }
17
+ }
18
+
19
+ &:hover {
20
+ background-color: var(--primary-hover);
21
+ }
22
+
23
+ &:focus-visible {
24
+ outline: 2px solid var(--focus-outline-color);
25
+ outline-offset: 2px;
26
+ }
27
+ }
28
+
29
+ .card {
30
+ @apply rounded-xl border p-5 place-content-center;
31
+ border-color: var(--border);
32
+ background-color: var(--muted);
33
+ }
34
+
35
+ .badge {
36
+ @apply inline-flex items-center rounded-full px-2.5 py-1 text-xs font-semibold;
37
+ background-color: var(--primary-muted);
38
+ color: var(--foreground);
39
+ inline-size: fit-content;
40
+ max-inline-size: 100%;
41
+ }
42
+ }
@@ -0,0 +1,156 @@
1
+ :root {
2
+ /* Color definitions */
3
+ --background: light-dark(var(--color-white), var(--color-slate-950));
4
+ --foreground: light-dark(var(--color-slate-900), var(--color-slate-100));
5
+
6
+ --accent: var(--color-amber-500);
7
+ --accent-foreground: var(--color-white);
8
+
9
+ --muted: light-dark(var(--color-slate-100), var(--color-slate-800));
10
+ --muted-foreground: light-dark(var(--color-slate-500), var(--color-slate-400));
11
+
12
+ --link: light-dark(var(--primary-600), var(--primary-300));
13
+ --link-hover: light-dark(var(--primary-800), var(--primary-200));
14
+ --link-underline: underline; /* Can be 'underline', 'none', or 'hover' */
15
+ --link-underline-hover: var(--link-underline);
16
+ --link-underline-offset: 0.16em;
17
+ --link-underline-thickness: 0.08em;
18
+
19
+ --border: light-dark(var(--color-slate-200), var(--color-slate-700));
20
+ --focus-outline-color: var(--primary);
21
+
22
+ /* Primary */
23
+ --primary-50: oklch(97% 0.03 260);
24
+ --primary-100: oklch(93% 0.07 260);
25
+ --primary-200: oklch(86% 0.12 260);
26
+ --primary-300: oklch(78% 0.16 260);
27
+ --primary-400: oklch(67% 0.19 260);
28
+ --primary-500: oklch(55% 0.22 260);
29
+ --primary-600: oklch(48% 0.24 260);
30
+ --primary-700: oklch(40% 0.2 260);
31
+ --primary-800: oklch(32% 0.16 260);
32
+ --primary-900: oklch(24% 0.12 260);
33
+
34
+ --primary: var(--primary-500);
35
+ --primary-hover: var(--primary-600);
36
+ --primary-foreground: var(--color-white);
37
+ --primary-muted: light-dark(var(--primary-100), var(--primary-900));
38
+
39
+ /* Additional color scales (secondary and tertiary) can be defined similarly */
40
+ }
41
+
42
+ @theme {
43
+ /* Fonts */
44
+ --font-heading: "Poppins", sans-serif;
45
+ --font-text: "Inter", sans-serif;
46
+
47
+ --text-base: 1rem;
48
+ --text-xl: clamp(1.05rem, 1rem + 0.4vw, 1.2rem);
49
+ --text-2xl: clamp(1.1875rem, 1rem + 0.7vw, 1.625rem);
50
+ --text-3xl: clamp(1.375rem, 1.1rem + 1vw, 2rem);
51
+ --text-4xl: clamp(1.75rem, 1.35rem + 1.5vw, 2.5rem);
52
+ --text-5xl: clamp(2.125rem, 1.7rem + 2vw, 3.25rem);
53
+ --text-6xl: clamp(3.25rem, 2.8rem + 1.8vw, 4.5rem);
54
+ --text-7xl: clamp(3.75rem, 3rem + 2.2vw, 5.25rem);
55
+ }
56
+
57
+ :root {
58
+ /* Layout & types */
59
+ --max-page-width: 1120px;
60
+ --readable-width: 65ch;
61
+
62
+ /* Heading styles and customizable margin (remove to use defaults) */
63
+ --heading-line-height: clamp(1.1em, 1.1em + 0.15vw, 1.3em);
64
+ --heading-letter-spacing: clamp(-0.025em, -0.02em - 0.05vw, -0.015em);
65
+ --heading-margin-top: clamp(0.5rem, 0.8vw, 0.8rem);
66
+ --heading-margin-top-offset: 0rem;
67
+ --heading-margin-bottom: clamp(0.1667rem, 0.2667vw, 0.2667rem);
68
+ --heading-margin-bottom-offset: 0rem;
69
+
70
+ /* These two are boolean! Set to 0 to disable first-child and
71
+ last-child margin trimming on headings, or 1 to enable.
72
+ */
73
+ --heading-trim-first-child: 0;
74
+ --heading-trim-last-child: 0;
75
+
76
+ /* Fluent spacing */
77
+ --page-margin: clamp(1rem, 3vw, 2.25rem);
78
+
79
+ /*
80
+ Spacing scale controls
81
+ - Use `--space-scale-*` to scale all spacing globally per clamp axis.
82
+ - Use `--space-offset-*` for constant nudges per clamp axis.
83
+ */
84
+ --space-scale-min: 1;
85
+ --space-offset-min: 0rem;
86
+
87
+ --space-scale-fluid: 1;
88
+ --space-offset-fluid: 0vw;
89
+
90
+ --space-scale-max: 1;
91
+ --space-offset-max: 0rem;
92
+
93
+ --section-row-padding: var(--space-2xl);
94
+ --section-row-gap: var(--space-lg);
95
+ --div-gap: var(--space-base);
96
+
97
+ --space-4xs: clamp(
98
+ calc((0.25rem * var(--space-scale-min)) + var(--space-offset-min)),
99
+ calc((0.28vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
100
+ calc((0.32rem * var(--space-scale-max)) + var(--space-offset-max))
101
+ );
102
+ --space-3xs: clamp(
103
+ calc((0.3125rem * var(--space-scale-min)) + var(--space-offset-min)),
104
+ calc((0.35vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
105
+ calc((0.4rem * var(--space-scale-max)) + var(--space-offset-max))
106
+ );
107
+ --space-2xs: clamp(
108
+ calc((0.375rem * var(--space-scale-min)) + var(--space-offset-min)),
109
+ calc((0.45vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
110
+ calc((0.5rem * var(--space-scale-max)) + var(--space-offset-max))
111
+ );
112
+ --space-xs: clamp(
113
+ calc((0.5rem * var(--space-scale-min)) + var(--space-offset-min)),
114
+ calc((0.6vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
115
+ calc((0.65rem * var(--space-scale-max)) + var(--space-offset-max))
116
+ );
117
+ --space-sm: clamp(
118
+ calc((0.625rem * var(--space-scale-min)) + var(--space-offset-min)),
119
+ calc((0.8vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
120
+ calc((0.8rem * var(--space-scale-max)) + var(--space-offset-max))
121
+ );
122
+ --space-base: clamp(
123
+ calc((0.75rem * var(--space-scale-min)) + var(--space-offset-min)),
124
+ calc((1vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
125
+ calc((0.95rem * var(--space-scale-max)) + var(--space-offset-max))
126
+ );
127
+ --space-lg: clamp(
128
+ calc((1rem * var(--space-scale-min)) + var(--space-offset-min)),
129
+ calc((1.4vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
130
+ calc((1.25rem * var(--space-scale-max)) + var(--space-offset-max))
131
+ );
132
+ --space-xl: clamp(
133
+ calc((1.25rem * var(--space-scale-min)) + var(--space-offset-min)),
134
+ calc((2.1vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
135
+ calc((1.9rem * var(--space-scale-max)) + var(--space-offset-max))
136
+ );
137
+ --space-2xl: clamp(
138
+ calc((1.75rem * var(--space-scale-min)) + var(--space-offset-min)),
139
+ calc((3.8vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
140
+ calc((2.8rem * var(--space-scale-max)) + var(--space-offset-max))
141
+ );
142
+ --space-3xl: clamp(
143
+ calc((2.25rem * var(--space-scale-min)) + var(--space-offset-min)),
144
+ calc((5.4vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
145
+ calc((3.9rem * var(--space-scale-max)) + var(--space-offset-max))
146
+ );
147
+ --space-4xl: clamp(
148
+ calc((2.75rem * var(--space-scale-min)) + var(--space-offset-min)),
149
+ calc((7.2vw * var(--space-scale-fluid)) + var(--space-offset-fluid)),
150
+ calc((5.4rem * var(--space-scale-max)) + var(--space-offset-max))
151
+ );
152
+
153
+ /* Offset for in-page anchor links so sticky header doesn't cover headings */
154
+ --anchor-offset: clamp(4.5rem, 8vw, 6rem);
155
+ --backdrop-blur: 14px;
156
+ }
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "clipper-css",
3
+ "version": "0.1.0",
4
+ "description": "Clipper is a simple Tailwind framework for building pages without fighting CSS and drowning in utility classes.",
5
+ "type": "module",
6
+ "main": "bin/cli.js",
7
+ "bin": {
8
+ "clipper": "./bin/cli.js",
9
+ "create-clipper": "./bin/cli.js"
10
+ },
11
+ "keywords": [
12
+ "css",
13
+ "tailwind",
14
+ "framework",
15
+ "design-system",
16
+ "sveltekit",
17
+ "astro"
18
+ ],
19
+ "author": "Clipper",
20
+ "license": "ISC",
21
+ "files": [
22
+ "bin",
23
+ "clipper",
24
+ "templates",
25
+ "README.md"
26
+ ],
27
+ "dependencies": {
28
+ "globby": "^16.1.1",
29
+ "prompts": "^2.4.2"
30
+ },
31
+ "scripts": {
32
+ "clean": "node scripts/utils.js clean",
33
+ "build": "node scripts/utils.js update-version",
34
+ "test:astro": "cd tests/astro && node ../../bin/cli.js -y",
35
+ "test:sveltekit": "cd tests/sveltekit && node ../../bin/cli.js -y",
36
+ "version": "npm run build && git add clipper/clipper.css"
37
+ }
38
+ }