@nulllogic/scssleon 1.0.5 → 1.0.6
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 +127 -36
- package/package.json +4 -2
- package/scss/_mixins.scss +1 -16
- package/scss/_root.scss +6 -7
- package/scss/mixins/generators/_components.scss +10 -38
- package/scss/mixins/generators/_properties.scss +8 -9
- package/scss/scssleon.scss +0 -11
- package/scss/themes/_default.scss +0 -1
- package/scss/_utilities.scss +0 -356
- package/scss/animations/_placeholder.scss +0 -12
- package/scss/helpers/_clearfix.scss +0 -5
- package/scss/helpers/_screen_reader.scss +0 -11
- package/scss/helpers/_text_truncate.scss +0 -5
- package/scss/mixins/_border-radius.scss +0 -3
- package/scss/mixins/_box-shadow.scss +0 -16
- package/scss/mixins/_clearfix.scss +0 -9
- package/scss/mixins/_forms.scss +0 -152
- package/scss/mixins/_gradients.scss +0 -6
- package/scss/mixins/_grid.scss +0 -93
- package/scss/mixins/_transition.scss +0 -30
- package/scss/mixins/_utilities.scss +0 -15
- package/scss/mixins/generators/_color-sheme.scss +0 -5
- package/scss/utilities/_api.scss +0 -24
package/README.md
CHANGED
|
@@ -15,17 +15,68 @@ Welcome to SCSSLEON framework ! It's the most advanced responsive front-end fram
|
|
|
15
15
|
– [ <a href="http://nulllogic.github.io/scssleon-docs" target="_self">Documentation</a> ] — [ <a href="https://github.com/nulllogic/scssleon/issues" target="_blank">Bugs/Issues</a> ] — [ <a href="https://stackoverflow.com/questions/tagged/scssleon" target="_blank">StackOverflow</a> ] –
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
<hr />
|
|
19
|
+
|
|
20
|
+
## Table of Contents
|
|
21
|
+
<details>
|
|
22
|
+
<summary>↪ ≡─〰─〰─ Show TOC ─〰─〰─≡</summary>
|
|
23
|
+
<br />
|
|
24
|
+
|
|
25
|
+
- [Why SCSSLEON?](#user-content---why-scssleon--)
|
|
26
|
+
- [Features](#user-content---features-)
|
|
27
|
+
- [Getting started](#user-content---getting-started-)
|
|
28
|
+
- [Usage Examples](#user-content---usage-examples-)
|
|
29
|
+
- [Showcase](#user-content---showcase-)
|
|
30
|
+
- [Documentation](#user-content---documentation-)
|
|
31
|
+
- [Contributing](#user-content--contributing-)
|
|
32
|
+
- [Thanks](#user-content--thanks-)
|
|
33
|
+
- [License](#user-content---license-)
|
|
34
|
+
<br />
|
|
35
|
+
</details>
|
|
36
|
+
|
|
37
|
+
<hr />
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### ⓘ Prerequisites
|
|
41
|
+
- Knowledge of [SCSS](https://sass-lang.com).
|
|
42
|
+
- [🐳 Docker](https://www.docker.com)
|
|
43
|
+
- [💻 Node](https://nodejs.org) + [📦 NPM](https://nodejs.org)
|
|
44
|
+
|
|
45
|
+
<hr />
|
|
46
|
+
|
|
47
|
+
## ┌ 🤔 Why SCSSLEON ? ┐
|
|
48
|
+
|
|
49
|
+
SCSSLEON is designed for developers who want a lightweight, modular, and highly customizable SCSS framework. Unlike other frameworks, SCSSLEON:
|
|
50
|
+
|
|
51
|
+
- Offers a minimal footprint for faster load times.
|
|
52
|
+
- Provides intuitive mixins and utilities for rapid development.
|
|
53
|
+
- Supports easy theming with customizable variables.
|
|
54
|
+
- Color scheme support – easily add dark and light theme support
|
|
55
|
+
- Responsive support with zero efforts
|
|
56
|
+
- Easy to learn, easy to use
|
|
57
|
+
- Zero dependencies, except SASS
|
|
58
|
+
|
|
59
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
19
60
|
|
|
20
|
-
|
|
61
|
+
<hr />
|
|
62
|
+
|
|
63
|
+
## ┌ ✨ Features ┐
|
|
21
64
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
65
|
+
- **Responsive Grid System**: Build flexible layouts with a customizable 12-column grid.
|
|
66
|
+
- **Theming Support**: Easily customize colors, fonts, and spacing with SCSS variables.
|
|
67
|
+
- **Utility Classes**: Includes helpers for spacing, typography, and visibility.
|
|
68
|
+
- **Lightweight**: Minimal CSS output for faster performance.
|
|
69
|
+
- **Modern CSS**: Built-in support for Flexbox, CSS Grid, and custom properties.
|
|
24
70
|
|
|
25
|
-
|
|
71
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
72
|
+
|
|
73
|
+
<hr />
|
|
74
|
+
|
|
75
|
+
## ┌ 🧭 Getting Started ┐
|
|
26
76
|
|
|
27
77
|
<details>
|
|
28
|
-
<summary> Method #1
|
|
78
|
+
<summary> Method #1 - NodeJS + NPM basic setup [ 🛖🔥🦴 primitive ] </summary>
|
|
79
|
+
<br />
|
|
29
80
|
|
|
30
81
|
1. Install packages – run the following command in your project directory to install SCSSLEON + SASS:
|
|
31
82
|
|
|
@@ -39,7 +90,7 @@ npm i @nulllogic/scssleon sass
|
|
|
39
90
|
npm init -y
|
|
40
91
|
```
|
|
41
92
|
|
|
42
|
-
|
|
93
|
+
3. Update `package.json` file. Add following strings
|
|
43
94
|
|
|
44
95
|
```json
|
|
45
96
|
"scripts": {
|
|
@@ -48,7 +99,29 @@ npm init -y
|
|
|
48
99
|
}
|
|
49
100
|
```
|
|
50
101
|
|
|
51
|
-
|
|
102
|
+
It will look like this :
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"dependencies": {
|
|
106
|
+
"@nulllogic/scssleon": "^1.0.5",
|
|
107
|
+
"sass": "^1.89.2"
|
|
108
|
+
},
|
|
109
|
+
"name": "test",
|
|
110
|
+
"version": "1.0.0",
|
|
111
|
+
"main": "index.js",
|
|
112
|
+
"devDependencies": {},
|
|
113
|
+
"scripts": {
|
|
114
|
+
"sass-dev": "sass --watch --update --style=expanded styles:assets/css --load-path=node_modules",
|
|
115
|
+
"sass-prod": "sass --no-source-map --style=compressed styles:assets/css --load-path=node_modules"
|
|
116
|
+
},
|
|
117
|
+
"keywords": [],
|
|
118
|
+
"author": "",
|
|
119
|
+
"license": "ISC",
|
|
120
|
+
"description": ""
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
4. Create `app.scss` inside your project in `/styles` directory
|
|
52
125
|
|
|
53
126
|
```scss
|
|
54
127
|
@use 'sass:map';
|
|
@@ -91,7 +164,7 @@ $config: config.$config;
|
|
|
91
164
|
$theme: theme.$theme;
|
|
92
165
|
```
|
|
93
166
|
|
|
94
|
-
|
|
167
|
+
5. Create `base.scss` inside your project in `/styles/components` directory
|
|
95
168
|
```scss
|
|
96
169
|
// Loading your SCSS module with pre-defined config and theme
|
|
97
170
|
// ↓ Config
|
|
@@ -115,62 +188,80 @@ $theme: theme.$theme;
|
|
|
115
188
|
$config: app.$config,
|
|
116
189
|
$theme: app.$theme
|
|
117
190
|
);
|
|
118
|
-
|
|
119
|
-
// ↓ Container
|
|
120
|
-
@use "@nulllogic/scssleon/scss/container" with (
|
|
121
|
-
$config: app.$config,
|
|
122
|
-
$theme: app.$theme
|
|
123
|
-
);
|
|
124
191
|
```
|
|
125
192
|
|
|
126
|
-
|
|
193
|
+
6. Run node command at root `/` of your project to generate CSS code to `/assets/css`
|
|
194
|
+
|
|
127
195
|
```bash
|
|
128
196
|
npm run sass-dev
|
|
129
197
|
```
|
|
130
198
|
|
|
131
|
-
|
|
199
|
+
7. Profit – you have output at `/assets/css` directory now 🙌
|
|
200
|
+
|
|
201
|
+
<img alt="SCSSleon framework" src="./.imgs/method_1.jpg">
|
|
132
202
|
|
|
133
203
|
</details>
|
|
134
204
|
|
|
205
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
135
206
|
|
|
136
|
-
|
|
207
|
+
<hr />
|
|
137
208
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</p>
|
|
209
|
+
## ┌ 👓 Usage Examples ┐
|
|
210
|
+
|
|
211
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
212
|
+
|
|
213
|
+
<hr />
|
|
214
|
+
|
|
215
|
+
## ┌ 📺 Showcase ┐
|
|
216
|
+
|
|
217
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
218
|
+
|
|
219
|
+
<hr />
|
|
220
|
+
|
|
221
|
+
## ┌ 📚 Documentation ┐
|
|
141
222
|
|
|
142
|
-
|
|
223
|
+
SCSSLeon documentation is available here [http://nulllogic.github.io/scssleon-docs](http://nulllogic.github.io/scssleon-docs)
|
|
143
224
|
|
|
144
|
-
Documentation
|
|
225
|
+
Documentation is built with [Astro](https://astro.build/) and publicly hosted on GitHub Pages [here](http://nulllogic.github.io/scssleon-docs).
|
|
226
|
+
Search is powered by [Algolia](https://community.algolia.com/docsearch/).
|
|
145
227
|
|
|
146
|
-
|
|
228
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
147
229
|
|
|
148
|
-
|
|
149
|
-
2. Open `http://localhost:8000/scssleon/` in your browser.
|
|
150
|
-
3. Enjoy the documentation locally
|
|
230
|
+
<hr />
|
|
151
231
|
|
|
152
232
|
## ┌ Contributing ┐
|
|
153
233
|
|
|
154
|
-
|
|
155
|
-
<img src="./.imgs/contributing.jpg" width="100%" alt="SCSSleon contributing">
|
|
156
|
-
</p>
|
|
234
|
+
For contributing, please view the [CONTRIBUTING](CONTRIBUTING.md).
|
|
157
235
|
|
|
158
|
-
>
|
|
236
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
237
|
+
|
|
238
|
+
<hr />
|
|
159
239
|
|
|
160
240
|
## ┌ Thanks ┐
|
|
161
241
|
|
|
162
|
-
<
|
|
163
|
-
|
|
164
|
-
|
|
242
|
+
<a href="https://www.browserstack.com" title="BrowserStack" target="_blank">
|
|
243
|
+
<picture>
|
|
244
|
+
<source media="(prefers-color-scheme: dark)" srcset="./.imgs/bstack-logo-global.svg">
|
|
245
|
+
<img alt="SCSSleon framework" src="./.imgs/bstack-logo-global-dark.svg">
|
|
246
|
+
</picture>
|
|
247
|
+
</a><br />
|
|
165
248
|
|
|
166
|
-
<a href="https://www.browserstack.com"><img src="./.imgs/browserstack.jpg" alt="browserstack"></a><br />
|
|
167
249
|
Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers!
|
|
168
250
|
|
|
251
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
252
|
+
|
|
253
|
+
<hr />
|
|
254
|
+
|
|
169
255
|
## ┌ 📜 License ┐
|
|
170
256
|
[MIT license](LICENSE)
|
|
171
257
|
|
|
172
258
|
<hr />
|
|
173
259
|
|
|
174
260
|
<p align="center">
|
|
175
|
-
<a href="https://nulllogic.net/" target="_blank"
|
|
261
|
+
<a href="https://nulllogic.net/" target="_blank">
|
|
262
|
+
<picture>
|
|
263
|
+
<source media="(prefers-color-scheme: dark)" srcset="./.imgs/logo_nulllogic_dark.png">
|
|
264
|
+
<img alt="SCSSleon framework" src="./.imgs/logo_nulllogic.png">
|
|
265
|
+
</picture>
|
|
266
|
+
</a>
|
|
176
267
|
</p>
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nulllogic/scssleon",
|
|
3
3
|
"description": "Most advanced, simple and clean SCSS framework",
|
|
4
|
-
"version": "1.0.
|
|
5
|
-
"version_short": "1.0.
|
|
4
|
+
"version": "1.0.6",
|
|
5
|
+
"version_short": "1.0.6",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"css",
|
|
8
8
|
"sass",
|
|
9
|
+
"scss",
|
|
10
|
+
"scss-framework",
|
|
9
11
|
"mobile-first",
|
|
10
12
|
"responsive",
|
|
11
13
|
"front-end",
|
package/scss/_mixins.scss
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
// ↓ Helpers
|
|
2
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
3
|
|
|
10
4
|
// ↓ Generators
|
|
11
|
-
@forward "mixins/generators/color-sheme";
|
|
12
5
|
@forward "mixins/generators/components";
|
|
13
|
-
@forward "mixins/generators/properties";
|
|
14
|
-
|
|
15
|
-
// ↓ Utilities
|
|
16
|
-
@forward "mixins/utilities";
|
|
17
|
-
|
|
18
|
-
// ↓ Components
|
|
19
|
-
@forward "mixins/forms";
|
|
20
|
-
|
|
21
|
-
// ↓ Layout
|
|
6
|
+
@forward "mixins/generators/properties";
|
package/scss/_root.scss
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* - ૮₍ ˃ ⤙ ˂ ₎ა – root */
|
|
2
|
-
@use
|
|
3
|
-
|
|
2
|
+
@use 'sass:string';
|
|
3
|
+
|
|
4
|
+
@use './mixins' as mixins;
|
|
4
5
|
@use "./functions" as functions;
|
|
5
6
|
|
|
6
7
|
$config: () !default;
|
|
@@ -10,16 +11,14 @@ $prefix: functions.get-config($config, "prefix");
|
|
|
10
11
|
|
|
11
12
|
$is-smooth-scroll-enabled: functions.get-config(
|
|
12
13
|
$config,
|
|
13
|
-
|
|
14
|
+
'enable.smooth-scroll'
|
|
14
15
|
);
|
|
15
16
|
|
|
16
|
-
$root-variables: functions.get-theme($theme, "root.variables");
|
|
17
|
-
|
|
18
17
|
:root {
|
|
19
18
|
/* 🌱𖣂🫚🌿 */
|
|
20
19
|
@include mixins.generate-properties(
|
|
21
|
-
|
|
22
|
-
functions.get-theme($theme,
|
|
20
|
+
'root',
|
|
21
|
+
functions.get-theme($theme, 'root'),
|
|
23
22
|
$config,
|
|
24
23
|
);
|
|
25
24
|
|
|
@@ -9,10 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
@mixin generate-component($component, $class, $config, $theme, $options : ()) {
|
|
11
11
|
$theme-component: '';
|
|
12
|
-
|
|
13
12
|
$color_scheme: functions.get-config($config, 'color-scheme');
|
|
14
|
-
$is_wrapper_enabled: functions.get-config($config, 'enable.wrapper');
|
|
15
|
-
$wrapper_class: functions.get-config($config, 'wrapper');
|
|
16
13
|
|
|
17
14
|
// Checking, if the component was previously defined inside theme's components
|
|
18
15
|
@if (meta.type-of($component) == 'string') {
|
|
@@ -28,43 +25,22 @@
|
|
|
28
25
|
@each $scheme in string.split(functions.get-config($config, 'color-scheme'), ' ') {
|
|
29
26
|
|
|
30
27
|
@if $scheme == 'light' {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
scheme: $scheme,
|
|
36
|
-
), $options));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
} @else {
|
|
40
|
-
.#{$class} {
|
|
41
|
-
@include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
|
|
42
|
-
scheme: $scheme,
|
|
43
|
-
), $options));
|
|
44
|
-
}
|
|
28
|
+
.#{$class} {
|
|
29
|
+
@include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
|
|
30
|
+
scheme: $scheme,
|
|
31
|
+
), $options));
|
|
45
32
|
}
|
|
46
33
|
}
|
|
47
34
|
|
|
48
35
|
@if $scheme == 'dark' {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
scheme: $scheme,
|
|
54
|
-
), $options));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
} @else {
|
|
59
|
-
.#{$class}:where([data-theme="#{$scheme}"], [data-theme="#{$scheme}"] *) {
|
|
60
|
-
@include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
|
|
61
|
-
scheme: $scheme,
|
|
62
|
-
), $options));
|
|
63
|
-
}
|
|
64
|
-
|
|
36
|
+
.#{$class}:where([data-theme="#{$scheme}"], [data-theme="#{$scheme}"] *) {
|
|
37
|
+
@include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
|
|
38
|
+
scheme: $scheme,
|
|
39
|
+
), $options));
|
|
65
40
|
}
|
|
66
41
|
}
|
|
67
42
|
}
|
|
43
|
+
|
|
68
44
|
}
|
|
69
45
|
|
|
70
46
|
@mixin generate-components($components, $config, $theme) {
|
|
@@ -72,7 +48,7 @@
|
|
|
72
48
|
// Get components
|
|
73
49
|
@each $component in $components {
|
|
74
50
|
// Component options param check
|
|
75
|
-
@if(list.length($component) > 2) {
|
|
51
|
+
@if (list.length($component) > 2) {
|
|
76
52
|
@include generate-component(
|
|
77
53
|
list.nth($component, 1),
|
|
78
54
|
list.nth($component, 2),
|
|
@@ -89,8 +65,4 @@
|
|
|
89
65
|
)
|
|
90
66
|
}
|
|
91
67
|
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@mixin get-structure($component) {
|
|
95
|
-
@debug $component;
|
|
96
68
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
@use "sass:list";
|
|
5
5
|
|
|
6
6
|
@use "../../functions" as functions;
|
|
7
|
-
@use "../../mixins/generators/color-sheme" as mixin;
|
|
8
7
|
|
|
9
8
|
@mixin generate-css-properties($tag, $property, $value, $config, $options : ()) {
|
|
10
9
|
|
|
@@ -133,8 +132,8 @@
|
|
|
133
132
|
@each $at-rule, $properties in $value {
|
|
134
133
|
// Keep @ at the beginning
|
|
135
134
|
@#{functions.replace($at-rule, '@', '')} {
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
@include generate-properties($tag, $properties, $config, $options);
|
|
136
|
+
}
|
|
138
137
|
}
|
|
139
138
|
}
|
|
140
139
|
|
|
@@ -172,29 +171,29 @@
|
|
|
172
171
|
@include generate-css-properties($tag, $property, $value, $config, $options);
|
|
173
172
|
}
|
|
174
173
|
|
|
175
|
-
|
|
174
|
+
// Colors
|
|
176
175
|
@else if ($property == '_colors') {
|
|
177
176
|
@include generate-colors($tag, $value, $config, $options, 'light');
|
|
178
177
|
}
|
|
179
178
|
|
|
180
|
-
|
|
179
|
+
// Responsive
|
|
181
180
|
@else if ($property == '_responsive') {
|
|
182
181
|
@include generate-responsive($tag, $value, $config);
|
|
183
182
|
}
|
|
184
183
|
|
|
185
|
-
|
|
184
|
+
// Sub classes
|
|
186
185
|
@else if ($property == "_subclasses") {
|
|
187
186
|
@each $class, $class_properties in $value {
|
|
188
187
|
@include generate-subclasses($tag, $class, $class_properties, $config, $options);
|
|
189
188
|
}
|
|
190
189
|
}
|
|
191
190
|
|
|
192
|
-
|
|
191
|
+
// At-rules
|
|
193
192
|
@else if ($property == '_atrule') {
|
|
194
193
|
@include generate-atrule($tag, $value, $config, $options);
|
|
195
194
|
}
|
|
196
195
|
|
|
197
|
-
|
|
196
|
+
// Animations
|
|
198
197
|
@else if ($property == '_animations') {
|
|
199
198
|
@include generate-animation($tag, $value, $config, $options);
|
|
200
199
|
} @else {
|
|
@@ -212,4 +211,4 @@
|
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
|
-
}
|
|
214
|
+
}
|
package/scss/scssleon.scss
CHANGED
|
@@ -203,15 +203,4 @@ $theme: theme.$theme;
|
|
|
203
203
|
@use 'components/tooltip' with (
|
|
204
204
|
$config: $config,
|
|
205
205
|
$theme: $theme
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
// ↓ Helpers
|
|
209
|
-
@use 'helpers/clearfix';
|
|
210
|
-
@use 'helpers/screen_reader';
|
|
211
|
-
@use 'helpers/text_truncate';
|
|
212
|
-
|
|
213
|
-
// ↓ Utilities
|
|
214
|
-
@use 'utilities/api' with (
|
|
215
|
-
$config: $config,
|
|
216
|
-
$theme: $theme
|
|
217
206
|
);
|
package/scss/_utilities.scss
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
@use "config";
|
|
2
|
-
@use 'sass:map';
|
|
3
|
-
|
|
4
|
-
$config: nil !default;
|
|
5
|
-
$theme: nil !default;
|
|
6
|
-
|
|
7
|
-
// Utilities
|
|
8
|
-
// @TODO add grid rules here later
|
|
9
|
-
|
|
10
|
-
$utilities: () !default;
|
|
11
|
-
|
|
12
|
-
$utilities: map.merge((
|
|
13
|
-
|
|
14
|
-
"display" : (
|
|
15
|
-
responsive: false,
|
|
16
|
-
property: 'display',
|
|
17
|
-
values: (
|
|
18
|
-
block: block,
|
|
19
|
-
inline-block: inline-block,
|
|
20
|
-
inline: inline,
|
|
21
|
-
flex: flex,
|
|
22
|
-
inline-flex: inline-flex,
|
|
23
|
-
table: table,
|
|
24
|
-
inline-table: inline-table,
|
|
25
|
-
table-caption: table-caption,
|
|
26
|
-
table-cell: table-cell,
|
|
27
|
-
table-column: table-column,
|
|
28
|
-
table-column-group: table-column-group,
|
|
29
|
-
table-footer-group: table-footer-group,
|
|
30
|
-
table-header-group: table-header-group,
|
|
31
|
-
table-row-group: table-row-group,
|
|
32
|
-
table-row: table-row,
|
|
33
|
-
flow-root: flow-root,
|
|
34
|
-
grid: grid,
|
|
35
|
-
inline-grid: inline-grid,
|
|
36
|
-
contents: contents,
|
|
37
|
-
list-item: list-item,
|
|
38
|
-
hidden: hidden
|
|
39
|
-
),
|
|
40
|
-
),
|
|
41
|
-
|
|
42
|
-
// Flex
|
|
43
|
-
"flex": (
|
|
44
|
-
responsive: false,
|
|
45
|
-
property: "flex",
|
|
46
|
-
values: (
|
|
47
|
-
flex-initial: 0 1 auto,
|
|
48
|
-
flex-1: 1 1 0%,
|
|
49
|
-
flex-auto: 1 1 auto,
|
|
50
|
-
flex-none: none
|
|
51
|
-
),
|
|
52
|
-
),
|
|
53
|
-
|
|
54
|
-
"flex-direction" : (
|
|
55
|
-
responsive: false,
|
|
56
|
-
property: "flex-direction",
|
|
57
|
-
values: (
|
|
58
|
-
flex-row: row,
|
|
59
|
-
flex-row-reverse: row-reverse,
|
|
60
|
-
flex-col: column,
|
|
61
|
-
flex-col-reverse: column-reverse
|
|
62
|
-
),
|
|
63
|
-
),
|
|
64
|
-
|
|
65
|
-
"flex-grow" : (
|
|
66
|
-
responsive: false,
|
|
67
|
-
property: "flex-grow",
|
|
68
|
-
values: (
|
|
69
|
-
grow: 1,
|
|
70
|
-
grow-0: 0
|
|
71
|
-
)
|
|
72
|
-
),
|
|
73
|
-
|
|
74
|
-
"flex-shrink" : (
|
|
75
|
-
responsive: false,
|
|
76
|
-
property: "flex-shrink",
|
|
77
|
-
values : (
|
|
78
|
-
shrink : 1,
|
|
79
|
-
shrink-0 : 0
|
|
80
|
-
)
|
|
81
|
-
),
|
|
82
|
-
|
|
83
|
-
"flex-wrap" : (
|
|
84
|
-
responsive: false,
|
|
85
|
-
property: "flex-wrap",
|
|
86
|
-
values : (
|
|
87
|
-
flex-wrap : flex-wrap,
|
|
88
|
-
flex-wrap-reverse: flex-wrap-reverse,
|
|
89
|
-
flex-nowrap: flex-nowrap
|
|
90
|
-
)
|
|
91
|
-
),
|
|
92
|
-
|
|
93
|
-
"order" : (
|
|
94
|
-
responsive: false,
|
|
95
|
-
property: "order",
|
|
96
|
-
values : (
|
|
97
|
-
order-none: 0,
|
|
98
|
-
order-first: -9999,
|
|
99
|
-
order-1: 1,
|
|
100
|
-
order-2: 2,
|
|
101
|
-
order-3: 3,
|
|
102
|
-
order-4: 4,
|
|
103
|
-
order-5: 5,
|
|
104
|
-
order-6: 6,
|
|
105
|
-
order-last: 9999,
|
|
106
|
-
)
|
|
107
|
-
),
|
|
108
|
-
|
|
109
|
-
"align-items" : (
|
|
110
|
-
responsive: false,
|
|
111
|
-
property: "align-items",
|
|
112
|
-
values: (
|
|
113
|
-
align-items-start: flex-start,
|
|
114
|
-
align-items-end: flex-end,
|
|
115
|
-
align-items-center: center,
|
|
116
|
-
align-items-baseline: baseline,
|
|
117
|
-
align-items-stretch: stretch
|
|
118
|
-
)
|
|
119
|
-
),
|
|
120
|
-
|
|
121
|
-
"align-content" : (
|
|
122
|
-
responsive: false,
|
|
123
|
-
property: "align-content",
|
|
124
|
-
values: (
|
|
125
|
-
align-content-center: center,
|
|
126
|
-
align-content-start: flex-start,
|
|
127
|
-
align-content-end: flex-end,
|
|
128
|
-
align-content-between: space-between,
|
|
129
|
-
align-content-around: space-around,
|
|
130
|
-
align-content-evenly: space-evenly
|
|
131
|
-
),
|
|
132
|
-
),
|
|
133
|
-
|
|
134
|
-
"align-self" : (
|
|
135
|
-
responsive: false,
|
|
136
|
-
property: "align-self",
|
|
137
|
-
values: (
|
|
138
|
-
align-self-start : flex-start,
|
|
139
|
-
align-self-end: flex-end,
|
|
140
|
-
align-self-center: center,
|
|
141
|
-
align-self-stretch: stretch,
|
|
142
|
-
align-self-baseline: baseline
|
|
143
|
-
)
|
|
144
|
-
),
|
|
145
|
-
|
|
146
|
-
"justify-content": (
|
|
147
|
-
responsive: false,
|
|
148
|
-
property: "justify-content",
|
|
149
|
-
values: (
|
|
150
|
-
justify-content-start: flex-start,
|
|
151
|
-
justify-content-end: flex-end,
|
|
152
|
-
justify-content-center: center,
|
|
153
|
-
justify-content-between: space-between,
|
|
154
|
-
justify-content-around: space-around,
|
|
155
|
-
justify-content-evenly: space-evenly,
|
|
156
|
-
justify-content-stretch: stretch
|
|
157
|
-
)
|
|
158
|
-
),
|
|
159
|
-
|
|
160
|
-
"justify-items" : (
|
|
161
|
-
responsive: false,
|
|
162
|
-
property: "justify-items",
|
|
163
|
-
values: (
|
|
164
|
-
justify-items-start: start,
|
|
165
|
-
justify-items-end: end,
|
|
166
|
-
justify-items-center: center,
|
|
167
|
-
justify-items-stretch: stretch
|
|
168
|
-
)
|
|
169
|
-
),
|
|
170
|
-
|
|
171
|
-
"justify-self" : (
|
|
172
|
-
responsive: false,
|
|
173
|
-
property: "justify-self",
|
|
174
|
-
values: (
|
|
175
|
-
justify-self-start: start,
|
|
176
|
-
justify-self-end: end,
|
|
177
|
-
justify-self-center: center,
|
|
178
|
-
justify-self-stretch: stretch
|
|
179
|
-
)
|
|
180
|
-
),
|
|
181
|
-
|
|
182
|
-
"vertical-align" : (
|
|
183
|
-
responsive: false,
|
|
184
|
-
property: "vertical-align",
|
|
185
|
-
values: (
|
|
186
|
-
align-baseline: baseline,
|
|
187
|
-
align-top: top,
|
|
188
|
-
align-middle: middle,
|
|
189
|
-
align-bottom: bottom,
|
|
190
|
-
align-text-top: text-top,
|
|
191
|
-
align-text-bottom: text-bottom,
|
|
192
|
-
align-sub: sub,
|
|
193
|
-
align-super: super
|
|
194
|
-
)
|
|
195
|
-
),
|
|
196
|
-
|
|
197
|
-
"float" : (
|
|
198
|
-
responsive: false,
|
|
199
|
-
property: "float",
|
|
200
|
-
values: (
|
|
201
|
-
float-left: left,
|
|
202
|
-
float-right: right,
|
|
203
|
-
float-none: none,
|
|
204
|
-
)
|
|
205
|
-
),
|
|
206
|
-
|
|
207
|
-
"overflow" : (
|
|
208
|
-
responsive: false,
|
|
209
|
-
property: "overflow",
|
|
210
|
-
values: (
|
|
211
|
-
overflow-auto: auto, //@TODO check later
|
|
212
|
-
overflow-hidden: hidden,
|
|
213
|
-
overflow-scroll: scroll,
|
|
214
|
-
overflow-visible: visible
|
|
215
|
-
)
|
|
216
|
-
),
|
|
217
|
-
|
|
218
|
-
"position" : (
|
|
219
|
-
responsive: false,
|
|
220
|
-
property: "position",
|
|
221
|
-
values: (
|
|
222
|
-
static: static,
|
|
223
|
-
fixed: fixed,
|
|
224
|
-
absolute: absolute,
|
|
225
|
-
relative : relative,
|
|
226
|
-
sticky : sticky
|
|
227
|
-
)
|
|
228
|
-
),
|
|
229
|
-
|
|
230
|
-
// "width" : (
|
|
231
|
-
//
|
|
232
|
-
// ),
|
|
233
|
-
//
|
|
234
|
-
"max-width" : (
|
|
235
|
-
responsive: false,
|
|
236
|
-
property: "max-width",
|
|
237
|
-
values: (
|
|
238
|
-
max-w-full : 100%,
|
|
239
|
-
max-w-none: none
|
|
240
|
-
)
|
|
241
|
-
),
|
|
242
|
-
|
|
243
|
-
"min-height" : (
|
|
244
|
-
responsive: false,
|
|
245
|
-
property: "min-height",
|
|
246
|
-
values: (
|
|
247
|
-
min-h-0: 0px,
|
|
248
|
-
min-h-full: 100%,
|
|
249
|
-
min-h-screen: 100vh
|
|
250
|
-
)
|
|
251
|
-
),
|
|
252
|
-
|
|
253
|
-
"text-align" : (
|
|
254
|
-
responsive: false,
|
|
255
|
-
property: "text-align",
|
|
256
|
-
values: (
|
|
257
|
-
"text-left": left,
|
|
258
|
-
"text-right" : right,
|
|
259
|
-
"text-center" : center
|
|
260
|
-
)
|
|
261
|
-
),
|
|
262
|
-
//
|
|
263
|
-
// "word-wrap" : (
|
|
264
|
-
//
|
|
265
|
-
// ),
|
|
266
|
-
//
|
|
267
|
-
"white-space" : (
|
|
268
|
-
responsive: false,
|
|
269
|
-
property: "white-space",
|
|
270
|
-
values: (
|
|
271
|
-
white-space-normal : normal,
|
|
272
|
-
white-space-nowrap: nowrap,
|
|
273
|
-
white-space-brake-spaces: break-spaces
|
|
274
|
-
)
|
|
275
|
-
),
|
|
276
|
-
|
|
277
|
-
"user-select" : (
|
|
278
|
-
responsive: false,
|
|
279
|
-
property: "user-select",
|
|
280
|
-
values: (
|
|
281
|
-
select-none: none,
|
|
282
|
-
select-text: text,
|
|
283
|
-
select-all: all,
|
|
284
|
-
select-auto: auto
|
|
285
|
-
)
|
|
286
|
-
),
|
|
287
|
-
|
|
288
|
-
"visibility" : (
|
|
289
|
-
responsive: false,
|
|
290
|
-
property: "visibility",
|
|
291
|
-
values: (
|
|
292
|
-
visible: visible,
|
|
293
|
-
invisible: invisible,
|
|
294
|
-
collapse: collapse,
|
|
295
|
-
)
|
|
296
|
-
),
|
|
297
|
-
|
|
298
|
-
"grid-rows" : (
|
|
299
|
-
responsive: false,
|
|
300
|
-
property: "grid-template-rows",
|
|
301
|
-
values : (
|
|
302
|
-
grid-rows-1 : repeat(1, minmax(0, 1fr)),
|
|
303
|
-
grid-rows-2 : repeat(2, minmax(0, 1fr)),
|
|
304
|
-
grid-rows-3 : repeat(3, minmax(0, 1fr)),
|
|
305
|
-
grid-rows-4 : repeat(4, minmax(0, 1fr)),
|
|
306
|
-
grid-rows-5 : repeat(5, minmax(0, 1fr)),
|
|
307
|
-
grid-rows-6 : repeat(6, minmax(0, 1fr)),
|
|
308
|
-
grid-rows-none : none
|
|
309
|
-
)
|
|
310
|
-
),
|
|
311
|
-
|
|
312
|
-
"grid-auto-flow" : (
|
|
313
|
-
responsive: false,
|
|
314
|
-
property: "grid-auto-flow",
|
|
315
|
-
values: (
|
|
316
|
-
grid-flow-row : row,
|
|
317
|
-
grid-flow-col : column,
|
|
318
|
-
grid-flow-dense : dense,
|
|
319
|
-
grid-flow-row-dense : row dense,
|
|
320
|
-
grid-flow-col-dense : column dense
|
|
321
|
-
)
|
|
322
|
-
),
|
|
323
|
-
|
|
324
|
-
"grid-auto-columns" : (
|
|
325
|
-
responsive: false,
|
|
326
|
-
property: "grid-auto-columns",
|
|
327
|
-
values: (
|
|
328
|
-
auto-cols-auto : auto,
|
|
329
|
-
auto-cols-min : min-content,
|
|
330
|
-
auto-cols-max : max-content,
|
|
331
|
-
auto-cols-fr : minmax(0, 1fr)
|
|
332
|
-
)
|
|
333
|
-
),
|
|
334
|
-
|
|
335
|
-
"grid-auto-rows" : (
|
|
336
|
-
responsive: false,
|
|
337
|
-
property: "grid-auto-rows",
|
|
338
|
-
values : (
|
|
339
|
-
auto-rows-auto : auto,
|
|
340
|
-
auto-rows-min : min-content,
|
|
341
|
-
auto-rows-max: max-content,
|
|
342
|
-
auto-rows-fr: minmax(0, 1fr)
|
|
343
|
-
)
|
|
344
|
-
),
|
|
345
|
-
|
|
346
|
-
"column-gap" : (
|
|
347
|
-
responsive: false,
|
|
348
|
-
property: "column-gap",
|
|
349
|
-
values: (
|
|
350
|
-
gap-x-1 : .25rem,
|
|
351
|
-
gap-x-2 : .5rem,
|
|
352
|
-
gap-x-3 : .75rem
|
|
353
|
-
)
|
|
354
|
-
)
|
|
355
|
-
|
|
356
|
-
), $utilities)
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
@mixin box-shadow($shadow...) {
|
|
2
|
-
$result: ();
|
|
3
|
-
|
|
4
|
-
@each $value in $shadow {
|
|
5
|
-
@if $value != null {
|
|
6
|
-
$result: append($result, $value, "comma");
|
|
7
|
-
}
|
|
8
|
-
@if $value == none and length($shadow) > 1 {
|
|
9
|
-
@warn "The keyword 'none' must be used as a single argument.";
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
@if (length($result) > 0) {
|
|
14
|
-
box-shadow: $result;
|
|
15
|
-
}
|
|
16
|
-
}
|
package/scss/mixins/_forms.scss
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
// This mixin uses an `if()` technique to be compatible with Dart Sass
|
|
2
|
-
// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
|
|
3
|
-
|
|
4
|
-
// scss-docs-start form-validation-mixins
|
|
5
|
-
@mixin form-validation-state-selector($state) {
|
|
6
|
-
@if ($state == "valid" or $state == "invalid") {
|
|
7
|
-
.was-validated #{if(&, "&", "")}:#{$state},
|
|
8
|
-
#{if(&, "&", "")}.is-#{$state} {
|
|
9
|
-
@content;
|
|
10
|
-
}
|
|
11
|
-
} @else {
|
|
12
|
-
#{if(&, "&", "")}.is-#{$state} {
|
|
13
|
-
@content;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
@mixin form-validation-state(
|
|
19
|
-
$state,
|
|
20
|
-
$color,
|
|
21
|
-
$icon,
|
|
22
|
-
$tooltip-color: color-contrast($color),
|
|
23
|
-
$tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
|
|
24
|
-
$focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
|
|
25
|
-
) {
|
|
26
|
-
.#{$state}-feedback {
|
|
27
|
-
display: none;
|
|
28
|
-
width: 100%;
|
|
29
|
-
margin-top: $form-feedback-margin-top;
|
|
30
|
-
font-size : $form-feedback-font-size;
|
|
31
|
-
font-style: $form-feedback-font-style;
|
|
32
|
-
color: $color;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.#{$state}-tooltip {
|
|
36
|
-
position: absolute;
|
|
37
|
-
top: 100%;
|
|
38
|
-
z-index: 5;
|
|
39
|
-
display: none;
|
|
40
|
-
max-width: 100%; // Contain to parent when possible
|
|
41
|
-
padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
|
|
42
|
-
margin-top: .1rem;
|
|
43
|
-
font-size : $form-feedback-tooltip-font-size;
|
|
44
|
-
line-height: $form-feedback-tooltip-line-height;
|
|
45
|
-
color: $tooltip-color;
|
|
46
|
-
background-color: $tooltip-bg-color;
|
|
47
|
-
@include border-radius($form-feedback-tooltip-border-radius);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
@include form-validation-state-selector($state) {
|
|
51
|
-
~ .#{$state}-feedback,
|
|
52
|
-
~ .#{$state}-tooltip {
|
|
53
|
-
display: block;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.form-control {
|
|
58
|
-
@include form-validation-state-selector($state) {
|
|
59
|
-
border-color: $color;
|
|
60
|
-
|
|
61
|
-
@if $enable-validation-icons {
|
|
62
|
-
padding-right: $input-height-inner;
|
|
63
|
-
background-image: escape-svg($icon);
|
|
64
|
-
background-repeat: no-repeat;
|
|
65
|
-
background-position: right $input-height-inner-quarter center;
|
|
66
|
-
background-size: $input-height-inner-half $input-height-inner-half;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
&:focus {
|
|
70
|
-
border-color: $color;
|
|
71
|
-
box-shadow: $focus-box-shadow;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// stylelint-disable-next-line selector-no-qualifying-type
|
|
77
|
-
textarea.form-control {
|
|
78
|
-
@include form-validation-state-selector($state) {
|
|
79
|
-
@if $enable-validation-icons {
|
|
80
|
-
padding-right: $input-height-inner;
|
|
81
|
-
background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.form-select {
|
|
87
|
-
@include form-validation-state-selector($state) {
|
|
88
|
-
border-color: $color;
|
|
89
|
-
|
|
90
|
-
@if $enable-validation-icons {
|
|
91
|
-
&:not([multiple]):not([size]),
|
|
92
|
-
&:not([multiple])[size="1"] {
|
|
93
|
-
padding-right: $form-select-feedback-icon-padding-end;
|
|
94
|
-
background-image: escape-svg($form-select-indicator), escape-svg($icon);
|
|
95
|
-
background-position: $form-select-bg-position, $form-select-feedback-icon-position;
|
|
96
|
-
background-size: $form-select-bg-size, $form-select-feedback-icon-size;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
&:focus {
|
|
101
|
-
border-color: $color;
|
|
102
|
-
box-shadow: $focus-box-shadow;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.form-control-color {
|
|
108
|
-
@include form-validation-state-selector($state) {
|
|
109
|
-
@if $enable-validation-icons {
|
|
110
|
-
width: add($form-color-width, $input-height-inner);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.form-check-input {
|
|
116
|
-
@include form-validation-state-selector($state) {
|
|
117
|
-
border-color: $color;
|
|
118
|
-
|
|
119
|
-
&:checked {
|
|
120
|
-
background-color: $color;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
&:focus {
|
|
124
|
-
box-shadow: $focus-box-shadow;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
~ .form-check-label {
|
|
128
|
-
color: $color;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
.form-check-inline .form-check-input {
|
|
133
|
-
~ .#{$state}-feedback {
|
|
134
|
-
margin-left: .5em;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.input-group .form-control,
|
|
139
|
-
.input-group .form-select {
|
|
140
|
-
@include form-validation-state-selector($state) {
|
|
141
|
-
@if $state == "valid" {
|
|
142
|
-
z-index: 1;
|
|
143
|
-
} @else if $state == "invalid" {
|
|
144
|
-
z-index: 2;
|
|
145
|
-
}
|
|
146
|
-
&:focus {
|
|
147
|
-
z-index: 3;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// scss-docs-end form-validation-mixins
|
package/scss/mixins/_grid.scss
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
@use 'sass:map';
|
|
3
|
-
@use "sass:meta";
|
|
4
|
-
|
|
5
|
-
@use '../config';
|
|
6
|
-
@use './breakpoints' as mixins;
|
|
7
|
-
@use '../functions' as functions;
|
|
8
|
-
|
|
9
|
-
// Row columns
|
|
10
|
-
@function divide($dividend, $divisor, $precision: 10) {
|
|
11
|
-
|
|
12
|
-
$sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
|
|
13
|
-
$dividend: abs($dividend);
|
|
14
|
-
$divisor: abs($divisor);
|
|
15
|
-
|
|
16
|
-
@if $dividend == 0 {
|
|
17
|
-
@return 0;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@if $divisor == 0 {
|
|
21
|
-
@error "Cannot divide by 0";
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
$remainder: $dividend;
|
|
25
|
-
$result: 0;
|
|
26
|
-
$factor: 10;
|
|
27
|
-
|
|
28
|
-
@while ($remainder > 0 and $precision >= 0) {
|
|
29
|
-
$quotient: 0;
|
|
30
|
-
|
|
31
|
-
@while ($remainder >= $divisor) {
|
|
32
|
-
$remainder: $remainder - $divisor;
|
|
33
|
-
$quotient: $quotient + 1;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
$result: $result * 10 + $quotient;
|
|
37
|
-
$factor: $factor * .1;
|
|
38
|
-
$remainder: $remainder * 10;
|
|
39
|
-
$precision: $precision - 1;
|
|
40
|
-
|
|
41
|
-
@if ($precision < 0 and $remainder >= $divisor * 5) {
|
|
42
|
-
$result: $result + 1;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
$result: $result * $factor * $sign;
|
|
47
|
-
|
|
48
|
-
@return $result;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
@mixin generate_columns($size: false, $columns) {
|
|
52
|
-
|
|
53
|
-
@if $size {
|
|
54
|
-
flex: 0 0 auto;
|
|
55
|
-
width: percentage(divide($size, $columns));
|
|
56
|
-
|
|
57
|
-
} @else {
|
|
58
|
-
flex: 1 1 0;
|
|
59
|
-
max-width: 100%;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// Framework grid generation
|
|
65
|
-
@mixin generate_grid_columns($columns, $breakpoints) {
|
|
66
|
-
|
|
67
|
-
@each $breakpoint in map-keys($breakpoints) {
|
|
68
|
-
$infix: mixins.breakpoint-infix($breakpoint, $breakpoints);
|
|
69
|
-
|
|
70
|
-
@include mixins.media-breakpoint-up($breakpoint, $breakpoints) {
|
|
71
|
-
|
|
72
|
-
.col#{$infix} {
|
|
73
|
-
flex: 1 0 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.col#{$infix}-auto {
|
|
77
|
-
flex: 0 0 auto;
|
|
78
|
-
width: auto;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@if $columns > 0 {
|
|
82
|
-
@for $i from 1 through $columns {
|
|
83
|
-
.col#{$infix}-#{$i} {
|
|
84
|
-
@include generate_columns($i, $columns);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
@mixin transition($transition...) {
|
|
2
|
-
@if length($transition) == 0 {
|
|
3
|
-
$transition: config.$transition-base;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
@if length($transition) > 1 {
|
|
7
|
-
@each $value in $transition {
|
|
8
|
-
@if $value == null or $value == none {
|
|
9
|
-
@warn "The keyword 'none' or 'null' must be used as a single argument.";
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
@if config.$enable-transitions {
|
|
15
|
-
@if nth($transition, 1) != null {
|
|
16
|
-
transition: $transition;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@if config.$enable-reduced-motion and
|
|
20
|
-
nth($transition, 1) !=
|
|
21
|
-
null and
|
|
22
|
-
nth($transition, 1) !=
|
|
23
|
-
none
|
|
24
|
-
{
|
|
25
|
-
@media (prefers-reduced-motion: reduce) {
|
|
26
|
-
transition: none;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
|
|
3
|
-
// Utility generator
|
|
4
|
-
// Used to generate utilities & print utilities
|
|
5
|
-
@mixin generate-utility($property, $settings) {
|
|
6
|
-
$class : map.get($settings, 'property');
|
|
7
|
-
$values : map.get($settings, 'values');
|
|
8
|
-
$suffix : map.get($settings, 'suffix');
|
|
9
|
-
|
|
10
|
-
@each $name, $value in $values {
|
|
11
|
-
.#{$name} {
|
|
12
|
-
#{$property} : #{$value};
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
package/scss/utilities/_api.scss
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
|
|
3
|
-
@use '../functions' as functions;
|
|
4
|
-
@use '../mixins' as mixins;
|
|
5
|
-
@use '../utilities' as utilities;
|
|
6
|
-
|
|
7
|
-
$config: nil !default;
|
|
8
|
-
$theme: nil !default;
|
|
9
|
-
|
|
10
|
-
$grid-breakpoints: functions.get-config($config, 'grid-breakpoints');
|
|
11
|
-
|
|
12
|
-
// Loop over each breakpoint
|
|
13
|
-
@each $property, $settings in utilities.$utilities {
|
|
14
|
-
@include mixins.generate-utility($property, $settings);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Print utilities
|
|
18
|
-
@media print {
|
|
19
|
-
// @each $key, $utility in utilities.$utilities {
|
|
20
|
-
// @if type-of($utility) == "map" and map-get($utility, print) == true {
|
|
21
|
-
// @include mixins.generate-utility($utility, "-print");
|
|
22
|
-
// }
|
|
23
|
-
// }
|
|
24
|
-
}
|