negodesign 0.0.1 → 0.0.2
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/dist/components/core/breadcrumb/breadcrumb-list.svelte +31 -31
- package/dist/components/core/button/ButtonBack.svelte +18 -18
- package/dist/components/core/button/ButtonLogin.svelte +15 -15
- package/dist/components/core/button/ButtonLoginWith.svelte +57 -57
- package/dist/components/core/carousel/data/CarouselModel.d.ts +2 -1
- package/dist/components/core/datatable/ui/DataTableActions.svelte +28 -28
- package/dist/components/core/datatable/ui/DataTableCheckbox.svelte +22 -22
- package/dist/components/core/datatable/ui/DataTableContent.svelte +59 -59
- package/dist/components/core/datatable/ui/DataTableCore.svelte +144 -144
- package/dist/components/core/datatable/ui/DataTableDragHandle.svelte +8 -8
- package/dist/components/core/datatable/ui/DataTableListFilter.svelte +59 -59
- package/dist/components/core/datatable/ui/DataTableListPagination.svelte +35 -35
- package/dist/components/core/form/ui/input-base.svelte +81 -81
- package/dist/components/core/form/ui/input-email.svelte +22 -22
- package/dist/components/core/form/ui/input-password-confirm.svelte +22 -22
- package/dist/components/core/form/ui/input-password.svelte +22 -22
- package/dist/components/core/form/ui/input-phone.svelte +22 -0
- package/dist/components/core/form/ui/input-phone.svelte.d.ts +4 -0
- package/dist/components/core/form/ui/input-username.svelte +21 -21
- package/dist/components/core/label/LabelOr.svelte +25 -25
- package/dist/components/core/link/link-forget-password.svelte +12 -12
- package/dist/components/core/link/link-privacy-polity.svelte +12 -12
- package/dist/components/core/link/link-terms-of-service.svelte +12 -12
- package/dist/components/core/nav/ui/nav-menu-bar.svelte +97 -97
- package/dist/components/core/nav/ui/nav-menu-bottom-bar.svelte +33 -33
- package/dist/components/core/nav/ui/nav-menu-top-bar.svelte +103 -103
- package/dist/components/core/sidebar/menu-bar-sidebar.svelte +62 -62
- package/dist/components/core/tabs/ui/tab-underline.svelte +41 -41
- package/dist/components/pages/admin/ui/admin-content.svelte +13 -13
- package/dist/components/pages/admin/ui/admin-panel.svelte +40 -40
- package/dist/components/pages/login/admin/01/data/page-props.d.ts +10 -0
- package/dist/components/pages/login/admin/01/data/page-props.js +1 -0
- package/dist/components/pages/login/admin/01/ui/AuthCard.svelte +84 -58
- package/dist/components/pages/login/admin/01/ui/AuthCard.svelte.d.ts +11 -17
- package/dist/components/pages/login/admin/01/ui/FormLogin.svelte +25 -5
- package/dist/components/pages/login/admin/01/ui/FormLogin.svelte.d.ts +6 -1
- package/dist/components/pages/login/admin/01/ui/FormLoginEmailPassword.svelte +12 -0
- package/dist/components/pages/login/admin/01/ui/FormLoginEmailPassword.svelte.d.ts +7 -0
- package/dist/components/pages/login/admin/01/ui/FormLoginPhonePassword.svelte +12 -0
- package/dist/components/pages/login/admin/01/ui/FormLoginPhonePassword.svelte.d.ts +7 -0
- package/dist/components/pages/login/admin/01/ui/FormLoginUsernamePassword.svelte +12 -0
- package/dist/components/pages/login/admin/01/ui/FormLoginUsernamePassword.svelte.d.ts +7 -0
- package/dist/components/pages/login/admin/01/ui/FormRegister.svelte +28 -28
- package/dist/components/pages/login/admin/01/ui/LeftHero.svelte +105 -105
- package/dist/components/pages/login/admin/01/ui/PageLogin.svelte +47 -49
- package/dist/components/pages/login/admin/01/ui/PageLogin.svelte.d.ts +14 -17
- package/dist/components/ui/badge/badge.svelte +49 -49
- package/dist/components/ui/chart/chart-container.svelte +80 -80
- package/dist/components/ui/chart/chart-style.svelte +37 -37
- package/dist/components/ui/chart/chart-tooltip.svelte +184 -184
- package/dist/components/ui/checkbox/checkbox.svelte +40 -40
- package/dist/components/ui/data-table/flex-render.svelte +40 -40
- package/dist/components/ui/drawer/drawer-close.svelte +7 -7
- package/dist/components/ui/drawer/drawer-content.svelte +33 -33
- package/dist/components/ui/drawer/drawer-description.svelte +17 -17
- package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
- package/dist/components/ui/drawer/drawer-header.svelte +20 -20
- package/dist/components/ui/drawer/drawer-nested.svelte +12 -12
- package/dist/components/ui/drawer/drawer-overlay.svelte +17 -17
- package/dist/components/ui/drawer/drawer-portal.svelte +7 -7
- package/dist/components/ui/drawer/drawer-title.svelte +17 -17
- package/dist/components/ui/drawer/drawer-trigger.svelte +7 -7
- package/dist/components/ui/drawer/drawer.svelte +12 -12
- package/dist/components/ui/select/select-content.svelte +45 -45
- package/dist/components/ui/select/select-group-heading.svelte +21 -21
- package/dist/components/ui/select/select-group.svelte +17 -17
- package/dist/components/ui/select/select-item.svelte +41 -41
- package/dist/components/ui/select/select-label.svelte +20 -20
- package/dist/components/ui/select/select-portal.svelte +7 -7
- package/dist/components/ui/select/select-scroll-down-button.svelte +21 -21
- package/dist/components/ui/select/select-scroll-up-button.svelte +21 -21
- package/dist/components/ui/select/select-separator.svelte +18 -18
- package/dist/components/ui/select/select-trigger.svelte +30 -30
- package/dist/components/ui/select/select.svelte +11 -11
- package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
- package/dist/components/ui/table/table-body.svelte +15 -15
- package/dist/components/ui/table/table-caption.svelte +20 -20
- package/dist/components/ui/table/table-cell.svelte +15 -15
- package/dist/components/ui/table/table-footer.svelte +20 -20
- package/dist/components/ui/table/table-head.svelte +15 -15
- package/dist/components/ui/table/table-header.svelte +20 -20
- package/dist/components/ui/table/table-row.svelte +15 -15
- package/dist/components/ui/table/table.svelte +17 -17
- package/dist/components/ui/tabs/tabs-content.svelte +17 -17
- package/dist/components/ui/tabs/tabs-list.svelte +40 -40
- package/dist/components/ui/tabs/tabs-trigger.svelte +23 -23
- package/dist/components/ui/tabs/tabs.svelte +19 -19
- package/dist/index.js +0 -1
- package/package.json +94 -88
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as DropdownMenu from "../../../ui/dropdown-menu/index.js";
|
|
3
|
-
import * as Sidebar from "../../../ui/sidebar/index.js";
|
|
4
|
-
import { useSidebar } from "../../../ui/sidebar/index.js";
|
|
5
|
-
import type { NavTopBarSidebarItem } from "../data/nav-top-bar-sidebar";
|
|
6
|
-
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
7
|
-
import { UnfoldMoreIcon } from "@hugeicons/core-free-icons";
|
|
8
|
-
|
|
9
|
-
// This should be `Component` after @lucide/svelte updates types
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
-
let { content, dropdownMenu }: NavTopBarSidebarItem = $props();
|
|
12
|
-
const sidebar = useSidebar();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<Sidebar.Menu>
|
|
16
|
-
<Sidebar.MenuItem>
|
|
17
|
-
<DropdownMenu.Root>
|
|
18
|
-
<DropdownMenu.Trigger>
|
|
19
|
-
{#snippet child({ props })}
|
|
20
|
-
<Sidebar.MenuButton
|
|
21
|
-
{...props}
|
|
22
|
-
size="lg"
|
|
23
|
-
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
|
|
24
|
-
>
|
|
25
|
-
<div
|
|
26
|
-
class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
|
|
27
|
-
>
|
|
28
|
-
<content.logo class="size-4" />
|
|
29
|
-
</div>
|
|
30
|
-
<div
|
|
31
|
-
class="grid flex-1 text-start text-sm leading-tight"
|
|
32
|
-
>
|
|
33
|
-
<span class="truncate font-medium">
|
|
34
|
-
{content.title}
|
|
35
|
-
</span>
|
|
36
|
-
<span class="truncate text-xs"
|
|
37
|
-
>{content.subtitle}</span
|
|
38
|
-
>
|
|
39
|
-
</div>
|
|
40
|
-
{#if dropdownMenu}
|
|
41
|
-
<HugeiconsIcon
|
|
42
|
-
icon={UnfoldMoreIcon}
|
|
43
|
-
class="ms-auto"
|
|
44
|
-
/>
|
|
45
|
-
{/if}
|
|
46
|
-
</Sidebar.MenuButton>
|
|
47
|
-
{/snippet}
|
|
48
|
-
</DropdownMenu.Trigger>
|
|
49
|
-
{#if dropdownMenu}
|
|
50
|
-
<DropdownMenu.Content
|
|
51
|
-
class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
|
|
52
|
-
align="start"
|
|
53
|
-
side={sidebar.isMobile ? "bottom" : "right"}
|
|
54
|
-
sideOffset={4}
|
|
55
|
-
>
|
|
56
|
-
{#if dropdownMenu.header}
|
|
57
|
-
<DropdownMenu.Label
|
|
58
|
-
class="text-muted-foreground text-xs"
|
|
59
|
-
>
|
|
60
|
-
{#if dropdownMenu.header.icon}
|
|
61
|
-
<dropdownMenu.header.icon
|
|
62
|
-
class="size-3.5 shrink-0"
|
|
63
|
-
/>
|
|
64
|
-
{/if}
|
|
65
|
-
{dropdownMenu.header.text}
|
|
66
|
-
</DropdownMenu.Label>
|
|
67
|
-
{/if}
|
|
68
|
-
{#each dropdownMenu.items as it, index (index)}
|
|
69
|
-
<DropdownMenu.Item
|
|
70
|
-
onSelect={it.onclick}
|
|
71
|
-
class="gap-2 p-2"
|
|
72
|
-
>
|
|
73
|
-
<div
|
|
74
|
-
class="flex size-6 items-center justify-center rounded-md border"
|
|
75
|
-
>
|
|
76
|
-
<it.icon class="size-3.5 shrink-0" />
|
|
77
|
-
</div>
|
|
78
|
-
{it.text}
|
|
79
|
-
<DropdownMenu.Shortcut>
|
|
80
|
-
⌘{index + 1}
|
|
81
|
-
</DropdownMenu.Shortcut>
|
|
82
|
-
</DropdownMenu.Item>
|
|
83
|
-
{/each}
|
|
84
|
-
{#if dropdownMenu.footer}
|
|
85
|
-
<DropdownMenu.Separator />
|
|
86
|
-
<DropdownMenu.Item class="gap-2 p-2">
|
|
87
|
-
<div
|
|
88
|
-
class="flex size-6 items-center justify-center rounded-md border bg-transparent"
|
|
89
|
-
>
|
|
90
|
-
{#if dropdownMenu.footer.icon}
|
|
91
|
-
<dropdownMenu.footer.icon class="size-4" />
|
|
92
|
-
{/if}
|
|
93
|
-
</div>
|
|
94
|
-
<div class="text-muted-foreground font-medium">
|
|
95
|
-
{dropdownMenu.footer.text}
|
|
96
|
-
</div>
|
|
97
|
-
</DropdownMenu.Item>
|
|
98
|
-
{/if}
|
|
99
|
-
</DropdownMenu.Content>
|
|
100
|
-
{/if}
|
|
101
|
-
</DropdownMenu.Root>
|
|
102
|
-
</Sidebar.MenuItem>
|
|
103
|
-
</Sidebar.Menu>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as DropdownMenu from "../../../ui/dropdown-menu/index.js";
|
|
3
|
+
import * as Sidebar from "../../../ui/sidebar/index.js";
|
|
4
|
+
import { useSidebar } from "../../../ui/sidebar/index.js";
|
|
5
|
+
import type { NavTopBarSidebarItem } from "../data/nav-top-bar-sidebar";
|
|
6
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
7
|
+
import { UnfoldMoreIcon } from "@hugeicons/core-free-icons";
|
|
8
|
+
|
|
9
|
+
// This should be `Component` after @lucide/svelte updates types
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
11
|
+
let { content, dropdownMenu }: NavTopBarSidebarItem = $props();
|
|
12
|
+
const sidebar = useSidebar();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Sidebar.Menu>
|
|
16
|
+
<Sidebar.MenuItem>
|
|
17
|
+
<DropdownMenu.Root>
|
|
18
|
+
<DropdownMenu.Trigger>
|
|
19
|
+
{#snippet child({ props })}
|
|
20
|
+
<Sidebar.MenuButton
|
|
21
|
+
{...props}
|
|
22
|
+
size="lg"
|
|
23
|
+
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
|
|
24
|
+
>
|
|
25
|
+
<div
|
|
26
|
+
class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
|
|
27
|
+
>
|
|
28
|
+
<content.logo class="size-4" />
|
|
29
|
+
</div>
|
|
30
|
+
<div
|
|
31
|
+
class="grid flex-1 text-start text-sm leading-tight"
|
|
32
|
+
>
|
|
33
|
+
<span class="truncate font-medium">
|
|
34
|
+
{content.title}
|
|
35
|
+
</span>
|
|
36
|
+
<span class="truncate text-xs"
|
|
37
|
+
>{content.subtitle}</span
|
|
38
|
+
>
|
|
39
|
+
</div>
|
|
40
|
+
{#if dropdownMenu}
|
|
41
|
+
<HugeiconsIcon
|
|
42
|
+
icon={UnfoldMoreIcon}
|
|
43
|
+
class="ms-auto"
|
|
44
|
+
/>
|
|
45
|
+
{/if}
|
|
46
|
+
</Sidebar.MenuButton>
|
|
47
|
+
{/snippet}
|
|
48
|
+
</DropdownMenu.Trigger>
|
|
49
|
+
{#if dropdownMenu}
|
|
50
|
+
<DropdownMenu.Content
|
|
51
|
+
class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
|
|
52
|
+
align="start"
|
|
53
|
+
side={sidebar.isMobile ? "bottom" : "right"}
|
|
54
|
+
sideOffset={4}
|
|
55
|
+
>
|
|
56
|
+
{#if dropdownMenu.header}
|
|
57
|
+
<DropdownMenu.Label
|
|
58
|
+
class="text-muted-foreground text-xs"
|
|
59
|
+
>
|
|
60
|
+
{#if dropdownMenu.header.icon}
|
|
61
|
+
<dropdownMenu.header.icon
|
|
62
|
+
class="size-3.5 shrink-0"
|
|
63
|
+
/>
|
|
64
|
+
{/if}
|
|
65
|
+
{dropdownMenu.header.text}
|
|
66
|
+
</DropdownMenu.Label>
|
|
67
|
+
{/if}
|
|
68
|
+
{#each dropdownMenu.items as it, index (index)}
|
|
69
|
+
<DropdownMenu.Item
|
|
70
|
+
onSelect={it.onclick}
|
|
71
|
+
class="gap-2 p-2"
|
|
72
|
+
>
|
|
73
|
+
<div
|
|
74
|
+
class="flex size-6 items-center justify-center rounded-md border"
|
|
75
|
+
>
|
|
76
|
+
<it.icon class="size-3.5 shrink-0" />
|
|
77
|
+
</div>
|
|
78
|
+
{it.text}
|
|
79
|
+
<DropdownMenu.Shortcut>
|
|
80
|
+
⌘{index + 1}
|
|
81
|
+
</DropdownMenu.Shortcut>
|
|
82
|
+
</DropdownMenu.Item>
|
|
83
|
+
{/each}
|
|
84
|
+
{#if dropdownMenu.footer}
|
|
85
|
+
<DropdownMenu.Separator />
|
|
86
|
+
<DropdownMenu.Item class="gap-2 p-2">
|
|
87
|
+
<div
|
|
88
|
+
class="flex size-6 items-center justify-center rounded-md border bg-transparent"
|
|
89
|
+
>
|
|
90
|
+
{#if dropdownMenu.footer.icon}
|
|
91
|
+
<dropdownMenu.footer.icon class="size-4" />
|
|
92
|
+
{/if}
|
|
93
|
+
</div>
|
|
94
|
+
<div class="text-muted-foreground font-medium">
|
|
95
|
+
{dropdownMenu.footer.text}
|
|
96
|
+
</div>
|
|
97
|
+
</DropdownMenu.Item>
|
|
98
|
+
{/if}
|
|
99
|
+
</DropdownMenu.Content>
|
|
100
|
+
{/if}
|
|
101
|
+
</DropdownMenu.Root>
|
|
102
|
+
</Sidebar.MenuItem>
|
|
103
|
+
</Sidebar.Menu>
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as Sidebar from "../../ui/sidebar/index.js";
|
|
3
|
-
import type { ComponentProps } from "svelte";
|
|
4
|
-
|
|
5
|
-
import type { NavUserSidebarItem } from "../nav/data/nav-user-sidebar";
|
|
6
|
-
import type {
|
|
7
|
-
NavMenuItem,
|
|
8
|
-
NavMenuSidebar,
|
|
9
|
-
} from "../nav/data/nav-menu-sidebar";
|
|
10
|
-
import type { Snippet } from "svelte";
|
|
11
|
-
import NavUserSidebar from "../nav/ui/nav-user-sidebar.svelte";
|
|
12
|
-
import NavMenuBar from "../nav/ui/nav-menu-bar.svelte";
|
|
13
|
-
import NavMenuBottomBar from "../nav/ui/nav-menu-bottom-bar.svelte";
|
|
14
|
-
import NavMenuTopBar from "../nav/ui/nav-menu-top-bar.svelte";
|
|
15
|
-
import { t } from "../../../i18n";
|
|
16
|
-
|
|
17
|
-
type Props = {
|
|
18
|
-
menusButtons?: NavMenuSidebar[];
|
|
19
|
-
menus: NavMenuItem[];
|
|
20
|
-
user: NavUserSidebarItem;
|
|
21
|
-
footer?: Snippet;
|
|
22
|
-
header?: Snippet;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
let {
|
|
26
|
-
ref = $bindable(null),
|
|
27
|
-
collapsible = "icon",
|
|
28
|
-
menusButtons,
|
|
29
|
-
menus,
|
|
30
|
-
user,
|
|
31
|
-
footer,
|
|
32
|
-
header,
|
|
33
|
-
...restProps
|
|
34
|
-
}: ComponentProps<typeof Sidebar.Root> & Props = $props();
|
|
35
|
-
</script>
|
|
36
|
-
|
|
37
|
-
<Sidebar.Root bind:ref {collapsible} {...restProps}>
|
|
38
|
-
<Sidebar.Header>
|
|
39
|
-
{#if header}
|
|
40
|
-
{@render header?.()}
|
|
41
|
-
{:else}
|
|
42
|
-
<NavMenuTopBar
|
|
43
|
-
content={{
|
|
44
|
-
title: $t("label.panel"),
|
|
45
|
-
subtitle: $t("label.administrative"),
|
|
46
|
-
}}
|
|
47
|
-
/>
|
|
48
|
-
{/if}
|
|
49
|
-
</Sidebar.Header>
|
|
50
|
-
<Sidebar.Content>
|
|
51
|
-
<NavMenuBar items={menus} />
|
|
52
|
-
</Sidebar.Content>
|
|
53
|
-
<Sidebar.Footer>
|
|
54
|
-
{#if footer}
|
|
55
|
-
{@render footer?.()}
|
|
56
|
-
{:else if menusButtons && menusButtons.length > 0}
|
|
57
|
-
<NavMenuBottomBar items={menusButtons} class="mt-auto" />
|
|
58
|
-
{/if}
|
|
59
|
-
<NavUserSidebar {user} />
|
|
60
|
-
</Sidebar.Footer>
|
|
61
|
-
<Sidebar.Rail />
|
|
62
|
-
</Sidebar.Root>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as Sidebar from "../../ui/sidebar/index.js";
|
|
3
|
+
import type { ComponentProps } from "svelte";
|
|
4
|
+
|
|
5
|
+
import type { NavUserSidebarItem } from "../nav/data/nav-user-sidebar";
|
|
6
|
+
import type {
|
|
7
|
+
NavMenuItem,
|
|
8
|
+
NavMenuSidebar,
|
|
9
|
+
} from "../nav/data/nav-menu-sidebar";
|
|
10
|
+
import type { Snippet } from "svelte";
|
|
11
|
+
import NavUserSidebar from "../nav/ui/nav-user-sidebar.svelte";
|
|
12
|
+
import NavMenuBar from "../nav/ui/nav-menu-bar.svelte";
|
|
13
|
+
import NavMenuBottomBar from "../nav/ui/nav-menu-bottom-bar.svelte";
|
|
14
|
+
import NavMenuTopBar from "../nav/ui/nav-menu-top-bar.svelte";
|
|
15
|
+
import { t } from "../../../i18n";
|
|
16
|
+
|
|
17
|
+
type Props = {
|
|
18
|
+
menusButtons?: NavMenuSidebar[];
|
|
19
|
+
menus: NavMenuItem[];
|
|
20
|
+
user: NavUserSidebarItem;
|
|
21
|
+
footer?: Snippet;
|
|
22
|
+
header?: Snippet;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
ref = $bindable(null),
|
|
27
|
+
collapsible = "icon",
|
|
28
|
+
menusButtons,
|
|
29
|
+
menus,
|
|
30
|
+
user,
|
|
31
|
+
footer,
|
|
32
|
+
header,
|
|
33
|
+
...restProps
|
|
34
|
+
}: ComponentProps<typeof Sidebar.Root> & Props = $props();
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
<Sidebar.Root bind:ref {collapsible} {...restProps}>
|
|
38
|
+
<Sidebar.Header>
|
|
39
|
+
{#if header}
|
|
40
|
+
{@render header?.()}
|
|
41
|
+
{:else}
|
|
42
|
+
<NavMenuTopBar
|
|
43
|
+
content={{
|
|
44
|
+
title: $t("label.panel"),
|
|
45
|
+
subtitle: $t("label.administrative"),
|
|
46
|
+
}}
|
|
47
|
+
/>
|
|
48
|
+
{/if}
|
|
49
|
+
</Sidebar.Header>
|
|
50
|
+
<Sidebar.Content>
|
|
51
|
+
<NavMenuBar items={menus} />
|
|
52
|
+
</Sidebar.Content>
|
|
53
|
+
<Sidebar.Footer>
|
|
54
|
+
{#if footer}
|
|
55
|
+
{@render footer?.()}
|
|
56
|
+
{:else if menusButtons && menusButtons.length > 0}
|
|
57
|
+
<NavMenuBottomBar items={menusButtons} class="mt-auto" />
|
|
58
|
+
{/if}
|
|
59
|
+
<NavUserSidebar {user} />
|
|
60
|
+
</Sidebar.Footer>
|
|
61
|
+
<Sidebar.Rail />
|
|
62
|
+
</Sidebar.Root>
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as UnderlineTabs from "../../../ui/underline-tabs";
|
|
3
|
-
import type { TabProps } from "../data/TabModel";
|
|
4
|
-
|
|
5
|
-
type Props = {
|
|
6
|
-
items?: TabProps[];
|
|
7
|
-
className?: string;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
let { items = [], className }: Props = $props();
|
|
11
|
-
|
|
12
|
-
let activeValue = $state<string>("");
|
|
13
|
-
|
|
14
|
-
let currentActiveValue = $derived(
|
|
15
|
-
activeValue || (items.length > 0 ? items[0].item.value : ""),
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
let selected = $derived(
|
|
19
|
-
items.find((it) => it.item.value === currentActiveValue) || items[0],
|
|
20
|
-
);
|
|
21
|
-
</script>
|
|
22
|
-
|
|
23
|
-
{#if items && items.length > 0 && selected}
|
|
24
|
-
<UnderlineTabs.Root
|
|
25
|
-
value={currentActiveValue}
|
|
26
|
-
onValueChange={(val) => (activeValue = val)}
|
|
27
|
-
class="mb-5 {className}"
|
|
28
|
-
>
|
|
29
|
-
<UnderlineTabs.List>
|
|
30
|
-
{#each items as it (it.item.value)}
|
|
31
|
-
<UnderlineTabs.Trigger
|
|
32
|
-
value={it.item.value}
|
|
33
|
-
class="text-lg md:text-base"
|
|
34
|
-
>
|
|
35
|
-
{it.item.label}
|
|
36
|
-
</UnderlineTabs.Trigger>
|
|
37
|
-
{/each}
|
|
38
|
-
</UnderlineTabs.List>
|
|
39
|
-
</UnderlineTabs.Root>
|
|
40
|
-
{@render selected.children()}
|
|
41
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as UnderlineTabs from "../../../ui/underline-tabs";
|
|
3
|
+
import type { TabProps } from "../data/TabModel";
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
items?: TabProps[];
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
let { items = [], className }: Props = $props();
|
|
11
|
+
|
|
12
|
+
let activeValue = $state<string>("");
|
|
13
|
+
|
|
14
|
+
let currentActiveValue = $derived(
|
|
15
|
+
activeValue || (items.length > 0 ? items[0].item.value : ""),
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
let selected = $derived(
|
|
19
|
+
items.find((it) => it.item.value === currentActiveValue) || items[0],
|
|
20
|
+
);
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
{#if items && items.length > 0 && selected}
|
|
24
|
+
<UnderlineTabs.Root
|
|
25
|
+
value={currentActiveValue}
|
|
26
|
+
onValueChange={(val) => (activeValue = val)}
|
|
27
|
+
class="mb-5 {className}"
|
|
28
|
+
>
|
|
29
|
+
<UnderlineTabs.List>
|
|
30
|
+
{#each items as it (it.item.value)}
|
|
31
|
+
<UnderlineTabs.Trigger
|
|
32
|
+
value={it.item.value}
|
|
33
|
+
class="text-lg md:text-base"
|
|
34
|
+
>
|
|
35
|
+
{it.item.label}
|
|
36
|
+
</UnderlineTabs.Trigger>
|
|
37
|
+
{/each}
|
|
38
|
+
</UnderlineTabs.List>
|
|
39
|
+
</UnderlineTabs.Root>
|
|
40
|
+
{@render selected.children()}
|
|
41
|
+
{/if}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { Snippet } from "svelte";
|
|
3
|
-
|
|
4
|
-
type Props = {
|
|
5
|
-
children?: Snippet;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
let { children }: Props = $props();
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
<div class="flex flex-1 flex-col gap-4 p-4 pt-0">
|
|
12
|
-
{@render children?.()}
|
|
13
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
|
|
4
|
+
type Props = {
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
let { children }: Props = $props();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<div class="flex flex-1 flex-col gap-4 p-4 pt-0">
|
|
12
|
+
{@render children?.()}
|
|
13
|
+
</div>
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import LanguageSwitcher from "../../../ui/language-switcher/language-switcher.svelte";
|
|
3
|
-
import LightSwitch from "../../../ui/light-switch/light-switch.svelte";
|
|
4
|
-
import { Separator } from "../../../ui/separator/index.js";
|
|
5
|
-
import * as Sidebar from "../../../ui/sidebar/index.js";
|
|
6
|
-
import type { Snippet } from "svelte";
|
|
7
|
-
|
|
8
|
-
type Props = {
|
|
9
|
-
appsidebar?: Snippet;
|
|
10
|
-
content?: Snippet;
|
|
11
|
-
breadcrumb?: Snippet;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
let { appsidebar, content, breadcrumb }: Props = $props();
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<Sidebar.Provider>
|
|
18
|
-
{@render appsidebar?.()}
|
|
19
|
-
<Sidebar.Inset>
|
|
20
|
-
<header
|
|
21
|
-
class="flex h-16 shrink-0 items-center md:justify-between gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12"
|
|
22
|
-
>
|
|
23
|
-
<div class="flex items-center gap-2 px-4">
|
|
24
|
-
<Sidebar.Trigger class="-ms-1" />
|
|
25
|
-
<Separator
|
|
26
|
-
orientation="vertical"
|
|
27
|
-
class="me-2 data-[orientation=vertical]:h-4"
|
|
28
|
-
/>
|
|
29
|
-
{@render breadcrumb?.()}
|
|
30
|
-
</div>
|
|
31
|
-
<div class="pr-5">
|
|
32
|
-
<div class="flex gap-3">
|
|
33
|
-
<LanguageSwitcher />
|
|
34
|
-
<LightSwitch />
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</header>
|
|
38
|
-
{@render content?.()}
|
|
39
|
-
</Sidebar.Inset>
|
|
40
|
-
</Sidebar.Provider>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import LanguageSwitcher from "../../../ui/language-switcher/language-switcher.svelte";
|
|
3
|
+
import LightSwitch from "../../../ui/light-switch/light-switch.svelte";
|
|
4
|
+
import { Separator } from "../../../ui/separator/index.js";
|
|
5
|
+
import * as Sidebar from "../../../ui/sidebar/index.js";
|
|
6
|
+
import type { Snippet } from "svelte";
|
|
7
|
+
|
|
8
|
+
type Props = {
|
|
9
|
+
appsidebar?: Snippet;
|
|
10
|
+
content?: Snippet;
|
|
11
|
+
breadcrumb?: Snippet;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
let { appsidebar, content, breadcrumb }: Props = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<Sidebar.Provider>
|
|
18
|
+
{@render appsidebar?.()}
|
|
19
|
+
<Sidebar.Inset>
|
|
20
|
+
<header
|
|
21
|
+
class="flex h-16 shrink-0 items-center md:justify-between gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12"
|
|
22
|
+
>
|
|
23
|
+
<div class="flex items-center gap-2 px-4">
|
|
24
|
+
<Sidebar.Trigger class="-ms-1" />
|
|
25
|
+
<Separator
|
|
26
|
+
orientation="vertical"
|
|
27
|
+
class="me-2 data-[orientation=vertical]:h-4"
|
|
28
|
+
/>
|
|
29
|
+
{@render breadcrumb?.()}
|
|
30
|
+
</div>
|
|
31
|
+
<div class="pr-5">
|
|
32
|
+
<div class="flex gap-3">
|
|
33
|
+
<LanguageSwitcher />
|
|
34
|
+
<LightSwitch />
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</header>
|
|
38
|
+
{@render content?.()}
|
|
39
|
+
</Sidebar.Inset>
|
|
40
|
+
</Sidebar.Provider>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type AuthFormType = "EMAIL_PASSWORD" | "PHONE_PASSWORD" | "USERNAME_PASSWORD";
|
|
2
|
+
export type LoginVariant = "EMAIL" | "USERNAME" | "PHONE";
|
|
3
|
+
export type Credential = {
|
|
4
|
+
password: string;
|
|
5
|
+
data: string;
|
|
6
|
+
};
|
|
7
|
+
export type LinkProps = {
|
|
8
|
+
url?: string;
|
|
9
|
+
onclick?: () => void;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|