@nulllogic/scssleon 1.0.1 → 1.0.3

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.
Files changed (69) hide show
  1. package/package.json +5 -5
  2. package/scss/_base.scss +31 -0
  3. package/scss/_config.scss +109 -0
  4. package/scss/_content.scss +24 -0
  5. package/scss/_functions.scss +97 -0
  6. package/scss/_mixins.scss +22 -0
  7. package/scss/_reset.scss +347 -0
  8. package/scss/_root.scss +36 -0
  9. package/scss/_utilities.scss +356 -0
  10. package/scss/animations/_placeholder.scss +12 -0
  11. package/scss/components/_accordion.scss +15 -0
  12. package/scss/components/_alert.scss +15 -0
  13. package/scss/components/_badge.scss +15 -0
  14. package/scss/components/_breadcrumb.scss +15 -0
  15. package/scss/components/_button.scss +15 -0
  16. package/scss/components/_button_group.scss +15 -0
  17. package/scss/components/_card.scss +15 -0
  18. package/scss/components/_container.scss +39 -0
  19. package/scss/components/_dropdown.scss +5 -0
  20. package/scss/components/_form.scss +50 -0
  21. package/scss/components/_loader.scss +15 -0
  22. package/scss/components/_modal.scss +15 -0
  23. package/scss/components/_nav.scss +14 -0
  24. package/scss/components/_navbar.scss +15 -0
  25. package/scss/components/_overlay.scss +15 -0
  26. package/scss/components/_pagination.scss +15 -0
  27. package/scss/components/_placeholder.scss +34 -0
  28. package/scss/components/_sidecap.scss +15 -0
  29. package/scss/components/_table.scss +78 -0
  30. package/scss/forms/_checkbox.scss +14 -0
  31. package/scss/forms/_input-group.scss +14 -0
  32. package/scss/forms/_input.scss +14 -0
  33. package/scss/forms/_label.scss +14 -0
  34. package/scss/forms/_radio.scss +14 -0
  35. package/scss/forms/_range.scss +14 -0
  36. package/scss/forms/_select.scss +14 -0
  37. package/scss/forms/_switch.scss +14 -0
  38. package/scss/forms/_validation.scss +14 -0
  39. package/scss/helpers/_clearfix.scss +5 -0
  40. package/scss/helpers/_screen_reader.scss +11 -0
  41. package/scss/helpers/_text_truncate.scss +5 -0
  42. package/scss/mixins/_border-radius.scss +3 -0
  43. package/scss/mixins/_box-shadow.scss +16 -0
  44. package/scss/mixins/_breakpoints.scss +10 -0
  45. package/scss/mixins/_clearfix.scss +9 -0
  46. package/scss/mixins/_forms.scss +152 -0
  47. package/scss/mixins/_gradients.scss +6 -0
  48. package/scss/mixins/_grid.scss +93 -0
  49. package/scss/mixins/_transition.scss +30 -0
  50. package/scss/mixins/_utilities.scss +15 -0
  51. package/scss/mixins/generators/_color-sheme.scss +17 -0
  52. package/scss/mixins/generators/_components.scss +33 -0
  53. package/scss/mixins/generators/_properties.scss +116 -0
  54. package/scss/mixins/generators/_wrapper.scss +16 -0
  55. package/scss/mixins/variants/_alert.scss +24 -0
  56. package/scss/mixins/variants/_button.scss +122 -0
  57. package/scss/scssleon.scss +205 -0
  58. package/scss/themes/_default.scss +874 -0
  59. package/scss/themes/_wordpress_admin.scss +0 -0
  60. package/scss/utilities/_api.scss +24 -0
  61. package/.dockerignore +0 -2
  62. package/.eslintignore +0 -2
  63. package/.prettierignore +0 -1
  64. package/Dockerfile +0 -29
  65. package/Makefile +0 -22
  66. package/dist/css/scssleon.css +0 -1830
  67. package/dist/css/scssleon.css.map +0 -1
  68. /package/{CHANGELOG.md → scss/components/_icon.scss} +0 -0
  69. /package/{CONTRIBUTING.md → scss/themes/_shopify_app.scss} +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nulllogic/scssleon",
3
- "description": "Most advanced responsive front-end SCSS framework",
4
- "version": "1.0.1",
3
+ "description": "Most advanced, simple and clean SCSS framework",
4
+ "version": "1.0.3",
5
5
  "version_short": "1.0",
6
6
  "keywords": [
7
7
  "css",
@@ -11,7 +11,8 @@
11
11
  "front-end",
12
12
  "css-framework",
13
13
  "framework",
14
- "web"
14
+ "web",
15
+ "scssleon"
15
16
  ],
16
17
  "scripts": {
17
18
  "css": "npm run css-compile",
@@ -27,14 +28,13 @@
27
28
  "clean-css": "^5.3.3"
28
29
  },
29
30
  "homepage": "https://nulllogic.github.io/scssleon",
30
- "main": ".babelrc.js",
31
31
  "style": "dist/scssleon.css",
32
32
  "sass": "scss/scssleon.scss",
33
33
  "repository": {
34
34
  "type": "git",
35
35
  "url": "git+https://github.com/nulllogic/scssleon.git"
36
36
  },
37
- "author": "Vladimir Lukyanov",
37
+ "author": "NullLogic",
38
38
  "license": "MIT",
39
39
  "bugs": {
40
40
  "url": "https://github.com/nulllogic/scssleon/issues"
@@ -0,0 +1,31 @@
1
+ /*
2
+ ┌┐ ┌─┐┌─┐┌─┐
3
+ ├┴┐├─┤└─┐├┤
4
+ └─┘┴ ┴└─┘└─┘
5
+ */
6
+
7
+ @use "sass:map";
8
+ @use "sass:meta";
9
+ @use "functions" as functions;
10
+ @use "mixins" as mixins;
11
+
12
+ $config: nil !default;
13
+ $theme: nil !default;
14
+
15
+ $prefix: functions.get-config($config, "prefix");
16
+
17
+ $is-reset-enabled: functions.get-config($config, "enable.reset");
18
+ $is-button-pointers-enabled: functions.get-config(
19
+ $config,
20
+ "enable.button-pointers"
21
+ );
22
+
23
+ $is-spacing-enabled: functions.get-config($config, "enable.spacing");
24
+
25
+ $color_scheme: functions.get-config($config, "color-scheme");
26
+
27
+ @each $tag, $properties in functions.get-theme($theme, "html") {
28
+ #{$tag} {
29
+ @include mixins.generate-properties(#{$tag}, $properties, $config);
30
+ }
31
+ }
@@ -0,0 +1,109 @@
1
+ /*
2
+ ┌─┐┌─┐┌┐┌┌─┐┬┌─┐
3
+ │ │ ││││├┤ ││ ┬
4
+ └─┘└─┘┘└┘└ ┴└─┘
5
+ */
6
+ @use "sass:map";
7
+
8
+ // Root
9
+
10
+ // ==================================================
11
+ // User config
12
+ // ==================================================
13
+ // Deep merged with the default config. This means that this will override existing keys and append new key value pairs.
14
+ $config: () !default;
15
+
16
+ $default-config: (
17
+ // scss-docs-start root-variables
18
+ prefix: "xii",
19
+ wrapper-class: "wrapper" // scss-docs-end root-variables
20
+ );
21
+
22
+ // Container breakpoints
23
+ // scss-docs-start container-max-widths
24
+ $breakpoints-config: (
25
+ breakpoints: (
26
+ sm: 540px,
27
+ md: 720px,
28
+ lg: 960px,
29
+ xl: 1140px,
30
+ xxl: 1320px,
31
+ ),
32
+ ) !default;
33
+ // scss-docs-end container-max-widths
34
+
35
+ $default-config: map.deep-merge($default-config, $breakpoints-config);
36
+
37
+ // Grid breakpoints
38
+ // scss-docs-start grid-breakpoints
39
+ $grid-breakpoints-config: (
40
+ grid-breakpoints: (
41
+ xs: 0,
42
+ sm: 576px,
43
+ md: 768px,
44
+ lg: 992px,
45
+ xl: 1200px,
46
+ xxl: 1400px,
47
+ ),
48
+ );
49
+ // scss-docs-end grid-breakpoints
50
+
51
+ $default-config: map.deep-merge($default-config, $grid-breakpoints-config);
52
+
53
+ $color_scheme-config: (
54
+ color-scheme: "light dark",
55
+ );
56
+
57
+ $default-config: map.deep-merge($default-config, $color_scheme-config);
58
+
59
+ $enable-rules-config: (
60
+ enable: (
61
+ shadow: true,
62
+ border-radius: true,
63
+ transitions: true,
64
+ reduced-motion: true,
65
+ smooth-scroll: true,
66
+ dark-theme: true,
67
+ spacing: false,
68
+ reset: true,
69
+ rtl: false,
70
+ button-pointers: true,
71
+ content-class: true,
72
+ wrapper: true,
73
+ ),
74
+ );
75
+
76
+ $default-config: map.deep-merge($default-config, $enable-rules-config);
77
+
78
+ // Content
79
+ $content-default-config: (
80
+ content: (
81
+ elements: (
82
+ margin: 0 0 1rem 0,
83
+ ),
84
+ ),
85
+ ) !default;
86
+
87
+ $default-config: map.deep-merge($default-config, $content-default-config);
88
+
89
+ // Z-index
90
+ // scss-docs-start z-index-stack
91
+ $z-index-config: (
92
+ z-index: (
93
+ dropdown: 1000,
94
+ sticky: 1020,
95
+ fixed: 1030,
96
+ offcanvas-backdrop: 1040,
97
+ offcanvas: 1045,
98
+ modal-backdrop: 1050,
99
+ modal: 1055,
100
+ popover: 1070,
101
+ tooltip: 1080,
102
+ toast: 1090,
103
+ ),
104
+ ) !default;
105
+ // scss-docs-end z-index-stack
106
+
107
+ $default-config: map.deep-merge($default-config, $z-index-config);
108
+
109
+ $config: map.deep-merge($default-config, $config);
@@ -0,0 +1,24 @@
1
+ /*
2
+ ┌─┐┌─┐┌┐┌┌┬┐┌─┐┌┐┌┌┬┐
3
+ │ │ ││││ │ ├┤ │││ │
4
+ └─┘└─┘┘└┘ ┴ └─┘┘└┘ ┴
5
+ */
6
+ @use "sass:map";
7
+ @use "functions" as functions;
8
+ @use "./mixins" as mixins;
9
+
10
+ $config: nil !default;
11
+ $theme: nil !default;
12
+
13
+ $is-content-enabled: functions.get-config($config, "enable.content");
14
+
15
+ @if ($is-content-enabled) {
16
+ .content {
17
+ @each $tag, $properties in functions.get-theme($theme, "content") {
18
+ #{$tag} {
19
+ @include mixins.generate-properties(#{$tag}, $properties, $config);
20
+ }
21
+ }
22
+ }
23
+ }
24
+
@@ -0,0 +1,97 @@
1
+ @use 'sass:list';
2
+ @use 'sass:map';
3
+
4
+ @function str-split($string, $separator) {
5
+ $split-arr: ();
6
+ $index : str-index($string, $separator);
7
+ @while $index != null {
8
+ $item: str-slice($string, 1, $index - 1);
9
+ $split-arr: append($split-arr, $item);
10
+ $string: str-slice($string, $index + 1);
11
+ $index : str-index($string, $separator);
12
+ }
13
+ $split-arr: append($split-arr, $string);
14
+
15
+ @return $split-arr;
16
+ }
17
+
18
+ @function str-replace($string, $search, $replace: '') {
19
+ $index: str-index($string, $search);
20
+
21
+ @if $index {
22
+ @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
23
+ }
24
+
25
+ @return $string;
26
+ }
27
+
28
+ @function get-config($config, $value) {
29
+ $val: null;
30
+
31
+ @if($config == nil) {
32
+ @warn 'Config variable is nil';
33
+ @return nil;
34
+ }
35
+
36
+ @if (str-index($value, '.')) {
37
+ $path: str-split($value, '.');
38
+ $val: map.get($config, $path...);
39
+ } @else {
40
+ $val: map.get($config, $value);
41
+ }
42
+
43
+ @if ($val != null) {
44
+ @return $val;
45
+ } @else {
46
+ @return nil;
47
+ }
48
+ }
49
+
50
+ @function get-theme($theme, $value) {
51
+ $val: null;
52
+
53
+ @if($theme == nil) {
54
+ @warn 'Theme variable is nil';
55
+ @return nil;
56
+ }
57
+
58
+ @if (str-index($value, '.')) {
59
+ $path: str-split($value, '.');
60
+ $val: map.get($theme, $path...);
61
+ } @else {
62
+ $val: map.get($theme, $value);
63
+ }
64
+
65
+ @if ($val != null) {
66
+ @return $val;
67
+ } @else {
68
+ @return nil;
69
+ }
70
+
71
+ }
72
+
73
+ // See https://codepen.io/kevinweber/pen/dXWoRw
74
+ //
75
+ // Requires the use of quotes around data URIs.
76
+ @function escape-svg($string) {
77
+ @if str-index($string, "data:image/svg+xml") {
78
+ @each $char, $encoded in $escaped-characters {
79
+ // Do not escape the url brackets
80
+ @if str-index($string, "url(") == 1 {
81
+ $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
82
+ } @else {
83
+ $string: str-replace($string, $char, $encoded);
84
+ }
85
+ }
86
+ }
87
+
88
+ @return $string;
89
+ }
90
+
91
+ @function add_components($components) {
92
+ $components_updated: ();
93
+ @each $component in $components {
94
+ $components_updated : list.append($components_updated, "components/" + $component);
95
+ }
96
+ @return $components_updated;
97
+ }
@@ -0,0 +1,22 @@
1
+ // ↓ Helpers
2
+ @forward "mixins/breakpoints";
3
+ @forward "mixins/clearfix";
4
+
5
+ @forward "mixins/box-shadow";
6
+ @forward "mixins/border-radius";
7
+ @forward "mixins/transition";
8
+ @forward "mixins/gradients";
9
+
10
+ // ↓ Generators
11
+ @forward "mixins/generators/color-sheme";
12
+ @forward "mixins/generators/components";
13
+ @forward "mixins/generators/properties";
14
+ @forward "mixins/generators/wrapper";
15
+
16
+ // ↓ Utilities
17
+ @forward "mixins/utilities";
18
+
19
+ // ↓ Components
20
+ @forward "mixins/forms";
21
+
22
+ // ↓ Layout
@@ -0,0 +1,347 @@
1
+ /*
2
+ ┬─┐┌─┐┌─┐┌─┐┌┬┐
3
+ ├┬┘├┤ └─┐├┤ │
4
+ ┴└─└─┘└─┘└─┘ ┴
5
+ */
6
+
7
+ @use "sass:map";
8
+ @use "sass:meta";
9
+ @use "functions" as functions;
10
+ @use "mixins" as mixins;
11
+
12
+ $config: nil !default;
13
+ $theme: nil !default;
14
+
15
+ $prefix: functions.get-config($config, "prefix");
16
+
17
+ $is-reset-enabled: functions.get-config($config, "enable.reset");
18
+ $is-button-pointers-enabled: functions.get-config(
19
+ $config,
20
+ "enable.button-pointers"
21
+ );
22
+ $is-spacing-enabled: functions.get-config($config, "enable.spacing");
23
+
24
+ $color_scheme: functions.get-config($config, "color-scheme");
25
+
26
+ @if $is-reset-enabled {
27
+ *,
28
+ *::before,
29
+ *::after {
30
+ box-sizing: border-box;
31
+ }
32
+
33
+ // Abbreviations
34
+ // 1. "text-decoration" correct text decoration in Chrome, Edge, Opera, and Safari.
35
+ // 2. "cursor" explicit cursor to indicate changed behavior.
36
+ // 3. "text-decoration-skip-ink" prevent the text-decoration to be skipped.
37
+ abbr[title] {
38
+ text-decoration: underline dotted;
39
+ cursor: help;
40
+ text-decoration-skip-ink: none;
41
+ }
42
+
43
+ // Lists
44
+ ul,ol,
45
+ ol ol,
46
+ ul ul,
47
+ ol ul,
48
+ ul ol {
49
+ margin: 0;
50
+ }
51
+
52
+ // Sub and Sup
53
+ // Prevent `sub` and `sup` elements from affecting the line height in
54
+ // all browsers.
55
+ sub,
56
+ sup {
57
+ position: relative;
58
+ line-height: 0;
59
+ vertical-align: baseline;
60
+ }
61
+
62
+ // And undo these styles for placeholder links/named anchors (without href).
63
+ // It would be more straightforward to just use a[href] in previous block, but that
64
+ // causes specificity issues in many other styles that are too complex to fix.
65
+ a:not([href]):not([class]) {
66
+ &,
67
+ &:hover {
68
+ color: inherit;
69
+ text-decoration: none;
70
+ }
71
+ }
72
+
73
+ // Code
74
+ pre,
75
+ code,
76
+ kbd,
77
+ samp {
78
+ font-size: 1em; // Correct the odd `em` font sizing in all browsers.
79
+ }
80
+
81
+ // 1. "margin" remove browser default top margin
82
+ // 2. "overflow" don't allow content to break outside
83
+
84
+ pre {
85
+ display: block;
86
+ margin: 0;
87
+ overflow: auto;
88
+
89
+ // Account for some code outputs that place code tags in pre tags
90
+ code {
91
+ font-size: inherit;
92
+ color: inherit;
93
+ word-break: normal;
94
+ }
95
+ }
96
+
97
+ code {
98
+ word-wrap: break-word;
99
+ // Streamline the style when inside anchors to avoid broken underline and more
100
+ a > & {
101
+ color: inherit;
102
+ }
103
+ }
104
+
105
+ kbd {
106
+ padding: 0.1875rem 0.375rem;
107
+ font-size: 0.875em;
108
+ border-radius: 0.25rem;
109
+
110
+ kbd {
111
+ padding: 0;
112
+ font-size: inherit;
113
+ }
114
+ }
115
+
116
+ // Figures
117
+ // Apply a consistent margin strategy (matches our type styles).
118
+ figure {
119
+ margin: 0;
120
+ }
121
+
122
+ // Images and content
123
+ img,
124
+ svg {
125
+ vertical-align: middle;
126
+ }
127
+
128
+ // Tables
129
+ // Prevent double borders
130
+ table {
131
+ caption-side: bottom;
132
+ border-collapse: collapse;
133
+ }
134
+
135
+ caption {
136
+ text-align: left;
137
+ }
138
+
139
+ // 1. "font-weight" removes font-weight bold by inheriting
140
+ // 2. "text-align" matches default `<td>` alignment by inheriting `text-align`.
141
+ // 3. "text-align" fix alignment for Safari
142
+ th {
143
+ font-weight: inherit; // 1
144
+ text-align: inherit; // 2
145
+ text-align: -webkit-match-parent; // 3
146
+ }
147
+
148
+ thead,
149
+ tbody,
150
+ tfoot,
151
+ tr,
152
+ td,
153
+ th {
154
+ border-color: inherit;
155
+ border-style: solid;
156
+ border-width: 0;
157
+ }
158
+
159
+ // Forms
160
+ // Remove the default `border-radius` that macOS Chrome adds.
161
+ button {
162
+ border-radius: 0;
163
+ }
164
+
165
+ // Explicitly remove focus outline in Chromium when it shouldn't be
166
+ // visible (e.g. as result of mouse click or touch tap). It already
167
+ // should be doing this automatically, but seems to currently be
168
+ // confused and applies its very visible two-tone outline anyway.
169
+ button:focus:not(:focus-visible) {
170
+ outline: 0;
171
+ }
172
+
173
+ // 1. "margin" remove the margin in Firefox and Safari
174
+ input,
175
+ button,
176
+ select,
177
+ optgroup,
178
+ textarea {
179
+ margin: 0;
180
+ line-height: inherit;
181
+ }
182
+
183
+ // Remove the inheritance of text transform in Firefox
184
+ button,
185
+ select {
186
+ text-transform: none;
187
+ }
188
+ // Set the cursor for non-`<button>` buttons
189
+ [role="button"] {
190
+ cursor: pointer;
191
+ }
192
+
193
+ select {
194
+ // Remove the inheritance of word-wrap in Safari.
195
+ word-wrap: normal;
196
+
197
+ // Undo the opacity change from Chrome
198
+ &:disabled {
199
+ opacity: 1;
200
+ }
201
+ }
202
+
203
+ // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.
204
+ // See https://stackoverflow.com/a/54997118
205
+ [list]:not([type="date"]):not([type="datetime-local"]):not(
206
+ [type="month"]
207
+ ):not([type="week"]):not([type="time"])::-webkit-calendar-picker-indicator {
208
+ display: none !important;
209
+ }
210
+
211
+ // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
212
+ // controls in Android 4.
213
+ // 2. Correct the inability to style clickable types in iOS and Safari.
214
+ // 3. Opinionated: add "hand" cursor to non-disabled button elements.
215
+
216
+ button,
217
+ [type="button"], // 1
218
+ [type="reset"],
219
+ [type="submit"] {
220
+ -webkit-appearance: button; // 2
221
+
222
+ @if $is-button-pointers-enabled {
223
+ &:not(:disabled) {
224
+ cursor: pointer; // 3
225
+ }
226
+ }
227
+ }
228
+
229
+ // Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
230
+ ::-moz-focus-inner {
231
+ padding: 0;
232
+ border-style: none;
233
+ }
234
+
235
+ // 1. "resize" textareas should really only resize vertically so they don't break their (horizontal) containers.
236
+ textarea {
237
+ resize: vertical;
238
+ }
239
+
240
+ // 1. "min-width" browsers set a default `min-width: min-content;` on fieldsets,
241
+ // unlike e.g. `<div>`s, which have `min-width: 0;` by default.
242
+ // So we reset that to ensure fieldsets behave more like a standard block element.
243
+ // See https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
244
+ // 2. "border" reset the default outline behavior of fieldsets so they don't affect page layout.
245
+
246
+ fieldset {
247
+ min-width: 0;
248
+ padding: 0;
249
+ margin: 0;
250
+ border: 0;
251
+ }
252
+
253
+ // 1. By using `float: left`, the legend will behave like a block element.
254
+ // This way the border of a fieldset wraps around the legend if present.
255
+ // 2. "clear" fix wrapping bug.
256
+ legend {
257
+ float: left;
258
+ width: 100%;
259
+ padding: 0;
260
+ margin: 0;
261
+ line-height: inherit;
262
+
263
+ + * {
264
+ clear: left; // 2
265
+ }
266
+ }
267
+
268
+ // Fix height of inputs with a type of datetime-local, date, month, week, or time
269
+ ::-webkit-datetime-edit-fields-wrapper,
270
+ ::-webkit-datetime-edit-text,
271
+ ::-webkit-datetime-edit-minute,
272
+ ::-webkit-datetime-edit-hour-field,
273
+ ::-webkit-datetime-edit-day-field,
274
+ ::-webkit-datetime-edit-month-field,
275
+ ::-webkit-datetime-edit-year-field {
276
+ padding: 0;
277
+ }
278
+
279
+ ::-webkit-inner-spin-button {
280
+ height: auto;
281
+ }
282
+
283
+ // 1. Correct the outline style in Safari.
284
+ // 2. This overrides the extra rounded corners on search inputs in iOS
285
+ [type="search"] {
286
+ outline-offset: -2px; // 1
287
+ -webkit-appearance: textfield; // 2
288
+ }
289
+
290
+ // 1. A few input types should stay LTR
291
+ // See https://rtlstyling.com/posts/rtl-styling#form-inputs
292
+ // 2. RTL only output
293
+ // See https://rtlcss.com/learn/usage-guide/control-directives/#raw
294
+
295
+ /* rtl:raw:
296
+ [type="tel"],
297
+ [type="url"],
298
+ [type="email"],
299
+ [type="number"] {
300
+ direction: ltr;
301
+ }
302
+ */
303
+
304
+ // Remove the inner padding in Chrome and Safari on macOS.
305
+ ::-webkit-search-decoration {
306
+ -webkit-appearance: none;
307
+ }
308
+
309
+ // Remove padding around color pickers in webkit browsers
310
+ ::-webkit-color-swatch-wrapper {
311
+ padding: 0;
312
+ }
313
+
314
+ // 1. Inherit font family and line height for file input buttons
315
+ // 2. Correct the inability to style clickable types in iOS and Safari.
316
+ ::file-selector-button {
317
+ font: inherit; // 1
318
+ -webkit-appearance: button; // 2
319
+ }
320
+
321
+ // Correct element displays
322
+ output {
323
+ display: inline-block;
324
+ }
325
+
326
+ // Remove border from iframe
327
+ iframe {
328
+ border: 0;
329
+ }
330
+
331
+ // Summary
332
+ // 1. "display" add the correct display in all browsers
333
+ summary {
334
+ display: list-item;
335
+ cursor: pointer;
336
+ }
337
+
338
+ // Progress
339
+ progress {
340
+ vertical-align: baseline;
341
+ }
342
+
343
+ // Hidden attribute
344
+ [hidden] {
345
+ display: none !important;
346
+ }
347
+ }
@@ -0,0 +1,36 @@
1
+ /* - ૮₍ ˃ ⤙ ˂ ₎ა – root */
2
+ @use "sass:string";
3
+ @use "./mixins" as mixins;
4
+ @use "./functions" as functions;
5
+
6
+ $config: () !default;
7
+ $theme: () !default;
8
+
9
+ $prefix: functions.get-config($config, "prefix");
10
+
11
+ $is-smooth-scroll-enabled: functions.get-config(
12
+ $config,
13
+ "enable.smooth-scroll"
14
+ );
15
+
16
+ $color_scheme: functions.get-config($config, "color-scheme");
17
+
18
+ $root-variables: functions.get-theme($theme, "root.variables");
19
+
20
+ :root {
21
+ @if $is-smooth-scroll-enabled {
22
+ @media (prefers-reduced-motion: no-preference) {
23
+ scroll-behavior: smooth;
24
+ }
25
+ }
26
+
27
+ & {
28
+ color-scheme: string.unquote($color_scheme);
29
+ }
30
+
31
+ @include mixins.generate-properties(
32
+ "root",
33
+ functions.get-theme($theme, "root"),
34
+ $config
35
+ );
36
+ }