@noahbaumgartner/svelte-ui 0.0.5 → 0.0.7
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/LICENSE +21 -0
- package/README.md +20 -5
- package/dist/components/accordion/Accordion.svelte +16 -6
- package/dist/components/accordion/Accordion.svelte.d.ts +3 -1
- package/dist/components/accordion/AccordionItem.svelte +106 -67
- package/dist/components/accordion/AccordionItem.svelte.d.ts +5 -1
- package/dist/components/alert-dialog/AlertDialog.svelte +108 -76
- package/dist/components/alert-dialog/AlertDialog.svelte.d.ts +5 -2
- package/dist/components/avatar/Avatar.svelte +71 -49
- package/dist/components/avatar/Avatar.svelte.d.ts +5 -2
- package/dist/components/avatar-group/AvatarGroup.svelte +72 -45
- package/dist/components/avatar-group/AvatarGroup.svelte.d.ts +5 -1
- package/dist/components/badge/Badge.svelte +50 -28
- package/dist/components/badge/Badge.svelte.d.ts +6 -4
- package/dist/components/breadcrumb/Breadcrumb.svelte +21 -17
- package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts +3 -1
- package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte +17 -6
- package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte.d.ts +5 -2
- package/dist/components/breadcrumb/BreadcrumbItem.svelte +75 -36
- package/dist/components/breadcrumb/BreadcrumbItem.svelte.d.ts +8 -5
- package/dist/components/breadcrumb/BreadcrumbSeparator.svelte +32 -9
- package/dist/components/breadcrumb/BreadcrumbSeparator.svelte.d.ts +10 -17
- package/dist/components/button/Button.svelte +206 -168
- package/dist/components/button/Button.svelte.d.ts +9 -5
- package/dist/components/button-group/ButtonGroup.svelte +52 -55
- package/dist/components/button-group/ButtonGroup.svelte.d.ts +3 -1
- package/dist/components/calendar/Calendar.svelte +232 -144
- package/dist/components/calendar/Calendar.svelte.d.ts +19 -2
- package/dist/components/calendar/dates.d.ts +4 -1
- package/dist/components/calendar/dates.js +8 -2
- package/dist/components/card/Card.svelte +48 -32
- package/dist/components/card/Card.svelte.d.ts +3 -1
- package/dist/components/card/CardAction.svelte +11 -7
- package/dist/components/card/CardAction.svelte.d.ts +3 -1
- package/dist/components/card/CardContent.svelte +8 -4
- package/dist/components/card/CardContent.svelte.d.ts +3 -1
- package/dist/components/card/CardDescription.svelte +11 -7
- package/dist/components/card/CardDescription.svelte.d.ts +3 -1
- package/dist/components/card/CardFooter.svelte +15 -11
- package/dist/components/card/CardFooter.svelte.d.ts +3 -1
- package/dist/components/card/CardHeader.svelte +15 -11
- package/dist/components/card/CardHeader.svelte.d.ts +3 -1
- package/dist/components/card/CardTitle.svelte +11 -7
- package/dist/components/card/CardTitle.svelte.d.ts +3 -1
- package/dist/components/checkbox/Checkbox.svelte +152 -61
- package/dist/components/checkbox/Checkbox.svelte.d.ts +5 -2
- package/dist/components/color-picker/ColorPicker.svelte +131 -78
- package/dist/components/color-picker/ColorPicker.svelte.d.ts +10 -1
- package/dist/components/context-menu/ContextMenu.svelte +78 -61
- package/dist/components/context-menu/ContextMenu.svelte.d.ts +5 -2
- package/dist/components/context-menu/ContextMenuInfo.svelte +91 -0
- package/dist/components/context-menu/ContextMenuInfo.svelte.d.ts +19 -0
- package/dist/components/context-menu/ContextMenuItem.svelte +102 -57
- package/dist/components/context-menu/ContextMenuItem.svelte.d.ts +10 -5
- package/dist/components/context-menu/ContextMenuLabel.svelte +28 -0
- package/dist/components/context-menu/ContextMenuLabel.svelte.d.ts +10 -0
- package/dist/components/context-menu/ContextMenuSeparator.svelte +29 -0
- package/dist/components/context-menu/ContextMenuSeparator.svelte.d.ts +8 -0
- package/dist/components/dialog/Dialog.svelte +149 -108
- package/dist/components/dialog/Dialog.svelte.d.ts +7 -2
- package/dist/components/drawer/Drawer.svelte +240 -189
- package/dist/components/drawer/Drawer.svelte.d.ts +7 -2
- package/dist/components/empty-state/EmptyState.svelte +67 -47
- package/dist/components/empty-state/EmptyState.svelte.d.ts +7 -4
- package/dist/components/entry/Entry.svelte +53 -42
- package/dist/components/entry/Entry.svelte.d.ts +2 -1
- package/dist/components/field/Field.svelte +66 -45
- package/dist/components/field/Field.svelte.d.ts +2 -1
- package/dist/components/field/FieldContent.svelte +11 -8
- package/dist/components/field/FieldContent.svelte.d.ts +2 -1
- package/dist/components/field/FieldDescription.svelte +18 -15
- package/dist/components/field/FieldDescription.svelte.d.ts +2 -1
- package/dist/components/field/FieldError.svelte +22 -13
- package/dist/components/field/FieldError.svelte.d.ts +2 -1
- package/dist/components/field/FieldGroup.svelte +15 -12
- package/dist/components/field/FieldGroup.svelte.d.ts +2 -1
- package/dist/components/field/FieldLegend.svelte +23 -14
- package/dist/components/field/FieldLegend.svelte.d.ts +2 -1
- package/dist/components/field/FieldSeparator.svelte +12 -9
- package/dist/components/field/FieldSeparator.svelte.d.ts +2 -1
- package/dist/components/field/FieldSet.svelte +18 -15
- package/dist/components/field/FieldSet.svelte.d.ts +2 -1
- package/dist/components/footer/Footer.svelte +63 -47
- package/dist/components/footer/Footer.svelte.d.ts +2 -1
- package/dist/components/footer/FooterColumn.svelte +17 -14
- package/dist/components/footer/FooterColumn.svelte.d.ts +2 -1
- package/dist/components/image/Image.svelte +61 -0
- package/dist/components/image/Image.svelte.d.ts +18 -0
- package/dist/components/input/Input.svelte +307 -208
- package/dist/components/input/Input.svelte.d.ts +12 -1
- package/dist/components/input-group/InputGroup.svelte +101 -61
- package/dist/components/input-group/InputGroup.svelte.d.ts +2 -1
- package/dist/components/input-group/InputGroupAddon.svelte +58 -49
- package/dist/components/kbd/Kbd.svelte +39 -30
- package/dist/components/kbd/Kbd.svelte.d.ts +2 -1
- package/dist/components/kbd/KbdGroup.svelte +15 -12
- package/dist/components/kbd/KbdGroup.svelte.d.ts +2 -1
- package/dist/components/label/Label.svelte +47 -28
- package/dist/components/label/Label.svelte.d.ts +2 -1
- package/dist/components/link/Link.svelte +71 -17
- package/dist/components/link/Link.svelte.d.ts +2 -1
- package/dist/components/mesh-gradient/MeshGradient.svelte +33 -22
- package/dist/components/mesh-gradient/MeshGradient.svelte.d.ts +2 -3
- package/dist/components/navbar/Navbar.svelte +149 -99
- package/dist/components/navbar/Navbar.svelte.d.ts +4 -2
- package/dist/components/navigation-menu/NavigationMenu.svelte +37 -20
- package/dist/components/navigation-menu/NavigationMenu.svelte.d.ts +4 -2
- package/dist/components/navigation-menu/NavigationMenuItem.svelte +131 -89
- package/dist/components/navigation-menu/NavigationMenuItem.svelte.d.ts +4 -2
- package/dist/components/navigation-menu/NavigationMenuLink.svelte +90 -51
- package/dist/components/navigation-menu/NavigationMenuLink.svelte.d.ts +7 -5
- package/dist/components/number-stepper/NumberStepper.svelte +39 -20
- package/dist/components/number-stepper/NumberStepper.svelte.d.ts +6 -1
- package/dist/components/popover/Popover.svelte +85 -65
- package/dist/components/popover/Popover.svelte.d.ts +5 -2
- package/dist/components/preview-card/PreviewCard.svelte +116 -98
- package/dist/components/preview-card/PreviewCard.svelte.d.ts +9 -6
- package/dist/components/progress/Progress.svelte +61 -38
- package/dist/components/progress/Progress.svelte.d.ts +2 -1
- package/dist/components/radio-group/RadioGroup.svelte +24 -19
- package/dist/components/radio-group/RadioGroup.svelte.d.ts +2 -1
- package/dist/components/radio-group/RadioGroupItem.svelte +101 -54
- package/dist/components/radio-group/RadioGroupItem.svelte.d.ts +2 -1
- package/dist/components/section/Section.svelte +114 -0
- package/dist/components/section/Section.svelte.d.ts +22 -0
- package/dist/components/select/Select.svelte +216 -133
- package/dist/components/select/Select.svelte.d.ts +11 -2
- package/dist/components/separator/Separator.svelte +21 -10
- package/dist/components/separator/Separator.svelte.d.ts +2 -1
- package/dist/components/sidebar/Sidebar.svelte +142 -108
- package/dist/components/sidebar/Sidebar.svelte.d.ts +6 -1
- package/dist/components/sidebar/SidebarContent.svelte +15 -12
- package/dist/components/sidebar/SidebarContent.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarFooter.svelte +10 -7
- package/dist/components/sidebar/SidebarFooter.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarGroup.svelte +35 -25
- package/dist/components/sidebar/SidebarGroup.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarHeader.svelte +21 -16
- package/dist/components/sidebar/SidebarHeader.svelte.d.ts +6 -1
- package/dist/components/sidebar/SidebarInset.svelte +11 -8
- package/dist/components/sidebar/SidebarInset.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarMenu.svelte +13 -10
- package/dist/components/sidebar/SidebarMenu.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarMenuItem.svelte +195 -114
- package/dist/components/sidebar/SidebarMenuItem.svelte.d.ts +11 -5
- package/dist/components/sidebar/SidebarProvider.svelte +18 -9
- package/dist/components/sidebar/SidebarProvider.svelte.d.ts +2 -1
- package/dist/components/sidebar/SidebarSeparator.svelte +6 -1
- package/dist/components/sidebar/SidebarSeparator.svelte.d.ts +6 -17
- package/dist/components/sidebar/SidebarTrigger.svelte +17 -5
- package/dist/components/sidebar/SidebarTrigger.svelte.d.ts +4 -2
- package/dist/components/skeleton/Skeleton.svelte +26 -16
- package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -2
- package/dist/components/spinner/Spinner.svelte +71 -46
- package/dist/components/spinner/Spinner.svelte.d.ts +2 -1
- package/dist/components/switch/Switch.svelte +126 -65
- package/dist/components/switch/Switch.svelte.d.ts +4 -2
- package/dist/components/table/Table.svelte +135 -76
- package/dist/components/table/Table.svelte.d.ts +12 -2
- package/dist/components/tabs/Tabs.svelte +173 -116
- package/dist/components/tabs/Tabs.svelte.d.ts +10 -8
- package/dist/components/textarea/Textarea.svelte +76 -42
- package/dist/components/textarea/Textarea.svelte.d.ts +4 -1
- package/dist/components/time-picker/TimePicker.svelte +214 -85
- package/dist/components/time-picker/TimePicker.svelte.d.ts +18 -1
- package/dist/components/toaster/Toaster.svelte +132 -70
- package/dist/components/toaster/Toaster.svelte.d.ts +18 -2
- package/dist/components/toaster/toast.svelte.d.ts +3 -3
- package/dist/components/toggle/Toggle.svelte +25 -4
- package/dist/components/toggle/Toggle.svelte.d.ts +1 -1
- package/dist/components/tooltip/Tooltip.svelte +87 -58
- package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -2
- package/dist/icon.d.ts +12 -0
- package/dist/icon.js +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +5 -0
- package/dist/internal/icons/ArrowDown.svelte +14 -0
- package/dist/internal/icons/ArrowDown.svelte.d.ts +4 -0
- package/dist/internal/icons/ArrowUp.svelte +14 -0
- package/dist/internal/icons/ArrowUp.svelte.d.ts +4 -0
- package/dist/internal/icons/Calendar.svelte +16 -0
- package/dist/internal/icons/Calendar.svelte.d.ts +4 -0
- package/dist/internal/icons/Check.svelte +8 -0
- package/dist/internal/icons/Check.svelte.d.ts +4 -0
- package/dist/internal/icons/ChevronDown.svelte +8 -0
- package/dist/internal/icons/ChevronDown.svelte.d.ts +4 -0
- package/dist/internal/icons/ChevronLeft.svelte +8 -0
- package/dist/internal/icons/ChevronLeft.svelte.d.ts +4 -0
- package/dist/internal/icons/ChevronRight.svelte +8 -0
- package/dist/internal/icons/ChevronRight.svelte.d.ts +4 -0
- package/dist/internal/icons/ChevronUp.svelte +8 -0
- package/dist/internal/icons/ChevronUp.svelte.d.ts +4 -0
- package/dist/internal/icons/ChevronsUpDown.svelte +14 -0
- package/dist/internal/icons/ChevronsUpDown.svelte.d.ts +4 -0
- package/dist/internal/icons/Clock.svelte +14 -0
- package/dist/internal/icons/Clock.svelte.d.ts +4 -0
- package/dist/internal/icons/Ellipsis.svelte +15 -0
- package/dist/internal/icons/Ellipsis.svelte.d.ts +4 -0
- package/dist/internal/icons/Icon.svelte +33 -0
- package/dist/internal/icons/Icon.svelte.d.ts +8 -0
- package/dist/internal/icons/Minus.svelte +8 -0
- package/dist/internal/icons/Minus.svelte.d.ts +4 -0
- package/dist/internal/icons/PanelLeft.svelte +14 -0
- package/dist/internal/icons/PanelLeft.svelte.d.ts +4 -0
- package/dist/internal/icons/Plus.svelte +14 -0
- package/dist/internal/icons/Plus.svelte.d.ts +4 -0
- package/dist/internal/icons/User.svelte +14 -0
- package/dist/internal/icons/User.svelte.d.ts +4 -0
- package/dist/internal/icons/X.svelte +14 -0
- package/dist/internal/icons/X.svelte.d.ts +4 -0
- package/dist/styles/tokens.css +39 -41
- package/package.json +5 -10
- package/dist/icons.d.ts +0 -2
- package/dist/icons.js +0 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IconComponent } from '../../icon.js';
|
|
2
2
|
export type ToastAction = {
|
|
3
3
|
label: string;
|
|
4
4
|
onclick: () => void;
|
|
@@ -6,8 +6,8 @@ export type ToastAction = {
|
|
|
6
6
|
export type ToastOptions = {
|
|
7
7
|
/** Updates the toast with this id instead of adding a new one. */
|
|
8
8
|
id?: number;
|
|
9
|
-
/** Any
|
|
10
|
-
icon?:
|
|
9
|
+
/** Any icon component, e.g. from `@lucide/svelte`, shown on the left. */
|
|
10
|
+
icon?: IconComponent;
|
|
11
11
|
/** Shows a Spinner instead of the icon and keeps the toast open until it is updated. */
|
|
12
12
|
loading?: boolean;
|
|
13
13
|
/** Button on the right; clicking it runs `onclick` and dismisses the toast. */
|
|
@@ -9,11 +9,18 @@
|
|
|
9
9
|
pressed?: boolean;
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
let {
|
|
12
|
+
let {
|
|
13
|
+
pressed = $bindable(false),
|
|
14
|
+
ref = $bindable(null),
|
|
15
|
+
class: className,
|
|
16
|
+
onclick,
|
|
17
|
+
...rest
|
|
18
|
+
}: Props = $props();
|
|
13
19
|
</script>
|
|
14
20
|
|
|
15
21
|
<Button
|
|
16
22
|
{...rest}
|
|
23
|
+
bind:ref
|
|
17
24
|
variant="secondary"
|
|
18
25
|
aria-pressed={pressed}
|
|
19
26
|
class={['toggle', className]}
|
|
@@ -24,8 +31,22 @@
|
|
|
24
31
|
/>
|
|
25
32
|
|
|
26
33
|
<style>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
34
|
+
@layer svelte-ui {
|
|
35
|
+
:global(.button.toggle[aria-pressed='true']),
|
|
36
|
+
:global(.button.toggle[aria-pressed='true']:hover:not(:disabled)) {
|
|
37
|
+
background-color: var(--color-surface-active);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@media (forced-colors: active) {
|
|
41
|
+
:global(.button.toggle[aria-pressed='true']),
|
|
42
|
+
:global(.button.toggle[aria-pressed='true']:hover:not(:disabled)) {
|
|
43
|
+
background-color: Highlight;
|
|
44
|
+
color: HighlightText;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:global(.button.toggle[aria-pressed='false']) {
|
|
48
|
+
border: 1px solid ButtonText;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
30
51
|
}
|
|
31
52
|
</style>
|
|
@@ -3,6 +3,6 @@ import Button from '../button/Button.svelte';
|
|
|
3
3
|
type Props = Omit<ComponentProps<typeof Button>, 'href' | 'target' | 'rel' | 'type' | 'variant'> & {
|
|
4
4
|
pressed?: boolean;
|
|
5
5
|
};
|
|
6
|
-
declare const Toggle: import("svelte").Component<Props, {}, "pressed">;
|
|
6
|
+
declare const Toggle: import("svelte").Component<Props, {}, "ref" | "pressed">;
|
|
7
7
|
type Toggle = ReturnType<typeof Toggle>;
|
|
8
8
|
export default Toggle;
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
|
|
15
15
|
<script lang="ts">
|
|
16
16
|
import type { Snippet } from 'svelte';
|
|
17
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
17
18
|
import { fade } from 'svelte/transition';
|
|
18
19
|
|
|
19
20
|
type Side = 'top' | 'right' | 'bottom' | 'left';
|
|
20
21
|
|
|
21
|
-
type Props = {
|
|
22
|
+
type Props = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
|
|
22
23
|
/** Whether the tooltip is shown. Bindable. */
|
|
23
24
|
open?: boolean;
|
|
24
25
|
/** Preferred side; flips to the opposite one when there is not enough room. */
|
|
@@ -29,9 +30,19 @@
|
|
|
29
30
|
trigger: Snippet<[TooltipTriggerProps]>;
|
|
30
31
|
/** Tooltip content; may contain `Kbd` / `KbdGroup`. */
|
|
31
32
|
children: Snippet;
|
|
33
|
+
ref?: HTMLSpanElement | null;
|
|
32
34
|
};
|
|
33
35
|
|
|
34
|
-
let {
|
|
36
|
+
let {
|
|
37
|
+
open = $bindable(false),
|
|
38
|
+
side = 'top',
|
|
39
|
+
delay = 0,
|
|
40
|
+
trigger,
|
|
41
|
+
children,
|
|
42
|
+
ref = $bindable(null),
|
|
43
|
+
class: className,
|
|
44
|
+
...rest
|
|
45
|
+
}: Props = $props();
|
|
35
46
|
|
|
36
47
|
const id = $props.id();
|
|
37
48
|
const gap = 6;
|
|
@@ -45,6 +56,10 @@
|
|
|
45
56
|
// A click dismisses the tooltip until the pointer leaves the trigger.
|
|
46
57
|
let pressed = false;
|
|
47
58
|
|
|
59
|
+
function reducedMotion() {
|
|
60
|
+
return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
61
|
+
}
|
|
62
|
+
|
|
48
63
|
function show(wait: number) {
|
|
49
64
|
clearTimeout(timer);
|
|
50
65
|
if (pressed) return;
|
|
@@ -135,7 +150,7 @@
|
|
|
135
150
|
});
|
|
136
151
|
</script>
|
|
137
152
|
|
|
138
|
-
<span class=
|
|
153
|
+
<span {...rest} bind:this={ref} class={['tooltip', className]}>
|
|
139
154
|
{@render trigger(triggerProps)}
|
|
140
155
|
|
|
141
156
|
{#if open}
|
|
@@ -148,7 +163,7 @@
|
|
|
148
163
|
style:left="{position.left}px"
|
|
149
164
|
style:--tooltip-arrow="{position.arrow}px"
|
|
150
165
|
{@attach popover}
|
|
151
|
-
transition:fade={{ duration: 100 }}
|
|
166
|
+
transition:fade={{ duration: reducedMotion() ? 0 : 100 }}
|
|
152
167
|
>
|
|
153
168
|
{@render children()}
|
|
154
169
|
<span class="tooltip-arrow" aria-hidden="true"></span>
|
|
@@ -157,68 +172,82 @@
|
|
|
157
172
|
</span>
|
|
158
173
|
|
|
159
174
|
<style>
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
175
|
+
@layer svelte-ui {
|
|
176
|
+
.tooltip {
|
|
177
|
+
display: inline-flex;
|
|
178
|
+
height: fit-content;
|
|
179
|
+
}
|
|
164
180
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
181
|
+
.tooltip-content {
|
|
182
|
+
position: fixed;
|
|
183
|
+
inset: auto;
|
|
184
|
+
margin: 0;
|
|
185
|
+
display: inline-flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
gap: 6px;
|
|
188
|
+
width: max-content;
|
|
189
|
+
max-width: 280px;
|
|
190
|
+
padding: 6px 10px;
|
|
191
|
+
overflow: visible;
|
|
192
|
+
font-size: 12px;
|
|
193
|
+
line-height: 1.4;
|
|
194
|
+
text-wrap: balance;
|
|
195
|
+
background-color: var(--color-ink);
|
|
196
|
+
color: var(--color-base);
|
|
197
|
+
border: none;
|
|
198
|
+
border-radius: 10px;
|
|
199
|
+
pointer-events: none;
|
|
200
|
+
}
|
|
185
201
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
202
|
+
.tooltip-content :global(:is(.kbd, .kbd-group)) {
|
|
203
|
+
font-size: inherit;
|
|
204
|
+
}
|
|
189
205
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
206
|
+
.tooltip-arrow {
|
|
207
|
+
position: absolute;
|
|
208
|
+
width: 8px;
|
|
209
|
+
height: 8px;
|
|
210
|
+
background-color: inherit;
|
|
211
|
+
border-radius: 2px;
|
|
212
|
+
transform: rotate(45deg);
|
|
213
|
+
}
|
|
198
214
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
215
|
+
.tooltip-content--top .tooltip-arrow,
|
|
216
|
+
.tooltip-content--bottom .tooltip-arrow {
|
|
217
|
+
left: calc(var(--tooltip-arrow) - 4px);
|
|
218
|
+
}
|
|
203
219
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
220
|
+
.tooltip-content--left .tooltip-arrow,
|
|
221
|
+
.tooltip-content--right .tooltip-arrow {
|
|
222
|
+
top: calc(var(--tooltip-arrow) - 4px);
|
|
223
|
+
}
|
|
208
224
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
225
|
+
.tooltip-content--top .tooltip-arrow {
|
|
226
|
+
bottom: -3px;
|
|
227
|
+
}
|
|
212
228
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
229
|
+
.tooltip-content--bottom .tooltip-arrow {
|
|
230
|
+
top: -3px;
|
|
231
|
+
}
|
|
216
232
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
233
|
+
.tooltip-content--left .tooltip-arrow {
|
|
234
|
+
right: -3px;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.tooltip-content--right .tooltip-arrow {
|
|
238
|
+
left: -3px;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
@media (forced-colors: active) {
|
|
242
|
+
.tooltip-content {
|
|
243
|
+
border: 1px solid CanvasText;
|
|
244
|
+
background-color: Canvas;
|
|
245
|
+
color: CanvasText;
|
|
246
|
+
}
|
|
220
247
|
|
|
221
|
-
|
|
222
|
-
|
|
248
|
+
.tooltip-arrow {
|
|
249
|
+
display: none;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
223
252
|
}
|
|
224
253
|
</style>
|
|
@@ -9,8 +9,9 @@ export type TooltipTriggerProps = {
|
|
|
9
9
|
[key: symbol]: Attachment<HTMLElement>;
|
|
10
10
|
};
|
|
11
11
|
import type { Snippet } from 'svelte';
|
|
12
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
12
13
|
type Side = 'top' | 'right' | 'bottom' | 'left';
|
|
13
|
-
type Props = {
|
|
14
|
+
type Props = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
|
|
14
15
|
/** Whether the tooltip is shown. Bindable. */
|
|
15
16
|
open?: boolean;
|
|
16
17
|
/** Preferred side; flips to the opposite one when there is not enough room. */
|
|
@@ -21,7 +22,8 @@ type Props = {
|
|
|
21
22
|
trigger: Snippet<[TooltipTriggerProps]>;
|
|
22
23
|
/** Tooltip content; may contain `Kbd` / `KbdGroup`. */
|
|
23
24
|
children: Snippet;
|
|
25
|
+
ref?: HTMLSpanElement | null;
|
|
24
26
|
};
|
|
25
|
-
declare const Tooltip: import("svelte").Component<Props, {}, "open">;
|
|
27
|
+
declare const Tooltip: import("svelte").Component<Props, {}, "ref" | "open">;
|
|
26
28
|
type Tooltip = ReturnType<typeof Tooltip>;
|
|
27
29
|
export default Tooltip;
|
package/dist/icon.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
/**
|
|
3
|
+
* A Svelte component that renders an icon, from any icon library
|
|
4
|
+
* (`@lucide/svelte`, `phosphor-svelte`, an inline SVG component, …).
|
|
5
|
+
*
|
|
6
|
+
* Components only pass `class` and `aria-hidden`; the size comes from CSS, so
|
|
7
|
+
* the icon should fill its box (`width`/`height: 1em` or a fixed size is fine).
|
|
8
|
+
*/
|
|
9
|
+
export type IconComponent = Component<{
|
|
10
|
+
class?: string;
|
|
11
|
+
'aria-hidden'?: boolean | 'true' | 'false';
|
|
12
|
+
}>;
|
package/dist/icon.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type { IconComponent } from './icon.js';
|
|
1
2
|
export { default as Accordion } from './components/accordion/Accordion.svelte';
|
|
2
3
|
export { default as AccordionItem } from './components/accordion/AccordionItem.svelte';
|
|
3
4
|
export { default as AlertDialog } from './components/alert-dialog/AlertDialog.svelte';
|
|
@@ -21,6 +22,9 @@ export { default as Checkbox } from './components/checkbox/Checkbox.svelte';
|
|
|
21
22
|
export { default as ColorPicker } from './components/color-picker/ColorPicker.svelte';
|
|
22
23
|
export { default as ContextMenu } from './components/context-menu/ContextMenu.svelte';
|
|
23
24
|
export { default as ContextMenuItem } from './components/context-menu/ContextMenuItem.svelte';
|
|
25
|
+
export { default as ContextMenuSeparator } from './components/context-menu/ContextMenuSeparator.svelte';
|
|
26
|
+
export { default as ContextMenuLabel } from './components/context-menu/ContextMenuLabel.svelte';
|
|
27
|
+
export { default as ContextMenuInfo } from './components/context-menu/ContextMenuInfo.svelte';
|
|
24
28
|
export { default as Dialog } from './components/dialog/Dialog.svelte';
|
|
25
29
|
export { default as Drawer } from './components/drawer/Drawer.svelte';
|
|
26
30
|
export { default as EmptyState } from './components/empty-state/EmptyState.svelte';
|
|
@@ -35,6 +39,7 @@ export { default as FieldSeparator } from './components/field/FieldSeparator.sve
|
|
|
35
39
|
export { default as FieldSet } from './components/field/FieldSet.svelte';
|
|
36
40
|
export { default as Footer } from './components/footer/Footer.svelte';
|
|
37
41
|
export { default as FooterColumn } from './components/footer/FooterColumn.svelte';
|
|
42
|
+
export { default as Image } from './components/image/Image.svelte';
|
|
38
43
|
export { default as Input } from './components/input/Input.svelte';
|
|
39
44
|
export { default as Kbd } from './components/kbd/Kbd.svelte';
|
|
40
45
|
export { default as KbdGroup } from './components/kbd/KbdGroup.svelte';
|
|
@@ -53,6 +58,7 @@ export { default as PreviewCard } from './components/preview-card/PreviewCard.sv
|
|
|
53
58
|
export { default as Progress } from './components/progress/Progress.svelte';
|
|
54
59
|
export { default as RadioGroup } from './components/radio-group/RadioGroup.svelte';
|
|
55
60
|
export { default as RadioGroupItem } from './components/radio-group/RadioGroupItem.svelte';
|
|
61
|
+
export { default as Section } from './components/section/Section.svelte';
|
|
56
62
|
export { default as Select, type SelectOption } from './components/select/Select.svelte';
|
|
57
63
|
export { default as Separator } from './components/separator/Separator.svelte';
|
|
58
64
|
export { default as Sidebar } from './components/sidebar/Sidebar.svelte';
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,9 @@ export { default as Checkbox } from './components/checkbox/Checkbox.svelte';
|
|
|
21
21
|
export { default as ColorPicker } from './components/color-picker/ColorPicker.svelte';
|
|
22
22
|
export { default as ContextMenu } from './components/context-menu/ContextMenu.svelte';
|
|
23
23
|
export { default as ContextMenuItem } from './components/context-menu/ContextMenuItem.svelte';
|
|
24
|
+
export { default as ContextMenuSeparator } from './components/context-menu/ContextMenuSeparator.svelte';
|
|
25
|
+
export { default as ContextMenuLabel } from './components/context-menu/ContextMenuLabel.svelte';
|
|
26
|
+
export { default as ContextMenuInfo } from './components/context-menu/ContextMenuInfo.svelte';
|
|
24
27
|
export { default as Dialog } from './components/dialog/Dialog.svelte';
|
|
25
28
|
export { default as Drawer } from './components/drawer/Drawer.svelte';
|
|
26
29
|
export { default as EmptyState } from './components/empty-state/EmptyState.svelte';
|
|
@@ -35,6 +38,7 @@ export { default as FieldSeparator } from './components/field/FieldSeparator.sve
|
|
|
35
38
|
export { default as FieldSet } from './components/field/FieldSet.svelte';
|
|
36
39
|
export { default as Footer } from './components/footer/Footer.svelte';
|
|
37
40
|
export { default as FooterColumn } from './components/footer/FooterColumn.svelte';
|
|
41
|
+
export { default as Image } from './components/image/Image.svelte';
|
|
38
42
|
export { default as Input } from './components/input/Input.svelte';
|
|
39
43
|
export { default as Kbd } from './components/kbd/Kbd.svelte';
|
|
40
44
|
export { default as KbdGroup } from './components/kbd/KbdGroup.svelte';
|
|
@@ -53,6 +57,7 @@ export { default as PreviewCard } from './components/preview-card/PreviewCard.sv
|
|
|
53
57
|
export { default as Progress } from './components/progress/Progress.svelte';
|
|
54
58
|
export { default as RadioGroup } from './components/radio-group/RadioGroup.svelte';
|
|
55
59
|
export { default as RadioGroupItem } from './components/radio-group/RadioGroupItem.svelte';
|
|
60
|
+
export { default as Section } from './components/section/Section.svelte';
|
|
56
61
|
export { default as Select } from './components/select/Select.svelte';
|
|
57
62
|
export { default as Separator } from './components/separator/Separator.svelte';
|
|
58
63
|
export { default as Sidebar } from './components/sidebar/Sidebar.svelte';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['path', { d: 'M12 5v14' }],
|
|
12
|
+
['path', { d: 'm19 12-7 7-7-7' }]
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['path', { d: 'm5 12 7-7 7 7' }],
|
|
12
|
+
['path', { d: 'M12 19V5' }]
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['path', { d: 'M8 2v3' }],
|
|
12
|
+
['path', { d: 'M16 2v3' }],
|
|
13
|
+
['rect', { x: '3', y: '3', width: '18', height: '18', rx: '2' }],
|
|
14
|
+
['path', { d: 'M3 9h18' }]
|
|
15
|
+
]}
|
|
16
|
+
/>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['path', { d: 'm7 15 5 5 5-5' }],
|
|
12
|
+
['path', { d: 'm7 9 5-5 5 5' }]
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['circle', { cx: '12', cy: '12', r: '10' }],
|
|
12
|
+
['path', { d: 'M12 6v6l4 2' }]
|
|
13
|
+
]}
|
|
14
|
+
/>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
3
|
+
import Icon from './Icon.svelte';
|
|
4
|
+
|
|
5
|
+
let props: SVGAttributes<SVGSVGElement> = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<Icon
|
|
9
|
+
{...props}
|
|
10
|
+
nodes={[
|
|
11
|
+
['circle', { cx: '12', cy: '12', r: '1' }],
|
|
12
|
+
['circle', { cx: '19', cy: '12', r: '1' }],
|
|
13
|
+
['circle', { cx: '5', cy: '12', r: '1' }]
|
|
14
|
+
]}
|
|
15
|
+
/>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
/*
|
|
3
|
+
* Renders the small glyphs the components draw themselves (checkmarks,
|
|
4
|
+
* chevrons, …) so the library needs no icon package. The paths are taken
|
|
5
|
+
* from Lucide (https://lucide.dev), ISC License; portions Feather, MIT
|
|
6
|
+
* License, Copyright (c) 2013-2022 Cole Bemis. Icons passed in through an
|
|
7
|
+
* `icon` prop come from the consumer's own icon library, not from here.
|
|
8
|
+
*/
|
|
9
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
10
|
+
|
|
11
|
+
type GlyphNode = [tag: string, attrs: Record<string, string | number>];
|
|
12
|
+
|
|
13
|
+
type Props = SVGAttributes<SVGSVGElement> & { nodes: GlyphNode[] };
|
|
14
|
+
|
|
15
|
+
let { nodes, ...rest }: Props = $props();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<svg
|
|
19
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
20
|
+
width="24"
|
|
21
|
+
height="24"
|
|
22
|
+
viewBox="0 0 24 24"
|
|
23
|
+
fill="none"
|
|
24
|
+
stroke="currentColor"
|
|
25
|
+
stroke-width="2"
|
|
26
|
+
stroke-linecap="round"
|
|
27
|
+
stroke-linejoin="round"
|
|
28
|
+
{...rest}
|
|
29
|
+
>
|
|
30
|
+
{#each nodes as [tag, attrs], i (i)}
|
|
31
|
+
<svelte:element this={tag} {...attrs} />
|
|
32
|
+
{/each}
|
|
33
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
2
|
+
type GlyphNode = [tag: string, attrs: Record<string, string | number>];
|
|
3
|
+
type Props = SVGAttributes<SVGSVGElement> & {
|
|
4
|
+
nodes: GlyphNode[];
|
|
5
|
+
};
|
|
6
|
+
declare const Icon: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type Icon = ReturnType<typeof Icon>;
|
|
8
|
+
export default Icon;
|