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.
Files changed (153) hide show
  1. package/README.md +29 -0
  2. package/dist/Data/Stat.svelte +89 -0
  3. package/dist/Data/Stat.svelte.d.ts +33 -0
  4. package/dist/DataTable/DataTable.svelte +36 -0
  5. package/dist/DataTable/DataTable.svelte.d.ts +19 -0
  6. package/dist/DataTable/DataTableColumn.svelte +20 -0
  7. package/dist/DataTable/DataTableColumn.svelte.d.ts +18 -0
  8. package/dist/DataTable/DataTableRow.svelte +28 -0
  9. package/dist/DataTable/DataTableRow.svelte.d.ts +18 -0
  10. package/dist/Display/Avatar.svelte +61 -0
  11. package/dist/Display/Avatar.svelte.d.ts +18 -0
  12. package/dist/Display/Badge.svelte +93 -0
  13. package/dist/Display/Badge.svelte.d.ts +30 -0
  14. package/dist/Display/Callout.svelte +105 -0
  15. package/dist/Display/Callout.svelte.d.ts +34 -0
  16. package/dist/Display/Code.svelte +195 -0
  17. package/dist/Display/Code.svelte.d.ts +29 -0
  18. package/dist/Display/ContextTip.svelte +23 -0
  19. package/dist/Display/ContextTip.svelte.d.ts +17 -0
  20. package/dist/Display/Details.svelte +49 -0
  21. package/dist/Display/Details.svelte.d.ts +26 -0
  22. package/dist/Display/Hero.svelte +50 -0
  23. package/dist/Display/Hero.svelte.d.ts +25 -0
  24. package/dist/Display/Icon.svelte +35 -0
  25. package/dist/Display/Icon.svelte.d.ts +18 -0
  26. package/dist/Display/IconButton.svelte +85 -0
  27. package/dist/Display/IconButton.svelte.d.ts +28 -0
  28. package/dist/Display/Indicator.svelte +352 -0
  29. package/dist/Display/Indicator.svelte.d.ts +22 -0
  30. package/dist/Display/Popup.svelte +111 -0
  31. package/dist/Display/Popup.svelte.d.ts +26 -0
  32. package/dist/Display/Tag.svelte +90 -0
  33. package/dist/Display/Tag.svelte.d.ts +31 -0
  34. package/dist/Display/Tooltip.svelte +96 -0
  35. package/dist/Display/Tooltip.svelte.d.ts +22 -0
  36. package/dist/Form/Button.svelte +34 -0
  37. package/dist/Form/Button.svelte.d.ts +24 -0
  38. package/dist/Form/FieldActions.svelte +25 -0
  39. package/dist/Form/FieldActions.svelte.d.ts +17 -0
  40. package/dist/Form/FieldContainer.svelte +31 -0
  41. package/dist/Form/FieldContainer.svelte.d.ts +18 -0
  42. package/dist/Form/FieldContent.svelte +78 -0
  43. package/dist/Form/FieldContent.svelte.d.ts +32 -0
  44. package/dist/Form/FieldSection.svelte +97 -0
  45. package/dist/Form/FieldSection.svelte.d.ts +23 -0
  46. package/dist/Form/Fieldset.svelte +63 -0
  47. package/dist/Form/Fieldset.svelte.d.ts +32 -0
  48. package/dist/Form/Form.svelte +19 -0
  49. package/dist/Form/Form.svelte.d.ts +18 -0
  50. package/dist/Form/Input.svelte +266 -0
  51. package/dist/Form/Input.svelte.d.ts +113 -0
  52. package/dist/Form/InputLength.svelte +32 -0
  53. package/dist/Form/InputLength.svelte.d.ts +19 -0
  54. package/dist/Form/Label.svelte +26 -0
  55. package/dist/Form/Label.svelte.d.ts +25 -0
  56. package/dist/Form/Select.svelte +24 -0
  57. package/dist/Form/Select.svelte.d.ts +28 -0
  58. package/dist/Form/form.d.ts +34 -0
  59. package/dist/Form/form.js +31 -0
  60. package/dist/Form/types.d.ts +4 -0
  61. package/dist/Form/types.js +1 -0
  62. package/dist/Grid/Column.svelte +11 -0
  63. package/dist/Grid/Column.svelte.d.ts +17 -0
  64. package/dist/Grid/Grid.svelte +19 -0
  65. package/dist/Grid/Grid.svelte.d.ts +18 -0
  66. package/dist/Grid/Row.svelte +44 -0
  67. package/dist/Grid/Row.svelte.d.ts +19 -0
  68. package/dist/Icons/Alert.svelte +3 -0
  69. package/dist/Icons/Alert.svelte.d.ts +23 -0
  70. package/dist/Icons/Copy.svelte +3 -0
  71. package/dist/Icons/Copy.svelte.d.ts +23 -0
  72. package/dist/Icons/Done.svelte +3 -0
  73. package/dist/Icons/Done.svelte.d.ts +23 -0
  74. package/dist/Icons/Error.svelte +3 -0
  75. package/dist/Icons/Error.svelte.d.ts +23 -0
  76. package/dist/Icons/Help.svelte +3 -0
  77. package/dist/Icons/Help.svelte.d.ts +23 -0
  78. package/dist/Icons/Hide.svelte +3 -0
  79. package/dist/Icons/Hide.svelte.d.ts +23 -0
  80. package/dist/Icons/Info.svelte +3 -0
  81. package/dist/Icons/Info.svelte.d.ts +23 -0
  82. package/dist/Icons/Link.svelte +3 -0
  83. package/dist/Icons/Link.svelte.d.ts +23 -0
  84. package/dist/Icons/Show.svelte +3 -0
  85. package/dist/Icons/Show.svelte.d.ts +23 -0
  86. package/dist/Icons/Success.svelte +3 -0
  87. package/dist/Icons/Success.svelte.d.ts +23 -0
  88. package/dist/Icons/Warning.svelte +3 -0
  89. package/dist/Icons/Warning.svelte.d.ts +23 -0
  90. package/dist/Layout/Layout.svelte +43 -0
  91. package/dist/Layout/Layout.svelte.d.ts +21 -0
  92. package/dist/Layout/LayoutFooter.svelte +21 -0
  93. package/dist/Layout/LayoutFooter.svelte.d.ts +17 -0
  94. package/dist/Layout/LayoutGrid.svelte +51 -0
  95. package/dist/Layout/LayoutGrid.svelte.d.ts +30 -0
  96. package/dist/Layout/LayoutHeader.svelte +94 -0
  97. package/dist/Layout/LayoutHeader.svelte.d.ts +38 -0
  98. package/dist/Layout/LayoutTypes.svelte.d.ts +15 -0
  99. package/dist/Layout/LayoutTypes.svelte.js +9 -0
  100. package/dist/Layout/PageContent.svelte +89 -0
  101. package/dist/Layout/PageContent.svelte.d.ts +23 -0
  102. package/dist/Layout/Theme.svelte +215 -0
  103. package/dist/Layout/Theme.svelte.d.ts +18 -0
  104. package/dist/Layout/UIContent.svelte +15 -0
  105. package/dist/Layout/UIContent.svelte.d.ts +17 -0
  106. package/dist/Navigation/Breadcrumb.svelte +82 -0
  107. package/dist/Navigation/Breadcrumb.svelte.d.ts +29 -0
  108. package/dist/Navigation/Menu.svelte +180 -0
  109. package/dist/Navigation/Menu.svelte.d.ts +18 -0
  110. package/dist/Navigation/MenuTypes.svelte.d.ts +37 -0
  111. package/dist/Navigation/MenuTypes.svelte.js +1 -0
  112. package/dist/Navigation/TabbedContent.svelte +43 -0
  113. package/dist/Navigation/TabbedContent.svelte.d.ts +22 -0
  114. package/dist/Navigation/Tabs.svelte +118 -0
  115. package/dist/Navigation/Tabs.svelte.d.ts +24 -0
  116. package/dist/Pages/LoginPage.svelte +32 -0
  117. package/dist/Pages/LoginPage.svelte.d.ts +14 -0
  118. package/dist/Typography/Clamp.svelte +25 -0
  119. package/dist/Typography/Clamp.svelte.d.ts +23 -0
  120. package/dist/Typography/H.svelte +51 -0
  121. package/dist/Typography/H.svelte.d.ts +25 -0
  122. package/dist/Typography/H1.svelte +14 -0
  123. package/dist/Typography/H1.svelte.d.ts +23 -0
  124. package/dist/Typography/H2.svelte +13 -0
  125. package/dist/Typography/H2.svelte.d.ts +23 -0
  126. package/dist/Typography/H3.svelte +13 -0
  127. package/dist/Typography/H3.svelte.d.ts +23 -0
  128. package/dist/Typography/H4.svelte +13 -0
  129. package/dist/Typography/H4.svelte.d.ts +23 -0
  130. package/dist/Typography/H5.svelte +13 -0
  131. package/dist/Typography/H5.svelte.d.ts +23 -0
  132. package/dist/Typography/H6.svelte +13 -0
  133. package/dist/Typography/H6.svelte.d.ts +23 -0
  134. package/dist/Typography/P.svelte +32 -0
  135. package/dist/Typography/P.svelte.d.ts +23 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +2 -0
  138. package/dist/style.css +787 -0
  139. package/dist/utils/attr.d.ts +5 -0
  140. package/dist/utils/attr.js +21 -0
  141. package/dist/utils/color.d.ts +51 -0
  142. package/dist/utils/color.js +97 -0
  143. package/dist/utils/defaults.d.ts +4 -0
  144. package/dist/utils/defaults.js +1 -0
  145. package/dist/utils/hooks.server.d.ts +2 -0
  146. package/dist/utils/hooks.server.js +16 -0
  147. package/dist/utils/id.d.ts +1 -0
  148. package/dist/utils/id.js +3 -0
  149. package/dist/utils/isSnippet.d.ts +5 -0
  150. package/dist/utils/isSnippet.js +6 -0
  151. package/dist/utils/transitions.d.ts +29 -0
  152. package/dist/utils/transitions.js +66 -0
  153. 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,15 @@
1
+ <script>let {
2
+ children
3
+ } = $props();
4
+ </script>
5
+
6
+ <div class="UIContent">
7
+ {@render children()}
8
+ </div>
9
+
10
+ <style>
11
+ .UIContent {
12
+ display: contents;
13
+ --isPage: 0;
14
+ }
15
+ </style>
@@ -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 {};