@openwarelabs/ui 0.1.1 → 0.3.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.cjs CHANGED
@@ -96,6 +96,7 @@ __export(index_exports, {
96
96
  Tabs: () => Tabs,
97
97
  Tag: () => Tag,
98
98
  TagGroup: () => TagGroup,
99
+ Text: () => Text,
99
100
  Textarea: () => Textarea,
100
101
  Toaster: () => Toaster,
101
102
  ToggleButton: () => ToggleButton,
@@ -132,9 +133,6 @@ __export(index_exports, {
132
133
  });
133
134
  module.exports = __toCommonJS(index_exports);
134
135
 
135
- // src/components/Button/Button.tsx
136
- var import_react = require("react");
137
-
138
136
  // src/utils/cx.ts
139
137
  function cx(...values) {
140
138
  const classes = [];
@@ -149,6 +147,52 @@ function cx(...values) {
149
147
  return classes.join(" ");
150
148
  }
151
149
 
150
+ // src/components/Text/Text.tsx
151
+ var import_jsx_runtime = require("react/jsx-runtime");
152
+ var elements = {
153
+ hero: "h1",
154
+ "page-title": "h1",
155
+ "section-title": "h2",
156
+ heading: "h3",
157
+ lead: "p",
158
+ prose: "p",
159
+ "dialog-title": "h2",
160
+ "card-title": "h3",
161
+ body: "p",
162
+ copy: "p",
163
+ label: "span",
164
+ button: "span",
165
+ caption: "span",
166
+ badge: "span",
167
+ overline: "span",
168
+ code: "code",
169
+ kbd: "kbd"
170
+ };
171
+ var mutedByDefault = ["lead", "copy", "caption", "overline"];
172
+ function Text({ variant = "body", as, tone, align, truncate = false, className, children, ...props }) {
173
+ const Element = as ?? elements[variant];
174
+ const colour = tone ?? (mutedByDefault.includes(variant) ? "muted" : void 0);
175
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
176
+ Element,
177
+ {
178
+ className: cx(
179
+ "ow-text",
180
+ `ow-type-${variant}`,
181
+ `ow-text--${variant}`,
182
+ colour && `ow-text--${colour}`,
183
+ align && align !== "start" && `ow-text--${align}`,
184
+ truncate && "ow-text--truncate",
185
+ className
186
+ ),
187
+ ...props,
188
+ children
189
+ }
190
+ );
191
+ }
192
+
193
+ // src/components/Button/Button.tsx
194
+ var import_react = require("react");
195
+
152
196
  // src/utils/text.ts
153
197
  function getInitials(name) {
154
198
  const words = name.trim().split(/\s+/).filter(Boolean);
@@ -161,9 +205,9 @@ function toAriaShortcut(shortcut) {
161
205
  }
162
206
 
163
207
  // src/components/Spinner/Spinner.tsx
164
- var import_jsx_runtime = require("react/jsx-runtime");
208
+ var import_jsx_runtime2 = require("react/jsx-runtime");
165
209
  function Spinner({ size = "md", tone = "primary", label = "Loading", className }) {
166
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
210
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
167
211
  "span",
168
212
  {
169
213
  className: cx("ow-spinner", `ow-spinner--${size}`, `ow-spinner--${tone}`, className),
@@ -173,7 +217,7 @@ function Spinner({ size = "md", tone = "primary", label = "Loading", className }
173
217
  }
174
218
 
175
219
  // src/components/Button/Button.tsx
176
- var import_jsx_runtime2 = require("react/jsx-runtime");
220
+ var import_jsx_runtime3 = require("react/jsx-runtime");
177
221
  function buttonClassName({
178
222
  variant = "secondary",
179
223
  size = "md",
@@ -204,8 +248,8 @@ var Button = (0, import_react.forwardRef)(function Button2({
204
248
  variant = "secondary",
205
249
  ...buttonProps
206
250
  }, ref) {
207
- const leading = loading ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Spinner, { size: "sm", tone: "current", label: "" }) : startIcon;
208
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
251
+ const leading = loading ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Spinner, { size: "sm", tone: "current", label: "" }) : startIcon;
252
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
209
253
  "button",
210
254
  {
211
255
  ref,
@@ -222,10 +266,10 @@ var Button = (0, import_react.forwardRef)(function Button2({
222
266
  "aria-keyshortcuts": shortcut ? toAriaShortcut(shortcut) : void 0,
223
267
  ...buttonProps,
224
268
  children: [
225
- leading ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "ow-button__icon", children: leading }) : null,
269
+ leading ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ow-button__icon", children: leading }) : null,
226
270
  iconOnly && loading ? null : children,
227
- endIcon && !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "ow-button__icon", children: endIcon }) : null,
228
- shortcut && !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("kbd", { "aria-hidden": "true", className: "ow-button__shortcut", children: shortcut }) : null
271
+ endIcon && !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ow-button__icon", children: endIcon }) : null,
272
+ shortcut && !iconOnly ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("kbd", { "aria-hidden": "true", className: "ow-button__shortcut", children: shortcut }) : null
229
273
  ]
230
274
  }
231
275
  );
@@ -257,10 +301,10 @@ function useControllableState(value, defaultValue, onChange) {
257
301
  }
258
302
 
259
303
  // src/icons.tsx
260
- var import_jsx_runtime3 = require("react/jsx-runtime");
304
+ var import_jsx_runtime4 = require("react/jsx-runtime");
261
305
  function icon(paths) {
262
306
  return function Icon({ size = 16, strokeWidth = 2, ...props }) {
263
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
307
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
264
308
  "svg",
265
309
  {
266
310
  xmlns: "http://www.w3.org/2000/svg",
@@ -280,160 +324,160 @@ function icon(paths) {
280
324
  );
281
325
  };
282
326
  }
283
- var CheckIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M20 6 9 17l-5-5" }));
284
- var ChevronDownIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 9 6 6 6-6" }));
327
+ var CheckIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M20 6 9 17l-5-5" }));
328
+ var ChevronDownIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m6 9 6 6 6-6" }));
285
329
  var SearchIcon = icon(
286
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
287
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
288
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m21 21-4.3-4.3" })
330
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
331
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
332
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m21 21-4.3-4.3" })
289
333
  ] })
290
334
  );
291
335
  var CornerDownLeftIcon = icon(
292
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
293
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "9 10 4 15 9 20" }),
294
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M20 4v7a4 4 0 0 1-4 4H4" })
336
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
337
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polyline", { points: "9 10 4 15 9 20" }),
338
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M20 4v7a4 4 0 0 1-4 4H4" })
295
339
  ] })
296
340
  );
297
341
  var XIcon = icon(
298
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
299
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M18 6 6 18" }),
300
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 6 12 12" })
342
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
343
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M18 6 6 18" }),
344
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m6 6 12 12" })
301
345
  ] })
302
346
  );
303
347
  var UserIcon = icon(
304
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
305
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }),
306
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "7", r: "4" })
348
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
349
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" }),
350
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "7", r: "4" })
307
351
  ] })
308
352
  );
309
353
  var TrashIcon = icon(
310
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
311
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M3 6h18" }),
312
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }),
313
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" }),
314
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "10", x2: "10", y1: "11", y2: "17" }),
315
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "14", x2: "14", y1: "11", y2: "17" })
354
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
355
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M3 6h18" }),
356
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }),
357
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" }),
358
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "10", x2: "10", y1: "11", y2: "17" }),
359
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "14", x2: "14", y1: "11", y2: "17" })
316
360
  ] })
317
361
  );
318
362
  var CircleCheckIcon = icon(
319
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
320
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
321
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m9 12 2 2 4-4" })
363
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
364
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
365
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m9 12 2 2 4-4" })
322
366
  ] })
323
367
  );
324
368
  var CircleAlertIcon = icon(
325
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
326
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
327
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
328
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
369
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
370
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
371
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", x2: "12", y1: "8", y2: "12" }),
372
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", x2: "12.01", y1: "16", y2: "16" })
329
373
  ] })
330
374
  );
331
- var ChevronRightIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m9 18 6-6-6-6" }));
332
- var ChevronLeftIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m15 18-6-6 6-6" }));
333
- var ChevronUpIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m18 15-6-6-6 6" }));
334
- var MinusIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M5 12h14" }));
375
+ var ChevronRightIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m9 18 6-6-6-6" }));
376
+ var ChevronLeftIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m15 18-6-6 6-6" }));
377
+ var ChevronUpIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m18 15-6-6-6 6" }));
378
+ var MinusIcon = icon(/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M5 12h14" }));
335
379
  var PlusIcon = icon(
336
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
337
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M5 12h14" }),
338
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 5v14" })
380
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
381
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M5 12h14" }),
382
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 5v14" })
339
383
  ] })
340
384
  );
341
385
  var InfoIcon = icon(
342
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
343
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
344
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 16v-4" }),
345
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 8h.01" })
386
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
387
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
388
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 16v-4" }),
389
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 8h.01" })
346
390
  ] })
347
391
  );
348
392
  var TriangleAlertIcon = icon(
349
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
350
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
351
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 9v4" }),
352
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 17h.01" })
393
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
394
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }),
395
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 9v4" }),
396
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 17h.01" })
353
397
  ] })
354
398
  );
355
399
  var PipetteIcon = icon(
356
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
357
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m2 22 1-1h3l9-9" }),
358
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M3 21v-3l9-9" }),
359
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m15 6 3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z" })
400
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
401
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m2 22 1-1h3l9-9" }),
402
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M3 21v-3l9-9" }),
403
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m15 6 3.4-3.4a2.1 2.1 0 1 1 3 3L18 9l.4.4a2.1 2.1 0 1 1-3 3l-3.8-3.8a2.1 2.1 0 1 1 3-3l.4.4Z" })
360
404
  ] })
361
405
  );
362
406
  var CopyIcon = icon(
363
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
364
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" }),
365
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })
407
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
408
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2" }),
409
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" })
366
410
  ] })
367
411
  );
368
412
  var CalendarIcon = icon(
369
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
370
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M8 2v4" }),
371
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M16 2v4" }),
372
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }),
373
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M3 10h18" })
413
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
414
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M8 2v4" }),
415
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M16 2v4" }),
416
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("rect", { width: "18", height: "18", x: "3", y: "4", rx: "2" }),
417
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M3 10h18" })
374
418
  ] })
375
419
  );
376
420
  var FileIcon = icon(
377
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
378
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
379
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
421
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
422
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" }),
423
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M14 2v4a2 2 0 0 0 2 2h4" })
380
424
  ] })
381
425
  );
382
426
  var FolderIcon = icon(
383
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" })
427
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" })
384
428
  );
385
429
  var FolderOpenIcon = icon(
386
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2" })
430
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2" })
387
431
  );
388
432
  var UploadIcon = icon(
389
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
390
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
391
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "17 8 12 3 7 8" }),
392
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
433
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
434
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
435
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polyline", { points: "17 8 12 3 7 8" }),
436
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
393
437
  ] })
394
438
  );
395
439
  var ArrowUpRightIcon = icon(
396
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
397
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M7 7h10v10" }),
398
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M7 17 17 7" })
440
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
441
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M7 7h10v10" }),
442
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M7 17 17 7" })
399
443
  ] })
400
444
  );
401
445
  var ArrowUpIcon = icon(
402
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
403
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m5 12 7-7 7 7" }),
404
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 19V5" })
446
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
447
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m5 12 7-7 7 7" }),
448
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 19V5" })
405
449
  ] })
406
450
  );
407
451
  var ArrowDownIcon = icon(
408
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
409
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M12 5v14" }),
410
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m19 12-7 7-7-7" })
452
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
453
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 5v14" }),
454
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m19 12-7 7-7-7" })
411
455
  ] })
412
456
  );
413
457
  var ChevronsUpDownIcon = icon(
414
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
415
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m7 15 5 5 5-5" }),
416
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "m7 9 5-5 5 5" })
458
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
459
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m7 15 5 5 5-5" }),
460
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m7 9 5-5 5 5" })
417
461
  ] })
418
462
  );
419
463
  var InboxIcon = icon(
420
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
421
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }),
422
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" })
464
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
465
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }),
466
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z" })
423
467
  ] })
424
468
  );
425
469
  var EllipsisIcon = icon(
426
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
427
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "12", cy: "12", r: "1" }),
428
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "19", cy: "12", r: "1" }),
429
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("circle", { cx: "5", cy: "12", r: "1" })
470
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
471
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "12", cy: "12", r: "1" }),
472
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "19", cy: "12", r: "1" }),
473
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "5", cy: "12", r: "1" })
430
474
  ] })
431
475
  );
432
476
 
433
477
  // src/components/Button/ButtonGroup.tsx
434
- var import_jsx_runtime4 = require("react/jsx-runtime");
478
+ var import_jsx_runtime5 = require("react/jsx-runtime");
435
479
  function ButtonGroup({ attached = true, orientation = "horizontal", className, ...props }) {
436
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
480
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
437
481
  "div",
438
482
  {
439
483
  role: "group",
@@ -448,7 +492,7 @@ function ButtonGroup({ attached = true, orientation = "horizontal", className, .
448
492
  );
449
493
  }
450
494
  var CloseButton = (0, import_react3.forwardRef)(function CloseButton2({ size = "md", label = "Close", className, type = "button", ...buttonProps }, ref) {
451
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
495
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
452
496
  "button",
453
497
  {
454
498
  ref,
@@ -456,13 +500,13 @@ var CloseButton = (0, import_react3.forwardRef)(function CloseButton2({ size = "
456
500
  "aria-label": label,
457
501
  className: cx("ow-close-button", `ow-close-button--${size}`, className),
458
502
  ...buttonProps,
459
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(XIcon, { size: size === "sm" ? 14 : 17 })
503
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(XIcon, { size: size === "sm" ? 14 : 17 })
460
504
  }
461
505
  );
462
506
  });
463
507
  var ToggleButton = (0, import_react3.forwardRef)(function ToggleButton2({ pressed, defaultPressed = false, onPressedChange, onClick, className, variant = "secondary", ...buttonProps }, ref) {
464
508
  const [isPressed, setPressed] = useControllableState(pressed, defaultPressed, onPressedChange);
465
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
509
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
466
510
  Button,
467
511
  {
468
512
  ref,
@@ -520,7 +564,7 @@ function useIndicator(containerRef, selector, key) {
520
564
  }
521
565
 
522
566
  // src/components/SegmentedControl/SegmentedControl.tsx
523
- var import_jsx_runtime5 = require("react/jsx-runtime");
567
+ var import_jsx_runtime6 = require("react/jsx-runtime");
524
568
  function SegmentedControl({
525
569
  options,
526
570
  value,
@@ -551,7 +595,7 @@ function SegmentedControl({
551
595
  setCurrent(options[target].value);
552
596
  }
553
597
  const focusable = options.some((option) => option.value === current && !option.disabled) ? current : enabled[0]?.option.value;
554
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
598
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
555
599
  "div",
556
600
  {
557
601
  ref: groupRef,
@@ -561,7 +605,7 @@ function SegmentedControl({
561
605
  children: [
562
606
  options.map((option, index) => {
563
607
  const isSelected = option.value === current;
564
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
608
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
565
609
  "button",
566
610
  {
567
611
  ref: (element) => {
@@ -577,14 +621,14 @@ function SegmentedControl({
577
621
  onClick: () => setCurrent(option.value),
578
622
  onKeyDown: (event) => onKeyDown(event, index),
579
623
  children: [
580
- option.icon ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ow-segmented__icon", children: option.icon }) : null,
624
+ option.icon ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ow-segmented__icon", children: option.icon }) : null,
581
625
  option.label
582
626
  ]
583
627
  },
584
628
  option.value
585
629
  );
586
630
  }),
587
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "ow-indicator", "aria-hidden": "true" })
631
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ow-indicator", "aria-hidden": "true" })
588
632
  ]
589
633
  }
590
634
  );
@@ -592,9 +636,9 @@ function SegmentedControl({
592
636
 
593
637
  // src/components/ChoiceCard/ChoiceCard.tsx
594
638
  var import_react6 = require("react");
595
- var import_jsx_runtime6 = require("react/jsx-runtime");
639
+ var import_jsx_runtime7 = require("react/jsx-runtime");
596
640
  var ChoiceCard = (0, import_react6.forwardRef)(function ChoiceCard2({ className, description, icon: icon2, recommended = false, shortcut, title, type = "button", ...buttonProps }, ref) {
597
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
641
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
598
642
  "button",
599
643
  {
600
644
  ref,
@@ -603,13 +647,13 @@ var ChoiceCard = (0, import_react6.forwardRef)(function ChoiceCard2({ className,
603
647
  "aria-keyshortcuts": shortcut ? toAriaShortcut(shortcut) : void 0,
604
648
  ...buttonProps,
605
649
  children: [
606
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "ow-choice__top", children: [
607
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ow-choice__icon", children: icon2 }),
608
- shortcut ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("kbd", { "aria-hidden": "true", className: "ow-choice__shortcut", children: shortcut }) : null
650
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "ow-choice__top", children: [
651
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-choice__icon", children: icon2 }),
652
+ shortcut ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("kbd", { "aria-hidden": "true", className: "ow-choice__shortcut", children: shortcut }) : null
609
653
  ] }),
610
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "ow-choice__text", children: [
611
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ow-choice__title", children: title }),
612
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "ow-choice__description", children: description })
654
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "ow-choice__text", children: [
655
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-choice__title", children: title }),
656
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-choice__description", children: description })
613
657
  ] })
614
658
  ]
615
659
  }
@@ -644,12 +688,12 @@ async function copyText(text) {
644
688
  }
645
689
 
646
690
  // src/components/CodeBlock/CodeBlock.tsx
647
- var import_jsx_runtime7 = require("react/jsx-runtime");
691
+ var import_jsx_runtime8 = require("react/jsx-runtime");
648
692
  function CopyButton({ value, label = "Copy", copiedLabel = "Copied", iconOnly = false, tone = "default", onCopy, className }) {
649
693
  const [copied, setCopied] = (0, import_react7.useState)(false);
650
694
  const timer = (0, import_react7.useRef)(0);
651
695
  (0, import_react7.useEffect)(() => () => window.clearTimeout(timer.current), []);
652
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
696
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
653
697
  "button",
654
698
  {
655
699
  type: "button",
@@ -670,12 +714,12 @@ function CopyButton({ value, label = "Copy", copiedLabel = "Copied", iconOnly =
670
714
  }
671
715
  },
672
716
  children: [
673
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "ow-copy-button__icon", "aria-hidden": "true", children: [
674
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyIcon, { size: 14 }),
675
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CheckIcon, { size: 14 })
717
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "ow-copy-button__icon", "aria-hidden": "true", children: [
718
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyIcon, { size: 14 }),
719
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CheckIcon, { size: 14 })
676
720
  ] }),
677
- iconOnly ? null : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: copied ? copiedLabel : label }),
678
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-visually-hidden", "aria-live": "polite", children: copied ? copiedLabel : "" })
721
+ iconOnly ? null : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: copied ? copiedLabel : label }),
722
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-visually-hidden", "aria-live": "polite", children: copied ? copiedLabel : "" })
679
723
  ]
680
724
  }
681
725
  );
@@ -683,31 +727,31 @@ function CopyButton({ value, label = "Copy", copiedLabel = "Copied", iconOnly =
683
727
  function CodeBlock({ code, html, title, language, showLineNumbers = false, copyable = true, maxHeight, className }) {
684
728
  const hasHeader = title !== void 0 || language !== void 0;
685
729
  const lines = code.replace(/\n$/, "").split("\n");
686
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cx("ow-code-block", showLineNumbers && "ow-code-block--numbered", className), children: [
687
- hasHeader ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "ow-code-block__header", children: [
688
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-code-block__title", children: title }),
689
- language ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-code-block__language", children: language }) : null,
690
- copyable ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyButton, { value: code, tone: "onDark", iconOnly: true, label: "Copy code" }) : null
691
- ] }) : copyable ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyButton, { value: code, tone: "onDark", iconOnly: true, label: "Copy code", className: "ow-code-block__floating-copy" }) : null,
692
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("pre", { className: "ow-code-block__pre", style: maxHeight ? { maxHeight } : void 0, tabIndex: 0, children: [
693
- showLineNumbers ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-code-block__numbers", "aria-hidden": "true", children: lines.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: index + 1 }, index)) }) : null,
694
- html ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("code", { className: "ow-code-block__code", dangerouslySetInnerHTML: { __html: html } }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("code", { className: "ow-code-block__code", children: code.replace(/\n$/, "") })
730
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: cx("ow-code-block", showLineNumbers && "ow-code-block--numbered", className), children: [
731
+ hasHeader ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "ow-code-block__header", children: [
732
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-code-block__title", children: title }),
733
+ language ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-code-block__language", children: language }) : null,
734
+ copyable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyButton, { value: code, tone: "onDark", iconOnly: true, label: "Copy code" }) : null
735
+ ] }) : copyable ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyButton, { value: code, tone: "onDark", iconOnly: true, label: "Copy code", className: "ow-code-block__floating-copy" }) : null,
736
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("pre", { className: "ow-code-block__pre", style: maxHeight ? { maxHeight } : void 0, tabIndex: 0, children: [
737
+ showLineNumbers ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-code-block__numbers", "aria-hidden": "true", children: lines.map((_, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: index + 1 }, index)) }) : null,
738
+ html ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { className: "ow-code-block__code", dangerouslySetInnerHTML: { __html: html } }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { className: "ow-code-block__code", children: code.replace(/\n$/, "") })
695
739
  ] })
696
740
  ] });
697
741
  }
698
742
  function Snippet({ value, prompt = "$", className }) {
699
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: cx("ow-snippet", className), children: [
700
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("code", { className: "ow-snippet__code", children: [
701
- prompt ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "ow-snippet__prompt", "aria-hidden": "true", children: prompt }) : null,
743
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: cx("ow-snippet", className), children: [
744
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("code", { className: "ow-snippet__code", children: [
745
+ prompt ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "ow-snippet__prompt", "aria-hidden": "true", children: prompt }) : null,
702
746
  value
703
747
  ] }),
704
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(CopyButton, { value, iconOnly: true, label: `Copy ${value}` })
748
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopyButton, { value, iconOnly: true, label: `Copy ${value}` })
705
749
  ] });
706
750
  }
707
751
 
708
752
  // src/components/Field/Field.tsx
709
753
  var import_react8 = require("react");
710
- var import_jsx_runtime8 = require("react/jsx-runtime");
754
+ var import_jsx_runtime9 = require("react/jsx-runtime");
711
755
  function Field({ label, children, hint, error, className }) {
712
756
  const generatedId = (0, import_react8.useId)();
713
757
  const hintId = `${generatedId}-hint`;
@@ -716,21 +760,21 @@ function Field({ label, children, hint, error, className }) {
716
760
  const controlId = child?.props.id ?? `${generatedId}-control`;
717
761
  const describedBy = [child?.props["aria-describedby"], hint ? hintId : void 0, error ? errorId : void 0].filter(Boolean).join(" ") || void 0;
718
762
  const invalidProp = child && typeof child.type !== "string" ? { isInvalid: child.props.isInvalid ?? Boolean(error) } : { "aria-invalid": error ? true : void 0 };
719
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: cx("ow-field", className), children: [
720
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("label", { className: "ow-field__label", htmlFor: controlId, children: label }),
763
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cx("ow-field", className), children: [
764
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("label", { className: "ow-field__label", htmlFor: controlId, children: label }),
721
765
  child ? (0, import_react8.cloneElement)(child, { id: controlId, "aria-describedby": describedBy, ...invalidProp }) : children,
722
- hint ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { id: hintId, className: "ow-field__hint", children: hint }) : null,
723
- error ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { id: errorId, role: "alert", className: "ow-field__error", children: error }) : null
766
+ hint ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { id: hintId, className: "ow-field__hint", children: hint }) : null,
767
+ error ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { id: errorId, role: "alert", className: "ow-field__error", children: error }) : null
724
768
  ] });
725
769
  }
726
770
 
727
771
  // src/components/Input/Input.tsx
728
772
  var import_react9 = require("react");
729
- var import_jsx_runtime9 = require("react/jsx-runtime");
773
+ var import_jsx_runtime10 = require("react/jsx-runtime");
730
774
  var Input = (0, import_react9.forwardRef)(function Input2({ className, isInvalid = false, size = "md", startContent, endContent, ...inputProps }, ref) {
731
775
  const invalid = isInvalid || void 0;
732
776
  if (startContent === void 0 && endContent === void 0) {
733
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
777
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
734
778
  "input",
735
779
  {
736
780
  ref,
@@ -740,7 +784,7 @@ var Input = (0, import_react9.forwardRef)(function Input2({ className, isInvalid
740
784
  }
741
785
  );
742
786
  }
743
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
787
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
744
788
  "div",
745
789
  {
746
790
  className: cx(
@@ -751,9 +795,9 @@ var Input = (0, import_react9.forwardRef)(function Input2({ className, isInvalid
751
795
  className
752
796
  ),
753
797
  children: [
754
- startContent !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ow-input-group__addon", children: startContent }) : null,
755
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("input", { ref, className: "ow-input-group__input", "aria-invalid": invalid, ...inputProps }),
756
- endContent !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "ow-input-group__addon", children: endContent }) : null
798
+ startContent !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "ow-input-group__addon", children: startContent }) : null,
799
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("input", { ref, className: "ow-input-group__input", "aria-invalid": invalid, ...inputProps }),
800
+ endContent !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "ow-input-group__addon", children: endContent }) : null
757
801
  ]
758
802
  }
759
803
  );
@@ -761,7 +805,7 @@ var Input = (0, import_react9.forwardRef)(function Input2({ className, isInvalid
761
805
 
762
806
  // src/components/SearchField/SearchField.tsx
763
807
  var import_react10 = require("react");
764
- var import_jsx_runtime10 = require("react/jsx-runtime");
808
+ var import_jsx_runtime11 = require("react/jsx-runtime");
765
809
  function assignRef(ref, value) {
766
810
  if (typeof ref === "function") ref(value);
767
811
  else if (ref) ref.current = value;
@@ -791,7 +835,7 @@ var SearchField = (0, import_react10.forwardRef)(function SearchField2({
791
835
  onSubmit?.(text);
792
836
  }
793
837
  }
794
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
838
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
795
839
  Input,
796
840
  {
797
841
  ref: (element) => {
@@ -805,8 +849,8 @@ var SearchField = (0, import_react10.forwardRef)(function SearchField2({
805
849
  value: text,
806
850
  onChange: (event) => setText(event.target.value),
807
851
  onKeyDown: handleKeyDown,
808
- startContent: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SearchIcon, { size: size === "sm" ? 14 : 16 }),
809
- endContent: loading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Spinner, { size: "sm", label: "Searching" }) : text ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
852
+ startContent: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SearchIcon, { size: size === "sm" ? 14 : 16 }),
853
+ endContent: loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Spinner, { size: "sm", label: "Searching" }) : text ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
810
854
  CloseButton,
811
855
  {
812
856
  size: "sm",
@@ -824,7 +868,7 @@ var SearchField = (0, import_react10.forwardRef)(function SearchField2({
824
868
 
825
869
  // src/components/NumberField/NumberField.tsx
826
870
  var import_react11 = require("react");
827
- var import_jsx_runtime11 = require("react/jsx-runtime");
871
+ var import_jsx_runtime12 = require("react/jsx-runtime");
828
872
  var decimals = (step) => (String(step).split(".")[1] ?? "").length;
829
873
  var NumberField = (0, import_react11.forwardRef)(function NumberField2({
830
874
  value,
@@ -888,7 +932,7 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
888
932
  }
889
933
  const atMin = min !== void 0 && number !== null && number <= min;
890
934
  const atMax = max !== void 0 && number !== null && number >= max;
891
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
935
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
892
936
  "div",
893
937
  {
894
938
  className: cx(
@@ -899,7 +943,7 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
899
943
  className
900
944
  ),
901
945
  children: [
902
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
946
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
903
947
  "button",
904
948
  {
905
949
  type: "button",
@@ -908,10 +952,10 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
908
952
  tabIndex: -1,
909
953
  disabled: disabled || atMin,
910
954
  onClick: () => stepBy(-1),
911
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(MinusIcon, { size: 14 })
955
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(MinusIcon, { size: 14 })
912
956
  }
913
957
  ),
914
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
958
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
915
959
  "input",
916
960
  {
917
961
  ref,
@@ -940,7 +984,7 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
940
984
  ...inputProps
941
985
  }
942
986
  ),
943
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
987
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
944
988
  "button",
945
989
  {
946
990
  type: "button",
@@ -949,7 +993,7 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
949
993
  tabIndex: -1,
950
994
  disabled: disabled || atMax,
951
995
  onClick: () => stepBy(1),
952
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(PlusIcon, { size: 14 })
996
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(PlusIcon, { size: 14 })
953
997
  }
954
998
  )
955
999
  ]
@@ -959,7 +1003,7 @@ var NumberField = (0, import_react11.forwardRef)(function NumberField2({
959
1003
 
960
1004
  // src/components/InputOTP/InputOTP.tsx
961
1005
  var import_react12 = require("react");
962
- var import_jsx_runtime12 = require("react/jsx-runtime");
1006
+ var import_jsx_runtime13 = require("react/jsx-runtime");
963
1007
  function InputOTP({
964
1008
  length = 6,
965
1009
  value,
@@ -1021,10 +1065,10 @@ function InputOTP({
1021
1065
  const pasted = clean(event.clipboardData.getData("text"));
1022
1066
  if (pasted) update(chars.slice(0, index).join("") + pasted, index + pasted.length);
1023
1067
  }
1024
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { role: "group", "aria-label": ariaLabel, className: cx("ow-otp", isInvalid && "ow-otp--invalid", className), children: [
1025
- chars.map((char, index) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "ow-otp__slot", children: [
1026
- groupSize && index > 0 && index % groupSize === 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "ow-otp__separator", "aria-hidden": "true" }) : null,
1027
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1068
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { role: "group", "aria-label": ariaLabel, className: cx("ow-otp", isInvalid && "ow-otp--invalid", className), children: [
1069
+ chars.map((char, index) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "ow-otp__slot", children: [
1070
+ groupSize && index > 0 && index % groupSize === 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "ow-otp__separator", "aria-hidden": "true" }) : null,
1071
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1028
1072
  "input",
1029
1073
  {
1030
1074
  ref: (element) => {
@@ -1052,7 +1096,7 @@ function InputOTP({
1052
1096
  }
1053
1097
  )
1054
1098
  ] }, index)),
1055
- name ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("input", { type: "hidden", name, value: code }) : null
1099
+ name ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("input", { type: "hidden", name, value: code }) : null
1056
1100
  ] });
1057
1101
  }
1058
1102
 
@@ -1087,7 +1131,7 @@ function resizeTextArea(textArea) {
1087
1131
  }
1088
1132
 
1089
1133
  // src/components/Textarea/Textarea.tsx
1090
- var import_jsx_runtime13 = require("react/jsx-runtime");
1134
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1091
1135
  var defaultAutoGrowMaxHeight = 180;
1092
1136
  function assignRef2(ref, element) {
1093
1137
  if (typeof ref === "function") ref(element);
@@ -1121,7 +1165,7 @@ var Textarea = (0, import_react13.forwardRef)(function Textarea2({
1121
1165
  ...style,
1122
1166
  maxHeight: typeof autoGrowMaxHeight === "number" ? `${autoGrowMaxHeight}px` : autoGrowMaxHeight
1123
1167
  } : style;
1124
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1168
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1125
1169
  "textarea",
1126
1170
  {
1127
1171
  ...textareaProps,
@@ -1172,6 +1216,25 @@ function useFloating({
1172
1216
  const rect = anchor.getBoundingClientRect();
1173
1217
  const width = Math.max(floating.offsetWidth, matchWidth ? rect.width : 0);
1174
1218
  const height = floating.scrollHeight;
1219
+ if (placement === "left" || placement === "right") {
1220
+ const roomLeft = rect.left - offset - margin;
1221
+ const roomRight = window.innerWidth - rect.right - offset - margin;
1222
+ const onLeft = placement === "left" ? width <= roomLeft || roomLeft > roomRight : width > roomRight && roomLeft > roomRight;
1223
+ const top2 = Math.min(Math.max(margin, rect.top + rect.height / 2 - height / 2), window.innerHeight - height - margin);
1224
+ floating.dataset.side = onLeft ? "left" : "right";
1225
+ setStyle({
1226
+ position: "fixed",
1227
+ inset: "auto",
1228
+ margin: 0,
1229
+ left: onLeft ? "auto" : rect.right + offset,
1230
+ right: onLeft ? window.innerWidth - rect.left + offset : "auto",
1231
+ top: top2,
1232
+ bottom: "auto",
1233
+ maxHeight: Math.max(120, Math.min(maxHeight, window.innerHeight - 2 * margin)),
1234
+ ["--ow-floating-origin"]: `${onLeft ? "right" : "left"} center`
1235
+ });
1236
+ return;
1237
+ }
1175
1238
  const below = window.innerHeight - rect.bottom - offset - margin;
1176
1239
  const above = rect.top - offset - margin;
1177
1240
  const wantsTop = placement.startsWith("top");
@@ -1267,7 +1330,7 @@ function usePresence(open, exitMs = exitDuration) {
1267
1330
  }
1268
1331
 
1269
1332
  // src/components/Select/Select.tsx
1270
- var import_jsx_runtime14 = require("react/jsx-runtime");
1333
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1271
1334
  var menuGap = 4;
1272
1335
  var menuMaxHeight = 288;
1273
1336
  var typeaheadResetMs = 600;
@@ -1438,7 +1501,7 @@ function Select({
1438
1501
  const index = flatIndex;
1439
1502
  const isSelected = index === selectedIndex;
1440
1503
  const isActive = index === activeIndex;
1441
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1504
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1442
1505
  "div",
1443
1506
  {
1444
1507
  id: optionId(index),
@@ -1456,18 +1519,18 @@ function Select({
1456
1519
  onMouseDown: (event) => event.preventDefault(),
1457
1520
  onClick: () => choose(index),
1458
1521
  children: [
1459
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "ow-option__check", children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CheckIcon, { size: 14 }) : null }),
1460
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: "ow-option__text", children: [
1461
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: cx("ow-option__label", valueClassName), children: option.label }),
1462
- option.description ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "ow-option__description", children: option.description }) : null
1522
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ow-option__check", children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CheckIcon, { size: 14 }) : null }),
1523
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "ow-option__text", children: [
1524
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: cx("ow-option__label", valueClassName), children: option.label }),
1525
+ option.description ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ow-option__description", children: option.description }) : null
1463
1526
  ] })
1464
1527
  ]
1465
1528
  },
1466
1529
  `${option.value}-${index}`
1467
1530
  );
1468
1531
  };
1469
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1470
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1532
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1533
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1471
1534
  "button",
1472
1535
  {
1473
1536
  ref: triggerRef,
@@ -1491,12 +1554,12 @@ function Select({
1491
1554
  if (!menuRef.current?.contains(event.relatedTarget)) close();
1492
1555
  },
1493
1556
  children: [
1494
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: cx("ow-select__value", !selected && "ow-select__value--placeholder", valueClassName), children: selected ? selected.label : placeholder }),
1495
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: "ow-select__chevron" })
1557
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: cx("ow-select__value", !selected && "ow-select__value--placeholder", valueClassName), children: selected ? selected.label : placeholder }),
1558
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: "ow-select__chevron" })
1496
1559
  ]
1497
1560
  }
1498
1561
  ),
1499
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1562
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1500
1563
  "div",
1501
1564
  {
1502
1565
  ref: menuRef,
@@ -1511,12 +1574,12 @@ function Select({
1511
1574
  style: floatingStyle,
1512
1575
  children: [
1513
1576
  options.map(
1514
- (item, groupIndex) => isGroup(item) ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { role: "group", "aria-label": item.label, className: "ow-listbox__group", children: [
1515
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "ow-listbox__group-label", "aria-hidden": "true", children: item.label }),
1577
+ (item, groupIndex) => isGroup(item) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { role: "group", "aria-label": item.label, className: "ow-listbox__group", children: [
1578
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "ow-listbox__group-label", "aria-hidden": "true", children: item.label }),
1516
1579
  item.options.map(renderOption)
1517
1580
  ] }, `group-${item.label}-${groupIndex}`) : renderOption(item)
1518
1581
  ),
1519
- flat.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "ow-listbox__empty", children: "No options" }) : null
1582
+ flat.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "ow-listbox__empty", children: "No options" }) : null
1520
1583
  ]
1521
1584
  }
1522
1585
  ) : null
@@ -1525,7 +1588,7 @@ function Select({
1525
1588
 
1526
1589
  // src/components/Combobox/Combobox.tsx
1527
1590
  var import_react17 = require("react");
1528
- var import_jsx_runtime15 = require("react/jsx-runtime");
1591
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1529
1592
  function assignRef3(ref, value) {
1530
1593
  if (typeof ref === "function") ref(value);
1531
1594
  else if (ref) ref.current = value;
@@ -1638,8 +1701,8 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1638
1701
  break;
1639
1702
  }
1640
1703
  }
1641
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1642
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1704
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1705
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1643
1706
  "div",
1644
1707
  {
1645
1708
  ref: fieldRef,
@@ -1652,7 +1715,7 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1652
1715
  className
1653
1716
  ),
1654
1717
  children: [
1655
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1718
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1656
1719
  "input",
1657
1720
  {
1658
1721
  ref: (element) => {
@@ -1683,7 +1746,7 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1683
1746
  ...aria
1684
1747
  }
1685
1748
  ),
1686
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1749
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1687
1750
  "button",
1688
1751
  {
1689
1752
  type: "button",
@@ -1699,13 +1762,13 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1699
1762
  inputRef.current?.focus();
1700
1763
  }
1701
1764
  },
1702
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: cx("ow-select__chevron", isOpen && "ow-combobox__chevron--open") })
1765
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: cx("ow-select__chevron", isOpen && "ow-combobox__chevron--open") })
1703
1766
  }
1704
1767
  )
1705
1768
  ]
1706
1769
  }
1707
1770
  ),
1708
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1771
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1709
1772
  "div",
1710
1773
  {
1711
1774
  ref: listRef,
@@ -1720,7 +1783,7 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1720
1783
  children: [
1721
1784
  results.map((option, index) => {
1722
1785
  const isSelected = option.value === selected;
1723
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1786
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1724
1787
  "div",
1725
1788
  {
1726
1789
  id: optionId(index),
@@ -1736,17 +1799,17 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1736
1799
  onMouseDown: (event) => event.preventDefault(),
1737
1800
  onClick: () => choose(option),
1738
1801
  children: [
1739
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ow-option__check", children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(CheckIcon, { size: 14 }) : null }),
1740
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "ow-option__text", children: [
1741
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ow-option__label", children: option.label }),
1742
- option.description ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "ow-option__description", children: option.description }) : null
1802
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "ow-option__check", children: isSelected ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CheckIcon, { size: 14 }) : null }),
1803
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: "ow-option__text", children: [
1804
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "ow-option__label", children: option.label }),
1805
+ option.description ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "ow-option__description", children: option.description }) : null
1743
1806
  ] })
1744
1807
  ]
1745
1808
  },
1746
1809
  option.value
1747
1810
  );
1748
1811
  }),
1749
- results.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "ow-listbox__empty", role: "presentation", children: emptyMessage }) : null
1812
+ results.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "ow-listbox__empty", role: "presentation", children: emptyMessage }) : null
1750
1813
  ]
1751
1814
  }
1752
1815
  ) : null
@@ -1755,7 +1818,7 @@ var Combobox = (0, import_react17.forwardRef)(function Combobox2({
1755
1818
 
1756
1819
  // src/components/Checkbox/Checkbox.tsx
1757
1820
  var import_react18 = require("react");
1758
- var import_jsx_runtime16 = require("react/jsx-runtime");
1821
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1759
1822
  var CheckboxGroupContext = (0, import_react18.createContext)(null);
1760
1823
  function assignRef4(ref, value) {
1761
1824
  if (typeof ref === "function") ref(value);
@@ -1783,7 +1846,7 @@ var Checkbox = (0, import_react18.forwardRef)(function Checkbox2({
1783
1846
  (0, import_react18.useEffect)(() => {
1784
1847
  if (innerRef.current) innerRef.current.indeterminate = indeterminate;
1785
1848
  }, [indeterminate]);
1786
- const box = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1849
+ const box = /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1787
1850
  "span",
1788
1851
  {
1789
1852
  className: cx(
@@ -1793,7 +1856,7 @@ var Checkbox = (0, import_react18.forwardRef)(function Checkbox2({
1793
1856
  children === void 0 && className
1794
1857
  ),
1795
1858
  children: [
1796
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1859
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1797
1860
  "input",
1798
1861
  {
1799
1862
  ref: (element) => {
@@ -1814,16 +1877,16 @@ var Checkbox = (0, import_react18.forwardRef)(function Checkbox2({
1814
1877
  ...inputProps
1815
1878
  }
1816
1879
  ),
1817
- indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(MinusIcon, { className: "ow-checkbox__check ow-checkbox__check--dash", size: size === "sm" ? 10 : 12, strokeWidth: 3 }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CheckIcon, { className: "ow-checkbox__check", size: size === "sm" ? 10 : 12, strokeWidth: 3 })
1880
+ indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(MinusIcon, { className: "ow-checkbox__check ow-checkbox__check--dash", size: size === "sm" ? 10 : 12, strokeWidth: 3 }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CheckIcon, { className: "ow-checkbox__check", size: size === "sm" ? 10 : 12, strokeWidth: 3 })
1818
1881
  ]
1819
1882
  }
1820
1883
  );
1821
1884
  if (children === void 0) return box;
1822
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { className: cx("ow-check-label", (disabled || inGroup && group.disabled) && "ow-check-label--disabled", className), children: [
1885
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("label", { className: cx("ow-check-label", (disabled || inGroup && group.disabled) && "ow-check-label--disabled", className), children: [
1823
1886
  box,
1824
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: "ow-check-label__text", children: [
1825
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children }),
1826
- description ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { id: descriptionId, className: "ow-check-label__description", children: description }) : null
1887
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "ow-check-label__text", children: [
1888
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children }),
1889
+ description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { id: descriptionId, className: "ow-check-label__description", children: description }) : null
1827
1890
  ] })
1828
1891
  ] });
1829
1892
  });
@@ -1843,7 +1906,7 @@ function CheckboxGroup({
1843
1906
  const [current, setCurrent] = useControllableState(value, defaultValue, onChange);
1844
1907
  const generatedName = (0, import_react18.useId)();
1845
1908
  const errorId = (0, import_react18.useId)();
1846
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1909
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1847
1910
  CheckboxGroupContext.Provider,
1848
1911
  {
1849
1912
  value: {
@@ -1854,7 +1917,7 @@ function CheckboxGroup({
1854
1917
  setCurrent(checked ? [...current.filter((v) => v !== item), item] : current.filter((v) => v !== item));
1855
1918
  }
1856
1919
  },
1857
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1920
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1858
1921
  Fieldset,
1859
1922
  {
1860
1923
  legend: label,
@@ -1872,17 +1935,17 @@ function Fieldset({ legend, description, error, errorId, disabled, children, cla
1872
1935
  const generatedId = (0, import_react18.useId)();
1873
1936
  const descriptionId = `${generatedId}-description`;
1874
1937
  const resolvedErrorId = errorId ?? `${generatedId}-error`;
1875
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1938
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
1876
1939
  "fieldset",
1877
1940
  {
1878
1941
  className: cx("ow-fieldset", className),
1879
1942
  disabled,
1880
1943
  "aria-describedby": [description ? descriptionId : "", error ? resolvedErrorId : ""].filter(Boolean).join(" ") || void 0,
1881
1944
  children: [
1882
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("legend", { className: "ow-fieldset__legend", children: legend }),
1883
- description ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { id: descriptionId, className: "ow-fieldset__description", children: description }) : null,
1884
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "ow-fieldset__content", children }),
1885
- error ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { id: resolvedErrorId, role: "alert", className: "ow-field__error", children: error }) : null
1945
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("legend", { className: "ow-fieldset__legend", children: legend }),
1946
+ description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { id: descriptionId, className: "ow-fieldset__description", children: description }) : null,
1947
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "ow-fieldset__content", children }),
1948
+ error ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { id: resolvedErrorId, role: "alert", className: "ow-field__error", children: error }) : null
1886
1949
  ]
1887
1950
  }
1888
1951
  );
@@ -1890,7 +1953,7 @@ function Fieldset({ legend, description, error, errorId, disabled, children, cla
1890
1953
 
1891
1954
  // src/components/RadioGroup/RadioGroup.tsx
1892
1955
  var import_react19 = require("react");
1893
- var import_jsx_runtime17 = require("react/jsx-runtime");
1956
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1894
1957
  var RadioGroupContext = (0, import_react19.createContext)(null);
1895
1958
  function RadioGroup({
1896
1959
  label,
@@ -1908,7 +1971,7 @@ function RadioGroup({
1908
1971
  }) {
1909
1972
  const [current, select] = useControllableState(value, defaultValue, onChange);
1910
1973
  const generatedName = (0, import_react19.useId)();
1911
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(RadioGroupContext.Provider, { value: { name: name ?? generatedName, value: current, select, disabled }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1974
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RadioGroupContext.Provider, { value: { name: name ?? generatedName, value: current, select, disabled }, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1912
1975
  Fieldset,
1913
1976
  {
1914
1977
  legend: label,
@@ -1929,8 +1992,8 @@ function Radio({ value, children, description, disabled, className, ...inputProp
1929
1992
  const descriptionId = (0, import_react19.useId)();
1930
1993
  if (!group) throw new Error("Radio must be inside <RadioGroup>.");
1931
1994
  const isDisabled = disabled || group.disabled;
1932
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("label", { className: cx("ow-check-label", "ow-radio-label", isDisabled && "ow-check-label--disabled", className), children: [
1933
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "ow-radio", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1995
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: cx("ow-check-label", "ow-radio-label", isDisabled && "ow-check-label--disabled", className), children: [
1996
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "ow-radio", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1934
1997
  "input",
1935
1998
  {
1936
1999
  type: "radio",
@@ -1944,18 +2007,18 @@ function Radio({ value, children, description, disabled, className, ...inputProp
1944
2007
  ...inputProps
1945
2008
  }
1946
2009
  ) }),
1947
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "ow-check-label__text", children: [
1948
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children }),
1949
- description ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { id: descriptionId, className: "ow-check-label__description", children: description }) : null
2010
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "ow-check-label__text", children: [
2011
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children }),
2012
+ description ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { id: descriptionId, className: "ow-check-label__description", children: description }) : null
1950
2013
  ] })
1951
2014
  ] });
1952
2015
  }
1953
2016
 
1954
2017
  // src/components/Switch/Switch.tsx
1955
2018
  var import_react20 = require("react");
1956
- var import_jsx_runtime18 = require("react/jsx-runtime");
2019
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1957
2020
  var Switch = (0, import_react20.forwardRef)(function Switch2({ checked, onChange, label, className, disabled, ...buttonProps }, ref) {
1958
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2021
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1959
2022
  "button",
1960
2023
  {
1961
2024
  ref,
@@ -1967,14 +2030,14 @@ var Switch = (0, import_react20.forwardRef)(function Switch2({ checked, onChange
1967
2030
  className: cx("ow-switch", checked && "ow-switch--on", className),
1968
2031
  onClick: () => onChange(!checked),
1969
2032
  ...buttonProps,
1970
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "ow-switch__knob" })
2033
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "ow-switch__knob" })
1971
2034
  }
1972
2035
  );
1973
2036
  });
1974
2037
 
1975
2038
  // src/components/Slider/Slider.tsx
1976
2039
  var import_react21 = require("react");
1977
- var import_jsx_runtime19 = require("react/jsx-runtime");
2040
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1978
2041
  function Slider({
1979
2042
  value,
1980
2043
  defaultValue,
@@ -2000,7 +2063,7 @@ function Slider({
2000
2063
  const end = () => onChangeEnd?.(current);
2001
2064
  const input = (which) => {
2002
2065
  const own = which === "low" ? low : high;
2003
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2066
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2004
2067
  "input",
2005
2068
  {
2006
2069
  type: "range",
@@ -2025,13 +2088,13 @@ function Slider({
2025
2088
  }
2026
2089
  );
2027
2090
  };
2028
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: cx("ow-slider", disabled && "ow-slider--disabled", className), children: [
2029
- label || showValue ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "ow-slider__header", children: [
2030
- label ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { id: labelId, className: "ow-slider__label", children: label }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", {}),
2031
- showValue ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("output", { className: "ow-slider__value", "aria-hidden": "true", children: display }) : null
2091
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: cx("ow-slider", disabled && "ow-slider--disabled", className), children: [
2092
+ label || showValue ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "ow-slider__header", children: [
2093
+ label ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { id: labelId, className: "ow-slider__label", children: label }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", {}),
2094
+ showValue ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("output", { className: "ow-slider__value", "aria-hidden": "true", children: display }) : null
2032
2095
  ] }) : null,
2033
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "ow-slider__control", style, children: [
2034
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "ow-slider__track", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "ow-slider__fill" }) }),
2096
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "ow-slider__control", style, children: [
2097
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "ow-slider__track", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "ow-slider__fill" }) }),
2035
2098
  isRange ? input("low") : null,
2036
2099
  input("high")
2037
2100
  ] })
@@ -2040,7 +2103,7 @@ function Slider({
2040
2103
 
2041
2104
  // src/components/FileDropZone/FileDropZone.tsx
2042
2105
  var import_react22 = require("react");
2043
- var import_jsx_runtime20 = require("react/jsx-runtime");
2106
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2044
2107
  function matches(file, accept) {
2045
2108
  if (!accept) return true;
2046
2109
  return accept.split(",").some((rule) => {
@@ -2084,7 +2147,7 @@ function FileDropZone({
2084
2147
  }
2085
2148
  }
2086
2149
  const hasFiles = (event) => event.dataTransfer.types.includes("Files");
2087
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2150
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2088
2151
  "label",
2089
2152
  {
2090
2153
  className: cx(
@@ -2117,7 +2180,7 @@ function FileDropZone({
2117
2180
  take(event.dataTransfer.files);
2118
2181
  },
2119
2182
  children: [
2120
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2183
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2121
2184
  "input",
2122
2185
  {
2123
2186
  ref: inputRef,
@@ -2134,9 +2197,9 @@ function FileDropZone({
2134
2197
  }
2135
2198
  }
2136
2199
  ),
2137
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "ow-dropzone__icon", children: icon2 ?? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(UploadIcon, { size: 20 }) }),
2138
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "ow-dropzone__label", children: isDragging ? "Drop to add" : label }),
2139
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { id: hintId, className: "ow-dropzone__hint", "aria-live": "polite", children: error ?? problem ?? hint })
2200
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "ow-dropzone__icon", children: icon2 ?? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(UploadIcon, { size: 20 }) }),
2201
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "ow-dropzone__label", children: isDragging ? "Drop to add" : label }),
2202
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { id: hintId, className: "ow-dropzone__hint", "aria-live": "polite", children: error ?? problem ?? hint })
2140
2203
  ]
2141
2204
  }
2142
2205
  );
@@ -2181,7 +2244,7 @@ function formatDate(iso, locale, options) {
2181
2244
  }
2182
2245
 
2183
2246
  // src/components/Calendar/Calendar.tsx
2184
- var import_jsx_runtime21 = require("react/jsx-runtime");
2247
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2185
2248
  var Calendar = (0, import_react23.forwardRef)(function Calendar2({ value, defaultValue = "", onChange, min, max, isDateDisabled, locale, weekStartsOn = 1, autoFocus = false, className }, ref) {
2186
2249
  const [selected, setSelected] = useControllableState(value, defaultValue, onChange);
2187
2250
  const today = todayISO();
@@ -2244,9 +2307,9 @@ var Calendar = (0, import_react23.forwardRef)(function Calendar2({ value, defaul
2244
2307
  const nextMonth = addMonths(first, 1);
2245
2308
  const canGoBack = !min || toISO(year, month, 0) >= min;
2246
2309
  const canGoForward = !max || nextMonth <= max;
2247
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: cx("ow-calendar", className), children: [
2248
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "ow-calendar__header", children: [
2249
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2310
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: cx("ow-calendar", className), children: [
2311
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { className: "ow-calendar__header", children: [
2312
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2250
2313
  "button",
2251
2314
  {
2252
2315
  type: "button",
@@ -2254,10 +2317,10 @@ var Calendar = (0, import_react23.forwardRef)(function Calendar2({ value, defaul
2254
2317
  "aria-label": `Previous month, ${formatDate(prevMonth, locale, { month: "long", year: "numeric" })}`,
2255
2318
  disabled: !canGoBack,
2256
2319
  onClick: () => setFocused(clampDate(addMonths(focused, -1), min, max)),
2257
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChevronLeftIcon, { size: 16 })
2320
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChevronLeftIcon, { size: 16 })
2258
2321
  }
2259
2322
  ),
2260
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("h2", { className: "ow-calendar__title", "aria-live": "polite", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2323
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("h2", { className: "ow-calendar__title", "aria-live": "polite", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2261
2324
  "span",
2262
2325
  {
2263
2326
  className: cx("ow-calendar__title-text", slide.current.direction && `ow-calendar__slide--${slide.current.direction}`),
@@ -2265,7 +2328,7 @@ var Calendar = (0, import_react23.forwardRef)(function Calendar2({ value, defaul
2265
2328
  },
2266
2329
  monthIndex
2267
2330
  ) }),
2268
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2331
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2269
2332
  "button",
2270
2333
  {
2271
2334
  type: "button",
@@ -2273,17 +2336,17 @@ var Calendar = (0, import_react23.forwardRef)(function Calendar2({ value, defaul
2273
2336
  "aria-label": `Next month, ${formatDate(nextMonth, locale, { month: "long", year: "numeric" })}`,
2274
2337
  disabled: !canGoForward,
2275
2338
  onClick: () => setFocused(clampDate(addMonths(focused, 1), min, max)),
2276
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ChevronRightIcon, { size: 16 })
2339
+ children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(ChevronRightIcon, { size: 16 })
2277
2340
  }
2278
2341
  )
2279
2342
  ] }),
2280
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("table", { ref: gridRef, role: "grid", className: "ow-calendar__grid", "aria-label": monthLabel, children: [
2281
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tr", { children: weekdayNames.map((name) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("th", { scope: "col", abbr: name.long, className: "ow-calendar__weekday", children: name.short.slice(0, 2) }, name.long)) }) }),
2282
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tbody", { className: cx(slide.current.direction && `ow-calendar__slide--${slide.current.direction}`), children: weeks.map((week) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tr", { children: week.map((date) => {
2343
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("table", { ref: gridRef, role: "grid", className: "ow-calendar__grid", "aria-label": monthLabel, children: [
2344
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("tr", { children: weekdayNames.map((name) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("th", { scope: "col", abbr: name.long, className: "ow-calendar__weekday", children: name.short.slice(0, 2) }, name.long)) }) }),
2345
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("tbody", { className: cx(slide.current.direction && `ow-calendar__slide--${slide.current.direction}`), children: weeks.map((week) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("tr", { children: week.map((date) => {
2283
2346
  const inMonth = parseISO(date).month === month;
2284
2347
  const isSelected = date === selected;
2285
2348
  const disabled = isDisabled(date);
2286
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("td", { role: "gridcell", "aria-selected": isSelected, className: "ow-calendar__cell", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2349
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("td", { role: "gridcell", "aria-selected": isSelected, className: "ow-calendar__cell", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2287
2350
  "button",
2288
2351
  {
2289
2352
  type: "button",
@@ -2315,7 +2378,7 @@ function clampDate(date, min, max) {
2315
2378
 
2316
2379
  // src/components/Calendar/DatePicker.tsx
2317
2380
  var import_react24 = require("react");
2318
- var import_jsx_runtime22 = require("react/jsx-runtime");
2381
+ var import_jsx_runtime23 = require("react/jsx-runtime");
2319
2382
  function assignRef5(ref, value) {
2320
2383
  if (typeof ref === "function") ref(value);
2321
2384
  else if (ref) ref.current = value;
@@ -2350,8 +2413,8 @@ var DatePicker = (0, import_react24.forwardRef)(function DatePicker2({
2350
2413
  }, []);
2351
2414
  useDismiss(isOpen, [panelRef, triggerRef], close);
2352
2415
  const label = date ? formatDate(date, locale, formatOptions) : placeholder;
2353
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
2354
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2416
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
2417
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2355
2418
  "button",
2356
2419
  {
2357
2420
  ref: (element) => {
@@ -2383,12 +2446,12 @@ var DatePicker = (0, import_react24.forwardRef)(function DatePicker2({
2383
2446
  }
2384
2447
  },
2385
2448
  children: [
2386
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(CalendarIcon, { size: size === "sm" ? 14 : 16, className: "ow-date-picker__icon" }),
2387
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { id: `${panelId}-value`, className: cx("ow-select__value", !date && "ow-select__value--placeholder"), children: label })
2449
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CalendarIcon, { size: size === "sm" ? 14 : 16, className: "ow-date-picker__icon" }),
2450
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { id: `${panelId}-value`, className: cx("ow-select__value", !date && "ow-select__value--placeholder"), children: label })
2388
2451
  ]
2389
2452
  }
2390
2453
  ),
2391
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2454
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2392
2455
  "div",
2393
2456
  {
2394
2457
  ref: panelRef,
@@ -2399,7 +2462,7 @@ var DatePicker = (0, import_react24.forwardRef)(function DatePicker2({
2399
2462
  "aria-label": "Choose a date",
2400
2463
  className: "ow-popover ow-floating ow-date-picker__panel",
2401
2464
  style,
2402
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2465
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
2403
2466
  Calendar,
2404
2467
  {
2405
2468
  ...calendarProps,
@@ -2418,13 +2481,13 @@ var DatePicker = (0, import_react24.forwardRef)(function DatePicker2({
2418
2481
  });
2419
2482
 
2420
2483
  // src/components/Alert/Alert.tsx
2421
- var import_jsx_runtime23 = require("react/jsx-runtime");
2484
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2422
2485
  var icons = {
2423
- info: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InfoIcon, { size: 16 }),
2424
- success: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CircleCheckIcon, { size: 16 }),
2425
- warning: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(TriangleAlertIcon, { size: 16 }),
2426
- danger: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CircleAlertIcon, { size: 16 }),
2427
- neutral: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(InfoIcon, { size: 16 })
2486
+ info: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(InfoIcon, { size: 16 }),
2487
+ success: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CircleCheckIcon, { size: 16 }),
2488
+ warning: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TriangleAlertIcon, { size: 16 }),
2489
+ danger: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CircleAlertIcon, { size: 16 }),
2490
+ neutral: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(InfoIcon, { size: 16 })
2428
2491
  };
2429
2492
  function Alert({
2430
2493
  variant = "info",
@@ -2437,37 +2500,37 @@ function Alert({
2437
2500
  role,
2438
2501
  ...props
2439
2502
  }) {
2440
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
2503
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
2441
2504
  "div",
2442
2505
  {
2443
2506
  role: role ?? (variant === "danger" || variant === "warning" ? "alert" : "status"),
2444
2507
  className: cx("ow-alert", `ow-alert--${variant}`, className),
2445
2508
  ...props,
2446
2509
  children: [
2447
- icon2 === false ? null : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "ow-alert__icon", children: icon2 ?? icons[variant] }),
2448
- /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "ow-alert__body", children: [
2449
- title ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "ow-alert__title", children: title }) : null,
2450
- children ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "ow-alert__description", children }) : null,
2451
- actions ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "ow-alert__actions", children: actions }) : null
2510
+ icon2 === false ? null : /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "ow-alert__icon", children: icon2 ?? icons[variant] }),
2511
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "ow-alert__body", children: [
2512
+ title ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "ow-alert__title", children: title }) : null,
2513
+ children ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "ow-alert__description", children }) : null,
2514
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "ow-alert__actions", children: actions }) : null
2452
2515
  ] }),
2453
- onClose ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(CloseButton, { size: "sm", label: "Dismiss", className: "ow-alert__close", onClick: onClose }) : null
2516
+ onClose ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(CloseButton, { size: "sm", label: "Dismiss", className: "ow-alert__close", onClick: onClose }) : null
2454
2517
  ]
2455
2518
  }
2456
2519
  );
2457
2520
  }
2458
2521
 
2459
2522
  // src/components/Badge/Badge.tsx
2460
- var import_jsx_runtime24 = require("react/jsx-runtime");
2523
+ var import_jsx_runtime25 = require("react/jsx-runtime");
2461
2524
  function Badge({ children, className, icon: icon2, size = "md", variant = "neutral", ...spanProps }) {
2462
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("span", { className: cx("ow-badge", `ow-badge--${size}`, `ow-badge--${variant}`, className), ...spanProps, children: [
2463
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "ow-badge__icon", children: icon2 }) : null,
2464
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { children })
2525
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: cx("ow-badge", `ow-badge--${size}`, `ow-badge--${variant}`, className), ...spanProps, children: [
2526
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "ow-badge__icon", children: icon2 }) : null,
2527
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { children })
2465
2528
  ] });
2466
2529
  }
2467
2530
 
2468
2531
  // src/components/Progress/Progress.tsx
2469
2532
  var import_react25 = require("react");
2470
- var import_jsx_runtime25 = require("react/jsx-runtime");
2533
+ var import_jsx_runtime26 = require("react/jsx-runtime");
2471
2534
  function ProgressBar({
2472
2535
  value,
2473
2536
  max = 100,
@@ -2483,12 +2546,12 @@ function ProgressBar({
2483
2546
  const indeterminate = value === void 0;
2484
2547
  const pct = indeterminate ? 0 : Math.min(100, Math.max(0, value / max * 100));
2485
2548
  const text = valueLabel ?? `${Math.round(pct)}%`;
2486
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: cx("ow-progress", `ow-progress--${size}`, `ow-progress--${tone}`, className), children: [
2487
- label || showValue && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "ow-progress__header", children: [
2488
- label ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { id: labelId, className: "ow-progress__label", children: label }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", {}),
2489
- showValue && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "ow-progress__value", children: text }) : null
2549
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: cx("ow-progress", `ow-progress--${size}`, `ow-progress--${tone}`, className), children: [
2550
+ label || showValue && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "ow-progress__header", children: [
2551
+ label ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { id: labelId, className: "ow-progress__label", children: label }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", {}),
2552
+ showValue && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: "ow-progress__value", children: text }) : null
2490
2553
  ] }) : null,
2491
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2554
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2492
2555
  "div",
2493
2556
  {
2494
2557
  role: "progressbar",
@@ -2499,7 +2562,7 @@ function ProgressBar({
2499
2562
  "aria-valuenow": indeterminate ? void 0 : value,
2500
2563
  "aria-valuetext": indeterminate ? void 0 : text,
2501
2564
  className: cx("ow-progress__track", indeterminate && "ow-progress__track--indeterminate"),
2502
- children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "ow-progress__fill", style: indeterminate ? void 0 : { width: `${pct}%` } })
2565
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "ow-progress__fill", style: indeterminate ? void 0 : { width: `${pct}%` } })
2503
2566
  }
2504
2567
  )
2505
2568
  ] });
@@ -2518,7 +2581,7 @@ function ProgressCircle({
2518
2581
  const circumference = 2 * Math.PI * radius;
2519
2582
  const indeterminate = value === void 0;
2520
2583
  const pct = indeterminate ? 25 : Math.min(100, Math.max(0, value / max * 100));
2521
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
2584
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
2522
2585
  "span",
2523
2586
  {
2524
2587
  role: "progressbar",
@@ -2534,9 +2597,9 @@ function ProgressCircle({
2534
2597
  ),
2535
2598
  style: { width: box, height: box },
2536
2599
  children: [
2537
- /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("svg", { width: box, height: box, viewBox: `0 0 ${box} ${box}`, "aria-hidden": "true", children: [
2538
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("circle", { className: "ow-progress-circle__track", cx: box / 2, cy: box / 2, r: radius, strokeWidth: stroke, fill: "none" }),
2539
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
2600
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { width: box, height: box, viewBox: `0 0 ${box} ${box}`, "aria-hidden": "true", children: [
2601
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { className: "ow-progress-circle__track", cx: box / 2, cy: box / 2, r: radius, strokeWidth: stroke, fill: "none" }),
2602
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2540
2603
  "circle",
2541
2604
  {
2542
2605
  className: "ow-progress-circle__fill",
@@ -2552,7 +2615,7 @@ function ProgressCircle({
2552
2615
  }
2553
2616
  )
2554
2617
  ] }),
2555
- size === "lg" && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("span", { className: "ow-progress-circle__value", children: [
2618
+ size === "lg" && !indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("span", { className: "ow-progress-circle__value", children: [
2556
2619
  Math.round(pct),
2557
2620
  "%"
2558
2621
  ] }) : null
@@ -2563,9 +2626,9 @@ function ProgressCircle({
2563
2626
 
2564
2627
  // src/components/Skeleton/Skeleton.tsx
2565
2628
  var import_react26 = require("react");
2566
- var import_jsx_runtime26 = require("react/jsx-runtime");
2629
+ var import_jsx_runtime27 = require("react/jsx-runtime");
2567
2630
  function Skeleton({ width = "100%", height = 14, soft = false, shape = "bar", className }) {
2568
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2631
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2569
2632
  "span",
2570
2633
  {
2571
2634
  className: cx("ow-skeleton", soft && "ow-skeleton--soft", shape === "block" && "ow-skeleton--block", className),
@@ -2581,26 +2644,26 @@ function SkeletonRows({ label = "Loading", rows = 4, delayMs = 150 }) {
2581
2644
  const timer = window.setTimeout(() => setIsVisible(true), delayMs);
2582
2645
  return () => window.clearTimeout(timer);
2583
2646
  }, [delayMs]);
2584
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { role: "status", "aria-label": label, "aria-busy": "true", children: isVisible ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "ow-skeleton-rows", "aria-hidden": "true", children: Array.from({ length: rows }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "ow-skeleton-rows__row", children: [
2585
- /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: "ow-skeleton-rows__text", children: [
2586
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Skeleton, { width: `${28 + index * 17 % 22}%`, height: 14 }),
2587
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Skeleton, { width: `${46 + index * 23 % 30}%`, height: 12, soft: true })
2647
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { role: "status", "aria-label": label, "aria-busy": "true", children: isVisible ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "ow-skeleton-rows", "aria-hidden": "true", children: Array.from({ length: rows }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "ow-skeleton-rows__row", children: [
2648
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "ow-skeleton-rows__text", children: [
2649
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { width: `${28 + index * 17 % 22}%`, height: 14 }),
2650
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { width: `${46 + index * 23 % 30}%`, height: 12, soft: true })
2588
2651
  ] }),
2589
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Skeleton, { width: 96, height: 32, soft: true, shape: "block" })
2652
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Skeleton, { width: 96, height: 32, soft: true, shape: "block" })
2590
2653
  ] }, index)) }) : null });
2591
2654
  }
2592
2655
 
2593
2656
  // src/components/Toast/Toast.tsx
2594
2657
  var import_react27 = require("react");
2595
2658
  var import_sonner = require("sonner");
2596
- var import_jsx_runtime27 = require("react/jsx-runtime");
2659
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2597
2660
  var icons2 = {
2598
- success: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CircleCheckIcon, { size: 16 }),
2599
- error: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CircleAlertIcon, { size: 16 }),
2600
- warning: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(TriangleAlertIcon, { size: 16 }),
2601
- info: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(InfoIcon, { size: 16 }),
2602
- loading: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Spinner, { size: "sm", label: "" }),
2603
- close: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(XIcon, { size: 12 })
2661
+ success: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CircleCheckIcon, { size: 16 }),
2662
+ error: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(CircleAlertIcon, { size: 16 }),
2663
+ warning: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TriangleAlertIcon, { size: 16 }),
2664
+ info: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(InfoIcon, { size: 16 }),
2665
+ loading: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Spinner, { size: "sm", label: "" }),
2666
+ close: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(XIcon, { size: 12 })
2604
2667
  };
2605
2668
  function Toaster({
2606
2669
  position = "bottom-center",
@@ -2631,7 +2694,7 @@ function Toaster({
2631
2694
  observer.observe(document.body, { subtree: true, attributes: true, attributeFilter: ["open"] });
2632
2695
  return () => observer.disconnect();
2633
2696
  }, []);
2634
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { ref: layerRef, ...manualPopover, className: "ow-toaster-layer", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2697
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { ref: layerRef, ...manualPopover, className: "ow-toaster-layer", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2635
2698
  import_sonner.Toaster,
2636
2699
  {
2637
2700
  id,
@@ -2653,7 +2716,7 @@ function Toaster({
2653
2716
 
2654
2717
  // src/components/Tooltip/Tooltip.tsx
2655
2718
  var import_react28 = require("react");
2656
- var import_jsx_runtime28 = require("react/jsx-runtime");
2719
+ var import_jsx_runtime29 = require("react/jsx-runtime");
2657
2720
  var lastClosedAt = 0;
2658
2721
  var warmWindow = 500;
2659
2722
  function Tooltip({ children, label, placement = "top", delay = 400 }) {
@@ -2684,7 +2747,7 @@ function Tooltip({ children, label, placement = "top", delay = 400 }) {
2684
2747
  document.addEventListener("keydown", onKeyDown);
2685
2748
  return () => document.removeEventListener("keydown", onKeyDown);
2686
2749
  }, [open]);
2687
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2750
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2688
2751
  "span",
2689
2752
  {
2690
2753
  ref: anchorRef,
@@ -2700,7 +2763,7 @@ function Tooltip({ children, label, placement = "top", delay = 400 }) {
2700
2763
  onBlur: hide,
2701
2764
  children: [
2702
2765
  children,
2703
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { ref: bubbleRef, ...manualPopover, "data-state": state, className: "ow-tooltip__bubble ow-floating", style, "aria-hidden": "true", children: label }) : null
2766
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { ref: bubbleRef, ...manualPopover, "data-state": state, className: "ow-tooltip__bubble ow-floating", style, "aria-hidden": "true", children: label }) : null
2704
2767
  ]
2705
2768
  }
2706
2769
  );
@@ -2766,7 +2829,7 @@ function useModalDialog(open, onCancel) {
2766
2829
  }
2767
2830
 
2768
2831
  // src/components/Dialog/Dialog.tsx
2769
- var import_jsx_runtime29 = require("react/jsx-runtime");
2832
+ var import_jsx_runtime30 = require("react/jsx-runtime");
2770
2833
  function Dialog({
2771
2834
  open,
2772
2835
  onClose,
@@ -2785,15 +2848,15 @@ function Dialog({
2785
2848
  if (dismissible) onClose();
2786
2849
  });
2787
2850
  if (!mounted) return null;
2788
- const body = /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
2789
- /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { className: "ow-dialog__header", children: [
2790
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h2", { id: titleId, className: "ow-dialog__title", children: title }),
2791
- description ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { id: descriptionId, className: "ow-dialog__description", children: description }) : null
2851
+ const body = /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
2852
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "ow-dialog__header", children: [
2853
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", { id: titleId, className: "ow-dialog__title", children: title }),
2854
+ description ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { id: descriptionId, className: "ow-dialog__description", children: description }) : null
2792
2855
  ] }),
2793
2856
  children,
2794
- actions ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "ow-dialog__actions", children: actions }) : null
2857
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "ow-dialog__actions", children: actions }) : null
2795
2858
  ] });
2796
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2859
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2797
2860
  "dialog",
2798
2861
  {
2799
2862
  ref: dialogRef,
@@ -2801,7 +2864,7 @@ function Dialog({
2801
2864
  style: { width: `min(${width}px, calc(100% - 32px))` },
2802
2865
  "aria-labelledby": titleId,
2803
2866
  "aria-describedby": description ? descriptionId : void 0,
2804
- children: onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2867
+ children: onSubmit ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2805
2868
  "form",
2806
2869
  {
2807
2870
  className: "ow-dialog__body",
@@ -2811,7 +2874,7 @@ function Dialog({
2811
2874
  },
2812
2875
  children: body
2813
2876
  }
2814
- ) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("div", { className: "ow-dialog__body", children: body })
2877
+ ) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "ow-dialog__body", children: body })
2815
2878
  }
2816
2879
  );
2817
2880
  }
@@ -2842,7 +2905,7 @@ function ConfirmDialog({
2842
2905
  setIsWorking(false);
2843
2906
  }
2844
2907
  }
2845
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2908
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2846
2909
  Dialog,
2847
2910
  {
2848
2911
  open,
@@ -2850,17 +2913,17 @@ function ConfirmDialog({
2850
2913
  dismissible: !isWorking,
2851
2914
  width: 380,
2852
2915
  className: "ow-dialog--confirm",
2853
- title: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
2854
- destructive ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: "ow-dialog__danger-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(TrashIcon, { size: 18 }) }) : null,
2916
+ title: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
2917
+ destructive ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "ow-dialog__danger-icon", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TrashIcon, { size: 18 }) }) : null,
2855
2918
  title
2856
2919
  ] }),
2857
2920
  description,
2858
2921
  onSubmit: () => {
2859
2922
  if (!confirmDisabled && !isWorking) void confirm();
2860
2923
  },
2861
- actions: /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
2862
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { type: "button", disabled: isWorking, autoFocus: true, onClick: onClose, children: "Cancel" }),
2863
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
2924
+ actions: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
2925
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Button, { type: "button", disabled: isWorking, autoFocus: true, onClick: onClose, children: "Cancel" }),
2926
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
2864
2927
  Button,
2865
2928
  {
2866
2929
  type: "submit",
@@ -2872,7 +2935,7 @@ function ConfirmDialog({
2872
2935
  ] }),
2873
2936
  children: [
2874
2937
  children,
2875
- error ? /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { role: "alert", className: "ow-dialog__error", children: error }) : null
2938
+ error ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { role: "alert", className: "ow-dialog__error", children: error }) : null
2876
2939
  ]
2877
2940
  }
2878
2941
  );
@@ -2880,7 +2943,7 @@ function ConfirmDialog({
2880
2943
 
2881
2944
  // src/components/Drawer/Drawer.tsx
2882
2945
  var import_react31 = require("react");
2883
- var import_jsx_runtime30 = require("react/jsx-runtime");
2946
+ var import_jsx_runtime31 = require("react/jsx-runtime");
2884
2947
  function Drawer({
2885
2948
  open,
2886
2949
  onClose,
@@ -2900,7 +2963,7 @@ function Drawer({
2900
2963
  });
2901
2964
  if (!mounted) return null;
2902
2965
  const sizeStyle = side === "bottom" ? { height: `min(${size}px, 90dvh)` } : { width: `min(${size}px, 100vw - 24px)` };
2903
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(
2966
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
2904
2967
  "dialog",
2905
2968
  {
2906
2969
  ref: dialogRef,
@@ -2909,15 +2972,15 @@ function Drawer({
2909
2972
  "aria-labelledby": titleId,
2910
2973
  "aria-describedby": description ? descriptionId : void 0,
2911
2974
  children: [
2912
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("header", { className: "ow-drawer__header", children: [
2913
- /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "ow-drawer__titles", children: [
2914
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("h2", { id: titleId, className: "ow-drawer__title", children: title }),
2915
- description ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("p", { id: descriptionId, className: "ow-drawer__description", children: description }) : null
2975
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("header", { className: "ow-drawer__header", children: [
2976
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: "ow-drawer__titles", children: [
2977
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("h2", { id: titleId, className: "ow-drawer__title", children: title }),
2978
+ description ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("p", { id: descriptionId, className: "ow-drawer__description", children: description }) : null
2916
2979
  ] }),
2917
- dismissible ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(CloseButton, { onClick: onClose }) : null
2980
+ dismissible ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(CloseButton, { onClick: onClose }) : null
2918
2981
  ] }),
2919
- /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { className: "ow-drawer__body", children }),
2920
- footer ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("footer", { className: "ow-drawer__footer", children: footer }) : null
2982
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "ow-drawer__body", children }),
2983
+ footer ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("footer", { className: "ow-drawer__footer", children: footer }) : null
2921
2984
  ]
2922
2985
  }
2923
2986
  );
@@ -2925,7 +2988,7 @@ function Drawer({
2925
2988
 
2926
2989
  // src/components/Popover/Popover.tsx
2927
2990
  var import_react32 = require("react");
2928
- var import_jsx_runtime31 = require("react/jsx-runtime");
2991
+ var import_jsx_runtime32 = require("react/jsx-runtime");
2929
2992
  function Popover({
2930
2993
  trigger,
2931
2994
  children,
@@ -2977,9 +3040,9 @@ function Popover({
2977
3040
  if (!event.defaultPrevented) setOpen(!isOpen);
2978
3041
  }
2979
3042
  }) : trigger;
2980
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_jsx_runtime31.Fragment, { children: [
2981
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { ref: anchorRef, className: "ow-popover-anchor", children: triggerElement }),
2982
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(
3043
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_jsx_runtime32.Fragment, { children: [
3044
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { ref: anchorRef, className: "ow-popover-anchor", children: triggerElement }),
3045
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
2983
3046
  "div",
2984
3047
  {
2985
3048
  ref: panelRef,
@@ -2997,7 +3060,7 @@ function Popover({
2997
3060
  if (next && !panelRef.current?.contains(next) && !anchorRef.current?.contains(next)) setOpen(false);
2998
3061
  },
2999
3062
  children: [
3000
- title ? /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { id: `${id}-title`, className: "ow-popover__title", children: title }) : null,
3063
+ title ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { id: `${id}-title`, className: "ow-popover__title", children: title }) : null,
3001
3064
  children
3002
3065
  ]
3003
3066
  }
@@ -3063,7 +3126,7 @@ function useMenuKeyboard({
3063
3126
  }
3064
3127
 
3065
3128
  // src/components/Menu/Menu.tsx
3066
- var import_jsx_runtime32 = require("react/jsx-runtime");
3129
+ var import_jsx_runtime33 = require("react/jsx-runtime");
3067
3130
  var MenuContext = (0, import_react34.createContext)(null);
3068
3131
  function Menu({ trigger, children, label, align = "start", above = false, width, defaultOpen = false, className }) {
3069
3132
  const [open, setOpen] = (0, import_react34.useState)(defaultOpen);
@@ -3101,9 +3164,9 @@ function Menu({ trigger, children, label, align = "start", above = false, width,
3101
3164
  if (!event.defaultPrevented) setOpen((current) => !current);
3102
3165
  }
3103
3166
  }) : trigger;
3104
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("span", { ref: rootRef, className: "ow-menu", children: [
3167
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("span", { ref: rootRef, className: "ow-menu", children: [
3105
3168
  triggerElement,
3106
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3169
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3107
3170
  MenuContext.Provider,
3108
3171
  {
3109
3172
  value: {
@@ -3112,7 +3175,7 @@ function Menu({ trigger, children, label, align = "start", above = false, width,
3112
3175
  triggerRef.current?.focus();
3113
3176
  }
3114
3177
  },
3115
- children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3178
+ children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3116
3179
  "div",
3117
3180
  {
3118
3181
  ref: menuRef,
@@ -3133,7 +3196,7 @@ function Menu({ trigger, children, label, align = "start", above = false, width,
3133
3196
  }
3134
3197
  var MenuItem = (0, import_react34.forwardRef)(function MenuItem2({ icon: icon2, onSelect, destructive = false, shortcut, className, children, onClick, ...buttonProps }, ref) {
3135
3198
  const menu = (0, import_react34.useContext)(MenuContext);
3136
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
3199
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3137
3200
  "button",
3138
3201
  {
3139
3202
  ref,
@@ -3149,18 +3212,18 @@ var MenuItem = (0, import_react34.forwardRef)(function MenuItem2({ icon: icon2,
3149
3212
  },
3150
3213
  ...buttonProps,
3151
3214
  children: [
3152
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "ow-menu__icon", children: icon2 }) : null,
3153
- /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "ow-menu__label", children }),
3154
- shortcut ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("kbd", { className: "ow-menu__shortcut", children: shortcut }) : null
3215
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-menu__icon", children: icon2 }) : null,
3216
+ /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-menu__label", children }),
3217
+ shortcut ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("kbd", { className: "ow-menu__shortcut", children: shortcut }) : null
3155
3218
  ]
3156
3219
  }
3157
3220
  );
3158
3221
  });
3159
3222
  function MenuLabel({ children }) {
3160
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "ow-menu__group-label", role: "presentation", children });
3223
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "ow-menu__group-label", role: "presentation", children });
3161
3224
  }
3162
3225
  function MenuSeparator() {
3163
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "ow-menu__separator", role: "separator" });
3226
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "ow-menu__separator", role: "separator" });
3164
3227
  }
3165
3228
 
3166
3229
  // src/components/CommandPalette/CommandPalette.tsx
@@ -3201,7 +3264,7 @@ function filterCommands(commands, query) {
3201
3264
  }
3202
3265
 
3203
3266
  // src/components/CommandPalette/CommandPalette.tsx
3204
- var import_jsx_runtime33 = require("react/jsx-runtime");
3267
+ var import_jsx_runtime34 = require("react/jsx-runtime");
3205
3268
  function CommandPalette({ open, onClose, commands, placeholder = "Search commands\u2026" }) {
3206
3269
  const { dialogRef, mounted } = useModalDialog(open, onClose);
3207
3270
  const [query, setQuery] = (0, import_react35.useState)("");
@@ -3227,10 +3290,10 @@ function CommandPalette({ open, onClose, commands, placeholder = "Search command
3227
3290
  if (!results.length) return;
3228
3291
  setActiveIndex((index) => (Math.min(index, results.length - 1) + step + results.length) % results.length);
3229
3292
  }
3230
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("dialog", { ref: dialogRef, className: "ow-dialog ow-palette", "aria-label": "Command palette", children: [
3231
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "ow-palette__search", children: [
3232
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SearchIcon, { size: 16, className: "ow-palette__search-icon" }),
3233
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3293
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("dialog", { ref: dialogRef, className: "ow-dialog ow-palette", "aria-label": "Command palette", children: [
3294
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "ow-palette__search", children: [
3295
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(SearchIcon, { size: 16, className: "ow-palette__search-icon" }),
3296
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3234
3297
  "input",
3235
3298
  {
3236
3299
  autoFocus: true,
@@ -3257,14 +3320,14 @@ function CommandPalette({ open, onClose, commands, placeholder = "Search command
3257
3320
  }
3258
3321
  }
3259
3322
  ),
3260
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("kbd", { className: "ow-palette__esc", children: "esc" })
3323
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("kbd", { className: "ow-palette__esc", children: "esc" })
3261
3324
  ] }),
3262
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("ul", { ref: listRef, id: listId, role: "listbox", "aria-label": "Commands", className: "ow-palette__list", children: results.length ? results.map((command, index) => {
3325
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("ul", { ref: listRef, id: listId, role: "listbox", "aria-label": "Commands", className: "ow-palette__list", children: results.length ? results.map((command, index) => {
3263
3326
  const showGroup = !query.trim() && command.group && command.group !== results[index - 1]?.group;
3264
3327
  const isActive = command === active;
3265
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("li", { role: "presentation", children: [
3266
- showGroup ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "ow-palette__group", children: command.group }) : null,
3267
- /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3328
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("li", { role: "presentation", children: [
3329
+ showGroup ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "ow-palette__group", children: command.group }) : null,
3330
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3268
3331
  "div",
3269
3332
  {
3270
3333
  id: `${listId}-${command.id}`,
@@ -3279,16 +3342,16 @@ function CommandPalette({ open, onClose, commands, placeholder = "Search command
3279
3342
  onMouseMove: () => setActiveIndex(index),
3280
3343
  onClick: () => run(command),
3281
3344
  children: [
3282
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-palette__icon", "aria-hidden": "true", children: command.icon }),
3283
- /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-palette__title", children: command.title }),
3284
- command.disabled && isActive ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-palette__hint", children: command.disabled }) : command.hint ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("span", { className: "ow-palette__hint", children: command.hint }) : null,
3285
- command.shortcut ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("kbd", { className: "ow-palette__shortcut", children: command.shortcut }) : null,
3286
- isActive && !command.disabled ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(CornerDownLeftIcon, { size: 13, className: "ow-palette__enter" }) : null
3345
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-palette__icon", "aria-hidden": "true", children: command.icon }),
3346
+ /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-palette__title", children: command.title }),
3347
+ command.disabled && isActive ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-palette__hint", children: command.disabled }) : command.hint ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-palette__hint", children: command.hint }) : null,
3348
+ command.shortcut ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("kbd", { className: "ow-palette__shortcut", children: command.shortcut }) : null,
3349
+ isActive && !command.disabled ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(CornerDownLeftIcon, { size: 13, className: "ow-palette__enter" }) : null
3287
3350
  ]
3288
3351
  }
3289
3352
  )
3290
3353
  ] }, command.id);
3291
- }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("li", { className: "ow-palette__empty", children: [
3354
+ }) : /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("li", { className: "ow-palette__empty", children: [
3292
3355
  "No commands match \u201C",
3293
3356
  query,
3294
3357
  "\u201D."
@@ -3298,7 +3361,7 @@ function CommandPalette({ open, onClose, commands, placeholder = "Search command
3298
3361
 
3299
3362
  // src/components/Tabs/Tabs.tsx
3300
3363
  var import_react36 = require("react");
3301
- var import_jsx_runtime34 = require("react/jsx-runtime");
3364
+ var import_jsx_runtime35 = require("react/jsx-runtime");
3302
3365
  var TabsContext = (0, import_react36.createContext)(null);
3303
3366
  function useTabs(component) {
3304
3367
  const context = (0, import_react36.useContext)(TabsContext);
@@ -3309,7 +3372,7 @@ var idPart = (value) => value.replace(/[^\w-]/g, "_");
3309
3372
  function Tabs({ value, defaultValue = "", onValueChange, variant = "segmented", className, children, ...props }) {
3310
3373
  const [current, select] = useControllableState(value, defaultValue, onValueChange);
3311
3374
  const baseId = (0, import_react36.useId)();
3312
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(TabsContext.Provider, { value: { value: current, select, baseId, variant }, children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: cx("ow-tabs", `ow-tabs--${variant}`, className), ...props, children }) });
3375
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(TabsContext.Provider, { value: { value: current, select, baseId, variant }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: cx("ow-tabs", `ow-tabs--${variant}`, className), ...props, children }) });
3313
3376
  }
3314
3377
  function TabList({ className, onKeyDown, children, ...props }) {
3315
3378
  const { value, select } = useTabs("TabList");
@@ -3333,15 +3396,15 @@ function TabList({ className, onKeyDown, children, ...props }) {
3333
3396
  next.focus();
3334
3397
  if (next.dataset.value) select(next.dataset.value);
3335
3398
  }
3336
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { ref: listRef, role: "tablist", className: cx("ow-tabs__list", className), onKeyDown: handleKeyDown, ...props, children: [
3399
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { ref: listRef, role: "tablist", className: cx("ow-tabs__list", className), onKeyDown: handleKeyDown, ...props, children: [
3337
3400
  children,
3338
- /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-indicator", "aria-hidden": "true" })
3401
+ /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "ow-indicator", "aria-hidden": "true" })
3339
3402
  ] });
3340
3403
  }
3341
3404
  function Tab({ value, icon: icon2, className, children, onClick, ...props }) {
3342
3405
  const { value: current, select, baseId } = useTabs("Tab");
3343
3406
  const selected = current === value;
3344
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(
3407
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3345
3408
  "button",
3346
3409
  {
3347
3410
  type: "button",
@@ -3358,7 +3421,7 @@ function Tab({ value, icon: icon2, className, children, onClick, ...props }) {
3358
3421
  },
3359
3422
  ...props,
3360
3423
  children: [
3361
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { className: "ow-tab__icon", children: icon2 }) : null,
3424
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "ow-tab__icon", children: icon2 }) : null,
3362
3425
  children
3363
3426
  ]
3364
3427
  }
@@ -3368,7 +3431,7 @@ function TabPanel({ value, keepMounted = false, className, children, ...props })
3368
3431
  const { value: current, baseId } = useTabs("TabPanel");
3369
3432
  const selected = current === value;
3370
3433
  if (!selected && !keepMounted) return null;
3371
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
3434
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3372
3435
  "div",
3373
3436
  {
3374
3437
  role: "tabpanel",
@@ -3385,7 +3448,7 @@ function TabPanel({ value, keepMounted = false, className, children, ...props })
3385
3448
 
3386
3449
  // src/components/Accordion/Accordion.tsx
3387
3450
  var import_react37 = require("react");
3388
- var import_jsx_runtime35 = require("react/jsx-runtime");
3451
+ var import_jsx_runtime36 = require("react/jsx-runtime");
3389
3452
  function DisclosureView({
3390
3453
  open,
3391
3454
  onToggle,
@@ -3405,9 +3468,9 @@ function DisclosureView({
3405
3468
  (0, import_react37.useEffect)(() => {
3406
3469
  if (panelRef.current) panelRef.current.inert = !open;
3407
3470
  }, [open]);
3408
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: cx(item ? "ow-accordion__item" : "ow-disclosure", className), "data-open": open, children: [
3409
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: "ow-disclosure__header", children: [
3410
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Heading, { className: "ow-disclosure__heading", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
3471
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: cx(item ? "ow-accordion__item" : "ow-disclosure", className), "data-open": open, children: [
3472
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "ow-disclosure__header", children: [
3473
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Heading, { className: "ow-disclosure__heading", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
3411
3474
  "button",
3412
3475
  {
3413
3476
  type: "button",
@@ -3419,18 +3482,18 @@ function DisclosureView({
3419
3482
  "data-accordion-trigger": item ? "" : void 0,
3420
3483
  onClick: onToggle,
3421
3484
  children: [
3422
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(ChevronRightIcon, { size: 14, className: "ow-disclosure__chevron" }),
3423
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "ow-disclosure__icon", children: icon2 }) : null,
3424
- /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("span", { className: "ow-disclosure__titles", children: [
3425
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "ow-disclosure__title", children: title }),
3426
- subtitle ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "ow-disclosure__subtitle", children: subtitle }) : null
3485
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronRightIcon, { size: 14, className: "ow-disclosure__chevron" }),
3486
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-disclosure__icon", children: icon2 }) : null,
3487
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("span", { className: "ow-disclosure__titles", children: [
3488
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-disclosure__title", children: title }),
3489
+ subtitle ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-disclosure__subtitle", children: subtitle }) : null
3427
3490
  ] })
3428
3491
  ]
3429
3492
  }
3430
3493
  ) }),
3431
- actions ? /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "ow-disclosure__actions", children: actions }) : null
3494
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "ow-disclosure__actions", children: actions }) : null
3432
3495
  ] }),
3433
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3496
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3434
3497
  "div",
3435
3498
  {
3436
3499
  ref: panelRef,
@@ -3438,7 +3501,7 @@ function DisclosureView({
3438
3501
  role: "region",
3439
3502
  "aria-labelledby": `${id}-trigger`,
3440
3503
  className: "ow-disclosure__panel",
3441
- children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "ow-disclosure__clip", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "ow-disclosure__content", children }) })
3504
+ children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "ow-disclosure__clip", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "ow-disclosure__content", children }) })
3442
3505
  }
3443
3506
  )
3444
3507
  ] });
@@ -3453,7 +3516,7 @@ function Disclosure({
3453
3516
  ...props
3454
3517
  }) {
3455
3518
  const [isOpen, setOpen] = useControllableState(open, defaultOpen, onOpenChange);
3456
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3519
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3457
3520
  DisclosureView,
3458
3521
  {
3459
3522
  ...props,
@@ -3495,12 +3558,12 @@ function Accordion({
3495
3558
  event.preventDefault();
3496
3559
  triggers[(moves[event.key] + triggers.length) % triggers.length]?.focus();
3497
3560
  }
3498
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(AccordionContext.Provider, { value: { isOpen: (item) => openValues.includes(item), toggle, headingLevel }, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: cx("ow-accordion", `ow-accordion--${variant}`, className), onKeyDown: handleKeyDown, ...props, children }) });
3561
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(AccordionContext.Provider, { value: { isOpen: (item) => openValues.includes(item), toggle, headingLevel }, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: cx("ow-accordion", `ow-accordion--${variant}`, className), onKeyDown: handleKeyDown, ...props, children }) });
3499
3562
  }
3500
3563
  function AccordionItem({ value, ...props }) {
3501
3564
  const context = (0, import_react37.useContext)(AccordionContext);
3502
3565
  if (!context) throw new Error("AccordionItem must be inside <Accordion>.");
3503
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
3566
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
3504
3567
  DisclosureView,
3505
3568
  {
3506
3569
  ...props,
@@ -3514,13 +3577,13 @@ function AccordionItem({ value, ...props }) {
3514
3577
 
3515
3578
  // src/components/Breadcrumbs/Breadcrumbs.tsx
3516
3579
  var import_react38 = require("react");
3517
- var import_jsx_runtime36 = require("react/jsx-runtime");
3580
+ var import_jsx_runtime37 = require("react/jsx-runtime");
3518
3581
  function Breadcrumbs({ items: items2, separator = "chevron", label = "Breadcrumb", className }) {
3519
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("nav", { "aria-label": label, className: cx("ow-breadcrumbs", className), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("ol", { className: "ow-breadcrumbs__list", children: items2.map((item, index) => {
3582
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("nav", { "aria-label": label, className: cx("ow-breadcrumbs", className), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ol", { className: "ow-breadcrumbs__list", children: items2.map((item, index) => {
3520
3583
  const isLast = index === items2.length - 1;
3521
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("li", { className: "ow-breadcrumbs__item", children: [
3522
- isLast ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-breadcrumbs__current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("a", { className: "ow-breadcrumbs__link", href: item.href, onClick: item.onClick, children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("button", { type: "button", className: "ow-breadcrumbs__link", onClick: item.onClick, children: item.label }),
3523
- isLast ? null : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-breadcrumbs__separator", "aria-hidden": "true", children: separator === "slash" ? "/" : /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ChevronRightIcon, { size: 14 }) })
3584
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("li", { className: "ow-breadcrumbs__item", children: [
3585
+ isLast ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "ow-breadcrumbs__current", "aria-current": "page", children: item.label }) : item.href ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("a", { className: "ow-breadcrumbs__link", href: item.href, onClick: item.onClick, children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("button", { type: "button", className: "ow-breadcrumbs__link", onClick: item.onClick, children: item.label }),
3586
+ isLast ? null : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "ow-breadcrumbs__separator", "aria-hidden": "true", children: separator === "slash" ? "/" : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ChevronRightIcon, { size: 14 }) })
3524
3587
  ] }, index);
3525
3588
  }) }) });
3526
3589
  }
@@ -3528,7 +3591,7 @@ function linkClassName({ variant = "default" } = {}) {
3528
3591
  return cx("ow-link", `ow-link--${variant}`);
3529
3592
  }
3530
3593
  var Link = (0, import_react38.forwardRef)(function Link2({ variant = "default", external = false, className, children, target, rel, ...props }, ref) {
3531
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
3594
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
3532
3595
  "a",
3533
3596
  {
3534
3597
  ref,
@@ -3538,9 +3601,9 @@ var Link = (0, import_react38.forwardRef)(function Link2({ variant = "default",
3538
3601
  ...props,
3539
3602
  children: [
3540
3603
  children,
3541
- external ? /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
3542
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ArrowUpRightIcon, { size: 13, className: "ow-link__external" }),
3543
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "ow-visually-hidden", children: " (opens in a new tab)" })
3604
+ external ? /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
3605
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ArrowUpRightIcon, { size: 13, className: "ow-link__external" }),
3606
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: "ow-visually-hidden", children: " (opens in a new tab)" })
3544
3607
  ] }) : null
3545
3608
  ]
3546
3609
  }
@@ -3548,7 +3611,7 @@ var Link = (0, import_react38.forwardRef)(function Link2({ variant = "default",
3548
3611
  });
3549
3612
 
3550
3613
  // src/components/Pagination/Pagination.tsx
3551
- var import_jsx_runtime37 = require("react/jsx-runtime");
3614
+ var import_jsx_runtime38 = require("react/jsx-runtime");
3552
3615
  function paginationItems(page, pageCount, siblingCount = 1, boundaryCount = 1) {
3553
3616
  const range = (from, to) => Array.from({ length: Math.max(0, to - from + 1) }, (_, i) => from + i);
3554
3617
  const startPages = range(1, Math.min(boundaryCount, pageCount));
@@ -3581,8 +3644,8 @@ function Pagination({
3581
3644
  }) {
3582
3645
  const items2 = paginationItems(page, pageCount, siblingCount, boundaryCount);
3583
3646
  const go = (next) => onPageChange(Math.min(Math.max(1, next), pageCount));
3584
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("nav", { "aria-label": label, className: cx("ow-pagination", `ow-pagination--${size}`, className), children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("ul", { className: "ow-pagination__list", children: [
3585
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3647
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("nav", { "aria-label": label, className: cx("ow-pagination", `ow-pagination--${size}`, className), children: /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("ul", { className: "ow-pagination__list", children: [
3648
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3586
3649
  "button",
3587
3650
  {
3588
3651
  type: "button",
@@ -3590,11 +3653,11 @@ function Pagination({
3590
3653
  "aria-label": "Previous page",
3591
3654
  disabled: page <= 1,
3592
3655
  onClick: () => go(page - 1),
3593
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ChevronLeftIcon, { size: 16 })
3656
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ChevronLeftIcon, { size: 16 })
3594
3657
  }
3595
3658
  ) }),
3596
3659
  items2.map(
3597
- (item) => typeof item === "number" ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3660
+ (item) => typeof item === "number" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3598
3661
  "button",
3599
3662
  {
3600
3663
  type: "button",
@@ -3604,9 +3667,9 @@ function Pagination({
3604
3667
  onClick: () => go(item),
3605
3668
  children: item
3606
3669
  }
3607
- ) }, item) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { className: "ow-pagination__gap", "aria-hidden": "true", children: "\u2026" }, item)
3670
+ ) }, item) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { className: "ow-pagination__gap", "aria-hidden": "true", children: "\u2026" }, item)
3608
3671
  ),
3609
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
3672
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
3610
3673
  "button",
3611
3674
  {
3612
3675
  type: "button",
@@ -3614,7 +3677,7 @@ function Pagination({
3614
3677
  "aria-label": "Next page",
3615
3678
  disabled: page >= pageCount,
3616
3679
  onClick: () => go(page + 1),
3617
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(ChevronRightIcon, { size: 16 })
3680
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(ChevronRightIcon, { size: 16 })
3618
3681
  }
3619
3682
  ) })
3620
3683
  ] }) });
@@ -3622,43 +3685,43 @@ function Pagination({
3622
3685
 
3623
3686
  // src/components/Steps/Steps.tsx
3624
3687
  var import_react39 = require("react");
3625
- var import_jsx_runtime38 = require("react/jsx-runtime");
3688
+ var import_jsx_runtime39 = require("react/jsx-runtime");
3626
3689
  function Steps({ items: items2, current = 0, orientation = "vertical", title, label = "Steps", className }) {
3627
3690
  const statuses = items2.map((item, index) => item.status ?? (index < current ? "done" : index === current ? "current" : "upcoming"));
3628
3691
  const doneCount = statuses.filter((status) => status === "done").length;
3629
3692
  const headingId = (0, import_react39.useId)();
3630
- const list = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("ol", { className: "ow-steps__list", children: items2.map((item, index) => {
3693
+ const list = /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ol", { className: "ow-steps__list", children: items2.map((item, index) => {
3631
3694
  const status = statuses[index];
3632
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3695
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
3633
3696
  "li",
3634
3697
  {
3635
3698
  className: cx("ow-steps__item", `ow-steps__item--${status}`),
3636
3699
  "aria-current": status === "current" ? "step" : void 0,
3637
3700
  children: [
3638
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ow-steps__marker", children: status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(CheckIcon, { size: 14, strokeWidth: 3 }) : index + 1 }),
3639
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "ow-steps__text", children: [
3640
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "ow-steps__title", children: [
3641
- status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ow-visually-hidden", children: "Done: " }) : null,
3701
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-steps__marker", children: status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(CheckIcon, { size: 14, strokeWidth: 3 }) : index + 1 }),
3702
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "ow-steps__text", children: [
3703
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "ow-steps__title", children: [
3704
+ status === "done" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-visually-hidden", children: "Done: " }) : null,
3642
3705
  item.title
3643
3706
  ] }),
3644
- item.description && (orientation === "horizontal" || status !== "done") ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ow-steps__description", children: item.description }) : null
3707
+ item.description && (orientation === "horizontal" || status !== "done") ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-steps__description", children: item.description }) : null
3645
3708
  ] }),
3646
- item.action && status !== "done" && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: "ow-steps__action", children: item.action }) : null
3709
+ item.action && status === "current" && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-steps__action", children: item.action }) : null
3647
3710
  ]
3648
3711
  },
3649
3712
  index
3650
3713
  );
3651
3714
  }) });
3652
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
3715
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
3653
3716
  "section",
3654
3717
  {
3655
3718
  className: cx("ow-steps", `ow-steps--${orientation}`, className),
3656
3719
  "aria-labelledby": title && orientation === "vertical" ? headingId : void 0,
3657
3720
  "aria-label": title && orientation === "vertical" ? void 0 : label,
3658
3721
  children: [
3659
- title && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { className: "ow-steps__header", children: [
3660
- /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("h3", { id: headingId, className: "ow-steps__heading", children: title }),
3661
- /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("span", { className: "ow-steps__count", children: [
3722
+ title && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "ow-steps__header", children: [
3723
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("h3", { id: headingId, className: "ow-steps__heading", children: title }),
3724
+ /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("span", { className: "ow-steps__count", children: [
3662
3725
  doneCount,
3663
3726
  " of ",
3664
3727
  items2.length,
@@ -3673,25 +3736,25 @@ function Steps({ items: items2, current = 0, orientation = "vertical", title, la
3673
3736
 
3674
3737
  // src/components/NavList/NavList.tsx
3675
3738
  var import_react40 = require("react");
3676
- var import_jsx_runtime39 = require("react/jsx-runtime");
3739
+ var import_jsx_runtime40 = require("react/jsx-runtime");
3677
3740
  function NavList({ label, heading, orientation = "vertical", children, className }) {
3678
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("nav", { "aria-label": label, className: cx("ow-nav", `ow-nav--${orientation}`, className), children: [
3679
- heading && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-nav__heading", children: heading }) : null,
3741
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("nav", { "aria-label": label, className: cx("ow-nav", `ow-nav--${orientation}`, className), children: [
3742
+ heading && orientation === "vertical" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ow-nav__heading", children: heading }) : null,
3680
3743
  children
3681
3744
  ] });
3682
3745
  }
3683
3746
  var NavItem = (0, import_react40.forwardRef)(function NavItem2({ icon: icon2, active = false, className, children, type = "button", href, end, ...buttonProps }, ref) {
3684
- const content = /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(import_jsx_runtime39.Fragment, { children: [
3685
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-nav__icon", children: icon2 }) : null,
3686
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-nav__label", children }),
3687
- end !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "ow-nav__end", children: end }) : null
3747
+ const content = /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
3748
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ow-nav__icon", children: icon2 }) : null,
3749
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ow-nav__label", children }),
3750
+ end !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: "ow-nav__end", children: end }) : null
3688
3751
  ] });
3689
3752
  const shared = {
3690
3753
  "aria-current": active ? "page" : void 0,
3691
3754
  className: cx("ow-nav__item", active && "ow-nav__item--active", className)
3692
3755
  };
3693
3756
  if (href !== void 0) {
3694
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
3757
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3695
3758
  "a",
3696
3759
  {
3697
3760
  ref,
@@ -3702,12 +3765,12 @@ var NavItem = (0, import_react40.forwardRef)(function NavItem2({ icon: icon2, ac
3702
3765
  }
3703
3766
  );
3704
3767
  }
3705
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("button", { ref, type, ...shared, ...buttonProps, children: content });
3768
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("button", { ref, type, ...shared, ...buttonProps, children: content });
3706
3769
  });
3707
3770
 
3708
3771
  // src/components/Table/Table.tsx
3709
3772
  var import_react41 = require("react");
3710
- var import_jsx_runtime40 = require("react/jsx-runtime");
3773
+ var import_jsx_runtime41 = require("react/jsx-runtime");
3711
3774
  function compare(a, b) {
3712
3775
  if (typeof a === "number" && typeof b === "number") return a - b;
3713
3776
  return String(a).localeCompare(String(b), void 0, { numeric: true, sensitivity: "base" });
@@ -3726,6 +3789,7 @@ function Table({
3726
3789
  selectedKeys,
3727
3790
  defaultSelectedKeys = [],
3728
3791
  onSelectionChange,
3792
+ rowLabel,
3729
3793
  emptyContent = "Nothing here yet.",
3730
3794
  density = "comfortable",
3731
3795
  stickyHeader = false,
@@ -3735,6 +3799,11 @@ function Table({
3735
3799
  const [currentSort, setSort] = useControllableState(sort, defaultSort, onSortChange);
3736
3800
  const [selected, setSelected] = useControllableState(selectedKeys, defaultSelectedKeys, onSelectionChange);
3737
3801
  const keyOf = (row) => typeof rowKey === "function" ? rowKey(row) : row[rowKey];
3802
+ const labelOf = (row, index) => {
3803
+ if (rowLabel) return rowLabel(row);
3804
+ const first = columns[0] ? row[columns[0].key] : void 0;
3805
+ return typeof first === "string" || typeof first === "number" ? String(first) : `row ${index + 1}`;
3806
+ };
3738
3807
  const field = (row, key) => row[key];
3739
3808
  const sorted = (0, import_react41.useMemo)(() => {
3740
3809
  if (!currentSort || manualSort) return rows;
@@ -3752,16 +3821,16 @@ function Table({
3752
3821
  );
3753
3822
  }
3754
3823
  const selectable = selectionMode === "multiple";
3755
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3824
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3756
3825
  "div",
3757
3826
  {
3758
3827
  className: cx("ow-table-wrap", stickyHeader && "ow-table-wrap--sticky", className),
3759
3828
  style: maxHeight ? { maxHeight } : void 0,
3760
3829
  tabIndex: maxHeight ? 0 : void 0,
3761
- children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("table", { className: cx("ow-table", `ow-table--${density}`), children: [
3762
- caption ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("caption", { className: cx("ow-table__caption", hideCaption && "ow-visually-hidden"), children: caption }) : null,
3763
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("tr", { children: [
3764
- selectable ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("th", { className: "ow-table__select", scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3830
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("table", { className: cx("ow-table", `ow-table--${density}`), children: [
3831
+ caption ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("caption", { className: cx("ow-table__caption", hideCaption && "ow-visually-hidden"), children: caption }) : null,
3832
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("tr", { children: [
3833
+ selectable ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("th", { className: "ow-table__select", scope: "col", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3765
3834
  Checkbox,
3766
3835
  {
3767
3836
  size: "sm",
@@ -3775,38 +3844,38 @@ function Table({
3775
3844
  ) }) : null,
3776
3845
  columns.map((column) => {
3777
3846
  const direction = currentSort?.key === column.key ? currentSort.direction : void 0;
3778
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3847
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3779
3848
  "th",
3780
3849
  {
3781
3850
  scope: "col",
3782
3851
  "aria-sort": direction ?? (column.sortable ? "none" : void 0),
3783
3852
  className: cx(`ow-table__cell--${column.align ?? "start"}`),
3784
3853
  style: column.width !== void 0 ? { width: column.width } : void 0,
3785
- children: column.sortable ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("button", { type: "button", className: "ow-table__sort", onClick: () => toggleSort(column.key), children: [
3854
+ children: column.sortable ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("button", { type: "button", className: "ow-table__sort", onClick: () => toggleSort(column.key), children: [
3786
3855
  column.header,
3787
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: cx("ow-table__sort-icon", direction && "ow-table__sort-icon--active"), children: direction === "ascending" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ArrowUpIcon, { size: 12 }) : direction === "descending" ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ArrowDownIcon, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ChevronsUpDownIcon, { size: 12 }) })
3856
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: cx("ow-table__sort-icon", direction && "ow-table__sort-icon--active"), children: direction === "ascending" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ArrowUpIcon, { size: 12 }) : direction === "descending" ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ArrowDownIcon, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ChevronsUpDownIcon, { size: 12 }) })
3788
3857
  ] }) : column.header
3789
3858
  },
3790
3859
  column.key
3791
3860
  );
3792
3861
  })
3793
3862
  ] }) }),
3794
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("tbody", { children: sorted.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("td", { className: "ow-table__empty", colSpan: columns.length + (selectable ? 1 : 0), children: emptyContent }) }) : sorted.map((row) => {
3863
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("tbody", { children: sorted.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("td", { className: "ow-table__empty", colSpan: columns.length + (selectable ? 1 : 0), children: emptyContent }) }) : sorted.map((row, index) => {
3795
3864
  const key = keyOf(row);
3796
3865
  const isSelected = selected.includes(key);
3797
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("tr", { className: cx(isSelected && "ow-table__row--selected"), children: [
3798
- selectable ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("td", { className: "ow-table__select", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
3866
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("tr", { className: cx(isSelected && "ow-table__row--selected"), children: [
3867
+ selectable ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("td", { className: "ow-table__select", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3799
3868
  Checkbox,
3800
3869
  {
3801
3870
  size: "sm",
3802
- "aria-label": "Select row",
3871
+ "aria-label": `Select ${labelOf(row, index)}`,
3803
3872
  checked: isSelected,
3804
3873
  onChange: (event) => setSelected(
3805
3874
  event.target.checked ? [...selected, key] : selected.filter((k) => k !== key)
3806
3875
  )
3807
3876
  }
3808
3877
  ) }) : null,
3809
- columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("td", { className: cx(`ow-table__cell--${column.align ?? "start"}`), children: column.render ? column.render(row) : field(row, column.key) }, column.key))
3878
+ columns.map((column) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("td", { className: cx(`ow-table__cell--${column.align ?? "start"}`), children: column.render ? column.render(row) : field(row, column.key) }, column.key))
3810
3879
  ] }, key);
3811
3880
  }) })
3812
3881
  ] })
@@ -3815,7 +3884,7 @@ function Table({
3815
3884
  }
3816
3885
 
3817
3886
  // src/components/Stat/Stat.tsx
3818
- var import_jsx_runtime41 = require("react/jsx-runtime");
3887
+ var import_jsx_runtime42 = require("react/jsx-runtime");
3819
3888
  function Sparkline({ values }) {
3820
3889
  const max = Math.max(...values);
3821
3890
  const min = Math.min(...values);
@@ -3827,37 +3896,37 @@ function Sparkline({ values }) {
3827
3896
  });
3828
3897
  const line = points.map(([x, y], index) => `${index ? "L" : "M"}${x.toFixed(2)} ${y.toFixed(2)}`).join(" ");
3829
3898
  const [lastX, lastY] = points[points.length - 1];
3830
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ow-stat__trend", "aria-hidden": "true", children: [
3831
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("svg", { viewBox: "0 0 100 40", preserveAspectRatio: "none", children: [
3832
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("path", { d: `${line} L100 40 L0 40 Z`, className: "ow-stat__trend-area" }),
3833
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("path", { d: line, className: "ow-stat__trend-line", vectorEffect: "non-scaling-stroke" })
3899
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ow-stat__trend", "aria-hidden": "true", children: [
3900
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("svg", { viewBox: "0 0 100 40", preserveAspectRatio: "none", children: [
3901
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { d: `${line} L100 40 L0 40 Z`, className: "ow-stat__trend-area" }),
3902
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { d: line, className: "ow-stat__trend-line", vectorEffect: "non-scaling-stroke" })
3834
3903
  ] }),
3835
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "ow-stat__trend-end", style: { left: `${lastX}%`, top: `${lastY / 40 * 100}%` } })
3904
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-stat__trend-end", style: { left: `${lastX}%`, top: `${lastY / 40 * 100}%` } })
3836
3905
  ] });
3837
3906
  }
3838
3907
  function Stat({ label, value, icon: icon2, change, changeTone, description, trend, className }) {
3839
3908
  const tone = changeTone ?? (change?.startsWith("+") ? "positive" : /^[-−]/.test(change ?? "") ? "negative" : "neutral");
3840
3909
  const rising = change ? !/^[-−]/.test(change) : false;
3841
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: cx("ow-stat", className), children: [
3842
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ow-stat__label", children: [
3843
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "ow-stat__icon", children: icon2 }) : null,
3844
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { children: label })
3910
+ return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: cx("ow-stat", className), children: [
3911
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ow-stat__label", children: [
3912
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-stat__icon", children: icon2 }) : null,
3913
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { children: label })
3845
3914
  ] }),
3846
- /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "ow-stat__row", children: [
3847
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "ow-stat__value", children: value }),
3848
- change ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("span", { className: cx("ow-stat__change", `ow-stat__change--${tone}`), children: [
3849
- tone === "neutral" ? null : rising ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ArrowUpIcon, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ArrowDownIcon, { size: 12 }),
3915
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "ow-stat__row", children: [
3916
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-stat__value", children: value }),
3917
+ change ? /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("span", { className: cx("ow-stat__change", `ow-stat__change--${tone}`), children: [
3918
+ tone === "neutral" ? null : rising ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ArrowUpIcon, { size: 12 }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ArrowDownIcon, { size: 12 }),
3850
3919
  change
3851
3920
  ] }) : null
3852
3921
  ] }),
3853
- description ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "ow-stat__description", children: description }) : null,
3854
- trend && trend.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Sparkline, { values: trend }) : null
3922
+ description ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("div", { className: "ow-stat__description", children: description }) : null,
3923
+ trend && trend.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Sparkline, { values: trend }) : null
3855
3924
  ] });
3856
3925
  }
3857
3926
 
3858
3927
  // src/components/FileTree/FileTree.tsx
3859
3928
  var import_react42 = require("react");
3860
- var import_jsx_runtime42 = require("react/jsx-runtime");
3929
+ var import_jsx_runtime43 = require("react/jsx-runtime");
3861
3930
  function flatten(nodes, expanded, parent, level = 1) {
3862
3931
  return nodes.flatMap((node) => {
3863
3932
  const path = parent ? `${parent}/${node.name}` : node.name;
@@ -3935,8 +4004,8 @@ function FileTree({
3935
4004
  const row = rows.find((entry) => entry.path === path);
3936
4005
  if (!row) return null;
3937
4006
  const isOpen = row.isFolder && expanded.has(path);
3938
- const icon2 = node.icon ?? (row.isFolder ? isOpen ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(FolderOpenIcon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(FolderIcon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(FileIcon, { size: 16 }));
3939
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4007
+ const icon2 = node.icon ?? (row.isFolder ? isOpen ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(FolderOpenIcon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(FolderIcon, { size: 16 }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(FileIcon, { size: 16 }));
4008
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
3940
4009
  "li",
3941
4010
  {
3942
4011
  ref: (element) => {
@@ -3954,7 +4023,7 @@ function FileTree({
3954
4023
  if (event.target === event.currentTarget) setFocusPath(path);
3955
4024
  },
3956
4025
  children: [
3957
- /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(
4026
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(
3958
4027
  "div",
3959
4028
  {
3960
4029
  className: cx("ow-tree__row", !row.isFolder && current === path && "ow-tree__row--selected"),
@@ -3964,51 +4033,51 @@ function FileTree({
3964
4033
  activate(row);
3965
4034
  },
3966
4035
  children: [
3967
- row.isFolder ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(ChevronRightIcon, { size: 14, className: cx("ow-tree__chevron", isOpen && "ow-tree__chevron--open") }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-tree__spacer" }),
3968
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: cx("ow-tree__icon", row.isFolder && "ow-tree__icon--folder"), children: icon2 }),
3969
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-tree__name", children: node.name }),
3970
- node.meta ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("span", { className: "ow-tree__meta", children: node.meta }) : null
4036
+ row.isFolder ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(ChevronRightIcon, { size: 14, className: cx("ow-tree__chevron", isOpen && "ow-tree__chevron--open") }) : /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "ow-tree__spacer" }),
4037
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: cx("ow-tree__icon", row.isFolder && "ow-tree__icon--folder"), children: icon2 }),
4038
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "ow-tree__name", children: node.name }),
4039
+ node.meta ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "ow-tree__meta", children: node.meta }) : null
3971
4040
  ]
3972
4041
  }
3973
4042
  ),
3974
- isOpen && node.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("ul", { role: "group", className: "ow-tree__group", children: render(node.children, path, level + 1) }) : null
4043
+ isOpen && node.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("ul", { role: "group", className: "ow-tree__group", children: render(node.children, path, level + 1) }) : null
3975
4044
  ]
3976
4045
  },
3977
4046
  path
3978
4047
  );
3979
4048
  });
3980
4049
  }
3981
- return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("ul", { role: "tree", "aria-label": label, className: cx("ow-tree", className), children: render(items2) });
4050
+ return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("ul", { role: "tree", "aria-label": label, className: cx("ow-tree", className), children: render(items2) });
3982
4051
  }
3983
4052
 
3984
4053
  // src/components/EmptyState/EmptyState.tsx
3985
- var import_jsx_runtime43 = require("react/jsx-runtime");
4054
+ var import_jsx_runtime44 = require("react/jsx-runtime");
3986
4055
  function EmptyState({ title, description, icon: icon2, actions, bordered = false, className }) {
3987
- return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: cx("ow-empty", bordered && "ow-empty--bordered", className), children: [
3988
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: "ow-empty__icon", "aria-hidden": "true", children: icon2 ?? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(InboxIcon, { size: 20 }) }),
3989
- /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "ow-empty__text", children: [
3990
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "ow-empty__title", children: title }),
3991
- description ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("p", { className: "ow-empty__description", children: description }) : null
4056
+ return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: cx("ow-empty", bordered && "ow-empty--bordered", className), children: [
4057
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "ow-empty__icon", "aria-hidden": "true", children: icon2 ?? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(InboxIcon, { size: 20 }) }),
4058
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: "ow-empty__text", children: [
4059
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "ow-empty__title", children: title }),
4060
+ description ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("p", { className: "ow-empty__description", children: description }) : null
3992
4061
  ] }),
3993
- actions ? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "ow-empty__actions", children: actions }) : null
4062
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "ow-empty__actions", children: actions }) : null
3994
4063
  ] });
3995
4064
  }
3996
4065
 
3997
4066
  // src/components/Tag/Tag.tsx
3998
- var import_jsx_runtime44 = require("react/jsx-runtime");
4067
+ var import_jsx_runtime45 = require("react/jsx-runtime");
3999
4068
  function Tag({ onRemove, variant = "neutral", size = "md", icon: icon2, removeLabel, className, children, ...props }) {
4000
4069
  const name = removeLabel ?? (typeof children === "string" ? children : "tag");
4001
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: cx("ow-tag", `ow-tag--${variant}`, `ow-tag--${size}`, onRemove && "ow-tag--removable", className), ...props, children: [
4002
- icon2 ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "ow-tag__icon", children: icon2 }) : null,
4003
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "ow-tag__label", children }),
4004
- onRemove ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("button", { type: "button", className: "ow-tag__remove", "aria-label": `Remove ${name}`, onClick: onRemove, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(XIcon, { size: 12 }) }) : null
4070
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: cx("ow-tag", `ow-tag--${variant}`, `ow-tag--${size}`, onRemove && "ow-tag--removable", className), ...props, children: [
4071
+ icon2 ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "ow-tag__icon", children: icon2 }) : null,
4072
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "ow-tag__label", children }),
4073
+ onRemove ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("button", { type: "button", className: "ow-tag__remove", "aria-label": `Remove ${name}`, onClick: onRemove, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(XIcon, { size: 12 }) }) : null
4005
4074
  ] });
4006
4075
  }
4007
4076
  function TagGroup({ label, className, children, ...props }) {
4008
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { role: "group", "aria-label": label, className: cx("ow-tag-group", className), ...props, children });
4077
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { role: "group", "aria-label": label, className: cx("ow-tag-group", className), ...props, children });
4009
4078
  }
4010
4079
  function ColorSwatch({ color, name, value, size = "md", shape = "square", className }) {
4011
- const swatch = /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
4080
+ const swatch = /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4012
4081
  "span",
4013
4082
  {
4014
4083
  className: cx("ow-swatch", `ow-swatch--${size}`, shape === "circle" && "ow-swatch--circle"),
@@ -4016,48 +4085,58 @@ function ColorSwatch({ color, name, value, size = "md", shape = "square", classN
4016
4085
  ...name && !value ? { role: "img", "aria-label": name } : { "aria-hidden": true }
4017
4086
  }
4018
4087
  );
4019
- if (!name && !value) return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className, children: swatch });
4020
- return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: cx("ow-swatch-label", className), children: [
4088
+ if (!name && !value) return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className, children: swatch });
4089
+ return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: cx("ow-swatch-label", className), children: [
4021
4090
  swatch,
4022
- /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("span", { className: "ow-swatch-label__text", children: [
4023
- name ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "ow-swatch-label__name", children: name }) : null,
4024
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: "ow-swatch-label__value", children: value })
4091
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("span", { className: "ow-swatch-label__text", children: [
4092
+ name ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "ow-swatch-label__name", children: name }) : null,
4093
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "ow-swatch-label__value", children: value })
4025
4094
  ] })
4026
4095
  ] });
4027
4096
  }
4028
4097
 
4029
4098
  // src/components/Avatar/Avatar.tsx
4030
4099
  var import_react43 = require("react");
4031
- var import_jsx_runtime45 = require("react/jsx-runtime");
4100
+ var import_jsx_runtime46 = require("react/jsx-runtime");
4101
+ var namedSizes = { sm: 24, md: 28, lg: 36, xl: 48 };
4102
+ function avatarSize(size) {
4103
+ if (typeof size === "number") {
4104
+ return { className: "ow-avatar--custom", style: { "--ow-avatar-size": `${size}px` }, pixels: size };
4105
+ }
4106
+ return { className: `ow-avatar--${size}`, pixels: namedSizes[size] };
4107
+ }
4032
4108
  function Avatar({ name, src, size = "md", label, className }) {
4033
4109
  const initials = getInitials(name);
4034
4110
  const [failedImage, setFailedImage] = (0, import_react43.useState)();
4035
4111
  const showImage = src && src !== failedImage;
4036
- return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
4112
+ const sizing = avatarSize(size);
4113
+ return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
4037
4114
  "span",
4038
4115
  {
4039
- className: cx("ow-avatar", `ow-avatar--${size}`, !initials && !showImage && "ow-avatar--empty", className),
4116
+ className: cx("ow-avatar", sizing.className, !initials && !showImage && "ow-avatar--empty", className),
4117
+ style: sizing.style,
4040
4118
  ...label ? { role: "img", "aria-label": label } : { "aria-hidden": true },
4041
- children: showImage ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("img", { src, alt: "", className: "ow-avatar__image", onError: () => setFailedImage(src) }) : initials || /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(UserIcon, { size: size === "sm" ? 13 : size === "lg" ? 18 : 15 })
4119
+ children: showImage ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("img", { src, alt: "", className: "ow-avatar__image", onError: () => setFailedImage(src) }) : initials || /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(UserIcon, { size: Math.round(sizing.pixels * 0.52) })
4042
4120
  }
4043
4121
  );
4044
4122
  }
4045
4123
 
4046
4124
  // src/components/Avatar/AvatarGroup.tsx
4047
4125
  var import_react44 = require("react");
4048
- var import_jsx_runtime46 = require("react/jsx-runtime");
4126
+ var import_jsx_runtime47 = require("react/jsx-runtime");
4049
4127
  function AvatarGroup({ children, max = 4, size = "md", label, className }) {
4050
4128
  const avatars = import_react44.Children.toArray(children).filter(import_react44.isValidElement);
4129
+ const sizing = avatarSize(size);
4051
4130
  const shown = avatars.slice(0, max);
4052
4131
  const hidden = avatars.length - shown.length;
4053
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { role: "group", "aria-label": label, className: cx("ow-avatar-group", className), children: [
4132
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { role: "group", "aria-label": label, className: cx("ow-avatar-group", className), children: [
4054
4133
  shown.map((avatar) => (0, import_react44.cloneElement)(avatar, { size })),
4055
- hidden > 0 ? /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { className: cx("ow-avatar", `ow-avatar--${size}`, "ow-avatar--count"), children: [
4056
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { "aria-hidden": "true", children: [
4134
+ hidden > 0 ? /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: cx("ow-avatar", sizing.className, "ow-avatar--count"), style: sizing.style, children: [
4135
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { "aria-hidden": "true", children: [
4057
4136
  "+",
4058
4137
  hidden
4059
4138
  ] }),
4060
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("span", { className: "ow-visually-hidden", children: [
4139
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("span", { className: "ow-visually-hidden", children: [
4061
4140
  "and ",
4062
4141
  hidden,
4063
4142
  " more"
@@ -4065,43 +4144,47 @@ function AvatarGroup({ children, max = 4, size = "md", label, className }) {
4065
4144
  ] }) : null
4066
4145
  ] });
4067
4146
  }
4147
+ function userSize(size) {
4148
+ if (typeof size !== "number") return `ow-user--${size}`;
4149
+ return size >= 48 ? "ow-user--xl" : size >= 36 ? "ow-user--lg" : size >= 28 ? "ow-user--md" : "ow-user--sm";
4150
+ }
4068
4151
  function User({ name, description, src, size = "md", className }) {
4069
- return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: cx("ow-user", `ow-user--${size}`, className), children: [
4070
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Avatar, { name, src, size }),
4071
- /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "ow-user__text", children: [
4072
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "ow-user__name", children: name }),
4073
- description ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "ow-user__description", children: description }) : null
4152
+ return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: cx("ow-user", userSize(size), className), children: [
4153
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Avatar, { name, src, size }),
4154
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "ow-user__text", children: [
4155
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "ow-user__name", children: name }),
4156
+ description ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "ow-user__description", children: description }) : null
4074
4157
  ] })
4075
4158
  ] });
4076
4159
  }
4077
4160
 
4078
4161
  // src/components/Kbd/Kbd.tsx
4079
- var import_jsx_runtime47 = require("react/jsx-runtime");
4162
+ var import_jsx_runtime48 = require("react/jsx-runtime");
4080
4163
  function Kbd({ className, ...props }) {
4081
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("kbd", { className: cx("ow-kbd", className), ...props });
4164
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("kbd", { className: cx("ow-kbd", className), ...props });
4082
4165
  }
4083
4166
  function Code({ className, ...props }) {
4084
- return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("code", { className: cx("ow-code", className), ...props });
4167
+ return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("code", { className: cx("ow-code", className), ...props });
4085
4168
  }
4086
4169
 
4087
4170
  // src/components/Card/Card.tsx
4088
- var import_jsx_runtime48 = require("react/jsx-runtime");
4171
+ var import_jsx_runtime49 = require("react/jsx-runtime");
4089
4172
  function Card({ className, padding = "md", ...props }) {
4090
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: cx("ow-card", `ow-card--pad-${padding}`, className), ...props });
4173
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: cx("ow-card", `ow-card--pad-${padding}`, className), ...props });
4091
4174
  }
4092
4175
  function SettingsRow({ children, description, label, className }) {
4093
- return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: cx("ow-settings-row", className), children: [
4094
- /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "ow-settings-row__text", children: [
4095
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "ow-settings-row__label", children: label }),
4096
- description ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "ow-settings-row__description", children: description }) : null
4176
+ return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: cx("ow-settings-row", className), children: [
4177
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "ow-settings-row__text", children: [
4178
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "ow-settings-row__label", children: label }),
4179
+ description ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ow-settings-row__description", children: description }) : null
4097
4180
  ] }),
4098
- /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "ow-settings-row__control", children })
4181
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ow-settings-row__control", children })
4099
4182
  ] });
4100
4183
  }
4101
4184
 
4102
4185
  // src/components/Layout/Layout.tsx
4103
4186
  var import_react45 = require("react");
4104
- var import_jsx_runtime49 = require("react/jsx-runtime");
4187
+ var import_jsx_runtime50 = require("react/jsx-runtime");
4105
4188
  var space = (token) => token === "none" ? "0" : `var(--ow-space-${token})`;
4106
4189
  var alignments = { start: "flex-start", center: "center", end: "flex-end", stretch: "stretch", baseline: "baseline", between: "space-between" };
4107
4190
  function Stack({
@@ -4117,7 +4200,7 @@ function Stack({
4117
4200
  ...props
4118
4201
  }) {
4119
4202
  const Element = as;
4120
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
4203
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
4121
4204
  Element,
4122
4205
  {
4123
4206
  className: cx("ow-stack", className),
@@ -4137,9 +4220,9 @@ function Stack({
4137
4220
  function Separator({ orientation = "horizontal", label, spacing = "none", className }) {
4138
4221
  const margin2 = orientation === "horizontal" ? `${space(spacing)} 0` : `0 ${space(spacing)}`;
4139
4222
  if (label && orientation === "horizontal") {
4140
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { role: "separator", className: cx("ow-separator-label", className), style: { margin: margin2 }, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "ow-separator-label__text", children: label }) });
4223
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { role: "separator", className: cx("ow-separator-label", className), style: { margin: margin2 }, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "ow-separator-label__text", children: label }) });
4141
4224
  }
4142
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
4225
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
4143
4226
  "div",
4144
4227
  {
4145
4228
  role: "separator",
@@ -4179,7 +4262,7 @@ function ScrollShadow({
4179
4262
  observer?.disconnect();
4180
4263
  };
4181
4264
  }, [orientation]);
4182
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
4265
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
4183
4266
  "div",
4184
4267
  {
4185
4268
  ref,
@@ -4200,14 +4283,14 @@ function ScrollShadow({
4200
4283
  );
4201
4284
  }
4202
4285
  function VisuallyHidden({ className, ...props }) {
4203
- return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: cx("ow-visually-hidden", className), ...props });
4286
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: cx("ow-visually-hidden", className), ...props });
4204
4287
  }
4205
4288
 
4206
4289
  // src/components/Marketing/Marketing.tsx
4207
4290
  var import_react46 = require("react");
4208
- var import_jsx_runtime50 = require("react/jsx-runtime");
4291
+ var import_jsx_runtime51 = require("react/jsx-runtime");
4209
4292
  function Chip({ className, ...props }) {
4210
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: cx("ow-chip", className), ...props });
4293
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: cx("ow-chip", className), ...props });
4211
4294
  }
4212
4295
  function SectionHeading({
4213
4296
  eyebrow,
@@ -4217,17 +4300,17 @@ function SectionHeading({
4217
4300
  as: Heading = "h2",
4218
4301
  className
4219
4302
  }) {
4220
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: cx("ow-section-heading", align === "center" && "ow-section-heading--center", className), children: [
4221
- eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Chip, { children: eyebrow }) : null,
4222
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Heading, { className: "ow-section-heading__title", children: title }),
4223
- intro ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "ow-section-heading__intro", children: intro }) : null
4303
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: cx("ow-section-heading", align === "center" && "ow-section-heading--center", className), children: [
4304
+ eyebrow ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Chip, { children: eyebrow }) : null,
4305
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Heading, { className: "ow-section-heading__title", children: title }),
4306
+ intro ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "ow-section-heading__intro", children: intro }) : null
4224
4307
  ] });
4225
4308
  }
4226
4309
  function SiteHeader({ brand, nav, actions, className }) {
4227
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("header", { className: cx("ow-site-header", className), children: [
4228
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ow-site-header__brand", children: brand }),
4229
- nav ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("nav", { className: "ow-site-header__nav", children: nav }) : null,
4230
- actions ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ow-site-header__actions", children: actions }) : null
4310
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("header", { className: cx("ow-site-header", className), children: [
4311
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "ow-site-header__brand", children: brand }),
4312
+ nav ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("nav", { className: "ow-site-header__nav", children: nav }) : null,
4313
+ actions ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "ow-site-header__actions", children: actions }) : null
4231
4314
  ] });
4232
4315
  }
4233
4316
  function DotGrid({ fade = false, interactive = false, className, children, onPointerMove, ...props }) {
@@ -4240,7 +4323,7 @@ function DotGrid({ fade = false, interactive = false, className, children, onPoi
4240
4323
  element.style.setProperty("--ow-pointer-x", `${event.clientX - rect.left}px`);
4241
4324
  element.style.setProperty("--ow-pointer-y", `${event.clientY - rect.top}px`);
4242
4325
  }
4243
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
4326
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
4244
4327
  "div",
4245
4328
  {
4246
4329
  ref,
@@ -4248,9 +4331,9 @@ function DotGrid({ fade = false, interactive = false, className, children, onPoi
4248
4331
  onPointerMove: track,
4249
4332
  ...props,
4250
4333
  children: [
4251
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "ow-dot-grid__dots", "aria-hidden": "true" }),
4252
- interactive ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "ow-dot-grid__brass", "aria-hidden": "true" }) : null,
4253
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ow-dot-grid__content", children })
4334
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "ow-dot-grid__dots", "aria-hidden": "true" }),
4335
+ interactive ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "ow-dot-grid__brass", "aria-hidden": "true" }) : null,
4336
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "ow-dot-grid__content", children })
4254
4337
  ]
4255
4338
  }
4256
4339
  );
@@ -4259,7 +4342,7 @@ function DotGrid({ fade = false, interactive = false, className, children, onPoi
4259
4342
  // src/components/ColorPicker/ColorPicker.tsx
4260
4343
  var import_react47 = require("react");
4261
4344
  var import_react_colorful = require("react-colorful");
4262
- var import_jsx_runtime51 = require("react/jsx-runtime");
4345
+ var import_jsx_runtime52 = require("react/jsx-runtime");
4263
4346
  var swatchColor = (swatch) => typeof swatch === "string" ? swatch : swatch.color;
4264
4347
  var swatchName = (swatch) => typeof swatch === "string" ? swatch : swatch.name;
4265
4348
  var same = (a, b) => a.toLowerCase().replace(/^#/, "") === b.toLowerCase().replace(/^#/, "");
@@ -4294,13 +4377,13 @@ function ColorPicker({
4294
4377
  } catch {
4295
4378
  }
4296
4379
  }
4297
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { ref: rootRef, role: "group", "aria-label": ariaLabel, className: cx("ow-color-picker", className), children: [
4298
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Picker, { color, onChange: change }),
4299
- showInput || eyeDropper && canPick ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "ow-color-picker__row", children: [
4300
- eyeDropper && canPick ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("button", { type: "button", className: "ow-color-picker__dropper", "aria-label": "Pick a colour from the screen", onClick: pickFromScreen, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PipetteIcon, { size: 15 }) }) : null,
4301
- showInput ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { className: "ow-input-group ow-input-group--sm ow-color-picker__input", children: [
4302
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "ow-input-group__addon", "aria-hidden": "true", children: "#" }),
4303
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4380
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { ref: rootRef, role: "group", "aria-label": ariaLabel, className: cx("ow-color-picker", className), children: [
4381
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Picker, { color, onChange: change }),
4382
+ showInput || eyeDropper && canPick ? /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("div", { className: "ow-color-picker__row", children: [
4383
+ eyeDropper && canPick ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("button", { type: "button", className: "ow-color-picker__dropper", "aria-label": "Pick a colour from the screen", onClick: pickFromScreen, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(PipetteIcon, { size: 15 }) }) : null,
4384
+ showInput ? /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)("span", { className: "ow-input-group ow-input-group--sm ow-color-picker__input", children: [
4385
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "ow-input-group__addon", "aria-hidden": "true", children: "#" }),
4386
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
4304
4387
  import_react_colorful.HexColorInput,
4305
4388
  {
4306
4389
  className: "ow-input-group__input",
@@ -4312,11 +4395,11 @@ function ColorPicker({
4312
4395
  }
4313
4396
  )
4314
4397
  ] }) : null,
4315
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "ow-color-picker__preview", style: { "--ow-color-picker-value": color }, "aria-hidden": "true" })
4398
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "ow-color-picker__preview", style: { "--ow-color-picker-value": color }, "aria-hidden": "true" })
4316
4399
  ] }) : null,
4317
- swatches?.length ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "ow-color-picker__swatches", role: "group", "aria-label": "Swatches", children: swatches.map((swatch) => {
4400
+ swatches?.length ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: "ow-color-picker__swatches", role: "group", "aria-label": "Swatches", children: swatches.map((swatch) => {
4318
4401
  const swatchValue = swatchColor(swatch);
4319
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4402
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
4320
4403
  "button",
4321
4404
  {
4322
4405
  type: "button",
@@ -4368,8 +4451,8 @@ var ColorField = (0, import_react47.forwardRef)(function ColorField2({
4368
4451
  const frame = requestAnimationFrame(() => panelRef.current?.querySelector(".react-colorful__interactive")?.focus());
4369
4452
  return () => cancelAnimationFrame(frame);
4370
4453
  }, [isOpen]);
4371
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_jsx_runtime51.Fragment, { children: [
4372
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
4454
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_jsx_runtime52.Fragment, { children: [
4455
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
4373
4456
  "button",
4374
4457
  {
4375
4458
  ref: (element) => {
@@ -4401,13 +4484,13 @@ var ColorField = (0, import_react47.forwardRef)(function ColorField2({
4401
4484
  }
4402
4485
  },
4403
4486
  children: [
4404
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "ow-color-field__swatch", style: { "--ow-color-picker-value": color }, "aria-hidden": "true" }),
4405
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { id: `${panelId}-value`, className: "ow-select__value ow-color-field__value", children: color.toUpperCase() }),
4406
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: "ow-select__chevron" })
4487
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "ow-color-field__swatch", style: { "--ow-color-picker-value": color }, "aria-hidden": "true" }),
4488
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { id: `${panelId}-value`, className: "ow-select__value ow-color-field__value", children: color.toUpperCase() }),
4489
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ChevronDownIcon, { size: size === "sm" ? 14 : 16, className: "ow-select__chevron" })
4407
4490
  ]
4408
4491
  }
4409
4492
  ),
4410
- mounted ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
4493
+ mounted ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
4411
4494
  "div",
4412
4495
  {
4413
4496
  ref: panelRef,
@@ -4421,7 +4504,7 @@ var ColorField = (0, import_react47.forwardRef)(function ColorField2({
4421
4504
  onKeyDown: (event) => {
4422
4505
  if (event.key === "Enter" && event.target.closest(".react-colorful")) close();
4423
4506
  },
4424
- children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ColorPicker, { ...pickerProps, value: color, onChange: setColor })
4507
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(ColorPicker, { ...pickerProps, value: color, onChange: setColor })
4425
4508
  }
4426
4509
  ) : null
4427
4510
  ] });