@xtyle/svelte 0.5.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 (135) hide show
  1. package/README.md +42 -0
  2. package/dist/Accordion.svelte +50 -0
  3. package/dist/Accordion.svelte.d.ts +22 -0
  4. package/dist/Alert.svelte +55 -0
  5. package/dist/Alert.svelte.d.ts +25 -0
  6. package/dist/AppShell.svelte +69 -0
  7. package/dist/AppShell.svelte.d.ts +27 -0
  8. package/dist/Avatar.svelte +53 -0
  9. package/dist/Avatar.svelte.d.ts +23 -0
  10. package/dist/AvatarGroup.svelte +31 -0
  11. package/dist/AvatarGroup.svelte.d.ts +18 -0
  12. package/dist/Badge.svelte +56 -0
  13. package/dist/Badge.svelte.d.ts +21 -0
  14. package/dist/Bar.svelte +69 -0
  15. package/dist/Bar.svelte.d.ts +30 -0
  16. package/dist/Breadcrumb.svelte +33 -0
  17. package/dist/Breadcrumb.svelte.d.ts +27 -0
  18. package/dist/Button.svelte +74 -0
  19. package/dist/Button.svelte.d.ts +28 -0
  20. package/dist/Card.svelte +26 -0
  21. package/dist/Card.svelte.d.ts +18 -0
  22. package/dist/CardLink.svelte +45 -0
  23. package/dist/CardLink.svelte.d.ts +18 -0
  24. package/dist/Carousel.svelte +39 -0
  25. package/dist/Carousel.svelte.d.ts +16 -0
  26. package/dist/Checkbox.svelte +59 -0
  27. package/dist/Checkbox.svelte.d.ts +21 -0
  28. package/dist/CheckboxGroup.svelte +47 -0
  29. package/dist/CheckboxGroup.svelte.d.ts +20 -0
  30. package/dist/Cluster.svelte +24 -0
  31. package/dist/Cluster.svelte.d.ts +17 -0
  32. package/dist/Code.svelte +29 -0
  33. package/dist/Code.svelte.d.ts +23 -0
  34. package/dist/ColorPicker.svelte +82 -0
  35. package/dist/ColorPicker.svelte.d.ts +26 -0
  36. package/dist/Dialog.svelte +60 -0
  37. package/dist/Dialog.svelte.d.ts +22 -0
  38. package/dist/Dock.svelte +57 -0
  39. package/dist/Dock.svelte.d.ts +23 -0
  40. package/dist/DockZone.svelte +74 -0
  41. package/dist/DockZone.svelte.d.ts +33 -0
  42. package/dist/Eyebrow.svelte +24 -0
  43. package/dist/Eyebrow.svelte.d.ts +17 -0
  44. package/dist/Field.svelte +92 -0
  45. package/dist/Field.svelte.d.ts +34 -0
  46. package/dist/FormGroup.svelte +43 -0
  47. package/dist/FormGroup.svelte.d.ts +18 -0
  48. package/dist/Grid.svelte +24 -0
  49. package/dist/Grid.svelte.d.ts +17 -0
  50. package/dist/Heading.svelte +20 -0
  51. package/dist/Heading.svelte.d.ts +14 -0
  52. package/dist/Heatmap.svelte +100 -0
  53. package/dist/Heatmap.svelte.d.ts +41 -0
  54. package/dist/Hero.svelte +20 -0
  55. package/dist/Hero.svelte.d.ts +13 -0
  56. package/dist/Icon.svelte +20 -0
  57. package/dist/Icon.svelte.d.ts +16 -0
  58. package/dist/Image.svelte +44 -0
  59. package/dist/Image.svelte.d.ts +19 -0
  60. package/dist/Kbd.svelte +21 -0
  61. package/dist/Kbd.svelte.d.ts +14 -0
  62. package/dist/Link.svelte +34 -0
  63. package/dist/Link.svelte.d.ts +18 -0
  64. package/dist/Menu.svelte +34 -0
  65. package/dist/Menu.svelte.d.ts +13 -0
  66. package/dist/NumberInput.svelte +76 -0
  67. package/dist/NumberInput.svelte.d.ts +25 -0
  68. package/dist/Pagination.svelte +56 -0
  69. package/dist/Pagination.svelte.d.ts +22 -0
  70. package/dist/Panel.svelte +52 -0
  71. package/dist/Panel.svelte.d.ts +19 -0
  72. package/dist/Parallax.svelte +19 -0
  73. package/dist/Parallax.svelte.d.ts +13 -0
  74. package/dist/Pie.svelte +48 -0
  75. package/dist/Pie.svelte.d.ts +17 -0
  76. package/dist/Progress.svelte +68 -0
  77. package/dist/Progress.svelte.d.ts +30 -0
  78. package/dist/Radio.svelte +72 -0
  79. package/dist/Radio.svelte.d.ts +24 -0
  80. package/dist/RadioGroup.svelte +39 -0
  81. package/dist/RadioGroup.svelte.d.ts +16 -0
  82. package/dist/Section.svelte +37 -0
  83. package/dist/Section.svelte.d.ts +21 -0
  84. package/dist/Segment.svelte +23 -0
  85. package/dist/Segment.svelte.d.ts +14 -0
  86. package/dist/Segmented.svelte +64 -0
  87. package/dist/Segmented.svelte.d.ts +28 -0
  88. package/dist/Select.svelte +57 -0
  89. package/dist/Select.svelte.d.ts +21 -0
  90. package/dist/Separator.svelte +23 -0
  91. package/dist/Separator.svelte.d.ts +16 -0
  92. package/dist/Skeleton.svelte +19 -0
  93. package/dist/Skeleton.svelte.d.ts +14 -0
  94. package/dist/Slider.svelte +82 -0
  95. package/dist/Slider.svelte.d.ts +24 -0
  96. package/dist/Sparkline.svelte +62 -0
  97. package/dist/Sparkline.svelte.d.ts +25 -0
  98. package/dist/Spinner.svelte +16 -0
  99. package/dist/Spinner.svelte.d.ts +12 -0
  100. package/dist/Splitter.svelte +85 -0
  101. package/dist/Splitter.svelte.d.ts +30 -0
  102. package/dist/Stack.svelte +23 -0
  103. package/dist/Stack.svelte.d.ts +16 -0
  104. package/dist/Stat.svelte +41 -0
  105. package/dist/Stat.svelte.d.ts +23 -0
  106. package/dist/Statusbar.svelte +50 -0
  107. package/dist/Statusbar.svelte.d.ts +20 -0
  108. package/dist/Swatch.svelte +48 -0
  109. package/dist/Swatch.svelte.d.ts +22 -0
  110. package/dist/Switch.svelte +69 -0
  111. package/dist/Switch.svelte.d.ts +24 -0
  112. package/dist/Table.svelte +39 -0
  113. package/dist/Table.svelte.d.ts +17 -0
  114. package/dist/Tabs.svelte +84 -0
  115. package/dist/Tabs.svelte.d.ts +28 -0
  116. package/dist/Text.svelte +38 -0
  117. package/dist/Text.svelte.d.ts +22 -0
  118. package/dist/Textarea.svelte +74 -0
  119. package/dist/Textarea.svelte.d.ts +25 -0
  120. package/dist/Toast.svelte +55 -0
  121. package/dist/Toast.svelte.d.ts +25 -0
  122. package/dist/Toc.svelte +22 -0
  123. package/dist/Toc.svelte.d.ts +15 -0
  124. package/dist/Toolbar.svelte +49 -0
  125. package/dist/Toolbar.svelte.d.ts +20 -0
  126. package/dist/Tooltip.svelte +28 -0
  127. package/dist/Tooltip.svelte.d.ts +19 -0
  128. package/dist/Tree.svelte +51 -0
  129. package/dist/Tree.svelte.d.ts +24 -0
  130. package/dist/elements.d.ts +65 -0
  131. package/dist/index.d.ts +65 -0
  132. package/dist/index.js +65 -0
  133. package/dist/register.d.ts +2 -0
  134. package/dist/register.js +2 -0
  135. package/package.json +41 -0
@@ -0,0 +1,74 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { ButtonVariant, ButtonAlign, Size, FullTone } from "@xtyle/core";
5
+
6
+ type ButtonSize = Size | "xs";
7
+
8
+ interface Props {
9
+ variant?: ButtonVariant;
10
+ tone?: FullTone;
11
+ size?: ButtonSize;
12
+ align?: ButtonAlign;
13
+ type?: "button" | "submit" | "reset";
14
+ href?: string;
15
+ disabled?: boolean;
16
+ loading?: boolean;
17
+ block?: boolean;
18
+ iconOnly?: boolean;
19
+ pressed?: boolean;
20
+ selected?: boolean;
21
+ ariaLabel?: string;
22
+ onclick?: (event: MouseEvent) => void;
23
+ iconStart?: Snippet;
24
+ iconEnd?: Snippet;
25
+ children?: Snippet;
26
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
27
+ [key: string]: unknown;
28
+ }
29
+
30
+ let {
31
+ variant = "solid",
32
+ tone = "accent",
33
+ size = "md",
34
+ align = "center",
35
+ type = "button",
36
+ href,
37
+ disabled = false,
38
+ loading = false,
39
+ block = false,
40
+ iconOnly = false,
41
+ pressed,
42
+ selected,
43
+ ariaLabel,
44
+ onclick,
45
+ iconStart,
46
+ iconEnd,
47
+ children,
48
+ ...rest
49
+ }: Props = $props();
50
+
51
+ const blocked = $derived(disabled || loading);
52
+ </script>
53
+
54
+ <xtyle-button
55
+ {...rest}
56
+ {variant}
57
+ {tone}
58
+ {size}
59
+ {align}
60
+ {type}
61
+ href={href && !blocked ? href : undefined}
62
+ disabled={disabled || undefined}
63
+ loading={loading || undefined}
64
+ block={block || undefined}
65
+ icon-only={iconOnly || undefined}
66
+ pressed={pressed === undefined ? undefined : String(pressed)}
67
+ selected={selected === undefined ? undefined : String(selected)}
68
+ aria-label={ariaLabel ?? (rest["aria-label"] as string | undefined)}
69
+ {onclick}
70
+ >
71
+ {#if iconStart}<span slot="icon-start">{@render iconStart()}</span>{/if}
72
+ {@render children?.()}
73
+ {#if iconEnd}<span slot="icon-end">{@render iconEnd()}</span>{/if}
74
+ </xtyle-button>
@@ -0,0 +1,28 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { ButtonVariant, ButtonAlign, Size, FullTone } from "@xtyle/core";
4
+ type ButtonSize = Size | "xs";
5
+ interface Props {
6
+ variant?: ButtonVariant;
7
+ tone?: FullTone;
8
+ size?: ButtonSize;
9
+ align?: ButtonAlign;
10
+ type?: "button" | "submit" | "reset";
11
+ href?: string;
12
+ disabled?: boolean;
13
+ loading?: boolean;
14
+ block?: boolean;
15
+ iconOnly?: boolean;
16
+ pressed?: boolean;
17
+ selected?: boolean;
18
+ ariaLabel?: string;
19
+ onclick?: (event: MouseEvent) => void;
20
+ iconStart?: Snippet;
21
+ iconEnd?: Snippet;
22
+ children?: Snippet;
23
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
24
+ [key: string]: unknown;
25
+ }
26
+ declare const Button: import("svelte").Component<Props, {}, "">;
27
+ type Button = ReturnType<typeof Button>;
28
+ export default Button;
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { FullTone as Tone } from "@xtyle/core";
5
+
6
+ interface Props {
7
+ overlay?: boolean;
8
+ interactive?: boolean;
9
+ action?: boolean;
10
+ compact?: boolean;
11
+ tone?: Tone;
12
+ header?: Snippet;
13
+ footer?: Snippet;
14
+ children?: Snippet;
15
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
16
+ [key: string]: unknown;
17
+ }
18
+
19
+ let { overlay = false, interactive = false, action = false, compact = false, tone, header, footer, children, ...rest }: Props = $props();
20
+ </script>
21
+
22
+ <xtyle-card {...rest} overlay={overlay || undefined} interactive={interactive || undefined} action={action || undefined} compact={compact || undefined} {tone}>
23
+ {#if header}<span slot="header">{@render header()}</span>{/if}
24
+ {@render children?.()}
25
+ {#if footer}<span slot="footer">{@render footer()}</span>{/if}
26
+ </xtyle-card>
@@ -0,0 +1,18 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { FullTone as Tone } from "@xtyle/core";
4
+ interface Props {
5
+ overlay?: boolean;
6
+ interactive?: boolean;
7
+ action?: boolean;
8
+ compact?: boolean;
9
+ tone?: Tone;
10
+ header?: Snippet;
11
+ footer?: Snippet;
12
+ children?: Snippet;
13
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
14
+ [key: string]: unknown;
15
+ }
16
+ declare const Card: import("svelte").Component<Props, {}, "">;
17
+ type Card = ReturnType<typeof Card>;
18
+ export default Card;
@@ -0,0 +1,45 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ interface Props {
6
+ href?: string;
7
+ target?: string;
8
+ rel?: string;
9
+ interactive?: boolean;
10
+ overlay?: boolean;
11
+ compact?: boolean;
12
+ header?: Snippet;
13
+ footer?: Snippet;
14
+ children?: Snippet;
15
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
16
+ [key: string]: unknown;
17
+ }
18
+
19
+ let {
20
+ href,
21
+ target,
22
+ rel,
23
+ interactive = true,
24
+ overlay = false,
25
+ compact = false,
26
+ header,
27
+ footer,
28
+ children,
29
+ ...rest
30
+ }: Props = $props();
31
+ </script>
32
+
33
+ <xtyle-card-link
34
+ {...rest}
35
+ {href}
36
+ {target}
37
+ {rel}
38
+ interactive={interactive ? "true" : "false"}
39
+ overlay={overlay || undefined}
40
+ compact={compact || undefined}
41
+ >
42
+ {#if header}<span slot="header">{@render header()}</span>{/if}
43
+ {@render children?.()}
44
+ {#if footer}<span slot="footer">{@render footer()}</span>{/if}
45
+ </xtyle-card-link>
@@ -0,0 +1,18 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ interface Props {
4
+ href?: string;
5
+ target?: string;
6
+ rel?: string;
7
+ interactive?: boolean;
8
+ overlay?: boolean;
9
+ compact?: boolean;
10
+ header?: Snippet;
11
+ footer?: Snippet;
12
+ children?: Snippet;
13
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
14
+ [key: string]: unknown;
15
+ }
16
+ declare const CardLink: import("svelte").Component<Props, {}, "">;
17
+ type CardLink = ReturnType<typeof CardLink>;
18
+ export default CardLink;
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ interface Props {
6
+ label?: string;
7
+ autoplay?: boolean;
8
+ interval?: number;
9
+ loop?: boolean;
10
+ controls?: boolean;
11
+ dots?: boolean;
12
+ children?: Snippet;
13
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
14
+ [key: string]: unknown;
15
+ }
16
+
17
+ let {
18
+ label,
19
+ autoplay = false,
20
+ interval,
21
+ loop = false,
22
+ controls = true,
23
+ dots = true,
24
+ children,
25
+ ...rest
26
+ }: Props = $props();
27
+ </script>
28
+
29
+ <xtyle-carousel
30
+ {...rest}
31
+ {label}
32
+ {interval}
33
+ autoplay={autoplay ? "" : undefined}
34
+ loop={loop ? "" : undefined}
35
+ controls={controls ? undefined : "false"}
36
+ dots={dots ? undefined : "false"}
37
+ >
38
+ {@render children?.()}
39
+ </xtyle-carousel>
@@ -0,0 +1,16 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ interface Props {
4
+ label?: string;
5
+ autoplay?: boolean;
6
+ interval?: number;
7
+ loop?: boolean;
8
+ controls?: boolean;
9
+ dots?: boolean;
10
+ children?: Snippet;
11
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
12
+ [key: string]: unknown;
13
+ }
14
+ declare const Carousel: import("svelte").Component<Props, {}, "">;
15
+ type Carousel = ReturnType<typeof Carousel>;
16
+ export default Carousel;
@@ -0,0 +1,59 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { Size, FullTone as Tone } from "@xtyle/core";
5
+
6
+ interface Props {
7
+ checked?: boolean;
8
+ indeterminate?: boolean;
9
+ disabled?: boolean;
10
+ size?: Size;
11
+ tone?: Tone;
12
+ name?: string;
13
+ value?: string;
14
+ label?: string;
15
+ labelledby?: string;
16
+ onchange?: (event: Event) => void;
17
+ children?: Snippet;
18
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
19
+ [key: string]: unknown;
20
+ }
21
+
22
+ let {
23
+ checked = $bindable(false),
24
+ indeterminate = $bindable(false),
25
+ disabled = false,
26
+ size = "md",
27
+ tone = "accent",
28
+ name,
29
+ value,
30
+ label,
31
+ labelledby,
32
+ onchange,
33
+ children,
34
+ ...rest
35
+ }: Props = $props();
36
+
37
+ function handleChange(event: Event) {
38
+ const target = event.target as HTMLElement & { checked: boolean; indeterminate: boolean };
39
+ checked = target.checked;
40
+ indeterminate = target.indeterminate;
41
+ onchange?.(event);
42
+ }
43
+ </script>
44
+
45
+ <xtyle-checkbox
46
+ {...rest}
47
+ checked={checked || undefined}
48
+ indeterminate={indeterminate || undefined}
49
+ disabled={disabled || undefined}
50
+ {size}
51
+ {tone}
52
+ {name}
53
+ {value}
54
+ {label}
55
+ labelledby={labelledby || undefined}
56
+ onchange={handleChange}
57
+ >
58
+ {@render children?.()}
59
+ </xtyle-checkbox>
@@ -0,0 +1,21 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { Size, FullTone as Tone } from "@xtyle/core";
4
+ interface Props {
5
+ checked?: boolean;
6
+ indeterminate?: boolean;
7
+ disabled?: boolean;
8
+ size?: Size;
9
+ tone?: Tone;
10
+ name?: string;
11
+ value?: string;
12
+ label?: string;
13
+ labelledby?: string;
14
+ onchange?: (event: Event) => void;
15
+ children?: Snippet;
16
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
17
+ [key: string]: unknown;
18
+ }
19
+ declare const Checkbox: import("svelte").Component<Props, {}, "checked" | "indeterminate">;
20
+ type Checkbox = ReturnType<typeof Checkbox>;
21
+ export default Checkbox;
@@ -0,0 +1,47 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { FullTone as Tone, Size } from "@xtyle/core";
5
+
6
+ interface Props {
7
+ label?: string;
8
+ labelledby?: string;
9
+ tone?: Tone;
10
+ size?: Size;
11
+ disabled?: boolean;
12
+ /** Keep the heading checkbox but stop the automatic all/some/none roll-up — you drive its state. */
13
+ manual?: boolean;
14
+ ariaLabel?: string;
15
+ onchange?: (event: Event) => void;
16
+ children?: Snippet;
17
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
18
+ [key: string]: unknown;
19
+ }
20
+
21
+ let {
22
+ label,
23
+ labelledby,
24
+ tone = "accent",
25
+ size = "md",
26
+ disabled = false,
27
+ manual = false,
28
+ ariaLabel,
29
+ onchange,
30
+ children,
31
+ ...rest
32
+ }: Props = $props();
33
+ </script>
34
+
35
+ <xtyle-checkbox-group
36
+ {...rest}
37
+ {label}
38
+ labelledby={labelledby || undefined}
39
+ {tone}
40
+ {size}
41
+ disabled={disabled || undefined}
42
+ manual={manual || undefined}
43
+ aria-label={ariaLabel ?? (rest["aria-label"] as string | undefined)}
44
+ {onchange}
45
+ >
46
+ {@render children?.()}
47
+ </xtyle-checkbox-group>
@@ -0,0 +1,20 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { FullTone as Tone, Size } from "@xtyle/core";
4
+ interface Props {
5
+ label?: string;
6
+ labelledby?: string;
7
+ tone?: Tone;
8
+ size?: Size;
9
+ disabled?: boolean;
10
+ /** Keep the heading checkbox but stop the automatic all/some/none roll-up — you drive its state. */
11
+ manual?: boolean;
12
+ ariaLabel?: string;
13
+ onchange?: (event: Event) => void;
14
+ children?: Snippet;
15
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
16
+ [key: string]: unknown;
17
+ }
18
+ declare const CheckboxGroup: import("svelte").Component<Props, {}, "">;
19
+ type CheckboxGroup = ReturnType<typeof CheckboxGroup>;
20
+ export default CheckboxGroup;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type ClusterAlign = "start" | "center" | "end" | "stretch" | "baseline";
6
+ type ClusterJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
7
+
8
+ interface Props {
9
+ gap?: number;
10
+ align?: ClusterAlign;
11
+ justify?: ClusterJustify;
12
+ nowrap?: boolean;
13
+ inline?: boolean;
14
+ children?: Snippet;
15
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
16
+ [key: string]: unknown;
17
+ }
18
+
19
+ let { gap = 2, align, justify, nowrap = false, inline = false, children, ...rest }: Props = $props();
20
+ </script>
21
+
22
+ <xtyle-cluster {...rest} {gap} {align} {justify} nowrap={nowrap || undefined} inline={inline || undefined}>
23
+ {@render children?.()}
24
+ </xtyle-cluster>
@@ -0,0 +1,17 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ type ClusterAlign = "start" | "center" | "end" | "stretch" | "baseline";
4
+ type ClusterJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
5
+ interface Props {
6
+ gap?: number;
7
+ align?: ClusterAlign;
8
+ justify?: ClusterJustify;
9
+ nowrap?: boolean;
10
+ inline?: boolean;
11
+ children?: Snippet;
12
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
13
+ [key: string]: unknown;
14
+ }
15
+ declare const Cluster: import("svelte").Component<Props, {}, "">;
16
+ type Cluster = ReturnType<typeof Cluster>;
17
+ export default Cluster;
@@ -0,0 +1,29 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ interface Props {
6
+ lang?: string;
7
+ code?: string;
8
+ preload?: boolean;
9
+ /** The copy-to-clipboard button; on by default, set `false` to drop it. */
10
+ copy?: boolean;
11
+ /** Soft-wrap long lines instead of scrolling them horizontally. */
12
+ wrap?: boolean;
13
+ /** Number each line in a counter gutter. */
14
+ lineNumbers?: boolean;
15
+ /** Tint chosen lines; a 1-based spec like `2`, `2,4`, or `4-6`. */
16
+ highlight?: string;
17
+ /** A caption header above the block, e.g. a filename. */
18
+ caption?: string;
19
+ children?: Snippet;
20
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
21
+ [key: string]: unknown;
22
+ }
23
+
24
+ let { lang, code, preload = false, copy = true, wrap = false, lineNumbers = false, highlight, caption, children, ...rest }: Props = $props();
25
+ </script>
26
+
27
+ <xtyle-code {...rest} {lang} {code} {preload} copy={copy ? undefined : "false"} wrap={wrap || undefined} line-numbers={lineNumbers || undefined} highlight={highlight || undefined} caption={caption || undefined}>
28
+ {@render children?.()}
29
+ </xtyle-code>
@@ -0,0 +1,23 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ interface Props {
4
+ lang?: string;
5
+ code?: string;
6
+ preload?: boolean;
7
+ /** The copy-to-clipboard button; on by default, set `false` to drop it. */
8
+ copy?: boolean;
9
+ /** Soft-wrap long lines instead of scrolling them horizontally. */
10
+ wrap?: boolean;
11
+ /** Number each line in a counter gutter. */
12
+ lineNumbers?: boolean;
13
+ /** Tint chosen lines; a 1-based spec like `2`, `2,4`, or `4-6`. */
14
+ highlight?: string;
15
+ /** A caption header above the block, e.g. a filename. */
16
+ caption?: string;
17
+ children?: Snippet;
18
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
19
+ [key: string]: unknown;
20
+ }
21
+ declare const Code: import("svelte").Component<Props, {}, "">;
22
+ type Code = ReturnType<typeof Code>;
23
+ export default Code;
@@ -0,0 +1,82 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+
4
+ type ColorFormat = "hex" | "rgb" | "hsl" | "oklch" | "lab" | "lch" | "oklab" | "cmyk";
5
+
6
+ interface Props {
7
+ value?: string;
8
+ format?: ColorFormat;
9
+ modes?: string;
10
+ channels?: string;
11
+ snap?: string;
12
+ plane?: boolean;
13
+ trigger?: boolean;
14
+ swatches?: string;
15
+ harmony?: string;
16
+ contrastAgainst?: string;
17
+ alpha?: boolean;
18
+ disabled?: boolean;
19
+ label?: string;
20
+ labelledby?: string;
21
+ name?: string;
22
+ oninput?: (event: Event) => void;
23
+ onchange?: (event: Event) => void;
24
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
25
+ [key: string]: unknown;
26
+ }
27
+
28
+ let {
29
+ value = $bindable("#5b8cff"),
30
+ format,
31
+ modes,
32
+ channels,
33
+ snap,
34
+ plane = false,
35
+ trigger = false,
36
+ swatches,
37
+ harmony,
38
+ contrastAgainst,
39
+ alpha = false,
40
+ disabled = false,
41
+ label,
42
+ labelledby,
43
+ name,
44
+ oninput,
45
+ onchange,
46
+ ...rest
47
+ }: Props = $props();
48
+
49
+ function sync(event: Event) {
50
+ const host = event.currentTarget as HTMLElement & { value: string };
51
+ value = host.value;
52
+ }
53
+ function handleInput(event: Event) {
54
+ sync(event);
55
+ oninput?.(event);
56
+ }
57
+ function handleChange(event: Event) {
58
+ sync(event);
59
+ onchange?.(event);
60
+ }
61
+ </script>
62
+
63
+ <xtyle-color-picker
64
+ {...rest}
65
+ {value}
66
+ format={format || undefined}
67
+ modes={modes || undefined}
68
+ channels={channels || undefined}
69
+ snap={snap || undefined}
70
+ plane={plane || undefined}
71
+ trigger={trigger || undefined}
72
+ swatches={swatches || undefined}
73
+ harmony={harmony || undefined}
74
+ contrast-against={contrastAgainst || undefined}
75
+ alpha={alpha || undefined}
76
+ disabled={disabled || undefined}
77
+ {label}
78
+ labelledby={labelledby || undefined}
79
+ {name}
80
+ oninput={handleInput}
81
+ onchange={handleChange}
82
+ ></xtyle-color-picker>
@@ -0,0 +1,26 @@
1
+ import "./register.js";
2
+ type ColorFormat = "hex" | "rgb" | "hsl" | "oklch" | "lab" | "lch" | "oklab" | "cmyk";
3
+ interface Props {
4
+ value?: string;
5
+ format?: ColorFormat;
6
+ modes?: string;
7
+ channels?: string;
8
+ snap?: string;
9
+ plane?: boolean;
10
+ trigger?: boolean;
11
+ swatches?: string;
12
+ harmony?: string;
13
+ contrastAgainst?: string;
14
+ alpha?: boolean;
15
+ disabled?: boolean;
16
+ label?: string;
17
+ labelledby?: string;
18
+ name?: string;
19
+ oninput?: (event: Event) => void;
20
+ onchange?: (event: Event) => void;
21
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
22
+ [key: string]: unknown;
23
+ }
24
+ declare const ColorPicker: import("svelte").Component<Props, {}, "value">;
25
+ type ColorPicker = ReturnType<typeof ColorPicker>;
26
+ export default ColorPicker;
@@ -0,0 +1,60 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { Size } from "@xtyle/core";
5
+
6
+ interface Props {
7
+ open?: boolean;
8
+ size?: Size;
9
+ heading?: string;
10
+ label?: string;
11
+ labelledby?: string;
12
+ closeLabel?: string;
13
+ noCloseButton?: boolean;
14
+ onclose?: (event: Event) => void;
15
+ oncancel?: (event: Event) => void;
16
+ header?: Snippet;
17
+ footer?: Snippet;
18
+ children?: Snippet;
19
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
20
+ [key: string]: unknown;
21
+ }
22
+
23
+ let {
24
+ open = $bindable(false),
25
+ size = "md",
26
+ heading,
27
+ label,
28
+ labelledby,
29
+ closeLabel,
30
+ noCloseButton = false,
31
+ onclose,
32
+ oncancel,
33
+ header,
34
+ footer,
35
+ children,
36
+ ...rest
37
+ }: Props = $props();
38
+
39
+ function handleClose(event: Event) {
40
+ open = false;
41
+ onclose?.(event);
42
+ }
43
+ </script>
44
+
45
+ <xtyle-dialog
46
+ {...rest}
47
+ open={open || undefined}
48
+ {size}
49
+ {heading}
50
+ label={label || undefined}
51
+ labelledby={labelledby || undefined}
52
+ close-label={closeLabel}
53
+ no-close-button={noCloseButton || undefined}
54
+ onclose={handleClose}
55
+ {oncancel}
56
+ >
57
+ {#if header}<span slot="header">{@render header()}</span>{/if}
58
+ {@render children?.()}
59
+ {#if footer}<span slot="footer">{@render footer()}</span>{/if}
60
+ </xtyle-dialog>