@skewedaspect/sleekspace-ui 0.7.1 → 0.8.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/Button/SkButton.vue.d.ts +8 -0
- package/dist/components/NavBar/SkNavBar.vue.d.ts +1 -0
- package/dist/components/NavBar/context.d.ts +3 -0
- package/dist/components/Page/SkPage.vue.d.ts +127 -30
- package/dist/components/Page/SkPageSidebarToggle.vue.d.ts +41 -0
- package/dist/components/Page/index.d.ts +1 -0
- package/dist/components/Page/types.d.ts +28 -5
- package/dist/components/ScrollArea/SkScrollArea.vue.d.ts +9 -0
- package/dist/components/Select/SkSelectItem.vue.d.ts +6 -18
- package/dist/components/Sidebar/SkSidebar.vue.d.ts +9 -1
- package/dist/components/Skeleton/SkSkeleton.vue.d.ts +2 -2
- package/dist/components/Tabs/SkTabs.vue.d.ts +1 -1
- package/dist/components/TreeView/SkTreeView.vue.d.ts +5 -5
- package/dist/composables/useFocusTrap.d.ts +17 -0
- package/dist/composables/useFocusTrap.test.d.ts +1 -0
- package/dist/composables/usePageDrawer.d.ts +35 -0
- package/dist/index.d.ts +2 -0
- package/dist/sleekspace-ui.css +984 -291
- package/dist/sleekspace-ui.es.js +31559 -29868
- package/dist/sleekspace-ui.umd.js +32210 -30438
- package/dist/styles/mixins/fluidSize.test.d.ts +1 -0
- package/dist/tokens.css +60 -0
- package/llms-full.txt +6349 -0
- package/llms.txt +46 -0
- package/package.json +16 -11
- package/src/components/Button/SkButton.vue +25 -13
- package/src/components/NavBar/SkNavBar.vue +12 -1
- package/src/components/NavBar/context.ts +16 -0
- package/src/components/Page/SkPage.vue +460 -72
- package/src/components/Page/SkPageSidebarToggle.vue +148 -0
- package/src/components/Page/index.ts +1 -0
- package/src/components/Page/types.ts +30 -5
- package/src/components/ScrollArea/SkScrollArea.vue +12 -0
- package/src/components/Select/SkSelectItem.vue +2 -2
- package/src/components/Sidebar/SkSidebar.vue +10 -0
- package/src/components/TreeView/SkTreeView.vue +6 -6
- package/src/composables/useFocusTrap.test.ts +184 -0
- package/src/composables/useFocusTrap.ts +141 -0
- package/src/composables/usePageDrawer.ts +96 -0
- package/src/global.d.ts +1 -0
- package/src/index.ts +5 -0
- package/src/styles/components/_accordion.scss +15 -0
- package/src/styles/components/_alert.scss +1 -0
- package/src/styles/components/_avatar.scss +1 -0
- package/src/styles/components/_breadcrumbs.scss +7 -0
- package/src/styles/components/_button.scss +291 -214
- package/src/styles/components/_checkbox.scss +9 -1
- package/src/styles/components/_collapsible.scss +15 -0
- package/src/styles/components/_color-picker.scss +4 -1
- package/src/styles/components/_input.scss +1 -0
- package/src/styles/components/_listbox.scss +8 -2
- package/src/styles/components/_menu.scss +9 -2
- package/src/styles/components/_modal.scss +18 -2
- package/src/styles/components/_navbar.scss +22 -6
- package/src/styles/components/_number-input.scss +1 -0
- package/src/styles/components/_page.scss +220 -12
- package/src/styles/components/_pagination.scss +10 -1
- package/src/styles/components/_panel.scss +8 -3
- package/src/styles/components/_popover.scss +15 -2
- package/src/styles/components/_progress.scss +14 -0
- package/src/styles/components/_radio.scss +8 -1
- package/src/styles/components/_scroll-area.scss +56 -0
- package/src/styles/components/_select.scss +3 -1
- package/src/styles/components/_sidebar.scss +78 -38
- package/src/styles/components/_skeleton.scss +18 -0
- package/src/styles/components/_slider.scss +1 -0
- package/src/styles/components/_spinner.scss +15 -0
- package/src/styles/components/_switch.scss +5 -0
- package/src/styles/components/_table.scss +1 -0
- package/src/styles/components/_tabs.scss +6 -0
- package/src/styles/components/_tag.scss +2 -0
- package/src/styles/components/_tags-input.scss +1 -0
- package/src/styles/components/_textarea.scss +1 -0
- package/src/styles/components/_toast.scss +16 -1
- package/src/styles/components/_toolbar.scss +2 -0
- package/src/styles/components/_tooltip.scss +14 -1
- package/src/styles/components/_tree-view.scss +6 -1
- package/src/styles/mixins/_index.scss +1 -0
- package/src/styles/mixins/_responsive.scss +184 -0
- package/src/styles/mixins/fluidSize.test.ts +149 -0
- package/src/styles/tokens/_foundation-breakpoints.scss +26 -0
- package/src/styles/tokens/_foundation-z-index.scss +38 -0
- package/src/styles/tokens/index.scss +2 -0
- package/web-types.json +194 -14
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
2
|
+
// Page Drawer Composable
|
|
3
|
+
//
|
|
4
|
+
// Provides drawer open-state coordination between SkPage (the owner) and descendants like
|
|
5
|
+
// SkPageSidebarToggle. SkPage calls providePageDrawers to expose state for both the left sidebar
|
|
6
|
+
// and the right aside; children call usePageDrawer(side) to consume one of them.
|
|
7
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
import { type Ref, computed, inject, provide } from 'vue';
|
|
10
|
+
|
|
11
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
const PAGE_DRAWERS_KEY = Symbol('sk-page-drawers') as InjectionSymbol;
|
|
14
|
+
|
|
15
|
+
type InjectionSymbol = symbol & { __drawers : true };
|
|
16
|
+
|
|
17
|
+
export type PageDrawerSide = 'sidebar' | 'aside';
|
|
18
|
+
|
|
19
|
+
export interface PageDrawerContext
|
|
20
|
+
{
|
|
21
|
+
/** Whether the drawer is currently open. */
|
|
22
|
+
isOpen : Ref<boolean>;
|
|
23
|
+
|
|
24
|
+
/** Whether drawer mode is actually available (false on purely persistent layouts). */
|
|
25
|
+
isAvailable : Ref<boolean>;
|
|
26
|
+
|
|
27
|
+
open : () => void;
|
|
28
|
+
close : () => void;
|
|
29
|
+
toggle : () => void;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface PageDrawersContext
|
|
33
|
+
{
|
|
34
|
+
sidebar : PageDrawerContext;
|
|
35
|
+
aside : PageDrawerContext;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
function makeContext(
|
|
41
|
+
isOpen : Ref<boolean>,
|
|
42
|
+
isAvailable : Ref<boolean>,
|
|
43
|
+
setOpen : (value : boolean) => void
|
|
44
|
+
) : PageDrawerContext
|
|
45
|
+
{
|
|
46
|
+
return {
|
|
47
|
+
isOpen,
|
|
48
|
+
isAvailable,
|
|
49
|
+
open: () => setOpen(true),
|
|
50
|
+
close: () => setOpen(false),
|
|
51
|
+
toggle: () => setOpen(!isOpen.value),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Expose drawer state for both the sidebar and aside from SkPage so descendants (like toggle
|
|
57
|
+
* buttons) can wire into either without prop drilling.
|
|
58
|
+
*/
|
|
59
|
+
export function providePageDrawers(
|
|
60
|
+
sidebar : { isOpen : Ref<boolean>; isAvailable : Ref<boolean>; setOpen : (value : boolean) => void },
|
|
61
|
+
aside : { isOpen : Ref<boolean>; isAvailable : Ref<boolean>; setOpen : (value : boolean) => void }
|
|
62
|
+
) : PageDrawersContext
|
|
63
|
+
{
|
|
64
|
+
const context : PageDrawersContext = {
|
|
65
|
+
sidebar: makeContext(sidebar.isOpen, sidebar.isAvailable, sidebar.setOpen),
|
|
66
|
+
aside: makeContext(aside.isOpen, aside.isAvailable, aside.setOpen),
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
provide(PAGE_DRAWERS_KEY, context);
|
|
70
|
+
|
|
71
|
+
return context;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Consume drawer state inside SkPage. Returns a safe no-op context when used outside SkPage
|
|
76
|
+
* so components like SkPageSidebarToggle can still render without throwing.
|
|
77
|
+
*
|
|
78
|
+
* @param side - Which drawer to bind to. Defaults to the left sidebar.
|
|
79
|
+
*/
|
|
80
|
+
export function usePageDrawer(side : PageDrawerSide = 'sidebar') : PageDrawerContext
|
|
81
|
+
{
|
|
82
|
+
const noop = () : PageDrawerContext => ({
|
|
83
|
+
isOpen: computed(() => false) as Ref<boolean>,
|
|
84
|
+
isAvailable: computed(() => false) as Ref<boolean>,
|
|
85
|
+
open: () => { /* no-op: not inside SkPage */ },
|
|
86
|
+
close: () => { /* no-op: not inside SkPage */ },
|
|
87
|
+
toggle: () => { /* no-op: not inside SkPage */ },
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const context = inject<PageDrawersContext | null>(PAGE_DRAWERS_KEY, null);
|
|
91
|
+
if(!context) { return noop(); }
|
|
92
|
+
|
|
93
|
+
return context[side];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//----------------------------------------------------------------------------------------------------------------------
|
package/src/global.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ declare module '@vue/runtime-core' {
|
|
|
52
52
|
SkNavBar: DefineComponent<import('./components/NavBar/SkNavBar.vue').SkNavBarComponentProps>;
|
|
53
53
|
SkNumberInput: DefineComponent<import('./components/NumberInput/SkNumberInput.vue').SkNumberInputComponentProps>;
|
|
54
54
|
SkPage: DefineComponent<import('./components/Page/SkPage.vue').SkPageComponentProps>;
|
|
55
|
+
SkPageSidebarToggle: DefineComponent<import('./components/Page/SkPageSidebarToggle.vue').SkPageSidebarToggleComponentProps>;
|
|
55
56
|
SkPagination: DefineComponent<import('./components/Pagination/SkPagination.vue').SkPaginationComponentProps>;
|
|
56
57
|
SkPaginationItem: DefineComponent<import('./components/Pagination/SkPaginationItem.vue').SkPaginationItemComponentProps>;
|
|
57
58
|
SkPanel: DefineComponent<import('./components/Panel/SkPanel.vue').SkPanelComponentProps>;
|
package/src/index.ts
CHANGED
|
@@ -70,6 +70,9 @@ import SkModal, { type SkModalComponentProps } from './components/Modal/SkModal.
|
|
|
70
70
|
import SkNavBar, { type SkNavBarComponentProps } from './components/NavBar/SkNavBar.vue';
|
|
71
71
|
import SkNumberInput, { type SkNumberInputComponentProps } from './components/NumberInput/SkNumberInput.vue';
|
|
72
72
|
import SkPage, { type SkPageComponentProps } from './components/Page/SkPage.vue';
|
|
73
|
+
import SkPageSidebarToggle, {
|
|
74
|
+
type SkPageSidebarToggleComponentProps,
|
|
75
|
+
} from './components/Page/SkPageSidebarToggle.vue';
|
|
73
76
|
import SkPagination, { type SkPaginationComponentProps } from './components/Pagination/SkPagination.vue';
|
|
74
77
|
import SkPaginationItem, {
|
|
75
78
|
type SkPaginationItemComponentProps,
|
|
@@ -228,6 +231,7 @@ export { SkModal, type SkModalComponentProps };
|
|
|
228
231
|
export { SkNavBar, type SkNavBarComponentProps };
|
|
229
232
|
export { SkNumberInput, type SkNumberInputComponentProps };
|
|
230
233
|
export { SkPage, type SkPageComponentProps };
|
|
234
|
+
export { SkPageSidebarToggle, type SkPageSidebarToggleComponentProps };
|
|
231
235
|
export { SkPagination, type SkPaginationComponentProps };
|
|
232
236
|
export { SkPaginationItem, type SkPaginationItemComponentProps };
|
|
233
237
|
export { SkPanel, type SkPanelComponentProps };
|
|
@@ -318,6 +322,7 @@ const SleekSpaceUI : Plugin = {
|
|
|
318
322
|
app.component('SkNavBar', SkNavBar);
|
|
319
323
|
app.component('SkNumberInput', SkNumberInput);
|
|
320
324
|
app.component('SkPage', SkPage);
|
|
325
|
+
app.component('SkPageSidebarToggle', SkPageSidebarToggle);
|
|
321
326
|
app.component('SkPagination', SkPagination);
|
|
322
327
|
app.component('SkPaginationItem', SkPaginationItem);
|
|
323
328
|
app.component('SkPanel', SkPanel);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@use '@/styles/mixins/cut-border' as *;
|
|
2
|
+
@use '@/styles/mixins/responsive' as *;
|
|
2
3
|
|
|
3
4
|
//----------------------------------------------------------------------------------------------------------------------
|
|
4
5
|
// Accordion Component Styles
|
|
@@ -76,6 +77,7 @@
|
|
|
76
77
|
transparent 85%
|
|
77
78
|
);
|
|
78
79
|
|
|
80
|
+
position: relative;
|
|
79
81
|
overflow: hidden;
|
|
80
82
|
width: 100%;
|
|
81
83
|
|
|
@@ -248,3 +250,16 @@
|
|
|
248
250
|
}
|
|
249
251
|
|
|
250
252
|
//----------------------------------------------------------------------------------------------------------------------
|
|
253
|
+
// Reduced motion: panels snap open/closed instead of sliding.
|
|
254
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
255
|
+
|
|
256
|
+
@include reduced-motion
|
|
257
|
+
{
|
|
258
|
+
.sk-accordion-content[data-state='open'],
|
|
259
|
+
.sk-accordion-content[data-state='closed']
|
|
260
|
+
{
|
|
261
|
+
animation: none;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
//----------------------------------------------------------------------------------------------------------------------
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// Breadcrumbs Styles
|
|
3
3
|
//----------------------------------------------------------------------------------------------------------------------
|
|
4
4
|
|
|
5
|
+
@use '@/styles/mixins' as *;
|
|
6
|
+
|
|
5
7
|
//----------------------------------------------------------------------------------------------------------------------
|
|
6
8
|
|
|
7
9
|
.sk-breadcrumbs
|
|
@@ -88,6 +90,11 @@
|
|
|
88
90
|
font-family: inherit;
|
|
89
91
|
cursor: pointer;
|
|
90
92
|
|
|
93
|
+
@include touch
|
|
94
|
+
{
|
|
95
|
+
min-height: 44px;
|
|
96
|
+
}
|
|
97
|
+
|
|
91
98
|
// Hover state (except for current page)
|
|
92
99
|
&:hover:not([aria-current])
|
|
93
100
|
{
|