@svadmin/ui 0.29.1 → 0.29.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.
- package/package.json +20 -9
- package/src/README.md +0 -18
- package/src/actions.ts +0 -110
- package/src/app.css +0 -673
- package/src/component-registry.svelte.ts +0 -60
- package/src/components/AICommandBar.svelte +0 -180
- package/src/components/AboutSettings.svelte +0 -106
- package/src/components/AdminApp.svelte +0 -199
- package/src/components/AnimatedCounter.svelte +0 -46
- package/src/components/AnomalyBadge.svelte +0 -65
- package/src/components/AppearanceSettings.svelte +0 -183
- package/src/components/AuditLogDrawer.svelte +0 -93
- package/src/components/AuditLogViewer.svelte +0 -226
- package/src/components/Authenticated.svelte +0 -51
- package/src/components/AutoForm.svelte +0 -242
- package/src/components/AutoSaveIndicator.svelte +0 -35
- package/src/components/AutoTable.svelte +0 -839
- package/src/components/Breadcrumbs.svelte +0 -58
- package/src/components/CanAccess.svelte +0 -23
- package/src/components/CatchAllNavigate.svelte +0 -21
- package/src/components/ChatDialog.svelte +0 -535
- package/src/components/ComboboxField.svelte +0 -129
- package/src/components/CommandPalette.svelte +0 -135
- package/src/components/ConfigErrorScreen.svelte +0 -126
- package/src/components/ConfirmDialog.svelte +0 -53
- package/src/components/CopilotPanel.svelte +0 -163
- package/src/components/CreatePage.svelte +0 -39
- package/src/components/DevTools.svelte +0 -149
- package/src/components/DraggableGrid.svelte +0 -86
- package/src/components/DraggableHeader.svelte +0 -112
- package/src/components/DrawerForm.svelte +0 -35
- package/src/components/EditPage.svelte +0 -52
- package/src/components/EmptyState.svelte +0 -31
- package/src/components/ErrorBoundary.svelte +0 -49
- package/src/components/ErrorComponent.svelte +0 -36
- package/src/components/FieldRenderer.svelte +0 -357
- package/src/components/ForgotPasswordPage.svelte +0 -112
- package/src/components/Header.svelte +0 -94
- package/src/components/InferencerPanel.svelte +0 -192
- package/src/components/InfiniteList.svelte +0 -93
- package/src/components/InlineEdit.svelte +0 -88
- package/src/components/InsightCard.svelte +0 -98
- package/src/components/KeyboardShortcuts.svelte +0 -61
- package/src/components/Layout.svelte +0 -167
- package/src/components/ListPage.svelte +0 -71
- package/src/components/LiveIndicator.svelte +0 -58
- package/src/components/LoginPage.svelte +0 -163
- package/src/components/MarkdownRenderer.svelte +0 -127
- package/src/components/ModalForm.svelte +0 -38
- package/src/components/NavigateToResource.svelte +0 -20
- package/src/components/PageHeader.svelte +0 -39
- package/src/components/PageSkeleton.svelte +0 -71
- package/src/components/PasswordInput.svelte +0 -96
- package/src/components/PermissionMatrix.svelte +0 -185
- package/src/components/ProfilePage.svelte +0 -284
- package/src/components/RegisterPage.svelte +0 -112
- package/src/components/RolesSettings.svelte +0 -146
- package/src/components/SettingsPage.svelte +0 -113
- package/src/components/ShowPage.svelte +0 -73
- package/src/components/Sidebar.svelte +0 -417
- package/src/components/SidebarItem.svelte +0 -129
- package/src/components/SmartSuggest.svelte +0 -158
- package/src/components/StatsCard.svelte +0 -79
- package/src/components/StepsForm.svelte +0 -192
- package/src/components/TaskQueueDrawer.svelte +0 -158
- package/src/components/TenantSwitcher.svelte +0 -84
- package/src/components/ThemedTitle.svelte +0 -32
- package/src/components/Toast.svelte +0 -46
- package/src/components/TooltipButton.svelte +0 -42
- package/src/components/UndoableNotification.svelte +0 -69
- package/src/components/UpdatePasswordPage.svelte +0 -89
- package/src/components/VirtualTable.svelte +0 -76
- package/src/components/VoiceInput.svelte +0 -120
- package/src/components/buttons/CloneButton.svelte +0 -30
- package/src/components/buttons/CreateButton.svelte +0 -29
- package/src/components/buttons/DeleteButton.svelte +0 -59
- package/src/components/buttons/EditButton.svelte +0 -30
- package/src/components/buttons/ExportButton.svelte +0 -30
- package/src/components/buttons/ImportButton.svelte +0 -56
- package/src/components/buttons/ListButton.svelte +0 -23
- package/src/components/buttons/RefreshButton.svelte +0 -36
- package/src/components/buttons/SaveButton.svelte +0 -27
- package/src/components/buttons/ShowButton.svelte +0 -31
- package/src/components/buttons/index.ts +0 -10
- package/src/components/charts/BarChart.svelte +0 -69
- package/src/components/charts/LineChart.svelte +0 -115
- package/src/components/charts/PieChart.svelte +0 -95
- package/src/components/charts/index.ts +0 -3
- package/src/components/fieldComponentMap.ts +0 -79
- package/src/components/fields/ArrayField.svelte +0 -86
- package/src/components/fields/BooleanField.svelte +0 -13
- package/src/components/fields/DateField.svelte +0 -6
- package/src/components/fields/EmailField.svelte +0 -9
- package/src/components/fields/FileField.svelte +0 -14
- package/src/components/fields/ImageField.svelte +0 -9
- package/src/components/fields/JsonField.svelte +0 -72
- package/src/components/fields/MarkdownField.svelte +0 -9
- package/src/components/fields/MultiSelectField.svelte +0 -21
- package/src/components/fields/NumberField.svelte +0 -6
- package/src/components/fields/RelationField.svelte +0 -24
- package/src/components/fields/RichTextField.svelte +0 -35
- package/src/components/fields/SelectField.svelte +0 -14
- package/src/components/fields/TagField.svelte +0 -12
- package/src/components/fields/TextField.svelte +0 -11
- package/src/components/fields/UrlField.svelte +0 -14
- package/src/components/ui/alert/alert-description.svelte +0 -17
- package/src/components/ui/alert/alert-title.svelte +0 -17
- package/src/components/ui/alert/alert.svelte +0 -44
- package/src/components/ui/alert/index.ts +0 -15
- package/src/components/ui/alert-dialog/alert-dialog-content.svelte +0 -29
- package/src/components/ui/alert-dialog/alert-dialog-description.svelte +0 -16
- package/src/components/ui/alert-dialog/alert-dialog-footer.svelte +0 -11
- package/src/components/ui/alert-dialog/alert-dialog-header.svelte +0 -11
- package/src/components/ui/alert-dialog/alert-dialog-overlay.svelte +0 -16
- package/src/components/ui/alert-dialog/alert-dialog-portal.svelte +0 -6
- package/src/components/ui/alert-dialog/alert-dialog-title.svelte +0 -16
- package/src/components/ui/alert-dialog/index.ts +0 -20
- package/src/components/ui/avatar/avatar.svelte +0 -63
- package/src/components/ui/avatar/index.ts +0 -2
- package/src/components/ui/badge/badge.svelte +0 -49
- package/src/components/ui/badge/index.ts +0 -3
- package/src/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +0 -18
- package/src/components/ui/breadcrumb/breadcrumb-item.svelte +0 -15
- package/src/components/ui/breadcrumb/breadcrumb-link.svelte +0 -15
- package/src/components/ui/breadcrumb/breadcrumb-list.svelte +0 -15
- package/src/components/ui/breadcrumb/breadcrumb-page.svelte +0 -18
- package/src/components/ui/breadcrumb/breadcrumb-separator.svelte +0 -22
- package/src/components/ui/breadcrumb/breadcrumb.svelte +0 -11
- package/src/components/ui/breadcrumb/index.ts +0 -7
- package/src/components/ui/button/button.svelte +0 -90
- package/src/components/ui/button/index.ts +0 -18
- package/src/components/ui/card/card-action.svelte +0 -23
- package/src/components/ui/card/card-content.svelte +0 -20
- package/src/components/ui/card/card-description.svelte +0 -20
- package/src/components/ui/card/card-footer.svelte +0 -20
- package/src/components/ui/card/card-header.svelte +0 -23
- package/src/components/ui/card/card-title.svelte +0 -15
- package/src/components/ui/card/card.svelte +0 -22
- package/src/components/ui/card/index.ts +0 -25
- package/src/components/ui/checkbox/checkbox.svelte +0 -39
- package/src/components/ui/checkbox/index.ts +0 -6
- package/src/components/ui/collapsible/index.ts +0 -7
- package/src/components/ui/command/command-dialog.svelte +0 -31
- package/src/components/ui/command/index.ts +0 -2
- package/src/components/ui/context-menu/index.ts +0 -11
- package/src/components/ui/dialog/dialog-close.svelte +0 -11
- package/src/components/ui/dialog/dialog-content.svelte +0 -48
- package/src/components/ui/dialog/dialog-description.svelte +0 -17
- package/src/components/ui/dialog/dialog-footer.svelte +0 -32
- package/src/components/ui/dialog/dialog-header.svelte +0 -20
- package/src/components/ui/dialog/dialog-overlay.svelte +0 -17
- package/src/components/ui/dialog/dialog-portal.svelte +0 -7
- package/src/components/ui/dialog/dialog-title.svelte +0 -17
- package/src/components/ui/dialog/dialog-trigger.svelte +0 -11
- package/src/components/ui/dialog/dialog.svelte +0 -7
- package/src/components/ui/dialog/index.ts +0 -34
- package/src/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +0 -43
- package/src/components/ui/dropdown-menu/dropdown-menu-content.svelte +0 -35
- package/src/components/ui/dropdown-menu/dropdown-menu-item.svelte +0 -36
- package/src/components/ui/dropdown-menu/dropdown-menu-separator.svelte +0 -10
- package/src/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +0 -27
- package/src/components/ui/dropdown-menu/dropdown-menu.svelte +0 -45
- package/src/components/ui/dropdown-menu/index.ts +0 -21
- package/src/components/ui/input/index.ts +0 -7
- package/src/components/ui/input/input.svelte +0 -48
- package/src/components/ui/label/index.ts +0 -1
- package/src/components/ui/label/label.svelte +0 -18
- package/src/components/ui/pagination/index.ts +0 -7
- package/src/components/ui/pagination/pagination-content.svelte +0 -11
- package/src/components/ui/pagination/pagination-ellipsis.svelte +0 -12
- package/src/components/ui/pagination/pagination-item.svelte +0 -11
- package/src/components/ui/pagination/pagination-link.svelte +0 -26
- package/src/components/ui/pagination/pagination-next.svelte +0 -22
- package/src/components/ui/pagination/pagination-previous.svelte +0 -22
- package/src/components/ui/pagination/pagination.svelte +0 -11
- package/src/components/ui/popover/index.ts +0 -12
- package/src/components/ui/popover/popover-content.svelte +0 -25
- package/src/components/ui/progress/index.ts +0 -1
- package/src/components/ui/progress/progress.svelte +0 -22
- package/src/components/ui/scroll-area/index.ts +0 -1
- package/src/components/ui/scroll-area/scroll-area.svelte +0 -20
- package/src/components/ui/select/index.ts +0 -2
- package/src/components/ui/select/select.svelte +0 -36
- package/src/components/ui/separator/index.ts +0 -7
- package/src/components/ui/separator/separator.svelte +0 -23
- package/src/components/ui/sheet/index.ts +0 -16
- package/src/components/ui/sheet/sheet-content.svelte +0 -28
- package/src/components/ui/sheet/sheet-description.svelte +0 -22
- package/src/components/ui/sheet/sheet-footer.svelte +0 -22
- package/src/components/ui/sheet/sheet-header.svelte +0 -22
- package/src/components/ui/sheet/sheet-title.svelte +0 -22
- package/src/components/ui/sheet/sheet.svelte +0 -78
- package/src/components/ui/skeleton/index.ts +0 -2
- package/src/components/ui/skeleton/skeleton.svelte +0 -21
- package/src/components/ui/switch/index.ts +0 -2
- package/src/components/ui/switch/switch.svelte +0 -49
- package/src/components/ui/table/index.ts +0 -28
- package/src/components/ui/table/table-body.svelte +0 -15
- package/src/components/ui/table/table-caption.svelte +0 -20
- package/src/components/ui/table/table-cell.svelte +0 -15
- package/src/components/ui/table/table-footer.svelte +0 -20
- package/src/components/ui/table/table-head.svelte +0 -15
- package/src/components/ui/table/table-header.svelte +0 -20
- package/src/components/ui/table/table-row.svelte +0 -15
- package/src/components/ui/table/table.svelte +0 -17
- package/src/components/ui/tabs/index.ts +0 -15
- package/src/components/ui/tabs/tabs-content.svelte +0 -30
- package/src/components/ui/tabs/tabs-list.svelte +0 -26
- package/src/components/ui/tabs/tabs-trigger.svelte +0 -37
- package/src/components/ui/tabs/tabs.svelte +0 -27
- package/src/components/ui/textarea/index.ts +0 -2
- package/src/components/ui/textarea/textarea.svelte +0 -24
- package/src/components/ui/tooltip/index.ts +0 -19
- package/src/components/ui/tooltip/tooltip-content.svelte +0 -52
- package/src/components/ui/tooltip/tooltip-portal.svelte +0 -7
- package/src/components/ui/tooltip/tooltip-provider.svelte +0 -7
- package/src/components/ui/tooltip/tooltip-trigger.svelte +0 -7
- package/src/components/ui/tooltip/tooltip.svelte +0 -10
- package/src/editor-config.svelte.ts +0 -23
- package/src/index.ts +0 -155
- package/src/markdown-deps.d.ts +0 -21
- package/src/router-state.svelte.ts +0 -65
- package/src/types.ts +0 -33
- package/src/utils.ts +0 -28
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Dialog as DialogPrimitive } from "bits-ui";
|
|
3
|
-
import { cn } from "../../../utils.js";
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
ref = $bindable(null),
|
|
7
|
-
class: className,
|
|
8
|
-
...restProps
|
|
9
|
-
}: DialogPrimitive.TitleProps = $props();
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<DialogPrimitive.Title
|
|
13
|
-
bind:ref
|
|
14
|
-
data-slot="dialog-title"
|
|
15
|
-
class={cn("text-lg leading-none font-semibold", className)}
|
|
16
|
-
{...restProps}
|
|
17
|
-
/>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Dialog as DialogPrimitive } from "bits-ui";
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
ref = $bindable(null),
|
|
6
|
-
type = "button",
|
|
7
|
-
...restProps
|
|
8
|
-
}: DialogPrimitive.TriggerProps = $props();
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<DialogPrimitive.Trigger bind:ref data-slot="dialog-trigger" {type} {...restProps} />
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import Root from "./dialog.svelte";
|
|
2
|
-
import Portal from "./dialog-portal.svelte";
|
|
3
|
-
import Title from "./dialog-title.svelte";
|
|
4
|
-
import Footer from "./dialog-footer.svelte";
|
|
5
|
-
import Header from "./dialog-header.svelte";
|
|
6
|
-
import Overlay from "./dialog-overlay.svelte";
|
|
7
|
-
import Content from "./dialog-content.svelte";
|
|
8
|
-
import Description from "./dialog-description.svelte";
|
|
9
|
-
import Trigger from "./dialog-trigger.svelte";
|
|
10
|
-
import Close from "./dialog-close.svelte";
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
Root,
|
|
14
|
-
Title,
|
|
15
|
-
Portal,
|
|
16
|
-
Footer,
|
|
17
|
-
Header,
|
|
18
|
-
Trigger,
|
|
19
|
-
Overlay,
|
|
20
|
-
Content,
|
|
21
|
-
Description,
|
|
22
|
-
Close,
|
|
23
|
-
//
|
|
24
|
-
Root as Dialog,
|
|
25
|
-
Title as DialogTitle,
|
|
26
|
-
Portal as DialogPortal,
|
|
27
|
-
Footer as DialogFooter,
|
|
28
|
-
Header as DialogHeader,
|
|
29
|
-
Trigger as DialogTrigger,
|
|
30
|
-
Overlay as DialogOverlay,
|
|
31
|
-
Content as DialogContent,
|
|
32
|
-
Description as DialogDescription,
|
|
33
|
-
Close as DialogClose,
|
|
34
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = WithElementRef<HTMLButtonAttributes, HTMLButtonElement> & {
|
|
6
|
-
checked?: boolean;
|
|
7
|
-
onCheckedChange?: (checked: boolean) => void;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
let {
|
|
11
|
-
ref = $bindable(null),
|
|
12
|
-
class: className,
|
|
13
|
-
checked = false,
|
|
14
|
-
onCheckedChange,
|
|
15
|
-
children,
|
|
16
|
-
...restProps
|
|
17
|
-
}: Props = $props();
|
|
18
|
-
|
|
19
|
-
function handleClick() {
|
|
20
|
-
const next = !checked;
|
|
21
|
-
onCheckedChange?.(next);
|
|
22
|
-
}
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<button
|
|
26
|
-
bind:this={ref}
|
|
27
|
-
role="menuitemcheckbox"
|
|
28
|
-
aria-checked={checked}
|
|
29
|
-
data-slot="dropdown-menu-checkbox-item"
|
|
30
|
-
class={cn(
|
|
31
|
-
"relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
32
|
-
className
|
|
33
|
-
)}
|
|
34
|
-
onclick={handleClick}
|
|
35
|
-
{...restProps}
|
|
36
|
-
>
|
|
37
|
-
<span class="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
|
|
38
|
-
{#if checked}
|
|
39
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>
|
|
40
|
-
{/if}
|
|
41
|
-
</span>
|
|
42
|
-
{@render children?.()}
|
|
43
|
-
</button>
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLAttributes } from "svelte/elements";
|
|
4
|
-
import { getContext } from "svelte";
|
|
5
|
-
|
|
6
|
-
type Props = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
7
|
-
align?: "start" | "center" | "end";
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
let {
|
|
11
|
-
ref = $bindable(null),
|
|
12
|
-
align = "end",
|
|
13
|
-
class: className,
|
|
14
|
-
children,
|
|
15
|
-
...restProps
|
|
16
|
-
}: Props = $props();
|
|
17
|
-
|
|
18
|
-
let isOpen = $derived(getContext<() => boolean>("svadmin-dropdown-open")?.() ?? true);
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
{#if isOpen}
|
|
22
|
-
<div
|
|
23
|
-
bind:this={ref}
|
|
24
|
-
data-slot="dropdown-menu-content"
|
|
25
|
-
class={cn(
|
|
26
|
-
"bg-popover text-popover-foreground z-50 min-w-[8rem] overflow-hidden rounded-lg border p-1 shadow-lg",
|
|
27
|
-
"absolute mt-1 animate-in fade-in-0 zoom-in-95",
|
|
28
|
-
align === "end" ? "right-0" : align === "start" ? "left-0" : "left-1/2 -translate-x-1/2",
|
|
29
|
-
className
|
|
30
|
-
)}
|
|
31
|
-
{...restProps}
|
|
32
|
-
>
|
|
33
|
-
{@render children?.()}
|
|
34
|
-
</div>
|
|
35
|
-
{/if}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = WithElementRef<HTMLButtonAttributes, HTMLButtonElement> & {
|
|
6
|
-
inset?: boolean;
|
|
7
|
-
destructive?: boolean;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
let {
|
|
11
|
-
ref = $bindable(null),
|
|
12
|
-
inset = false,
|
|
13
|
-
destructive = false,
|
|
14
|
-
class: className,
|
|
15
|
-
children,
|
|
16
|
-
...restProps
|
|
17
|
-
}: Props = $props();
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<button
|
|
21
|
-
bind:this={ref}
|
|
22
|
-
type="button"
|
|
23
|
-
data-slot="dropdown-menu-item"
|
|
24
|
-
class={cn(
|
|
25
|
-
"relative flex w-full cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-none transition-colors [&_svg]:size-4 [&_svg]:shrink-0",
|
|
26
|
-
destructive
|
|
27
|
-
? "text-destructive hover:bg-destructive/10 focus:bg-destructive/10"
|
|
28
|
-
: "hover:bg-accent focus:bg-accent focus:text-accent-foreground",
|
|
29
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
30
|
-
inset && "pl-8",
|
|
31
|
-
className
|
|
32
|
-
)}
|
|
33
|
-
{...restProps}
|
|
34
|
-
>
|
|
35
|
-
{@render children?.()}
|
|
36
|
-
</button>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = WithElementRef<HTMLButtonAttributes, HTMLButtonElement>;
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
ref = $bindable(null),
|
|
9
|
-
class: className,
|
|
10
|
-
children,
|
|
11
|
-
child,
|
|
12
|
-
...restProps
|
|
13
|
-
}: Props & { child?: import("svelte").Snippet<[{ props: Record<string, unknown> }]> } = $props();
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
{#if child}
|
|
17
|
-
{@render child({ props: { ...restProps, class: cn(className), "data-slot": "dropdown-menu-trigger" } })}
|
|
18
|
-
{:else}
|
|
19
|
-
<button
|
|
20
|
-
bind:this={ref}
|
|
21
|
-
data-slot="dropdown-menu-trigger"
|
|
22
|
-
class={cn(className)}
|
|
23
|
-
{...restProps}
|
|
24
|
-
>
|
|
25
|
-
{@render children?.()}
|
|
26
|
-
</button>
|
|
27
|
-
{/if}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
6
|
-
open?: boolean;
|
|
7
|
-
onOpenChange?: (open: boolean) => void;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
let {
|
|
11
|
-
ref = $bindable(null),
|
|
12
|
-
open = $bindable(false),
|
|
13
|
-
onOpenChange,
|
|
14
|
-
class: className,
|
|
15
|
-
children,
|
|
16
|
-
...restProps
|
|
17
|
-
}: Props = $props();
|
|
18
|
-
|
|
19
|
-
import { setContext } from "svelte";
|
|
20
|
-
|
|
21
|
-
function handleClickOutside(e: MouseEvent) {
|
|
22
|
-
if (ref && !ref.contains(e.target as Node)) {
|
|
23
|
-
open = false;
|
|
24
|
-
onOpenChange?.(false);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
setContext("svadmin-dropdown-open", () => open);
|
|
29
|
-
|
|
30
|
-
$effect(() => {
|
|
31
|
-
if (open) {
|
|
32
|
-
document.addEventListener('click', handleClickOutside, true);
|
|
33
|
-
return () => document.removeEventListener('click', handleClickOutside, true);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
</script>
|
|
37
|
-
|
|
38
|
-
<div
|
|
39
|
-
bind:this={ref}
|
|
40
|
-
data-slot="dropdown-menu"
|
|
41
|
-
class={cn("relative inline-block", className)}
|
|
42
|
-
{...restProps}
|
|
43
|
-
>
|
|
44
|
-
{@render children?.()}
|
|
45
|
-
</div>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import DropdownMenu from "./dropdown-menu.svelte";
|
|
2
|
-
import DropdownMenuContent from "./dropdown-menu-content.svelte";
|
|
3
|
-
import DropdownMenuItem from "./dropdown-menu-item.svelte";
|
|
4
|
-
import DropdownMenuSeparator from "./dropdown-menu-separator.svelte";
|
|
5
|
-
import DropdownMenuTrigger from "./dropdown-menu-trigger.svelte";
|
|
6
|
-
import DropdownMenuCheckboxItem from "./dropdown-menu-checkbox-item.svelte";
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
DropdownMenu,
|
|
10
|
-
DropdownMenuContent,
|
|
11
|
-
DropdownMenuItem,
|
|
12
|
-
DropdownMenuSeparator,
|
|
13
|
-
DropdownMenuTrigger,
|
|
14
|
-
DropdownMenuCheckboxItem,
|
|
15
|
-
DropdownMenu as Root,
|
|
16
|
-
DropdownMenuContent as Content,
|
|
17
|
-
DropdownMenuItem as Item,
|
|
18
|
-
DropdownMenuSeparator as Separator,
|
|
19
|
-
DropdownMenuTrigger as Trigger,
|
|
20
|
-
DropdownMenuCheckboxItem as CheckboxItem,
|
|
21
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { HTMLInputAttributes, HTMLInputTypeAttribute } from "svelte/elements";
|
|
3
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
4
|
-
|
|
5
|
-
type InputType = Exclude<HTMLInputTypeAttribute, "file">;
|
|
6
|
-
|
|
7
|
-
type Props = WithElementRef<
|
|
8
|
-
Omit<HTMLInputAttributes, "type"> &
|
|
9
|
-
({ type: "file"; files?: FileList } | { type?: InputType; files?: undefined })
|
|
10
|
-
>;
|
|
11
|
-
|
|
12
|
-
let {
|
|
13
|
-
ref = $bindable(null),
|
|
14
|
-
value = $bindable(),
|
|
15
|
-
type,
|
|
16
|
-
files = $bindable(),
|
|
17
|
-
class: className,
|
|
18
|
-
"data-slot": dataSlot = "input",
|
|
19
|
-
...restProps
|
|
20
|
-
}: Props = $props();
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
{#if type === "file"}
|
|
24
|
-
<input
|
|
25
|
-
bind:this={ref}
|
|
26
|
-
data-slot={dataSlot}
|
|
27
|
-
class={cn(
|
|
28
|
-
"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-9 rounded-lg border bg-transparent px-3 py-1.5 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
29
|
-
className
|
|
30
|
-
)}
|
|
31
|
-
type="file"
|
|
32
|
-
bind:files
|
|
33
|
-
bind:value
|
|
34
|
-
{...restProps}
|
|
35
|
-
/>
|
|
36
|
-
{:else}
|
|
37
|
-
<input
|
|
38
|
-
bind:this={ref}
|
|
39
|
-
data-slot={dataSlot}
|
|
40
|
-
class={cn(
|
|
41
|
-
"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-9 rounded-lg border bg-transparent px-3 py-1.5 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
|
|
42
|
-
className
|
|
43
|
-
)}
|
|
44
|
-
{type}
|
|
45
|
-
bind:value
|
|
46
|
-
{...restProps}
|
|
47
|
-
/>
|
|
48
|
-
{/if}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Label } from './label.svelte';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from '../../../utils.js';
|
|
3
|
-
import type { HTMLLabelAttributes } from 'svelte/elements';
|
|
4
|
-
|
|
5
|
-
let { ref = $bindable(null), class: className, children, ...restProps }: WithElementRef<HTMLLabelAttributes, HTMLLabelElement> = $props();
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<label
|
|
9
|
-
bind:this={ref}
|
|
10
|
-
data-slot="label"
|
|
11
|
-
class={cn(
|
|
12
|
-
"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
13
|
-
className
|
|
14
|
-
)}
|
|
15
|
-
{...restProps}
|
|
16
|
-
>
|
|
17
|
-
{@render children?.()}
|
|
18
|
-
</label>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { default as Root } from './pagination.svelte';
|
|
2
|
-
export { default as Content } from './pagination-content.svelte';
|
|
3
|
-
export { default as Item } from './pagination-item.svelte';
|
|
4
|
-
export { default as Link } from './pagination-link.svelte';
|
|
5
|
-
export { default as Ellipsis } from './pagination-ellipsis.svelte';
|
|
6
|
-
export { default as Previous } from './pagination-previous.svelte';
|
|
7
|
-
export { default as Next } from './pagination-next.svelte';
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
5
|
-
|
|
6
|
-
let { class: className, children, ...restProps }: HTMLAttributes<HTMLUListElement> & { children?: Snippet } = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<ul data-slot="pagination-content" class={cn("flex flex-row items-center gap-1", className)} {...restProps}>
|
|
10
|
-
{@render children?.()}
|
|
11
|
-
</ul>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
-
import { Ellipsis } from '@lucide/svelte';
|
|
5
|
-
|
|
6
|
-
let { class: className, ...restProps }: HTMLAttributes<HTMLSpanElement> = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<span aria-hidden="true" data-slot="pagination-ellipsis" class={cn("flex size-9 items-center justify-center", className)} {...restProps}>
|
|
10
|
-
<Ellipsis class="size-4" />
|
|
11
|
-
<span class="sr-only">More pages</span>
|
|
12
|
-
</span>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLLiAttributes } from 'svelte/elements';
|
|
5
|
-
|
|
6
|
-
let { class: className, children, ...restProps }: HTMLLiAttributes & { children?: Snippet } = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<li data-slot="pagination-item" class={cn("", className)} {...restProps}>
|
|
10
|
-
{@render children?.()}
|
|
11
|
-
</li>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
5
|
-
import { buttonVariants } from '../button/index.js';
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
class: className,
|
|
9
|
-
isActive = false,
|
|
10
|
-
children,
|
|
11
|
-
...restProps
|
|
12
|
-
}: HTMLButtonAttributes & { isActive?: boolean; children?: Snippet } = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<button
|
|
16
|
-
aria-current={isActive ? 'page' : undefined}
|
|
17
|
-
data-slot="pagination-link"
|
|
18
|
-
data-active={isActive}
|
|
19
|
-
class={cn(
|
|
20
|
-
buttonVariants({ variant: isActive ? 'outline' : 'ghost', size: 'icon-sm' }),
|
|
21
|
-
className
|
|
22
|
-
)}
|
|
23
|
-
{...restProps}
|
|
24
|
-
>
|
|
25
|
-
{@render children?.()}
|
|
26
|
-
</button>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
5
|
-
import { buttonVariants } from '../button/index.js';
|
|
6
|
-
import { ChevronRight } from '@lucide/svelte';
|
|
7
|
-
|
|
8
|
-
let { class: className, children, ...restProps }: HTMLButtonAttributes & { children?: Snippet } = $props();
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<button
|
|
12
|
-
aria-label="Go to next page"
|
|
13
|
-
data-slot="pagination-next"
|
|
14
|
-
class={cn(buttonVariants({ variant: 'ghost', size: 'icon-sm' }), "gap-1", className)}
|
|
15
|
-
{...restProps}
|
|
16
|
-
>
|
|
17
|
-
{#if children}
|
|
18
|
-
{@render children()}
|
|
19
|
-
{:else}
|
|
20
|
-
<ChevronRight class="size-4" />
|
|
21
|
-
{/if}
|
|
22
|
-
</button>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
5
|
-
import { buttonVariants } from '../button/index.js';
|
|
6
|
-
import { ChevronLeft } from '@lucide/svelte';
|
|
7
|
-
|
|
8
|
-
let { class: className, children, ...restProps }: HTMLButtonAttributes & { children?: Snippet } = $props();
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<button
|
|
12
|
-
aria-label="Go to previous page"
|
|
13
|
-
data-slot="pagination-previous"
|
|
14
|
-
class={cn(buttonVariants({ variant: 'ghost', size: 'icon-sm' }), "gap-1", className)}
|
|
15
|
-
{...restProps}
|
|
16
|
-
>
|
|
17
|
-
{#if children}
|
|
18
|
-
{@render children()}
|
|
19
|
-
{:else}
|
|
20
|
-
<ChevronLeft class="size-4" />
|
|
21
|
-
{/if}
|
|
22
|
-
</button>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from '../../../utils.js';
|
|
3
|
-
import type { Snippet } from 'svelte';
|
|
4
|
-
import type { HTMLAttributes } from 'svelte/elements';
|
|
5
|
-
|
|
6
|
-
let { class: className, children, ...restProps }: HTMLAttributes<HTMLElement> & { children?: Snippet } = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<nav aria-label="pagination" data-slot="pagination" class={cn("mx-auto flex w-full justify-center", className)} {...restProps}>
|
|
10
|
-
{@render children?.()}
|
|
11
|
-
</nav>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Popover as PopoverPrimitive } from "bits-ui";
|
|
2
|
-
|
|
3
|
-
const Root = PopoverPrimitive.Root;
|
|
4
|
-
const Trigger = PopoverPrimitive.Trigger;
|
|
5
|
-
const Close = PopoverPrimitive.Close;
|
|
6
|
-
|
|
7
|
-
export {
|
|
8
|
-
Root,
|
|
9
|
-
Trigger,
|
|
10
|
-
Close,
|
|
11
|
-
};
|
|
12
|
-
export { default as Content } from "./popover-content.svelte";
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Popover as PopoverPrimitive } from "bits-ui";
|
|
3
|
-
import { cn } from "../../../utils.js";
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
ref = $bindable(null),
|
|
7
|
-
class: className,
|
|
8
|
-
align = "center",
|
|
9
|
-
sideOffset = 4,
|
|
10
|
-
...restProps
|
|
11
|
-
}: PopoverPrimitive.ContentProps & { class?: string } = $props();
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<PopoverPrimitive.Portal>
|
|
15
|
-
<PopoverPrimitive.Content
|
|
16
|
-
bind:ref
|
|
17
|
-
{align}
|
|
18
|
-
{sideOffset}
|
|
19
|
-
class={cn(
|
|
20
|
-
"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
21
|
-
className,
|
|
22
|
-
)}
|
|
23
|
-
{...restProps}
|
|
24
|
-
/>
|
|
25
|
-
</PopoverPrimitive.Portal>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as Progress } from "./progress.svelte";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn } from "../../../utils.js";
|
|
3
|
-
|
|
4
|
-
let { value = 0, max = 100, class: className, ...restProps }:
|
|
5
|
-
{ value?: number; max?: number; class?: string } & Record<string, unknown> = $props();
|
|
6
|
-
|
|
7
|
-
const percentage = $derived(Math.min(100, Math.max(0, (value / max) * 100)));
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<div
|
|
11
|
-
class={cn("relative h-2 w-full overflow-hidden rounded-full bg-primary/20", className)}
|
|
12
|
-
role="progressbar"
|
|
13
|
-
aria-valuenow={value}
|
|
14
|
-
aria-valuemin={0}
|
|
15
|
-
aria-valuemax={max}
|
|
16
|
-
{...restProps}
|
|
17
|
-
>
|
|
18
|
-
<div
|
|
19
|
-
class="h-full w-full flex-1 bg-primary transition-all duration-200"
|
|
20
|
-
style="transform: translateX(-{100 - percentage}%)"
|
|
21
|
-
></div>
|
|
22
|
-
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { default as ScrollArea } from "./scroll-area.svelte";
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { Snippet } from "svelte";
|
|
3
|
-
import { cn } from "../../../utils.js";
|
|
4
|
-
|
|
5
|
-
let { class: className, children, orientation = 'vertical', ...restProps }:
|
|
6
|
-
{ class?: string; children: Snippet; orientation?: 'vertical' | 'horizontal' } & Record<string, unknown> = $props();
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<div
|
|
10
|
-
class={cn("relative overflow-hidden", className)}
|
|
11
|
-
{...restProps}
|
|
12
|
-
>
|
|
13
|
-
<div class={cn(
|
|
14
|
-
"h-full w-full overflow-auto scrollbar-thin scrollbar-track-transparent scrollbar-thumb-border hover:scrollbar-thumb-muted-foreground/50",
|
|
15
|
-
orientation === 'horizontal' ? 'overflow-x-auto overflow-y-hidden' : 'overflow-y-auto overflow-x-hidden'
|
|
16
|
-
)}>
|
|
17
|
-
{@render children()}
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { cn, type WithElementRef } from "../../../utils.js";
|
|
3
|
-
import type { HTMLSelectAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
// Use HTMLElement instead of HTMLSelectElement to avoid TS error:
|
|
6
|
-
// HTMLSelectElement.remove() returns void, incompatible with HTMLElement's Element return
|
|
7
|
-
type Props = WithElementRef<HTMLSelectAttributes, HTMLElement> & {
|
|
8
|
-
placeholder?: string;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
let {
|
|
12
|
-
ref = $bindable(null),
|
|
13
|
-
value = $bindable(""),
|
|
14
|
-
class: className,
|
|
15
|
-
placeholder,
|
|
16
|
-
children,
|
|
17
|
-
...restProps
|
|
18
|
-
}: Props = $props();
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<select
|
|
22
|
-
bind:this={ref}
|
|
23
|
-
data-slot="select"
|
|
24
|
-
class={cn(
|
|
25
|
-
"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-9 w-full appearance-none rounded-lg border bg-transparent px-3 py-1.5 text-base transition-colors focus-visible:ring-3 aria-invalid:ring-3 md:text-sm placeholder:text-muted-foreground outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 bg-[length:16px] bg-[right_8px_center] bg-no-repeat",
|
|
26
|
-
"bg-[url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\")]",
|
|
27
|
-
className
|
|
28
|
-
)}
|
|
29
|
-
bind:value
|
|
30
|
-
{...restProps}
|
|
31
|
-
>
|
|
32
|
-
{#if placeholder}
|
|
33
|
-
<option value="" disabled selected>{placeholder}</option>
|
|
34
|
-
{/if}
|
|
35
|
-
{@render children?.()}
|
|
36
|
-
</select>
|