lutra 0.0.20 → 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 (223) 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 +37 -11
  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 -75
  28. package/dist/data/Stat.svelte +0 -89
  29. package/dist/data/Stat.svelte.d.ts +0 -39
  30. package/dist/data/index.d.ts +0 -1
  31. package/dist/data/index.js +0 -1
  32. package/dist/display/Avatar.svelte +0 -61
  33. package/dist/display/Avatar.svelte.d.ts +0 -23
  34. package/dist/display/Badge.svelte +0 -93
  35. package/dist/display/Badge.svelte.d.ts +0 -34
  36. package/dist/display/Callout.svelte +0 -109
  37. package/dist/display/Callout.svelte.d.ts +0 -36
  38. package/dist/display/Close.svelte +0 -58
  39. package/dist/display/Close.svelte.d.ts +0 -21
  40. package/dist/display/Code.svelte +0 -195
  41. package/dist/display/Code.svelte.d.ts +0 -31
  42. package/dist/display/ContextTip.svelte +0 -26
  43. package/dist/display/ContextTip.svelte.d.ts +0 -22
  44. package/dist/display/Details.svelte +0 -49
  45. package/dist/display/Details.svelte.d.ts +0 -32
  46. package/dist/display/Hero.svelte +0 -50
  47. package/dist/display/Hero.svelte.d.ts +0 -30
  48. package/dist/display/Icon.svelte +0 -40
  49. package/dist/display/Icon.svelte.d.ts +0 -24
  50. package/dist/display/IconButton.svelte +0 -84
  51. package/dist/display/IconButton.svelte.d.ts +0 -30
  52. package/dist/display/Image.svelte +0 -91
  53. package/dist/display/Image.svelte.d.ts +0 -37
  54. package/dist/display/Indicator.svelte +0 -352
  55. package/dist/display/Indicator.svelte.d.ts +0 -24
  56. package/dist/display/Inset.svelte +0 -18
  57. package/dist/display/Inset.svelte.d.ts +0 -22
  58. package/dist/display/Notification.svelte +0 -104
  59. package/dist/display/Notification.svelte.d.ts +0 -42
  60. package/dist/display/Popup.svelte +0 -111
  61. package/dist/display/Popup.svelte.d.ts +0 -30
  62. package/dist/display/Table.svelte +0 -24
  63. package/dist/display/Table.svelte.d.ts +0 -34
  64. package/dist/display/Tag.svelte +0 -90
  65. package/dist/display/Tag.svelte.d.ts +0 -35
  66. package/dist/display/Tooltip.svelte.d.ts +0 -28
  67. package/dist/display/index.d.ts +0 -14
  68. package/dist/display/index.js +0 -14
  69. package/dist/display/notifications.svelte.d.ts +0 -21
  70. package/dist/display/notifications.svelte.js +0 -31
  71. package/dist/form/Button.svelte +0 -34
  72. package/dist/form/Button.svelte.d.ts +0 -36
  73. package/dist/form/FieldActions.svelte +0 -46
  74. package/dist/form/FieldActions.svelte.d.ts +0 -24
  75. package/dist/form/FieldContainer.svelte +0 -37
  76. package/dist/form/FieldContainer.svelte.d.ts +0 -24
  77. package/dist/form/FieldContent.svelte +0 -134
  78. package/dist/form/FieldContent.svelte.d.ts +0 -59
  79. package/dist/form/FieldError.svelte +0 -14
  80. package/dist/form/FieldError.svelte.d.ts +0 -21
  81. package/dist/form/FieldSection.svelte +0 -86
  82. package/dist/form/FieldSection.svelte.d.ts +0 -34
  83. package/dist/form/Fieldset.svelte +0 -68
  84. package/dist/form/Fieldset.svelte.d.ts +0 -42
  85. package/dist/form/Form.svelte +0 -98
  86. package/dist/form/Form.svelte.d.ts +0 -33
  87. package/dist/form/Input.svelte +0 -287
  88. package/dist/form/Input.svelte.d.ts +0 -142
  89. package/dist/form/InputLength.svelte +0 -32
  90. package/dist/form/InputLength.svelte.d.ts +0 -21
  91. package/dist/form/Label.svelte +0 -27
  92. package/dist/form/Label.svelte.d.ts +0 -31
  93. package/dist/form/Select.svelte +0 -88
  94. package/dist/form/Select.svelte.d.ts +0 -97
  95. package/dist/form/client.svelte.d.ts +0 -45
  96. package/dist/form/client.svelte.js +0 -90
  97. package/dist/form/form.d.ts +0 -52
  98. package/dist/form/form.js +0 -326
  99. package/dist/form/index.d.ts +0 -15
  100. package/dist/form/index.js +0 -15
  101. package/dist/form/types.d.ts +0 -52
  102. package/dist/form/types.js +0 -1
  103. package/dist/grid/Column.svelte +0 -11
  104. package/dist/grid/Column.svelte.d.ts +0 -22
  105. package/dist/grid/Grid.svelte +0 -19
  106. package/dist/grid/Grid.svelte.d.ts +0 -24
  107. package/dist/grid/Row.svelte +0 -44
  108. package/dist/grid/Row.svelte.d.ts +0 -24
  109. package/dist/icons/Alert.svelte +0 -3
  110. package/dist/icons/Alert.svelte.d.ts +0 -23
  111. package/dist/icons/Copy.svelte +0 -3
  112. package/dist/icons/Copy.svelte.d.ts +0 -23
  113. package/dist/icons/Done.svelte +0 -3
  114. package/dist/icons/Done.svelte.d.ts +0 -23
  115. package/dist/icons/Error.svelte +0 -3
  116. package/dist/icons/Error.svelte.d.ts +0 -23
  117. package/dist/icons/Help.svelte +0 -3
  118. package/dist/icons/Help.svelte.d.ts +0 -23
  119. package/dist/icons/Hide.svelte +0 -3
  120. package/dist/icons/Hide.svelte.d.ts +0 -23
  121. package/dist/icons/Info.svelte +0 -3
  122. package/dist/icons/Info.svelte.d.ts +0 -23
  123. package/dist/icons/Link.svelte +0 -3
  124. package/dist/icons/Link.svelte.d.ts +0 -23
  125. package/dist/icons/MenuBurger.svelte +0 -3
  126. package/dist/icons/MenuBurger.svelte.d.ts +0 -23
  127. package/dist/icons/MenuDots.svelte +0 -3
  128. package/dist/icons/MenuDots.svelte.d.ts +0 -23
  129. package/dist/icons/Show.svelte +0 -3
  130. package/dist/icons/Show.svelte.d.ts +0 -23
  131. package/dist/icons/Success.svelte +0 -3
  132. package/dist/icons/Success.svelte.d.ts +0 -23
  133. package/dist/icons/Warning.svelte +0 -3
  134. package/dist/icons/Warning.svelte.d.ts +0 -23
  135. package/dist/icons/index.d.ts +0 -11
  136. package/dist/icons/index.js +0 -11
  137. package/dist/layout/Layout.svelte +0 -45
  138. package/dist/layout/Layout.svelte.d.ts +0 -25
  139. package/dist/layout/LayoutFooter.svelte +0 -21
  140. package/dist/layout/LayoutFooter.svelte.d.ts +0 -19
  141. package/dist/layout/LayoutGrid.svelte +0 -51
  142. package/dist/layout/LayoutGrid.svelte.d.ts +0 -38
  143. package/dist/layout/LayoutHeader.svelte +0 -94
  144. package/dist/layout/LayoutHeader.svelte.d.ts +0 -39
  145. package/dist/layout/LayoutSideMenu.svelte +0 -54
  146. package/dist/layout/LayoutSideMenu.svelte.d.ts +0 -25
  147. package/dist/layout/LayoutTypes.d.ts +0 -15
  148. package/dist/layout/LayoutTypes.js +0 -9
  149. package/dist/layout/Overlay.svelte +0 -20
  150. package/dist/layout/Overlay.svelte.d.ts +0 -35
  151. package/dist/layout/OverlayContainer.svelte +0 -28
  152. package/dist/layout/OverlayContainer.svelte.d.ts +0 -16
  153. package/dist/layout/OverlayLayer.svelte +0 -145
  154. package/dist/layout/OverlayLayer.svelte.d.ts +0 -22
  155. package/dist/layout/PageContent.svelte +0 -97
  156. package/dist/layout/PageContent.svelte.d.ts +0 -28
  157. package/dist/layout/Theme.svelte +0 -228
  158. package/dist/layout/Theme.svelte.d.ts +0 -24
  159. package/dist/layout/UIContent.svelte +0 -15
  160. package/dist/layout/UIContent.svelte.d.ts +0 -22
  161. package/dist/layout/index.d.ts +0 -7
  162. package/dist/layout/index.js +0 -7
  163. package/dist/layout/overlays.svelte.d.ts +0 -34
  164. package/dist/layout/overlays.svelte.js +0 -44
  165. package/dist/nav/Breadcrumb.svelte +0 -82
  166. package/dist/nav/Breadcrumb.svelte.d.ts +0 -33
  167. package/dist/nav/Menu.svelte +0 -177
  168. package/dist/nav/Menu.svelte.d.ts +0 -33
  169. package/dist/nav/MenuItem.svelte +0 -140
  170. package/dist/nav/MenuItem.svelte.d.ts +0 -26
  171. package/dist/nav/MenuTypes.d.ts +0 -58
  172. package/dist/nav/MenuTypes.js +0 -1
  173. package/dist/nav/NavMenu.svelte +0 -183
  174. package/dist/nav/NavMenu.svelte.d.ts +0 -20
  175. package/dist/nav/TabbedContent.svelte +0 -43
  176. package/dist/nav/TabbedContent.svelte.d.ts +0 -24
  177. package/dist/nav/Tabs.svelte +0 -118
  178. package/dist/nav/Tabs.svelte.d.ts +0 -26
  179. package/dist/nav/index.d.ts +0 -6
  180. package/dist/nav/index.js +0 -5
  181. package/dist/style.css +0 -853
  182. package/dist/typo/Clamp.svelte +0 -25
  183. package/dist/typo/Clamp.svelte.d.ts +0 -28
  184. package/dist/typo/H.svelte +0 -52
  185. package/dist/typo/H.svelte.d.ts +0 -32
  186. package/dist/typo/H1.svelte +0 -14
  187. package/dist/typo/H1.svelte.d.ts +0 -30
  188. package/dist/typo/H2.svelte +0 -14
  189. package/dist/typo/H2.svelte.d.ts +0 -30
  190. package/dist/typo/H3.svelte +0 -14
  191. package/dist/typo/H3.svelte.d.ts +0 -30
  192. package/dist/typo/H4.svelte +0 -14
  193. package/dist/typo/H4.svelte.d.ts +0 -30
  194. package/dist/typo/H5.svelte +0 -14
  195. package/dist/typo/H5.svelte.d.ts +0 -30
  196. package/dist/typo/H6.svelte +0 -14
  197. package/dist/typo/H6.svelte.d.ts +0 -30
  198. package/dist/typo/P.svelte +0 -34
  199. package/dist/typo/P.svelte.d.ts +0 -30
  200. package/dist/typo/index.d.ts +0 -9
  201. package/dist/typo/index.js +0 -9
  202. package/dist/utils/StringOrComponentOrSnippet.svelte +0 -14
  203. package/dist/utils/StringOrComponentOrSnippet.svelte.d.ts +0 -24
  204. package/dist/utils/attr.d.ts +0 -5
  205. package/dist/utils/attr.js +0 -21
  206. package/dist/utils/color.d.ts +0 -51
  207. package/dist/utils/color.js +0 -97
  208. package/dist/utils/defaults.d.ts +0 -4
  209. package/dist/utils/defaults.js +0 -1
  210. package/dist/utils/dom.d.ts +0 -15
  211. package/dist/utils/dom.js +0 -74
  212. package/dist/utils/hooks.server.d.ts +0 -2
  213. package/dist/utils/hooks.server.js +0 -16
  214. package/dist/utils/id.d.ts +0 -1
  215. package/dist/utils/id.js +0 -3
  216. package/dist/utils/index.d.ts +0 -8
  217. package/dist/utils/index.js +0 -5
  218. package/dist/utils/isSnippet.d.ts +0 -5
  219. package/dist/utils/isSnippet.js +0 -6
  220. package/dist/utils/keyboard.svelte.d.ts +0 -22
  221. package/dist/utils/keyboard.svelte.js +0 -161
  222. /package/dist/{utils → util}/transitions.d.ts +0 -0
  223. /package/dist/{utils → util}/transitions.js +0 -0
@@ -1,22 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { Snippet } from "svelte";
3
- declare const __propDef: {
4
- props: {
5
- tip: string | Snippet;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {};
11
- };
12
- export type ContextTipProps = typeof __propDef.props;
13
- export type ContextTipEvents = typeof __propDef.events;
14
- export type ContextTipSlots = typeof __propDef.slots;
15
- export default class ContextTip extends SvelteComponent<ContextTipProps, ContextTipEvents, ContextTipSlots> {
16
- constructor(options?: import("svelte").ComponentConstructorOptions<{
17
- tip: string | ((this: void) => typeof import("svelte").SnippetReturn & {
18
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
19
- });
20
- }>);
21
- }
22
- export {};
@@ -1,49 +0,0 @@
1
- <script lang="ts">let {
2
- summary,
3
- contained,
4
- rounded,
5
- open,
6
- children
7
- } = $props();
8
- </script>
9
-
10
- <details class:contained class:rounded bind:open>
11
- <summary>
12
- {#if typeof summary === 'string'}
13
- <span>{summary}</span>
14
- {:else}
15
- {@render summary()}
16
- {/if}
17
- </summary>
18
- <section>
19
- {@render children()}
20
- </section>
21
- </details>
22
-
23
- <style>
24
- summary {
25
- font-weight: 600;
26
- font-size: var(--font-size, 1em);
27
- cursor: pointer;
28
- padding-block-end: 0.5rem;
29
- }
30
- details.rounded {
31
- border-radius: var(--border-radius);
32
- }
33
- details.contained {
34
- border: var(--border);
35
- overflow: hidden;
36
- }
37
- details.contained[open] summary {
38
- border-block-end: var(--border);
39
- }
40
- details.contained summary {
41
- padding: var(--padding, 0.5em 1em);
42
- background-color: var(--summary-bg, var(--bg-subtle));
43
- }
44
- details.contained section {
45
- font-size: var(--font-size, 1em);
46
- padding: var(--padding, 0.5em 1em);
47
- background-color: var(--content-bg, transparent);
48
- }
49
- </style>
@@ -1,32 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { Snippet } from "svelte";
3
- declare const __propDef: {
4
- props: {
5
- summary: string | Snippet;
6
- contained?: boolean | undefined;
7
- rounded?: boolean | undefined;
8
- open?: boolean | undefined;
9
- children: Snippet;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export type DetailsProps = typeof __propDef.props;
17
- export type DetailsEvents = typeof __propDef.events;
18
- export type DetailsSlots = typeof __propDef.slots;
19
- export default class Details extends SvelteComponent<DetailsProps, DetailsEvents, DetailsSlots> {
20
- constructor(options?: import("svelte").ComponentConstructorOptions<{
21
- summary: string | ((this: void) => typeof import("svelte").SnippetReturn & {
22
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
23
- });
24
- contained?: boolean | undefined;
25
- rounded?: boolean | undefined;
26
- open?: boolean | undefined;
27
- children: (this: void) => typeof import("svelte").SnippetReturn & {
28
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
29
- };
30
- }>);
31
- }
32
- export {};
@@ -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,30 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- 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
- center?: boolean | undefined;
8
- fullWidth?: boolean | undefined;
9
- contained?: boolean | undefined;
10
- };
11
- events: {
12
- [evt: string]: CustomEvent<any>;
13
- };
14
- slots: {};
15
- };
16
- export type HeroProps = typeof __propDef.props;
17
- export type HeroEvents = typeof __propDef.events;
18
- export type HeroSlots = typeof __propDef.slots;
19
- export default class Hero extends SvelteComponent<HeroProps, HeroEvents, HeroSlots> {
20
- constructor(options?: import("svelte").ComponentConstructorOptions<{
21
- children: (this: void) => typeof import("svelte").SnippetReturn & {
22
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
23
- };
24
- pad?: string | boolean | [boolean, boolean] | [boolean, boolean, boolean] | [boolean, boolean, boolean, boolean] | [string, string] | [string, string, string] | [string, string, string, string] | undefined;
25
- center?: boolean | undefined;
26
- fullWidth?: boolean | undefined;
27
- contained?: boolean | undefined;
28
- }>);
29
- }
30
- export {};
@@ -1,40 +0,0 @@
1
- <script lang="ts">import { isComponent, isSnippet } from "../utils/isSnippet.js";
2
- let {
3
- icon,
4
- alt
5
- } = $props();
6
- </script>
7
-
8
- <span class="Icon" aria-label="icon">
9
- {#if typeof icon === "string"}
10
- <img src={icon} alt={alt ? alt : 'Icon'} width="100%" height="100%" />
11
- {:else if isComponent(icon)}
12
- <svelte:component this={icon} />
13
- {:else if isSnippet(icon)}
14
- {@render icon()}
15
- {/if}
16
- </span>
17
-
18
- <style>
19
- .Icon {
20
- display: inline-flex;
21
- align-items: center;
22
- justify-content: center;
23
- font-size: 1em;
24
- line-height: inherit;
25
- width: max(
26
- var(--icon-width,
27
- var(--icon-height, 1rem)
28
- ), 16px);
29
- height: max(var(--icon-height, auto), 16px);
30
- overflow: clip;
31
- vertical-align: var(--vertical-align, text-bottom);
32
- cursor: var(--cursor, default);
33
- }
34
- img,
35
- .Icon :global(svg) {
36
- width: 100%;
37
- height: auto;
38
- display: block;
39
- }
40
- </style>
@@ -1,24 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { ComponentType, Snippet } from "svelte";
3
- declare const __propDef: {
4
- props: {
5
- icon: string | Snippet | ComponentType;
6
- alt?: string | undefined;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {};
12
- };
13
- export type IconProps = typeof __propDef.props;
14
- export type IconEvents = typeof __propDef.events;
15
- export type IconSlots = typeof __propDef.slots;
16
- export default class Icon extends SvelteComponent<IconProps, IconEvents, IconSlots> {
17
- constructor(options?: import("svelte").ComponentConstructorOptions<{
18
- icon: string | ((this: void) => typeof import("svelte").SnippetReturn & {
19
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
20
- }) | ComponentType;
21
- alt?: string | undefined;
22
- }>);
23
- }
24
- export {};
@@ -1,84 +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
- } = $props();
10
- </script>
11
-
12
- {#snippet inside()}
13
- <span class="IconMask">
14
- {#key icon}
15
- <span class="IconContent" in:fly={{ duration: 250, y: -32, easing: popBezier }} out:fly={{ duration: 250, y: 32, easing: popBezierInverse }}>
16
- <Icon {icon} --cursor="pointer" />
17
- {#if children}
18
- {@render children()}
19
- {/if}
20
- </span>
21
- {/key}
22
- </span>
23
- {/snippet}
24
-
25
- {#if onclick}
26
- <button type="button" {disabled} class="IconButton" {onclick}>
27
- {@render inside()}
28
- </button>
29
- {:else}
30
- <span class="IconButton">
31
- {@render inside()}
32
- </span>
33
- {/if}
34
-
35
- <style>
36
- .IconButton {
37
- display: inline-flex;
38
- align-items: stretch;
39
- color: inherit;
40
- opacity: 1;
41
- background-color: var(--field-bg);
42
- transition: background-color 0.04s;
43
- border-radius: var(--field-radius);
44
- }
45
- .IconButton:hover {
46
- background-color: var(--menu-bg-hover);
47
- }
48
- .IconButton:active {
49
- scale: 1;
50
- }
51
- button.IconButton {
52
- border: none;
53
- background: none;
54
- cursor: pointer;
55
- color: var(--text);
56
- }
57
- .IconMask {
58
- height: 100%;
59
- padding-inline: var(--padding, 0.75em);
60
- padding-block: var(--padding, 0.75em);
61
- display: inline-grid;
62
- gap: 0.5rem;
63
- grid-template: "icon";
64
- align-items: center;
65
- -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));
66
- 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));
67
- }
68
- .IconContent {
69
- grid-area: icon;
70
- display: inline-flex;
71
- }
72
- @media(max-width: 960px) {
73
- .IconMask {
74
- padding-inline: calc(var(--padding, 0.75em) * 0.75);
75
- padding-block: calc(var(--padding, 0.75em) * 0.75);
76
- }
77
- }
78
- @media(max-width: 320px) {
79
- .IconMask {
80
- padding-inline: calc(var(--padding, 0.75em) * 0.6);
81
- padding-block: calc(var(--padding, 0.75em) * 0.6);
82
- }
83
- }
84
- </style>
@@ -1,30 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { ComponentType } from "svelte";
3
- declare const __propDef: {
4
- props: {
5
- icon: string | ComponentType;
6
- children?: ((this: void) => typeof import("svelte").SnippetReturn & {
7
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
8
- }) | undefined;
9
- onclick?: ((event: MouseEvent) => void) | undefined;
10
- disabled?: boolean | undefined;
11
- };
12
- events: {
13
- [evt: string]: CustomEvent<any>;
14
- };
15
- slots: {};
16
- };
17
- export type IconButtonProps = typeof __propDef.props;
18
- export type IconButtonEvents = typeof __propDef.events;
19
- export type IconButtonSlots = typeof __propDef.slots;
20
- export default class IconButton extends SvelteComponent<IconButtonProps, IconButtonEvents, IconButtonSlots> {
21
- constructor(options?: import("svelte").ComponentConstructorOptions<{
22
- icon: string | ComponentType;
23
- children?: ((this: void) => typeof import("svelte").SnippetReturn & {
24
- _: "functions passed to {@render ...} tags must use the `Snippet` type imported from \"svelte\"";
25
- }) | undefined;
26
- onclick?: ((event: MouseEvent) => void) | undefined;
27
- disabled?: boolean | undefined;
28
- }>);
29
- }
30
- export {};
@@ -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,37 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- hash?: string | undefined;
5
- aspectRatio?: string | undefined;
6
- fit?: "cover" | "contain" | "scale-down" | undefined;
7
- src?: string | undefined;
8
- srcset?: string | undefined;
9
- alt?: string | undefined;
10
- width?: string | number | undefined;
11
- height?: string | number | undefined;
12
- style?: string | undefined;
13
- class?: string | undefined;
14
- };
15
- events: {
16
- [evt: string]: CustomEvent<any>;
17
- };
18
- slots: {};
19
- };
20
- export type ImageProps = typeof __propDef.props;
21
- export type ImageEvents = typeof __propDef.events;
22
- export type ImageSlots = typeof __propDef.slots;
23
- export default class Image extends SvelteComponent<ImageProps, ImageEvents, ImageSlots> {
24
- constructor(options?: import("svelte").ComponentConstructorOptions<{
25
- hash?: string | undefined;
26
- aspectRatio?: string | undefined;
27
- fit?: "cover" | "contain" | "scale-down" | undefined;
28
- src?: string | undefined;
29
- srcset?: string | undefined;
30
- alt?: string | undefined;
31
- width?: string | number | undefined;
32
- height?: string | number | undefined;
33
- style?: string | undefined;
34
- class?: string | undefined;
35
- }>);
36
- }
37
- export {};