@x33025/sveltely 0.0.58 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/actions/tooltip.d.ts +10 -0
  2. package/dist/actions/tooltip.js +255 -0
  3. package/dist/components/{AnimatedNumber.demo.svelte → Library/AnimatedNumber/AnimatedNumber.demo.svelte} +6 -10
  4. package/dist/components/{AnimatedNumber.demo.svelte.d.ts → Library/AnimatedNumber/AnimatedNumber.demo.svelte.d.ts} +0 -1
  5. package/dist/components/Library/AnimatedNumber/AnimatedNumber.svelte +29 -0
  6. package/dist/components/Library/AnimatedNumber/AnimatedNumber.svelte.d.ts +9 -0
  7. package/dist/components/Library/AnimatedNumber/index.d.ts +1 -0
  8. package/dist/components/Library/AnimatedNumber/index.js +1 -0
  9. package/dist/components/{AsyncButton.demo.svelte → Library/AsyncButton/AsyncButton.demo.svelte} +0 -1
  10. package/dist/components/Library/AsyncButton/AsyncButton.svelte +178 -0
  11. package/dist/components/{AsyncButton.svelte.d.ts → Library/AsyncButton/AsyncButton.svelte.d.ts} +7 -2
  12. package/dist/components/Library/AsyncButton/index.d.ts +1 -0
  13. package/dist/components/Library/AsyncButton/index.js +1 -0
  14. package/dist/components/Library/Button/Button.demo.svelte +17 -0
  15. package/dist/components/Library/Button/Button.demo.svelte.d.ts +23 -0
  16. package/dist/components/Library/Button/Button.svelte +134 -0
  17. package/dist/components/Library/Button/Button.svelte.d.ts +17 -0
  18. package/dist/components/Library/Button/index.d.ts +1 -0
  19. package/dist/components/Library/Button/index.js +1 -0
  20. package/dist/components/Library/Calendar/Calendar.demo.svelte +30 -0
  21. package/dist/components/Library/Calendar/Calendar.demo.svelte.d.ts +10 -0
  22. package/dist/components/Library/Calendar/Calendar.svelte +310 -0
  23. package/dist/components/Library/Calendar/Calendar.svelte.d.ts +10 -0
  24. package/dist/components/Library/Calendar/index.d.ts +1 -0
  25. package/dist/components/Library/Calendar/index.js +1 -0
  26. package/dist/components/Library/Checkbox/Checkbox.demo.svelte +20 -0
  27. package/dist/components/Library/Checkbox/Checkbox.demo.svelte.d.ts +8 -0
  28. package/dist/components/Library/Checkbox/Checkbox.svelte +134 -0
  29. package/dist/components/Library/Checkbox/Checkbox.svelte.d.ts +11 -0
  30. package/dist/components/Library/Checkbox/index.d.ts +1 -0
  31. package/dist/components/Library/Checkbox/index.js +1 -0
  32. package/dist/components/{ChipInput.demo.svelte → Library/ChipInput/ChipInput.demo.svelte} +1 -2
  33. package/dist/components/{ChipInput.demo.svelte.d.ts → Library/ChipInput/ChipInput.demo.svelte.d.ts} +0 -1
  34. package/dist/components/{ChipInput.svelte → Library/ChipInput/ChipInput.svelte} +77 -3
  35. package/dist/components/{ChipInput.svelte.d.ts → Library/ChipInput/ChipInput.svelte.d.ts} +2 -1
  36. package/dist/components/Library/ChipInput/index.d.ts +1 -0
  37. package/dist/components/Library/ChipInput/index.js +1 -0
  38. package/dist/components/Library/Dropdown/Dropdown.demo.svelte +54 -0
  39. package/dist/components/Library/Dropdown/Dropdown.demo.svelte.d.ts +8 -0
  40. package/dist/components/Library/Dropdown/Dropdown.svelte +346 -0
  41. package/dist/components/Library/Dropdown/Dropdown.svelte.d.ts +40 -0
  42. package/dist/components/Library/Dropdown/index.d.ts +2 -0
  43. package/dist/components/Library/Dropdown/index.js +1 -0
  44. package/dist/components/Library/Dropdown/types.d.ts +27 -0
  45. package/dist/components/Library/Dropdown/types.js +1 -0
  46. package/dist/components/{Popover/Popover.svelte → Library/Floating/Floating.svelte} +155 -101
  47. package/dist/components/Library/Floating/Floating.svelte.d.ts +30 -0
  48. package/dist/components/Library/Floating/registry.svelte.d.ts +6 -0
  49. package/dist/components/{Popover → Library/Floating}/registry.svelte.js +2 -23
  50. package/dist/components/{GlowEffect.svelte → Library/GlowEffect/GlowEffect.svelte} +15 -6
  51. package/dist/components/{GlowEffect.svelte.d.ts → Library/GlowEffect/GlowEffect.svelte.d.ts} +3 -2
  52. package/dist/components/Library/GlowEffect/index.d.ts +1 -0
  53. package/dist/components/Library/GlowEffect/index.js +1 -0
  54. package/dist/components/Library/NavigationStack/NavigationStack.svelte +242 -0
  55. package/dist/components/Library/NavigationStack/NavigationStack.svelte.d.ts +15 -0
  56. package/dist/components/Library/NavigationStack/SidebarToggle.svelte +52 -0
  57. package/dist/components/Library/NavigationStack/SidebarToggle.svelte.d.ts +10 -0
  58. package/dist/components/Library/NavigationStack/Toolbar.svelte +59 -0
  59. package/dist/components/Library/NavigationStack/Toolbar.svelte.d.ts +11 -0
  60. package/dist/components/{Pagination.demo.svelte → Library/Pagination/Pagination.demo.svelte} +0 -1
  61. package/dist/components/{Pagination.demo.svelte.d.ts → Library/Pagination/Pagination.demo.svelte.d.ts} +0 -1
  62. package/dist/components/Library/Pagination/Pagination.svelte +227 -0
  63. package/dist/components/{Pagination.svelte.d.ts → Library/Pagination/Pagination.svelte.d.ts} +3 -3
  64. package/dist/components/Library/Pagination/index.d.ts +1 -0
  65. package/dist/components/Library/Pagination/index.js +1 -0
  66. package/dist/components/Library/Popover/Popover.demo.svelte +21 -0
  67. package/dist/components/Library/Popover/Popover.svelte +92 -0
  68. package/dist/components/Library/Popover/Popover.svelte.d.ts +14 -0
  69. package/dist/components/{Popover → Library/Popover}/PopoverDebugOverlay.svelte +1 -1
  70. package/dist/components/Library/Popover/index.d.ts +1 -0
  71. package/dist/components/Library/Popover/index.js +1 -0
  72. package/dist/components/Library/ScrollView/ScrollView.svelte +89 -0
  73. package/dist/components/Library/ScrollView/ScrollView.svelte.d.ts +12 -0
  74. package/dist/components/Library/ScrollView/index.d.ts +1 -0
  75. package/dist/components/Library/ScrollView/index.js +1 -0
  76. package/dist/components/{SearchInput.demo.svelte → Library/SearchInput/SearchInput.demo.svelte} +2 -3
  77. package/dist/components/{SearchInput.demo.svelte.d.ts → Library/SearchInput/SearchInput.demo.svelte.d.ts} +0 -1
  78. package/dist/components/Library/SearchInput/SearchInput.svelte +88 -0
  79. package/dist/components/{SearchInput.svelte.d.ts → Library/SearchInput/SearchInput.svelte.d.ts} +3 -3
  80. package/dist/components/Library/SearchInput/index.d.ts +1 -0
  81. package/dist/components/Library/SearchInput/index.js +1 -0
  82. package/dist/components/{SegmentedPicker.demo.svelte → Library/SegmentedPicker/SegmentedPicker.demo.svelte} +1 -2
  83. package/dist/components/{SegmentedPicker.demo.svelte.d.ts → Library/SegmentedPicker/SegmentedPicker.demo.svelte.d.ts} +0 -1
  84. package/dist/components/Library/SegmentedPicker/SegmentedPicker.svelte +106 -0
  85. package/dist/components/{SegmentedPicker.svelte.d.ts → Library/SegmentedPicker/SegmentedPicker.svelte.d.ts} +2 -2
  86. package/dist/components/Library/SegmentedPicker/index.d.ts +1 -0
  87. package/dist/components/Library/SegmentedPicker/index.js +1 -0
  88. package/dist/components/{Sheet → Library/Sheet}/Sheet.demo.svelte +4 -17
  89. package/dist/components/Library/Sheet/Sheet.demo.svelte.d.ts +23 -0
  90. package/dist/components/Library/Sheet/Sheet.svelte +113 -0
  91. package/dist/components/{Sheet → Library/Sheet}/Sheet.svelte.d.ts +4 -2
  92. package/dist/components/{Slider.demo.svelte → Library/Slider/Slider.demo.svelte} +2 -3
  93. package/dist/components/{Slider.demo.svelte.d.ts → Library/Slider/Slider.demo.svelte.d.ts} +0 -1
  94. package/dist/components/Library/Slider/Slider.svelte +122 -0
  95. package/dist/components/{Slider.svelte.d.ts → Library/Slider/Slider.svelte.d.ts} +2 -3
  96. package/dist/components/Library/Slider/index.d.ts +1 -0
  97. package/dist/components/Library/Slider/index.js +1 -0
  98. package/dist/components/{Spinner.demo.svelte → Library/Spinner/Spinner.demo.svelte} +3 -1
  99. package/dist/components/Library/Spinner/Spinner.svelte +32 -0
  100. package/dist/components/{Spinner.svelte.d.ts → Library/Spinner/Spinner.svelte.d.ts} +3 -2
  101. package/dist/components/Library/Spinner/index.d.ts +1 -0
  102. package/dist/components/Library/Spinner/index.js +1 -0
  103. package/dist/components/Library/Switch/Switch.demo.svelte +20 -0
  104. package/dist/components/Library/Switch/Switch.demo.svelte.d.ts +8 -0
  105. package/dist/components/Library/Switch/Switch.svelte +168 -0
  106. package/dist/components/Library/Switch/Switch.svelte.d.ts +11 -0
  107. package/dist/components/Library/Switch/index.d.ts +1 -0
  108. package/dist/components/Library/Switch/index.js +1 -0
  109. package/dist/components/Library/TextShimmer/TextShimmer.demo.svelte +14 -0
  110. package/dist/components/Library/TextShimmer/TextShimmer.demo.svelte.d.ts +23 -0
  111. package/dist/components/Library/TextShimmer/TextShimmer.svelte +88 -0
  112. package/dist/components/Library/TextShimmer/TextShimmer.svelte.d.ts +11 -0
  113. package/dist/components/Library/TextShimmer/index.d.ts +1 -0
  114. package/dist/components/Library/TextShimmer/index.js +1 -0
  115. package/dist/components/Library/TimePicker/TimePicker.demo.svelte +18 -0
  116. package/dist/components/Library/TimePicker/TimePicker.demo.svelte.d.ts +10 -0
  117. package/dist/components/Library/TimePicker/TimePicker.svelte +143 -0
  118. package/dist/components/Library/TimePicker/TimePicker.svelte.d.ts +13 -0
  119. package/dist/components/Library/TimePicker/index.d.ts +2 -0
  120. package/dist/components/Library/TimePicker/index.js +1 -0
  121. package/dist/components/{TokenSearchInput.demo.svelte → Library/TokenSearchInput/TokenSearchInput.demo.svelte} +1 -2
  122. package/dist/components/{TokenSearchInput.demo.svelte.d.ts → Library/TokenSearchInput/TokenSearchInput.demo.svelte.d.ts} +0 -1
  123. package/dist/components/Library/TokenSearchInput/TokenSearchInput.svelte +230 -0
  124. package/dist/components/{TokenSearchInput.svelte.d.ts → Library/TokenSearchInput/TokenSearchInput.svelte.d.ts} +2 -3
  125. package/dist/components/Library/TokenSearchInput/index.d.ts +1 -0
  126. package/dist/components/Library/TokenSearchInput/index.js +1 -0
  127. package/dist/components/Library/Tooltip/Tooltip.demo.svelte +14 -0
  128. package/dist/components/{Tooltip.demo.svelte.d.ts → Library/Tooltip/Tooltip.demo.svelte.d.ts} +0 -1
  129. package/dist/components/Library/Tooltip/index.d.ts +2 -0
  130. package/dist/components/Library/Tooltip/index.js +1 -0
  131. package/dist/components/Library/WheelPicker/WheelColumn.svelte +302 -0
  132. package/dist/components/Library/WheelPicker/WheelColumn.svelte.d.ts +29 -0
  133. package/dist/components/Library/WheelPicker/WheelPicker.svelte +114 -0
  134. package/dist/components/Library/WheelPicker/WheelPicker.svelte.d.ts +9 -0
  135. package/dist/components/Library/WheelPicker/index.d.ts +2 -0
  136. package/dist/components/Library/WheelPicker/index.js +1 -0
  137. package/dist/components/Library/WheelPicker/types.d.ts +10 -0
  138. package/dist/components/Library/WheelPicker/types.js +1 -0
  139. package/dist/components/Local/ComponentGrid.svelte +7 -6
  140. package/dist/components/Local/ComponentGrid.svelte.d.ts +1 -1
  141. package/dist/components/Local/HeroCard.svelte +18 -8
  142. package/dist/components/Local/HeroCard.svelte.d.ts +1 -1
  143. package/dist/components/Local/StyleControls.svelte +119 -0
  144. package/dist/components/Local/StyleControls.svelte.d.ts +15 -0
  145. package/dist/index.d.ts +24 -15
  146. package/dist/index.js +23 -15
  147. package/dist/style/index.css +61 -325
  148. package/dist/style/surface.d.ts +17 -0
  149. package/dist/style/surface.js +54 -0
  150. package/dist/style.css +86 -601
  151. package/dist/utils/positioning.d.ts +3 -2
  152. package/dist/utils/positioning.js +9 -5
  153. package/package.json +1 -1
  154. package/dist/components/AnimatedNumber.svelte +0 -18
  155. package/dist/components/AnimatedNumber.svelte.d.ts +0 -8
  156. package/dist/components/AsyncButton.svelte +0 -93
  157. package/dist/components/NavigationStack/NavigationStack.svelte +0 -76
  158. package/dist/components/NavigationStack/NavigationStack.svelte.d.ts +0 -10
  159. package/dist/components/NavigationStack/SidebarToggle.svelte +0 -36
  160. package/dist/components/NavigationStack/SidebarToggle.svelte.d.ts +0 -9
  161. package/dist/components/NavigationStack/Toolbar.svelte +0 -25
  162. package/dist/components/NavigationStack/Toolbar.svelte.d.ts +0 -9
  163. package/dist/components/Pagination.svelte +0 -144
  164. package/dist/components/Popover/Popover.demo.svelte +0 -35
  165. package/dist/components/Popover/Popover.svelte.d.ts +0 -13
  166. package/dist/components/Popover/index.d.ts +0 -2
  167. package/dist/components/Popover/index.js +0 -2
  168. package/dist/components/Popover/registry.svelte.d.ts +0 -18
  169. package/dist/components/SearchInput.svelte +0 -39
  170. package/dist/components/SegmentedPicker.svelte +0 -51
  171. package/dist/components/Sheet/Sheet.demo.svelte.d.ts +0 -8
  172. package/dist/components/Sheet/Sheet.svelte +0 -60
  173. package/dist/components/Slider.svelte +0 -47
  174. package/dist/components/Spinner.svelte +0 -7
  175. package/dist/components/TextShimmer.svelte +0 -60
  176. package/dist/components/TextShimmer.svelte.d.ts +0 -10
  177. package/dist/components/TokenSearchInput.svelte +0 -124
  178. package/dist/components/Tooltip.demo.svelte +0 -16
  179. package/dist/components/Tooltip.svelte +0 -79
  180. package/dist/components/Tooltip.svelte.d.ts +0 -12
  181. /package/dist/components/{AsyncButton.demo.svelte.d.ts → Library/AsyncButton/AsyncButton.demo.svelte.d.ts} +0 -0
  182. /package/dist/components/{NavigationStack → Library/NavigationStack}/index.d.ts +0 -0
  183. /package/dist/components/{NavigationStack → Library/NavigationStack}/index.js +0 -0
  184. /package/dist/components/{Popover → Library/Popover}/Popover.demo.svelte.d.ts +0 -0
  185. /package/dist/components/{Popover → Library/Popover}/PopoverDebugOverlay.svelte.d.ts +0 -0
  186. /package/dist/components/{Sheet → Library/Sheet}/index.d.ts +0 -0
  187. /package/dist/components/{Sheet → Library/Sheet}/index.js +0 -0
  188. /package/dist/components/{Spinner.demo.svelte.d.ts → Library/Spinner/Spinner.demo.svelte.d.ts} +0 -0
@@ -0,0 +1,92 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import Floating from '../Floating/Floating.svelte';
4
+ import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
5
+ import type { Anchor } from '../../../utils/positioning';
6
+
7
+ interface Props {
8
+ trigger: Snippet;
9
+ children: Snippet;
10
+ open?: boolean;
11
+ placement?: Anchor;
12
+ styleTrigger?: boolean;
13
+ }
14
+
15
+ let {
16
+ trigger: triggerContent,
17
+ children,
18
+ open = $bindable(false),
19
+ placement = 'bottom',
20
+ styleTrigger = true,
21
+ ...restProps
22
+ }: Props & StyleProps & Record<string, unknown> = $props();
23
+
24
+ const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
25
+ const styleProps = $derived(extractedStyleProps.styleProps);
26
+ const props = $derived(extractedStyleProps.restProps);
27
+ const popoverStyle = $derived.by(() => surfaceStyle(styleProps, 'popover'));
28
+ </script>
29
+
30
+ <Floating
31
+ bind:open
32
+ {placement}
33
+ rootClass="relative inline-block text-left"
34
+ rootStyle=""
35
+ panelClass="popover fixed z-50 focus:outline-none"
36
+ panelStyle={popoverStyle}
37
+ contentStyle=""
38
+ matchPanelRadiusToSource={true}
39
+ {...props}
40
+ >
41
+ {#snippet trigger(floating)}
42
+ <div
43
+ use:floating.useTrigger
44
+ class="popover-trigger text-left"
45
+ style={popoverStyle}
46
+ data-styled={styleTrigger ? 'true' : 'false'}
47
+ role="button"
48
+ tabindex="0"
49
+ onclick={floating.toggle}
50
+ onkeydown={(event) => {
51
+ if (event.key !== 'Enter' && event.key !== ' ') return;
52
+ event.preventDefault();
53
+ floating.toggle();
54
+ }}
55
+ aria-expanded={floating.open}
56
+ aria-haspopup="dialog"
57
+ >
58
+ {@render triggerContent()}
59
+ </div>
60
+ {/snippet}
61
+
62
+ {@render children()}
63
+ </Floating>
64
+
65
+ <style>
66
+ :global(.popover) {
67
+ --popover-inset: var(--sveltely-inset);
68
+ --sveltely-nested-inset: var(--popover-inset);
69
+ border: 1px solid var(--sveltely-border-color);
70
+ border-radius: var(--sveltely-border-radius);
71
+ background: white;
72
+ padding: var(--popover-inset);
73
+ }
74
+
75
+ :global(.popover-trigger[data-styled='true']) {
76
+ display: inline-flex;
77
+ align-items: center;
78
+ border: 1px solid var(--sveltely-border-color);
79
+ border-radius: var(--sveltely-border-radius);
80
+ background: white;
81
+ color: var(--color-zinc-800);
82
+ gap: var(--sveltely-gap);
83
+ padding: calc(var(--sveltely-padding-y) * 0.67) var(--sveltely-padding-x);
84
+ font-size: 0.875rem;
85
+ line-height: 1.25rem;
86
+ transition: color 150ms, border-color 150ms, background-color 150ms;
87
+ }
88
+
89
+ :global(.popover-trigger[data-styled='true']:hover) {
90
+ background: var(--sveltely-hover-color);
91
+ }
92
+ </style>
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type StyleProps } from '../../../style/surface';
3
+ import type { Anchor } from '../../../utils/positioning';
4
+ interface Props {
5
+ trigger: Snippet;
6
+ children: Snippet;
7
+ open?: boolean;
8
+ placement?: Anchor;
9
+ styleTrigger?: boolean;
10
+ }
11
+ type $$ComponentProps = Props & StyleProps & Record<string, unknown>;
12
+ declare const Popover: import("svelte").Component<$$ComponentProps, {}, "open">;
13
+ type Popover = ReturnType<typeof Popover>;
14
+ export default Popover;
@@ -1,5 +1,5 @@
1
1
  <script lang="ts">
2
- import { portalContent } from '../../actions/portal';
2
+ import { portalContent } from '../../../actions/portal';
3
3
  import { getOpenPopoverIds, getParentId } from './registry.svelte';
4
4
 
5
5
  type Point = { x: number; y: number };
@@ -0,0 +1 @@
1
+ export { default } from './Popover.svelte';
@@ -0,0 +1 @@
1
+ export { default } from './Popover.svelte';
@@ -0,0 +1,89 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
4
+
5
+ type Props = {
6
+ children: Snippet;
7
+ viewport?: HTMLElement | null;
8
+ axis?: 'vertical' | 'horizontal' | 'both';
9
+ contentStyles?: StyleProps;
10
+ };
11
+
12
+ let {
13
+ children,
14
+ viewport = $bindable<HTMLElement | null>(null),
15
+ axis = 'vertical',
16
+ contentStyles = {},
17
+ ...restProps
18
+ }: Props & StyleProps & Record<string, unknown> = $props();
19
+
20
+ const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
21
+ const styleProps = $derived(extractedStyleProps.styleProps);
22
+ const props = $derived(extractedStyleProps.restProps);
23
+ const viewportStyle = $derived.by(() => surfaceStyle(styleProps, 'scroll-view'));
24
+ const contentStyle = $derived.by(() => surfaceStyle(contentStyles, 'scroll-view-content'));
25
+ </script>
26
+
27
+ <div
28
+ bind:this={viewport}
29
+ class="scroll-view"
30
+ class:scroll-view-vertical={axis === 'vertical'}
31
+ class:scroll-view-horizontal={axis === 'horizontal'}
32
+ class:scroll-view-both={axis === 'both'}
33
+ style={viewportStyle}
34
+ {...props}
35
+ >
36
+ <div class="scroll-view-content" style={contentStyle}>
37
+ {@render children()}
38
+ </div>
39
+ </div>
40
+
41
+ <style>
42
+ .scroll-view {
43
+ min-width: 0;
44
+ min-height: 0;
45
+ width: 100%;
46
+ height: 100%;
47
+ border-radius: var(--scroll-view-border-radius, var(--sveltely-border-radius));
48
+ background: var(--scroll-view-background, transparent);
49
+ color: var(--scroll-view-color, inherit);
50
+ scrollbar-gutter: stable;
51
+ overscroll-behavior: contain;
52
+ }
53
+
54
+ .scroll-view-vertical {
55
+ overflow-x: hidden;
56
+ overflow-y: auto;
57
+ }
58
+
59
+ .scroll-view-horizontal {
60
+ overflow-x: auto;
61
+ overflow-y: hidden;
62
+ }
63
+
64
+ .scroll-view-both {
65
+ overflow: auto;
66
+ }
67
+
68
+ .scroll-view-content {
69
+ min-width: 100%;
70
+ min-height: 100%;
71
+ padding:
72
+ var(--scroll-view-content-padding-y, var(--sveltely-inset))
73
+ var(--scroll-view-content-padding-x, var(--sveltely-inset));
74
+ }
75
+
76
+ .scroll-view-horizontal .scroll-view-content {
77
+ min-height: 100%;
78
+ width: max-content;
79
+ }
80
+
81
+ .scroll-view-vertical .scroll-view-content {
82
+ min-width: 100%;
83
+ }
84
+
85
+ .scroll-view-both .scroll-view-content {
86
+ width: max-content;
87
+ min-width: 100%;
88
+ }
89
+ </style>
@@ -0,0 +1,12 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { type StyleProps } from '../../../style/surface';
3
+ type Props = {
4
+ children: Snippet;
5
+ viewport?: HTMLElement | null;
6
+ axis?: 'vertical' | 'horizontal' | 'both';
7
+ contentStyles?: StyleProps;
8
+ };
9
+ type $$ComponentProps = Props & StyleProps & Record<string, unknown>;
10
+ declare const ScrollView: import("svelte").Component<$$ComponentProps, {}, "viewport">;
11
+ type ScrollView = ReturnType<typeof ScrollView>;
12
+ export default ScrollView;
@@ -0,0 +1 @@
1
+ export { default } from './ScrollView.svelte';
@@ -0,0 +1 @@
1
+ export { default } from './ScrollView.svelte';
@@ -1,8 +1,7 @@
1
1
  <script module lang="ts">
2
2
  export const demo = {
3
3
  name: 'SearchInput',
4
- description: 'Search field with icon, input, and optional confirmation hint.',
5
- isProminent: false
4
+ description: 'Search field with icon, input, and optional confirmation hint.'
6
5
  };
7
6
  </script>
8
7
 
@@ -13,6 +12,6 @@
13
12
  </script>
14
13
 
15
14
  <div class="vstack w-full max-w-sm gap-2">
16
- <SearchInput bind:value placeholder="Search components..." confirmText="Enter" class="w-full" />
15
+ <SearchInput bind:value placeholder="Search components..." />
17
16
  <p class="text-xs text-zinc-500">Value: {value || 'empty'}</p>
18
17
  </div>
@@ -1,7 +1,6 @@
1
1
  export declare const demo: {
2
2
  name: string;
3
3
  description: string;
4
- isProminent: boolean;
5
4
  };
6
5
  import SearchInput from './SearchInput.svelte';
7
6
  declare const SearchInput: import("svelte").Component<Record<string, never>, {}, "">;
@@ -0,0 +1,88 @@
1
+ <script lang="ts">
2
+ import { SearchIcon } from '@lucide/svelte';
3
+ import type { HTMLInputAttributes } from 'svelte/elements';
4
+ import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
5
+
6
+ type Props = {
7
+ value?: string;
8
+ radiusSource?: boolean;
9
+ } & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
10
+
11
+ let {
12
+ value = $bindable(''),
13
+ radiusSource = true,
14
+ disabled = false,
15
+ placeholder = 'Search',
16
+ ...restProps
17
+ }: Props = $props();
18
+
19
+ const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
20
+ const styleProps = $derived(extractedStyleProps.styleProps);
21
+ const props = $derived(extractedStyleProps.restProps);
22
+ const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'search-input'));
23
+ </script>
24
+
25
+ <label
26
+ class="search-input"
27
+ style={rootStyle}
28
+ data-disabled={disabled ? 'true' : 'false'}
29
+ data-popover-radius-source={radiusSource ? 'true' : undefined}
30
+ >
31
+ <span class="search-input-icon" aria-hidden="true">
32
+ <SearchIcon class="size-4" />
33
+ </span>
34
+ <input
35
+ type="search"
36
+ bind:value
37
+ {disabled}
38
+ {placeholder}
39
+ class="search-input-field"
40
+ {...props}
41
+ />
42
+ </label>
43
+
44
+ <style>
45
+ .search-input {
46
+ display: inline-flex;
47
+ width: 100%;
48
+ align-items: center;
49
+ border: 1px solid var(--sveltely-border-color);
50
+ border-radius: var(--sveltely-border-radius);
51
+ background: white;
52
+ color: var(--color-zinc-900);
53
+ gap: var(--search-input-gap, calc(var(--sveltely-padding-x) * 0.67));
54
+ padding:
55
+ var(--search-input-padding-y, calc(var(--sveltely-padding-y) * 0.67))
56
+ var(--search-input-padding-x, var(--sveltely-padding-x))
57
+ var(--search-input-padding-y, calc(var(--sveltely-padding-y) * 0.67))
58
+ var(--search-input-padding-leading, calc(var(--sveltely-padding-y) * 0.67));
59
+ font-size: var(--search-input-font-size, 0.875rem);
60
+ line-height: 1.25rem;
61
+ transition: color 150ms, border-color 150ms, background-color 150ms;
62
+ }
63
+
64
+ .search-input:focus-within {
65
+ border-color: color-mix(in oklab, var(--sveltely-primary-color) 50%, white);
66
+ }
67
+
68
+ .search-input[data-disabled='true'] {
69
+ cursor: not-allowed;
70
+ opacity: 0.6;
71
+ }
72
+
73
+ .search-input-icon {
74
+ flex-shrink: 0;
75
+ color: var(--color-zinc-500);
76
+ }
77
+
78
+ .search-input-field {
79
+ min-width: 0;
80
+ flex: 1 1 auto;
81
+ background: transparent;
82
+ outline: none;
83
+ }
84
+
85
+ .search-input-field::-webkit-search-cancel-button {
86
+ appearance: none;
87
+ }
88
+ </style>
@@ -1,9 +1,9 @@
1
1
  import type { HTMLInputAttributes } from 'svelte/elements';
2
+ import { type StyleProps } from '../../../style/surface';
2
3
  type Props = {
3
4
  value?: string;
4
- confirmText?: string | null;
5
- inputClass?: string;
6
- } & Omit<HTMLInputAttributes, 'children' | 'type' | 'value'>;
5
+ radiusSource?: boolean;
6
+ } & StyleProps & Omit<HTMLInputAttributes, 'children' | 'type' | 'value' | 'class' | 'style'>;
7
7
  declare const SearchInput: import("svelte").Component<Props, {}, "value">;
8
8
  type SearchInput = ReturnType<typeof SearchInput>;
9
9
  export default SearchInput;
@@ -0,0 +1 @@
1
+ export { default } from './SearchInput.svelte';
@@ -0,0 +1 @@
1
+ export { default } from './SearchInput.svelte';
@@ -1,8 +1,7 @@
1
1
  <script module lang="ts">
2
2
  export const demo = {
3
3
  name: 'SegmentedPicker',
4
- description: 'Segmented selection between fixed options.',
5
- isProminent: false
4
+ description: 'Segmented selection between fixed options.'
6
5
  };
7
6
  </script>
8
7
 
@@ -1,7 +1,6 @@
1
1
  export declare const demo: {
2
2
  name: string;
3
3
  description: string;
4
- isProminent: boolean;
5
4
  };
6
5
  import SegmentedPicker from './SegmentedPicker.svelte';
7
6
  declare const SegmentedPicker: import("svelte").Component<Record<string, never>, {}, "">;
@@ -0,0 +1,106 @@
1
+ <script lang="ts">
2
+ import { extractStyleProps, surfaceStyle, type StyleProps } from '../../../style/surface';
3
+
4
+ type Option = {
5
+ label: string;
6
+ value: string;
7
+ disabled?: boolean;
8
+ };
9
+
10
+ let {
11
+ options,
12
+ value = $bindable(''),
13
+ disabled = false,
14
+ ...restProps
15
+ }: {
16
+ options: Option[];
17
+ value: string;
18
+ disabled?: boolean;
19
+ } & StyleProps & Record<string, unknown> = $props();
20
+
21
+ const extractedStyleProps = $derived.by(() => extractStyleProps(restProps));
22
+ const styleProps = $derived(extractedStyleProps.styleProps);
23
+ const props = $derived(extractedStyleProps.restProps);
24
+ const rootStyle = $derived.by(() => surfaceStyle(styleProps, 'segmented-picker'));
25
+ </script>
26
+
27
+ <div
28
+ class="segmented-picker hstack w-fit"
29
+ style={rootStyle}
30
+ class:segmented-picker-disabled={disabled}
31
+ {...props}
32
+ >
33
+ {#each options as option}
34
+ {#if option.disabled}
35
+ <span
36
+ class={`segmented-picker-button segmented-picker-button-disabled ${
37
+ option.value === value ? 'segmented-picker-button-disabled-selected' : ''
38
+ }`}
39
+ aria-disabled="true"
40
+ >
41
+ {option.label}
42
+ </span>
43
+ {:else if option.value === value}
44
+ <span class="segmented-picker-button segmented-picker-button-active">{option.label}</span>
45
+ {:else}
46
+ <button
47
+ type="button"
48
+ {disabled}
49
+ class="segmented-picker-button"
50
+ onclick={() => {
51
+ if (disabled) return;
52
+ value = option.value;
53
+ }}
54
+ >
55
+ {option.label}
56
+ </button>
57
+ {/if}
58
+ {/each}
59
+ </div>
60
+
61
+ <style>
62
+ .segmented-picker {
63
+ --segmented-picker-inset: var(--sveltely-inset);
64
+ --segmented-picker-font-size: calc(var(--sveltely-font-size) * 0.875);
65
+ --segmented-picker-scale: calc(var(--segmented-picker-font-size) / 0.875rem);
66
+ --sveltely-nested-inset: var(--segmented-picker-inset);
67
+ border-radius: var(--sveltely-border-radius);
68
+ background: var(--color-zinc-100);
69
+ gap: var(--segmented-picker-inset);
70
+ font-size: var(--segmented-picker-font-size);
71
+ padding: var(--segmented-picker-inset);
72
+ }
73
+
74
+ .segmented-picker-disabled {
75
+ opacity: 0.5;
76
+ filter: grayscale(1);
77
+ }
78
+
79
+ .segmented-picker-button {
80
+ border-radius: var(--sveltely-border-radius-nested);
81
+ transition: background-color 150ms;
82
+ padding:
83
+ calc(var(--sveltely-padding-y) * 0.33 * var(--segmented-picker-scale))
84
+ calc(var(--sveltely-padding-x) * 0.83 * var(--segmented-picker-scale));
85
+ }
86
+
87
+ .segmented-picker-button:hover:not(.segmented-picker-button-active) {
88
+ background: var(--sveltely-hover-color);
89
+ }
90
+
91
+ .segmented-picker-button-active {
92
+ background: var(--sveltely-primary-color);
93
+ color: white;
94
+ }
95
+
96
+ .segmented-picker-button-disabled {
97
+ cursor: not-allowed;
98
+ color: var(--color-zinc-400);
99
+ pointer-events: none;
100
+ }
101
+
102
+ .segmented-picker-button-disabled-selected {
103
+ background: color-mix(in oklab, var(--sveltely-primary-color) 35%, white);
104
+ color: var(--color-zinc-400);
105
+ }
106
+ </style>
@@ -1,3 +1,4 @@
1
+ import { type StyleProps } from '../../../style/surface';
1
2
  type Option = {
2
3
  label: string;
3
4
  value: string;
@@ -7,8 +8,7 @@ type $$ComponentProps = {
7
8
  options: Option[];
8
9
  value: string;
9
10
  disabled?: boolean;
10
- class?: string;
11
- };
11
+ } & StyleProps & Record<string, unknown>;
12
12
  declare const SegmentedPicker: import("svelte").Component<$$ComponentProps, {}, "value">;
13
13
  type SegmentedPicker = ReturnType<typeof SegmentedPicker>;
14
14
  export default SegmentedPicker;
@@ -0,0 +1 @@
1
+ export { default } from './SegmentedPicker.svelte';
@@ -0,0 +1 @@
1
+ export { default } from './SegmentedPicker.svelte';
@@ -7,19 +7,13 @@
7
7
 
8
8
  <script lang="ts">
9
9
  import Sheet from './Sheet.svelte';
10
-
11
- let open = $state(false);
12
10
  </script>
13
11
 
14
- <button
15
- type="button"
16
- class="rounded-full bg-zinc-900 px-3 py-2 text-sm text-white"
17
- onclick={() => (open = true)}
18
- >
19
- Open sheet
20
- </button>
12
+ <Sheet label="Example Sheet">
13
+ {#snippet trigger()}
14
+ <span>Open sheet</span>
15
+ {/snippet}
21
16
 
22
- <Sheet bind:open label="Example Sheet">
23
17
  <div class="vstack gap-3">
24
18
  <p class="text-sm text-zinc-700">This is a simple sheet example.</p>
25
19
  <div class="rounded border border-gray-200/70 p-3 text-sm text-gray-700">
@@ -27,12 +21,5 @@
27
21
  <div class="mt-2">Panel two content.</div>
28
22
  <div class="mt-2">Panel three content.</div>
29
23
  </div>
30
- <button
31
- type="button"
32
- class="rounded-full border border-zinc-300 px-3 py-2 text-sm text-zinc-800"
33
- onclick={() => (open = false)}
34
- >
35
- Close
36
- </button>
37
24
  </div>
38
25
  </Sheet>
@@ -0,0 +1,23 @@
1
+ export declare const demo: {
2
+ name: string;
3
+ description: string;
4
+ };
5
+ import Sheet from './Sheet.svelte';
6
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
7
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
8
+ $$bindings?: Bindings;
9
+ } & Exports;
10
+ (internal: unknown, props: {
11
+ $$events?: Events;
12
+ $$slots?: Slots;
13
+ }): Exports & {
14
+ $set?: any;
15
+ $on?: any;
16
+ };
17
+ z_$$bindings?: Bindings;
18
+ }
19
+ declare const Sheet: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
20
+ [evt: string]: CustomEvent<any>;
21
+ }, {}, {}, string>;
22
+ type Sheet = InstanceType<typeof Sheet>;
23
+ export default Sheet;