zabi-components 7.0.1 → 8.0.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.
- package/README.md +46 -3
- package/THEMING.md +255 -15
- package/dist/atoms/ActionPanel.svelte +12 -7
- package/dist/atoms/ActionPanel.svelte.d.ts +2 -0
- package/dist/atoms/Badge.svelte +93 -56
- package/dist/atoms/Badge.svelte.d.ts +15 -3
- package/dist/atoms/Button.svelte +49 -49
- package/dist/atoms/Button.svelte.d.ts +3 -0
- package/dist/atoms/Card.svelte +31 -28
- package/dist/atoms/Card.svelte.d.ts +5 -2
- package/dist/atoms/CardContent.svelte +10 -2
- package/dist/atoms/CardContent.svelte.d.ts +2 -0
- package/dist/atoms/CardFooter.svelte +10 -2
- package/dist/atoms/CardFooter.svelte.d.ts +2 -0
- package/dist/atoms/CardHeader.svelte +10 -2
- package/dist/atoms/CardHeader.svelte.d.ts +2 -0
- package/dist/atoms/Checkbox.svelte +4 -0
- package/dist/atoms/Checkbox.svelte.d.ts +2 -0
- package/dist/atoms/CodeBlock.svelte +15 -7
- package/dist/atoms/CodeBlock.svelte.d.ts +9 -3
- package/dist/atoms/ColorPicker.svelte +19 -9
- package/dist/atoms/ColorPicker.svelte.d.ts +3 -1
- package/dist/atoms/Container.svelte +2 -3
- package/dist/atoms/Divider.svelte +4 -4
- package/dist/atoms/FeatureCard.svelte +4 -3
- package/dist/atoms/Heading.svelte +56 -27
- package/dist/atoms/Heading.svelte.d.ts +17 -4
- package/dist/atoms/IconButton.svelte +30 -37
- package/dist/atoms/Input.svelte +26 -34
- package/dist/atoms/List.svelte +10 -2
- package/dist/atoms/List.svelte.d.ts +2 -0
- package/dist/atoms/ListItem.svelte +2 -2
- package/dist/atoms/ListItemLeading.svelte +4 -2
- package/dist/atoms/ListItemLeading.svelte.d.ts +1 -1
- package/dist/atoms/OptimizedImage.svelte +11 -2
- package/dist/atoms/OptimizedImage.svelte.d.ts +2 -0
- package/dist/atoms/Progress.svelte +4 -1
- package/dist/atoms/Progress.svelte.d.ts +2 -0
- package/dist/atoms/Radio.svelte +4 -0
- package/dist/atoms/Radio.svelte.d.ts +2 -0
- package/dist/atoms/Select.svelte +65 -67
- package/dist/atoms/Select.svelte.d.ts +4 -0
- package/dist/atoms/SelectionControl.svelte +5 -1
- package/dist/atoms/SelectionControl.svelte.d.ts +2 -0
- package/dist/atoms/Skeleton.svelte +5 -3
- package/dist/atoms/Table.svelte +2 -1
- package/dist/atoms/Text.svelte +34 -5
- package/dist/atoms/Text.svelte.d.ts +7 -1
- package/dist/atoms/Textarea.svelte +7 -6
- package/dist/atoms/ThemeToggle.svelte +17 -14
- package/dist/atoms/ThemeToggle.svelte.d.ts +2 -0
- package/dist/atoms/Toast.svelte +10 -8
- package/dist/atoms/Toggle.svelte +21 -13
- package/dist/atoms/Toggle.svelte.d.ts +7 -0
- package/dist/atoms/Tooltip.svelte +89 -57
- package/dist/atoms/Tooltip.svelte.d.ts +15 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +1 -0
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/components/util/cn.d.ts +8 -0
- package/dist/components/util/cn.d.ts.map +1 -0
- package/dist/components/util/ssr-safe.d.ts +4 -4
- package/dist/components/util/ssr-safe.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -6
- package/dist/molecules/Alert.svelte +43 -64
- package/dist/molecules/Alert.svelte.d.ts +7 -1
- package/dist/molecules/ComponentDemo.svelte +10 -2
- package/dist/molecules/ComponentDemo.svelte.d.ts +2 -0
- package/dist/molecules/ContactForm.svelte +12 -2
- package/dist/molecules/ContactForm.svelte.d.ts +2 -0
- package/dist/molecules/Dropdown.svelte +40 -11
- package/dist/molecules/Dropdown.svelte.d.ts +4 -0
- package/dist/molecules/EmptyState.svelte +2 -1
- package/dist/molecules/Form.svelte +25 -14
- package/dist/molecules/Form.svelte.d.ts +13 -5
- package/dist/molecules/FormField.svelte +2 -1
- package/dist/molecules/Header.svelte +13 -3
- package/dist/molecules/Header.svelte.d.ts +2 -0
- package/dist/molecules/ImageUpload.svelte +54 -15
- package/dist/molecules/ImageUpload.svelte.d.ts +16 -5
- package/dist/molecules/Modal.svelte +110 -31
- package/dist/molecules/Modal.svelte.d.ts +9 -6
- package/dist/molecules/NavigationMenu.svelte +15 -3
- package/dist/molecules/NavigationMenu.svelte.d.ts +4 -0
- package/dist/molecules/NavigationMenuContent.svelte +36 -38
- package/dist/molecules/NavigationMenuContent.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuItem.svelte +10 -2
- package/dist/molecules/NavigationMenuItem.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuLink.svelte +10 -2
- package/dist/molecules/NavigationMenuLink.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuList.svelte +10 -2
- package/dist/molecules/NavigationMenuList.svelte.d.ts +2 -0
- package/dist/molecules/NavigationMenuTrigger.svelte +16 -3
- package/dist/molecules/NavigationMenuTrigger.svelte.d.ts +2 -0
- package/dist/molecules/Page.svelte +8 -2
- package/dist/molecules/Page.svelte.d.ts +2 -0
- package/dist/molecules/PropsTable.svelte +6 -3
- package/dist/molecules/PropsTable.svelte.d.ts +2 -0
- package/dist/molecules/RadioGroup.svelte +5 -1
- package/dist/molecules/RadioGroup.svelte.d.ts +2 -0
- package/dist/molecules/Section.svelte +12 -4
- package/dist/molecules/Section.svelte.d.ts +3 -1
- package/dist/molecules/SidebarBrandHeader.svelte +13 -4
- package/dist/molecules/SidebarBrandHeader.svelte.d.ts +2 -0
- package/dist/molecules/SidebarFooter.svelte +12 -4
- package/dist/molecules/SidebarFooter.svelte.d.ts +2 -0
- package/dist/molecules/SidebarNavSection.svelte +12 -4
- package/dist/molecules/SidebarNavSection.svelte.d.ts +2 -0
- package/dist/molecules/SlideUp.svelte +85 -21
- package/dist/molecules/SlideUp.svelte.d.ts +5 -4
- package/dist/molecules/Tabs.svelte +25 -19
- package/dist/molecules/Tabs.svelte.d.ts +8 -4
- package/dist/molecules/Toaster.svelte +3 -2
- package/dist/molecules/ToasterToast.svelte +41 -10
- package/dist/molecules/ToasterToast.svelte.d.ts +2 -0
- package/dist/organisms/SidebarAccountPanel.svelte +4 -0
- package/dist/organisms/SidebarAccountPanel.svelte.d.ts +2 -0
- package/dist/organisms/SidebarNavigation.svelte +102 -59
- package/dist/organisms/SidebarNavigation.svelte.d.ts +2 -0
- package/dist/organisms/SidebarPanel.svelte +19 -11
- package/dist/organisms/SidebarPanel.svelte.d.ts +2 -0
- package/dist/organisms/SidebarShell.svelte +112 -0
- package/dist/organisms/SidebarShell.svelte.d.ts +52 -0
- package/dist/organisms/TopNavbar.svelte +88 -17
- package/dist/organisms/TopNavbar.svelte.d.ts +2 -0
- package/dist/organisms/index.d.ts +1 -0
- package/dist/organisms/index.js +1 -0
- package/dist/routes/lib/variant-utils.d.ts +26 -0
- package/dist/routes/lib/{variant-utils.ts → variant-utils.js} +15 -46
- package/dist/types/events.js +1 -0
- package/dist/types/index.js +3 -0
- package/dist/util/cn.d.ts +7 -0
- package/dist/util/cn.js +48 -0
- package/dist/util/ssr-safe.d.ts +4 -4
- package/dist/zabi-components-colors.css +3 -437
- package/dist/zabi-components-theme-dark-only.css +223 -103
- package/dist/zabi-components-theme-dark.css +223 -103
- package/dist/zabi-components-theme-only.css +347 -107
- package/dist/zabi-components-theme.css +347 -107
- package/dist/zabi-components.css +953 -843
- package/docs/lucide-icons.md +3 -1
- package/package.json +20 -25
- package/dist/lib/layout-width-tokens.d.ts +0 -17
- package/dist/lib/layout-width-tokens.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Button.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Button.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Input.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Input.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/List.d.ts +0 -3
- package/dist/lib/showcase/component-docs/List.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Modal.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Modal.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Radio.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Radio.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts +0 -3
- package/dist/lib/showcase/component-docs/SidebarNavigation.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/Skeleton.d.ts +0 -3
- package/dist/lib/showcase/component-docs/Skeleton.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/_shared.d.ts +0 -12
- package/dist/lib/showcase/component-docs/_shared.d.ts.map +0 -1
- package/dist/lib/showcase/component-docs/index.d.ts +0 -4
- package/dist/lib/showcase/component-docs/index.d.ts.map +0 -1
- package/dist/lib/showcase/components-catalog.d.ts +0 -3
- package/dist/lib/showcase/components-catalog.d.ts.map +0 -1
- package/dist/lib/showcase/components-showcase-constants.d.ts +0 -89
- package/dist/lib/showcase/components-showcase-constants.d.ts.map +0 -1
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts +0 -15
- package/dist/lib/showcase/docs-sidebar-helpers.d.ts.map +0 -1
- package/dist/routes/lib/focus-utils.d.ts +0 -12
- package/dist/routes/lib/focus-utils.ts +0 -110
- package/dist/routes/lib/ssr-safe.ts +0 -58
- package/scripts/fix-lucide-svelte-icon-dts.js +0 -35
package/dist/atoms/Toggle.svelte
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { generateId } from "../util/ssr-safe.js";
|
|
3
|
+
import { cn } from "../util/cn.js";
|
|
3
4
|
|
|
4
5
|
interface Props {
|
|
6
|
+
/** Extra classes for the host element. */
|
|
7
|
+
class?: string;
|
|
8
|
+
/** Omit to auto-generate; pass to pair with an external `<label for>`. */
|
|
9
|
+
id?: string;
|
|
10
|
+
/** When set, a hidden input submits `value` with native forms while checked. */
|
|
11
|
+
name?: string;
|
|
12
|
+
value?: string;
|
|
5
13
|
checked?: boolean;
|
|
6
14
|
disabled?: boolean;
|
|
7
15
|
loading?: boolean;
|
|
@@ -11,6 +19,10 @@
|
|
|
11
19
|
}
|
|
12
20
|
|
|
13
21
|
let {
|
|
22
|
+
class: className = "",
|
|
23
|
+
id: idProp,
|
|
24
|
+
name = "",
|
|
25
|
+
value = "on",
|
|
14
26
|
checked = $bindable(false),
|
|
15
27
|
disabled = false,
|
|
16
28
|
loading = false,
|
|
@@ -20,7 +32,8 @@
|
|
|
20
32
|
...restProps
|
|
21
33
|
}: Props = $props();
|
|
22
34
|
|
|
23
|
-
const
|
|
35
|
+
const fallbackId = generateId("toggle");
|
|
36
|
+
const toggleId = $derived(idProp ?? fallbackId);
|
|
24
37
|
const isDisabled = $derived(disabled || loading);
|
|
25
38
|
|
|
26
39
|
function handleClick(event: MouseEvent) {
|
|
@@ -36,7 +49,7 @@
|
|
|
36
49
|
"focus-ring relative inline-flex w-10 h-6 flex-shrink-0 rounded-full border-0 transition-colors duration-200 ease-in-out focus:outline-none focus-visible:outline-none";
|
|
37
50
|
const colorClass = checked
|
|
38
51
|
? "bg-action-primary hover:bg-action-primary-hover active:bg-action-primary-active"
|
|
39
|
-
: "bg-
|
|
52
|
+
: "bg-control-track hover:bg-control-track-hover active:bg-control-track-active";
|
|
40
53
|
const stateClass = isDisabled
|
|
41
54
|
? "opacity-50 cursor-not-allowed"
|
|
42
55
|
: "cursor-pointer";
|
|
@@ -45,21 +58,13 @@
|
|
|
45
58
|
|
|
46
59
|
const toggleThumbClasses = $derived(() => {
|
|
47
60
|
const base =
|
|
48
|
-
"pointer-events-none absolute top-0.5 left-0.5 w-5 h-5 rounded-full bg-card shadow transition-transform duration-200 ease-in-out flex items-center justify-center";
|
|
61
|
+
"pointer-events-none absolute top-0.5 left-0.5 w-5 h-5 rounded-full bg-card shadow-sm transition-transform duration-200 ease-in-out flex items-center justify-center";
|
|
49
62
|
const positionClasses = checked ? "translate-x-4" : "translate-x-0";
|
|
50
63
|
return `${base} ${positionClasses}`;
|
|
51
64
|
});
|
|
52
|
-
|
|
53
|
-
function handleKeydown(event: KeyboardEvent) {
|
|
54
|
-
if (isDisabled) return;
|
|
55
|
-
if (event.key === " " || event.key === "Enter") {
|
|
56
|
-
event.preventDefault();
|
|
57
|
-
handleClick(event as unknown as MouseEvent);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
65
|
</script>
|
|
61
66
|
|
|
62
|
-
<div class="flex items-center gap-3">
|
|
67
|
+
<div class={cn("flex items-center gap-3", className)}>
|
|
63
68
|
<button
|
|
64
69
|
type="button"
|
|
65
70
|
role="switch"
|
|
@@ -69,7 +74,6 @@
|
|
|
69
74
|
aria-busy={loading ? "true" : undefined}
|
|
70
75
|
disabled={isDisabled}
|
|
71
76
|
onclick={handleClick}
|
|
72
|
-
onkeydown={handleKeydown}
|
|
73
77
|
class={toggleButtonClasses()}
|
|
74
78
|
{...restProps}
|
|
75
79
|
>
|
|
@@ -83,6 +87,10 @@
|
|
|
83
87
|
</span>
|
|
84
88
|
</button>
|
|
85
89
|
|
|
90
|
+
{#if name && checked}
|
|
91
|
+
<input type="hidden" {name} {value} />
|
|
92
|
+
{/if}
|
|
93
|
+
|
|
86
94
|
{#if label}
|
|
87
95
|
<label
|
|
88
96
|
for={toggleId}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
interface Props {
|
|
2
|
+
/** Extra classes for the host element. */
|
|
3
|
+
class?: string;
|
|
4
|
+
/** Omit to auto-generate; pass to pair with an external `<label for>`. */
|
|
5
|
+
id?: string;
|
|
6
|
+
/** When set, a hidden input submits `value` with native forms while checked. */
|
|
7
|
+
name?: string;
|
|
8
|
+
value?: string;
|
|
2
9
|
checked?: boolean;
|
|
3
10
|
disabled?: boolean;
|
|
4
11
|
loading?: boolean;
|
|
@@ -4,11 +4,27 @@
|
|
|
4
4
|
import { onDestroy } from "svelte";
|
|
5
5
|
import { generateId } from "../util/ssr-safe.js";
|
|
6
6
|
|
|
7
|
+
import { cn } from "../util/cn.js";
|
|
7
8
|
type Props = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
|
|
8
9
|
content?: string;
|
|
9
10
|
placement?: "top" | "bottom" | "left" | "right";
|
|
10
11
|
delay?: number;
|
|
11
12
|
disabled?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Lay the trigger out as a full-width block instead of an inline-block.
|
|
15
|
+
* A prop rather than a `class="block w-full"` override, because `block`
|
|
16
|
+
* and `inline-block` are equal-specificity utilities: the winner would
|
|
17
|
+
* be whichever Tailwind emits later, not whichever the caller passed.
|
|
18
|
+
*/
|
|
19
|
+
block?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Position the bubble against the viewport instead of the trigger's
|
|
22
|
+
* offset parent. An absolutely-positioned tooltip cannot escape an
|
|
23
|
+
* ancestor that scrolls: a collapsed sidebar rail sits inside an
|
|
24
|
+
* `overflow-y-auto overflow-x-hidden` list, which clipped the bubble
|
|
25
|
+
* at the rail edge and left only the arrow showing.
|
|
26
|
+
*/
|
|
27
|
+
fixed?: boolean;
|
|
12
28
|
class?: string;
|
|
13
29
|
children?: Snippet;
|
|
14
30
|
};
|
|
@@ -22,10 +38,43 @@
|
|
|
22
38
|
placement = "top",
|
|
23
39
|
delay = 0,
|
|
24
40
|
disabled = false,
|
|
41
|
+
block = false,
|
|
42
|
+
fixed = false,
|
|
43
|
+
class: className = "",
|
|
25
44
|
children,
|
|
26
45
|
...restProps
|
|
27
46
|
}: Props = $props();
|
|
28
47
|
|
|
48
|
+
let fixedStyle = $state("");
|
|
49
|
+
|
|
50
|
+
/** Gap must match --tooltip-gap's default (0.5rem). */
|
|
51
|
+
const FIXED_GAP = 8;
|
|
52
|
+
|
|
53
|
+
function positionFixed(): void {
|
|
54
|
+
if (!fixed || !triggerElement) return;
|
|
55
|
+
const r = triggerElement.getBoundingClientRect();
|
|
56
|
+
const coords = {
|
|
57
|
+
top: [r.left + r.width / 2, r.top - FIXED_GAP],
|
|
58
|
+
bottom: [r.left + r.width / 2, r.bottom + FIXED_GAP],
|
|
59
|
+
left: [r.left - FIXED_GAP, r.top + r.height / 2],
|
|
60
|
+
right: [r.right + FIXED_GAP, r.top + r.height / 2],
|
|
61
|
+
}[placement];
|
|
62
|
+
fixedStyle = `left:${coords[0]}px;top:${coords[1]}px;`;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
$effect(() => {
|
|
66
|
+
if (!fixed || !isVisible) return;
|
|
67
|
+
positionFixed();
|
|
68
|
+
const onMove = () => positionFixed();
|
|
69
|
+
// `true` so ancestor scrolls (the nav list itself) are caught too.
|
|
70
|
+
window.addEventListener("scroll", onMove, true);
|
|
71
|
+
window.addEventListener("resize", onMove);
|
|
72
|
+
return () => {
|
|
73
|
+
window.removeEventListener("scroll", onMove, true);
|
|
74
|
+
window.removeEventListener("resize", onMove);
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
|
|
29
78
|
const triggerId = generateId("tooltip-trigger");
|
|
30
79
|
const tooltipId = generateId("tooltip");
|
|
31
80
|
let isVisible = $state(false);
|
|
@@ -64,8 +113,7 @@
|
|
|
64
113
|
|
|
65
114
|
$effect(() => {
|
|
66
115
|
const root = triggerElement;
|
|
67
|
-
const describe =
|
|
68
|
-
isVisible && content && !disabled ? tooltipId : null;
|
|
116
|
+
const describe = isVisible && content && !disabled ? tooltipId : null;
|
|
69
117
|
if (!root) {
|
|
70
118
|
return;
|
|
71
119
|
}
|
|
@@ -100,7 +148,11 @@
|
|
|
100
148
|
clearShowDelay();
|
|
101
149
|
clearHideBlurTimeout();
|
|
102
150
|
isVisible = false;
|
|
103
|
-
|
|
151
|
+
// Keep focus on the described control; never steal it when the tooltip was hover-only.
|
|
152
|
+
const target = triggerElement ? findDescribedTarget(triggerElement) : null;
|
|
153
|
+
if (target && triggerElement?.contains(document.activeElement)) {
|
|
154
|
+
target.focus();
|
|
155
|
+
}
|
|
104
156
|
}
|
|
105
157
|
}
|
|
106
158
|
|
|
@@ -146,8 +198,13 @@
|
|
|
146
198
|
<svelte:window onkeydown={handleKeydown} />
|
|
147
199
|
|
|
148
200
|
<div
|
|
149
|
-
class=
|
|
201
|
+
class={cn(
|
|
202
|
+
"tooltip-container relative",
|
|
203
|
+
block ? "block w-full" : "inline-block",
|
|
204
|
+
className,
|
|
205
|
+
)}
|
|
150
206
|
data-placement={placement}
|
|
207
|
+
data-strategy={fixed ? "fixed" : "absolute"}
|
|
151
208
|
data-disabled={disabled}
|
|
152
209
|
onmouseenter={handleMouseEnter}
|
|
153
210
|
onmouseleave={handleMouseLeave}
|
|
@@ -155,18 +212,19 @@
|
|
|
155
212
|
onfocusout={handleBlur}
|
|
156
213
|
{...restProps}
|
|
157
214
|
>
|
|
158
|
-
<div bind:this={triggerElement} id={triggerId}>
|
|
215
|
+
<div bind:this={triggerElement} id={triggerId} class={block ? "w-full" : undefined}>
|
|
159
216
|
{@render children?.()}
|
|
160
217
|
</div>
|
|
161
218
|
|
|
162
219
|
{#if content && !disabled}
|
|
163
220
|
<div
|
|
164
221
|
id={tooltipId}
|
|
165
|
-
class="tooltip"
|
|
222
|
+
class="tooltip pointer-events-none invisible absolute z-tooltip whitespace-normal wrap-break-word rounded-control bg-tooltip-bg px-3 py-2 text-sm leading-5 text-tooltip-fg opacity-0 transition-[opacity,visibility,transform] duration-200 ease-in-out"
|
|
166
223
|
role="tooltip"
|
|
167
224
|
aria-hidden={!isVisible}
|
|
168
225
|
data-visible={isVisible}
|
|
169
226
|
data-placement={placement}
|
|
227
|
+
style={fixed ? fixedStyle : undefined}
|
|
170
228
|
>
|
|
171
229
|
{content}
|
|
172
230
|
</div>
|
|
@@ -174,48 +232,19 @@
|
|
|
174
232
|
</div>
|
|
175
233
|
|
|
176
234
|
<style>
|
|
177
|
-
:root
|
|
178
|
-
|
|
179
|
-
--tooltip-color: var(--color-base-50);
|
|
180
|
-
--tooltip-padding: 0.5rem 0.75rem;
|
|
181
|
-
--tooltip-radius: 0.5rem;
|
|
182
|
-
--tooltip-font-size: 0.875rem;
|
|
183
|
-
--tooltip-line-height: 1.25rem;
|
|
184
|
-
--tooltip-max-width: 200px;
|
|
185
|
-
--tooltip-gap: 0.5rem;
|
|
186
|
-
--tooltip-arrow-size: 4px;
|
|
187
|
-
--tooltip-transition: opacity 0.2s ease-in-out,
|
|
188
|
-
visibility 0.2s ease-in-out, transform 0.2s ease-in-out;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.tooltip-container {
|
|
192
|
-
position: relative;
|
|
193
|
-
display: inline-block;
|
|
194
|
-
}
|
|
195
|
-
|
|
235
|
+
/* Tunables (override on :root or any ancestor): --tooltip-max-width, --tooltip-gap, --tooltip-arrow-size. Defaults live in the var() fallbacks. */
|
|
236
|
+
/* max-width: policy forbids max-w-* utilities on packaged atoms; variable used by sm: override */
|
|
196
237
|
.tooltip {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
background-color: var(--tooltip-bg);
|
|
201
|
-
color: var(--tooltip-color);
|
|
202
|
-
border-radius: var(--tooltip-radius);
|
|
203
|
-
font-size: var(--tooltip-font-size);
|
|
204
|
-
line-height: var(--tooltip-line-height);
|
|
205
|
-
max-width: var(--tooltip-max-width);
|
|
206
|
-
white-space: normal;
|
|
207
|
-
word-wrap: break-word;
|
|
208
|
-
opacity: 0;
|
|
209
|
-
visibility: hidden;
|
|
210
|
-
transition: var(--tooltip-transition);
|
|
211
|
-
pointer-events: none;
|
|
238
|
+
width: -moz-max-content;
|
|
239
|
+
width: max-content;
|
|
240
|
+
max-width: var(--tooltip-max-width, min(24rem, calc(100vw - 2rem)));
|
|
212
241
|
}
|
|
213
242
|
|
|
214
243
|
.tooltip-container[data-placement="top"] .tooltip {
|
|
215
244
|
inset-block-end: 100%;
|
|
216
245
|
inset-inline-start: 50%;
|
|
217
246
|
transform: translateX(-50%) translateY(4px) scale(0.95);
|
|
218
|
-
margin-block-end: var(--tooltip-gap);
|
|
247
|
+
margin-block-end: var(--tooltip-gap, 0.5rem);
|
|
219
248
|
}
|
|
220
249
|
|
|
221
250
|
.tooltip-container[data-placement="top"] .tooltip[data-visible="true"] {
|
|
@@ -228,7 +257,7 @@
|
|
|
228
257
|
inset-block-start: 100%;
|
|
229
258
|
inset-inline-start: 50%;
|
|
230
259
|
transform: translateX(-50%) translateY(-4px) scale(0.95);
|
|
231
|
-
margin-block-start: var(--tooltip-gap);
|
|
260
|
+
margin-block-start: var(--tooltip-gap, 0.5rem);
|
|
232
261
|
}
|
|
233
262
|
|
|
234
263
|
.tooltip-container[data-placement="bottom"] .tooltip[data-visible="true"] {
|
|
@@ -241,7 +270,7 @@
|
|
|
241
270
|
inset-inline-end: 100%;
|
|
242
271
|
inset-block-start: 50%;
|
|
243
272
|
transform: translateY(-50%) translateX(4px) scale(0.95);
|
|
244
|
-
margin-inline-end: var(--tooltip-gap);
|
|
273
|
+
margin-inline-end: var(--tooltip-gap, 0.5rem);
|
|
245
274
|
}
|
|
246
275
|
|
|
247
276
|
.tooltip-container[data-placement="left"] .tooltip[data-visible="true"] {
|
|
@@ -254,7 +283,7 @@
|
|
|
254
283
|
inset-inline-start: 100%;
|
|
255
284
|
inset-block-start: 50%;
|
|
256
285
|
transform: translateY(-50%) translateX(-4px) scale(0.95);
|
|
257
|
-
margin-inline-start: var(--tooltip-gap);
|
|
286
|
+
margin-inline-start: var(--tooltip-gap, 0.5rem);
|
|
258
287
|
}
|
|
259
288
|
|
|
260
289
|
.tooltip-container[data-placement="right"] .tooltip[data-visible="true"] {
|
|
@@ -263,12 +292,21 @@
|
|
|
263
292
|
transform: translateY(-50%) translateX(0) scale(1);
|
|
264
293
|
}
|
|
265
294
|
|
|
295
|
+
/* Fixed strategy: the bubble is placed against the viewport from the
|
|
296
|
+
trigger's rect, so a scrolling ancestor cannot clip it. Insets and
|
|
297
|
+
margins are reset; the transforms above still do the centring. */
|
|
298
|
+
.tooltip-container[data-strategy="fixed"] .tooltip {
|
|
299
|
+
position: fixed;
|
|
300
|
+
inset: auto;
|
|
301
|
+
margin: 0;
|
|
302
|
+
}
|
|
303
|
+
|
|
266
304
|
.tooltip::before {
|
|
267
305
|
content: "";
|
|
268
306
|
position: absolute;
|
|
269
|
-
width: calc(var(--tooltip-arrow-size) * 2);
|
|
270
|
-
height: calc(var(--tooltip-arrow-size) * 2);
|
|
271
|
-
background-color: var(--tooltip-bg);
|
|
307
|
+
width: calc(var(--tooltip-arrow-size, 4px) * 2);
|
|
308
|
+
height: calc(var(--tooltip-arrow-size, 4px) * 2);
|
|
309
|
+
background-color: var(--color-tooltip-bg);
|
|
272
310
|
}
|
|
273
311
|
|
|
274
312
|
.tooltip-container[data-placement="top"] .tooltip::before {
|
|
@@ -299,17 +337,13 @@
|
|
|
299
337
|
clip-path: polygon(0 50%, 100% 0, 100% 100%);
|
|
300
338
|
}
|
|
301
339
|
|
|
302
|
-
.tooltip-container[data-delay] .tooltip {
|
|
303
|
-
transition-delay: calc(var(--tooltip-delay, 0) * 1ms);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
340
|
@media (max-width: 640px) {
|
|
307
341
|
.tooltip {
|
|
308
342
|
--tooltip-max-width: calc(100vw - 2rem);
|
|
309
343
|
inset-inline-start: 50% !important;
|
|
310
344
|
inset-inline-end: auto !important;
|
|
311
345
|
transform: translateX(-50%) scale(0.95) !important;
|
|
312
|
-
margin: var(--tooltip-gap) 0 !important;
|
|
346
|
+
margin: var(--tooltip-gap, 0.5rem) 0 !important;
|
|
313
347
|
}
|
|
314
348
|
|
|
315
349
|
.tooltip[data-visible="true"] {
|
|
@@ -322,10 +356,8 @@
|
|
|
322
356
|
}
|
|
323
357
|
|
|
324
358
|
@media (prefers-contrast: high) {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
--tooltip-color: Canvas;
|
|
328
|
-
--tooltip-padding: 0.75rem 1rem;
|
|
359
|
+
.tooltip {
|
|
360
|
+
padding: 0.75rem 1rem;
|
|
329
361
|
}
|
|
330
362
|
}
|
|
331
363
|
|
|
@@ -354,6 +386,6 @@
|
|
|
354
386
|
box-shadow:
|
|
355
387
|
0 0 0 2px var(--color-focus-ring-offset),
|
|
356
388
|
0 0 0 4px var(--color-focus-ring);
|
|
357
|
-
border-radius:
|
|
389
|
+
border-radius: 0.5rem;
|
|
358
390
|
}
|
|
359
391
|
</style>
|
|
@@ -5,6 +5,21 @@ type Props = Omit<HTMLAttributes<HTMLDivElement>, "class"> & {
|
|
|
5
5
|
placement?: "top" | "bottom" | "left" | "right";
|
|
6
6
|
delay?: number;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Lay the trigger out as a full-width block instead of an inline-block.
|
|
10
|
+
* A prop rather than a `class="block w-full"` override, because `block`
|
|
11
|
+
* and `inline-block` are equal-specificity utilities: the winner would
|
|
12
|
+
* be whichever Tailwind emits later, not whichever the caller passed.
|
|
13
|
+
*/
|
|
14
|
+
block?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Position the bubble against the viewport instead of the trigger's
|
|
17
|
+
* offset parent. An absolutely-positioned tooltip cannot escape an
|
|
18
|
+
* ancestor that scrolls: a collapsed sidebar rail sits inside an
|
|
19
|
+
* `overflow-y-auto overflow-x-hidden` list, which clipped the bubble
|
|
20
|
+
* at the rail edge and left only the arrow showing.
|
|
21
|
+
*/
|
|
22
|
+
fixed?: boolean;
|
|
8
23
|
class?: string;
|
|
9
24
|
children?: Snippet;
|
|
10
25
|
};
|
|
@@ -56,9 +56,11 @@ export { default as SidebarNavSection } from './molecules/SidebarNavSection.svel
|
|
|
56
56
|
export { toastStore, pushToast, dismissToast, type ToastItem, type ToastLevel, } from './molecules/toast-store.js';
|
|
57
57
|
export { default as TopNavbar } from './organisms/TopNavbar.svelte';
|
|
58
58
|
export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
|
|
59
|
+
export { default as SidebarShell } from './organisms/SidebarShell.svelte';
|
|
59
60
|
export { default as SidebarAccountPanel } from './organisms/SidebarAccountPanel.svelte';
|
|
60
61
|
export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
|
|
61
|
-
|
|
62
|
+
import { generateId } from './util/ssr-safe.js';
|
|
63
|
+
export { generateId };
|
|
62
64
|
export declare const createId: (prefix?: string) => string;
|
|
63
65
|
export declare const cn: (...classes: (string | undefined | null | false)[]) => string;
|
|
64
66
|
export declare const getFormData: (form: HTMLFormElement) => Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as TopNavbar } from './TopNavbar.svelte';
|
|
2
2
|
export { default as SidebarNavigation } from './SidebarNavigation.svelte';
|
|
3
|
+
export { default as SidebarShell } from './SidebarShell.svelte';
|
|
3
4
|
export { default as SidebarAccountPanel } from './SidebarAccountPanel.svelte';
|
|
4
5
|
export { default as SidebarPanel } from './SidebarPanel.svelte';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/organisms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge class values, last conflicting utility wins.
|
|
3
|
+
*
|
|
4
|
+
* Falsy entries are dropped, so `cn(base, isActive && activeClasses, className)`
|
|
5
|
+
* is safe.
|
|
6
|
+
*/
|
|
7
|
+
export declare function cn(...classes: (string | false | null | undefined)[]): string;
|
|
8
|
+
//# sourceMappingURL=cn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../../src/components/util/cn.ts"],"names":[],"mappings":"AA6CA;;;;;GAKG;AACH,wBAAgB,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAE5E"}
|
|
@@ -9,9 +9,9 @@ export declare function safeDocument(): Document | undefined;
|
|
|
9
9
|
export declare function safeLocalStorage(): Storage | undefined;
|
|
10
10
|
export declare function safeSessionStorage(): Storage | undefined;
|
|
11
11
|
export declare function safeRequestAnimationFrame(callback: FrameRequestCallback): number | undefined;
|
|
12
|
-
export declare function safeSetTimeout(callback: () => void, delay: number):
|
|
13
|
-
export declare function safeClearTimeout(id:
|
|
14
|
-
export declare function safeSetInterval(callback: () => void, delay: number):
|
|
15
|
-
export declare function safeClearInterval(id:
|
|
12
|
+
export declare function safeSetTimeout(callback: () => void, delay: number): ReturnType<typeof setTimeout> | undefined;
|
|
13
|
+
export declare function safeClearTimeout(id: ReturnType<typeof setTimeout> | undefined): void;
|
|
14
|
+
export declare function safeSetInterval(callback: () => void, delay: number): ReturnType<typeof setInterval> | undefined;
|
|
15
|
+
export declare function safeClearInterval(id: ReturnType<typeof setInterval> | undefined): void;
|
|
16
16
|
export declare function generateId(prefix?: string): string;
|
|
17
17
|
//# sourceMappingURL=ssr-safe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-safe.d.ts","sourceRoot":"","sources":["../../../src/components/util/ssr-safe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAE/C;AAED,wBAAgB,YAAY,IAAI,QAAQ,GAAG,SAAS,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,SAAS,CAEtD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,GAAG,SAAS,CAExD;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"ssr-safe.d.ts","sourceRoot":"","sources":["../../../src/components/util/ssr-safe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAE/C;AAED,wBAAgB,YAAY,IAAI,QAAQ,GAAG,SAAS,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,OAAO,GAAG,SAAS,CAEtD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,GAAG,SAAS,CAExD;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAE7G;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,CAIpF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,SAAS,CAE/G;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,SAAS,GAAG,IAAI,CAItF;AAGD,wBAAgB,UAAU,CAAC,MAAM,GAAE,MAAa,GAAG,MAAM,CAMxD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -56,9 +56,11 @@ export { default as SidebarNavSection } from './molecules/SidebarNavSection.svel
|
|
|
56
56
|
export { toastStore, pushToast, dismissToast, type ToastItem, type ToastLevel, } from './molecules/toast-store.js';
|
|
57
57
|
export { default as TopNavbar } from './organisms/TopNavbar.svelte';
|
|
58
58
|
export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
|
|
59
|
+
export { default as SidebarShell } from './organisms/SidebarShell.svelte';
|
|
59
60
|
export { default as SidebarAccountPanel } from './organisms/SidebarAccountPanel.svelte';
|
|
60
61
|
export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
|
|
61
|
-
|
|
62
|
+
import { generateId } from './util/ssr-safe.js';
|
|
63
|
+
export { generateId };
|
|
62
64
|
export declare const createId: (prefix?: string) => string;
|
|
63
65
|
export declare const cn: (...classes: (string | undefined | null | false)[]) => string;
|
|
64
66
|
export declare const getFormData: (form: HTMLFormElement) => Record<string, unknown>;
|
package/dist/index.js
CHANGED
|
@@ -56,14 +56,11 @@ export { default as SidebarNavSection } from './molecules/SidebarNavSection.svel
|
|
|
56
56
|
export { toastStore, pushToast, dismissToast, } from './molecules/toast-store.js';
|
|
57
57
|
export { default as TopNavbar } from './organisms/TopNavbar.svelte';
|
|
58
58
|
export { default as SidebarNavigation } from './organisms/SidebarNavigation.svelte';
|
|
59
|
+
export { default as SidebarShell } from './organisms/SidebarShell.svelte';
|
|
59
60
|
export { default as SidebarAccountPanel } from './organisms/SidebarAccountPanel.svelte';
|
|
60
61
|
export { default as SidebarPanel } from './organisms/SidebarPanel.svelte';
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return `${prefix}-${Math.random().toString(36).substr(2, 9)}`;
|
|
64
|
-
}
|
|
65
|
-
return `${prefix}-ssr-${Date.now()}`;
|
|
66
|
-
};
|
|
62
|
+
import { generateId } from './util/ssr-safe.js';
|
|
63
|
+
export { generateId };
|
|
67
64
|
export const createId = (prefix = 'id') => generateId(prefix);
|
|
68
65
|
export const cn = (...classes) => classes.filter(Boolean).join(' ');
|
|
69
66
|
export const getFormData = (form) => {
|