@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 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
- ## ┌ 🧭 Quickstart ┐
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
- ### Prerequisites
61
+ <hr />
62
+
63
+ ## ┌ ✨ Features ┐
21
64
 
22
- - Node.js and npm installed on your system.
23
- - Basic knowledge of SCSS and Node.js.
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
- ### Install
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 ( 🛖🔥🦴primitive ) </summary>
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
- 4. Update `package.json` file. Add following strings
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
- 5. Create `app.scss` inside your project in `/styles` directory
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
- 6. Create `base.scss` inside your project in `/styles/components` directory
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
- 7. Run node command at root `/` of your project to generate CSS code to `/assets/css`
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
- 8. Profit – you now have output at `/assets/css` directory
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
- ## ┌ 📚 Documentation ┐
207
+ <hr />
137
208
 
138
- <p align="left">
139
- <img src="./.imgs/documentation.jpg" width="100%" alt="SCSSleon documentation">
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
- SCSSleon's documentation is built with [Astro](https://astro.build/) and publicly hosted on GitHub Pages at <https://nulllogic.github.io/scssleon-docs/>. The docs may also be run locally.
223
+ SCSSLeon documentation is available here [http://nulllogic.github.io/scssleon-docs](http://nulllogic.github.io/scssleon-docs)
143
224
 
144
- Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/).
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
- ### Running documentation locally
228
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
147
229
 
148
- 1. From the root `/` directory, run `make docs` in the command line.
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
- <p align="left">
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
- > For contributing, please view the [CONTRIBUTING](CONTRIBUTING.md).
236
+ <p align="right">(<a href="#readme-top">back to top</a>)</p>
237
+
238
+ <hr />
159
239
 
160
240
  ## ┌ Thanks ┐
161
241
 
162
- <p align="left">
163
- <img src="./.imgs/thankyou.jpg" width="100%" alt="SCSSleon sponsors">
164
- </p>
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"><img src="./.imgs/logo.png" alt="NullLogic" aria-title="NullLogic"></a>
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",
5
- "version_short": "1.0.5",
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 "sass:string";
3
- @use "./mixins" as mixins;
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
- "enable.smooth-scroll"
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
- "root",
22
- functions.get-theme($theme, "root"),
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
- @if ($is_wrapper_enabled) {
32
- #{$wrapper_class} {
33
- .#{$class} {
34
- @include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
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
- @if ($is_wrapper_enabled) {
50
- #{$wrapper_class}[data-theme="#{$scheme}"] {
51
- .#{$class}:where([data-theme="#{$scheme}"], [data-theme="#{$scheme}"] *) {
52
- @include properties.generate-properties($class, $theme-component, $config, map.deep-merge((
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
- @include generate-properties($tag, $properties, $config, $options);
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
- // Colors
174
+ // Colors
176
175
  @else if ($property == '_colors') {
177
176
  @include generate-colors($tag, $value, $config, $options, 'light');
178
177
  }
179
178
 
180
- // Responsive
179
+ // Responsive
181
180
  @else if ($property == '_responsive') {
182
181
  @include generate-responsive($tag, $value, $config);
183
182
  }
184
183
 
185
- // Sub classes
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
- // At-rules
191
+ // At-rules
193
192
  @else if ($property == '_atrule') {
194
193
  @include generate-atrule($tag, $value, $config, $options);
195
194
  }
196
195
 
197
- // Animations
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
+ }
@@ -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
  );
@@ -215,7 +215,6 @@ $content-config: (
215
215
  line-height: clamp(1.25em, 4vw, 1.5em),
216
216
  padding: 1rem,
217
217
  font-style: italic,
218
- font-size: 1.5rem,
219
218
 
220
219
  border-left: var(--blockquote-border),
221
220
 
@@ -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,12 +0,0 @@
1
- @keyframes placeholder-glow {
2
- 50% {
3
- opacity: 0.5;
4
- }
5
- }
6
-
7
- @keyframes placeholder-wave {
8
- 100% {
9
- mask-position: -200% 0;
10
- -webkit-mask-position: -200% 0;
11
- }
12
- }
@@ -1,5 +0,0 @@
1
- @use '../mixins' as mixins;
2
-
3
- .clearfix {
4
- @include mixins.clearfix();
5
- }
@@ -1,11 +0,0 @@
1
- .sr {
2
- position: absolute;
3
- width: 1px;
4
- height: 1px;
5
- padding: 0;
6
- margin: -1px;
7
- overflow: hidden;
8
- clip: rect(0, 0, 0, 0);
9
- white-space: nowrap;
10
- border-width: 0;
11
- }
@@ -1,5 +0,0 @@
1
- .text-truncate {
2
- overflow: hidden;
3
- text-overflow: ellipsis;
4
- white-space: nowrap;
5
- }
@@ -1,3 +0,0 @@
1
- @mixin border-radius($radius) {
2
- border-radius: $radius;
3
- }
@@ -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
- }
@@ -1,9 +0,0 @@
1
- // scss-docs-start clearfix
2
- @mixin clearfix() {
3
- &::after {
4
- display: block;
5
- clear: both;
6
- content: "";
7
- }
8
- }
9
- // scss-docs-end clearfix
@@ -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
@@ -1,6 +0,0 @@
1
- // Gradients
2
- // scss-docs-start gradient-bg-mixin
3
- @mixin gradient-bg($color: null) {
4
- background-color: $color;
5
- }
6
- // scss-docs-end gradient-bg-mixin
@@ -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
- }
@@ -1,5 +0,0 @@
1
- @use 'sass:map';
2
-
3
- @mixin generate-color-scheme($schema) {
4
- @content
5
- }
@@ -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
- }