zabi-components 5.0.21 → 6.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 (89) hide show
  1. package/README.md +42 -44
  2. package/THEME.md +473 -0
  3. package/THEMING.md +248 -0
  4. package/dist/atoms/Card.svelte +40 -67
  5. package/dist/atoms/Card.svelte.d.ts +3 -3
  6. package/dist/atoms/CardContent.svelte +1 -1
  7. package/dist/atoms/CardHeader.svelte +10 -1
  8. package/dist/atoms/CardHeader.svelte.d.ts +3 -0
  9. package/dist/atoms/Checkbox.svelte +1 -7
  10. package/dist/atoms/CodeBlock.svelte +7 -7
  11. package/dist/atoms/ColorPicker.svelte +81 -73
  12. package/dist/atoms/Input.svelte +16 -12
  13. package/dist/atoms/Input.svelte.d.ts +2 -0
  14. package/dist/atoms/List.svelte +47 -0
  15. package/dist/atoms/List.svelte.d.ts +19 -0
  16. package/dist/atoms/ListItem.svelte +148 -0
  17. package/dist/atoms/ListItem.svelte.d.ts +35 -0
  18. package/dist/atoms/Progress.svelte +4 -6
  19. package/dist/atoms/Select.svelte +65 -20
  20. package/dist/atoms/Select.svelte.d.ts +13 -1
  21. package/dist/atoms/Textarea.svelte +13 -11
  22. package/dist/atoms/Textarea.svelte.d.ts +1 -0
  23. package/dist/atoms/Toast.svelte +1 -1
  24. package/dist/atoms/Toggle.svelte +1 -7
  25. package/dist/atoms/Tooltip.svelte +8 -15
  26. package/dist/atoms/index.d.ts +2 -0
  27. package/dist/atoms/index.js +2 -0
  28. package/dist/components/atoms/index.d.ts +2 -0
  29. package/dist/components/atoms/index.d.ts.map +1 -1
  30. package/dist/components/index.d.ts +4 -1
  31. package/dist/components/index.d.ts.map +1 -1
  32. package/dist/components/molecules/index.d.ts +0 -1
  33. package/dist/components/molecules/index.d.ts.map +1 -1
  34. package/dist/components/molecules/navigation-menu-context.d.ts +7 -0
  35. package/dist/components/molecules/navigation-menu-context.d.ts.map +1 -0
  36. package/dist/components/organisms/index.d.ts +2 -1
  37. package/dist/components/organisms/index.d.ts.map +1 -1
  38. package/dist/index.d.ts +4 -1
  39. package/dist/index.js +5 -9
  40. package/dist/lib/showcase/components-catalog.d.ts +3 -0
  41. package/dist/lib/showcase/components-catalog.d.ts.map +1 -0
  42. package/dist/lib/showcase/components-showcase-constants.d.ts +63 -0
  43. package/dist/lib/showcase/components-showcase-constants.d.ts.map +1 -0
  44. package/dist/lib/showcase/docs-sidebar-helpers.d.ts +15 -0
  45. package/dist/lib/showcase/docs-sidebar-helpers.d.ts.map +1 -0
  46. package/dist/molecules/Alert.svelte +9 -4
  47. package/dist/molecules/ComponentDemo.svelte +53 -50
  48. package/dist/molecules/ContactForm.svelte +113 -76
  49. package/dist/molecules/ContactForm.svelte.d.ts +1 -4
  50. package/dist/molecules/Dropdown.svelte +4 -2
  51. package/dist/molecules/ImageUpload.svelte +27 -4
  52. package/dist/molecules/ImageUpload.svelte.d.ts +1 -0
  53. package/dist/molecules/Modal.svelte +46 -45
  54. package/dist/molecules/NavigationMenu.svelte +7 -10
  55. package/dist/molecules/NavigationMenuContent.svelte +9 -9
  56. package/dist/molecules/NavigationMenuItem.svelte +7 -6
  57. package/dist/molecules/NavigationMenuLink.svelte +8 -6
  58. package/dist/molecules/NavigationMenuList.svelte +0 -7
  59. package/dist/molecules/NavigationMenuTrigger.svelte +8 -11
  60. package/dist/molecules/Section.svelte +12 -12
  61. package/dist/molecules/SlideUp.svelte +32 -2
  62. package/dist/molecules/Tabs.svelte +74 -7
  63. package/dist/molecules/index.d.ts +0 -1
  64. package/dist/molecules/index.js +0 -1
  65. package/dist/molecules/navigation-menu-context.d.ts +6 -0
  66. package/dist/molecules/navigation-menu-context.js +1 -0
  67. package/dist/organisms/Navbar.svelte +170 -53
  68. package/dist/organisms/Navbar.svelte.d.ts +31 -4
  69. package/dist/organisms/SidebarNavigation.svelte +464 -0
  70. package/dist/organisms/SidebarNavigation.svelte.d.ts +49 -0
  71. package/dist/organisms/SidebarPanel.svelte +175 -0
  72. package/dist/organisms/SidebarPanel.svelte.d.ts +32 -0
  73. package/dist/organisms/index.d.ts +2 -1
  74. package/dist/organisms/index.js +2 -1
  75. package/dist/types/page.types.d.ts +32 -0
  76. package/dist/types/page.types.d.ts.map +1 -0
  77. package/dist/types/variants.ts +76 -0
  78. package/dist/zabi-components-colors.css +347 -324
  79. package/dist/zabi-components-theme-dark-only.css +159 -151
  80. package/dist/zabi-components-theme-dark.css +159 -151
  81. package/dist/zabi-components-theme-only.css +245 -230
  82. package/dist/zabi-components-theme.css +245 -230
  83. package/dist/zabi-components.css +722 -84
  84. package/docs/theme-imports.md +112 -0
  85. package/package.json +20 -9
  86. package/dist/molecules/Sidebar.svelte +0 -324
  87. package/dist/molecules/Sidebar.svelte.d.ts +0 -30
  88. package/dist/organisms/Navigation.svelte +0 -116
  89. package/dist/organisms/Navigation.svelte.d.ts +0 -20
@@ -1,20 +1,14 @@
1
1
  <script lang="ts">
2
2
  import Dropdown from "../molecules/Dropdown.svelte";
3
3
  import Button from "./Button.svelte";
4
+ import Input from "./Input.svelte";
4
5
  import {
5
6
  ChevronDown,
6
7
  CheckCircle,
7
8
  AlertTriangle,
8
9
  AlertCircle,
9
10
  } from "@lucide/svelte";
10
-
11
- function generateId(prefix: string = "id"): string {
12
- if (typeof window !== "undefined") {
13
- return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;
14
- } else {
15
- return `${prefix}-ssr-${Date.now()}`;
16
- }
17
- }
11
+ import { generateId } from "../../routes/lib/ssr-safe.js";
18
12
 
19
13
  interface Props {
20
14
  value?: string | number | undefined;
@@ -33,30 +27,49 @@
33
27
  menuWidth?: string;
34
28
  /** Message shown when no options match the search. */
35
29
  noResultsText?: string;
30
+ /** Shows a loading state while options are being fetched. */
31
+ isLoading?: boolean;
32
+ /** Loading text shown in trigger and dropdown body. */
33
+ loadingText?: string;
34
+ /** Empty state title shown when there are no available options. */
35
+ emptyStateTitle?: string;
36
+ /** Empty state description shown when there are no available options. */
37
+ emptyStateDescription?: string;
38
+ /** Optional empty state action label. */
39
+ emptyStateActionLabel?: string;
36
40
  placeholder?: string;
37
41
  label?: string;
42
+ required?: boolean;
38
43
  disabled?: boolean;
39
44
  size?: "sm" | "md" | "lg";
40
45
  variant?: "default" | "success" | "warning" | "error";
41
46
  message?: string;
42
47
  onchange?: (event: Event) => void;
48
+ onEmptyStateAction?: () => void;
43
49
  }
44
50
 
45
51
  let {
46
- value = undefined,
52
+ value = $bindable(undefined),
47
53
  options = [],
48
54
  searchable = true,
49
55
  searchPlaceholder = "Search options",
50
56
  maxMenuHeight = "60vh",
51
57
  menuWidth = "100%",
52
58
  noResultsText = "No results found",
59
+ isLoading = false,
60
+ loadingText = "Loading options...",
61
+ emptyStateTitle = "No options available",
62
+ emptyStateDescription = "Add an option to start making selections.",
63
+ emptyStateActionLabel = "",
53
64
  placeholder = "Select an option",
54
65
  label = "",
66
+ required = false,
55
67
  disabled = false,
56
68
  size = "md",
57
69
  variant = "default",
58
70
  message = "",
59
71
  onchange,
72
+ onEmptyStateAction,
60
73
  ...restProps
61
74
  }: Props = $props();
62
75
 
@@ -93,13 +106,13 @@
93
106
  ? "border-warning focus:border-warning focus:ring-warning"
94
107
  : variant === "error"
95
108
  ? "border-error focus:border-error focus:ring-error"
96
- : "border-0 focus:ring-2 focus:ring-brand-500"; // default - no border
109
+ : "border-input-border focus:ring-2 focus:ring-brand-500";
97
110
  });
98
111
 
99
112
  const triggerClasses = $derived(() => {
100
113
  const sizeStyles = sizeClass();
101
114
  const baseClasses =
102
- "w-full bg-input hover:bg-input-hover focus:bg-input-focus disabled:bg-input-disabled rounded-lg transition-all duration-200 text-body focus:outline-none focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed flex items-center justify-between";
115
+ "flex w-full cursor-pointer items-center justify-between rounded-lg border bg-input text-body transition-all duration-200 hover:bg-input-hover focus:bg-input-focus focus:outline-none focus:ring-offset-0 disabled:cursor-not-allowed disabled:bg-input-disabled disabled:opacity-50";
103
116
 
104
117
  return `${baseClasses} ${sizeStyles.padding} ${sizeStyles.text} ${sizeStyles.leading} ${variantClass()}`.trim();
105
118
  });
@@ -170,7 +183,7 @@
170
183
  });
171
184
 
172
185
  function handleOptionClick(optionValue: string | number) {
173
- if (disabled) return;
186
+ if (disabled || isLoading) return;
174
187
  value = optionValue;
175
188
  isOpen = false;
176
189
 
@@ -185,7 +198,7 @@
185
198
  }
186
199
 
187
200
  function handleTriggerClick(event: MouseEvent) {
188
- if (disabled) return;
201
+ if (disabled || isLoading) return;
189
202
  event.stopPropagation();
190
203
  isOpen = !isOpen;
191
204
  }
@@ -238,14 +251,20 @@
238
251
  aria-describedby={message ? `${selectId}-message` : undefined}
239
252
  >
240
253
  <span
241
- class="text-left flex-1 truncate {isEmpty()
254
+ class="text-left flex-1 truncate {isLoading
255
+ ? 'text-description'
256
+ : isEmpty()
242
257
  ? 'text-description'
243
258
  : 'text-body'}"
244
259
  >
245
- {isEmpty()
260
+ {#if isLoading}
261
+ {loadingText}
262
+ {:else}
263
+ {isEmpty()
246
264
  ? placeholder
247
265
  : options.find((opt) => opt.value === value)?.label ||
248
266
  placeholder}
267
+ {/if}
249
268
  </span>
250
269
  <ChevronDown
251
270
  size={20}
@@ -257,11 +276,12 @@
257
276
  {/snippet}
258
277
  {#snippet children()}
259
278
  <div class="px-2 pb-2 pt-1" style:width={menuWidth}>
260
- {#if searchable}
279
+ {#if searchable && !isLoading}
261
280
  <div class="px-1 pb-2">
262
- <input
281
+ <Input
263
282
  type="text"
264
- class="w-full rounded-md bg-input hover:bg-input-hover focus:bg-input-focus text-body placeholder:text-description px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-brand-500 disabled:opacity-50 disabled:cursor-not-allowed"
283
+ size="sm"
284
+ class="min-w-0"
265
285
  placeholder={searchPlaceholder}
266
286
  bind:value={searchQuery}
267
287
  aria-label={searchPlaceholder}
@@ -273,7 +293,13 @@
273
293
  class="overflow-y-auto px-1"
274
294
  style:max-height={maxMenuHeight}
275
295
  >
276
- {#if filteredOptions().length > 0}
296
+ {#if isLoading}
297
+ <div class="space-y-2 px-2 py-2" role="status" aria-live="polite">
298
+ <div class="h-8 w-full animate-pulse rounded-md bg-base-200"></div>
299
+ <div class="h-8 w-full animate-pulse rounded-md bg-base-200"></div>
300
+ <p class="text-xs text-description">{loadingText}</p>
301
+ </div>
302
+ {:else if filteredOptions().length > 0}
277
303
  {#each filteredOptions() as option (option.value)}
278
304
  {@const buttonRestProps = {
279
305
  "data-value": String(option.value),
@@ -297,13 +323,32 @@
297
323
  <div class="px-3 py-2 text-sm text-description">
298
324
  {noResultsText}
299
325
  </div>
326
+ {:else}
327
+ <div class="rounded-md border border-border bg-base-50 px-3 py-3 text-sm">
328
+ <p class="font-medium text-headline">{emptyStateTitle}</p>
329
+ <p class="mt-1 text-description">{emptyStateDescription}</p>
330
+ {#if emptyStateActionLabel && onEmptyStateAction}
331
+ <button
332
+ type="button"
333
+ class="mt-3 inline-flex min-h-11 cursor-pointer items-center rounded-lg bg-action-primary px-3 py-2 text-sm text-action-primary"
334
+ onclick={onEmptyStateAction}
335
+ >
336
+ {emptyStateActionLabel}
337
+ </button>
338
+ {/if}
339
+ </div>
300
340
  {/if}
301
341
  </div>
302
342
  </div>
303
343
  {/snippet}
304
344
  </Dropdown>
305
345
  {#if message && variant !== "default"}
306
- <p id={`${selectId}-message`} class={messageClasses()} role="alert">
346
+ <p
347
+ id={`${selectId}-message`}
348
+ class={messageClasses()}
349
+ role={variant === "error" ? "alert" : "status"}
350
+ aria-live={variant === "error" ? "assertive" : "polite"}
351
+ >
307
352
  {#if getIcon()}
308
353
  {@const Icon = getIcon()}
309
354
  <Icon size={14} class="shrink-0" />
@@ -15,14 +15,26 @@ interface Props {
15
15
  menuWidth?: string;
16
16
  /** Message shown when no options match the search. */
17
17
  noResultsText?: string;
18
+ /** Shows a loading state while options are being fetched. */
19
+ isLoading?: boolean;
20
+ /** Loading text shown in trigger and dropdown body. */
21
+ loadingText?: string;
22
+ /** Empty state title shown when there are no available options. */
23
+ emptyStateTitle?: string;
24
+ /** Empty state description shown when there are no available options. */
25
+ emptyStateDescription?: string;
26
+ /** Optional empty state action label. */
27
+ emptyStateActionLabel?: string;
18
28
  placeholder?: string;
19
29
  label?: string;
30
+ required?: boolean;
20
31
  disabled?: boolean;
21
32
  size?: "sm" | "md" | "lg";
22
33
  variant?: "default" | "success" | "warning" | "error";
23
34
  message?: string;
24
35
  onchange?: (event: Event) => void;
36
+ onEmptyStateAction?: () => void;
25
37
  }
26
- declare const Select: import("svelte").Component<Props, {}, "">;
38
+ declare const Select: import("svelte").Component<Props, {}, "value">;
27
39
  type Select = ReturnType<typeof Select>;
28
40
  export default Select;
@@ -1,20 +1,14 @@
1
1
  <script lang="ts">
2
2
  import { CheckCircle, AlertTriangle, AlertCircle } from "@lucide/svelte";
3
3
  import type { SemanticVariant, SizeVariant } from "../../types/variants.js";
4
-
5
- function generateId(prefix: string = "id"): string {
6
- if (typeof window !== "undefined") {
7
- return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;
8
- } else {
9
- return `${prefix}-ssr-${Date.now()}`;
10
- }
11
- }
4
+ import { generateId } from "../../routes/lib/ssr-safe.js";
12
5
 
13
6
  interface Props {
14
7
  value?: string;
15
8
  name?: string;
16
9
  label?: string;
17
10
  placeholder?: string;
11
+ required?: boolean;
18
12
  disabled?: boolean;
19
13
  rows?: number;
20
14
  size?: SizeVariant;
@@ -28,6 +22,7 @@
28
22
  name = "",
29
23
  label = "",
30
24
  placeholder = "",
25
+ required = false,
31
26
  disabled = false,
32
27
  rows = 4,
33
28
  variant = "default",
@@ -45,12 +40,12 @@
45
40
  ? "border-warning focus:border-warning focus:ring-warning"
46
41
  : variant === "error"
47
42
  ? "border-error focus:border-error focus:ring-error"
48
- : "border-0 focus:ring-2 focus:ring-brand-500"; // default - no border
43
+ : "border-input-border focus:ring-2 focus:ring-brand-500";
49
44
  });
50
45
 
51
46
  const textareaClasses = $derived(() => {
52
47
  const baseClasses =
53
- "w-full bg-input hover:bg-input-hover focus:bg-input-focus disabled:bg-input-disabled rounded-lg transition-all duration-200 placeholder:text-description text-body focus:outline-none focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed resize-y px-4 py-2.5 text-base leading-6";
48
+ "w-full border bg-input hover:bg-input-hover focus:bg-input-focus disabled:bg-input-disabled rounded-lg transition-all duration-200 placeholder:text-description text-body focus:outline-none focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed resize-y px-4 py-2.5 text-base leading-6";
54
49
 
55
50
  return `${baseClasses} ${variantClass()}`.trim();
56
51
  });
@@ -96,16 +91,23 @@
96
91
  {name}
97
92
  {value}
98
93
  {placeholder}
94
+ {required}
99
95
  {disabled}
100
96
  {rows}
101
97
  class={textareaClasses()}
102
98
  oninput={handleInput}
103
99
  aria-invalid={variant === "error" ? "true" : undefined}
100
+ aria-required={required ? "true" : undefined}
104
101
  aria-describedby={message ? `${textareaId}-message` : undefined}
105
102
  {...restProps}
106
103
  ></textarea>
107
104
  {#if message && variant !== "default"}
108
- <p id={`${textareaId}-message`} class={messageClasses()} role="alert">
105
+ <p
106
+ id={`${textareaId}-message`}
107
+ class={messageClasses()}
108
+ role={variant === "error" ? "alert" : "status"}
109
+ aria-live={variant === "error" ? "assertive" : "polite"}
110
+ >
109
111
  {#if getIcon()}
110
112
  {@const Icon = getIcon()}
111
113
  <Icon size={14} class="shrink-0" />
@@ -4,6 +4,7 @@ interface Props {
4
4
  name?: string;
5
5
  label?: string;
6
6
  placeholder?: string;
7
+ required?: boolean;
7
8
  disabled?: boolean;
8
9
  rows?: number;
9
10
  size?: SizeVariant;
@@ -45,7 +45,7 @@
45
45
  {#if closable}
46
46
  <button
47
47
  type="button"
48
- class="ml-3 text-base-400 hover:text-base-600"
48
+ class="ml-3 cursor-pointer text-base-400 hover:text-base-600"
49
49
  onclick={closeToast}
50
50
  aria-label="Close notification"
51
51
  >
@@ -1,11 +1,5 @@
1
1
  <script lang="ts">
2
- function generateId(prefix: string = "id"): string {
3
- if (typeof window !== "undefined") {
4
- return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;
5
- } else {
6
- return `${prefix}-ssr-${Date.now()}`;
7
- }
8
- }
2
+ import { generateId } from "../../routes/lib/ssr-safe.js";
9
3
 
10
4
  interface Props {
11
5
  checked?: boolean;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { onMount } from "svelte";
2
+ import { generateId } from "../../routes/lib/ssr-safe.js";
3
3
 
4
4
  interface Props {
5
5
  content?: string;
@@ -17,8 +17,8 @@
17
17
  ...restProps
18
18
  }: Props & { children?: any } = $props();
19
19
 
20
- let triggerId = `tooltip-trigger-${Math.random().toString(36).substr(2, 9)}`;
21
- let tooltipId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;
20
+ const triggerId = generateId("tooltip-trigger");
21
+ const tooltipId = generateId("tooltip");
22
22
  let isVisible = $state(false);
23
23
  let triggerElement: HTMLElement | null = $state(null);
24
24
 
@@ -56,17 +56,10 @@
56
56
  function handleMouseLeave() {
57
57
  isVisible = false;
58
58
  }
59
-
60
- onMount(() => {
61
- if (typeof window !== "undefined") {
62
- window.addEventListener("keydown", handleKeydown);
63
- return () => {
64
- window.removeEventListener("keydown", handleKeydown);
65
- };
66
- }
67
- });
68
59
  </script>
69
60
 
61
+ <svelte:window onkeydown={handleKeydown} />
62
+
70
63
  <div
71
64
  class="tooltip-container relative inline-block"
72
65
  data-placement={placement}
@@ -249,8 +242,8 @@
249
242
 
250
243
  @media (prefers-contrast: high) {
251
244
  :root {
252
- --tooltip-bg: #000000;
253
- --tooltip-color: #ffffff;
245
+ --tooltip-bg: CanvasText;
246
+ --tooltip-color: Canvas;
254
247
  --tooltip-padding: 0.75rem 1rem;
255
248
  }
256
249
  }
@@ -276,7 +269,7 @@
276
269
  }
277
270
 
278
271
  .tooltip-container:focus-visible {
279
- outline: 2px solid var(--color-focus, #8fa8ff);
272
+ outline: 2px solid var(--color-focus);
280
273
  outline-offset: 2px;
281
274
  border-radius: var(--tooltip-radius);
282
275
  }
@@ -10,5 +10,7 @@ export { default as Input } from './Input.svelte';
10
10
  export { default as Textarea } from './Textarea.svelte';
11
11
  export { default as Select } from './Select.svelte';
12
12
  export { default as ColorPicker } from './ColorPicker.svelte';
13
+ export { default as List } from './List.svelte';
14
+ export { default as ListItem } from './ListItem.svelte';
13
15
  export { default as Heading } from './Heading.svelte';
14
16
  export { default as ThemeToggle } from './ThemeToggle.svelte';
@@ -10,5 +10,7 @@ export { default as Input } from './Input.svelte';
10
10
  export { default as Textarea } from './Textarea.svelte';
11
11
  export { default as Select } from './Select.svelte';
12
12
  export { default as ColorPicker } from './ColorPicker.svelte';
13
+ export { default as List } from './List.svelte';
14
+ export { default as ListItem } from './ListItem.svelte';
13
15
  export { default as Heading } from './Heading.svelte';
14
16
  export { default as ThemeToggle } from './ThemeToggle.svelte';
@@ -10,6 +10,8 @@ export { default as Input } from './Input.svelte';
10
10
  export { default as Textarea } from './Textarea.svelte';
11
11
  export { default as Select } from './Select.svelte';
12
12
  export { default as ColorPicker } from './ColorPicker.svelte';
13
+ export { default as List } from './List.svelte';
14
+ export { default as ListItem } from './ListItem.svelte';
13
15
  export { default as Heading } from './Heading.svelte';
14
16
  export { default as ThemeToggle } from './ThemeToggle.svelte';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/atoms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
@@ -6,6 +6,8 @@ export { default as Input } from './atoms/Input.svelte';
6
6
  export { default as Textarea } from './atoms/Textarea.svelte';
7
7
  export { default as Select } from './atoms/Select.svelte';
8
8
  export { default as ColorPicker } from './atoms/ColorPicker.svelte';
9
+ export { default as List } from './atoms/List.svelte';
10
+ export { default as ListItem } from './atoms/ListItem.svelte';
9
11
  export { default as Heading } from './atoms/Heading.svelte';
10
12
  export { default as ThemeToggle } from './atoms/ThemeToggle.svelte';
11
13
  export { default as Alert } from './molecules/Alert.svelte';
@@ -18,7 +20,8 @@ export { default as Modal } from './molecules/Modal.svelte';
18
20
  export { default as SlideUp } from './molecules/SlideUp.svelte';
19
21
  export { default as Tabs } from './molecules/Tabs.svelte';
20
22
  export { default as Navbar } from './organisms/Navbar.svelte';
21
- export { default as Navigation } from './organisms/Navigation.svelte';
23
+ export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
24
+ export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
22
25
  export declare const createId: (prefix?: string) => string;
23
26
  export declare const cn: (...classes: (string | undefined | null | false)[]) => string;
24
27
  export declare const getFormData: (form: HTMLFormElement) => Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEtE,eAAO,MAAM,QAAQ,GAAI,SAAQ,MAAa,KAAG,MAMhD,CAAC;AAEF,eAAO,MAAM,EAAE,GAAI,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,KAAG,MAClC,CAAC;AAEtC,eAAO,MAAM,WAAW,GAAI,MAAM,eAAe,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAGrE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAG7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,KAAG,OAE7C,CAAC;AAEF,eAAO,MAAM,SAAS,QAAO,OAE5B,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,MAAM,GAAG,SAEtC,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,QAAQ,GAAG,SAE1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,GAAG,SAE7C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAQ,MAAa,KAAG,MAKlD,CAAC;AAEF,OAAO,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,GAAG,EACH,SAAS,EACT,SAAS,EACT,QAAQ,EACX,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE1E,eAAO,MAAM,QAAQ,GAAI,SAAQ,MAAa,KAAG,MAA4B,CAAC;AAE9E,eAAO,MAAM,EAAE,GAAI,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,KAAG,MAClC,CAAC;AAEtC,eAAO,MAAM,WAAW,GAAI,MAAM,eAAe,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAGrE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAG7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,KAAG,OAE7C,CAAC;AAEF,eAAO,MAAM,SAAS,QAAO,OAE5B,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,MAAM,GAAG,SAEtC,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,QAAQ,GAAG,SAE1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,GAAG,SAE7C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,SAAQ,MAAa,KAAG,MAKlD,CAAC;AAEF,OAAO,EACH,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,GAAG,EACH,SAAS,EACT,SAAS,EACT,QAAQ,EACX,MAAM,gBAAgB,CAAC"}
@@ -12,7 +12,6 @@ export { default as NavigationMenuTrigger } from './NavigationMenuTrigger.svelte
12
12
  export { default as NavigationMenuContent } from './NavigationMenuContent.svelte';
13
13
  export { default as NavigationMenuLink } from './NavigationMenuLink.svelte';
14
14
  export { default as Section } from './Section.svelte';
15
- export { default as Sidebar } from './Sidebar.svelte';
16
15
  export { default as SlideUp } from './SlideUp.svelte';
17
16
  export { default as Tabs } from './Tabs.svelte';
18
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface NavigationMenuContextValue {
2
+ activeItem: string | null;
3
+ setActiveItem: (item: string | null) => void;
4
+ isMobile: boolean;
5
+ }
6
+ export declare const NAVIGATION_MENU_CONTEXT_KEY: unique symbol;
7
+ //# sourceMappingURL=navigation-menu-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu-context.d.ts","sourceRoot":"","sources":["../../../src/components/molecules/navigation-menu-context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,2BAA2B,eAA4B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { default as Navbar } from './Navbar.svelte';
2
- export { default as Navigation } from './Navigation.svelte';
2
+ export { default as SidebarNavigation } from './SidebarNavigation.svelte';
3
+ export { default as SidebarPanel } from './SidebarPanel.svelte';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,8 @@ export { default as Input } from './atoms/Input.svelte';
6
6
  export { default as Textarea } from './atoms/Textarea.svelte';
7
7
  export { default as Select } from './atoms/Select.svelte';
8
8
  export { default as ColorPicker } from './atoms/ColorPicker.svelte';
9
+ export { default as List } from './atoms/List.svelte';
10
+ export { default as ListItem } from './atoms/ListItem.svelte';
9
11
  export { default as Heading } from './atoms/Heading.svelte';
10
12
  export { default as ThemeToggle } from './atoms/ThemeToggle.svelte';
11
13
  export { default as Alert } from './molecules/Alert.svelte';
@@ -18,7 +20,8 @@ export { default as Modal } from './molecules/Modal.svelte';
18
20
  export { default as SlideUp } from './molecules/SlideUp.svelte';
19
21
  export { default as Tabs } from './molecules/Tabs.svelte';
20
22
  export { default as Navbar } from './organisms/Navbar.svelte';
21
- export { default as Navigation } from './organisms/Navigation.svelte';
23
+ export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
24
+ export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
22
25
  export declare const createId: (prefix?: string) => string;
23
26
  export declare const cn: (...classes: (string | undefined | null | false)[]) => string;
24
27
  export declare const getFormData: (form: HTMLFormElement) => Record<string, any>;
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ export { default as Input } from './atoms/Input.svelte';
6
6
  export { default as Textarea } from './atoms/Textarea.svelte';
7
7
  export { default as Select } from './atoms/Select.svelte';
8
8
  export { default as ColorPicker } from './atoms/ColorPicker.svelte';
9
+ export { default as List } from './atoms/List.svelte';
10
+ export { default as ListItem } from './atoms/ListItem.svelte';
9
11
  export { default as Heading } from './atoms/Heading.svelte';
10
12
  export { default as ThemeToggle } from './atoms/ThemeToggle.svelte';
11
13
  export { default as Alert } from './molecules/Alert.svelte';
@@ -18,15 +20,9 @@ export { default as Modal } from './molecules/Modal.svelte';
18
20
  export { default as SlideUp } from './molecules/SlideUp.svelte';
19
21
  export { default as Tabs } from './molecules/Tabs.svelte';
20
22
  export { default as Navbar } from './organisms/Navbar.svelte';
21
- export { default as Navigation } from './organisms/Navigation.svelte';
22
- export const createId = (prefix = 'id') => {
23
- if (typeof window !== 'undefined') {
24
- return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;
25
- }
26
- else {
27
- return `${prefix}-ssr-${Date.now()}`;
28
- }
29
- };
23
+ export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
24
+ export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
25
+ export const createId = (prefix = 'id') => generateId(prefix);
30
26
  export const cn = (...classes) => classes.filter(Boolean).join(' ');
31
27
  export const getFormData = (form) => {
32
28
  const formData = new FormData(form);
@@ -0,0 +1,3 @@
1
+ import type { ComponentMetadata } from "../../types/page.types";
2
+ export declare const componentsCatalog: Record<string, ComponentMetadata[]>;
3
+ //# sourceMappingURL=components-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-catalog.d.ts","sourceRoot":"","sources":["../../../src/lib/showcase/components-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAq1CjE,CAAC"}
@@ -0,0 +1,63 @@
1
+ export declare const categories: {
2
+ id: string;
3
+ label: string;
4
+ description: string;
5
+ }[];
6
+ export declare const sampleCode = "function greet(name) {\n return `Hello, ${name}!`;\n}\n\nconsole.log(greet('World'));";
7
+ export declare const selectOptions: {
8
+ value: string;
9
+ label: string;
10
+ }[];
11
+ export declare const docsListItems: ({
12
+ id: string;
13
+ label: string;
14
+ description: string;
15
+ href: string;
16
+ disabled?: undefined;
17
+ } | {
18
+ id: string;
19
+ label: string;
20
+ description: string;
21
+ href?: undefined;
22
+ disabled?: undefined;
23
+ } | {
24
+ id: string;
25
+ label: string;
26
+ description: string;
27
+ href: string;
28
+ disabled: boolean;
29
+ })[];
30
+ export declare const sidebarNavItems: ({
31
+ id: string;
32
+ label: string;
33
+ href: string;
34
+ icon: import("svelte").Component<import("@lucide/svelte").IconProps, {}, "">;
35
+ badgeCount?: undefined;
36
+ group?: undefined;
37
+ } | {
38
+ id: string;
39
+ label: string;
40
+ href: string;
41
+ icon: import("svelte").Component<import("@lucide/svelte").IconProps, {}, "">;
42
+ badgeCount: number;
43
+ group?: undefined;
44
+ } | {
45
+ id: string;
46
+ label: string;
47
+ href: string;
48
+ icon: import("svelte").Component<import("@lucide/svelte").IconProps, {}, "">;
49
+ group: "secondary";
50
+ badgeCount?: undefined;
51
+ })[];
52
+ export declare const sidebarProjectItems: ({
53
+ id: string;
54
+ label: string;
55
+ description: string;
56
+ badgeText: string;
57
+ } | {
58
+ id: string;
59
+ label: string;
60
+ description: string;
61
+ badgeText?: undefined;
62
+ })[];
63
+ //# sourceMappingURL=components-showcase-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-showcase-constants.d.ts","sourceRoot":"","sources":["../../../src/lib/showcase/components-showcase-constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU;;;;GAiBtB,CAAC;AAEF,eAAO,MAAM,UAAU,2FAIM,CAAC;AAE9B,eAAO,MAAM,aAAa;;;GAGvB,CAAC;AAEJ,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;IAyBzB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;IAmB3B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;IAuB/B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Component } from "svelte";
2
+ type SidebarNavIcon = Component<{
3
+ size?: number;
4
+ class?: string;
5
+ }>;
6
+ /**
7
+ * Icon for a documentation sidebar category row.
8
+ */
9
+ export declare function getDocsCategoryIcon(categoryId: string): SidebarNavIcon;
10
+ /**
11
+ * Icon for a documentation sidebar component row.
12
+ */
13
+ export declare function getDocsComponentIcon(componentName: string, componentCategory: string): SidebarNavIcon;
14
+ export {};
15
+ //# sourceMappingURL=docs-sidebar-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-sidebar-helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/showcase/docs-sidebar-helpers.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,KAAK,cAAc,GAAG,SAAS,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAKtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GAC1B,cAAc,CAgBhB"}