responsive-scale-mixins 2.0.3 → 2.0.4
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 +161 -69
- package/index.scss +2 -2
- package/package.json +2 -1
- package/scss/_mixins.scss +16 -12
package/README.md
CHANGED
|
@@ -1,12 +1,55 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 🚀 Responsive Scale Mixins
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## **The Future of Responsive Design is Here**
|
|
4
|
+
|
|
5
|
+
**Stop wrestling with breakpoints. Start designing once, deploy everywhere.**
|
|
6
|
+
|
|
7
|
+
Imagine building a beautiful UI in Figma, then seeing it perfectly scale on **every screen size** - from tiny phones (320px) to ultra-wide monitors (9999px) - without writing a single media query. That's the power of Responsive Scale Mixins.
|
|
4
8
|
|
|
5
9
|
[](https://www.npmjs.com/package/responsive-scale-mixins)
|
|
6
10
|
[](https://opensource.org/licenses/MIT)
|
|
7
11
|
[](https://www.npmjs.com/package/responsive-scale-mixins)
|
|
8
12
|
[](https://www.npmjs.com/package/responsive-scale-mixins)
|
|
9
13
|
|
|
14
|
+
## 🔥 **Why Developers Love It**
|
|
15
|
+
|
|
16
|
+
### **🎯 Pixel-Perfect Figma Translation**
|
|
17
|
+
|
|
18
|
+
- Your Figma designs become reality, not approximations
|
|
19
|
+
- Zero guessing, zero manual calculations
|
|
20
|
+
- What you see in design tools is what users see on any device
|
|
21
|
+
|
|
22
|
+
### **⚡ Revolutionary Simplicity**
|
|
23
|
+
|
|
24
|
+
```scss
|
|
25
|
+
// Before: 50+ lines of media queries
|
|
26
|
+
.hero-title {
|
|
27
|
+
font-size: 48px;
|
|
28
|
+
@media (max-width: 768px) {
|
|
29
|
+
font-size: 32px;
|
|
30
|
+
}
|
|
31
|
+
@media (max-width: 480px) {
|
|
32
|
+
font-size: 24px;
|
|
33
|
+
}
|
|
34
|
+
// ... and so on for every element
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// After: 1 line that works everywhere
|
|
38
|
+
.hero-title {
|
|
39
|
+
@include rsm.responsive-scale(font-size, 48, 24);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### **🎨 Universal Unit Support**
|
|
44
|
+
|
|
45
|
+
- **px, rem, em, vw, vh, %, cm, mm, in, pt, pc** - you name it, we scale it
|
|
46
|
+
- Intelligent interpolation between desktop and mobile values
|
|
47
|
+
- Perfect scaling from 320px phones to 8K displays
|
|
48
|
+
|
|
49
|
+
### **🚀 Framework Agnostic**
|
|
50
|
+
|
|
51
|
+
Works with React, Vue, Angular, Svelte, Next.js, Nuxt, Astro, and vanilla CSS. Your favorite framework + perfect responsive design = ❤️
|
|
52
|
+
|
|
10
53
|
## ⚠️ Breaking Changes in v2.0.0
|
|
11
54
|
|
|
12
55
|
**Pure CSS implementations are affected by this breaking change.**
|
|
@@ -48,8 +91,7 @@ A powerful SCSS mixin system for creating perfectly responsive designs that main
|
|
|
48
91
|
/* OLD (v1.x) */
|
|
49
92
|
font-size: calc(var(--computed-scale-factor-px) * 40);
|
|
50
93
|
|
|
51
|
-
|
|
52
|
-
font-size: calc(var(--computed-scale-factor) * 40px);
|
|
94
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
53
95
|
```
|
|
54
96
|
|
|
55
97
|
## ✨ Features
|
|
@@ -62,6 +104,37 @@ font-size: calc(var(--computed-scale-factor) * 40px);
|
|
|
62
104
|
- **TypeScript Ready**: Compatible with CSS Modules and CSS-in-JS solutions
|
|
63
105
|
- **Universal Unit Support**: Handles all CSS units including absolute (px, pt, cm, mm, in, pc) and relative (%, em, rem, vw, vh, vmin, vmax) units
|
|
64
106
|
|
|
107
|
+
## 🔧 Dart Sass Compatibility
|
|
108
|
+
|
|
109
|
+
**Starting with v2.0.4**, this package is fully compatible with Dart Sass. The `index.scss` file now uses relative `@forward` statements (`./scss/variables` and `./scss/mixins`) to ensure proper resolution in Dart Sass environments like Next.js, Vite, and other modern build tools.
|
|
110
|
+
|
|
111
|
+
### Recommended Import Pattern
|
|
112
|
+
|
|
113
|
+
```scss
|
|
114
|
+
// Modern @use syntax (preferred)
|
|
115
|
+
@use "responsive-scale-mixins" as rsm;
|
|
116
|
+
|
|
117
|
+
:root {
|
|
118
|
+
@include rsm.responsive-scale-variables();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.my-element {
|
|
122
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Troubleshooting Import Errors
|
|
127
|
+
|
|
128
|
+
If you encounter "Can't find stylesheet to import" errors with Dart Sass:
|
|
129
|
+
|
|
130
|
+
1. **Update the package**: Ensure you're using v2.0.4 or later
|
|
131
|
+
2. **Use relative imports as workaround**: Import the partials directly:
|
|
132
|
+
```scss
|
|
133
|
+
@import "responsive-scale-mixins/scss/variables";
|
|
134
|
+
@import "responsive-scale-mixins/scss/mixins";
|
|
135
|
+
```
|
|
136
|
+
3. **Check your build tool**: Some tools may need configuration updates for SCSS module resolution
|
|
137
|
+
|
|
65
138
|
## 🚀 Quick Start
|
|
66
139
|
|
|
67
140
|
### Installation
|
|
@@ -89,26 +162,26 @@ pnpm add responsive-scale-mixins
|
|
|
89
162
|
#### Next.js (App Router)
|
|
90
163
|
|
|
91
164
|
```scss
|
|
92
|
-
// app/globals.
|
|
93
|
-
@
|
|
165
|
+
// app/globals.scss or app/styles/globals.scss
|
|
166
|
+
@use "responsive-scale-mixins" as rsm;
|
|
94
167
|
|
|
95
168
|
:root {
|
|
96
169
|
// Replace 1440 with your design width or leave default (desktop)
|
|
97
170
|
// Replace 768 with your design width or leave default (tablet)
|
|
98
171
|
// Replace 375 with your design width or leave default (mobile)
|
|
99
172
|
// Define CSS variables globally (required)
|
|
100
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
101
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
173
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
174
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
102
175
|
}
|
|
103
176
|
|
|
104
|
-
// Import in app/layout.tsx: import './globals.
|
|
177
|
+
// Import in app/layout.tsx: import './globals.scss'
|
|
105
178
|
```
|
|
106
179
|
|
|
107
180
|
#### Next.js (Pages Router)
|
|
108
181
|
|
|
109
182
|
```scss
|
|
110
183
|
// styles/globals.scss
|
|
111
|
-
@
|
|
184
|
+
@use "responsive-scale-mixins" as rsm;
|
|
112
185
|
|
|
113
186
|
:root {
|
|
114
187
|
// Define CSS variables globally (required)
|
|
@@ -116,8 +189,8 @@ pnpm add responsive-scale-mixins
|
|
|
116
189
|
// Replace 1440 with your design width or leave default (desktop)
|
|
117
190
|
// Replace 768 with your design width or leave default (tablet)
|
|
118
191
|
// Replace 375 with your design width or leave default (mobile)
|
|
119
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
120
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
192
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
193
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
121
194
|
}
|
|
122
195
|
|
|
123
196
|
// Import in pages/_app.js: import '../styles/globals.scss'
|
|
@@ -133,7 +206,7 @@ pnpm add responsive-scale-mixins
|
|
|
133
206
|
|
|
134
207
|
```scss
|
|
135
208
|
// src/index.scss or src/styles/main.scss
|
|
136
|
-
@
|
|
209
|
+
@use "responsive-scale-mixins" as rsm;
|
|
137
210
|
|
|
138
211
|
:root {
|
|
139
212
|
// Define CSS variables globally (required)
|
|
@@ -141,8 +214,8 @@ pnpm add responsive-scale-mixins
|
|
|
141
214
|
// Replace 1440 with your design width or leave default (desktop)
|
|
142
215
|
// Replace 768 with your design width or leave default (tablet)
|
|
143
216
|
// Replace 375 with your design width or leave default (mobile)
|
|
144
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
145
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
217
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
218
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
146
219
|
}
|
|
147
220
|
|
|
148
221
|
// Import in src/index.js: import './index.scss'
|
|
@@ -158,7 +231,7 @@ pnpm add responsive-scale-mixins
|
|
|
158
231
|
|
|
159
232
|
```scss
|
|
160
233
|
// src/assets/styles/main.scss
|
|
161
|
-
@
|
|
234
|
+
@use "responsive-scale-mixins" as rsm;
|
|
162
235
|
|
|
163
236
|
:root {
|
|
164
237
|
// Define CSS variables globally (required)
|
|
@@ -166,8 +239,8 @@ pnpm add responsive-scale-mixins
|
|
|
166
239
|
// Replace 1440 with your design width or leave default (desktop)
|
|
167
240
|
// Replace 768 with your design width or leave default (tablet)
|
|
168
241
|
// Replace 375 with your design width or leave default (mobile)
|
|
169
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
170
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
242
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
243
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
171
244
|
}
|
|
172
245
|
|
|
173
246
|
// Import in src/main.js: import './assets/styles/main.scss'
|
|
@@ -183,7 +256,7 @@ pnpm add responsive-scale-mixins
|
|
|
183
256
|
|
|
184
257
|
```scss
|
|
185
258
|
// src/styles.scss (global styles)
|
|
186
|
-
@
|
|
259
|
+
@use "responsive-scale-mixins" as rsm;
|
|
187
260
|
|
|
188
261
|
:root {
|
|
189
262
|
// Define CSS variables globally (required)
|
|
@@ -191,8 +264,8 @@ pnpm add responsive-scale-mixins
|
|
|
191
264
|
// Replace 1440 with your design width or leave default (desktop)
|
|
192
265
|
// Replace 768 with your design width or leave default (tablet)
|
|
193
266
|
// Replace 375 with your design width or leave default (mobile)
|
|
194
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
195
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
267
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
268
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
196
269
|
}
|
|
197
270
|
|
|
198
271
|
// This file is automatically included by Angular CLI
|
|
@@ -208,7 +281,7 @@ pnpm add responsive-scale-mixins
|
|
|
208
281
|
|
|
209
282
|
```scss
|
|
210
283
|
// src/styles/main.scss
|
|
211
|
-
@
|
|
284
|
+
@use "responsive-scale-mixins" as rsm;
|
|
212
285
|
|
|
213
286
|
:root {
|
|
214
287
|
// Customize for your design system (optional)
|
|
@@ -216,8 +289,8 @@ pnpm add responsive-scale-mixins
|
|
|
216
289
|
// Replace 1440 with your design width or leave default (desktop)
|
|
217
290
|
// Replace 768 with your design width or leave default (tablet)
|
|
218
291
|
// Replace 375 with your design width or leave default (mobile)
|
|
219
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
220
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
292
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
293
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
221
294
|
}
|
|
222
295
|
```
|
|
223
296
|
|
|
@@ -225,7 +298,7 @@ pnpm add responsive-scale-mixins
|
|
|
225
298
|
|
|
226
299
|
```scss
|
|
227
300
|
// src/styles/global.scss
|
|
228
|
-
@
|
|
301
|
+
@use "responsive-scale-mixins" as rsm;
|
|
229
302
|
|
|
230
303
|
:root {
|
|
231
304
|
// Customize for your design system (optional)
|
|
@@ -233,8 +306,8 @@ pnpm add responsive-scale-mixins
|
|
|
233
306
|
// Replace 1440 with your design width or leave default (desktop)
|
|
234
307
|
// Replace 768 with your design width or leave default (tablet)
|
|
235
308
|
// Replace 375 with your design width or leave default (mobile)
|
|
236
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
237
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
309
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
310
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
238
311
|
}
|
|
239
312
|
```
|
|
240
313
|
|
|
@@ -242,7 +315,7 @@ pnpm add responsive-scale-mixins
|
|
|
242
315
|
|
|
243
316
|
```scss
|
|
244
317
|
// assets/styles/main.scss
|
|
245
|
-
@
|
|
318
|
+
@use "responsive-scale-mixins" as rsm;
|
|
246
319
|
|
|
247
320
|
:root {
|
|
248
321
|
// Customize for your design system (optional)
|
|
@@ -250,8 +323,8 @@ pnpm add responsive-scale-mixins
|
|
|
250
323
|
// Replace 1440 with your design width or leave default (desktop)
|
|
251
324
|
// Replace 768 with your design width or leave default (tablet)
|
|
252
325
|
// Replace 375 with your design width or leave default (mobile)
|
|
253
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
254
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
326
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
327
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
255
328
|
}
|
|
256
329
|
```
|
|
257
330
|
|
|
@@ -259,7 +332,7 @@ pnpm add responsive-scale-mixins
|
|
|
259
332
|
|
|
260
333
|
```scss
|
|
261
334
|
// src/app.scss
|
|
262
|
-
@
|
|
335
|
+
@use "responsive-scale-mixins" as rsm;
|
|
263
336
|
|
|
264
337
|
:root {
|
|
265
338
|
// Customize for your design system (optional)
|
|
@@ -267,8 +340,8 @@ pnpm add responsive-scale-mixins
|
|
|
267
340
|
// Replace 1440 with your design width or leave default (desktop)
|
|
268
341
|
// Replace 768 with your design width or leave default (tablet)
|
|
269
342
|
// Replace 375 with your design width or leave default (mobile)
|
|
270
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
271
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
343
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
344
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
272
345
|
}
|
|
273
346
|
```
|
|
274
347
|
|
|
@@ -276,7 +349,7 @@ pnpm add responsive-scale-mixins
|
|
|
276
349
|
|
|
277
350
|
```scss
|
|
278
351
|
// src/styles/global.scss
|
|
279
|
-
@
|
|
352
|
+
@use "responsive-scale-mixins" as rsm;
|
|
280
353
|
|
|
281
354
|
:root {
|
|
282
355
|
// Customize for your design system (optional)
|
|
@@ -284,8 +357,8 @@ pnpm add responsive-scale-mixins
|
|
|
284
357
|
// Replace 1440 with your design width or leave default (desktop)
|
|
285
358
|
// Replace 768 with your design width or leave default (tablet)
|
|
286
359
|
// Replace 375 with your design width or leave default (mobile)
|
|
287
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
288
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
360
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
361
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
289
362
|
}
|
|
290
363
|
```
|
|
291
364
|
|
|
@@ -293,7 +366,7 @@ pnpm add responsive-scale-mixins
|
|
|
293
366
|
|
|
294
367
|
```scss
|
|
295
368
|
// styles.module.scss
|
|
296
|
-
@
|
|
369
|
+
@use "responsive-scale-mixins" as rsm;
|
|
297
370
|
|
|
298
371
|
// Variables must be in global scope
|
|
299
372
|
// In your main CSS file:
|
|
@@ -309,7 +382,7 @@ pnpm add responsive-scale-mixins
|
|
|
309
382
|
|
|
310
383
|
// Then in your module
|
|
311
384
|
.myClass {
|
|
312
|
-
@include responsive-scale(font-size, 24, 16);
|
|
385
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
313
386
|
}
|
|
314
387
|
```
|
|
315
388
|
|
|
@@ -317,15 +390,15 @@ pnpm add responsive-scale-mixins
|
|
|
317
390
|
|
|
318
391
|
```scss
|
|
319
392
|
// styles/main.scss
|
|
320
|
-
@
|
|
393
|
+
@use "responsive-scale-mixins" as rsm;
|
|
321
394
|
|
|
322
395
|
:root {
|
|
323
|
-
@include responsive-scale-variables();
|
|
396
|
+
@include rsm.responsive-scale-variables();
|
|
324
397
|
}
|
|
325
398
|
|
|
326
399
|
// Use alongside Tailwind
|
|
327
400
|
.custom-element {
|
|
328
|
-
@include responsive-scale(padding, 20 40, 10 20);
|
|
401
|
+
@include rsm.responsive-scale(padding, 20 40, 10 20);
|
|
329
402
|
@apply bg-blue-500 text-white; // Tailwind classes still work
|
|
330
403
|
}
|
|
331
404
|
```
|
|
@@ -344,6 +417,26 @@ const StyledComponent = styled.div`
|
|
|
344
417
|
|
|
345
418
|
### Basic Usage
|
|
346
419
|
|
|
420
|
+
#### Modern @use Syntax (Recommended)
|
|
421
|
+
|
|
422
|
+
```scss
|
|
423
|
+
// In your main SCSS file
|
|
424
|
+
@use "responsive-scale-mixins" as rsm;
|
|
425
|
+
|
|
426
|
+
// Include variables in your root element (required)
|
|
427
|
+
:root {
|
|
428
|
+
@include rsm.responsive-scale-variables();
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Use the mixin anywhere
|
|
432
|
+
.my-element {
|
|
433
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
434
|
+
@include rsm.responsive-scale(padding, 20 40, 10 20);
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
#### Legacy @import Syntax (for older setups)
|
|
439
|
+
|
|
347
440
|
```scss
|
|
348
441
|
// In your main SCSS file
|
|
349
442
|
@import "~responsive-scale-mixins";
|
|
@@ -393,9 +486,9 @@ The main responsive scaling mixin.
|
|
|
393
486
|
|
|
394
487
|
```scss
|
|
395
488
|
.hero-title {
|
|
396
|
-
@include responsive-scale(font-size, 48, 32);
|
|
397
|
-
@include responsive-scale(line-height, 1.2, 1.3);
|
|
398
|
-
@include responsive-scale(letter-spacing, -1, -0.5);
|
|
489
|
+
@include rsm.responsive-scale(font-size, 48, 32);
|
|
490
|
+
@include rsm.responsive-scale(line-height, 1.2, 1.3);
|
|
491
|
+
@include rsm.responsive-scale(letter-spacing, -1, -0.5);
|
|
399
492
|
}
|
|
400
493
|
```
|
|
401
494
|
|
|
@@ -403,8 +496,8 @@ The main responsive scaling mixin.
|
|
|
403
496
|
|
|
404
497
|
```scss
|
|
405
498
|
.card {
|
|
406
|
-
@include responsive-scale(padding, 32 48, 16 24);
|
|
407
|
-
@include responsive-scale(margin-bottom, 24, 16);
|
|
499
|
+
@include rsm.responsive-scale(padding, 32 48, 16 24);
|
|
500
|
+
@include rsm.responsive-scale(margin-bottom, 24, 16);
|
|
408
501
|
}
|
|
409
502
|
```
|
|
410
503
|
|
|
@@ -412,9 +505,9 @@ The main responsive scaling mixin.
|
|
|
412
505
|
|
|
413
506
|
```scss
|
|
414
507
|
.button {
|
|
415
|
-
@include responsive-scale(width, 200, 150);
|
|
416
|
-
@include responsive-scale(height, 56, 44);
|
|
417
|
-
@include responsive-scale(border-radius, 8, 6);
|
|
508
|
+
@include rsm.responsive-scale(width, 200, 150);
|
|
509
|
+
@include rsm.responsive-scale(height, 56, 44);
|
|
510
|
+
@include rsm.responsive-scale(border-radius, 8, 6);
|
|
418
511
|
}
|
|
419
512
|
```
|
|
420
513
|
|
|
@@ -423,7 +516,7 @@ The main responsive scaling mixin.
|
|
|
423
516
|
```scss
|
|
424
517
|
.text {
|
|
425
518
|
// Letter-spacing as 1% of font-size
|
|
426
|
-
@include responsive-scale(letter-spacing, 1, 1, px, true, 48, 32);
|
|
519
|
+
@include rsm.responsive-scale(letter-spacing, 1, 1, px, true, 48, 32);
|
|
427
520
|
}
|
|
428
521
|
```
|
|
429
522
|
|
|
@@ -431,7 +524,7 @@ The main responsive scaling mixin.
|
|
|
431
524
|
|
|
432
525
|
```scss
|
|
433
526
|
.override-bootstrap {
|
|
434
|
-
@include responsive-scale(
|
|
527
|
+
@include rsm.responsive-scale(
|
|
435
528
|
font-size,
|
|
436
529
|
24,
|
|
437
530
|
16,
|
|
@@ -441,7 +534,7 @@ The main responsive scaling mixin.
|
|
|
441
534
|
null,
|
|
442
535
|
" !important"
|
|
443
536
|
);
|
|
444
|
-
@include responsive-scale(
|
|
537
|
+
@include rsm.responsive-scale(
|
|
445
538
|
padding,
|
|
446
539
|
16 32,
|
|
447
540
|
8 16,
|
|
@@ -467,8 +560,8 @@ Easily customize the design widths to match your project's breakpoints:
|
|
|
467
560
|
// Replace 375 with your design width or leave default (mobile)
|
|
468
561
|
|
|
469
562
|
// Custom design widths (desktop, tablet, mobile)
|
|
470
|
-
@include responsive-scale-variables(1440px, 768px, 375px);
|
|
471
|
-
// Or use defaults: @include responsive-scale-variables();
|
|
563
|
+
@include rsm.responsive-scale-variables(1440px, 768px, 375px);
|
|
564
|
+
// Or use defaults: @include rsm.responsive-scale-variables();
|
|
472
565
|
}
|
|
473
566
|
```
|
|
474
567
|
|
|
@@ -482,13 +575,13 @@ Easily customize the design widths to match your project's breakpoints:
|
|
|
482
575
|
|
|
483
576
|
```scss
|
|
484
577
|
.element {
|
|
485
|
-
@include responsive-scale(
|
|
578
|
+
@include rsm.responsive-scale(
|
|
486
579
|
font-size,
|
|
487
580
|
3,
|
|
488
581
|
2,
|
|
489
582
|
rem
|
|
490
583
|
); // 3rem / 2rem - uses rem scale factor
|
|
491
|
-
@include responsive-scale(
|
|
584
|
+
@include rsm.responsive-scale(
|
|
492
585
|
font-size,
|
|
493
586
|
2,
|
|
494
587
|
1.5,
|
|
@@ -524,10 +617,10 @@ The mixin supports **all CSS units** with a single generic scale factor:
|
|
|
524
617
|
|
|
525
618
|
```scss
|
|
526
619
|
.element {
|
|
527
|
-
@include responsive-scale(margin, 2, 1, cm); // centimeters
|
|
528
|
-
@include responsive-scale(width, 50, 30, vw); // viewport width
|
|
529
|
-
@include responsive-scale(height, 80, 60, vh); // viewport height
|
|
530
|
-
@include responsive-scale(font-size, 1.5, 1, em); // em units
|
|
620
|
+
@include rsm.responsive-scale(margin, 2, 1, cm); // centimeters
|
|
621
|
+
@include rsm.responsive-scale(width, 50, 30, vw); // viewport width
|
|
622
|
+
@include rsm.responsive-scale(height, 80, 60, vh); // viewport height
|
|
623
|
+
@include rsm.responsive-scale(font-size, 1.5, 1, em); // em units
|
|
531
624
|
}
|
|
532
625
|
```
|
|
533
626
|
|
|
@@ -570,9 +663,9 @@ The `@include responsive-scale-variables()` mixin may fail in certain SCSS compi
|
|
|
570
663
|
}
|
|
571
664
|
|
|
572
665
|
// In component files
|
|
573
|
-
@
|
|
666
|
+
@use "responsive-scale-mixins" as rsm;
|
|
574
667
|
.my-element {
|
|
575
|
-
@include responsive-scale(font-size, 24, 16);
|
|
668
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
576
669
|
}
|
|
577
670
|
```
|
|
578
671
|
|
|
@@ -753,9 +846,9 @@ The `@include responsive-scale-variables()` mixin may fail in certain SCSS compi
|
|
|
753
846
|
}
|
|
754
847
|
|
|
755
848
|
// In your module files
|
|
756
|
-
@
|
|
849
|
+
@use "responsive-scale-mixins" as rsm;
|
|
757
850
|
.myClass {
|
|
758
|
-
@include responsive-scale(font-size, 24, 16);
|
|
851
|
+
@include rsm.responsive-scale(font-size, 24, 16);
|
|
759
852
|
}
|
|
760
853
|
```
|
|
761
854
|
|
|
@@ -774,9 +867,9 @@ The `@include responsive-scale-variables()` mixin may fail in certain SCSS compi
|
|
|
774
867
|
}
|
|
775
868
|
|
|
776
869
|
// In components
|
|
777
|
-
@
|
|
870
|
+
@use "responsive-scale-mixins" as rsm;
|
|
778
871
|
.custom-element {
|
|
779
|
-
@include responsive-scale(padding, 20 40, 10 20);
|
|
872
|
+
@include rsm.responsive-scale(padding, 20 40, 10 20);
|
|
780
873
|
@apply bg-blue-500 text-white;
|
|
781
874
|
}
|
|
782
875
|
```
|
|
@@ -850,9 +943,8 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
850
943
|
The library includes a comprehensive test suite located in the `test/` directory:
|
|
851
944
|
|
|
852
945
|
```bash
|
|
853
|
-
# Run the test suite
|
|
854
|
-
cd test && ./test.sh
|
|
855
|
-
cd test && test.bat # Windows
|
|
946
|
+
# Run the test suite (cross-platform)
|
|
947
|
+
cd test && ./test.sh
|
|
856
948
|
```
|
|
857
949
|
|
|
858
950
|
See [`test/TEST_README.md`](test/TEST_README.md) for detailed testing instructions.
|
package/index.scss
CHANGED
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "responsive-scale-mixins",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "🎨 Revolutionary SCSS mixins for perfect responsive design. Supports ALL CSS units (px, rem, em, vw, vh, %, etc.) with pixel-perfect scaling. Zero manual calculations - just flawless responsive typography, spacing, and dimensions across desktop, tablet, and mobile. Framework-agnostic, modern CSS variables, works everywhere.",
|
|
5
5
|
"main": "index.scss",
|
|
6
6
|
"style": "index.scss",
|
|
7
|
+
"sass": "index.scss",
|
|
7
8
|
"scripts": {
|
|
8
9
|
"test": "echo \"No tests specified\" && exit 0"
|
|
9
10
|
},
|
package/scss/_mixins.scss
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
@use "sass:string";
|
|
2
|
+
@use "sass:meta";
|
|
3
|
+
@use "sass:list";
|
|
4
|
+
|
|
1
5
|
/* // ✅ Figma Proportions: Maintains the same proportions as the Figma design.
|
|
2
6
|
|
|
3
7
|
// // Here's a SCSS mixin that dynamically calculates font-size, line-height, padding, margins, and other scalable properties across desktop, tablet, and mobile screens.
|
|
@@ -37,17 +41,17 @@
|
|
|
37
41
|
|
|
38
42
|
@function get-scale-factor($unit) {
|
|
39
43
|
// Use generic scale factor - unit is appended in calc expressions
|
|
40
|
-
@return unquote("--computed-scale-factor");
|
|
44
|
+
@return string.unquote("--computed-scale-factor");
|
|
41
45
|
}
|
|
42
46
|
|
|
43
47
|
@function get-tablet-scale-factor($unit) {
|
|
44
48
|
// Use generic scale factor - unit is appended in calc expressions
|
|
45
|
-
@return unquote("--computed-tablet-scale-factor");
|
|
49
|
+
@return string.unquote("--computed-tablet-scale-factor");
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
@function get-mobile-scale-factor($unit) {
|
|
49
53
|
// Use generic scale factor - unit is appended in calc expressions
|
|
50
|
-
@return unquote("--computed-mobile-scale-factor");
|
|
54
|
+
@return string.unquote("--computed-mobile-scale-factor");
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
@mixin responsive-scale(
|
|
@@ -112,10 +116,10 @@
|
|
|
112
116
|
}
|
|
113
117
|
} @else {
|
|
114
118
|
// Regular absolute scaling
|
|
115
|
-
@if type-of($desktop-value) == list {
|
|
119
|
+
@if meta.type-of($desktop-value) == list {
|
|
116
120
|
$desktop-scaled: ();
|
|
117
121
|
@each $val in $desktop-value {
|
|
118
|
-
$desktop-scaled: append(
|
|
122
|
+
$desktop-scaled: list.append(
|
|
119
123
|
$desktop-scaled,
|
|
120
124
|
scaled-value($val, $scale-factor, $unit)
|
|
121
125
|
);
|
|
@@ -127,12 +131,12 @@
|
|
|
127
131
|
}
|
|
128
132
|
|
|
129
133
|
@media screen and (min-width: 768px) and (max-width: 991px) {
|
|
130
|
-
@if type-of($desktop-value) == list {
|
|
134
|
+
@if meta.type-of($desktop-value) == list {
|
|
131
135
|
$tablet-scaled: ();
|
|
132
|
-
@for $i from 1 through length($desktop-value) {
|
|
133
|
-
$d-val: nth($desktop-value, $i);
|
|
134
|
-
$m-val: nth($mobile-value, $i);
|
|
135
|
-
$tablet-scaled: append(
|
|
136
|
+
@for $i from 1 through list.length($desktop-value) {
|
|
137
|
+
$d-val: list.nth($desktop-value, $i);
|
|
138
|
+
$m-val: list.nth($mobile-value, $i);
|
|
139
|
+
$tablet-scaled: list.append(
|
|
136
140
|
$tablet-scaled,
|
|
137
141
|
calc(
|
|
138
142
|
100vw /
|
|
@@ -166,10 +170,10 @@
|
|
|
166
170
|
|
|
167
171
|
@media screen and (max-width: 767px) {
|
|
168
172
|
$mobile-scale-factor: get-mobile-scale-factor($unit);
|
|
169
|
-
@if type-of($mobile-value) == list {
|
|
173
|
+
@if meta.type-of($mobile-value) == list {
|
|
170
174
|
$mobile-scaled: ();
|
|
171
175
|
@each $val in $mobile-value {
|
|
172
|
-
$mobile-scaled: append(
|
|
176
|
+
$mobile-scaled: list.append(
|
|
173
177
|
$mobile-scaled,
|
|
174
178
|
scaled-value($val, $mobile-scale-factor, $unit)
|
|
175
179
|
);
|