@stealthscale/component-disclosure 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.
package/dist/index.js ADDED
@@ -0,0 +1,2072 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
+ import { a as recipe, i as recipe$1, n as recipe$3, r as recipe$2, t as recipe$4 } from "./recipe-BdO9ZFWU.js";
3
+ import { c } from "react/compiler-runtime";
4
+ import { useEffect, useId } from "react";
5
+ import { mergeProps, normalizeProps, useMachine } from "@zag-js/react";
6
+ import { createSlotRecipeContext } from "@stealthscale/theme";
7
+ import "@stealthscale/theme/authoring";
8
+ import * as collapsible from "@zag-js/collapsible";
9
+ import { createRequiredContext } from "@stealthscale/hooks";
10
+ import { jsx } from "react/jsx-runtime";
11
+ import * as menu from "@zag-js/menu";
12
+ import * as popover from "@zag-js/popover";
13
+ import * as tabs from "@zag-js/tabs";
14
+ import * as tooltip from "@zag-js/tooltip";
15
+ //#region src/collapsible/context.ts
16
+ /**
17
+ * Binds the collapsible's recipe to the elements that draw its parts.
18
+ *
19
+ * @remarks
20
+ * Apart from the recipe, because an application's compiler reads the recipe at build time and
21
+ * the binding needs the runtime. Apart from the machine, because the recipe decides how a part
22
+ * is drawn and the machine decides what it does.
23
+ */
24
+ /**
25
+ * Binds the recipe once. The root provides the variants and every other part reads them.
26
+ */
27
+ const { withContext: withContext$4, withProvider: withProvider$4 } = createSlotRecipeContext(recipe);
28
+ //#endregion
29
+ //#region src/stated.ts
30
+ /**
31
+ * Answers the settings a caller actually stated.
32
+ *
33
+ * @typeParam Options - The settings a caller handed over.
34
+ * @param options - Everything the machine's own splitter took out of the root's props.
35
+ * @returns The same settings, less the ones nobody set.
36
+ */
37
+ function stated(options) {
38
+ const set = Object.entries(options).filter(([, value]) => value !== void 0);
39
+ return Object.fromEntries(set);
40
+ }
41
+ //#endregion
42
+ //#region src/collapsible/machine.ts
43
+ /**
44
+ * Runs the collapsible's machine and carries what it answers down to the parts.
45
+ *
46
+ * @remarks
47
+ * The machine is connected once, at the root, so every part reads one api from one running
48
+ * machine. A part drawn outside the root throws where it was written rather than drawing wrongly
49
+ * and saying nothing.
50
+ * The id is the machine's and never an element's. It builds the ARIA references between the
51
+ * trigger and the content from it, so a caller naming their own passes it here and the
52
+ * references follow.
53
+ */
54
+ /**
55
+ * Hands the running machine to every part, and reads it back.
56
+ */
57
+ const [ApiProvider$4, useCollapsible] = createRequiredContext("Collapsible");
58
+ /**
59
+ * Starts the machine and connects it.
60
+ *
61
+ * @param options - The settings the caller handed the root, less the id where it named none.
62
+ * @returns The api every part reads.
63
+ */
64
+ function useCollapsibleMachine(options) {
65
+ const $ = c(6);
66
+ if ($[0] !== "de66f55fd9be865c47fd3fb5cc091a9b0c545a481f56227cbc82ec9dedc87039") {
67
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
68
+ $[0] = "de66f55fd9be865c47fd3fb5cc091a9b0c545a481f56227cbc82ec9dedc87039";
69
+ }
70
+ const generated = useId();
71
+ let t0;
72
+ if ($[1] !== options) {
73
+ t0 = stated(options);
74
+ $[1] = options;
75
+ $[2] = t0;
76
+ } else t0 = $[2];
77
+ const t1 = options.id ?? generated;
78
+ let t2;
79
+ if ($[3] !== t0 || $[4] !== t1) {
80
+ t2 = {
81
+ ...t0,
82
+ id: t1
83
+ };
84
+ $[3] = t0;
85
+ $[4] = t1;
86
+ $[5] = t2;
87
+ } else t2 = $[5];
88
+ return collapsible.connect(useMachine(collapsible.machine, t2), normalizeProps);
89
+ }
90
+ /**
91
+ * Splits what the machine reads from what the element does.
92
+ *
93
+ * @remarks
94
+ * The machine states which props are its own, so the root never lists them and never drifts from
95
+ * the version it is built against.
96
+ */
97
+ const splitCollapsibleProps = collapsible.splitProps;
98
+ //#endregion
99
+ //#region src/collapsible/content.tsx
100
+ /**
101
+ * Draws the block at the room the root states.
102
+ */
103
+ const Shown$1 = withContext$4("div", "content");
104
+ /**
105
+ * Appears and goes as the trigger is pressed.
106
+ *
107
+ * @param props - Everything a styled div takes.
108
+ * @returns The block, measured and named by the machine.
109
+ */
110
+ function Content$4(props) {
111
+ const $ = c(6);
112
+ if ($[0] !== "e1d441bb88adce5d2e6053a5e0768c96ef47604e0ba21e6b1c494c2d3a0eb0e1") {
113
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
114
+ $[0] = "e1d441bb88adce5d2e6053a5e0768c96ef47604e0ba21e6b1c494c2d3a0eb0e1";
115
+ }
116
+ const api = useCollapsible();
117
+ let t0;
118
+ if ($[1] !== api || $[2] !== props) {
119
+ t0 = mergeProps(api.getContentProps(), props);
120
+ $[1] = api;
121
+ $[2] = props;
122
+ $[3] = t0;
123
+ } else t0 = $[3];
124
+ let t1;
125
+ if ($[4] !== t0) {
126
+ t1 = /* @__PURE__ */ jsx(Shown$1, { ...t0 });
127
+ $[4] = t0;
128
+ $[5] = t1;
129
+ } else t1 = $[5];
130
+ return t1;
131
+ }
132
+ //#endregion
133
+ //#region src/collapsible/indicator.tsx
134
+ /**
135
+ * Draws the mark at the box the root states.
136
+ */
137
+ const Turned$1 = withContext$4("span", "indicator");
138
+ /**
139
+ * Turns half a revolution while the block is open.
140
+ *
141
+ * @param props - Everything a styled span takes.
142
+ * @returns The mark, turned to whichever way the machine is.
143
+ */
144
+ function Indicator$3(props) {
145
+ const $ = c(6);
146
+ if ($[0] !== "a34280bc086a39a0fb7d8a3c2812f4b7b939439b92db5d65061c3211600f1a23") {
147
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
148
+ $[0] = "a34280bc086a39a0fb7d8a3c2812f4b7b939439b92db5d65061c3211600f1a23";
149
+ }
150
+ const api = useCollapsible();
151
+ let t0;
152
+ if ($[1] !== api || $[2] !== props) {
153
+ t0 = mergeProps(api.getIndicatorProps(), props);
154
+ $[1] = api;
155
+ $[2] = props;
156
+ $[3] = t0;
157
+ } else t0 = $[3];
158
+ let t1;
159
+ if ($[4] !== t0) {
160
+ t1 = /* @__PURE__ */ jsx(Turned$1, { ...t0 });
161
+ $[4] = t0;
162
+ $[5] = t1;
163
+ } else t1 = $[5];
164
+ return t1;
165
+ }
166
+ //#endregion
167
+ //#region src/collapsible/root.tsx
168
+ /**
169
+ * Draws the frame and sets the variants every part below it reads.
170
+ */
171
+ const Framed$4 = withProvider$4("div", "root");
172
+ /**
173
+ * Shows and hides the block beneath a control.
174
+ *
175
+ * @param props - The machine's options, the recipe's variants and the element's props together.
176
+ * @returns The frame, holding the parts, under the running machine.
177
+ */
178
+ function Root$4(props) {
179
+ const $ = c(11);
180
+ if ($[0] !== "bd98d881b0efa3f21d0fa393cdee8a8ff9e80988049fe93eb321aa70a8275a6c") {
181
+ for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
182
+ $[0] = "bd98d881b0efa3f21d0fa393cdee8a8ff9e80988049fe93eb321aa70a8275a6c";
183
+ }
184
+ let t0;
185
+ if ($[1] !== props) {
186
+ t0 = splitCollapsibleProps(props);
187
+ $[1] = props;
188
+ $[2] = t0;
189
+ } else t0 = $[2];
190
+ const [options, rest] = t0;
191
+ const api = useCollapsibleMachine(options);
192
+ let t1;
193
+ if ($[3] !== api) {
194
+ t1 = api.getRootProps();
195
+ $[3] = api;
196
+ $[4] = t1;
197
+ } else t1 = $[4];
198
+ let t2;
199
+ if ($[5] !== rest || $[6] !== t1) {
200
+ t2 = /* @__PURE__ */ jsx(Framed$4, {
201
+ ...rest,
202
+ ...t1
203
+ });
204
+ $[5] = rest;
205
+ $[6] = t1;
206
+ $[7] = t2;
207
+ } else t2 = $[7];
208
+ let t3;
209
+ if ($[8] !== api || $[9] !== t2) {
210
+ t3 = /* @__PURE__ */ jsx(ApiProvider$4, {
211
+ value: api,
212
+ children: t2
213
+ });
214
+ $[8] = api;
215
+ $[9] = t2;
216
+ $[10] = t3;
217
+ } else t3 = $[10];
218
+ return t3;
219
+ }
220
+ //#endregion
221
+ //#region src/collapsible/trigger.tsx
222
+ /**
223
+ * Draws the control at the size the root states.
224
+ */
225
+ const Pressed$4 = withContext$4("button", "trigger");
226
+ /**
227
+ * Shows the block where it is hidden, and hides it where it is shown.
228
+ *
229
+ * @param props - Everything a styled button takes.
230
+ * @returns The control, carrying what the machine says it does.
231
+ */
232
+ function Trigger$4(props) {
233
+ const $ = c(6);
234
+ if ($[0] !== "d17643338d92b329ad0df8f95b653a5ec7a33781b78d10cec5c696ea1b48f7a4") {
235
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
236
+ $[0] = "d17643338d92b329ad0df8f95b653a5ec7a33781b78d10cec5c696ea1b48f7a4";
237
+ }
238
+ const api = useCollapsible();
239
+ let t0;
240
+ if ($[1] !== api || $[2] !== props) {
241
+ t0 = mergeProps(api.getTriggerProps(), props);
242
+ $[1] = api;
243
+ $[2] = props;
244
+ $[3] = t0;
245
+ } else t0 = $[3];
246
+ let t1;
247
+ if ($[4] !== t0) {
248
+ t1 = /* @__PURE__ */ jsx(Pressed$4, { ...t0 });
249
+ $[4] = t0;
250
+ $[5] = t1;
251
+ } else t1 = $[5];
252
+ return t1;
253
+ }
254
+ //#endregion
255
+ //#region src/collapsible/index.ts
256
+ var collapsible_exports = /* @__PURE__ */ __exportAll({
257
+ Content: () => Content$4,
258
+ Indicator: () => Indicator$3,
259
+ Root: () => Root$4,
260
+ Trigger: () => Trigger$4
261
+ });
262
+ //#endregion
263
+ //#region src/menu/context.ts
264
+ /**
265
+ * Binds the menu's recipe to the elements that draw its parts.
266
+ *
267
+ * @remarks
268
+ * Apart from the recipe, because an application's compiler reads the recipe at build time and
269
+ * the binding needs the runtime. Apart from the machine, because the recipe decides how a part
270
+ * is drawn and the machine decides what it does.
271
+ */
272
+ /**
273
+ * Binds the recipe once. The root provides the variants and every other part reads them.
274
+ */
275
+ const { withContext: withContext$3, withProvider: withProvider$3 } = createSlotRecipeContext(recipe$1);
276
+ //#endregion
277
+ //#region src/menu/variants.ts
278
+ /**
279
+ * Lists the axes the recipe offers, read from the recipe so the two never drift.
280
+ *
281
+ * @remarks
282
+ * The compiler types a recipe's variants as optional and this recipe states four, so the read
283
+ * cannot find them absent and a fallback here would be a branch no case can take.
284
+ */
285
+ const AXES = new Set(Object.keys(recipe$1.variants));
286
+ /**
287
+ * Splits the recipe's variants out of the props a root was handed.
288
+ *
289
+ * @param props - Everything the root was given once the machine's settings are out of it.
290
+ * @returns The variants the caller picked, and everything the element takes.
291
+ */
292
+ function splitMenuVariants(props) {
293
+ const picked = {};
294
+ const rest = {};
295
+ for (const [name, value] of Object.entries(props)) if (AXES.has(name)) picked[name] = value;
296
+ else rest[name] = value;
297
+ return [picked, rest];
298
+ }
299
+ //#endregion
300
+ //#region src/menu/machine.ts
301
+ /**
302
+ * Runs the menu's machine, carries what it answers down to the parts, and registers a submenu with
303
+ * the menu it opens from.
304
+ *
305
+ * @remarks
306
+ * The machine is connected once, at the root, so every part reads one api from one running
307
+ * machine. A part drawn outside the root throws where it was written rather than drawing wrongly
308
+ * and saying nothing.
309
+ * A root also carries the running machine itself and the level above it. Registering a submenu
310
+ * takes the two machines rather than their apis, and a submenu's control takes the api of the
311
+ * menu above it, so neither is reachable from the api alone.
312
+ * The id is the machine's and never an element's. It names the panel, every row and every group,
313
+ * so a caller naming their own passes it here and every reference follows.
314
+ */
315
+ /**
316
+ * Hands the running menu to every part, reads it back, and reads the menu a root opens from.
317
+ */
318
+ const [ApiProvider$3, useMenu, useEnclosingMenu] = createRequiredContext("Menu");
319
+ /**
320
+ * Hands the row to the label and the mark inside it, and reads it back.
321
+ */
322
+ const [ItemProvider, useMenuItem] = createRequiredContext("Menu.Item");
323
+ /**
324
+ * Splits what the machine reads from what the element does.
325
+ *
326
+ * @remarks
327
+ * The machine states which props are its own, so the root never lists them and never drifts from
328
+ * the version it is built against.
329
+ */
330
+ const splitMenuProps = menu.splitProps;
331
+ /**
332
+ * Starts the machine and connects it.
333
+ *
334
+ * @param options - The settings the caller handed the root, less the id where it named none.
335
+ * @returns The api every part reads, beside the machine a submenu registers with.
336
+ */
337
+ function useMenuMachine(options) {
338
+ const $ = c(11);
339
+ if ($[0] !== "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3") {
340
+ for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
341
+ $[0] = "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3";
342
+ }
343
+ const generated = useId();
344
+ let t0;
345
+ if ($[1] !== options) {
346
+ t0 = stated(options);
347
+ $[1] = options;
348
+ $[2] = t0;
349
+ } else t0 = $[2];
350
+ const t1 = options.id ?? generated;
351
+ let t2;
352
+ if ($[3] !== t0 || $[4] !== t1) {
353
+ t2 = {
354
+ ...t0,
355
+ id: t1
356
+ };
357
+ $[3] = t0;
358
+ $[4] = t1;
359
+ $[5] = t2;
360
+ } else t2 = $[5];
361
+ const service = useMachine(menu.machine, t2);
362
+ let t3;
363
+ if ($[6] !== service) {
364
+ t3 = menu.connect(service, normalizeProps);
365
+ $[6] = service;
366
+ $[7] = t3;
367
+ } else t3 = $[7];
368
+ let t4;
369
+ if ($[8] !== service || $[9] !== t3) {
370
+ t4 = [t3, service];
371
+ $[8] = service;
372
+ $[9] = t3;
373
+ $[10] = t4;
374
+ } else t4 = $[10];
375
+ return t4;
376
+ }
377
+ /**
378
+ * Registers a menu with the one it opens from, so the two move as a nest.
379
+ *
380
+ * @remarks
381
+ * Each machine holds the other, which is what lets a pointer travel from a row into the submenu
382
+ * it opened without the submenu closing under it, and what sends the focus back up on the arrow
383
+ * key that closes it. The machines are registered rather than the apis, and a machine keeps the
384
+ * same identity for as long as its root is drawn, so the pair is registered once however often
385
+ * either menu redraws. The apis are read from the machines here rather than passed in, because a
386
+ * connected api is a fresh object on every draw and would register the pair again each time.
387
+ * @param service - The machine of the menu being registered.
388
+ * @param parent - The machine of the menu it opens from, or undefined where there is none.
389
+ */
390
+ function useNestedMenu(service, parent) {
391
+ const $ = c(5);
392
+ if ($[0] !== "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3") {
393
+ for (let $i = 0; $i < 5; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
394
+ $[0] = "8f4819cd753006d2ea85b9ddf36a90c9d9c0c81954e33fbdadc366ba694a3ae3";
395
+ }
396
+ let t0;
397
+ let t1;
398
+ if ($[1] !== parent || $[2] !== service) {
399
+ t0 = () => {
400
+ if (parent === void 0) return;
401
+ menu.connect(parent, normalizeProps).setChild(service);
402
+ menu.connect(service, normalizeProps).setParent(parent);
403
+ };
404
+ t1 = [parent, service];
405
+ $[1] = parent;
406
+ $[2] = service;
407
+ $[3] = t0;
408
+ $[4] = t1;
409
+ } else {
410
+ t0 = $[3];
411
+ t1 = $[4];
412
+ }
413
+ useEffect(t0, t1);
414
+ }
415
+ //#endregion
416
+ //#region src/menu/arrow-tip.tsx
417
+ /**
418
+ * Draws the square at the look the root states.
419
+ */
420
+ const Tipped = withContext$3("div", "arrowTip");
421
+ /**
422
+ * Gives the point its shape.
423
+ *
424
+ * @param props - Everything a styled div takes.
425
+ * @returns The square, carrying the place the machine measured.
426
+ */
427
+ function ArrowTip$2(props) {
428
+ const $ = c(6);
429
+ if ($[0] !== "7dfc989fa0fa500395a4ea26eeeea8e1a20b76d1e65e23d95da538666e9d6279") {
430
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
431
+ $[0] = "7dfc989fa0fa500395a4ea26eeeea8e1a20b76d1e65e23d95da538666e9d6279";
432
+ }
433
+ const { api } = useMenu();
434
+ let t0;
435
+ if ($[1] !== api || $[2] !== props) {
436
+ t0 = mergeProps(api.getArrowTipProps(), props);
437
+ $[1] = api;
438
+ $[2] = props;
439
+ $[3] = t0;
440
+ } else t0 = $[3];
441
+ let t1;
442
+ if ($[4] !== t0) {
443
+ t1 = /* @__PURE__ */ jsx(Tipped, { ...t0 });
444
+ $[4] = t0;
445
+ $[5] = t1;
446
+ } else t1 = $[5];
447
+ return t1;
448
+ }
449
+ //#endregion
450
+ //#region src/menu/arrow.tsx
451
+ /**
452
+ * Draws the point at the size the root states.
453
+ */
454
+ const Pointed = withContext$3("div", "arrow");
455
+ /**
456
+ * Points from the panel back at the control.
457
+ *
458
+ * @param props - Everything a styled div takes.
459
+ * @returns The point, carrying the place the machine measured.
460
+ */
461
+ function Arrow$2(props) {
462
+ const $ = c(6);
463
+ if ($[0] !== "a78a147320cc5b488a59b5aacb321c3a756f280cd6a5af6846f4a4088734e9b9") {
464
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
465
+ $[0] = "a78a147320cc5b488a59b5aacb321c3a756f280cd6a5af6846f4a4088734e9b9";
466
+ }
467
+ const { api } = useMenu();
468
+ let t0;
469
+ if ($[1] !== api || $[2] !== props) {
470
+ t0 = mergeProps(api.getArrowProps(), props);
471
+ $[1] = api;
472
+ $[2] = props;
473
+ $[3] = t0;
474
+ } else t0 = $[3];
475
+ let t1;
476
+ if ($[4] !== t0) {
477
+ t1 = /* @__PURE__ */ jsx(Pointed, { ...t0 });
478
+ $[4] = t0;
479
+ $[5] = t1;
480
+ } else t1 = $[5];
481
+ return t1;
482
+ }
483
+ //#endregion
484
+ //#region src/menu/content.tsx
485
+ /**
486
+ * Draws the panel at the size the root states.
487
+ */
488
+ const Drawn$10 = withContext$3("div", "content");
489
+ /**
490
+ * Shows the rows of the menu.
491
+ *
492
+ * @param props - Everything a styled div takes.
493
+ * @returns The panel, carrying what the machine writes onto it.
494
+ */
495
+ function Content$3(props) {
496
+ const $ = c(6);
497
+ if ($[0] !== "eef2461df84475297c85db0dfb9f1f71a378d6a11e488950fd890ba4a9539608") {
498
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
499
+ $[0] = "eef2461df84475297c85db0dfb9f1f71a378d6a11e488950fd890ba4a9539608";
500
+ }
501
+ const { api } = useMenu();
502
+ let t0;
503
+ if ($[1] !== api || $[2] !== props) {
504
+ t0 = mergeProps(api.getContentProps(), props);
505
+ $[1] = api;
506
+ $[2] = props;
507
+ $[3] = t0;
508
+ } else t0 = $[3];
509
+ let t1;
510
+ if ($[4] !== t0) {
511
+ t1 = /* @__PURE__ */ jsx(Drawn$10, { ...t0 });
512
+ $[4] = t0;
513
+ $[5] = t1;
514
+ } else t1 = $[5];
515
+ return t1;
516
+ }
517
+ //#endregion
518
+ //#region src/menu/context-trigger.tsx
519
+ /**
520
+ * Draws the region at the size the root states.
521
+ */
522
+ const Held = withContext$3("div", "contextTrigger");
523
+ /**
524
+ * Opens the menu where the pointer is.
525
+ *
526
+ * @param props - The name of this region, and everything a styled div takes.
527
+ * @returns The region, carrying what the machine writes onto it.
528
+ */
529
+ function ContextTrigger(t0) {
530
+ const $ = c(4);
531
+ if ($[0] !== "83e4e11d90a34335e7675b15070e8dcbde5becaf4c925e12048935afcfa67cfd") {
532
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
533
+ $[0] = "83e4e11d90a34335e7675b15070e8dcbde5becaf4c925e12048935afcfa67cfd";
534
+ }
535
+ const { value, ...rest } = t0;
536
+ const { api } = useMenu();
537
+ const named = value === void 0 ? {} : { value };
538
+ const T0 = Held;
539
+ const t1 = mergeProps(api.getContextTriggerProps(named), rest);
540
+ let t2;
541
+ if ($[1] !== T0 || $[2] !== t1) {
542
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
543
+ $[1] = T0;
544
+ $[2] = t1;
545
+ $[3] = t2;
546
+ } else t2 = $[3];
547
+ return t2;
548
+ }
549
+ //#endregion
550
+ //#region src/menu/indicator.tsx
551
+ /**
552
+ * Draws the mark at the size the root states.
553
+ */
554
+ const Marked$1 = withContext$3("div", "indicator");
555
+ /**
556
+ * Says whether the menu is open.
557
+ *
558
+ * @param props - Everything a styled div takes.
559
+ * @returns The mark, carrying the open state.
560
+ */
561
+ function Indicator$2(props) {
562
+ const $ = c(6);
563
+ if ($[0] !== "70df40e4ab9c4446536c5d86bde5718671edc500caabb396e0136169b693af2f") {
564
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
565
+ $[0] = "70df40e4ab9c4446536c5d86bde5718671edc500caabb396e0136169b693af2f";
566
+ }
567
+ const { api } = useMenu();
568
+ let t0;
569
+ if ($[1] !== api || $[2] !== props) {
570
+ t0 = mergeProps(api.getIndicatorProps(), props);
571
+ $[1] = api;
572
+ $[2] = props;
573
+ $[3] = t0;
574
+ } else t0 = $[3];
575
+ let t1;
576
+ if ($[4] !== t0) {
577
+ t1 = /* @__PURE__ */ jsx(Marked$1, { ...t0 });
578
+ $[4] = t0;
579
+ $[5] = t1;
580
+ } else t1 = $[5];
581
+ return t1;
582
+ }
583
+ //#endregion
584
+ //#region src/menu/item-group-label.tsx
585
+ /**
586
+ * Draws the heading at the size the root states.
587
+ */
588
+ const Titled = withContext$3("div", "itemGroupLabel");
589
+ /**
590
+ * Says what the rows below it have in common.
591
+ *
592
+ * @param props - The name the set shares, beside everything a styled div takes.
593
+ * @returns The heading, carrying what the machine writes onto it.
594
+ */
595
+ function ItemGroupLabel(t0) {
596
+ const $ = c(4);
597
+ if ($[0] !== "5558e4b3b825147610a3797f6b1f70830c23e8a7d99ec38cccb2c099c763f5ab") {
598
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
599
+ $[0] = "5558e4b3b825147610a3797f6b1f70830c23e8a7d99ec38cccb2c099c763f5ab";
600
+ }
601
+ const { value, ...rest } = t0;
602
+ const { api } = useMenu();
603
+ const T0 = Titled;
604
+ const t1 = mergeProps(api.getItemGroupLabelProps({ htmlFor: value }), rest);
605
+ let t2;
606
+ if ($[1] !== T0 || $[2] !== t1) {
607
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
608
+ $[1] = T0;
609
+ $[2] = t1;
610
+ $[3] = t2;
611
+ } else t2 = $[3];
612
+ return t2;
613
+ }
614
+ //#endregion
615
+ //#region src/menu/item-group.tsx
616
+ /**
617
+ * Draws the set at the size the root states.
618
+ */
619
+ const Grouped = withContext$3("div", "itemGroup");
620
+ /**
621
+ * Groups the rows that belong together.
622
+ *
623
+ * @param props - The name the label shares, beside everything a styled div takes.
624
+ * @returns The set, carrying what the machine writes onto it.
625
+ */
626
+ function ItemGroup(t0) {
627
+ const $ = c(4);
628
+ if ($[0] !== "c7cb003c4f14e367e7619ffbfd66bcd8b425ad6c061eb57ecaf42ed0b329ea78") {
629
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
630
+ $[0] = "c7cb003c4f14e367e7619ffbfd66bcd8b425ad6c061eb57ecaf42ed0b329ea78";
631
+ }
632
+ const { value, ...rest } = t0;
633
+ const { api } = useMenu();
634
+ const T0 = Grouped;
635
+ const t1 = mergeProps(api.getItemGroupProps({ id: value }), rest);
636
+ let t2;
637
+ if ($[1] !== T0 || $[2] !== t1) {
638
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
639
+ $[1] = T0;
640
+ $[2] = t1;
641
+ $[3] = t2;
642
+ } else t2 = $[3];
643
+ return t2;
644
+ }
645
+ //#endregion
646
+ //#region src/menu/item-indicator.tsx
647
+ /**
648
+ * Draws the mark at the size the root states.
649
+ */
650
+ const Marked = withContext$3("span", "itemIndicator");
651
+ /**
652
+ * Says the row is on.
653
+ *
654
+ * @param props - Everything a styled span takes.
655
+ * @returns The mark, carrying the row's state.
656
+ */
657
+ function ItemIndicator(props) {
658
+ const $ = c(7);
659
+ if ($[0] !== "8d196d458fd29245612162ea15b2c759f98162d354c0f65bbc448e6633656990") {
660
+ for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
661
+ $[0] = "8d196d458fd29245612162ea15b2c759f98162d354c0f65bbc448e6633656990";
662
+ }
663
+ const { api } = useMenu();
664
+ const item = useMenuItem();
665
+ let t0;
666
+ if ($[1] !== api || $[2] !== item || $[3] !== props) {
667
+ t0 = mergeProps({ "aria-hidden": true }, api.getItemIndicatorProps(item), props);
668
+ $[1] = api;
669
+ $[2] = item;
670
+ $[3] = props;
671
+ $[4] = t0;
672
+ } else t0 = $[4];
673
+ let t1;
674
+ if ($[5] !== t0) {
675
+ t1 = /* @__PURE__ */ jsx(Marked, { ...t0 });
676
+ $[5] = t0;
677
+ $[6] = t1;
678
+ } else t1 = $[6];
679
+ return t1;
680
+ }
681
+ //#endregion
682
+ //#region src/menu/item-text.tsx
683
+ /**
684
+ * Draws the words at the size the root states.
685
+ */
686
+ const Worded = withContext$3("span", "itemText");
687
+ /**
688
+ * Says what the row offers.
689
+ *
690
+ * @param props - Everything a styled span takes.
691
+ * @returns The words, carrying the row's state.
692
+ */
693
+ function ItemText(props) {
694
+ const $ = c(7);
695
+ if ($[0] !== "bfc380eb7ae7d8c3c4b7c66d5a511f3c332f812d78eac182a1761940b91766d6") {
696
+ for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
697
+ $[0] = "bfc380eb7ae7d8c3c4b7c66d5a511f3c332f812d78eac182a1761940b91766d6";
698
+ }
699
+ const { api } = useMenu();
700
+ const item = useMenuItem();
701
+ let t0;
702
+ if ($[1] !== api || $[2] !== item || $[3] !== props) {
703
+ t0 = mergeProps(api.getItemTextProps(item), props);
704
+ $[1] = api;
705
+ $[2] = item;
706
+ $[3] = props;
707
+ $[4] = t0;
708
+ } else t0 = $[4];
709
+ let t1;
710
+ if ($[5] !== t0) {
711
+ t1 = /* @__PURE__ */ jsx(Worded, { ...t0 });
712
+ $[5] = t0;
713
+ $[6] = t1;
714
+ } else t1 = $[6];
715
+ return t1;
716
+ }
717
+ //#endregion
718
+ //#region src/menu/item.tsx
719
+ /**
720
+ * Draws the row at the size the root states.
721
+ */
722
+ const Chosen$1 = withContext$3("div", "item");
723
+ /**
724
+ * Offers one thing a reader can choose.
725
+ *
726
+ * @param props - The row's name and purpose, beside everything a styled div takes.
727
+ * @returns The row, carrying what the machine writes onto it.
728
+ */
729
+ function Item(t0) {
730
+ const $ = c(4);
731
+ if ($[0] !== "df27aa8fc4df06f24adb3dc83d050ff157c0d312b109009040230833be9f5d6d") {
732
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
733
+ $[0] = "df27aa8fc4df06f24adb3dc83d050ff157c0d312b109009040230833be9f5d6d";
734
+ }
735
+ const { closeOnSelect, disabled, tone, value, valueText, ...rest } = t0;
736
+ const { api } = useMenu();
737
+ const state = {
738
+ ...closeOnSelect === void 0 ? {} : { closeOnSelect },
739
+ ...disabled === void 0 ? {} : { disabled },
740
+ ...valueText === void 0 ? {} : { valueText },
741
+ value
742
+ };
743
+ const T0 = Chosen$1;
744
+ const t1 = mergeProps(api.getItemProps(state), { "data-tone": tone }, rest);
745
+ let t2;
746
+ if ($[1] !== T0 || $[2] !== t1) {
747
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
748
+ $[1] = T0;
749
+ $[2] = t1;
750
+ $[3] = t2;
751
+ } else t2 = $[3];
752
+ return /* @__PURE__ */ jsx(ItemProvider, {
753
+ value: state,
754
+ children: t2
755
+ });
756
+ }
757
+ //#endregion
758
+ //#region src/menu/option-item.tsx
759
+ /**
760
+ * Draws the row at the size the root states, in the same slot as a plain row.
761
+ */
762
+ const Chosen = withContext$3("div", "item");
763
+ /**
764
+ * Offers one thing a reader can turn on.
765
+ *
766
+ * @param props - The choice the row carries, beside everything a styled div takes.
767
+ * @returns The row, carrying what the machine writes onto it.
768
+ */
769
+ function OptionItem(t0) {
770
+ const $ = c(4);
771
+ if ($[0] !== "80d97f29451c03e5b5e606dc49bad4b167094d006d1005ffec08c54617aa8659") {
772
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
773
+ $[0] = "80d97f29451c03e5b5e606dc49bad4b167094d006d1005ffec08c54617aa8659";
774
+ }
775
+ const { checked, closeOnSelect, disabled, onCheckedChange, tone, type, value, valueText, ...rest } = t0;
776
+ const { api } = useMenu();
777
+ const state = {
778
+ ...closeOnSelect === void 0 ? {} : { closeOnSelect },
779
+ ...disabled === void 0 ? {} : { disabled },
780
+ ...onCheckedChange === void 0 ? {} : { onCheckedChange },
781
+ ...valueText === void 0 ? {} : { valueText },
782
+ checked,
783
+ type,
784
+ value
785
+ };
786
+ const T0 = Chosen;
787
+ const t1 = mergeProps(api.getOptionItemProps(state), { "data-tone": tone }, rest);
788
+ let t2;
789
+ if ($[1] !== T0 || $[2] !== t1) {
790
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
791
+ $[1] = T0;
792
+ $[2] = t1;
793
+ $[3] = t2;
794
+ } else t2 = $[3];
795
+ return /* @__PURE__ */ jsx(ItemProvider, {
796
+ value: state,
797
+ children: t2
798
+ });
799
+ }
800
+ //#endregion
801
+ //#region src/menu/positioner.tsx
802
+ /**
803
+ * Draws the box at the size the root states.
804
+ */
805
+ const Placed$2 = withContext$3("div", "positioner");
806
+ /**
807
+ * Places the panel against the control.
808
+ *
809
+ * @param props - Everything a styled div takes.
810
+ * @returns The box, carrying the position the machine measured.
811
+ */
812
+ function Positioner$2(props) {
813
+ const $ = c(6);
814
+ if ($[0] !== "9527b5772e1640028d3b6e460f67465c41b2ba57f934b0e4ef9920a84689fb2a") {
815
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
816
+ $[0] = "9527b5772e1640028d3b6e460f67465c41b2ba57f934b0e4ef9920a84689fb2a";
817
+ }
818
+ const { api } = useMenu();
819
+ let t0;
820
+ if ($[1] !== api || $[2] !== props) {
821
+ t0 = mergeProps(api.getPositionerProps(), props);
822
+ $[1] = api;
823
+ $[2] = props;
824
+ $[3] = t0;
825
+ } else t0 = $[3];
826
+ let t1;
827
+ if ($[4] !== t0) {
828
+ t1 = /* @__PURE__ */ jsx(Placed$2, { ...t0 });
829
+ $[4] = t0;
830
+ $[5] = t1;
831
+ } else t1 = $[5];
832
+ return t1;
833
+ }
834
+ //#endregion
835
+ //#region src/menu/root.tsx
836
+ /**
837
+ * Draws the element that sets the variants every part below it reads, and no box.
838
+ */
839
+ const Framed$3 = withProvider$3("div", "root");
840
+ /**
841
+ * Opens a list of things a reader chooses from, beside the control that opens it.
842
+ *
843
+ * @param props - The machine's settings, the recipe's variants and the element's props together.
844
+ * @returns The parts, under the running machine.
845
+ */
846
+ function Root$3(props) {
847
+ const $ = c(18);
848
+ if ($[0] !== "2ed886f598e5e2c7360104e4f5e012a99b5af32a2a62a5a7cd9aab54e35d4266") {
849
+ for (let $i = 0; $i < 18; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
850
+ $[0] = "2ed886f598e5e2c7360104e4f5e012a99b5af32a2a62a5a7cd9aab54e35d4266";
851
+ }
852
+ const parent = useEnclosingMenu();
853
+ let options;
854
+ let t0;
855
+ if ($[1] !== props) {
856
+ const [t1, rest] = splitMenuProps(props);
857
+ options = t1;
858
+ t0 = splitMenuVariants(rest);
859
+ $[1] = props;
860
+ $[2] = options;
861
+ $[3] = t0;
862
+ } else {
863
+ options = $[2];
864
+ t0 = $[3];
865
+ }
866
+ const [picked, others] = t0;
867
+ const [api, service] = useMenuMachine(options);
868
+ const t1 = parent?.variants;
869
+ let t2;
870
+ if ($[4] !== picked || $[5] !== t1) {
871
+ t2 = {
872
+ ...t1,
873
+ ...picked
874
+ };
875
+ $[4] = picked;
876
+ $[5] = t1;
877
+ $[6] = t2;
878
+ } else t2 = $[6];
879
+ const variants = t2;
880
+ useNestedMenu(service, parent?.service);
881
+ let t3;
882
+ if ($[7] !== api || $[8] !== parent || $[9] !== service || $[10] !== variants) {
883
+ t3 = {
884
+ api,
885
+ parent,
886
+ service,
887
+ variants
888
+ };
889
+ $[7] = api;
890
+ $[8] = parent;
891
+ $[9] = service;
892
+ $[10] = variants;
893
+ $[11] = t3;
894
+ } else t3 = $[11];
895
+ let t4;
896
+ if ($[12] !== others || $[13] !== variants) {
897
+ t4 = /* @__PURE__ */ jsx(Framed$3, {
898
+ ...variants,
899
+ ...others
900
+ });
901
+ $[12] = others;
902
+ $[13] = variants;
903
+ $[14] = t4;
904
+ } else t4 = $[14];
905
+ let t5;
906
+ if ($[15] !== t3 || $[16] !== t4) {
907
+ t5 = /* @__PURE__ */ jsx(ApiProvider$3, {
908
+ value: t3,
909
+ children: t4
910
+ });
911
+ $[15] = t3;
912
+ $[16] = t4;
913
+ $[17] = t5;
914
+ } else t5 = $[17];
915
+ return t5;
916
+ }
917
+ //#endregion
918
+ //#region src/menu/separator.tsx
919
+ /**
920
+ * Draws the line at the size the root states.
921
+ */
922
+ const Ruled = withContext$3("div", "separator");
923
+ /**
924
+ * Breaks the rows into sets.
925
+ *
926
+ * @param props - Everything a styled div takes.
927
+ * @returns The line, carrying what the machine writes onto it.
928
+ */
929
+ function Separator(props) {
930
+ const $ = c(6);
931
+ if ($[0] !== "e73ae042863fca750ea32f92df9ce28299f5bca7b0c8e008bdb123c5e7c768c7") {
932
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
933
+ $[0] = "e73ae042863fca750ea32f92df9ce28299f5bca7b0c8e008bdb123c5e7c768c7";
934
+ }
935
+ const { api } = useMenu();
936
+ let t0;
937
+ if ($[1] !== api || $[2] !== props) {
938
+ t0 = mergeProps(api.getSeparatorProps(), props);
939
+ $[1] = api;
940
+ $[2] = props;
941
+ $[3] = t0;
942
+ } else t0 = $[3];
943
+ let t1;
944
+ if ($[4] !== t0) {
945
+ t1 = /* @__PURE__ */ jsx(Ruled, { ...t0 });
946
+ $[4] = t0;
947
+ $[5] = t1;
948
+ } else t1 = $[5];
949
+ return t1;
950
+ }
951
+ //#endregion
952
+ //#region src/menu/trigger-item.tsx
953
+ /**
954
+ * Draws the row at the size the root states.
955
+ */
956
+ const Pressed$3 = withContext$3("button", "triggerItem");
957
+ /**
958
+ * Opens a submenu from a row of the menu above it.
959
+ *
960
+ * @param props - Everything a styled button takes.
961
+ * @returns The row, carrying what both machines write onto it.
962
+ * @throws {@link Error} Where the menu it belongs to opens from no other menu.
963
+ */
964
+ function TriggerItem(props) {
965
+ const $ = c(7);
966
+ if ($[0] !== "01636e6911ec33af84338f67be3f448a13702cd94f390f74603b79964a7aefe7") {
967
+ for (let $i = 0; $i < 7; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
968
+ $[0] = "01636e6911ec33af84338f67be3f448a13702cd94f390f74603b79964a7aefe7";
969
+ }
970
+ const { api, parent } = useMenu();
971
+ if (parent === void 0) throw new Error("Menu.TriggerItem was drawn in a menu that opens from no other menu.");
972
+ let t0;
973
+ if ($[1] !== api || $[2] !== parent.api || $[3] !== props) {
974
+ t0 = mergeProps(parent.api.getTriggerItemProps(api), props);
975
+ $[1] = api;
976
+ $[2] = parent.api;
977
+ $[3] = props;
978
+ $[4] = t0;
979
+ } else t0 = $[4];
980
+ let t1;
981
+ if ($[5] !== t0) {
982
+ t1 = /* @__PURE__ */ jsx(Pressed$3, { ...t0 });
983
+ $[5] = t0;
984
+ $[6] = t1;
985
+ } else t1 = $[6];
986
+ return t1;
987
+ }
988
+ //#endregion
989
+ //#region src/menu/trigger.tsx
990
+ /**
991
+ * Draws the control at the size the root states.
992
+ */
993
+ const Pressed$2 = withContext$3("button", "trigger");
994
+ /**
995
+ * Opens the menu.
996
+ *
997
+ * @param props - The name of this control, and everything a styled button takes.
998
+ * @returns The control, carrying what the machine writes onto it.
999
+ */
1000
+ function Trigger$3(t0) {
1001
+ const $ = c(4);
1002
+ if ($[0] !== "54a6411cb66675f22697008ac78fc5ee2093b32ee87912e3e4a72d2e50cb5f54") {
1003
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1004
+ $[0] = "54a6411cb66675f22697008ac78fc5ee2093b32ee87912e3e4a72d2e50cb5f54";
1005
+ }
1006
+ const { value, ...rest } = t0;
1007
+ const { api } = useMenu();
1008
+ const named = value === void 0 ? {} : { value };
1009
+ const T0 = Pressed$2;
1010
+ const t1 = mergeProps(api.getTriggerProps(named), rest);
1011
+ let t2;
1012
+ if ($[1] !== T0 || $[2] !== t1) {
1013
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
1014
+ $[1] = T0;
1015
+ $[2] = t1;
1016
+ $[3] = t2;
1017
+ } else t2 = $[3];
1018
+ return t2;
1019
+ }
1020
+ //#endregion
1021
+ //#region src/menu/index.ts
1022
+ var menu_exports = /* @__PURE__ */ __exportAll({
1023
+ Arrow: () => Arrow$2,
1024
+ ArrowTip: () => ArrowTip$2,
1025
+ Content: () => Content$3,
1026
+ ContextTrigger: () => ContextTrigger,
1027
+ Indicator: () => Indicator$2,
1028
+ Item: () => Item,
1029
+ ItemGroup: () => ItemGroup,
1030
+ ItemGroupLabel: () => ItemGroupLabel,
1031
+ ItemIndicator: () => ItemIndicator,
1032
+ ItemText: () => ItemText,
1033
+ OptionItem: () => OptionItem,
1034
+ Positioner: () => Positioner$2,
1035
+ Root: () => Root$3,
1036
+ Separator: () => Separator,
1037
+ Trigger: () => Trigger$3,
1038
+ TriggerItem: () => TriggerItem
1039
+ });
1040
+ //#endregion
1041
+ //#region src/popover/context.ts
1042
+ /**
1043
+ * Binds the popover's recipe to the elements that draw its parts.
1044
+ *
1045
+ * @remarks
1046
+ * Apart from the recipe, because an application's compiler reads the recipe at build time and
1047
+ * the binding needs the runtime. Apart from the machine, because the recipe decides how a part
1048
+ * is drawn and the machine decides what it does.
1049
+ */
1050
+ /**
1051
+ * Binds the recipe once. The root provides the variants and every other part reads them.
1052
+ */
1053
+ const { withContext: withContext$2, withProvider: withProvider$2 } = createSlotRecipeContext(recipe$2);
1054
+ //#endregion
1055
+ //#region src/popover/machine.ts
1056
+ /**
1057
+ * Runs the popover's machine and carries what it answers down to the parts.
1058
+ *
1059
+ * @remarks
1060
+ * The machine is connected once, at the root, so every part reads one api from one running
1061
+ * machine. A part drawn outside the root throws where it was written rather than drawing wrongly
1062
+ * and saying nothing.
1063
+ * The id is the machine's and never an element's. It names the panel, the heading and the
1064
+ * paragraph, and points the panel at the last two, so a caller naming their own passes it here
1065
+ * and every reference follows.
1066
+ */
1067
+ /**
1068
+ * Hands the running machine to every part, and reads it back.
1069
+ */
1070
+ const [ApiProvider$2, usePopover] = createRequiredContext("Popover");
1071
+ /**
1072
+ * Splits what the machine reads from what the element does.
1073
+ *
1074
+ * @remarks
1075
+ * The machine states which props are its own, so the root never lists them and never drifts from
1076
+ * the version it is built against.
1077
+ */
1078
+ const splitPopoverProps = popover.splitProps;
1079
+ /**
1080
+ * Starts the machine and connects it.
1081
+ *
1082
+ * @param options - The settings the caller handed the root, less the id where it named none.
1083
+ * @returns The api every part reads.
1084
+ */
1085
+ function usePopoverMachine(options) {
1086
+ const $ = c(6);
1087
+ if ($[0] !== "07237b25b6cd0f2a016f2fc275546b90a78ae248b823795f5fe556b71a4546b4") {
1088
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1089
+ $[0] = "07237b25b6cd0f2a016f2fc275546b90a78ae248b823795f5fe556b71a4546b4";
1090
+ }
1091
+ const generated = useId();
1092
+ let t0;
1093
+ if ($[1] !== options) {
1094
+ t0 = stated(options);
1095
+ $[1] = options;
1096
+ $[2] = t0;
1097
+ } else t0 = $[2];
1098
+ const t1 = options.id ?? generated;
1099
+ let t2;
1100
+ if ($[3] !== t0 || $[4] !== t1) {
1101
+ t2 = {
1102
+ ...t0,
1103
+ id: t1
1104
+ };
1105
+ $[3] = t0;
1106
+ $[4] = t1;
1107
+ $[5] = t2;
1108
+ } else t2 = $[5];
1109
+ return popover.connect(useMachine(popover.machine, t2), normalizeProps);
1110
+ }
1111
+ //#endregion
1112
+ //#region src/popover/anchor.tsx
1113
+ /**
1114
+ * Draws the part at the size the root states.
1115
+ */
1116
+ const Drawn$9 = withContext$2("div", "anchor");
1117
+ /**
1118
+ * Marks what the panel is positioned against, where that is not the control.
1119
+ *
1120
+ * @param props - Everything a styled div takes.
1121
+ * @returns The part, carrying what the machine writes onto it.
1122
+ */
1123
+ function Anchor(props) {
1124
+ const $ = c(6);
1125
+ if ($[0] !== "f10b3522f812bb7832eb602a9a4f85c673877f745f45335d0e3e3e4c3af68a35") {
1126
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1127
+ $[0] = "f10b3522f812bb7832eb602a9a4f85c673877f745f45335d0e3e3e4c3af68a35";
1128
+ }
1129
+ const api = usePopover();
1130
+ let t0;
1131
+ if ($[1] !== api || $[2] !== props) {
1132
+ t0 = mergeProps(api.getAnchorProps(), props);
1133
+ $[1] = api;
1134
+ $[2] = props;
1135
+ $[3] = t0;
1136
+ } else t0 = $[3];
1137
+ let t1;
1138
+ if ($[4] !== t0) {
1139
+ t1 = /* @__PURE__ */ jsx(Drawn$9, { ...t0 });
1140
+ $[4] = t0;
1141
+ $[5] = t1;
1142
+ } else t1 = $[5];
1143
+ return t1;
1144
+ }
1145
+ //#endregion
1146
+ //#region src/popover/arrow-tip.tsx
1147
+ /**
1148
+ * Draws the part at the size the root states.
1149
+ */
1150
+ const Drawn$8 = withContext$2("div", "arrowTip");
1151
+ /**
1152
+ * Draws the turned square inside the point.
1153
+ *
1154
+ * @param props - Everything a styled div takes.
1155
+ * @returns The part, carrying what the machine writes onto it.
1156
+ */
1157
+ function ArrowTip$1(props) {
1158
+ const $ = c(6);
1159
+ if ($[0] !== "3e675def7ae1350a8fca011297aca811b53efec749376daa56cd96c4a382b34b") {
1160
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1161
+ $[0] = "3e675def7ae1350a8fca011297aca811b53efec749376daa56cd96c4a382b34b";
1162
+ }
1163
+ const api = usePopover();
1164
+ let t0;
1165
+ if ($[1] !== api || $[2] !== props) {
1166
+ t0 = mergeProps(api.getArrowTipProps(), props);
1167
+ $[1] = api;
1168
+ $[2] = props;
1169
+ $[3] = t0;
1170
+ } else t0 = $[3];
1171
+ let t1;
1172
+ if ($[4] !== t0) {
1173
+ t1 = /* @__PURE__ */ jsx(Drawn$8, { ...t0 });
1174
+ $[4] = t0;
1175
+ $[5] = t1;
1176
+ } else t1 = $[5];
1177
+ return t1;
1178
+ }
1179
+ //#endregion
1180
+ //#region src/popover/arrow.tsx
1181
+ /**
1182
+ * Draws the part at the size the root states.
1183
+ */
1184
+ const Drawn$7 = withContext$2("div", "arrow");
1185
+ /**
1186
+ * Draws the point that ties the panel to its control.
1187
+ *
1188
+ * @param props - Everything a styled div takes.
1189
+ * @returns The part, carrying what the machine writes onto it.
1190
+ */
1191
+ function Arrow$1(props) {
1192
+ const $ = c(6);
1193
+ if ($[0] !== "927cd832f29a4a97038695b85b3095201491e6815fff7aca082bd8c863818912") {
1194
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1195
+ $[0] = "927cd832f29a4a97038695b85b3095201491e6815fff7aca082bd8c863818912";
1196
+ }
1197
+ const api = usePopover();
1198
+ let t0;
1199
+ if ($[1] !== api || $[2] !== props) {
1200
+ t0 = mergeProps(api.getArrowProps(), props);
1201
+ $[1] = api;
1202
+ $[2] = props;
1203
+ $[3] = t0;
1204
+ } else t0 = $[3];
1205
+ let t1;
1206
+ if ($[4] !== t0) {
1207
+ t1 = /* @__PURE__ */ jsx(Drawn$7, { ...t0 });
1208
+ $[4] = t0;
1209
+ $[5] = t1;
1210
+ } else t1 = $[5];
1211
+ return t1;
1212
+ }
1213
+ //#endregion
1214
+ //#region src/popover/close-trigger.tsx
1215
+ /**
1216
+ * Draws the part at the size the root states.
1217
+ */
1218
+ const Drawn$6 = withContext$2("button", "closeTrigger");
1219
+ /**
1220
+ * Draws the control that shuts the panel.
1221
+ *
1222
+ * @param props - Everything a styled button takes.
1223
+ * @returns The part, carrying what the machine writes onto it.
1224
+ */
1225
+ function CloseTrigger(props) {
1226
+ const $ = c(6);
1227
+ if ($[0] !== "40dcb1168820711e40165251e3142a822e88492f85a4f31108ba8929b84819ea") {
1228
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1229
+ $[0] = "40dcb1168820711e40165251e3142a822e88492f85a4f31108ba8929b84819ea";
1230
+ }
1231
+ const api = usePopover();
1232
+ let t0;
1233
+ if ($[1] !== api || $[2] !== props) {
1234
+ t0 = mergeProps(api.getCloseTriggerProps(), props);
1235
+ $[1] = api;
1236
+ $[2] = props;
1237
+ $[3] = t0;
1238
+ } else t0 = $[3];
1239
+ let t1;
1240
+ if ($[4] !== t0) {
1241
+ t1 = /* @__PURE__ */ jsx(Drawn$6, { ...t0 });
1242
+ $[4] = t0;
1243
+ $[5] = t1;
1244
+ } else t1 = $[5];
1245
+ return t1;
1246
+ }
1247
+ //#endregion
1248
+ //#region src/popover/content.tsx
1249
+ /**
1250
+ * Draws the part at the size the root states.
1251
+ */
1252
+ const Drawn$5 = withContext$2("div", "content");
1253
+ /**
1254
+ * Draws the panel itself.
1255
+ *
1256
+ * @param props - Everything a styled div takes.
1257
+ * @returns The part, carrying what the machine writes onto it.
1258
+ */
1259
+ function Content$2(props) {
1260
+ const $ = c(6);
1261
+ if ($[0] !== "a3677eb8a798c905d7a1c7a45c69664e79e4286781c173cd9fe14bf3898989c2") {
1262
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1263
+ $[0] = "a3677eb8a798c905d7a1c7a45c69664e79e4286781c173cd9fe14bf3898989c2";
1264
+ }
1265
+ const api = usePopover();
1266
+ let t0;
1267
+ if ($[1] !== api || $[2] !== props) {
1268
+ t0 = mergeProps(api.getContentProps(), props);
1269
+ $[1] = api;
1270
+ $[2] = props;
1271
+ $[3] = t0;
1272
+ } else t0 = $[3];
1273
+ let t1;
1274
+ if ($[4] !== t0) {
1275
+ t1 = /* @__PURE__ */ jsx(Drawn$5, { ...t0 });
1276
+ $[4] = t0;
1277
+ $[5] = t1;
1278
+ } else t1 = $[5];
1279
+ return t1;
1280
+ }
1281
+ //#endregion
1282
+ //#region src/popover/description.tsx
1283
+ /**
1284
+ * Draws the part at the size the root states.
1285
+ */
1286
+ const Drawn$4 = withContext$2("p", "description");
1287
+ /**
1288
+ * Draws the paragraph the panel is described by.
1289
+ *
1290
+ * @param props - Everything a styled p takes.
1291
+ * @returns The part, carrying what the machine writes onto it.
1292
+ */
1293
+ function Description(props) {
1294
+ const $ = c(6);
1295
+ if ($[0] !== "d545ce922e741f565f6be1c3f6d557ad93e41a547a17628e5dba344381d781b7") {
1296
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1297
+ $[0] = "d545ce922e741f565f6be1c3f6d557ad93e41a547a17628e5dba344381d781b7";
1298
+ }
1299
+ const api = usePopover();
1300
+ let t0;
1301
+ if ($[1] !== api || $[2] !== props) {
1302
+ t0 = mergeProps(api.getDescriptionProps(), props);
1303
+ $[1] = api;
1304
+ $[2] = props;
1305
+ $[3] = t0;
1306
+ } else t0 = $[3];
1307
+ let t1;
1308
+ if ($[4] !== t0) {
1309
+ t1 = /* @__PURE__ */ jsx(Drawn$4, { ...t0 });
1310
+ $[4] = t0;
1311
+ $[5] = t1;
1312
+ } else t1 = $[5];
1313
+ return t1;
1314
+ }
1315
+ //#endregion
1316
+ //#region src/popover/indicator.tsx
1317
+ /**
1318
+ * Draws the part at the size the root states.
1319
+ */
1320
+ const Drawn$3 = withContext$2("span", "indicator");
1321
+ /**
1322
+ * Draws the mark that turns as the panel opens.
1323
+ *
1324
+ * @param props - Everything a styled span takes.
1325
+ * @returns The part, carrying what the machine writes onto it.
1326
+ */
1327
+ function Indicator$1(props) {
1328
+ const $ = c(6);
1329
+ if ($[0] !== "7050f80b93d1e1f8d988ad604a2ab87473253c34927cb7c0032d3d8a97e129c3") {
1330
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1331
+ $[0] = "7050f80b93d1e1f8d988ad604a2ab87473253c34927cb7c0032d3d8a97e129c3";
1332
+ }
1333
+ const api = usePopover();
1334
+ let t0;
1335
+ if ($[1] !== api || $[2] !== props) {
1336
+ t0 = mergeProps(api.getIndicatorProps(), props);
1337
+ $[1] = api;
1338
+ $[2] = props;
1339
+ $[3] = t0;
1340
+ } else t0 = $[3];
1341
+ let t1;
1342
+ if ($[4] !== t0) {
1343
+ t1 = /* @__PURE__ */ jsx(Drawn$3, { ...t0 });
1344
+ $[4] = t0;
1345
+ $[5] = t1;
1346
+ } else t1 = $[5];
1347
+ return t1;
1348
+ }
1349
+ //#endregion
1350
+ //#region src/popover/positioner.tsx
1351
+ /**
1352
+ * Draws the part at the size the root states.
1353
+ */
1354
+ const Drawn$2 = withContext$2("div", "positioner");
1355
+ /**
1356
+ * Draws the box that holds the panel in place beside its control.
1357
+ *
1358
+ * @param props - Everything a styled div takes.
1359
+ * @returns The part, carrying what the machine writes onto it.
1360
+ */
1361
+ function Positioner$1(props) {
1362
+ const $ = c(6);
1363
+ if ($[0] !== "cf70c4549698228d3e1b1d257b2bf04c5ce1e3640c89d8802051c24abd6e4943") {
1364
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1365
+ $[0] = "cf70c4549698228d3e1b1d257b2bf04c5ce1e3640c89d8802051c24abd6e4943";
1366
+ }
1367
+ const api = usePopover();
1368
+ let t0;
1369
+ if ($[1] !== api || $[2] !== props) {
1370
+ t0 = mergeProps(api.getPositionerProps(), props);
1371
+ $[1] = api;
1372
+ $[2] = props;
1373
+ $[3] = t0;
1374
+ } else t0 = $[3];
1375
+ let t1;
1376
+ if ($[4] !== t0) {
1377
+ t1 = /* @__PURE__ */ jsx(Drawn$2, { ...t0 });
1378
+ $[4] = t0;
1379
+ $[5] = t1;
1380
+ } else t1 = $[5];
1381
+ return t1;
1382
+ }
1383
+ //#endregion
1384
+ //#region src/popover/root.tsx
1385
+ /**
1386
+ * Draws the element that sets the variants every part below it reads, and no box.
1387
+ */
1388
+ const Framed$2 = withProvider$2("div", "root");
1389
+ /**
1390
+ * Opens a panel beside a control.
1391
+ *
1392
+ * @param props - The machine's settings, the recipe's variants and the element's props together.
1393
+ * @returns The parts, under the running machine.
1394
+ */
1395
+ function Root$2(props) {
1396
+ const $ = c(8);
1397
+ if ($[0] !== "d5137affd462daa03422209b1762a1f48785d61ac089f6fb171c96392452eb32") {
1398
+ for (let $i = 0; $i < 8; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1399
+ $[0] = "d5137affd462daa03422209b1762a1f48785d61ac089f6fb171c96392452eb32";
1400
+ }
1401
+ let t0;
1402
+ if ($[1] !== props) {
1403
+ t0 = splitPopoverProps(props);
1404
+ $[1] = props;
1405
+ $[2] = t0;
1406
+ } else t0 = $[2];
1407
+ const [options, rest] = t0;
1408
+ const api = usePopoverMachine(options);
1409
+ let t1;
1410
+ if ($[3] !== rest) {
1411
+ t1 = /* @__PURE__ */ jsx(Framed$2, { ...rest });
1412
+ $[3] = rest;
1413
+ $[4] = t1;
1414
+ } else t1 = $[4];
1415
+ let t2;
1416
+ if ($[5] !== api || $[6] !== t1) {
1417
+ t2 = /* @__PURE__ */ jsx(ApiProvider$2, {
1418
+ value: api,
1419
+ children: t1
1420
+ });
1421
+ $[5] = api;
1422
+ $[6] = t1;
1423
+ $[7] = t2;
1424
+ } else t2 = $[7];
1425
+ return t2;
1426
+ }
1427
+ //#endregion
1428
+ //#region src/popover/title.tsx
1429
+ /**
1430
+ * Draws the part at the size the root states.
1431
+ */
1432
+ const Drawn$1 = withContext$2("h2", "title");
1433
+ /**
1434
+ * Draws the heading the panel is announced by.
1435
+ *
1436
+ * @param props - Everything a styled h2 takes.
1437
+ * @returns The part, carrying what the machine writes onto it.
1438
+ */
1439
+ function Title(props) {
1440
+ const $ = c(6);
1441
+ if ($[0] !== "557a3eae145f56fb9ea0e3650eaebef1aea856d5e2afc24c487ad49ef1c31596") {
1442
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1443
+ $[0] = "557a3eae145f56fb9ea0e3650eaebef1aea856d5e2afc24c487ad49ef1c31596";
1444
+ }
1445
+ const api = usePopover();
1446
+ let t0;
1447
+ if ($[1] !== api || $[2] !== props) {
1448
+ t0 = mergeProps(api.getTitleProps(), props);
1449
+ $[1] = api;
1450
+ $[2] = props;
1451
+ $[3] = t0;
1452
+ } else t0 = $[3];
1453
+ let t1;
1454
+ if ($[4] !== t0) {
1455
+ t1 = /* @__PURE__ */ jsx(Drawn$1, { ...t0 });
1456
+ $[4] = t0;
1457
+ $[5] = t1;
1458
+ } else t1 = $[5];
1459
+ return t1;
1460
+ }
1461
+ //#endregion
1462
+ //#region src/popover/trigger.tsx
1463
+ /**
1464
+ * Draws the part at the size the root states.
1465
+ */
1466
+ const Drawn = withContext$2("button", "trigger");
1467
+ /**
1468
+ * Draws the control that opens the panel.
1469
+ *
1470
+ * @param props - Everything a styled button takes.
1471
+ * @returns The part, carrying what the machine writes onto it.
1472
+ */
1473
+ function Trigger$2(props) {
1474
+ const $ = c(6);
1475
+ if ($[0] !== "b697978bd86bd74807e8f06ef20f1c47d08b97d3bfa5d4ee47f8fa5e1a0e3f80") {
1476
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1477
+ $[0] = "b697978bd86bd74807e8f06ef20f1c47d08b97d3bfa5d4ee47f8fa5e1a0e3f80";
1478
+ }
1479
+ const api = usePopover();
1480
+ let t0;
1481
+ if ($[1] !== api || $[2] !== props) {
1482
+ t0 = mergeProps(api.getTriggerProps(), props);
1483
+ $[1] = api;
1484
+ $[2] = props;
1485
+ $[3] = t0;
1486
+ } else t0 = $[3];
1487
+ let t1;
1488
+ if ($[4] !== t0) {
1489
+ t1 = /* @__PURE__ */ jsx(Drawn, { ...t0 });
1490
+ $[4] = t0;
1491
+ $[5] = t1;
1492
+ } else t1 = $[5];
1493
+ return t1;
1494
+ }
1495
+ //#endregion
1496
+ //#region src/popover/index.ts
1497
+ var popover_exports = /* @__PURE__ */ __exportAll({
1498
+ Anchor: () => Anchor,
1499
+ Arrow: () => Arrow$1,
1500
+ ArrowTip: () => ArrowTip$1,
1501
+ CloseTrigger: () => CloseTrigger,
1502
+ Content: () => Content$2,
1503
+ Description: () => Description,
1504
+ Indicator: () => Indicator$1,
1505
+ Positioner: () => Positioner$1,
1506
+ Root: () => Root$2,
1507
+ Title: () => Title,
1508
+ Trigger: () => Trigger$2
1509
+ });
1510
+ //#endregion
1511
+ //#region src/tabs/context.ts
1512
+ /**
1513
+ * Binds the tabs' recipe to the elements that draw their parts.
1514
+ *
1515
+ * @remarks
1516
+ * Apart from the recipe, because an application's compiler reads the recipe at build time and
1517
+ * the binding needs the runtime. Apart from the machine, because the recipe decides how a part
1518
+ * is drawn and the machine decides what it does.
1519
+ */
1520
+ /**
1521
+ * Binds the recipe once. The root provides the variants and every other part reads them.
1522
+ */
1523
+ const { withContext: withContext$1, withProvider: withProvider$1 } = createSlotRecipeContext(recipe$3);
1524
+ //#endregion
1525
+ //#region src/tabs/machine.ts
1526
+ /**
1527
+ * Runs the tabs' machine and carries what it answers down to the parts.
1528
+ *
1529
+ * @remarks
1530
+ * The machine is connected once, at the root, so every part reads one api from one running
1531
+ * machine. A part drawn outside the root throws where it was written rather than drawing wrongly
1532
+ * and saying nothing.
1533
+ * The id is the machine's and never an element's. It builds the ARIA references between each tab
1534
+ * and its panel from it, so a caller naming their own passes it here and the references follow.
1535
+ */
1536
+ /**
1537
+ * Hands the running machine to every part, and reads it back.
1538
+ */
1539
+ const [ApiProvider$1, useTabs] = createRequiredContext("Tabs");
1540
+ /**
1541
+ * Splits what the machine reads from what the element does.
1542
+ *
1543
+ * @remarks
1544
+ * The machine states which props are its own, so the root never lists them and never drifts from
1545
+ * the version it is built against.
1546
+ */
1547
+ const splitTabsProps = tabs.splitProps;
1548
+ /**
1549
+ * Starts the machine and connects it.
1550
+ *
1551
+ * @param options - The settings the caller handed the root, less the id where it named none.
1552
+ * @returns The api every part reads.
1553
+ */
1554
+ function useTabsMachine(options) {
1555
+ const $ = c(6);
1556
+ if ($[0] !== "94a8deada56596db391819591e2fa2664e640bfb7ca0f99f6c7a39561868f603") {
1557
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1558
+ $[0] = "94a8deada56596db391819591e2fa2664e640bfb7ca0f99f6c7a39561868f603";
1559
+ }
1560
+ const generated = useId();
1561
+ let t0;
1562
+ if ($[1] !== options) {
1563
+ t0 = stated(options);
1564
+ $[1] = options;
1565
+ $[2] = t0;
1566
+ } else t0 = $[2];
1567
+ const t1 = options.id ?? generated;
1568
+ let t2;
1569
+ if ($[3] !== t0 || $[4] !== t1) {
1570
+ t2 = {
1571
+ ...t0,
1572
+ id: t1
1573
+ };
1574
+ $[3] = t0;
1575
+ $[4] = t1;
1576
+ $[5] = t2;
1577
+ } else t2 = $[5];
1578
+ return tabs.connect(useMachine(tabs.machine, t2), normalizeProps);
1579
+ }
1580
+ //#endregion
1581
+ //#region src/tabs/content.tsx
1582
+ /**
1583
+ * Draws the panel at the room the root states.
1584
+ */
1585
+ const Shown = withContext$1("div", "content");
1586
+ /**
1587
+ * Appears while the control it names is the one in force.
1588
+ *
1589
+ * @param props - The control it names, and everything a styled div takes.
1590
+ * @returns The panel, named and hidden by the machine.
1591
+ */
1592
+ function Content$1(t0) {
1593
+ const $ = c(4);
1594
+ if ($[0] !== "8f05634a7956fcbf2377e6b06117a39cefa46fc6cef394b584a835a7ffa0ee01") {
1595
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1596
+ $[0] = "8f05634a7956fcbf2377e6b06117a39cefa46fc6cef394b584a835a7ffa0ee01";
1597
+ }
1598
+ const { value, ...rest } = t0;
1599
+ const api = useTabs();
1600
+ const T0 = Shown;
1601
+ const t1 = mergeProps(api.getContentProps({ value }), rest);
1602
+ let t2;
1603
+ if ($[1] !== T0 || $[2] !== t1) {
1604
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
1605
+ $[1] = T0;
1606
+ $[2] = t1;
1607
+ $[3] = t2;
1608
+ } else t2 = $[3];
1609
+ return t2;
1610
+ }
1611
+ //#endregion
1612
+ //#region src/tabs/indicator.tsx
1613
+ /**
1614
+ * Draws the bar at the thickness the look states.
1615
+ */
1616
+ const Bar = withContext$1("div", "indicator");
1617
+ /**
1618
+ * Moves to whichever control is in force.
1619
+ *
1620
+ * @param props - Everything a styled div takes.
1621
+ * @returns The bar, positioned by the machine.
1622
+ */
1623
+ function Indicator(props) {
1624
+ const $ = c(6);
1625
+ if ($[0] !== "c6d7185c69c5fa0f22ab0f8678b8f61895bfc48170e0c8157a32f3d24fcb3f87") {
1626
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1627
+ $[0] = "c6d7185c69c5fa0f22ab0f8678b8f61895bfc48170e0c8157a32f3d24fcb3f87";
1628
+ }
1629
+ const api = useTabs();
1630
+ let t0;
1631
+ if ($[1] !== api || $[2] !== props) {
1632
+ t0 = mergeProps(api.getIndicatorProps(), props);
1633
+ $[1] = api;
1634
+ $[2] = props;
1635
+ $[3] = t0;
1636
+ } else t0 = $[3];
1637
+ let t1;
1638
+ if ($[4] !== t0) {
1639
+ t1 = /* @__PURE__ */ jsx(Bar, { ...t0 });
1640
+ $[4] = t0;
1641
+ $[5] = t1;
1642
+ } else t1 = $[5];
1643
+ return t1;
1644
+ }
1645
+ //#endregion
1646
+ //#region src/tabs/list.tsx
1647
+ /**
1648
+ * Draws the strip, which turns into a column where the set runs down.
1649
+ */
1650
+ const Strip = withContext$1("div", "list");
1651
+ /**
1652
+ * Draws the controls in a row, with the bar that marks the one in force.
1653
+ *
1654
+ * @param props - Everything a styled div takes.
1655
+ * @returns The strip, carrying its role and its orientation.
1656
+ */
1657
+ function List(props) {
1658
+ const $ = c(6);
1659
+ if ($[0] !== "3a24f1077c1e2de479b60caa1b5785aa04a7e89a5856793e4392859f814c4665") {
1660
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1661
+ $[0] = "3a24f1077c1e2de479b60caa1b5785aa04a7e89a5856793e4392859f814c4665";
1662
+ }
1663
+ const api = useTabs();
1664
+ let t0;
1665
+ if ($[1] !== api || $[2] !== props) {
1666
+ t0 = mergeProps(api.getListProps(), props);
1667
+ $[1] = api;
1668
+ $[2] = props;
1669
+ $[3] = t0;
1670
+ } else t0 = $[3];
1671
+ let t1;
1672
+ if ($[4] !== t0) {
1673
+ t1 = /* @__PURE__ */ jsx(Strip, { ...t0 });
1674
+ $[4] = t0;
1675
+ $[5] = t1;
1676
+ } else t1 = $[5];
1677
+ return t1;
1678
+ }
1679
+ //#endregion
1680
+ //#region src/tabs/root.tsx
1681
+ /**
1682
+ * Draws the frame and sets the variants every part below it reads.
1683
+ */
1684
+ const Framed$1 = withProvider$1("div", "root");
1685
+ /**
1686
+ * Shows one panel at a time, chosen from a strip of controls.
1687
+ *
1688
+ * @param props - The machine's options, the recipe's variants and the element's props together.
1689
+ * @returns The frame, holding the parts, under the running machine.
1690
+ */
1691
+ function Root$1(props) {
1692
+ const $ = c(11);
1693
+ if ($[0] !== "eec89bf7a552ca5dee5524841219b07e4ab3d7d4de7b1fb332feb07a3b422178") {
1694
+ for (let $i = 0; $i < 11; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1695
+ $[0] = "eec89bf7a552ca5dee5524841219b07e4ab3d7d4de7b1fb332feb07a3b422178";
1696
+ }
1697
+ let t0;
1698
+ if ($[1] !== props) {
1699
+ t0 = splitTabsProps(props);
1700
+ $[1] = props;
1701
+ $[2] = t0;
1702
+ } else t0 = $[2];
1703
+ const [options, rest] = t0;
1704
+ const api = useTabsMachine(options);
1705
+ let t1;
1706
+ if ($[3] !== api) {
1707
+ t1 = api.getRootProps();
1708
+ $[3] = api;
1709
+ $[4] = t1;
1710
+ } else t1 = $[4];
1711
+ let t2;
1712
+ if ($[5] !== rest || $[6] !== t1) {
1713
+ t2 = /* @__PURE__ */ jsx(Framed$1, {
1714
+ ...rest,
1715
+ ...t1
1716
+ });
1717
+ $[5] = rest;
1718
+ $[6] = t1;
1719
+ $[7] = t2;
1720
+ } else t2 = $[7];
1721
+ let t3;
1722
+ if ($[8] !== api || $[9] !== t2) {
1723
+ t3 = /* @__PURE__ */ jsx(ApiProvider$1, {
1724
+ value: api,
1725
+ children: t2
1726
+ });
1727
+ $[8] = api;
1728
+ $[9] = t2;
1729
+ $[10] = t3;
1730
+ } else t3 = $[10];
1731
+ return t3;
1732
+ }
1733
+ //#endregion
1734
+ //#region src/tabs/trigger.tsx
1735
+ /**
1736
+ * Draws the control at the size the root states.
1737
+ */
1738
+ const Pressed$1 = withContext$1("button", "trigger");
1739
+ /**
1740
+ * Shows the panel it names.
1741
+ *
1742
+ * @param props - The panel it names, and everything a styled button takes.
1743
+ * @returns The control, carrying its role and its selection.
1744
+ */
1745
+ function Trigger$1(t0) {
1746
+ const $ = c(4);
1747
+ if ($[0] !== "a604dc1c151922b8eeec1776c57015e506bc81cda73b4c006d0cdb9d6808412b") {
1748
+ for (let $i = 0; $i < 4; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1749
+ $[0] = "a604dc1c151922b8eeec1776c57015e506bc81cda73b4c006d0cdb9d6808412b";
1750
+ }
1751
+ const { disabled, value, ...rest } = t0;
1752
+ const api = useTabs();
1753
+ const stated = {
1754
+ ...disabled === void 0 ? {} : { disabled },
1755
+ value
1756
+ };
1757
+ const T0 = Pressed$1;
1758
+ const t1 = mergeProps(api.getTriggerProps(stated), rest);
1759
+ let t2;
1760
+ if ($[1] !== T0 || $[2] !== t1) {
1761
+ t2 = /* @__PURE__ */ jsx(T0, { ...t1 });
1762
+ $[1] = T0;
1763
+ $[2] = t1;
1764
+ $[3] = t2;
1765
+ } else t2 = $[3];
1766
+ return t2;
1767
+ }
1768
+ //#endregion
1769
+ //#region src/tabs/index.ts
1770
+ var tabs_exports = /* @__PURE__ */ __exportAll({
1771
+ Content: () => Content$1,
1772
+ Indicator: () => Indicator,
1773
+ List: () => List,
1774
+ Root: () => Root$1,
1775
+ Trigger: () => Trigger$1
1776
+ });
1777
+ //#endregion
1778
+ //#region src/tooltip/context.ts
1779
+ /**
1780
+ * Binds the tooltip's recipe to the elements that draw its parts.
1781
+ *
1782
+ * @remarks
1783
+ * Apart from the recipe, because an application's compiler reads the recipe at build time and
1784
+ * the binding needs the runtime. The content provides the variants rather than a root, because
1785
+ * the machine draws no root and the content is the part a caller sizes.
1786
+ */
1787
+ /**
1788
+ * Binds the recipe once. The content provides the variants and every other part reads them.
1789
+ */
1790
+ const { withContext, withProvider } = createSlotRecipeContext(recipe$4);
1791
+ //#endregion
1792
+ //#region src/tooltip/machine.ts
1793
+ /**
1794
+ * Runs the tooltip's machine and carries what it answers down to the parts.
1795
+ *
1796
+ * @remarks
1797
+ * The machine is connected once, at the root, so every part reads one api from one running
1798
+ * machine. A part drawn outside the root throws where it was written rather than drawing wrongly
1799
+ * and saying nothing.
1800
+ * The id is the machine's and never an element's. It names the box so the trigger can point at it
1801
+ * with `aria-describedby`, so a caller naming their own passes it here and the reference follows.
1802
+ */
1803
+ /**
1804
+ * Hands the running machine to every part, and reads it back.
1805
+ */
1806
+ const [ApiProvider, useTooltip] = createRequiredContext("Tooltip");
1807
+ /**
1808
+ * Splits what the machine reads from what the element does.
1809
+ *
1810
+ * @remarks
1811
+ * The machine states which props are its own, so the root never lists them and never drifts from
1812
+ * the version it is built against.
1813
+ */
1814
+ const splitTooltipProps = tooltip.splitProps;
1815
+ /**
1816
+ * Starts the machine and connects it.
1817
+ *
1818
+ * @param options - The settings the caller handed the root, less the id where it named none.
1819
+ * @returns The api every part reads.
1820
+ */
1821
+ function useTooltipMachine(options) {
1822
+ const $ = c(6);
1823
+ if ($[0] !== "12891576f8ad786b205a99dc3c8fed7ccb2b9ed0796f830127c2388ed7ba2f45") {
1824
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1825
+ $[0] = "12891576f8ad786b205a99dc3c8fed7ccb2b9ed0796f830127c2388ed7ba2f45";
1826
+ }
1827
+ const generated = useId();
1828
+ let t0;
1829
+ if ($[1] !== options) {
1830
+ t0 = stated(options);
1831
+ $[1] = options;
1832
+ $[2] = t0;
1833
+ } else t0 = $[2];
1834
+ const t1 = options.id ?? generated;
1835
+ let t2;
1836
+ if ($[3] !== t0 || $[4] !== t1) {
1837
+ t2 = {
1838
+ ...t0,
1839
+ id: t1
1840
+ };
1841
+ $[3] = t0;
1842
+ $[4] = t1;
1843
+ $[5] = t2;
1844
+ } else t2 = $[5];
1845
+ return tooltip.connect(useMachine(tooltip.machine, t2), normalizeProps);
1846
+ }
1847
+ //#endregion
1848
+ //#region src/tooltip/arrow-tip.tsx
1849
+ /**
1850
+ * Draws the shape the arrow shows.
1851
+ */
1852
+ const Turned = withContext("div", "arrowTip");
1853
+ /**
1854
+ * Shows one corner past the edge of the box.
1855
+ *
1856
+ * @param props - Everything a styled div takes.
1857
+ * @returns The tip, turned by the machine.
1858
+ */
1859
+ function ArrowTip(props) {
1860
+ const $ = c(6);
1861
+ if ($[0] !== "02966bec47df075783b644f5a605f03f20f25254a4520fa03a1ad9ecbb494b81") {
1862
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1863
+ $[0] = "02966bec47df075783b644f5a605f03f20f25254a4520fa03a1ad9ecbb494b81";
1864
+ }
1865
+ const api = useTooltip();
1866
+ let t0;
1867
+ if ($[1] !== api || $[2] !== props) {
1868
+ t0 = mergeProps(api.getArrowTipProps(), props);
1869
+ $[1] = api;
1870
+ $[2] = props;
1871
+ $[3] = t0;
1872
+ } else t0 = $[3];
1873
+ let t1;
1874
+ if ($[4] !== t0) {
1875
+ t1 = /* @__PURE__ */ jsx(Turned, { ...t0 });
1876
+ $[4] = t0;
1877
+ $[5] = t1;
1878
+ } else t1 = $[5];
1879
+ return t1;
1880
+ }
1881
+ //#endregion
1882
+ //#region src/tooltip/arrow.tsx
1883
+ /**
1884
+ * Draws the outer element the machine places.
1885
+ */
1886
+ const Placed$1 = withContext("div", "arrow");
1887
+ /**
1888
+ * Points from the box back at the control.
1889
+ *
1890
+ * @param props - Everything a styled div takes.
1891
+ * @returns The arrow, placed by the machine.
1892
+ */
1893
+ function Arrow(props) {
1894
+ const $ = c(6);
1895
+ if ($[0] !== "b5cad0c0b7bd28414e8a778a0b04c80f52f3936417e3f55d7caca8042ba16a91") {
1896
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1897
+ $[0] = "b5cad0c0b7bd28414e8a778a0b04c80f52f3936417e3f55d7caca8042ba16a91";
1898
+ }
1899
+ const api = useTooltip();
1900
+ let t0;
1901
+ if ($[1] !== api || $[2] !== props) {
1902
+ t0 = mergeProps(api.getArrowProps(), props);
1903
+ $[1] = api;
1904
+ $[2] = props;
1905
+ $[3] = t0;
1906
+ } else t0 = $[3];
1907
+ let t1;
1908
+ if ($[4] !== t0) {
1909
+ t1 = /* @__PURE__ */ jsx(Placed$1, { ...t0 });
1910
+ $[4] = t0;
1911
+ $[5] = t1;
1912
+ } else t1 = $[5];
1913
+ return t1;
1914
+ }
1915
+ //#endregion
1916
+ //#region src/tooltip/content.tsx
1917
+ /**
1918
+ * Draws the box at the size the root states.
1919
+ */
1920
+ const Boxed = withContext("div", "content");
1921
+ /**
1922
+ * Appears beside the control while a pointer rests on it.
1923
+ *
1924
+ * @param props - The recipe's variants, and everything a styled div takes.
1925
+ * @returns The box, named and placed by the machine.
1926
+ */
1927
+ function Content(props) {
1928
+ const $ = c(6);
1929
+ if ($[0] !== "88fc7ca5611516e5d5faa6d75d9b75e7a224c9ac106ac95be154632b3d7e6493") {
1930
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1931
+ $[0] = "88fc7ca5611516e5d5faa6d75d9b75e7a224c9ac106ac95be154632b3d7e6493";
1932
+ }
1933
+ const api = useTooltip();
1934
+ let t0;
1935
+ if ($[1] !== api || $[2] !== props) {
1936
+ t0 = mergeProps(api.getContentProps(), props);
1937
+ $[1] = api;
1938
+ $[2] = props;
1939
+ $[3] = t0;
1940
+ } else t0 = $[3];
1941
+ let t1;
1942
+ if ($[4] !== t0) {
1943
+ t1 = /* @__PURE__ */ jsx(Boxed, { ...t0 });
1944
+ $[4] = t0;
1945
+ $[5] = t1;
1946
+ } else t1 = $[5];
1947
+ return t1;
1948
+ }
1949
+ //#endregion
1950
+ //#region src/tooltip/positioner.tsx
1951
+ /**
1952
+ * Draws the box the machine positions.
1953
+ */
1954
+ const Placed = withContext("div", "positioner");
1955
+ /**
1956
+ * Draws the box wherever the machine measured room for it.
1957
+ *
1958
+ * @param props - Everything a styled div takes.
1959
+ * @returns The box, positioned by the machine.
1960
+ */
1961
+ function Positioner(props) {
1962
+ const $ = c(6);
1963
+ if ($[0] !== "74ea8688d306441e751783062f2f2380d20e37c46b7550f27f648a39ab74a05d") {
1964
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1965
+ $[0] = "74ea8688d306441e751783062f2f2380d20e37c46b7550f27f648a39ab74a05d";
1966
+ }
1967
+ const api = useTooltip();
1968
+ let t0;
1969
+ if ($[1] !== api || $[2] !== props) {
1970
+ t0 = mergeProps(api.getPositionerProps(), props);
1971
+ $[1] = api;
1972
+ $[2] = props;
1973
+ $[3] = t0;
1974
+ } else t0 = $[3];
1975
+ let t1;
1976
+ if ($[4] !== t0) {
1977
+ t1 = /* @__PURE__ */ jsx(Placed, { ...t0 });
1978
+ $[4] = t0;
1979
+ $[5] = t1;
1980
+ } else t1 = $[5];
1981
+ return t1;
1982
+ }
1983
+ //#endregion
1984
+ //#region src/tooltip/root.tsx
1985
+ /**
1986
+ * Draws the element that sets the variants every part below it reads, and no box.
1987
+ */
1988
+ const Framed = withProvider("div", "root");
1989
+ /**
1990
+ * Shows a short label beside whatever a pointer rests on.
1991
+ *
1992
+ * @param props - The machine's settings, the recipe's variants and the element's props together.
1993
+ * @returns The parts, under the running machine.
1994
+ */
1995
+ function Root(props) {
1996
+ const $ = c(8);
1997
+ if ($[0] !== "2edd70370670d85de8b7d38a53a35edb4e43b0f9a984adc9f2bf9961cf4c3c82") {
1998
+ for (let $i = 0; $i < 8; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
1999
+ $[0] = "2edd70370670d85de8b7d38a53a35edb4e43b0f9a984adc9f2bf9961cf4c3c82";
2000
+ }
2001
+ let t0;
2002
+ if ($[1] !== props) {
2003
+ t0 = splitTooltipProps(props);
2004
+ $[1] = props;
2005
+ $[2] = t0;
2006
+ } else t0 = $[2];
2007
+ const [options, rest] = t0;
2008
+ const api = useTooltipMachine(options);
2009
+ let t1;
2010
+ if ($[3] !== rest) {
2011
+ t1 = /* @__PURE__ */ jsx(Framed, { ...rest });
2012
+ $[3] = rest;
2013
+ $[4] = t1;
2014
+ } else t1 = $[4];
2015
+ let t2;
2016
+ if ($[5] !== api || $[6] !== t1) {
2017
+ t2 = /* @__PURE__ */ jsx(ApiProvider, {
2018
+ value: api,
2019
+ children: t1
2020
+ });
2021
+ $[5] = api;
2022
+ $[6] = t1;
2023
+ $[7] = t2;
2024
+ } else t2 = $[7];
2025
+ return t2;
2026
+ }
2027
+ //#endregion
2028
+ //#region src/tooltip/trigger.tsx
2029
+ /**
2030
+ * Draws the control, styled by whatever the caller drew rather than by this recipe.
2031
+ */
2032
+ const Pressed = withContext("button", "trigger");
2033
+ /**
2034
+ * Opens the box as a pointer rests on it or focus reaches it.
2035
+ *
2036
+ * @param props - Everything a styled button takes.
2037
+ * @returns The control, carrying what the machine needs to open the box.
2038
+ */
2039
+ function Trigger(props) {
2040
+ const $ = c(6);
2041
+ if ($[0] !== "245890bdbeb0d0630aa58dd84f3805e4cc2e65019af150a8cc2ba2c264d0a7d0") {
2042
+ for (let $i = 0; $i < 6; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
2043
+ $[0] = "245890bdbeb0d0630aa58dd84f3805e4cc2e65019af150a8cc2ba2c264d0a7d0";
2044
+ }
2045
+ const api = useTooltip();
2046
+ let t0;
2047
+ if ($[1] !== api || $[2] !== props) {
2048
+ t0 = mergeProps(api.getTriggerProps(), props);
2049
+ $[1] = api;
2050
+ $[2] = props;
2051
+ $[3] = t0;
2052
+ } else t0 = $[3];
2053
+ let t1;
2054
+ if ($[4] !== t0) {
2055
+ t1 = /* @__PURE__ */ jsx(Pressed, { ...t0 });
2056
+ $[4] = t0;
2057
+ $[5] = t1;
2058
+ } else t1 = $[5];
2059
+ return t1;
2060
+ }
2061
+ //#endregion
2062
+ //#region src/tooltip/index.ts
2063
+ var tooltip_exports = /* @__PURE__ */ __exportAll({
2064
+ Arrow: () => Arrow,
2065
+ ArrowTip: () => ArrowTip,
2066
+ Content: () => Content,
2067
+ Positioner: () => Positioner,
2068
+ Root: () => Root,
2069
+ Trigger: () => Trigger
2070
+ });
2071
+ //#endregion
2072
+ export { collapsible_exports as Collapsible, menu_exports as Menu, popover_exports as Popover, tabs_exports as Tabs, tooltip_exports as Tooltip };