@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,20 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type HeroAlign = "center" | "start";
6
+
7
+ interface Props {
8
+ align?: HeroAlign;
9
+ split?: boolean;
10
+ children?: Snippet;
11
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
12
+ [key: string]: unknown;
13
+ }
14
+
15
+ let { align = "center", split = false, children, ...rest }: Props = $props();
16
+ </script>
17
+
18
+ <xtyle-hero {...rest} align={align !== "center" ? align : undefined} split={split ? "" : undefined}>
19
+ {@render children?.()}
20
+ </xtyle-hero>
@@ -0,0 +1,13 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ type HeroAlign = "center" | "start";
4
+ interface Props {
5
+ align?: HeroAlign;
6
+ split?: boolean;
7
+ children?: Snippet;
8
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
9
+ [key: string]: unknown;
10
+ }
11
+ declare const Hero: import("svelte").Component<Props, {}, "">;
12
+ type Hero = ReturnType<typeof Hero>;
13
+ export default Hero;
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { FullTone, IconName, IconSize, SeriesScheme } from "@xtyle/core";
4
+
5
+ interface Props {
6
+ name: IconName | (string & {});
7
+ size?: IconSize;
8
+ tone?: FullTone;
9
+ /** The series scheme a generated mark's `c3+` color slots draw from. */
10
+ colors?: SeriesScheme;
11
+ label?: string;
12
+ spin?: boolean;
13
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
14
+ [key: string]: unknown;
15
+ }
16
+
17
+ let { name, size = "md", tone, colors, label, spin = false, ...rest }: Props = $props();
18
+ </script>
19
+
20
+ <xtyle-icon {...rest} {name} {size} {tone} {colors} {label} spin={spin ? "" : undefined}></xtyle-icon>
@@ -0,0 +1,16 @@
1
+ import "./register.js";
2
+ import type { FullTone, IconName, IconSize, SeriesScheme } from "@xtyle/core";
3
+ interface Props {
4
+ name: IconName | (string & {});
5
+ size?: IconSize;
6
+ tone?: FullTone;
7
+ /** The series scheme a generated mark's `c3+` color slots draw from. */
8
+ colors?: SeriesScheme;
9
+ label?: string;
10
+ spin?: boolean;
11
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
12
+ [key: string]: unknown;
13
+ }
14
+ declare const Icon: import("svelte").Component<Props, {}, "">;
15
+ type Icon = ReturnType<typeof Icon>;
16
+ export default Icon;
@@ -0,0 +1,44 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+
4
+ type ImageFit = "cover" | "contain";
5
+ type ImageRadius = "none" | "sm" | "md" | "lg";
6
+ type ImageLoading = "lazy" | "eager";
7
+
8
+ interface Props {
9
+ src?: string;
10
+ alt?: string;
11
+ ratio?: string;
12
+ fit?: ImageFit;
13
+ radius?: ImageRadius;
14
+ loading?: ImageLoading;
15
+ lightbox?: boolean;
16
+ caption?: string;
17
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
18
+ [key: string]: unknown;
19
+ }
20
+
21
+ let {
22
+ src,
23
+ alt = "",
24
+ ratio,
25
+ fit = "cover",
26
+ radius = "md",
27
+ loading = "lazy",
28
+ lightbox = false,
29
+ caption,
30
+ ...rest
31
+ }: Props = $props();
32
+ </script>
33
+
34
+ <xtyle-image
35
+ {...rest}
36
+ {src}
37
+ {alt}
38
+ {ratio}
39
+ {fit}
40
+ {radius}
41
+ {loading}
42
+ {caption}
43
+ lightbox={lightbox ? "" : undefined}
44
+ ></xtyle-image>
@@ -0,0 +1,19 @@
1
+ import "./register.js";
2
+ type ImageFit = "cover" | "contain";
3
+ type ImageRadius = "none" | "sm" | "md" | "lg";
4
+ type ImageLoading = "lazy" | "eager";
5
+ interface Props {
6
+ src?: string;
7
+ alt?: string;
8
+ ratio?: string;
9
+ fit?: ImageFit;
10
+ radius?: ImageRadius;
11
+ loading?: ImageLoading;
12
+ lightbox?: boolean;
13
+ caption?: string;
14
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
15
+ [key: string]: unknown;
16
+ }
17
+ declare const Image: import("svelte").Component<Props, {}, "">;
18
+ type Image = ReturnType<typeof Image>;
19
+ export default Image;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { FullTone as KbdTone } from "@xtyle/core";
5
+
6
+ type KbdSize = "sm" | "md" | "lg";
7
+
8
+ interface Props {
9
+ size?: KbdSize;
10
+ tone?: KbdTone;
11
+ children?: Snippet;
12
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
13
+ [key: string]: unknown;
14
+ }
15
+
16
+ let { size = "md", tone, children, ...rest }: Props = $props();
17
+ </script>
18
+
19
+ <xtyle-kbd {...rest} {size} {tone}>
20
+ {@render children?.()}
21
+ </xtyle-kbd>
@@ -0,0 +1,14 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { FullTone as KbdTone } from "@xtyle/core";
4
+ type KbdSize = "sm" | "md" | "lg";
5
+ interface Props {
6
+ size?: KbdSize;
7
+ tone?: KbdTone;
8
+ children?: Snippet;
9
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
10
+ [key: string]: unknown;
11
+ }
12
+ declare const Kbd: import("svelte").Component<Props, {}, "">;
13
+ type Kbd = ReturnType<typeof Kbd>;
14
+ export default Kbd;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type LinkVariant = "default" | "muted" | "quiet";
6
+
7
+ interface Props {
8
+ variant?: LinkVariant;
9
+ href?: string;
10
+ target?: string;
11
+ rel?: string;
12
+ externalIcon?: boolean;
13
+ ariaLabel?: string;
14
+ onclick?: (event: MouseEvent) => void;
15
+ children?: Snippet;
16
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
17
+ [key: string]: unknown;
18
+ }
19
+
20
+ let { variant = "default", href, target, rel, externalIcon, ariaLabel, onclick, children, ...rest }: Props = $props();
21
+ </script>
22
+
23
+ <xtyle-link
24
+ {...rest}
25
+ {variant}
26
+ {href}
27
+ {target}
28
+ {rel}
29
+ external-icon={externalIcon === undefined ? undefined : String(externalIcon)}
30
+ aria-label={ariaLabel ?? (rest["aria-label"] as string | undefined)}
31
+ {onclick}
32
+ >
33
+ {@render children?.()}
34
+ </xtyle-link>
@@ -0,0 +1,18 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ type LinkVariant = "default" | "muted" | "quiet";
4
+ interface Props {
5
+ variant?: LinkVariant;
6
+ href?: string;
7
+ target?: string;
8
+ rel?: string;
9
+ externalIcon?: boolean;
10
+ ariaLabel?: string;
11
+ onclick?: (event: MouseEvent) => void;
12
+ children?: Snippet;
13
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
14
+ [key: string]: unknown;
15
+ }
16
+ declare const Link: import("svelte").Component<Props, {}, "">;
17
+ type Link = ReturnType<typeof Link>;
18
+ export default Link;
@@ -0,0 +1,34 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { MenuItem } from "@xtyle/core/elements";
4
+
5
+ interface Props {
6
+ items?: MenuItem[];
7
+ label?: string;
8
+ open?: boolean;
9
+ onselect?: (event: Event) => void;
10
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
11
+ [key: string]: unknown;
12
+ }
13
+
14
+ let { items = [], label, open = false, onselect, ...rest }: Props = $props();
15
+
16
+ let el: (HTMLElement & { items?: MenuItem[]; open?: boolean }) | undefined = $state();
17
+
18
+ $effect(() => {
19
+ if (el) el.items = items;
20
+ });
21
+
22
+ $effect(() => {
23
+ const target = el;
24
+ if (!target) return;
25
+ // Defer to a microtask so an `open`-by-default menu doesn't fire the element's popover
26
+ // logic synchronously inside Svelte's mount-effect flush (which corrupts Svelte's
27
+ // reconciliation). Post-mount toggles settle a microtask later — imperceptible.
28
+ queueMicrotask(() => {
29
+ target.open = open;
30
+ });
31
+ });
32
+ </script>
33
+
34
+ <xtyle-menu {...rest} bind:this={el} {label} {onselect}></xtyle-menu>
@@ -0,0 +1,13 @@
1
+ import "./register.js";
2
+ import type { MenuItem } from "@xtyle/core/elements";
3
+ interface Props {
4
+ items?: MenuItem[];
5
+ label?: string;
6
+ open?: boolean;
7
+ onselect?: (event: Event) => void;
8
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
9
+ [key: string]: unknown;
10
+ }
11
+ declare const Menu: import("svelte").Component<Props, {}, "">;
12
+ type Menu = ReturnType<typeof Menu>;
13
+ export default Menu;
@@ -0,0 +1,76 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Size } from "@xtyle/core";
4
+
5
+ interface Props {
6
+ value?: number | string;
7
+ min?: number;
8
+ max?: number;
9
+ /** A positive number, or `"any"` for unstepped free-form entry (no snapping, no precision cap). */
10
+ step?: number | "any";
11
+ altStep?: number;
12
+ altDefault?: boolean;
13
+ modifier?: "shift" | "alt" | "ctrl" | "meta";
14
+ disabled?: boolean;
15
+ size?: Size;
16
+ label?: string;
17
+ labelledby?: string;
18
+ name?: string;
19
+ placeholder?: string;
20
+ oninput?: (event: Event) => void;
21
+ onchange?: (event: Event) => void;
22
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
23
+ [key: string]: unknown;
24
+ }
25
+
26
+ let {
27
+ value = $bindable(""),
28
+ min,
29
+ max,
30
+ step,
31
+ altStep,
32
+ altDefault = false,
33
+ modifier,
34
+ disabled = false,
35
+ size = "md",
36
+ label,
37
+ labelledby,
38
+ name,
39
+ placeholder,
40
+ oninput,
41
+ onchange,
42
+ ...rest
43
+ }: Props = $props();
44
+
45
+ function sync(event: Event) {
46
+ const host = event.currentTarget as HTMLElement & { value: string };
47
+ value = host.value;
48
+ }
49
+ function handleInput(event: Event) {
50
+ sync(event);
51
+ oninput?.(event);
52
+ }
53
+ function handleChange(event: Event) {
54
+ sync(event);
55
+ onchange?.(event);
56
+ }
57
+ </script>
58
+
59
+ <xtyle-number-input
60
+ {...rest}
61
+ value={value === "" ? undefined : String(value)}
62
+ min={min}
63
+ max={max}
64
+ step={step}
65
+ alt-step={altStep}
66
+ alt-default={altDefault || undefined}
67
+ {modifier}
68
+ disabled={disabled || undefined}
69
+ {size}
70
+ {label}
71
+ labelledby={labelledby || undefined}
72
+ {name}
73
+ {placeholder}
74
+ oninput={handleInput}
75
+ onchange={handleChange}
76
+ ></xtyle-number-input>
@@ -0,0 +1,25 @@
1
+ import "./register.js";
2
+ import type { Size } from "@xtyle/core";
3
+ interface Props {
4
+ value?: number | string;
5
+ min?: number;
6
+ max?: number;
7
+ /** A positive number, or `"any"` for unstepped free-form entry (no snapping, no precision cap). */
8
+ step?: number | "any";
9
+ altStep?: number;
10
+ altDefault?: boolean;
11
+ modifier?: "shift" | "alt" | "ctrl" | "meta";
12
+ disabled?: boolean;
13
+ size?: Size;
14
+ label?: string;
15
+ labelledby?: string;
16
+ name?: string;
17
+ placeholder?: string;
18
+ oninput?: (event: Event) => void;
19
+ onchange?: (event: Event) => void;
20
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
21
+ [key: string]: unknown;
22
+ }
23
+ declare const NumberInput: import("svelte").Component<Props, {}, "value">;
24
+ type NumberInput = ReturnType<typeof NumberInput>;
25
+ export default NumberInput;
@@ -0,0 +1,56 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { FullTone, Size } from "@xtyle/core";
4
+
5
+ type PageChange = CustomEvent<{ page: number }>;
6
+
7
+ interface Props {
8
+ page?: number;
9
+ total?: number;
10
+ siblings?: number;
11
+ boundaries?: number;
12
+ href?: string;
13
+ tone?: FullTone;
14
+ size?: Size;
15
+ label?: string;
16
+ /** Fired when a page or control is activated in button mode (no `href`). */
17
+ onpagechange?: (event: PageChange) => void;
18
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
19
+ [key: string]: unknown;
20
+ }
21
+
22
+ let {
23
+ page = 1,
24
+ total = 1,
25
+ siblings = 1,
26
+ boundaries = 1,
27
+ href,
28
+ tone = "accent",
29
+ size = "md",
30
+ label = "Pagination",
31
+ onpagechange,
32
+ ...rest
33
+ }: Props = $props();
34
+
35
+ let host: HTMLElement | undefined = $state();
36
+
37
+ $effect(() => {
38
+ if (!host || !onpagechange) return;
39
+ const handler = (event: Event) => onpagechange(event as PageChange);
40
+ host.addEventListener("page-change", handler);
41
+ return () => host?.removeEventListener("page-change", handler);
42
+ });
43
+ </script>
44
+
45
+ <xtyle-pagination
46
+ {...rest}
47
+ bind:this={host}
48
+ page={page}
49
+ total={total}
50
+ siblings={siblings}
51
+ boundaries={boundaries}
52
+ href={href}
53
+ tone={tone}
54
+ size={size}
55
+ label={label}
56
+ ></xtyle-pagination>
@@ -0,0 +1,22 @@
1
+ import "./register.js";
2
+ import type { FullTone, Size } from "@xtyle/core";
3
+ type PageChange = CustomEvent<{
4
+ page: number;
5
+ }>;
6
+ interface Props {
7
+ page?: number;
8
+ total?: number;
9
+ siblings?: number;
10
+ boundaries?: number;
11
+ href?: string;
12
+ tone?: FullTone;
13
+ size?: Size;
14
+ label?: string;
15
+ /** Fired when a page or control is activated in button mode (no `href`). */
16
+ onpagechange?: (event: PageChange) => void;
17
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
18
+ [key: string]: unknown;
19
+ }
20
+ declare const Pagination: import("svelte").Component<Props, {}, "">;
21
+ type Pagination = ReturnType<typeof Pagination>;
22
+ export default Pagination;
@@ -0,0 +1,52 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ type PanelVariant = "default" | "collapsible";
6
+
7
+ interface Props {
8
+ title?: string;
9
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
10
+ variant?: PanelVariant;
11
+ open?: boolean;
12
+ scroll?: boolean;
13
+ onToggle?: (open: boolean) => void;
14
+ actions?: Snippet;
15
+ footer?: Snippet;
16
+ children?: Snippet;
17
+ /** Any other attribute (`title` is taken; `id`, `data-*`, `aria-*`, …) passes through to the element. */
18
+ [key: string]: unknown;
19
+ }
20
+
21
+ let {
22
+ title,
23
+ level = 2,
24
+ variant = "default",
25
+ open = $bindable(false),
26
+ scroll = false,
27
+ onToggle,
28
+ actions,
29
+ footer,
30
+ children,
31
+ ...rest
32
+ }: Props = $props();
33
+
34
+ function handleToggle(event: Event) {
35
+ open = (event.currentTarget as HTMLElement).hasAttribute("open");
36
+ onToggle?.(open);
37
+ }
38
+ </script>
39
+
40
+ <xtyle-panel
41
+ {...rest}
42
+ {title}
43
+ level={level}
44
+ variant={variant}
45
+ open={open || undefined}
46
+ scroll={scroll || undefined}
47
+ ontoggle={handleToggle}
48
+ >
49
+ {#if actions}<span slot="actions">{@render actions()}</span>{/if}
50
+ {@render children?.()}
51
+ {#if footer}<span slot="footer">{@render footer()}</span>{/if}
52
+ </xtyle-panel>
@@ -0,0 +1,19 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ type PanelVariant = "default" | "collapsible";
4
+ interface Props {
5
+ title?: string;
6
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
7
+ variant?: PanelVariant;
8
+ open?: boolean;
9
+ scroll?: boolean;
10
+ onToggle?: (open: boolean) => void;
11
+ actions?: Snippet;
12
+ footer?: Snippet;
13
+ children?: Snippet;
14
+ /** Any other attribute (`title` is taken; `id`, `data-*`, `aria-*`, …) passes through to the element. */
15
+ [key: string]: unknown;
16
+ }
17
+ declare const Panel: import("svelte").Component<Props, {}, "open">;
18
+ type Panel = ReturnType<typeof Panel>;
19
+ export default Panel;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { Snippet } from "svelte";
4
+
5
+ interface Props {
6
+ minHeight?: string;
7
+ amplitude?: number;
8
+ mode?: "scroll" | "cursor";
9
+ children?: Snippet;
10
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
11
+ [key: string]: unknown;
12
+ }
13
+
14
+ let { minHeight, amplitude, mode, children, ...rest }: Props = $props();
15
+ </script>
16
+
17
+ <xtyle-parallax {...rest} min-height={minHeight} amplitude={amplitude} mode={mode}>
18
+ {@render children?.()}
19
+ </xtyle-parallax>
@@ -0,0 +1,13 @@
1
+ import "./register.js";
2
+ import type { Snippet } from "svelte";
3
+ interface Props {
4
+ minHeight?: string;
5
+ amplitude?: number;
6
+ mode?: "scroll" | "cursor";
7
+ children?: Snippet;
8
+ /** Any other attribute (`title`, `id`, `data-*`, `aria-*`, …) passes through to the element. */
9
+ [key: string]: unknown;
10
+ }
11
+ declare const Parallax: import("svelte").Component<Props, {}, "">;
12
+ type Parallax = ReturnType<typeof Parallax>;
13
+ export default Parallax;
@@ -0,0 +1,48 @@
1
+ <script lang="ts">
2
+ import "./register.js";
3
+ import type { PieDatum, PieScheme, PieVariant } from "@xtyle/core";
4
+
5
+ interface Props {
6
+ data?: PieDatum[];
7
+ scheme?: PieScheme;
8
+ reverse?: boolean;
9
+ variant?: PieVariant;
10
+ showValues?: boolean;
11
+ legend?: boolean;
12
+ size?: number;
13
+ label?: string;
14
+ /** Any other attribute (`title`, `id`, `style`, `data-*`, `aria-*`, …) passes through. */
15
+ [key: string]: unknown;
16
+ }
17
+
18
+ let {
19
+ data = [],
20
+ scheme = "skittles",
21
+ reverse = false,
22
+ variant = "pie",
23
+ showValues = false,
24
+ legend = true,
25
+ size = 200,
26
+ label,
27
+ ...rest
28
+ }: Props = $props();
29
+
30
+ let host: (HTMLElement & { data: PieDatum[]; scheme: PieScheme }) | undefined = $state();
31
+
32
+ $effect(() => {
33
+ if (!host) return;
34
+ host.data = data;
35
+ host.scheme = scheme;
36
+ });
37
+ </script>
38
+
39
+ <xtyle-pie
40
+ bind:this={host}
41
+ {...rest}
42
+ {variant}
43
+ reverse={reverse || undefined}
44
+ show-values={showValues || undefined}
45
+ legend={legend ? undefined : "false"}
46
+ {size}
47
+ {label}
48
+ ></xtyle-pie>
@@ -0,0 +1,17 @@
1
+ import "./register.js";
2
+ import type { PieDatum, PieScheme, PieVariant } from "@xtyle/core";
3
+ interface Props {
4
+ data?: PieDatum[];
5
+ scheme?: PieScheme;
6
+ reverse?: boolean;
7
+ variant?: PieVariant;
8
+ showValues?: boolean;
9
+ legend?: boolean;
10
+ size?: number;
11
+ label?: string;
12
+ /** Any other attribute (`title`, `id`, `style`, `data-*`, `aria-*`, …) passes through. */
13
+ [key: string]: unknown;
14
+ }
15
+ declare const Pie: import("svelte").Component<Props, {}, "">;
16
+ type Pie = ReturnType<typeof Pie>;
17
+ export default Pie;