@skewedaspect/sleekspace-ui 0.2.0-beta.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/LICENSE +21 -0
- package/README.md +111 -0
- package/dist/sleekspace-ui.css +12844 -0
- package/dist/sleekspace-ui.es.js +19021 -0
- package/dist/sleekspace-ui.umd.js +19040 -0
- package/docs/components/accordion.md +92 -0
- package/docs/components/alert.md +72 -0
- package/docs/components/avatar.md +69 -0
- package/docs/components/breadcrumbs.md +65 -0
- package/docs/components/button/_meta.yaml +12 -0
- package/docs/components/button/accessibility.md +16 -0
- package/docs/components/button/custom-colors.md +18 -0
- package/docs/components/button/icons.md +31 -0
- package/docs/components/button/intro.md +8 -0
- package/docs/components/button/kinds.md +25 -0
- package/docs/components/button/sizes.md +14 -0
- package/docs/components/button/states.md +12 -0
- package/docs/components/button/usage.md +23 -0
- package/docs/components/button/variants.md +14 -0
- package/docs/components/button.md +110 -0
- package/docs/components/card.md +87 -0
- package/docs/components/checkbox.md +77 -0
- package/docs/components/collapsible.md +71 -0
- package/docs/components/divider.md +62 -0
- package/docs/components/dropdown.md +88 -0
- package/docs/components/field.md +80 -0
- package/docs/components/group.md +41 -0
- package/docs/components/input.md +84 -0
- package/docs/components/listbox.md +82 -0
- package/docs/components/modal.md +101 -0
- package/docs/components/navbar.md +64 -0
- package/docs/components/number-input.md +78 -0
- package/docs/components/page.md +77 -0
- package/docs/components/pagination.md +88 -0
- package/docs/components/panel.md +74 -0
- package/docs/components/popover.md +93 -0
- package/docs/components/progress.md +76 -0
- package/docs/components/radio.md +86 -0
- package/docs/components/sidebar.md +74 -0
- package/docs/components/skeleton.md +76 -0
- package/docs/components/slider.md +94 -0
- package/docs/components/spinner.md +59 -0
- package/docs/components/switch.md +97 -0
- package/docs/components/table.md +91 -0
- package/docs/components/tabs.md +108 -0
- package/docs/components/tag.md +75 -0
- package/docs/components/tags-input.md +88 -0
- package/docs/components/textarea.md +80 -0
- package/docs/components/theme.md +65 -0
- package/docs/components/toast.md +95 -0
- package/docs/components/tooltip.md +90 -0
- package/docs/guides/custom-colors.md +84 -0
- package/docs/guides/design-tokens.md +105 -0
- package/docs/guides/getting-started.md +144 -0
- package/docs/guides/installation.md +62 -0
- package/docs/guides/theming.md +101 -0
- package/package.json +76 -0
- package/src/components/Accordion/SkAccordion.vue +133 -0
- package/src/components/Accordion/SkAccordionItem.vue +131 -0
- package/src/components/Accordion/index.ts +3 -0
- package/src/components/Accordion/types.ts +9 -0
- package/src/components/Alert/SkAlert.vue +137 -0
- package/src/components/Alert/types.ts +10 -0
- package/src/components/Avatar/SkAvatar.vue +141 -0
- package/src/components/Avatar/index.ts +8 -0
- package/src/components/Avatar/types.ts +31 -0
- package/src/components/Breadcrumbs/SkBreadcrumbItem.vue +76 -0
- package/src/components/Breadcrumbs/SkBreadcrumbSeparator.vue +38 -0
- package/src/components/Breadcrumbs/SkBreadcrumbs.vue +93 -0
- package/src/components/Breadcrumbs/index.ts +10 -0
- package/src/components/Breadcrumbs/types.ts +36 -0
- package/src/components/Button/SkButton.vue +148 -0
- package/src/components/Button/types.ts +21 -0
- package/src/components/Card/SkCard.vue +144 -0
- package/src/components/Card/types.ts +12 -0
- package/src/components/Checkbox/SkCheckbox.vue +136 -0
- package/src/components/Checkbox/index.ts +8 -0
- package/src/components/Checkbox/types.ts +10 -0
- package/src/components/Collapsible/SkCollapsible.vue +159 -0
- package/src/components/Collapsible/index.ts +2 -0
- package/src/components/Collapsible/types.ts +8 -0
- package/src/components/Divider/SkDivider.vue +63 -0
- package/src/components/Divider/types.ts +15 -0
- package/src/components/Dropdown/SkDropdown.vue +150 -0
- package/src/components/Dropdown/SkDropdownMenuItem.vue +58 -0
- package/src/components/Dropdown/SkDropdownMenuSeparator.vue +26 -0
- package/src/components/Dropdown/SkDropdownSubmenu.vue +107 -0
- package/src/components/Dropdown/index.ts +11 -0
- package/src/components/Dropdown/types.ts +11 -0
- package/src/components/Field/SkField.vue +152 -0
- package/src/components/Field/index.ts +8 -0
- package/src/components/Field/types.ts +7 -0
- package/src/components/Group/SkGroup.vue +52 -0
- package/src/components/Group/types.ts +10 -0
- package/src/components/Input/SkInput.vue +117 -0
- package/src/components/Input/index.ts +8 -0
- package/src/components/Input/types.ts +11 -0
- package/src/components/Listbox/SkListbox.vue +164 -0
- package/src/components/Listbox/SkListboxItem.vue +68 -0
- package/src/components/Listbox/SkListboxSeparator.vue +26 -0
- package/src/components/Listbox/index.ts +10 -0
- package/src/components/Listbox/types.ts +10 -0
- package/src/components/Modal/SkModal.vue +231 -0
- package/src/components/Modal/index.ts +8 -0
- package/src/components/Modal/types.ts +12 -0
- package/src/components/NavBar/SkNavBar.vue +83 -0
- package/src/components/NavBar/index.ts +8 -0
- package/src/components/NavBar/types.ts +15 -0
- package/src/components/NumberInput/SkNumberInput.vue +168 -0
- package/src/components/NumberInput/index.ts +8 -0
- package/src/components/NumberInput/types.ts +10 -0
- package/src/components/Page/SkPage.vue +94 -0
- package/src/components/Page/index.ts +8 -0
- package/src/components/Page/types.ts +21 -0
- package/src/components/Pagination/SkPagination.vue +185 -0
- package/src/components/Pagination/SkPaginationItem.vue +107 -0
- package/src/components/Pagination/index.ts +9 -0
- package/src/components/Pagination/types.ts +40 -0
- package/src/components/Panel/SkPanel.vue +96 -0
- package/src/components/Panel/types.ts +15 -0
- package/src/components/Popover/SkPopover.vue +185 -0
- package/src/components/Popover/index.ts +8 -0
- package/src/components/Popover/types.ts +11 -0
- package/src/components/Progress/SkProgress.vue +144 -0
- package/src/components/Progress/index.ts +8 -0
- package/src/components/Progress/types.ts +34 -0
- package/src/components/Radio/SkRadio.vue +110 -0
- package/src/components/Radio/SkRadioGroup.vue +92 -0
- package/src/components/Radio/index.ts +9 -0
- package/src/components/Radio/types.ts +11 -0
- package/src/components/Sidebar/README.md +405 -0
- package/src/components/Sidebar/SkSidebar.vue +88 -0
- package/src/components/Sidebar/SkSidebarItem.vue +58 -0
- package/src/components/Sidebar/SkSidebarSection.vue +40 -0
- package/src/components/Sidebar/types.ts +3 -0
- package/src/components/Skeleton/SkSkeleton.vue +171 -0
- package/src/components/Skeleton/index.ts +8 -0
- package/src/components/Skeleton/types.ts +31 -0
- package/src/components/Slider/SkSlider.vue +165 -0
- package/src/components/Slider/index.ts +8 -0
- package/src/components/Slider/types.ts +44 -0
- package/src/components/Spinner/SkSpinner.vue +105 -0
- package/src/components/Spinner/index.ts +8 -0
- package/src/components/Spinner/types.ts +28 -0
- package/src/components/Switch/SkSwitch.vue +215 -0
- package/src/components/Switch/index.ts +8 -0
- package/src/components/Switch/types.ts +12 -0
- package/src/components/Table/SkTable.vue +109 -0
- package/src/components/Table/index.ts +2 -0
- package/src/components/Table/types.ts +15 -0
- package/src/components/Tabs/README.md +331 -0
- package/src/components/Tabs/SkTab.vue +84 -0
- package/src/components/Tabs/SkTabList.vue +62 -0
- package/src/components/Tabs/SkTabPanel.vue +47 -0
- package/src/components/Tabs/SkTabPanels.vue +23 -0
- package/src/components/Tabs/SkTabs.vue +124 -0
- package/src/components/Tabs/types.ts +21 -0
- package/src/components/Tag/SkTag.vue +129 -0
- package/src/components/Tag/types.ts +15 -0
- package/src/components/TagsInput/SkTagsInput.vue +184 -0
- package/src/components/TagsInput/index.ts +8 -0
- package/src/components/TagsInput/types.ts +10 -0
- package/src/components/Textarea/SkTextarea.vue +117 -0
- package/src/components/Textarea/index.ts +8 -0
- package/src/components/Textarea/types.ts +10 -0
- package/src/components/Theme/SkTheme.vue +47 -0
- package/src/components/Theme/types.ts +17 -0
- package/src/components/Theme/useTheme.ts +131 -0
- package/src/components/Toast/SkToast.vue +156 -0
- package/src/components/Toast/SkToastProvider.vue +180 -0
- package/src/components/Toast/index.ts +15 -0
- package/src/components/Toast/types.ts +63 -0
- package/src/components/Toast/useToast.ts +78 -0
- package/src/components/Tooltip/SkTooltip.vue +162 -0
- package/src/components/Tooltip/SkTooltipProvider.vue +114 -0
- package/src/components/Tooltip/index.ts +9 -0
- package/src/components/Tooltip/types.ts +13 -0
- package/src/composables/useCustomColors.test.ts +505 -0
- package/src/composables/useCustomColors.ts +124 -0
- package/src/composables/usePortalContext.test.ts +402 -0
- package/src/composables/usePortalContext.ts +95 -0
- package/src/global.d.ts +76 -0
- package/src/index.ts +259 -0
- package/src/styles/_scrollbar.scss +100 -0
- package/src/styles/base/_fonts.scss +105 -0
- package/src/styles/base/_global.scss +47 -0
- package/src/styles/base/_index.scss +24 -0
- package/src/styles/base/_reset.scss +11 -0
- package/src/styles/base/_typography.scss +178 -0
- package/src/styles/components/_accordion.scss +250 -0
- package/src/styles/components/_alert.scss +239 -0
- package/src/styles/components/_avatar.scss +133 -0
- package/src/styles/components/_breadcrumbs.scss +137 -0
- package/src/styles/components/_button.scss +731 -0
- package/src/styles/components/_card.scss +141 -0
- package/src/styles/components/_checkbox.scss +232 -0
- package/src/styles/components/_collapsible.scss +158 -0
- package/src/styles/components/_divider.scss +121 -0
- package/src/styles/components/_field.scss +87 -0
- package/src/styles/components/_group.scss +138 -0
- package/src/styles/components/_index.scss +46 -0
- package/src/styles/components/_input.scss +205 -0
- package/src/styles/components/_listbox.scss +453 -0
- package/src/styles/components/_menu.scss +216 -0
- package/src/styles/components/_modal.scss +329 -0
- package/src/styles/components/_navbar.scss +258 -0
- package/src/styles/components/_number-input.scss +352 -0
- package/src/styles/components/_page.scss +98 -0
- package/src/styles/components/_pagination.scss +411 -0
- package/src/styles/components/_panel.scss +281 -0
- package/src/styles/components/_popover.scss +258 -0
- package/src/styles/components/_progress.scss +280 -0
- package/src/styles/components/_radio.scss +255 -0
- package/src/styles/components/_sidebar.scss +92 -0
- package/src/styles/components/_skeleton.scss +138 -0
- package/src/styles/components/_slider.scss +262 -0
- package/src/styles/components/_spinner.scss +331 -0
- package/src/styles/components/_switch.scss +370 -0
- package/src/styles/components/_table.scss +405 -0
- package/src/styles/components/_tabs.scss +486 -0
- package/src/styles/components/_tag.scss +425 -0
- package/src/styles/components/_tags-input.scss +279 -0
- package/src/styles/components/_textarea.scss +208 -0
- package/src/styles/components/_toast.scss +331 -0
- package/src/styles/components/_tooltip.scss +206 -0
- package/src/styles/fonts/Titillium_Web/OFL.txt +93 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf +0 -0
- package/src/styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf +0 -0
- package/src/styles/index.scss +17 -0
- package/src/styles/mixins/_cut-border.scss +254 -0
- package/src/styles/mixins/_index.scss +7 -0
- package/src/styles/theme/_variables.scss +42 -0
- package/src/styles/themes/README.md +127 -0
- package/src/styles/themes/_colorful.scss +58 -0
- package/src/styles/themes/_greyscale.scss +58 -0
- package/src/styles/themes/index.scss +9 -0
- package/src/styles/tokens/README.md +268 -0
- package/src/styles/tokens/_foundation-borders.scss +26 -0
- package/src/styles/tokens/_foundation-colors.scss +169 -0
- package/src/styles/tokens/_foundation-glow.scss +36 -0
- package/src/styles/tokens/_foundation-radius.scss +53 -0
- package/src/styles/tokens/_foundation-scrollbar.scss +31 -0
- package/src/styles/tokens/_foundation-shadows.scss +37 -0
- package/src/styles/tokens/_foundation-space.scss +36 -0
- package/src/styles/tokens/_foundation-transitions.scss +37 -0
- package/src/styles/tokens/_foundation-typography.scss +58 -0
- package/src/styles/tokens/_semantic-color-kinds.scss +112 -0
- package/src/styles/tokens/_semantic-colors.scss +10 -0
- package/src/styles/tokens/_semantic-interactive.scss +29 -0
- package/src/styles/tokens/_semantic-scrollbar.scss +48 -0
- package/src/styles/tokens/_semantic-surfaces.scss +36 -0
- package/src/styles/tokens/index.scss +38 -0
- package/src/styles/tokens.scss +268 -0
- package/src/styles/utilities/_index.scss +9 -0
- package/src/styles/utilities/_typography.scss +121 -0
- package/src/types.ts +50 -0
- package/web-types.json +3524 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkSidebar
|
|
3
|
+
category: Navigation
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkSidebar
|
|
7
|
+
|
|
8
|
+
A sticky navigation sidebar container with semantic color theming. Composed of SkSidebarSection and SkSidebarItem for structured navigation.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<template>
|
|
14
|
+
<SkSidebar kind="neutral" width="220px">
|
|
15
|
+
<SkSidebarSection title="Navigation">
|
|
16
|
+
<SkSidebarItem href="/">Home</SkSidebarItem>
|
|
17
|
+
<SkSidebarItem href="/docs">Documentation</SkSidebarItem>
|
|
18
|
+
</SkSidebarSection>
|
|
19
|
+
<SkSidebarSection title="Account">
|
|
20
|
+
<SkSidebarItem href="/settings">Settings</SkSidebarItem>
|
|
21
|
+
<SkSidebarItem href="/logout">Logout</SkSidebarItem>
|
|
22
|
+
</SkSidebarSection>
|
|
23
|
+
</SkSidebar>
|
|
24
|
+
</template>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Composition
|
|
28
|
+
|
|
29
|
+
- **SkSidebar** -- Root container with width and color.
|
|
30
|
+
- **SkSidebarSection** -- Groups items under an optional title heading.
|
|
31
|
+
- **SkSidebarItem** -- Individual navigation link.
|
|
32
|
+
|
|
33
|
+
## Item Rendering
|
|
34
|
+
|
|
35
|
+
SkSidebarItem renders differently based on props:
|
|
36
|
+
|
|
37
|
+
- **`to`** -- Renders as `<router-link>` for Vue Router.
|
|
38
|
+
- **`href`** -- Renders as `<a>` for standard links.
|
|
39
|
+
- **`active`** -- Highlights the item as the current page.
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<SkSidebarItem :to="{ name: 'dashboard' }" :active="isActive">
|
|
43
|
+
Dashboard
|
|
44
|
+
</SkSidebarItem>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Width
|
|
48
|
+
|
|
49
|
+
```vue
|
|
50
|
+
<SkSidebar width="200px">...</SkSidebar>
|
|
51
|
+
<SkSidebar width="15rem">...</SkSidebar>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Kinds
|
|
55
|
+
|
|
56
|
+
```vue
|
|
57
|
+
<SkSidebar kind="primary">...</SkSidebar>
|
|
58
|
+
<SkSidebar kind="accent">...</SkSidebar>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Custom Colors
|
|
62
|
+
|
|
63
|
+
```vue
|
|
64
|
+
<SkSidebar
|
|
65
|
+
base-color="oklch(0.15 0.05 260)"
|
|
66
|
+
text-color="oklch(0.85 0 0)"
|
|
67
|
+
>
|
|
68
|
+
<SkSidebarItem href="/">Dark sidebar</SkSidebarItem>
|
|
69
|
+
</SkSidebar>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Accessibility
|
|
73
|
+
|
|
74
|
+
The sidebar is a presentational container. Apply `role="navigation"` and `aria-label` on the sidebar or a wrapping `<nav>` element to provide context for screen readers.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkSkeleton
|
|
3
|
+
category: Feedback
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkSkeleton
|
|
7
|
+
|
|
8
|
+
A loading placeholder component with animated shimmer or pulse effects. Use to indicate content is being fetched and provide a visual preview of the expected layout.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<template>
|
|
14
|
+
<SkSkeleton width="200px" height="1rem" />
|
|
15
|
+
</template>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Variants
|
|
19
|
+
|
|
20
|
+
- **text** (default) -- Rectangular shape with a slight height suitable for text lines.
|
|
21
|
+
- **rectangular** -- Generic rectangular block.
|
|
22
|
+
- **circular** -- Perfect circle (height matches width automatically).
|
|
23
|
+
- **square** -- Square shape (height matches width automatically).
|
|
24
|
+
|
|
25
|
+
```vue
|
|
26
|
+
<SkSkeleton variant="text" width="80%" />
|
|
27
|
+
<SkSkeleton variant="rectangular" width="100%" height="200px" />
|
|
28
|
+
<SkSkeleton variant="circular" width="48px" />
|
|
29
|
+
<SkSkeleton variant="square" width="48px" />
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Animation
|
|
33
|
+
|
|
34
|
+
- **shimmer** (default) -- A sliding highlight effect.
|
|
35
|
+
- **pulse** -- A fading opacity cycle.
|
|
36
|
+
- **none** -- Static placeholder with no animation.
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<SkSkeleton animation="shimmer" width="100%" />
|
|
40
|
+
<SkSkeleton animation="pulse" width="100%" />
|
|
41
|
+
<SkSkeleton animation="none" width="100%" />
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Custom Beveling
|
|
45
|
+
|
|
46
|
+
Override which corners are beveled and the bevel size:
|
|
47
|
+
|
|
48
|
+
```vue
|
|
49
|
+
<SkSkeleton
|
|
50
|
+
variant="rectangular"
|
|
51
|
+
width="200px"
|
|
52
|
+
height="100px"
|
|
53
|
+
:corners="['top-left', 'bottom-right']"
|
|
54
|
+
bevel="1rem"
|
|
55
|
+
/>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Available corners: `top-left`, `top-right`, `bottom-left`, `bottom-right`.
|
|
59
|
+
|
|
60
|
+
## Composition
|
|
61
|
+
|
|
62
|
+
Build skeleton layouts that mirror your real content:
|
|
63
|
+
|
|
64
|
+
```vue
|
|
65
|
+
<div style="display: flex; gap: 1rem; align-items: center;">
|
|
66
|
+
<SkSkeleton variant="circular" width="48px" />
|
|
67
|
+
<div style="flex: 1;">
|
|
68
|
+
<SkSkeleton variant="text" width="60%" />
|
|
69
|
+
<SkSkeleton variant="text" width="40%" />
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Accessibility
|
|
75
|
+
|
|
76
|
+
SkSkeleton is a visual placeholder and does not convey loading status to assistive technology. Use `aria-busy="true"` on the parent container and provide a visually hidden loading message for screen readers.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkSlider
|
|
3
|
+
category: Forms
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkSlider
|
|
7
|
+
|
|
8
|
+
A range slider component for selecting numeric values. Supports single-thumb and multi-thumb (range) modes with horizontal and vertical orientations. Built on RekaUI's Slider primitive.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<script setup>
|
|
14
|
+
import { ref } from 'vue';
|
|
15
|
+
|
|
16
|
+
const volume = ref(50);
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<SkSlider v-model="volume" :min="0" :max="100" kind="primary" />
|
|
21
|
+
</template>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Range Mode
|
|
25
|
+
|
|
26
|
+
Pass an array to enable multiple thumbs for selecting a range:
|
|
27
|
+
|
|
28
|
+
```vue
|
|
29
|
+
<script setup>
|
|
30
|
+
import { ref } from 'vue';
|
|
31
|
+
|
|
32
|
+
const range = ref([20, 80]);
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<SkSlider
|
|
37
|
+
v-model="range"
|
|
38
|
+
:min="0"
|
|
39
|
+
:max="100"
|
|
40
|
+
:min-steps-between-thumbs="5"
|
|
41
|
+
kind="accent"
|
|
42
|
+
/>
|
|
43
|
+
</template>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Step
|
|
47
|
+
|
|
48
|
+
```vue
|
|
49
|
+
<SkSlider v-model="value" :step="10" :min="0" :max="100" />
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Orientation
|
|
53
|
+
|
|
54
|
+
```vue
|
|
55
|
+
<SkSlider v-model="value" orientation="vertical" style="height: 200px;" />
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Kinds
|
|
59
|
+
|
|
60
|
+
```vue
|
|
61
|
+
<SkSlider v-model="val" kind="primary" />
|
|
62
|
+
<SkSlider v-model="val" kind="success" />
|
|
63
|
+
<SkSlider v-model="val" kind="danger" />
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Sizes
|
|
67
|
+
|
|
68
|
+
```vue
|
|
69
|
+
<SkSlider v-model="val" size="sm" />
|
|
70
|
+
<SkSlider v-model="val" size="md" />
|
|
71
|
+
<SkSlider v-model="val" size="lg" />
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## States
|
|
75
|
+
|
|
76
|
+
```vue
|
|
77
|
+
<SkSlider v-model="val" disabled />
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Custom Colors
|
|
81
|
+
|
|
82
|
+
Use `baseColor` for the track fill and `thumbColor` for the thumb:
|
|
83
|
+
|
|
84
|
+
```vue
|
|
85
|
+
<SkSlider
|
|
86
|
+
v-model="val"
|
|
87
|
+
base-color="oklch(0.7 0.25 300)"
|
|
88
|
+
thumb-color="oklch(0.9 0.1 300)"
|
|
89
|
+
/>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Accessibility
|
|
93
|
+
|
|
94
|
+
Built on RekaUI Slider which provides `role="slider"`, `aria-valuemin`, `aria-valuemax`, `aria-valuenow`, and `aria-orientation`. Arrow keys adjust the value by the step amount. Home/End jump to min/max.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkSpinner
|
|
3
|
+
category: Feedback
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkSpinner
|
|
7
|
+
|
|
8
|
+
An animated loading indicator with three cyberpunk-themed animation variants. Use to communicate ongoing processing or loading.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<template>
|
|
14
|
+
<SkSpinner kind="primary" />
|
|
15
|
+
</template>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Variants
|
|
19
|
+
|
|
20
|
+
- **circular** (default) -- Dual rotating arc animation.
|
|
21
|
+
- **dots** -- Three bouncing dots.
|
|
22
|
+
- **crosshair** -- A rotating crosshair targeting animation.
|
|
23
|
+
|
|
24
|
+
```vue
|
|
25
|
+
<SkSpinner variant="circular" />
|
|
26
|
+
<SkSpinner variant="dots" />
|
|
27
|
+
<SkSpinner variant="crosshair" />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Kinds
|
|
31
|
+
|
|
32
|
+
```vue
|
|
33
|
+
<SkSpinner kind="primary" />
|
|
34
|
+
<SkSpinner kind="accent" />
|
|
35
|
+
<SkSpinner kind="success" />
|
|
36
|
+
<SkSpinner kind="danger" />
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Sizes
|
|
40
|
+
|
|
41
|
+
```vue
|
|
42
|
+
<SkSpinner size="xs" />
|
|
43
|
+
<SkSpinner size="sm" />
|
|
44
|
+
<SkSpinner size="md" />
|
|
45
|
+
<SkSpinner size="lg" />
|
|
46
|
+
<SkSpinner size="xl" />
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Custom Color
|
|
50
|
+
|
|
51
|
+
Use the `color` prop (not `baseColor`) for a custom spinner color:
|
|
52
|
+
|
|
53
|
+
```vue
|
|
54
|
+
<SkSpinner color="oklch(0.7 0.25 300)" />
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Accessibility
|
|
58
|
+
|
|
59
|
+
Renders with `role="status"`, `aria-live="polite"`, and `aria-label="Loading"`. Screen readers will announce the loading state.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkSwitch
|
|
3
|
+
category: Forms
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkSwitch
|
|
7
|
+
|
|
8
|
+
A toggle switch component for binary on/off choices. Supports dynamic labels that change with state and flexible thumb styling. Built on RekaUI's Switch primitive.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<script setup>
|
|
14
|
+
import { ref } from 'vue';
|
|
15
|
+
|
|
16
|
+
const enabled = ref(false);
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<SkSwitch v-model="enabled" label="Enable notifications" kind="primary" />
|
|
21
|
+
</template>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Dynamic Labels
|
|
25
|
+
|
|
26
|
+
Use `label-on` and `label-off` for labels that change based on the toggle state with a fade animation:
|
|
27
|
+
|
|
28
|
+
```vue
|
|
29
|
+
<SkSwitch
|
|
30
|
+
v-model="enabled"
|
|
31
|
+
label-on="Enabled"
|
|
32
|
+
label-off="Disabled"
|
|
33
|
+
kind="success"
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Disable the fade animation with `disable-label-animation`.
|
|
38
|
+
|
|
39
|
+
## Slots
|
|
40
|
+
|
|
41
|
+
- **default** -- Custom label content (overrides all label props).
|
|
42
|
+
- **label-on** -- Custom content shown when the switch is on.
|
|
43
|
+
- **label-off** -- Custom content shown when the switch is off.
|
|
44
|
+
|
|
45
|
+
```vue
|
|
46
|
+
<SkSwitch v-model="premium">
|
|
47
|
+
<template #label-on>
|
|
48
|
+
<SkTag kind="success" size="sm">Active</SkTag>
|
|
49
|
+
</template>
|
|
50
|
+
<template #label-off>
|
|
51
|
+
<SkTag kind="neutral" size="sm">Inactive</SkTag>
|
|
52
|
+
</template>
|
|
53
|
+
</SkSwitch>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Kinds
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<SkSwitch v-model="val" kind="primary" label="Primary" />
|
|
60
|
+
<SkSwitch v-model="val" kind="accent" label="Accent" />
|
|
61
|
+
<SkSwitch v-model="val" kind="success" label="Success" />
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The `thumbKind` prop overrides the thumb color independently from the track:
|
|
65
|
+
|
|
66
|
+
```vue
|
|
67
|
+
<SkSwitch v-model="val" kind="neutral" thumb-kind="primary" label="Custom Thumb" />
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Sizes
|
|
71
|
+
|
|
72
|
+
```vue
|
|
73
|
+
<SkSwitch v-model="val" size="sm" label="Small" />
|
|
74
|
+
<SkSwitch v-model="val" size="md" label="Medium" />
|
|
75
|
+
<SkSwitch v-model="val" size="lg" label="Large" />
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## States
|
|
79
|
+
|
|
80
|
+
```vue
|
|
81
|
+
<SkSwitch v-model="val" disabled label="Disabled" />
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Custom Colors
|
|
85
|
+
|
|
86
|
+
```vue
|
|
87
|
+
<SkSwitch
|
|
88
|
+
v-model="val"
|
|
89
|
+
base-color="oklch(0.7 0.25 45)"
|
|
90
|
+
text-color="white"
|
|
91
|
+
label="Custom Orange"
|
|
92
|
+
/>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Accessibility
|
|
96
|
+
|
|
97
|
+
Built on RekaUI Switch which provides `role="switch"` and `aria-checked`. The label is associated via a wrapping `<label>` element. Space key toggles the state.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkTable
|
|
3
|
+
category: Feedback
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkTable
|
|
7
|
+
|
|
8
|
+
A styled HTML table component with striped rows, hover effects, and configurable borders. Wraps standard `<table>` markup with consistent theming.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<template>
|
|
14
|
+
<SkTable kind="neutral" striped hoverable>
|
|
15
|
+
<thead>
|
|
16
|
+
<tr>
|
|
17
|
+
<th>Name</th>
|
|
18
|
+
<th>Status</th>
|
|
19
|
+
<th>Role</th>
|
|
20
|
+
</tr>
|
|
21
|
+
</thead>
|
|
22
|
+
<tbody>
|
|
23
|
+
<tr>
|
|
24
|
+
<td>Alice</td>
|
|
25
|
+
<td>Active</td>
|
|
26
|
+
<td>Admin</td>
|
|
27
|
+
</tr>
|
|
28
|
+
<tr>
|
|
29
|
+
<td>Bob</td>
|
|
30
|
+
<td>Inactive</td>
|
|
31
|
+
<td>User</td>
|
|
32
|
+
</tr>
|
|
33
|
+
</tbody>
|
|
34
|
+
</SkTable>
|
|
35
|
+
</template>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Variants
|
|
39
|
+
|
|
40
|
+
- **default** -- Standard spacing.
|
|
41
|
+
- **compact** -- Reduced cell padding.
|
|
42
|
+
- **comfortable** -- Increased cell padding.
|
|
43
|
+
|
|
44
|
+
```vue
|
|
45
|
+
<SkTable variant="compact">...</SkTable>
|
|
46
|
+
<SkTable variant="comfortable">...</SkTable>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Features
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<!-- Alternating row colors -->
|
|
53
|
+
<SkTable striped>...</SkTable>
|
|
54
|
+
|
|
55
|
+
<!-- Row hover highlight -->
|
|
56
|
+
<SkTable hoverable>...</SkTable>
|
|
57
|
+
|
|
58
|
+
<!-- Outer border -->
|
|
59
|
+
<SkTable bordered>...</SkTable>
|
|
60
|
+
|
|
61
|
+
<!-- Cell borders -->
|
|
62
|
+
<SkTable inner-borders>...</SkTable>
|
|
63
|
+
|
|
64
|
+
<!-- Dark background -->
|
|
65
|
+
<SkTable dark-background>...</SkTable>
|
|
66
|
+
|
|
67
|
+
<!-- Subtle styling (lighter) -->
|
|
68
|
+
<SkTable subtle>...</SkTable>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Kinds
|
|
72
|
+
|
|
73
|
+
```vue
|
|
74
|
+
<SkTable kind="primary">...</SkTable>
|
|
75
|
+
<SkTable kind="accent">...</SkTable>
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Custom Colors
|
|
79
|
+
|
|
80
|
+
```vue
|
|
81
|
+
<SkTable
|
|
82
|
+
base-color="oklch(0.2 0.05 260)"
|
|
83
|
+
text-color="oklch(0.9 0 0)"
|
|
84
|
+
>
|
|
85
|
+
...
|
|
86
|
+
</SkTable>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Accessibility
|
|
90
|
+
|
|
91
|
+
SkTable renders as a standard `<table>` element. Use semantic `<thead>`, `<tbody>`, `<th>`, and `<td>` elements. Add `scope="col"` or `scope="row"` to header cells for screen reader clarity.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkTabs
|
|
3
|
+
category: Navigation
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkTabs
|
|
7
|
+
|
|
8
|
+
A tabbed interface for organizing content into switchable panels. Composed of SkTabs, SkTabList, SkTab, SkTabPanels, and SkTabPanel. Built on RekaUI's Tabs primitive.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<script setup>
|
|
14
|
+
import { ref } from 'vue';
|
|
15
|
+
|
|
16
|
+
const activeTab = ref('overview');
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<SkTabs v-model="activeTab" kind="primary">
|
|
21
|
+
<SkTabList>
|
|
22
|
+
<SkTab value="overview">Overview</SkTab>
|
|
23
|
+
<SkTab value="details">Details</SkTab>
|
|
24
|
+
<SkTab value="settings">Settings</SkTab>
|
|
25
|
+
</SkTabList>
|
|
26
|
+
<SkTabPanels>
|
|
27
|
+
<SkTabPanel value="overview">Overview content</SkTabPanel>
|
|
28
|
+
<SkTabPanel value="details">Details content</SkTabPanel>
|
|
29
|
+
<SkTabPanel value="settings">Settings content</SkTabPanel>
|
|
30
|
+
</SkTabPanels>
|
|
31
|
+
</SkTabs>
|
|
32
|
+
</template>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Composition
|
|
36
|
+
|
|
37
|
+
- **SkTabs** -- Root container managing state and providing context.
|
|
38
|
+
- **SkTabList** -- Container for tab triggers (the clickable tab buttons).
|
|
39
|
+
- **SkTab** -- Individual tab trigger. Requires a `value` matching a SkTabPanel.
|
|
40
|
+
- **SkTabPanels** -- Container for tab content panels.
|
|
41
|
+
- **SkTabPanel** -- Content panel shown when its matching tab is active.
|
|
42
|
+
|
|
43
|
+
## Orientation
|
|
44
|
+
|
|
45
|
+
```vue
|
|
46
|
+
<!-- Horizontal (default) -->
|
|
47
|
+
<SkTabs v-model="tab" orientation="horizontal">...</SkTabs>
|
|
48
|
+
|
|
49
|
+
<!-- Vertical -->
|
|
50
|
+
<SkTabs v-model="tab" orientation="vertical">...</SkTabs>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Placement
|
|
54
|
+
|
|
55
|
+
Controls where the tab list appears relative to the content:
|
|
56
|
+
|
|
57
|
+
```vue
|
|
58
|
+
<SkTabs v-model="tab" placement="start">...</SkTabs>
|
|
59
|
+
<SkTabs v-model="tab" placement="end">...</SkTabs>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Flush Mode
|
|
63
|
+
|
|
64
|
+
Use `flush` to apply negative margins so the tab list aligns with the parent container edges:
|
|
65
|
+
|
|
66
|
+
```vue
|
|
67
|
+
<SkPanel>
|
|
68
|
+
<SkTabs v-model="tab" flush>
|
|
69
|
+
...
|
|
70
|
+
</SkTabs>
|
|
71
|
+
</SkPanel>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Kinds
|
|
75
|
+
|
|
76
|
+
Set on SkTabs to apply to all tabs, or override per individual tab:
|
|
77
|
+
|
|
78
|
+
```vue
|
|
79
|
+
<SkTabs v-model="tab" kind="accent">
|
|
80
|
+
<SkTabList>
|
|
81
|
+
<SkTab value="a">Inherits Accent</SkTab>
|
|
82
|
+
<SkTab value="b" kind="danger">Override to Danger</SkTab>
|
|
83
|
+
</SkTabList>
|
|
84
|
+
...
|
|
85
|
+
</SkTabs>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Disabled Tabs
|
|
89
|
+
|
|
90
|
+
```vue
|
|
91
|
+
<SkTab value="locked" disabled>Locked</SkTab>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Custom Colors
|
|
95
|
+
|
|
96
|
+
```vue
|
|
97
|
+
<SkTabs
|
|
98
|
+
v-model="tab"
|
|
99
|
+
base-color="oklch(0.65 0.2 280)"
|
|
100
|
+
text-color="white"
|
|
101
|
+
>
|
|
102
|
+
...
|
|
103
|
+
</SkTabs>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Accessibility
|
|
107
|
+
|
|
108
|
+
Built on RekaUI Tabs which provides `role="tablist"`, `role="tab"`, and `role="tabpanel"` with proper `aria-selected`, `aria-controls`, and `aria-labelledby` associations. Arrow keys navigate between tabs, Home/End jump to first/last tab.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: SkTag
|
|
3
|
+
category: Feedback
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SkTag
|
|
7
|
+
|
|
8
|
+
A compact label component for metadata, categories, status indicators, or keywords. Supports removable tags with a close button.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```vue
|
|
13
|
+
<template>
|
|
14
|
+
<SkTag kind="primary">Featured</SkTag>
|
|
15
|
+
</template>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Variants
|
|
19
|
+
|
|
20
|
+
- **solid** (default) -- Filled background.
|
|
21
|
+
- **outline** -- Transparent with colored border.
|
|
22
|
+
- **subtle** -- Light tinted background.
|
|
23
|
+
- **ghost** -- Minimal, text-only appearance.
|
|
24
|
+
|
|
25
|
+
```vue
|
|
26
|
+
<SkTag variant="solid" kind="primary">Solid</SkTag>
|
|
27
|
+
<SkTag variant="outline" kind="primary">Outline</SkTag>
|
|
28
|
+
<SkTag variant="subtle" kind="primary">Subtle</SkTag>
|
|
29
|
+
<SkTag variant="ghost" kind="primary">Ghost</SkTag>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Kinds
|
|
33
|
+
|
|
34
|
+
```vue
|
|
35
|
+
<SkTag kind="neutral">Neutral</SkTag>
|
|
36
|
+
<SkTag kind="primary">Primary</SkTag>
|
|
37
|
+
<SkTag kind="accent">Accent</SkTag>
|
|
38
|
+
<SkTag kind="success">Active</SkTag>
|
|
39
|
+
<SkTag kind="warning">Pending</SkTag>
|
|
40
|
+
<SkTag kind="danger">Error</SkTag>
|
|
41
|
+
<SkTag kind="info">Info</SkTag>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Sizes
|
|
45
|
+
|
|
46
|
+
```vue
|
|
47
|
+
<SkTag size="sm">Small</SkTag>
|
|
48
|
+
<SkTag size="md">Medium</SkTag>
|
|
49
|
+
<SkTag size="lg">Large</SkTag>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Removable
|
|
53
|
+
|
|
54
|
+
Add a close button that emits a `remove` event:
|
|
55
|
+
|
|
56
|
+
```vue
|
|
57
|
+
<SkTag kind="danger" removable @remove="handleRemove">
|
|
58
|
+
Removable Tag
|
|
59
|
+
</SkTag>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Custom Colors
|
|
63
|
+
|
|
64
|
+
```vue
|
|
65
|
+
<SkTag
|
|
66
|
+
base-color="oklch(0.6 0.25 300)"
|
|
67
|
+
text-color="white"
|
|
68
|
+
>
|
|
69
|
+
Custom Purple
|
|
70
|
+
</SkTag>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Accessibility
|
|
74
|
+
|
|
75
|
+
The remove button is keyboard-accessible. Developers should provide context (such as an `aria-label`) if the tag content alone does not convey its purpose to screen readers.
|