@orochibraru/ui 0.0.0 → 1.0.0-canary.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 (90) hide show
  1. package/README.md +97 -21
  2. package/dist/components/blocks/accent-toggle.svelte +85 -0
  3. package/dist/components/blocks/accent-toggle.svelte.d.ts +18 -0
  4. package/dist/components/blocks/bottom-nav.svelte +67 -0
  5. package/dist/components/blocks/bottom-nav.svelte.d.ts +18 -0
  6. package/dist/components/blocks/music-player/format-time.d.ts +2 -0
  7. package/dist/components/blocks/music-player/format-time.js +13 -0
  8. package/dist/components/blocks/music-player/labelled-slider.svelte +36 -0
  9. package/dist/components/blocks/music-player/labelled-slider.svelte.d.ts +15 -0
  10. package/dist/components/blocks/music-player/volume-control.svelte +48 -0
  11. package/dist/components/blocks/music-player/volume-control.svelte.d.ts +7 -0
  12. package/dist/components/blocks/music-player.svelte +263 -0
  13. package/dist/components/blocks/music-player.svelte.d.ts +26 -0
  14. package/dist/components/blocks/nav-cards.svelte +42 -0
  15. package/dist/components/blocks/nav-cards.svelte.d.ts +15 -0
  16. package/dist/components/blocks/new-password-fields.svelte +127 -0
  17. package/dist/components/blocks/new-password-fields.svelte.d.ts +19 -0
  18. package/dist/components/blocks/option-group.svelte +71 -0
  19. package/dist/components/blocks/option-group.svelte.d.ts +20 -0
  20. package/dist/components/blocks/otp-field.svelte +59 -0
  21. package/dist/components/blocks/otp-field.svelte.d.ts +12 -0
  22. package/dist/components/blocks/password-input.svelte +51 -0
  23. package/dist/components/blocks/password-input.svelte.d.ts +11 -0
  24. package/dist/components/blocks/stat-card.svelte +1 -1
  25. package/dist/components/blocks/tab-nav.svelte +38 -0
  26. package/dist/components/blocks/tab-nav.svelte.d.ts +14 -0
  27. package/dist/components/blocks/tab-section.svelte +48 -0
  28. package/dist/components/blocks/tab-section.svelte.d.ts +12 -0
  29. package/dist/components/blocks/theme-picker.svelte +69 -0
  30. package/dist/components/blocks/theme-picker.svelte.d.ts +16 -0
  31. package/dist/components/blocks/theme-toggle.svelte +68 -0
  32. package/dist/components/blocks/theme-toggle.svelte.d.ts +12 -0
  33. package/dist/components/blocks/video-player/center-controls.svelte +54 -0
  34. package/dist/components/blocks/video-player/center-controls.svelte.d.ts +10 -0
  35. package/dist/components/blocks/video-player/control-bar.svelte +184 -0
  36. package/dist/components/blocks/video-player/control-bar.svelte.d.ts +18 -0
  37. package/dist/components/blocks/video-player/control-button.svelte +54 -0
  38. package/dist/components/blocks/video-player/control-button.svelte.d.ts +13 -0
  39. package/dist/components/blocks/video-player/format.d.ts +9 -0
  40. package/dist/components/blocks/video-player/format.js +24 -0
  41. package/dist/components/blocks/video-player/gesture-feedback.svelte +32 -0
  42. package/dist/components/blocks/video-player/gesture-feedback.svelte.d.ts +7 -0
  43. package/dist/components/blocks/video-player/gestures.d.ts +13 -0
  44. package/dist/components/blocks/video-player/gestures.js +25 -0
  45. package/dist/components/blocks/video-player/keymap.d.ts +14 -0
  46. package/dist/components/blocks/video-player/keymap.js +55 -0
  47. package/dist/components/blocks/video-player/messages.d.ts +22 -0
  48. package/dist/components/blocks/video-player/messages.js +21 -0
  49. package/dist/components/blocks/video-player/option-menu.svelte +85 -0
  50. package/dist/components/blocks/video-player/option-menu.svelte.d.ts +18 -0
  51. package/dist/components/blocks/video-player/player.svelte.d.ts +37 -0
  52. package/dist/components/blocks/video-player/player.svelte.js +115 -0
  53. package/dist/components/blocks/video-player/scrub-bar.svelte +95 -0
  54. package/dist/components/blocks/video-player/scrub-bar.svelte.d.ts +12 -0
  55. package/dist/components/blocks/video-player/tap-gestures.svelte.d.ts +19 -0
  56. package/dist/components/blocks/video-player/tap-gestures.svelte.js +56 -0
  57. package/dist/components/blocks/video-player.svelte +288 -0
  58. package/dist/components/blocks/video-player.svelte.d.ts +29 -0
  59. package/dist/components/ui/accordion/accordion.svelte.d.ts +1 -1
  60. package/dist/components/ui/calendar/calendar.svelte.d.ts +1 -1
  61. package/dist/components/ui/command/command-dialog.svelte.d.ts +1 -1
  62. package/dist/components/ui/command/command-input.svelte.d.ts +1 -1
  63. package/dist/components/ui/command/command.svelte.d.ts +1 -1
  64. package/dist/components/ui/context-menu/context-menu-radio-group.svelte.d.ts +1 -1
  65. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +1 -1
  66. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +1 -1
  67. package/dist/components/ui/input/input.svelte +2 -2
  68. package/dist/components/ui/input/input.svelte.d.ts +1 -1
  69. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +2 -2
  70. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +1 -1
  71. package/dist/components/ui/input-group/input-group.svelte +1 -1
  72. package/dist/components/ui/input-otp/input-otp-slot.svelte +1 -1
  73. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +1 -1
  74. package/dist/components/ui/menubar/menubar-radio-group.svelte.d.ts +1 -1
  75. package/dist/components/ui/radio-group/radio-group.svelte.d.ts +1 -1
  76. package/dist/components/ui/range-calendar/range-calendar.svelte.d.ts +1 -1
  77. package/dist/components/ui/select/select-trigger.svelte +1 -1
  78. package/dist/components/ui/sidebar/sidebar-input.svelte.d.ts +2 -2
  79. package/dist/components/ui/slider/slider.svelte.d.ts +1 -1
  80. package/dist/components/ui/tabs/tabs.svelte.d.ts +1 -1
  81. package/dist/components/ui/textarea/textarea.svelte +1 -1
  82. package/dist/components/ui/textarea/textarea.svelte.d.ts +1 -1
  83. package/dist/components/ui/toggle/toggle.svelte.d.ts +1 -1
  84. package/dist/components/ui/toggle-group/toggle-group-item.svelte.d.ts +1 -1
  85. package/dist/components/ui/toggle-group/toggle-group.svelte.d.ts +1 -1
  86. package/dist/mcp-content.json +1 -0
  87. package/dist/mcp.js +83 -0
  88. package/dist/password.d.ts +11 -0
  89. package/dist/password.js +38 -0
  90. package/package.json +15 -3
@@ -0,0 +1,56 @@
1
+ import { DOUBLE_TAP_MS, isDoubleTap, } from "./gestures.js";
2
+ import { SEEK_SECONDS } from "./keymap.js";
3
+ const FEEDBACK_MS = 700;
4
+ /**
5
+ * Taps on the picture on a touch screen. A tap in the middle runs `onTap` at once; on a side it waits out the
6
+ * double-tap window, and a second tap there seeks instead, as does each further quick tap, adding up.
7
+ */
8
+ export class TapGestures {
9
+ feedback = $state(null);
10
+ #seek;
11
+ #onTap;
12
+ #lastTap = null;
13
+ #burst = null;
14
+ #tapTimer;
15
+ #feedbackTimer;
16
+ constructor(actions) {
17
+ this.#seek = actions.seek;
18
+ this.#onTap = actions.onTap;
19
+ }
20
+ tap = (point, zone) => {
21
+ clearTimeout(this.#tapTimer);
22
+ if (zone === "center") {
23
+ this.#burst = null;
24
+ this.#lastTap = null;
25
+ this.#onTap();
26
+ return;
27
+ }
28
+ const inBurst = this.#burst?.side === zone && point.time <= this.#burst.until;
29
+ if (inBurst ||
30
+ (this.#lastTap?.zone === zone && isDoubleTap(this.#lastTap, point))) {
31
+ this.#lastTap = null;
32
+ this.#seekSide(zone, point.time);
33
+ return;
34
+ }
35
+ this.#burst = null;
36
+ this.#lastTap = { ...point, zone };
37
+ this.#tapTimer = setTimeout(() => {
38
+ this.#lastTap = null;
39
+ this.#onTap();
40
+ }, DOUBLE_TAP_MS);
41
+ };
42
+ dispose = () => {
43
+ clearTimeout(this.#tapTimer);
44
+ clearTimeout(this.#feedbackTimer);
45
+ };
46
+ #seekSide(side, time) {
47
+ this.#seek(side === "left" ? -SEEK_SECONDS : SEEK_SECONDS);
48
+ const seconds = (this.#burst?.side === side ? this.#burst.seconds : 0) + SEEK_SECONDS;
49
+ this.#burst = { side, until: time + DOUBLE_TAP_MS, seconds };
50
+ this.feedback = { side, seconds };
51
+ clearTimeout(this.#feedbackTimer);
52
+ this.#feedbackTimer = setTimeout(() => {
53
+ this.feedback = null;
54
+ }, FEEDBACK_MS);
55
+ }
56
+ }
@@ -0,0 +1,288 @@
1
+ <script lang="ts" module>
2
+ export type { Chapter } from "./video-player/format.js";
3
+
4
+ export interface VideoTrack {
5
+ src: string;
6
+ label: string;
7
+ srclang?: string;
8
+ kind?: "subtitles" | "captions";
9
+ default?: boolean;
10
+ }
11
+ </script>
12
+
13
+ <script lang="ts">
14
+ import CenterControls from "./video-player/center-controls.svelte";
15
+ import ControlBar from "./video-player/control-bar.svelte";
16
+ import type { Chapter } from "./video-player/format.js";
17
+ import GestureFeedback from "./video-player/gesture-feedback.svelte";
18
+ import { gestureZone } from "./video-player/gestures.js";
19
+ import { handlePlayerKey } from "./video-player/keymap.js";
20
+ import { defaultMessages } from "./video-player/messages.js";
21
+ import { VideoPlayerState } from "./video-player/player.svelte.js";
22
+ import { TapGestures } from "./video-player/tap-gestures.svelte.js";
23
+ import { Spinner } from "../ui/spinner/index.js";
24
+ import * as Tooltip from "../ui/tooltip/index.js";
25
+ import { haptic } from "../../haptics.js";
26
+ import { cn } from "../../utils.js";
27
+
28
+ interface Props {
29
+ src: string;
30
+ poster?: string;
31
+ title?: string;
32
+ tracks?: VideoTrack[];
33
+ chapters?: Chapter[];
34
+ autoplay?: boolean;
35
+ currentTime?: number;
36
+ paused?: boolean;
37
+ onplay?: () => void;
38
+ onpause?: () => void;
39
+ onended?: () => void;
40
+ onerror?: () => void;
41
+ class?: string;
42
+ messages?: Partial<typeof defaultMessages>;
43
+ }
44
+
45
+ let {
46
+ src,
47
+ poster,
48
+ title,
49
+ tracks = [],
50
+ chapters = [],
51
+ autoplay = false,
52
+ currentTime = $bindable(0),
53
+ paused = $bindable(true),
54
+ onplay,
55
+ onpause,
56
+ onended,
57
+ onerror,
58
+ class: className,
59
+ messages = {},
60
+ }: Props = $props();
61
+
62
+ const text = $derived({ ...defaultMessages, ...messages });
63
+
64
+ let container = $state<HTMLDivElement | null>(null);
65
+ let video = $state<HTMLVideoElement | null>(null);
66
+ let pictureInPicture = $state(false);
67
+
68
+ const player = new VideoPlayerState({
69
+ video: () => video,
70
+ container: () => container,
71
+ });
72
+
73
+ const loading = $derived(
74
+ !player.failed && (player.seeking || !paused) && player.readyState < 3,
75
+ );
76
+ const controlsShown = $derived(
77
+ player.controlsVisible || paused || player.menuOpen || player.failed,
78
+ );
79
+ const portalTarget = $derived<HTMLElement | string>(
80
+ player.fullscreen && container ? container : "body",
81
+ );
82
+
83
+ let activeSubtitle = $derived(tracks.findIndex((track) => track.default));
84
+
85
+ $effect(() => {
86
+ const textTracks = video?.textTracks;
87
+ if (!textTracks || textTracks.length !== tracks.length) {
88
+ return;
89
+ }
90
+ Array.from(textTracks).forEach((track, index) => {
91
+ track.mode = index === activeSubtitle ? "showing" : "disabled";
92
+ });
93
+ });
94
+
95
+ $effect(() => {
96
+ pictureInPicture = document.pictureInPictureEnabled === true;
97
+ return player.dispose;
98
+ });
99
+
100
+ function cycleSubtitles() {
101
+ if (tracks.length > 0) {
102
+ activeSubtitle =
103
+ activeSubtitle + 1 < tracks.length ? activeSubtitle + 1 : -1;
104
+ }
105
+ }
106
+
107
+ function touchTap() {
108
+ if (controlsShown && !paused) {
109
+ player.hideControls();
110
+ } else {
111
+ player.nudgeControls();
112
+ }
113
+ }
114
+
115
+ const gestures = new TapGestures({
116
+ seek: (delta) => {
117
+ haptic("tap");
118
+ player.seek(delta);
119
+ },
120
+ onTap: touchTap,
121
+ });
122
+ $effect(() => gestures.dispose);
123
+
124
+ let pointerType = "mouse";
125
+ let engaged = false;
126
+
127
+ function onvideoclick(event: MouseEvent) {
128
+ if (pointerType === "mouse") {
129
+ player.togglePlay();
130
+ return;
131
+ }
132
+ const rect = (event.currentTarget as Element).getBoundingClientRect();
133
+ const x = event.clientX - rect.left;
134
+ gestures.tap(
135
+ { x, y: event.clientY - rect.top, time: event.timeStamp },
136
+ gestureZone(x, rect.width),
137
+ );
138
+ }
139
+
140
+ function onkeydown(event: KeyboardEvent) {
141
+ if (!(engaged || container?.contains(event.target as Node))) {
142
+ return;
143
+ }
144
+ const handled = handlePlayerKey(event, {
145
+ togglePlay: player.togglePlay,
146
+ seek: player.seek,
147
+ adjustVolume: player.adjustVolume,
148
+ toggleMute: player.toggleMute,
149
+ toggleFullscreen: () => void player.toggleFullscreen(),
150
+ cycleSubtitles,
151
+ });
152
+ if (handled) {
153
+ player.nudgeControls();
154
+ }
155
+ }
156
+ </script>
157
+
158
+ <svelte:window
159
+ {onkeydown}
160
+ onpointerdown={(event) => {
161
+ engaged = container?.contains(event.target as Node) ?? false;
162
+ }}
163
+ />
164
+ <svelte:document onfullscreenchange={player.syncFullscreen} />
165
+
166
+ <Tooltip.Provider delayDuration={300}>
167
+ <div
168
+ bind:this={container}
169
+ role="region"
170
+ aria-label={title ?? text.region}
171
+ data-fullscreen={player.fullscreen || undefined}
172
+ class={cn(
173
+ "group/player relative isolate aspect-video w-full overflow-hidden rounded-2xl bg-black select-none data-fullscreen:rounded-none",
174
+ !controlsShown && "cursor-none",
175
+ className,
176
+ )}
177
+ onpointermove={(event) => {
178
+ if (event.pointerType === "mouse") {
179
+ player.nudgeControls();
180
+ }
181
+ }}
182
+ onpointerleave={(event) => {
183
+ if (event.pointerType === "mouse" && !paused && !player.menuOpen) {
184
+ player.hideControls();
185
+ }
186
+ }}
187
+ >
188
+ <!-- svelte-ignore a11y_media_has_caption -->
189
+ <video
190
+ bind:this={video}
191
+ bind:currentTime
192
+ bind:paused
193
+ bind:duration={player.duration}
194
+ bind:volume={player.volume}
195
+ bind:muted={player.muted}
196
+ bind:playbackRate={player.rate}
197
+ bind:buffered={player.buffered}
198
+ bind:readyState={player.readyState}
199
+ bind:seeking={player.seeking}
200
+ bind:ended={player.ended}
201
+ {src}
202
+ {poster}
203
+ {autoplay}
204
+ playsinline
205
+ preload="metadata"
206
+ class="size-full object-contain"
207
+ onpointerdown={(event) => (pointerType = event.pointerType)}
208
+ onclick={onvideoclick}
209
+ ondblclick={() => {
210
+ if (pointerType === "mouse") {
211
+ void player.toggleFullscreen();
212
+ }
213
+ }}
214
+ onloadstart={() => (player.failed = false)}
215
+ onerror={() => {
216
+ player.failed = true;
217
+ onerror?.();
218
+ }}
219
+ onplay={() => {
220
+ player.nudgeControls();
221
+ onplay?.();
222
+ }}
223
+ onpause={() => onpause?.()}
224
+ onended={() => onended?.()}
225
+ >
226
+ {#each tracks as track (track.src)}
227
+ <track
228
+ src={track.src}
229
+ label={track.label}
230
+ srclang={track.srclang}
231
+ kind={track.kind ?? "subtitles"}
232
+ default={track.default}
233
+ />
234
+ {/each}
235
+ </video>
236
+
237
+ <GestureFeedback feedback={gestures.feedback} />
238
+
239
+ {#if loading}
240
+ <div
241
+ class="pointer-events-none absolute inset-0 flex items-center justify-center"
242
+ >
243
+ <Spinner aria-label={text.loading} class="size-10 text-white" />
244
+ </div>
245
+ {/if}
246
+
247
+ {#if player.failed}
248
+ <div
249
+ role="alert"
250
+ class="absolute inset-0 flex items-center justify-center bg-black/70 p-6 text-center text-sm font-medium text-white"
251
+ >
252
+ {text.error}
253
+ </div>
254
+ {/if}
255
+
256
+ <div
257
+ class={cn(
258
+ "pointer-events-none absolute inset-0 flex flex-col pt-safe-top pr-safe-right pb-safe-bottom pl-safe-left transition-[opacity,visibility] duration-200",
259
+ controlsShown && !player.failed ? "opacity-100" : "invisible opacity-0",
260
+ )}
261
+ >
262
+ {#if title}
263
+ <div class="bg-linear-to-b from-black/60 to-transparent px-4 pt-3 pb-8">
264
+ <p class="truncate font-semibold text-white drop-shadow">
265
+ {title}
266
+ </p>
267
+ </div>
268
+ {/if}
269
+ <div class="flex min-h-0 flex-1 items-center justify-center">
270
+ {#if !loading}
271
+ <CenterControls {player} {paused} {text} />
272
+ {/if}
273
+ </div>
274
+ <ControlBar
275
+ {player}
276
+ {paused}
277
+ {currentTime}
278
+ {chapters}
279
+ subtitles={tracks.map((track) => track.label)}
280
+ {activeSubtitle}
281
+ onsubtitlechange={(index) => (activeSubtitle = index)}
282
+ {pictureInPicture}
283
+ {portalTarget}
284
+ {text}
285
+ />
286
+ </div>
287
+ </div>
288
+ </Tooltip.Provider>
@@ -0,0 +1,29 @@
1
+ export type { Chapter } from "./video-player/format.js";
2
+ export interface VideoTrack {
3
+ src: string;
4
+ label: string;
5
+ srclang?: string;
6
+ kind?: "subtitles" | "captions";
7
+ default?: boolean;
8
+ }
9
+ import type { Chapter } from "./video-player/format.js";
10
+ import { defaultMessages } from "./video-player/messages.js";
11
+ interface Props {
12
+ src: string;
13
+ poster?: string;
14
+ title?: string;
15
+ tracks?: VideoTrack[];
16
+ chapters?: Chapter[];
17
+ autoplay?: boolean;
18
+ currentTime?: number;
19
+ paused?: boolean;
20
+ onplay?: () => void;
21
+ onpause?: () => void;
22
+ onended?: () => void;
23
+ onerror?: () => void;
24
+ class?: string;
25
+ messages?: Partial<typeof defaultMessages>;
26
+ }
27
+ declare const VideoPlayer: import("svelte").Component<Props, {}, "paused" | "currentTime">;
28
+ type VideoPlayer = ReturnType<typeof VideoPlayer>;
29
+ export default VideoPlayer;
@@ -1,4 +1,4 @@
1
1
  import { Accordion as AccordionPrimitive } from "bits-ui";
2
- declare const Accordion: import("svelte").Component<AccordionPrimitive.RootProps, {}, "ref" | "value">;
2
+ declare const Accordion: import("svelte").Component<AccordionPrimitive.RootProps, {}, "value" | "ref">;
3
3
  type Accordion = ReturnType<typeof Accordion>;
4
4
  export default Accordion;
@@ -16,6 +16,6 @@ type $$ComponentProps = WithoutChildrenOrChild<CalendarPrimitive.RootProps> & {
16
16
  outsideMonth: boolean;
17
17
  }]>;
18
18
  };
19
- declare const Calendar: import("svelte").Component<$$ComponentProps, {}, "ref" | "placeholder" | "value">;
19
+ declare const Calendar: import("svelte").Component<$$ComponentProps, {}, "value" | "placeholder" | "ref">;
20
20
  type Calendar = ReturnType<typeof Calendar>;
21
21
  export default Calendar;
@@ -9,6 +9,6 @@ type $$ComponentProps = WithoutChildrenOrChild<DialogPrimitive.RootProps> & With
9
9
  showCloseButton?: boolean;
10
10
  class?: string;
11
11
  };
12
- declare const CommandDialog: import("svelte").Component<$$ComponentProps, {}, "ref" | "value" | "open">;
12
+ declare const CommandDialog: import("svelte").Component<$$ComponentProps, {}, "value" | "ref" | "open">;
13
13
  type CommandDialog = ReturnType<typeof CommandDialog>;
14
14
  export default CommandDialog;
@@ -3,6 +3,6 @@ type $$ComponentProps = CommandPrimitive.InputProps & {
3
3
  wrapperClass?: string;
4
4
  groupClass?: string;
5
5
  };
6
- declare const CommandInput: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
6
+ declare const CommandInput: import("svelte").Component<$$ComponentProps, {}, "value" | "ref">;
7
7
  type CommandInput = ReturnType<typeof CommandInput>;
8
8
  export default CommandInput;
@@ -3,6 +3,6 @@ export type CommandRootApi = CommandPrimitive.Root;
3
3
  type $$ComponentProps = CommandPrimitive.RootProps & {
4
4
  api?: CommandRootApi | null;
5
5
  };
6
- declare const Command: import("svelte").Component<$$ComponentProps, {}, "ref" | "value" | "api">;
6
+ declare const Command: import("svelte").Component<$$ComponentProps, {}, "value" | "ref" | "api">;
7
7
  type Command = ReturnType<typeof Command>;
8
8
  export default Command;
@@ -1,4 +1,4 @@
1
1
  import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
2
- declare const ContextMenuRadioGroup: import("svelte").Component<ContextMenuPrimitive.RadioGroupProps, {}, "ref" | "value">;
2
+ declare const ContextMenuRadioGroup: import("svelte").Component<ContextMenuPrimitive.RadioGroupProps, {}, "value" | "ref">;
3
3
  type ContextMenuRadioGroup = ReturnType<typeof ContextMenuRadioGroup>;
4
4
  export default ContextMenuRadioGroup;
@@ -1,4 +1,4 @@
1
1
  import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- declare const DropdownMenuCheckboxGroup: import("svelte").Component<DropdownMenuPrimitive.CheckboxGroupProps, {}, "ref" | "value">;
2
+ declare const DropdownMenuCheckboxGroup: import("svelte").Component<DropdownMenuPrimitive.CheckboxGroupProps, {}, "value" | "ref">;
3
3
  type DropdownMenuCheckboxGroup = ReturnType<typeof DropdownMenuCheckboxGroup>;
4
4
  export default DropdownMenuCheckboxGroup;
@@ -1,4 +1,4 @@
1
1
  import { DropdownMenu as DropdownMenuPrimitive } from "bits-ui";
2
- declare const DropdownMenuRadioGroup: import("svelte").Component<DropdownMenuPrimitive.RadioGroupProps, {}, "ref" | "value">;
2
+ declare const DropdownMenuRadioGroup: import("svelte").Component<DropdownMenuPrimitive.RadioGroupProps, {}, "value" | "ref">;
3
3
  type DropdownMenuRadioGroup = ReturnType<typeof DropdownMenuRadioGroup>;
4
4
  export default DropdownMenuRadioGroup;
@@ -44,7 +44,7 @@
44
44
  bind:this={ref}
45
45
  data-slot={dataSlot}
46
46
  class={cn(
47
- "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
47
+ "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-white px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
48
48
  className,
49
49
  )}
50
50
  type="file"
@@ -58,7 +58,7 @@
58
58
  bind:this={ref}
59
59
  data-slot={dataSlot}
60
60
  class={cn(
61
- "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-transparent px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
61
+ "dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-md border bg-white px-2.5 py-1 text-base shadow-xs transition-[color,box-shadow] file:h-7 file:text-sm file:font-medium focus-visible:ring-3 aria-invalid:ring-3 md:text-sm w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
62
62
  className,
63
63
  )}
64
64
  {type}
@@ -8,6 +8,6 @@ type Props = WithElementRef<Omit<HTMLInputAttributes, "type"> & ({
8
8
  type?: InputType;
9
9
  files?: undefined;
10
10
  })>;
11
- declare const Input: import("svelte").Component<Props, {}, "ref" | "value" | "files">;
11
+ declare const Input: import("svelte").Component<Props, {}, "value" | "ref" | "files">;
12
12
  type Input = ReturnType<typeof Input>;
13
13
  export default Input;
@@ -2,10 +2,10 @@ declare const InputGroupInput: import("svelte").Component<(Omit<import("svelte/e
2
2
  type: "file";
3
3
  files?: FileList;
4
4
  } | {
5
- type?: "number" | "submit" | "reset" | "button" | "search" | "checkbox" | "radio" | (string & {}) | "text" | "tel" | "url" | "email" | "hidden" | "color" | "date" | "month" | "datetime-local" | "image" | "password" | "range" | "time" | "week";
5
+ type?: "number" | "hidden" | "color" | "submit" | "reset" | "button" | "search" | "checkbox" | "radio" | (string & {}) | "text" | "tel" | "url" | "email" | "password" | "date" | "month" | "datetime-local" | "image" | "range" | "time" | "week";
6
6
  files?: undefined;
7
7
  })) & {
8
8
  ref?: HTMLElement | null | undefined;
9
- }, {}, "ref" | "value">;
9
+ }, {}, "value" | "ref">;
10
10
  type InputGroupInput = ReturnType<typeof InputGroupInput>;
11
11
  export default InputGroupInput;
@@ -1,3 +1,3 @@
1
- declare const InputGroupTextarea: import("svelte").Component<Omit<import("../../../utils.js").WithElementRef<import("svelte/elements").HTMLTextareaAttributes>, "children">, {}, "ref" | "value">;
1
+ declare const InputGroupTextarea: import("svelte").Component<Omit<import("../../../utils.js").WithElementRef<import("svelte/elements").HTMLTextareaAttributes>, "children">, {}, "value" | "ref">;
2
2
  type InputGroupTextarea = ReturnType<typeof InputGroupTextarea>;
3
3
  export default InputGroupTextarea;
@@ -16,7 +16,7 @@
16
16
  data-slot="input-group"
17
17
  role="group"
18
18
  class={cn(
19
- "group/input-group border-input dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",
19
+ "group/input-group border-input bg-white dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-9 rounded-md border shadow-xs transition-[color,box-shadow] in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-3 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto",
20
20
  className,
21
21
  )}
22
22
  {...props}
@@ -16,7 +16,7 @@
16
16
  bind:ref
17
17
  data-slot="input-otp-slot"
18
18
  class={cn(
19
- "dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-3 relative flex items-center justify-center data-[active=true]:z-10",
19
+ "bg-white dark:bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:ring-3 relative flex items-center justify-center data-[active=true]:z-10",
20
20
  className,
21
21
  )}
22
22
  {...restProps}
@@ -1,4 +1,4 @@
1
1
  import { PinInput as InputOTPPrimitive } from "bits-ui";
2
- declare const InputOtp: import("svelte").Component<InputOTPPrimitive.RootProps, {}, "ref" | "value">;
2
+ declare const InputOtp: import("svelte").Component<InputOTPPrimitive.RootProps, {}, "value" | "ref">;
3
3
  type InputOtp = ReturnType<typeof InputOtp>;
4
4
  export default InputOtp;
@@ -1,4 +1,4 @@
1
1
  import { Menubar as MenubarPrimitive } from "bits-ui";
2
- declare const MenubarRadioGroup: import("svelte").Component<MenubarPrimitive.RadioGroupProps, {}, "ref" | "value">;
2
+ declare const MenubarRadioGroup: import("svelte").Component<MenubarPrimitive.RadioGroupProps, {}, "value" | "ref">;
3
3
  type MenubarRadioGroup = ReturnType<typeof MenubarRadioGroup>;
4
4
  export default MenubarRadioGroup;
@@ -1,4 +1,4 @@
1
1
  import { RadioGroup as RadioGroupPrimitive } from "bits-ui";
2
- declare const RadioGroup: import("svelte").Component<RadioGroupPrimitive.RootProps, {}, "ref" | "value">;
2
+ declare const RadioGroup: import("svelte").Component<RadioGroupPrimitive.RootProps, {}, "value" | "ref">;
3
3
  type RadioGroup = ReturnType<typeof RadioGroup>;
4
4
  export default RadioGroup;
@@ -15,6 +15,6 @@ type $$ComponentProps = WithoutChildrenOrChild<RangeCalendarPrimitive.RootProps>
15
15
  outsideMonth: boolean;
16
16
  }]>;
17
17
  };
18
- declare const RangeCalendar: import("svelte").Component<$$ComponentProps, {}, "ref" | "placeholder" | "value">;
18
+ declare const RangeCalendar: import("svelte").Component<$$ComponentProps, {}, "value" | "placeholder" | "ref">;
19
19
  type RangeCalendar = ReturnType<typeof RangeCalendar>;
20
20
  export default RangeCalendar;
@@ -20,7 +20,7 @@
20
20
  data-slot="select-trigger"
21
21
  data-size={size}
22
22
  class={cn(
23
- "border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-transparent py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
23
+ "border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-md border bg-white py-2 pr-2 pl-2.5 text-sm shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0",
24
24
  className,
25
25
  )}
26
26
  {...restProps}
@@ -2,10 +2,10 @@ declare const SidebarInput: import("svelte").Component<(Omit<import("svelte/elem
2
2
  type: "file";
3
3
  files?: FileList;
4
4
  } | {
5
- type?: "number" | "submit" | "reset" | "button" | "search" | "checkbox" | "radio" | (string & {}) | "text" | "tel" | "url" | "email" | "hidden" | "color" | "date" | "month" | "datetime-local" | "image" | "password" | "range" | "time" | "week";
5
+ type?: "number" | "hidden" | "color" | "submit" | "reset" | "button" | "search" | "checkbox" | "radio" | (string & {}) | "text" | "tel" | "url" | "email" | "password" | "date" | "month" | "datetime-local" | "image" | "range" | "time" | "week";
6
6
  files?: undefined;
7
7
  })) & {
8
8
  ref?: HTMLElement | null | undefined;
9
- }, {}, "ref" | "value">;
9
+ }, {}, "value" | "ref">;
10
10
  type SidebarInput = ReturnType<typeof SidebarInput>;
11
11
  export default SidebarInput;
@@ -1,5 +1,5 @@
1
1
  import { Slider as SliderPrimitive } from "bits-ui";
2
2
  import { type WithoutChildrenOrChild } from "../../../utils.js";
3
- declare const Slider: import("svelte").Component<WithoutChildrenOrChild<SliderPrimitive.RootProps>, {}, "ref" | "value">;
3
+ declare const Slider: import("svelte").Component<WithoutChildrenOrChild<SliderPrimitive.RootProps>, {}, "value" | "ref">;
4
4
  type Slider = ReturnType<typeof Slider>;
5
5
  export default Slider;
@@ -1,4 +1,4 @@
1
1
  import { Tabs as TabsPrimitive } from "bits-ui";
2
- declare const Tabs: import("svelte").Component<TabsPrimitive.RootProps, {}, "ref" | "value">;
2
+ declare const Tabs: import("svelte").Component<TabsPrimitive.RootProps, {}, "value" | "ref">;
3
3
  type Tabs = ReturnType<typeof Tabs>;
4
4
  export default Tabs;
@@ -16,7 +16,7 @@
16
16
  bind:this={ref}
17
17
  data-slot={dataSlot}
18
18
  class={cn(
19
- "border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
19
+ "border-input dark:bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-md border bg-white px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] focus-visible:ring-3 aria-invalid:ring-3 md:text-sm flex field-sizing-content min-h-16 w-full outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
20
20
  className,
21
21
  )}
22
22
  bind:value
@@ -1,5 +1,5 @@
1
1
  import type { HTMLTextareaAttributes } from "svelte/elements";
2
2
  import { type WithElementRef } from "../../../utils.js";
3
- declare const Textarea: import("svelte").Component<Omit<WithElementRef<HTMLTextareaAttributes>, "children">, {}, "ref" | "value">;
3
+ declare const Textarea: import("svelte").Component<Omit<WithElementRef<HTMLTextareaAttributes>, "children">, {}, "value" | "ref">;
4
4
  type Textarea = ReturnType<typeof Textarea>;
5
5
  export default Textarea;
@@ -38,6 +38,6 @@ type $$ComponentProps = TogglePrimitive.RootProps & {
38
38
  variant?: ToggleVariant;
39
39
  size?: ToggleSize;
40
40
  };
41
- declare const Toggle: import("svelte").Component<$$ComponentProps, {}, "ref" | "pressed">;
41
+ declare const Toggle: import("svelte").Component<$$ComponentProps, {}, "pressed" | "ref">;
42
42
  type Toggle = ReturnType<typeof Toggle>;
43
43
  export default Toggle;
@@ -1,6 +1,6 @@
1
1
  import { ToggleGroup as ToggleGroupPrimitive } from "bits-ui";
2
2
  import { type ToggleVariants } from "../toggle/index.js";
3
3
  type $$ComponentProps = ToggleGroupPrimitive.ItemProps & ToggleVariants;
4
- declare const ToggleGroupItem: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
4
+ declare const ToggleGroupItem: import("svelte").Component<$$ComponentProps, {}, "value" | "ref">;
5
5
  type ToggleGroupItem = ReturnType<typeof ToggleGroupItem>;
6
6
  export default ToggleGroupItem;
@@ -12,6 +12,6 @@ type $$ComponentProps = ToggleGroupPrimitive.RootProps & ToggleVariants & {
12
12
  spacing?: number;
13
13
  orientation?: "horizontal" | "vertical";
14
14
  };
15
- declare const ToggleGroup: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
15
+ declare const ToggleGroup: import("svelte").Component<$$ComponentProps, {}, "value" | "ref">;
16
16
  type ToggleGroup = ReturnType<typeof ToggleGroup>;
17
17
  export default ToggleGroup;