@x33025/sveltely 0.1.18 → 0.1.21

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 (138) hide show
  1. package/dist/actions/LoaderOverlay.svelte +33 -8
  2. package/dist/actions/LoaderOverlay.svelte.d.ts +3 -0
  3. package/dist/actions/loader.d.ts +3 -0
  4. package/dist/actions/loader.js +20 -7
  5. package/dist/components/Library/AnimatedNumber/AnimatedNumber.demo.svelte +3 -9
  6. package/dist/components/Library/ArticleEditor/ArticleEditor.svelte +1 -1
  7. package/dist/components/Library/ArticleEditor/ArticleEditorHeader.svelte +20 -30
  8. package/dist/components/Library/ArticleEditor/Blocks/Code.svelte +0 -1
  9. package/dist/components/Library/ArticleEditor/Blocks/FAQ.svelte +1 -1
  10. package/dist/components/Library/ArticleEditor/Blocks/Heading.svelte +7 -7
  11. package/dist/components/Library/ArticleEditor/Blocks/Image.svelte +20 -36
  12. package/dist/components/Library/ArticleEditor/Blocks/Image.svelte.d.ts +1 -0
  13. package/dist/components/Library/ArticleEditor/Blocks/List.svelte +2 -2
  14. package/dist/components/Library/ArticleEditor/Blocks/Paragraph.svelte +1 -1
  15. package/dist/components/Library/ArticleEditor/Blocks/index.d.ts +0 -1
  16. package/dist/components/Library/ArticleEditor/Blocks/index.js +0 -1
  17. package/dist/components/Library/AsyncButton/AsyncButton.demo.svelte +2 -6
  18. package/dist/components/Library/AsyncButton/AsyncButton.svelte +9 -5
  19. package/dist/components/Library/AsyncButton/AsyncButton.svelte.d.ts +2 -1
  20. package/dist/components/Library/Button/Button.demo.svelte +2 -17
  21. package/dist/components/Library/Button/Button.demo.svelte.d.ts +0 -1
  22. package/dist/components/Library/Button/Button.svelte +15 -16
  23. package/dist/components/Library/Button/Button.svelte.d.ts +2 -1
  24. package/dist/components/Library/Calendar/Calendar.svelte +17 -27
  25. package/dist/components/Library/Checkbox/Checkbox.demo.svelte +7 -4
  26. package/dist/components/Library/Checkbox/Checkbox.svelte +24 -61
  27. package/dist/components/Library/Checkbox/Checkbox.svelte.d.ts +2 -4
  28. package/dist/components/Library/ChipInput/ChipInput.demo.svelte +2 -2
  29. package/dist/components/Library/ChipInput/ChipInput.svelte +7 -11
  30. package/dist/components/Library/ChipInput/ChipInput.svelte.d.ts +3 -2
  31. package/dist/components/Library/Dropdown/Action.svelte +1 -1
  32. package/dist/components/Library/Dropdown/Dropdown.demo.svelte +10 -10
  33. package/dist/components/Library/Dropdown/Dropdown.svelte +2 -6
  34. package/dist/components/Library/Dropdown/Item.svelte +2 -2
  35. package/dist/components/Library/Dropdown/Section.svelte +1 -1
  36. package/dist/components/Library/Dropdown/Trigger.svelte +3 -7
  37. package/dist/components/Library/Image/Image.demo.svelte +3 -3
  38. package/dist/components/Library/Image/Image.svelte +57 -12
  39. package/dist/components/Library/Image/Image.svelte.d.ts +1 -2
  40. package/dist/components/Library/Image/ImagePlaceholder.demo.svelte +12 -0
  41. package/dist/components/Library/Image/ImagePlaceholder.demo.svelte.d.ts +23 -0
  42. package/dist/components/Library/Image/ImagePlaceholder.svelte +28 -4
  43. package/dist/components/Library/Image/ImagePlaceholder.svelte.d.ts +1 -1
  44. package/dist/components/Library/Image/index.d.ts +1 -0
  45. package/dist/components/Library/Image/index.js +1 -0
  46. package/dist/components/Library/ImageMask/BrushPreview.svelte +6 -6
  47. package/dist/components/Library/ImageMask/ImageMask.demo.svelte +10 -8
  48. package/dist/components/Library/ImageMask/ImageMask.svelte +14 -6
  49. package/dist/components/Library/ImageMask/ImageMask.svelte.d.ts +1 -2
  50. package/dist/components/Library/ImageMask/MaskLayer.svelte +12 -6
  51. package/dist/components/Library/Label/Label.demo.svelte +16 -3
  52. package/dist/components/Library/Label/Label.svelte +15 -3
  53. package/dist/components/Library/Label/Label.svelte.d.ts +1 -0
  54. package/dist/components/Library/Link/Link.svelte +10 -22
  55. package/dist/components/Library/Link/Link.svelte.d.ts +2 -3
  56. package/dist/components/Library/Loader/Loader.demo.svelte +9 -3
  57. package/dist/components/Library/NavigationStack/Link.svelte +8 -12
  58. package/dist/components/Library/NavigationStack/Link.svelte.d.ts +1 -3
  59. package/dist/components/Library/NavigationStack/SidebarToggle.svelte +8 -2
  60. package/dist/components/Library/NumberField/NumberField.svelte +21 -17
  61. package/dist/components/Library/NumberField/NumberField.svelte.d.ts +4 -2
  62. package/dist/components/Library/Pagination/Pagination.svelte +3 -3
  63. package/dist/components/Library/Popover/Popover.svelte +2 -7
  64. package/dist/components/Library/ScrollView/ScrollView.demo.svelte +50 -0
  65. package/dist/components/Library/ScrollView/ScrollView.demo.svelte.d.ts +10 -0
  66. package/dist/components/Library/ScrollView/ScrollView.svelte +414 -67
  67. package/dist/components/Library/ScrollView/ScrollView.svelte.d.ts +17 -1
  68. package/dist/components/Library/ScrollView/index.d.ts +1 -1
  69. package/dist/components/Library/SearchField/SearchField.demo.svelte +2 -2
  70. package/dist/components/Library/SearchField/SearchField.svelte +9 -4
  71. package/dist/components/Library/SearchField/SearchField.svelte.d.ts +2 -1
  72. package/dist/components/Library/SegmentedPicker/SegmentedPicker.demo.svelte +2 -2
  73. package/dist/components/Library/SegmentedPicker/SegmentedPicker.svelte +7 -7
  74. package/dist/components/Library/Sheet/Sheet.demo.svelte +1 -1
  75. package/dist/components/Library/Sheet/Sheet.svelte +2 -7
  76. package/dist/components/Library/Slider/Slider.demo.svelte +1 -1
  77. package/dist/components/Library/Slider/Slider.svelte +11 -7
  78. package/dist/components/Library/Slider/Slider.svelte.d.ts +2 -1
  79. package/dist/components/Library/Spinner/Spinner.demo.svelte +1 -1
  80. package/dist/components/Library/Switch/Switch.demo.svelte +7 -4
  81. package/dist/components/Library/Switch/Switch.svelte +28 -68
  82. package/dist/components/Library/Switch/Switch.svelte.d.ts +2 -4
  83. package/dist/components/Library/Table/Column.svelte +81 -0
  84. package/dist/components/Library/Table/Column.svelte.d.ts +39 -0
  85. package/dist/components/Library/Table/Table.demo.svelte +148 -0
  86. package/dist/components/Library/Table/Table.demo.svelte.d.ts +10 -0
  87. package/dist/components/Library/Table/Table.svelte +624 -0
  88. package/dist/components/Library/Table/Table.svelte.d.ts +42 -0
  89. package/dist/components/Library/Table/context.d.ts +5 -0
  90. package/dist/components/Library/Table/context.js +2 -0
  91. package/dist/components/Library/Table/index.js +5 -0
  92. package/dist/components/Library/Table/types.d.ts +37 -0
  93. package/dist/components/Library/Table/types.js +1 -0
  94. package/dist/components/Library/Text/Text.demo.svelte +21 -0
  95. package/dist/components/Library/Text/Text.demo.svelte.d.ts +24 -0
  96. package/dist/components/Library/Text/Text.svelte +41 -0
  97. package/dist/components/Library/Text/Text.svelte.d.ts +9 -0
  98. package/dist/components/Library/Text/index.d.ts +1 -0
  99. package/dist/components/Library/Text/index.js +1 -0
  100. package/dist/components/Library/TextEditor/TextEditor.svelte +15 -9
  101. package/dist/components/Library/TextEditor/TextEditor.svelte.d.ts +2 -4
  102. package/dist/components/Library/TextField/TextField.demo.svelte +1 -1
  103. package/dist/components/Library/TextField/TextField.svelte +21 -18
  104. package/dist/components/Library/TextField/TextField.svelte.d.ts +4 -2
  105. package/dist/components/Library/TextShimmer/TextShimmer.demo.svelte +1 -1
  106. package/dist/components/Library/TimePicker/TimePicker.demo.svelte +10 -2
  107. package/dist/components/Library/TimePicker/TimePicker.svelte +10 -5
  108. package/dist/components/Library/TokenSearchField/TokenSearchField.demo.svelte +4 -2
  109. package/dist/components/Library/TokenSearchField/TokenSearchField.svelte +11 -11
  110. package/dist/components/Library/TokenSearchField/TokenSearchField.svelte.d.ts +2 -1
  111. package/dist/components/Library/WheelPicker/WheelColumn.svelte +183 -126
  112. package/dist/components/Library/WheelPicker/WheelPicker.svelte +4 -4
  113. package/dist/components/Library/WheelPicker/WheelPicker.svelte.d.ts +2 -2
  114. package/dist/components/Library/WheelPicker/index.d.ts +1 -1
  115. package/dist/components/Library/WheelPicker/types.d.ts +6 -0
  116. package/dist/components/Local/ColorStyleControls.svelte +201 -0
  117. package/dist/components/Local/ColorStyleControls.svelte.d.ts +13 -0
  118. package/dist/components/Local/HeroCard.svelte +3 -3
  119. package/dist/components/Local/LayoutStyleControls.svelte +67 -0
  120. package/dist/components/Local/LayoutStyleControls.svelte.d.ts +11 -0
  121. package/dist/components/Local/StyleControls.svelte +48 -124
  122. package/dist/components/Local/StyleControls.svelte.d.ts +7 -5
  123. package/dist/index.d.ts +9 -2
  124. package/dist/index.js +5 -1
  125. package/dist/style/index.css +7 -12
  126. package/dist/style/label.d.ts +2 -1
  127. package/dist/style/label.js +2 -1
  128. package/dist/style/surface.js +4 -0
  129. package/dist/style/text-editor.d.ts +2 -13
  130. package/dist/style/text-editor.js +1 -12
  131. package/dist/style/text.d.ts +26 -0
  132. package/dist/style/text.js +69 -0
  133. package/dist/style/tooltip.d.ts +4 -0
  134. package/dist/style/tooltip.js +1 -0
  135. package/dist/style.css +44 -111
  136. package/package.json +1 -1
  137. package/dist/components/Library/ArticleEditor/Blocks/ImagePreview.svelte +0 -71
  138. package/dist/components/Library/ArticleEditor/Blocks/ImagePreview.svelte.d.ts +0 -8
@@ -1,17 +1,21 @@
1
1
  <script lang="ts">
2
2
  import { SearchIcon } from '@lucide/svelte';
3
3
  import type { HTMLInputAttributes } from 'svelte/elements';
4
+ import { tooltip as tooltipAction } from '../../../actions/tooltip';
4
5
  import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
6
+ import type { TooltipProps } from '../../../style/tooltip';
5
7
 
6
8
  type Props = {
7
9
  value?: string;
8
10
  radiusSource?: boolean;
9
11
  } & StyleProps &
12
+ TooltipProps &
10
13
  Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
11
14
 
12
15
  let {
13
16
  value = $bindable(''),
14
17
  radiusSource = true,
18
+ tooltip,
15
19
  disabled = false,
16
20
  placeholder = 'Search',
17
21
  ...restProps
@@ -28,6 +32,7 @@
28
32
  style={rootStyle}
29
33
  data-disabled={disabled ? 'true' : 'false'}
30
34
  data-popover-radius-source={radiusSource ? 'true' : undefined}
35
+ use:tooltipAction={tooltip}
31
36
  >
32
37
  <span class="search-field-icon" aria-hidden="true">
33
38
  <SearchIcon class="size-4" />
@@ -42,8 +47,8 @@
42
47
  align-items: center;
43
48
  border: 1px solid var(--sveltely-border-color);
44
49
  border-radius: var(--sveltely-border-radius);
45
- background: var(--sveltely-background-color);
46
- color: var(--sveltely-primary-color);
50
+ background: var(--sveltely-control-background-color);
51
+ color: var(--sveltely-text-primary-color);
47
52
  gap: var(--search-field-gap, calc(var(--sveltely-padding-x) * 0.67));
48
53
  padding: var(--search-field-padding-y, calc(var(--sveltely-padding-y) * 0.67))
49
54
  var(--search-field-padding-x, var(--sveltely-padding-x))
@@ -58,7 +63,7 @@
58
63
  }
59
64
 
60
65
  .search-field:focus-within {
61
- border-color: color-mix(in oklab, var(--sveltely-active-color) 50%, white);
66
+ border-color: color-mix(in oklab, var(--sveltely-control-active-color) 50%, white);
62
67
  }
63
68
 
64
69
  .search-field[data-disabled='true'] {
@@ -68,7 +73,7 @@
68
73
 
69
74
  .search-field-icon {
70
75
  flex-shrink: 0;
71
- color: var(--sveltely-secondary-color);
76
+ color: var(--sveltely-text-secondary-color);
72
77
  }
73
78
 
74
79
  .search-field-input {
@@ -1,9 +1,10 @@
1
1
  import type { HTMLInputAttributes } from 'svelte/elements';
2
2
  import { type StyleProps } from '../../../style/surface';
3
+ import type { TooltipProps } from '../../../style/tooltip';
3
4
  type Props = {
4
5
  value?: string;
5
6
  radiusSource?: boolean;
6
- } & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
7
+ } & StyleProps & TooltipProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
7
8
  declare const SearchField: import("svelte").Component<Props, {}, "value">;
8
9
  type SearchField = ReturnType<typeof SearchField>;
9
10
  export default SearchField;
@@ -1,6 +1,6 @@
1
1
  <script module lang="ts">
2
2
  export const demo = {
3
- name: 'SegmentedPicker',
3
+ name: 'Segmented Picker',
4
4
  description: 'Segmented selection between fixed options.'
5
5
  };
6
6
  </script>
@@ -19,5 +19,5 @@
19
19
 
20
20
  <div class="vstack center gap-2">
21
21
  <SegmentedPicker {options} bind:value />
22
- <p class="text-xs text-[var(--sveltely-secondary-color)]">Selected: {value}</p>
22
+ <p class="text-xs text-[var(--sveltely-text-secondary-color)]">Selected: {value}</p>
23
23
  </div>
@@ -66,7 +66,7 @@
66
66
  --segmented-picker-scale: calc(var(--segmented-picker-font-size) / 0.875rem);
67
67
  --sveltely-nested-inset: var(--segmented-picker-inset);
68
68
  border-radius: var(--sveltely-border-radius);
69
- background: var(--sveltely-inactive-color);
69
+ background: var(--sveltely-control-background-color);
70
70
  gap: var(--segmented-picker-inset);
71
71
  font-size: var(--segmented-picker-font-size);
72
72
  padding: var(--segmented-picker-inset);
@@ -85,22 +85,22 @@
85
85
  }
86
86
 
87
87
  .segmented-picker-button:hover:not(.segmented-picker-button-active) {
88
- background: var(--sveltely-hover-color);
88
+ background: color-mix(in oklab, var(--sveltely-control-active-color) 5%, transparent);
89
89
  }
90
90
 
91
91
  .segmented-picker-button-active {
92
- background: var(--sveltely-active-color);
93
- color: var(--sveltely-background-color);
92
+ background: var(--sveltely-control-active-color);
93
+ color: var(--sveltely-control-background-color);
94
94
  }
95
95
 
96
96
  .segmented-picker-button-disabled {
97
97
  cursor: not-allowed;
98
- color: var(--sveltely-secondary-color);
98
+ color: var(--sveltely-text-secondary-color);
99
99
  pointer-events: none;
100
100
  }
101
101
 
102
102
  .segmented-picker-button-disabled-selected {
103
- background: color-mix(in oklab, var(--sveltely-active-color) 35%, white);
104
- color: var(--sveltely-secondary-color);
103
+ background: color-mix(in oklab, var(--sveltely-control-active-color) 35%, white);
104
+ color: var(--sveltely-text-secondary-color);
105
105
  }
106
106
  </style>
@@ -15,7 +15,7 @@
15
15
  {/snippet}
16
16
 
17
17
  <div class="vstack gap-3">
18
- <p class="text-sm text-[var(--sveltely-primary-color)]">This is a simple sheet example.</p>
18
+ <p class="text-sm text-[var(--sveltely-text-primary-color)]">This is a simple sheet example.</p>
19
19
  <div class="rounded border border-gray-200/70 p-3 text-sm text-gray-700">
20
20
  <div>Panel one content.</div>
21
21
  <div class="mt-2">Panel two content.</div>
@@ -88,19 +88,14 @@
88
88
  border: 1px solid var(--sveltely-border-color);
89
89
  border-radius: var(--sveltely-border-radius);
90
90
  background: var(--sveltely-background-color);
91
- color: var(--sveltely-primary-color);
91
+ color: var(--sveltely-text-primary-color);
92
92
  gap: var(--sveltely-gap);
93
93
  padding: calc(var(--sveltely-padding-y) * 0.67) var(--sveltely-padding-x);
94
94
  font-size: 0.875rem;
95
95
  line-height: 1.25rem;
96
96
  transition:
97
97
  color 150ms,
98
- border-color 150ms,
99
- background-color 150ms;
100
- }
101
-
102
- .sheet-trigger:hover {
103
- background: var(--sveltely-hover-color);
98
+ border-color 150ms;
104
99
  }
105
100
 
106
101
  .sheet {
@@ -13,5 +13,5 @@
13
13
 
14
14
  <div class="vstack w-full max-w-sm gap-2">
15
15
  <Slider bind:value min={0} max={100} />
16
- <p class="text-xs text-[var(--sveltely-secondary-color)]">Value: {value}</p>
16
+ <p class="text-xs text-[var(--sveltely-text-secondary-color)]">Value: {value}</p>
17
17
  </div>
@@ -1,11 +1,14 @@
1
1
  <script lang="ts">
2
+ import { tooltip as tooltipAction } from '../../../actions/tooltip';
2
3
  import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
4
+ import type { TooltipProps } from '../../../style/tooltip';
3
5
 
4
6
  let {
5
7
  value = $bindable(0),
6
8
  min = 0,
7
9
  max = 100,
8
10
  step = 1,
11
+ tooltip,
9
12
  disabled = false,
10
13
  ...props
11
14
  }: {
@@ -15,6 +18,7 @@
15
18
  step?: number | string;
16
19
  disabled?: boolean;
17
20
  } & StyleProps &
21
+ TooltipProps &
18
22
  Record<string, unknown> = $props();
19
23
 
20
24
  const extractedStyleProps = $derived.by(() => extractStyleProps(props));
@@ -49,6 +53,7 @@
49
53
  class="slider"
50
54
  style={sliderStyle}
51
55
  {...inputProps}
56
+ use:tooltipAction={tooltip}
52
57
  />
53
58
 
54
59
  <style>
@@ -62,11 +67,10 @@
62
67
  border-radius: var(--sveltely-border-radius);
63
68
  background: transparent;
64
69
  outline: none;
65
- cursor: pointer;
66
70
  }
67
71
 
68
72
  .slider:focus-visible {
69
- outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 35%, white);
73
+ outline: 2px solid color-mix(in oklab, var(--sveltely-control-active-color) 35%, white);
70
74
  outline-offset: 4px;
71
75
  }
72
76
 
@@ -80,8 +84,8 @@
80
84
  border-radius: var(--sveltely-border-radius);
81
85
  background: linear-gradient(
82
86
  to right,
83
- var(--sveltely-active-color) 0%,
84
- var(--sveltely-active-color) var(--slider-pct),
87
+ var(--sveltely-control-active-color) 0%,
88
+ var(--sveltely-control-active-color) var(--slider-pct),
85
89
  var(--sveltely-border-color) var(--slider-pct),
86
90
  var(--sveltely-border-color) 100%
87
91
  );
@@ -94,7 +98,7 @@
94
98
  height: var(--slider-thumb-size);
95
99
  border-radius: var(--sveltely-border-radius);
96
100
  border: var(--slider-thumb-ring-width) solid var(--color-white);
97
- background: var(--sveltely-active-color);
101
+ background: var(--sveltely-control-active-color);
98
102
  margin-top: calc((var(--slider-track-height) - var(--slider-thumb-size)) / 2);
99
103
  }
100
104
 
@@ -109,7 +113,7 @@
109
113
  height: var(--slider-track-height);
110
114
  border: none;
111
115
  border-radius: var(--sveltely-border-radius);
112
- background: var(--sveltely-active-color);
116
+ background: var(--sveltely-control-active-color);
113
117
  }
114
118
 
115
119
  .slider::-moz-range-thumb {
@@ -118,6 +122,6 @@
118
122
  height: var(--slider-thumb-size);
119
123
  border-radius: var(--sveltely-border-radius);
120
124
  border: var(--slider-thumb-ring-width) solid var(--color-white);
121
- background: var(--sveltely-active-color);
125
+ background: var(--sveltely-control-active-color);
122
126
  }
123
127
  </style>
@@ -1,11 +1,12 @@
1
1
  import { type StyleProps } from '../../../style/surface';
2
+ import type { TooltipProps } from '../../../style/tooltip';
2
3
  type $$ComponentProps = {
3
4
  value?: number;
4
5
  min?: number;
5
6
  max?: number;
6
7
  step?: number | string;
7
8
  disabled?: boolean;
8
- } & StyleProps & Record<string, unknown>;
9
+ } & StyleProps & TooltipProps & Record<string, unknown>;
9
10
  declare const Slider: import("svelte").Component<$$ComponentProps, {}, "value">;
10
11
  type Slider = ReturnType<typeof Slider>;
11
12
  export default Slider;
@@ -9,6 +9,6 @@
9
9
  import Spinner from './Spinner.svelte';
10
10
  </script>
11
11
 
12
- <div class="text-[var(--sveltely-primary-color)]">
12
+ <div class="text-[var(--sveltely-text-primary-color)]">
13
13
  <Spinner />
14
14
  </div>
@@ -7,14 +7,17 @@
7
7
 
8
8
  <script lang="ts">
9
9
  import Switch from './Switch.svelte';
10
+ import Label from '../Label';
10
11
 
11
12
  let notificationsEnabled = $state(true);
12
13
  let weeklySummaryEnabled = $state(false);
13
14
  </script>
14
15
 
15
16
  <div class="vstack gap-3">
16
- <Switch bind:checked={notificationsEnabled} label="Enable notifications" />
17
- <Switch bind:checked={weeklySummaryEnabled}>
18
- <span>Send weekly summary email</span>
19
- </Switch>
17
+ <Label label="Enable notifications" orientation="leading" width="fit">
18
+ <Switch bind:checked={notificationsEnabled} />
19
+ </Label>
20
+ <Label label="Send weekly summary" orientation="leading" width="fit">
21
+ <Switch bind:checked={weeklySummaryEnabled} />
22
+ </Label>
20
23
  </div>
@@ -1,22 +1,16 @@
1
1
  <script lang="ts">
2
- import type { Snippet } from 'svelte';
3
2
  import type { HTMLInputAttributes } from 'svelte/elements';
3
+ import { tooltip as tooltipAction } from '../../../actions/tooltip';
4
4
  import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
5
+ import type { TooltipProps } from '../../../style/tooltip';
5
6
 
6
7
  type Props = {
7
8
  checked?: boolean;
8
- label?: string;
9
- children?: Snippet;
10
9
  } & StyleProps &
11
- Omit<HTMLInputAttributes, 'type' | 'children' | 'class' | 'style' | 'checked'>;
10
+ TooltipProps &
11
+ Omit<HTMLInputAttributes, 'type' | 'class' | 'style' | 'checked'>;
12
12
 
13
- let {
14
- checked = $bindable(false),
15
- label,
16
- children,
17
- disabled = false,
18
- ...restProps
19
- }: Props = $props();
13
+ let { checked = $bindable(false), tooltip, disabled = false, ...restProps }: Props = $props();
20
14
 
21
15
  const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
22
16
  const styleProps = $derived(extractedStyleProps.styleProps);
@@ -24,28 +18,17 @@
24
18
  const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'switch'));
25
19
  </script>
26
20
 
27
- <div
28
- class="switch inline-flex items-center"
21
+ <label
22
+ class="switch"
29
23
  style={rootStyle}
30
24
  data-disabled={disabled ? 'true' : 'false'}
25
+ use:tooltipAction={tooltip}
31
26
  >
32
- <label class="switch-control">
33
- <input bind:checked type="checkbox" {disabled} {...props} />
34
- <span class="switch-track" aria-hidden="true">
35
- <span class="switch-thumb"></span>
36
- </span>
37
- </label>
38
-
39
- {#if children || label}
40
- <span class="switch-label">
41
- {#if children}
42
- {@render children()}
43
- {:else if label}
44
- {label}
45
- {/if}
46
- </span>
47
- {/if}
48
- </div>
27
+ <input bind:checked type="checkbox" {disabled} {...props} />
28
+ <span class="switch-track" aria-hidden="true">
29
+ <span class="switch-thumb"></span>
30
+ </span>
31
+ </label>
49
32
 
50
33
  <style>
51
34
  .switch {
@@ -71,11 +54,13 @@
71
54
  var(--switch-width) - (var(--switch-border-width) * 2) - var(--switch-thumb-size) -
72
55
  var(--switch-thumb-inset)
73
56
  );
74
- gap: var(--switch-gap, var(--sveltely-gap));
57
+ display: inline-block;
58
+ position: relative;
59
+ flex: 0 0 auto;
60
+ width: var(--switch-width);
61
+ height: var(--switch-height);
62
+ box-sizing: border-box;
75
63
  font-size: var(--switch-font-size);
76
- line-height: 1.25;
77
- color: var(--switch-color, var(--sveltely-primary-color));
78
- cursor: pointer;
79
64
  user-select: none;
80
65
  }
81
66
 
@@ -84,17 +69,7 @@
84
69
  opacity: 0.5;
85
70
  }
86
71
 
87
- .switch-control {
88
- cursor: inherit;
89
- display: inline-block;
90
- position: relative;
91
- flex: 0 0 auto;
92
- width: var(--switch-width);
93
- height: var(--switch-height);
94
- box-sizing: border-box;
95
- }
96
-
97
- .switch-control input {
72
+ .switch input {
98
73
  position: absolute;
99
74
  inset: 0;
100
75
  margin: 0;
@@ -109,7 +84,7 @@
109
84
  border: var(--switch-border-width) solid
110
85
  var(--switch-border-color, var(--sveltely-border-color));
111
86
  border-radius: var(--switch-resolved-border-radius);
112
- background: var(--switch-background, var(--sveltely-inactive-color));
87
+ background: var(--switch-background, var(--sveltely-control-inactive-color));
113
88
  box-sizing: border-box;
114
89
  position: relative;
115
90
  overflow: hidden;
@@ -128,36 +103,21 @@
128
103
  box-sizing: border-box;
129
104
  border-radius: var(--switch-thumb-border-radius, var(--switch-resolved-thumb-border-radius));
130
105
  background: var(--switch-thumb-background, white);
131
- transition:
132
- left 180ms ease,
133
- background-color 150ms;
106
+ transition: left 180ms ease;
134
107
  }
135
108
 
136
- .switch:hover .switch-track {
137
- background: var(--switch-hover-background, var(--sveltely-inactive-hover-color));
109
+ .switch input:checked + .switch-track {
110
+ border-color: var(--switch-checked-border-color, var(--sveltely-control-active-color));
111
+ background: var(--switch-checked-background, var(--sveltely-control-active-color));
138
112
  }
139
113
 
140
- .switch-control input:checked + .switch-track {
141
- border-color: var(--switch-checked-border-color, var(--sveltely-active-color));
142
- background: var(--switch-checked-background, var(--sveltely-active-color));
143
- }
144
-
145
- .switch:hover .switch-control input:checked + .switch-track {
146
- border-color: var(--switch-checked-hover-border-color, var(--sveltely-active-hover-color));
147
- background: var(--switch-checked-hover-background, var(--sveltely-active-hover-color));
148
- }
149
-
150
- .switch-control input:checked + .switch-track .switch-thumb {
114
+ .switch input:checked + .switch-track .switch-thumb {
151
115
  background: var(--switch-checked-thumb-background, white);
152
116
  left: var(--switch-thumb-left-checked);
153
117
  }
154
118
 
155
- .switch-control input:focus-visible + .switch-track {
156
- outline: 2px solid color-mix(in oklab, var(--sveltely-active-color) 24%, white);
119
+ .switch input:focus-visible + .switch-track {
120
+ outline: 2px solid color-mix(in oklab, var(--sveltely-control-active-color) 24%, white);
157
121
  outline-offset: 2px;
158
122
  }
159
-
160
- .switch-label {
161
- min-width: 0;
162
- }
163
123
  </style>
@@ -1,11 +1,9 @@
1
- import type { Snippet } from 'svelte';
2
1
  import type { HTMLInputAttributes } from 'svelte/elements';
3
2
  import { type StyleProps } from '../../../style/surface';
3
+ import type { TooltipProps } from '../../../style/tooltip';
4
4
  type Props = {
5
5
  checked?: boolean;
6
- label?: string;
7
- children?: Snippet;
8
- } & StyleProps & Omit<HTMLInputAttributes, 'type' | 'children' | 'class' | 'style' | 'checked'>;
6
+ } & StyleProps & TooltipProps & Omit<HTMLInputAttributes, 'type' | 'class' | 'style' | 'checked'>;
9
7
  declare const Switch: import("svelte").Component<Props, {}, "checked">;
10
8
  type Switch = ReturnType<typeof Switch>;
11
9
  export default Switch;
@@ -0,0 +1,81 @@
1
+ <script lang="ts" generics="T extends Record<string, unknown>">
2
+ import { getContext, onDestroy } from 'svelte';
3
+ import { TABLE_CONTEXT } from './context';
4
+ import type { TableColumn, TableColumnAlignment, TableContext } from './types';
5
+
6
+ type Props = {
7
+ key?: string;
8
+ label: string;
9
+ value?: keyof T | ((row: T) => unknown);
10
+ cell?: TableColumn<T>['cell'];
11
+ width?: number | string;
12
+ minWidth?: number | string;
13
+ alignment?: TableColumnAlignment;
14
+ sortable?: boolean;
15
+ sortKey?: keyof T | string;
16
+ compare?: (a: T, b: T) => number;
17
+ colspan?: TableColumn<T>['colspan'];
18
+ rowspan?: TableColumn<T>['rowspan'];
19
+ hidden?: boolean;
20
+ };
21
+
22
+ let {
23
+ key,
24
+ label,
25
+ value,
26
+ cell,
27
+ width,
28
+ minWidth,
29
+ alignment,
30
+ sortable,
31
+ sortKey,
32
+ compare,
33
+ colspan,
34
+ rowspan,
35
+ hidden
36
+ }: Props = $props();
37
+
38
+ const table = getContext<TableContext<T>>(TABLE_CONTEXT);
39
+
40
+ const snapshot = (): TableColumn<T> => ({
41
+ key,
42
+ label,
43
+ value,
44
+ cell,
45
+ width,
46
+ minWidth,
47
+ alignment,
48
+ sortable,
49
+ sortKey,
50
+ compare,
51
+ colspan,
52
+ rowspan,
53
+ hidden
54
+ });
55
+
56
+ const signature = () =>
57
+ JSON.stringify({
58
+ key,
59
+ label,
60
+ width,
61
+ minWidth,
62
+ alignment,
63
+ sortable,
64
+ sortKey,
65
+ colspan: typeof colspan === 'function' ? null : colspan,
66
+ rowspan: typeof rowspan === 'function' ? null : rowspan,
67
+ hidden
68
+ });
69
+
70
+ const id = table.registerColumn(snapshot());
71
+ let previousSignature = signature();
72
+
73
+ $effect(() => {
74
+ const nextSignature = signature();
75
+ if (nextSignature === previousSignature) return;
76
+ previousSignature = nextSignature;
77
+ table.updateColumn(id, snapshot());
78
+ });
79
+
80
+ onDestroy(() => table.unregisterColumn(id));
81
+ </script>
@@ -0,0 +1,39 @@
1
+ import type { TableColumn, TableColumnAlignment } from './types';
2
+ declare function $$render<T extends Record<string, unknown>>(): {
3
+ props: {
4
+ key?: string;
5
+ label: string;
6
+ value?: keyof T | ((row: T) => unknown);
7
+ cell?: TableColumn<T>["cell"];
8
+ width?: number | string;
9
+ minWidth?: number | string;
10
+ alignment?: TableColumnAlignment;
11
+ sortable?: boolean;
12
+ sortKey?: keyof T | string;
13
+ compare?: (a: T, b: T) => number;
14
+ colspan?: TableColumn<T>["colspan"];
15
+ rowspan?: TableColumn<T>["rowspan"];
16
+ hidden?: boolean;
17
+ };
18
+ exports: {};
19
+ bindings: "";
20
+ slots: {};
21
+ events: {};
22
+ };
23
+ declare class __sveltets_Render<T extends Record<string, unknown>> {
24
+ props(): ReturnType<typeof $$render<T>>['props'];
25
+ events(): ReturnType<typeof $$render<T>>['events'];
26
+ slots(): ReturnType<typeof $$render<T>>['slots'];
27
+ bindings(): "";
28
+ exports(): {};
29
+ }
30
+ interface $$IsomorphicComponent {
31
+ new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
32
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
33
+ } & ReturnType<__sveltets_Render<T>['exports']>;
34
+ <T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
35
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
36
+ }
37
+ declare const Column: $$IsomorphicComponent;
38
+ type Column<T extends Record<string, unknown>> = InstanceType<typeof Column<T>>;
39
+ export default Column;