@colletdev/svelte 0.1.3

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 (107) hide show
  1. package/README.md +58 -0
  2. package/package.json +33 -0
  3. package/src/accordion.svelte +52 -0
  4. package/src/accordion.svelte.d.ts +19 -0
  5. package/src/activity-group.svelte +34 -0
  6. package/src/activity-group.svelte.d.ts +16 -0
  7. package/src/alert.svelte +61 -0
  8. package/src/alert.svelte.d.ts +24 -0
  9. package/src/autocomplete.svelte +126 -0
  10. package/src/autocomplete.svelte.d.ts +47 -0
  11. package/src/avatar.svelte +32 -0
  12. package/src/avatar.svelte.d.ts +15 -0
  13. package/src/backdrop.svelte +24 -0
  14. package/src/backdrop.svelte.d.ts +11 -0
  15. package/src/badge.svelte +45 -0
  16. package/src/badge.svelte.d.ts +19 -0
  17. package/src/breadcrumb.svelte +42 -0
  18. package/src/breadcrumb.svelte.d.ts +16 -0
  19. package/src/button.svelte +52 -0
  20. package/src/button.svelte.d.ts +23 -0
  21. package/src/card.svelte +67 -0
  22. package/src/card.svelte.d.ts +22 -0
  23. package/src/carousel.svelte +59 -0
  24. package/src/carousel.svelte.d.ts +29 -0
  25. package/src/chat-input.svelte +76 -0
  26. package/src/chat-input.svelte.d.ts +28 -0
  27. package/src/checkbox.svelte +83 -0
  28. package/src/checkbox.svelte.d.ts +29 -0
  29. package/src/code-block.svelte +40 -0
  30. package/src/code-block.svelte.d.ts +19 -0
  31. package/src/collapsible.svelte +56 -0
  32. package/src/collapsible.svelte.d.ts +27 -0
  33. package/src/date-picker.svelte +110 -0
  34. package/src/date-picker.svelte.d.ts +40 -0
  35. package/src/dialog.svelte +56 -0
  36. package/src/dialog.svelte.d.ts +24 -0
  37. package/src/drawer.svelte +56 -0
  38. package/src/drawer.svelte.d.ts +24 -0
  39. package/src/elements.d.ts +715 -0
  40. package/src/fab.svelte +48 -0
  41. package/src/fab.svelte.d.ts +21 -0
  42. package/src/file-upload.svelte +55 -0
  43. package/src/file-upload.svelte.d.ts +24 -0
  44. package/src/index.ts +85 -0
  45. package/src/label.svelte +29 -0
  46. package/src/label.svelte.d.ts +20 -0
  47. package/src/listbox.svelte +75 -0
  48. package/src/listbox.svelte.d.ts +21 -0
  49. package/src/menu.svelte +76 -0
  50. package/src/menu.svelte.d.ts +27 -0
  51. package/src/message-bubble.svelte +49 -0
  52. package/src/message-bubble.svelte.d.ts +20 -0
  53. package/src/message-group.svelte +41 -0
  54. package/src/message-group.svelte.d.ts +16 -0
  55. package/src/message-part.svelte +20 -0
  56. package/src/message-part.svelte.d.ts +9 -0
  57. package/src/pagination.svelte +40 -0
  58. package/src/pagination.svelte.d.ts +19 -0
  59. package/src/popover.svelte +66 -0
  60. package/src/popover.svelte.d.ts +28 -0
  61. package/src/profile-menu.svelte +55 -0
  62. package/src/profile-menu.svelte.d.ts +24 -0
  63. package/src/progress.svelte +33 -0
  64. package/src/progress.svelte.d.ts +16 -0
  65. package/src/radio-group.svelte +91 -0
  66. package/src/radio-group.svelte.d.ts +26 -0
  67. package/src/scrollbar.svelte +41 -0
  68. package/src/scrollbar.svelte.d.ts +16 -0
  69. package/src/search-bar.svelte +94 -0
  70. package/src/search-bar.svelte.d.ts +34 -0
  71. package/src/select.svelte +112 -0
  72. package/src/select.svelte.d.ts +37 -0
  73. package/src/separator.svelte +25 -0
  74. package/src/separator.svelte.d.ts +18 -0
  75. package/src/sidebar.svelte +65 -0
  76. package/src/sidebar.svelte.d.ts +26 -0
  77. package/src/skeleton.svelte +30 -0
  78. package/src/skeleton.svelte.d.ts +14 -0
  79. package/src/slider.svelte +100 -0
  80. package/src/slider.svelte.d.ts +35 -0
  81. package/src/speed-dial.svelte +66 -0
  82. package/src/speed-dial.svelte.d.ts +30 -0
  83. package/src/spinner.svelte +26 -0
  84. package/src/spinner.svelte.d.ts +12 -0
  85. package/src/split-button.svelte +64 -0
  86. package/src/split-button.svelte.d.ts +28 -0
  87. package/src/stepper.svelte +48 -0
  88. package/src/stepper.svelte.d.ts +19 -0
  89. package/src/switch.svelte +85 -0
  90. package/src/switch.svelte.d.ts +30 -0
  91. package/src/table.svelte +133 -0
  92. package/src/table.svelte.d.ts +33 -0
  93. package/src/tabs.svelte +51 -0
  94. package/src/tabs.svelte.d.ts +21 -0
  95. package/src/text-input.svelte +126 -0
  96. package/src/text-input.svelte.d.ts +49 -0
  97. package/src/text.svelte +63 -0
  98. package/src/text.svelte.d.ts +23 -0
  99. package/src/thinking.svelte +30 -0
  100. package/src/thinking.svelte.d.ts +14 -0
  101. package/src/toast.svelte +58 -0
  102. package/src/toast.svelte.d.ts +25 -0
  103. package/src/toggle-group.svelte +64 -0
  104. package/src/toggle-group.svelte.d.ts +23 -0
  105. package/src/tooltip.svelte +38 -0
  106. package/src/tooltip.svelte.d.ts +17 -0
  107. package/src/types.ts +334 -0
@@ -0,0 +1,16 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { BreadcrumbItem, NavigateDetail } from './types.js';
4
+
5
+ interface BreadcrumbProps {
6
+ id?: string;
7
+ items?: BreadcrumbItem[] | string;
8
+ separator?: string;
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ navLabel?: string;
11
+ disabled?: boolean;
12
+ onNavigate?: (event: CustomEvent<NavigateDetail>) => void;
13
+ }
14
+
15
+ declare const Breadcrumb: Component<BreadcrumbProps, {}>;
16
+ export default Breadcrumb;
@@ -0,0 +1,52 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-button> -->
3
+ <script lang="ts">
4
+ import type { ClickDetail } from './types.js';
5
+
6
+ interface Props {
7
+ label?: string;
8
+ variant?: 'filled' | 'ghost' | 'outline' | 'underline' | 'side-indicator';
9
+ intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
10
+ shape?: 'sharp' | 'rounded' | 'pill';
11
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ disabled?: boolean;
13
+ iconLeading?: string;
14
+ iconTrailing?: string;
15
+ iconOnly?: string;
16
+ ariaLabel?: string;
17
+ kind?: 'button' | 'submit' | 'toggle' | 'link';
18
+ pressed?: boolean;
19
+ href?: string;
20
+ onClick?: (event: CustomEvent<ClickDetail>) => void;
21
+ }
22
+
23
+ let { label, variant, intent, shape, size, disabled, iconLeading, iconTrailing, iconOnly, ariaLabel, kind, pressed, href, onClick }: Props = $props();
24
+
25
+ let el: HTMLElement;
26
+
27
+
28
+ $effect(() => {
29
+ if (!el) return;
30
+ const handler = (e: Event) => onClick?.(e as CustomEvent);
31
+ el.addEventListener('cx-click', handler);
32
+ return () => el.removeEventListener('cx-click', handler);
33
+ });
34
+
35
+ </script>
36
+
37
+ <cx-button
38
+ bind:this={el}
39
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
40
+ variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
41
+ intent={typeof intent === 'object' && intent != null ? JSON.stringify(intent) : intent}
42
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
43
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
44
+ disabled={disabled || undefined}
45
+ icon-leading={typeof iconLeading === 'object' && iconLeading != null ? JSON.stringify(iconLeading) : iconLeading}
46
+ icon-trailing={typeof iconTrailing === 'object' && iconTrailing != null ? JSON.stringify(iconTrailing) : iconTrailing}
47
+ icon-only={typeof iconOnly === 'object' && iconOnly != null ? JSON.stringify(iconOnly) : iconOnly}
48
+ aria-label={typeof ariaLabel === 'object' && ariaLabel != null ? JSON.stringify(ariaLabel) : ariaLabel}
49
+ kind={typeof kind === 'object' && kind != null ? JSON.stringify(kind) : kind}
50
+ pressed={pressed || undefined}
51
+ href={typeof href === 'object' && href != null ? JSON.stringify(href) : href}
52
+ />
@@ -0,0 +1,23 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { ClickDetail } from './types.js';
4
+
5
+ interface ButtonProps {
6
+ label?: string;
7
+ variant?: 'filled' | 'ghost' | 'outline' | 'underline' | 'side-indicator';
8
+ intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
9
+ shape?: 'sharp' | 'rounded' | 'pill';
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ disabled?: boolean;
12
+ iconLeading?: string;
13
+ iconTrailing?: string;
14
+ iconOnly?: string;
15
+ ariaLabel?: string;
16
+ kind?: 'button' | 'submit' | 'toggle' | 'link';
17
+ pressed?: boolean;
18
+ href?: string;
19
+ onClick?: (event: CustomEvent<ClickDetail>) => void;
20
+ }
21
+
22
+ declare const Button: Component<ButtonProps, {}>;
23
+ export default Button;
@@ -0,0 +1,67 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-card> -->
3
+ <script lang="ts">
4
+ import type { ClickDetail, KeyboardDetail } from './types.js';
5
+
6
+ interface Props {
7
+ id?: string;
8
+ label?: string;
9
+ variant?: 'elevated' | 'outlined' | 'filled';
10
+ shape?: 'rounded' | 'sharp' | 'soft';
11
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ clickable?: boolean;
13
+ texture?: boolean;
14
+ onClick?: (event: CustomEvent<ClickDetail>) => void;
15
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
16
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
17
+ children?: import('svelte').Snippet;
18
+ header?: import('svelte').Snippet;
19
+ footer?: import('svelte').Snippet;
20
+ }
21
+
22
+ let { id, label, variant, shape, size, clickable, texture, onClick, onKeydown, onKeyup, children, header, footer }: Props = $props();
23
+
24
+ let el: HTMLElement;
25
+
26
+
27
+ $effect(() => {
28
+ if (!el) return;
29
+ const handler = (e: Event) => onClick?.(e as CustomEvent);
30
+ el.addEventListener('cx-click', handler);
31
+ return () => el.removeEventListener('cx-click', handler);
32
+ });
33
+ $effect(() => {
34
+ if (!el) return;
35
+ const handler = (e: Event) => onKeydown?.(e as CustomEvent);
36
+ el.addEventListener('cx-keydown', handler);
37
+ return () => el.removeEventListener('cx-keydown', handler);
38
+ });
39
+ $effect(() => {
40
+ if (!el) return;
41
+ const handler = (e: Event) => onKeyup?.(e as CustomEvent);
42
+ el.addEventListener('cx-keyup', handler);
43
+ return () => el.removeEventListener('cx-keyup', handler);
44
+ });
45
+
46
+ </script>
47
+
48
+ <cx-card
49
+ bind:this={el}
50
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
51
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
52
+ variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
53
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
54
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
55
+ clickable={clickable || undefined}
56
+ texture={texture || undefined}
57
+ >
58
+ {#if header}
59
+ <div slot="header" style="display:contents">{@render header()}</div>
60
+ {/if}
61
+ {#if footer}
62
+ <div slot="footer" style="display:contents">{@render footer()}</div>
63
+ {/if}
64
+ {#if children}
65
+ {@render children()}
66
+ {/if}
67
+ </cx-card>
@@ -0,0 +1,22 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { ClickDetail, KeyboardDetail } from './types.js';
4
+
5
+ interface CardProps {
6
+ id?: string;
7
+ label?: string;
8
+ variant?: 'elevated' | 'outlined' | 'filled';
9
+ shape?: 'rounded' | 'sharp' | 'soft';
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ clickable?: boolean;
12
+ texture?: boolean;
13
+ onClick?: (event: CustomEvent<ClickDetail>) => void;
14
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
15
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
16
+ children?: import('svelte').Snippet;
17
+ header?: import('svelte').Snippet;
18
+ footer?: import('svelte').Snippet;
19
+ }
20
+
21
+ declare const Card: Component<CardProps, {}>;
22
+ export default Card;
@@ -0,0 +1,59 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-carousel> -->
3
+ <script lang="ts">
4
+ import type { CarouselDetail, CarouselSlide } from './types.js';
5
+
6
+ interface Props {
7
+ id?: string;
8
+ label?: string;
9
+ variant?: 'editorial' | 'card';
10
+ shape?: 'sharp' | 'rounded';
11
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
12
+ slides?: CarouselSlide[] | string;
13
+ autoplay?: 'off' | 'on';
14
+ autoplayInterval?: number;
15
+ loopMode?: boolean;
16
+ motionBlur?: boolean;
17
+ customCursor?: boolean;
18
+ indicator?: string;
19
+ onChange?: (event: CustomEvent<CarouselDetail>) => void;
20
+ }
21
+
22
+ let { id, label, variant, shape, size, slides, autoplay, autoplayInterval, loopMode, motionBlur, customCursor, indicator, onChange }: Props = $props();
23
+
24
+ let el: HTMLElement;
25
+
26
+
27
+ $effect(() => {
28
+ if (!el) return;
29
+ if (slides != null) el.setAttribute('slides', typeof slides === 'object' ? JSON.stringify(slides) : String(slides));
30
+ else el.removeAttribute('slides');
31
+ });
32
+ $effect(() => {
33
+ if (!el) return;
34
+ const handler = (e: Event) => onChange?.(e as CustomEvent);
35
+ el.addEventListener('cx-change', handler);
36
+ return () => el.removeEventListener('cx-change', handler);
37
+ });
38
+ /** Advances to the next slide. */
39
+ export function next() { (el as any)?.next(); }
40
+ /** Returns to the previous slide. */
41
+ export function prev() { (el as any)?.prev(); }
42
+ /** Navigates to the slide at the given index. */
43
+ export function goTo(index: number) { (el as any)?.goTo(index); }
44
+ </script>
45
+
46
+ <cx-carousel
47
+ bind:this={el}
48
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
49
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
50
+ variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
51
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
52
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
53
+ autoplay={typeof autoplay === 'object' && autoplay != null ? JSON.stringify(autoplay) : autoplay}
54
+ autoplay-interval={typeof autoplayInterval === 'object' && autoplayInterval != null ? JSON.stringify(autoplayInterval) : autoplayInterval}
55
+ loop-mode={loopMode || undefined}
56
+ motion-blur={motionBlur || undefined}
57
+ custom-cursor={customCursor || undefined}
58
+ indicator={typeof indicator === 'object' && indicator != null ? JSON.stringify(indicator) : indicator}
59
+ />
@@ -0,0 +1,29 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { CarouselDetail, CarouselSlide } from './types.js';
4
+
5
+ interface CarouselProps {
6
+ id?: string;
7
+ label?: string;
8
+ variant?: 'editorial' | 'card';
9
+ shape?: 'sharp' | 'rounded';
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ slides?: CarouselSlide[] | string;
12
+ autoplay?: 'off' | 'on';
13
+ autoplayInterval?: number;
14
+ loopMode?: boolean;
15
+ motionBlur?: boolean;
16
+ customCursor?: boolean;
17
+ indicator?: string;
18
+ onChange?: (event: CustomEvent<CarouselDetail>) => void;
19
+ }
20
+
21
+ declare const Carousel: Component<CarouselProps, {
22
+ /** Advances to the next slide. */
23
+ next(): void;
24
+ /** Returns to the previous slide. */
25
+ prev(): void;
26
+ /** Navigates to the slide at the given index. */
27
+ goTo(index: number): void;
28
+ }>;
29
+ export default Carousel;
@@ -0,0 +1,76 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-chat-input> -->
3
+ <script lang="ts">
4
+ import type { FocusDetail, KeyboardDetail } from './types.js';
5
+
6
+ interface Props {
7
+ id?: string;
8
+ shape?: 'sharp' | 'rounded' | 'pill';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ placeholder?: string;
11
+ value?: string;
12
+ disabled?: boolean;
13
+ maxRows?: number;
14
+ showActionButton?: boolean;
15
+ actionLabel?: string;
16
+ submitLabel?: string;
17
+ label?: string;
18
+ slotted?: boolean;
19
+ onFocus?: (event: CustomEvent<FocusDetail>) => void;
20
+ onBlur?: (event: CustomEvent<FocusDetail>) => void;
21
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
22
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
23
+ }
24
+
25
+ let { id, shape, size, placeholder, value, disabled, maxRows, showActionButton, actionLabel, submitLabel, label, slotted, onFocus, onBlur, onKeydown, onKeyup }: Props = $props();
26
+
27
+ let el: HTMLElement;
28
+
29
+
30
+ $effect(() => {
31
+ if (!el) return;
32
+ if (value != null) el.setAttribute('value', String(value));
33
+ else el.removeAttribute('value');
34
+ });
35
+ $effect(() => {
36
+ if (!el) return;
37
+ const handler = (e: Event) => onFocus?.(e as CustomEvent);
38
+ el.addEventListener('cx-focus', handler);
39
+ return () => el.removeEventListener('cx-focus', handler);
40
+ });
41
+ $effect(() => {
42
+ if (!el) return;
43
+ const handler = (e: Event) => onBlur?.(e as CustomEvent);
44
+ el.addEventListener('cx-blur', handler);
45
+ return () => el.removeEventListener('cx-blur', handler);
46
+ });
47
+ $effect(() => {
48
+ if (!el) return;
49
+ const handler = (e: Event) => onKeydown?.(e as CustomEvent);
50
+ el.addEventListener('cx-keydown', handler);
51
+ return () => el.removeEventListener('cx-keydown', handler);
52
+ });
53
+ $effect(() => {
54
+ if (!el) return;
55
+ const handler = (e: Event) => onKeyup?.(e as CustomEvent);
56
+ el.addEventListener('cx-keyup', handler);
57
+ return () => el.removeEventListener('cx-keyup', handler);
58
+ });
59
+ /** Focuses the textarea. */
60
+ export function focus() { (el as any)?.focus(); }
61
+ </script>
62
+
63
+ <cx-chat-input
64
+ bind:this={el}
65
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
66
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
67
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
68
+ placeholder={typeof placeholder === 'object' && placeholder != null ? JSON.stringify(placeholder) : placeholder}
69
+ disabled={disabled || undefined}
70
+ max-rows={typeof maxRows === 'object' && maxRows != null ? JSON.stringify(maxRows) : maxRows}
71
+ show-action-button={showActionButton || undefined}
72
+ action-label={typeof actionLabel === 'object' && actionLabel != null ? JSON.stringify(actionLabel) : actionLabel}
73
+ submit-label={typeof submitLabel === 'object' && submitLabel != null ? JSON.stringify(submitLabel) : submitLabel}
74
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
75
+ slotted={slotted || undefined}
76
+ />
@@ -0,0 +1,28 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { FocusDetail, KeyboardDetail } from './types.js';
4
+
5
+ interface ChatInputProps {
6
+ id?: string;
7
+ shape?: 'sharp' | 'rounded' | 'pill';
8
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
+ placeholder?: string;
10
+ value?: string;
11
+ disabled?: boolean;
12
+ maxRows?: number;
13
+ showActionButton?: boolean;
14
+ actionLabel?: string;
15
+ submitLabel?: string;
16
+ label?: string;
17
+ slotted?: boolean;
18
+ onFocus?: (event: CustomEvent<FocusDetail>) => void;
19
+ onBlur?: (event: CustomEvent<FocusDetail>) => void;
20
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
21
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
22
+ }
23
+
24
+ declare const ChatInput: Component<ChatInputProps, {
25
+ /** Focuses the textarea. */
26
+ focus(): void;
27
+ }>;
28
+ export default ChatInput;
@@ -0,0 +1,83 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-checkbox> -->
3
+ <script lang="ts">
4
+ import type { CheckedDetail, FocusDetail, KeyboardDetail } from './types.js';
5
+
6
+ interface Props {
7
+ id?: string;
8
+ label?: string;
9
+ shape?: 'sharp' | 'rounded';
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ /** Three-state check. Accepts true/false as aliases for 'checked'/unchecked, and keeps 'indeterminate' for the third state. */
12
+ checked?: boolean | '' | 'checked' | 'indeterminate';
13
+ disabled?: boolean;
14
+ required?: boolean;
15
+ helperText?: string;
16
+ error?: string;
17
+ unlabeled?: boolean;
18
+ onInput?: (event: CustomEvent<CheckedDetail>) => void;
19
+ onChange?: (event: CustomEvent<CheckedDetail>) => void;
20
+ onFocus?: (event: CustomEvent<FocusDetail>) => void;
21
+ onBlur?: (event: CustomEvent<FocusDetail>) => void;
22
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
23
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
24
+ }
25
+
26
+ let { id, label, shape, size, checked, disabled, required, helperText, error, unlabeled, onInput, onChange, onFocus, onBlur, onKeydown, onKeyup }: Props = $props();
27
+
28
+ let el: HTMLElement;
29
+ let __serialize_checked = $derived(checked === true ? 'checked' : checked === false ? undefined : checked);
30
+
31
+ $effect(() => {
32
+ if (!el) return;
33
+ const handler = (e: Event) => onInput?.(e as CustomEvent);
34
+ el.addEventListener('cx-input', handler);
35
+ return () => el.removeEventListener('cx-input', handler);
36
+ });
37
+ $effect(() => {
38
+ if (!el) return;
39
+ const handler = (e: Event) => onChange?.(e as CustomEvent);
40
+ el.addEventListener('cx-change', handler);
41
+ return () => el.removeEventListener('cx-change', handler);
42
+ });
43
+ $effect(() => {
44
+ if (!el) return;
45
+ const handler = (e: Event) => onFocus?.(e as CustomEvent);
46
+ el.addEventListener('cx-focus', handler);
47
+ return () => el.removeEventListener('cx-focus', handler);
48
+ });
49
+ $effect(() => {
50
+ if (!el) return;
51
+ const handler = (e: Event) => onBlur?.(e as CustomEvent);
52
+ el.addEventListener('cx-blur', handler);
53
+ return () => el.removeEventListener('cx-blur', handler);
54
+ });
55
+ $effect(() => {
56
+ if (!el) return;
57
+ const handler = (e: Event) => onKeydown?.(e as CustomEvent);
58
+ el.addEventListener('cx-keydown', handler);
59
+ return () => el.removeEventListener('cx-keydown', handler);
60
+ });
61
+ $effect(() => {
62
+ if (!el) return;
63
+ const handler = (e: Event) => onKeyup?.(e as CustomEvent);
64
+ el.addEventListener('cx-keyup', handler);
65
+ return () => el.removeEventListener('cx-keyup', handler);
66
+ });
67
+ /** Focuses the checkbox input. */
68
+ export function focus() { (el as any)?.focus(); }
69
+ </script>
70
+
71
+ <cx-checkbox
72
+ bind:this={el}
73
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
74
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
75
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
76
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
77
+ checked={__serialize_checked}
78
+ disabled={disabled || undefined}
79
+ required={required || undefined}
80
+ helper-text={typeof helperText === 'object' && helperText != null ? JSON.stringify(helperText) : helperText}
81
+ error={typeof error === 'object' && error != null ? JSON.stringify(error) : error}
82
+ unlabeled={unlabeled || undefined}
83
+ />
@@ -0,0 +1,29 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { CheckedDetail, FocusDetail, KeyboardDetail } from './types.js';
4
+
5
+ interface CheckboxProps {
6
+ id?: string;
7
+ label?: string;
8
+ shape?: 'sharp' | 'rounded';
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ /** Three-state check. Accepts true/false as aliases for 'checked'/unchecked, and keeps 'indeterminate' for the third state. */
11
+ checked?: boolean | '' | 'checked' | 'indeterminate';
12
+ disabled?: boolean;
13
+ required?: boolean;
14
+ helperText?: string;
15
+ error?: string;
16
+ unlabeled?: boolean;
17
+ onInput?: (event: CustomEvent<CheckedDetail>) => void;
18
+ onChange?: (event: CustomEvent<CheckedDetail>) => void;
19
+ onFocus?: (event: CustomEvent<FocusDetail>) => void;
20
+ onBlur?: (event: CustomEvent<FocusDetail>) => void;
21
+ onKeydown?: (event: CustomEvent<KeyboardDetail>) => void;
22
+ onKeyup?: (event: CustomEvent<KeyboardDetail>) => void;
23
+ }
24
+
25
+ declare const Checkbox: Component<CheckboxProps, {
26
+ /** Focuses the checkbox input. */
27
+ focus(): void;
28
+ }>;
29
+ export default Checkbox;
@@ -0,0 +1,40 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-code-block> -->
3
+ <script lang="ts">
4
+
5
+ interface Props {
6
+ id?: string;
7
+ content?: string;
8
+ variant?: string;
9
+ shape?: string;
10
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
11
+ language?: string;
12
+ filename?: string;
13
+ lineNumbers?: boolean;
14
+ copyButton?: boolean;
15
+ trafficLights?: boolean;
16
+ slotted?: boolean;
17
+ }
18
+
19
+ let { id, content, variant, shape, size, language, filename, lineNumbers, copyButton, trafficLights, slotted }: Props = $props();
20
+
21
+ let el: HTMLElement;
22
+
23
+
24
+
25
+ </script>
26
+
27
+ <cx-code-block
28
+ bind:this={el}
29
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
30
+ content={typeof content === 'object' && content != null ? JSON.stringify(content) : content}
31
+ variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
32
+ shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
33
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
34
+ language={typeof language === 'object' && language != null ? JSON.stringify(language) : language}
35
+ filename={typeof filename === 'object' && filename != null ? JSON.stringify(filename) : filename}
36
+ line-numbers={lineNumbers || undefined}
37
+ copy-button={copyButton || undefined}
38
+ traffic-lights={trafficLights || undefined}
39
+ slotted={slotted || undefined}
40
+ />
@@ -0,0 +1,19 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+
4
+ interface CodeBlockProps {
5
+ id?: string;
6
+ content?: string;
7
+ variant?: string;
8
+ shape?: string;
9
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
10
+ language?: string;
11
+ filename?: string;
12
+ lineNumbers?: boolean;
13
+ copyButton?: boolean;
14
+ trafficLights?: boolean;
15
+ slotted?: boolean;
16
+ }
17
+
18
+ declare const CodeBlock: Component<CodeBlockProps, {}>;
19
+ export default CodeBlock;
@@ -0,0 +1,56 @@
1
+ <!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
2
+ <!-- Svelte 5 wrapper for <cx-collapsible> -->
3
+ <script lang="ts">
4
+ import type { CollapsibleDetail } from './types.js';
5
+
6
+ interface Props {
7
+ id?: string;
8
+ label?: string;
9
+ triggerHtml?: string;
10
+ open?: boolean;
11
+ icon?: string;
12
+ noIcon?: boolean;
13
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
14
+ disabled?: boolean;
15
+ onChange?: (event: CustomEvent<CollapsibleDetail>) => void;
16
+ children?: import('svelte').Snippet;
17
+ trigger?: import('svelte').Snippet;
18
+ }
19
+
20
+ let { id, label, triggerHtml, open, icon, noIcon, size, disabled, onChange, children, trigger }: Props = $props();
21
+
22
+ let el: HTMLElement;
23
+
24
+
25
+ $effect(() => {
26
+ if (!el) return;
27
+ const handler = (e: Event) => onChange?.(e as CustomEvent);
28
+ el.addEventListener('cx-change', handler);
29
+ return () => el.removeEventListener('cx-change', handler);
30
+ });
31
+ /** Expands the collapsible content. */
32
+ export function doOpen() { (el as any)?.open(); }
33
+ /** Collapses the content. */
34
+ export function close() { (el as any)?.close(); }
35
+ /** Toggles the collapsible state. */
36
+ export function toggle() { (el as any)?.toggle(); }
37
+ </script>
38
+
39
+ <cx-collapsible
40
+ bind:this={el}
41
+ id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
42
+ label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
43
+ trigger-html={typeof triggerHtml === 'object' && triggerHtml != null ? JSON.stringify(triggerHtml) : triggerHtml}
44
+ open={open || undefined}
45
+ icon={typeof icon === 'object' && icon != null ? JSON.stringify(icon) : icon}
46
+ no-icon={noIcon || undefined}
47
+ size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
48
+ disabled={disabled || undefined}
49
+ >
50
+ {#if trigger}
51
+ <div slot="trigger" style="display:contents">{@render trigger()}</div>
52
+ {/if}
53
+ {#if children}
54
+ {@render children()}
55
+ {/if}
56
+ </cx-collapsible>
@@ -0,0 +1,27 @@
1
+ // Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
2
+ import type { Component } from 'svelte';
3
+ import type { CollapsibleDetail } from './types.js';
4
+
5
+ interface CollapsibleProps {
6
+ id?: string;
7
+ label?: string;
8
+ triggerHtml?: string;
9
+ open?: boolean;
10
+ icon?: string;
11
+ noIcon?: boolean;
12
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
13
+ disabled?: boolean;
14
+ onChange?: (event: CustomEvent<CollapsibleDetail>) => void;
15
+ children?: import('svelte').Snippet;
16
+ trigger?: import('svelte').Snippet;
17
+ }
18
+
19
+ declare const Collapsible: Component<CollapsibleProps, {
20
+ /** Expands the collapsible content. */
21
+ doOpen(): void;
22
+ /** Collapses the content. */
23
+ close(): void;
24
+ /** Toggles the collapsible state. */
25
+ toggle(): void;
26
+ }>;
27
+ export default Collapsible;