lutra 0.0.33 → 0.1.0

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 (242) hide show
  1. package/README.md +4 -24
  2. package/dist/components/AspectRatio.svelte +26 -0
  3. package/dist/components/AspectRatio.svelte.d.ts +8 -0
  4. package/dist/components/Dialog.svelte +78 -0
  5. package/dist/components/Dialog.svelte.d.ts +14 -0
  6. package/dist/components/Layout.svelte +32 -0
  7. package/dist/components/Layout.svelte.d.ts +11 -0
  8. package/dist/components/PageContent.svelte +108 -0
  9. package/dist/components/PageContent.svelte.d.ts +38 -0
  10. package/dist/components/Theme.svelte +87 -0
  11. package/dist/components/Theme.svelte.d.ts +17 -0
  12. package/dist/{display → components}/Tooltip.svelte +33 -8
  13. package/dist/components/Tooltip.svelte.d.ts +12 -0
  14. package/dist/config.d.ts +30 -0
  15. package/dist/config.js +18 -0
  16. package/dist/css/0-layers.css +1 -0
  17. package/dist/css/1-props.css +775 -0
  18. package/dist/css/2-base.css +209 -0
  19. package/dist/css/3-typo.css +65 -0
  20. package/dist/css/4-layout.css +5 -0
  21. package/dist/css/5-media.css +21 -0
  22. package/dist/css/lutra.css +6 -0
  23. package/dist/index.d.ts +5 -1
  24. package/dist/index.js +5 -2
  25. package/dist/types.d.ts +39 -0
  26. package/dist/types.js +25 -0
  27. package/package.json +29 -82
  28. package/dist/color.css +0 -0
  29. package/dist/display/Avatar.svelte +0 -61
  30. package/dist/display/Avatar.svelte.d.ts +0 -19
  31. package/dist/display/Badge.svelte +0 -91
  32. package/dist/display/Badge.svelte.d.ts +0 -30
  33. package/dist/display/Callout.svelte +0 -109
  34. package/dist/display/Callout.svelte.d.ts +0 -28
  35. package/dist/display/Close.svelte +0 -58
  36. package/dist/display/Close.svelte.d.ts +0 -18
  37. package/dist/display/Code.svelte +0 -190
  38. package/dist/display/Code.svelte.d.ts +0 -32
  39. package/dist/display/ContextTip.svelte +0 -23
  40. package/dist/display/ContextTip.svelte.d.ts +0 -18
  41. package/dist/display/DataList.svelte +0 -16
  42. package/dist/display/DataList.svelte.d.ts +0 -21
  43. package/dist/display/Details.svelte +0 -49
  44. package/dist/display/Details.svelte.d.ts +0 -27
  45. package/dist/display/Hero.svelte +0 -50
  46. package/dist/display/Hero.svelte.d.ts +0 -26
  47. package/dist/display/Icon.svelte +0 -39
  48. package/dist/display/Icon.svelte.d.ts +0 -19
  49. package/dist/display/IconButton.svelte +0 -91
  50. package/dist/display/IconButton.svelte.d.ts +0 -27
  51. package/dist/display/Image.svelte +0 -91
  52. package/dist/display/Image.svelte.d.ts +0 -26
  53. package/dist/display/Indicator.svelte +0 -352
  54. package/dist/display/Indicator.svelte.d.ts +0 -23
  55. package/dist/display/Inset.svelte +0 -18
  56. package/dist/display/Inset.svelte.d.ts +0 -18
  57. package/dist/display/LineChart.svelte +0 -385
  58. package/dist/display/LineChart.svelte.d.ts +0 -24
  59. package/dist/display/LoadingIndicator.svelte +0 -33
  60. package/dist/display/LoadingIndicator.svelte.d.ts +0 -15
  61. package/dist/display/Modal.svelte +0 -116
  62. package/dist/display/Modal.svelte.d.ts +0 -27
  63. package/dist/display/Notification.svelte +0 -104
  64. package/dist/display/Notification.svelte.d.ts +0 -23
  65. package/dist/display/Panel.svelte +0 -23
  66. package/dist/display/Panel.svelte.d.ts +0 -19
  67. package/dist/display/Popup.svelte +0 -111
  68. package/dist/display/Popup.svelte.d.ts +0 -25
  69. package/dist/display/Stat.svelte +0 -81
  70. package/dist/display/Stat.svelte.d.ts +0 -30
  71. package/dist/display/Table.svelte +0 -28
  72. package/dist/display/Table.svelte.d.ts +0 -24
  73. package/dist/display/TablePaginator.svelte +0 -51
  74. package/dist/display/TablePaginator.svelte.d.ts +0 -21
  75. package/dist/display/Tag.svelte +0 -90
  76. package/dist/display/Tag.svelte.d.ts +0 -32
  77. package/dist/display/Tooltip.svelte.d.ts +0 -23
  78. package/dist/display/chart.d.ts +0 -78
  79. package/dist/display/chart.js +0 -212
  80. package/dist/display/index.d.ts +0 -24
  81. package/dist/display/index.js +0 -24
  82. package/dist/display/notifications.svelte.d.ts +0 -21
  83. package/dist/display/notifications.svelte.js +0 -31
  84. package/dist/form/Button.svelte +0 -39
  85. package/dist/form/Button.svelte.d.ts +0 -26
  86. package/dist/form/FieldActions.svelte +0 -68
  87. package/dist/form/FieldActions.svelte.d.ts +0 -20
  88. package/dist/form/FieldContainer.svelte +0 -37
  89. package/dist/form/FieldContainer.svelte.d.ts +0 -19
  90. package/dist/form/FieldContent.svelte +0 -153
  91. package/dist/form/FieldContent.svelte.d.ts +0 -31
  92. package/dist/form/FieldError.svelte +0 -14
  93. package/dist/form/FieldError.svelte.d.ts +0 -18
  94. package/dist/form/FieldSection.svelte +0 -86
  95. package/dist/form/FieldSection.svelte.d.ts +0 -20
  96. package/dist/form/Fieldset.svelte +0 -68
  97. package/dist/form/Fieldset.svelte.d.ts +0 -31
  98. package/dist/form/Form.svelte +0 -136
  99. package/dist/form/Form.svelte.d.ts +0 -38
  100. package/dist/form/ImageUpload.svelte +0 -259
  101. package/dist/form/ImageUpload.svelte.d.ts +0 -31
  102. package/dist/form/Input.svelte +0 -326
  103. package/dist/form/Input.svelte.d.ts +0 -117
  104. package/dist/form/InputLength.svelte +0 -32
  105. package/dist/form/InputLength.svelte.d.ts +0 -20
  106. package/dist/form/Label.svelte +0 -44
  107. package/dist/form/Label.svelte.d.ts +0 -25
  108. package/dist/form/LogoUpload.svelte +0 -100
  109. package/dist/form/LogoUpload.svelte.d.ts +0 -29
  110. package/dist/form/Select.svelte +0 -136
  111. package/dist/form/Select.svelte.d.ts +0 -70
  112. package/dist/form/Textarea.svelte +0 -163
  113. package/dist/form/Textarea.svelte.d.ts +0 -108
  114. package/dist/form/Toggle.svelte +0 -2
  115. package/dist/form/Toggle.svelte.d.ts +0 -15
  116. package/dist/form/client.svelte.d.ts +0 -44
  117. package/dist/form/client.svelte.js +0 -98
  118. package/dist/form/form.d.ts +0 -54
  119. package/dist/form/form.js +0 -340
  120. package/dist/form/index.d.ts +0 -18
  121. package/dist/form/index.js +0 -18
  122. package/dist/form/types.d.ts +0 -62
  123. package/dist/form/types.js +0 -1
  124. package/dist/icons/IconAlert.svelte +0 -3
  125. package/dist/icons/IconAlert.svelte.d.ts +0 -23
  126. package/dist/icons/IconCopy.svelte +0 -3
  127. package/dist/icons/IconCopy.svelte.d.ts +0 -23
  128. package/dist/icons/IconDone.svelte +0 -3
  129. package/dist/icons/IconDone.svelte.d.ts +0 -23
  130. package/dist/icons/IconError.svelte +0 -3
  131. package/dist/icons/IconError.svelte.d.ts +0 -23
  132. package/dist/icons/IconHelp.svelte +0 -3
  133. package/dist/icons/IconHelp.svelte.d.ts +0 -23
  134. package/dist/icons/IconHide.svelte +0 -3
  135. package/dist/icons/IconHide.svelte.d.ts +0 -23
  136. package/dist/icons/IconInfo.svelte +0 -3
  137. package/dist/icons/IconInfo.svelte.d.ts +0 -23
  138. package/dist/icons/IconLink.svelte +0 -3
  139. package/dist/icons/IconLink.svelte.d.ts +0 -23
  140. package/dist/icons/IconMenuBurger.svelte +0 -3
  141. package/dist/icons/IconMenuBurger.svelte.d.ts +0 -23
  142. package/dist/icons/IconMenuDots.svelte +0 -3
  143. package/dist/icons/IconMenuDots.svelte.d.ts +0 -23
  144. package/dist/icons/IconSearch.svelte +0 -3
  145. package/dist/icons/IconSearch.svelte.d.ts +0 -23
  146. package/dist/icons/IconShow.svelte +0 -3
  147. package/dist/icons/IconShow.svelte.d.ts +0 -23
  148. package/dist/icons/IconSuccess.svelte +0 -3
  149. package/dist/icons/IconSuccess.svelte.d.ts +0 -23
  150. package/dist/icons/IconWarning.svelte +0 -3
  151. package/dist/icons/IconWarning.svelte.d.ts +0 -23
  152. package/dist/icons/index.d.ts +0 -14
  153. package/dist/icons/index.js +0 -14
  154. package/dist/layout/Layout.svelte +0 -47
  155. package/dist/layout/Layout.svelte.d.ts +0 -22
  156. package/dist/layout/LayoutFooter.svelte +0 -21
  157. package/dist/layout/LayoutFooter.svelte.d.ts +0 -18
  158. package/dist/layout/LayoutGrid.svelte +0 -51
  159. package/dist/layout/LayoutGrid.svelte.d.ts +0 -27
  160. package/dist/layout/LayoutHeader.svelte +0 -97
  161. package/dist/layout/LayoutHeader.svelte.d.ts +0 -34
  162. package/dist/layout/LayoutSideMenu.svelte +0 -55
  163. package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -21
  164. package/dist/layout/LayoutTypes.d.ts +0 -15
  165. package/dist/layout/LayoutTypes.js +0 -9
  166. package/dist/layout/Overlay.svelte +0 -20
  167. package/dist/layout/Overlay.svelte.d.ts +0 -25
  168. package/dist/layout/OverlayContainer.svelte +0 -28
  169. package/dist/layout/OverlayContainer.svelte.d.ts +0 -15
  170. package/dist/layout/OverlayLayer.svelte +0 -140
  171. package/dist/layout/OverlayLayer.svelte.d.ts +0 -19
  172. package/dist/layout/PageContent.svelte +0 -82
  173. package/dist/layout/PageContent.svelte.d.ts +0 -25
  174. package/dist/layout/Theme.svelte +0 -243
  175. package/dist/layout/Theme.svelte.d.ts +0 -19
  176. package/dist/layout/UIContent.svelte +0 -15
  177. package/dist/layout/UIContent.svelte.d.ts +0 -18
  178. package/dist/layout/index.d.ts +0 -11
  179. package/dist/layout/index.js +0 -11
  180. package/dist/layout/overlays.svelte.d.ts +0 -34
  181. package/dist/layout/overlays.svelte.js +0 -44
  182. package/dist/nav/Breadcrumb.svelte +0 -82
  183. package/dist/nav/Breadcrumb.svelte.d.ts +0 -28
  184. package/dist/nav/Menu.svelte +0 -170
  185. package/dist/nav/Menu.svelte.d.ts +0 -27
  186. package/dist/nav/MenuItem.svelte +0 -147
  187. package/dist/nav/MenuItem.svelte.d.ts +0 -22
  188. package/dist/nav/MenuTypes.d.ts +0 -58
  189. package/dist/nav/MenuTypes.js +0 -1
  190. package/dist/nav/NavMenu.svelte +0 -181
  191. package/dist/nav/NavMenu.svelte.d.ts +0 -19
  192. package/dist/nav/TabbedContent.svelte +0 -43
  193. package/dist/nav/TabbedContent.svelte.d.ts +0 -23
  194. package/dist/nav/Tabs.svelte +0 -158
  195. package/dist/nav/Tabs.svelte.d.ts +0 -25
  196. package/dist/nav/index.d.ts +0 -7
  197. package/dist/nav/index.js +0 -6
  198. package/dist/style.css +0 -950
  199. package/dist/typo/Clamp.svelte +0 -25
  200. package/dist/typo/Clamp.svelte.d.ts +0 -24
  201. package/dist/typo/H.svelte +0 -52
  202. package/dist/typo/H.svelte.d.ts +0 -28
  203. package/dist/typo/H1.svelte +0 -14
  204. package/dist/typo/H1.svelte.d.ts +0 -26
  205. package/dist/typo/H2.svelte +0 -14
  206. package/dist/typo/H2.svelte.d.ts +0 -26
  207. package/dist/typo/H3.svelte +0 -14
  208. package/dist/typo/H3.svelte.d.ts +0 -26
  209. package/dist/typo/H4.svelte +0 -14
  210. package/dist/typo/H4.svelte.d.ts +0 -26
  211. package/dist/typo/H5.svelte +0 -14
  212. package/dist/typo/H5.svelte.d.ts +0 -26
  213. package/dist/typo/H6.svelte +0 -14
  214. package/dist/typo/H6.svelte.d.ts +0 -26
  215. package/dist/typo/P.svelte +0 -34
  216. package/dist/typo/P.svelte.d.ts +0 -26
  217. package/dist/typo/index.d.ts +0 -9
  218. package/dist/typo/index.js +0 -9
  219. package/dist/utils/StringOrComponent.svelte +0 -14
  220. package/dist/utils/StringOrComponent.svelte.d.ts +0 -19
  221. package/dist/utils/StringOrSnippet.svelte +0 -11
  222. package/dist/utils/StringOrSnippet.svelte.d.ts +0 -19
  223. package/dist/utils/attr.d.ts +0 -5
  224. package/dist/utils/attr.js +0 -21
  225. package/dist/utils/color.d.ts +0 -51
  226. package/dist/utils/color.js +0 -97
  227. package/dist/utils/defaults.d.ts +0 -4
  228. package/dist/utils/defaults.js +0 -1
  229. package/dist/utils/dom.d.ts +0 -15
  230. package/dist/utils/dom.js +0 -74
  231. package/dist/utils/hooks.server.d.ts +0 -2
  232. package/dist/utils/hooks.server.js +0 -16
  233. package/dist/utils/id.d.ts +0 -1
  234. package/dist/utils/id.js +0 -3
  235. package/dist/utils/index.d.ts +0 -9
  236. package/dist/utils/index.js +0 -6
  237. package/dist/utils/isSnippet.d.ts +0 -3
  238. package/dist/utils/isSnippet.js +0 -11
  239. package/dist/utils/keyboard.svelte.d.ts +0 -22
  240. package/dist/utils/keyboard.svelte.js +0 -161
  241. /package/dist/{utils → util}/transitions.d.ts +0 -0
  242. /package/dist/{utils → util}/transitions.js +0 -0
@@ -1,27 +0,0 @@
1
- import type { Snippet } from "svelte";
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;
11
- }
12
- declare const Details: $$__sveltets_2_IsomorphicComponent<{
13
- /** The summary of the element. Can be a string or a snippet. */
14
- summary: string | Snippet;
15
- /** Contain the element in a box. */
16
- contained?: boolean;
17
- /** Round the corners of the element if contained. */
18
- rounded?: boolean;
19
- /** Whether the details are open. */
20
- open?: boolean;
21
- /** The content of the element. */
22
- children: Snippet;
23
- }, {
24
- [evt: string]: CustomEvent<any>;
25
- }, {}, {}, "">;
26
- type Details = InstanceType<typeof Details>;
27
- export default Details;
@@ -1,50 +0,0 @@
1
- <script lang="ts">import { setContext } from "svelte";
2
- let {
3
- children,
4
- pad = true,
5
- center = false,
6
- fullWidth = false,
7
- contained = false
8
- } = $props();
9
- </script>
10
-
11
- <section class="Hero" class:pad class:fullWidth class:center class:contained>
12
- <main>
13
- {@render children()}
14
- </main>
15
- </section>
16
-
17
- <style>
18
- .Hero {
19
- background: var(--bg, var(--bg-subtle));
20
- container-type: inline-size;
21
- text-wrap: balance;
22
- }
23
- .Hero.contained main {
24
- max-inline-size: var(--max-inline-size, 1560px);
25
- }
26
- /** Header areas where h1 is followed by h2 */
27
- .Hero :global(h1:has(+ h2)) {
28
- margin-block-end: 1rem;
29
- }
30
- .Hero :global(h1 + h2) {
31
- color: var(--text-subtle);
32
- margin-block-start: 0rem;
33
- }
34
- .Hero {
35
- block-size: 100%;
36
- margin-inline: 0;
37
- }
38
- .Hero.fullWidth {
39
- inline-size: 100cqi;
40
- margin-inline: calc(50% - 50cqi);
41
- min-inline-size: 100%;
42
- }
43
- .Hero.center main {
44
- margin-inline: auto;
45
- }
46
- .Hero.pad {
47
- padding-block: var(--padding, var(--padding-block, 4rem));
48
- padding-inline: var(--padding, var(--padding-inline, 4rem));
49
- }
50
- </style>
@@ -1,26 +0,0 @@
1
- import { type Snippet } from "svelte";
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;
11
- }
12
- declare const Hero: $$__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. */
17
- center?: boolean;
18
- /** Make the hero full width to the container (nearest element with `container-type: inline-size;`) */
19
- fullWidth?: boolean;
20
- /** Contain the hero to the container (nearest element with `container-type: inline-size;`) */
21
- contained?: boolean;
22
- }, {
23
- [evt: string]: CustomEvent<any>;
24
- }, {}, {}, "">;
25
- type Hero = InstanceType<typeof Hero>;
26
- export default Hero;
@@ -1,39 +0,0 @@
1
- <script lang="ts">import { isComponent, isSnippet } from "../utils/isSnippet.js";
2
- let {
3
- icon,
4
- alt
5
- } = $props();
6
- let Icon = icon;
7
- </script>
8
-
9
- <span class="Icon" aria-label="icon">
10
- {#if typeof icon === "string"}
11
- <img src={icon} alt={alt ? alt : 'Icon'} width="100%" height="100%" />
12
- {:else}
13
- <Icon />
14
- {/if}
15
- </span>
16
-
17
- <style>
18
- .Icon {
19
- display: inline-flex;
20
- align-items: center;
21
- justify-content: center;
22
- font-size: 1em;
23
- line-height: inherit;
24
- width: max(
25
- var(--icon-width,
26
- var(--icon-height, 1rem)
27
- ), 16px);
28
- height: max(var(--icon-height, auto), 16px);
29
- overflow: clip;
30
- vertical-align: var(--vertical-align, text-bottom);
31
- cursor: var(--cursor, default);
32
- }
33
- img,
34
- .Icon :global(svg) {
35
- width: 100%;
36
- height: auto;
37
- display: block;
38
- }
39
- </style>
@@ -1,19 +0,0 @@
1
- import type { Component } from "svelte";
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;
11
- }
12
- declare const Icon: $$__sveltets_2_IsomorphicComponent<{
13
- icon: string | Component;
14
- alt?: string;
15
- }, {
16
- [evt: string]: CustomEvent<any>;
17
- }, {}, {}, "">;
18
- type Icon = InstanceType<typeof Icon>;
19
- export default Icon;
@@ -1,91 +0,0 @@
1
- <script lang="ts">import Icon from "./Icon.svelte";
2
- import { fly } from "svelte/transition";
3
- import { popBezier, popBezierInverse } from "../utils/transitions.js";
4
- let {
5
- icon,
6
- disabled,
7
- children,
8
- onclick,
9
- mask = true
10
- } = $props();
11
- </script>
12
-
13
- {#snippet inside()}
14
- <span class="IconMask" class:mask>
15
- {#key icon}
16
- <span class="IconContent" in:fly={{ duration: 250, y: -32, easing: popBezier }} out:fly={{ duration: 250, y: 32, easing: popBezierInverse }}>
17
- <Icon {icon} --cursor="pointer" />
18
- {#if children}
19
- <span class="Text">
20
- {@render children()}
21
- </span>
22
- {/if}
23
- </span>
24
- {/key}
25
- </span>
26
- {/snippet}
27
-
28
- {#if onclick}
29
- <button type="button" {disabled} class="IconButton" {onclick}>
30
- {@render inside()}
31
- </button>
32
- {:else}
33
- <span class="IconButton">
34
- {@render inside()}
35
- </span>
36
- {/if}
37
-
38
- <style>
39
- .IconButton {
40
- display: inline-flex;
41
- align-items: stretch;
42
- color: inherit;
43
- opacity: 1;
44
- background-color: var(--field-bg);
45
- transition: background-color 0.04s;
46
- border-radius: var(--field-radius);
47
- }
48
- .IconButton:hover {
49
- background-color: var(--menu-bg-hover);
50
- }
51
- .IconButton:active {
52
- scale: 1;
53
- }
54
- button.IconButton {
55
- border: none;
56
- background: none;
57
- cursor: pointer;
58
- color: var(--text);
59
- }
60
- .IconMask {
61
- height: 100%;
62
- padding-inline: calc(var(--padding, 0.75em) * 0.8);
63
- padding-block: calc(var(--padding, 0.75em) * 0.8);
64
- display: inline-grid;
65
- gap: 0.5rem;
66
- grid-template: "icon";
67
- align-items: center;
68
- }
69
- .IconMask.mask {
70
- -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 35%, rgba(0, 0, 0, 1) 65%, rgba(0, 0, 0, 0));
71
- mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 35%, rgba(0, 0, 0, 1) 65%, rgba(0, 0, 0, 0));
72
- }
73
- .IconContent {
74
- grid-area: icon;
75
- display: inline-flex;
76
- gap: 0.5rem;
77
- align-items: center;
78
- }
79
- @media(max-width: 960px) {
80
- .IconMask {
81
- padding-inline: calc(var(--padding, 0.75em) * 0.75);
82
- padding-block: calc(var(--padding, 0.75em) * 0.75);
83
- }
84
- }
85
- @media(max-width: 320px) {
86
- .IconMask {
87
- padding-inline: calc(var(--padding, 0.75em) * 0.6);
88
- padding-block: calc(var(--padding, 0.75em) * 0.6);
89
- }
90
- }
91
- </style>
@@ -1,27 +0,0 @@
1
- import type { Component, Snippet } from "svelte";
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;
11
- }
12
- declare const IconButton: $$__sveltets_2_IsomorphicComponent<{
13
- /** The icon to display. */
14
- icon: string | Component;
15
- /** The children to display. */
16
- children?: Snippet;
17
- /** The onclick event. */
18
- onclick?: (event: MouseEvent) => void;
19
- /** Whether the button is disabled. */
20
- disabled?: boolean;
21
- /** Whether to mask the content. */
22
- mask?: boolean;
23
- }, {
24
- [evt: string]: CustomEvent<any>;
25
- }, {}, {}, "">;
26
- type IconButton = InstanceType<typeof IconButton>;
27
- export default IconButton;
@@ -1,91 +0,0 @@
1
- <script lang="ts">import { decode } from "blurhash";
2
- import { fade } from "svelte/transition";
3
- let {
4
- hash,
5
- width,
6
- height,
7
- aspectRatio,
8
- fit,
9
- src,
10
- srcset,
11
- alt,
12
- style,
13
- class: className
14
- } = $props();
15
- let canvas = $state(null);
16
- let el = $state(null);
17
- let elWidth = $state(32);
18
- let elHeight = $state(32);
19
- if (!src && srcset) {
20
- const [src1] = srcset.split(", ");
21
- src = src1.split(" ")[0];
22
- }
23
- if (!style) {
24
- style = `aspect-ratio: ${aspectRatio};`;
25
- } else {
26
- style += ` aspect-ratio: ${aspectRatio};`;
27
- }
28
- let decoded = $state(false);
29
- let loaded = $state(false);
30
- const onload = () => {
31
- loaded = true;
32
- };
33
- $effect(() => {
34
- if (hash) {
35
- setTimeout(() => {
36
- const pixels = decode(hash, elWidth, elHeight);
37
- const ctx = canvas.getContext("2d");
38
- const imageData = ctx.createImageData(elWidth, elHeight);
39
- imageData.data.set(pixels);
40
- ctx.putImageData(imageData, 0, 0);
41
- decoded = true;
42
- }, 0);
43
- }
44
- });
45
- </script>
46
-
47
- <div class="BlurHashImage" class:loaded>
48
- <img
49
- bind:this={el}
50
- bind:clientWidth={elWidth}
51
- bind:clientHeight={elHeight}
52
- onload={onload}
53
- src={src}
54
- srcset={srcset}
55
- alt={alt}
56
- width={width}
57
- height={height}
58
- style={style}
59
- class="{className} {fit}"
60
- />
61
- {#if !loaded && hash}
62
- <canvas class:decoded out:fade={{ duration: 100 }} width={elWidth} height={elHeight} bind:this={canvas}></canvas>
63
- {/if}
64
- </div>
65
-
66
- <style>
67
- .BlurHashImage {
68
- position: relative;
69
- display: grid;
70
- grid-template-areas: "img";
71
- }
72
- canvas {
73
- z-index: 2;
74
- opacity: 0;
75
- width: 100%;
76
- grid-area: img;
77
- transition: opacity 200ms;
78
- }
79
- canvas.decoded {
80
- opacity: 1;
81
- }
82
- img {
83
- z-index: 1;
84
- grid-area: img;
85
- display: inline-block;
86
- vertical-align: middle;
87
- }
88
- img.cover { object-fit: cover; }
89
- img.contain { object-fit: contain; }
90
- img.scale-down { object-fit: scale-down; }
91
- </style>
@@ -1,26 +0,0 @@
1
- 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> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports;
9
- z_$$bindings?: Bindings;
10
- }
11
- declare const Image: $$__sveltets_2_IsomorphicComponent<{
12
- hash?: string;
13
- aspectRatio?: string;
14
- fit?: "cover" | "contain" | "scale-down";
15
- src?: string;
16
- srcset?: string;
17
- alt?: string;
18
- width?: string | number;
19
- height?: string | number;
20
- style?: string;
21
- class?: string;
22
- }, {
23
- [evt: string]: CustomEvent<any>;
24
- }, {}, {}, "">;
25
- type Image = InstanceType<typeof Image>;
26
- export default Image;