lumina-sass 1.6.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kristoffer
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # Lumina SASS
2
+
3
+ A descriptive SASS color and utility library.
4
+
5
+ ## Overview
6
+
7
+ Lumina SASS provides a comprehensive set of standardized color variables and utility mixins designed for modern web development. The library focuses on descriptive naming conventions and easy integration.
8
+
9
+ ## Features
10
+
11
+ - **Standardized Color Naming:** Uses a consistent `[brand]-[color]` or `[category]-[color]` pattern.
12
+ - **Brand Colors:** Pre-defined colors for social media platforms and operating systems.
13
+ - **Tech Colors:** Specifically curated colors for programming languages and development categories.
14
+ - **Flexbox Utilities:** Comprehensive set of flexbox maps and utility classes.
15
+ - **Utility Mixins:** Includes media query breakpoints, font handling, typography, figure/image styling, and button generation.
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ # Clone the repository
21
+ git clone https://github.com/your-username/lumina-sass.git
22
+
23
+ # Navigate to the project
24
+ cd lumina-sass
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ### Colors
30
+
31
+ All color variables follow a descriptive naming convention:
32
+
33
+ ```sass
34
+ @use 'src/color' as *
35
+
36
+ .social-button
37
+ background-color: $discord-blue
38
+ &:hover
39
+ background-color: $discord-blue-hover
40
+
41
+ .tech-tag
42
+ color: $typescript-blue
43
+ border: 1px solid $accent-slate-blue
44
+ ```
45
+
46
+ ### Flexbox & Mixins
47
+
48
+ You can import the entire library or specific modules:
49
+
50
+ ```sass
51
+ // Import everything
52
+ @use 'src' as *
53
+
54
+ // Or import specific modules
55
+ @use 'src/flexbox' as flex
56
+ @use 'src/mixins' as mix
57
+
58
+ .container
59
+ +mix.flex-center
60
+
61
+ .row
62
+ +flex.flex-row
63
+ ```
64
+
65
+ ## Demo
66
+
67
+ A live demo is available in the `demo/` directory.
68
+
69
+ ### Viewing the Demo
70
+ You can build and serve the demo using the included npm scripts:
71
+
72
+ ```bash
73
+ # Install dependencies
74
+ npm install
75
+
76
+ # Build and serve the demo locally
77
+ npm start
78
+ ```
79
+ This will compile the SASS and start a local web server at `http://localhost:8080`.
80
+
81
+ Alternatively, you can run the tasks separately:
82
+ ```bash
83
+ # Just build the styles
84
+ npm run build:demo
85
+
86
+ # Watch for changes and rebuild
87
+ npm run build:demo:watch
88
+
89
+ # Serve the demo folder
90
+ npm run serve
91
+ ```
92
+
93
+ ## Directory Structure
94
+
95
+ - `src/color/`: Contains all color definitions.
96
+ - `src/flexbox/`: Comprehensive flexbox utilities and mappings.
97
+ - `src/mixins/`: Utility mixins (layout, media queries, typography, buttons).
98
+ - `src/map/`: SASS maps for configuration (icons, devices, flexbox).
99
+ - `src/_index.sass`: Main entry point for the entire library.
100
+ - `src/_variables.sass`: Global configuration variables.
101
+
102
+ ## Naming Conventions
103
+
104
+ Colors are named using the following patterns:
105
+ - **Brand/Tag:** `$[brand]-[color]` (e.g., `$linux-orange`)
106
+ - **Category:** `$[category]-[color]` (e.g., `$compiled-orange`)
107
+ - **States:** `$[brand]-[color]-[state]` (e.g., `$facebook-blue-hover`)
108
+
109
+ ## Releases & Publishing
110
+
111
+ This project uses GitHub Actions to automate releases and publishing to NPM via **Trusted Publishing (OIDC)**.
112
+
113
+ ### Dependency Updates
114
+ Dependabot is configured to check for npm and GitHub Action updates **monthly**.
115
+
116
+ ### How to Release
117
+ 1. Update the version in `package.json`.
118
+ 2. Push a new tag following the `v*` pattern (e.g., `v1.0.1`):
119
+ ```bash
120
+ git tag v1.0.1
121
+ git push origin v1.0.1
122
+ ```
123
+ 3. The GitHub Action will automatically:
124
+ - Create a GitHub Release with generated release notes.
125
+ - Publish the package to NPM with **SLSA Provenance**.
126
+
127
+ ### Trusted Publishing Setup
128
+ To enable secretless publishing, you must configure **Trusted Publishers** on npmjs.com:
129
+ 1. Go to your package settings on npm.
130
+ 2. Under **Publishing access**, add **GitHub Actions** as a Trusted Publisher.
131
+ 3. Link your repository (`Krigjo25/lumina-sass`) and the workflow file (`.github/workflows/release.yml`).
132
+
133
+ > **Benefits:** This setup eliminates the need for manual `NPM_TOKEN` management and provides a "Provenance" badge on npm, allowing users to verify that the package was built directly from this repository.
134
+
135
+ ## License
136
+
137
+ MIT
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "lumina-sass",
3
+ "version": "1.6.0",
4
+ "description": "Lumina Sass design tokens and mixins",
5
+ "main": "src/_index.sass",
6
+ "sass": "src/_index.sass",
7
+ "exports": {
8
+ ".": {
9
+ "sass": "./src/_index.sass",
10
+ "default": "./src/_index.sass"
11
+ },
12
+ "./flexbox": {
13
+ "sass": "./src/flexbox/_index.sass",
14
+ "default": "./src/flexbox/_index.sass"
15
+ },
16
+ "./color": {
17
+ "sass": "./src/color/_index.sass",
18
+ "default": "./src/color/_index.sass"
19
+ },
20
+ "./mixins": {
21
+ "sass": "./src/mixins/_index.sass",
22
+ "default": "./src/mixins/_index.sass"
23
+ }
24
+ },
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "https://github.com/Krigjo25/lumina-sass.git"
28
+ },
29
+ "scripts": {
30
+ "test": "echo \"Error: no test specified\" && exit 1",
31
+ "build:demo": "sass demo/style.sass demo/style.css",
32
+ "build:demo:watch": "sass demo/style.sass demo/style.css --watch",
33
+ "serve": "http-server demo",
34
+ "start": "npm run build:demo && npm run serve",
35
+ "release": "standard-version"
36
+ },
37
+ "files": [
38
+ "src"
39
+ ],
40
+ "author": "",
41
+ "license": "MIT",
42
+ "devDependencies": {
43
+ "http-server": "^14.1.1",
44
+ "sass": "^1.85.1",
45
+ "standard-version": "^9.5.0"
46
+ }
47
+ }
@@ -0,0 +1,5 @@
1
+ @forward 'variables'
2
+ @forward 'mix'
3
+ @forward 'color'
4
+ @forward 'flexbox'
5
+ @forward 'utils/flexbox'
@@ -0,0 +1,2 @@
1
+ $warning: red
2
+ $disabled: rgb(160, 160, 160)
@@ -0,0 +1,7 @@
1
+ @forward 'misc'
2
+ @forward 'base'
3
+ @forward 'icons'
4
+ @forward 'brands'
5
+ @forward 'stacks'
6
+ @forward 'accents'
7
+ @forward 'palette/groovy-70s'
@@ -0,0 +1,3 @@
1
+ $accent-salmon: rgb(255, 119, 119)
2
+ $accent-slate-blue: rgb(123, 104, 238)
3
+ $accent-lavender: rgb(230, 230, 250)
@@ -0,0 +1,17 @@
1
+ // Color palette Light
2
+
3
+ $dark-grey: rgb(64, 64, 64)
4
+
5
+ $white: rgb(245, 245, 245)
6
+ $soft-white: rgb(244, 246, 249)
7
+ $off-white: rgb(252, 252, 252)
8
+
9
+ $light-blue: rgb(52, 152, 216)
10
+ $deep-midnight-blue: rgb(29, 46, 84)
11
+
12
+ $logo-red: rgb(179, 34, 20)
13
+
14
+ $sea-green: rgb(95, 158, 160)
15
+
16
+ $light-orange: rgb(231, 113, 125)
17
+ $dark-orange: rgb(204, 85, 102)
@@ -0,0 +1,4 @@
1
+ $brand-github-gray: rgba(105, 105, 105, 1)
2
+ $brand-github-gray-active: rgba(45, 45, 45, 1)
3
+ $brand-github-gray-hover: rgba(120, 120, 120, 1)
4
+ $brand-github-light-green: rgba(231, 243, 243, 1)
@@ -0,0 +1,29 @@
1
+ $github-gray: rgba(105, 105, 105, 1)
2
+ $github-gray-active: rgba(45, 45, 45, 1)
3
+ $github-gray-hover: rgba(120, 120, 120, 1)
4
+ $github-light-green: rgba(231, 243, 243, 1)
5
+
6
+ // Social media colors
7
+ $discord-blue: rgba(88, 101, 242, 1)
8
+ $discord-blue-hover: rgba(88, 101, 242, 0.8)
9
+ $discord-blue-active: rgba(88, 101, 242, 0.6)
10
+
11
+ $facebook-blue: rgba(59, 89, 152, 1)
12
+ $facebook-blue-hover: rgba(59, 89, 152, 0.8)
13
+ $facebook-blue-active: rgba(59, 89, 152, 0.6)
14
+
15
+ $instagram-purple: rgba(193, 53, 132, 1)
16
+ $instagram-purple-hover: rgba(193, 53, 132, 0.8)
17
+ $instagram-purple-active: rgba(193, 53, 132, 0.6)
18
+
19
+ $messenger-blue: rgba(0, 132, 255, 1)
20
+ $messenger-blue-hover: rgba(0, 132, 255, 0.8)
21
+ $messenger-blue-active: rgba(0, 132, 255, 0.6)
22
+
23
+ $youtube-red: rgba(255, 0, 0, 1)
24
+ $youtube-red-hover: rgba(120, 6, 6, 1)
25
+ $youtube-red-active: rgba(255, 0, 0, 0.6)
26
+
27
+ $linked-in-blue: rgba(0, 0, 128, 1)
28
+ $linked-in-blue-active: rgba(0, 0, 115, 1)
29
+ $linked-in-blue-hover: rgba(25, 25, 140, 1)
@@ -0,0 +1,7 @@
1
+ // Project specific colors
2
+ $brand-blue: rgb(52, 152, 216)
3
+ $brand-deep-midnight-blue: rgb(29, 46, 84)
4
+ $brand-logo-red: rgb(179, 34, 20)
5
+ $brand-sea-green: rgb(95, 158, 160)
6
+ $brand-light-orange: rgb(231, 113, 125)
7
+ $brand-dark-orange: rgb(204, 85, 102)
@@ -0,0 +1,24 @@
1
+ // Social media colors
2
+ $brand-discord-blue: rgba(88, 101, 242, 1)
3
+ $brand-discord-blue-hover: rgba(88, 101, 242, 0.8)
4
+ $brand-discord-blue-active: rgba(88, 101, 242, 0.6)
5
+
6
+ $brand-facebook-blue: rgba(59, 89, 152, 1)
7
+ $brand-facebook-blue-hover: rgba(59, 89, 152, 0.8)
8
+ $brand-facebook-blue-active: rgba(59, 89, 152, 0.6)
9
+
10
+ $brand-instagram-purple: rgba(193, 53, 132, 1)
11
+ $brand-instagram-purple-hover: rgba(193, 53, 132, 0.8)
12
+ $brand-instagram-purple-active: rgba(193, 53, 132, 0.6)
13
+
14
+ $brand-messenger-blue: rgba(0, 132, 255, 1)
15
+ $brand-messenger-blue-hover: rgba(0, 132, 255, 0.8)
16
+ $brand-messenger-blue-active: rgba(0, 132, 255, 0.6)
17
+
18
+ $brand-youtube-red: rgba(255, 0, 0, 1)
19
+ $brand-youtube-red-hover: rgba(120, 6, 6, 1)
20
+ $brand-youtube-red-active: rgba(255, 0, 0, 0.6)
21
+
22
+ $brand-linked-in-blue: rgba(0, 0, 128, 1)
23
+ $brand-linked-in-blue-active: rgba(0, 0, 115, 1)
24
+ $brand-linked-in-blue-hover: rgba(25, 25, 140, 1)
@@ -0,0 +1,6 @@
1
+ // Miscellaneous Colors
2
+ $pdf-red : rgb(217, 83, 79)
3
+ $email-red : rgb(255, 99, 71)
4
+ $code-blue : rgb(0, 123, 255)
5
+ $globe-green : rgb(40, 167, 69)
6
+ $files-yellow : rgb(255, 193, 7)
@@ -0,0 +1,10 @@
1
+ $linux-orange: rgb(233, 84, 32)
2
+ $windows-blue: rgb(0, 120, 212)
3
+ $macos-silver: rgb(245, 245, 247)
4
+
5
+ $misc-purple: rgb(155, 89, 182)
6
+ $rd-lime-green: rgb(160, 255, 0)
7
+ $fullstack-vibrant-orange: rgb(255, 140, 0)
8
+
9
+ $human-emerald-glow: rgb(0, 255, 159)
10
+
@@ -0,0 +1,11 @@
1
+ // Neutral palette
2
+ $neutral-white: rgb(245, 245, 245)
3
+ $neutral-soft-white: rgb(255, 248, 241)
4
+ $neutral-white-mute: rgb(242, 242, 242)
5
+ $neutral-off-white: rgb(252, 252, 252)
6
+
7
+ // Text palette
8
+ $text-light-1: rgb(60, 60, 60)
9
+ $text-light-2: rgba(60, 60, 60, 0.66)
10
+ $text-dark-grey: rgb(40, 40, 40)
11
+ $text-base-dark-grey: rgb(64, 64, 64)
@@ -0,0 +1,16 @@
1
+ // Groovy 70's palette
2
+ // Naming convention: $groovy-70s-[descriptive-color-name]
3
+
4
+ $groovy-70s-earth-brown: rgb(89, 61, 43)
5
+ $groovy-70s-avocado-green: rgb(181, 215, 81)
6
+ $groovy-70s-burnt-orange: rgb(229, 119, 30)
7
+ $groovy-70s-mustard-yellow: rgb(230, 193, 92)
8
+
9
+ $groovy-70s-cream: rgb(252, 245, 235)
10
+
11
+ $groovy-70s-off-white: rgb(245, 245, 245)
12
+ $groovy-70s-warm-white: rgb(255, 248, 241)
13
+ $groovy-70s-muted-white: rgb(242, 242, 242)
14
+
15
+ $groovy-70s-charcoal: rgb(60, 60, 60)
16
+ $groovy-70s-charcoal-muted: rgba(60, 60, 60, 0.66)
@@ -0,0 +1,39 @@
1
+ // Theme color | Compiled language
2
+ $c-silver: rgb(168, 185, 204)
3
+ $cplus-blue: rgb(0, 89, 156)
4
+ $fortran-purple: rgb(115, 79, 150)
5
+
6
+ $compiled-orange: rgba(238, 140, 43, 1)
7
+ $compiled-light-orange: rgba(238, 177, 138, 1)
8
+
9
+ // Theme colors | Interpreted language
10
+ $go-teal: rgb(0, 173, 216)
11
+ $microsoft-green: rgb(23, 134, 0)
12
+ $typescript-blue: rgb(81, 43, 212)
13
+ $microsoft-purple: rgb(81, 43, 212)
14
+ $cyan-blue-azure: rgb(55, 118, 171)
15
+ $javascript-yellow:rgb(247, 223, 30)
16
+ $interpreted-light-green: rgb(109, 222, 157)
17
+
18
+ // Theme colors | Database
19
+ $db-red: rgba(204, 41, 39, .8)
20
+ $db-light-red: rgba(255, 0, 0, .6)
21
+
22
+ // Theme colors | WorkFlow
23
+ $workflow-blue: rgba(110, 147, 171, 1)
24
+ $jupyter-peach: rgb(255, 204, 152)
25
+ $workflow-light-blue: rgba(0, 191, 255, 0.6)
26
+
27
+ // Theme colors | Scripting
28
+ $lua-blue: rgb(0, 0, 128)
29
+ $powershell-blue: rgb(1, 36, 86)
30
+ $shell-green: rgb(78, 254, 9)
31
+ $scripting-light-yellow: rgb(255, 227, 128)
32
+
33
+ // Theme Colors | Templating
34
+ $meson-red: rgb(179, 32, 36)
35
+ $jinja-red: rgb(179, 32, 36)
36
+ $roff-grey: rgb(110, 110, 110)
37
+ $smarty-orange: rgb(245, 185, 69)
38
+
39
+ $frontend-sky-blue: rgb(92, 201, 238)
@@ -0,0 +1,30 @@
1
+ @use '../mix/generators' as mix
2
+
3
+ .flex-column-align-items-center
4
+ align-items: center
5
+ @include mix.flexbox-generator('flex-column')
6
+
7
+ .flex-column-justify-center
8
+ justify-content: center
9
+ @include mix.flexbox-generator('flex-column')
10
+
11
+ .flex-column-justify-space-evenly
12
+ justify-content: space-evenly
13
+ @include mix.flexbox-generator('flex-column')
14
+
15
+ .flex-wrap-column-align-content-center
16
+ align-content: center
17
+ @include mix.flexbox-generator('flex-wrap-column')
18
+
19
+ .flex-wrap-column-align-center-justify-space-evenly
20
+ align-content: center
21
+ justify-content: space-evenly
22
+ @include mix.flexbox-generator('flex-wrap-column')
23
+
24
+ .flex-column-align-items-end
25
+ align-items: flex-end
26
+ @include mix.flexbox-generator('flex-column')
27
+
28
+ .flex-wrap-column-align-content-center
29
+ align-content: center
30
+ @include mix.flexbox-generator('flex-wrap-column')
@@ -0,0 +1,21 @@
1
+ @use '../mix/generators' as mix
2
+
3
+ .flex-row-reversed-justify-center-align-content-center
4
+ align-content: center
5
+ justify-content: center
6
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
7
+
8
+ .flex-row-reversed-justify-space-around-align-content-center
9
+ align-content: center
10
+ justify-content: space-around
11
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
12
+
13
+ .flex-row-reversed-justify-space-between-align-content-center
14
+ align-content: center
15
+ justify-content: space-between
16
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
17
+
18
+ .flex-row-reversed-justify-space-evenly-align-content-centerW
19
+ align-content: center
20
+ justify-content: space-evenly
21
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
@@ -0,0 +1,37 @@
1
+ @use '../mix/generators' as mix
2
+ .flex-row
3
+ @include mix.flexbox-generator('flex-row')
4
+
5
+ .flex-row-align-items-center
6
+ align-items: center
7
+ @include mix.flexbox-generator('flex-row')
8
+
9
+ .inline-flex-row
10
+ @include mix.flexbox-generator('inline-flex-row')
11
+
12
+ .inline-flex-center
13
+ align-items: center
14
+ justify-content: center
15
+ @include mix.flexbox-generator('inline-flex')
16
+
17
+ .flex-row-justify-space-between
18
+ justify-content: space-between
19
+ @include mix.flexbox-generator('flex-row')
20
+
21
+ .flex-row-align-items-flex-end-justify-center
22
+ align-items: flex-end
23
+ justify-content: center
24
+ @include mix.flexbox-generator('flex-row')
25
+
26
+ .flex-row-align-items-center-justify-content-space-between
27
+ justify-content: space-between
28
+ @include mix.flexbox-generator('flex-row')
29
+
30
+ .flex-row-justify-center
31
+ justify-content: center
32
+ @include mix.flexbox-generator('flex-row')
33
+
34
+ .flex-row-align-items-center
35
+ align-items: center
36
+ @include mix.flexbox-generator('flex-row')
37
+
@@ -0,0 +1,35 @@
1
+ @use '../mix/generators' as mix
2
+
3
+ .flex-wrap-row-justify-center
4
+ justify-content: center
5
+ @include mix.flexbox-generator('flex-wrap-row')
6
+
7
+ .flex-wrap-row-justify-flex-end
8
+ justify-content: flex-end
9
+ @include mix.flexbox-generator('flex-wrap-row')
10
+
11
+ .flex-wrap-row-justify-flex-start
12
+ justify-content: flex-start
13
+ @include mix.flexbox-generator('flex-wrap-row')
14
+
15
+ .flex-wrap-row-justify-space-evenly
16
+ justify-content: space-evenly
17
+ @include mix.flexbox-generator('flex-wrap-row')
18
+
19
+ .flex-wrap-row-justify-space-between
20
+ justify-content: space-between
21
+ @include mix.flexbox-generator('flex-wrap-row')
22
+
23
+ .flex-wrap-row-justify-space-around
24
+ justify-content: space-around
25
+ @include mix.flexbox-generator('flex-wrap-row')
26
+
27
+ // Align items
28
+
29
+ .flex-wrap-row-align-items-end
30
+ align-items: flex-end
31
+ @include mix.flexbox-generator('flex-wrap-row')
32
+
33
+ .flex-wrap-row-align-items-center
34
+ align-items: center
35
+ @include mix.flexbox-generator('flex-wrap-row')
@@ -0,0 +1,40 @@
1
+ @use '../mix/generators' as mix
2
+
3
+ @forward '../flexbox/flexbox-row'
4
+ @forward '../flexbox/flexbox-column'
5
+ @forward '../flexbox/flexbox-wrap-row'
6
+ @forward '../flexbox/flexbox-reversed-row'
7
+ @forward '../flexbox/row-align-justify-mix/flexbox-wrap-row-align-justify'
8
+
9
+ .flex
10
+ @include mix.flexbox-generator('flex')
11
+
12
+ .flex-center
13
+ @include mix.flexbox-generator('flex-center')
14
+
15
+ .flex-row
16
+ @include mix.flexbox-generator('flex-row')
17
+
18
+ .flex-column
19
+ @include mix.flexbox-generator('flex-column')
20
+
21
+ .flex-wrap-row
22
+ @include mix.flexbox-generator('flex-wrap-row')
23
+
24
+ .flex-wrap-column
25
+ @include mix.flexbox-generator('flex-wrap-column')
26
+
27
+ .flex-wrap-reversed-row
28
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
29
+
30
+ .flex-wrap-reversed-column
31
+ @include mix.flexbox-generator('flex-wrap-reversed-column')
32
+
33
+ .inline-flex
34
+ @include mix.flexbox-generator('inline-flex')
35
+
36
+ .inline-flex-row
37
+ @include mix.flexbox-generator('inline-flex-row')
38
+
39
+ .inline-flex-column
40
+ @include mix.flexbox-generator('inline-flex-column')
@@ -0,0 +1,12 @@
1
+ // Align-content and Justify-content gen
2
+ @use '../../mix/generators' as gen
3
+
4
+ .flex-column-justify-space-evenly-items-center
5
+ align-items: center
6
+ justify-content: space-evenly
7
+ @include gen.flexbox-generator('flex-column')
8
+
9
+ .flex-column-align-items-center-justify-center
10
+ align-items: center
11
+ justify-content: center
12
+ @include gen.flexbox-generator('flex-column')
@@ -0,0 +1,36 @@
1
+ @use '../../mix/generators' as mix
2
+
3
+ .flex-wrap-row-align-content-start-justify-space-evenly
4
+ align-content: flex-start
5
+ justify-content: space-evenly
6
+ @include mix.flexbox-generator('flex-wrap-row')
7
+
8
+ .flex-wrap-row-align-items-center-justify-center
9
+ align-items: center
10
+ justify-content: center
11
+ @include mix.flexbox-generator('flex-wrap-row')
12
+
13
+ .flex-wrap-row-align-items-center-justify-space-evenly
14
+ align-items: center
15
+ justify-content: space-evenly
16
+ @include mix.flexbox-generator('flex-wrap-row')
17
+
18
+ .flex-wrap-row-align-items-center-justify-space-around
19
+ align-items: center
20
+ justify-content: space-around
21
+ @include mix.flexbox-generator('flex-wrap-row')
22
+
23
+ .flex-wrap-row-align-items-center-justify-space-between
24
+ align-items: center
25
+ justify-content: space-between
26
+ @include mix.flexbox-generator('flex-wrap-row')
27
+
28
+ .flex-wrap-row-align-items-end-justify-space-between
29
+ align-items: flex-end
30
+ justify-content: space-between
31
+ @include mix.flexbox-generator('flex-wrap-row')
32
+
33
+ .flex-wrap-row-align-items-end-justify-space-evenly
34
+ align-items: flex-end
35
+ justify-content: space-evenly
36
+ @include mix.flexbox-generator('flex-wrap-row')
@@ -0,0 +1,31 @@
1
+ @use 'sass:map'
2
+
3
+
4
+ $breakpoints:(
5
+ 'xs': 30rem, 'sm': 48rem, 'md': 64rem,
6
+ 'lg': 80rem, 'xl': 90rem, 'S': 12.5rem,
7
+ 'M': 31.25rem, 'L': 50rem, 'XL': 64rem,
8
+ '2XL': 80rem, '3XL': 81.25rem,
9
+ )
10
+
11
+ $motorola: ('mobility-milestone': (block-size: 35.625rem, inline-size: map.get(map.get($htc, 'desire'), 'inline-size')))
12
+ $sony-ericson: ('u': (block-size: 53.375rem, inline-size: map.get(map.get($motorola, 'mobility-milestone'),'inline-size')))
13
+ $misc-breakpoints: ('tablet': (block-size: 50rem, inline-size: 37.5rem), 'wideScreen': (block-size: 48rem, inline-size: 79.625rem))
14
+ $amazon: ('kindle-fire': (inline-size: 37.5rem, block-size: map.get($breakpoints, 'XL')), 'kindle-fire-hd': (inline-size: 50rem, block-size: map.get($breakpoints, '2XL')))
15
+ $microsoft: ('surface-pro': (block-size: 85.5rem, inline-size: 57rem), 'surface-duoc': (block-size: 45rem, inline-size: map.get(map.get($htc, 'sensation'), 'inline-size')))
16
+ $display: ('hd-720p': (block-size: 45rem, inline-size: 80rem), 'hd-1080i': (block-size: 67.5rem, inline-size: 90rem), 'hd-1080p': (block-size: 52.875rem, inline-size: 114.938rem))
17
+ $asus: ('zbc': (inline-size: 53.3125rem, block-size: map.get(map.get($amazon, 'kindle-fire-hd'), 'block-size')), 'zbf': (inline-size: 106.625rem, block-size: map.get(map.get($amazon, 'kindle-fire-hd'), 'block-size')))
18
+ $black-berry: ('bt': (inline-size: map.get(map.get($apple, 'iphone'),'block-size'), block-size: 40rem), 'curve': (inline-size: 22.5rem, block-size: map.get(map.get($apple, 'iphone'),'block-size')), 'original': (block-size: 50rem, inline-size: map.get(map.get($apple, 'iphone'),'block-size')))
19
+ $htc: ('desire': (block-size: 33.3125rem, inline-size: map.get(map.get($google, 'nest-hub-max'), 'inline-size')), 'sensation': (block-size: 60rem, inline-size: 33.75rem), 'one': (block-size: map.get(map.get($black-berry, 'original'), 'block-size'), inline-size: map.get(map.get($google, 'nest-hub-max'), 'inline-size')))
20
+ $google: ('pixel': (block-size: 57.1875rem, inline-size: map.get(map.get($black-berry, 'original'), 'inline-size')), 'nest-hub': (block-size: 37.5rem, inline-size: map.get($breakpoints, 'XL')), 'nest-hub-max': (block-size: map.get($breakpoints, 'XL'), inline-size: map.get(map.get($black-berry, 'original'), 'inline-size')))
21
+ $sharp: ('is03': (block-size: map.get(map.get($htc, 'one'), 'block-size'), inline-size: map.get(map.get($samsung, 'gs8'), 'inline-size')), '941sh': (block-size: map.get($breakpoints, 'XL'), inline-size: map.get(map.get($sony-ericson, 'u'), 'inline-size')), 'sx862': (block-size: map.get(map.get($sony-ericson, 'u'), 'block-size'), inline-size: map.get(map.get($sony-ericson, 'u'), 'inline-size')))
22
+ $samsung: ('gcz5': (block-size: 46.25rem, inline-size: 21.5rem), 'gs8': (block-size: 46.25rem, inline-size: map.get(map.get($black-berry, 'curve'), 'inline-size')), 'gfz5': (block-size: 51.8125rem, inline-size: map.get(map.get($black-berry, 'curve'), 'inline-size')), 'ga5171': (block-size: 57.125rem, inline-size: map.get(map.get($apple, 'iphone-plus'), 'inline-size')), 'tab': (block-size: 42.6875rem, inline-size: 25rem), 'gs20u': (block-size: map.get(map.get($google, 'pixel'), 'block-size'), inline-size: map.get(map.get($apple, 'iphone-plus'), 'inline-size')))
23
+ $apple: ('ipad': (inline-size: 48rem, block-size: map.get($breakpoints, 'XL')), 'ipad-air': (block-size: 73.75rem, inline-size: 51.25rem), 'ipad-pro': (block-size: 85.375rem, inline-size: 64rem), 'tv-cd': (block-size: 160rem, inline-size: 100rem), 'iphone': (block-size: 30rem, inline-size: 20rem), 'iphone-7': (block-size: 41.6875rem, inline-size: 23.4375rem), 'iphone-xr': (block-size: 56rem, inline-size: 25.875rem), 'iphone-pro': (block-size: 52.75rem, inline-size: 24.375rem), 'iphone-pro-height': 52.75rem, 'iphone-plus': (block-size: 46rem, inline-size: 25.75rem), 'iphone-pro-max': (block-size: 57.875rem, inline-size: 26.875rem))
24
+
25
+
26
+ $devices:(
27
+ 'htc': $htc, 'sharp': $sharp, 'apple': $apple,
28
+ 'google': $google, 'display': $display, 'samsung': $samsung,
29
+ 'motorola': $motorola, 'misc': $misc-breakpoints,
30
+ 'black-berry': $black-berry, 'sony-ericson': $sony-ericson,
31
+ )
@@ -0,0 +1,20 @@
1
+ $flex: ('display': flex)
2
+ $inline-flex: ('display': inline-flex)
3
+ $flex-row: ('display': flex, 'flex-wrap': nowrap, 'flex-direction': row)
4
+ $flex-wrap-row: ('display': flex, 'flex-wrap': wrap, 'flex-direction': row)
5
+ $flex-column: ('display': flex, 'flex-wrap': nowrap, 'flex-direction': column)
6
+ $flex-wrap-column: ('display': flex, 'flex-wrap': wrap, 'flex-direction': column)
7
+ $flex-center: ('display': flex, 'justify-content': center, 'align-items': center)
8
+ $inline-flex-row: ('flex-wrap': nowrap, 'flex-direction': row, 'display': inline-flex)
9
+ $inline-flex-column: ('flex-wrap': nowrap, 'display': inline-flex, 'flex-direction': column)
10
+ $flex-wrap-reversed-row: ('display': flex, 'flex-wrap': wrap, 'flex-direction': row-reverse)
11
+ $flex-wrap-reversed-column: ('display': flex, 'flex-wrap': wrap, 'flex-direction': column-reverse)
12
+
13
+
14
+ $flexbox:(
15
+ 'flex': $flex, 'flex-row': $flex-row, 'flex-center': $flex-center,
16
+ 'flex-column': $flex-column, 'inline-flex': $inline-flex, 'flex-wrap-row': $flex-wrap-row,
17
+ 'inline-flex-row': $inline-flex-row, 'flex-wrap-column': $flex-wrap-column,
18
+ 'inline-flex-column': $inline-flex-column, 'flex-wrap-reversed-row': $flex-wrap-reversed-row,
19
+ 'flex-wrap-reversed-column': $flex-wrap-reversed-column,
20
+ )
@@ -0,0 +1,21 @@
1
+ // Combined and structured icons map
2
+ @use '../color/_index' as color
3
+
4
+ $academic: ('school': (icon: "\F62F"), 'diploma': (icon: "\F153"))
5
+ $boolean-controls: ('radio': (icon: '\F1D0'), 'checkbox': (icon: '\F272'))
6
+ $utility-inputs: ('range': (icon: '\F0E7'), 'color': (icon: '\F4B0'), 'hidden': (icon: '\F0E7'))
7
+ $documents: ('pdf': (icon: "\F63F"), 'default': (icon: ""), 'word': (icon: "\F641"), 'excel': (icon: "\F642"))
8
+ $buttons: ('file': (icon: '\F0E7'), 'submit': (icon: '\F0E7'), 'reset': (icon: '\F0E7'), 'button': (icon: '\F0E7'))
9
+ $datetime-pickers: ('date': (icon: '\F073'), 'time': (icon: '\F017'), 'week': (icon: '\F4C0'), 'month': (icon: '\F4C1'), 'datetime-local': (icon: '\F017'))
10
+ $input-controls: ('tel': (icon: '\F5BB'), 'url': (icon: '\F882'), 'text': (icon: '\F435'), 'search': (icon: '\F52A'), 'number': (icon: ' \F67F'), 'password': (icon: '\F44E'))
11
+ $misc-icons: ('dir': (icon: "\F3D7"), 'globe': (icon: "\F882"), 'map-pin': (icon: "\F64B"), 'calendar': (icon: "\F1E7"), 'internship': (icon: "\F0E7"), 'collaborator': (icon: "\F4D0"))
12
+ $misc: ('pdf': (icon: "\F63D"), 'dot': (icon: "\F309"), 'email': (icon: "\F84B"), 'default': (icon: "\F82E"), 'calendar': (icon: "\F1F6"), 'telephone': (icon: "\F5C1"), 'external-link': (icon: "\F35D"))
13
+ $communication: ('mail': (icon: "\F32F"), 'github': (icon: "\F3ED"), 'ytube': (icon: "\F62B"), 'facebook': (icon: "\F344"), 'linkedin': (icon: "\F472"), 'instagram': (icon: "\F437"), 'twitter': (icon: "\F519"))
14
+
15
+
16
+ $icons: (
17
+ 'misc': $misc, 'buttons': $buttons, 'utility-inputs': $utility-inputs,
18
+ 'input-controls': $input-controls, 'boolean-controls': $boolean-controls,
19
+ 'datetime-pickers': $datetime-pickers, 'document': $documents,
20
+ 'communication': $communication, 'academic': $academic,
21
+ 'misc-icons': $misc-icons)
@@ -0,0 +1,27 @@
1
+ @use 'sass:map' as map
2
+ @use './mixins' as mix
3
+
4
+ @use '../map/icons' as icon-map
5
+ @use '../map/flexbox' as flexbox-mapping
6
+
7
+ @mixin icon-generator($color: null, $font-family: 'bootstrap-icons')
8
+ @if icon-map.$icons
9
+ @each $category, $maps in icon-map.$icons
10
+ @each $icon, $props in $maps
11
+ .#{$icon}
12
+ font-family: $font-family
13
+ &:before
14
+ content: map.get($props, icon)
15
+ @if $color
16
+ color: $color
17
+ @else
18
+ @error 'Icon mapping not found.'
19
+
20
+ @mixin flexbox-generator($name)
21
+ $props: map.get(flexbox-mapping.$flexbox, $name)
22
+
23
+ @if $props
24
+ @each $property, $value in $props
25
+ #{$property}: $value
26
+ @else
27
+ @error '"#{$name}" not found in flexbox mapping.'
@@ -0,0 +1,3 @@
1
+ @forward 'media'
2
+ @forward 'typography'
3
+ @forward 'generators'
@@ -0,0 +1,24 @@
1
+ @use '../map/devices-breakpoints' as bp
2
+ @use 'sass:map'
3
+
4
+ @mixin media($breakpoint)
5
+ $value: if(map.has-key(bp.$breakpoints, $breakpoint), map.get(bp.$breakpoints, $breakpoint), $breakpoint)
6
+
7
+ @media (max-width: $value)
8
+ @content
9
+
10
+ @mixin figure-and-image($object-fit: cover, $size: null, $style: null)
11
+ figure
12
+ picture, img
13
+ inline-size: 100%
14
+ object-fit: $object-fit
15
+
16
+ picture
17
+ img
18
+ inline-size: 100%
19
+ object-fit: $object-fit
20
+ figcaption
21
+ @if $size != null & $style != null
22
+ @include mix.font($size, $style)
23
+
24
+
@@ -0,0 +1,33 @@
1
+ @use 'sass:list'
2
+
3
+ @mixin text-wrap-safe()
4
+ p, h1, h2, h3, h4, h5, h6, figcaption, a, li
5
+ hyphens: auto
6
+ min-inline-size: 0
7
+ word-wrap: anywhere
8
+ white-space: pre-wrap
9
+ overflow-wrap: anywhere
10
+
11
+ @mixin font-style($font, $family: null)
12
+ $sans-serif: ('Roboto', 'Work Sans', 'Nunito')
13
+
14
+ @if list.index($sans-serif, $font)
15
+ $family: sans-serif
16
+
17
+ font-family: $font, $family
18
+
19
+ @mixin font($size: null, $weight: null, $font: null, $family: null, $style: null)
20
+ @if $font != null
21
+ @include font-style($font, $family)
22
+ @else if $family != null
23
+ font-family: $family
24
+
25
+ @if $size != null
26
+ font-size: $size
27
+
28
+ @if $weight != null
29
+ font-weight: $weight
30
+
31
+ @if $style != null
32
+ font-style: $style
33
+
@@ -0,0 +1,32 @@
1
+ @use '../mix/generators' as mix
2
+
3
+ @forward '../flexbox/flexbox-row'
4
+ @forward '../flexbox/flexbox-column'
5
+ @forward '../flexbox/flexbox-wrap-row'
6
+ @forward '../flexbox/flexbox-reversed-row'
7
+ @forward '../flexbox/row-align-justify-mix/flexbox-wrap-row-align-justify'
8
+
9
+ .flex-inline
10
+ @include mix.flexbox-generator('inline-flex')
11
+
12
+ .flex
13
+ @include mix.flexbox-generator('flex')
14
+
15
+ .flex-row
16
+ @include mix.flexbox-generator('flex-row')
17
+
18
+ .flex-wrap-row
19
+ @include mix.flexbox-generator('flex-wrap-row')
20
+
21
+ .flex-wrap-reversed-row
22
+ @include mix.flexbox-generator('flex-wrap-reversed-row')
23
+
24
+ .flex-column
25
+ @include mix.flexbox-generator('flex-column')
26
+
27
+ .flex-wrap-column
28
+ @include mix.flexbox-generator('flex-wrap-column')
29
+
30
+ .flex-wrap-reversed-column
31
+ @include mix.flexbox-generator('flex-wrap-reversed-column')
32
+