contain-css-svelte 0.0.18 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/Card.svelte +36 -21
  2. package/dist/Card.svelte.d.ts +14 -27
  3. package/dist/controls/Button.svelte +31 -27
  4. package/dist/controls/Button.svelte.d.ts +16 -32
  5. package/dist/controls/ButtonLink.svelte +57 -48
  6. package/dist/controls/ButtonLink.svelte.d.ts +18 -34
  7. package/dist/controls/Checkbox.svelte +37 -50
  8. package/dist/controls/Checkbox.svelte.d.ts +13 -34
  9. package/dist/controls/Input.svelte +6 -11
  10. package/dist/controls/Input.svelte.d.ts +8 -23
  11. package/dist/controls/MiniButton.svelte +69 -30
  12. package/dist/controls/MiniButton.svelte.d.ts +14 -31
  13. package/dist/controls/Option.svelte +15 -0
  14. package/dist/controls/Option.svelte.d.ts +8 -0
  15. package/dist/controls/RadioButton.svelte +24 -25
  16. package/dist/controls/RadioButton.svelte.d.ts +11 -25
  17. package/dist/controls/Select.svelte +47 -20
  18. package/dist/controls/Select.svelte.d.ts +8 -21
  19. package/dist/controls/Slider.svelte +4 -6
  20. package/dist/controls/Slider.svelte.d.ts +7 -31
  21. package/dist/controls/TabItem.svelte +16 -22
  22. package/dist/controls/TabItem.svelte.d.ts +11 -29
  23. package/dist/dropdowns/DropdownMenu.svelte +76 -22
  24. package/dist/dropdowns/DropdownMenu.svelte.d.ts +10 -19
  25. package/dist/index.d.ts +10 -4
  26. package/dist/index.js +9 -4
  27. package/dist/layout/Accordion.svelte +34 -19
  28. package/dist/layout/Accordion.svelte.d.ts +6 -17
  29. package/dist/layout/Bar.svelte +15 -14
  30. package/dist/layout/Bar.svelte.d.ts +9 -27
  31. package/dist/layout/Column.svelte +3 -3
  32. package/dist/layout/Column.svelte.d.ts +7 -18
  33. package/dist/layout/Columns.svelte +3 -2
  34. package/dist/layout/Columns.svelte.d.ts +5 -26
  35. package/dist/layout/Container.svelte +36 -29
  36. package/dist/layout/Container.svelte.d.ts +14 -26
  37. package/dist/layout/Fieldset.svelte +98 -0
  38. package/dist/layout/Fieldset.svelte.d.ts +21 -0
  39. package/dist/layout/Form.svelte +70 -0
  40. package/dist/layout/Form.svelte.d.ts +24 -0
  41. package/dist/layout/FormItem.svelte +100 -18
  42. package/dist/layout/FormItem.svelte.d.ts +16 -37
  43. package/dist/layout/FormProvider.svelte +24 -0
  44. package/dist/layout/FormProvider.svelte.d.ts +13 -0
  45. package/dist/layout/GridLayout.svelte +3 -3
  46. package/dist/layout/GridLayout.svelte.d.ts +6 -17
  47. package/dist/layout/Hero.svelte +36 -24
  48. package/dist/layout/Hero.svelte.d.ts +9 -23
  49. package/dist/layout/MenuList.svelte +31 -23
  50. package/dist/layout/MenuList.svelte.d.ts +10 -30
  51. package/dist/layout/Page.svelte +37 -36
  52. package/dist/layout/Page.svelte.d.ts +16 -32
  53. package/dist/layout/ResponsiveText.svelte +39 -48
  54. package/dist/layout/ResponsiveText.svelte.d.ts +13 -26
  55. package/dist/layout/Row.svelte +5 -3
  56. package/dist/layout/Row.svelte.d.ts +7 -18
  57. package/dist/layout/Sidebar.svelte +24 -12
  58. package/dist/layout/Sidebar.svelte.d.ts +31 -21
  59. package/dist/layout/SplitPane.svelte +14 -13
  60. package/dist/layout/SplitPane.svelte.d.ts +19 -19
  61. package/dist/layout/TabBar.svelte +23 -14
  62. package/dist/layout/TabBar.svelte.d.ts +12 -26
  63. package/dist/layout/Table.svelte +242 -89
  64. package/dist/layout/Table.svelte.d.ts +9 -20
  65. package/dist/layout/Tile.svelte +53 -29
  66. package/dist/layout/Tile.svelte.d.ts +23 -26
  67. package/dist/misc/Code.svelte +6 -6
  68. package/dist/misc/Code.svelte.d.ts +7 -17
  69. package/dist/misc/CodeInner.svelte +20 -4
  70. package/dist/misc/CodeInner.svelte.d.ts +7 -17
  71. package/dist/misc/Progress.svelte +85 -71
  72. package/dist/misc/Progress.svelte.d.ts +36 -24
  73. package/dist/misc/Tag.svelte +24 -13
  74. package/dist/misc/Tag.svelte.d.ts +14 -24
  75. package/dist/overlays/Dialog.svelte +18 -21
  76. package/dist/overlays/Dialog.svelte.d.ts +12 -22
  77. package/dist/overlays/Tooltip.svelte +46 -24
  78. package/dist/overlays/Tooltip.svelte.d.ts +9 -20
  79. package/dist/sass/_affordances.scss +1 -1
  80. package/dist/sass/_box.scss +10 -0
  81. package/dist/sass/_color.scss +9 -7
  82. package/dist/sass/_typography.scss +5 -1
  83. package/dist/types.d.ts +63 -0
  84. package/dist/types.js +5 -0
  85. package/dist/typography/TextLayout.svelte +32 -24
  86. package/dist/typography/TextLayout.svelte.d.ts +6 -26
  87. package/dist/util.d.ts +1 -1
  88. package/dist/vars/affordances.css +1 -0
  89. package/dist/vars/defaults.css +1 -0
  90. package/dist/vars/themes/dark.css +2 -2
  91. package/package.json +20 -12
package/dist/Card.svelte CHANGED
@@ -1,34 +1,31 @@
1
- <script>import { injectVars } from "./util";
2
- export let center = false;
3
- export let fixedHeight = false;
4
- export let bg = null;
5
- export let fg = null;
6
- export let padding = null;
7
- export let width = null;
8
- export let height = null;
9
- let cssVars = injectVars($$props, "card", [
1
+ <script lang="ts">import { injectVars } from "./util";
2
+ let { header, footer, children, height = "", fixedHeight, center, ...restProps } = $props();
3
+ let cssVars = injectVars({ height, ...restProps }, "card", [
10
4
  "bg",
11
5
  "fg",
12
6
  "padding",
13
7
  "width",
14
8
  "height",
15
9
  ]);
16
- $: if (height) {
17
- fixedHeight = true;
18
- }
19
- let hasHeader = $$slots.header;
20
- let hasFooter = $$slots.footer;
10
+ const forceFixedHeight = (h) => {
11
+ if (h && !fixedHeight) {
12
+ fixedHeight = true;
13
+ }
14
+ };
15
+ $effect(() => forceFixedHeight(height));
16
+ let hasHeader = $derived(Boolean(header));
17
+ let hasFooter = $derived(Boolean(footer));
21
18
  </script>
22
19
 
23
20
  <div class="card" class:center class:fixedHeight style={cssVars}>
24
21
  <header class:hide={!hasHeader}>
25
- <slot name="header" />
22
+ {#if header}{@render header()}{/if}
26
23
  </header>
27
24
  <section>
28
- <slot />
25
+ {#if children}{@render children()}{/if}
29
26
  </section>
30
27
  <footer class:hide={!hasFooter}>
31
- <slot name="footer" />
28
+ {#if footer}{@render footer()}{/if}
32
29
  </footer>
33
30
  </div>
34
31
 
@@ -47,6 +44,8 @@ let hasFooter = $$slots.footer;
47
44
  color: var(--card-fg, var(--container-fg, var(--fg, unset)));
48
45
  --link-bg: var(--card-link-bg, var(--container-link-bg, var(--container-link-bg, inherit)));
49
46
  --link-fg: var(--card-link-fg, var(--container-link-fg, var(--container-link-fg, inherit)));
47
+ --fg: var(--card-fg, var(--container-fg, var(--fg, unset)));
48
+ --bg: var(--card-bg, var(--container-bg, var(--bg, unset)));
50
49
  border-radius: var(--card-border-radius, var(--container-border-radius, var(--border-radius, 0)));
51
50
  border: var(--card-border, var(--container-border, var(--border, var(--border-width) var(--border-style) var(--border-color))));
52
51
  display: flex;
@@ -73,6 +72,7 @@ let hasFooter = $$slots.footer;
73
72
  font-variant: var(--card-font-variant, var(--container-font-variant, var(--font-variant, unset)));
74
73
  text-align: var(--card-text-align, var(--container-text-align, var(--text-align, unset)));
75
74
  }
75
+
76
76
  .card section :global(p),
77
77
  .card section :global(blockquote),
78
78
  .card section :global(dl),
@@ -85,16 +85,15 @@ let hasFooter = $$slots.footer;
85
85
  margin-right: auto;
86
86
  font-weight: var(--card-body-font-weight, var(--container-body-font-weight, var(--body-font-weight, unset)));
87
87
  }
88
+
88
89
  .card section :global(h1),
89
90
  .card section :global(h2),
90
91
  .card section :global(h3),
91
92
  .card section :global(h4),
92
93
  .card section :global(h5),
93
94
  .card section :global(h6) {
94
- background: var(--heading-bg, var(--bg, unset));
95
- color: var(--heading-fg, var(--fg, unset));
96
- --link-bg: var(--heading-link-bg, var(--heading-link-bg, inherit));
97
- --link-fg: var(--heading-link-fg, var(--heading-link-fg, inherit));
95
+ color: var(--card-heading-fg, var(--container-heading-fg, var(--heading-fg, unset)));
96
+ background: var(--card-heading-bg, var(--container-heading-bg, var(--heading-bg, transparent)));
98
97
  max-width: var(--card-line-width, var(--container-line-width, var(--line-width, unset)));
99
98
  margin-left: auto;
100
99
  margin-right: auto;
@@ -120,6 +119,7 @@ let hasFooter = $$slots.footer;
120
119
  font-variant: fn.var(--heading-font-variant, var(--body-font-variant, var(--font-variant, inherit)));
121
120
  text-align: fn.var(--heading-text-align, var(--body-text-align, var(--text-align, inherit))); */
122
121
  }
122
+
123
123
  .card section :global(p) {
124
124
  font-family: var(--card-paragraph-font-family, var(--container-paragraph-font-family, var(--paragraph-font-family, var(--paragraph-font-family, inherit))));
125
125
  text-transform: var(--card-paragraph-text-transform, var(--container-paragraph-text-transform, var(--paragraph-text-transform, var(--paragraph-text-transform, inherit))));
@@ -132,6 +132,7 @@ let hasFooter = $$slots.footer;
132
132
  font-variant: var(--card-paragraph-font-variant, var(--container-paragraph-font-variant, var(--paragraph-font-variant, var(--paragraph-font-variant, inherit))));
133
133
  text-align: var(--card-paragraph-text-align, var(--container-paragraph-text-align, var(--paragraph-text-align, var(--paragraph-text-align, inherit))));
134
134
  }
135
+
135
136
  .card section :global(p:first-of-type),
136
137
  .card section :global(h1 + p),
137
138
  .card section :global(h2 + p),
@@ -151,6 +152,7 @@ let hasFooter = $$slots.footer;
151
152
  text-align: var(--card-first-paragraph-text-align, var(--container-first-paragraph-text-align, var(--first-paragraph-text-align, var(--first-paragraph-text-align, inherit))));
152
153
  margin-block-start: var(--card-first-paragraph-margin-top, var(--container-first-paragraph-margin-top, var(--first-paragraph-margin-top, 0)));
153
154
  }
155
+
154
156
  .card section :global(p:first-of-type::first-line) {
155
157
  font-family: var(--first-line-font-family, var(--card-first-line-font-family, var(--container-first-line-font-family, var(--first-line-font-family, var(--first-line-font-family, inherit)))));
156
158
  text-transform: var(--first-line-text-transform, var(--card-first-line-text-transform, var(--container-first-line-text-transform, var(--first-line-text-transform, var(--first-line-text-transform, inherit)))));
@@ -163,6 +165,7 @@ let hasFooter = $$slots.footer;
163
165
  font-variant: var(--first-line-font-variant, var(--card-first-line-font-variant, var(--container-first-line-font-variant, var(--first-line-font-variant, var(--first-line-font-variant, inherit)))));
164
166
  text-align: var(--first-line-text-align, var(--card-first-line-text-align, var(--container-first-line-text-align, var(--first-line-text-align, var(--first-line-text-align, inherit)))));
165
167
  }
168
+
166
169
  .card section :global(p:first-of-type::first-letter) {
167
170
  font-family: var(--first-letter-font-family, var(--card-first-letter-font-family, var(--container-first-letter-font-family, var(--container-first-letter-font-family, inherit))));
168
171
  text-transform: var(--first-letter-text-transform, var(--card-first-letter-text-transform, var(--container-first-letter-text-transform, var(--container-first-letter-text-transform, inherit))));
@@ -217,24 +220,30 @@ let hasFooter = $$slots.footer;
217
220
  scrollbar-width: thin;
218
221
  scrollbar-color: transparent transparent;
219
222
  }
223
+
220
224
  .card.fixedHeight::-webkit-scrollbar {
221
225
  width: var(--card-scrollbar-width, var(--container-scrollbar-width, var(--scrollbar-width, 6px)));
222
226
  height: var(--card-scrollbar-height, var(--container-scrollbar-height, var(--scrollbar-height, 6px)));
223
227
  }
228
+
224
229
  .card.fixedHeight::-webkit-scrollbar-track {
225
230
  background: var(--card-scrollbar-track-bg, var(--container-scrollbar-track-bg, var(--scrollbar-track-bg, transparent)));
226
231
  }
232
+
227
233
  .card.fixedHeight::-webkit-scrollbar-thumb {
228
234
  background: transparent;
229
235
  border-radius: var(--card-scrollbar-thumb-radius, var(--container-scrollbar-thumb-radius, var(--scrollbar-thumb-radius, 3px)));
230
236
  transition: background var(--card-transition, var(--container-transition, var(--transition, 300ms)));
231
237
  }
238
+
232
239
  .card.fixedHeight:hover {
233
240
  scrollbar-color: var(--card-scrollbar-thumb-bg, var(--container-scrollbar-thumb-bg, var(--scrollbar-thumb-bg, rgba(0, 0, 0, 0.3)))) var(--card-scrollbar-track-bg, var(--container-scrollbar-track-bg, var(--scrollbar-track-bg, transparent)));
234
241
  }
242
+
235
243
  .card.fixedHeight:hover::-webkit-scrollbar-thumb {
236
244
  background: var(--card-scrollbar-thumb-bg, var(--container-scrollbar-thumb-bg, var(--scrollbar-thumb-bg, rgba(0, 0, 0, 0.3))));
237
245
  }
246
+
238
247
  .card.fixedHeight:hover::-webkit-scrollbar-thumb:hover {
239
248
  background: var(--card-scrollbar-thumb-hover-bg, var(--container-scrollbar-thumb-hover-bg, var(--scrollbar-thumb-hover-bg, rgba(0, 0, 0, 0.5))));
240
249
  }
@@ -252,6 +261,8 @@ header {
252
261
  color: var(--card-header-fg, var(--secondary-fg, var(--fg, unset)));
253
262
  --link-bg: var(--card-header-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)));
254
263
  --link-fg: var(--card-header-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)));
264
+ --fg: var(--card-header-fg, var(--secondary-fg, var(--fg, unset)));
265
+ --bg: var(--card-header-bg, var(--secondary-bg, var(--bg, unset)));
255
266
  box-sizing: border-box;
256
267
  padding: var(--card-header-padding, var(--bar-padding, var(--padding, 4px)));
257
268
  border: var(--card-header-border, var(--bar-border, var(--border, inherit)));
@@ -284,6 +295,8 @@ footer :global(h6) {
284
295
  color: var(--card-header-fg, var(--secondary-fg, var(--fg, unset)));
285
296
  --link-bg: var(--card-header-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)));
286
297
  --link-fg: var(--card-header-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)));
298
+ --fg: var(--card-header-fg, var(--secondary-fg, var(--fg, unset)));
299
+ --bg: var(--card-header-bg, var(--secondary-bg, var(--bg, unset)));
287
300
  }
288
301
 
289
302
  footer {
@@ -291,6 +304,8 @@ footer {
291
304
  color: var(--card-footer-fg, var(--secondary-fg, var(--fg, unset)));
292
305
  --link-bg: var(--card-footer-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)));
293
306
  --link-fg: var(--card-footer-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)));
307
+ --fg: var(--card-footer-fg, var(--secondary-fg, var(--fg, unset)));
308
+ --bg: var(--card-footer-bg, var(--secondary-bg, var(--bg, unset)));
294
309
  box-sizing: border-box;
295
310
  padding: var(--card-footer-padding, var(--bar-padding, var(--padding, 4px)));
296
311
  border: var(--card-footer-border, var(--bar-border, var(--border, inherit)));
@@ -1,27 +1,14 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- center?: boolean | undefined;
6
- fixedHeight?: boolean | undefined;
7
- bg?: string | null | undefined;
8
- fg?: string | null | undefined;
9
- padding?: string | null | undefined;
10
- width?: string | null | undefined;
11
- height?: string | null | undefined;
12
- };
13
- events: {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {
17
- header: {};
18
- default: {};
19
- footer: {};
20
- };
21
- };
22
- export type CardProps = typeof __propDef.props;
23
- export type CardEvents = typeof __propDef.events;
24
- export type CardSlots = typeof __propDef.slots;
25
- export default class Card extends SvelteComponentTyped<CardProps, CardEvents, CardSlots> {
26
- }
27
- export {};
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes } from "svelte/elements";
3
+ import type { CardStyleProps } from "./types";
4
+ type Props = {
5
+ header?: Snippet;
6
+ footer?: Snippet;
7
+ children?: Snippet;
8
+ center?: boolean;
9
+ height?: string;
10
+ fixedHeight?: boolean;
11
+ } & CardStyleProps & HTMLAttributes<HTMLElement>;
12
+ declare const Card: import("svelte").Component<Props, {}, "">;
13
+ type Card = ReturnType<typeof Card>;
14
+ export default Card;
@@ -1,28 +1,11 @@
1
- <script>import { injectVars } from "../util";
2
- export let primary = false;
3
- export let secondary = false;
4
- export let warning = false;
5
- export let danger = false;
6
- export let success = false;
7
- export let info = false;
8
- let iconSlotted = $$slots.icon;
9
- export let bg = null;
10
- export let fg = null;
11
- export let padding = null;
12
- export let width = null;
13
- export let height = null;
14
- let cssVars = injectVars($$props, "button", [
15
- "bg",
16
- "fg",
17
- "padding",
18
- "width",
19
- "height",
20
- ]);
1
+ <script lang="ts">import { injectVars } from "../util";
2
+ let { primary = false, secondary = false, warning = false, danger = false, success = false, info = false, icon, children, ...restProps } = $props();
3
+ const style = $derived(injectVars(restProps, "button", ["bg", "fg", "padding", "width", "height"]));
4
+ const iconSlotted = $derived(Boolean(icon));
21
5
  </script>
22
6
 
23
7
  <button
24
- style={cssVars}
25
- on:click
8
+ {style}
26
9
  class:primary
27
10
  class:secondary
28
11
  class:warning
@@ -30,10 +13,12 @@ let cssVars = injectVars($$props, "button", [
30
13
  class:success
31
14
  class:info
32
15
  class:has-icon={iconSlotted}
33
- {...$$restProps}
16
+ {...restProps}
34
17
  >
35
- <span class="content"><slot /></span>
36
- <span class:hidden={!iconSlotted} class="icon"><slot name="icon" /></span>
18
+ <span class="content">{@render children?.()}</span>
19
+ <span class:hidden={!iconSlotted} class="icon">
20
+ {@render icon?.()}
21
+ </span>
37
22
  </button>
38
23
 
39
24
  <style>/* Warning: because we define a fallback
@@ -69,6 +54,8 @@ button {
69
54
  color: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
70
55
  --link-bg: var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit))));
71
56
  --link-fg: var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit))));
57
+ --fg: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
58
+ --bg: var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset))));
72
59
  box-shadow: var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space)))) var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space)))) var(--button-shadow-blur, var(--control-shadow-blur, var(--shadow-blur, var(--space)))) var(--button-shadow-color, var(--control-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4))));
73
60
  font-family: var(--button-font-family, var(--control-font-family, var(--control-font-family, inherit)));
74
61
  text-transform: var(--button-text-transform, var(--control-text-transform, var(--control-text-transform, inherit)));
@@ -82,32 +69,41 @@ button {
82
69
  text-align: var(--button-text-align, var(--control-text-align, var(--control-text-align, inherit)));
83
70
  cursor: var(--button-cursor, var(--clickable-cursor, var(--cursor, pointer)));
84
71
  transition: filter, transform var(--button-transition, var(--clickable-transition, var(--transition, 300ms)));
85
- margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
86
72
  }
73
+
87
74
  button:hover {
88
- filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.4))));
75
+ filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.05))));
89
76
  transform: var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, none)));
90
77
  }
78
+
91
79
  button:active {
92
80
  filter: var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
93
81
  transform: var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
94
82
  }
83
+
95
84
  button:disabled {
96
85
  cursor: var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
97
86
  transform: var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
98
87
  filter: var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
99
88
  }
89
+
100
90
  button:focus-visible {
101
91
  outline: var(--focus-color, -webkit-focus-ring-color) auto 1px;
102
92
  outline-offset: var(--focus-outline-offset, 2px);
103
93
  box-shadow: var(--focus-ring-box-shadow, 0 0 0 3px var(--focus-shadow-color, rgba(100, 150, 250, 0.5)));
104
94
  }
105
95
 
96
+ button {
97
+ margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
98
+ }
99
+
106
100
  button.primary {
107
101
  background: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
108
102
  color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
109
103
  --link-bg: var(--primary-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
110
104
  --link-fg: var(--primary-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
105
+ --fg: var(--primary-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
106
+ --bg: var(--primary-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
111
107
  font-family: var(--primary-font-family, var(--button-font-family, var(--button-font-family, inherit)));
112
108
  text-transform: var(--primary-text-transform, var(--button-text-transform, var(--button-text-transform, inherit)));
113
109
  text-decoration: var(--primary-text-decoration, var(--button-text-decoration, var(--button-text-decoration, inherit)));
@@ -125,6 +121,8 @@ button.warning {
125
121
  color: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
126
122
  --link-bg: var(--warning-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
127
123
  --link-fg: var(--warning-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
124
+ --fg: var(--warning-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
125
+ --bg: var(--warning-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
128
126
  font-family: var(--warning-font-family, var(--button-font-family, var(--button-font-family, inherit)));
129
127
  text-transform: var(--warning-text-transform, var(--button-text-transform, var(--button-text-transform, inherit)));
130
128
  text-decoration: var(--warning-text-decoration, var(--button-text-decoration, var(--button-text-decoration, inherit)));
@@ -142,6 +140,8 @@ button.danger {
142
140
  color: var(--danger-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
143
141
  --link-bg: var(--danger-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
144
142
  --link-fg: var(--danger-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
143
+ --fg: var(--danger-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
144
+ --bg: var(--danger-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
145
145
  font-family: var(--danger-font-family, var(--button-font-family, var(--button-font-family, inherit)));
146
146
  text-transform: var(--danger-text-transform, var(--button-text-transform, var(--button-text-transform, inherit)));
147
147
  text-decoration: var(--danger-text-decoration, var(--button-text-decoration, var(--button-text-decoration, inherit)));
@@ -159,6 +159,8 @@ button.success {
159
159
  color: var(--success-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
160
160
  --link-bg: var(--success-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
161
161
  --link-fg: var(--success-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
162
+ --fg: var(--success-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
163
+ --bg: var(--success-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
162
164
  font-family: var(--success-font-family, var(--button-font-family, var(--button-font-family, inherit)));
163
165
  text-transform: var(--success-text-transform, var(--button-text-transform, var(--button-text-transform, inherit)));
164
166
  text-decoration: var(--success-text-decoration, var(--button-text-decoration, var(--button-text-decoration, inherit)));
@@ -176,6 +178,8 @@ button.info {
176
178
  color: var(--info-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
177
179
  --link-bg: var(--info-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
178
180
  --link-fg: var(--info-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
181
+ --fg: var(--info-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
182
+ --bg: var(--info-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
179
183
  font-family: var(--info-font-family, var(--button-font-family, var(--button-font-family, inherit)));
180
184
  text-transform: var(--info-text-transform, var(--button-text-transform, var(--button-text-transform, inherit)));
181
185
  text-decoration: var(--info-text-decoration, var(--button-text-decoration, var(--button-text-decoration, inherit)));
@@ -1,32 +1,16 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- primary?: boolean | undefined;
6
- secondary?: boolean | undefined;
7
- warning?: boolean | undefined;
8
- danger?: boolean | undefined;
9
- success?: boolean | undefined;
10
- info?: boolean | undefined;
11
- bg?: string | null | undefined;
12
- fg?: string | null | undefined;
13
- padding?: string | null | undefined;
14
- width?: string | null | undefined;
15
- height?: string | null | undefined;
16
- };
17
- events: {
18
- click: MouseEvent;
19
- } & {
20
- [evt: string]: CustomEvent<any>;
21
- };
22
- slots: {
23
- default: {};
24
- icon: {};
25
- };
26
- };
27
- export type ButtonProps = typeof __propDef.props;
28
- export type ButtonEvents = typeof __propDef.events;
29
- export type ButtonSlots = typeof __propDef.slots;
30
- export default class Button extends SvelteComponentTyped<ButtonProps, ButtonEvents, ButtonSlots> {
31
- }
32
- export {};
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLButtonAttributes } from "svelte/elements";
3
+ import type { BaseStyleProps } from "../types";
4
+ type Props = {
5
+ primary?: boolean;
6
+ secondary?: boolean;
7
+ warning?: boolean;
8
+ danger?: boolean;
9
+ success?: boolean;
10
+ info?: boolean;
11
+ icon?: Snippet;
12
+ children?: Snippet;
13
+ } & BaseStyleProps & HTMLButtonAttributes;
14
+ declare const Button: import("svelte").Component<Props, {}, "">;
15
+ type Button = ReturnType<typeof Button>;
16
+ export default Button;
@@ -1,38 +1,21 @@
1
- <script>import { injectVars } from "../util";
2
- export let primary = false;
3
- export let secondary = false;
4
- export let warning = false;
5
- export let danger = false;
6
- export let success = false;
7
- export let info = false;
8
- let iconSlotted = $$slots.icon;
9
- /* svelte-ignore unused-export-let */
10
- export let bg = null;
11
- /* svelte-ignore unused-export-let */
12
- export let fg = null;
13
- /* svelte-ignore unused-export-let */
14
- export let padding = null;
15
- /* svelte-ignore unused-export-let */
16
- export let width = null;
17
- /* svelte-ignore unused-export-let */
18
- export let height = null;
19
- let cssVars = injectVars($$props, "button", [
1
+ <script lang="ts">import { injectVars } from "../util";
2
+ let { primary = false, secondary = false, warning = false, danger = false, success = false, info = false, href = "#", id = null, icon, children, ...restProps } = $props();
3
+ const { style: inlineStyle, ...elementProps } = restProps;
4
+ const style = $derived(`${injectVars(elementProps, "button", [
20
5
  "bg",
21
6
  "fg",
22
7
  "padding",
23
8
  "width",
24
9
  "height",
25
- ]);
26
- export let href = "#";
27
- export let id = null;
10
+ ])}${inlineStyle ?? ""}`);
11
+ const iconSlotted = $derived(Boolean(icon));
28
12
  </script>
29
13
 
30
14
  <a
31
15
  role="button"
32
- style={cssVars}
33
- on:click
16
+ {style}
34
17
  {href}
35
- {id}
18
+ id={id ?? undefined}
36
19
  class:primary
37
20
  class:secondary
38
21
  class:warning
@@ -40,10 +23,12 @@ export let id = null;
40
23
  class:success
41
24
  class:info
42
25
  class:has-icon={iconSlotted}
43
- {...$$restProps}
26
+ {...elementProps}
44
27
  >
45
- <span class="content"><slot /></span>
46
- <span class:hidden={!iconSlotted} class="icon"><slot name="icon" /></span>
28
+ <span class="content">{@render children?.()}</span>
29
+ <span class:hidden={!iconSlotted} class="icon">
30
+ {@render icon?.()}
31
+ </span>
47
32
  </a>
48
33
 
49
34
  <style>/* Warning: because we define a fallback
@@ -80,6 +65,8 @@ a[role=button] {
80
65
  color: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
81
66
  --link-bg: var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit))));
82
67
  --link-fg: var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit))));
68
+ --fg: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
69
+ --bg: var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset))));
83
70
  box-shadow: var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space)))) var(--button-shadow-distance, var(--control-shadow-distance, var(--shadow-distance, var(--space)))) var(--button-shadow-blur, var(--control-shadow-blur, var(--shadow-blur, var(--space)))) var(--button-shadow-color, var(--control-shadow-color, var(--shadow-color, rgba(127, 127, 127, 0.4))));
84
71
  font-family: var(--button-font-family, var(--control-font-family, var(--control-font-family, inherit)));
85
72
  text-transform: var(--button-text-transform, var(--control-text-transform, var(--control-text-transform, inherit)));
@@ -93,35 +80,45 @@ a[role=button] {
93
80
  text-align: var(--button-text-align, var(--control-text-align, var(--control-text-align, inherit)));
94
81
  cursor: var(--button-cursor, var(--clickable-cursor, var(--cursor, pointer)));
95
82
  transition: filter, transform var(--button-transition, var(--clickable-transition, var(--transition, 300ms)));
96
- text-decoration: none;
97
- margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
98
83
  }
84
+
99
85
  a[role=button]:hover {
100
- filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.4))));
86
+ filter: var(--button-hover-filter, var(--clickable-hover-filter, var(--hover-filter, brightness(1.05))));
101
87
  transform: var(--button-hover-transform, var(--clickable-hover-transform, var(--hover-transform, none)));
102
88
  }
89
+
103
90
  a[role=button]:active {
104
91
  filter: var(--button-active-filter, var(--clickable-active-filter, var(--active-filter, brightness(0.9))));
105
92
  transform: var(--button-active-transform, var(--clickable-active-transform, var(--active-transform, none)));
106
93
  }
94
+
107
95
  a[role=button]:disabled {
108
96
  cursor: var(--button-disabled-cursor, var(--clickable-disabled-cursor, var(--disabled-cursor, not-allowed)));
109
97
  transform: var(--button-disabled-transform, var(--clickable-disabled-transform, var(--disabled-transform, none)));
110
98
  filter: var(--button-disabled-filter, var(--clickable-disabled-filter, var(--disabled-filter, grayscale(0.5))));
111
99
  }
100
+
112
101
  a[role=button]:focus-visible {
113
102
  outline: var(--focus-color, -webkit-focus-ring-color) auto 1px;
114
103
  outline-offset: var(--focus-outline-offset, 2px);
115
104
  box-shadow: var(--focus-ring-box-shadow, 0 0 0 3px var(--focus-shadow-color, rgba(100, 150, 250, 0.5)));
116
105
  }
117
106
 
107
+ a[role=button] {
108
+ text-decoration: none;
109
+ margin: var(--button-margin, var(--control-margin, var(--margin, var(--space))));
110
+ }
111
+
118
112
  a[role=button]:hover {
119
113
  text-decoration: none;
120
- /* Override other link styles that may be outside us */
114
+ /* Override other link styles that may be outside
115
+ us */
121
116
  background: var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset))));
122
117
  color: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
123
118
  --link-bg: var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit))));
124
119
  --link-fg: var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit))));
120
+ --fg: var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset))));
121
+ --bg: var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset))));
125
122
  }
126
123
 
127
124
  a.primary[role=button]:hover {
@@ -129,6 +126,8 @@ a.primary[role=button]:hover {
129
126
  color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
130
127
  --link-bg: var(--primary-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)))));
131
128
  --link-fg: var(--primary-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)))));
129
+ --fg: var(--primary-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
130
+ --bg: var(--primary-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
132
131
  }
133
132
 
134
133
  a.primary {
@@ -136,6 +135,8 @@ a.primary {
136
135
  color: var(--primary-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
137
136
  --link-bg: var(--primary-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)))));
138
137
  --link-fg: var(--primary-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)))));
138
+ --fg: var(--primary-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
139
+ --bg: var(--primary-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
139
140
  font-family: var(--primary-font-family, var(--a-font-family, var(--a-font-family, inherit)));
140
141
  text-transform: var(--primary-text-transform, var(--a-text-transform, var(--a-text-transform, inherit)));
141
142
  text-decoration: var(--primary-text-decoration, var(--a-text-decoration, var(--a-text-decoration, inherit)));
@@ -149,10 +150,12 @@ a.primary {
149
150
  }
150
151
 
151
152
  a.warning {
152
- background: var(--warning-bg, var(--button-bg, var(--control-bg, var(--secondary-bg, var(--bg, unset)))));
153
- color: var(--warning-fg, var(--button-fg, var(--control-fg, var(--secondary-fg, var(--fg, unset)))));
154
- --link-bg: var(--warning-link-bg, var(--button-link-bg, var(--control-link-bg, var(--secondary-link-bg, var(--secondary-link-bg, inherit)))));
155
- --link-fg: var(--warning-link-fg, var(--button-link-fg, var(--control-link-fg, var(--secondary-link-fg, var(--secondary-link-fg, inherit)))));
153
+ background: var(--warning-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
154
+ color: var(--warning-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
155
+ --link-bg: var(--warning-link-bg, var(--a-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
156
+ --link-fg: var(--warning-link-fg, var(--a-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
157
+ --fg: var(--warning-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
158
+ --bg: var(--warning-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
156
159
  font-family: var(--warning-font-family, var(--a-font-family, var(--a-font-family, inherit)));
157
160
  text-transform: var(--warning-text-transform, var(--a-text-transform, var(--a-text-transform, inherit)));
158
161
  text-decoration: var(--warning-text-decoration, var(--a-text-decoration, var(--a-text-decoration, inherit)));
@@ -166,10 +169,12 @@ a.warning {
166
169
  }
167
170
 
168
171
  a.danger {
169
- background: var(--danger-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
170
- color: var(--danger-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
171
- --link-bg: var(--danger-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
172
- --link-fg: var(--danger-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
172
+ background: var(--danger-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
173
+ color: var(--danger-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
174
+ --link-bg: var(--danger-link-bg, var(--a-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
175
+ --link-fg: var(--danger-link-fg, var(--a-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
176
+ --fg: var(--danger-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
177
+ --bg: var(--danger-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
173
178
  font-family: var(--danger-font-family, var(--a-font-family, var(--a-font-family, inherit)));
174
179
  text-transform: var(--danger-text-transform, var(--a-text-transform, var(--a-text-transform, inherit)));
175
180
  text-decoration: var(--danger-text-decoration, var(--a-text-decoration, var(--a-text-decoration, inherit)));
@@ -183,10 +188,12 @@ a.danger {
183
188
  }
184
189
 
185
190
  a.success {
186
- background: var(--success-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
187
- color: var(--success-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
188
- --link-bg: var(--success-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
189
- --link-fg: var(--success-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
191
+ background: var(--success-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
192
+ color: var(--success-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
193
+ --link-bg: var(--success-link-bg, var(--a-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
194
+ --link-fg: var(--success-link-fg, var(--a-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
195
+ --fg: var(--success-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
196
+ --bg: var(--success-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
190
197
  font-family: var(--success-font-family, var(--a-font-family, var(--a-font-family, inherit)));
191
198
  text-transform: var(--success-text-transform, var(--a-text-transform, var(--a-text-transform, inherit)));
192
199
  text-decoration: var(--success-text-decoration, var(--a-text-decoration, var(--a-text-decoration, inherit)));
@@ -200,10 +207,12 @@ a.success {
200
207
  }
201
208
 
202
209
  a.info {
203
- background: var(--info-bg, var(--button-bg, var(--control-bg, var(--bg, unset))));
204
- color: var(--info-fg, var(--button-fg, var(--control-fg, var(--fg, unset))));
205
- --link-bg: var(--info-link-bg, var(--button-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
206
- --link-fg: var(--info-link-fg, var(--button-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
210
+ background: var(--info-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
211
+ color: var(--info-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
212
+ --link-bg: var(--info-link-bg, var(--a-link-bg, var(--control-link-bg, var(--control-link-bg, inherit))));
213
+ --link-fg: var(--info-link-fg, var(--a-link-fg, var(--control-link-fg, var(--control-link-fg, inherit))));
214
+ --fg: var(--info-fg, var(--a-fg, var(--control-fg, var(--fg, unset))));
215
+ --bg: var(--info-bg, var(--a-bg, var(--control-bg, var(--bg, unset))));
207
216
  font-family: var(--info-font-family, var(--a-font-family, var(--a-font-family, inherit)));
208
217
  text-transform: var(--info-text-transform, var(--a-text-transform, var(--a-text-transform, inherit)));
209
218
  text-decoration: var(--info-text-decoration, var(--a-text-decoration, var(--a-text-decoration, inherit)));