@skeletonlabs/skeleton-svelte 1.0.0-next.1 → 1.0.0-next.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 (38) hide show
  1. package/dist/components/Accordion/Accordion.svelte.d.ts +16 -14
  2. package/dist/components/Accordion/AccordionItem.svelte.d.ts +16 -14
  3. package/dist/components/AppBar/AppBar.svelte.d.ts +16 -14
  4. package/dist/components/Avatar/Avatar.svelte.d.ts +16 -14
  5. package/dist/components/Navigation/NavBar.svelte +29 -0
  6. package/dist/components/Navigation/NavBar.svelte.d.ts +17 -0
  7. package/dist/components/Navigation/NavRail.svelte +62 -0
  8. package/dist/components/Navigation/NavRail.svelte.d.ts +17 -0
  9. package/dist/components/Navigation/NavTile.svelte +76 -0
  10. package/dist/components/Navigation/NavTile.svelte.d.ts +17 -0
  11. package/dist/components/Navigation/types.d.ts +121 -0
  12. package/dist/components/Navigation/types.js +1 -0
  13. package/dist/components/Progress/Progress.svelte +2 -2
  14. package/dist/components/Progress/Progress.svelte.d.ts +16 -14
  15. package/dist/components/Progress/types.d.ts +2 -2
  16. package/dist/components/ProgressRing/ProgressRing.svelte +101 -0
  17. package/dist/components/ProgressRing/ProgressRing.svelte.d.ts +17 -0
  18. package/dist/components/ProgressRing/types.d.ts +57 -0
  19. package/dist/components/ProgressRing/types.js +1 -0
  20. package/dist/components/Rating/Rating.svelte +102 -0
  21. package/dist/components/Rating/Rating.svelte.d.ts +17 -0
  22. package/dist/components/Rating/types.d.ts +57 -0
  23. package/dist/components/Rating/types.js +1 -0
  24. package/dist/components/Switch/Switch.svelte +83 -0
  25. package/dist/components/Switch/Switch.svelte.d.ts +17 -0
  26. package/dist/components/Switch/types.d.ts +65 -0
  27. package/dist/components/Switch/types.js +1 -0
  28. package/dist/components/Tab/Tabs.svelte +1 -1
  29. package/dist/components/Tab/Tabs.svelte.d.ts +16 -14
  30. package/dist/components/Tab/TabsControl.svelte +1 -1
  31. package/dist/components/Tab/TabsControl.svelte.d.ts +16 -14
  32. package/dist/components/Tab/TabsPanel.svelte.d.ts +16 -14
  33. package/dist/index.d.ts +8 -3
  34. package/dist/index.js +8 -3
  35. package/package.json +5 -4
  36. package/dist/components/Tab/index.d.ts +0 -8
  37. package/dist/components/Test/Test.svelte +0 -7
  38. package/dist/components/Test/Test.svelte.d.ts +0 -14
@@ -1,18 +1,20 @@
1
- import { SvelteComponent } from "svelte";
1
+ /// <reference types="svelte" />
2
2
  export declare const getAccordionCtx: () => AccordionContext;
3
3
  export declare const setAccordionCtx: (ctx: AccordionContext) => AccordionContext;
4
4
  import type { AccordionContext, AccordionProps } from './types.js';
5
- declare const __propDef: {
6
- props: AccordionProps;
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- type AccordionProps_ = typeof __propDef.props;
13
- export { AccordionProps_ as AccordionProps };
14
- export type AccordionEvents = typeof __propDef.events;
15
- export type AccordionSlots = typeof __propDef.slots;
16
- /** An Accordion parent component. */
17
- export default class Accordion extends SvelteComponent<AccordionProps_, AccordionEvents, AccordionSlots> {
5
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
6
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
7
+ $$bindings?: Bindings;
8
+ } & Exports;
9
+ (internal: unknown, props: Props & {
10
+ $$events?: Events;
11
+ $$slots?: Slots;
12
+ }): Exports;
13
+ z_$$bindings?: Bindings;
18
14
  }
15
+ /** An Accordion parent component. */
16
+ declare const Accordion: $$__sveltets_2_IsomorphicComponent<AccordionProps, {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {}, Record<string, any>, "value">;
19
+ type Accordion = InstanceType<typeof Accordion>;
20
+ export default Accordion;
@@ -1,16 +1,18 @@
1
- import { SvelteComponent } from "svelte";
1
+ /// <reference types="svelte" />
2
2
  import type { AccordionItemProps } from './types.js';
3
- declare const __propDef: {
4
- props: AccordionItemProps;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: {};
9
- };
10
- type AccordionItemProps_ = typeof __propDef.props;
11
- export { AccordionItemProps_ as AccordionItemProps };
12
- export type AccordionItemEvents = typeof __propDef.events;
13
- export type AccordionItemSlots = typeof __propDef.slots;
14
- /** An Accordion child item. */
15
- export default class AccordionItem extends SvelteComponent<AccordionItemProps_, AccordionItemEvents, AccordionItemSlots> {
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
16
12
  }
13
+ /** An Accordion child item. */
14
+ declare const AccordionItem: $$__sveltets_2_IsomorphicComponent<AccordionItemProps, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, Record<string, any>, "">;
17
+ type AccordionItem = InstanceType<typeof AccordionItem>;
18
+ export default AccordionItem;
@@ -1,16 +1,18 @@
1
- import { SvelteComponent } from "svelte";
1
+ /// <reference types="svelte" />
2
2
  import type { AppBarProps } from './types.js';
3
- declare const __propDef: {
4
- props: AppBarProps;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: {};
9
- };
10
- type AppBarProps_ = typeof __propDef.props;
11
- export { AppBarProps_ as AppBarProps };
12
- export type AppBarEvents = typeof __propDef.events;
13
- export type AppBarSlots = typeof __propDef.slots;
14
- /** A header element for the top of a page layout. */
15
- export default class AppBar extends SvelteComponent<AppBarProps_, AppBarEvents, AppBarSlots> {
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
16
12
  }
13
+ /** A header element for the top of a page layout. */
14
+ declare const AppBar: $$__sveltets_2_IsomorphicComponent<AppBarProps, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, Record<string, any>, "">;
17
+ type AppBar = InstanceType<typeof AppBar>;
18
+ export default AppBar;
@@ -1,16 +1,18 @@
1
- import { SvelteComponent } from "svelte";
1
+ /// <reference types="svelte" />
2
2
  import type { AvatarProps } from './types.js';
3
- declare const __propDef: {
4
- props: AvatarProps;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: {};
9
- };
10
- type AvatarProps_ = typeof __propDef.props;
11
- export { AvatarProps_ as AvatarProps };
12
- export type AvatarEvents = typeof __propDef.events;
13
- export type AvatarSlots = typeof __propDef.slots;
14
- /** An image with a fallback for representing the user. */
15
- export default class Avatar extends SvelteComponent<AvatarProps_, AvatarEvents, AvatarSlots> {
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
16
12
  }
13
+ /** An image with a fallback for representing the user. */
14
+ declare const Avatar: $$__sveltets_2_IsomorphicComponent<AvatarProps, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, Record<string, any>, "">;
17
+ type Avatar = InstanceType<typeof Avatar>;
18
+ export default Avatar;
@@ -0,0 +1,29 @@
1
+ <script lang="ts">import { setContext } from "svelte";
2
+ let {
3
+ // Root
4
+ base = "h-full flex flex-col",
5
+ background = "preset-filled-surface-100-900",
6
+ width = "min-w-[320px] w-full",
7
+ height = "h-20",
8
+ padding = "p-1",
9
+ classes = "",
10
+ // Tiles
11
+ tilesBase = "flex-1 flex",
12
+ tilesFlexDirection = "",
13
+ tilesJustify = "justify-center",
14
+ tilesItems = "items-center",
15
+ tilesGap = "gap-1",
16
+ tilesClasses = "",
17
+ // Snippets
18
+ children
19
+ } = $props();
20
+ setContext("parent", "bar");
21
+ </script>
22
+
23
+ <aside class="{base} {background} {width} {height} {padding} {classes}" data-testid="nav-bar">
24
+ {#if children}
25
+ <nav class="{tilesBase} {tilesFlexDirection} {tilesJustify} {tilesItems} {tilesGap} {tilesClasses}">
26
+ {@render children()}
27
+ </nav>
28
+ {/if}
29
+ </aside>
@@ -0,0 +1,17 @@
1
+ /// <reference types="svelte" />
2
+ import type { NavBarProps } from './types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
12
+ }
13
+ declare const NavBar: $$__sveltets_2_IsomorphicComponent<NavBarProps, {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {}, Record<string, any>, "">;
16
+ type NavBar = InstanceType<typeof NavBar>;
17
+ export default NavBar;
@@ -0,0 +1,62 @@
1
+ <script lang="ts">import { setContext } from "svelte";
2
+ let {
3
+ expanded = false,
4
+ // Root
5
+ base = "h-full flex flex-col",
6
+ background = "preset-filled-surface-100-900",
7
+ padding = "p-1",
8
+ width = "w-24",
9
+ widthExpanded = "w-64",
10
+ height = "h-full",
11
+ classes = "",
12
+ // Header
13
+ headerBase = "flex",
14
+ headerFlexDirection = "flex-col",
15
+ headerJustify = "justify-center",
16
+ headerItems = "items-center",
17
+ headerGap = "gap-1",
18
+ headerClasses = "",
19
+ // Tiles
20
+ tilesBase = "flex-1 flex",
21
+ tilesFlexDirection = "flex-col",
22
+ tilesJustify = "justify-center",
23
+ tilesItems = "items-center",
24
+ tilesGap = "gap-1",
25
+ tilesClasses = "",
26
+ // Footer
27
+ footerBase = "flex",
28
+ footerFlexDirection = "flex-col",
29
+ footerJustify = "justify-center",
30
+ footerItems = "items-center",
31
+ footerGap = "gap-1",
32
+ footerClasses = "",
33
+ // Snippets
34
+ header,
35
+ tiles,
36
+ footer
37
+ } = $props();
38
+ setContext("parent", "rail");
39
+ setContext("expanded", expanded);
40
+ let rxWidth = $derived(expanded ? widthExpanded : width);
41
+ </script>
42
+
43
+ <aside class="{base} {background} {height} {padding} {rxWidth} {classes}" data-testid="nav-rail">
44
+ <!-- Header -->
45
+ {#if header}
46
+ <header class="{headerBase} {headerFlexDirection} {headerJustify} {headerItems} {headerGap} {headerClasses}">
47
+ {@render header()}
48
+ </header>
49
+ {/if}
50
+ <!-- Tiles -->
51
+ {#if tiles}
52
+ <nav class="{tilesBase} {tilesFlexDirection} {tilesJustify} {tilesItems} {tilesGap} {tilesClasses}">
53
+ {@render tiles()}
54
+ </nav>
55
+ {/if}
56
+ <!-- Footer -->
57
+ {#if footer}
58
+ <footer class="{footerBase} {footerFlexDirection} {footerJustify} {footerItems} {footerGap} {footerClasses}">
59
+ {@render footer()}
60
+ </footer>
61
+ {/if}
62
+ </aside>
@@ -0,0 +1,17 @@
1
+ /// <reference types="svelte" />
2
+ import type { NavRailProps } from './types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
12
+ }
13
+ declare const NavRail: $$__sveltets_2_IsomorphicComponent<NavRailProps, {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {}, Record<string, any>, "">;
16
+ type NavRail = InstanceType<typeof NavRail>;
17
+ export default NavRail;
@@ -0,0 +1,76 @@
1
+ <script lang="ts">import { getContext } from "svelte";
2
+ let {
3
+ id,
4
+ href,
5
+ target,
6
+ label,
7
+ labelExpanded,
8
+ title,
9
+ selected = false,
10
+ // Root
11
+ base = "flex items-center",
12
+ width = "w-full",
13
+ aspect = "aspect-square",
14
+ background = "",
15
+ hover = "hover:preset-filled-surface-50-950",
16
+ active = "preset-filled-primary-500",
17
+ padding = "p-2",
18
+ gap = "gap-1",
19
+ rounded = "rounded-container",
20
+ classes = "flex-col justify-center",
21
+ // Expanded
22
+ expandedPadding = "py-3 px-4",
23
+ expandedGap = "gap-4",
24
+ expandedClasses = "",
25
+ // Label (base)
26
+ labelBase = "type-scale-1",
27
+ labelClasses = "",
28
+ // Label (expanded)
29
+ labelExpandedBase = "",
30
+ labelExpandedClasses = "",
31
+ // Events
32
+ onclick,
33
+ // Snippets
34
+ children
35
+ } = $props();
36
+ let parent = getContext("parent");
37
+ let expanded = getContext("expanded") ?? false;
38
+ const element = href ? "a" : "button";
39
+ const type = href ? void 0 : "button";
40
+ const role = href ? void 0 : "button";
41
+ let rxSize = parent === "bar" ? `h-full` : `${aspect}`;
42
+ const classesCollapsed = `${rxSize} ${padding} ${gap} ${classes}`;
43
+ const classesExtended = `${expandedPadding} ${expandedGap} ${expandedClasses}`;
44
+ let rxMode = $derived(expanded ? classesExtended : classesCollapsed);
45
+ let rxBackground = $derived(selected ? active : `${background} ${hover}`);
46
+ function onClickHandler() {
47
+ if (onclick && !id)
48
+ throw new Error("No ID was provided");
49
+ if (onclick && id)
50
+ onclick(id);
51
+ }
52
+ </script>
53
+
54
+ <svelte:element
55
+ this={element}
56
+ class="{base} {width} {rounded} {rxBackground} {rxMode}"
57
+ {href}
58
+ {target}
59
+ {type}
60
+ {title}
61
+ {role}
62
+ onclick={onClickHandler}
63
+ tabindex="0"
64
+ data-testid="nav-tile"
65
+ >
66
+ <!-- Icon -->
67
+ {#if children}<div>{@render children()}</div>{/if}
68
+ <!-- Label (base) -->
69
+ {#if label && !expanded}
70
+ <div class="{labelBase} {labelClasses}">{label}</div>
71
+ {/if}
72
+ <!-- Label (expanded) -->
73
+ {#if labelExpanded && expanded}
74
+ <div class="{labelExpandedBase} {labelExpandedClasses}">{labelExpanded}</div>
75
+ {/if}
76
+ </svelte:element>
@@ -0,0 +1,17 @@
1
+ /// <reference types="svelte" />
2
+ import type { NavTileProps } from './types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
12
+ }
13
+ declare const NavTile: $$__sveltets_2_IsomorphicComponent<NavTileProps, {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {}, Record<string, any>, "">;
16
+ type NavTile = InstanceType<typeof NavTile>;
17
+ export default NavTile;
@@ -0,0 +1,121 @@
1
+ import type { Snippet } from 'svelte';
2
+ export interface NavCommonProps {
3
+ /** Set base styles. */
4
+ base?: string;
5
+ /** Set background classes. */
6
+ background?: string;
7
+ /** Set padding classes. */
8
+ padding?: string;
9
+ /** Set width classes. */
10
+ width?: string;
11
+ /** Set width classes for expanded mode. */
12
+ widthExpanded?: string;
13
+ /** Set width classes. */
14
+ height?: string;
15
+ /** Provide arbitrary CSS classes. */
16
+ classes?: string;
17
+ /** Set base classes. */
18
+ tilesBase?: string;
19
+ /** Set flex direction classes. */
20
+ tilesFlexDirection?: string;
21
+ /** Set flex justify classes. */
22
+ tilesJustify?: string;
23
+ /** Set flex align classes. */
24
+ tilesItems?: string;
25
+ /** Set gap classes. */
26
+ tilesGap?: string;
27
+ /** Provide arbitrary CSS classes. */
28
+ tilesClasses?: string;
29
+ }
30
+ export interface NavBarProps extends NavCommonProps {
31
+ /** The default children snippet. */
32
+ children?: Snippet;
33
+ }
34
+ export interface NavRailProps extends NavCommonProps {
35
+ /** Enabled expanded mode. */
36
+ expanded?: boolean;
37
+ /** Set base classes. */
38
+ headerBase?: string;
39
+ /** Set flex direction classes. */
40
+ headerFlexDirection?: string;
41
+ /** Set flex justify classes. */
42
+ headerJustify?: string;
43
+ /** Set flex align classes. */
44
+ headerItems?: string;
45
+ /** Set gap classes. */
46
+ headerGap?: string;
47
+ /** Provide arbitrary CSS classes. */
48
+ headerClasses?: string;
49
+ /** Set base classes. */
50
+ footerBase?: string;
51
+ /** Set flex direction classes. */
52
+ footerFlexDirection?: string;
53
+ /** Set flex justify classes. */
54
+ footerJustify?: string;
55
+ /** Set flex align classes. */
56
+ footerItems?: string;
57
+ /** Set gap classes. */
58
+ footerGap?: string;
59
+ /** Provide arbitrary CSS classes. */
60
+ footerClasses?: string;
61
+ /** The header snippet. */
62
+ header?: Snippet;
63
+ /** The tiles snippet. */
64
+ tiles?: Snippet;
65
+ /** The footer snippet. */
66
+ footer?: Snippet;
67
+ }
68
+ export interface NavTileProps {
69
+ /** Provide a unique ID. */
70
+ id?: string;
71
+ /** Provide an href link; turns Tiles into an anchor */
72
+ href?: string;
73
+ /** Set the href target attribute. */
74
+ target?: string;
75
+ /** Provide the label text. */
76
+ label?: string;
77
+ /** Provide a longer label in expanded mode. */
78
+ labelExpanded?: string;
79
+ /** Provile a title attribute. */
80
+ title?: string;
81
+ /** Enable the active selected state. */
82
+ selected?: boolean;
83
+ /** Set base styles. */
84
+ base?: string;
85
+ /** Set width classes. */
86
+ width?: string;
87
+ /** Set aspect ratio classes. */
88
+ aspect?: string;
89
+ /** Set background classes. */
90
+ background?: string;
91
+ /** Set hover classes. */
92
+ hover?: string;
93
+ /** Set active classes. */
94
+ active?: string;
95
+ /** Set padding classes. */
96
+ padding?: string;
97
+ /** Set gap classes. */
98
+ gap?: string;
99
+ /** Set rounded classes. */
100
+ rounded?: string;
101
+ /** Provide arbitrary CSS classes. */
102
+ classes?: string;
103
+ /** Set padding classes for expanded mode. */
104
+ expandedPadding?: string;
105
+ /** Set gap classes for expanded mode. */
106
+ expandedGap?: string;
107
+ /** Provide arbitrary CSS classes for expanded mode. */
108
+ expandedClasses?: string;
109
+ /** Set base classes. */
110
+ labelBase?: string;
111
+ /** Provide arbitrary CSS classes. */
112
+ labelClasses?: string;
113
+ /** Set base classes. */
114
+ labelExpandedBase?: string;
115
+ /** Provide arbitrary CSS classes. */
116
+ labelExpandedClasses?: string;
117
+ /** Triggers when the tile is clicked. */
118
+ onclick?: (id: string) => void;
119
+ /** The default slot, used for icons. */
120
+ children?: Snippet;
121
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">let {
2
2
  value,
3
3
  max = 100,
4
- labelledBy = "",
4
+ labelledby = "",
5
5
  // Root
6
6
  base = "overflow-x-hidden",
7
7
  bg = "bg-surface-200-800",
@@ -31,7 +31,7 @@ const rxIndeterminate = $derived(indeterminate ? meterAnimate : "");
31
31
 
32
32
  <div
33
33
  role="progressbar"
34
- aria-labelledby={labelledBy}
34
+ aria-labelledby={labelledby}
35
35
  aria-valuenow={value}
36
36
  aria-valuemin={0}
37
37
  aria-valuemax={max}
@@ -1,16 +1,18 @@
1
- import { SvelteComponent } from "svelte";
1
+ /// <reference types="svelte" />
2
2
  import type { ProgressProps } from './types.js';
3
- declare const __propDef: {
4
- props: ProgressProps;
5
- events: {
6
- [evt: string]: CustomEvent<any>;
7
- };
8
- slots: {};
9
- };
10
- type ProgressProps_ = typeof __propDef.props;
11
- export { ProgressProps_ as ProgressProps };
12
- export type ProgressEvents = typeof __propDef.events;
13
- export type ProgressSlots = typeof __propDef.slots;
14
- /** An indicator showing the progress or completion of a task */
15
- export default class Progress extends SvelteComponent<ProgressProps_, ProgressEvents, ProgressSlots> {
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
16
12
  }
13
+ /** An indicator showing the progress or completion of a task */
14
+ declare const Progress: $$__sveltets_2_IsomorphicComponent<ProgressProps, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, Record<string, any>, "">;
17
+ type Progress = InstanceType<typeof Progress>;
18
+ export default Progress;
@@ -3,8 +3,8 @@ export interface ProgressProps {
3
3
  value?: number;
4
4
  /** Set the maximum value */
5
5
  max?: number;
6
- /** Set the aria-labelledby */
7
- labelledBy?: string;
6
+ /** Set the aria-labelledby value */
7
+ labelledby?: string;
8
8
  /** Set root base classes */
9
9
  base?: string;
10
10
  /** Set root background classes */
@@ -0,0 +1,101 @@
1
+ <script lang="ts">let {
2
+ value,
3
+ max = 100,
4
+ strokeWidth = 50,
5
+ // px
6
+ strokeLinecap = "round",
7
+ labelledby = "",
8
+ // Base (figure)
9
+ base = "relative",
10
+ size = "size-32",
11
+ classes = "",
12
+ // Slot
13
+ childrenBase = "absolute top-0 left-0 z-[1] flex justify-center items-center",
14
+ childrenClasses = "",
15
+ // SVG
16
+ svgBase = "absolute top-0 left-0 w-full h-full rounded-full",
17
+ svgClasses = "",
18
+ // Track
19
+ trackBase = "fill-none",
20
+ trackStroke = "stroke-surface-200-800",
21
+ trackClasses = "",
22
+ // Meter
23
+ meterBase = "fill-none",
24
+ meterStroke = "stroke-primary-500",
25
+ meterTransition = "transition-[stroke-dashoffset]",
26
+ meterDuration = "duration-100",
27
+ meterClasses = "",
28
+ // Label
29
+ label,
30
+ labelBase = "",
31
+ labelFill = "fill-surface-950-50",
32
+ labelFontSize = 96,
33
+ // px
34
+ labelFontWeight = "bold",
35
+ labelClasses = "",
36
+ // Snippets
37
+ children
38
+ } = $props();
39
+ const baseSize = 512;
40
+ const radius = baseSize / 2 - strokeWidth / 2;
41
+ let circumference = $state(radius);
42
+ let dashoffset = $state(calcDashOffset());
43
+ $effect(() => {
44
+ dashoffset = calcDashOffset();
45
+ });
46
+ function calcDashOffset() {
47
+ const v = value !== void 0 ? value : 25;
48
+ const percent = 100 * v / max;
49
+ circumference = radius * 2 * Math.PI;
50
+ return circumference - percent / 100 * circumference;
51
+ }
52
+ </script>
53
+
54
+ <figure
55
+ class="{base} {size} {classes}"
56
+ role="meter"
57
+ aria-labelledby={labelledby}
58
+ aria-valuenow={value || 0}
59
+ aria-valuemin={0}
60
+ aria-valuemax={max}
61
+ aria-valuetext={`${value} / ${max}`}
62
+ data-testid="progress-ring"
63
+ >
64
+ <!-- Slot -->
65
+ {#if children}
66
+ <div class="{childrenBase} {size} {childrenClasses}">
67
+ {@render children()}
68
+ </div>
69
+ {/if}
70
+ <!-- SVG -->
71
+ <svg viewBox="0 0 {baseSize} {baseSize}" class="{svgBase} {svgClasses}" class:animate-spin={value === undefined}>
72
+ <!-- Track -->
73
+ <circle class="{trackBase} {trackStroke} {trackClasses}" stroke-width={strokeWidth} r={radius} cx="50%" cy="50%" />
74
+ <!-- Meter -->
75
+ <circle
76
+ class="{meterBase} {meterStroke} {meterTransition} {meterDuration} {meterClasses}"
77
+ r={radius}
78
+ cx="50%"
79
+ cy="50%"
80
+ stroke-width={strokeWidth}
81
+ stroke-linecap={strokeLinecap}
82
+ stroke-dasharray="{circumference} {circumference}"
83
+ stroke-dashoffset={dashoffset}
84
+ transform="rotate(-90 {baseSize / 2} {baseSize / 2})"
85
+ />
86
+ <!-- Text -->
87
+ {#if value !== undefined && !children}
88
+ <text
89
+ class="{labelBase} {labelFill} {labelClasses}"
90
+ x="50%"
91
+ y="50%"
92
+ font-size={labelFontSize}
93
+ font-weight={labelFontWeight}
94
+ text-anchor="middle"
95
+ dominant-baseline="central"
96
+ >
97
+ {label ?? `${value}%`}
98
+ </text>
99
+ {/if}
100
+ </svg>
101
+ </figure>
@@ -0,0 +1,17 @@
1
+ /// <reference types="svelte" />
2
+ import type { ProgressRingProps } from './types.js';
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
12
+ }
13
+ declare const ProgressRing: $$__sveltets_2_IsomorphicComponent<ProgressRingProps, {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {}, Record<string, any>, "">;
16
+ type ProgressRing = InstanceType<typeof ProgressRing>;
17
+ export default ProgressRing;