@magmonium/one 0.0.3 → 0.0.5
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/package.json +9 -2
- package/sass/_date-picker.sass +147 -0
- package/sass/_index.sass +34 -0
- package/sass/_input-date.sass +25 -0
- package/sass/_m-components.sass +110 -0
- package/sass/_menu.sass +132 -0
- package/sass/_reset.sass +186 -0
- package/sass/animations/_index.sass +13 -0
- package/sass/animations/_registry.sass +51 -0
- package/sass/animations/background/_energy.sass +91 -0
- package/sass/animations/background/_gradient.sass +104 -0
- package/sass/animations/background/_index.sass +9 -0
- package/sass/animations/background/_nature.sass +110 -0
- package/sass/animations/background/_new-effects.sass +292 -0
- package/sass/animations/background/_particle.sass +122 -0
- package/sass/animations/background/_tech.sass +124 -0
- package/sass/functions/_functions.sass +107 -0
- package/sass/mixins/_backdrops.sass +230 -0
- package/sass/mixins/_backgrounds.sass +214 -0
- package/sass/mixins/_borders.sass +93 -0
- package/sass/mixins/_breakpoints.sass +68 -0
- package/sass/mixins/_button.sass +46 -0
- package/sass/mixins/_checkbox.sass +128 -0
- package/sass/mixins/_colors.sass +121 -0
- package/sass/mixins/_control.sass +13 -0
- package/sass/mixins/_device.sass +22 -0
- package/sass/mixins/_display.sass +210 -0
- package/sass/mixins/_flex.sass +104 -0
- package/sass/mixins/_form.sass +68 -0
- package/sass/mixins/_grid.sass +273 -0
- package/sass/mixins/_header.sass +71 -0
- package/sass/mixins/_index.sass +29 -0
- package/sass/mixins/_input.sass +132 -0
- package/sass/mixins/_interactive.sass +19 -0
- package/sass/mixins/_label.sass +25 -0
- package/sass/mixins/_layout.sass +251 -0
- package/sass/mixins/_links.sass +85 -0
- package/sass/mixins/_lists.sass +377 -0
- package/sass/mixins/_overflow.sass +121 -0
- package/sass/mixins/_position.sass +181 -0
- package/sass/mixins/_radio.sass +205 -0
- package/sass/mixins/_sizing.sass +181 -0
- package/sass/mixins/_spacing.sass +59 -0
- package/sass/mixins/_text.sass +159 -0
- package/sass/mixins/_toggle.sass +240 -0
- package/sass/mixins/_typography.sass +6 -0
- package/sass/mixins/_utilities.sass +70 -0
- package/sass/utilities/_backdrops.sass +228 -0
- package/sass/utilities/_backgrounds.sass +285 -0
- package/sass/utilities/_borders.sass +138 -0
- package/sass/utilities/_colors.sass +166 -0
- package/sass/utilities/_display.sass +308 -0
- package/sass/utilities/_flex.sass +91 -0
- package/sass/utilities/_grid.sass +502 -0
- package/sass/utilities/_index.sass +17 -0
- package/sass/utilities/_input.sass +14 -0
- package/sass/utilities/_links.sass +136 -0
- package/sass/utilities/_lists.sass +4 -0
- package/sass/utilities/_popup.sass +73 -0
- package/sass/utilities/_position.sass +88 -0
- package/sass/utilities/_sizing.sass +277 -0
- package/sass/utilities/_spacing.sass +121 -0
- package/sass/utilities/_text.sass +207 -0
- package/sass/variables/_animations.sass +5 -0
- package/sass/variables/_borders.sass +25 -0
- package/sass/variables/_colors.sass +93 -0
- package/sass/variables/_index.sass +6 -0
- package/sass/variables/_number.sass +1 -0
- package/sass/variables/_spacing.sass +28 -0
- package/sass/variables/_typography.sass +40 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
// List Mixins - Reusable list styling
|
|
2
|
+
@use 'sass:map'
|
|
3
|
+
@use '../variables/spacing' as *
|
|
4
|
+
@use '../variables/colors' as *
|
|
5
|
+
@use '../variables/typography' as *
|
|
6
|
+
|
|
7
|
+
// Base list reset mixin
|
|
8
|
+
@mixin list-reset
|
|
9
|
+
margin: 0
|
|
10
|
+
padding: 0
|
|
11
|
+
list-style: none
|
|
12
|
+
|
|
13
|
+
// List item reset
|
|
14
|
+
@mixin list-item-reset
|
|
15
|
+
margin: 0
|
|
16
|
+
padding: 0
|
|
17
|
+
|
|
18
|
+
// List styling mixin with configurable type and position
|
|
19
|
+
@mixin list-style($type: disc, $position: outside)
|
|
20
|
+
list-style-type: $type
|
|
21
|
+
list-style-position: $position
|
|
22
|
+
|
|
23
|
+
// List spacing management
|
|
24
|
+
@mixin list-spacing($item-spacing: 0.25rem, $nested-indent: 1rem)
|
|
25
|
+
li
|
|
26
|
+
padding: $item-spacing 0
|
|
27
|
+
|
|
28
|
+
ul, ol
|
|
29
|
+
margin-left: $nested-indent
|
|
30
|
+
margin-top: $item-spacing
|
|
31
|
+
|
|
32
|
+
// Horizontal/inline list conversion
|
|
33
|
+
@mixin list-horizontal($gap: 0.75rem, $separator: null)
|
|
34
|
+
display: flex
|
|
35
|
+
flex-wrap: wrap
|
|
36
|
+
list-style: none
|
|
37
|
+
|
|
38
|
+
li
|
|
39
|
+
margin-right: $gap
|
|
40
|
+
|
|
41
|
+
&:last-child
|
|
42
|
+
margin-right: 0
|
|
43
|
+
|
|
44
|
+
@if $separator
|
|
45
|
+
&:not(:last-child)::after
|
|
46
|
+
content: $separator
|
|
47
|
+
margin-left: $gap * 0.5
|
|
48
|
+
color: $text-tertiary
|
|
49
|
+
|
|
50
|
+
// Bordered list styling
|
|
51
|
+
@mixin list-bordered($border-color: $border, $radius: 4px)
|
|
52
|
+
border: 1px solid $border-color
|
|
53
|
+
border-radius: $radius
|
|
54
|
+
overflow: hidden
|
|
55
|
+
|
|
56
|
+
li
|
|
57
|
+
padding: map.get($spacers, 2) map.get($spacers, 3)
|
|
58
|
+
border-bottom: 1px solid $border-color
|
|
59
|
+
|
|
60
|
+
&:last-child
|
|
61
|
+
border-bottom: none
|
|
62
|
+
|
|
63
|
+
// Striped list styling
|
|
64
|
+
@mixin list-striped($even-bg: $frame, $odd-bg: transparent)
|
|
65
|
+
li
|
|
66
|
+
&:nth-child(even)
|
|
67
|
+
background-color: $even-bg
|
|
68
|
+
|
|
69
|
+
&:nth-child(odd)
|
|
70
|
+
background-color: $odd-bg
|
|
71
|
+
|
|
72
|
+
// List with custom markers
|
|
73
|
+
@mixin list-custom-marker($marker: '→', $color: $text-secondary, $margin: 0.5rem)
|
|
74
|
+
list-style: none
|
|
75
|
+
|
|
76
|
+
li
|
|
77
|
+
position: relative
|
|
78
|
+
padding-left: calc(#{$margin} + 1em)
|
|
79
|
+
|
|
80
|
+
&::before
|
|
81
|
+
content: $marker
|
|
82
|
+
position: absolute
|
|
83
|
+
left: 0
|
|
84
|
+
color: $color
|
|
85
|
+
font-weight: bold
|
|
86
|
+
|
|
87
|
+
// Nested list with different markers per level
|
|
88
|
+
@mixin list-nested-markers
|
|
89
|
+
// First level
|
|
90
|
+
> li
|
|
91
|
+
list-style-type: disc
|
|
92
|
+
|
|
93
|
+
// Second level
|
|
94
|
+
ul, ol
|
|
95
|
+
li
|
|
96
|
+
list-style-type: circle
|
|
97
|
+
|
|
98
|
+
// Third level
|
|
99
|
+
ul, ol
|
|
100
|
+
li
|
|
101
|
+
list-style-type: square
|
|
102
|
+
|
|
103
|
+
// For ordered lists
|
|
104
|
+
&ol
|
|
105
|
+
> li
|
|
106
|
+
list-style-type: decimal
|
|
107
|
+
|
|
108
|
+
ol
|
|
109
|
+
li
|
|
110
|
+
list-style-type: lower-alpha
|
|
111
|
+
|
|
112
|
+
ol
|
|
113
|
+
li
|
|
114
|
+
list-style-type: lower-roman
|
|
115
|
+
|
|
116
|
+
// Interactive list items
|
|
117
|
+
@mixin list-interactive($hover-bg: $bg-focus, $active-bg: $highlight)
|
|
118
|
+
li
|
|
119
|
+
cursor: pointer
|
|
120
|
+
transition: background-color 0.2s ease-in-out
|
|
121
|
+
border-radius: 4px
|
|
122
|
+
|
|
123
|
+
&:hover
|
|
124
|
+
background-color: $hover-bg
|
|
125
|
+
|
|
126
|
+
&:active
|
|
127
|
+
background-color: $active-bg
|
|
128
|
+
|
|
129
|
+
// List with icons
|
|
130
|
+
@mixin list-with-icons($icon-size: 1rem, $gap: 0.5rem)
|
|
131
|
+
li
|
|
132
|
+
display: flex
|
|
133
|
+
align-items: center
|
|
134
|
+
gap: $gap
|
|
135
|
+
|
|
136
|
+
.list-icon
|
|
137
|
+
width: $icon-size
|
|
138
|
+
height: $icon-size
|
|
139
|
+
flex-shrink: 0
|
|
140
|
+
|
|
141
|
+
// Navigation list styling
|
|
142
|
+
@mixin list-nav($padding: 0.5rem 1rem)
|
|
143
|
+
@include list-reset
|
|
144
|
+
|
|
145
|
+
li
|
|
146
|
+
a
|
|
147
|
+
display: block
|
|
148
|
+
padding: $padding
|
|
149
|
+
text-decoration: none
|
|
150
|
+
border-radius: 4px
|
|
151
|
+
transition: all 0.2s ease-in-out
|
|
152
|
+
|
|
153
|
+
&:hover
|
|
154
|
+
background-color: $bg-focus
|
|
155
|
+
color: $text
|
|
156
|
+
|
|
157
|
+
&:focus
|
|
158
|
+
outline: 2px solid $focus
|
|
159
|
+
outline-offset: 2px
|
|
160
|
+
|
|
161
|
+
// Breadcrumb list styling
|
|
162
|
+
@mixin list-breadcrumb($separator: '/', $separator-color: $text-tertiary)
|
|
163
|
+
@include list-horizontal(0.5rem)
|
|
164
|
+
|
|
165
|
+
li
|
|
166
|
+
display: flex
|
|
167
|
+
align-items: center
|
|
168
|
+
|
|
169
|
+
&:not(:last-child)::after
|
|
170
|
+
content: $separator
|
|
171
|
+
margin-left: 0.5rem
|
|
172
|
+
color: $separator-color
|
|
173
|
+
pointer-events: none
|
|
174
|
+
|
|
175
|
+
// Definition list styling
|
|
176
|
+
@mixin list-definition($term-weight: $font-weight-semibold, $description-indent: 1.5rem)
|
|
177
|
+
dt
|
|
178
|
+
font-weight: $term-weight
|
|
179
|
+
color: $text
|
|
180
|
+
margin-bottom: 0.25rem
|
|
181
|
+
|
|
182
|
+
dd
|
|
183
|
+
margin-left: $description-indent
|
|
184
|
+
margin-bottom: 1rem
|
|
185
|
+
color: $text-secondary
|
|
186
|
+
|
|
187
|
+
&:last-child
|
|
188
|
+
margin-bottom: 0
|
|
189
|
+
|
|
190
|
+
// List with checkboxes/status indicators
|
|
191
|
+
@mixin list-checklist($check-size: 1rem, $check-color: $success)
|
|
192
|
+
@include list-reset
|
|
193
|
+
|
|
194
|
+
li
|
|
195
|
+
display: flex
|
|
196
|
+
align-items: flex-start
|
|
197
|
+
gap: 0.75rem
|
|
198
|
+
padding: 0.25rem 0
|
|
199
|
+
|
|
200
|
+
&::before
|
|
201
|
+
content: '□'
|
|
202
|
+
width: $check-size
|
|
203
|
+
height: $check-size
|
|
204
|
+
flex-shrink: 0
|
|
205
|
+
font-size: $check-size
|
|
206
|
+
line-height: 1
|
|
207
|
+
color: $text-tertiary
|
|
208
|
+
|
|
209
|
+
&.checked::before
|
|
210
|
+
content: '✓'
|
|
211
|
+
color: $check-color
|
|
212
|
+
|
|
213
|
+
// App-style vertical navigation list (matches image: icons + labels + rounded backgrounds)
|
|
214
|
+
@mixin list-app-nav($icon-size: 1.25rem, $padding: 0.75rem 1rem, $gap: 0.5rem, $selected-bg: $highlight, $hover-bg: $bg-focus)
|
|
215
|
+
@include list-reset
|
|
216
|
+
|
|
217
|
+
display: flex
|
|
218
|
+
flex-direction: column
|
|
219
|
+
gap: $gap
|
|
220
|
+
|
|
221
|
+
li
|
|
222
|
+
display: flex
|
|
223
|
+
align-items: center
|
|
224
|
+
gap: $gap
|
|
225
|
+
padding: $padding
|
|
226
|
+
border-radius: 8px
|
|
227
|
+
transition: all 0.2s ease-in-out
|
|
228
|
+
cursor: pointer
|
|
229
|
+
|
|
230
|
+
.list-icon
|
|
231
|
+
width: $icon-size
|
|
232
|
+
height: $icon-size
|
|
233
|
+
flex-shrink: 0
|
|
234
|
+
display: flex
|
|
235
|
+
align-items: center
|
|
236
|
+
justify-content: center
|
|
237
|
+
|
|
238
|
+
.list-label
|
|
239
|
+
flex: 1
|
|
240
|
+
font-size: $font-size-base
|
|
241
|
+
color: $text
|
|
242
|
+
|
|
243
|
+
&:hover
|
|
244
|
+
background-color: $hover-bg
|
|
245
|
+
color: $text
|
|
246
|
+
|
|
247
|
+
.list-icon
|
|
248
|
+
color: $mm
|
|
249
|
+
|
|
250
|
+
&.selected,
|
|
251
|
+
&:active
|
|
252
|
+
background-color: $selected-bg
|
|
253
|
+
color: $background
|
|
254
|
+
|
|
255
|
+
.list-icon
|
|
256
|
+
color: $background
|
|
257
|
+
|
|
258
|
+
&:focus
|
|
259
|
+
outline: 2px solid $focus
|
|
260
|
+
outline-offset: 2px
|
|
261
|
+
|
|
262
|
+
li.profile-item
|
|
263
|
+
border-top: 1px solid $border
|
|
264
|
+
margin-top: auto
|
|
265
|
+
padding-top: 1rem
|
|
266
|
+
|
|
267
|
+
.list-avatar
|
|
268
|
+
width: 2rem
|
|
269
|
+
height: 2rem
|
|
270
|
+
border-radius: 50%
|
|
271
|
+
|
|
272
|
+
.list-label
|
|
273
|
+
font-weight: $font-weight-medium
|
|
274
|
+
|
|
275
|
+
// Icon sidebar list (for vertical menus like mail/contacts in image)
|
|
276
|
+
@mixin list-icon-sidebar($width: 3rem, $icon-size: 1.5rem, $bg: $bg, $active-indicator: true)
|
|
277
|
+
@include list-reset
|
|
278
|
+
|
|
279
|
+
display: flex
|
|
280
|
+
flex-direction: column
|
|
281
|
+
width: $width
|
|
282
|
+
background-color: $bg
|
|
283
|
+
padding: 0.5rem 0
|
|
284
|
+
|
|
285
|
+
li
|
|
286
|
+
position: relative
|
|
287
|
+
padding: 0.75rem
|
|
288
|
+
border-radius: 6px
|
|
289
|
+
cursor: pointer
|
|
290
|
+
transition: background-color 0.2s ease
|
|
291
|
+
|
|
292
|
+
.list-icon
|
|
293
|
+
width: $icon-size
|
|
294
|
+
height: $icon-size
|
|
295
|
+
display: flex
|
|
296
|
+
align-items: center
|
|
297
|
+
justify-content: center
|
|
298
|
+
margin: 0 auto
|
|
299
|
+
color: $text-secondary
|
|
300
|
+
|
|
301
|
+
&:hover
|
|
302
|
+
background-color: rgba($mm, 0.1)
|
|
303
|
+
|
|
304
|
+
.list-icon
|
|
305
|
+
color: $mm
|
|
306
|
+
|
|
307
|
+
@if $active-indicator
|
|
308
|
+
&.active::before
|
|
309
|
+
content: ''
|
|
310
|
+
position: absolute
|
|
311
|
+
left: 0
|
|
312
|
+
top: 50%
|
|
313
|
+
transform: translateY(-50%)
|
|
314
|
+
width: 3px
|
|
315
|
+
height: 24px
|
|
316
|
+
background-color: $mm
|
|
317
|
+
border-radius: 0 2px 2px 0
|
|
318
|
+
|
|
319
|
+
.list-badge
|
|
320
|
+
position: absolute
|
|
321
|
+
top: 0.5rem
|
|
322
|
+
right: 0.5rem
|
|
323
|
+
width: 0.75rem
|
|
324
|
+
height: 0.75rem
|
|
325
|
+
border-radius: 50%
|
|
326
|
+
background-color: $warning
|
|
327
|
+
font-size: 0.5rem
|
|
328
|
+
color: $background
|
|
329
|
+
display: flex
|
|
330
|
+
align-items: center
|
|
331
|
+
justify-content: center
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
// Compact list for mobile (like the image's tight spacing)
|
|
335
|
+
@mixin list-compact($spacing: 0.5rem)
|
|
336
|
+
@include list-reset
|
|
337
|
+
|
|
338
|
+
li
|
|
339
|
+
padding: $spacing 0.75rem
|
|
340
|
+
margin-bottom: $spacing
|
|
341
|
+
|
|
342
|
+
&:last-child
|
|
343
|
+
margin-bottom: 0
|
|
344
|
+
|
|
345
|
+
// List with notification badges
|
|
346
|
+
@mixin list-with-badge($badge-bg: $warning, $badge-size: 1.25rem)
|
|
347
|
+
li
|
|
348
|
+
position: relative
|
|
349
|
+
|
|
350
|
+
.list-badge
|
|
351
|
+
position: absolute
|
|
352
|
+
top: 0.25rem
|
|
353
|
+
right: 0.25rem
|
|
354
|
+
min-width: $badge-size
|
|
355
|
+
height: $badge-size
|
|
356
|
+
padding: 0 0.35rem
|
|
357
|
+
border-radius: $badge-size * 0.5
|
|
358
|
+
background-color: $badge-bg
|
|
359
|
+
color: $background
|
|
360
|
+
font-size: 0.75rem
|
|
361
|
+
font-weight: $font-weight-semibold
|
|
362
|
+
display: flex
|
|
363
|
+
align-items: center
|
|
364
|
+
justify-content: center
|
|
365
|
+
line-height: 1
|
|
366
|
+
|
|
367
|
+
// Section headers for grouped lists (like ACCOUNT in image)
|
|
368
|
+
@mixin list-section-header($font-size: 0.75rem, $spacing: 1rem, $color: $text-tertiary)
|
|
369
|
+
display: block
|
|
370
|
+
margin-top: $spacing
|
|
371
|
+
margin-bottom: 0.5rem
|
|
372
|
+
padding: 0 1rem
|
|
373
|
+
font-size: $font-size
|
|
374
|
+
font-weight: $font-weight-semibold
|
|
375
|
+
color: $color
|
|
376
|
+
text-transform: uppercase
|
|
377
|
+
letter-spacing: 0.05em
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
@use "sass:math"
|
|
2
|
+
|
|
3
|
+
// Overflow mixins for handling content overflow behaviors
|
|
4
|
+
|
|
5
|
+
// Basic overflow utilities
|
|
6
|
+
@mixin overflow($value)
|
|
7
|
+
overflow: $value
|
|
8
|
+
|
|
9
|
+
@mixin overflow-x($value)
|
|
10
|
+
overflow-x: $value
|
|
11
|
+
|
|
12
|
+
@mixin overflow-y($value)
|
|
13
|
+
overflow-y: $value
|
|
14
|
+
|
|
15
|
+
// Common overflow patterns
|
|
16
|
+
@mixin overflow-hidden
|
|
17
|
+
overflow: hidden
|
|
18
|
+
|
|
19
|
+
@mixin overflow-visible
|
|
20
|
+
overflow: visible
|
|
21
|
+
|
|
22
|
+
@mixin overflow-scroll
|
|
23
|
+
overflow: scroll
|
|
24
|
+
|
|
25
|
+
@mixin overflow-auto
|
|
26
|
+
overflow: auto
|
|
27
|
+
|
|
28
|
+
// Directional overflow patterns
|
|
29
|
+
@mixin overflow-x-hidden
|
|
30
|
+
overflow-x: hidden
|
|
31
|
+
|
|
32
|
+
@mixin overflow-x-visible
|
|
33
|
+
overflow-x: visible
|
|
34
|
+
|
|
35
|
+
@mixin overflow-x-scroll
|
|
36
|
+
overflow-x: scroll
|
|
37
|
+
|
|
38
|
+
@mixin overflow-x-auto
|
|
39
|
+
overflow-x: auto
|
|
40
|
+
|
|
41
|
+
@mixin overflow-y-hidden
|
|
42
|
+
overflow-y: hidden
|
|
43
|
+
|
|
44
|
+
@mixin overflow-y-visible
|
|
45
|
+
overflow-y: visible
|
|
46
|
+
|
|
47
|
+
@mixin overflow-y-scroll
|
|
48
|
+
overflow-y: scroll
|
|
49
|
+
|
|
50
|
+
@mixin overflow-y-auto
|
|
51
|
+
overflow-y: auto
|
|
52
|
+
|
|
53
|
+
// Text overflow utilities
|
|
54
|
+
@mixin text-overflow-ellipsis
|
|
55
|
+
overflow: hidden
|
|
56
|
+
white-space: nowrap
|
|
57
|
+
text-overflow: ellipsis
|
|
58
|
+
|
|
59
|
+
@mixin text-overflow-clip
|
|
60
|
+
overflow: hidden
|
|
61
|
+
white-space: nowrap
|
|
62
|
+
text-overflow: clip
|
|
63
|
+
|
|
64
|
+
// Multi-line text truncation (webkit only)
|
|
65
|
+
@mixin text-overflow-lines($lines: 3)
|
|
66
|
+
display: -webkit-box
|
|
67
|
+
-webkit-line-clamp: $lines
|
|
68
|
+
-webkit-box-orient: vertical
|
|
69
|
+
overflow: hidden
|
|
70
|
+
|
|
71
|
+
// Scrollbar styling utilities
|
|
72
|
+
@mixin custom-scrollbar($width: 8px, $track-color: #f1f1f1, $thumb-color: #888, $thumb-hover-color: #555)
|
|
73
|
+
&::-webkit-scrollbar
|
|
74
|
+
width: $width
|
|
75
|
+
height: $width
|
|
76
|
+
|
|
77
|
+
&::-webkit-scrollbar-track
|
|
78
|
+
background: $track-color
|
|
79
|
+
border-radius: math.div($width, 2)
|
|
80
|
+
|
|
81
|
+
&::-webkit-scrollbar-thumb
|
|
82
|
+
background: $thumb-color
|
|
83
|
+
border-radius: math.div($width, 2)
|
|
84
|
+
|
|
85
|
+
&:hover
|
|
86
|
+
background: $thumb-hover-color
|
|
87
|
+
|
|
88
|
+
// Hide scrollbar while keeping functionality
|
|
89
|
+
@mixin hide-scrollbar
|
|
90
|
+
scrollbar-width: none // Firefox
|
|
91
|
+
-ms-overflow-style: none // IE/Edge
|
|
92
|
+
|
|
93
|
+
&::-webkit-scrollbar
|
|
94
|
+
display: none // Chrome, Safari, Opera
|
|
95
|
+
|
|
96
|
+
// Overlay scrolling (macOS style)
|
|
97
|
+
@mixin overlay-scrolling
|
|
98
|
+
overflow: overlay
|
|
99
|
+
|
|
100
|
+
// Scrolling behavior utilities
|
|
101
|
+
@mixin smooth-scrolling
|
|
102
|
+
scroll-behavior: smooth
|
|
103
|
+
|
|
104
|
+
@mixin instant-scrolling
|
|
105
|
+
scroll-behavior: auto
|
|
106
|
+
|
|
107
|
+
// Container with custom scrollbar
|
|
108
|
+
@mixin scrollable-container($max-height: 300px, $scrollbar-width: 6px)
|
|
109
|
+
max-height: $max-height
|
|
110
|
+
overflow-y: auto
|
|
111
|
+
@include custom-scrollbar($scrollbar-width)
|
|
112
|
+
|
|
113
|
+
// Horizontal scrolling container
|
|
114
|
+
@mixin horizontal-scroll
|
|
115
|
+
overflow-x: auto
|
|
116
|
+
overflow-y: hidden
|
|
117
|
+
white-space: nowrap
|
|
118
|
+
|
|
119
|
+
// Optional: hide scrollbar on mobile
|
|
120
|
+
@media (max-width: 768px)
|
|
121
|
+
@include hide-scrollbar
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// Position utilities and mixins
|
|
2
|
+
@use '../variables/colors' as colors
|
|
3
|
+
|
|
4
|
+
// Position types
|
|
5
|
+
@mixin position-static
|
|
6
|
+
position: static
|
|
7
|
+
|
|
8
|
+
@mixin position-relative
|
|
9
|
+
position: relative
|
|
10
|
+
|
|
11
|
+
@mixin position-absolute
|
|
12
|
+
position: absolute
|
|
13
|
+
|
|
14
|
+
@mixin position-fixed
|
|
15
|
+
position: fixed
|
|
16
|
+
|
|
17
|
+
@mixin position-sticky
|
|
18
|
+
position: sticky
|
|
19
|
+
|
|
20
|
+
// Position with coordinates
|
|
21
|
+
@mixin absolute($top: null, $right: null, $bottom: null, $left: null)
|
|
22
|
+
position: absolute
|
|
23
|
+
@if $top != null
|
|
24
|
+
top: $top
|
|
25
|
+
@if $right != null
|
|
26
|
+
right: $right
|
|
27
|
+
@if $bottom != null
|
|
28
|
+
bottom: $bottom
|
|
29
|
+
@if $left != null
|
|
30
|
+
left: $left
|
|
31
|
+
|
|
32
|
+
@mixin fixed($top: null, $right: null, $bottom: null, $left: null)
|
|
33
|
+
position: fixed
|
|
34
|
+
@if $top != null
|
|
35
|
+
top: $top
|
|
36
|
+
@if $right != null
|
|
37
|
+
right: $right
|
|
38
|
+
@if $bottom != null
|
|
39
|
+
bottom: $bottom
|
|
40
|
+
@if $left != null
|
|
41
|
+
left: $left
|
|
42
|
+
|
|
43
|
+
@mixin relative($top: null, $right: null, $bottom: null, $left: null)
|
|
44
|
+
position: relative
|
|
45
|
+
@if $top != null
|
|
46
|
+
top: $top
|
|
47
|
+
@if $right != null
|
|
48
|
+
right: $right
|
|
49
|
+
@if $bottom != null
|
|
50
|
+
bottom: $bottom
|
|
51
|
+
@if $left != null
|
|
52
|
+
left: $left
|
|
53
|
+
|
|
54
|
+
@mixin sticky($top: null, $right: null, $bottom: null, $left: null)
|
|
55
|
+
position: sticky
|
|
56
|
+
@if $top != null
|
|
57
|
+
top: $top
|
|
58
|
+
@if $right != null
|
|
59
|
+
right: $right
|
|
60
|
+
@if $bottom != null
|
|
61
|
+
bottom: $bottom
|
|
62
|
+
@if $left != null
|
|
63
|
+
left: $left
|
|
64
|
+
|
|
65
|
+
// Common positioning patterns
|
|
66
|
+
@mixin absolute-center
|
|
67
|
+
position: absolute
|
|
68
|
+
top: 50%
|
|
69
|
+
left: 50%
|
|
70
|
+
transform: translate(-50%, -50%)
|
|
71
|
+
|
|
72
|
+
@mixin absolute-center-x
|
|
73
|
+
position: absolute
|
|
74
|
+
left: 50%
|
|
75
|
+
transform: translateX(-50%)
|
|
76
|
+
|
|
77
|
+
@mixin absolute-center-y
|
|
78
|
+
position: absolute
|
|
79
|
+
top: 50%
|
|
80
|
+
transform: translateY(-50%)
|
|
81
|
+
|
|
82
|
+
@mixin absolute-fill
|
|
83
|
+
position: absolute
|
|
84
|
+
top: 0
|
|
85
|
+
right: 0
|
|
86
|
+
bottom: 0
|
|
87
|
+
left: 0
|
|
88
|
+
|
|
89
|
+
@mixin fixed-fill
|
|
90
|
+
position: fixed
|
|
91
|
+
top: 0
|
|
92
|
+
right: 0
|
|
93
|
+
bottom: 0
|
|
94
|
+
left: 0
|
|
95
|
+
|
|
96
|
+
// Corner positioning
|
|
97
|
+
@mixin absolute-top-left($offset: 0)
|
|
98
|
+
position: absolute
|
|
99
|
+
top: $offset
|
|
100
|
+
left: $offset
|
|
101
|
+
|
|
102
|
+
@mixin absolute-top-right($offset: 0)
|
|
103
|
+
position: absolute
|
|
104
|
+
top: $offset
|
|
105
|
+
right: $offset
|
|
106
|
+
|
|
107
|
+
@mixin absolute-bottom-left($offset: 0)
|
|
108
|
+
position: absolute
|
|
109
|
+
bottom: $offset
|
|
110
|
+
left: $offset
|
|
111
|
+
|
|
112
|
+
@mixin absolute-bottom-right($offset: 0)
|
|
113
|
+
position: absolute
|
|
114
|
+
bottom: $offset
|
|
115
|
+
right: $offset
|
|
116
|
+
|
|
117
|
+
// Z-index utilities
|
|
118
|
+
@mixin z-index($value)
|
|
119
|
+
z-index: $value
|
|
120
|
+
|
|
121
|
+
// Common z-index layers
|
|
122
|
+
@mixin z-behind
|
|
123
|
+
z-index: -1
|
|
124
|
+
|
|
125
|
+
@mixin z-normal
|
|
126
|
+
z-index: 0
|
|
127
|
+
|
|
128
|
+
@mixin z-menu-backdrop
|
|
129
|
+
z-index: 80
|
|
130
|
+
|
|
131
|
+
@mixin z-frame
|
|
132
|
+
z-index: 50
|
|
133
|
+
|
|
134
|
+
@mixin z-menu-details
|
|
135
|
+
z-index: 90
|
|
136
|
+
|
|
137
|
+
@mixin z-menu
|
|
138
|
+
z-index: 100
|
|
139
|
+
|
|
140
|
+
@mixin z-dropdown
|
|
141
|
+
z-index: 1000
|
|
142
|
+
|
|
143
|
+
@mixin z-sticky
|
|
144
|
+
z-index: 1020
|
|
145
|
+
|
|
146
|
+
@mixin z-fixed
|
|
147
|
+
z-index: 1030
|
|
148
|
+
|
|
149
|
+
@mixin z-modal
|
|
150
|
+
z-index: 1040
|
|
151
|
+
|
|
152
|
+
@mixin z-popover
|
|
153
|
+
z-index: 1060
|
|
154
|
+
|
|
155
|
+
@mixin z-tooltip
|
|
156
|
+
z-index: 1070
|
|
157
|
+
|
|
158
|
+
@mixin z-top
|
|
159
|
+
z-index: 9999
|
|
160
|
+
|
|
161
|
+
=generate-float-classes
|
|
162
|
+
|
|
163
|
+
.float-left
|
|
164
|
+
float: left
|
|
165
|
+
|
|
166
|
+
.float-right
|
|
167
|
+
float: right
|
|
168
|
+
|
|
169
|
+
.float-none
|
|
170
|
+
float: none
|
|
171
|
+
|
|
172
|
+
// Reusable premium sticky header with glassmorphism, shadows, and smooth transitions
|
|
173
|
+
@mixin premium-sticky-header($top: -1px, $z-index: 100)
|
|
174
|
+
position: sticky
|
|
175
|
+
top: $top
|
|
176
|
+
z-index: $z-index
|
|
177
|
+
background: rgba(255, 255, 255, 0.9)
|
|
178
|
+
backdrop-filter: blur(12px)
|
|
179
|
+
border-bottom: 1px solid colors.$backdrop-border
|
|
180
|
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04)
|
|
181
|
+
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1)
|