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.
Files changed (207) hide show
  1. package/README.md +139 -1478
  2. package/THEME.md +473 -0
  3. package/THEMING.md +248 -0
  4. package/dist/atoms/ActionPanel.svelte +116 -0
  5. package/dist/atoms/ActionPanel.svelte.d.ts +19 -0
  6. package/dist/atoms/Badge.svelte +1 -1
  7. package/dist/atoms/Badge.svelte.d.ts +1 -1
  8. package/dist/atoms/Button.svelte +35 -16
  9. package/dist/atoms/Button.svelte.d.ts +3 -1
  10. package/dist/atoms/Card.svelte +49 -67
  11. package/dist/atoms/Card.svelte.d.ts +4 -4
  12. package/dist/atoms/CardHeader.svelte +15 -2
  13. package/dist/atoms/CardHeader.svelte.d.ts +5 -0
  14. package/dist/atoms/Checkbox.svelte +50 -76
  15. package/dist/atoms/Checkbox.svelte.d.ts +7 -2
  16. package/dist/atoms/CodeBlock.svelte +20 -34
  17. package/dist/atoms/CodeBlock.svelte.d.ts +1 -0
  18. package/dist/atoms/ColorPicker.svelte +3 -7
  19. package/dist/atoms/Container.svelte +41 -0
  20. package/dist/atoms/Container.svelte.d.ts +12 -0
  21. package/dist/atoms/Divider.svelte +68 -0
  22. package/dist/atoms/Divider.svelte.d.ts +13 -0
  23. package/dist/atoms/FeatureCard.svelte +35 -50
  24. package/dist/atoms/FeatureCard.svelte.d.ts +9 -4
  25. package/dist/atoms/IconButton.svelte +33 -24
  26. package/dist/atoms/IconButton.svelte.d.ts +4 -8
  27. package/dist/atoms/Input.svelte +58 -26
  28. package/dist/atoms/Input.svelte.d.ts +6 -1
  29. package/dist/atoms/List.svelte +2 -7
  30. package/dist/atoms/List.svelte.d.ts +1 -6
  31. package/dist/atoms/ListItem.svelte +54 -65
  32. package/dist/atoms/ListItem.svelte.d.ts +7 -13
  33. package/dist/atoms/ListItemLeading.svelte +19 -0
  34. package/dist/atoms/ListItemLeading.svelte.d.ts +9 -0
  35. package/dist/atoms/Progress.svelte +2 -2
  36. package/dist/atoms/Radio.svelte +51 -0
  37. package/dist/atoms/Radio.svelte.d.ts +14 -0
  38. package/dist/atoms/Select.svelte +28 -33
  39. package/dist/atoms/Select.svelte.d.ts +0 -10
  40. package/dist/atoms/SelectionControl.svelte +98 -0
  41. package/dist/atoms/SelectionControl.svelte.d.ts +26 -0
  42. package/dist/atoms/Skeleton.svelte +39 -15
  43. package/dist/atoms/Skeleton.svelte.d.ts +7 -3
  44. package/dist/atoms/Table.svelte +27 -0
  45. package/dist/atoms/Table.svelte.d.ts +10 -0
  46. package/dist/atoms/Text.svelte +46 -0
  47. package/dist/atoms/Text.svelte.d.ts +13 -0
  48. package/dist/atoms/Textarea.svelte +74 -53
  49. package/dist/atoms/Textarea.svelte.d.ts +6 -2
  50. package/dist/atoms/ThemeToggle.svelte +35 -24
  51. package/dist/atoms/ThemeToggle.svelte.d.ts +1 -0
  52. package/dist/atoms/Toast.svelte +55 -31
  53. package/dist/atoms/Toast.svelte.d.ts +4 -1
  54. package/dist/atoms/Toggle.svelte +37 -22
  55. package/dist/atoms/Toggle.svelte.d.ts +2 -1
  56. package/dist/atoms/Tooltip.svelte +90 -11
  57. package/dist/atoms/index.d.ts +6 -0
  58. package/dist/atoms/index.js +6 -0
  59. package/dist/atoms/selection-control.styles.d.ts +25 -0
  60. package/dist/atoms/selection-control.styles.js +30 -0
  61. package/dist/components/atoms/index.d.ts +6 -0
  62. package/dist/components/atoms/index.d.ts.map +1 -1
  63. package/dist/components/atoms/selection-control.styles.d.ts +26 -0
  64. package/dist/components/atoms/selection-control.styles.d.ts.map +1 -0
  65. package/dist/components/index.d.ts +42 -7
  66. package/dist/components/index.d.ts.map +1 -1
  67. package/dist/components/molecules/index.d.ts +10 -0
  68. package/dist/components/molecules/index.d.ts.map +1 -1
  69. package/dist/components/molecules/navigation-menu-context.d.ts +11 -0
  70. package/dist/components/molecules/navigation-menu-context.d.ts.map +1 -1
  71. package/dist/components/molecules/toast-store.d.ts +39 -0
  72. package/dist/components/molecules/toast-store.d.ts.map +1 -0
  73. package/dist/components/organisms/index.d.ts +3 -3
  74. package/dist/components/organisms/index.d.ts.map +1 -1
  75. package/dist/components/types/page.types.d.ts +69 -0
  76. package/dist/components/types/page.types.d.ts.map +1 -0
  77. package/dist/components/types/page.types.js +1 -0
  78. package/dist/components/types/variants.d.ts +64 -0
  79. package/dist/components/types/variants.d.ts.map +1 -0
  80. package/dist/components/types/variants.js +44 -0
  81. package/dist/components/util/fixed-sidebar-flyout.d.ts +23 -0
  82. package/dist/components/util/fixed-sidebar-flyout.d.ts.map +1 -0
  83. package/dist/components/util/focus-utils.d.ts +12 -0
  84. package/dist/components/util/focus-utils.d.ts.map +1 -0
  85. package/dist/components/util/ssr-safe.d.ts +17 -0
  86. package/dist/components/util/ssr-safe.d.ts.map +1 -0
  87. package/dist/index.d.ts +42 -7
  88. package/dist/index.js +45 -10
  89. package/dist/lib/layout-width-tokens.d.ts +17 -0
  90. package/dist/lib/layout-width-tokens.d.ts.map +1 -0
  91. package/dist/lib/showcase/component-docs/Button.d.ts +3 -0
  92. package/dist/lib/showcase/component-docs/Button.d.ts.map +1 -0
  93. package/dist/lib/showcase/component-docs/Input.d.ts +3 -0
  94. package/dist/lib/showcase/component-docs/Input.d.ts.map +1 -0
  95. package/dist/lib/showcase/component-docs/List.d.ts +3 -0
  96. package/dist/lib/showcase/component-docs/List.d.ts.map +1 -0
  97. package/dist/lib/showcase/component-docs/Modal.d.ts +3 -0
  98. package/dist/lib/showcase/component-docs/Modal.d.ts.map +1 -0
  99. package/dist/lib/showcase/component-docs/Radio.d.ts +3 -0
  100. package/dist/lib/showcase/component-docs/Radio.d.ts.map +1 -0
  101. package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts +3 -0
  102. package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts.map +1 -0
  103. package/dist/lib/showcase/component-docs/Skeleton.d.ts +3 -0
  104. package/dist/lib/showcase/component-docs/Skeleton.d.ts.map +1 -0
  105. package/dist/lib/showcase/component-docs/_shared.d.ts +12 -0
  106. package/dist/lib/showcase/component-docs/_shared.d.ts.map +1 -0
  107. package/dist/lib/showcase/component-docs/index.d.ts +4 -0
  108. package/dist/lib/showcase/component-docs/index.d.ts.map +1 -0
  109. package/dist/lib/showcase/components-catalog.d.ts +3 -0
  110. package/dist/lib/showcase/components-catalog.d.ts.map +1 -0
  111. package/dist/lib/showcase/components-showcase-constants.d.ts +89 -0
  112. package/dist/lib/showcase/components-showcase-constants.d.ts.map +1 -0
  113. package/dist/lib/showcase/docs-sidebar-helpers.d.ts +15 -0
  114. package/dist/lib/showcase/docs-sidebar-helpers.d.ts.map +1 -0
  115. package/dist/molecules/Alert.svelte +50 -23
  116. package/dist/molecules/Alert.svelte.d.ts +1 -1
  117. package/dist/molecules/ComponentDemo.svelte +54 -51
  118. package/dist/molecules/ContactForm.svelte +70 -65
  119. package/dist/molecules/Dropdown.svelte +99 -108
  120. package/dist/molecules/Dropdown.svelte.d.ts +12 -6
  121. package/dist/molecules/EmptyState.svelte +44 -0
  122. package/dist/molecules/EmptyState.svelte.d.ts +11 -0
  123. package/dist/molecules/FormField.svelte +89 -0
  124. package/dist/molecules/FormField.svelte.d.ts +23 -0
  125. package/dist/molecules/Header.svelte +41 -0
  126. package/dist/molecules/Header.svelte.d.ts +10 -0
  127. package/dist/molecules/ImageUpload.svelte +1 -1
  128. package/dist/molecules/Modal.svelte +39 -26
  129. package/dist/molecules/Modal.svelte.d.ts +4 -2
  130. package/dist/molecules/NavigationMenu.svelte +16 -0
  131. package/dist/molecules/NavigationMenu.svelte.d.ts +2 -0
  132. package/dist/molecules/NavigationMenuContent.svelte +9 -1
  133. package/dist/molecules/NavigationMenuLink.svelte +1 -1
  134. package/dist/molecules/NavigationMenuTrigger.svelte +9 -4
  135. package/dist/molecules/Page.svelte +16 -0
  136. package/dist/molecules/Page.svelte.d.ts +8 -0
  137. package/dist/molecules/PropsTable.svelte +61 -0
  138. package/dist/molecules/PropsTable.svelte.d.ts +8 -0
  139. package/dist/molecules/RadioGroup.svelte +197 -0
  140. package/dist/molecules/RadioGroup.svelte.d.ts +20 -0
  141. package/dist/molecules/Section.svelte +14 -23
  142. package/dist/molecules/Section.svelte.d.ts +2 -11
  143. package/dist/molecules/SidebarBrandHeader.svelte +68 -0
  144. package/dist/molecules/SidebarBrandHeader.svelte.d.ts +10 -0
  145. package/dist/molecules/SidebarFooter.svelte +119 -0
  146. package/dist/molecules/SidebarFooter.svelte.d.ts +23 -0
  147. package/dist/molecules/SidebarNavSection.svelte +49 -0
  148. package/dist/molecules/SidebarNavSection.svelte.d.ts +14 -0
  149. package/dist/molecules/SlideUp.svelte +21 -16
  150. package/dist/molecules/SlideUp.svelte.d.ts +1 -1
  151. package/dist/molecules/Tabs.svelte +6 -11
  152. package/dist/molecules/Toaster.svelte +21 -0
  153. package/dist/molecules/Toaster.svelte.d.ts +6 -0
  154. package/dist/molecules/ToasterToast.svelte +217 -0
  155. package/dist/molecules/ToasterToast.svelte.d.ts +7 -0
  156. package/dist/molecules/index.d.ts +10 -0
  157. package/dist/molecules/index.js +10 -0
  158. package/dist/molecules/navigation-menu-context.d.ts +11 -0
  159. package/dist/molecules/navigation-menu-context.js +18 -0
  160. package/dist/molecules/toast-store.d.ts +38 -0
  161. package/dist/molecules/toast-store.js +34 -0
  162. package/dist/organisms/SidebarAccountPanel.svelte +118 -0
  163. package/dist/organisms/SidebarAccountPanel.svelte.d.ts +20 -0
  164. package/dist/organisms/SidebarNavigation.svelte +286 -212
  165. package/dist/organisms/SidebarNavigation.svelte.d.ts +22 -1
  166. package/dist/organisms/{SidebarProjectPanel.svelte → SidebarPanel.svelte} +67 -34
  167. package/dist/organisms/{SidebarProjectPanel.svelte.d.ts → SidebarPanel.svelte.d.ts} +9 -6
  168. package/dist/organisms/TopNavbar.svelte +214 -0
  169. package/dist/organisms/TopNavbar.svelte.d.ts +35 -0
  170. package/dist/organisms/index.d.ts +3 -3
  171. package/dist/organisms/index.js +3 -3
  172. package/dist/routes/lib/focus-utils.d.ts +7 -18
  173. package/dist/routes/lib/focus-utils.ts +32 -34
  174. package/dist/routes/lib/ssr-safe.ts +5 -4
  175. package/dist/routes/lib/variant-utils.ts +48 -39
  176. package/dist/types/components.d.ts +187 -0
  177. package/dist/types/components.d.ts.map +1 -0
  178. package/dist/types/events.d.ts +200 -0
  179. package/dist/types/events.d.ts.map +1 -0
  180. package/dist/types/index.d.ts +171 -0
  181. package/dist/types/index.d.ts.map +1 -0
  182. package/dist/types/page.types.d.ts +3 -0
  183. package/dist/types/page.types.d.ts.map +1 -0
  184. package/dist/types/page.types.js +1 -0
  185. package/dist/types/page.types.ts +79 -0
  186. package/dist/types/variants.d.ts +3 -0
  187. package/dist/types/variants.d.ts.map +1 -0
  188. package/dist/types/variants.js +1 -0
  189. package/dist/types/variants.ts +75 -0
  190. package/dist/util/fixed-sidebar-flyout.d.ts +22 -0
  191. package/dist/util/fixed-sidebar-flyout.js +148 -0
  192. package/dist/util/focus-utils.d.ts +11 -0
  193. package/dist/util/focus-utils.js +94 -0
  194. package/dist/util/ssr-safe.d.ts +16 -0
  195. package/dist/util/ssr-safe.js +48 -0
  196. package/dist/zabi-components-colors.css +360 -324
  197. package/dist/zabi-components-theme-dark-only.css +164 -151
  198. package/dist/zabi-components-theme-dark.css +164 -151
  199. package/dist/zabi-components-theme-only.css +253 -230
  200. package/dist/zabi-components-theme.css +253 -230
  201. package/dist/zabi-components.css +1262 -241
  202. package/docs/theme-imports.md +112 -0
  203. package/package.json +32 -10
  204. package/dist/organisms/Navbar.svelte +0 -92
  205. package/dist/organisms/Navbar.svelte.d.ts +0 -14
  206. package/dist/organisms/Navigation.svelte +0 -119
  207. package/dist/organisms/Navigation.svelte.d.ts +0 -21
@@ -1,10 +1,9 @@
1
- /**
2
- * Focus management utilities for accessibility
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 () => {}; // No-op cleanup
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
- * Store the element that had focus before opening a modal/dialog
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 !== 'undefined') {
89
- previousFocus = document.activeElement as HTMLElement;
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 (previousFocus && typeof document !== 'undefined') {
98
- previousFocus.focus();
99
- previousFocus = null;
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
- // SSR-safe utilities for zabi-components
2
- // This ensures components work properly during server-side rendering
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
- * Utility functions for handling component variants with semantic colors
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
- * Get variant classes for input components (Input, Textarea)
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: 'border-base-300 focus:border-brand-500 focus:ring-brand-500',
15
- success: 'border-green-300 focus:border-green-500 focus:ring-green-500',
16
- warning: 'border-yellow-300 focus:border-yellow-500 focus:ring-yellow-500',
17
- error: 'border-red-300 focus:border-red-500 focus:ring-red-500',
18
- info: 'border-iris-300 focus:border-iris-500 focus:ring-iris-500',
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
- * Get variant classes for card components
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-base-200 bg-white',
30
- success: 'border-green-200 bg-green-50',
31
- warning: 'border-yellow-200 bg-yellow-50',
32
- error: 'border-red-200 bg-red-50',
33
- info: 'border-iris-200 bg-iris-50',
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
- * Get generic variant classes for any component
43
+ * Generic variant classes for borders, text, or backgrounds.
41
44
  */
42
- export function getVariantClasses(variant: Variant, type: 'border' | 'text' | 'bg'): string {
43
- const variantMap: Record<Variant, Record<'border' | 'text' | 'bg', string>> = {
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-base-300',
46
- text: 'text-base-900',
47
- bg: 'bg-white'
54
+ border: 'border-border',
55
+ text: 'text-body',
56
+ bg: 'bg-card',
48
57
  },
49
58
  success: {
50
- border: 'border-green-300',
51
- text: 'text-green-900',
52
- bg: 'bg-green-50'
59
+ border: 'border-success',
60
+ text: 'text-success',
61
+ bg: 'bg-card',
53
62
  },
54
63
  warning: {
55
- border: 'border-yellow-300',
56
- text: 'text-yellow-900',
57
- bg: 'bg-yellow-50'
64
+ border: 'border-warning',
65
+ text: 'text-warning',
66
+ bg: 'bg-card',
58
67
  },
59
68
  error: {
60
- border: 'border-red-300',
61
- text: 'text-red-900',
62
- bg: 'bg-red-50'
69
+ border: 'border-error',
70
+ text: 'text-error',
71
+ bg: 'bg-card',
63
72
  },
64
73
  info: {
65
- border: 'border-iris-300',
66
- text: 'text-iris-900',
67
- bg: 'bg-iris-50'
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((acc, variant) => {
97
- acc[variant] = `${prefix}-${variant}`;
98
- return acc;
99
- }, {} as Record<T, string>);
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