@razerspine/pug-ui-kit 1.0.1 → 1.2.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/CHANGELOG.md +32 -0
- package/README.md +113 -20
- package/fonts/Roboto-Bold.woff +0 -0
- package/fonts/Roboto-Bold.woff2 +0 -0
- package/fonts/Roboto-Light.woff +0 -0
- package/fonts/Roboto-Light.woff2 +0 -0
- package/fonts/Roboto-Medium.woff +0 -0
- package/fonts/Roboto-Medium.woff2 +0 -0
- package/fonts/Roboto-Regular.woff +0 -0
- package/fonts/Roboto-Regular.woff2 +0 -0
- package/fonts/Roboto-Thin.woff +0 -0
- package/fonts/Roboto-Thin.woff2 +0 -0
- package/index.js +10 -1
- package/less/base/_fonts.less +46 -0
- package/less/base/_index.less +2 -0
- package/less/base/_reset.less +155 -0
- package/less/components/_aside.less +49 -0
- package/less/components/_buttons.less +156 -0
- package/less/components/_footer.less +25 -0
- package/less/components/_form-control.less +27 -0
- package/less/components/_form-textarea.less +7 -0
- package/less/components/_forms.less +76 -0
- package/less/components/_header.less +57 -0
- package/less/components/_icons.less +42 -0
- package/less/components/_index.less +14 -0
- package/less/components/_input-base.less +48 -0
- package/less/components/_input-checkbox.less +10 -0
- package/less/components/_input-radio.less +10 -0
- package/less/components/_main.less +32 -0
- package/less/components/_single-select.less +29 -0
- package/less/components/_table.less +45 -0
- package/less/layout/_grid.less +104 -0
- package/less/layout/_index.less +2 -0
- package/less/layout/_layout.less +55 -0
- package/less/settings/_breakpoints.less +5 -0
- package/less/settings/_index.less +3 -0
- package/less/settings/_typography.less +2 -0
- package/less/settings/_variables.less +16 -0
- package/less/themes/_dark.less +25 -0
- package/less/themes/_index.less +2 -0
- package/less/themes/_light.less +49 -0
- package/less/ui-kit.less +6 -0
- package/less/utils/_helpers.less +32 -0
- package/less/utils/_index.less +3 -0
- package/less/utils/_mixins.less +36 -0
- package/less/utils/_utilities.less +400 -0
- package/package.json +6 -1
- package/scss/base/_fonts.scss +46 -0
- package/scss/base/_index.scss +2 -0
- package/scss/base/_reset.scss +155 -0
- package/scss/components/_aside.scss +47 -0
- package/scss/components/_buttons.scss +158 -0
- package/scss/components/_footer.scss +25 -0
- package/scss/components/_form-control.scss +27 -0
- package/scss/components/_form-textarea.scss +7 -0
- package/scss/components/_forms.scss +75 -0
- package/scss/components/_header.scss +57 -0
- package/scss/components/_icons.scss +42 -0
- package/scss/components/_index.scss +14 -0
- package/scss/components/_input-base.scss +48 -0
- package/scss/components/_input-checkbox.scss +10 -0
- package/scss/components/_input-radio.scss +10 -0
- package/scss/components/_main.scss +24 -0
- package/scss/components/_single-select.scss +29 -0
- package/scss/components/_table.scss +45 -0
- package/scss/layout/_grid.scss +64 -0
- package/scss/layout/_index.scss +2 -0
- package/scss/layout/_layout.scss +49 -0
- package/scss/settings/_breakpoints.scss +7 -0
- package/scss/settings/_index.scss +3 -0
- package/scss/settings/_typography.scss +2 -0
- package/scss/settings/_variables.scss +16 -0
- package/scss/themes/_dark.scss +25 -0
- package/scss/themes/_index.scss +2 -0
- package/scss/themes/_light.scss +49 -0
- package/scss/ui-kit.scss +6 -0
- package/scss/utils/_helpers.scss +18 -0
- package/scss/utils/_index.scss +3 -0
- package/scss/utils/_mixins.scss +16 -0
- package/scss/utils/_utilities.scss +305 -0
package/CHANGELOG.md
CHANGED
|
@@ -24,3 +24,35 @@ You should now update to:
|
|
|
24
24
|
]
|
|
25
25
|
})
|
|
26
26
|
```
|
|
27
|
+
|
|
28
|
+
## [1.1.0] - 2026-02-03
|
|
29
|
+
### Added
|
|
30
|
+
- **Styles**: Full SCSS and LESS support for all UI components.
|
|
31
|
+
- **Architecture**: Added global settings, grid system, and themes (light/dark).
|
|
32
|
+
|
|
33
|
+
## [1.2.0] - 2026-02-03
|
|
34
|
+
### Added
|
|
35
|
+
- **Fonts**: Added local Roboto font family (Thin, Light, Regular, Medium, Bold, Black) directly into the package.
|
|
36
|
+
- **Variables**: Introduced $font-path (SCSS) and @font-path (LESS) variables to manage font asset resolution dynamically.
|
|
37
|
+
- **Styles**: Integrated @font-face declarations in base/_fonts.scss and base/_fonts.less
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- **Assets**: Resolved "Module not found" errors in Webpack by using tilde-prefixed paths (~) for internal asset resolution.
|
|
41
|
+
|
|
42
|
+
### Migration Guide (Optional)
|
|
43
|
+
By default, the kit now looks for fonts inside the package.
|
|
44
|
+
If you wish to use a custom font path (e.g., a CDN or a different local folder), override the path variable before importing the kit:
|
|
45
|
+
|
|
46
|
+
#### SCSS:
|
|
47
|
+
|
|
48
|
+
```scss
|
|
49
|
+
@use "@razerspine/pug-ui-kit/scss/settings" with (
|
|
50
|
+
$font-path: "/my-custom-path/fonts"
|
|
51
|
+
);
|
|
52
|
+
```
|
|
53
|
+
#### LESS:
|
|
54
|
+
|
|
55
|
+
```less
|
|
56
|
+
@font-path: "/my-custom-path/fonts";
|
|
57
|
+
@import "@razerspine/pug-ui-kit/less/ui-kit.less";
|
|
58
|
+
```
|
package/README.md
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# @razerspine/pug-ui-kit
|
|
2
2
|
|
|
3
|
-
A
|
|
4
|
-
|
|
5
|
-
This package centralizes UI components, ensuring consistency across all templates generated by the CLI.
|
|
3
|
+
A professional, full-featured UI Kit for Pug (Jade) templates, including flexible mixins and complete styling support (SCSS/LESS).
|
|
4
|
+
Designed to work seamlessly with the [Webpack Starter Monorepo](https://github.com/Razerspine/webpack-starter-monorepo)
|
|
6
5
|
|
|
7
6
|
## 📦 Installation
|
|
8
7
|
|
|
@@ -14,44 +13,138 @@ npm install @razerspine/pug-ui-kit
|
|
|
14
13
|
|
|
15
14
|
## 🛠 Webpack Configuration
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
### 1. Webpack (Pug Mixins)
|
|
17
|
+
|
|
18
|
+
To avoid complex relative paths, use the includePaths provided by the package:
|
|
18
19
|
|
|
19
20
|
```js
|
|
20
|
-
const
|
|
21
|
+
const uiKit = require('@razerspine/pug-ui-kit');
|
|
21
22
|
|
|
22
23
|
module.exports = {
|
|
23
24
|
// ...
|
|
24
25
|
resolve: {
|
|
25
26
|
alias: {
|
|
26
|
-
//
|
|
27
|
-
'pug-ui-kit':
|
|
27
|
+
// Points to the directory containing all .pug mixins
|
|
28
|
+
'pug-ui-kit': uiKit.paths.mixins,
|
|
28
29
|
},
|
|
29
30
|
},
|
|
30
31
|
};
|
|
31
32
|
```
|
|
32
|
-
## 🚀 Usage
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
### 2. Styles (SCSS/LESS)
|
|
35
|
+
The package provides full styling for all components.
|
|
36
|
+
If you only need specific parts (e.g., just variables and the table), you can import them individually.
|
|
37
|
+
|
|
38
|
+
Note: Always import settings first, as other components depend on them.
|
|
39
|
+
|
|
40
|
+
#### For SCSS:
|
|
35
41
|
|
|
36
|
-
|
|
42
|
+
```scss
|
|
43
|
+
// In your main.scss
|
|
44
|
+
@use "@razerspine/pug-ui-kit/scss/ui-kit" as *;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### For LESS:
|
|
37
48
|
|
|
49
|
+
```less
|
|
50
|
+
// In your main.less
|
|
51
|
+
@import "@razerspine/pug-ui-kit/less/ui-kit";
|
|
38
52
|
```
|
|
53
|
+
|
|
54
|
+
## 🚀 Usage
|
|
55
|
+
|
|
56
|
+
#### Button
|
|
57
|
+
|
|
58
|
+
```pug
|
|
39
59
|
include ~pug-ui-kit/btn.pug
|
|
40
60
|
|
|
41
|
-
+btn('Save', 'primary', 'small', {type: '
|
|
61
|
+
+btn('Save', 'primary', 'small', { type: 'submit' })
|
|
42
62
|
```
|
|
43
63
|
|
|
44
|
-
|
|
64
|
+
#### Data Table (New in v1.1.0)
|
|
65
|
+
|
|
66
|
+
```pug
|
|
67
|
+
include ~pug-ui-kit/data-table.pug
|
|
68
|
+
|
|
69
|
+
- const data = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}];
|
|
70
|
+
|
|
71
|
+
+dataTable(users, ['id', 'name'], {
|
|
72
|
+
showIndex: true,
|
|
73
|
+
labels: { name: 'Full Name' },
|
|
74
|
+
actions: [
|
|
75
|
+
{
|
|
76
|
+
label: 'Edit',
|
|
77
|
+
class: 'btn-edit',
|
|
78
|
+
url: (item) => `/users/edit/${item.id}`
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
})
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Form Input
|
|
85
|
+
|
|
86
|
+
```pug
|
|
87
|
+
include ~pug-ui-kit/form-input.pug
|
|
88
|
+
|
|
89
|
+
+formInput('text', 'name', 'Name', 'Enter your name', 'name')
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
#### Form Textarea
|
|
93
|
+
|
|
94
|
+
```pug
|
|
95
|
+
include ~pug-ui-kit/form-textarea.pug
|
|
96
|
+
|
|
97
|
+
+formTextarea('message', 'Message', 'Type your message...', 'message')
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### Input Checkbox
|
|
101
|
+
|
|
102
|
+
```pug
|
|
103
|
+
include ~pug-ui-kit/input-checkbox.pug
|
|
104
|
+
|
|
105
|
+
+inputCheckbox('agree', 'I agree to all terms')
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### Input Radio
|
|
109
|
+
|
|
110
|
+
```pug
|
|
111
|
+
include ~pug-ui-kit/input-radio.pug
|
|
112
|
+
|
|
113
|
+
.form-group
|
|
114
|
+
.input-group
|
|
115
|
+
span.form-label.w-100 Communication method
|
|
116
|
+
+inputRadio('contact-email', 'Email', 'contact', 'email')
|
|
117
|
+
+inputRadio('contact-phone', 'Phone', 'contact', 'phone')
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
#### Single Select
|
|
121
|
+
|
|
122
|
+
```pug
|
|
123
|
+
include ~pug-ui-kit/single-select.pug
|
|
124
|
+
|
|
125
|
+
+singleSelect('topic', 'Topic', [
|
|
126
|
+
{value:'support', text:'Support'},
|
|
127
|
+
{value:'feedback', text:'Feedback'},
|
|
128
|
+
{value:'other', text:'Other'}
|
|
129
|
+
])
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 📂 Package Structure
|
|
133
|
+
|
|
134
|
+
* mixins/ - reusable Pug components.
|
|
135
|
+
* scss/ - complete SCSS kit (Settings, Components, Themes, Layout).
|
|
136
|
+
* less/ - complete LESS version for alternative workflows.
|
|
137
|
+
* index.js - path resolution helper.
|
|
45
138
|
|
|
46
|
-
|
|
139
|
+
## 🧱 Components Included
|
|
47
140
|
|
|
48
|
-
* btn.pug
|
|
49
|
-
* data-table.pug
|
|
50
|
-
* form-input.pug
|
|
51
|
-
* form-textarea.pug
|
|
52
|
-
* input-checkbox.pug
|
|
53
|
-
* input-radio.pug
|
|
54
|
-
* single-select.pug
|
|
141
|
+
* btn.pug
|
|
142
|
+
* data-table.pug
|
|
143
|
+
* form-input.pug
|
|
144
|
+
* form-textarea.pug
|
|
145
|
+
* input-checkbox.pug
|
|
146
|
+
* input-radio.pug
|
|
147
|
+
* single-select.pug
|
|
55
148
|
|
|
56
149
|
## 📄 License
|
|
57
150
|
This project is licensed under the ISC License.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/index.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
|
|
3
|
-
module.exports =
|
|
3
|
+
module.exports = {
|
|
4
|
+
paths: {
|
|
5
|
+
fonts: path.join(__dirname, 'fonts'),
|
|
6
|
+
scss: path.join(__dirname, 'scss'),
|
|
7
|
+
less: path.join(__dirname, 'less'),
|
|
8
|
+
mixins: path.join(__dirname, 'mixins')
|
|
9
|
+
},
|
|
10
|
+
// helper
|
|
11
|
+
getStylePath: (type = 'scss') => path.join(__dirname, type, `ui-kit.${type}`)
|
|
12
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@import '../settings/_variables';
|
|
2
|
+
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: 'Roboto';
|
|
5
|
+
src: url('@{font-path}/Roboto-Thin.woff2') format('woff2'),
|
|
6
|
+
url('@{font-path}/Roboto-Thin.woff') format('woff');
|
|
7
|
+
font-weight: 100;
|
|
8
|
+
font-style: normal;
|
|
9
|
+
font-display: swap;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: 'Roboto';
|
|
14
|
+
src: url('@{font-path}/Roboto-Light.woff2') format('woff2'),
|
|
15
|
+
url('@{font-path}/Roboto-Light.woff') format('woff');
|
|
16
|
+
font-weight: 300;
|
|
17
|
+
font-style: normal;
|
|
18
|
+
font-display: swap;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: 'Roboto';
|
|
23
|
+
src: url('@{font-path}/Roboto-Regular.woff2') format('woff2'),
|
|
24
|
+
url('@{font-path}/Roboto-Regular.woff') format('woff');
|
|
25
|
+
font-weight: 400;
|
|
26
|
+
font-style: normal;
|
|
27
|
+
font-display: swap;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@font-face {
|
|
31
|
+
font-family: 'Roboto';
|
|
32
|
+
src: url('@{font-path}/Roboto-Medium.woff2') format('woff2'),
|
|
33
|
+
url('@{font-path}/Roboto-Medium.woff') format('woff');
|
|
34
|
+
font-weight: 500;
|
|
35
|
+
font-style: normal;
|
|
36
|
+
font-display: swap;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@font-face {
|
|
40
|
+
font-family: 'Roboto';
|
|
41
|
+
src: url('@{font-path}/Roboto-Bold.woff2') format('woff2'),
|
|
42
|
+
url("@{font-path}/Roboto-Bold.woff") format('woff');
|
|
43
|
+
font-weight: 700;
|
|
44
|
+
font-style: normal;
|
|
45
|
+
font-display: swap;
|
|
46
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
@import '../settings/_index';
|
|
2
|
+
// Classic CSS reset adapted to SCSS
|
|
3
|
+
// Based on Meyer reset + sensible defaults (box-sizing, media, form elements)
|
|
4
|
+
|
|
5
|
+
/* Box sizing */
|
|
6
|
+
*, *::before, *::after {
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* Remove default margin/padding and set core defaults */
|
|
11
|
+
html, body, div, span, applet, object, iframe,
|
|
12
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
|
13
|
+
a, abbr, acronym, address, big, cite, code,
|
|
14
|
+
del, dfn, em, img, ins, kbd, q, s, samp,
|
|
15
|
+
small, strike, strong, sub, sup, tt, var,
|
|
16
|
+
b, u, i, center,
|
|
17
|
+
dl, dt, dd, ol, ul, li,
|
|
18
|
+
fieldset, form, label, legend,
|
|
19
|
+
table, caption, tbody, tfoot, thead, tr, th, td,
|
|
20
|
+
article, aside, canvas, details, embed,
|
|
21
|
+
figure, figcaption, footer, header, hgroup,
|
|
22
|
+
menu, nav, output, ruby, section, summary,
|
|
23
|
+
time, mark, audio, video {
|
|
24
|
+
margin: 0;
|
|
25
|
+
padding: 0;
|
|
26
|
+
border: 0;
|
|
27
|
+
vertical-align: baseline;
|
|
28
|
+
background: transparent;
|
|
29
|
+
font: inherit;
|
|
30
|
+
color: inherit;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* HTML5 display-role reset for older browsers */
|
|
34
|
+
article, aside, details, figcaption, figure,
|
|
35
|
+
footer, header, hgroup, menu, nav, section {
|
|
36
|
+
display: block;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Base html/body */
|
|
40
|
+
html {
|
|
41
|
+
line-height: 1.15; /* better default line-height */
|
|
42
|
+
-webkit-text-size-adjust: 100%;
|
|
43
|
+
-ms-text-size-adjust: 100%;
|
|
44
|
+
-ms-overflow-style: scrollbar;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
body {
|
|
48
|
+
width: 100%;
|
|
49
|
+
min-height: 100dvh;
|
|
50
|
+
text-rendering: optimizeLegibility;
|
|
51
|
+
-webkit-font-smoothing: antialiased;
|
|
52
|
+
-moz-osx-font-smoothing: grayscale;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Remove list styles */
|
|
56
|
+
ol, ul {
|
|
57
|
+
list-style: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Remove default quotes */
|
|
61
|
+
blockquote, q {
|
|
62
|
+
quotes: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
blockquote::before, blockquote::after,
|
|
66
|
+
q::before, q::after {
|
|
67
|
+
content: none;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Tables */
|
|
71
|
+
table {
|
|
72
|
+
border-collapse: collapse;
|
|
73
|
+
border-spacing: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Images and media */
|
|
77
|
+
img, picture, video, canvas, svg {
|
|
78
|
+
display: block;
|
|
79
|
+
max-width: 100%;
|
|
80
|
+
height: auto;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* Links */
|
|
84
|
+
a {
|
|
85
|
+
background-color: transparent;
|
|
86
|
+
text-decoration: none;
|
|
87
|
+
color: inherit;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Forms: inputs, buttons, selects, textareas */
|
|
91
|
+
input, button, textarea, select {
|
|
92
|
+
font: inherit;
|
|
93
|
+
color: inherit;
|
|
94
|
+
background: transparent;
|
|
95
|
+
border: none;
|
|
96
|
+
outline: none;
|
|
97
|
+
-webkit-appearance: none;
|
|
98
|
+
-moz-appearance: none;
|
|
99
|
+
appearance: none;
|
|
100
|
+
box-shadow: none;
|
|
101
|
+
resize: vertical;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Buttons and clickable elements */
|
|
105
|
+
button, [type="button"], [type="submit"], [role="button"] {
|
|
106
|
+
cursor: pointer;
|
|
107
|
+
background: none;
|
|
108
|
+
border: none;
|
|
109
|
+
padding: 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Remove inner focus border in Firefox */
|
|
113
|
+
button::-moz-focus-inner {
|
|
114
|
+
border: 0;
|
|
115
|
+
padding: 0;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Fieldset and legend */
|
|
119
|
+
fieldset {
|
|
120
|
+
margin: 0;
|
|
121
|
+
padding: 0;
|
|
122
|
+
border: 0;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
legend {
|
|
126
|
+
padding: 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Accessibility helpers */
|
|
130
|
+
[hidden] {
|
|
131
|
+
display: none !important;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* Reduce motion for users who prefer it */
|
|
135
|
+
@media (prefers-reduced-motion: reduce) {
|
|
136
|
+
*, *::before, *::after {
|
|
137
|
+
animation-duration: 0.001ms !important;
|
|
138
|
+
animation-iteration-count: 1 !important;
|
|
139
|
+
transition-duration: 0.001ms !important;
|
|
140
|
+
scroll-behavior: auto !important;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* Utility: make images and media non-draggable by default */
|
|
145
|
+
img, svg, video {
|
|
146
|
+
user-select: none;
|
|
147
|
+
-webkit-user-drag: none;
|
|
148
|
+
-webkit-user-select: none;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
///* Optional: set base focus outline for keyboard users (can be customized) */
|
|
152
|
+
//:focus {
|
|
153
|
+
// outline: 2px solid rgba(13, 110, 253, 0.6);
|
|
154
|
+
// outline-offset: 2px;
|
|
155
|
+
//}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
@import '../settings/_index';
|
|
2
|
+
|
|
3
|
+
.aside {
|
|
4
|
+
grid-area: aside;
|
|
5
|
+
display: flex;
|
|
6
|
+
justify-content: flex-start;
|
|
7
|
+
padding: 0 @gutter;
|
|
8
|
+
|
|
9
|
+
@media screen and (min-width: @breakpoint-lg) {
|
|
10
|
+
padding: 0;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.navigation {
|
|
15
|
+
background: var(--bg-surface);
|
|
16
|
+
box-shadow: var(--shadow-outline);
|
|
17
|
+
border-radius: @border-radius;
|
|
18
|
+
padding: @gutter;
|
|
19
|
+
width: 100%;
|
|
20
|
+
|
|
21
|
+
@media screen and (min-width: @breakpoint-lg) {
|
|
22
|
+
padding: calc(@gutter * 2);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.list {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
align-items: flex-start;
|
|
30
|
+
justify-content: flex-start;
|
|
31
|
+
width: 100%;
|
|
32
|
+
|
|
33
|
+
&__item {
|
|
34
|
+
width: 100%;
|
|
35
|
+
|
|
36
|
+
&:hover {
|
|
37
|
+
.list__link {
|
|
38
|
+
color: var(--brand-600);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
&__link {
|
|
44
|
+
color: var(--text-primary);
|
|
45
|
+
display: block;
|
|
46
|
+
width: 100%;
|
|
47
|
+
padding: .375rem .625rem;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
@import '../settings/_index';
|
|
2
|
+
|
|
3
|
+
.btn {
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
justify-content: center;
|
|
7
|
+
gap: .25rem;
|
|
8
|
+
padding: .5rem .75rem;
|
|
9
|
+
border-radius: @border-radius;
|
|
10
|
+
border: 1px solid transparent;
|
|
11
|
+
font-family: @font-family;
|
|
12
|
+
font-weight: 500;
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
text-decoration: none;
|
|
15
|
+
line-height: 1;
|
|
16
|
+
transition: background .15s ease, border-color .15s ease, color .15s ease;
|
|
17
|
+
|
|
18
|
+
&:focus {
|
|
19
|
+
outline: none;
|
|
20
|
+
box-shadow: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
&--primary {
|
|
24
|
+
background: var(--brand-500);
|
|
25
|
+
color: var(--text-on-brand);
|
|
26
|
+
border-color: var(--brand-500);
|
|
27
|
+
|
|
28
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
29
|
+
background: var(--brand-700);
|
|
30
|
+
border-color: var(--brand-700);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
&--secondary {
|
|
35
|
+
background: var(--slate-500);
|
|
36
|
+
border-color: var(--slate-500);
|
|
37
|
+
color: var(--text-on-brand);
|
|
38
|
+
|
|
39
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
40
|
+
background: var(--slate-700);
|
|
41
|
+
border-color: var(--slate-700);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&--outline {
|
|
46
|
+
background: transparent;
|
|
47
|
+
color: var(--brand-500);
|
|
48
|
+
border-color: var(--brand-500);
|
|
49
|
+
|
|
50
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
51
|
+
border-color: var(--brand-600);
|
|
52
|
+
color: var(--brand-600);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&--text {
|
|
57
|
+
color: var(--text-primary);
|
|
58
|
+
|
|
59
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
60
|
+
color: var(--text-secondary);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&-primary {
|
|
64
|
+
color: var(--brand-500);
|
|
65
|
+
|
|
66
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
67
|
+
color: var(--brand-600);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
&-secondary {
|
|
72
|
+
color: var(--text-secondary);
|
|
73
|
+
|
|
74
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
75
|
+
color: var(--text-primary);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
&--icon {
|
|
81
|
+
background: transparent;
|
|
82
|
+
color: var(--text-primary);
|
|
83
|
+
padding: 0;
|
|
84
|
+
|
|
85
|
+
&-primary {
|
|
86
|
+
padding: 0;
|
|
87
|
+
background: var(--brand-500);
|
|
88
|
+
color: var(--text-on-brand);
|
|
89
|
+
border-color: var(--brand-500);
|
|
90
|
+
|
|
91
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
92
|
+
background: var(--brand-700);
|
|
93
|
+
border-color: var(--brand-700);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&-secondary {
|
|
98
|
+
padding: 0;
|
|
99
|
+
background: var(--slate-500);
|
|
100
|
+
border-color: var(--slate-500);
|
|
101
|
+
color: var(--text-on-brand);
|
|
102
|
+
|
|
103
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
104
|
+
background: var(--slate-700);
|
|
105
|
+
border-color: var(--slate-700);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&-outline {
|
|
110
|
+
padding: 0;
|
|
111
|
+
background: transparent;
|
|
112
|
+
color: var(--brand-500);
|
|
113
|
+
border-color: var(--brand-500);
|
|
114
|
+
|
|
115
|
+
&:not([disabled]):not(.is-disabled):hover {
|
|
116
|
+
border-color: var(--brand-600);
|
|
117
|
+
color: var(--brand-600);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&-small {
|
|
122
|
+
width: 1.75rem;
|
|
123
|
+
height: 1.75rem;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&-medium {
|
|
127
|
+
width: 2.25rem;
|
|
128
|
+
height: 2.25rem;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
&-large {
|
|
132
|
+
width: 2.625rem;
|
|
133
|
+
height: 2.625rem;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
&--small {
|
|
138
|
+
padding: .375rem .625rem;
|
|
139
|
+
font-size: .875rem;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&--medium {
|
|
143
|
+
padding: .5rem .75rem;
|
|
144
|
+
font-size: 1rem;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
&--large {
|
|
148
|
+
padding: .625rem 1rem;
|
|
149
|
+
font-size: 1.125rem;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
&:disabled {
|
|
153
|
+
opacity: .6;
|
|
154
|
+
cursor: not-allowed;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@import '../settings/_index';
|
|
2
|
+
|
|
3
|
+
.footer {
|
|
4
|
+
grid-area: footer;
|
|
5
|
+
background-color: var(--bg-surface);
|
|
6
|
+
box-shadow: var(--shadow-outline);
|
|
7
|
+
color: var(--text-secondary);
|
|
8
|
+
|
|
9
|
+
&__container {
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: center;
|
|
12
|
+
justify-content: center;
|
|
13
|
+
width: 100%;
|
|
14
|
+
max-width: @container-max;
|
|
15
|
+
margin: 0 auto;
|
|
16
|
+
padding: calc(@gutter * 2) @gutter;
|
|
17
|
+
gap: 10px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
&__text {
|
|
21
|
+
&--bold {
|
|
22
|
+
font-weight: 700;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|