@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,210 @@
|
|
|
1
|
+
// Display utilities and mixins
|
|
2
|
+
|
|
3
|
+
// Basic display types
|
|
4
|
+
@mixin display($value)
|
|
5
|
+
display: $value
|
|
6
|
+
|
|
7
|
+
@mixin block
|
|
8
|
+
display: block
|
|
9
|
+
|
|
10
|
+
@mixin inline
|
|
11
|
+
display: inline
|
|
12
|
+
|
|
13
|
+
@mixin inline-block
|
|
14
|
+
display: inline-block
|
|
15
|
+
|
|
16
|
+
@mixin none
|
|
17
|
+
display: none
|
|
18
|
+
|
|
19
|
+
@mixin hidden
|
|
20
|
+
display: none
|
|
21
|
+
|
|
22
|
+
@mixin show
|
|
23
|
+
display: block
|
|
24
|
+
|
|
25
|
+
// Note: Flex display mixins have been moved to mixins/_flex.sass
|
|
26
|
+
|
|
27
|
+
// Grid display
|
|
28
|
+
@mixin grid
|
|
29
|
+
display: grid
|
|
30
|
+
|
|
31
|
+
@mixin inline-grid
|
|
32
|
+
display: inline-grid
|
|
33
|
+
|
|
34
|
+
// Table display
|
|
35
|
+
@mixin table
|
|
36
|
+
display: table
|
|
37
|
+
|
|
38
|
+
@mixin table-row
|
|
39
|
+
display: table-row
|
|
40
|
+
|
|
41
|
+
@mixin table-cell
|
|
42
|
+
display: table-cell
|
|
43
|
+
|
|
44
|
+
@mixin table-column
|
|
45
|
+
display: table-column
|
|
46
|
+
|
|
47
|
+
@mixin table-row-group
|
|
48
|
+
display: table-row-group
|
|
49
|
+
|
|
50
|
+
@mixin table-header-group
|
|
51
|
+
display: table-header-group
|
|
52
|
+
|
|
53
|
+
@mixin table-footer-group
|
|
54
|
+
display: table-footer-group
|
|
55
|
+
|
|
56
|
+
@mixin table-caption
|
|
57
|
+
display: table-caption
|
|
58
|
+
|
|
59
|
+
@mixin table-column-group
|
|
60
|
+
display: table-column-group
|
|
61
|
+
|
|
62
|
+
// List display
|
|
63
|
+
@mixin list-item
|
|
64
|
+
display: list-item
|
|
65
|
+
|
|
66
|
+
// Content flow
|
|
67
|
+
@mixin flow-root
|
|
68
|
+
display: flow-root
|
|
69
|
+
|
|
70
|
+
@mixin contents
|
|
71
|
+
display: contents
|
|
72
|
+
|
|
73
|
+
// Legacy display values
|
|
74
|
+
@mixin run-in
|
|
75
|
+
display: run-in
|
|
76
|
+
|
|
77
|
+
@mixin compact
|
|
78
|
+
display: compact
|
|
79
|
+
|
|
80
|
+
// Multi-keyword display values (CSS Display Module Level 3)
|
|
81
|
+
@mixin block-flex
|
|
82
|
+
display: block flex
|
|
83
|
+
|
|
84
|
+
@mixin inline-flex-display
|
|
85
|
+
display: inline flex
|
|
86
|
+
|
|
87
|
+
@mixin block-grid
|
|
88
|
+
display: block grid
|
|
89
|
+
|
|
90
|
+
@mixin inline-grid-display
|
|
91
|
+
display: inline grid
|
|
92
|
+
|
|
93
|
+
// Visibility related (not display but commonly used together)
|
|
94
|
+
@mixin visible
|
|
95
|
+
visibility: visible
|
|
96
|
+
|
|
97
|
+
@mixin invisible
|
|
98
|
+
visibility: hidden
|
|
99
|
+
|
|
100
|
+
@mixin collapse
|
|
101
|
+
visibility: collapse
|
|
102
|
+
|
|
103
|
+
// Common display patterns
|
|
104
|
+
@mixin hide-visually
|
|
105
|
+
position: absolute
|
|
106
|
+
width: 1px
|
|
107
|
+
height: 1px
|
|
108
|
+
margin: -1px
|
|
109
|
+
padding: 0
|
|
110
|
+
overflow: hidden
|
|
111
|
+
clip: rect(0, 0, 0, 0)
|
|
112
|
+
white-space: nowrap
|
|
113
|
+
border: 0
|
|
114
|
+
|
|
115
|
+
@mixin show-visually
|
|
116
|
+
position: static
|
|
117
|
+
width: auto
|
|
118
|
+
height: auto
|
|
119
|
+
margin: 0
|
|
120
|
+
padding: 0
|
|
121
|
+
overflow: visible
|
|
122
|
+
clip: auto
|
|
123
|
+
white-space: normal
|
|
124
|
+
border: initial
|
|
125
|
+
|
|
126
|
+
// Responsive display helpers
|
|
127
|
+
@mixin hide-mobile
|
|
128
|
+
@media (max-width: 768px)
|
|
129
|
+
display: none
|
|
130
|
+
|
|
131
|
+
@mixin show-mobile
|
|
132
|
+
@media (max-width: 768px)
|
|
133
|
+
display: block
|
|
134
|
+
|
|
135
|
+
@mixin hide-tablet
|
|
136
|
+
@media (min-width: 769px) and (max-width: 1024px)
|
|
137
|
+
display: none
|
|
138
|
+
|
|
139
|
+
@mixin show-tablet
|
|
140
|
+
@media (min-width: 769px) and (max-width: 1024px)
|
|
141
|
+
display: block
|
|
142
|
+
|
|
143
|
+
@mixin hide-desktop
|
|
144
|
+
@media (min-width: 1025px)
|
|
145
|
+
display: none
|
|
146
|
+
|
|
147
|
+
@mixin show-desktop
|
|
148
|
+
@media (min-width: 1025px)
|
|
149
|
+
display: block
|
|
150
|
+
|
|
151
|
+
@mixin mobile-only
|
|
152
|
+
@media (max-width: 768px)
|
|
153
|
+
display: block
|
|
154
|
+
@media (min-width: 769px)
|
|
155
|
+
display: none
|
|
156
|
+
|
|
157
|
+
@mixin tablet-only
|
|
158
|
+
@media (max-width: 768px)
|
|
159
|
+
display: none
|
|
160
|
+
@media (min-width: 769px) and (max-width: 1024px)
|
|
161
|
+
display: block
|
|
162
|
+
@media (min-width: 1025px)
|
|
163
|
+
display: none
|
|
164
|
+
|
|
165
|
+
@mixin desktop-only
|
|
166
|
+
@media (max-width: 1024px)
|
|
167
|
+
display: none
|
|
168
|
+
@media (min-width: 1025px)
|
|
169
|
+
display: block
|
|
170
|
+
|
|
171
|
+
// Print display helpers
|
|
172
|
+
@mixin hide-print
|
|
173
|
+
@media print
|
|
174
|
+
display: none !important
|
|
175
|
+
|
|
176
|
+
@mixin show-print
|
|
177
|
+
@media print
|
|
178
|
+
display: block !important
|
|
179
|
+
|
|
180
|
+
@mixin print-only
|
|
181
|
+
display: none
|
|
182
|
+
@media print
|
|
183
|
+
display: block !important
|
|
184
|
+
|
|
185
|
+
// Container query display helpers
|
|
186
|
+
@mixin hide-container-small
|
|
187
|
+
@container (max-width: 400px)
|
|
188
|
+
display: none
|
|
189
|
+
|
|
190
|
+
@mixin show-container-small
|
|
191
|
+
@container (max-width: 400px)
|
|
192
|
+
display: block
|
|
193
|
+
|
|
194
|
+
@mixin hide-container-large
|
|
195
|
+
@container (min-width: 800px)
|
|
196
|
+
display: none
|
|
197
|
+
|
|
198
|
+
@mixin show-container-large
|
|
199
|
+
@container (min-width: 800px)
|
|
200
|
+
display: block
|
|
201
|
+
|
|
202
|
+
// Conditional display based on features
|
|
203
|
+
@mixin display-if-supports($property: display, $value: grid)
|
|
204
|
+
@supports (#{$property}: #{$value})
|
|
205
|
+
display: #{$value}
|
|
206
|
+
|
|
207
|
+
@mixin fallback-display($fallback: block, $modern: grid)
|
|
208
|
+
display: $fallback
|
|
209
|
+
@supports (display: #{$modern})
|
|
210
|
+
display: #{$modern}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Flex utilities and mixins
|
|
2
|
+
|
|
3
|
+
// Flex container mixins
|
|
4
|
+
@mixin flex
|
|
5
|
+
display: flex
|
|
6
|
+
|
|
7
|
+
@mixin inline-flex
|
|
8
|
+
display: inline-flex
|
|
9
|
+
|
|
10
|
+
@mixin flex-column
|
|
11
|
+
display: flex
|
|
12
|
+
flex-direction: column
|
|
13
|
+
|
|
14
|
+
@mixin flex-row
|
|
15
|
+
display: flex
|
|
16
|
+
flex-direction: row
|
|
17
|
+
|
|
18
|
+
@mixin flex-center
|
|
19
|
+
display: flex
|
|
20
|
+
align-items: center
|
|
21
|
+
justify-content: center
|
|
22
|
+
|
|
23
|
+
@mixin flex-center-column
|
|
24
|
+
display: flex
|
|
25
|
+
flex-direction: column
|
|
26
|
+
align-items: center
|
|
27
|
+
justify-content: center
|
|
28
|
+
|
|
29
|
+
@mixin flex-start
|
|
30
|
+
display: flex
|
|
31
|
+
align-items: flex-start
|
|
32
|
+
justify-content: flex-start
|
|
33
|
+
|
|
34
|
+
@mixin flex-end
|
|
35
|
+
display: flex
|
|
36
|
+
align-items: flex-end
|
|
37
|
+
justify-content: flex-end
|
|
38
|
+
|
|
39
|
+
@mixin flex-between
|
|
40
|
+
display: flex
|
|
41
|
+
align-items: center
|
|
42
|
+
justify-content: space-between
|
|
43
|
+
|
|
44
|
+
@mixin flex-around
|
|
45
|
+
display: flex
|
|
46
|
+
align-items: center
|
|
47
|
+
justify-content: space-around
|
|
48
|
+
|
|
49
|
+
@mixin flex-evenly
|
|
50
|
+
display: flex
|
|
51
|
+
align-items: center
|
|
52
|
+
justify-content: space-evenly
|
|
53
|
+
|
|
54
|
+
// Flex item mixins
|
|
55
|
+
@mixin flex-1
|
|
56
|
+
flex: 1
|
|
57
|
+
|
|
58
|
+
@mixin flex-auto
|
|
59
|
+
flex: auto
|
|
60
|
+
|
|
61
|
+
@mixin flex-none
|
|
62
|
+
flex: none
|
|
63
|
+
|
|
64
|
+
@mixin flex-grow($value: 1)
|
|
65
|
+
flex-grow: $value
|
|
66
|
+
|
|
67
|
+
@mixin flex-shrink($value: 1)
|
|
68
|
+
flex-shrink: $value
|
|
69
|
+
|
|
70
|
+
@mixin flex-basis($value)
|
|
71
|
+
flex-basis: $value
|
|
72
|
+
|
|
73
|
+
// Alignment mixins
|
|
74
|
+
@mixin align-items($value)
|
|
75
|
+
align-items: $value
|
|
76
|
+
|
|
77
|
+
@mixin justify-content($value)
|
|
78
|
+
justify-content: $value
|
|
79
|
+
|
|
80
|
+
@mixin align-self($value)
|
|
81
|
+
align-self: $value
|
|
82
|
+
|
|
83
|
+
@mixin align-content($value)
|
|
84
|
+
align-content: $value
|
|
85
|
+
|
|
86
|
+
// Direction and wrap
|
|
87
|
+
@mixin flex-direction($value)
|
|
88
|
+
flex-direction: $value
|
|
89
|
+
|
|
90
|
+
@mixin flex-wrap($value: wrap)
|
|
91
|
+
flex-wrap: $value
|
|
92
|
+
|
|
93
|
+
@mixin flex-nowrap
|
|
94
|
+
flex-wrap: nowrap
|
|
95
|
+
|
|
96
|
+
// Gap utilities
|
|
97
|
+
@mixin gap($value)
|
|
98
|
+
gap: $value
|
|
99
|
+
|
|
100
|
+
@mixin row-gap($value)
|
|
101
|
+
row-gap: $value
|
|
102
|
+
|
|
103
|
+
@mixin column-gap($value)
|
|
104
|
+
column-gap: $value
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
=form-grid($gap: 1.25em, $columns: 12)
|
|
2
|
+
display: grid
|
|
3
|
+
grid-template-columns: repeat($columns, 1fr)
|
|
4
|
+
gap: $gap
|
|
5
|
+
padding: 1.25em 0
|
|
6
|
+
|
|
7
|
+
> *
|
|
8
|
+
grid-column: span $columns
|
|
9
|
+
min-width: 0
|
|
10
|
+
|
|
11
|
+
@for $i from 1 through $columns
|
|
12
|
+
.col-#{$i}
|
|
13
|
+
grid-column: span $i
|
|
14
|
+
|
|
15
|
+
@for $i from 1 through $columns
|
|
16
|
+
.col-start-#{$i}
|
|
17
|
+
grid-column-start: $i
|
|
18
|
+
|
|
19
|
+
@for $i from 1 through $columns
|
|
20
|
+
.col-end-#{$i}
|
|
21
|
+
grid-column-end: $i
|
|
22
|
+
|
|
23
|
+
@media (max-width: 768px)
|
|
24
|
+
@for $i from 1 through $columns
|
|
25
|
+
.col-md-#{$i}
|
|
26
|
+
grid-column: span $i
|
|
27
|
+
|
|
28
|
+
.col-md-auto
|
|
29
|
+
grid-column: span $columns
|
|
30
|
+
|
|
31
|
+
@media (max-width: 480px)
|
|
32
|
+
@for $i from 1 through $columns
|
|
33
|
+
.col-sm-#{$i}
|
|
34
|
+
grid-column: span $i
|
|
35
|
+
|
|
36
|
+
.col-sm-auto
|
|
37
|
+
grid-column: span $columns
|
|
38
|
+
|
|
39
|
+
> *:not([class*="col-sm-"])
|
|
40
|
+
grid-column: span $columns
|
|
41
|
+
|
|
42
|
+
=form-spacing-utilities
|
|
43
|
+
.gap-xs
|
|
44
|
+
gap: calc(1.25em * 0.25)
|
|
45
|
+
|
|
46
|
+
.gap-sm
|
|
47
|
+
gap: calc(1.25em * 0.5)
|
|
48
|
+
|
|
49
|
+
.gap-md
|
|
50
|
+
gap: 1.25em
|
|
51
|
+
|
|
52
|
+
.gap-lg
|
|
53
|
+
gap: calc(1.25em * 1.5)
|
|
54
|
+
|
|
55
|
+
.gap-xl
|
|
56
|
+
gap: calc(1.25em * 2)
|
|
57
|
+
|
|
58
|
+
.mt-auto
|
|
59
|
+
margin-top: auto
|
|
60
|
+
|
|
61
|
+
.mb-auto
|
|
62
|
+
margin-bottom: auto
|
|
63
|
+
|
|
64
|
+
.ml-auto
|
|
65
|
+
margin-left: auto
|
|
66
|
+
|
|
67
|
+
.mr-auto
|
|
68
|
+
margin-right: auto
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// CSS Grid Layout Mixins - Comprehensive Grid System
|
|
2
|
+
@use '../variables/spacing' as *
|
|
3
|
+
|
|
4
|
+
// ===========================================
|
|
5
|
+
// GRID DISPLAY MIXINS
|
|
6
|
+
// ===========================================
|
|
7
|
+
|
|
8
|
+
@mixin grid-layout
|
|
9
|
+
display: grid
|
|
10
|
+
|
|
11
|
+
@mixin inline-grid-layout
|
|
12
|
+
display: inline-grid
|
|
13
|
+
|
|
14
|
+
@mixin subgrid-layout
|
|
15
|
+
display: subgrid
|
|
16
|
+
|
|
17
|
+
// ===========================================
|
|
18
|
+
// GRID TEMPLATE MIXINS
|
|
19
|
+
// ===========================================
|
|
20
|
+
|
|
21
|
+
// Grid template rows
|
|
22
|
+
@mixin grid-template-rows($rows)
|
|
23
|
+
grid-template-rows: #{$rows}
|
|
24
|
+
|
|
25
|
+
// Grid template columns
|
|
26
|
+
@mixin grid-template-columns($cols)
|
|
27
|
+
grid-template-columns: #{$cols}
|
|
28
|
+
|
|
29
|
+
// Grid template areas
|
|
30
|
+
@mixin grid-template-areas($areas...)
|
|
31
|
+
$area-string: ""
|
|
32
|
+
@each $area in $areas
|
|
33
|
+
$area-string: $area-string + '"' + $area + '" '
|
|
34
|
+
grid-template-areas: #{$area-string}
|
|
35
|
+
|
|
36
|
+
// Combined grid template
|
|
37
|
+
@mixin grid-template($rows, $cols, $areas: null)
|
|
38
|
+
@include grid-template-rows($rows)
|
|
39
|
+
@include grid-template-columns($cols)
|
|
40
|
+
@if $areas
|
|
41
|
+
@include grid-template-areas($areas...)
|
|
42
|
+
|
|
43
|
+
// ===========================================
|
|
44
|
+
// GRID GAP MIXINS
|
|
45
|
+
// ===========================================
|
|
46
|
+
|
|
47
|
+
@mixin grid-gap($gap)
|
|
48
|
+
gap: $gap
|
|
49
|
+
|
|
50
|
+
@mixin grid-row-gap($gap)
|
|
51
|
+
row-gap: $gap
|
|
52
|
+
|
|
53
|
+
@mixin grid-column-gap($gap)
|
|
54
|
+
column-gap: $gap
|
|
55
|
+
|
|
56
|
+
@mixin grid-gap-responsive($base: $grid-gutter-width)
|
|
57
|
+
gap: $base * 0.5
|
|
58
|
+
|
|
59
|
+
@media (min-width: 768px)
|
|
60
|
+
gap: $base
|
|
61
|
+
|
|
62
|
+
@media (min-width: 1024px)
|
|
63
|
+
gap: $base * 1.5
|
|
64
|
+
|
|
65
|
+
// ===========================================
|
|
66
|
+
// GRID ITEM PLACEMENT MIXINS
|
|
67
|
+
// ===========================================
|
|
68
|
+
|
|
69
|
+
// Grid area assignment
|
|
70
|
+
@mixin grid-area($area)
|
|
71
|
+
grid-area: #{$area}
|
|
72
|
+
|
|
73
|
+
// Grid row placement
|
|
74
|
+
@mixin grid-row($start, $end: null)
|
|
75
|
+
@if $end
|
|
76
|
+
grid-row: #{$start} / #{$end}
|
|
77
|
+
@else
|
|
78
|
+
grid-row: #{$start}
|
|
79
|
+
|
|
80
|
+
// Grid column placement
|
|
81
|
+
@mixin grid-column($start, $end: null)
|
|
82
|
+
@if $end
|
|
83
|
+
grid-column: #{$start} / #{$end}
|
|
84
|
+
@else
|
|
85
|
+
grid-column: #{$start}
|
|
86
|
+
|
|
87
|
+
// Grid item span
|
|
88
|
+
@mixin grid-span-row($span)
|
|
89
|
+
grid-row: span #{$span}
|
|
90
|
+
|
|
91
|
+
@mixin grid-span-column($span)
|
|
92
|
+
grid-column: span #{$span}
|
|
93
|
+
|
|
94
|
+
@mixin grid-span($row-span: null, $col-span: null)
|
|
95
|
+
@if $row-span
|
|
96
|
+
@include grid-span-row($row-span)
|
|
97
|
+
@if $col-span
|
|
98
|
+
@include grid-span-column($col-span)
|
|
99
|
+
|
|
100
|
+
// ===========================================
|
|
101
|
+
// GRID ALIGNMENT MIXINS
|
|
102
|
+
// ===========================================
|
|
103
|
+
|
|
104
|
+
// Place items (align and justify items)
|
|
105
|
+
@mixin place-items($align, $justify: $align)
|
|
106
|
+
place-items: #{$align} #{$justify}
|
|
107
|
+
|
|
108
|
+
// Place content (align and justify content)
|
|
109
|
+
@mixin place-content($align, $justify: $align)
|
|
110
|
+
place-content: #{$align} #{$justify}
|
|
111
|
+
|
|
112
|
+
// Place self (align and justify self)
|
|
113
|
+
@mixin place-self($align, $justify: $align)
|
|
114
|
+
place-self: #{$align} #{$justify}
|
|
115
|
+
|
|
116
|
+
// Individual alignment properties (grid-specific)
|
|
117
|
+
@mixin grid-align-items($value)
|
|
118
|
+
align-items: #{$value}
|
|
119
|
+
|
|
120
|
+
@mixin grid-justify-items($value)
|
|
121
|
+
justify-items: #{$value}
|
|
122
|
+
|
|
123
|
+
@mixin grid-align-content($value)
|
|
124
|
+
align-content: #{$value}
|
|
125
|
+
|
|
126
|
+
@mixin grid-justify-content($value)
|
|
127
|
+
justify-content: #{$value}
|
|
128
|
+
|
|
129
|
+
@mixin grid-align-self($value)
|
|
130
|
+
align-self: #{$value}
|
|
131
|
+
|
|
132
|
+
@mixin grid-justify-self($value)
|
|
133
|
+
justify-self: #{$value}
|
|
134
|
+
|
|
135
|
+
// ===========================================
|
|
136
|
+
// GRID AUTO FLOW MIXINS
|
|
137
|
+
// ===========================================
|
|
138
|
+
|
|
139
|
+
@mixin grid-auto-flow($flow)
|
|
140
|
+
grid-auto-flow: #{$flow}
|
|
141
|
+
|
|
142
|
+
@mixin grid-auto-rows($size)
|
|
143
|
+
grid-auto-rows: #{$size}
|
|
144
|
+
|
|
145
|
+
@mixin grid-auto-columns($size)
|
|
146
|
+
grid-auto-columns: #{$size}
|
|
147
|
+
|
|
148
|
+
// ===========================================
|
|
149
|
+
// COMMON GRID PATTERNS
|
|
150
|
+
// ===========================================
|
|
151
|
+
|
|
152
|
+
// Three section layout (header, main, footer)
|
|
153
|
+
@mixin three-section-grid($header-size: auto, $footer-size: auto, $gap: $grid-gutter-width)
|
|
154
|
+
@include grid-layout
|
|
155
|
+
@include grid-template-rows($header-size 1fr $footer-size)
|
|
156
|
+
@include grid-gap($gap)
|
|
157
|
+
@include place-items(stretch)
|
|
158
|
+
|
|
159
|
+
// Sidebar layout
|
|
160
|
+
@mixin sidebar-grid($sidebar-width: 250px, $gap: $grid-gutter-width)
|
|
161
|
+
@include grid-layout
|
|
162
|
+
@include grid-template-columns($sidebar-width 1fr)
|
|
163
|
+
@include grid-gap($gap)
|
|
164
|
+
min-height: 100vh
|
|
165
|
+
|
|
166
|
+
// Center grid (perfect centering)
|
|
167
|
+
@mixin center-grid($gap: 0)
|
|
168
|
+
@include grid-layout
|
|
169
|
+
@include place-items(center)
|
|
170
|
+
@include grid-gap($gap)
|
|
171
|
+
|
|
172
|
+
// Auto-fit grid (responsive columns)
|
|
173
|
+
@mixin auto-fit-grid($min-width: 250px, $gap: $grid-gutter-width)
|
|
174
|
+
@include grid-layout
|
|
175
|
+
@include grid-template-columns(repeat(auto-fit, minmax($min-width, 1fr)))
|
|
176
|
+
@include grid-gap($gap)
|
|
177
|
+
|
|
178
|
+
// Auto-fill grid (fills container)
|
|
179
|
+
@mixin auto-fill-grid($min-width: 250px, $gap: $grid-gutter-width)
|
|
180
|
+
@include grid-layout
|
|
181
|
+
@include grid-template-columns(repeat(auto-fill, minmax($min-width, 1fr)))
|
|
182
|
+
@include grid-gap($gap)
|
|
183
|
+
|
|
184
|
+
// Card grid pattern
|
|
185
|
+
@mixin card-grid($min-width: 280px, $max-cols: 4, $gap: $spacer)
|
|
186
|
+
@include auto-fit-grid($min-width, $gap)
|
|
187
|
+
|
|
188
|
+
// Limit maximum columns
|
|
189
|
+
@media (min-width: calc(#{$min-width} * #{$max-cols} + #{$gap} * #{$max-cols - 1}))
|
|
190
|
+
@include grid-template-columns(repeat($max-cols, 1fr))
|
|
191
|
+
|
|
192
|
+
// Masonry-style grid
|
|
193
|
+
@mixin masonry-grid($cols: 3, $gap: $spacer)
|
|
194
|
+
@include grid-layout
|
|
195
|
+
@include grid-template-columns(repeat($cols, 1fr))
|
|
196
|
+
@include grid-gap($gap)
|
|
197
|
+
@include grid-auto-rows(min-content)
|
|
198
|
+
|
|
199
|
+
// ===========================================
|
|
200
|
+
// NAVIGATION-SPECIFIC MIXINS
|
|
201
|
+
// ===========================================
|
|
202
|
+
|
|
203
|
+
// Three-section navigation (perfect for sidebars)
|
|
204
|
+
@mixin nav-three-section($header-size: auto, $footer-size: auto, $gap: 0)
|
|
205
|
+
@include three-section-grid($header-size, $footer-size, $gap)
|
|
206
|
+
|
|
207
|
+
// Center content in middle section
|
|
208
|
+
> :nth-child(2)
|
|
209
|
+
@include place-self(center)
|
|
210
|
+
|
|
211
|
+
// Horizontal navigation grid
|
|
212
|
+
@mixin nav-horizontal($gap: $spacer)
|
|
213
|
+
@include grid-layout
|
|
214
|
+
@include grid-auto-flow(column)
|
|
215
|
+
@include grid-auto-columns(max-content)
|
|
216
|
+
@include place-items(center)
|
|
217
|
+
@include grid-gap($gap)
|
|
218
|
+
|
|
219
|
+
// Responsive navigation that switches layout
|
|
220
|
+
@mixin nav-responsive($mobile-layout: column, $desktop-layout: row, $breakpoint: 768px)
|
|
221
|
+
@include grid-layout
|
|
222
|
+
@include place-items(center)
|
|
223
|
+
|
|
224
|
+
@if $mobile-layout == column
|
|
225
|
+
@include grid-auto-flow(row)
|
|
226
|
+
@include grid-template-columns(1fr)
|
|
227
|
+
@else
|
|
228
|
+
@include grid-auto-flow(column)
|
|
229
|
+
@include grid-auto-columns(max-content)
|
|
230
|
+
|
|
231
|
+
@media (min-width: $breakpoint)
|
|
232
|
+
@if $desktop-layout == row
|
|
233
|
+
@include grid-auto-flow(column)
|
|
234
|
+
@include grid-auto-columns(max-content)
|
|
235
|
+
@else
|
|
236
|
+
@include grid-auto-flow(row)
|
|
237
|
+
@include grid-template-columns(1fr)
|
|
238
|
+
|
|
239
|
+
// ===========================================
|
|
240
|
+
// UTILITY MIXINS
|
|
241
|
+
// ===========================================
|
|
242
|
+
|
|
243
|
+
// Grid item order
|
|
244
|
+
@mixin grid-order($order)
|
|
245
|
+
order: #{$order}
|
|
246
|
+
|
|
247
|
+
// Grid with fallback for older browsers
|
|
248
|
+
@mixin grid-with-fallback($fallback: block)
|
|
249
|
+
display: #{$fallback}
|
|
250
|
+
display: grid
|
|
251
|
+
|
|
252
|
+
// Full bleed grid item (breaks out of grid)
|
|
253
|
+
@mixin full-bleed
|
|
254
|
+
grid-column: 1 / -1
|
|
255
|
+
|
|
256
|
+
// Grid debugging (for development)
|
|
257
|
+
@mixin grid-debug($color: rgba(255, 0, 0, 0.1))
|
|
258
|
+
> *
|
|
259
|
+
background: #{$color}
|
|
260
|
+
border: 1px solid rgba(255, 0, 0, 0.3)
|
|
261
|
+
|
|
262
|
+
// Responsive grid helper
|
|
263
|
+
@mixin responsive-grid-columns($mobile: 1, $tablet: 2, $desktop: 3, $large: 4)
|
|
264
|
+
@include grid-template-columns(repeat($mobile, 1fr))
|
|
265
|
+
|
|
266
|
+
@media (min-width: 576px)
|
|
267
|
+
@include grid-template-columns(repeat($tablet, 1fr))
|
|
268
|
+
|
|
269
|
+
@media (min-width: 768px)
|
|
270
|
+
@include grid-template-columns(repeat($desktop, 1fr))
|
|
271
|
+
|
|
272
|
+
@media (min-width: 1024px)
|
|
273
|
+
@include grid-template-columns(repeat($large, 1fr))
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Header mixins for h1-h6 styling
|
|
2
|
+
@use 'sass:map'
|
|
3
|
+
@use '../variables/typography' as t
|
|
4
|
+
@use '../variables/colors' as c
|
|
5
|
+
|
|
6
|
+
// Header mixin that takes level (1-6) and applies appropriate styles
|
|
7
|
+
@mixin header($level: 1)
|
|
8
|
+
@if $level < 1 or $level > 6
|
|
9
|
+
@error "Header level must be between 1 and 6"
|
|
10
|
+
|
|
11
|
+
// Font size based on level
|
|
12
|
+
font-size: map.get(t.$font-sizes, $level)
|
|
13
|
+
|
|
14
|
+
// Font weight based on level (heavier for higher importance)
|
|
15
|
+
@if $level == 1
|
|
16
|
+
font-weight: t.$font-weight-bold
|
|
17
|
+
@else if $level == 2
|
|
18
|
+
font-weight: t.$font-weight-semibold
|
|
19
|
+
@else if $level == 3
|
|
20
|
+
font-weight: t.$font-weight-medium
|
|
21
|
+
@else
|
|
22
|
+
font-weight: t.$font-weight-normal
|
|
23
|
+
|
|
24
|
+
// Color - darker for higher levels
|
|
25
|
+
@if $level <= 2
|
|
26
|
+
color: c.$text
|
|
27
|
+
@else if $level <= 4
|
|
28
|
+
color: c.$text-secondary
|
|
29
|
+
@else
|
|
30
|
+
color: c.$text-tertiary
|
|
31
|
+
|
|
32
|
+
// Line height
|
|
33
|
+
line-height: t.$headings-line-height
|
|
34
|
+
|
|
35
|
+
// Margin bottom
|
|
36
|
+
margin-bottom: t.$headings-margin-bottom
|
|
37
|
+
|
|
38
|
+
// Font family
|
|
39
|
+
font-family: t.$headings-font-family or t.$font-family-base
|
|
40
|
+
|
|
41
|
+
// Convenience mixins for each header level
|
|
42
|
+
@mixin h1
|
|
43
|
+
@include header(1)
|
|
44
|
+
|
|
45
|
+
@mixin h2
|
|
46
|
+
@include header(2)
|
|
47
|
+
|
|
48
|
+
@mixin h3
|
|
49
|
+
@include header(3)
|
|
50
|
+
|
|
51
|
+
@mixin h4
|
|
52
|
+
@include header(4)
|
|
53
|
+
|
|
54
|
+
@mixin h5
|
|
55
|
+
@include header(5)
|
|
56
|
+
|
|
57
|
+
@mixin h6
|
|
58
|
+
@include header(6)
|
|
59
|
+
|
|
60
|
+
// Header with custom properties
|
|
61
|
+
@mixin header-custom($level, $weight: null, $color: null, $size: null)
|
|
62
|
+
@include header($level)
|
|
63
|
+
|
|
64
|
+
@if $weight
|
|
65
|
+
font-weight: $weight
|
|
66
|
+
|
|
67
|
+
@if $color
|
|
68
|
+
color: $color
|
|
69
|
+
|
|
70
|
+
@if $size
|
|
71
|
+
font-size: $size
|