lutra 0.0.20 → 0.0.33

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 (192) hide show
  1. package/dist/color.css +0 -0
  2. package/dist/display/Avatar.svelte +1 -1
  3. package/dist/display/Avatar.svelte.d.ts +18 -22
  4. package/dist/display/Badge.svelte +2 -4
  5. package/dist/display/Badge.svelte.d.ts +28 -32
  6. package/dist/display/Callout.svelte +8 -8
  7. package/dist/display/Callout.svelte.d.ts +27 -35
  8. package/dist/display/Close.svelte.d.ts +17 -20
  9. package/dist/display/Code.svelte +26 -31
  10. package/dist/display/Code.svelte.d.ts +31 -30
  11. package/dist/display/ContextTip.svelte +2 -5
  12. package/dist/display/ContextTip.svelte.d.ts +16 -20
  13. package/dist/display/DataList.svelte +16 -0
  14. package/dist/display/DataList.svelte.d.ts +21 -0
  15. package/dist/display/Details.svelte.d.ts +25 -30
  16. package/dist/display/Hero.svelte.d.ts +24 -28
  17. package/dist/display/Icon.svelte +3 -4
  18. package/dist/display/Icon.svelte.d.ts +18 -23
  19. package/dist/display/IconButton.svelte +12 -5
  20. package/dist/display/IconButton.svelte.d.ts +26 -29
  21. package/dist/display/Image.svelte.d.ts +25 -36
  22. package/dist/display/Indicator.svelte.d.ts +21 -22
  23. package/dist/display/Inset.svelte.d.ts +16 -20
  24. package/dist/display/LineChart.svelte +385 -0
  25. package/dist/display/LineChart.svelte.d.ts +24 -0
  26. package/dist/display/LoadingIndicator.svelte +33 -0
  27. package/dist/display/LoadingIndicator.svelte.d.ts +15 -0
  28. package/dist/display/Modal.svelte +116 -0
  29. package/dist/display/Modal.svelte.d.ts +27 -0
  30. package/dist/display/Notification.svelte.d.ts +22 -41
  31. package/dist/display/Panel.svelte +23 -0
  32. package/dist/display/Panel.svelte.d.ts +19 -0
  33. package/dist/display/Popup.svelte.d.ts +23 -28
  34. package/dist/{data → display}/Stat.svelte +9 -17
  35. package/dist/display/Stat.svelte.d.ts +30 -0
  36. package/dist/display/Table.svelte +14 -10
  37. package/dist/display/Table.svelte.d.ts +22 -32
  38. package/dist/display/TablePaginator.svelte +51 -0
  39. package/dist/display/TablePaginator.svelte.d.ts +21 -0
  40. package/dist/display/Tag.svelte.d.ts +29 -32
  41. package/dist/display/Tooltip.svelte +5 -4
  42. package/dist/display/Tooltip.svelte.d.ts +21 -26
  43. package/dist/display/chart.d.ts +78 -0
  44. package/dist/display/chart.js +212 -0
  45. package/dist/display/index.d.ts +11 -1
  46. package/dist/display/index.js +11 -1
  47. package/dist/display/notifications.svelte.d.ts +3 -3
  48. package/dist/display/notifications.svelte.js +2 -2
  49. package/dist/form/Button.svelte +7 -2
  50. package/dist/form/Button.svelte.d.ts +25 -35
  51. package/dist/form/FieldActions.svelte +25 -3
  52. package/dist/form/FieldActions.svelte.d.ts +18 -22
  53. package/dist/form/FieldContainer.svelte +1 -1
  54. package/dist/form/FieldContainer.svelte.d.ts +17 -22
  55. package/dist/form/FieldContent.svelte +52 -33
  56. package/dist/form/FieldContent.svelte.d.ts +28 -56
  57. package/dist/form/FieldError.svelte.d.ts +17 -20
  58. package/dist/form/FieldSection.svelte.d.ts +18 -32
  59. package/dist/form/Fieldset.svelte.d.ts +29 -40
  60. package/dist/form/Form.svelte +55 -17
  61. package/dist/form/Form.svelte.d.ts +36 -31
  62. package/dist/form/ImageUpload.svelte +259 -0
  63. package/dist/form/ImageUpload.svelte.d.ts +31 -0
  64. package/dist/form/Input.svelte +192 -153
  65. package/dist/form/Input.svelte.d.ts +115 -140
  66. package/dist/form/InputLength.svelte.d.ts +19 -20
  67. package/dist/form/Label.svelte +21 -4
  68. package/dist/form/Label.svelte.d.ts +24 -30
  69. package/dist/form/LogoUpload.svelte +100 -0
  70. package/dist/form/LogoUpload.svelte.d.ts +29 -0
  71. package/dist/form/Select.svelte +84 -36
  72. package/dist/form/Select.svelte.d.ts +69 -96
  73. package/dist/form/Textarea.svelte +163 -0
  74. package/dist/form/Textarea.svelte.d.ts +108 -0
  75. package/dist/form/Toggle.svelte +2 -0
  76. package/dist/form/Toggle.svelte.d.ts +15 -0
  77. package/dist/form/client.svelte.d.ts +8 -9
  78. package/dist/form/client.svelte.js +18 -10
  79. package/dist/form/form.d.ts +6 -4
  80. package/dist/form/form.js +23 -9
  81. package/dist/form/index.d.ts +6 -3
  82. package/dist/form/index.js +6 -3
  83. package/dist/form/types.d.ts +11 -1
  84. package/dist/icons/IconAlert.svelte.d.ts +23 -0
  85. package/dist/icons/{Copy.svelte → IconCopy.svelte} +1 -1
  86. package/dist/icons/IconCopy.svelte.d.ts +23 -0
  87. package/dist/icons/IconDone.svelte.d.ts +23 -0
  88. package/dist/icons/IconError.svelte.d.ts +23 -0
  89. package/dist/icons/IconHelp.svelte.d.ts +23 -0
  90. package/dist/icons/IconHide.svelte.d.ts +23 -0
  91. package/dist/icons/IconInfo.svelte.d.ts +23 -0
  92. package/dist/icons/IconLink.svelte.d.ts +23 -0
  93. package/dist/icons/IconMenuBurger.svelte.d.ts +23 -0
  94. package/dist/icons/IconMenuDots.svelte.d.ts +23 -0
  95. package/dist/icons/IconSearch.svelte +3 -0
  96. package/dist/icons/IconSearch.svelte.d.ts +23 -0
  97. package/dist/icons/IconShow.svelte.d.ts +23 -0
  98. package/dist/icons/IconSuccess.svelte.d.ts +23 -0
  99. package/dist/icons/IconWarning.svelte.d.ts +23 -0
  100. package/dist/icons/index.d.ts +14 -11
  101. package/dist/icons/index.js +14 -11
  102. package/dist/layout/Layout.svelte +7 -5
  103. package/dist/layout/Layout.svelte.d.ts +19 -22
  104. package/dist/layout/LayoutFooter.svelte.d.ts +17 -18
  105. package/dist/layout/LayoutGrid.svelte.d.ts +25 -36
  106. package/dist/layout/LayoutHeader.svelte +3 -0
  107. package/dist/layout/LayoutHeader.svelte.d.ts +33 -38
  108. package/dist/layout/LayoutSideMenu.svelte +18 -17
  109. package/dist/layout/LayoutSideMenu.svelte.d.ts +18 -22
  110. package/dist/layout/Overlay.svelte.d.ts +22 -32
  111. package/dist/layout/OverlayContainer.svelte.d.ts +14 -15
  112. package/dist/layout/OverlayLayer.svelte +6 -11
  113. package/dist/layout/OverlayLayer.svelte.d.ts +17 -20
  114. package/dist/layout/PageContent.svelte +9 -24
  115. package/dist/layout/PageContent.svelte.d.ts +23 -26
  116. package/dist/layout/Theme.svelte +19 -4
  117. package/dist/layout/Theme.svelte.d.ts +17 -22
  118. package/dist/layout/UIContent.svelte.d.ts +16 -20
  119. package/dist/layout/index.d.ts +5 -1
  120. package/dist/layout/index.js +5 -1
  121. package/dist/layout/overlays.svelte.d.ts +2 -2
  122. package/dist/nav/Breadcrumb.svelte +1 -1
  123. package/dist/nav/Breadcrumb.svelte.d.ts +26 -31
  124. package/dist/nav/Menu.svelte +6 -13
  125. package/dist/nav/Menu.svelte.d.ts +25 -31
  126. package/dist/nav/MenuItem.svelte +15 -8
  127. package/dist/nav/MenuItem.svelte.d.ts +20 -24
  128. package/dist/nav/MenuTypes.d.ts +7 -7
  129. package/dist/nav/NavMenu.svelte +7 -9
  130. package/dist/nav/NavMenu.svelte.d.ts +17 -18
  131. package/dist/nav/TabbedContent.svelte +1 -1
  132. package/dist/nav/TabbedContent.svelte.d.ts +21 -22
  133. package/dist/nav/Tabs.svelte +53 -13
  134. package/dist/nav/Tabs.svelte.d.ts +24 -25
  135. package/dist/nav/index.d.ts +2 -1
  136. package/dist/nav/index.js +2 -1
  137. package/dist/style.css +176 -79
  138. package/dist/typo/Clamp.svelte.d.ts +22 -26
  139. package/dist/typo/H.svelte.d.ts +26 -30
  140. package/dist/typo/H1.svelte.d.ts +24 -28
  141. package/dist/typo/H2.svelte.d.ts +24 -28
  142. package/dist/typo/H3.svelte.d.ts +24 -28
  143. package/dist/typo/H4.svelte.d.ts +24 -28
  144. package/dist/typo/H5.svelte.d.ts +24 -28
  145. package/dist/typo/H6.svelte.d.ts +24 -28
  146. package/dist/typo/P.svelte.d.ts +24 -28
  147. package/dist/utils/StringOrComponent.svelte +14 -0
  148. package/dist/utils/StringOrComponent.svelte.d.ts +19 -0
  149. package/dist/utils/StringOrSnippet.svelte +11 -0
  150. package/dist/utils/StringOrSnippet.svelte.d.ts +19 -0
  151. package/dist/utils/color.d.ts +1 -1
  152. package/dist/utils/index.d.ts +2 -1
  153. package/dist/utils/index.js +2 -1
  154. package/dist/utils/isSnippet.d.ts +3 -5
  155. package/dist/utils/isSnippet.js +9 -4
  156. package/package.json +32 -25
  157. package/dist/data/Stat.svelte.d.ts +0 -39
  158. package/dist/data/index.d.ts +0 -1
  159. package/dist/data/index.js +0 -1
  160. package/dist/grid/Column.svelte +0 -11
  161. package/dist/grid/Column.svelte.d.ts +0 -22
  162. package/dist/grid/Grid.svelte +0 -19
  163. package/dist/grid/Grid.svelte.d.ts +0 -24
  164. package/dist/grid/Row.svelte +0 -44
  165. package/dist/grid/Row.svelte.d.ts +0 -24
  166. package/dist/icons/Alert.svelte.d.ts +0 -23
  167. package/dist/icons/Copy.svelte.d.ts +0 -23
  168. package/dist/icons/Done.svelte.d.ts +0 -23
  169. package/dist/icons/Error.svelte.d.ts +0 -23
  170. package/dist/icons/Help.svelte.d.ts +0 -23
  171. package/dist/icons/Hide.svelte.d.ts +0 -23
  172. package/dist/icons/Info.svelte.d.ts +0 -23
  173. package/dist/icons/Link.svelte.d.ts +0 -23
  174. package/dist/icons/MenuBurger.svelte.d.ts +0 -23
  175. package/dist/icons/MenuDots.svelte.d.ts +0 -23
  176. package/dist/icons/Show.svelte.d.ts +0 -23
  177. package/dist/icons/Success.svelte.d.ts +0 -23
  178. package/dist/icons/Warning.svelte.d.ts +0 -23
  179. package/dist/utils/StringOrComponentOrSnippet.svelte +0 -14
  180. package/dist/utils/StringOrComponentOrSnippet.svelte.d.ts +0 -24
  181. /package/dist/icons/{Alert.svelte → IconAlert.svelte} +0 -0
  182. /package/dist/icons/{Done.svelte → IconDone.svelte} +0 -0
  183. /package/dist/icons/{Error.svelte → IconError.svelte} +0 -0
  184. /package/dist/icons/{Help.svelte → IconHelp.svelte} +0 -0
  185. /package/dist/icons/{Hide.svelte → IconHide.svelte} +0 -0
  186. /package/dist/icons/{Info.svelte → IconInfo.svelte} +0 -0
  187. /package/dist/icons/{Link.svelte → IconLink.svelte} +0 -0
  188. /package/dist/icons/{MenuBurger.svelte → IconMenuBurger.svelte} +0 -0
  189. /package/dist/icons/{MenuDots.svelte → IconMenuDots.svelte} +0 -0
  190. /package/dist/icons/{Show.svelte → IconShow.svelte} +0 -0
  191. /package/dist/icons/{Success.svelte → IconSuccess.svelte} +0 -0
  192. /package/dist/icons/{Warning.svelte → IconWarning.svelte} +0 -0
@@ -3,11 +3,12 @@ let {
3
3
  children,
4
4
  pad = false,
5
5
  middle = false,
6
- center = false
6
+ center = false,
7
+ style
7
8
  } = $props();
8
- let style = $derived.by(() => {
9
+ let padStyle = $derived.by(() => {
9
10
  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
+ return `--padBlockStart: ${pad ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padBlockEnd: ${pad ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padInlineStart: ${pad ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"}; --padInlineEnd: ${pad ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"};`;
11
12
  } else if (typeof pad === "string") {
12
13
  return `--padBlockStart: ${pad}; --padBlockEnd: ${pad}; --padInlineStart: ${pad}; --padInlineEnd: ${pad};`;
13
14
  } else if (Array.isArray(pad) && pad.length > 1 && typeof pad[0] === "string") {
@@ -22,11 +23,11 @@ let style = $derived.by(() => {
22
23
  } else if (Array.isArray(pad) && pad.length > 1) {
23
24
  switch (pad.length) {
24
25
  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
+ return `--padBlockStart: ${pad[0] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padBlockEnd: ${pad[0] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padInlineStart: ${pad[1] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"}; --padInlineEnd: ${pad[1] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"};`;
26
27
  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
+ return `--padBlockStart: ${pad[0] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padBlockEnd: ${pad[1] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padInlineStart: ${pad[2] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"}; --padInlineEnd: ${pad[2] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"};`;
28
29
  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
+ return `--padBlockStart: ${pad[0] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padBlockEnd: ${pad[1] ? "var(--page-padding, var(--padding-block, var(--pad-xl)))" : "0"}; --padInlineStart: ${pad[2] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"}; --padInlineEnd: ${pad[3] ? "var(--page-padding, var(--padding-inline, var(--pad-xl)))" : "0"};`;
30
31
  }
31
32
  }
32
33
  return "";
@@ -37,7 +38,7 @@ let style = $derived.by(() => {
37
38
  class="Page"
38
39
  class:middle
39
40
  class:center
40
- style={style}
41
+ style="{padStyle} {style}"
41
42
  >
42
43
  <div class="PaddingContainer">
43
44
  <div class="PageContent">
@@ -56,6 +57,7 @@ let style = $derived.by(() => {
56
57
  position: relative;
57
58
  }
58
59
  .PageContent {
60
+ container-type: inline-size;
59
61
  max-inline-size: var(--max-inline-size, 1560px);
60
62
  flex-grow: 1;
61
63
  --isPage: 1;
@@ -77,21 +79,4 @@ let style = $derived.by(() => {
77
79
  .Page.center .PaddingContainer {
78
80
  justify-content: center;
79
81
  }
80
-
81
- @media (max-width: 1280px) {
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
- @media (max-width: 640px) {
90
- .Page .PaddingContainer {
91
- padding-block-start: calc(var(--padBlockStart) / 4);
92
- padding-block-end: calc(var(--padBlockEnd) / 4);
93
- padding-inline-start: calc(var(--padInlineStart) / 4);
94
- padding-inline-end: calc(var(--padInlineEnd) / 4);
95
- }
96
- }
97
82
  </style>
@@ -1,28 +1,25 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import { type Snippet } from "svelte";
3
- declare const __propDef: {
4
- props: {
5
- children: Snippet;
6
- pad?: string | boolean | [boolean, boolean] | [boolean, boolean, boolean] | [boolean, boolean, boolean, boolean] | [string, string] | [string, string, string] | [string, string, string, string] | undefined;
7
- middle?: boolean | undefined;
8
- center?: boolean | undefined;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type PageContentProps = typeof __propDef.props;
16
- export type PageContentEvents = typeof __propDef.events;
17
- export type PageContentSlots = typeof __propDef.slots;
18
- export default class PageContent extends SvelteComponent<PageContentProps, PageContentEvents, PageContentSlots> {
19
- constructor(options?: import("svelte").ComponentConstructorOptions<{
20
- children: (this: void) => typeof import("svelte").SnippetReturn & {
21
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
22
- };
23
- pad?: string | boolean | [boolean, boolean] | [boolean, boolean, boolean] | [boolean, boolean, boolean, boolean] | [string, string] | [string, string, string] | [string, string, string, string] | undefined;
24
- middle?: boolean | undefined;
25
- center?: boolean | undefined;
26
- }>);
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports;
10
+ z_$$bindings?: Bindings;
27
11
  }
28
- export {};
12
+ declare const PageContent: $$__sveltets_2_IsomorphicComponent<{
13
+ children: Snippet;
14
+ /** Add padding to the container. Pass in either a boolean or an array of booleans to specify padding on the block and inline axes. */
15
+ pad?: boolean | [boolean, boolean] | [boolean, boolean, boolean] | [boolean, boolean, boolean, boolean] | string | [string, string] | [string, string, string] | [string, string, string, string];
16
+ /** Center the content in the block direction. */
17
+ middle?: boolean;
18
+ /** Center the content in the inline direction. */
19
+ center?: boolean;
20
+ style?: string;
21
+ }, {
22
+ [evt: string]: CustomEvent<any>;
23
+ }, {}, {}, "">;
24
+ type PageContent = InstanceType<typeof PageContent>;
25
+ export default PageContent;
@@ -11,14 +11,16 @@ if (theme === "invert") {
11
11
  } else {
12
12
  theme = theme || (browser ? localStorage.getItem("theme") || window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : "light");
13
13
  }
14
- const existingTheme = getContext("theme");
14
+ const isNotRoot = getContext("theme");
15
15
  setContext("theme", theme);
16
16
  </script>
17
17
 
18
- <svelte:body style="background-color: var(--bg-app);" />
18
+ <!--
19
+ <svelte:body class="{!isNotRoot ? 'theme-'+theme : ''}" />
20
+ -->
19
21
 
20
22
  <svelte:head>
21
- {#if !existingTheme}
23
+ {#if !isNotRoot}
22
24
  <meta name="theme-color" content="{theme === 'dark' ? '#000' : '#fff'}" />
23
25
  {/if}
24
26
  </svelte:head>
@@ -38,9 +40,14 @@ setContext("theme", theme);
38
40
  --scrollbar-color: var(--d-scrollbar-color);
39
41
  }
40
42
  .Theme.light {
43
+ color-scheme: light;
41
44
  --mix-target: var(--l-mix-target);
42
45
  /* bg */
43
46
  --bg-app: var(--l-bg-app);
47
+ --bg-panel: var(--l-bg-panel);
48
+ --bg-scrim: var(--l-bg-scrim);
49
+ --bg-subtler: var(--l-bg-subtler);
50
+ --bg-hover: var(--l-bg-hover);
44
51
  --bg-subtle: var(--l-bg-subtle);
45
52
  --bg-overlay: var(--l-bg-overlay);
46
53
  --shadow: var(--l-shadow);
@@ -55,6 +62,7 @@ setContext("theme", theme);
55
62
  /* text */
56
63
  --text: var(--l-text);
57
64
  --text-subtle: var(--l-text-subtle);
65
+ --text-subtler: var(--l-text-subtler);
58
66
  --text-highlight: var(--l-text-highlight);
59
67
  --text-heading: var(--l-text-heading);
60
68
  --text-link: var(--l-text-link);
@@ -63,6 +71,7 @@ setContext("theme", theme);
63
71
  --text-subtle-icon: var(--l-text-subtle-icon);
64
72
  --text-warn-icon: var(--l-text-warn-icon);
65
73
  /* fields */
74
+ --form-bg: var(--l-form-bg);
66
75
  --field-bg: var(--l-field-bg);
67
76
  --field-border-color: var(--l-field-border-color);
68
77
  --field-border-color-error: var(--l-field-border-color-error);
@@ -118,7 +127,6 @@ setContext("theme", theme);
118
127
  --menu-bg-active: var(--l-menu-bg-active);
119
128
  --menu-bg-hover: var(--l-menu-bg-hover);
120
129
  --menu-border: var(--l-menu-border);
121
- --menu-text: var(--l-menu-text);
122
130
  --menu-text-subtle: var(--l-menu-text-subtle);
123
131
  --menu-text-active: var(--l-menu-text-active);
124
132
  /* status */
@@ -131,10 +139,15 @@ setContext("theme", theme);
131
139
  --scrollbar-color: var(--l-scrollbar-color);
132
140
  }
133
141
  .Theme.dark {
142
+ color-scheme: dark;
134
143
  --mix-target: var(--d-mix-target);
135
144
  /* bg */
136
145
  --bg-app: var(--d-bg-app);
146
+ --bg-panel: var(--d-bg-panel);
147
+ --bg-scrim: var(--d-bg-scrim);
148
+ --bg-subtler: var(--d-bg-subtler);
137
149
  --bg-subtle: var(--d-bg-subtle);
150
+ --bg-hover: var(--d-bg-hover);
138
151
  --bg-overlay: var(--d-bg-overlay);
139
152
  --shadow: var(--d-shadow);
140
153
  /* border */
@@ -148,6 +161,7 @@ setContext("theme", theme);
148
161
  /* text */
149
162
  --text: var(--d-text);
150
163
  --text-subtle: var(--d-text-subtle);
164
+ --text-subtler: var(--d-text-subtler);
151
165
  --text-highlight: var(--d-text-highlight);
152
166
  --text-heading: var(--d-text-heading);
153
167
  --text-link: var(--d-text-link);
@@ -157,6 +171,7 @@ setContext("theme", theme);
157
171
  --text-subtle-icon: var(--d-text-subtle-icon);
158
172
  --text-warn-icon: var(--d-text-warn-icon);
159
173
  /* fields */
174
+ --form-bg: var(--d-form-bg);
160
175
  --field-bg: var(--d-field-bg);
161
176
  --field-border-color: var(--d-field-border-color);
162
177
  --field-border-color-error: var(--d-field-border-color-error);
@@ -1,24 +1,19 @@
1
- import { SvelteComponent } from "svelte";
2
1
  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
- constructor(options?: import("svelte").ComponentConstructorOptions<{
18
- theme?: "light" | "dark" | "invert" | undefined;
19
- children: (this: void) => typeof import("svelte").SnippetReturn & {
20
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
21
- };
22
- }>);
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports;
10
+ z_$$bindings?: Bindings;
23
11
  }
24
- export {};
12
+ declare const Theme: $$__sveltets_2_IsomorphicComponent<{
13
+ theme?: "light" | "dark" | "invert";
14
+ children: Snippet;
15
+ }, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, "">;
18
+ type Theme = InstanceType<typeof Theme>;
19
+ export default Theme;
@@ -1,22 +1,18 @@
1
- import { SvelteComponent } from "svelte";
2
1
  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
- constructor(options?: import("svelte").ComponentConstructorOptions<{
17
- children: (this: void) => typeof import("svelte").SnippetReturn & {
18
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
19
- };
20
- }>);
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports;
10
+ z_$$bindings?: Bindings;
21
11
  }
22
- export {};
12
+ declare const UiContent: $$__sveltets_2_IsomorphicComponent<{
13
+ children: Snippet;
14
+ }, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, "">;
17
+ type UiContent = InstanceType<typeof UiContent>;
18
+ export default UiContent;
@@ -1,7 +1,11 @@
1
1
  export { default as Layout } from './Layout.svelte';
2
- export { default as LayoutGrid } from './LayoutGrid.svelte';
3
2
  export { default as LayoutFooter } from './LayoutFooter.svelte';
3
+ export { default as LayoutGrid } from './LayoutGrid.svelte';
4
4
  export { default as LayoutHeader } from './LayoutHeader.svelte';
5
+ export { default as LayoutSideMenu } from './LayoutSideMenu.svelte';
6
+ export { default as Overlay } from './Overlay.svelte';
7
+ export { default as OverlayContainer } from './OverlayContainer.svelte';
8
+ export { default as OverlayLayer } from './OverlayLayer.svelte';
5
9
  export { default as PageContent } from './PageContent.svelte';
6
10
  export { default as UIContent } from './UIContent.svelte';
7
11
  export { default as Theme } from './Theme.svelte';
@@ -1,7 +1,11 @@
1
1
  export { default as Layout } from './Layout.svelte';
2
- export { default as LayoutGrid } from './LayoutGrid.svelte';
3
2
  export { default as LayoutFooter } from './LayoutFooter.svelte';
3
+ export { default as LayoutGrid } from './LayoutGrid.svelte';
4
4
  export { default as LayoutHeader } from './LayoutHeader.svelte';
5
+ export { default as LayoutSideMenu } from './LayoutSideMenu.svelte';
6
+ export { default as Overlay } from './Overlay.svelte';
7
+ export { default as OverlayContainer } from './OverlayContainer.svelte';
8
+ export { default as OverlayLayer } from './OverlayLayer.svelte';
5
9
  export { default as PageContent } from './PageContent.svelte';
6
10
  export { default as UIContent } from './UIContent.svelte';
7
11
  export { default as Theme } from './Theme.svelte';
@@ -1,4 +1,4 @@
1
- import type { ComponentType, Snippet } from "svelte";
1
+ import type { Component, Snippet } from "svelte";
2
2
  export type OverlayPosition = "top left" | "top center" | "top right" | "bottom left" | "bottom center" | "bottom right" | "center" | "anchor";
3
3
  export type TransitionOpts = {
4
4
  y?: number;
@@ -10,7 +10,7 @@ export type TransitionOpts = {
10
10
  export type OverlayItem = {
11
11
  id: string;
12
12
  z?: number;
13
- content: string | Snippet | ComponentType;
13
+ content: string | Snippet | Component;
14
14
  props?: Record<string, any>;
15
15
  layer?: string;
16
16
  anchor?: HTMLElement;
@@ -1,4 +1,4 @@
1
- <script lang="ts">const {
1
+ <script lang="ts">let {
2
2
  items,
3
3
  separator = "/",
4
4
  contained,
@@ -1,33 +1,28 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { ComponentType } from "svelte";
1
+ import type { Component, Snippet } from "svelte";
3
2
  import type { BreadcrumbItem } from "./MenuTypes.js";
4
- declare const __propDef: {
5
- props: {
6
- items: BreadcrumbItem[];
7
- separator?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
8
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
9
- }) | ComponentType | undefined;
10
- contained?: boolean | undefined;
11
- fullWidth?: boolean | undefined;
12
- center?: boolean | undefined;
13
- };
14
- events: {
15
- [evt: string]: CustomEvent<any>;
16
- };
17
- slots: {};
18
- };
19
- export type BreadcrumbProps = typeof __propDef.props;
20
- export type BreadcrumbEvents = typeof __propDef.events;
21
- export type BreadcrumbSlots = typeof __propDef.slots;
22
- export default class Breadcrumb extends SvelteComponent<BreadcrumbProps, BreadcrumbEvents, BreadcrumbSlots> {
23
- constructor(options?: import("svelte").ComponentConstructorOptions<{
24
- items: BreadcrumbItem[];
25
- separator?: string | ((this: void) => typeof import("svelte").SnippetReturn & {
26
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
27
- }) | ComponentType | undefined;
28
- contained?: boolean | undefined;
29
- fullWidth?: boolean | undefined;
30
- center?: boolean | undefined;
31
- }>);
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
32
12
  }
33
- export {};
13
+ declare const Breadcrumb: $$__sveltets_2_IsomorphicComponent<{
14
+ /** The items to display in the breadcrumb. */
15
+ items: BreadcrumbItem[];
16
+ /** The separator to use between breadcrumb items. */
17
+ separator?: string | Snippet | Component;
18
+ /** Contain the element in a box. */
19
+ contained?: boolean;
20
+ /** Make the element full width. */
21
+ fullWidth?: boolean;
22
+ /** Center the items in the element. */
23
+ center?: boolean;
24
+ }, {
25
+ [evt: string]: CustomEvent<any>;
26
+ }, {}, {}, "">;
27
+ type Breadcrumb = InstanceType<typeof Breadcrumb>;
28
+ export default Breadcrumb;
@@ -1,11 +1,7 @@
1
- <script lang="ts">import { BROWSER } from "esm-env";
2
- import MenuItem from "./MenuItem.svelte";
3
- import { isComponent } from "../utils/isSnippet.js";
1
+ <script lang="ts">import MenuItem from "./MenuItem.svelte";
4
2
  import { createId } from "../utils/id.js";
5
- import { slidefade } from "../utils/transitions.js";
6
3
  import UiContent from "../layout/UIContent.svelte";
7
4
  import { arrowNavigation, getNextFocusableElement, matchOnType } from "../utils/keyboard.svelte.js";
8
- import StringOrComponentOrSnippet from "../utils/StringOrComponentOrSnippet.svelte";
9
5
  import { findContainingBlock, getPossiblyContainedPosition } from "../utils/dom.js";
10
6
  import Overlay from "../layout/Overlay.svelte";
11
7
  let {
@@ -33,8 +29,7 @@ function toggle() {
33
29
  _open = !_open;
34
30
  }
35
31
  let scrollable = $derived.by(() => {
36
- if (!contentEl)
37
- return false;
32
+ if (!contentEl) return false;
38
33
  return contentEl.scrollHeight > contentEl.clientHeight;
39
34
  });
40
35
  function onclick(e) {
@@ -42,15 +37,13 @@ function onclick(e) {
42
37
  _open = !_open;
43
38
  }
44
39
  function clickoutside(e) {
45
- if (!_open)
46
- return;
40
+ if (!_open) return;
47
41
  if (contentEl && !contentEl.contains(e.target) && !triggerEl?.contains(e.target)) {
48
42
  _open = false;
49
43
  }
50
44
  }
51
45
  function onkeydown(e) {
52
- if (!_open)
53
- return;
46
+ if (!_open) return;
54
47
  const active = document.activeElement;
55
48
  switch (e.key) {
56
49
  case "Escape":
@@ -107,9 +100,9 @@ function mouseover(e, item, index) {
107
100
  class="Trigger"
108
101
  bind:this={triggerEl}
109
102
  >
110
- {#if typeof trigger === "string" || isComponent(trigger)}
103
+ {#if typeof trigger === "string"}
111
104
  <button type="button" class="button" {onclick} aria-haspopup="true" aria-controls={id} aria-expanded="{_open}">
112
- <StringOrComponentOrSnippet content={trigger} />
105
+ {trigger}
113
106
  </button>
114
107
  {:else}
115
108
  {@render trigger({ toggle: toggle, isOpen: _open })}
@@ -1,33 +1,27 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { ComponentType, Snippet } from "svelte";
1
+ import type { Snippet } from "svelte";
3
2
  import type { MenuItem as Item } from "./MenuTypes.js";
4
- declare const __propDef: {
5
- props: {
6
- open?: import("svelte").Bindable<boolean | undefined>;
7
- items: Item[];
8
- trigger: string | ComponentType | Snippet<[{
9
- toggle: () => void;
10
- isOpen: boolean;
11
- }]>;
12
- };
13
- events: {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {};
17
- };
18
- export type MenuProps = typeof __propDef.props;
19
- export type MenuEvents = typeof __propDef.events;
20
- export type MenuSlots = typeof __propDef.slots;
21
- export default class Menu extends SvelteComponent<MenuProps, MenuEvents, MenuSlots> {
22
- constructor(options?: import("svelte").ComponentConstructorOptions<{
23
- open?: import("svelte").Bindable<boolean | undefined>;
24
- items: Item[];
25
- trigger: string | ComponentType | ((this: void, args_0: {
26
- toggle: () => void;
27
- isOpen: boolean;
28
- }) => typeof import("svelte").SnippetReturn & {
29
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
30
- });
31
- }>);
3
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
+ $$bindings?: Bindings;
6
+ } & Exports;
7
+ (internal: unknown, props: Props & {
8
+ $$events?: Events;
9
+ $$slots?: Slots;
10
+ }): Exports;
11
+ z_$$bindings?: Bindings;
32
12
  }
33
- export {};
13
+ declare const Menu: $$__sveltets_2_IsomorphicComponent<{
14
+ /** Whether the menu is open */
15
+ open?: boolean;
16
+ /** The items to display in the menu */
17
+ items: Item[];
18
+ /** The trigger for the menu */
19
+ trigger: string | Snippet<[{
20
+ toggle: () => void;
21
+ isOpen: boolean;
22
+ }]>;
23
+ }, {
24
+ [evt: string]: CustomEvent<any>;
25
+ }, {}, {}, "open">;
26
+ type Menu = InstanceType<typeof Menu>;
27
+ export default Menu;
@@ -1,11 +1,12 @@
1
- <script lang="ts">import StringOrComponentOrSnippet from "../utils/StringOrComponentOrSnippet.svelte";
1
+ <script lang="ts">import StringOrSnippet from "../utils/StringOrSnippet.svelte";
2
2
  import { isStatusColor } from "../utils/color.js";
3
3
  import { isComponent, isSnippet } from "../utils/isSnippet.js";
4
4
  let {
5
5
  item,
6
6
  index,
7
7
  onmouseover,
8
- keyboardHasFocus
8
+ keyboardHasFocus,
9
+ shape = "rounded"
9
10
  } = $props();
10
11
  let isSet = $derived(item.type !== "divider" ? isStatusColor(item.color) : false);
11
12
  let el = $state(null);
@@ -23,6 +24,7 @@ function mouseover(e) {
23
24
  class:keyboardHasFocus
24
25
  class:divider={item.type === 'divider'}
25
26
  class:header={item.type === 'header'}
27
+ class={shape}
26
28
  data-type="{item.type}"
27
29
  style="--color: {isSet && item.type !== 'divider' ? 'var(--status-'+item.color+')' : (item.type !== 'divider' && item.color ? item.color : 'var(--menu-text)')}"
28
30
  >
@@ -30,13 +32,13 @@ function mouseover(e) {
30
32
  <hr />
31
33
  {:else if item.type === 'header'}
32
34
  <div class="Header">
33
- <StringOrComponentOrSnippet content={item.content} />
35
+ <StringOrSnippet content={item.content} />
34
36
  </div>
35
37
  {:else if item.type === 'item'}
36
38
  {#if item.href}
37
39
  <a href="{item.href}" class="Item" bind:this={el}>
38
40
  <span class="Content">
39
- <StringOrComponentOrSnippet content={item.content} />
41
+ <StringOrSnippet content={item.content} />
40
42
  </span>
41
43
  {#if item.shortcut}
42
44
  <span class="Shortcut">{item.shortcut}</span>
@@ -45,7 +47,7 @@ function mouseover(e) {
45
47
  {:else if item.onclick}
46
48
  <button type="button" onclick={(e) => item.type === 'item' ? item.onclick!(e, item) : undefined} class="Item" bind:this={el}>
47
49
  <span class="Content">
48
- <StringOrComponentOrSnippet content={item.content} />
50
+ <StringOrSnippet content={item.content} />
49
51
  </span>
50
52
  {#if item.shortcut}
51
53
  <span class="Shortcut">{item.shortcut}</span>
@@ -57,7 +59,7 @@ function mouseover(e) {
57
59
  </div>
58
60
  {:else if isComponent(item.content)}
59
61
  <div class="Item Custom">
60
- <svelte:component this={item.content} />
62
+ <item.content />
61
63
  </div>
62
64
  {/if}
63
65
  {/if}
@@ -73,7 +75,7 @@ function mouseover(e) {
73
75
 
74
76
  li .Item,
75
77
  li .Header {
76
- font-size: 1em;
78
+ font-size: var(--font-size, 0.9em);
77
79
  text-align: left;
78
80
  padding-block: 0.5rem;
79
81
  padding-inline: 1rem;
@@ -88,13 +90,18 @@ function mouseover(e) {
88
90
  --inset-inline: 1rem;
89
91
  }
90
92
 
93
+ li.rounded .Item,
94
+ li.rounded .Header {
95
+ border-radius: var(--border-radius);
96
+ }
97
+
91
98
  li .Header {
92
99
  font-weight: 600;
93
100
  }
94
101
 
95
102
  li:not(.keyboardHasFocus) .Item:not(.Custom):hover,
96
103
  li .Item:not(.Custom):focus-visible {
97
- background-color: var(--menu-bg-hover);
104
+ background-color: var(--bg-hover);
98
105
  cursor: pointer;
99
106
  outline: none;
100
107
  }
@@ -1,26 +1,22 @@
1
- import { SvelteComponent } from "svelte";
2
1
  import type { MenuItem as Item } from "./MenuTypes.js";
3
- declare const __propDef: {
4
- props: {
5
- item: Item;
6
- index: number;
7
- onmouseover?: ((e: MouseEvent, item: Item, index: number) => void) | undefined;
8
- keyboardHasFocus?: boolean | undefined;
9
- };
10
- events: {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots: {};
14
- };
15
- export type MenuItemProps = typeof __propDef.props;
16
- export type MenuItemEvents = typeof __propDef.events;
17
- export type MenuItemSlots = typeof __propDef.slots;
18
- export default class MenuItem extends SvelteComponent<MenuItemProps, MenuItemEvents, MenuItemSlots> {
19
- constructor(options?: import("svelte").ComponentConstructorOptions<{
20
- item: Item;
21
- index: number;
22
- onmouseover?: ((e: MouseEvent, item: Item, index: number) => void) | undefined;
23
- keyboardHasFocus?: boolean | undefined;
24
- }>);
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: Props & {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports;
10
+ z_$$bindings?: Bindings;
25
11
  }
26
- export {};
12
+ declare const MenuItem: $$__sveltets_2_IsomorphicComponent<{
13
+ item: Item;
14
+ index: number;
15
+ onmouseover?: (e: MouseEvent, item: Item, index: number) => void;
16
+ keyboardHasFocus?: boolean;
17
+ shape?: "rounded" | "square" | "pill";
18
+ }, {
19
+ [evt: string]: CustomEvent<any>;
20
+ }, {}, {}, "">;
21
+ type MenuItem = InstanceType<typeof MenuItem>;
22
+ export default MenuItem;