@skewedaspect/sleekspace-ui 0.4.0 → 0.5.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/dist/components/Page/SkPage.vue.d.ts +9 -0
- package/dist/components/Page/types.d.ts +3 -0
- package/dist/components/Theme/types.d.ts +18 -3
- package/dist/sleekspace-ui.css +79 -46
- package/dist/sleekspace-ui.es.js +48 -36
- package/dist/sleekspace-ui.umd.js +48 -36
- package/dist/tokens.css +23 -0
- package/docs/guides/design-tokens/advanced.md +6 -1
- package/docs/guides/design-tokens/foundation-other.md +16 -3
- package/docs/guides/design-tokens/semantic-states.md +26 -11
- package/docs/guides/design-tokens/themes.md +13 -2
- package/docs/guides/getting-started.md +31 -30
- package/docs/guides/theming.md +272 -8
- package/package.json +3 -3
- package/src/components/Page/SkPage.vue +36 -2
- package/src/components/Page/types.ts +6 -0
- package/src/components/Theme/types.ts +20 -3
- package/src/styles/_scrollbar.scss +2 -2
- package/src/styles/base/_global.scss +3 -3
- package/src/styles/components/_button.scss +45 -9
- package/src/styles/components/_page.scss +2 -2
- package/src/styles/themes/README.md +6 -2
- package/src/styles/tokens/_foundation-colors.scss +4 -0
- package/src/styles/tokens/_foundation-transitions.scss +8 -0
- package/src/styles/tokens/_semantic-surfaces.scss +15 -0
- package/web-types.json +11 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SkThemeName } from '../Theme/types';
|
|
1
2
|
import { SkPageSidebarPosition } from './types';
|
|
2
3
|
export interface SkPageComponentProps {
|
|
3
4
|
/**
|
|
@@ -27,6 +28,13 @@ export interface SkPageComponentProps {
|
|
|
27
28
|
* Only applies when the sidebar slot is provided.
|
|
28
29
|
*/
|
|
29
30
|
sidebarWidth?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Optional theme name. When provided, SkPage acts as a theme provider — setting
|
|
33
|
+
* `data-scheme` on the root element and providing theme context for descendant
|
|
34
|
+
* components (including portal components like dropdowns and modals).
|
|
35
|
+
* When omitted, SkPage has no theme behavior.
|
|
36
|
+
*/
|
|
37
|
+
theme?: SkThemeName;
|
|
30
38
|
}
|
|
31
39
|
declare function __VLS_template(): {
|
|
32
40
|
attrs: Partial<{}>;
|
|
@@ -41,6 +49,7 @@ declare function __VLS_template(): {
|
|
|
41
49
|
};
|
|
42
50
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
43
51
|
declare const __VLS_component: import('vue').DefineComponent<SkPageComponentProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<SkPageComponentProps> & Readonly<{}>, {
|
|
52
|
+
theme: SkThemeName;
|
|
44
53
|
sidebarPosition: SkPageSidebarPosition;
|
|
45
54
|
fixedHeader: boolean;
|
|
46
55
|
fixedFooter: boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SkThemeName } from '../Theme/types';
|
|
1
2
|
/** Sidebar position */
|
|
2
3
|
export type SkPageSidebarPosition = 'left' | 'right';
|
|
3
4
|
/** Page props interface */
|
|
@@ -10,4 +11,6 @@ export interface SkPageProps {
|
|
|
10
11
|
fixedFooter?: boolean;
|
|
11
12
|
/** Custom sidebar width */
|
|
12
13
|
sidebarWidth?: string;
|
|
14
|
+
/** Optional theme name — when provided, SkPage acts as a theme provider */
|
|
15
|
+
theme?: SkThemeName;
|
|
13
16
|
}
|
|
@@ -1,9 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry of available theme names. Augment this interface to register custom themes:
|
|
3
|
+
*
|
|
4
|
+
* ```ts
|
|
5
|
+
* declare module '@skewedaspect/sleekspace-ui' {
|
|
6
|
+
* interface SkThemeNameMap {
|
|
7
|
+
* ocean : true;
|
|
8
|
+
* midnight : true;
|
|
9
|
+
* }
|
|
10
|
+
* }
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export interface SkThemeNameMap {
|
|
14
|
+
greyscale: true;
|
|
15
|
+
colorful: true;
|
|
16
|
+
}
|
|
1
17
|
/**
|
|
2
18
|
* Available theme names that control the overall color scheme of the application.
|
|
3
|
-
*
|
|
4
|
-
* - 'colorful': A vibrant theme with saturated colors and stronger contrasts
|
|
19
|
+
* Derived from {@link SkThemeNameMap} — augment that interface to add custom themes.
|
|
5
20
|
*/
|
|
6
|
-
export type SkThemeName =
|
|
21
|
+
export type SkThemeName = keyof SkThemeNameMap;
|
|
7
22
|
export interface SkThemeComponentProps {
|
|
8
23
|
/**
|
|
9
24
|
* The active theme name that controls the color scheme for all child components.
|
package/dist/sleekspace-ui.css
CHANGED
|
@@ -158,6 +158,9 @@
|
|
|
158
158
|
--sk-opacity-medium: 0.40;
|
|
159
159
|
--sk-opacity-strong: 0.60;
|
|
160
160
|
--sk-opacity-opaque: 1;
|
|
161
|
+
/* Semantic opacity aliases */
|
|
162
|
+
--sk-opacity-disabled: 0.5;
|
|
163
|
+
--sk-opacity-loading: 0.6;
|
|
161
164
|
/* ===================================================================
|
|
162
165
|
* Color Mixing Percentages
|
|
163
166
|
* Tokenized mixing amounts for color-mix() function
|
|
@@ -351,6 +354,12 @@
|
|
|
351
354
|
--sk-transition-easing-ease-in: ease-in;
|
|
352
355
|
--sk-transition-easing-ease-out: ease-out;
|
|
353
356
|
--sk-transition-easing-ease-in-out: ease-in-out;
|
|
357
|
+
/* ===================================================================
|
|
358
|
+
* Default Aliases
|
|
359
|
+
* Generic names that resolve to the most common values
|
|
360
|
+
* =================================================================== */
|
|
361
|
+
--sk-transition-duration-base: var(--sk-transition-duration-normal);
|
|
362
|
+
--sk-transition-easing: var(--sk-transition-easing-ease-out);
|
|
354
363
|
/* ===================================================================
|
|
355
364
|
* Common Transition Combinations
|
|
356
365
|
* Convenience tokens for frequently used transitions
|
|
@@ -652,6 +661,10 @@
|
|
|
652
661
|
*
|
|
653
662
|
* Background and text colors for surfaces and general use.
|
|
654
663
|
* These provide a consistent color system independent of component kinds.
|
|
664
|
+
*
|
|
665
|
+
* Defaults are defined on :root as fallbacks. Themes can override any of these
|
|
666
|
+
* via [data-scheme] selectors. The [data-scheme] rule also applies background
|
|
667
|
+
* and text color so that any themed element gets the correct surface treatment.
|
|
655
668
|
*/
|
|
656
669
|
:root {
|
|
657
670
|
/* ===================================================================
|
|
@@ -677,6 +690,16 @@
|
|
|
677
690
|
--sk-border-subtle: var(--sk-color-gray-80); /* Subtle borders/dividers */
|
|
678
691
|
}
|
|
679
692
|
|
|
693
|
+
/**
|
|
694
|
+
* Apply text color to any themed element so descendants inherit the correct
|
|
695
|
+
* color without needing to set it themselves. Background is intentionally NOT
|
|
696
|
+
* set here — page-level containers like SkPage handle their own background
|
|
697
|
+
* via the surface tokens.
|
|
698
|
+
*/
|
|
699
|
+
[data-scheme] {
|
|
700
|
+
color: var(--sk-text-primary);
|
|
701
|
+
}
|
|
702
|
+
|
|
680
703
|
/**
|
|
681
704
|
* Semantic Tokens - Interactive
|
|
682
705
|
*
|
|
@@ -1215,7 +1238,7 @@
|
|
|
1215
1238
|
body {
|
|
1216
1239
|
margin: 0;
|
|
1217
1240
|
min-height: 100svh;
|
|
1218
|
-
color: var(--sk-
|
|
1241
|
+
color: var(--sk-text-primary);
|
|
1219
1242
|
}
|
|
1220
1243
|
img,
|
|
1221
1244
|
svg,
|
|
@@ -1228,8 +1251,8 @@
|
|
|
1228
1251
|
font: inherit;
|
|
1229
1252
|
}
|
|
1230
1253
|
:focus-visible {
|
|
1231
|
-
outline: var(--sk-focus-
|
|
1232
|
-
outline-offset: var(--sk-focus-
|
|
1254
|
+
outline: var(--sk-focus-ring-width) solid currentColor;
|
|
1255
|
+
outline-offset: var(--sk-focus-ring-offset);
|
|
1233
1256
|
}
|
|
1234
1257
|
h1,
|
|
1235
1258
|
h2,
|
|
@@ -1390,7 +1413,7 @@
|
|
|
1390
1413
|
min-height: var(--sk-scrollbar-thumb-min-size);
|
|
1391
1414
|
min-width: var(--sk-scrollbar-thumb-min-size);
|
|
1392
1415
|
/* Smooth transitions for interactive states */
|
|
1393
|
-
transition: background-color var(--sk-transition-duration-fast) var(--sk-transition-easing-
|
|
1416
|
+
transition: background-color var(--sk-transition-duration-fast) var(--sk-transition-easing-ease-out), border-color var(--sk-transition-duration-fast) var(--sk-transition-easing-ease-out);
|
|
1394
1417
|
}
|
|
1395
1418
|
/* Hover State */
|
|
1396
1419
|
*::-webkit-scrollbar-thumb:hover {
|
|
@@ -2073,8 +2096,8 @@
|
|
|
2073
2096
|
--sk-button-disabled-opacity: var(--sk-opacity-disabled);
|
|
2074
2097
|
--sk-button-loading-opacity: var(--sk-opacity-loading);
|
|
2075
2098
|
--sk-button-outline-bg: rgba(5, 5, 5, 0.15);
|
|
2076
|
-
--sk-button-subtle-opacity:
|
|
2077
|
-
--sk-button-subtle-opacity-hover:
|
|
2099
|
+
--sk-button-subtle-opacity: 0.35;
|
|
2100
|
+
--sk-button-subtle-opacity-hover: 0.65;
|
|
2078
2101
|
--sk-button-subtle-border-opacity: var(--sk-opacity-subtle-border);
|
|
2079
2102
|
--sk-button-subtle-border-opacity-hover: var(--sk-opacity-subtle-border-hover);
|
|
2080
2103
|
--sk-button-glow-size: 8px;
|
|
@@ -3028,9 +3051,8 @@
|
|
|
3028
3051
|
color: var(--sk-button-color-base);
|
|
3029
3052
|
}
|
|
3030
3053
|
.sk-button.sk-subtle.sk-neutral:hover:not(:disabled) {
|
|
3031
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3032
3054
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3033
|
-
background-color:
|
|
3055
|
+
background-color: var(--sk-button-bg-hover);
|
|
3034
3056
|
}
|
|
3035
3057
|
.sk-button.sk-subtle.sk-neutral:active:not(:disabled) {
|
|
3036
3058
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3047,9 +3069,8 @@
|
|
|
3047
3069
|
color: var(--sk-button-color-base);
|
|
3048
3070
|
}
|
|
3049
3071
|
.sk-button.sk-subtle.sk-primary:hover:not(:disabled) {
|
|
3050
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3051
3072
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3052
|
-
background-color:
|
|
3073
|
+
background-color: var(--sk-button-bg-hover);
|
|
3053
3074
|
}
|
|
3054
3075
|
.sk-button.sk-subtle.sk-primary:active:not(:disabled) {
|
|
3055
3076
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3066,9 +3087,8 @@
|
|
|
3066
3087
|
color: var(--sk-button-color-base);
|
|
3067
3088
|
}
|
|
3068
3089
|
.sk-button.sk-subtle.sk-accent:hover:not(:disabled) {
|
|
3069
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3070
3090
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3071
|
-
background-color:
|
|
3091
|
+
background-color: var(--sk-button-bg-hover);
|
|
3072
3092
|
}
|
|
3073
3093
|
.sk-button.sk-subtle.sk-accent:active:not(:disabled) {
|
|
3074
3094
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3085,9 +3105,8 @@
|
|
|
3085
3105
|
color: var(--sk-button-color-base);
|
|
3086
3106
|
}
|
|
3087
3107
|
.sk-button.sk-subtle.sk-info:hover:not(:disabled) {
|
|
3088
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3089
3108
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3090
|
-
background-color:
|
|
3109
|
+
background-color: var(--sk-button-bg-hover);
|
|
3091
3110
|
}
|
|
3092
3111
|
.sk-button.sk-subtle.sk-info:active:not(:disabled) {
|
|
3093
3112
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3104,9 +3123,8 @@
|
|
|
3104
3123
|
color: var(--sk-button-color-base);
|
|
3105
3124
|
}
|
|
3106
3125
|
.sk-button.sk-subtle.sk-success:hover:not(:disabled) {
|
|
3107
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3108
3126
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3109
|
-
background-color:
|
|
3127
|
+
background-color: var(--sk-button-bg-hover);
|
|
3110
3128
|
}
|
|
3111
3129
|
.sk-button.sk-subtle.sk-success:active:not(:disabled) {
|
|
3112
3130
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3123,9 +3141,8 @@
|
|
|
3123
3141
|
color: var(--sk-button-color-base);
|
|
3124
3142
|
}
|
|
3125
3143
|
.sk-button.sk-subtle.sk-warning:hover:not(:disabled) {
|
|
3126
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3127
3144
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3128
|
-
background-color:
|
|
3145
|
+
background-color: var(--sk-button-bg-hover);
|
|
3129
3146
|
}
|
|
3130
3147
|
.sk-button.sk-subtle.sk-warning:active:not(:disabled) {
|
|
3131
3148
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3142,9 +3159,8 @@
|
|
|
3142
3159
|
color: var(--sk-button-color-base);
|
|
3143
3160
|
}
|
|
3144
3161
|
.sk-button.sk-subtle.sk-danger:hover:not(:disabled) {
|
|
3145
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3146
3162
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3147
|
-
background-color:
|
|
3163
|
+
background-color: var(--sk-button-bg-hover);
|
|
3148
3164
|
}
|
|
3149
3165
|
.sk-button.sk-subtle.sk-danger:active:not(:disabled) {
|
|
3150
3166
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3161,9 +3177,8 @@
|
|
|
3161
3177
|
color: var(--sk-button-color-base);
|
|
3162
3178
|
}
|
|
3163
3179
|
.sk-button.sk-subtle.sk-boulder:hover:not(:disabled) {
|
|
3164
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3165
3180
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3166
|
-
background-color:
|
|
3181
|
+
background-color: var(--sk-button-bg-hover);
|
|
3167
3182
|
}
|
|
3168
3183
|
.sk-button.sk-subtle.sk-boulder:active:not(:disabled) {
|
|
3169
3184
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3180,9 +3195,8 @@
|
|
|
3180
3195
|
color: var(--sk-button-color-base);
|
|
3181
3196
|
}
|
|
3182
3197
|
.sk-button.sk-subtle.sk-neon-blue:hover:not(:disabled) {
|
|
3183
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3184
3198
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3185
|
-
background-color:
|
|
3199
|
+
background-color: var(--sk-button-bg-hover);
|
|
3186
3200
|
}
|
|
3187
3201
|
.sk-button.sk-subtle.sk-neon-blue:active:not(:disabled) {
|
|
3188
3202
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3199,9 +3213,8 @@
|
|
|
3199
3213
|
color: var(--sk-button-color-base);
|
|
3200
3214
|
}
|
|
3201
3215
|
.sk-button.sk-subtle.sk-light-blue:hover:not(:disabled) {
|
|
3202
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3203
3216
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3204
|
-
background-color:
|
|
3217
|
+
background-color: var(--sk-button-bg-hover);
|
|
3205
3218
|
}
|
|
3206
3219
|
.sk-button.sk-subtle.sk-light-blue:active:not(:disabled) {
|
|
3207
3220
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3218,9 +3231,8 @@
|
|
|
3218
3231
|
color: var(--sk-button-color-base);
|
|
3219
3232
|
}
|
|
3220
3233
|
.sk-button.sk-subtle.sk-neon-orange:hover:not(:disabled) {
|
|
3221
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3222
3234
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3223
|
-
background-color:
|
|
3235
|
+
background-color: var(--sk-button-bg-hover);
|
|
3224
3236
|
}
|
|
3225
3237
|
.sk-button.sk-subtle.sk-neon-orange:active:not(:disabled) {
|
|
3226
3238
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3237,9 +3249,8 @@
|
|
|
3237
3249
|
color: var(--sk-button-color-base);
|
|
3238
3250
|
}
|
|
3239
3251
|
.sk-button.sk-subtle.sk-neon-purple:hover:not(:disabled) {
|
|
3240
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3241
3252
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3242
|
-
background-color:
|
|
3253
|
+
background-color: var(--sk-button-bg-hover);
|
|
3243
3254
|
}
|
|
3244
3255
|
.sk-button.sk-subtle.sk-neon-purple:active:not(:disabled) {
|
|
3245
3256
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3256,9 +3267,8 @@
|
|
|
3256
3267
|
color: var(--sk-button-color-base);
|
|
3257
3268
|
}
|
|
3258
3269
|
.sk-button.sk-subtle.sk-neon-green:hover:not(:disabled) {
|
|
3259
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3260
3270
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3261
|
-
background-color:
|
|
3271
|
+
background-color: var(--sk-button-bg-hover);
|
|
3262
3272
|
}
|
|
3263
3273
|
.sk-button.sk-subtle.sk-neon-green:active:not(:disabled) {
|
|
3264
3274
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3275,9 +3285,8 @@
|
|
|
3275
3285
|
color: var(--sk-button-color-base);
|
|
3276
3286
|
}
|
|
3277
3287
|
.sk-button.sk-subtle.sk-neon-mint:hover:not(:disabled) {
|
|
3278
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3279
3288
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3280
|
-
background-color:
|
|
3289
|
+
background-color: var(--sk-button-bg-hover);
|
|
3281
3290
|
}
|
|
3282
3291
|
.sk-button.sk-subtle.sk-neon-mint:active:not(:disabled) {
|
|
3283
3292
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3294,9 +3303,8 @@
|
|
|
3294
3303
|
color: var(--sk-button-color-base);
|
|
3295
3304
|
}
|
|
3296
3305
|
.sk-button.sk-subtle.sk-neon-pink:hover:not(:disabled) {
|
|
3297
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3298
3306
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3299
|
-
background-color:
|
|
3307
|
+
background-color: var(--sk-button-bg-hover);
|
|
3300
3308
|
}
|
|
3301
3309
|
.sk-button.sk-subtle.sk-neon-pink:active:not(:disabled) {
|
|
3302
3310
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3313,9 +3321,8 @@
|
|
|
3313
3321
|
color: var(--sk-button-color-base);
|
|
3314
3322
|
}
|
|
3315
3323
|
.sk-button.sk-subtle.sk-yellow:hover:not(:disabled) {
|
|
3316
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3317
3324
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3318
|
-
background-color:
|
|
3325
|
+
background-color: var(--sk-button-bg-hover);
|
|
3319
3326
|
}
|
|
3320
3327
|
.sk-button.sk-subtle.sk-yellow:active:not(:disabled) {
|
|
3321
3328
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3332,9 +3339,8 @@
|
|
|
3332
3339
|
color: var(--sk-button-color-base);
|
|
3333
3340
|
}
|
|
3334
3341
|
.sk-button.sk-subtle.sk-red:hover:not(:disabled) {
|
|
3335
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
3336
3342
|
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
3337
|
-
background-color:
|
|
3343
|
+
background-color: var(--sk-button-bg-hover);
|
|
3338
3344
|
}
|
|
3339
3345
|
.sk-button.sk-subtle.sk-red:active:not(:disabled) {
|
|
3340
3346
|
--sk-button-border-color: var(--sk-button-border-base);
|
|
@@ -3342,6 +3348,9 @@
|
|
|
3342
3348
|
background-color: var(--sk-button-bg);
|
|
3343
3349
|
color: var(--sk-button-text);
|
|
3344
3350
|
}
|
|
3351
|
+
.sk-button.sk-subtle:disabled, .sk-button.sk-subtle.sk-loading {
|
|
3352
|
+
background-color: oklch(from var(--sk-button-bg) l c h/0.45);
|
|
3353
|
+
}
|
|
3345
3354
|
.sk-button.sk-subtle.sk-neutral {
|
|
3346
3355
|
--sk-button-border-color: oklch(
|
|
3347
3356
|
from color-mix(in oklch, var(--sk-button-border-base), white 50%)
|
|
@@ -4058,14 +4067,38 @@
|
|
|
4058
4067
|
.sk-button.sk-loading .sk-button-content {
|
|
4059
4068
|
opacity: var(--sk-button-loading-opacity);
|
|
4060
4069
|
}
|
|
4061
|
-
.sk-button.sk-pressed.sk-outline, .sk-button.sk-pressed.sk-ghost {
|
|
4062
|
-
background-color: oklch(from var(--sk-button-bg) l c h/var(--sk-button-subtle-opacity));
|
|
4063
|
-
}
|
|
4064
4070
|
.sk-button.sk-pressed.sk-solid {
|
|
4065
|
-
|
|
4071
|
+
--sk-button-border-color: var(--sk-button-border-hover);
|
|
4072
|
+
background-color: var(--sk-button-bg-hover);
|
|
4073
|
+
color: var(--sk-button-text);
|
|
4074
|
+
}
|
|
4075
|
+
.sk-button.sk-pressed.sk-solid:hover:not(:disabled) {
|
|
4076
|
+
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
4077
|
+
background-color: color-mix(in oklch, var(--sk-button-bg) 70%, white 30%);
|
|
4078
|
+
}
|
|
4079
|
+
.sk-button.sk-pressed.sk-outline {
|
|
4080
|
+
--sk-button-border-color: var(--sk-button-border-hover);
|
|
4081
|
+
background-color: var(--sk-button-bg);
|
|
4082
|
+
color: var(--sk-button-text);
|
|
4066
4083
|
}
|
|
4067
4084
|
.sk-button.sk-pressed.sk-subtle {
|
|
4085
|
+
--sk-button-border-color: transparent;
|
|
4068
4086
|
background-color: var(--sk-button-bg);
|
|
4087
|
+
color: var(--sk-button-text);
|
|
4088
|
+
}
|
|
4089
|
+
.sk-button.sk-pressed.sk-subtle:hover:not(:disabled) {
|
|
4090
|
+
--sk-button-border-color: transparent;
|
|
4091
|
+
--sk-button-glow-shadow: 0 0 var(--sk-button-glow-size) oklch(from var(--sk-button-border-base) l c h / var(--sk-button-glow-opacity));
|
|
4092
|
+
background-color: var(--sk-button-bg-hover);
|
|
4093
|
+
}
|
|
4094
|
+
.sk-button.sk-pressed.sk-ghost {
|
|
4095
|
+
--sk-button-border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
|
|
4096
|
+
border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
|
|
4097
|
+
background-color: var(--sk-button-outline-bg);
|
|
4098
|
+
color: var(--sk-button-text);
|
|
4099
|
+
}
|
|
4100
|
+
.sk-button.sk-pressed.sk-link {
|
|
4101
|
+
color: var(--sk-button-text);
|
|
4069
4102
|
}
|
|
4070
4103
|
.sk-button .sk-button-loader {
|
|
4071
4104
|
position: absolute;
|
|
@@ -6252,8 +6285,8 @@
|
|
|
6252
6285
|
display: flex;
|
|
6253
6286
|
flex-direction: column;
|
|
6254
6287
|
min-height: 100vh;
|
|
6255
|
-
background: var(--sk-
|
|
6256
|
-
color: var(--sk-
|
|
6288
|
+
background: var(--sk-surface-base);
|
|
6289
|
+
color: var(--sk-text-primary);
|
|
6257
6290
|
}
|
|
6258
6291
|
.sk-page .sk-page-header {
|
|
6259
6292
|
flex-shrink: 0;
|
package/dist/sleekspace-ui.es.js
CHANGED
|
@@ -15237,7 +15237,7 @@ const _hoisted_5$6 = {
|
|
|
15237
15237
|
stroke: "currentColor",
|
|
15238
15238
|
"stroke-width": "2"
|
|
15239
15239
|
};
|
|
15240
|
-
const _hoisted_6$
|
|
15240
|
+
const _hoisted_6$4 = { class: "sk-alert-content" };
|
|
15241
15241
|
const _sfc_main$P = /* @__PURE__ */ defineComponent({
|
|
15242
15242
|
__name: "SkAlert",
|
|
15243
15243
|
props: {
|
|
@@ -15335,7 +15335,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
|
|
|
15335
15335
|
])])) : createCommentVNode("", true)
|
|
15336
15336
|
])
|
|
15337
15337
|
])) : createCommentVNode("", true),
|
|
15338
|
-
createElementVNode("div", _hoisted_6$
|
|
15338
|
+
createElementVNode("div", _hoisted_6$4, [
|
|
15339
15339
|
renderSlot(_ctx.$slots, "default")
|
|
15340
15340
|
])
|
|
15341
15341
|
], 6);
|
|
@@ -17008,17 +17008,38 @@ const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
|
17008
17008
|
}
|
|
17009
17009
|
});
|
|
17010
17010
|
const SkNumberInput = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-b589687f"]]);
|
|
17011
|
-
const
|
|
17011
|
+
const ThemeSymbol = Symbol("SkTheme");
|
|
17012
|
+
function provideTheme(initialTheme = "greyscale") {
|
|
17013
|
+
const currentTheme = ref(initialTheme);
|
|
17014
|
+
const setTheme = (theme) => {
|
|
17015
|
+
currentTheme.value = theme;
|
|
17016
|
+
};
|
|
17017
|
+
const context2 = {
|
|
17018
|
+
currentTheme,
|
|
17019
|
+
setTheme
|
|
17020
|
+
};
|
|
17021
|
+
provide(ThemeSymbol, context2);
|
|
17022
|
+
return context2;
|
|
17023
|
+
}
|
|
17024
|
+
function useTheme() {
|
|
17025
|
+
const context2 = inject(ThemeSymbol);
|
|
17026
|
+
if (!context2) {
|
|
17027
|
+
throw new Error("useTheme must be called within an SkTheme component");
|
|
17028
|
+
}
|
|
17029
|
+
return context2;
|
|
17030
|
+
}
|
|
17031
|
+
const _hoisted_1$e = ["data-scheme"];
|
|
17032
|
+
const _hoisted_2$8 = {
|
|
17012
17033
|
key: 0,
|
|
17013
17034
|
class: "sk-page-header"
|
|
17014
17035
|
};
|
|
17015
|
-
const
|
|
17016
|
-
const
|
|
17036
|
+
const _hoisted_3$6 = { class: "sk-page-main" };
|
|
17037
|
+
const _hoisted_4$5 = {
|
|
17017
17038
|
key: 0,
|
|
17018
17039
|
class: "sk-page-sidebar"
|
|
17019
17040
|
};
|
|
17020
|
-
const
|
|
17021
|
-
const
|
|
17041
|
+
const _hoisted_5$3 = { class: "sk-page-content" };
|
|
17042
|
+
const _hoisted_6$3 = {
|
|
17022
17043
|
key: 1,
|
|
17023
17044
|
class: "sk-page-footer"
|
|
17024
17045
|
};
|
|
@@ -17028,7 +17049,8 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
17028
17049
|
sidebarPosition: { default: "left" },
|
|
17029
17050
|
fixedHeader: { type: Boolean, default: false },
|
|
17030
17051
|
fixedFooter: { type: Boolean, default: false },
|
|
17031
|
-
sidebarWidth: { default: void 0 }
|
|
17052
|
+
sidebarWidth: { default: void 0 },
|
|
17053
|
+
theme: { default: void 0 }
|
|
17032
17054
|
},
|
|
17033
17055
|
setup(__props) {
|
|
17034
17056
|
const props = __props;
|
|
@@ -17046,30 +17068,40 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
17046
17068
|
"--sk-page-sidebar-width": props.sidebarWidth
|
|
17047
17069
|
};
|
|
17048
17070
|
});
|
|
17071
|
+
if (props.theme) {
|
|
17072
|
+
const { currentTheme, setTheme } = provideTheme(props.theme);
|
|
17073
|
+
provide("sk-theme", currentTheme);
|
|
17074
|
+
watch(() => props.theme, (newTheme) => {
|
|
17075
|
+
if (newTheme) {
|
|
17076
|
+
setTheme(newTheme);
|
|
17077
|
+
}
|
|
17078
|
+
});
|
|
17079
|
+
}
|
|
17049
17080
|
return (_ctx, _cache) => {
|
|
17050
17081
|
return openBlock(), createElementBlock("div", {
|
|
17051
17082
|
class: normalizeClass(classes.value),
|
|
17052
|
-
style: normalizeStyle(customStyles.value)
|
|
17083
|
+
style: normalizeStyle(customStyles.value),
|
|
17084
|
+
"data-scheme": __props.theme
|
|
17053
17085
|
}, [
|
|
17054
|
-
_ctx.$slots.header ? (openBlock(), createElementBlock("header",
|
|
17086
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("header", _hoisted_2$8, [
|
|
17055
17087
|
renderSlot(_ctx.$slots, "header", {}, void 0, true)
|
|
17056
17088
|
])) : createCommentVNode("", true),
|
|
17057
|
-
createElementVNode("div",
|
|
17058
|
-
_ctx.$slots.sidebar ? (openBlock(), createElementBlock("aside",
|
|
17089
|
+
createElementVNode("div", _hoisted_3$6, [
|
|
17090
|
+
_ctx.$slots.sidebar ? (openBlock(), createElementBlock("aside", _hoisted_4$5, [
|
|
17059
17091
|
renderSlot(_ctx.$slots, "sidebar", {}, void 0, true)
|
|
17060
17092
|
])) : createCommentVNode("", true),
|
|
17061
|
-
createElementVNode("main",
|
|
17093
|
+
createElementVNode("main", _hoisted_5$3, [
|
|
17062
17094
|
renderSlot(_ctx.$slots, "default", {}, void 0, true)
|
|
17063
17095
|
])
|
|
17064
17096
|
]),
|
|
17065
|
-
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer",
|
|
17097
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("footer", _hoisted_6$3, [
|
|
17066
17098
|
renderSlot(_ctx.$slots, "footer", {}, void 0, true)
|
|
17067
17099
|
])) : createCommentVNode("", true)
|
|
17068
|
-
],
|
|
17100
|
+
], 14, _hoisted_1$e);
|
|
17069
17101
|
};
|
|
17070
17102
|
}
|
|
17071
17103
|
});
|
|
17072
|
-
const SkPage = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-
|
|
17104
|
+
const SkPage = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-ad672949"]]);
|
|
17073
17105
|
const _hoisted_1$d = ["disabled", "aria-label", "aria-current"];
|
|
17074
17106
|
const _hoisted_2$7 = { key: 0 };
|
|
17075
17107
|
const _hoisted_3$5 = { key: 1 };
|
|
@@ -18877,26 +18909,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
18877
18909
|
};
|
|
18878
18910
|
}
|
|
18879
18911
|
});
|
|
18880
|
-
const ThemeSymbol = Symbol("SkTheme");
|
|
18881
|
-
function provideTheme(initialTheme = "greyscale") {
|
|
18882
|
-
const currentTheme = ref(initialTheme);
|
|
18883
|
-
const setTheme = (theme) => {
|
|
18884
|
-
currentTheme.value = theme;
|
|
18885
|
-
};
|
|
18886
|
-
const context2 = {
|
|
18887
|
-
currentTheme,
|
|
18888
|
-
setTheme
|
|
18889
|
-
};
|
|
18890
|
-
provide(ThemeSymbol, context2);
|
|
18891
|
-
return context2;
|
|
18892
|
-
}
|
|
18893
|
-
function useTheme() {
|
|
18894
|
-
const context2 = inject(ThemeSymbol);
|
|
18895
|
-
if (!context2) {
|
|
18896
|
-
throw new Error("useTheme must be called within an SkTheme component");
|
|
18897
|
-
}
|
|
18898
|
-
return context2;
|
|
18899
|
-
}
|
|
18900
18912
|
const _hoisted_1 = ["data-scheme"];
|
|
18901
18913
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
18902
18914
|
__name: "SkTheme",
|