lutra 0.0.1
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 +29 -0
- package/dist/Data/Stat.svelte +89 -0
- package/dist/Data/Stat.svelte.d.ts +33 -0
- package/dist/DataTable/DataTable.svelte +36 -0
- package/dist/DataTable/DataTable.svelte.d.ts +19 -0
- package/dist/DataTable/DataTableColumn.svelte +20 -0
- package/dist/DataTable/DataTableColumn.svelte.d.ts +18 -0
- package/dist/DataTable/DataTableRow.svelte +28 -0
- package/dist/DataTable/DataTableRow.svelte.d.ts +18 -0
- package/dist/Display/Avatar.svelte +61 -0
- package/dist/Display/Avatar.svelte.d.ts +18 -0
- package/dist/Display/Badge.svelte +93 -0
- package/dist/Display/Badge.svelte.d.ts +30 -0
- package/dist/Display/Callout.svelte +105 -0
- package/dist/Display/Callout.svelte.d.ts +34 -0
- package/dist/Display/Code.svelte +195 -0
- package/dist/Display/Code.svelte.d.ts +29 -0
- package/dist/Display/ContextTip.svelte +23 -0
- package/dist/Display/ContextTip.svelte.d.ts +17 -0
- package/dist/Display/Details.svelte +49 -0
- package/dist/Display/Details.svelte.d.ts +26 -0
- package/dist/Display/Hero.svelte +50 -0
- package/dist/Display/Hero.svelte.d.ts +25 -0
- package/dist/Display/Icon.svelte +35 -0
- package/dist/Display/Icon.svelte.d.ts +18 -0
- package/dist/Display/IconButton.svelte +85 -0
- package/dist/Display/IconButton.svelte.d.ts +28 -0
- package/dist/Display/Indicator.svelte +352 -0
- package/dist/Display/Indicator.svelte.d.ts +22 -0
- package/dist/Display/Popup.svelte +111 -0
- package/dist/Display/Popup.svelte.d.ts +26 -0
- package/dist/Display/Tag.svelte +90 -0
- package/dist/Display/Tag.svelte.d.ts +31 -0
- package/dist/Display/Tooltip.svelte +96 -0
- package/dist/Display/Tooltip.svelte.d.ts +22 -0
- package/dist/Form/Button.svelte +34 -0
- package/dist/Form/Button.svelte.d.ts +24 -0
- package/dist/Form/FieldActions.svelte +25 -0
- package/dist/Form/FieldActions.svelte.d.ts +17 -0
- package/dist/Form/FieldContainer.svelte +31 -0
- package/dist/Form/FieldContainer.svelte.d.ts +18 -0
- package/dist/Form/FieldContent.svelte +78 -0
- package/dist/Form/FieldContent.svelte.d.ts +32 -0
- package/dist/Form/FieldSection.svelte +97 -0
- package/dist/Form/FieldSection.svelte.d.ts +23 -0
- package/dist/Form/Fieldset.svelte +63 -0
- package/dist/Form/Fieldset.svelte.d.ts +32 -0
- package/dist/Form/Form.svelte +19 -0
- package/dist/Form/Form.svelte.d.ts +18 -0
- package/dist/Form/Input.svelte +266 -0
- package/dist/Form/Input.svelte.d.ts +113 -0
- package/dist/Form/InputLength.svelte +32 -0
- package/dist/Form/InputLength.svelte.d.ts +19 -0
- package/dist/Form/Label.svelte +26 -0
- package/dist/Form/Label.svelte.d.ts +25 -0
- package/dist/Form/Select.svelte +24 -0
- package/dist/Form/Select.svelte.d.ts +28 -0
- package/dist/Form/form.d.ts +34 -0
- package/dist/Form/form.js +31 -0
- package/dist/Form/types.d.ts +4 -0
- package/dist/Form/types.js +1 -0
- package/dist/Grid/Column.svelte +11 -0
- package/dist/Grid/Column.svelte.d.ts +17 -0
- package/dist/Grid/Grid.svelte +19 -0
- package/dist/Grid/Grid.svelte.d.ts +18 -0
- package/dist/Grid/Row.svelte +44 -0
- package/dist/Grid/Row.svelte.d.ts +19 -0
- package/dist/Icons/Alert.svelte +3 -0
- package/dist/Icons/Alert.svelte.d.ts +23 -0
- package/dist/Icons/Copy.svelte +3 -0
- package/dist/Icons/Copy.svelte.d.ts +23 -0
- package/dist/Icons/Done.svelte +3 -0
- package/dist/Icons/Done.svelte.d.ts +23 -0
- package/dist/Icons/Error.svelte +3 -0
- package/dist/Icons/Error.svelte.d.ts +23 -0
- package/dist/Icons/Help.svelte +3 -0
- package/dist/Icons/Help.svelte.d.ts +23 -0
- package/dist/Icons/Hide.svelte +3 -0
- package/dist/Icons/Hide.svelte.d.ts +23 -0
- package/dist/Icons/Info.svelte +3 -0
- package/dist/Icons/Info.svelte.d.ts +23 -0
- package/dist/Icons/Link.svelte +3 -0
- package/dist/Icons/Link.svelte.d.ts +23 -0
- package/dist/Icons/Show.svelte +3 -0
- package/dist/Icons/Show.svelte.d.ts +23 -0
- package/dist/Icons/Success.svelte +3 -0
- package/dist/Icons/Success.svelte.d.ts +23 -0
- package/dist/Icons/Warning.svelte +3 -0
- package/dist/Icons/Warning.svelte.d.ts +23 -0
- package/dist/Layout/Layout.svelte +43 -0
- package/dist/Layout/Layout.svelte.d.ts +21 -0
- package/dist/Layout/LayoutFooter.svelte +21 -0
- package/dist/Layout/LayoutFooter.svelte.d.ts +17 -0
- package/dist/Layout/LayoutGrid.svelte +51 -0
- package/dist/Layout/LayoutGrid.svelte.d.ts +30 -0
- package/dist/Layout/LayoutHeader.svelte +94 -0
- package/dist/Layout/LayoutHeader.svelte.d.ts +38 -0
- package/dist/Layout/LayoutTypes.svelte.d.ts +15 -0
- package/dist/Layout/LayoutTypes.svelte.js +9 -0
- package/dist/Layout/PageContent.svelte +89 -0
- package/dist/Layout/PageContent.svelte.d.ts +23 -0
- package/dist/Layout/Theme.svelte +215 -0
- package/dist/Layout/Theme.svelte.d.ts +18 -0
- package/dist/Layout/UIContent.svelte +15 -0
- package/dist/Layout/UIContent.svelte.d.ts +17 -0
- package/dist/Navigation/Breadcrumb.svelte +82 -0
- package/dist/Navigation/Breadcrumb.svelte.d.ts +29 -0
- package/dist/Navigation/Menu.svelte +180 -0
- package/dist/Navigation/Menu.svelte.d.ts +18 -0
- package/dist/Navigation/MenuTypes.svelte.d.ts +37 -0
- package/dist/Navigation/MenuTypes.svelte.js +1 -0
- package/dist/Navigation/TabbedContent.svelte +43 -0
- package/dist/Navigation/TabbedContent.svelte.d.ts +22 -0
- package/dist/Navigation/Tabs.svelte +118 -0
- package/dist/Navigation/Tabs.svelte.d.ts +24 -0
- package/dist/Pages/LoginPage.svelte +32 -0
- package/dist/Pages/LoginPage.svelte.d.ts +14 -0
- package/dist/Typography/Clamp.svelte +25 -0
- package/dist/Typography/Clamp.svelte.d.ts +23 -0
- package/dist/Typography/H.svelte +51 -0
- package/dist/Typography/H.svelte.d.ts +25 -0
- package/dist/Typography/H1.svelte +14 -0
- package/dist/Typography/H1.svelte.d.ts +23 -0
- package/dist/Typography/H2.svelte +13 -0
- package/dist/Typography/H2.svelte.d.ts +23 -0
- package/dist/Typography/H3.svelte +13 -0
- package/dist/Typography/H3.svelte.d.ts +23 -0
- package/dist/Typography/H4.svelte +13 -0
- package/dist/Typography/H4.svelte.d.ts +23 -0
- package/dist/Typography/H5.svelte +13 -0
- package/dist/Typography/H5.svelte.d.ts +23 -0
- package/dist/Typography/H6.svelte +13 -0
- package/dist/Typography/H6.svelte.d.ts +23 -0
- package/dist/Typography/P.svelte +32 -0
- package/dist/Typography/P.svelte.d.ts +23 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/style.css +787 -0
- package/dist/utils/attr.d.ts +5 -0
- package/dist/utils/attr.js +21 -0
- package/dist/utils/color.d.ts +51 -0
- package/dist/utils/color.js +97 -0
- package/dist/utils/defaults.d.ts +4 -0
- package/dist/utils/defaults.js +1 -0
- package/dist/utils/hooks.server.d.ts +2 -0
- package/dist/utils/hooks.server.js +16 -0
- package/dist/utils/id.d.ts +1 -0
- package/dist/utils/id.js +3 -0
- package/dist/utils/isSnippet.d.ts +5 -0
- package/dist/utils/isSnippet.js +6 -0
- package/dist/utils/transitions.d.ts +29 -0
- package/dist/utils/transitions.js +66 -0
- package/package.json +58 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script>import {} from "svelte";
|
|
2
|
+
let {
|
|
3
|
+
left,
|
|
4
|
+
center,
|
|
5
|
+
right,
|
|
6
|
+
sticky,
|
|
7
|
+
skipToContentText = "Skip to content"
|
|
8
|
+
} = $props();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<header class="LayoutHeader" class:sticky>
|
|
12
|
+
<a href="#skip" class="Skip">{skipToContentText}</a>
|
|
13
|
+
<ul>
|
|
14
|
+
{#if left}
|
|
15
|
+
<li class="left">
|
|
16
|
+
{@render left()}
|
|
17
|
+
</li>
|
|
18
|
+
{/if}
|
|
19
|
+
{#if center}
|
|
20
|
+
<li class="center">
|
|
21
|
+
{@render center()}
|
|
22
|
+
</li>
|
|
23
|
+
{/if}
|
|
24
|
+
{#if right}
|
|
25
|
+
<li class="right">
|
|
26
|
+
{@render right()}
|
|
27
|
+
</li>
|
|
28
|
+
{/if}
|
|
29
|
+
</ul>
|
|
30
|
+
</header>
|
|
31
|
+
|
|
32
|
+
<style>
|
|
33
|
+
.LayoutHeader {
|
|
34
|
+
position: relative;
|
|
35
|
+
z-index: 1;
|
|
36
|
+
padding: 0.5rem 1rem;
|
|
37
|
+
background: color-mix(in srgb, var(--bg-app) 50%, transparent 50%);
|
|
38
|
+
backdrop-filter: blur(16px);
|
|
39
|
+
-webkit-backdrop-filter: blur(16px);
|
|
40
|
+
}
|
|
41
|
+
.LayoutHeader.sticky {
|
|
42
|
+
position: sticky;
|
|
43
|
+
top: 0;
|
|
44
|
+
}
|
|
45
|
+
.Skip {
|
|
46
|
+
position: absolute;
|
|
47
|
+
top: -40px;
|
|
48
|
+
left: 0;
|
|
49
|
+
padding: 0.5rem;
|
|
50
|
+
background: var(--bg-app);
|
|
51
|
+
font-size: 1rem;
|
|
52
|
+
z-index: 1000;
|
|
53
|
+
}
|
|
54
|
+
.Skip:focus {
|
|
55
|
+
top: 0;
|
|
56
|
+
}
|
|
57
|
+
.right :global(a) {
|
|
58
|
+
color: var(--text);
|
|
59
|
+
}
|
|
60
|
+
.right :global(a:hover) {
|
|
61
|
+
color: var(--text-link);
|
|
62
|
+
}
|
|
63
|
+
ul {
|
|
64
|
+
list-style: none;
|
|
65
|
+
padding: 0;
|
|
66
|
+
margin: 0;
|
|
67
|
+
display: grid;
|
|
68
|
+
grid-template-areas: "left center right";
|
|
69
|
+
grid-template-columns: 1fr auto 1fr;
|
|
70
|
+
align-items: center;
|
|
71
|
+
}
|
|
72
|
+
li {
|
|
73
|
+
padding: 0;
|
|
74
|
+
margin: 0;
|
|
75
|
+
flex-basis: 0;
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
flex-wrap: nowrap;
|
|
79
|
+
gap: 1rem;
|
|
80
|
+
}
|
|
81
|
+
li.left { grid-area: left; }
|
|
82
|
+
li.center { grid-area: center; }
|
|
83
|
+
li.right { grid-area: right; }
|
|
84
|
+
ul > :not(:first-child):not(:last-child) {
|
|
85
|
+
grid-column: center;
|
|
86
|
+
}
|
|
87
|
+
ul > :first-child:last-child {
|
|
88
|
+
grid-column: 1 / -1;
|
|
89
|
+
}
|
|
90
|
+
li.right {
|
|
91
|
+
display: flex;
|
|
92
|
+
justify-content: flex-end;
|
|
93
|
+
}
|
|
94
|
+
</style>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
left?: ((this: void) => typeof import("svelte").SnippetReturn & {
|
|
5
|
+
_: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
|
|
6
|
+
}) | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* The center of the header (usually a menu), search bar, etc.
|
|
9
|
+
*/
|
|
10
|
+
center?: ((this: void) => typeof import("svelte").SnippetReturn & {
|
|
11
|
+
_: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
|
|
12
|
+
}) | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* The right side of the header (usually user info, settings, etc.)
|
|
15
|
+
*/
|
|
16
|
+
right?: ((this: void) => typeof import("svelte").SnippetReturn & {
|
|
17
|
+
_: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
|
|
18
|
+
}) | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* The text to display for the skip to content link
|
|
21
|
+
*/
|
|
22
|
+
skipToContentText?: string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the header should be sticky
|
|
25
|
+
*/
|
|
26
|
+
sticky?: boolean | undefined;
|
|
27
|
+
};
|
|
28
|
+
events: {
|
|
29
|
+
[evt: string]: CustomEvent<any>;
|
|
30
|
+
};
|
|
31
|
+
slots: {};
|
|
32
|
+
};
|
|
33
|
+
export type LayoutHeaderProps = typeof __propDef.props;
|
|
34
|
+
export type LayoutHeaderEvents = typeof __propDef.events;
|
|
35
|
+
export type LayoutHeaderSlots = typeof __propDef.slots;
|
|
36
|
+
export default class LayoutHeader extends SvelteComponent<LayoutHeaderProps, LayoutHeaderEvents, LayoutHeaderSlots> {
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout container types.
|
|
3
|
+
* `ui` is for UI components. It will not add margins.
|
|
4
|
+
* `page` is for page content. It will add automatic margins to typography and other page content.
|
|
5
|
+
*/
|
|
6
|
+
export type LayoutContainerType = 'ui' | 'page';
|
|
7
|
+
export declare const BREAKPOINTS: {
|
|
8
|
+
s: number;
|
|
9
|
+
m: number;
|
|
10
|
+
l: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const BREAKPOINT_SIZES: number[];
|
|
13
|
+
export declare const SMALLEST_BREAKPOINT: number;
|
|
14
|
+
export declare const LARGEST_BREAKPOINT: number;
|
|
15
|
+
export declare const MIN_WIDTH = 280;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const BREAKPOINTS = {
|
|
2
|
+
s: 320,
|
|
3
|
+
m: 672,
|
|
4
|
+
l: 1312,
|
|
5
|
+
};
|
|
6
|
+
export const BREAKPOINT_SIZES = Object.values(BREAKPOINTS);
|
|
7
|
+
export const SMALLEST_BREAKPOINT = BREAKPOINT_SIZES[0];
|
|
8
|
+
export const LARGEST_BREAKPOINT = BREAKPOINT_SIZES[BREAKPOINT_SIZES.length - 1];
|
|
9
|
+
export const MIN_WIDTH = 280;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<script>import { setContext } from "svelte";
|
|
2
|
+
let {
|
|
3
|
+
children,
|
|
4
|
+
pad = false,
|
|
5
|
+
middle = false,
|
|
6
|
+
center = false
|
|
7
|
+
} = $props();
|
|
8
|
+
let style = $derived.by(() => {
|
|
9
|
+
if (typeof pad === "boolean") {
|
|
10
|
+
return `--padBlockStart: ${pad ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padBlockEnd: ${pad ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padInlineStart: ${pad ? "var(--padding, var(--padding-inline, 4rem))" : "0"}; --padInlineEnd: ${pad ? "var(--padding, var(--padding-inline, 4rem))" : "0"};`;
|
|
11
|
+
} else if (typeof pad === "string") {
|
|
12
|
+
return `--padBlockStart: ${pad}; --padBlockEnd: ${pad}; --padInlineStart: ${pad}; --padInlineEnd: ${pad};`;
|
|
13
|
+
} else if (Array.isArray(pad) && pad.length > 1 && typeof pad[0] === "string") {
|
|
14
|
+
switch (pad.length) {
|
|
15
|
+
case 2:
|
|
16
|
+
return `--padBlockStart: ${pad[0]}; --padBlockEnd: ${pad[0]}; --padInlineStart: ${pad[1]}; --padInlineEnd: ${pad[1]};`;
|
|
17
|
+
case 3:
|
|
18
|
+
return `--padBlockStart: ${pad[0]}; --padBlockEnd: ${pad[1]}; --padInlineStart: ${pad[2]}; --padInlineEnd: ${pad[2]};`;
|
|
19
|
+
case 4:
|
|
20
|
+
return `--padBlockStart: ${pad[0]}; --padBlockEnd: ${pad[1]}; --padInlineStart: ${pad[2]}; --padInlineEnd: ${pad[3]};`;
|
|
21
|
+
}
|
|
22
|
+
} else if (Array.isArray(pad) && pad.length > 1) {
|
|
23
|
+
switch (pad.length) {
|
|
24
|
+
case 2:
|
|
25
|
+
return `--padBlockStart: ${pad[0] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padBlockEnd: ${pad[0] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padInlineStart: ${pad[1] ? "var(--padding, var(--padding-inline, 4rem))" : "0"}; --padInlineEnd: ${pad[1] ? "var(--padding, var(--padding-inline, 4rem))" : "0"};`;
|
|
26
|
+
case 3:
|
|
27
|
+
return `--padBlockStart: ${pad[0] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padBlockEnd: ${pad[1] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padInlineStart: ${pad[2] ? "var(--padding, var(--padding-inline, 4rem))" : "0"}; --padInlineEnd: ${pad[2] ? "var(--padding, var(--padding-inline, 4rem))" : "0"};`;
|
|
28
|
+
case 4:
|
|
29
|
+
return `--padBlockStart: ${pad[0] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padBlockEnd: ${pad[1] ? "var(--padding, var(--padding-block, 4rem))" : "0"}; --padInlineStart: ${pad[2] ? "var(--padding, var(--padding-inline, 4rem))" : "0"}; --padInlineEnd: ${pad[3] ? "var(--padding, var(--padding-inline, 4rem))" : "0"};`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return "";
|
|
33
|
+
});
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
<article
|
|
37
|
+
class="Page"
|
|
38
|
+
class:middle
|
|
39
|
+
class:center
|
|
40
|
+
style={style}
|
|
41
|
+
>
|
|
42
|
+
<div class="PaddingContainer">
|
|
43
|
+
<div class="PageContent">
|
|
44
|
+
{@render children()}
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</article>
|
|
48
|
+
|
|
49
|
+
<style>
|
|
50
|
+
.Page {
|
|
51
|
+
inline-size: 100%;
|
|
52
|
+
display: grid;
|
|
53
|
+
grid-template-columns: 1fr;
|
|
54
|
+
container-type: inline-size;
|
|
55
|
+
container-name: page;
|
|
56
|
+
position: relative;
|
|
57
|
+
}
|
|
58
|
+
.PageContent {
|
|
59
|
+
max-inline-size: var(--max-inline-size, 1560px);
|
|
60
|
+
flex-grow: 1;
|
|
61
|
+
--isPage: 1;
|
|
62
|
+
}
|
|
63
|
+
.Page.center {
|
|
64
|
+
justify-content: center;
|
|
65
|
+
}
|
|
66
|
+
.Page.middle {
|
|
67
|
+
block-size: 100%;
|
|
68
|
+
align-items: center;
|
|
69
|
+
}
|
|
70
|
+
.Page .PaddingContainer {
|
|
71
|
+
padding-block-start: var(--padBlockStart);
|
|
72
|
+
padding-block-end: var(--padBlockEnd);
|
|
73
|
+
padding-inline-start: var(--padInlineStart);
|
|
74
|
+
padding-inline-end: var(--padInlineEnd);
|
|
75
|
+
display: flex;
|
|
76
|
+
}
|
|
77
|
+
.Page.center .PaddingContainer {
|
|
78
|
+
justify-content: center;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@media (max-width: 960px) {
|
|
82
|
+
.Page .PaddingContainer {
|
|
83
|
+
padding-block-start: calc(var(--padBlockStart) / 2);
|
|
84
|
+
padding-block-end: calc(var(--padBlockEnd) / 2);
|
|
85
|
+
padding-inline-start: calc(var(--padInlineStart) / 2);
|
|
86
|
+
padding-inline-end: calc(var(--padInlineEnd) / 2);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type Snippet } from "svelte";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
children: Snippet;
|
|
6
|
+
/** Add padding to the container. Pass in either a boolean or an array of booleans to specify padding on the block and inline axes. */
|
|
7
|
+
pad?: string | boolean | [boolean, boolean] | [boolean, boolean, boolean] | [boolean, boolean, boolean, boolean] | [string, string] | [string, string, string] | [string, string, string, string] | undefined;
|
|
8
|
+
/** Center the content in the block direction. */
|
|
9
|
+
middle?: boolean | undefined;
|
|
10
|
+
/** Center the content in the inline direction. */
|
|
11
|
+
center?: boolean | undefined;
|
|
12
|
+
};
|
|
13
|
+
events: {
|
|
14
|
+
[evt: string]: CustomEvent<any>;
|
|
15
|
+
};
|
|
16
|
+
slots: {};
|
|
17
|
+
};
|
|
18
|
+
export type PageContentProps = typeof __propDef.props;
|
|
19
|
+
export type PageContentEvents = typeof __propDef.events;
|
|
20
|
+
export type PageContentSlots = typeof __propDef.slots;
|
|
21
|
+
export default class PageContent extends SvelteComponent<PageContentProps, PageContentEvents, PageContentSlots> {
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
<script>import { browser } from "$app/environment";
|
|
2
|
+
import { getContext, setContext } from "svelte";
|
|
3
|
+
let {
|
|
4
|
+
theme,
|
|
5
|
+
children
|
|
6
|
+
} = $props();
|
|
7
|
+
const root = getContext("theme") === void 0;
|
|
8
|
+
if (theme === "invert") {
|
|
9
|
+
const previousTheme = getContext("theme") || "light";
|
|
10
|
+
theme = previousTheme === "light" ? "dark" : "light";
|
|
11
|
+
} else {
|
|
12
|
+
theme = theme || (browser ? localStorage.getItem("theme") || window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : "light");
|
|
13
|
+
}
|
|
14
|
+
const existingTheme = getContext("theme");
|
|
15
|
+
setContext("theme", theme);
|
|
16
|
+
console.log("theme", theme);
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<svelte:body style="background-color: var(--bg-app);" />
|
|
20
|
+
|
|
21
|
+
<svelte:head>
|
|
22
|
+
{#if !existingTheme}
|
|
23
|
+
<meta name="theme-color" content="{theme === 'dark' ? '#000' : '#fff'}" />
|
|
24
|
+
{/if}
|
|
25
|
+
</svelte:head>
|
|
26
|
+
|
|
27
|
+
<span class="Theme {theme ? theme : ''}" class:root>
|
|
28
|
+
{@render children()}
|
|
29
|
+
</span>
|
|
30
|
+
|
|
31
|
+
<style>
|
|
32
|
+
.Theme {
|
|
33
|
+
display: contents;
|
|
34
|
+
}
|
|
35
|
+
.Theme.light {
|
|
36
|
+
--mix-target: var(--l-mix-target);
|
|
37
|
+
/* bg */
|
|
38
|
+
--bg-app: var(--l-bg-app);
|
|
39
|
+
--bg-subtle: var(--l-bg-subtle);
|
|
40
|
+
--bg-overlay: var(--l-bg-overlay);
|
|
41
|
+
--shadow: var(--l-shadow);
|
|
42
|
+
/* border */
|
|
43
|
+
--border-color: var(--l-border-color);
|
|
44
|
+
--border-subtle-color: var(--l-border-subtle-color);
|
|
45
|
+
--focus-color: var(--l-focus-color);
|
|
46
|
+
--border: var(--l-border);
|
|
47
|
+
--border-subtle: var(--l-border-subtle);
|
|
48
|
+
--focus-outline: var(--l-focus-outline);
|
|
49
|
+
/* text */
|
|
50
|
+
--text: var(--l-text);
|
|
51
|
+
--text-subtle: var(--l-text-subtle);
|
|
52
|
+
--text-highlight: var(--l-text-highlight);
|
|
53
|
+
--text-heading: var(--l-text-heading);
|
|
54
|
+
--text-link: var(--l-text-link);
|
|
55
|
+
--text-warn: var(--l-text-warn);
|
|
56
|
+
--text-icon: var(--l-text-icon);
|
|
57
|
+
--text-subtle-icon: var(--l-text-subtle-icon);
|
|
58
|
+
--text-warn-icon: var(--l-text-warn-icon);
|
|
59
|
+
/* fields */
|
|
60
|
+
--field-bg: var(--l-field-bg);
|
|
61
|
+
--field-border: var(--l-field-border);
|
|
62
|
+
--field-text: var(--l-field-text);
|
|
63
|
+
--field-placeholder: var(--l-field-placeholder);
|
|
64
|
+
--field-label: var(--l-field-label);
|
|
65
|
+
/* toggle */
|
|
66
|
+
--toggle-on: var(--l-toggle-on);
|
|
67
|
+
--toggle-off: var(--l-toggle-off);
|
|
68
|
+
/* buttons */
|
|
69
|
+
--button-bg: var(--l-button-bg);
|
|
70
|
+
--button-text: var(--l-button-text);
|
|
71
|
+
--button-border-color: var(--l-button-border-color);
|
|
72
|
+
--button-border: var(--l-button-border);
|
|
73
|
+
/* buttons: secondary */
|
|
74
|
+
--button-secondary-bg: var(--l-button-secondary-bg);
|
|
75
|
+
--button-secondary-text: var(--l-button-secondary-text);
|
|
76
|
+
--button-secondary-border-color: var(--l-button-secondary-border-color);
|
|
77
|
+
--button-secondary-border: var(--l-button-secondary-border);
|
|
78
|
+
/* buttons: disabled */
|
|
79
|
+
--button-disabled-bg: var(--l-button-disabled-bg);
|
|
80
|
+
--button-disabled-text: var(--l-button-disabled-text);
|
|
81
|
+
--button-disabled-border-color: var(--l-button-disabled-border-color);
|
|
82
|
+
--button-disabled-border: var(--l-button-disabled-border);
|
|
83
|
+
/* buttons: outlined */
|
|
84
|
+
--button-outlined-text: var(--l-button-outlined-text);
|
|
85
|
+
--button-outlined-border-color: var(--l-button-outlined-border-color);
|
|
86
|
+
--button-outlined-border: var(--l-button-outlined-border);
|
|
87
|
+
/* buttons: warn */
|
|
88
|
+
--button-warn-bg: var(--l-button-warn-bg);
|
|
89
|
+
--button-warn-text: var(--l-button-warn-text);
|
|
90
|
+
--button-warn-border-color: var(--l-button-warn-border-color);
|
|
91
|
+
--button-warn-border: var(--l-button-warn-border);
|
|
92
|
+
/* warn */
|
|
93
|
+
--warn-bg: var(--l-warn-bg);
|
|
94
|
+
--warn-border: var(--l-warn-border);
|
|
95
|
+
--warn-text: var(--l-warn-text);
|
|
96
|
+
/* success */
|
|
97
|
+
--success-bg: var(--l-success-bg);
|
|
98
|
+
--success-border: var(--l-success-border);
|
|
99
|
+
--success-text: var(--l-success-text);
|
|
100
|
+
/* error */
|
|
101
|
+
--error-bg: var(--l-error-bg);
|
|
102
|
+
--error-border: var(--l-error-border);
|
|
103
|
+
--error-text: var(--l-error-text);
|
|
104
|
+
/* info */
|
|
105
|
+
--info-bg: var(--l-info-bg);
|
|
106
|
+
--info-border: var(--l-info-border);
|
|
107
|
+
--info-text: var(--l-info-text);
|
|
108
|
+
/* menu */
|
|
109
|
+
--menu-bg: var(--l-menu-bg);
|
|
110
|
+
--menu-bg-active: var(--l-menu-bg-active);
|
|
111
|
+
--menu-bg-hover: var(--l-menu-bg-hover);
|
|
112
|
+
--menu-border: var(--l-menu-border);
|
|
113
|
+
--menu-link: var(--l-menu-link);
|
|
114
|
+
--menu-link-hover: var(--l-menu-link-hover);
|
|
115
|
+
--menu-link-active: var(--l-menu-link-active);
|
|
116
|
+
--menu-link-active-hover: var(--l-menu-link-active-hover);
|
|
117
|
+
/* status */
|
|
118
|
+
--status-default: var(--l-status-default);
|
|
119
|
+
--status-ok: var(--l-status-ok);
|
|
120
|
+
--status-alert: var(--l-status-alert);
|
|
121
|
+
--status-warn: var(--l-status-warn);
|
|
122
|
+
--status-info: var(--l-status-info);
|
|
123
|
+
--status-task: var(--l-status-task);
|
|
124
|
+
}
|
|
125
|
+
.Theme.dark {
|
|
126
|
+
--mix-target: var(--d-mix-target);
|
|
127
|
+
/* bg */
|
|
128
|
+
--bg-app: var(--d-bg-app);
|
|
129
|
+
--bg-subtle: var(--d-bg-subtle);
|
|
130
|
+
--bg-overlay: var(--d-bg-overlay);
|
|
131
|
+
--shadow: var(--d-shadow);
|
|
132
|
+
/* border */
|
|
133
|
+
--border-color: var(--d-border-color);
|
|
134
|
+
--border-subtle-color: var(--d-border-subtle-color);
|
|
135
|
+
--focus-color: var(--d-focus-color);
|
|
136
|
+
--border: var(--d-border);
|
|
137
|
+
--border-subtle: var(--d-border-subtle);
|
|
138
|
+
--focus-outline: var(--d-focus-outline);
|
|
139
|
+
/* text */
|
|
140
|
+
--text: var(--d-text);
|
|
141
|
+
--text-subtle: var(--d-text-subtle);
|
|
142
|
+
--text-highlight: var(--d-text-highlight);
|
|
143
|
+
--text-heading: var(--d-text-heading);
|
|
144
|
+
--text-link: var(--d-text-link);
|
|
145
|
+
--text-link-hover: var(--d-text-link-hover);
|
|
146
|
+
--text-warn: var(--d-text-warn);
|
|
147
|
+
--text-icon: var(--d-text-icon);
|
|
148
|
+
--text-subtle-icon: var(--d-text-subtle-icon);
|
|
149
|
+
--text-warn-icon: var(--d-text-warn-icon);
|
|
150
|
+
/* fields */
|
|
151
|
+
--field-bg: var(--d-field-bg);
|
|
152
|
+
--field-border: var(--d-field-border);
|
|
153
|
+
--field-text: var(--d-field-text);
|
|
154
|
+
--field-placeholder: var(--d-field-placeholder);
|
|
155
|
+
--field-label: var(--d-field-label);
|
|
156
|
+
/* toggle */
|
|
157
|
+
--toggle-on: var(--d-toggle-on);
|
|
158
|
+
--toggle-on-hover: var(--d-toggle-on-hover);
|
|
159
|
+
--toggle-off: var(--d-toggle-off);
|
|
160
|
+
--toggle-off-hover: var(--d-toggle-off-hover);
|
|
161
|
+
/* buttons */
|
|
162
|
+
--button-bg: var(--d-button-bg);
|
|
163
|
+
--button-text: var(--d-button-text);
|
|
164
|
+
--button-border-color: var(--d-button-border-color);
|
|
165
|
+
--button-border: var(--d-button-border);
|
|
166
|
+
/* buttons: secondary */
|
|
167
|
+
--button-secondary-bg: var(--d-button-secondary-bg);
|
|
168
|
+
--button-secondary-text: var(--d-button-secondary-text);
|
|
169
|
+
--button-secondary-border-color: var(--d-button-secondary-border-color);
|
|
170
|
+
--button-secondary-border: var(--d-button-secondary-border);
|
|
171
|
+
/* buttons: disabled */
|
|
172
|
+
--button-disabled-bg: var(--d-button-disabled-bg);
|
|
173
|
+
--button-disabled-text: var(--d-button-disabled-text);
|
|
174
|
+
--button-disabled-border-color: var(--d-button-disabled-border-color);
|
|
175
|
+
--button-disabled-border: var(--d-button-disabled-border);
|
|
176
|
+
/* buttons: outlined */
|
|
177
|
+
--button-outlined-text: var(--d-button-outlined-text);
|
|
178
|
+
--button-outlined-border-color: var(--d-button-outlined-border-color);
|
|
179
|
+
--button-outlined-border: var(--d-button-outlined-border);
|
|
180
|
+
/* buttons: warn */
|
|
181
|
+
--button-warn-bg: var(--d-button-warn-bg);
|
|
182
|
+
--button-warn-text: var(--d-button-warn-text);
|
|
183
|
+
--button-warn-border-color: var(--d-button-warn-border-color);
|
|
184
|
+
--button-warn-border: var(--d-button-warn-border);
|
|
185
|
+
/* warn */
|
|
186
|
+
--warn-bg: var(--d-warn-bg);
|
|
187
|
+
--warn-border: var(--d-warn-border);
|
|
188
|
+
--warn-text: var(--d-warn-text);
|
|
189
|
+
/* success */
|
|
190
|
+
--success-bg: var(--d-success-bg);
|
|
191
|
+
--success-border: var(--d-success-border);
|
|
192
|
+
--success-text: var(--d-success-text);
|
|
193
|
+
/* error */
|
|
194
|
+
--error-bg: var(--d-error-bg);
|
|
195
|
+
--error-border: var(--d-error-border);
|
|
196
|
+
--error-text: var(--d-error-text);
|
|
197
|
+
/* info */
|
|
198
|
+
--info-bg: var(--d-info-bg);
|
|
199
|
+
--info-border: var(--d-info-border);
|
|
200
|
+
--info-text: var(--d-info-text);
|
|
201
|
+
/* menu */
|
|
202
|
+
--menu-bg: var(--d-menu-bg);
|
|
203
|
+
--menu-bg-active: var(--d-menu-bg-active);
|
|
204
|
+
--menu-border: var(--d-menu-border);
|
|
205
|
+
--menu-link: var(--d-menu-link);
|
|
206
|
+
--menu-link-active: var(--d-menu-link-active);
|
|
207
|
+
/* status */
|
|
208
|
+
--status-default: var(--d-status-default);
|
|
209
|
+
--status-ok: var(--d-status-ok);
|
|
210
|
+
--status-alert: var(--d-status-alert);
|
|
211
|
+
--status-warn: var(--d-status-warn);
|
|
212
|
+
--status-info: var(--d-status-info);
|
|
213
|
+
--status-task: var(--d-status-task);
|
|
214
|
+
}
|
|
215
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type Snippet } from "svelte";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
theme?: "light" | "dark" | "invert" | undefined;
|
|
6
|
+
children: Snippet;
|
|
7
|
+
};
|
|
8
|
+
events: {
|
|
9
|
+
[evt: string]: CustomEvent<any>;
|
|
10
|
+
};
|
|
11
|
+
slots: {};
|
|
12
|
+
};
|
|
13
|
+
export type ThemeProps = typeof __propDef.props;
|
|
14
|
+
export type ThemeEvents = typeof __propDef.events;
|
|
15
|
+
export type ThemeSlots = typeof __propDef.slots;
|
|
16
|
+
export default class Theme extends SvelteComponent<ThemeProps, ThemeEvents, ThemeSlots> {
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
children: Snippet;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
[evt: string]: CustomEvent<any>;
|
|
9
|
+
};
|
|
10
|
+
slots: {};
|
|
11
|
+
};
|
|
12
|
+
export type UiContentProps = typeof __propDef.props;
|
|
13
|
+
export type UiContentEvents = typeof __propDef.events;
|
|
14
|
+
export type UiContentSlots = typeof __propDef.slots;
|
|
15
|
+
export default class UiContent extends SvelteComponent<UiContentProps, UiContentEvents, UiContentSlots> {
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<script>const {
|
|
2
|
+
items,
|
|
3
|
+
separator = "/",
|
|
4
|
+
contained,
|
|
5
|
+
fullWidth,
|
|
6
|
+
center
|
|
7
|
+
} = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<nav class:center class:contained class:fullWidth aria-label="Breadcrumb">
|
|
11
|
+
<ol>
|
|
12
|
+
{#each items as item, index}
|
|
13
|
+
<li aria-current={index === items.length - 1 ? "page" : undefined}>
|
|
14
|
+
{#if item.href && index < items.length - 1}
|
|
15
|
+
<a href={item.href}>{item.label}</a>
|
|
16
|
+
{:else}
|
|
17
|
+
<span>{item.label}</span>
|
|
18
|
+
{/if}
|
|
19
|
+
</li>
|
|
20
|
+
{#if index !== items.length - 1}
|
|
21
|
+
<li aria-hidden="true" class="separator">
|
|
22
|
+
{#if typeof separator === "string"}
|
|
23
|
+
<span>{separator}</span>
|
|
24
|
+
{/if}
|
|
25
|
+
</li>
|
|
26
|
+
{/if}
|
|
27
|
+
{/each}
|
|
28
|
+
</ol>
|
|
29
|
+
</nav>
|
|
30
|
+
|
|
31
|
+
<style>
|
|
32
|
+
nav {
|
|
33
|
+
padding: 0;
|
|
34
|
+
block-size: auto;
|
|
35
|
+
display: flex;
|
|
36
|
+
justify-content: start;
|
|
37
|
+
align-items: center;
|
|
38
|
+
font-size: var(--font-size, 1em);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
nav ol {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
list-style: none;
|
|
45
|
+
margin: 0;
|
|
46
|
+
padding: 0;
|
|
47
|
+
gap: 0.5rem;
|
|
48
|
+
border-radius: var(--border-radius);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
nav ol li {
|
|
52
|
+
display: flex;
|
|
53
|
+
align-items: center;
|
|
54
|
+
justify-content: center;
|
|
55
|
+
margin: 0;
|
|
56
|
+
padding: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.separator span {
|
|
60
|
+
font-size: 1rem;
|
|
61
|
+
line-height: 1rem;
|
|
62
|
+
color: var(--text-subtle);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
nav.contained ol {
|
|
66
|
+
padding: 0 1rem;
|
|
67
|
+
border: var(--border);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
nav.contained ol li a {
|
|
71
|
+
padding: var(--padding, 0.5rem 0);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
nav.center {
|
|
75
|
+
justify-content: center;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
nav.fullWidth ol {
|
|
79
|
+
block-size: 100%;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import type { ComponentType } from "svelte";
|
|
3
|
+
import type { BreadcrumbItem } from "./MenuTypes.svelte.js";
|
|
4
|
+
declare const __propDef: {
|
|
5
|
+
props: {
|
|
6
|
+
/** The items to display in the breadcrumb. */
|
|
7
|
+
items: BreadcrumbItem[];
|
|
8
|
+
/** The separator to use between breadcrumb items. */
|
|
9
|
+
separator?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
|
|
10
|
+
_: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
|
|
11
|
+
}) | ComponentType | undefined;
|
|
12
|
+
/** Contain the element in a box. */
|
|
13
|
+
contained?: boolean | undefined;
|
|
14
|
+
/** Make the element full width. */
|
|
15
|
+
fullWidth?: boolean | undefined;
|
|
16
|
+
/** Center the items in the element. */
|
|
17
|
+
center?: boolean | undefined;
|
|
18
|
+
};
|
|
19
|
+
events: {
|
|
20
|
+
[evt: string]: CustomEvent<any>;
|
|
21
|
+
};
|
|
22
|
+
slots: {};
|
|
23
|
+
};
|
|
24
|
+
export type BreadcrumbProps = typeof __propDef.props;
|
|
25
|
+
export type BreadcrumbEvents = typeof __propDef.events;
|
|
26
|
+
export type BreadcrumbSlots = typeof __propDef.slots;
|
|
27
|
+
export default class Breadcrumb extends SvelteComponent<BreadcrumbProps, BreadcrumbEvents, BreadcrumbSlots> {
|
|
28
|
+
}
|
|
29
|
+
export {};
|