zabi-components 5.0.22 → 7.0.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/README.md +139 -1478
- package/THEME.md +473 -0
- package/THEMING.md +248 -0
- package/dist/atoms/ActionPanel.svelte +116 -0
- package/dist/atoms/ActionPanel.svelte.d.ts +19 -0
- package/dist/atoms/Badge.svelte +1 -1
- package/dist/atoms/Badge.svelte.d.ts +1 -1
- package/dist/atoms/Button.svelte +35 -16
- package/dist/atoms/Button.svelte.d.ts +3 -1
- package/dist/atoms/Card.svelte +49 -67
- package/dist/atoms/Card.svelte.d.ts +4 -4
- package/dist/atoms/CardHeader.svelte +15 -2
- package/dist/atoms/CardHeader.svelte.d.ts +5 -0
- package/dist/atoms/Checkbox.svelte +50 -76
- package/dist/atoms/Checkbox.svelte.d.ts +7 -2
- package/dist/atoms/CodeBlock.svelte +20 -34
- package/dist/atoms/CodeBlock.svelte.d.ts +1 -0
- package/dist/atoms/ColorPicker.svelte +3 -7
- package/dist/atoms/Container.svelte +41 -0
- package/dist/atoms/Container.svelte.d.ts +12 -0
- package/dist/atoms/Divider.svelte +68 -0
- package/dist/atoms/Divider.svelte.d.ts +13 -0
- package/dist/atoms/FeatureCard.svelte +35 -50
- package/dist/atoms/FeatureCard.svelte.d.ts +9 -4
- package/dist/atoms/IconButton.svelte +33 -24
- package/dist/atoms/IconButton.svelte.d.ts +4 -8
- package/dist/atoms/Input.svelte +58 -26
- package/dist/atoms/Input.svelte.d.ts +6 -1
- package/dist/atoms/List.svelte +2 -7
- package/dist/atoms/List.svelte.d.ts +1 -6
- package/dist/atoms/ListItem.svelte +54 -65
- package/dist/atoms/ListItem.svelte.d.ts +7 -13
- package/dist/atoms/ListItemLeading.svelte +19 -0
- package/dist/atoms/ListItemLeading.svelte.d.ts +9 -0
- package/dist/atoms/Progress.svelte +2 -2
- package/dist/atoms/Radio.svelte +51 -0
- package/dist/atoms/Radio.svelte.d.ts +14 -0
- package/dist/atoms/Select.svelte +28 -33
- package/dist/atoms/Select.svelte.d.ts +0 -10
- package/dist/atoms/SelectionControl.svelte +98 -0
- package/dist/atoms/SelectionControl.svelte.d.ts +26 -0
- package/dist/atoms/Skeleton.svelte +39 -15
- package/dist/atoms/Skeleton.svelte.d.ts +7 -3
- package/dist/atoms/Table.svelte +27 -0
- package/dist/atoms/Table.svelte.d.ts +10 -0
- package/dist/atoms/Text.svelte +46 -0
- package/dist/atoms/Text.svelte.d.ts +13 -0
- package/dist/atoms/Textarea.svelte +74 -53
- package/dist/atoms/Textarea.svelte.d.ts +6 -2
- package/dist/atoms/ThemeToggle.svelte +35 -24
- package/dist/atoms/ThemeToggle.svelte.d.ts +1 -0
- package/dist/atoms/Toast.svelte +55 -31
- package/dist/atoms/Toast.svelte.d.ts +4 -1
- package/dist/atoms/Toggle.svelte +37 -22
- package/dist/atoms/Toggle.svelte.d.ts +2 -1
- package/dist/atoms/Tooltip.svelte +90 -11
- package/dist/atoms/index.d.ts +6 -0
- package/dist/atoms/index.js +6 -0
- package/dist/atoms/selection-control.styles.d.ts +25 -0
- package/dist/atoms/selection-control.styles.js +30 -0
- package/dist/components/atoms/index.d.ts +6 -0
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/atoms/selection-control.styles.d.ts +26 -0
- package/dist/components/atoms/selection-control.styles.d.ts.map +1 -0
- package/dist/components/index.d.ts +42 -7
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/molecules/index.d.ts +10 -0
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/molecules/navigation-menu-context.d.ts +11 -0
- package/dist/components/molecules/navigation-menu-context.d.ts.map +1 -1
- package/dist/components/molecules/toast-store.d.ts +39 -0
- package/dist/components/molecules/toast-store.d.ts.map +1 -0
- package/dist/components/organisms/index.d.ts +3 -3
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/types/page.types.d.ts +69 -0
- package/dist/components/types/page.types.d.ts.map +1 -0
- package/dist/components/types/page.types.js +1 -0
- package/dist/components/types/variants.d.ts +64 -0
- package/dist/components/types/variants.d.ts.map +1 -0
- package/dist/components/types/variants.js +44 -0
- package/dist/components/util/fixed-sidebar-flyout.d.ts +23 -0
- package/dist/components/util/fixed-sidebar-flyout.d.ts.map +1 -0
- package/dist/components/util/focus-utils.d.ts +12 -0
- package/dist/components/util/focus-utils.d.ts.map +1 -0
- package/dist/components/util/ssr-safe.d.ts +17 -0
- package/dist/components/util/ssr-safe.d.ts.map +1 -0
- package/dist/index.d.ts +42 -7
- package/dist/index.js +45 -10
- package/dist/lib/layout-width-tokens.d.ts +17 -0
- package/dist/lib/layout-width-tokens.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/Button.d.ts +3 -0
- package/dist/lib/showcase/component-docs/Button.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/Input.d.ts +3 -0
- package/dist/lib/showcase/component-docs/Input.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/List.d.ts +3 -0
- package/dist/lib/showcase/component-docs/List.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/Modal.d.ts +3 -0
- package/dist/lib/showcase/component-docs/Modal.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/Radio.d.ts +3 -0
- package/dist/lib/showcase/component-docs/Radio.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts +3 -0
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/Skeleton.d.ts +3 -0
- package/dist/lib/showcase/component-docs/Skeleton.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/_shared.d.ts +12 -0
- package/dist/lib/showcase/component-docs/_shared.d.ts.map +1 -0
- package/dist/lib/showcase/component-docs/index.d.ts +4 -0
- package/dist/lib/showcase/component-docs/index.d.ts.map +1 -0
- package/dist/lib/showcase/components-catalog.d.ts +3 -0
- package/dist/lib/showcase/components-catalog.d.ts.map +1 -0
- package/dist/lib/showcase/components-showcase-constants.d.ts +89 -0
- package/dist/lib/showcase/components-showcase-constants.d.ts.map +1 -0
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts +15 -0
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts.map +1 -0
- package/dist/molecules/Alert.svelte +50 -23
- package/dist/molecules/Alert.svelte.d.ts +1 -1
- package/dist/molecules/ComponentDemo.svelte +54 -51
- package/dist/molecules/ContactForm.svelte +70 -65
- package/dist/molecules/Dropdown.svelte +99 -108
- package/dist/molecules/Dropdown.svelte.d.ts +12 -6
- package/dist/molecules/EmptyState.svelte +44 -0
- package/dist/molecules/EmptyState.svelte.d.ts +11 -0
- package/dist/molecules/FormField.svelte +89 -0
- package/dist/molecules/FormField.svelte.d.ts +23 -0
- package/dist/molecules/Header.svelte +41 -0
- package/dist/molecules/Header.svelte.d.ts +10 -0
- package/dist/molecules/ImageUpload.svelte +1 -1
- package/dist/molecules/Modal.svelte +39 -26
- package/dist/molecules/Modal.svelte.d.ts +4 -2
- package/dist/molecules/NavigationMenu.svelte +16 -0
- package/dist/molecules/NavigationMenu.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuContent.svelte +9 -1
- package/dist/molecules/NavigationMenuLink.svelte +1 -1
- package/dist/molecules/NavigationMenuTrigger.svelte +9 -4
- package/dist/molecules/Page.svelte +16 -0
- package/dist/molecules/Page.svelte.d.ts +8 -0
- package/dist/molecules/PropsTable.svelte +61 -0
- package/dist/molecules/PropsTable.svelte.d.ts +8 -0
- package/dist/molecules/RadioGroup.svelte +197 -0
- package/dist/molecules/RadioGroup.svelte.d.ts +20 -0
- package/dist/molecules/Section.svelte +14 -23
- package/dist/molecules/Section.svelte.d.ts +2 -11
- package/dist/molecules/SidebarBrandHeader.svelte +68 -0
- package/dist/molecules/SidebarBrandHeader.svelte.d.ts +10 -0
- package/dist/molecules/SidebarFooter.svelte +119 -0
- package/dist/molecules/SidebarFooter.svelte.d.ts +23 -0
- package/dist/molecules/SidebarNavSection.svelte +49 -0
- package/dist/molecules/SidebarNavSection.svelte.d.ts +14 -0
- package/dist/molecules/SlideUp.svelte +21 -16
- package/dist/molecules/SlideUp.svelte.d.ts +1 -1
- package/dist/molecules/Tabs.svelte +6 -11
- package/dist/molecules/Toaster.svelte +21 -0
- package/dist/molecules/Toaster.svelte.d.ts +6 -0
- package/dist/molecules/ToasterToast.svelte +217 -0
- package/dist/molecules/ToasterToast.svelte.d.ts +7 -0
- package/dist/molecules/index.d.ts +10 -0
- package/dist/molecules/index.js +10 -0
- package/dist/molecules/navigation-menu-context.d.ts +11 -0
- package/dist/molecules/navigation-menu-context.js +18 -0
- package/dist/molecules/toast-store.d.ts +38 -0
- package/dist/molecules/toast-store.js +34 -0
- package/dist/organisms/SidebarAccountPanel.svelte +118 -0
- package/dist/organisms/SidebarAccountPanel.svelte.d.ts +20 -0
- package/dist/organisms/SidebarNavigation.svelte +286 -212
- package/dist/organisms/SidebarNavigation.svelte.d.ts +22 -1
- package/dist/organisms/{SidebarProjectPanel.svelte → SidebarPanel.svelte} +67 -34
- package/dist/organisms/{SidebarProjectPanel.svelte.d.ts → SidebarPanel.svelte.d.ts} +9 -6
- package/dist/organisms/TopNavbar.svelte +214 -0
- package/dist/organisms/TopNavbar.svelte.d.ts +35 -0
- package/dist/organisms/index.d.ts +3 -3
- package/dist/organisms/index.js +3 -3
- package/dist/routes/lib/focus-utils.d.ts +7 -18
- package/dist/routes/lib/focus-utils.ts +32 -34
- package/dist/routes/lib/ssr-safe.ts +5 -4
- package/dist/routes/lib/variant-utils.ts +48 -39
- package/dist/types/components.d.ts +187 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/events.d.ts +200 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/index.d.ts +171 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/page.types.d.ts +3 -0
- package/dist/types/page.types.d.ts.map +1 -0
- package/dist/types/page.types.js +1 -0
- package/dist/types/page.types.ts +79 -0
- package/dist/types/variants.d.ts +3 -0
- package/dist/types/variants.d.ts.map +1 -0
- package/dist/types/variants.js +1 -0
- package/dist/types/variants.ts +75 -0
- package/dist/util/fixed-sidebar-flyout.d.ts +22 -0
- package/dist/util/fixed-sidebar-flyout.js +148 -0
- package/dist/util/focus-utils.d.ts +11 -0
- package/dist/util/focus-utils.js +94 -0
- package/dist/util/ssr-safe.d.ts +16 -0
- package/dist/util/ssr-safe.js +48 -0
- package/dist/zabi-components-colors.css +360 -324
- package/dist/zabi-components-theme-dark-only.css +164 -151
- package/dist/zabi-components-theme-dark.css +164 -151
- package/dist/zabi-components-theme-only.css +253 -230
- package/dist/zabi-components-theme.css +253 -230
- package/dist/zabi-components.css +1262 -241
- package/docs/theme-imports.md +112 -0
- package/package.json +32 -10
- package/dist/organisms/Navbar.svelte +0 -92
- package/dist/organisms/Navbar.svelte.d.ts +0 -14
- package/dist/organisms/Navigation.svelte +0 -119
- package/dist/organisms/Navigation.svelte.d.ts +0 -21
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*/
|
|
1
|
+
/** Focus helpers for overlays (modals, sheets). Requires `app.css` focus ring classes. */
|
|
2
|
+
|
|
3
|
+
/** From `app.css` `@layer components` — import the library/app stylesheet. */
|
|
4
|
+
export const FOCUS_BRAND_CLASS = "focus-brand";
|
|
5
|
+
export const FOCUS_NAV_CLASS = "focus-nav";
|
|
4
6
|
|
|
5
|
-
/**
|
|
6
|
-
* Get all focusable elements within a container
|
|
7
|
-
*/
|
|
8
7
|
export function getFocusableElements(container: HTMLElement): HTMLElement[] {
|
|
9
8
|
const selector = [
|
|
10
9
|
'button:not([disabled])',
|
|
@@ -17,27 +16,23 @@ export function getFocusableElements(container: HTMLElement): HTMLElement[] {
|
|
|
17
16
|
|
|
18
17
|
return Array.from(container.querySelectorAll<HTMLElement>(selector)).filter(
|
|
19
18
|
(el) => {
|
|
20
|
-
// Filter out elements that are not visible
|
|
21
19
|
const style = window.getComputedStyle(el);
|
|
22
20
|
return style.display !== 'none' && style.visibility !== 'hidden';
|
|
23
21
|
}
|
|
24
22
|
);
|
|
25
23
|
}
|
|
26
24
|
|
|
27
|
-
/**
|
|
28
|
-
* Trap focus within a container element
|
|
29
|
-
*/
|
|
25
|
+
/** Tab wraps first↔last inside `container`. Caller should pair with `saveFocus` / `returnFocus`. */
|
|
30
26
|
export function trapFocus(container: HTMLElement): () => void {
|
|
31
27
|
const focusableElements = getFocusableElements(container);
|
|
32
28
|
|
|
33
29
|
if (focusableElements.length === 0) {
|
|
34
|
-
return () => {};
|
|
30
|
+
return () => {};
|
|
35
31
|
}
|
|
36
32
|
|
|
37
33
|
const firstElement = focusableElements[0];
|
|
38
34
|
const lastElement = focusableElements[focusableElements.length - 1];
|
|
39
35
|
|
|
40
|
-
// Focus first element
|
|
41
36
|
firstElement.focus();
|
|
42
37
|
|
|
43
38
|
function handleKeydown(event: KeyboardEvent) {
|
|
@@ -54,13 +49,11 @@ export function trapFocus(container: HTMLElement): () => void {
|
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
if (event.shiftKey) {
|
|
57
|
-
// Shift + Tab
|
|
58
52
|
if (currentFocus === firstElement) {
|
|
59
53
|
event.preventDefault();
|
|
60
54
|
lastElement.focus();
|
|
61
55
|
}
|
|
62
56
|
} else {
|
|
63
|
-
// Tab
|
|
64
57
|
if (currentFocus === lastElement) {
|
|
65
58
|
event.preventDefault();
|
|
66
59
|
firstElement.focus();
|
|
@@ -70,43 +63,48 @@ export function trapFocus(container: HTMLElement): () => void {
|
|
|
70
63
|
|
|
71
64
|
container.addEventListener('keydown', handleKeydown);
|
|
72
65
|
|
|
73
|
-
// Return cleanup function
|
|
74
66
|
return () => {
|
|
75
67
|
container.removeEventListener('keydown', handleKeydown);
|
|
76
68
|
};
|
|
77
69
|
}
|
|
78
70
|
|
|
79
|
-
/**
|
|
80
|
-
|
|
81
|
-
*/
|
|
82
|
-
let previousFocus: HTMLElement | null = null;
|
|
71
|
+
/** One entry per overlay open; `returnFocus` pops LIFO (nested modals). */
|
|
72
|
+
const focusReturnStack: Array<HTMLElement | null> = [];
|
|
83
73
|
|
|
84
|
-
/**
|
|
85
|
-
* Save the currently focused element
|
|
86
|
-
*/
|
|
87
74
|
export function saveFocus(): void {
|
|
88
|
-
if (typeof document
|
|
89
|
-
|
|
75
|
+
if (typeof document === 'undefined') {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const active = document.activeElement;
|
|
79
|
+
if (active instanceof HTMLElement && active !== document.body) {
|
|
80
|
+
focusReturnStack.push(active);
|
|
81
|
+
} else {
|
|
82
|
+
focusReturnStack.push(null);
|
|
90
83
|
}
|
|
91
84
|
}
|
|
92
85
|
|
|
93
|
-
/**
|
|
94
|
-
* Return focus to the previously focused element
|
|
95
|
-
*/
|
|
86
|
+
/** Restores focus from the last `saveFocus`. Skips disconnected or unfocusable nodes. */
|
|
96
87
|
export function returnFocus(): void {
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
88
|
+
if (typeof document === 'undefined') {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const el = focusReturnStack.pop();
|
|
92
|
+
if (!el) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (typeof el.focus !== 'function' || !el.isConnected) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
el.focus({ preventScroll: true });
|
|
100
|
+
} catch {
|
|
101
|
+
/* embeds / shadow roots may reject programmatic focus */
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
/**
|
|
104
|
-
* Focus the first focusable element in a container
|
|
105
|
-
*/
|
|
106
105
|
export function focusFirstElement(container: HTMLElement): void {
|
|
107
106
|
const focusableElements = getFocusableElements(container);
|
|
108
107
|
if (focusableElements.length > 0) {
|
|
109
108
|
focusableElements[0].focus();
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
|
-
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Browser-only guards and id generation for components that run under SSR.
|
|
3
|
+
* `generateId()` is non-deterministic on the client (random) vs counter on the server —
|
|
4
|
+
* use stable ids for ARIA pairs (e.g. `menuId` on NavigationMenu), not for persisted keys.
|
|
5
|
+
*/
|
|
3
6
|
|
|
4
|
-
// Check if we're in a browser environment
|
|
5
7
|
export function isBrowser(): boolean {
|
|
6
8
|
return typeof window !== 'undefined';
|
|
7
9
|
}
|
|
@@ -46,7 +48,6 @@ export function safeClearInterval(id: NodeJS.Timeout | undefined): void {
|
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
50
|
|
|
49
|
-
// Generate SSR-safe unique IDs
|
|
50
51
|
let idCounter = 0;
|
|
51
52
|
export function generateId(prefix: string = 'id'): string {
|
|
52
53
|
if (isBrowser()) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Variant class helpers — semantic design tokens only (see src/app.css).
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import type { SemanticVariant } from '../../types/variants.js';
|
|
@@ -7,73 +7,79 @@ import type { SemanticVariant } from '../../types/variants.js';
|
|
|
7
7
|
export type Variant = SemanticVariant;
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
10
|
+
* Border + focus ring classes for text inputs (Input, Textarea).
|
|
11
11
|
*/
|
|
12
12
|
export function getInputVariantClasses(variant: Variant): string {
|
|
13
13
|
const variantMap: Record<Variant, string> = {
|
|
14
|
-
default:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
default:
|
|
15
|
+
'focus-ring border-input-border focus-visible:border-input-border',
|
|
16
|
+
success:
|
|
17
|
+
'focus-ring border-success focus-visible:border-success',
|
|
18
|
+
warning:
|
|
19
|
+
'focus-ring border-warning focus-visible:border-warning',
|
|
20
|
+
error: 'focus-ring border-error focus-visible:border-error',
|
|
21
|
+
info: 'focus-ring border-info focus-visible:border-info',
|
|
19
22
|
};
|
|
20
23
|
|
|
21
24
|
return variantMap[variant] || variantMap.default;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
28
|
+
* Card surfaces — border + background using semantic tokens.
|
|
26
29
|
*/
|
|
27
30
|
export function getCardVariantClasses(variant: Variant): string {
|
|
28
31
|
const variantMap: Record<Variant, string> = {
|
|
29
|
-
default: 'border-
|
|
30
|
-
success: 'border-
|
|
31
|
-
warning: 'border-
|
|
32
|
-
error: 'border-
|
|
33
|
-
info: 'border-
|
|
32
|
+
default: 'border-border bg-card',
|
|
33
|
+
success: 'border-success bg-card',
|
|
34
|
+
warning: 'border-warning bg-card',
|
|
35
|
+
error: 'border-error bg-card',
|
|
36
|
+
info: 'border-info bg-card',
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
return variantMap[variant] || variantMap.default;
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
/**
|
|
40
|
-
*
|
|
43
|
+
* Generic variant classes for borders, text, or backgrounds.
|
|
41
44
|
*/
|
|
42
|
-
export function getVariantClasses(
|
|
43
|
-
|
|
45
|
+
export function getVariantClasses(
|
|
46
|
+
variant: Variant,
|
|
47
|
+
type: 'border' | 'text' | 'bg',
|
|
48
|
+
): string {
|
|
49
|
+
const variantMap: Record<
|
|
50
|
+
Variant,
|
|
51
|
+
Record<'border' | 'text' | 'bg', string>
|
|
52
|
+
> = {
|
|
44
53
|
default: {
|
|
45
|
-
border: 'border-
|
|
46
|
-
text: 'text-
|
|
47
|
-
bg: 'bg-
|
|
54
|
+
border: 'border-border',
|
|
55
|
+
text: 'text-body',
|
|
56
|
+
bg: 'bg-card',
|
|
48
57
|
},
|
|
49
58
|
success: {
|
|
50
|
-
border: 'border-
|
|
51
|
-
text: 'text-
|
|
52
|
-
bg: 'bg-
|
|
59
|
+
border: 'border-success',
|
|
60
|
+
text: 'text-success',
|
|
61
|
+
bg: 'bg-card',
|
|
53
62
|
},
|
|
54
63
|
warning: {
|
|
55
|
-
border: 'border-
|
|
56
|
-
text: 'text-
|
|
57
|
-
bg: 'bg-
|
|
64
|
+
border: 'border-warning',
|
|
65
|
+
text: 'text-warning',
|
|
66
|
+
bg: 'bg-card',
|
|
58
67
|
},
|
|
59
68
|
error: {
|
|
60
|
-
border: 'border-
|
|
61
|
-
text: 'text-
|
|
62
|
-
bg: 'bg-
|
|
69
|
+
border: 'border-error',
|
|
70
|
+
text: 'text-error',
|
|
71
|
+
bg: 'bg-card',
|
|
63
72
|
},
|
|
64
73
|
info: {
|
|
65
|
-
border: 'border-
|
|
66
|
-
text: 'text-
|
|
67
|
-
bg: 'bg-
|
|
74
|
+
border: 'border-info',
|
|
75
|
+
text: 'text-info',
|
|
76
|
+
bg: 'bg-card',
|
|
68
77
|
},
|
|
69
78
|
};
|
|
70
79
|
|
|
71
80
|
return variantMap[variant]?.[type] || variantMap.default[type];
|
|
72
81
|
}
|
|
73
82
|
|
|
74
|
-
/**
|
|
75
|
-
* Get all variant classes for a component (border, text, background)
|
|
76
|
-
*/
|
|
77
83
|
export function getAllVariantClasses(variant: Variant): {
|
|
78
84
|
border: string;
|
|
79
85
|
text: string;
|
|
@@ -91,10 +97,13 @@ export function getAllVariantClasses(variant: Variant): {
|
|
|
91
97
|
*/
|
|
92
98
|
export function createVariantClassMap<T extends string>(
|
|
93
99
|
variants: T[],
|
|
94
|
-
prefix: string
|
|
100
|
+
prefix: string,
|
|
95
101
|
): Record<T, string> {
|
|
96
|
-
return variants.reduce(
|
|
97
|
-
acc
|
|
98
|
-
|
|
99
|
-
|
|
102
|
+
return variants.reduce(
|
|
103
|
+
(acc, variant) => {
|
|
104
|
+
acc[variant] = `${prefix}-${variant}`;
|
|
105
|
+
return acc;
|
|
106
|
+
},
|
|
107
|
+
{} as Record<T, string>,
|
|
108
|
+
);
|
|
100
109
|
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
export type ZabiComponent<T extends Record<string, any> = Record<string, any>, E extends Record<string, any> = Record<string, any>> = Component<T, E>;
|
|
3
|
+
export interface ButtonProps {
|
|
4
|
+
variant?: 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info' | 'ghost' | 'link' | 'neutral';
|
|
5
|
+
size?: 'sm' | 'md' | 'lg';
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
loading?: boolean;
|
|
8
|
+
type?: 'button' | 'submit' | 'reset';
|
|
9
|
+
className?: string;
|
|
10
|
+
text?: string;
|
|
11
|
+
iconLeft?: string | any;
|
|
12
|
+
iconRight?: string | any;
|
|
13
|
+
ariaLabel?: string;
|
|
14
|
+
ariaDescribedBy?: string;
|
|
15
|
+
ariaExpanded?: boolean;
|
|
16
|
+
ariaControls?: string;
|
|
17
|
+
ariaPressed?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ButtonEvents {
|
|
20
|
+
click: {
|
|
21
|
+
value: boolean;
|
|
22
|
+
event: MouseEvent;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export interface HeadingProps {
|
|
26
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface CardProps {
|
|
30
|
+
variant?: 'default' | 'elevated' | 'outlined' | 'flat';
|
|
31
|
+
size?: 'sm' | 'md' | 'lg';
|
|
32
|
+
fullWidth?: boolean;
|
|
33
|
+
className?: string;
|
|
34
|
+
onclick?: (event: MouseEvent) => void | Promise<void>;
|
|
35
|
+
/** Required when card is interactive (has onclick) for accessibility */
|
|
36
|
+
ariaLabel?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface InputProps {
|
|
39
|
+
type?: string;
|
|
40
|
+
value?: string;
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface InputEvents {
|
|
46
|
+
input: {
|
|
47
|
+
value: string;
|
|
48
|
+
event: Event;
|
|
49
|
+
};
|
|
50
|
+
change: {
|
|
51
|
+
value: string;
|
|
52
|
+
event: Event;
|
|
53
|
+
};
|
|
54
|
+
focus: {
|
|
55
|
+
event: FocusEvent;
|
|
56
|
+
};
|
|
57
|
+
blur: {
|
|
58
|
+
event: FocusEvent;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface CheckboxProps {
|
|
62
|
+
checked?: boolean;
|
|
63
|
+
disabled?: boolean;
|
|
64
|
+
className?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface CheckboxEvents {
|
|
67
|
+
change: {
|
|
68
|
+
checked: boolean;
|
|
69
|
+
event: Event;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export interface SelectProps {
|
|
73
|
+
options: Array<{
|
|
74
|
+
value: string;
|
|
75
|
+
label: string;
|
|
76
|
+
}>;
|
|
77
|
+
value?: string;
|
|
78
|
+
searchable?: boolean;
|
|
79
|
+
searchPlaceholder?: string;
|
|
80
|
+
maxMenuHeight?: string;
|
|
81
|
+
menuWidth?: string;
|
|
82
|
+
noResultsText?: string;
|
|
83
|
+
disabled?: boolean;
|
|
84
|
+
className?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface SelectEvents {
|
|
87
|
+
change: {
|
|
88
|
+
value: string;
|
|
89
|
+
event: Event;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export interface TextareaProps {
|
|
93
|
+
value?: string;
|
|
94
|
+
placeholder?: string;
|
|
95
|
+
rows?: number;
|
|
96
|
+
disabled?: boolean;
|
|
97
|
+
className?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface TextareaEvents {
|
|
100
|
+
input: {
|
|
101
|
+
value: string;
|
|
102
|
+
event: Event;
|
|
103
|
+
};
|
|
104
|
+
change: {
|
|
105
|
+
value: string;
|
|
106
|
+
event: Event;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export interface ModalProps {
|
|
110
|
+
open?: boolean;
|
|
111
|
+
title?: string;
|
|
112
|
+
className?: string;
|
|
113
|
+
}
|
|
114
|
+
export interface ModalEvents {
|
|
115
|
+
}
|
|
116
|
+
export interface AlertProps {
|
|
117
|
+
type?: 'success' | 'error' | 'warning' | 'info';
|
|
118
|
+
message: string;
|
|
119
|
+
className?: string;
|
|
120
|
+
}
|
|
121
|
+
export interface BadgeProps {
|
|
122
|
+
variant?: 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
123
|
+
text?: string;
|
|
124
|
+
className?: string;
|
|
125
|
+
}
|
|
126
|
+
export interface ProgressProps {
|
|
127
|
+
value?: number;
|
|
128
|
+
max?: number;
|
|
129
|
+
className?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface SkeletonProps {
|
|
132
|
+
variant?: 'text' | 'circle' | 'block';
|
|
133
|
+
width?: string | number;
|
|
134
|
+
height?: string | number;
|
|
135
|
+
class?: string;
|
|
136
|
+
'aria-label'?: string;
|
|
137
|
+
}
|
|
138
|
+
export interface ToggleProps {
|
|
139
|
+
checked?: boolean;
|
|
140
|
+
disabled?: boolean;
|
|
141
|
+
className?: string;
|
|
142
|
+
}
|
|
143
|
+
export interface ToggleEvents {
|
|
144
|
+
change: {
|
|
145
|
+
checked: boolean;
|
|
146
|
+
event: Event;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export interface TooltipProps {
|
|
150
|
+
content: string;
|
|
151
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
152
|
+
className?: string;
|
|
153
|
+
}
|
|
154
|
+
export interface FieldConfig {
|
|
155
|
+
key: string;
|
|
156
|
+
label: string;
|
|
157
|
+
type: 'text' | 'number' | 'email' | 'password' | 'textarea' | 'select' | 'checkbox' | 'toggle' | 'url' | 'colorpicker' | 'textalignment';
|
|
158
|
+
required?: boolean;
|
|
159
|
+
placeholder?: string;
|
|
160
|
+
options?: Array<{
|
|
161
|
+
value: string;
|
|
162
|
+
label: string;
|
|
163
|
+
}>;
|
|
164
|
+
flex?: string;
|
|
165
|
+
rows?: number;
|
|
166
|
+
validation?: {
|
|
167
|
+
min?: number;
|
|
168
|
+
max?: number;
|
|
169
|
+
pattern?: string;
|
|
170
|
+
message?: string;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export type Button = ZabiComponent<ButtonProps, ButtonEvents>;
|
|
174
|
+
export type Heading = ZabiComponent<HeadingProps>;
|
|
175
|
+
export type Card = ZabiComponent<CardProps>;
|
|
176
|
+
export type Input = ZabiComponent<InputProps, InputEvents>;
|
|
177
|
+
export type Checkbox = ZabiComponent<CheckboxProps, CheckboxEvents>;
|
|
178
|
+
export type Select = ZabiComponent<SelectProps, SelectEvents>;
|
|
179
|
+
export type Textarea = ZabiComponent<TextareaProps, TextareaEvents>;
|
|
180
|
+
export type Modal = ZabiComponent<ModalProps, ModalEvents>;
|
|
181
|
+
export type Alert = ZabiComponent<AlertProps>;
|
|
182
|
+
export type Badge = ZabiComponent<BadgeProps>;
|
|
183
|
+
export type Progress = ZabiComponent<ProgressProps>;
|
|
184
|
+
export type Skeleton = ZabiComponent<SkeletonProps>;
|
|
185
|
+
export type Toggle = ZabiComponent<ToggleProps, ToggleEvents>;
|
|
186
|
+
export type Tooltip = ZabiComponent<TooltipProps>;
|
|
187
|
+
//# sourceMappingURL=components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/types/components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
export interface BaseEventDetail {
|
|
2
|
+
event: Event;
|
|
3
|
+
}
|
|
4
|
+
export interface Tab {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
icon?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface NavigationItem {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
href?: string;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
icon?: string;
|
|
16
|
+
children?: NavigationItem[];
|
|
17
|
+
}
|
|
18
|
+
export interface ClickEventDetail extends BaseEventDetail {
|
|
19
|
+
value: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface InputEventDetail extends BaseEventDetail {
|
|
22
|
+
value: string;
|
|
23
|
+
field?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ChangeEventDetail extends BaseEventDetail {
|
|
26
|
+
value: string | number | boolean | File | null;
|
|
27
|
+
field?: string;
|
|
28
|
+
checked?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface FocusEventDetail extends BaseEventDetail {
|
|
31
|
+
event: FocusEvent;
|
|
32
|
+
}
|
|
33
|
+
export interface BlurEventDetail extends BaseEventDetail {
|
|
34
|
+
event: FocusEvent;
|
|
35
|
+
}
|
|
36
|
+
export interface KeydownEventDetail extends BaseEventDetail {
|
|
37
|
+
event: KeyboardEvent;
|
|
38
|
+
}
|
|
39
|
+
export interface KeyupEventDetail extends BaseEventDetail {
|
|
40
|
+
event: KeyboardEvent;
|
|
41
|
+
}
|
|
42
|
+
export interface SubmitEventDetail extends BaseEventDetail {
|
|
43
|
+
data: Record<string, string | number | boolean | File | null>;
|
|
44
|
+
formData: FormData;
|
|
45
|
+
}
|
|
46
|
+
export interface ResizeEventDetail extends BaseEventDetail {
|
|
47
|
+
event: Event;
|
|
48
|
+
}
|
|
49
|
+
export interface TabChangeEventDetail extends BaseEventDetail {
|
|
50
|
+
activeTab: string;
|
|
51
|
+
tab: Tab;
|
|
52
|
+
}
|
|
53
|
+
export interface FileUploadEventDetail extends BaseEventDetail {
|
|
54
|
+
file: File;
|
|
55
|
+
}
|
|
56
|
+
export interface FileRemoveEventDetail extends BaseEventDetail {
|
|
57
|
+
file: File;
|
|
58
|
+
}
|
|
59
|
+
export interface ErrorEventDetail extends BaseEventDetail {
|
|
60
|
+
error: string;
|
|
61
|
+
}
|
|
62
|
+
export interface ButtonEvents {
|
|
63
|
+
click: ClickEventDetail;
|
|
64
|
+
}
|
|
65
|
+
export interface InputEvents {
|
|
66
|
+
input: InputEventDetail;
|
|
67
|
+
change: ChangeEventDetail;
|
|
68
|
+
focus: FocusEventDetail;
|
|
69
|
+
blur: BlurEventDetail;
|
|
70
|
+
keydown: KeydownEventDetail;
|
|
71
|
+
keyup: KeyupEventDetail;
|
|
72
|
+
clear: BaseEventDetail;
|
|
73
|
+
}
|
|
74
|
+
export interface CardEvents {
|
|
75
|
+
click: ClickEventDetail;
|
|
76
|
+
focus: FocusEventDetail;
|
|
77
|
+
blur: BlurEventDetail;
|
|
78
|
+
mouseenter: BaseEventDetail;
|
|
79
|
+
mouseleave: BaseEventDetail;
|
|
80
|
+
}
|
|
81
|
+
export interface CheckboxEvents {
|
|
82
|
+
change: ChangeEventDetail;
|
|
83
|
+
focus: FocusEventDetail;
|
|
84
|
+
blur: BlurEventDetail;
|
|
85
|
+
}
|
|
86
|
+
export interface TextareaEvents {
|
|
87
|
+
input: InputEventDetail;
|
|
88
|
+
change: ChangeEventDetail;
|
|
89
|
+
focus: FocusEventDetail;
|
|
90
|
+
blur: BlurEventDetail;
|
|
91
|
+
keydown: KeydownEventDetail;
|
|
92
|
+
keyup: KeyupEventDetail;
|
|
93
|
+
resize: ResizeEventDetail;
|
|
94
|
+
}
|
|
95
|
+
export interface ToggleEvents {
|
|
96
|
+
change: ChangeEventDetail;
|
|
97
|
+
focus: FocusEventDetail;
|
|
98
|
+
blur: BlurEventDetail;
|
|
99
|
+
}
|
|
100
|
+
export interface TooltipEvents {
|
|
101
|
+
show: BaseEventDetail;
|
|
102
|
+
hide: BaseEventDetail;
|
|
103
|
+
focus: FocusEventDetail;
|
|
104
|
+
blur: BlurEventDetail;
|
|
105
|
+
mouseenter: BaseEventDetail;
|
|
106
|
+
mouseleave: BaseEventDetail;
|
|
107
|
+
}
|
|
108
|
+
export interface TabsEvents {
|
|
109
|
+
change: TabChangeEventDetail;
|
|
110
|
+
tabClick: {
|
|
111
|
+
tab: Tab;
|
|
112
|
+
event: MouseEvent;
|
|
113
|
+
};
|
|
114
|
+
keydown: KeydownEventDetail;
|
|
115
|
+
}
|
|
116
|
+
export interface ModalEvents {
|
|
117
|
+
}
|
|
118
|
+
export interface TopNavbarEvents {
|
|
119
|
+
click: ClickEventDetail;
|
|
120
|
+
keydown: KeydownEventDetail;
|
|
121
|
+
}
|
|
122
|
+
export interface NavigationEvents {
|
|
123
|
+
"item-click": {
|
|
124
|
+
item: NavigationItem;
|
|
125
|
+
event: MouseEvent;
|
|
126
|
+
};
|
|
127
|
+
toggle: {
|
|
128
|
+
open: boolean;
|
|
129
|
+
};
|
|
130
|
+
open: BaseEventDetail;
|
|
131
|
+
close: BaseEventDetail;
|
|
132
|
+
keydown: KeydownEventDetail;
|
|
133
|
+
}
|
|
134
|
+
export interface LayoutEvents {
|
|
135
|
+
"breakpoint-change": {
|
|
136
|
+
breakpoint: string;
|
|
137
|
+
width: number;
|
|
138
|
+
};
|
|
139
|
+
"sidebar-toggle": {
|
|
140
|
+
open: boolean;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
export interface FormEvents {
|
|
144
|
+
submit: SubmitEventDetail;
|
|
145
|
+
reset: BaseEventDetail;
|
|
146
|
+
input: {
|
|
147
|
+
name: string;
|
|
148
|
+
value: string;
|
|
149
|
+
event: Event;
|
|
150
|
+
};
|
|
151
|
+
blur: {
|
|
152
|
+
name: string;
|
|
153
|
+
value: string;
|
|
154
|
+
event: FocusEvent;
|
|
155
|
+
};
|
|
156
|
+
"validation-error": {
|
|
157
|
+
errors: Record<string, string>;
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export interface AlertEvents {
|
|
161
|
+
}
|
|
162
|
+
export interface ImageUploadEvents {
|
|
163
|
+
upload: FileUploadEventDetail;
|
|
164
|
+
remove: FileRemoveEventDetail;
|
|
165
|
+
error: ErrorEventDetail;
|
|
166
|
+
}
|
|
167
|
+
export interface KeyValueFormEvents {
|
|
168
|
+
submit: {
|
|
169
|
+
data: Record<string, string | number | boolean | File | null>;
|
|
170
|
+
event: Event;
|
|
171
|
+
};
|
|
172
|
+
change: {
|
|
173
|
+
field: string;
|
|
174
|
+
value: string | number | boolean | File | null;
|
|
175
|
+
event: Event;
|
|
176
|
+
};
|
|
177
|
+
add: {
|
|
178
|
+
field: FieldConfig;
|
|
179
|
+
event: Event;
|
|
180
|
+
};
|
|
181
|
+
remove: {
|
|
182
|
+
field: string;
|
|
183
|
+
event: Event;
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export interface FieldConfig {
|
|
187
|
+
key: string;
|
|
188
|
+
type: "text" | "email" | "password" | "number" | "textarea" | "select" | "checkbox" | "toggle" | "colorpicker" | "textalignment";
|
|
189
|
+
label: string;
|
|
190
|
+
placeholder?: string;
|
|
191
|
+
required?: boolean;
|
|
192
|
+
options?: Array<{
|
|
193
|
+
value: string | number;
|
|
194
|
+
label: string;
|
|
195
|
+
disabled?: boolean;
|
|
196
|
+
}>;
|
|
197
|
+
rows?: number;
|
|
198
|
+
flex?: "1" | "full";
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=events.d.ts.map
|