beathers 5.6.2 → 5.7.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 +12 -1
- package/css/beathers.min.css +2 -2
- package/css/beathers.min.css.map +1 -1
- package/docs/colors.md +250 -0
- package/docs/grid-system.md +130 -0
- package/docs/shaping.md +272 -0
- package/docs/typography.md +124 -0
- package/package.json +3 -2
- package/readme.md +4 -1
- package/scripts/commands/build.d.ts.map +1 -1
- package/scripts/commands/build.js +3 -0
- package/scripts/commands/init.d.ts.map +1 -1
- package/scripts/commands/init.js +6 -0
- package/scripts/helpers/BuildScssVariables.d.ts.map +1 -1
- package/scripts/helpers/BuildScssVariables.js +17 -1
- package/scripts/helpers/LoadUserConfigs.d.ts +1 -1
- package/scripts/helpers/LoadUserConfigs.d.ts.map +1 -1
- package/scripts/helpers/LoadUserConfigs.js +3 -3
- package/scripts/helpers/ReadDefaultValues.d.ts.map +1 -1
- package/scripts/helpers/ReadDefaultValues.js +9 -1
- package/scripts/types.d.ts +14 -1
- package/scripts/types.d.ts.map +1 -1
- package/scss/_variables.scss +15 -1
- package/scss/beathers.min.scss +4 -1
- package/scss/settings/_defaults.scss +14 -0
- package/scss/settings/_index.scss +7 -1
- package/scss/style/_button.scss +101 -0
- package/scss/style/_dialog.scss +146 -0
- package/scss/style/_loader.scss +61 -0
- package/scss/style/_resets.scss +0 -12
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Typography Documentation
|
|
2
|
+
|
|
3
|
+
> Simple guide to using typography utilities in Beathers CSS framework
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Font Sizes](#font-sizes)
|
|
8
|
+
- [Text Transformations](#text-transformations)
|
|
9
|
+
- [Text Decorations](#text-decorations)
|
|
10
|
+
- [Text Alignment](#text-alignment)
|
|
11
|
+
- [Text Truncation](#text-truncation)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Font Sizes
|
|
16
|
+
|
|
17
|
+
### Normal State
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<h1 class="h1">Heading 1 (96px)</h1>
|
|
21
|
+
<h2 class="h2">Heading 2 (60px)</h2>
|
|
22
|
+
<h3 class="h3">Heading 3 (40px)</h3>
|
|
23
|
+
<h4 class="h4">Heading 4 (34px)</h4>
|
|
24
|
+
<h5 class="h5">Heading 5 (24px)</h5>
|
|
25
|
+
<h6 class="h6">Heading 6 (20px)</h6>
|
|
26
|
+
|
|
27
|
+
<p class="subtitle1">Subtitle 1 (16px)</p>
|
|
28
|
+
<p class="subtitle2">Subtitle 2 (14px)</p>
|
|
29
|
+
<p class="body1">Body 1 (16px)</p>
|
|
30
|
+
<p class="body2">Body 2 (14px)</p>
|
|
31
|
+
<p class="button">Button (14px)</p>
|
|
32
|
+
<p class="caption">Caption (12px)</p>
|
|
33
|
+
<p class="overline">Overline (10px)</p>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Responsive Sizes
|
|
37
|
+
|
|
38
|
+
```html
|
|
39
|
+
<h1 class="h1 md:h2 lg:h3">Responsive heading</h1>
|
|
40
|
+
<p class="body1 sm:subtitle1 md:h6">Responsive text</p>
|
|
41
|
+
<span class="caption lg:body2">Responsive small text</span>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Text Transformations
|
|
47
|
+
|
|
48
|
+
### Normal State
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<p class="uppercase">UPPERCASE TEXT</p>
|
|
52
|
+
<p class="lowercase">lowercase text</p>
|
|
53
|
+
<p class="capitalize">Capitalize Text</p>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Responsive Transformations
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<p class="capitalize md:uppercase">Responsive transform</p>
|
|
60
|
+
<p class="lowercase lg:capitalize">Mobile lowercase, desktop capitalize</p>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Text Decorations
|
|
66
|
+
|
|
67
|
+
### Normal State
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<p class="underline">Underlined text</p>
|
|
71
|
+
<p class="line-through">Strikethrough text</p>
|
|
72
|
+
<p class="wavy">Wavy decoration</p>
|
|
73
|
+
<p class="double">Double decoration</p>
|
|
74
|
+
<p class="dotted">Dotted decoration</p>
|
|
75
|
+
<p class="dashed">Dashed decoration</p>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Combined Decorations
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<p class="underline capitalize">Underlined and capitalized</p>
|
|
82
|
+
<p class="line-through uppercase">Strikethrough and uppercase</p>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Text Alignment
|
|
88
|
+
|
|
89
|
+
### Normal State
|
|
90
|
+
|
|
91
|
+
```html
|
|
92
|
+
<p class="text-left">Left aligned text</p>
|
|
93
|
+
<p class="text-start">Start aligned text</p>
|
|
94
|
+
<p class="text-center">Center aligned text</p>
|
|
95
|
+
<p class="text-right">Right aligned text</p>
|
|
96
|
+
<p class="text-end">End aligned text</p>
|
|
97
|
+
<p class="text-justify">Justified text</p>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Responsive Alignment
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<p class="text-left md:text-center lg:text-right">Responsive alignment</p>
|
|
104
|
+
<p class="text-center sm:text-left">Mobile center, desktop left</p>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Text Truncation
|
|
110
|
+
|
|
111
|
+
### Normal State
|
|
112
|
+
|
|
113
|
+
```html
|
|
114
|
+
<p class="text-lines:1">Single line truncation with ellipsis...</p>
|
|
115
|
+
<p class="text-lines:2">Two line truncation with ellipsis after second line...</p>
|
|
116
|
+
<p class="text-lines:3">Three line truncation with ellipsis after third line...</p>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Responsive Truncation
|
|
120
|
+
|
|
121
|
+
```html
|
|
122
|
+
<p class="text-lines:2 md:text-lines:3 lg:text-lines:1">Responsive truncation</p>
|
|
123
|
+
<p class="text-lines:1 sm:text-lines:2">Mobile 1 line, desktop 2 lines</p>
|
|
124
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "beathers",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Beather is a lightweight SCSS library that serves as a comprehensive design system for your projects. It offers a structured and consistent approach to manage colors, fonts, and other design related variables, making it easier to maintain a cohesive visual identity across your application.",
|
|
6
6
|
"main": "index.js",
|
|
@@ -81,7 +81,8 @@
|
|
|
81
81
|
"scss/**/*.scss",
|
|
82
82
|
"public/images/logo.png",
|
|
83
83
|
"public/fonts/*.{woff,woff2}",
|
|
84
|
-
"docs
|
|
84
|
+
"docs/",
|
|
85
|
+
"docs/**/*.md",
|
|
85
86
|
"CHANGELOG",
|
|
86
87
|
"readme.md"
|
|
87
88
|
],
|
package/readme.md
CHANGED
|
@@ -240,7 +240,10 @@ You can create one of these files in your project root:
|
|
|
240
240
|
| `useTextBordersMediaQueries` <br /> Include responsive text border utilities | `boolean` | `false` |
|
|
241
241
|
| `useRadius` <br /> Include border radius utilities | `boolean` | `true` |
|
|
242
242
|
| `useRadiusMediaQueries` <br /> Include responsive border radius utilities | `boolean` | `false` |
|
|
243
|
-
| `useGlass` <br /> Include glassmorphism utilities | `boolean` | `
|
|
243
|
+
| `useGlass` <br /> Include glassmorphism utilities | `boolean` | `false` |
|
|
244
|
+
| `useLoader` <br /> Include loader utilities | `boolean` | `false` |
|
|
245
|
+
| `useDialog` <br /> Include dialog utilities | `boolean` | `false` |
|
|
246
|
+
| `useButton` <br /> Include button utilities | `boolean` | `false` |
|
|
244
247
|
|
|
245
248
|
### TypeScript Configuration Example
|
|
246
249
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/build.ts"],"names":[],"mappings":"AAoIA,wBAAsB,KAAK,kBAmC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/init.ts"],"names":[],"mappings":"AAsGA,wBAAsB,IAAI,kBA6DzB"}
|
package/scripts/commands/init.js
CHANGED
|
@@ -37,6 +37,9 @@ async function getDefaultValues() {
|
|
|
37
37
|
'glassBorder1Color',
|
|
38
38
|
'glassBorder2Color',
|
|
39
39
|
'glassLightAngle',
|
|
40
|
+
'loaderColorMain',
|
|
41
|
+
'loaderColorSecond',
|
|
42
|
+
'loaderDuration',
|
|
40
43
|
'useFontFamilies',
|
|
41
44
|
'useFontFamiliesMediaQueries',
|
|
42
45
|
'useFontSizes',
|
|
@@ -84,6 +87,9 @@ async function getDefaultValues() {
|
|
|
84
87
|
'useRadius',
|
|
85
88
|
'useRadiusMediaQueries',
|
|
86
89
|
'useGlass',
|
|
90
|
+
'useLoader',
|
|
91
|
+
'useDialog',
|
|
92
|
+
'useButton',
|
|
87
93
|
]));
|
|
88
94
|
}
|
|
89
95
|
export async function Init() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildScssVariables.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/BuildScssVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"BuildScssVariables.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/BuildScssVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAmMnC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,GAAE,OAAe,GAAG,MAAM,CAYtF"}
|
|
@@ -151,14 +151,30 @@ function BuildGlass(glass) {
|
|
|
151
151
|
scss += ');\n';
|
|
152
152
|
return scss;
|
|
153
153
|
}
|
|
154
|
+
function BuildLoader(loader) {
|
|
155
|
+
if (!loader)
|
|
156
|
+
return '';
|
|
157
|
+
let scss = '\n\n// --- Loader ---\n';
|
|
158
|
+
scss += '$loaderColorMain: (\n';
|
|
159
|
+
scss += ` 'light': ${loader?.colorMain?.light ?? '#ffffff'},\n`;
|
|
160
|
+
scss += ` 'dark': ${loader?.colorMain?.dark ?? '#1a1d21'},\n`;
|
|
161
|
+
scss += ');\n';
|
|
162
|
+
scss += '$loaderColorSecond: (\n';
|
|
163
|
+
scss += ` 'light': ${loader?.colorSecond?.light ?? '#f4f4f4'},\n`;
|
|
164
|
+
scss += ` 'dark': ${loader?.colorSecond?.dark ?? '#2e2e3f'},\n`;
|
|
165
|
+
scss += ');\n';
|
|
166
|
+
scss += `$loaderDuration: ${loader?.duration ?? 'null'};\n`;
|
|
167
|
+
return scss;
|
|
168
|
+
}
|
|
154
169
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
155
170
|
export function BuildScssVariables(theme, isLocalBuild = false) {
|
|
156
|
-
const { colors, roles, settings, typography, glass } = theme;
|
|
171
|
+
const { colors, roles, settings, typography, glass, loader } = theme;
|
|
157
172
|
let scss = '// Generated by Beathers builder\n // Do not edit this file directly\n\n';
|
|
158
173
|
scss += BuildColors(colors);
|
|
159
174
|
scss += BuildTypography(typography);
|
|
160
175
|
scss += BuildSettings(settings);
|
|
161
176
|
scss += BuildRoles(roles);
|
|
162
177
|
scss += BuildGlass(glass);
|
|
178
|
+
scss += BuildLoader(loader);
|
|
163
179
|
return scss;
|
|
164
180
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Theme } from '../types.js';
|
|
2
|
-
export declare function LoadUserConfigs(projectPath?: string): Promise<Theme | null>;
|
|
2
|
+
export declare function LoadUserConfigs<T extends object = object>(projectPath?: string, extra?: T): Promise<(Theme & T) | null>;
|
|
3
3
|
//# sourceMappingURL=LoadUserConfigs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadUserConfigs.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/LoadUserConfigs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAgCnC,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"LoadUserConfigs.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/LoadUserConfigs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAgCnC,wBAAsB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC7D,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,CAAC,GACR,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAY7B"}
|
|
@@ -30,15 +30,15 @@ function loadJsonConfig(filePath) {
|
|
|
30
30
|
throw new Error(`Failed to parse JSON config from ${filePath}: ${error}`);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
export async function LoadUserConfigs(projectPath) {
|
|
33
|
+
export async function LoadUserConfigs(projectPath, extra) {
|
|
34
34
|
const basePath = projectPath ?? process.cwd();
|
|
35
35
|
const configFilePath = findConfigFile(basePath);
|
|
36
36
|
if (!configFilePath)
|
|
37
37
|
return null;
|
|
38
38
|
const extension = path.extname(configFilePath);
|
|
39
39
|
if (extension === '.json')
|
|
40
|
-
return loadJsonConfig(configFilePath);
|
|
40
|
+
return { ...loadJsonConfig(configFilePath), ...extra };
|
|
41
41
|
if (['.js', '.ts'].includes(extension))
|
|
42
|
-
return await loadJsOrTsConfig(configFilePath);
|
|
42
|
+
return { ...(await loadJsOrTsConfig(configFilePath)), ...extra };
|
|
43
43
|
throw new Error(`Unsupported config file format: ${extension}`);
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadDefaultValues.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/ReadDefaultValues.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2C,KAAK,EAAE,MAAM,aAAa,CAAA;AAmF5E,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ReadDefaultValues.d.ts","sourceRoot":"","sources":["../../src/scripts/helpers/ReadDefaultValues.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2C,KAAK,EAAE,MAAM,aAAa,CAAA;AAmF5E,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CA2IzG"}
|
|
@@ -108,7 +108,7 @@ export async function ReadDefaultValues(files, VariableNames) {
|
|
|
108
108
|
result = buildArray(value);
|
|
109
109
|
else if (['axisDivisions'].includes(name))
|
|
110
110
|
result = cleanNumber(value);
|
|
111
|
-
else if (['glassColor', 'glassBorder1Color', 'glassBorder2Color'].includes(name))
|
|
111
|
+
else if (['glassColor', 'glassBorder1Color', 'glassBorder2Color', 'loaderColorMain', 'loaderColorSecond'].includes(name))
|
|
112
112
|
result = buildColors(value);
|
|
113
113
|
else
|
|
114
114
|
result = cleanString(value);
|
|
@@ -187,6 +187,9 @@ export async function ReadDefaultValues(files, VariableNames) {
|
|
|
187
187
|
useRadius: variables?.useRadius,
|
|
188
188
|
useRadiusMediaQueries: variables?.useRadiusMediaQueries,
|
|
189
189
|
useGlass: variables?.useGlass,
|
|
190
|
+
useLoader: variables?.useLoader,
|
|
191
|
+
useDialog: variables?.useDialog,
|
|
192
|
+
useButton: variables?.useButton,
|
|
190
193
|
};
|
|
191
194
|
theme.glass = {
|
|
192
195
|
blur: variables?.glassBlur,
|
|
@@ -196,5 +199,10 @@ export async function ReadDefaultValues(files, VariableNames) {
|
|
|
196
199
|
border2Color: variables?.glassBorder2Color,
|
|
197
200
|
lightAngle: variables?.glassLightAngle,
|
|
198
201
|
};
|
|
202
|
+
theme.loader = {
|
|
203
|
+
colorMain: variables?.loaderColorMain,
|
|
204
|
+
colorSecond: variables?.loaderColorSecond,
|
|
205
|
+
duration: variables?.loaderDuration,
|
|
206
|
+
};
|
|
199
207
|
return theme;
|
|
200
208
|
}
|
package/scripts/types.d.ts
CHANGED
|
@@ -88,8 +88,19 @@ interface Glass {
|
|
|
88
88
|
};
|
|
89
89
|
lightAngle?: `${number}deg`;
|
|
90
90
|
}
|
|
91
|
+
interface Loader {
|
|
92
|
+
colorMain?: {
|
|
93
|
+
light?: `#${string}`;
|
|
94
|
+
dark?: `#${string}`;
|
|
95
|
+
};
|
|
96
|
+
colorSecond?: {
|
|
97
|
+
light?: `#${string}`;
|
|
98
|
+
dark?: `#${string}`;
|
|
99
|
+
};
|
|
100
|
+
duration?: `${number}s` | `${number}ms`;
|
|
101
|
+
}
|
|
91
102
|
/** Available feature keys for enabling/disabling CSS utilities */
|
|
92
|
-
type RoleKeys = 'useFontFamilies' | 'useFontFamiliesMediaQueries' | 'useFontSizes' | 'useFontSizesMediaQueries' | 'useFontShapes' | 'useFontShapesMediaQueries' | 'useTextAligns' | 'useTextAlignsMediaQueries' | 'useTextTruncate' | 'useTextTruncateMediaQueries' | 'useColors' | 'useColorsOpacities' | 'useColorsLightMode' | 'useColorsDarkMode' | 'useCurrentColors' | 'useRootColors' | 'useGrid' | 'useFlex' | 'useGridMediaQueries' | 'useWrappers' | 'useShadows' | 'useShadowsMediaQueries' | 'useDisplays' | 'useDisplaysMediaQueries' | 'useOverflows' | 'useOverflowsMediaQueries' | 'useOpacities' | 'useOpacitiesMediaQueries' | 'useBlur' | 'useBlurMediaQueries' | 'useObjectFits' | 'useObjectFitsMediaQueries' | 'usePositions' | 'usePositionsMediaQueries' | 'useInsets' | 'useInsetsMediaQueries' | 'useSizes' | 'useSizesMediaQueries' | 'useGutters' | 'useGuttersMediaQueries' | 'useBorders' | 'useBordersMediaQueries' | 'useTextBorders' | 'useTextBordersMediaQueries' | 'useRadius' | 'useRadiusMediaQueries' | 'useGlass';
|
|
103
|
+
type RoleKeys = 'useFontFamilies' | 'useFontFamiliesMediaQueries' | 'useFontSizes' | 'useFontSizesMediaQueries' | 'useFontShapes' | 'useFontShapesMediaQueries' | 'useTextAligns' | 'useTextAlignsMediaQueries' | 'useTextTruncate' | 'useTextTruncateMediaQueries' | 'useColors' | 'useColorsOpacities' | 'useColorsLightMode' | 'useColorsDarkMode' | 'useCurrentColors' | 'useRootColors' | 'useGrid' | 'useFlex' | 'useGridMediaQueries' | 'useWrappers' | 'useShadows' | 'useShadowsMediaQueries' | 'useDisplays' | 'useDisplaysMediaQueries' | 'useOverflows' | 'useOverflowsMediaQueries' | 'useOpacities' | 'useOpacitiesMediaQueries' | 'useBlur' | 'useBlurMediaQueries' | 'useObjectFits' | 'useObjectFitsMediaQueries' | 'usePositions' | 'usePositionsMediaQueries' | 'useInsets' | 'useInsetsMediaQueries' | 'useSizes' | 'useSizesMediaQueries' | 'useGutters' | 'useGuttersMediaQueries' | 'useBorders' | 'useBordersMediaQueries' | 'useTextBorders' | 'useTextBordersMediaQueries' | 'useRadius' | 'useRadiusMediaQueries' | 'useGlass' | 'useLoader' | 'useDialog' | 'useButton';
|
|
93
104
|
/** Feature toggles for enabling/disabling CSS utility generation. @default all true */
|
|
94
105
|
type Roles = Partial<Record<RoleKeys, boolean>>;
|
|
95
106
|
/** Main theme configuration object containing all design system settings */
|
|
@@ -106,6 +117,8 @@ interface Theme {
|
|
|
106
117
|
roles?: Roles;
|
|
107
118
|
/** Optional glassmorphism settings for frosted glass effects */
|
|
108
119
|
glass?: Glass;
|
|
120
|
+
/** Optional loader animation settings */
|
|
121
|
+
loader?: Loader;
|
|
109
122
|
}
|
|
110
123
|
export type { SizeUnit, ColorType, FontWeight, FontStyle, FontVariant, FontType, Typography, Settings, RoleKeys, Glass, Roles, Theme, };
|
|
111
124
|
//# sourceMappingURL=types.d.ts.map
|
package/scripts/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/scripts/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/scripts/types.ts"],"names":[],"mappings":"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"}
|
package/scss/_variables.scss
CHANGED
|
@@ -72,7 +72,10 @@ $useTextBorders: true;
|
|
|
72
72
|
$useTextBordersMediaQueries: false;
|
|
73
73
|
$useRadius: true;
|
|
74
74
|
$useRadiusMediaQueries: false;
|
|
75
|
-
$useGlass:
|
|
75
|
+
$useGlass: false;
|
|
76
|
+
$useLoader: false;
|
|
77
|
+
$useDialog: false;
|
|
78
|
+
$useButton: false;
|
|
76
79
|
|
|
77
80
|
// --- Glass ---
|
|
78
81
|
$glassBlur: null;
|
|
@@ -90,3 +93,14 @@ $glassBorder2Color: (
|
|
|
90
93
|
'dark': #303030,
|
|
91
94
|
);
|
|
92
95
|
$glassLightAngle: null;
|
|
96
|
+
|
|
97
|
+
// --- Loader ---
|
|
98
|
+
$loaderColorMain: (
|
|
99
|
+
'light': #ffffff,
|
|
100
|
+
'dark': #1a1d21,
|
|
101
|
+
);
|
|
102
|
+
$loaderColorSecond: (
|
|
103
|
+
'light': #f4f4f4,
|
|
104
|
+
'dark': #2e2e3f,
|
|
105
|
+
);
|
|
106
|
+
$loaderDuration: 2s;
|
package/scss/beathers.min.scss
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Beathers v5.
|
|
2
|
+
* Beathers v5.7.0 (https://bhoenixstudio.com/beathers)
|
|
3
3
|
* Copyright 2020-2025 Bhoenix Studio
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -10,3 +10,6 @@
|
|
|
10
10
|
@use './style/grid';
|
|
11
11
|
@use './style/shaping';
|
|
12
12
|
@use './style/glass';
|
|
13
|
+
@use './style/loader';
|
|
14
|
+
@use './style/dialog';
|
|
15
|
+
@use './style/button';
|
|
@@ -198,3 +198,17 @@ $glassBorder2Color: (
|
|
|
198
198
|
) !default;
|
|
199
199
|
// Glassmorphism light angle
|
|
200
200
|
$glassLightAngle: 45deg !default;
|
|
201
|
+
|
|
202
|
+
// Loader/Skeleton settings
|
|
203
|
+
// Loader main color settings for light and dark modes
|
|
204
|
+
$loaderColorMain: (
|
|
205
|
+
'light': #ffffff,
|
|
206
|
+
'dark': #1a1d21,
|
|
207
|
+
) !default;
|
|
208
|
+
// Loader second color settings for light and dark modes
|
|
209
|
+
$loaderColorSecond: (
|
|
210
|
+
'light': #f4f4f4,
|
|
211
|
+
'dark': #2e2e3f,
|
|
212
|
+
) !default;
|
|
213
|
+
// Loader duration
|
|
214
|
+
$loaderDuration: 2s !default;
|
|
@@ -81,4 +81,10 @@ $useTextBordersMediaQueries: false !default;
|
|
|
81
81
|
$useRadius: true !default;
|
|
82
82
|
$useRadiusMediaQueries: false !default;
|
|
83
83
|
// Enables or disables glass effect utilities.
|
|
84
|
-
$useGlass:
|
|
84
|
+
$useGlass: false !default;
|
|
85
|
+
// Enables or disables loader/skeleton utilities.
|
|
86
|
+
$useLoader: false !default;
|
|
87
|
+
// Enables or disables dialog/modal utilities.
|
|
88
|
+
$useDialog: false !default;
|
|
89
|
+
// Enables or disables button utilities.
|
|
90
|
+
$useButton: false !default;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
$corners: (
|
|
2
|
+
'rounded': 0.25rem,
|
|
3
|
+
'circle': 100vw,
|
|
4
|
+
'sharp': 0,
|
|
5
|
+
) !default;
|
|
6
|
+
|
|
7
|
+
button {
|
|
8
|
+
cursor: pointer;
|
|
9
|
+
background: transparent;
|
|
10
|
+
border: none;
|
|
11
|
+
|
|
12
|
+
&.btn {
|
|
13
|
+
position: relative;
|
|
14
|
+
isolation: isolate;
|
|
15
|
+
appearance: none;
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-wrap: nowrap;
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
transition: 250ms ease-in-out;
|
|
20
|
+
|
|
21
|
+
&:not([class*='justify-content:']) {
|
|
22
|
+
justify-content: center;
|
|
23
|
+
}
|
|
24
|
+
&:not([class*='align-items:']) {
|
|
25
|
+
align-items: center;
|
|
26
|
+
}
|
|
27
|
+
&:not([class*='text-start'], [class*='text-left'], [class*='text-end'], [class*='text-right']) {
|
|
28
|
+
text-align: center;
|
|
29
|
+
}
|
|
30
|
+
&:not([class*='border:']) {
|
|
31
|
+
border-width: 0.15em;
|
|
32
|
+
border-style: solid;
|
|
33
|
+
}
|
|
34
|
+
&:not([class*='bg:']) {
|
|
35
|
+
background-color: unset;
|
|
36
|
+
}
|
|
37
|
+
&:not([class*='radius:']) {
|
|
38
|
+
@each $corner, $value in $corners {
|
|
39
|
+
&.btn-#{$corner} {
|
|
40
|
+
border-radius: $value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
&:is(.btn-circle) {
|
|
45
|
+
aspect-ratio: 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&:is([disabled]) {
|
|
50
|
+
cursor: not-allowed;
|
|
51
|
+
opacity: 0.7;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&::before {
|
|
55
|
+
content: '';
|
|
56
|
+
position: absolute;
|
|
57
|
+
inset: 0;
|
|
58
|
+
border-radius: inherit;
|
|
59
|
+
pointer-events: none;
|
|
60
|
+
z-index: -1;
|
|
61
|
+
transition: 250ms ease-in-out;
|
|
62
|
+
opacity: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&:is(.loading) .loader-icon {
|
|
66
|
+
animation: rotate 4s ease-in-out infinite;
|
|
67
|
+
|
|
68
|
+
@keyframes rotate {
|
|
69
|
+
0% {
|
|
70
|
+
transform: rotate(0deg);
|
|
71
|
+
}
|
|
72
|
+
100% {
|
|
73
|
+
transform: rotate(360deg);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
&:is(:focus-visible, :hover) {
|
|
79
|
+
transform: translateY(-0.1em);
|
|
80
|
+
|
|
81
|
+
&:is(.text-variant) {
|
|
82
|
+
text-shadow: 0 0.05em rgba(0, 0, 0, 0.4);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&:not(.text-variant) {
|
|
86
|
+
box-shadow: 0 0.15em 0.15em rgba(0, 0, 0, 0.4);
|
|
87
|
+
|
|
88
|
+
&::before {
|
|
89
|
+
background-color: rgba(0, 0, 0, 0.15);
|
|
90
|
+
opacity: 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
:focus,
|
|
98
|
+
button:focus {
|
|
99
|
+
outline: unset;
|
|
100
|
+
box-shadow: unset;
|
|
101
|
+
}
|