beathers 5.6.3 → 5.7.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beathers",
3
- "version": "5.6.3",
3
+ "version": "5.7.1",
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",
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` | `true` |
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":"AAiIA,wBAAsB,KAAK,kBAmC1B"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/build.ts"],"names":[],"mappings":"AAoIA,wBAAsB,KAAK,kBAmC1B"}
@@ -75,6 +75,9 @@ async function defaultTheme() {
75
75
  'useRadius',
76
76
  'useRadiusMediaQueries',
77
77
  'useGlass',
78
+ 'useLoader',
79
+ 'useDialog',
80
+ 'useButton',
78
81
  ]);
79
82
  }
80
83
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/init.ts"],"names":[],"mappings":"AAgGA,wBAAsB,IAAI,kBA6DzB"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/scripts/commands/init.ts"],"names":[],"mappings":"AAsGA,wBAAsB,IAAI,kBA6DzB"}
@@ -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;AAgLnC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,GAAE,OAAe,GAAG,MAAM,CAWtF"}
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,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAYjF"}
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,CA8HzG"}
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
  }
@@ -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
@@ -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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"}
@@ -72,7 +72,10 @@ $useTextBorders: true;
72
72
  $useTextBordersMediaQueries: false;
73
73
  $useRadius: true;
74
74
  $useRadiusMediaQueries: false;
75
- $useGlass: true;
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;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Beathers v5.6.3 (https://bhoenixstudio.com/beathers)
2
+ * Beathers v5.7.1 (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: true !default;
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
+ }
@@ -0,0 +1,146 @@
1
+ @use '../settings/index' as settings;
2
+ @use '../variables' as vars;
3
+
4
+ // Definitions
5
+ $useLoader: if(vars.$useLoader != null, vars.$useLoader, settings.$useLoader);
6
+
7
+
8
+ $dialogInline: (
9
+ height: 100dvh,
10
+ transition: all 300ms ease-in-out,
11
+ );
12
+
13
+ $dialogBlock: (
14
+ transform: translateX(-50%),
15
+ max-width: 95%,
16
+ max-height: 95%,
17
+ transition: all 300ms ease-in-out,
18
+ );
19
+
20
+ $dialogCenter: (
21
+ transform: translate(-50%, -50%),
22
+ max-width: 95%,
23
+ max-height: 95%,
24
+ transition: all 300ms cubic-bezier(0, 2.5, 1, 1),
25
+ );
26
+
27
+ $dialogPositions: (
28
+ 'top': (
29
+ origin: (
30
+ top: -150%,
31
+ left: 50%,
32
+ ),
33
+ active: (
34
+ top: 2.5%,
35
+ ),
36
+ ),
37
+ 'bottom': (
38
+ origin: (
39
+ bottom: -150%,
40
+ left: 50%,
41
+ ),
42
+ active: (
43
+ bottom: 2.5%,
44
+ ),
45
+ ),
46
+ 'left': (
47
+ origin: (
48
+ top: 0,
49
+ left: -100%,
50
+ right: unset,
51
+ ),
52
+ active: (
53
+ left: 0,
54
+ ),
55
+ ),
56
+ 'start': (
57
+ origin: (
58
+ top: 0,
59
+ inset-inline-start: -100%,
60
+ inset-inline-end: unset,
61
+ ),
62
+ active: (
63
+ inset-inline-start: 0,
64
+ ),
65
+ ),
66
+ 'right': (
67
+ origin: (
68
+ top: 0,
69
+ right: -100%,
70
+ left: unset,
71
+ ),
72
+ active: (
73
+ right: 0,
74
+ ),
75
+ ),
76
+ 'end': (
77
+ origin: (
78
+ top: 0,
79
+ inset-inline-end: -100%,
80
+ inset-inline-start: unset,
81
+ ),
82
+ active: (
83
+ inset-inline-end: 0,
84
+ ),
85
+ ),
86
+ 'center': (
87
+ origin: (
88
+ top: 150%,
89
+ left: 50%,
90
+ ),
91
+ active: (
92
+ top: 50%,
93
+ ),
94
+ ),
95
+ );
96
+
97
+ .dialog {
98
+ --dialog-width: 400px;
99
+ --dialog-min-width: 380px;
100
+
101
+ position: fixed;
102
+ border: unset;
103
+ overflow-y: auto;
104
+ z-index: 2000;
105
+ pointer-events: none;
106
+ opacity: 0;
107
+
108
+ &.active {
109
+ pointer-events: all;
110
+ opacity: 1;
111
+ }
112
+
113
+ @each $position, $modes in $dialogPositions {
114
+ &.#{$position} {
115
+ min-width: var(--dialog-min-width);
116
+
117
+ @if $position == 'center' {
118
+ @each $posProp, $posValue in $dialogCenter {
119
+ #{$posProp}: $posValue;
120
+ }
121
+ } @else if $position == 'left' or $position == 'right' or $position == 'start' or $position == 'end' {
122
+ @each $posProp, $posValue in $dialogInline {
123
+ #{$posProp}: $posValue;
124
+ }
125
+
126
+ width: var(--dialog-width);
127
+ } @else if $position == 'top' or $position == 'bottom' {
128
+ @each $posProp, $posValue in $dialogBlock {
129
+ #{$posProp}: $posValue;
130
+ }
131
+ }
132
+
133
+ @each $mode, $values in $modes {
134
+ @each $prop, $value in $values {
135
+ @if $mode == 'active' {
136
+ &.active {
137
+ #{$prop}: $value;
138
+ }
139
+ } @else {
140
+ #{$prop}: $value;
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
@@ -0,0 +1,62 @@
1
+ @use '../settings/index' as settings;
2
+ @use '../variables' as vars;
3
+ @use '../settings/defaults' as loaderColorMain;
4
+
5
+ // Definitions
6
+ $useLoader: if(vars.$useLoader != null, vars.$useLoader, settings.$useLoader);
7
+ $useColorsLightMode: if(vars.$useColorsLightMode != null, vars.$useColorsLightMode, settings.$useColorsLightMode);
8
+ $useColorsDarkMode: if(vars.$useColorsDarkMode != null, vars.$useColorsDarkMode, settings.$useColorsDarkMode);
9
+ $loaderColorMain: if(vars.$loaderColorMain != null, vars.$loaderColorMain, loaderColorMain.$loaderColorMain);
10
+ $loaderColorSecond: if(vars.$loaderColorSecond != null, vars.$loaderColorSecond, defs.$loaderColorSecond);
11
+ $loaderDuration: if(vars.$loaderDuration != null, vars.$loaderDuration, defs.$loaderDuration);
12
+
13
+ @if $useLoader {
14
+ $colorMainLight: colors.hexToRgba(map.get($colorMain, 'light'), 0.4, 'Glass.light');
15
+ $colorMainDark: colors.hexToRgba(map.get($colorMain, 'dark'), 0.4, 'Glass.dark');
16
+ $colorSecondLight: colors.hexToRgba(map.get($colorSecond, 'light'), 0.4, 'Glass.light');
17
+ $colorSecondDark: colors.hexToRgba(map.get($colorSecond, 'dark'), 0.4, 'Glass.dark');
18
+
19
+ .skeleton {
20
+ $skeletonsVariants: (
21
+ 'rounded': 8px,
22
+ 'sharp': unset,
23
+ 'circle': 100vw,
24
+ 'square': 5px,
25
+ 'text': 3px,
26
+ ) !default;
27
+
28
+ display: inline-block;
29
+ background: linear-gradient(
30
+ 110deg,
31
+ var(--skeleton-main-color, $colorMainLight) 0%,
32
+ var(--skeleton-second-color, $colorSecondLight) 30%,
33
+ var(--skeleton-second-color, $colorSecondLight) 30%,
34
+ var(--skeleton-main-color, $colorMainLight) 100%
35
+ );
36
+ background-size: 200% 100%;
37
+ animation: var(--skeleton-duration, $loaderDuration) shine linear infinite;
38
+
39
+ @each $variant, $radius in $skeletonsVariants {
40
+ &.#{$variant} {
41
+ border-radius: $radius;
42
+ aspect-ratio: if($variant == 'circle' or $variant == 'square', 1, unset);
43
+ }
44
+ }
45
+
46
+ .dark & {
47
+ background: linear-gradient(
48
+ 110deg,
49
+ var(--skeleton-main-color, $colorMainDark) 0%,
50
+ var(--skeleton-second-color, $colorSecondDark) 30%,
51
+ var(--skeleton-second-color, $colorSecondDark) 30%,
52
+ var(--skeleton-main-color, $colorMainDark) 100%
53
+ );
54
+ }
55
+
56
+ @keyframes shine {
57
+ to {
58
+ background-position-x: -200%;
59
+ }
60
+ }
61
+ }
62
+ }
@@ -52,18 +52,6 @@ table {
52
52
  border-spacing: 0;
53
53
  }
54
54
 
55
- button {
56
- cursor: pointer;
57
- background: transparent;
58
- border: none;
59
- }
60
-
61
- :focus,
62
- button:focus {
63
- outline: unset;
64
- box-shadow: unset;
65
- }
66
-
67
55
  fieldset {
68
56
  border: 0;
69
57
  margin: 0;