@skewedaspect/sleekspace-ui 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Card/SkCard.vue.d.ts +13 -1
- package/dist/components/Panel/SkPanel.vue.d.ts +15 -1
- package/dist/components/Panel/types.d.ts +1 -0
- package/dist/components/Select/SkSelect.vue.d.ts +61 -0
- package/dist/components/Select/SkSelectItem.vue.d.ts +134 -0
- package/dist/components/Select/SkSelectSeparator.vue.d.ts +2 -0
- package/dist/components/Select/index.d.ts +4 -0
- package/dist/components/Select/types.d.ts +3 -0
- package/dist/components/Sidebar/SkSidebar.vue.d.ts +8 -1
- package/dist/components/Sidebar/types.d.ts +1 -0
- package/dist/components/Skeleton/SkSkeleton.vue.d.ts +1 -1
- package/dist/components/Theme/types.d.ts +18 -3
- package/dist/index.d.ts +7 -0
- package/dist/sleekspace-ui.css +494 -74
- package/dist/sleekspace-ui.es.js +2014 -283
- package/dist/sleekspace-ui.umd.js +2013 -282
- package/docs/guides/design-tokens/advanced.md +6 -1
- package/docs/guides/theming.md +11 -1
- package/package.json +1 -1
- package/src/components/Card/SkCard.vue +17 -1
- package/src/components/Panel/SkPanel.vue +29 -4
- package/src/components/Panel/types.ts +3 -0
- package/src/components/Select/SkSelect.vue +210 -0
- package/src/components/Select/SkSelectItem.vue +112 -0
- package/src/components/Select/SkSelectSeparator.vue +40 -0
- package/src/components/Select/index.ts +10 -0
- package/src/components/Select/types.ts +10 -0
- package/src/components/Sidebar/SkSidebar.vue +39 -2
- package/src/components/Sidebar/types.ts +2 -0
- package/src/components/Theme/types.ts +20 -3
- package/src/global.d.ts +2 -0
- package/src/index.ts +10 -0
- package/src/styles/components/_button.scss +45 -9
- package/src/styles/components/_card.scss +45 -9
- package/src/styles/components/_index.scss +1 -0
- package/src/styles/components/_listbox.scss +1 -0
- package/src/styles/components/_panel.scss +119 -13
- package/src/styles/components/_select.scss +439 -0
- package/src/styles/components/_sidebar.scss +83 -4
- package/src/styles/themes/README.md +6 -2
- package/web-types.json +148 -1
|
@@ -2,12 +2,29 @@
|
|
|
2
2
|
// Theme Component Types
|
|
3
3
|
//----------------------------------------------------------------------------------------------------------------------
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Registry of available theme names. Augment this interface to register custom themes:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* declare module '@skewedaspect/sleekspace-ui' {
|
|
10
|
+
* interface SkThemeNameMap {
|
|
11
|
+
* ocean : true;
|
|
12
|
+
* midnight : true;
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export interface SkThemeNameMap
|
|
18
|
+
{
|
|
19
|
+
greyscale : true;
|
|
20
|
+
colorful : true;
|
|
21
|
+
}
|
|
22
|
+
|
|
5
23
|
/**
|
|
6
24
|
* Available theme names that control the overall color scheme of the application.
|
|
7
|
-
*
|
|
8
|
-
* - 'colorful': A vibrant theme with saturated colors and stronger contrasts
|
|
25
|
+
* Derived from {@link SkThemeNameMap} — augment that interface to add custom themes.
|
|
9
26
|
*/
|
|
10
|
-
export type SkThemeName =
|
|
27
|
+
export type SkThemeName = keyof SkThemeNameMap;
|
|
11
28
|
|
|
12
29
|
//----------------------------------------------------------------------------------------------------------------------
|
|
13
30
|
|
package/src/global.d.ts
CHANGED
|
@@ -49,6 +49,8 @@ declare module '@vue/runtime-core' {
|
|
|
49
49
|
SkProgress: DefineComponent<import('./components/Progress/SkProgress.vue').SkProgressComponentProps>;
|
|
50
50
|
SkRadio: DefineComponent<import('./components/Radio/SkRadio.vue').SkRadioComponentProps>;
|
|
51
51
|
SkRadioGroup: DefineComponent<import('./components/Radio/SkRadioGroup.vue').SkRadioGroupComponentProps>;
|
|
52
|
+
SkSelect: DefineComponent<import('./components/Select/SkSelect.vue').SkSelectComponentProps>;
|
|
53
|
+
SkSelectItem: DefineComponent<import('./components/Select/SkSelectItem.vue').SkSelectItemComponentProps>;
|
|
52
54
|
SkSidebar: DefineComponent<import('./components/Sidebar/SkSidebar.vue').SkSidebarComponentProps>;
|
|
53
55
|
SkSidebarItem: DefineComponent<import('./components/Sidebar/SkSidebarItem.vue').SkSidebarItemComponentProps>;
|
|
54
56
|
SkSidebarSection: DefineComponent<import('./components/Sidebar/SkSidebarSection.vue').SkSidebarSectionComponentProps>;
|
package/src/index.ts
CHANGED
|
@@ -50,6 +50,9 @@ import SkPopover, { type SkPopoverComponentProps } from './components/Popover/Sk
|
|
|
50
50
|
import SkProgress, { type SkProgressComponentProps } from './components/Progress/SkProgress.vue';
|
|
51
51
|
import SkRadio, { type SkRadioComponentProps } from './components/Radio/SkRadio.vue';
|
|
52
52
|
import SkRadioGroup, { type SkRadioGroupComponentProps } from './components/Radio/SkRadioGroup.vue';
|
|
53
|
+
import SkSelect, { type SkSelectComponentProps } from './components/Select/SkSelect.vue';
|
|
54
|
+
import SkSelectItem, { type SkSelectItemComponentProps } from './components/Select/SkSelectItem.vue';
|
|
55
|
+
import SkSelectSeparator from './components/Select/SkSelectSeparator.vue';
|
|
53
56
|
import SkSidebar, { type SkSidebarComponentProps } from './components/Sidebar/SkSidebar.vue';
|
|
54
57
|
import SkSidebarItem, { type SkSidebarItemComponentProps } from './components/Sidebar/SkSidebarItem.vue';
|
|
55
58
|
import SkSidebarSection, { type SkSidebarSectionComponentProps } from './components/Sidebar/SkSidebarSection.vue';
|
|
@@ -108,6 +111,7 @@ export * from './components/Panel/types';
|
|
|
108
111
|
export * from './components/Popover/types';
|
|
109
112
|
export * from './components/Progress/types';
|
|
110
113
|
export * from './components/Radio/types';
|
|
114
|
+
export * from './components/Select/types';
|
|
111
115
|
export * from './components/Sidebar/types';
|
|
112
116
|
export * from './components/Skeleton/types';
|
|
113
117
|
export * from './components/Slider/types';
|
|
@@ -166,6 +170,9 @@ export { SkPopover, type SkPopoverComponentProps };
|
|
|
166
170
|
export { SkProgress, type SkProgressComponentProps };
|
|
167
171
|
export { SkRadio, type SkRadioComponentProps };
|
|
168
172
|
export { SkRadioGroup, type SkRadioGroupComponentProps };
|
|
173
|
+
export { SkSelect, type SkSelectComponentProps };
|
|
174
|
+
export { SkSelectItem, type SkSelectItemComponentProps };
|
|
175
|
+
export { SkSelectSeparator };
|
|
169
176
|
export { SkSidebar, type SkSidebarComponentProps };
|
|
170
177
|
export { SkSidebarItem, type SkSidebarItemComponentProps };
|
|
171
178
|
export { SkSidebarSection, type SkSidebarSectionComponentProps };
|
|
@@ -229,6 +236,9 @@ const SleekSpaceUI : Plugin = {
|
|
|
229
236
|
app.component('SkProgress', SkProgress);
|
|
230
237
|
app.component('SkRadio', SkRadio);
|
|
231
238
|
app.component('SkRadioGroup', SkRadioGroup);
|
|
239
|
+
app.component('SkSelect', SkSelect);
|
|
240
|
+
app.component('SkSelectItem', SkSelectItem);
|
|
241
|
+
app.component('SkSelectSeparator', SkSelectSeparator);
|
|
232
242
|
app.component('SkSidebar', SkSidebar);
|
|
233
243
|
app.component('SkSidebarItem', SkSidebarItem);
|
|
234
244
|
app.component('SkSidebarSection', SkSidebarSection);
|
|
@@ -103,10 +103,10 @@
|
|
|
103
103
|
--sk-button-outline-bg: rgba(5, 5, 5, 0.15);
|
|
104
104
|
|
|
105
105
|
/// Subtle variant background opacity (references global foundation token)
|
|
106
|
-
--sk-button-subtle-opacity:
|
|
106
|
+
--sk-button-subtle-opacity: 0.35;
|
|
107
107
|
|
|
108
108
|
/// Subtle variant hover background opacity (references global foundation token)
|
|
109
|
-
--sk-button-subtle-opacity-hover:
|
|
109
|
+
--sk-button-subtle-opacity-hover: 0.65;
|
|
110
110
|
|
|
111
111
|
/// Subtle variant border opacity (references global foundation token)
|
|
112
112
|
--sk-button-subtle-border-opacity: var(--sk-opacity-subtle-border);
|
|
@@ -260,10 +260,9 @@
|
|
|
260
260
|
|
|
261
261
|
&:hover:not(:disabled)
|
|
262
262
|
{
|
|
263
|
-
--sk-button-border-color: oklch(from var(--sk-button-border-base) l c h / var(--sk-button-subtle-border-opacity-hover));
|
|
264
263
|
--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));
|
|
265
264
|
|
|
266
|
-
background-color:
|
|
265
|
+
background-color: var(--sk-button-bg-hover);
|
|
267
266
|
}
|
|
268
267
|
|
|
269
268
|
&:active:not(:disabled)
|
|
@@ -534,6 +533,12 @@
|
|
|
534
533
|
@include button-subtle-kind($kind);
|
|
535
534
|
}
|
|
536
535
|
|
|
536
|
+
&:disabled,
|
|
537
|
+
&.sk-loading
|
|
538
|
+
{
|
|
539
|
+
background-color: oklch(from var(--sk-button-bg) l c h / 0.45);
|
|
540
|
+
}
|
|
541
|
+
|
|
537
542
|
// Special case: neutral text and border are lighter (halfway to white) for better differentiation
|
|
538
543
|
&.sk-neutral
|
|
539
544
|
{
|
|
@@ -624,20 +629,51 @@
|
|
|
624
629
|
|
|
625
630
|
&.sk-pressed
|
|
626
631
|
{
|
|
627
|
-
&.sk-
|
|
628
|
-
&.sk-ghost
|
|
632
|
+
&.sk-solid
|
|
629
633
|
{
|
|
630
|
-
|
|
634
|
+
--sk-button-border-color: var(--sk-button-border-hover);
|
|
635
|
+
background-color: var(--sk-button-bg-hover);
|
|
636
|
+
color: var(--sk-button-text);
|
|
637
|
+
|
|
638
|
+
&:hover:not(:disabled)
|
|
639
|
+
{
|
|
640
|
+
--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));
|
|
641
|
+
background-color: color-mix(in oklch, var(--sk-button-bg) 70%, white 30%);
|
|
642
|
+
}
|
|
631
643
|
}
|
|
632
644
|
|
|
633
|
-
&.sk-
|
|
645
|
+
&.sk-outline
|
|
634
646
|
{
|
|
635
|
-
|
|
647
|
+
--sk-button-border-color: var(--sk-button-border-hover);
|
|
648
|
+
background-color: var(--sk-button-bg);
|
|
649
|
+
color: var(--sk-button-text);
|
|
636
650
|
}
|
|
637
651
|
|
|
638
652
|
&.sk-subtle
|
|
639
653
|
{
|
|
654
|
+
--sk-button-border-color: transparent;
|
|
640
655
|
background-color: var(--sk-button-bg);
|
|
656
|
+
color: var(--sk-button-text);
|
|
657
|
+
|
|
658
|
+
&:hover:not(:disabled)
|
|
659
|
+
{
|
|
660
|
+
--sk-button-border-color: transparent;
|
|
661
|
+
--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));
|
|
662
|
+
background-color: var(--sk-button-bg-hover);
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
&.sk-ghost
|
|
667
|
+
{
|
|
668
|
+
--sk-button-border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
|
|
669
|
+
border-color: color-mix(in oklch, var(--sk-button-border-base) 50%, transparent 50%);
|
|
670
|
+
background-color: var(--sk-button-outline-bg);
|
|
671
|
+
color: var(--sk-button-text);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
&.sk-link
|
|
675
|
+
{
|
|
676
|
+
color: var(--sk-button-text);
|
|
641
677
|
}
|
|
642
678
|
}
|
|
643
679
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
//----------------------------------------------------------------------------------------------------------------------
|
|
4
4
|
|
|
5
5
|
@use '../theme/variables' as *;
|
|
6
|
-
@use '../mixins' as *;
|
|
7
6
|
|
|
8
7
|
//----------------------------------------------------------------------------------------------------------------------
|
|
9
8
|
// Card Design Tokens
|
|
@@ -42,10 +41,34 @@
|
|
|
42
41
|
|
|
43
42
|
.sk-card-header
|
|
44
43
|
{
|
|
44
|
+
// Header cut is reduced by margin to align with panel bevel
|
|
45
|
+
--sk-card-header-cut-tl: calc(var(--sk-panel-cut-tl) - 2px);
|
|
46
|
+
--sk-card-header-cut-tr: calc(var(--sk-panel-cut-tr) - 2px);
|
|
47
|
+
|
|
45
48
|
padding: var(--sk-card-header-padding-vertical) var(--sk-card-padding);
|
|
46
|
-
//border-bottom: var(--sk-border-width-thin) solid oklch(from currentColor l c h / 0.3);
|
|
47
49
|
background-color: oklch(from currentColor l c h / 0.2);
|
|
48
50
|
margin: 2px;
|
|
51
|
+
|
|
52
|
+
// Beveled top corners (modern path)
|
|
53
|
+
@supports (corner-shape: bevel)
|
|
54
|
+
{
|
|
55
|
+
border-top-left-radius: max(0px, var(--sk-card-header-cut-tl));
|
|
56
|
+
border-top-right-radius: max(0px, var(--sk-card-header-cut-tr));
|
|
57
|
+
corner-shape: bevel;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Beveled top corners (clip-path fallback)
|
|
61
|
+
@supports not (corner-shape: bevel)
|
|
62
|
+
{
|
|
63
|
+
clip-path: polygon(
|
|
64
|
+
max(0px, var(--sk-card-header-cut-tl)) 0,
|
|
65
|
+
calc(100% - max(0px, var(--sk-card-header-cut-tr))) 0,
|
|
66
|
+
100% max(0px, var(--sk-card-header-cut-tr)),
|
|
67
|
+
100% 100%,
|
|
68
|
+
0 100%,
|
|
69
|
+
0 max(0px, var(--sk-card-header-cut-tl))
|
|
70
|
+
);
|
|
71
|
+
}
|
|
49
72
|
}
|
|
50
73
|
|
|
51
74
|
.sk-card-title
|
|
@@ -100,13 +123,26 @@
|
|
|
100
123
|
padding: var(--sk-card-footer-padding-vertical) var(--sk-card-padding);
|
|
101
124
|
background-color: oklch(from currentColor l c h / 0.05);
|
|
102
125
|
|
|
103
|
-
//
|
|
104
|
-
@
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
126
|
+
// Beveled bottom corners (modern path)
|
|
127
|
+
@supports (corner-shape: bevel)
|
|
128
|
+
{
|
|
129
|
+
border-bottom-right-radius: var(--sk-panel-cut-br);
|
|
130
|
+
border-bottom-left-radius: var(--sk-panel-cut-bl);
|
|
131
|
+
corner-shape: bevel;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Beveled bottom corners (clip-path fallback)
|
|
135
|
+
@supports not (corner-shape: bevel)
|
|
136
|
+
{
|
|
137
|
+
clip-path: polygon(
|
|
138
|
+
0 0,
|
|
139
|
+
100% 0,
|
|
140
|
+
100% calc(100% - var(--sk-panel-cut-br)),
|
|
141
|
+
calc(100% - var(--sk-panel-cut-br)) 100%,
|
|
142
|
+
var(--sk-panel-cut-bl) 100%,
|
|
143
|
+
0 calc(100% - var(--sk-panel-cut-bl))
|
|
144
|
+
);
|
|
145
|
+
}
|
|
110
146
|
|
|
111
147
|
border-top: var(--sk-border-width-thin) solid oklch(from currentColor l c h / 0.1);
|
|
112
148
|
}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
@include meta.load-css('popover');
|
|
30
30
|
@include meta.load-css('progress');
|
|
31
31
|
@include meta.load-css('radio');
|
|
32
|
+
@include meta.load-css('select');
|
|
32
33
|
@include meta.load-css('sidebar');
|
|
33
34
|
@include meta.load-css('skeleton');
|
|
34
35
|
@include meta.load-css('slider');
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
//----------------------------------------------------------------------------------------------------------------------
|
|
4
4
|
|
|
5
5
|
@use '../theme/variables' as *;
|
|
6
|
-
@use '../mixins' as *;
|
|
7
6
|
|
|
8
7
|
//----------------------------------------------------------------------------------------------------------------------
|
|
9
8
|
// Panel Design Tokens
|
|
@@ -27,6 +26,12 @@
|
|
|
27
26
|
/// Default cut size for md panels (height / factor)
|
|
28
27
|
--sk-panel-cut-size: calc(var(--sk-panel-min-height) / var(--sk-panel-radius-factor));
|
|
29
28
|
|
|
29
|
+
/// Per-corner cut sizes (toggled on by .sk-cut-* classes)
|
|
30
|
+
--sk-panel-cut-tl: 0px;
|
|
31
|
+
--sk-panel-cut-tr: 0px;
|
|
32
|
+
--sk-panel-cut-br: 0px;
|
|
33
|
+
--sk-panel-cut-bl: 0px;
|
|
34
|
+
|
|
30
35
|
//------------------------------------------------------------------------------------------------------------------
|
|
31
36
|
// Border Tokens
|
|
32
37
|
//------------------------------------------------------------------------------------------------------------------
|
|
@@ -141,13 +146,86 @@
|
|
|
141
146
|
color: var(--sk-kind-color, var(--sk-panel-color-base));
|
|
142
147
|
}
|
|
143
148
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
);
|
|
149
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
150
|
+
// Corner toggle classes
|
|
151
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
152
|
+
|
|
153
|
+
&.sk-cut-top-left { --sk-panel-cut-tl: var(--sk-panel-cut-size); }
|
|
154
|
+
&.sk-cut-top-right { --sk-panel-cut-tr: var(--sk-panel-cut-size); }
|
|
155
|
+
&.sk-cut-bottom-right { --sk-panel-cut-br: var(--sk-panel-cut-size); }
|
|
156
|
+
&.sk-cut-bottom-left { --sk-panel-cut-bl: var(--sk-panel-cut-size); }
|
|
157
|
+
|
|
158
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
159
|
+
// Beveled corners (modern path)
|
|
160
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
161
|
+
|
|
162
|
+
@supports (corner-shape: bevel)
|
|
163
|
+
{
|
|
164
|
+
border: var(--sk-panel-border-width) solid var(--sk-panel-border-color);
|
|
165
|
+
border-top-left-radius: var(--sk-panel-cut-tl);
|
|
166
|
+
border-top-right-radius: var(--sk-panel-cut-tr);
|
|
167
|
+
border-bottom-right-radius: var(--sk-panel-cut-br);
|
|
168
|
+
border-bottom-left-radius: var(--sk-panel-cut-bl);
|
|
169
|
+
corner-shape: bevel;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
173
|
+
// Beveled corners (clip-path fallback)
|
|
174
|
+
//------------------------------------------------------------------------------------------------------------------
|
|
175
|
+
|
|
176
|
+
@supports not (corner-shape: bevel)
|
|
177
|
+
{
|
|
178
|
+
border: none;
|
|
179
|
+
|
|
180
|
+
// 8-point polygon; when a corner var is 0px its two points collapse into the corner
|
|
181
|
+
clip-path: polygon(
|
|
182
|
+
var(--sk-panel-cut-tl) 0,
|
|
183
|
+
calc(100% - var(--sk-panel-cut-tr)) 0,
|
|
184
|
+
100% var(--sk-panel-cut-tr),
|
|
185
|
+
100% calc(100% - var(--sk-panel-cut-br)),
|
|
186
|
+
calc(100% - var(--sk-panel-cut-br)) 100%,
|
|
187
|
+
var(--sk-panel-cut-bl) 100%,
|
|
188
|
+
0 calc(100% - var(--sk-panel-cut-bl)),
|
|
189
|
+
0 var(--sk-panel-cut-tl)
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
// ::before draws the border via double-polygon clip-path
|
|
193
|
+
&::before
|
|
194
|
+
{
|
|
195
|
+
content: '';
|
|
196
|
+
position: absolute;
|
|
197
|
+
top: 0;
|
|
198
|
+
left: 0;
|
|
199
|
+
right: 0;
|
|
200
|
+
bottom: 0;
|
|
201
|
+
background-color: var(--sk-panel-border-color);
|
|
202
|
+
z-index: -1;
|
|
203
|
+
|
|
204
|
+
clip-path: polygon(
|
|
205
|
+
// Outer ring (clockwise)
|
|
206
|
+
var(--sk-panel-cut-tl) 0,
|
|
207
|
+
calc(100% - var(--sk-panel-cut-tr)) 0,
|
|
208
|
+
100% var(--sk-panel-cut-tr),
|
|
209
|
+
100% calc(100% - var(--sk-panel-cut-br)),
|
|
210
|
+
calc(100% - var(--sk-panel-cut-br)) 100%,
|
|
211
|
+
var(--sk-panel-cut-bl) 100%,
|
|
212
|
+
0 calc(100% - var(--sk-panel-cut-bl)),
|
|
213
|
+
0 var(--sk-panel-cut-tl),
|
|
214
|
+
var(--sk-panel-cut-tl) 0,
|
|
215
|
+
|
|
216
|
+
// Inner ring (counter-clockwise)
|
|
217
|
+
calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)) var(--sk-panel-border-width),
|
|
218
|
+
var(--sk-panel-border-width) calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)),
|
|
219
|
+
var(--sk-panel-border-width) calc(100% - var(--sk-panel-cut-bl) - var(--sk-panel-border-width)),
|
|
220
|
+
calc(var(--sk-panel-cut-bl) + var(--sk-panel-border-width)) calc(100% - var(--sk-panel-border-width)),
|
|
221
|
+
calc(100% - var(--sk-panel-cut-br) - var(--sk-panel-border-width)) calc(100% - var(--sk-panel-border-width)),
|
|
222
|
+
calc(100% - var(--sk-panel-border-width)) calc(100% - var(--sk-panel-cut-br) - var(--sk-panel-border-width)),
|
|
223
|
+
calc(100% - var(--sk-panel-border-width)) calc(var(--sk-panel-cut-tr) + var(--sk-panel-border-width)),
|
|
224
|
+
calc(100% - var(--sk-panel-cut-tr) - var(--sk-panel-border-width)) var(--sk-panel-border-width),
|
|
225
|
+
calc(var(--sk-panel-cut-tl) + var(--sk-panel-border-width)) var(--sk-panel-border-width)
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
151
229
|
|
|
152
230
|
//------------------------------------------------------------------------------------------------------------------
|
|
153
231
|
// Corner decoration line
|
|
@@ -161,11 +239,40 @@
|
|
|
161
239
|
height: 2px;
|
|
162
240
|
background: var(--sk-panel-border-base);
|
|
163
241
|
border-radius: 1px;
|
|
242
|
+
transform-origin: center;
|
|
243
|
+
pointer-events: none;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Bottom-right decoration (default)
|
|
247
|
+
&.sk-decoration-bottom-right::after
|
|
248
|
+
{
|
|
164
249
|
right: var(--sk-panel-decoration-offset);
|
|
165
250
|
bottom: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
|
|
166
251
|
transform: rotate(135deg);
|
|
167
|
-
|
|
168
|
-
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Top-left decoration (same diagonal as bottom-right)
|
|
255
|
+
&.sk-decoration-top-left::after
|
|
256
|
+
{
|
|
257
|
+
left: var(--sk-panel-decoration-offset);
|
|
258
|
+
top: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
|
|
259
|
+
transform: rotate(135deg);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Top-right decoration
|
|
263
|
+
&.sk-decoration-top-right::after
|
|
264
|
+
{
|
|
265
|
+
right: var(--sk-panel-decoration-offset);
|
|
266
|
+
top: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
|
|
267
|
+
transform: rotate(45deg);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Bottom-left decoration
|
|
271
|
+
&.sk-decoration-bottom-left::after
|
|
272
|
+
{
|
|
273
|
+
left: var(--sk-panel-decoration-offset);
|
|
274
|
+
bottom: calc(var(--sk-panel-cut-size) / 2 + var(--sk-panel-decoration-offset) - 1px);
|
|
275
|
+
transform: rotate(45deg);
|
|
169
276
|
}
|
|
170
277
|
|
|
171
278
|
//------------------------------------------------------------------------------------------------------------------
|
|
@@ -203,9 +310,8 @@
|
|
|
203
310
|
|
|
204
311
|
&.sk-no-border
|
|
205
312
|
{
|
|
206
|
-
// Remove
|
|
313
|
+
// Remove border and glow but keep the bevel shape
|
|
207
314
|
--sk-panel-border-width: 0;
|
|
208
|
-
--sk-panel-cut-size: 0;
|
|
209
315
|
box-shadow: none;
|
|
210
316
|
|
|
211
317
|
// Remove the decoration as well
|
|
@@ -231,7 +337,7 @@
|
|
|
231
337
|
.sk-panel-scroll-content
|
|
232
338
|
{
|
|
233
339
|
padding: var(--sk-panel-padding);
|
|
234
|
-
margin-bottom: calc(var(--sk-panel-cut-
|
|
340
|
+
margin-bottom: calc(max(var(--sk-panel-cut-br), var(--sk-panel-cut-bl)) + var(--sk-panel-decoration-offset));
|
|
235
341
|
overflow-y: auto;
|
|
236
342
|
overflow-x: hidden;
|
|
237
343
|
flex: 1;
|