@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.
- package/README.md +58 -0
- package/package.json +33 -0
- package/src/accordion.svelte +52 -0
- package/src/accordion.svelte.d.ts +19 -0
- package/src/activity-group.svelte +34 -0
- package/src/activity-group.svelte.d.ts +16 -0
- package/src/alert.svelte +61 -0
- package/src/alert.svelte.d.ts +24 -0
- package/src/autocomplete.svelte +126 -0
- package/src/autocomplete.svelte.d.ts +47 -0
- package/src/avatar.svelte +32 -0
- package/src/avatar.svelte.d.ts +15 -0
- package/src/backdrop.svelte +24 -0
- package/src/backdrop.svelte.d.ts +11 -0
- package/src/badge.svelte +45 -0
- package/src/badge.svelte.d.ts +19 -0
- package/src/breadcrumb.svelte +42 -0
- package/src/breadcrumb.svelte.d.ts +16 -0
- package/src/button.svelte +52 -0
- package/src/button.svelte.d.ts +23 -0
- package/src/card.svelte +67 -0
- package/src/card.svelte.d.ts +22 -0
- package/src/carousel.svelte +59 -0
- package/src/carousel.svelte.d.ts +29 -0
- package/src/chat-input.svelte +76 -0
- package/src/chat-input.svelte.d.ts +28 -0
- package/src/checkbox.svelte +83 -0
- package/src/checkbox.svelte.d.ts +29 -0
- package/src/code-block.svelte +40 -0
- package/src/code-block.svelte.d.ts +19 -0
- package/src/collapsible.svelte +56 -0
- package/src/collapsible.svelte.d.ts +27 -0
- package/src/date-picker.svelte +110 -0
- package/src/date-picker.svelte.d.ts +40 -0
- package/src/dialog.svelte +56 -0
- package/src/dialog.svelte.d.ts +24 -0
- package/src/drawer.svelte +56 -0
- package/src/drawer.svelte.d.ts +24 -0
- package/src/elements.d.ts +715 -0
- package/src/fab.svelte +48 -0
- package/src/fab.svelte.d.ts +21 -0
- package/src/file-upload.svelte +55 -0
- package/src/file-upload.svelte.d.ts +24 -0
- package/src/index.ts +85 -0
- package/src/label.svelte +29 -0
- package/src/label.svelte.d.ts +20 -0
- package/src/listbox.svelte +75 -0
- package/src/listbox.svelte.d.ts +21 -0
- package/src/menu.svelte +76 -0
- package/src/menu.svelte.d.ts +27 -0
- package/src/message-bubble.svelte +49 -0
- package/src/message-bubble.svelte.d.ts +20 -0
- package/src/message-group.svelte +41 -0
- package/src/message-group.svelte.d.ts +16 -0
- package/src/message-part.svelte +20 -0
- package/src/message-part.svelte.d.ts +9 -0
- package/src/pagination.svelte +40 -0
- package/src/pagination.svelte.d.ts +19 -0
- package/src/popover.svelte +66 -0
- package/src/popover.svelte.d.ts +28 -0
- package/src/profile-menu.svelte +55 -0
- package/src/profile-menu.svelte.d.ts +24 -0
- package/src/progress.svelte +33 -0
- package/src/progress.svelte.d.ts +16 -0
- package/src/radio-group.svelte +91 -0
- package/src/radio-group.svelte.d.ts +26 -0
- package/src/scrollbar.svelte +41 -0
- package/src/scrollbar.svelte.d.ts +16 -0
- package/src/search-bar.svelte +94 -0
- package/src/search-bar.svelte.d.ts +34 -0
- package/src/select.svelte +112 -0
- package/src/select.svelte.d.ts +37 -0
- package/src/separator.svelte +25 -0
- package/src/separator.svelte.d.ts +18 -0
- package/src/sidebar.svelte +65 -0
- package/src/sidebar.svelte.d.ts +26 -0
- package/src/skeleton.svelte +30 -0
- package/src/skeleton.svelte.d.ts +14 -0
- package/src/slider.svelte +100 -0
- package/src/slider.svelte.d.ts +35 -0
- package/src/speed-dial.svelte +66 -0
- package/src/speed-dial.svelte.d.ts +30 -0
- package/src/spinner.svelte +26 -0
- package/src/spinner.svelte.d.ts +12 -0
- package/src/split-button.svelte +64 -0
- package/src/split-button.svelte.d.ts +28 -0
- package/src/stepper.svelte +48 -0
- package/src/stepper.svelte.d.ts +19 -0
- package/src/switch.svelte +85 -0
- package/src/switch.svelte.d.ts +30 -0
- package/src/table.svelte +133 -0
- package/src/table.svelte.d.ts +33 -0
- package/src/tabs.svelte +51 -0
- package/src/tabs.svelte.d.ts +21 -0
- package/src/text-input.svelte +126 -0
- package/src/text-input.svelte.d.ts +49 -0
- package/src/text.svelte +63 -0
- package/src/text.svelte.d.ts +23 -0
- package/src/thinking.svelte +30 -0
- package/src/thinking.svelte.d.ts +14 -0
- package/src/toast.svelte +58 -0
- package/src/toast.svelte.d.ts +25 -0
- package/src/toggle-group.svelte +64 -0
- package/src/toggle-group.svelte.d.ts +23 -0
- package/src/tooltip.svelte +38 -0
- package/src/tooltip.svelte.d.ts +17 -0
- package/src/types.ts +334 -0
package/src/text.svelte
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
|
|
2
|
+
<!-- Svelte 5 wrapper for <cx-text> -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
id?: string;
|
|
7
|
+
role?: 'display' | 'h1' | 'h2' | 'h3' | 'label-lg' | 'label-md' | 'label-sm' | 'body-lg' | 'body-md' | 'body-sm' | 'overline' | 'caption' | 'code';
|
|
8
|
+
align?: 'start' | 'center' | 'end';
|
|
9
|
+
color?: 'primary' | 'inverse' | 'muted';
|
|
10
|
+
muted?: boolean;
|
|
11
|
+
strong?: boolean;
|
|
12
|
+
italic?: boolean;
|
|
13
|
+
underline?: boolean;
|
|
14
|
+
underlineStrong?: boolean;
|
|
15
|
+
truncate?: boolean;
|
|
16
|
+
lineClamp?: number;
|
|
17
|
+
balance?: boolean;
|
|
18
|
+
prose?: boolean;
|
|
19
|
+
elementAs?: string;
|
|
20
|
+
children?: import('svelte').Snippet;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let { id, role, align, color, muted, strong, italic, underline, underlineStrong, truncate, lineClamp, balance, prose, elementAs, children }: Props = $props();
|
|
24
|
+
|
|
25
|
+
let el: HTMLElement;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
$effect(() => {
|
|
29
|
+
if (!el) return;
|
|
30
|
+
if (role != null) el.setAttribute('role', String(role));
|
|
31
|
+
else el.removeAttribute('role');
|
|
32
|
+
});
|
|
33
|
+
$effect(() => {
|
|
34
|
+
if (!el) return;
|
|
35
|
+
if (align != null) el.setAttribute('align', String(align));
|
|
36
|
+
else el.removeAttribute('align');
|
|
37
|
+
});
|
|
38
|
+
$effect(() => {
|
|
39
|
+
if (!el) return;
|
|
40
|
+
if (color != null) el.setAttribute('color', String(color));
|
|
41
|
+
else el.removeAttribute('color');
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<cx-text
|
|
47
|
+
bind:this={el}
|
|
48
|
+
id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
|
|
49
|
+
muted={muted || undefined}
|
|
50
|
+
strong={strong || undefined}
|
|
51
|
+
italic={italic || undefined}
|
|
52
|
+
underline={underline || undefined}
|
|
53
|
+
underline-strong={underlineStrong || undefined}
|
|
54
|
+
truncate={truncate || undefined}
|
|
55
|
+
line-clamp={typeof lineClamp === 'object' && lineClamp != null ? JSON.stringify(lineClamp) : lineClamp}
|
|
56
|
+
balance={balance || undefined}
|
|
57
|
+
prose={prose || undefined}
|
|
58
|
+
element-as={typeof elementAs === 'object' && elementAs != null ? JSON.stringify(elementAs) : elementAs}
|
|
59
|
+
>
|
|
60
|
+
{#if children}
|
|
61
|
+
{@render children()}
|
|
62
|
+
{/if}
|
|
63
|
+
</cx-text>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface TextProps {
|
|
5
|
+
id?: string;
|
|
6
|
+
role?: 'display' | 'h1' | 'h2' | 'h3' | 'label-lg' | 'label-md' | 'label-sm' | 'body-lg' | 'body-md' | 'body-sm' | 'overline' | 'caption' | 'code';
|
|
7
|
+
align?: 'start' | 'center' | 'end';
|
|
8
|
+
color?: 'primary' | 'inverse' | 'muted';
|
|
9
|
+
muted?: boolean;
|
|
10
|
+
strong?: boolean;
|
|
11
|
+
italic?: boolean;
|
|
12
|
+
underline?: boolean;
|
|
13
|
+
underlineStrong?: boolean;
|
|
14
|
+
truncate?: boolean;
|
|
15
|
+
lineClamp?: number;
|
|
16
|
+
balance?: boolean;
|
|
17
|
+
prose?: boolean;
|
|
18
|
+
elementAs?: string;
|
|
19
|
+
children?: import('svelte').Snippet;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare const Text: Component<TextProps, {}>;
|
|
23
|
+
export default Text;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
|
|
2
|
+
<!-- Svelte 5 wrapper for <cx-thinking> -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
id?: string;
|
|
7
|
+
variant?: 'ghost' | 'filled';
|
|
8
|
+
shape?: 'sharp' | 'rounded' | 'pill';
|
|
9
|
+
label?: string;
|
|
10
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
11
|
+
speed?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let { id, variant, shape, label, size, speed }: Props = $props();
|
|
15
|
+
|
|
16
|
+
let el: HTMLElement;
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<cx-thinking
|
|
23
|
+
bind:this={el}
|
|
24
|
+
id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
|
|
25
|
+
variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
|
|
26
|
+
shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
|
|
27
|
+
label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
|
|
28
|
+
size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
|
|
29
|
+
speed={typeof speed === 'object' && speed != null ? JSON.stringify(speed) : speed}
|
|
30
|
+
/>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface ThinkingProps {
|
|
5
|
+
id?: string;
|
|
6
|
+
variant?: 'ghost' | 'filled';
|
|
7
|
+
shape?: 'sharp' | 'rounded' | 'pill';
|
|
8
|
+
label?: string;
|
|
9
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
10
|
+
speed?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
declare const Thinking: Component<ThinkingProps, {}>;
|
|
14
|
+
export default Thinking;
|
package/src/toast.svelte
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
|
|
2
|
+
<!-- Svelte 5 wrapper for <cx-toast> -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import type { DismissDetail } from './types.js';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
id?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
variant?: 'subtle' | 'filled' | 'outline';
|
|
11
|
+
intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
12
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
13
|
+
showIcon?: boolean;
|
|
14
|
+
icon?: string;
|
|
15
|
+
dismissible?: boolean;
|
|
16
|
+
dismissLabel?: string;
|
|
17
|
+
duration?: number;
|
|
18
|
+
onDismiss?: (event: CustomEvent<DismissDetail>) => void;
|
|
19
|
+
action?: import('svelte').Snippet;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let { id, title, description, variant, intent, size, showIcon, icon, dismissible, dismissLabel, duration, onDismiss, action }: Props = $props();
|
|
23
|
+
|
|
24
|
+
let el: HTMLElement;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
$effect(() => {
|
|
28
|
+
if (!el) return;
|
|
29
|
+
if (title != null) el.setAttribute('title', String(title));
|
|
30
|
+
else el.removeAttribute('title');
|
|
31
|
+
});
|
|
32
|
+
$effect(() => {
|
|
33
|
+
if (!el) return;
|
|
34
|
+
const handler = (e: Event) => onDismiss?.(e as CustomEvent);
|
|
35
|
+
el.addEventListener('cx-dismiss', handler);
|
|
36
|
+
return () => el.removeEventListener('cx-dismiss', handler);
|
|
37
|
+
});
|
|
38
|
+
/** Dismisses the toast with exit animation. */
|
|
39
|
+
export function dismiss() { (el as any)?.dismiss(); }
|
|
40
|
+
</script>
|
|
41
|
+
|
|
42
|
+
<cx-toast
|
|
43
|
+
bind:this={el}
|
|
44
|
+
id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
|
|
45
|
+
description={typeof description === 'object' && description != null ? JSON.stringify(description) : description}
|
|
46
|
+
variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
|
|
47
|
+
intent={typeof intent === 'object' && intent != null ? JSON.stringify(intent) : intent}
|
|
48
|
+
size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
|
|
49
|
+
show-icon={showIcon || undefined}
|
|
50
|
+
icon={typeof icon === 'object' && icon != null ? JSON.stringify(icon) : icon}
|
|
51
|
+
dismissible={dismissible || undefined}
|
|
52
|
+
dismiss-label={typeof dismissLabel === 'object' && dismissLabel != null ? JSON.stringify(dismissLabel) : dismissLabel}
|
|
53
|
+
duration={typeof duration === 'object' && duration != null ? JSON.stringify(duration) : duration}
|
|
54
|
+
>
|
|
55
|
+
{#if action}
|
|
56
|
+
<div slot="action" style="display:contents">{@render action()}</div>
|
|
57
|
+
{/if}
|
|
58
|
+
</cx-toast>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
import type { DismissDetail } from './types.js';
|
|
4
|
+
|
|
5
|
+
interface ToastProps {
|
|
6
|
+
id?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
variant?: 'subtle' | 'filled' | 'outline';
|
|
10
|
+
intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
11
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
12
|
+
showIcon?: boolean;
|
|
13
|
+
icon?: string;
|
|
14
|
+
dismissible?: boolean;
|
|
15
|
+
dismissLabel?: string;
|
|
16
|
+
duration?: number;
|
|
17
|
+
onDismiss?: (event: CustomEvent<DismissDetail>) => void;
|
|
18
|
+
action?: import('svelte').Snippet;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare const Toast: Component<ToastProps, {
|
|
22
|
+
/** Dismisses the toast with exit animation. */
|
|
23
|
+
dismiss(): void;
|
|
24
|
+
}>;
|
|
25
|
+
export default Toast;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
<!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
|
|
2
|
+
<!-- Svelte 5 wrapper for <cx-toggle-group> -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
import type { ToggleDetail, ToggleItem } from './types.js';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
id?: string;
|
|
8
|
+
label?: string;
|
|
9
|
+
items?: ToggleItem[] | string;
|
|
10
|
+
variant?: 'outline' | 'ghost' | 'filled';
|
|
11
|
+
shape?: 'sharp' | 'rounded' | 'pill';
|
|
12
|
+
mode?: 'single' | 'multiple';
|
|
13
|
+
orientation?: 'horizontal' | 'vertical';
|
|
14
|
+
intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
15
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Controlled pressed item IDs. Pass a single ID or an array. */
|
|
18
|
+
value?: string | string[];
|
|
19
|
+
onInput?: (event: CustomEvent) => void;
|
|
20
|
+
onChange?: (event: CustomEvent<ToggleDetail>) => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let { id, label, items, variant, shape, mode, orientation, intent, size, disabled, value, onInput, onChange }: Props = $props();
|
|
24
|
+
|
|
25
|
+
let el: HTMLElement;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
$effect(() => {
|
|
29
|
+
if (!el) return;
|
|
30
|
+
if (value != null) el.setAttribute('value', String(value));
|
|
31
|
+
else el.removeAttribute('value');
|
|
32
|
+
});
|
|
33
|
+
$effect(() => {
|
|
34
|
+
if (!el) return;
|
|
35
|
+
if (items != null) el.setAttribute('items', typeof items === 'object' ? JSON.stringify(items) : String(items));
|
|
36
|
+
else el.removeAttribute('items');
|
|
37
|
+
});
|
|
38
|
+
$effect(() => {
|
|
39
|
+
if (!el) return;
|
|
40
|
+
const handler = (e: Event) => onInput?.(e as CustomEvent);
|
|
41
|
+
el.addEventListener('cx-input', handler);
|
|
42
|
+
return () => el.removeEventListener('cx-input', handler);
|
|
43
|
+
});
|
|
44
|
+
$effect(() => {
|
|
45
|
+
if (!el) return;
|
|
46
|
+
const handler = (e: Event) => onChange?.(e as CustomEvent);
|
|
47
|
+
el.addEventListener('cx-change', handler);
|
|
48
|
+
return () => el.removeEventListener('cx-change', handler);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<cx-toggle-group
|
|
54
|
+
bind:this={el}
|
|
55
|
+
id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
|
|
56
|
+
label={typeof label === 'object' && label != null ? JSON.stringify(label) : label}
|
|
57
|
+
variant={typeof variant === 'object' && variant != null ? JSON.stringify(variant) : variant}
|
|
58
|
+
shape={typeof shape === 'object' && shape != null ? JSON.stringify(shape) : shape}
|
|
59
|
+
mode={typeof mode === 'object' && mode != null ? JSON.stringify(mode) : mode}
|
|
60
|
+
orientation={typeof orientation === 'object' && orientation != null ? JSON.stringify(orientation) : orientation}
|
|
61
|
+
intent={typeof intent === 'object' && intent != null ? JSON.stringify(intent) : intent}
|
|
62
|
+
size={typeof size === 'object' && size != null ? JSON.stringify(size) : size}
|
|
63
|
+
disabled={disabled || undefined}
|
|
64
|
+
/>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
import type { ToggleDetail, ToggleItem } from './types.js';
|
|
4
|
+
|
|
5
|
+
interface ToggleGroupProps {
|
|
6
|
+
id?: string;
|
|
7
|
+
label?: string;
|
|
8
|
+
items?: ToggleItem[] | string;
|
|
9
|
+
variant?: 'outline' | 'ghost' | 'filled';
|
|
10
|
+
shape?: 'sharp' | 'rounded' | 'pill';
|
|
11
|
+
mode?: 'single' | 'multiple';
|
|
12
|
+
orientation?: 'horizontal' | 'vertical';
|
|
13
|
+
intent?: 'neutral' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
14
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** Controlled pressed item IDs. Pass a single ID or an array. */
|
|
17
|
+
value?: string | string[];
|
|
18
|
+
onInput?: (event: CustomEvent) => void;
|
|
19
|
+
onChange?: (event: CustomEvent<ToggleDetail>) => void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare const ToggleGroup: Component<ToggleGroupProps, {}>;
|
|
23
|
+
export default ToggleGroup;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT -->
|
|
2
|
+
<!-- Svelte 5 wrapper for <cx-tooltip> -->
|
|
3
|
+
<script lang="ts">
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Tooltip text shown on hover/focus. Also serves as the accessible name. */
|
|
8
|
+
content?: string;
|
|
9
|
+
triggerHtml?: string;
|
|
10
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
11
|
+
arrow?: boolean;
|
|
12
|
+
openDelay?: number;
|
|
13
|
+
closeDelay?: number;
|
|
14
|
+
children?: import('svelte').Snippet;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
let { id, content, triggerHtml, position, arrow, openDelay, closeDelay, children }: Props = $props();
|
|
18
|
+
|
|
19
|
+
let el: HTMLElement;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<cx-tooltip
|
|
26
|
+
bind:this={el}
|
|
27
|
+
id={typeof id === 'object' && id != null ? JSON.stringify(id) : id}
|
|
28
|
+
content={typeof content === 'object' && content != null ? JSON.stringify(content) : content}
|
|
29
|
+
trigger-html={typeof triggerHtml === 'object' && triggerHtml != null ? JSON.stringify(triggerHtml) : triggerHtml}
|
|
30
|
+
position={typeof position === 'object' && position != null ? JSON.stringify(position) : position}
|
|
31
|
+
arrow={arrow || undefined}
|
|
32
|
+
open-delay={typeof openDelay === 'object' && openDelay != null ? JSON.stringify(openDelay) : openDelay}
|
|
33
|
+
close-delay={typeof closeDelay === 'object' && closeDelay != null ? JSON.stringify(closeDelay) : closeDelay}
|
|
34
|
+
>
|
|
35
|
+
{#if trigger || children}
|
|
36
|
+
<div slot="trigger" style="display:contents">{@render (trigger || children)?.()}</div>
|
|
37
|
+
{/if}
|
|
38
|
+
</cx-tooltip>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Auto-generated by scripts/generate-svelte.mjs — DO NOT EDIT
|
|
2
|
+
import type { Component } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface TooltipProps {
|
|
5
|
+
id?: string;
|
|
6
|
+
/** Tooltip text shown on hover/focus. Also serves as the accessible name. */
|
|
7
|
+
content?: string;
|
|
8
|
+
triggerHtml?: string;
|
|
9
|
+
position?: 'top' | 'bottom' | 'left' | 'right';
|
|
10
|
+
arrow?: boolean;
|
|
11
|
+
openDelay?: number;
|
|
12
|
+
closeDelay?: number;
|
|
13
|
+
children?: import('svelte').Snippet;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare const Tooltip: Component<TooltipProps, {}>;
|
|
17
|
+
export default Tooltip;
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// Shared TypeScript interfaces for structured component props.
|
|
2
|
+
// These mirror the Rust config structs in crates/wasm-api/src/*.rs.
|
|
3
|
+
// Auto-generated by the framework wrapper generator — DO NOT EDIT.
|
|
4
|
+
|
|
5
|
+
// ─── Shared Option Types (Select, Listbox, Autocomplete) ───
|
|
6
|
+
|
|
7
|
+
export interface SelectOption {
|
|
8
|
+
value: string;
|
|
9
|
+
label: string;
|
|
10
|
+
icon?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface OptionGroup {
|
|
16
|
+
label: string;
|
|
17
|
+
options: SelectOption[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// ─── Tabs ───
|
|
21
|
+
|
|
22
|
+
export interface TabItem {
|
|
23
|
+
value: string;
|
|
24
|
+
label: string;
|
|
25
|
+
content?: string;
|
|
26
|
+
icon?: string;
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ─── Table ───
|
|
31
|
+
|
|
32
|
+
export interface TableColumn {
|
|
33
|
+
id: string;
|
|
34
|
+
header: string;
|
|
35
|
+
sortable?: boolean;
|
|
36
|
+
width?: string;
|
|
37
|
+
align?: 'left' | 'center' | 'right';
|
|
38
|
+
visible?: boolean;
|
|
39
|
+
pinned?: 'left' | 'right';
|
|
40
|
+
resizable?: boolean;
|
|
41
|
+
sr_only?: boolean;
|
|
42
|
+
min_width?: string;
|
|
43
|
+
max_width?: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface TableCell {
|
|
47
|
+
text?: string;
|
|
48
|
+
html?: string;
|
|
49
|
+
number?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface TableRow {
|
|
53
|
+
id: string;
|
|
54
|
+
cells: TableCell[] | Record<string, string | TableCell>;
|
|
55
|
+
disabled?: boolean;
|
|
56
|
+
detail?: string;
|
|
57
|
+
expanded?: boolean;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface SortState {
|
|
61
|
+
column_id: string;
|
|
62
|
+
direction: 'asc' | 'desc' | 'ascending' | 'descending';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface PaginationConfig {
|
|
66
|
+
current_page: number;
|
|
67
|
+
page_size: number;
|
|
68
|
+
total_items: number;
|
|
69
|
+
page_size_options?: number[];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface FooterRow {
|
|
73
|
+
cells: Record<string, string | TableCell>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface EmptyStateConfig {
|
|
77
|
+
title?: string;
|
|
78
|
+
icon?: string;
|
|
79
|
+
description?: string;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ─── Accordion ───
|
|
83
|
+
|
|
84
|
+
export interface AccordionItem {
|
|
85
|
+
id: string;
|
|
86
|
+
trigger_label: string;
|
|
87
|
+
panel_content: string;
|
|
88
|
+
icon?: string;
|
|
89
|
+
description?: string;
|
|
90
|
+
disabled?: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ─── Menu ───
|
|
94
|
+
|
|
95
|
+
export interface MenuRadioItem {
|
|
96
|
+
value: string;
|
|
97
|
+
label: string;
|
|
98
|
+
icon?: string;
|
|
99
|
+
disabled?: boolean;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface MenuEntry {
|
|
103
|
+
type: 'item' | 'checkbox' | 'radio-group' | 'separator' | 'label';
|
|
104
|
+
id?: string;
|
|
105
|
+
label?: string;
|
|
106
|
+
icon?: string;
|
|
107
|
+
shortcut?: string;
|
|
108
|
+
disabled?: boolean;
|
|
109
|
+
danger?: boolean;
|
|
110
|
+
intent?: string;
|
|
111
|
+
checked?: boolean;
|
|
112
|
+
value?: string;
|
|
113
|
+
items?: MenuRadioItem[];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// ─── Sidebar ───
|
|
117
|
+
|
|
118
|
+
export interface SidebarNavItem {
|
|
119
|
+
id: string;
|
|
120
|
+
label: string;
|
|
121
|
+
href?: string;
|
|
122
|
+
icon?: string;
|
|
123
|
+
badge?: string;
|
|
124
|
+
active?: boolean;
|
|
125
|
+
disabled?: boolean;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface SidebarGroup {
|
|
129
|
+
label?: string;
|
|
130
|
+
icon?: string;
|
|
131
|
+
items: SidebarNavItem[];
|
|
132
|
+
collapsible?: boolean;
|
|
133
|
+
expanded?: boolean;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ─── Breadcrumb ───
|
|
137
|
+
|
|
138
|
+
export interface BreadcrumbItem {
|
|
139
|
+
label: string;
|
|
140
|
+
href?: string;
|
|
141
|
+
icon?: string;
|
|
142
|
+
current?: boolean;
|
|
143
|
+
ellipsis?: boolean;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ─── Radio Group ───
|
|
147
|
+
|
|
148
|
+
export interface RadioOption {
|
|
149
|
+
value: string;
|
|
150
|
+
label: string;
|
|
151
|
+
description?: string;
|
|
152
|
+
disabled?: boolean;
|
|
153
|
+
icon?: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ─── Toggle Group ───
|
|
157
|
+
|
|
158
|
+
export interface ToggleItem {
|
|
159
|
+
id: string;
|
|
160
|
+
label: string;
|
|
161
|
+
icon?: string;
|
|
162
|
+
icon_only?: boolean;
|
|
163
|
+
pressed?: boolean;
|
|
164
|
+
disabled?: boolean;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// ─── Split Button ───
|
|
168
|
+
|
|
169
|
+
export interface SplitMenuEntry {
|
|
170
|
+
type: 'item' | 'separator';
|
|
171
|
+
id?: string;
|
|
172
|
+
label?: string;
|
|
173
|
+
icon?: string;
|
|
174
|
+
shortcut?: string;
|
|
175
|
+
intent?: string;
|
|
176
|
+
disabled?: boolean;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ─── Carousel ───
|
|
180
|
+
|
|
181
|
+
export interface CarouselSlide {
|
|
182
|
+
image_url?: string;
|
|
183
|
+
title: string;
|
|
184
|
+
badge?: string;
|
|
185
|
+
badge_color?: string;
|
|
186
|
+
subtitle?: string;
|
|
187
|
+
href?: string;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface CarouselDetail {
|
|
191
|
+
index: number;
|
|
192
|
+
total: number;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// ─── Speed Dial ───
|
|
196
|
+
|
|
197
|
+
export interface SpeedDialAction {
|
|
198
|
+
id: string;
|
|
199
|
+
icon: string;
|
|
200
|
+
label: string;
|
|
201
|
+
intent?: string;
|
|
202
|
+
disabled?: boolean;
|
|
203
|
+
handler?: string;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// ─── Message Group ───
|
|
207
|
+
|
|
208
|
+
export interface MessageGroupPart {
|
|
209
|
+
id?: string;
|
|
210
|
+
kind: 'text' | 'tool-call' | 'tool-result' | 'thinking' | 'code-block' | 'error';
|
|
211
|
+
connection?: 'standalone' | 'first' | 'middle' | 'last';
|
|
212
|
+
content?: string;
|
|
213
|
+
html_content?: string;
|
|
214
|
+
tool_name?: string;
|
|
215
|
+
tool_arguments?: string;
|
|
216
|
+
tool_status?: 'pending' | 'success' | 'error';
|
|
217
|
+
collapsible?: boolean;
|
|
218
|
+
thinking_label?: string;
|
|
219
|
+
language?: string;
|
|
220
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// ─── Stepper ───
|
|
224
|
+
|
|
225
|
+
export interface StepperStep {
|
|
226
|
+
id: string;
|
|
227
|
+
label: string;
|
|
228
|
+
description?: string;
|
|
229
|
+
status?: 'pending' | 'active' | 'completed' | 'error' | 'loading';
|
|
230
|
+
disabled?: boolean;
|
|
231
|
+
optional?: boolean;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// ─── Event Detail Interfaces ───
|
|
235
|
+
|
|
236
|
+
export interface InputDetail {
|
|
237
|
+
value: string;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
export interface SelectDetail {
|
|
241
|
+
value: string;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface CheckedDetail {
|
|
245
|
+
checked: boolean;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export interface SliderDetail {
|
|
249
|
+
value: number;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
export interface ToggleDetail {
|
|
253
|
+
pressed: string[];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
export interface AccordionDetail {
|
|
257
|
+
expanded: string[];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
export interface CollapsibleDetail {
|
|
261
|
+
open: boolean;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface MenuActionDetail {
|
|
265
|
+
id: string;
|
|
266
|
+
label?: string;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export interface MenuChangeDetail {
|
|
270
|
+
id: string;
|
|
271
|
+
checked?: boolean;
|
|
272
|
+
value?: string;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export interface SortDetail {
|
|
276
|
+
column_id: string;
|
|
277
|
+
direction: 'asc' | 'desc' | 'none';
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export interface TableSelectDetail {
|
|
281
|
+
selected: string[];
|
|
282
|
+
row_id?: string;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export interface TableExpandDetail {
|
|
286
|
+
row_id: string;
|
|
287
|
+
expanded: boolean;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export interface PageDetail {
|
|
291
|
+
page: number;
|
|
292
|
+
page_size?: number;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
export interface NavigateDetail {
|
|
296
|
+
href: string;
|
|
297
|
+
label: string;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
export interface ClickDetail {
|
|
301
|
+
x?: number;
|
|
302
|
+
y?: number;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
export interface FileChangeDetail {
|
|
306
|
+
files: FileInfo[];
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export interface FileInfo {
|
|
310
|
+
name: string;
|
|
311
|
+
size: number;
|
|
312
|
+
type: string;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface CloseDetail {
|
|
316
|
+
reason?: 'escape' | 'backdrop' | 'close-button';
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export interface DismissDetail {
|
|
320
|
+
reason?: 'user' | 'timeout';
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
export interface FocusDetail {
|
|
324
|
+
relatedTarget: EventTarget | null;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export interface KeyboardDetail {
|
|
328
|
+
key: string;
|
|
329
|
+
code: string;
|
|
330
|
+
shiftKey: boolean;
|
|
331
|
+
ctrlKey: boolean;
|
|
332
|
+
altKey: boolean;
|
|
333
|
+
metaKey: boolean;
|
|
334
|
+
}
|