@noahbaumgartner/svelte-ui 0.0.5 → 0.0.7

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 (214) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -5
  3. package/dist/components/accordion/Accordion.svelte +16 -6
  4. package/dist/components/accordion/Accordion.svelte.d.ts +3 -1
  5. package/dist/components/accordion/AccordionItem.svelte +106 -67
  6. package/dist/components/accordion/AccordionItem.svelte.d.ts +5 -1
  7. package/dist/components/alert-dialog/AlertDialog.svelte +108 -76
  8. package/dist/components/alert-dialog/AlertDialog.svelte.d.ts +5 -2
  9. package/dist/components/avatar/Avatar.svelte +71 -49
  10. package/dist/components/avatar/Avatar.svelte.d.ts +5 -2
  11. package/dist/components/avatar-group/AvatarGroup.svelte +72 -45
  12. package/dist/components/avatar-group/AvatarGroup.svelte.d.ts +5 -1
  13. package/dist/components/badge/Badge.svelte +50 -28
  14. package/dist/components/badge/Badge.svelte.d.ts +6 -4
  15. package/dist/components/breadcrumb/Breadcrumb.svelte +21 -17
  16. package/dist/components/breadcrumb/Breadcrumb.svelte.d.ts +3 -1
  17. package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte +17 -6
  18. package/dist/components/breadcrumb/BreadcrumbEllipsis.svelte.d.ts +5 -2
  19. package/dist/components/breadcrumb/BreadcrumbItem.svelte +75 -36
  20. package/dist/components/breadcrumb/BreadcrumbItem.svelte.d.ts +8 -5
  21. package/dist/components/breadcrumb/BreadcrumbSeparator.svelte +32 -9
  22. package/dist/components/breadcrumb/BreadcrumbSeparator.svelte.d.ts +10 -17
  23. package/dist/components/button/Button.svelte +206 -168
  24. package/dist/components/button/Button.svelte.d.ts +9 -5
  25. package/dist/components/button-group/ButtonGroup.svelte +52 -55
  26. package/dist/components/button-group/ButtonGroup.svelte.d.ts +3 -1
  27. package/dist/components/calendar/Calendar.svelte +232 -144
  28. package/dist/components/calendar/Calendar.svelte.d.ts +19 -2
  29. package/dist/components/calendar/dates.d.ts +4 -1
  30. package/dist/components/calendar/dates.js +8 -2
  31. package/dist/components/card/Card.svelte +48 -32
  32. package/dist/components/card/Card.svelte.d.ts +3 -1
  33. package/dist/components/card/CardAction.svelte +11 -7
  34. package/dist/components/card/CardAction.svelte.d.ts +3 -1
  35. package/dist/components/card/CardContent.svelte +8 -4
  36. package/dist/components/card/CardContent.svelte.d.ts +3 -1
  37. package/dist/components/card/CardDescription.svelte +11 -7
  38. package/dist/components/card/CardDescription.svelte.d.ts +3 -1
  39. package/dist/components/card/CardFooter.svelte +15 -11
  40. package/dist/components/card/CardFooter.svelte.d.ts +3 -1
  41. package/dist/components/card/CardHeader.svelte +15 -11
  42. package/dist/components/card/CardHeader.svelte.d.ts +3 -1
  43. package/dist/components/card/CardTitle.svelte +11 -7
  44. package/dist/components/card/CardTitle.svelte.d.ts +3 -1
  45. package/dist/components/checkbox/Checkbox.svelte +152 -61
  46. package/dist/components/checkbox/Checkbox.svelte.d.ts +5 -2
  47. package/dist/components/color-picker/ColorPicker.svelte +131 -78
  48. package/dist/components/color-picker/ColorPicker.svelte.d.ts +10 -1
  49. package/dist/components/context-menu/ContextMenu.svelte +78 -61
  50. package/dist/components/context-menu/ContextMenu.svelte.d.ts +5 -2
  51. package/dist/components/context-menu/ContextMenuInfo.svelte +91 -0
  52. package/dist/components/context-menu/ContextMenuInfo.svelte.d.ts +19 -0
  53. package/dist/components/context-menu/ContextMenuItem.svelte +102 -57
  54. package/dist/components/context-menu/ContextMenuItem.svelte.d.ts +10 -5
  55. package/dist/components/context-menu/ContextMenuLabel.svelte +28 -0
  56. package/dist/components/context-menu/ContextMenuLabel.svelte.d.ts +10 -0
  57. package/dist/components/context-menu/ContextMenuSeparator.svelte +29 -0
  58. package/dist/components/context-menu/ContextMenuSeparator.svelte.d.ts +8 -0
  59. package/dist/components/dialog/Dialog.svelte +149 -108
  60. package/dist/components/dialog/Dialog.svelte.d.ts +7 -2
  61. package/dist/components/drawer/Drawer.svelte +240 -189
  62. package/dist/components/drawer/Drawer.svelte.d.ts +7 -2
  63. package/dist/components/empty-state/EmptyState.svelte +67 -47
  64. package/dist/components/empty-state/EmptyState.svelte.d.ts +7 -4
  65. package/dist/components/entry/Entry.svelte +53 -42
  66. package/dist/components/entry/Entry.svelte.d.ts +2 -1
  67. package/dist/components/field/Field.svelte +66 -45
  68. package/dist/components/field/Field.svelte.d.ts +2 -1
  69. package/dist/components/field/FieldContent.svelte +11 -8
  70. package/dist/components/field/FieldContent.svelte.d.ts +2 -1
  71. package/dist/components/field/FieldDescription.svelte +18 -15
  72. package/dist/components/field/FieldDescription.svelte.d.ts +2 -1
  73. package/dist/components/field/FieldError.svelte +22 -13
  74. package/dist/components/field/FieldError.svelte.d.ts +2 -1
  75. package/dist/components/field/FieldGroup.svelte +15 -12
  76. package/dist/components/field/FieldGroup.svelte.d.ts +2 -1
  77. package/dist/components/field/FieldLegend.svelte +23 -14
  78. package/dist/components/field/FieldLegend.svelte.d.ts +2 -1
  79. package/dist/components/field/FieldSeparator.svelte +12 -9
  80. package/dist/components/field/FieldSeparator.svelte.d.ts +2 -1
  81. package/dist/components/field/FieldSet.svelte +18 -15
  82. package/dist/components/field/FieldSet.svelte.d.ts +2 -1
  83. package/dist/components/footer/Footer.svelte +63 -47
  84. package/dist/components/footer/Footer.svelte.d.ts +2 -1
  85. package/dist/components/footer/FooterColumn.svelte +17 -14
  86. package/dist/components/footer/FooterColumn.svelte.d.ts +2 -1
  87. package/dist/components/image/Image.svelte +61 -0
  88. package/dist/components/image/Image.svelte.d.ts +18 -0
  89. package/dist/components/input/Input.svelte +307 -208
  90. package/dist/components/input/Input.svelte.d.ts +12 -1
  91. package/dist/components/input-group/InputGroup.svelte +101 -61
  92. package/dist/components/input-group/InputGroup.svelte.d.ts +2 -1
  93. package/dist/components/input-group/InputGroupAddon.svelte +58 -49
  94. package/dist/components/kbd/Kbd.svelte +39 -30
  95. package/dist/components/kbd/Kbd.svelte.d.ts +2 -1
  96. package/dist/components/kbd/KbdGroup.svelte +15 -12
  97. package/dist/components/kbd/KbdGroup.svelte.d.ts +2 -1
  98. package/dist/components/label/Label.svelte +47 -28
  99. package/dist/components/label/Label.svelte.d.ts +2 -1
  100. package/dist/components/link/Link.svelte +71 -17
  101. package/dist/components/link/Link.svelte.d.ts +2 -1
  102. package/dist/components/mesh-gradient/MeshGradient.svelte +33 -22
  103. package/dist/components/mesh-gradient/MeshGradient.svelte.d.ts +2 -3
  104. package/dist/components/navbar/Navbar.svelte +149 -99
  105. package/dist/components/navbar/Navbar.svelte.d.ts +4 -2
  106. package/dist/components/navigation-menu/NavigationMenu.svelte +37 -20
  107. package/dist/components/navigation-menu/NavigationMenu.svelte.d.ts +4 -2
  108. package/dist/components/navigation-menu/NavigationMenuItem.svelte +131 -89
  109. package/dist/components/navigation-menu/NavigationMenuItem.svelte.d.ts +4 -2
  110. package/dist/components/navigation-menu/NavigationMenuLink.svelte +90 -51
  111. package/dist/components/navigation-menu/NavigationMenuLink.svelte.d.ts +7 -5
  112. package/dist/components/number-stepper/NumberStepper.svelte +39 -20
  113. package/dist/components/number-stepper/NumberStepper.svelte.d.ts +6 -1
  114. package/dist/components/popover/Popover.svelte +85 -65
  115. package/dist/components/popover/Popover.svelte.d.ts +5 -2
  116. package/dist/components/preview-card/PreviewCard.svelte +116 -98
  117. package/dist/components/preview-card/PreviewCard.svelte.d.ts +9 -6
  118. package/dist/components/progress/Progress.svelte +61 -38
  119. package/dist/components/progress/Progress.svelte.d.ts +2 -1
  120. package/dist/components/radio-group/RadioGroup.svelte +24 -19
  121. package/dist/components/radio-group/RadioGroup.svelte.d.ts +2 -1
  122. package/dist/components/radio-group/RadioGroupItem.svelte +101 -54
  123. package/dist/components/radio-group/RadioGroupItem.svelte.d.ts +2 -1
  124. package/dist/components/section/Section.svelte +114 -0
  125. package/dist/components/section/Section.svelte.d.ts +22 -0
  126. package/dist/components/select/Select.svelte +216 -133
  127. package/dist/components/select/Select.svelte.d.ts +11 -2
  128. package/dist/components/separator/Separator.svelte +21 -10
  129. package/dist/components/separator/Separator.svelte.d.ts +2 -1
  130. package/dist/components/sidebar/Sidebar.svelte +142 -108
  131. package/dist/components/sidebar/Sidebar.svelte.d.ts +6 -1
  132. package/dist/components/sidebar/SidebarContent.svelte +15 -12
  133. package/dist/components/sidebar/SidebarContent.svelte.d.ts +2 -1
  134. package/dist/components/sidebar/SidebarFooter.svelte +10 -7
  135. package/dist/components/sidebar/SidebarFooter.svelte.d.ts +2 -1
  136. package/dist/components/sidebar/SidebarGroup.svelte +35 -25
  137. package/dist/components/sidebar/SidebarGroup.svelte.d.ts +2 -1
  138. package/dist/components/sidebar/SidebarHeader.svelte +21 -16
  139. package/dist/components/sidebar/SidebarHeader.svelte.d.ts +6 -1
  140. package/dist/components/sidebar/SidebarInset.svelte +11 -8
  141. package/dist/components/sidebar/SidebarInset.svelte.d.ts +2 -1
  142. package/dist/components/sidebar/SidebarMenu.svelte +13 -10
  143. package/dist/components/sidebar/SidebarMenu.svelte.d.ts +2 -1
  144. package/dist/components/sidebar/SidebarMenuItem.svelte +195 -114
  145. package/dist/components/sidebar/SidebarMenuItem.svelte.d.ts +11 -5
  146. package/dist/components/sidebar/SidebarProvider.svelte +18 -9
  147. package/dist/components/sidebar/SidebarProvider.svelte.d.ts +2 -1
  148. package/dist/components/sidebar/SidebarSeparator.svelte +6 -1
  149. package/dist/components/sidebar/SidebarSeparator.svelte.d.ts +6 -17
  150. package/dist/components/sidebar/SidebarTrigger.svelte +17 -5
  151. package/dist/components/sidebar/SidebarTrigger.svelte.d.ts +4 -2
  152. package/dist/components/skeleton/Skeleton.svelte +26 -16
  153. package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -2
  154. package/dist/components/spinner/Spinner.svelte +71 -46
  155. package/dist/components/spinner/Spinner.svelte.d.ts +2 -1
  156. package/dist/components/switch/Switch.svelte +126 -65
  157. package/dist/components/switch/Switch.svelte.d.ts +4 -2
  158. package/dist/components/table/Table.svelte +135 -76
  159. package/dist/components/table/Table.svelte.d.ts +12 -2
  160. package/dist/components/tabs/Tabs.svelte +173 -116
  161. package/dist/components/tabs/Tabs.svelte.d.ts +10 -8
  162. package/dist/components/textarea/Textarea.svelte +76 -42
  163. package/dist/components/textarea/Textarea.svelte.d.ts +4 -1
  164. package/dist/components/time-picker/TimePicker.svelte +214 -85
  165. package/dist/components/time-picker/TimePicker.svelte.d.ts +18 -1
  166. package/dist/components/toaster/Toaster.svelte +132 -70
  167. package/dist/components/toaster/Toaster.svelte.d.ts +18 -2
  168. package/dist/components/toaster/toast.svelte.d.ts +3 -3
  169. package/dist/components/toggle/Toggle.svelte +25 -4
  170. package/dist/components/toggle/Toggle.svelte.d.ts +1 -1
  171. package/dist/components/tooltip/Tooltip.svelte +87 -58
  172. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -2
  173. package/dist/icon.d.ts +12 -0
  174. package/dist/icon.js +1 -0
  175. package/dist/index.d.ts +6 -0
  176. package/dist/index.js +5 -0
  177. package/dist/internal/icons/ArrowDown.svelte +14 -0
  178. package/dist/internal/icons/ArrowDown.svelte.d.ts +4 -0
  179. package/dist/internal/icons/ArrowUp.svelte +14 -0
  180. package/dist/internal/icons/ArrowUp.svelte.d.ts +4 -0
  181. package/dist/internal/icons/Calendar.svelte +16 -0
  182. package/dist/internal/icons/Calendar.svelte.d.ts +4 -0
  183. package/dist/internal/icons/Check.svelte +8 -0
  184. package/dist/internal/icons/Check.svelte.d.ts +4 -0
  185. package/dist/internal/icons/ChevronDown.svelte +8 -0
  186. package/dist/internal/icons/ChevronDown.svelte.d.ts +4 -0
  187. package/dist/internal/icons/ChevronLeft.svelte +8 -0
  188. package/dist/internal/icons/ChevronLeft.svelte.d.ts +4 -0
  189. package/dist/internal/icons/ChevronRight.svelte +8 -0
  190. package/dist/internal/icons/ChevronRight.svelte.d.ts +4 -0
  191. package/dist/internal/icons/ChevronUp.svelte +8 -0
  192. package/dist/internal/icons/ChevronUp.svelte.d.ts +4 -0
  193. package/dist/internal/icons/ChevronsUpDown.svelte +14 -0
  194. package/dist/internal/icons/ChevronsUpDown.svelte.d.ts +4 -0
  195. package/dist/internal/icons/Clock.svelte +14 -0
  196. package/dist/internal/icons/Clock.svelte.d.ts +4 -0
  197. package/dist/internal/icons/Ellipsis.svelte +15 -0
  198. package/dist/internal/icons/Ellipsis.svelte.d.ts +4 -0
  199. package/dist/internal/icons/Icon.svelte +33 -0
  200. package/dist/internal/icons/Icon.svelte.d.ts +8 -0
  201. package/dist/internal/icons/Minus.svelte +8 -0
  202. package/dist/internal/icons/Minus.svelte.d.ts +4 -0
  203. package/dist/internal/icons/PanelLeft.svelte +14 -0
  204. package/dist/internal/icons/PanelLeft.svelte.d.ts +4 -0
  205. package/dist/internal/icons/Plus.svelte +14 -0
  206. package/dist/internal/icons/Plus.svelte.d.ts +4 -0
  207. package/dist/internal/icons/User.svelte +14 -0
  208. package/dist/internal/icons/User.svelte.d.ts +4 -0
  209. package/dist/internal/icons/X.svelte +14 -0
  210. package/dist/internal/icons/X.svelte.d.ts +4 -0
  211. package/dist/styles/tokens.css +39 -41
  212. package/package.json +5 -10
  213. package/dist/icons.d.ts +0 -2
  214. package/dist/icons.js +0 -4
@@ -5,29 +5,32 @@
5
5
  type Props = Omit<HTMLFieldsetAttributes, 'children'> & {
6
6
  /** A FieldLegend, optionally a FieldDescription, then a FieldGroup. `disabled` disables every control inside. */
7
7
  children: Snippet;
8
+ ref?: HTMLFieldSetElement | null;
8
9
  };
9
10
 
10
- let { class: className, children, ...rest }: Props = $props();
11
+ let { class: className, children, ref = $bindable(null), ...rest }: Props = $props();
11
12
  </script>
12
13
 
13
- <fieldset {...rest} class={['field-set', className]}>
14
+ <fieldset {...rest} bind:this={ref} class={['field-set', className]}>
14
15
  {@render children()}
15
16
  </fieldset>
16
17
 
17
18
  <style>
18
- .field-set {
19
- display: flex;
20
- flex-direction: column;
21
- gap: 24px;
22
- min-width: 0;
23
- margin: 0;
24
- padding: 0;
25
- border: none;
26
- color: var(--color-text);
27
- }
19
+ @layer svelte-ui {
20
+ .field-set {
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: 24px;
24
+ min-width: 0;
25
+ margin: 0;
26
+ padding: 0;
27
+ border: none;
28
+ color: var(--color-text);
29
+ }
28
30
 
29
- /* The legend sits outside the flex layout, so only its own margin spaces it */
30
- .field-set > :global(.field-legend + .field-description) {
31
- margin-top: -8px;
31
+ /* The legend sits outside the flex layout, so only its own margin spaces it */
32
+ .field-set > :global(.field-legend + .field-description) {
33
+ margin-top: -8px;
34
+ }
32
35
  }
33
36
  </style>
@@ -3,7 +3,8 @@ import type { HTMLFieldsetAttributes } from 'svelte/elements';
3
3
  type Props = Omit<HTMLFieldsetAttributes, 'children'> & {
4
4
  /** A FieldLegend, optionally a FieldDescription, then a FieldGroup. `disabled` disables every control inside. */
5
5
  children: Snippet;
6
+ ref?: HTMLFieldSetElement | null;
6
7
  };
7
- declare const FieldSet: import("svelte").Component<Props, {}, "">;
8
+ declare const FieldSet: import("svelte").Component<Props, {}, "ref">;
8
9
  type FieldSet = ReturnType<typeof FieldSet>;
9
10
  export default FieldSet;
@@ -9,14 +9,22 @@
9
9
  copyright?: string;
10
10
  /** FooterColumns. */
11
11
  children?: Snippet;
12
+ ref?: HTMLElement | null;
12
13
  };
13
14
 
14
- let { title, copyright, class: className, children, ...rest }: Props = $props();
15
+ let {
16
+ title,
17
+ copyright,
18
+ class: className,
19
+ children,
20
+ ref = $bindable(null),
21
+ ...rest
22
+ }: Props = $props();
15
23
 
16
24
  const year = new Date().getFullYear();
17
25
  </script>
18
26
 
19
- <footer {...rest} class={['footer', className]}>
27
+ <footer {...rest} bind:this={ref} class={['footer', className]}>
20
28
  <div class="footer-panel">
21
29
  {#if title}
22
30
  <h2 class="footer-title">{title}</h2>
@@ -31,59 +39,67 @@
31
39
  </footer>
32
40
 
33
41
  <style>
34
- .footer {
35
- display: flex;
36
- flex-direction: column;
37
- gap: 20px;
38
- font-size: 14px;
39
- }
40
-
41
- .footer-panel {
42
- display: flex;
43
- flex-direction: column;
44
- gap: 40px;
45
- box-sizing: border-box;
46
- min-height: 256px;
47
- padding: 40px;
48
- color: #fff;
49
- background-color: #000;
50
- border-radius: 14px;
51
- }
52
-
53
- .footer-title {
54
- margin: 0;
55
- font-size: 24px;
56
- font-weight: 600;
57
- line-height: 1.25;
58
- white-space: pre-line;
59
- user-select: none;
60
- }
61
-
62
- .footer-columns {
63
- display: flex;
64
- flex-direction: column;
65
- gap: 40px;
66
- }
67
-
68
- .footer-copyright {
69
- margin: 0;
70
- text-align: center;
71
- color: var(--color-text-muted);
72
- user-select: none;
73
- }
42
+ @layer svelte-ui {
43
+ .footer {
44
+ display: flex;
45
+ flex-direction: column;
46
+ gap: 20px;
47
+ font-size: 14px;
48
+ }
74
49
 
75
- @media (min-width: 640px) {
76
50
  .footer-panel {
77
- flex-direction: row;
51
+ display: flex;
52
+ flex-direction: column;
53
+ gap: 40px;
54
+ box-sizing: border-box;
55
+ min-height: 256px;
56
+ padding: 40px;
57
+ color: var(--color-base);
58
+ background-color: var(--color-ink);
59
+ border-radius: 10px;
78
60
  }
79
61
 
80
62
  .footer-title {
81
- flex: 1;
63
+ margin: 0;
64
+ font-size: 24px;
65
+ font-weight: 600;
66
+ line-height: 1.25;
67
+ white-space: pre-line;
68
+ user-select: none;
82
69
  }
83
70
 
84
71
  .footer-columns {
85
- flex: 1;
86
- flex-direction: row;
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: 40px;
75
+ }
76
+
77
+ .footer-copyright {
78
+ margin: 0;
79
+ text-align: center;
80
+ color: var(--color-text-muted);
81
+ user-select: none;
82
+ }
83
+
84
+ @media (min-width: 640px) {
85
+ .footer-panel {
86
+ flex-direction: row;
87
+ }
88
+
89
+ .footer-title {
90
+ flex: 1;
91
+ }
92
+
93
+ .footer-columns {
94
+ flex: 1;
95
+ flex-direction: row;
96
+ }
97
+ }
98
+
99
+ @media (forced-colors: active) {
100
+ .footer-panel {
101
+ border: 1px solid CanvasText;
102
+ }
87
103
  }
88
104
  }
89
105
  </style>
@@ -7,7 +7,8 @@ type Props = Omit<HTMLAttributes<HTMLElement>, 'children' | 'title'> & {
7
7
  copyright?: string;
8
8
  /** FooterColumns. */
9
9
  children?: Snippet;
10
+ ref?: HTMLElement | null;
10
11
  };
11
- declare const Footer: import("svelte").Component<Props, {}, "">;
12
+ declare const Footer: import("svelte").Component<Props, {}, "ref">;
12
13
  type Footer = ReturnType<typeof Footer>;
13
14
  export default Footer;
@@ -6,29 +6,32 @@
6
6
  heading: string;
7
7
  /** Links, one per line. */
8
8
  children: Snippet;
9
+ ref?: HTMLDivElement | null;
9
10
  };
10
11
 
11
- let { heading, class: className, children, ...rest }: Props = $props();
12
+ let { heading, class: className, children, ref = $bindable(null), ...rest }: Props = $props();
12
13
  </script>
13
14
 
14
- <div {...rest} class={['footer-column', className]}>
15
+ <div {...rest} bind:this={ref} class={['footer-column', className]}>
15
16
  <span class="footer-column-heading">{heading}</span>
16
17
  {@render children()}
17
18
  </div>
18
19
 
19
20
  <style>
20
- .footer-column {
21
- display: flex;
22
- flex: 1;
23
- flex-direction: column;
24
- align-items: flex-start;
25
- gap: 8px;
26
- color: color-mix(in srgb, #fff, #000 17%);
27
- }
21
+ @layer svelte-ui {
22
+ .footer-column {
23
+ display: flex;
24
+ flex: 1;
25
+ flex-direction: column;
26
+ align-items: flex-start;
27
+ gap: 8px;
28
+ color: color-mix(in srgb, var(--color-base), var(--color-ink) 17%);
29
+ }
28
30
 
29
- .footer-column-heading {
30
- font-weight: 600;
31
- color: #fff;
32
- user-select: none;
31
+ .footer-column-heading {
32
+ font-weight: 600;
33
+ color: var(--color-base);
34
+ user-select: none;
35
+ }
33
36
  }
34
37
  </style>
@@ -4,7 +4,8 @@ type Props = Omit<HTMLAttributes<HTMLDivElement>, 'children'> & {
4
4
  heading: string;
5
5
  /** Links, one per line. */
6
6
  children: Snippet;
7
+ ref?: HTMLDivElement | null;
7
8
  };
8
- declare const FooterColumn: import("svelte").Component<Props, {}, "">;
9
+ declare const FooterColumn: import("svelte").Component<Props, {}, "ref">;
9
10
  type FooterColumn = ReturnType<typeof FooterColumn>;
10
11
  export default FooterColumn;
@@ -0,0 +1,61 @@
1
+ <script lang="ts">
2
+ import type { HTMLImgAttributes } from 'svelte/elements';
3
+
4
+ type Props = Omit<HTMLImgAttributes, 'alt' | 'src'> & {
5
+ /** The img element. Bindable. */
6
+ ref?: HTMLImageElement | null;
7
+ src: string;
8
+ /** Describes the image; use `""` for purely decorative images. */
9
+ alt: string;
10
+ /**
11
+ * Crops the image to this CSS aspect ratio, e.g. `1` or `16 / 9`. Without it the image keeps
12
+ * its natural ratio. Pass `width` and `height` to reserve the space before it loads.
13
+ */
14
+ ratio?: string | number;
15
+ /** How the image fills the frame when `ratio` crops it. */
16
+ fit?: 'cover' | 'contain';
17
+ };
18
+
19
+ let {
20
+ ref = $bindable(null),
21
+ src,
22
+ alt,
23
+ ratio,
24
+ fit = 'cover',
25
+ loading = 'lazy',
26
+ decoding = 'async',
27
+ class: className,
28
+ ...rest
29
+ }: Props = $props();
30
+ </script>
31
+
32
+ <img
33
+ {...rest}
34
+ bind:this={ref}
35
+ {src}
36
+ {alt}
37
+ {loading}
38
+ {decoding}
39
+ class={['image', `image--${fit}`, className]}
40
+ style:aspect-ratio={ratio}
41
+ />
42
+
43
+ <style>
44
+ @layer svelte-ui {
45
+ .image {
46
+ display: block;
47
+ max-width: 100%;
48
+ height: auto;
49
+ background-color: var(--color-surface);
50
+ border-radius: 10px;
51
+ }
52
+
53
+ .image--cover {
54
+ object-fit: cover;
55
+ }
56
+
57
+ .image--contain {
58
+ object-fit: contain;
59
+ }
60
+ }
61
+ </style>
@@ -0,0 +1,18 @@
1
+ import type { HTMLImgAttributes } from 'svelte/elements';
2
+ type Props = Omit<HTMLImgAttributes, 'alt' | 'src'> & {
3
+ /** The img element. Bindable. */
4
+ ref?: HTMLImageElement | null;
5
+ src: string;
6
+ /** Describes the image; use `""` for purely decorative images. */
7
+ alt: string;
8
+ /**
9
+ * Crops the image to this CSS aspect ratio, e.g. `1` or `16 / 9`. Without it the image keeps
10
+ * its natural ratio. Pass `width` and `height` to reserve the space before it loads.
11
+ */
12
+ ratio?: string | number;
13
+ /** How the image fills the frame when `ratio` crops it. */
14
+ fit?: 'cover' | 'contain';
15
+ };
16
+ declare const Image: import("svelte").Component<Props, {}, "ref">;
17
+ type Image = ReturnType<typeof Image>;
18
+ export default Image;