@juspay/svelte-ui-components 4.31.3 → 4.32.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/Accordion/Accordion.svelte +6 -1
  2. package/dist/Animations/ModalAnimation.svelte +71 -8
  3. package/dist/Animations/OverlayAnimation.svelte +29 -4
  4. package/dist/Animations/tokenizedFly.d.ts +17 -0
  5. package/dist/Animations/tokenizedFly.js +153 -0
  6. package/dist/AreaChart/AreaChart.svelte +7 -5
  7. package/dist/BarChart/BarChart.svelte +2 -1
  8. package/dist/Book/Book.svelte +6 -3
  9. package/dist/ChatBubble/ChatBubble.svelte +18 -3
  10. package/dist/ChatComposer/ChatComposer.svelte +4 -0
  11. package/dist/Checkbox/Checkbox.svelte +15 -3
  12. package/dist/Choicebox/Choicebox.svelte +24 -2
  13. package/dist/Combobox/Combobox.svelte +15 -1
  14. package/dist/CommandMenu/CommandMenu.svelte +72 -2
  15. package/dist/ContextMenu/ContextMenu.svelte +41 -1
  16. package/dist/DualAxisBarChart/DualAxisBarChart.svelte +4 -3
  17. package/dist/FunnelChart/FunnelChart.svelte +5 -4
  18. package/dist/Gallery/Gallery.svelte +53 -1
  19. package/dist/Gallery/properties.d.ts +5 -3
  20. package/dist/Gauge/Gauge.svelte +2 -1
  21. package/dist/LineChart/LineChart.svelte +7 -5
  22. package/dist/MediaPlayer/MediaPlayer.svelte +9 -1
  23. package/dist/MediaPlayer/MediaPlayer.svelte.d.ts +1 -1
  24. package/dist/MediaUpload/MediaUpload.svelte +1 -1
  25. package/dist/Menu/Menu.svelte +38 -1
  26. package/dist/Modal/Modal.svelte +18 -4
  27. package/dist/Pagination/Pagination.svelte +9 -1
  28. package/dist/PieChart/PieChart.svelte +2 -2
  29. package/dist/Radio/Radio.svelte +14 -2
  30. package/dist/RatingGroup/RatingGroup.svelte +9 -0
  31. package/dist/SankeyChart/SankeyChart.svelte +6 -3
  32. package/dist/Select/Select.svelte +26 -4
  33. package/dist/Sheet/Sheet.svelte +34 -2
  34. package/dist/Slider/Slider.svelte +26 -5
  35. package/dist/Snippet/Snippet.svelte +7 -1
  36. package/dist/Table/Table.svelte +10 -2
  37. package/dist/Tabs/Tabs.svelte +27 -4
  38. package/dist/TaskList/TaskList.svelte +10 -2
  39. package/dist/ThemeSwitcher/ThemeSwitcher.svelte +13 -6
  40. package/dist/ThinkingIndicator/ThinkingIndicator.svelte +5 -3
  41. package/dist/Toast/Toast.svelte +216 -116
  42. package/dist/Toggle/Toggle.svelte +8 -4
  43. package/dist/ToolCallLog/ToolCallLog.svelte +10 -2
  44. package/dist/Tooltip/Tooltip.svelte +4 -2
  45. package/dist-wc/index.js +608 -413
  46. package/package.json +1 -1
package/dist-wc/index.js CHANGED
@@ -2693,7 +2693,7 @@ function css_to_keyframe(e) {
2693
2693
  }
2694
2694
  return t;
2695
2695
  }
2696
- var linear$1 = (e) => e, animation_effect_override = null;
2696
+ var linear$2 = (e) => e, animation_effect_override = null;
2697
2697
  function set_animation_effect_override(e) {}
2698
2698
  function transition(e, t, n, i) {
2699
2699
  var a = (e & 1) != 0, o = (e & 2) != 0, s = a && o, c = (e & 4) != 0, l = s ? "both" : a ? "in" : "out", u, f = t.inert, p = t.style.overflow, h, S;
@@ -2760,7 +2760,7 @@ function animate(e, t, n, i, a, o) {
2760
2760
  reset: noop,
2761
2761
  t: () => i
2762
2762
  };
2763
- let { delay: u = 0, css: f, tick: p, easing: h = linear$1 } = t;
2763
+ let { delay: u = 0, css: f, tick: p, easing: h = linear$2 } = t;
2764
2764
  var S = [];
2765
2765
  if (s && n === void 0 && (p && p(0, 1), f)) {
2766
2766
  var C = css_to_keyframe(f(0, 1));
@@ -5038,7 +5038,7 @@ create_custom_element(Button, {
5038
5038
  //#region src/lib/Book/Book.svelte
5039
5039
  var root$104 = /* @__PURE__ */ from_html("<div><!></div>"), root_1$93 = /* @__PURE__ */ from_html("<div class=\"page svelte-1qrpci6\"><!></div>"), root_2$71 = /* @__PURE__ */ from_html("<div class=\"page page-slide svelte-1qrpci6\"><!></div>"), root_3$62 = /* @__PURE__ */ from_html("<button></button>"), root_4$50 = /* @__PURE__ */ from_html("<div class=\"page-indicator svelte-1qrpci6\"></div>"), root_5$40 = /* @__PURE__ */ from_html("<div role=\"region\" tabindex=\"0\"><div class=\"book-viewport svelte-1qrpci6\"><!> <div class=\"pages-container svelte-1qrpci6\"></div> <!></div> <!></div>"), $$css$192 = {
5040
5040
  hash: "svelte-1qrpci6",
5041
- code: ".book.svelte-1qrpci6 {width:var(--book-width, 100%);background-color:var(--book-background, #ffffff);border-radius:var(--book-border-radius, var(--radius, 4px));border:var(--book-border, 1px solid #e0e0e0);outline:none;}\n\n /* role=\"region\" tabindex=\"0\" above makes this a real Tab stop (arrow keys\n then page it via handleKeyDown), so removing its outline unconditionally\n left a keyboard user with no visible sign it was focused. :focus-visible\n so tapping/clicking into the book to swipe doesn't show a ring. */.book.svelte-1qrpci6:focus-visible {outline:var(--book-focus-outline, 2px solid #2563eb);outline-offset:var(--book-focus-outline-offset, 2px);}.book-viewport.svelte-1qrpci6 {position:relative;display:flex;align-items:center;}.pages-container.svelte-1qrpci6 {position:relative;width:100%;height:var(--book-height, 400px);overflow:var(--book-overflow, hidden);}.page.svelte-1qrpci6 {width:100%;height:100%;}.page-slide.svelte-1qrpci6 {position:absolute;top:0;left:0;transition:transform var(--book-transition-duration, 0.3s) ease;}.page-fade.svelte-1qrpci6 {position:absolute;top:0;left:0;opacity:0;transition:opacity var(--book-transition-duration, 0.3s) ease;pointer-events:none;}.page-fade.page-active.svelte-1qrpci6 {opacity:1;pointer-events:auto;}.nav-button.svelte-1qrpci6 {display:flex;align-items:center;justify-content:center;--button-width: var(--book-nav-size, 36px);--button-height: var(--book-nav-size, 36px);--button-min-width: var(--book-nav-size, 36px);--button-background: var(--book-nav-background, rgba(0, 0, 0, 0.05));--button-border: none;--button-border-radius: var(--book-nav-border-radius, 50%);--button-padding: 0;--button-color: var(--book-nav-color, #333333);--button-hover-background: var(--book-nav-hover-background, rgba(0, 0, 0, 0.1));}.nav-disabled.svelte-1qrpci6 {opacity:var(--book-nav-disabled-opacity, 0.3);}.nav-button.svelte-1qrpci6 svg {width:18px;height:18px;}.nav-prev.svelte-1qrpci6 {margin-right:4px;}.nav-next.svelte-1qrpci6 {margin-left:4px;}.page-indicator.svelte-1qrpci6 {display:flex;justify-content:center;align-items:center;gap:var(--book-dot-gap, 8px);padding:var(--book-indicator-padding, 12px 0);}.dot.svelte-1qrpci6 {width:var(--book-dot-size, 8px);height:var(--book-dot-size, 8px);border-radius:var(--book-dot-border-radius, 50%);background-color:var(--book-dot-color, #cccccc);border:none;padding:0;cursor:pointer;transition:background-color var(--book-dot-transition-duration, var(--motion-duration, 0.2s))\n var(--book-dot-transition-easing, var(--motion-easing, ease));}.dot-active.svelte-1qrpci6 {background-color:var(--book-dot-active-color, #333333);}\n\n /* The page turn is a transform, which is the movement prefers-reduced-motion\n exists for. Both ends of the transition are meaningful on their own -- a page\n is either turned or not -- so removing it leaves no misleading frame, unlike\n the timed loaders in Button and ListItem. This block lives in the component's\n own <style> because that is the only stylesheet reaching inside the shadow\n root a custom-element consumer gets. */\n @media (prefers-reduced-motion: reduce) {.page.svelte-1qrpci6 {transition:none;}\n }"
5041
+ code: ".book.svelte-1qrpci6 {width:var(--book-width, 100%);background-color:var(--book-background, #ffffff);border-radius:var(--book-border-radius, var(--radius, 4px));border:var(--book-border, 1px solid #e0e0e0);outline:none;}\n\n /* role=\"region\" tabindex=\"0\" above makes this a real Tab stop (arrow keys\n then page it via handleKeyDown), so removing its outline unconditionally\n left a keyboard user with no visible sign it was focused. :focus-visible\n so tapping/clicking into the book to swipe doesn't show a ring. */.book.svelte-1qrpci6:focus-visible {outline:var(--book-focus-outline, 2px solid #2563eb);outline-offset:var(--book-focus-outline-offset, 2px);}.book-viewport.svelte-1qrpci6 {position:relative;display:flex;align-items:center;}.pages-container.svelte-1qrpci6 {position:relative;width:100%;height:var(--book-height, 400px);overflow:var(--book-overflow, hidden);}.page.svelte-1qrpci6 {width:100%;height:100%;}.page-slide.svelte-1qrpci6 {position:absolute;top:0;left:0;transition:transform var(--book-transition-duration, var(--motion-duration, 0.3s))\n var(--book-transition-easing, var(--motion-easing, ease));}.page-fade.svelte-1qrpci6 {position:absolute;top:0;left:0;opacity:0;transition:opacity var(--book-transition-duration, var(--motion-duration, 0.3s))\n var(--book-transition-easing, var(--motion-easing, ease));pointer-events:none;}.page-fade.page-active.svelte-1qrpci6 {opacity:1;pointer-events:auto;}.nav-button.svelte-1qrpci6 {display:flex;align-items:center;justify-content:center;--button-width: var(--book-nav-size, 36px);--button-height: var(--book-nav-size, 36px);--button-min-width: var(--book-nav-size, 36px);--button-background: var(--book-nav-background, rgba(0, 0, 0, 0.05));--button-border: none;--button-border-radius: var(--book-nav-border-radius, 50%);--button-padding: 0;--button-color: var(--book-nav-color, #333333);--button-hover-background: var(--book-nav-hover-background, rgba(0, 0, 0, 0.1));}.nav-disabled.svelte-1qrpci6 {opacity:var(--book-nav-disabled-opacity, 0.3);}.nav-button.svelte-1qrpci6 svg {width:18px;height:18px;}.nav-prev.svelte-1qrpci6 {margin-right:4px;}.nav-next.svelte-1qrpci6 {margin-left:4px;}.page-indicator.svelte-1qrpci6 {display:flex;justify-content:center;align-items:center;gap:var(--book-dot-gap, 8px);padding:var(--book-indicator-padding, 12px 0);}.dot.svelte-1qrpci6 {width:var(--book-dot-size, 8px);height:var(--book-dot-size, 8px);border-radius:var(--book-dot-border-radius, 50%);background-color:var(--book-dot-color, #cccccc);border:none;padding:0;cursor:pointer;transition:background-color\n var(--book-dot-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--book-dot-transition-easing, var(--motion-easing, ease));}.dot-active.svelte-1qrpci6 {background-color:var(--book-dot-active-color, #333333);}\n\n /* The page turn is a transform, which is the movement prefers-reduced-motion\n exists for. Both ends of the transition are meaningful on their own -- a page\n is either turned or not -- so removing it leaves no misleading frame, unlike\n the timed loaders in Button and ListItem. This block lives in the component's\n own <style> because that is the only stylesheet reaching inside the shadow\n root a custom-element consumer gets. */\n @media (prefers-reduced-motion: reduce) {.page.svelte-1qrpci6 {transition:none;}\n }"
5042
5042
  };
5043
5043
  function Book(e, t) {
5044
5044
  push(t, !0), append_styles$1(e, $$css$192);
@@ -6373,7 +6373,7 @@ function describeField(e, t) {
6373
6373
  //#region src/lib/assets/checkmark.svg?raw
6374
6374
  var checkmark_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n</svg>\n", minus_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"></line>\n</svg>\n", root$100 = /* @__PURE__ */ from_html("<span class=\"icon svelte-f1in4m\"></span>"), root_1$89 = /* @__PURE__ */ from_html("<span class=\"icon dash svelte-f1in4m\"></span>"), root_2$68 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-f1in4m\"> </div>"), root_3$59 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-f1in4m\"> </div>"), root_4$48 = /* @__PURE__ */ from_html("<label><input type=\"checkbox\" class=\"native-checkbox svelte-f1in4m\" aria-hidden=\"true\"/> <span><!> <!></span> <span class=\"label svelte-f1in4m\"> </span></label> <!> <!>", 1), $$css$184 = {
6375
6375
  hash: "svelte-f1in4m",
6376
- code: ".container.svelte-f1in4m {display:var(--checkbox-container-display, inline-flex);align-items:var(--checkbox-container-align-items, center);gap:var(--checkbox-container-gap, 8px);cursor:var(--checkbox-container-cursor, pointer);}.container.disabled.svelte-f1in4m {opacity:var(--checkbox-disabled-opacity, 0.4);cursor:var(--checkbox-disabled-cursor, not-allowed);}.native-checkbox.svelte-f1in4m {position:absolute;opacity:0;width:0;height:0;pointer-events:none;}.box.svelte-f1in4m {display:inline-flex;align-items:center;justify-content:center;width:var(--checkbox-size, 20px);height:var(--checkbox-size, 20px);border:var(--checkbox-border, 2px solid #757575);border-radius:var(--checkbox-border-radius, var(--radius, 4px));background-color:var(--checkbox-background, transparent);transition:background-color var(--checkbox-transition, 0.2s),\n border var(--checkbox-transition, 0.2s);flex-shrink:0;}.box.svelte-f1in4m:focus-visible {outline:none;box-shadow:var(--checkbox-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.container.svelte-f1in4m:not(.disabled) .box:where(.svelte-f1in4m):hover {border-color:var(--checkbox-hover-border-color, #212121);}.box.checked.svelte-f1in4m {background-color:var(--checkbox-checked-background, #2196f3);border:var(--checkbox-checked-border, 2px solid #2196f3);}.box.indeterminate.svelte-f1in4m {background-color:var(--checkbox-indeterminate-background, #2196f3);border:var(--checkbox-indeterminate-border, 2px solid #2196f3);}.icon.svelte-f1in4m {display:inline-flex;align-items:center;justify-content:center;width:var(--checkbox-icon-size, 14px);height:var(--checkbox-icon-size, 14px);color:var(--checkbox-checkmark-color, white);}.icon.svelte-f1in4m svg {width:100%;height:100%;}.icon.dash.svelte-f1in4m {color:var(--checkbox-dash-color, white);}.label.svelte-f1in4m {font-size:var(--checkbox-label-font-size, 14px);font-weight:var(--checkbox-label-font-weight, 400);color:var(--checkbox-label-color, #212121);}.field-error.svelte-f1in4m {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-f1in4m {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
6376
+ code: ".container.svelte-f1in4m {display:var(--checkbox-container-display, inline-flex);align-items:var(--checkbox-container-align-items, center);gap:var(--checkbox-container-gap, 8px);cursor:var(--checkbox-container-cursor, pointer);}.container.disabled.svelte-f1in4m {opacity:var(--checkbox-disabled-opacity, 0.4);cursor:var(--checkbox-disabled-cursor, not-allowed);}.native-checkbox.svelte-f1in4m {position:absolute;opacity:0;width:0;height:0;pointer-events:none;}.box.svelte-f1in4m {display:inline-flex;align-items:center;justify-content:center;width:var(--checkbox-size, 20px);height:var(--checkbox-size, 20px);border:var(--checkbox-border, 2px solid #757575);border-radius:var(--checkbox-border-radius, var(--radius, 4px));background-color:var(--checkbox-background, transparent);\n /* --checkbox-transition wraps the WHOLE value (matching Choicebox/Toggle's\n own \"-transition\" tokens), not just the duration -- a consumer filling it\n with e.g. \"0.3s ease-in-out\" replaces the entire expression cleanly. Putting\n it in only the duration slot with a separate -easing term appended after\n would make that same override produce an invalid transition (two\n timing-function components), dropping the whole declaration to its\n initial value instead of just using a different timing. */transition:var(\n --checkbox-transition,\n background-color\n var(--checkbox-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--checkbox-transition-easing, var(--motion-easing, ease)),\n border var(--checkbox-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--checkbox-transition-easing, var(--motion-easing, ease))\n );flex-shrink:0;}.box.svelte-f1in4m:focus-visible {outline:none;box-shadow:var(--checkbox-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.container.svelte-f1in4m:not(.disabled) .box:where(.svelte-f1in4m):hover {border-color:var(--checkbox-hover-border-color, #212121);}.box.checked.svelte-f1in4m {background-color:var(--checkbox-checked-background, #2196f3);border:var(--checkbox-checked-border, 2px solid #2196f3);}.box.indeterminate.svelte-f1in4m {background-color:var(--checkbox-indeterminate-background, #2196f3);border:var(--checkbox-indeterminate-border, 2px solid #2196f3);}.icon.svelte-f1in4m {display:inline-flex;align-items:center;justify-content:center;width:var(--checkbox-icon-size, 14px);height:var(--checkbox-icon-size, 14px);color:var(--checkbox-checkmark-color, white);}.icon.svelte-f1in4m svg {width:100%;height:100%;}.icon.dash.svelte-f1in4m {color:var(--checkbox-dash-color, white);}.label.svelte-f1in4m {font-size:var(--checkbox-label-font-size, 14px);font-weight:var(--checkbox-label-font-weight, 400);color:var(--checkbox-label-color, #212121);}.field-error.svelte-f1in4m {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-f1in4m {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
6377
6377
  };
6378
6378
  function Checkbox(e, t) {
6379
6379
  let n = props_id();
@@ -8162,7 +8162,7 @@ function closestInEventPath(e, t) {
8162
8162
  //#region src/lib/Slider/Slider.svelte
8163
8163
  var root$95 = /* @__PURE__ */ from_html("<span class=\"slider-value svelte-17e64va\"> </span>"), root_1$84 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-17e64va\"> </div>"), root_2$64 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-17e64va\"> </div>"), root_3$56 = /* @__PURE__ */ from_html("<div><input type=\"range\" class=\"slider-input svelte-17e64va\"/> <!></div> <!> <!>", 1), $$css$178 = {
8164
8164
  hash: "svelte-17e64va",
8165
- code: ".slider-container.svelte-17e64va {display:flex;align-items:center;gap:12px;width:var(--slider-container-width, 100%);padding:var(--slider-container-padding, 4px 0);}.slider-container.disabled.svelte-17e64va {opacity:var(--slider-disabled-opacity, 0.5);cursor:var(--slider-disabled-cursor, not-allowed);}.slider-input.svelte-17e64va {-webkit-appearance:none;appearance:none;width:100%;height:var(--slider-track-height, 6px);border-radius:var(--slider-track-border-radius, var(--radius, 4px));background:var(\n --slider-track,\n linear-gradient(\n to right,\n var(--slider-track-active-color, #2196f3) 0%,\n var(--slider-track-active-color, #2196f3) var(--slider-fill-percent, 0%),\n var(--slider-track-background, #e0e0e0) var(--slider-fill-percent, 0%),\n var(--slider-track-background, #e0e0e0) 100%\n )\n );outline:none;transition:var(--slider-transition, background 0.2s ease);cursor:pointer;}.slider-container.disabled.svelte-17e64va .slider-input:where(.svelte-17e64va) {cursor:var(--slider-disabled-cursor, not-allowed);pointer-events:none;}.slider-input.svelte-17e64va::-webkit-slider-thumb {-webkit-appearance:none;appearance:none;width:var(--slider-thumb-size, 20px);height:var(--slider-thumb-size, 20px);border-radius:var(--slider-thumb-border-radius, 50%);background:var(--slider-thumb-background, #ffffff);border:var(--slider-thumb-border, 2px solid #2196f3);box-shadow:var(--slider-thumb-shadow, 0 1px 3px rgba(0, 0, 0, 0.2));opacity:var(--slider-thumb-opacity, 1);cursor:pointer;transition:transform var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))\n var(--slider-thumb-transition-easing, var(--motion-easing, ease)),\n opacity var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))\n var(--slider-thumb-transition-easing, var(--motion-easing, ease));}.slider-input.svelte-17e64va::-moz-range-thumb {width:var(--slider-thumb-size, 20px);height:var(--slider-thumb-size, 20px);border-radius:var(--slider-thumb-border-radius, 50%);background:var(--slider-thumb-background, #ffffff);border:var(--slider-thumb-border, 2px solid #2196f3);box-shadow:var(--slider-thumb-shadow, 0 1px 3px rgba(0, 0, 0, 0.2));opacity:var(--slider-thumb-opacity, 1);cursor:pointer;transition:transform var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))\n var(--slider-thumb-transition-easing, var(--motion-easing, ease)),\n opacity var(--slider-thumb-transition-duration, var(--motion-duration, 0.15s))\n var(--slider-thumb-transition-easing, var(--motion-easing, ease));}.slider-input.svelte-17e64va:hover::-webkit-slider-thumb {transform:scale(var(--slider-thumb-hover-scale, 1.15));opacity:var(--slider-thumb-hover-opacity, var(--slider-thumb-opacity, 1));}.slider-input.svelte-17e64va:hover::-moz-range-thumb {transform:scale(var(--slider-thumb-hover-scale, 1.15));opacity:var(--slider-thumb-hover-opacity, var(--slider-thumb-opacity, 1));}.slider-input.svelte-17e64va:focus-visible::-webkit-slider-thumb {outline:var(--slider-focus-ring, 2px solid #2196f3);outline-offset:2px;}.slider-input.svelte-17e64va:focus-visible::-moz-range-thumb {outline:var(--slider-focus-ring, 2px solid #2196f3);outline-offset:2px;}.slider-input.svelte-17e64va::-moz-range-track {height:var(--slider-track-height, 6px);border-radius:var(--slider-track-border-radius, var(--radius, 4px));background:transparent;}.slider-value.svelte-17e64va {font-size:var(--slider-value-font-size, 14px);font-weight:var(--slider-value-font-weight, 500);color:var(--slider-value-color, #333333);white-space:nowrap;}.field-error.svelte-17e64va {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-17e64va {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
8165
+ code: ".slider-container.svelte-17e64va {display:flex;align-items:center;gap:12px;width:var(--slider-container-width, 100%);padding:var(--slider-container-padding, 4px 0);}.slider-container.disabled.svelte-17e64va {opacity:var(--slider-disabled-opacity, 0.5);cursor:var(--slider-disabled-cursor, not-allowed);}.slider-input.svelte-17e64va {-webkit-appearance:none;appearance:none;width:100%;height:var(--slider-track-height, 6px);border-radius:var(--slider-track-border-radius, var(--radius, 4px));background:var(\n --slider-track,\n linear-gradient(\n to right,\n var(--slider-track-active-color, #2196f3) 0%,\n var(--slider-track-active-color, #2196f3) var(--slider-fill-percent, 0%),\n var(--slider-track-background, #e0e0e0) var(--slider-fill-percent, 0%),\n var(--slider-track-background, #e0e0e0) 100%\n )\n );outline:none;transition:var(\n --slider-transition,\n background\n var(--slider-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--slider-transition-easing, var(--motion-easing, ease))\n );cursor:pointer;}.slider-container.disabled.svelte-17e64va .slider-input:where(.svelte-17e64va) {cursor:var(--slider-disabled-cursor, not-allowed);pointer-events:none;}.slider-input.svelte-17e64va::-webkit-slider-thumb {-webkit-appearance:none;appearance:none;width:var(--slider-thumb-size, 20px);height:var(--slider-thumb-size, 20px);border-radius:var(--slider-thumb-border-radius, 50%);background:var(--slider-thumb-background, #ffffff);border:var(--slider-thumb-border, 2px solid #2196f3);box-shadow:var(--slider-thumb-shadow, 0 1px 3px rgba(0, 0, 0, 0.2));opacity:var(--slider-thumb-opacity, 1);cursor:pointer;transition:transform\n var(\n --slider-thumb-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--slider-thumb-transition-easing, var(--motion-easing, ease)),\n opacity\n var(\n --slider-thumb-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--slider-thumb-transition-easing, var(--motion-easing, ease));}.slider-input.svelte-17e64va::-moz-range-thumb {width:var(--slider-thumb-size, 20px);height:var(--slider-thumb-size, 20px);border-radius:var(--slider-thumb-border-radius, 50%);background:var(--slider-thumb-background, #ffffff);border:var(--slider-thumb-border, 2px solid #2196f3);box-shadow:var(--slider-thumb-shadow, 0 1px 3px rgba(0, 0, 0, 0.2));opacity:var(--slider-thumb-opacity, 1);cursor:pointer;transition:transform\n var(\n --slider-thumb-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--slider-thumb-transition-easing, var(--motion-easing, ease)),\n opacity\n var(\n --slider-thumb-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--slider-thumb-transition-easing, var(--motion-easing, ease));}.slider-input.svelte-17e64va:hover::-webkit-slider-thumb {transform:scale(var(--slider-thumb-hover-scale, 1.15));opacity:var(--slider-thumb-hover-opacity, var(--slider-thumb-opacity, 1));}.slider-input.svelte-17e64va:hover::-moz-range-thumb {transform:scale(var(--slider-thumb-hover-scale, 1.15));opacity:var(--slider-thumb-hover-opacity, var(--slider-thumb-opacity, 1));}.slider-input.svelte-17e64va:focus-visible::-webkit-slider-thumb {outline:var(--slider-focus-ring, 2px solid #2196f3);outline-offset:2px;}.slider-input.svelte-17e64va:focus-visible::-moz-range-thumb {outline:var(--slider-focus-ring, 2px solid #2196f3);outline-offset:2px;}.slider-input.svelte-17e64va::-moz-range-track {height:var(--slider-track-height, 6px);border-radius:var(--slider-track-border-radius, var(--radius, 4px));background:transparent;}.slider-value.svelte-17e64va {font-size:var(--slider-value-font-size, 14px);font-weight:var(--slider-value-font-weight, 500);color:var(--slider-value-color, #333333);white-space:nowrap;}.field-error.svelte-17e64va {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-17e64va {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
8166
8166
  };
8167
8167
  function Slider(e, t) {
8168
8168
  let n = props_id();
@@ -9102,7 +9102,7 @@ customElements.define("sui-color-picker", create_custom_element(ColorPicker_wc,
9102
9102
  //#region src/lib/Combobox/Combobox.svelte
9103
9103
  var root$92 = /* @__PURE__ */ from_html("<div class=\"combobox-input-prefix svelte-178p70i\"><!></div>"), root_1$81 = /* @__PURE__ */ from_html("<div class=\"combobox-input-suffix svelte-178p70i\"><!></div>"), root_2$61 = /* @__PURE__ */ from_html("<div class=\"combobox-dropdown-header svelte-178p70i\"><!></div>"), root_3$53 = /* @__PURE__ */ from_html("<div class=\"combobox-limit svelte-178p70i\" role=\"alert\"> </div>"), root_4$44 = /* @__PURE__ */ from_html("<div class=\"combobox-empty svelte-178p70i\"> </div>"), root_5$36 = /* @__PURE__ */ from_html("<div role=\"option\" tabindex=\"-1\"><!></div>"), root_6$31 = /* @__PURE__ */ from_html("<div role=\"option\" aria-selected=\"false\" tabindex=\"-1\"><span class=\"combobox-create-icon svelte-178p70i\" aria-hidden=\"true\"><svg viewBox=\"0 0 20 20\" width=\"14\" height=\"14\" fill=\"none\"><path d=\"M10 4v12M4 10h12\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\"></path></svg></span> </div>"), root_7$28 = /* @__PURE__ */ from_html("<span class=\"combobox-action-icon svelte-178p70i\" aria-hidden=\"true\"><!></span>"), root_8$23 = /* @__PURE__ */ from_html("<div role=\"option\" aria-selected=\"false\" tabindex=\"-1\"><!> </div>"), root_9$19 = /* @__PURE__ */ from_html("<div class=\"combobox-dropdown-footer svelte-178p70i\"><!></div>"), root_10$16 = /* @__PURE__ */ from_html("<div class=\"combobox-dropdown svelte-178p70i\" role=\"listbox\"><!> <!> <!> <!> <!></div>"), root_11$14 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-178p70i\"> </div>"), root_12$13 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-178p70i\"> </div>"), root_13$11 = /* @__PURE__ */ from_html("<div><div><!> <!> <div class=\"combobox-input svelte-178p70i\"><!></div> <!></div> <!></div> <!> <!>", 1), $$css$174 = {
9104
9104
  hash: "svelte-178p70i",
9105
- code: ".field-error.svelte-178p70i {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-178p70i {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}.combobox.svelte-178p70i {position:relative;width:var(--combobox-width, 100%);font-family:var(--combobox-font-family, inherit);font-size:var(--combobox-font-size, 14px);color:var(--combobox-color, #333333);}.combobox.disabled.svelte-178p70i {opacity:var(--combobox-disabled-opacity, 0.5);cursor:var(--combobox-disabled-cursor, not-allowed);pointer-events:none;}.combobox-input-wrapper.svelte-178p70i {display:flex;align-items:center;background:var(--combobox-input-background, #ffffff);border:var(--combobox-input-border, 1px solid #cccccc);border-radius:var(--combobox-input-border-radius, var(--radius, 4px));transition:var(--combobox-input-transition, border-color 0.15s, box-shadow 0.15s);}\n\n /* Multi-select control: pills wrap above the typeahead input. */.combobox-input-wrapper.multiple.svelte-178p70i {flex-wrap:wrap;gap:var(--combobox-pill-gap, 4px);padding:var(--combobox-multiple-padding, 4px 6px);cursor:text;}.combobox-input-wrapper.svelte-178p70i:hover {border-color:var(--combobox-input-hover-border-color, #999999);}.combobox-input-wrapper.svelte-178p70i:focus-within {border-color:var(--combobox-input-focus-border-color, #2563eb);box-shadow:var(--combobox-input-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.combobox-input-prefix.svelte-178p70i {display:flex;align-items:center;padding-left:var(--combobox-input-prefix-padding, 8px);flex-shrink:0;}.combobox-input-suffix.svelte-178p70i {display:flex;align-items:center;padding-right:var(--combobox-input-suffix-padding, 8px);flex-shrink:0;}.combobox-input.svelte-178p70i {flex:1;min-width:0;--input-border: none;--input-focus-border: none;--input-box-shadow: none;--input-margin: 0;--input-width: 100%;--input-padding: var(--combobox-input-padding, 8px 12px);--input-background: transparent;--input-font-size: inherit;--input-font-family: inherit;--input-font-weight: inherit;--input-text-color: inherit;--input-radius: 0;}.combobox-input-wrapper.multiple.svelte-178p70i .combobox-input:where(.svelte-178p70i) {flex:1 1 60px;min-width:60px;--input-padding: var(--combobox-multiple-input-padding, 2px 4px);}.combobox-input.svelte-178p70i::placeholder {color:var(--combobox-placeholder-color, #999999);}.combobox-dropdown.svelte-178p70i {position:absolute;top:var(--combobox-dropdown-top, 100%);left:var(--combobox-dropdown-left, 0);right:var(--combobox-dropdown-right, 0);margin-top:var(--combobox-dropdown-gap, 4px);background:var(--combobox-dropdown-background, #ffffff);border:var(--combobox-dropdown-border, 1px solid #cccccc);border-radius:var(--combobox-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--combobox-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--combobox-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--combobox-dropdown-z-index, 10);padding:var(--combobox-dropdown-padding, 0);}.combobox-option.svelte-178p70i {display:flex;align-items:center;gap:var(--combobox-option-gap, 8px);padding:var(--combobox-option-padding, 8px 12px);color:var(--combobox-option-color, #333333);font-size:var(--combobox-option-font-size, inherit);font-weight:var(--combobox-option-font-weight, inherit);cursor:pointer;transition:background var(--combobox-option-transition-duration, var(--motion-duration, 0.1s))\n var(--combobox-option-transition-easing, var(--motion-easing, ease));}.combobox-option.svelte-178p70i:hover,\n .combobox-option.highlighted.svelte-178p70i {background:var(--combobox-option-hover-background, #f0f0f0);color:var(--combobox-option-hover-color, var(--combobox-option-color, #333333));}.combobox-option.selected.svelte-178p70i {background:var(--combobox-option-selected-background, #e8f0fe);color:var(--combobox-option-selected-color, var(--combobox-option-color, #333333));font-weight:var(\n --combobox-option-selected-font-weight,\n var(--combobox-option-font-weight, inherit)\n );}.combobox-option.selected.highlighted.svelte-178p70i {background:var(\n --combobox-option-selected-hover-background,\n var(--combobox-option-selected-background, #e8f0fe)\n );}.combobox-option-disabled.svelte-178p70i {opacity:var(--combobox-option-disabled-opacity, 0.4);cursor:var(--combobox-option-disabled-cursor, not-allowed);pointer-events:none;}.combobox-create.svelte-178p70i {color:var(--combobox-create-color, #2563eb);}.combobox-action.svelte-178p70i {color:var(--combobox-action-color, #374151);}.combobox-option.with-divider.svelte-178p70i {border-top:var(--combobox-divider, 1px solid #e5e7eb);}.combobox-create-icon.svelte-178p70i,\n .combobox-action-icon.svelte-178p70i {display:inline-flex;align-items:center;flex-shrink:0;}.combobox-action-icon.svelte-178p70i svg {width:14px;height:14px;}.combobox-limit.svelte-178p70i {display:flex;align-items:center;gap:6px;padding:var(--combobox-limit-padding, 8px 12px);font-size:var(--combobox-limit-font-size, 13px);font-weight:500;color:var(--combobox-limit-color, #b45309);background:var(--combobox-limit-background, #fffbeb);}.combobox-dropdown-header.svelte-178p70i {border-bottom:var(--combobox-dropdown-header-border, none);padding:var(--combobox-dropdown-header-padding, 0);}.combobox-dropdown-footer.svelte-178p70i {border-top:var(--combobox-dropdown-footer-border, none);padding:var(--combobox-dropdown-footer-padding, 0);}.combobox-empty.svelte-178p70i {padding:var(--combobox-empty-padding, 8px 12px);color:var(--combobox-empty-color, #999999);font-style:var(--combobox-empty-font-style, italic);}"
9105
+ code: ".field-error.svelte-178p70i {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-178p70i {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}.combobox.svelte-178p70i {position:relative;width:var(--combobox-width, 100%);font-family:var(--combobox-font-family, inherit);font-size:var(--combobox-font-size, 14px);color:var(--combobox-color, #333333);}.combobox.disabled.svelte-178p70i {opacity:var(--combobox-disabled-opacity, 0.5);cursor:var(--combobox-disabled-cursor, not-allowed);pointer-events:none;}.combobox-input-wrapper.svelte-178p70i {display:flex;align-items:center;background:var(--combobox-input-background, #ffffff);border:var(--combobox-input-border, 1px solid #cccccc);border-radius:var(--combobox-input-border-radius, var(--radius, 4px));transition:var(\n --combobox-input-transition,\n border-color\n var(\n --combobox-input-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--combobox-input-transition-easing, var(--motion-easing, ease)),\n box-shadow\n var(\n --combobox-input-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--combobox-input-transition-easing, var(--motion-easing, ease))\n );}\n\n /* Multi-select control: pills wrap above the typeahead input. */.combobox-input-wrapper.multiple.svelte-178p70i {flex-wrap:wrap;gap:var(--combobox-pill-gap, 4px);padding:var(--combobox-multiple-padding, 4px 6px);cursor:text;}.combobox-input-wrapper.svelte-178p70i:hover {border-color:var(--combobox-input-hover-border-color, #999999);}.combobox-input-wrapper.svelte-178p70i:focus-within {border-color:var(--combobox-input-focus-border-color, #2563eb);box-shadow:var(--combobox-input-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.combobox-input-prefix.svelte-178p70i {display:flex;align-items:center;padding-left:var(--combobox-input-prefix-padding, 8px);flex-shrink:0;}.combobox-input-suffix.svelte-178p70i {display:flex;align-items:center;padding-right:var(--combobox-input-suffix-padding, 8px);flex-shrink:0;}.combobox-input.svelte-178p70i {flex:1;min-width:0;--input-border: none;--input-focus-border: none;--input-box-shadow: none;--input-margin: 0;--input-width: 100%;--input-padding: var(--combobox-input-padding, 8px 12px);--input-background: transparent;--input-font-size: inherit;--input-font-family: inherit;--input-font-weight: inherit;--input-text-color: inherit;--input-radius: 0;}.combobox-input-wrapper.multiple.svelte-178p70i .combobox-input:where(.svelte-178p70i) {flex:1 1 60px;min-width:60px;--input-padding: var(--combobox-multiple-input-padding, 2px 4px);}.combobox-input.svelte-178p70i::placeholder {color:var(--combobox-placeholder-color, #999999);}.combobox-dropdown.svelte-178p70i {position:absolute;top:var(--combobox-dropdown-top, 100%);left:var(--combobox-dropdown-left, 0);right:var(--combobox-dropdown-right, 0);margin-top:var(--combobox-dropdown-gap, 4px);background:var(--combobox-dropdown-background, #ffffff);border:var(--combobox-dropdown-border, 1px solid #cccccc);border-radius:var(--combobox-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--combobox-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--combobox-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--combobox-dropdown-z-index, 10);padding:var(--combobox-dropdown-padding, 0);}.combobox-option.svelte-178p70i {display:flex;align-items:center;gap:var(--combobox-option-gap, 8px);padding:var(--combobox-option-padding, 8px 12px);color:var(--combobox-option-color, #333333);font-size:var(--combobox-option-font-size, inherit);font-weight:var(--combobox-option-font-weight, inherit);cursor:pointer;transition:background var(--combobox-option-transition-duration, var(--motion-duration, 0.1s))\n var(--combobox-option-transition-easing, var(--motion-easing, ease));}.combobox-option.svelte-178p70i:hover,\n .combobox-option.highlighted.svelte-178p70i {background:var(--combobox-option-hover-background, #f0f0f0);color:var(--combobox-option-hover-color, var(--combobox-option-color, #333333));}.combobox-option.selected.svelte-178p70i {background:var(--combobox-option-selected-background, #e8f0fe);color:var(--combobox-option-selected-color, var(--combobox-option-color, #333333));font-weight:var(\n --combobox-option-selected-font-weight,\n var(--combobox-option-font-weight, inherit)\n );}.combobox-option.selected.highlighted.svelte-178p70i {background:var(\n --combobox-option-selected-hover-background,\n var(--combobox-option-selected-background, #e8f0fe)\n );}.combobox-option-disabled.svelte-178p70i {opacity:var(--combobox-option-disabled-opacity, 0.4);cursor:var(--combobox-option-disabled-cursor, not-allowed);pointer-events:none;}.combobox-create.svelte-178p70i {color:var(--combobox-create-color, #2563eb);}.combobox-action.svelte-178p70i {color:var(--combobox-action-color, #374151);}.combobox-option.with-divider.svelte-178p70i {border-top:var(--combobox-divider, 1px solid #e5e7eb);}.combobox-create-icon.svelte-178p70i,\n .combobox-action-icon.svelte-178p70i {display:inline-flex;align-items:center;flex-shrink:0;}.combobox-action-icon.svelte-178p70i svg {width:14px;height:14px;}.combobox-limit.svelte-178p70i {display:flex;align-items:center;gap:6px;padding:var(--combobox-limit-padding, 8px 12px);font-size:var(--combobox-limit-font-size, 13px);font-weight:500;color:var(--combobox-limit-color, #b45309);background:var(--combobox-limit-background, #fffbeb);}.combobox-dropdown-header.svelte-178p70i {border-bottom:var(--combobox-dropdown-header-border, none);padding:var(--combobox-dropdown-header-padding, 0);}.combobox-dropdown-footer.svelte-178p70i {border-top:var(--combobox-dropdown-footer-border, none);padding:var(--combobox-dropdown-footer-padding, 0);}.combobox-empty.svelte-178p70i {padding:var(--combobox-empty-padding, 8px 12px);color:var(--combobox-empty-color, #999999);font-style:var(--combobox-empty-font-style, italic);}"
9106
9106
  };
9107
9107
  function Combobox(e, t) {
9108
9108
  let n = props_id();
@@ -10250,6 +10250,114 @@ customElements.define("sui-combobox", create_custom_element(Combobox_wc, {
10250
10250
  innerControlIsNotTheValue: !0
10251
10251
  })));
10252
10252
  //#endregion
10253
+ //#region node_modules/.pnpm/svelte@5.56.3_@typescript-eslint+types@8.60.1/node_modules/svelte/src/easing/index.js
10254
+ function linear$1(e) {
10255
+ return e;
10256
+ }
10257
+ function cubicOut(e) {
10258
+ let t = e - 1;
10259
+ return t * t * t + 1;
10260
+ }
10261
+ //#endregion
10262
+ //#region src/lib/reduced-motion.svelte.ts
10263
+ var query = typeof window < "u" && typeof window.matchMedia == "function" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null, current = /* @__PURE__ */ state(proxy(query?.matches ?? !1));
10264
+ query?.addEventListener("change", (e) => {
10265
+ set(current, e.matches, !0);
10266
+ });
10267
+ var reducedMotion = { get current() {
10268
+ return get(current);
10269
+ } }, parseCssTime = (e) => {
10270
+ let t = e.trim();
10271
+ if (t.endsWith("ms")) {
10272
+ let e = Number.parseFloat(t);
10273
+ return Number.isFinite(e) ? e : null;
10274
+ }
10275
+ if (t.endsWith("s")) {
10276
+ let e = Number.parseFloat(t);
10277
+ return Number.isFinite(e) ? e * 1e3 : null;
10278
+ }
10279
+ return null;
10280
+ }, parseCssLength = (e) => {
10281
+ let t = e.trim();
10282
+ if (!t.endsWith("px")) return null;
10283
+ let n = Number.parseFloat(t);
10284
+ return Number.isFinite(n) ? n : null;
10285
+ }, CSS_KEYWORD_EASINGS = {
10286
+ ease: [
10287
+ .25,
10288
+ .1,
10289
+ .25,
10290
+ 1
10291
+ ],
10292
+ "ease-in": [
10293
+ .42,
10294
+ 0,
10295
+ 1,
10296
+ 1
10297
+ ],
10298
+ "ease-out": [
10299
+ 0,
10300
+ 0,
10301
+ .58,
10302
+ 1
10303
+ ],
10304
+ "ease-in-out": [
10305
+ .42,
10306
+ 0,
10307
+ .58,
10308
+ 1
10309
+ ]
10310
+ };
10311
+ function cubicBezierEasing(e, t, n, i) {
10312
+ let a = (e, t) => 1 - 3 * t + 3 * e, o = (e, t) => 3 * t - 6 * e, s = (e) => 3 * e, c = (e, t, n) => ((a(t, n) * e + o(t, n)) * e + s(t)) * e, l = (e, t, n) => 3 * a(t, n) * e * e + 2 * o(t, n) * e + s(t), u = (t) => {
10313
+ let i = t;
10314
+ for (let a = 0; a < 8; a += 1) {
10315
+ let a = l(i, e, n);
10316
+ if (Math.abs(a) < 1e-6) break;
10317
+ i -= (c(i, e, n) - t) / a;
10318
+ }
10319
+ return i;
10320
+ };
10321
+ return (e) => e <= 0 ? 0 : e >= 1 ? 1 : c(u(e), t, i);
10322
+ }
10323
+ var BEZIER_PATTERN = /^cubic-bezier\(\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*,\s*(-?[\d.]+)\s*\)$/;
10324
+ function parseCssEasing(e) {
10325
+ let t = e.trim();
10326
+ if (t === "") return null;
10327
+ if (t === "linear") return (e) => e;
10328
+ let n = CSS_KEYWORD_EASINGS[t];
10329
+ if (n) return cubicBezierEasing(...n);
10330
+ let i = BEZIER_PATTERN.exec(t);
10331
+ if (!i) return null;
10332
+ let [a, o, s, c] = i.slice(1).map(Number.parseFloat);
10333
+ return a < 0 || a > 1 || s < 0 || s > 1 ? null : cubicBezierEasing(a, o, s, c);
10334
+ }
10335
+ var resolveToken = (e, t) => {
10336
+ for (let n of t) {
10337
+ let t = e.getPropertyValue(n).trim();
10338
+ if (t !== "") return t;
10339
+ }
10340
+ return null;
10341
+ };
10342
+ function tokenizedFly(e, t) {
10343
+ let n = getComputedStyle(e), i = resolveToken(n, t.durationTokens), a = (i === null ? null : parseCssTime(i)) ?? t.fallbackDuration, o = t.x ?? 0, s = t.y ?? 0;
10344
+ if (t.distanceTokens) {
10345
+ let e = resolveToken(n, t.distanceTokens), i = (e === null ? null : parseCssLength(e)) ?? t.fallbackDistance ?? Math.max(Math.abs(o), Math.abs(s)), a = Math.abs(i);
10346
+ o = o === 0 ? 0 : Math.sign(o) * a, s = s === 0 ? 0 : Math.sign(s) * a;
10347
+ }
10348
+ let c = t.easingTokens ? resolveToken(n, t.easingTokens) : null, l = (c === null ? null : parseCssEasing(c)) ?? t.easing ?? cubicOut;
10349
+ reducedMotion.current && (a = .001);
10350
+ let u = +n.opacity, f = n.transform === "none" ? "" : n.transform;
10351
+ return {
10352
+ duration: a,
10353
+ easing: l,
10354
+ css: (e) => `
10355
+ transform: ${f} translate(${(1 - e) * o}px, ${(1 - e) * s}px);
10356
+ opacity: ${u * e};
10357
+ `
10358
+ };
10359
+ }
10360
+ //#endregion
10253
10361
  //#region src/lib/assets/search.svg?raw
10254
10362
  var search_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n</svg>\n", root$90 = /* @__PURE__ */ from_html("<span class=\"command-menu-search-icon svelte-rk55q\"></span>"), root_1$80 = /* @__PURE__ */ from_html("<div class=\"command-menu-empty svelte-rk55q\"> </div>"), root_2$60 = /* @__PURE__ */ from_html("<div class=\"command-menu-group-heading svelte-rk55q\"> </div>"), root_3$52 = /* @__PURE__ */ from_html("<span class=\"command-menu-item-icon svelte-rk55q\"><!></span>"), root_4$43 = /* @__PURE__ */ from_html("<div class=\"command-menu-item-icon-img-wrapper svelte-rk55q\"><!></div>"), root_5$35 = /* @__PURE__ */ from_html("<kbd class=\"command-menu-kbd svelte-rk55q\"> </kbd>"), root_6$30 = /* @__PURE__ */ from_html("<span class=\"command-menu-item-shortcut svelte-rk55q\"></span>"), root_7$27 = /* @__PURE__ */ from_html("<button type=\"button\" role=\"option\" tabindex=\"-1\"><!> <span class=\"command-menu-item-label svelte-rk55q\"> </span> <!></button>"), root_8$22 = /* @__PURE__ */ from_html("<!> <!>", 1), root_9$18 = /* @__PURE__ */ from_html("<div role=\"dialog\" aria-modal=\"true\" aria-label=\"Command menu\" tabindex=\"-1\"><div class=\"command-menu-dialog svelte-rk55q\"><div class=\"command-menu-input-wrapper svelte-rk55q\"><!> <input type=\"text\" class=\"command-menu-input svelte-rk55q\" autocomplete=\"off\" spellcheck=\"false\" role=\"combobox\" aria-autocomplete=\"list\"/></div> <div class=\"command-menu-separator svelte-rk55q\"></div> <div class=\"command-menu-list svelte-rk55q\" role=\"listbox\"><!></div></div></div>"), $$css$172 = {
10255
10363
  hash: "svelte-rk55q",
@@ -10258,68 +10366,83 @@ var search_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentC
10258
10366
  function CommandMenu(e, t) {
10259
10367
  let n = props_id();
10260
10368
  push(t, !0), append_styles$1(e, $$css$172);
10261
- let i = prop(t, "items", 7), a = prop(t, "open", 15, !1), o = prop(t, "placeholder", 7, "Search commands..."), s = prop(t, "emptyText", 7, "No results found."), c = prop(t, "testId", 7), l = prop(t, "itemIcon", 7), u = prop(t, "searchIcon", 7), f = prop(t, "onselect", 7), p = prop(t, "onclose", 7), h = prop(t, "classes", 7), S = `command-menu-listbox-${n}`, C = /* @__PURE__ */ state(""), k = /* @__PURE__ */ state(0), R = /* @__PURE__ */ state(null), te = /* @__PURE__ */ state(null), ne = /* @__PURE__ */ state(null), re = null, G = /* @__PURE__ */ user_derived(() => {
10262
- if (get(C).trim() === "") return i();
10263
- let e = get(C).toLowerCase();
10369
+ let i = prop(t, "items", 7), a = prop(t, "open", 15, !1), o = prop(t, "placeholder", 7, "Search commands..."), s = prop(t, "emptyText", 7, "No results found."), c = prop(t, "testId", 7), l = prop(t, "itemIcon", 7), u = prop(t, "searchIcon", 7), f = prop(t, "onselect", 7), p = prop(t, "onclose", 7), h = prop(t, "classes", 7), S = `command-menu-listbox-${n}`, C = {
10370
+ y: 30,
10371
+ durationTokens: [
10372
+ "--command-menu-panel-transition-duration",
10373
+ "--duration-base",
10374
+ "--motion-duration"
10375
+ ],
10376
+ fallbackDuration: 200,
10377
+ distanceTokens: ["--command-menu-panel-transition-distance", "--distance-large"],
10378
+ fallbackDistance: 30,
10379
+ easingTokens: [
10380
+ "--command-menu-panel-transition-easing",
10381
+ "--ease-smooth-out",
10382
+ "--motion-easing"
10383
+ ]
10384
+ }, k = /* @__PURE__ */ state(""), R = /* @__PURE__ */ state(0), te = /* @__PURE__ */ state(null), ne = /* @__PURE__ */ state(null), re = /* @__PURE__ */ state(null), G = null, be = /* @__PURE__ */ user_derived(() => {
10385
+ if (get(k).trim() === "") return i();
10386
+ let e = get(k).toLowerCase();
10264
10387
  return i().filter((t) => t.label.toLowerCase().includes(e));
10265
- }), be = /* @__PURE__ */ user_derived(() => {
10388
+ }), Me = /* @__PURE__ */ user_derived(() => {
10266
10389
  let e = new SvelteMap();
10267
- for (let t of get(G)) {
10390
+ for (let t of get(be)) {
10268
10391
  let n = t.group ?? "";
10269
10392
  e.has(n) || e.set(n, []);
10270
10393
  let i = e.get(n);
10271
10394
  Array.isArray(i) && i.push(t);
10272
10395
  }
10273
10396
  return e;
10274
- }), Me = /* @__PURE__ */ user_derived(() => {
10397
+ }), Re = /* @__PURE__ */ user_derived(() => {
10275
10398
  let e = [];
10276
- for (let [, t] of get(be)) for (let n of t) e.push(n);
10399
+ for (let [, t] of get(Me)) for (let n of t) e.push(n);
10277
10400
  return e;
10278
- }), Re = /* @__PURE__ */ user_derived(() => {
10401
+ }), Ue = /* @__PURE__ */ user_derived(() => {
10279
10402
  let e = new SvelteMap();
10280
- for (let t = 0; t < get(Me).length; t++) {
10281
- let n = get(Me).at(t);
10403
+ for (let t = 0; t < get(Re).length; t++) {
10404
+ let n = get(Re).at(t);
10282
10405
  typeof n == "object" && e.set(n.value, t);
10283
10406
  }
10284
10407
  return e;
10285
- }), Ue = /* @__PURE__ */ user_derived(() => get(Me).length > 0 ? `command-menu-option-${n}-${get(k)}` : null);
10286
- function it() {
10287
- a(!1), set(C, ""), set(k, 0), p()?.();
10408
+ }), it = /* @__PURE__ */ user_derived(() => get(Re).length > 0 ? `command-menu-option-${n}-${get(R)}` : null);
10409
+ function at() {
10410
+ a() && (a(!1), set(k, ""), set(R, 0), p()?.());
10288
10411
  }
10289
- function at(e) {
10290
- e.disabled || (f()?.(e), it());
10412
+ function ot(e) {
10413
+ !a() || e.disabled || (f()?.(e), at());
10291
10414
  }
10292
- function ot(e, t) {
10415
+ function ct(e, t) {
10293
10416
  let n = e + t;
10294
- for (; n >= 0 && n < get(Me).length;) {
10295
- let e = get(Me).at(n);
10417
+ for (; n >= 0 && n < get(Re).length;) {
10418
+ let e = get(Re).at(n);
10296
10419
  if (typeof e == "object" && !e.disabled) return n;
10297
10420
  n += t;
10298
10421
  }
10299
10422
  return -1;
10300
10423
  }
10301
- function ct(e) {
10424
+ function lt(e) {
10302
10425
  if (a()) switch (e.key) {
10303
10426
  case "ArrowDown": {
10304
10427
  e.preventDefault();
10305
- let t = ot(get(k), 1);
10306
- t >= 0 && (set(k, t, !0), ut());
10428
+ let t = ct(get(R), 1);
10429
+ t >= 0 && (set(R, t, !0), dt());
10307
10430
  break;
10308
10431
  }
10309
10432
  case "ArrowUp": {
10310
10433
  e.preventDefault();
10311
- let t = ot(get(k), -1);
10312
- t >= 0 && (set(k, t, !0), ut());
10434
+ let t = ct(get(R), -1);
10435
+ t >= 0 && (set(R, t, !0), dt());
10313
10436
  break;
10314
10437
  }
10315
10438
  case "Enter": {
10316
10439
  e.preventDefault();
10317
- let t = get(Me).at(get(k));
10318
- typeof t == "object" && !t.disabled && at(t);
10440
+ let t = get(Re).at(get(R));
10441
+ typeof t == "object" && !t.disabled && ot(t);
10319
10442
  break;
10320
10443
  }
10321
10444
  case "Tab": {
10322
- let t = lt();
10445
+ let t = ut();
10323
10446
  if (t.length === 0) break;
10324
10447
  e.preventDefault();
10325
10448
  let n = getActiveElement(t[0] ?? null), i = ((n instanceof HTMLElement ? t.indexOf(n) : -1) + (e.shiftKey ? -1 : 1) + t.length) % t.length;
@@ -10328,40 +10451,40 @@ function CommandMenu(e, t) {
10328
10451
  }
10329
10452
  }
10330
10453
  }
10331
- function lt() {
10332
- return get(ne) === null ? [] : [...get(ne).querySelectorAll("a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]")].filter((e) => e.getAttribute("tabindex") !== "-1" && (e.offsetParent !== null || e === getActiveElement(e)));
10454
+ function ut() {
10455
+ return get(re) === null ? [] : [...get(re).querySelectorAll("a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]")].filter((e) => e.getAttribute("tabindex") !== "-1" && (e.offsetParent !== null || e === getActiveElement(e)));
10333
10456
  }
10334
- async function ut() {
10335
- if (await tick(), get(te) !== null) {
10336
- let e = get(te).querySelector("[data-active=\"true\"]");
10457
+ async function dt() {
10458
+ if (await tick(), get(ne) !== null) {
10459
+ let e = get(ne).querySelector("[data-active=\"true\"]");
10337
10460
  e !== null && e.scrollIntoView({ block: "nearest" });
10338
10461
  }
10339
10462
  }
10340
- function dt(e) {
10341
- e.target === e.currentTarget && it();
10342
- }
10343
10463
  function ft(e) {
10344
- (e.metaKey || e.ctrlKey) && e.key === "k" && (e.preventDefault(), a() ? it() : a(!0));
10464
+ e.target === e.currentTarget && at();
10345
10465
  }
10346
10466
  function pt(e) {
10467
+ (e.metaKey || e.ctrlKey) && e.key === "k" && (e.preventDefault(), a() ? at() : a(!0));
10468
+ }
10469
+ function mt(e) {
10347
10470
  let t = getActiveElement(e);
10348
- re === null && t instanceof HTMLElement && (re = t), lockBodyScroll();
10471
+ G === null && t instanceof HTMLElement && (G = t), lockBodyScroll();
10349
10472
  let n = registerDismissible({
10350
- element: () => get(ne),
10351
- onEscape: it
10473
+ element: () => get(re),
10474
+ onEscape: at
10352
10475
  });
10353
10476
  return tick().then(() => {
10354
- get(R) !== null && get(R).focus();
10477
+ get(te) !== null && get(te).focus();
10355
10478
  }), { destroy() {
10356
- n(), unlockBodyScroll(), re !== null && (re.focus(), re = null);
10479
+ n(), unlockBodyScroll(), G !== null && (G.focus(), G = null);
10357
10480
  } };
10358
10481
  }
10359
10482
  onMount(() => {
10360
- window.addEventListener("keydown", ft);
10483
+ window.addEventListener("keydown", pt);
10361
10484
  }), onDestroy(() => {
10362
- typeof window < "u" && window.removeEventListener("keydown", ft);
10485
+ typeof window < "u" && window.removeEventListener("keydown", pt);
10363
10486
  });
10364
- var mt = {
10487
+ var ht = {
10365
10488
  get items() {
10366
10489
  return i();
10367
10490
  },
@@ -10422,25 +10545,25 @@ function CommandMenu(e, t) {
10422
10545
  set classes(e) {
10423
10546
  h(e), flushSync();
10424
10547
  }
10425
- }, ht = comment(), gt = first_child(ht), _t = (e) => {
10426
- var t = root_9$18(), i = child(t), a = child(i), f = child(a), p = (e) => {
10548
+ }, gt = comment(), _t = first_child(gt), vt = (e) => {
10549
+ var t = root_9$18(), i = child(t), f = child(i), p = child(f), G = (e) => {
10427
10550
  var t = comment();
10428
10551
  snippet(first_child(t), u), append(e, t);
10429
- }, re = (e) => {
10552
+ }, be = (e) => {
10430
10553
  var t = root$90();
10431
10554
  html(t, () => search_default, !0), reset(t), append(e, t);
10432
10555
  };
10433
- if_block(f, (e) => {
10434
- typeof u() == "function" ? e(p) : e(re, -1);
10556
+ if_block(p, (e) => {
10557
+ typeof u() == "function" ? e(G) : e(be, -1);
10435
10558
  });
10436
- var G = sibling(f, 2);
10437
- remove_input_defaults(G), bind_this(G, (e) => set(R, e), () => get(R)), reset(a);
10438
- var it = sibling(a, 4), ot = child(it), lt = (e) => {
10559
+ var at = sibling(p, 2);
10560
+ remove_input_defaults(at), bind_this(at, (e) => set(te, e), () => get(te)), reset(f);
10561
+ var ct = sibling(f, 4), ut = child(ct), dt = (e) => {
10439
10562
  var t = root_1$80(), n = child(t, !0);
10440
10563
  reset(t), template_effect(() => set_text(n, s())), append(e, t);
10441
- }, ut = (e) => {
10564
+ }, pt = (e) => {
10442
10565
  var t = comment();
10443
- each(first_child(t), 17, () => get(be), ([e, t]) => e, (e, t) => {
10566
+ each(first_child(t), 17, () => get(Me), ([e, t]) => e, (e, t) => {
10444
10567
  var i = /* @__PURE__ */ user_derived(() => to_array(get(t), 2));
10445
10568
  let a = () => get(i)[0], o = () => get(i)[1];
10446
10569
  var s = root_8$22(), u = first_child(s), f = (e) => {
@@ -10450,7 +10573,7 @@ function CommandMenu(e, t) {
10450
10573
  if_block(u, (e) => {
10451
10574
  a() !== "" && e(f);
10452
10575
  }), each(sibling(u, 2), 17, o, (e) => e.value, (e, t) => {
10453
- let i = /* @__PURE__ */ user_derived(() => get(Re).get(get(t).value) ?? -1);
10576
+ let i = /* @__PURE__ */ user_derived(() => get(Ue).get(get(t).value) ?? -1);
10454
10577
  var a = root_7$27();
10455
10578
  let o;
10456
10579
  var s = child(a), u = (e) => {
@@ -10482,26 +10605,26 @@ function CommandMenu(e, t) {
10482
10605
  typeof get(t).shortcut == "string" && get(t).shortcut.length > 0 && e(C);
10483
10606
  }), reset(a), template_effect(() => {
10484
10607
  set_attribute(a, "id", `command-menu-option-${n}-${get(i)}`), o = set_class(a, 1, "command-menu-item svelte-rk55q", null, o, {
10485
- active: get(i) === get(k),
10608
+ active: get(i) === get(R),
10486
10609
  disabled: get(t).disabled
10487
- }), set_attribute(a, "data-active", get(i) === get(k)), set_attribute(a, "aria-selected", get(i) === get(k)), set_attribute(a, "aria-disabled", get(t).disabled), set_attribute(a, "data-pw", typeof c() == "string" ? `${c()}-item-${get(t).value}` : null), set_attribute(a, "testid", typeof c() == "string" ? `${c()}-item-${get(t).value}` : null), set_text(h, get(t).label);
10488
- }), delegated("click", a, () => at(get(t))), event("mouseenter", a, () => {
10489
- get(t).disabled || set(k, get(i), !0);
10610
+ }), set_attribute(a, "data-active", get(i) === get(R)), set_attribute(a, "aria-selected", get(i) === get(R)), set_attribute(a, "aria-disabled", get(t).disabled), set_attribute(a, "data-pw", typeof c() == "string" ? `${c()}-item-${get(t).value}` : null), set_attribute(a, "testid", typeof c() == "string" ? `${c()}-item-${get(t).value}` : null), set_text(h, get(t).label);
10611
+ }), delegated("click", a, () => ot(get(t))), event("mouseenter", a, () => {
10612
+ get(t).disabled || set(R, get(i), !0);
10490
10613
  }), append(e, a);
10491
10614
  }), append(e, s);
10492
10615
  }), append(e, t);
10493
10616
  };
10494
- if_block(ot, (e) => {
10495
- get(Me).length === 0 ? e(lt) : e(ut, -1);
10496
- }), reset(it), bind_this(it, (e) => set(te, e), () => get(te)), reset(i), bind_this(i, (e) => set(ne, e), () => get(ne)), reset(t), action(t, (e) => pt?.(e)), template_effect(() => {
10497
- set_class(t, 1, `command-menu-overlay ${h() ?? "" ?? ""}`, "svelte-rk55q"), set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null), set_attribute(G, "placeholder", o()), set_attribute(G, "aria-expanded", get(Me).length > 0), set_attribute(G, "aria-controls", S), set_attribute(G, "aria-activedescendant", get(Ue)), set_attribute(G, "data-pw", typeof c() == "string" ? `${c()}-input` : null), set_attribute(G, "testid", typeof c() == "string" ? `${c()}-input` : null), set_attribute(it, "id", S);
10498
- }), delegated("click", t, dt), delegated("keydown", t, ct), delegated("input", G, () => {
10499
- set(k, 0);
10500
- }), bind_value(G, () => get(C), (e) => set(C, e)), append(e, t);
10617
+ if_block(ut, (e) => {
10618
+ get(Re).length === 0 ? e(dt) : e(pt, -1);
10619
+ }), reset(ct), bind_this(ct, (e) => set(ne, e), () => get(ne)), reset(i), bind_this(i, (e) => set(re, e), () => get(re)), reset(t), action(t, (e) => mt?.(e)), template_effect(() => {
10620
+ set_class(t, 1, `command-menu-overlay ${h() ?? "" ?? ""}`, "svelte-rk55q"), t.inert = !a(), set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null), i.inert = !a(), set_attribute(at, "placeholder", o()), set_attribute(at, "aria-expanded", get(Re).length > 0), set_attribute(at, "aria-controls", S), set_attribute(at, "aria-activedescendant", get(it)), set_attribute(at, "data-pw", typeof c() == "string" ? `${c()}-input` : null), set_attribute(at, "testid", typeof c() == "string" ? `${c()}-input` : null), set_attribute(ct, "id", S);
10621
+ }), delegated("click", t, ft), delegated("keydown", t, lt), delegated("input", at, () => {
10622
+ set(R, 0);
10623
+ }), bind_value(at, () => get(k), (e) => set(k, e)), transition(1, i, () => tokenizedFly, () => C), transition(2, i, () => tokenizedFly, () => C), append(e, t);
10501
10624
  };
10502
- return if_block(gt, (e) => {
10503
- a() && e(_t);
10504
- }), append(e, ht), pop(mt);
10625
+ return if_block(_t, (e) => {
10626
+ a() && e(vt);
10627
+ }), append(e, gt), pop(ht);
10505
10628
  }
10506
10629
  delegate([
10507
10630
  "click",
@@ -10573,7 +10696,7 @@ customElements.define("sui-command-menu", create_custom_element(CommandMenu_wc,
10573
10696
  //#region src/lib/Gauge/Gauge.svelte
10574
10697
  var root$88 = /* @__PURE__ */ from_html("<div class=\"label svelte-ms0oc6\"><!></div>"), root_1$79 = /* @__PURE__ */ from_html("<div role=\"progressbar\"><svg class=\"svelte-ms0oc6\"><circle class=\"track svelte-ms0oc6\" fill=\"none\"></circle><circle class=\"bar svelte-ms0oc6\" fill=\"none\" stroke-linecap=\"round\"></circle></svg> <!></div>"), $$css$170 = {
10575
10698
  hash: "svelte-ms0oc6",
10576
- code: ".gauge.svelte-ms0oc6 {position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--gauge-size, 120px);height:var(--gauge-size, 120px);}svg.svelte-ms0oc6 {display:block;width:100%;height:100%;}.track.svelte-ms0oc6 {stroke:var(--gauge-track-color, #e0e0e0);stroke-width:var(--gauge-stroke-width, 8);}.bar.svelte-ms0oc6 {stroke:var(--gauge-bar-color, #2196f3);stroke-width:var(--gauge-stroke-width, 8);transition:stroke-dashoffset var(--gauge-transition-duration, 0.3s) ease;}.label.svelte-ms0oc6 {position:absolute;font-size:var(--gauge-label-font-size, 24px);font-weight:var(--gauge-label-font-weight, 600);font-family:var(--gauge-label-font-family, inherit);color:var(--gauge-label-color, #333);}"
10699
+ code: ".gauge.svelte-ms0oc6 {position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--gauge-size, 120px);height:var(--gauge-size, 120px);}svg.svelte-ms0oc6 {display:block;width:100%;height:100%;}.track.svelte-ms0oc6 {stroke:var(--gauge-track-color, #e0e0e0);stroke-width:var(--gauge-stroke-width, 8);}.bar.svelte-ms0oc6 {stroke:var(--gauge-bar-color, #2196f3);stroke-width:var(--gauge-stroke-width, 8);transition:stroke-dashoffset var(--gauge-transition-duration, var(--motion-duration, 0.3s))\n var(--gauge-transition-easing, var(--motion-easing, ease));}.label.svelte-ms0oc6 {position:absolute;font-size:var(--gauge-label-font-size, 24px);font-weight:var(--gauge-label-font-weight, 600);font-family:var(--gauge-label-font-family, inherit);color:var(--gauge-label-color, #333);}"
10577
10700
  };
10578
10701
  function Gauge(e, t) {
10579
10702
  push(t, !0), append_styles$1(e, $$css$170);
@@ -11809,7 +11932,7 @@ customElements.define("sui-loading-dots", create_custom_element(LoadingDots_wc,
11809
11932
  //#region src/lib/Pagination/Pagination.svelte
11810
11933
  var root$81 = /* @__PURE__ */ from_html("<span class=\"ellipsis svelte-1sajc2w\">&#8230;</span>"), root_1$73 = /* @__PURE__ */ from_html("<button> </button>"), root_2$56 = /* @__PURE__ */ from_html("<button class=\"page-button load-more-button svelte-1sajc2w\" aria-label=\"Load more\">&#8250;</button>"), root_3$50 = /* @__PURE__ */ from_html("<button class=\"page-button next-button svelte-1sajc2w\" aria-label=\"Next page\">&#8250;</button>"), root_4$42 = /* @__PURE__ */ from_html("<nav><button class=\"page-button prev-button svelte-1sajc2w\" aria-label=\"Previous page\">&#8249;</button> <!> <!></nav>"), $$css$153 = {
11811
11934
  hash: "svelte-1sajc2w",
11812
- code: ".pagination.svelte-1sajc2w {display:var(--pagination-display, flex);gap:var(--pagination-gap, 4px);align-items:var(--pagination-align-items, center);}.pagination.disabled.svelte-1sajc2w {opacity:var(--pagination-disabled-opacity, 0.5);cursor:var(--pagination-disabled-cursor, not-allowed);}.page-button.svelte-1sajc2w {padding:var(--pagination-button-padding, 6px 10px);font-size:var(--pagination-button-font-size, 14px);font-weight:var(--pagination-button-font-weight, 400);font-family:var(--pagination-button-font-family, inherit);\n /* Base state (and .load-more-button below) pairs its text with a\n transparent background, not one of its own -- same shape as the table\n title bug. A hardcoded literal here doesn't track a dark ambient\n surface, so prev/next/page buttons went unreadable on a themed dark\n page even though .active and :hover are safe (each pairs its colour\n with its own opaque background). Inheriting keeps it tied to whatever\n text colour the surrounding surface already resolved to. */color:var(--pagination-button-color, inherit);background:var(--pagination-button-background, transparent);border:var(--pagination-button-border, 1px solid #d1d5db);border-radius:var(--pagination-button-border-radius, var(--radius, 4px));cursor:var(--pagination-button-cursor, pointer);min-width:var(--pagination-button-min-width, 36px);height:var(--pagination-button-height, 36px);display:flex;align-items:center;justify-content:center;transition:var(--pagination-transition, background 0.15s ease, color 0.15s ease);}.page-button.svelte-1sajc2w:hover:not(:disabled):not(.active) {color:var(--pagination-button-hover-color, #111827);background:var(--pagination-button-hover-background, #f3f4f6);}.page-button.active.svelte-1sajc2w {color:var(--pagination-active-color, #ffffff);background:var(--pagination-active-background, #3a4550);border:var(--pagination-active-border, 1px solid #3a4550);font-weight:var(--pagination-active-font-weight, 600);}.load-more-button.svelte-1sajc2w {width:var(--pagination-load-more-width, auto);padding:var(--pagination-load-more-padding, 6px 14px);color:var(--pagination-load-more-color, inherit);background:var(--pagination-load-more-background, transparent);border-color:var(--pagination-load-more-border-color, #d1d5db);}.load-more-button.svelte-1sajc2w:hover:not(:disabled) {color:var(--pagination-load-more-hover-color, #111827);background:var(--pagination-load-more-hover-background, #f3f4f6);}.page-button.svelte-1sajc2w:disabled {opacity:var(--pagination-disabled-opacity, 0.5);cursor:var(--pagination-disabled-cursor, not-allowed);}.pagination.disabled.svelte-1sajc2w .page-button:where(.svelte-1sajc2w) {opacity:1;}.ellipsis.svelte-1sajc2w {color:var(--pagination-ellipsis-color, #6b7280);font-size:var(--pagination-ellipsis-font-size, 14px);min-width:var(--pagination-button-min-width, 36px);height:var(--pagination-button-height, 36px);display:flex;align-items:center;justify-content:center;}"
11935
+ code: ".pagination.svelte-1sajc2w {display:var(--pagination-display, flex);gap:var(--pagination-gap, 4px);align-items:var(--pagination-align-items, center);}.pagination.disabled.svelte-1sajc2w {opacity:var(--pagination-disabled-opacity, 0.5);cursor:var(--pagination-disabled-cursor, not-allowed);}.page-button.svelte-1sajc2w {padding:var(--pagination-button-padding, 6px 10px);font-size:var(--pagination-button-font-size, 14px);font-weight:var(--pagination-button-font-weight, 400);font-family:var(--pagination-button-font-family, inherit);\n /* Base state (and .load-more-button below) pairs its text with a\n transparent background, not one of its own -- same shape as the table\n title bug. A hardcoded literal here doesn't track a dark ambient\n surface, so prev/next/page buttons went unreadable on a themed dark\n page even though .active and :hover are safe (each pairs its colour\n with its own opaque background). Inheriting keeps it tied to whatever\n text colour the surrounding surface already resolved to. */color:var(--pagination-button-color, inherit);background:var(--pagination-button-background, transparent);border:var(--pagination-button-border, 1px solid #d1d5db);border-radius:var(--pagination-button-border-radius, var(--radius, 4px));cursor:var(--pagination-button-cursor, pointer);min-width:var(--pagination-button-min-width, 36px);height:var(--pagination-button-height, 36px);display:flex;align-items:center;justify-content:center;transition:var(\n --pagination-transition,\n background\n var(--pagination-transition-duration, var(--duration-quick, var(--motion-duration, 0.15s)))\n var(--pagination-transition-easing, var(--motion-easing, ease)),\n color\n var(--pagination-transition-duration, var(--duration-quick, var(--motion-duration, 0.15s)))\n var(--pagination-transition-easing, var(--motion-easing, ease))\n );}.page-button.svelte-1sajc2w:hover:not(:disabled):not(.active) {color:var(--pagination-button-hover-color, #111827);background:var(--pagination-button-hover-background, #f3f4f6);}.page-button.active.svelte-1sajc2w {color:var(--pagination-active-color, #ffffff);background:var(--pagination-active-background, #3a4550);border:var(--pagination-active-border, 1px solid #3a4550);font-weight:var(--pagination-active-font-weight, 600);}.load-more-button.svelte-1sajc2w {width:var(--pagination-load-more-width, auto);padding:var(--pagination-load-more-padding, 6px 14px);color:var(--pagination-load-more-color, inherit);background:var(--pagination-load-more-background, transparent);border-color:var(--pagination-load-more-border-color, #d1d5db);}.load-more-button.svelte-1sajc2w:hover:not(:disabled) {color:var(--pagination-load-more-hover-color, #111827);background:var(--pagination-load-more-hover-background, #f3f4f6);}.page-button.svelte-1sajc2w:disabled {opacity:var(--pagination-disabled-opacity, 0.5);cursor:var(--pagination-disabled-cursor, not-allowed);}.pagination.disabled.svelte-1sajc2w .page-button:where(.svelte-1sajc2w) {opacity:1;}.ellipsis.svelte-1sajc2w {color:var(--pagination-ellipsis-color, #6b7280);font-size:var(--pagination-ellipsis-font-size, 14px);min-width:var(--pagination-button-min-width, 36px);height:var(--pagination-button-height, 36px);display:flex;align-items:center;justify-content:center;}"
11813
11936
  };
11814
11937
  function Pagination(e, t) {
11815
11938
  push(t, !0), append_styles$1(e, $$css$153);
@@ -12249,7 +12372,7 @@ customElements.define("sui-progress", create_custom_element(Progress_wc, {
12249
12372
  //#region src/lib/Radio/Radio.svelte
12250
12373
  var root$79 = /* @__PURE__ */ from_html("<span> </span>"), root_1$71 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-14bh706\"> </div>"), root_2$55 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-14bh706\"> </div>"), root_3$49 = /* @__PURE__ */ from_html("<label><input type=\"radio\" class=\"radio-input svelte-14bh706\"/> <span><span></span></span> <!></label> <!> <!>", 1), $$css$148 = {
12251
12374
  hash: "svelte-14bh706",
12252
- code: ".radio-container.svelte-14bh706 {display:var(--radio-container-display, inline-flex);align-items:var(--radio-container-align-items, center);gap:var(--radio-container-gap, 8px);cursor:var(--radio-container-cursor, pointer);opacity:var(--radio-container-opacity, 1);}.radio-container.disabled.svelte-14bh706 {cursor:not-allowed;}.radio-input.svelte-14bh706 {position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none;}.radio-indicator.svelte-14bh706 {display:inline-flex;align-items:center;justify-content:center;width:var(--radio-size, 20px);height:var(--radio-size, 20px);border:var(--radio-border, 2px solid #9e9e9e);border-radius:var(--radio-border-radius, 50%);background-color:var(--radio-background, #ffffff);transition:var(--radio-transition, 0.2s);box-sizing:border-box;flex-shrink:0;}.radio-indicator.checked.svelte-14bh706 {border:var(--radio-selected-border, 2px solid #2196f3);background-color:var(--radio-selected-background, #ffffff);}.radio-indicator.disabled.svelte-14bh706 {border:var(--radio-disabled-border, 2px solid #cccccc);background-color:var(--radio-disabled-background, #f5f5f5);}.radio-container.svelte-14bh706:not(.disabled):hover .radio-indicator:where(.svelte-14bh706):not(.checked) {border:var(--radio-hover-border, 2px solid #2196f3);}.radio-input.svelte-14bh706:focus-visible + .radio-indicator:where(.svelte-14bh706) {box-shadow:var(--radio-focus-shadow, 0 0 0 3px rgba(33, 150, 243, 0.3));}.radio-dot.svelte-14bh706 {width:0;height:0;border-radius:var(--radio-dot-border-radius, 50%);background-color:var(--radio-dot-color, #2196f3);transition:var(--radio-transition, 0.2s);}.radio-dot.checked.svelte-14bh706 {width:var(--radio-dot-size, 10px);height:var(--radio-dot-size, 10px);}.radio-dot.checked.disabled.svelte-14bh706 {background-color:var(--radio-disabled-dot-color, #cccccc);}.radio-text.svelte-14bh706 {font-size:var(--radio-text-font-size, 14px);font-weight:var(--radio-text-font-weight, 400);color:var(--radio-text-color, #333333);}.radio-text.disabled.svelte-14bh706 {color:var(--radio-disabled-text-color, #999999);}.field-error.svelte-14bh706 {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-14bh706 {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
12375
+ code: ".radio-container.svelte-14bh706 {display:var(--radio-container-display, inline-flex);align-items:var(--radio-container-align-items, center);gap:var(--radio-container-gap, 8px);cursor:var(--radio-container-cursor, pointer);opacity:var(--radio-container-opacity, 1);}.radio-container.disabled.svelte-14bh706 {cursor:not-allowed;}.radio-input.svelte-14bh706 {position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none;}.radio-indicator.svelte-14bh706 {display:inline-flex;align-items:center;justify-content:center;width:var(--radio-size, 20px);height:var(--radio-size, 20px);border:var(--radio-border, 2px solid #9e9e9e);border-radius:var(--radio-border-radius, 50%);background-color:var(--radio-background, #ffffff);\n /* --radio-transition wraps the WHOLE value, not just the duration -- see the\n matching comment on Checkbox's .box rule for why appending a separate\n easing term after it (the prior shape here) breaks a consumer override\n that already includes its own timing function. */transition:var(\n --radio-transition,\n var(--radio-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--radio-transition-easing, var(--motion-easing, ease))\n );box-sizing:border-box;flex-shrink:0;}.radio-indicator.checked.svelte-14bh706 {border:var(--radio-selected-border, 2px solid #2196f3);background-color:var(--radio-selected-background, #ffffff);}.radio-indicator.disabled.svelte-14bh706 {border:var(--radio-disabled-border, 2px solid #cccccc);background-color:var(--radio-disabled-background, #f5f5f5);}.radio-container.svelte-14bh706:not(.disabled):hover .radio-indicator:where(.svelte-14bh706):not(.checked) {border:var(--radio-hover-border, 2px solid #2196f3);}.radio-input.svelte-14bh706:focus-visible + .radio-indicator:where(.svelte-14bh706) {box-shadow:var(--radio-focus-shadow, 0 0 0 3px rgba(33, 150, 243, 0.3));}.radio-dot.svelte-14bh706 {width:0;height:0;border-radius:var(--radio-dot-border-radius, 50%);background-color:var(--radio-dot-color, #2196f3);transition:var(\n --radio-transition,\n var(--radio-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--radio-transition-easing, var(--motion-easing, ease))\n );}.radio-dot.checked.svelte-14bh706 {width:var(--radio-dot-size, 10px);height:var(--radio-dot-size, 10px);}.radio-dot.checked.disabled.svelte-14bh706 {background-color:var(--radio-disabled-dot-color, #cccccc);}.radio-text.svelte-14bh706 {font-size:var(--radio-text-font-size, 14px);font-weight:var(--radio-text-font-weight, 400);color:var(--radio-text-color, #333333);}.radio-text.disabled.svelte-14bh706 {color:var(--radio-disabled-text-color, #999999);}.field-error.svelte-14bh706 {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-14bh706 {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
12253
12376
  };
12254
12377
  function Radio(e, t) {
12255
12378
  let n = props_id();
@@ -12548,7 +12671,7 @@ create_custom_element(PortalContentRenderer, { snippet: {} }, [], [], { mode: "o
12548
12671
  //#region src/lib/Tooltip/Tooltip.svelte
12549
12672
  var root_1$70 = /* @__PURE__ */ from_html("<span class=\"tooltip-icon svelte-1xxu8em\" aria-hidden=\"true\"><!></span>"), root_2$54 = /* @__PURE__ */ from_html("<span class=\"tooltip-text svelte-1xxu8em\"> </span>"), root_3$48 = /* @__PURE__ */ from_html("<div role=\"tooltip\"><div class=\"tooltip-arrow svelte-1xxu8em\"></div> <!></div>"), root_4$41 = /* @__PURE__ */ from_html("<div role=\"none\"><!> <!> <!> <!></div>"), $$css$146 = {
12550
12673
  hash: "svelte-1xxu8em",
12551
- code: ".tooltip-container.svelte-1xxu8em {position:relative;display:var(--tooltip-container-display, inline-flex);}.tooltip-icon.svelte-1xxu8em {display:contents;color:var(--tooltip-icon-color, currentColor);}.tooltip-bubble.svelte-1xxu8em {position:absolute;z-index:var(--tooltip-z-index, 1000);max-width:var(--tooltip-max-width, 200px);background:var(--tooltip-background, #333333);color:var(--tooltip-color, #ffffff);font-size:var(--tooltip-font-size, 12px);font-weight:var(--tooltip-font-weight, 400);font-family:var(--tooltip-font-family, inherit);padding:var(--tooltip-padding, 6px 10px);border-radius:var(--tooltip-border-radius, var(--radius, 4px));border:var(--tooltip-border, none);box-shadow:var(--tooltip-box-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));white-space:normal;word-wrap:break-word;pointer-events:none;opacity:1;transition:opacity var(--tooltip-opacity-duration, 0.15s) ease-in-out;}.tooltip-arrow.svelte-1xxu8em {position:absolute;width:0;height:0;border-style:solid;}\n\n /* Top position. --tooltip-shift is the viewport-edge clamp: the bubble slides\n along its cross axis to stay on screen while the arrow compensates the other\n way so it keeps pointing at the trigger. */.top.svelte-1xxu8em {bottom:calc(100% + var(--tooltip-offset, 8px));left:50%;transform:translateX(calc(-50% + var(--tooltip-shift, 0px)));}.top.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {top:100%;left:calc(50% - var(--tooltip-shift, 0px));transform:translateX(-50%);border-width:var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px) 0\n var(--tooltip-arrow-size, 5px);border-color:var(--tooltip-arrow-color, var(--tooltip-background, #333333)) transparent\n transparent transparent;}\n\n /* Bottom position */.bottom.svelte-1xxu8em {top:calc(100% + var(--tooltip-offset, 8px));left:50%;transform:translateX(calc(-50% + var(--tooltip-shift, 0px)));}.bottom.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {bottom:100%;left:calc(50% - var(--tooltip-shift, 0px));transform:translateX(-50%);border-width:0 var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px);border-color:transparent transparent\n var(--tooltip-arrow-color, var(--tooltip-background, #333333)) transparent;}\n\n /* Left position */.left.svelte-1xxu8em {right:calc(100% + var(--tooltip-offset, 8px));top:50%;transform:translateY(calc(-50% + var(--tooltip-shift, 0px)));}.left.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {left:100%;top:calc(50% - var(--tooltip-shift, 0px));transform:translateY(-50%);border-width:var(--tooltip-arrow-size, 5px) 0 var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px);border-color:transparent transparent transparent\n var(--tooltip-arrow-color, var(--tooltip-background, #333333));}\n\n /* Right position */.right.svelte-1xxu8em {left:calc(100% + var(--tooltip-offset, 8px));top:50%;transform:translateY(calc(-50% + var(--tooltip-shift, 0px)));}.right.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {right:100%;top:calc(50% - var(--tooltip-shift, 0px));transform:translateY(-50%);border-width:var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px) 0;border-color:transparent var(--tooltip-arrow-color, var(--tooltip-background, #333333))\n transparent transparent;}.tooltip-text.svelte-1xxu8em {color:var(--tooltip-color, #ffffff);}"
12674
+ code: ".tooltip-container.svelte-1xxu8em {position:relative;display:var(--tooltip-container-display, inline-flex);}.tooltip-icon.svelte-1xxu8em {display:contents;color:var(--tooltip-icon-color, currentColor);}.tooltip-bubble.svelte-1xxu8em {position:absolute;z-index:var(--tooltip-z-index, 1000);max-width:var(--tooltip-max-width, 200px);background:var(--tooltip-background, #333333);color:var(--tooltip-color, #ffffff);font-size:var(--tooltip-font-size, 12px);font-weight:var(--tooltip-font-weight, 400);font-family:var(--tooltip-font-family, inherit);padding:var(--tooltip-padding, 6px 10px);border-radius:var(--tooltip-border-radius, var(--radius, 4px));border:var(--tooltip-border, none);box-shadow:var(--tooltip-box-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));white-space:normal;word-wrap:break-word;pointer-events:none;opacity:1;transition:opacity\n var(--tooltip-opacity-duration, var(--duration-quick, var(--motion-duration, 0.15s)))\n var(--tooltip-opacity-easing, var(--ease-in-out, var(--motion-easing, ease-in-out)));}.tooltip-arrow.svelte-1xxu8em {position:absolute;width:0;height:0;border-style:solid;}\n\n /* Top position. --tooltip-shift is the viewport-edge clamp: the bubble slides\n along its cross axis to stay on screen while the arrow compensates the other\n way so it keeps pointing at the trigger. */.top.svelte-1xxu8em {bottom:calc(100% + var(--tooltip-offset, 8px));left:50%;transform:translateX(calc(-50% + var(--tooltip-shift, 0px)));}.top.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {top:100%;left:calc(50% - var(--tooltip-shift, 0px));transform:translateX(-50%);border-width:var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px) 0\n var(--tooltip-arrow-size, 5px);border-color:var(--tooltip-arrow-color, var(--tooltip-background, #333333)) transparent\n transparent transparent;}\n\n /* Bottom position */.bottom.svelte-1xxu8em {top:calc(100% + var(--tooltip-offset, 8px));left:50%;transform:translateX(calc(-50% + var(--tooltip-shift, 0px)));}.bottom.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {bottom:100%;left:calc(50% - var(--tooltip-shift, 0px));transform:translateX(-50%);border-width:0 var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px);border-color:transparent transparent\n var(--tooltip-arrow-color, var(--tooltip-background, #333333)) transparent;}\n\n /* Left position */.left.svelte-1xxu8em {right:calc(100% + var(--tooltip-offset, 8px));top:50%;transform:translateY(calc(-50% + var(--tooltip-shift, 0px)));}.left.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {left:100%;top:calc(50% - var(--tooltip-shift, 0px));transform:translateY(-50%);border-width:var(--tooltip-arrow-size, 5px) 0 var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px);border-color:transparent transparent transparent\n var(--tooltip-arrow-color, var(--tooltip-background, #333333));}\n\n /* Right position */.right.svelte-1xxu8em {left:calc(100% + var(--tooltip-offset, 8px));top:50%;transform:translateY(calc(-50% + var(--tooltip-shift, 0px)));}.right.svelte-1xxu8em .tooltip-arrow:where(.svelte-1xxu8em) {right:100%;top:calc(50% - var(--tooltip-shift, 0px));transform:translateY(-50%);border-width:var(--tooltip-arrow-size, 5px) var(--tooltip-arrow-size, 5px)\n var(--tooltip-arrow-size, 5px) 0;border-color:transparent var(--tooltip-arrow-color, var(--tooltip-background, #333333))\n transparent transparent;}.tooltip-text.svelte-1xxu8em {color:var(--tooltip-color, #ffffff);}"
12552
12675
  };
12553
12676
  function Tooltip(e, t) {
12554
12677
  push(t, !0), append_styles$1(e, $$css$146);
@@ -12635,7 +12758,7 @@ function Tooltip(e, t) {
12635
12758
  "white-space:normal",
12636
12759
  "word-wrap:break-word",
12637
12760
  "pointer-events:none",
12638
- "transition:opacity var(--tooltip-opacity-duration,0.15s) ease-in-out"
12761
+ "transition:opacity var(--tooltip-opacity-duration,var(--duration-quick,var(--motion-duration,0.15s))) var(--tooltip-opacity-easing,var(--ease-in-out,var(--motion-easing,ease-in-out)))"
12639
12762
  ].join(";");
12640
12763
  let c = document.createElement("div");
12641
12764
  if (c.style.cssText = at(t), i.appendChild(c), typeof f() == "function") {
@@ -14111,7 +14234,7 @@ customElements.define("sui-stepper", create_custom_element(Stepper_wc, {
14111
14234
  //#region src/lib/assets/chevron-up.svg?raw
14112
14235
  var chevron_up_default = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline points=\"18 15 12 9 6 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n", chevron_down_default = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <polyline points=\"6 9 12 15 18 9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n", root$72 = /* @__PURE__ */ from_html("<button class=\"tabs-arrow tabs-arrow-start svelte-18eaq6o\"><!></button>"), root_1$66 = /* @__PURE__ */ from_html("<div class=\"tabs-section-label svelte-18eaq6o\" aria-hidden=\"true\"> </div>"), root_2$52 = /* @__PURE__ */ from_html("<span aria-hidden=\"true\"></span>"), root_3$46 = /* @__PURE__ */ from_html("<!> <span class=\"tabs-item-label svelte-18eaq6o\"> </span> <!>", 1), root_4$39 = /* @__PURE__ */ from_html("<!> <div role=\"tab\"><!></div>", 1), root_5$34 = /* @__PURE__ */ from_html("<span class=\"tabs-indicator svelte-18eaq6o\" aria-hidden=\"true\"></span>"), root_6$29 = /* @__PURE__ */ from_html("<button class=\"tabs-arrow tabs-arrow-end svelte-18eaq6o\"><!></button>"), root_7$26 = /* @__PURE__ */ from_html("<div><!> <div role=\"tablist\"><!> <!></div> <!></div>"), $$css$132 = {
14113
14236
  hash: "svelte-18eaq6o",
14114
- code: ".tabs-wrapper.svelte-18eaq6o {display:flex;align-items:stretch;position:relative;max-width:100%;background:var(--tabs-bar-background, #ffffff);border-bottom:var(--tabs-bar-border-bottom, 1px solid #e0e0e0);border-radius:var(--tabs-bar-border-radius, 0);}.tabs-wrapper.disabled.svelte-18eaq6o {opacity:var(--tabs-disabled-opacity, 0.5);pointer-events:none;}.tabs-bar.svelte-18eaq6o {display:flex;flex:1;min-width:0;padding:var(--tabs-bar-padding, 0px);gap:var(--tabs-bar-gap, 0px);overflow-x:auto;scrollbar-width:none;position:relative;}.tabs-bar.svelte-18eaq6o::-webkit-scrollbar {display:none;}\n\n /* Each fade holds FULLY transparent for the first --tabs-fade-solid px before\n ramping to opaque: a plain 0→fade-size ramp still renders the clipped tab\n label at ~20% opacity a few px from the edge, which reads as a stray glyph\n fragment beside the scroll arrow. The solid zone guarantees nothing is\n perceptible there. */.tabs-bar.fade-left.svelte-18eaq6o {mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-right.svelte-18eaq6o {mask-image:linear-gradient(\n to left,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to left,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-left.fade-right.svelte-18eaq6o {mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );-webkit-mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );}.tabs-arrow.svelte-18eaq6o {display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--tabs-arrow-size, 28px);padding:var(--tabs-arrow-padding, 0);border:var(--tabs-arrow-border, none);background:var(--tabs-arrow-background, var(--tabs-bar-background, #ffffff));color:var(--tabs-arrow-color, var(--tabs-item-color, #666666));cursor:pointer;z-index:1;transition:var(--tabs-arrow-transition, color 0.2s ease);font-family:inherit;}.tabs-arrow.svelte-18eaq6o:hover {color:var(--tabs-arrow-hover-color, var(--tabs-active-color, #0b57d0));background:var(\n --tabs-arrow-hover-background,\n var(--tabs-arrow-background, var(--tabs-bar-background, #ffffff))\n );}.tabs-item.svelte-18eaq6o {display:flex;align-items:center;gap:var(--tabs-item-gap, 8px);position:relative;padding:var(--tabs-item-padding, 12px 16px);font-size:var(--tabs-item-font-size, 14px);font-weight:var(--tabs-item-font-weight, 400);font-family:var(--tabs-item-font-family, inherit);color:var(--tabs-item-color, #666666);cursor:var(--tabs-item-cursor, pointer);background:var(--tabs-item-background, transparent);border:var(--tabs-item-border, none);border-radius:var(--tabs-item-border-radius, 0);outline:none;white-space:nowrap;flex-shrink:0;user-select:none;transition:var(--tabs-transition, color 0.2s ease, background 0.2s ease);}\n\n /* Roving focus really does move (see focusedKey/focusTabAt above) -- this\n just replaces the INDICATOR that outline:none above strips, which is what\n was actually missing (WCAG 2.4.7). :focus-visible only, so a mouse click\n that activates a tab still shows nothing new, matching the rest of this\n file's pattern (Sheet's .sheet-panel, Select's .select-clear, ...).\n currentColor tracks --tabs-item-color / --tabs-active-color, which are\n already themed per-mode and per-state, so the ring stays visible against\n --tabs-bar-background in both themes with no extra token needed here. The\n offset is inset, not the usual outward one: .tabs-bar is a same-axis\n overflow:auto scroller with 0px padding/gap by default, so an outward ring\n on an edge tab would be clipped by the scroll container's own edge. */.tabs-item.svelte-18eaq6o:focus-visible {outline:var(--tabs-item-focus-outline, 2px solid currentColor);outline-offset:var(--tabs-item-focus-outline-offset, -2px);}.tabs-item.svelte-18eaq6o .tabs-item-icon {--image-width: var(--tabs-item-icon-size, 16px);--image-height: var(--tabs-item-icon-size, 16px);--image-object-fit: contain;color:var(--tabs-item-icon-color, inherit);flex-shrink:0;}\n\n /* Reserves the active-state (bolder) width of the label so selecting a tab\n never reflows the tab bar: without this, .tabs-item.active's font-weight\n jump makes the tab (and every tab after it) physically resize, which\n visibly shifts sibling tabs and defeats the indicator's slide animation\n with a jump. The ::after ghost renders data-text at the active weight\n with height:0/visibility:hidden -- invisible, but its width still sets\n the shrink-to-fit width of the inline-block label, so the box is already\n as wide as the active state needs even while showing the lighter weight. */.tabs-item-label.svelte-18eaq6o {position:relative;display:inline-block;}.tabs-item-label.svelte-18eaq6o::after {content:attr(data-text);display:block;height:0;overflow:hidden;visibility:hidden;font-weight:var(--tabs-active-font-weight, 600);}\n\n /* Trailing status dot for nav/menu tabs. margin-left:auto pushes it to the row's\n end (e.g. a settings menu); harmless on a normal tab bar where the item shrinks\n to content. */.tabs-item-status.svelte-18eaq6o {width:var(--tabs-item-status-size, 8px);height:var(--tabs-item-status-size, 8px);margin-left:auto;border-radius:50%;flex-shrink:0;background:transparent;}\n\n /* Neutral \"has activity / configured\" dot — blue by default, matching the app's\n --text-color-focus. Maps from a settings menu's Default circle type. */.tabs-item-status.status-default.svelte-18eaq6o {background:var(--tabs-item-status-default-color, #1a73e8);}.tabs-item-status.status-pending.svelte-18eaq6o {background:var(--tabs-item-status-pending-color, #f59e0b);}.tabs-item-status.status-error.svelte-18eaq6o {background:var(--tabs-item-status-error-color, #e7000b);}.tabs-item-status.status-success.svelte-18eaq6o {background:var(--tabs-item-status-success-color, #16a34a);}.tabs-item.svelte-18eaq6o:hover:not(.active):not([aria-disabled]) {color:var(--tabs-hover-color, #333333);background:var(--tabs-hover-background, #f5f5f5);}.tabs-item.active.svelte-18eaq6o {color:var(--tabs-active-color, #0b57d0);font-weight:var(--tabs-active-font-weight, 600);background:var(--tabs-active-background, transparent);}.tabs-item[aria-disabled].svelte-18eaq6o {cursor:var(--tabs-disabled-cursor, not-allowed);}.tabs-indicator.svelte-18eaq6o {position:absolute;bottom:0;height:var(--tabs-indicator-height, 2px);background-color:var(--tabs-indicator-color, #1a73e8);border-radius:var(--tabs-indicator-border-radius, 2px 2px 0 0);transition:var(--tabs-indicator-transition, left 0.3s ease, width 0.3s ease);pointer-events:none;}\n\n /* ---------- Vertical orientation (nav / menu rail) ---------- */.tabs-wrapper.vertical.svelte-18eaq6o {flex-direction:column;align-items:stretch;max-width:none;border-bottom:none;}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-bar:where(.svelte-18eaq6o) {flex-direction:column;overflow-x:hidden;overflow-y:auto;}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-item:where(.svelte-18eaq6o) {\n /* Full-width rows: label sits at the leading edge, the status dot's margin-left:auto\n pushes it to the trailing edge (the settings-menu look). */width:100%;box-sizing:border-box;justify-content:flex-start;}.tabs-bar.fade-top.svelte-18eaq6o {mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-bottom.svelte-18eaq6o {mask-image:linear-gradient(\n to top,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to top,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-top.fade-bottom.svelte-18eaq6o {mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );-webkit-mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-indicator:where(.svelte-18eaq6o) {top:0;bottom:auto;left:0;width:var(--tabs-indicator-height, 2px);height:var(--tabs-indicator-height, 2px);border-radius:var(--tabs-indicator-border-radius-vertical, 0 2px 2px 0);transition:var(--tabs-indicator-transition-vertical, top 0.3s ease, height 0.3s ease);}\n\n /* Section header rendered above a group of vertical nav items. */.tabs-section-label.svelte-18eaq6o {padding:var(--tabs-section-label-padding, 12px 16px 4px);font-size:var(--tabs-section-label-font-size, 11px);font-weight:var(--tabs-section-label-font-weight, 700);letter-spacing:var(--tabs-section-label-letter-spacing, 0.04em);text-transform:var(--tabs-section-label-text-transform, uppercase);color:var(--tabs-section-label-color, var(--tabs-item-color, #666666));white-space:nowrap;user-select:none;}\n\n @media (prefers-reduced-motion: reduce) {.tabs-indicator.svelte-18eaq6o,\n .tabs-wrapper.vertical.svelte-18eaq6o .tabs-indicator:where(.svelte-18eaq6o) {transition:none;}\n }"
14237
+ code: ".tabs-wrapper.svelte-18eaq6o {display:flex;align-items:stretch;position:relative;max-width:100%;background:var(--tabs-bar-background, #ffffff);border-bottom:var(--tabs-bar-border-bottom, 1px solid #e0e0e0);border-radius:var(--tabs-bar-border-radius, 0);}.tabs-wrapper.disabled.svelte-18eaq6o {opacity:var(--tabs-disabled-opacity, 0.5);pointer-events:none;}.tabs-bar.svelte-18eaq6o {display:flex;flex:1;min-width:0;padding:var(--tabs-bar-padding, 0px);gap:var(--tabs-bar-gap, 0px);overflow-x:auto;scrollbar-width:none;position:relative;}.tabs-bar.svelte-18eaq6o::-webkit-scrollbar {display:none;}\n\n /* Each fade holds FULLY transparent for the first --tabs-fade-solid px before\n ramping to opaque: a plain 0→fade-size ramp still renders the clipped tab\n label at ~20% opacity a few px from the edge, which reads as a stray glyph\n fragment beside the scroll arrow. The solid zone guarantees nothing is\n perceptible there. */.tabs-bar.fade-left.svelte-18eaq6o {mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-right.svelte-18eaq6o {mask-image:linear-gradient(\n to left,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to left,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-left.fade-right.svelte-18eaq6o {mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );-webkit-mask-image:linear-gradient(\n to right,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );}.tabs-arrow.svelte-18eaq6o {display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--tabs-arrow-size, 28px);padding:var(--tabs-arrow-padding, 0);border:var(--tabs-arrow-border, none);background:var(--tabs-arrow-background, var(--tabs-bar-background, #ffffff));color:var(--tabs-arrow-color, var(--tabs-item-color, #666666));cursor:pointer;z-index:1;transition:var(\n --tabs-arrow-transition,\n color\n var(--tabs-arrow-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--tabs-arrow-transition-easing, var(--motion-easing, ease))\n );font-family:inherit;}.tabs-arrow.svelte-18eaq6o:hover {color:var(--tabs-arrow-hover-color, var(--tabs-active-color, #0b57d0));background:var(\n --tabs-arrow-hover-background,\n var(--tabs-arrow-background, var(--tabs-bar-background, #ffffff))\n );}.tabs-item.svelte-18eaq6o {display:flex;align-items:center;gap:var(--tabs-item-gap, 8px);position:relative;padding:var(--tabs-item-padding, 12px 16px);font-size:var(--tabs-item-font-size, 14px);font-weight:var(--tabs-item-font-weight, 400);font-family:var(--tabs-item-font-family, inherit);color:var(--tabs-item-color, #666666);cursor:var(--tabs-item-cursor, pointer);background:var(--tabs-item-background, transparent);border:var(--tabs-item-border, none);border-radius:var(--tabs-item-border-radius, 0);outline:none;white-space:nowrap;flex-shrink:0;user-select:none;transition:var(\n --tabs-transition,\n color var(--tabs-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--tabs-transition-easing, var(--motion-easing, ease)),\n background var(--tabs-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--tabs-transition-easing, var(--motion-easing, ease))\n );}\n\n /* Roving focus really does move (see focusedKey/focusTabAt above) -- this\n just replaces the INDICATOR that outline:none above strips, which is what\n was actually missing (WCAG 2.4.7). :focus-visible only, so a mouse click\n that activates a tab still shows nothing new, matching the rest of this\n file's pattern (Sheet's .sheet-panel, Select's .select-clear, ...).\n currentColor tracks --tabs-item-color / --tabs-active-color, which are\n already themed per-mode and per-state, so the ring stays visible against\n --tabs-bar-background in both themes with no extra token needed here. The\n offset is inset, not the usual outward one: .tabs-bar is a same-axis\n overflow:auto scroller with 0px padding/gap by default, so an outward ring\n on an edge tab would be clipped by the scroll container's own edge. */.tabs-item.svelte-18eaq6o:focus-visible {outline:var(--tabs-item-focus-outline, 2px solid currentColor);outline-offset:var(--tabs-item-focus-outline-offset, -2px);}.tabs-item.svelte-18eaq6o .tabs-item-icon {--image-width: var(--tabs-item-icon-size, 16px);--image-height: var(--tabs-item-icon-size, 16px);--image-object-fit: contain;color:var(--tabs-item-icon-color, inherit);flex-shrink:0;}\n\n /* Reserves the active-state (bolder) width of the label so selecting a tab\n never reflows the tab bar: without this, .tabs-item.active's font-weight\n jump makes the tab (and every tab after it) physically resize, which\n visibly shifts sibling tabs and defeats the indicator's slide animation\n with a jump. The ::after ghost renders data-text at the active weight\n with height:0/visibility:hidden -- invisible, but its width still sets\n the shrink-to-fit width of the inline-block label, so the box is already\n as wide as the active state needs even while showing the lighter weight. */.tabs-item-label.svelte-18eaq6o {position:relative;display:inline-block;}.tabs-item-label.svelte-18eaq6o::after {content:attr(data-text);display:block;height:0;overflow:hidden;visibility:hidden;font-weight:var(--tabs-active-font-weight, 600);}\n\n /* Trailing status dot for nav/menu tabs. margin-left:auto pushes it to the row's\n end (e.g. a settings menu); harmless on a normal tab bar where the item shrinks\n to content. */.tabs-item-status.svelte-18eaq6o {width:var(--tabs-item-status-size, 8px);height:var(--tabs-item-status-size, 8px);margin-left:auto;border-radius:50%;flex-shrink:0;background:transparent;}\n\n /* Neutral \"has activity / configured\" dot — blue by default, matching the app's\n --text-color-focus. Maps from a settings menu's Default circle type. */.tabs-item-status.status-default.svelte-18eaq6o {background:var(--tabs-item-status-default-color, #1a73e8);}.tabs-item-status.status-pending.svelte-18eaq6o {background:var(--tabs-item-status-pending-color, #f59e0b);}.tabs-item-status.status-error.svelte-18eaq6o {background:var(--tabs-item-status-error-color, #e7000b);}.tabs-item-status.status-success.svelte-18eaq6o {background:var(--tabs-item-status-success-color, #16a34a);}.tabs-item.svelte-18eaq6o:hover:not(.active):not([aria-disabled]) {color:var(--tabs-hover-color, #333333);background:var(--tabs-hover-background, #f5f5f5);}.tabs-item.active.svelte-18eaq6o {color:var(--tabs-active-color, #0b57d0);font-weight:var(--tabs-active-font-weight, 600);background:var(--tabs-active-background, transparent);}.tabs-item[aria-disabled].svelte-18eaq6o {cursor:var(--tabs-disabled-cursor, not-allowed);}.tabs-indicator.svelte-18eaq6o {position:absolute;bottom:0;height:var(--tabs-indicator-height, 2px);background-color:var(--tabs-indicator-color, #1a73e8);border-radius:var(--tabs-indicator-border-radius, 2px 2px 0 0);transition:var(\n --tabs-indicator-transition,\n left var(--tabs-indicator-transition-duration, var(--motion-duration, 0.3s))\n var(--tabs-indicator-transition-easing, var(--motion-easing, ease)),\n width var(--tabs-indicator-transition-duration, var(--motion-duration, 0.3s))\n var(--tabs-indicator-transition-easing, var(--motion-easing, ease))\n );pointer-events:none;}\n\n /* ---------- Vertical orientation (nav / menu rail) ---------- */.tabs-wrapper.vertical.svelte-18eaq6o {flex-direction:column;align-items:stretch;max-width:none;border-bottom:none;}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-bar:where(.svelte-18eaq6o) {flex-direction:column;overflow-x:hidden;overflow-y:auto;}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-item:where(.svelte-18eaq6o) {\n /* Full-width rows: label sits at the leading edge, the status dot's margin-left:auto\n pushes it to the trailing edge (the settings-menu look). */width:100%;box-sizing:border-box;justify-content:flex-start;}.tabs-bar.fade-top.svelte-18eaq6o {mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-bottom.svelte-18eaq6o {mask-image:linear-gradient(\n to top,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );-webkit-mask-image:linear-gradient(\n to top,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px)\n );}.tabs-bar.fade-top.fade-bottom.svelte-18eaq6o {mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );-webkit-mask-image:linear-gradient(\n to bottom,\n transparent var(--tabs-fade-solid, 8px),\n black var(--tabs-fade-size, 32px),\n black calc(100% - var(--tabs-fade-size, 32px)),\n transparent calc(100% - var(--tabs-fade-solid, 8px))\n );}.tabs-wrapper.vertical.svelte-18eaq6o .tabs-indicator:where(.svelte-18eaq6o) {top:0;bottom:auto;left:0;width:var(--tabs-indicator-height, 2px);height:var(--tabs-indicator-height, 2px);border-radius:var(--tabs-indicator-border-radius-vertical, 0 2px 2px 0);transition:var(\n --tabs-indicator-transition-vertical,\n top var(--tabs-indicator-transition-vertical-duration, var(--motion-duration, 0.3s))\n var(--tabs-indicator-transition-vertical-easing, var(--motion-easing, ease)),\n height var(--tabs-indicator-transition-vertical-duration, var(--motion-duration, 0.3s))\n var(--tabs-indicator-transition-vertical-easing, var(--motion-easing, ease))\n );}\n\n /* Section header rendered above a group of vertical nav items. */.tabs-section-label.svelte-18eaq6o {padding:var(--tabs-section-label-padding, 12px 16px 4px);font-size:var(--tabs-section-label-font-size, 11px);font-weight:var(--tabs-section-label-font-weight, 700);letter-spacing:var(--tabs-section-label-letter-spacing, 0.04em);text-transform:var(--tabs-section-label-text-transform, uppercase);color:var(--tabs-section-label-color, var(--tabs-item-color, #666666));white-space:nowrap;user-select:none;}\n\n @media (prefers-reduced-motion: reduce) {.tabs-indicator.svelte-18eaq6o,\n .tabs-wrapper.vertical.svelte-18eaq6o .tabs-indicator:where(.svelte-18eaq6o) {transition:none;}\n }"
14115
14238
  };
14116
14239
  function Tabs(e, t) {
14117
14240
  push(t, !0), append_styles$1(e, $$css$132);
@@ -14652,7 +14775,7 @@ customElements.define("sui-tabs", create_custom_element(Tabs_wc, {
14652
14775
  //#region src/lib/assets/sun.svg?raw
14653
14776
  var sun_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"5\"></circle>\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"></line>\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"></line>\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"></line>\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"></line>\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"></line>\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"></line>\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"></line>\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"></line>\n</svg>\n", moon_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"></path>\n</svg>\n", monitor_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"></line>\n <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"></line>\n</svg>\n", palette_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"13.5\" cy=\"6.5\" r=\"0.5\" fill=\"currentColor\"></circle>\n <circle cx=\"17.5\" cy=\"10.5\" r=\"0.5\" fill=\"currentColor\"></circle>\n <circle cx=\"8.5\" cy=\"7.5\" r=\"0.5\" fill=\"currentColor\"></circle>\n <circle cx=\"6.5\" cy=\"12.5\" r=\"0.5\" fill=\"currentColor\"></circle>\n <path d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z\"></path>\n</svg>\n", root$70 = /* @__PURE__ */ from_html("<span><!></span>"), root_1$64 = /* @__PURE__ */ from_html("<button aria-label=\"Switch theme\"></button>"), root_2$51 = /* @__PURE__ */ from_html("<button><span class=\"icon svelte-yg7rya\"><!></span></button>"), root_3$45 = /* @__PURE__ */ from_html("<div><div class=\"segment-indicator svelte-yg7rya\"></div> <!></div>"), $$css$130 = {
14654
14777
  hash: "svelte-yg7rya",
14655
- code: ".toggle-button.svelte-yg7rya {position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--theme-switcher-size, 36px);height:var(--theme-switcher-size, 36px);padding:0;border:none;border-radius:var(--theme-switcher-border-radius, var(--radius, 4px));background-color:var(--theme-switcher-bg, transparent);cursor:pointer;color:var(--theme-switcher-icon-color, #374151);transition:background-color var(--theme-switcher-transition-duration, 0.3s);font-family:inherit;}.toggle-button.svelte-yg7rya:hover {background-color:var(--theme-switcher-bg-hover, #f3f4f6);}.toggle-button.svelte-yg7rya:active {background-color:var(--theme-switcher-bg-pressed, #e5e7eb);}.icon.svelte-yg7rya {display:inline-flex;align-items:center;justify-content:center;width:var(--theme-switcher-icon-size, 18px);height:var(--theme-switcher-icon-size, 18px);transition:opacity var(--theme-switcher-transition-duration, 0.3s),\n transform var(--theme-switcher-transition-duration, 0.3s);}.icon.svelte-yg7rya svg {width:100%;height:100%;}.toggle-button.svelte-yg7rya .icon:where(.svelte-yg7rya) {position:absolute;}.toggle-button.svelte-yg7rya .icon:where(.svelte-yg7rya):not(.active) {opacity:0;transform:scale(0.5) rotate(90deg);}.toggle-button.svelte-yg7rya .icon.active:where(.svelte-yg7rya) {opacity:1;transform:scale(1) rotate(0deg);}.segment-control.svelte-yg7rya {position:relative;display:inline-flex;align-items:center;gap:var(--theme-switcher-segment-gap, 2px);padding:var(--theme-switcher-segment-padding, 4px);background-color:var(--theme-switcher-segment-bg, #f3f4f6);border-radius:var(--theme-switcher-border-radius, var(--radius, 4px));}.segment-indicator.svelte-yg7rya {position:absolute;top:var(--theme-switcher-segment-padding, 4px);bottom:var(--theme-switcher-segment-padding, 4px);border-radius:var(--theme-switcher-segment-border-radius, var(--radius, 4px));background-color:var(--theme-switcher-segment-active-bg, #ffffff);box-shadow:var(--theme-switcher-segment-shadow, 0 1px 2px rgba(0, 0, 0, 0.1));transition:left var(--theme-switcher-transition-duration, 0.3s),\n width var(--theme-switcher-transition-duration, 0.3s);z-index:0;}.segment-button.svelte-yg7rya {position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;padding:var(--theme-switcher-segment-button-padding, 6px 10px);border:none;border-radius:var(--theme-switcher-segment-border-radius, var(--radius, 4px));background:transparent;cursor:pointer;color:var(--theme-switcher-icon-color, #374151);transition:color var(--theme-switcher-transition-duration, 0.3s);font-family:inherit;}.segment-button.selected.svelte-yg7rya {color:var(--theme-switcher-icon-color-active, #1f2937);}\n\n /* Unlike the two progress-bar loaders elsewhere in this library, every\n transition here moves between two states that are each fully meaningful\n on their own (a background tint, an icon's shown/hidden pose, the\n indicator's resting position, a label's active color) -- there is no\n in-between frame that could be misread as a different state. Dropping the\n transition just makes the swap instant instead of animated; nothing is\n stranded mid-motion the way a freeze mid-fill would be. Four separate\n rules declare `transition` in this file (toggle background, icon\n opacity/transform, segment indicator left/width, segment label color) --\n all four are covered here, not just the two the icon/indicator case calls\n out, so no motion in this component is left unguarded. Lives in the\n component's own <style> because that is the only stylesheet that reaches\n inside the shadow root a custom-element consumer gets. */\n @media (prefers-reduced-motion: reduce) {.toggle-button.svelte-yg7rya,\n .icon.svelte-yg7rya,\n .segment-indicator.svelte-yg7rya,\n .segment-button.svelte-yg7rya {transition:none;}\n }"
14778
+ code: ".toggle-button.svelte-yg7rya {position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--theme-switcher-size, 36px);height:var(--theme-switcher-size, 36px);padding:0;border:none;border-radius:var(--theme-switcher-border-radius, var(--radius, 4px));background-color:var(--theme-switcher-bg, transparent);cursor:pointer;color:var(--theme-switcher-icon-color, #374151);transition:background-color\n var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease));font-family:inherit;}.toggle-button.svelte-yg7rya:hover {background-color:var(--theme-switcher-bg-hover, #f3f4f6);}.toggle-button.svelte-yg7rya:active {background-color:var(--theme-switcher-bg-pressed, #e5e7eb);}.icon.svelte-yg7rya {display:inline-flex;align-items:center;justify-content:center;width:var(--theme-switcher-icon-size, 18px);height:var(--theme-switcher-icon-size, 18px);transition:opacity var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease)),\n transform var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease));}.icon.svelte-yg7rya svg {width:100%;height:100%;}.toggle-button.svelte-yg7rya .icon:where(.svelte-yg7rya) {position:absolute;}.toggle-button.svelte-yg7rya .icon:where(.svelte-yg7rya):not(.active) {opacity:0;transform:scale(0.5) rotate(90deg);}.toggle-button.svelte-yg7rya .icon.active:where(.svelte-yg7rya) {opacity:1;transform:scale(1) rotate(0deg);}.segment-control.svelte-yg7rya {position:relative;display:inline-flex;align-items:center;gap:var(--theme-switcher-segment-gap, 2px);padding:var(--theme-switcher-segment-padding, 4px);background-color:var(--theme-switcher-segment-bg, #f3f4f6);border-radius:var(--theme-switcher-border-radius, var(--radius, 4px));}.segment-indicator.svelte-yg7rya {position:absolute;top:var(--theme-switcher-segment-padding, 4px);bottom:var(--theme-switcher-segment-padding, 4px);border-radius:var(--theme-switcher-segment-border-radius, var(--radius, 4px));background-color:var(--theme-switcher-segment-active-bg, #ffffff);box-shadow:var(--theme-switcher-segment-shadow, 0 1px 2px rgba(0, 0, 0, 0.1));transition:left var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease)),\n width var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease));z-index:0;}.segment-button.svelte-yg7rya {position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;padding:var(--theme-switcher-segment-button-padding, 6px 10px);border:none;border-radius:var(--theme-switcher-segment-border-radius, var(--radius, 4px));background:transparent;cursor:pointer;color:var(--theme-switcher-icon-color, #374151);transition:color var(--theme-switcher-transition-duration, var(--motion-duration, 0.3s))\n var(--theme-switcher-transition-easing, var(--motion-easing, ease));font-family:inherit;}.segment-button.selected.svelte-yg7rya {color:var(--theme-switcher-icon-color-active, #1f2937);}\n\n /* Unlike the two progress-bar loaders elsewhere in this library, every\n transition here moves between two states that are each fully meaningful\n on their own (a background tint, an icon's shown/hidden pose, the\n indicator's resting position, a label's active color) -- there is no\n in-between frame that could be misread as a different state. Dropping the\n transition just makes the swap instant instead of animated; nothing is\n stranded mid-motion the way a freeze mid-fill would be. Four separate\n rules declare `transition` in this file (toggle background, icon\n opacity/transform, segment indicator left/width, segment label color) --\n all four are covered here, not just the two the icon/indicator case calls\n out, so no motion in this component is left unguarded. Lives in the\n component's own <style> because that is the only stylesheet that reaches\n inside the shadow root a custom-element consumer gets. */\n @media (prefers-reduced-motion: reduce) {.toggle-button.svelte-yg7rya,\n .icon.svelte-yg7rya,\n .segment-indicator.svelte-yg7rya,\n .segment-button.svelte-yg7rya {transition:none;}\n }"
14656
14779
  };
14657
14780
  function ThemeSwitcher(e, t) {
14658
14781
  push(t, !0), append_styles$1(e, $$css$130);
@@ -14842,7 +14965,7 @@ customElements.define("sui-theme-switcher", create_custom_element(ThemeSwitcher_
14842
14965
  //#region src/lib/Toggle/Toggle.svelte
14843
14966
  var root$69 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-1kpnf4s\"> </div>"), root_1$63 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-1kpnf4s\"> </div>"), root_2$50 = /* @__PURE__ */ from_html("<div><label class=\"text svelte-1kpnf4s\"> </label> <label class=\"switch svelte-1kpnf4s\"><input class=\"input-checkbox svelte-1kpnf4s\" type=\"checkbox\"/> <span class=\"slider round svelte-1kpnf4s\"></span></label></div> <!> <!>", 1), $$css$128 = {
14844
14967
  hash: "svelte-1kpnf4s",
14845
- code: ".container.svelte-1kpnf4s {display:var(--toggle-container-display, flex);align-items:var(--toggle-container-align-items, center);gap:var(--toggle-container-gap, 8px);}.container.disabled.svelte-1kpnf4s {opacity:var(--toggle-disabled-opacity, 0.4);cursor:not-allowed;pointer-events:none;}.text.svelte-1kpnf4s {font-size:var(--toggle-text-font-size, 14px);font-weight:var(--toggle-text-font-weight, 400);color:var(--toggle-text-color, #4a4a4a);margin:var(--toggle-text-margin, 0px 8px 0px 0px);order:var(--toggle-text-order, 0);}.switch.svelte-1kpnf4s {position:relative;display:inline-block;width:var(--toggle-switch-width, 46px);height:var(--toggle-switch-height, 25px);}.switch.svelte-1kpnf4s .input-checkbox:where(.svelte-1kpnf4s) {opacity:0;width:0;height:0;}.slider.svelte-1kpnf4s {position:absolute;cursor:pointer;top:var(--toggle-slider-top, 0);left:var(--toggle-slider-left, 0);right:var(--toggle-slider-right, 0);bottom:var(--toggle-slider-bottom, 0);background-color:var(--slider-unchecked-color, #ccc);-webkit-transition:var(\n --toggle-slider-transition,\n all var(--toggle-slider-transition-duration, var(--motion-duration, 0.4s))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );transition:var(\n --toggle-slider-transition,\n all var(--toggle-slider-transition-duration, var(--motion-duration, 0.4s))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );}.slider.svelte-1kpnf4s:before {position:absolute;content:'';height:var(--toggle-ball-height, 23px);width:var(--toggle-ball-width, 23px);left:var(--toggle-slider-before-left, 2px);bottom:var(--toggle-slider-before-bottom, 1px);top:var(--toggle-slider-before-top, 1px);background-color:var(--toggle-slider-before-background-color, white);-webkit-transition:var(\n --toggle-slider-transition,\n all var(--toggle-slider-transition-duration, var(--motion-duration, 0.4s))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );transition:var(\n --toggle-slider-transition,\n all var(--toggle-slider-transition-duration, var(--motion-duration, 0.4s))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );}.input-checkbox.svelte-1kpnf4s:checked + .slider:where(.svelte-1kpnf4s) {background-color:var(--slider-checked-color, #2196f3);}.input-checkbox.svelte-1kpnf4s:focus + .slider:where(.svelte-1kpnf4s) {box-shadow:var(--toggle-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.input-checkbox.svelte-1kpnf4s:checked + .slider:where(.svelte-1kpnf4s):before {-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.slider.round.svelte-1kpnf4s {border-radius:var(--slider-border-radius, 23px);}.slider.round.svelte-1kpnf4s:before {border-radius:var(--slider-border-radius-before, 50%);}.field-error.svelte-1kpnf4s {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-1kpnf4s {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
14968
+ code: ".container.svelte-1kpnf4s {display:var(--toggle-container-display, flex);align-items:var(--toggle-container-align-items, center);gap:var(--toggle-container-gap, 8px);}.container.disabled.svelte-1kpnf4s {opacity:var(--toggle-disabled-opacity, 0.4);cursor:not-allowed;pointer-events:none;}.text.svelte-1kpnf4s {font-size:var(--toggle-text-font-size, 14px);font-weight:var(--toggle-text-font-weight, 400);color:var(--toggle-text-color, #4a4a4a);margin:var(--toggle-text-margin, 0px 8px 0px 0px);order:var(--toggle-text-order, 0);}.switch.svelte-1kpnf4s {position:relative;display:inline-block;width:var(--toggle-switch-width, 46px);height:var(--toggle-switch-height, 25px);}.switch.svelte-1kpnf4s .input-checkbox:where(.svelte-1kpnf4s) {opacity:0;width:0;height:0;}.slider.svelte-1kpnf4s {position:absolute;cursor:pointer;top:var(--toggle-slider-top, 0);left:var(--toggle-slider-left, 0);right:var(--toggle-slider-right, 0);bottom:var(--toggle-slider-bottom, 0);background-color:var(--slider-unchecked-color, #ccc);-webkit-transition:var(\n --toggle-slider-transition,\n all\n var(--toggle-slider-transition-duration, var(--duration-slow, var(--motion-duration, 0.4s)))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );transition:var(\n --toggle-slider-transition,\n all\n var(--toggle-slider-transition-duration, var(--duration-slow, var(--motion-duration, 0.4s)))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );}.slider.svelte-1kpnf4s:before {position:absolute;content:'';height:var(--toggle-ball-height, 23px);width:var(--toggle-ball-width, 23px);left:var(--toggle-slider-before-left, 2px);bottom:var(--toggle-slider-before-bottom, 1px);top:var(--toggle-slider-before-top, 1px);background-color:var(--toggle-slider-before-background-color, white);-webkit-transition:var(\n --toggle-slider-transition,\n all\n var(--toggle-slider-transition-duration, var(--duration-slow, var(--motion-duration, 0.4s)))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );transition:var(\n --toggle-slider-transition,\n all\n var(--toggle-slider-transition-duration, var(--duration-slow, var(--motion-duration, 0.4s)))\n var(--toggle-slider-transition-easing, var(--motion-easing, ease))\n );}.input-checkbox.svelte-1kpnf4s:checked + .slider:where(.svelte-1kpnf4s) {background-color:var(--slider-checked-color, #2196f3);}.input-checkbox.svelte-1kpnf4s:focus + .slider:where(.svelte-1kpnf4s) {box-shadow:var(--toggle-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.input-checkbox.svelte-1kpnf4s:checked + .slider:where(.svelte-1kpnf4s):before {-webkit-transform:translateX(19px);-ms-transform:translateX(19px);transform:translateX(19px);}.slider.round.svelte-1kpnf4s {border-radius:var(--slider-border-radius, 23px);}.slider.round.svelte-1kpnf4s:before {border-radius:var(--slider-border-radius-before, 50%);}.field-error.svelte-1kpnf4s {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-1kpnf4s {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}"
14846
14969
  };
14847
14970
  function Toggle(e, t) {
14848
14971
  let n = props_id();
@@ -15108,7 +15231,7 @@ customElements.define("sui-toggle", create_custom_element(Toggle_wc, {
15108
15231
  //#region src/lib/Accordion/Accordion.svelte
15109
15232
  var root$68 = /* @__PURE__ */ from_html("<div role=\"button\"><!></div>"), root_1$62 = /* @__PURE__ */ from_html("<!> <div><div class=\"accordion-content svelte-1p9ezsm\"><!></div></div>", 1), $$css$126 = {
15110
15233
  hash: "svelte-1p9ezsm",
15111
- code: ".accordion-trigger.svelte-1p9ezsm {cursor:var(--accordion-trigger-cursor, pointer);}.accordion-trigger.disabled.svelte-1p9ezsm {cursor:var(--accordion-trigger-disabled-cursor, not-allowed);}.accordion.svelte-1p9ezsm {display:grid;grid-template-rows:0fr;overflow:hidden;\n /* overflow: hidden drops this element's automatic minimum size to zero, so\n when it is placed as an item of a consumer's own grid or flex container\n it is otherwise free to be stretched down to whatever size that\n container hands it -- as small as 0px -- independent of how tall its\n own children actually are (issue #550). align-self: start opts the\n panel out of that stretch so it always sizes from its own expanded\n content instead. It is inert when the panel is not a grid or flex item,\n and does not change the collapse animation: collapsed still resolves\n to 0px either way.\n\n Exposed as --accordion-align-self rather than hardcoded: Svelte's\n scoped class raises .accordion's specificity above a plain utility\n class passed through `classes`, so a consumer who legitimately wants\n the panel stretched (or centered, etc.) could not otherwise override\n this one declaration without reaching for :global() or !important. */align-self:var(--accordion-align-self, start);transition:grid-template-rows var(--accordion-transition, 0.2s ease-out);}.accordion.expanded.svelte-1p9ezsm {grid-template-rows:1fr;}\n\n /* The expand/collapse is a real size change, which is what the preference is\n about, and nothing was stopping it: DESIGN_PRINCIPLES.md section 1 reasons a\n finite transition needs no guard because --motion-duration handles it, but\n this rule reads --accordion-transition, and no stylesheet in this library\n assigns either token -- both exist purely as fallback rungs for a consumer to\n reach. Safe to drop outright because the transition is finite: the panel\n lands open or closed rather than stranded part-way, unlike an indefinite\n animation collapsed onto its 0% keyframe.\n\n Declared on `.accordion` to match the base rule's specificity and placed\n after it, so it wins; `.accordion.expanded` sets only grid-template-rows and\n never re-declares the transition, so it cannot silently override this. */\n @media (prefers-reduced-motion: reduce) {.accordion.svelte-1p9ezsm {transition:none;}\n }.accordion-content.svelte-1p9ezsm {min-height:0;}"
15234
+ code: ".accordion-trigger.svelte-1p9ezsm {cursor:var(--accordion-trigger-cursor, pointer);}.accordion-trigger.disabled.svelte-1p9ezsm {cursor:var(--accordion-trigger-disabled-cursor, not-allowed);}.accordion.svelte-1p9ezsm {display:grid;grid-template-rows:0fr;overflow:hidden;\n /* overflow: hidden drops this element's automatic minimum size to zero, so\n when it is placed as an item of a consumer's own grid or flex container\n it is otherwise free to be stretched down to whatever size that\n container hands it -- as small as 0px -- independent of how tall its\n own children actually are (issue #550). align-self: start opts the\n panel out of that stretch so it always sizes from its own expanded\n content instead. It is inert when the panel is not a grid or flex item,\n and does not change the collapse animation: collapsed still resolves\n to 0px either way.\n\n Exposed as --accordion-align-self rather than hardcoded: Svelte's\n scoped class raises .accordion's specificity above a plain utility\n class passed through `classes`, so a consumer who legitimately wants\n the panel stretched (or centered, etc.) could not otherwise override\n this one declaration without reaching for :global() or !important. */align-self:var(--accordion-align-self, start);transition:grid-template-rows\n var(\n --accordion-transition,\n var(--accordion-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--accordion-transition-easing, var(--ease-out, var(--motion-easing, ease-out)))\n );}.accordion.expanded.svelte-1p9ezsm {grid-template-rows:1fr;}\n\n /* The expand/collapse is a real size change, which is what the preference is\n about, and nothing was stopping it: DESIGN_PRINCIPLES.md section 1 reasons a\n finite transition needs no guard because --motion-duration handles it, but\n this rule reads --accordion-transition, and no stylesheet in this library\n assigns either token -- both exist purely as fallback rungs for a consumer to\n reach. Safe to drop outright because the transition is finite: the panel\n lands open or closed rather than stranded part-way, unlike an indefinite\n animation collapsed onto its 0% keyframe.\n\n Declared on `.accordion` to match the base rule's specificity and placed\n after it, so it wins; `.accordion.expanded` sets only grid-template-rows and\n never re-declares the transition, so it cannot silently override this. */\n @media (prefers-reduced-motion: reduce) {.accordion.svelte-1p9ezsm {transition:none;}\n }.accordion-content.svelte-1p9ezsm {min-height:0;}"
15112
15235
  };
15113
15236
  function Accordion(e, t) {
15114
15237
  let n = props_id();
@@ -15257,10 +15380,6 @@ function cubic_out(e) {
15257
15380
  let t = e - 1;
15258
15381
  return t * t * t + 1;
15259
15382
  }
15260
- function split_css_unit(e) {
15261
- let t = typeof e == "string" && e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);
15262
- return t ? [parseFloat(t[1]), t[2] || "px"] : [e, "px"];
15263
- }
15264
15383
  function fade(e, { delay: t = 0, duration: n = 400, easing: i = linear } = {}) {
15265
15384
  let a = +getComputedStyle(e).opacity;
15266
15385
  return {
@@ -15270,17 +15389,6 @@ function fade(e, { delay: t = 0, duration: n = 400, easing: i = linear } = {}) {
15270
15389
  css: (e) => `opacity: ${e * a}`
15271
15390
  };
15272
15391
  }
15273
- function fly(e, { delay: t = 0, duration: n = 400, easing: i = cubic_out, x: a = 0, y: o = 0, opacity: s = 0 } = {}) {
15274
- let c = getComputedStyle(e), l = +c.opacity, u = c.transform === "none" ? "" : c.transform, f = l * (1 - s), [p, h] = split_css_unit(a), [S, C] = split_css_unit(o);
15275
- return {
15276
- delay: t,
15277
- duration: n,
15278
- easing: i,
15279
- css: (e, t) => `
15280
- transform: ${u} translate(${(1 - e) * p}${h}, ${(1 - e) * S}${C});
15281
- opacity: ${l - f * t}`
15282
- };
15283
- }
15284
15392
  var slide_warning = !1;
15285
15393
  function slide(e, { delay: t = 0, duration: n = 400, easing: i = cubic_out, axis: a = "y" } = {}) {
15286
15394
  let o = getComputedStyle(e), s = +o.opacity, c = a === "y" ? "height" : "width", l = parseFloat(o[c]), u = a === "y" ? ["top", "bottom"] : ["left", "right"], f = u.map((e) => `${e[0].toUpperCase()}${e.slice(1)}`), p = parseFloat(o[`padding${f[0]}`]), h = parseFloat(o[`padding${f[1]}`]), S = parseFloat(o[`margin${f[0]}`]), C = parseFloat(o[`margin${f[1]}`]), k = parseFloat(o[`border${f[0]}Width`]), R = parseFloat(o[`border${f[1]}Width`]);
@@ -16155,7 +16263,7 @@ function moveWithinChoiceboxGroup(e, t) {
16155
16263
  //#region src/lib/Choicebox/Choicebox.svelte
16156
16264
  var root$62 = /* @__PURE__ */ from_html("<span class=\"indicator-icon svelte-1s9or1q\"></span>"), root_1$58 = /* @__PURE__ */ from_html("<span aria-hidden=\"true\"><!></span>"), root_2$47 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"field-error svelte-1s9or1q\"> </div>"), root_3$42 = /* @__PURE__ */ from_html("<div class=\"field-info svelte-1s9or1q\"> </div>"), root_4$37 = /* @__PURE__ */ from_html("<div><input class=\"native-control svelte-1s9or1q\" aria-hidden=\"true\"/> <!> <!></div> <!> <!>", 1), $$css$117 = {
16157
16265
  hash: "svelte-1s9or1q",
16158
- code: ".native-control.svelte-1s9or1q {position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none;}.field-error.svelte-1s9or1q {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-1s9or1q {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}.choicebox.svelte-1s9or1q {display:var(--choicebox-display, flex);align-items:var(--choicebox-align-items, center);padding:var(--choicebox-padding, 16px);border:var(--choicebox-border, 2px solid #d0d0d0);border-radius:var(--choicebox-border-radius, var(--radius, 4px));background:var(--choicebox-background, #ffffff);gap:var(--choicebox-gap, 12px);cursor:var(--choicebox-cursor, pointer);font-family:var(--choicebox-font-family, inherit);transition:var(--choicebox-transition, border-color 0.2s, background 0.2s);-webkit-tap-highlight-color:transparent;}.choicebox.svelte-1s9or1q:focus-visible {outline:none;box-shadow:var(--choicebox-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}\n\n /* Exclude the selected state from hover: without :not(.selected) this rule\n (specificity 0,3,0) outranks .choicebox.selected (0,2,0), so hovering a\n selected card repaints it with the neutral hover border/fill until the\n cursor leaves. Excluding selected lets .choicebox.selected show through. */.choicebox.svelte-1s9or1q:not(.disabled):not(.selected):hover {border-color:var(--choicebox-hover-border-color, #9e9e9e);background:var(--choicebox-hover-background, var(--choicebox-background, #ffffff));}.choicebox.selected.svelte-1s9or1q {border-color:var(--choicebox-selected-border-color, #2196f3);background:var(--choicebox-selected-background, var(--choicebox-background, #ffffff));}.choicebox.disabled.svelte-1s9or1q {opacity:var(--choicebox-disabled-opacity, 0.4);cursor:var(--choicebox-disabled-cursor, not-allowed);}.indicator.svelte-1s9or1q {flex:0 0 auto;order:var(--choicebox-indicator-order, 1);margin-inline-start:var(--choicebox-indicator-margin-inline-start, auto);display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--choicebox-indicator-size, 20px);height:var(--choicebox-indicator-size, 20px);border:var(--choicebox-indicator-border, 2px solid #757575);background:var(--choicebox-indicator-background, transparent);transition:var(--choicebox-indicator-transition, background 0.2s, border-color 0.2s);}.indicator.radio.svelte-1s9or1q {border-radius:50%;}.indicator.checkbox.svelte-1s9or1q {border-radius:var(--choicebox-indicator-border-radius, var(--radius, 4px));}.indicator.selected.svelte-1s9or1q {border:var(--choicebox-indicator-selected-border, 2px solid #2196f3);background:var(--choicebox-indicator-selected-background, #2196f3);}.indicator.radio.selected.svelte-1s9or1q {box-shadow:inset 0 0 0 var(--choicebox-indicator-dot-inset, 4px)\n var(--choicebox-background, #ffffff);}.indicator-icon.svelte-1s9or1q {display:flex;width:var(--choicebox-indicator-icon-size, 14px);height:var(--choicebox-indicator-icon-size, 14px);color:var(--choicebox-indicator-icon-color, #ffffff);}.indicator-icon.svelte-1s9or1q svg {width:100%;height:100%;}"
16266
+ code: ".native-control.svelte-1s9or1q {position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none;}.field-error.svelte-1s9or1q {color:var(--field-error-color, #c5120a);font-size:var(--field-error-font-size, 12px);margin:var(--field-error-margin, 4px 0 0 0);}.field-info.svelte-1s9or1q {color:var(--field-info-color, #6b7280);font-size:var(--field-info-font-size, 12px);margin:var(--field-info-margin, 4px 0 0 0);}.choicebox.svelte-1s9or1q {display:var(--choicebox-display, flex);align-items:var(--choicebox-align-items, center);padding:var(--choicebox-padding, 16px);border:var(--choicebox-border, 2px solid #d0d0d0);border-radius:var(--choicebox-border-radius, var(--radius, 4px));background:var(--choicebox-background, #ffffff);gap:var(--choicebox-gap, 12px);cursor:var(--choicebox-cursor, pointer);font-family:var(--choicebox-font-family, inherit);transition:var(\n --choicebox-transition,\n border-color\n var(--choicebox-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--choicebox-transition-easing, var(--motion-easing, ease)),\n background\n var(--choicebox-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--choicebox-transition-easing, var(--motion-easing, ease))\n );-webkit-tap-highlight-color:transparent;}.choicebox.svelte-1s9or1q:focus-visible {outline:none;box-shadow:var(--choicebox-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}\n\n /* Exclude the selected state from hover: without :not(.selected) this rule\n (specificity 0,3,0) outranks .choicebox.selected (0,2,0), so hovering a\n selected card repaints it with the neutral hover border/fill until the\n cursor leaves. Excluding selected lets .choicebox.selected show through. */.choicebox.svelte-1s9or1q:not(.disabled):not(.selected):hover {border-color:var(--choicebox-hover-border-color, #9e9e9e);background:var(--choicebox-hover-background, var(--choicebox-background, #ffffff));}.choicebox.selected.svelte-1s9or1q {border-color:var(--choicebox-selected-border-color, #2196f3);background:var(--choicebox-selected-background, var(--choicebox-background, #ffffff));}.choicebox.disabled.svelte-1s9or1q {opacity:var(--choicebox-disabled-opacity, 0.4);cursor:var(--choicebox-disabled-cursor, not-allowed);}.indicator.svelte-1s9or1q {flex:0 0 auto;order:var(--choicebox-indicator-order, 1);margin-inline-start:var(--choicebox-indicator-margin-inline-start, auto);display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--choicebox-indicator-size, 20px);height:var(--choicebox-indicator-size, 20px);border:var(--choicebox-indicator-border, 2px solid #757575);background:var(--choicebox-indicator-background, transparent);transition:var(\n --choicebox-indicator-transition,\n background\n var(\n --choicebox-indicator-transition-duration,\n var(--duration-base, var(--motion-duration, 0.2s))\n )\n var(--choicebox-indicator-transition-easing, var(--motion-easing, ease)),\n border-color\n var(\n --choicebox-indicator-transition-duration,\n var(--duration-base, var(--motion-duration, 0.2s))\n )\n var(--choicebox-indicator-transition-easing, var(--motion-easing, ease))\n );}.indicator.radio.svelte-1s9or1q {border-radius:50%;}.indicator.checkbox.svelte-1s9or1q {border-radius:var(--choicebox-indicator-border-radius, var(--radius, 4px));}.indicator.selected.svelte-1s9or1q {border:var(--choicebox-indicator-selected-border, 2px solid #2196f3);background:var(--choicebox-indicator-selected-background, #2196f3);}.indicator.radio.selected.svelte-1s9or1q {box-shadow:inset 0 0 0 var(--choicebox-indicator-dot-inset, 4px)\n var(--choicebox-background, #ffffff);}.indicator-icon.svelte-1s9or1q {display:flex;width:var(--choicebox-indicator-icon-size, 14px);height:var(--choicebox-indicator-icon-size, 14px);color:var(--choicebox-indicator-icon-color, #ffffff);}.indicator-icon.svelte-1s9or1q svg {width:100%;height:100%;}"
16159
16267
  };
16160
16268
  function Choicebox(e, t) {
16161
16269
  let n = props_id();
@@ -17262,80 +17370,96 @@ var root$57 = /* @__PURE__ */ from_html("<div class=\"context-menu-separator sve
17262
17370
  };
17263
17371
  function ContextMenu(e, t) {
17264
17372
  push(t, !0), append_styles$1(e, $$css$109);
17265
- let n = prop(t, "items", 7), i = prop(t, "open", 15, !1), a = prop(t, "maxHeight", 7, "240px"), o = prop(t, "testId", 7), s = prop(t, "children", 7), c = prop(t, "onselect", 7), l = prop(t, "onopen", 7), u = prop(t, "onclose", 7), f = prop(t, "classes", 7), p = /* @__PURE__ */ state(null), h = /* @__PURE__ */ state(null), S = /* @__PURE__ */ state(-1), C = /* @__PURE__ */ state(0), k = /* @__PURE__ */ state(0), R = /* @__PURE__ */ state(null), te = /* @__PURE__ */ user_derived(() => n().filter((e) => !e.separator && !e.disabled)), ne = null;
17266
- function re() {
17267
- ne !== null && (cancelAnimationFrame(ne), ne = null);
17373
+ let n = prop(t, "items", 7), i = prop(t, "open", 15, !1), a = prop(t, "maxHeight", 7, "240px"), o = prop(t, "testId", 7), s = prop(t, "children", 7), c = prop(t, "onselect", 7), l = prop(t, "onopen", 7), u = prop(t, "onclose", 7), f = prop(t, "classes", 7), p = /* @__PURE__ */ state(null), h = /* @__PURE__ */ state(null), S = /* @__PURE__ */ state(-1), C = /* @__PURE__ */ state(0), k = /* @__PURE__ */ state(0), R = /* @__PURE__ */ state(null), te = {
17374
+ y: 12,
17375
+ durationTokens: [
17376
+ "--context-menu-panel-transition-duration",
17377
+ "--duration-quick",
17378
+ "--motion-duration"
17379
+ ],
17380
+ fallbackDuration: 150,
17381
+ distanceTokens: ["--context-menu-panel-transition-distance", "--distance-medium"],
17382
+ fallbackDistance: 12,
17383
+ easingTokens: [
17384
+ "--context-menu-panel-transition-easing",
17385
+ "--ease-smooth-out",
17386
+ "--motion-easing"
17387
+ ]
17388
+ }, ne = /* @__PURE__ */ user_derived(() => n().filter((e) => !e.separator && !e.disabled)), re = null;
17389
+ function G() {
17390
+ re !== null && (cancelAnimationFrame(re), re = null);
17268
17391
  }
17269
- function G(e, t) {
17270
- set(C, e, !0), set(k, t, !0), i(!0), set(S, 0), l()?.(), re(), ne = requestAnimationFrame(() => {
17271
- ne = null, Re(), Ue(0);
17392
+ function be(e, t) {
17393
+ set(C, e, !0), set(k, t, !0), i(!0), set(S, 0), l()?.(), G(), re = requestAnimationFrame(() => {
17394
+ re = null, Ue(), it(0);
17272
17395
  });
17273
17396
  }
17274
- function be() {
17275
- re(), i(!1), set(S, -1), u()?.();
17397
+ function Me() {
17398
+ if (!i()) return;
17399
+ G(), i(!1), set(S, -1), u()?.();
17276
17400
  let e = get(R);
17277
17401
  if (set(R, null), e === null) return;
17278
17402
  let t = getActiveElement(e);
17279
17403
  (t === null || t === document.body || (get(p)?.contains(t) ?? !1)) && e.focus();
17280
17404
  }
17281
- function Me(e) {
17282
- e.disabled || (c()?.(e), be());
17405
+ function Re(e) {
17406
+ !i() || e.disabled || (c()?.(e), Me());
17283
17407
  }
17284
- function Re() {
17408
+ function Ue() {
17285
17409
  if (get(p) === null) return;
17286
17410
  let e = get(p).getBoundingClientRect(), t = window.innerWidth, n = window.innerHeight;
17287
17411
  get(C) + e.width > t && set(C, t - e.width - 4), get(k) + e.height > n && set(k, n - e.height - 4), get(C) < 0 && set(C, 4), get(k) < 0 && set(k, 4);
17288
17412
  }
17289
- function Ue(e) {
17413
+ function it(e) {
17290
17414
  if (get(p) === null) return;
17291
17415
  let t = get(p).querySelectorAll("[role=\"menuitem\"]:not([aria-disabled=\"true\"])");
17292
17416
  e >= 0 && e < t.length && t[e].focus();
17293
17417
  }
17294
- function it(e) {
17295
- return get(te).indexOf(e);
17296
- }
17297
17418
  function at(e) {
17419
+ return get(ne).indexOf(e);
17420
+ }
17421
+ function ot(e) {
17298
17422
  e.preventDefault();
17299
17423
  let t = e.target instanceof Node ? getActiveElement(e.target) : null;
17300
- set(R, t instanceof HTMLElement && t !== document.body ? t : null, !0), G(e.clientX, e.clientY);
17424
+ set(R, t instanceof HTMLElement && t !== document.body ? t : null, !0), be(e.clientX, e.clientY);
17301
17425
  }
17302
- function ot(e) {
17426
+ function ct(e) {
17303
17427
  switch (e.key) {
17304
17428
  case "ArrowDown": {
17305
17429
  e.preventDefault();
17306
17430
  let t = get(S) + 1;
17307
- set(S, t >= get(te).length ? 0 : t, !0), Ue(get(S));
17431
+ set(S, t >= get(ne).length ? 0 : t, !0), it(get(S));
17308
17432
  break;
17309
17433
  }
17310
17434
  case "ArrowUp": {
17311
17435
  e.preventDefault();
17312
17436
  let t = get(S) - 1;
17313
- set(S, t < 0 ? get(te).length - 1 : t, !0), Ue(get(S));
17437
+ set(S, t < 0 ? get(ne).length - 1 : t, !0), it(get(S));
17314
17438
  break;
17315
17439
  }
17316
17440
  case "Home":
17317
- e.preventDefault(), set(S, 0), Ue(get(S));
17441
+ e.preventDefault(), set(S, 0), it(get(S));
17318
17442
  break;
17319
17443
  case "End":
17320
- e.preventDefault(), set(S, get(te).length - 1), Ue(get(S));
17444
+ e.preventDefault(), set(S, get(ne).length - 1), it(get(S));
17321
17445
  break;
17322
17446
  case "Enter":
17323
17447
  case " ":
17324
- e.preventDefault(), get(S) >= 0 && get(S) < get(te).length && Me(get(te)[get(S)]);
17448
+ e.preventDefault(), get(S) >= 0 && get(S) < get(ne).length && Re(get(ne)[get(S)]);
17325
17449
  break;
17326
17450
  case "Tab":
17327
- be();
17451
+ Me();
17328
17452
  break;
17329
17453
  }
17330
17454
  }
17331
- function ct(e) {
17455
+ function lt(e) {
17332
17456
  return { destroy: registerDismissible({
17333
17457
  element: () => get(p),
17334
- onEscape: be,
17335
- onOutside: be
17458
+ onEscape: Me,
17459
+ onOutside: Me
17336
17460
  }) };
17337
17461
  }
17338
- var lt = {
17462
+ var ut = {
17339
17463
  get items() {
17340
17464
  return n();
17341
17465
  },
@@ -17390,22 +17514,22 @@ function ContextMenu(e, t) {
17390
17514
  set classes(e) {
17391
17515
  f(e), flushSync();
17392
17516
  }
17393
- }, ut = root_5$31(), dt = first_child(ut);
17394
- attribute_effect(dt, () => ({
17517
+ }, dt = root_5$31(), ft = first_child(dt);
17518
+ attribute_effect(ft, () => ({
17395
17519
  class: `context-menu-container ${f() ?? "" ?? ""}`,
17396
- oncontextmenu: at,
17520
+ oncontextmenu: ot,
17397
17521
  ...i() ? { role: "application" } : {},
17398
17522
  "data-pw": o(),
17399
17523
  testID: o()
17400
17524
  }), void 0, void 0, void 0, "svelte-1hf60pq");
17401
- var ft = child(dt), pt = (e) => {
17525
+ var pt = child(ft), mt = (e) => {
17402
17526
  var t = comment();
17403
17527
  snippet(first_child(t), s), append(e, t);
17404
17528
  };
17405
- if_block(ft, (e) => {
17406
- typeof s() == "function" && e(pt);
17407
- }), reset(dt), bind_this(dt, (e) => set(h, e), () => get(h));
17408
- var mt = sibling(dt, 2), ht = (e) => {
17529
+ if_block(pt, (e) => {
17530
+ typeof s() == "function" && e(mt);
17531
+ }), reset(ft), bind_this(ft, (e) => set(h, e), () => get(h));
17532
+ var ht = sibling(ft, 2), gt = (e) => {
17409
17533
  var t = root_4$34();
17410
17534
  each(t, 21, n, (e) => e.value, (e, t) => {
17411
17535
  var n = comment(), i = first_child(n), a = (e) => {
@@ -17433,20 +17557,22 @@ function ContextMenu(e, t) {
17433
17557
  "context-menu-item-danger": get(t).danger,
17434
17558
  "context-menu-item-disabled": get(t).disabled
17435
17559
  }), set_attribute(n, "tabindex", get(t).disabled ? -1 : 0), set_attribute(n, "aria-disabled", get(t).disabled ? "true" : null), set_attribute(n, "data-pw", o() ? `${o()}-item-${get(t).value}` : null), set_attribute(n, "testid", o() ? `${o()}-item-${get(t).value}` : null), set_text(l, get(t).label);
17436
- }), delegated("click", n, () => Me(get(t))), delegated("keydown", n, (e) => {
17437
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), Me(get(t)));
17560
+ }), delegated("click", n, () => Re(get(t))), delegated("keydown", n, (e) => {
17561
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), Re(get(t)));
17438
17562
  }), event("focus", n, () => {
17439
- get(t).disabled || set(S, it(get(t)), !0);
17563
+ get(t).disabled || set(S, at(get(t)), !0);
17440
17564
  }), append(e, n);
17441
17565
  };
17442
17566
  if_block(i, (e) => {
17443
17567
  get(t).separator ? e(a) : e(s, -1);
17444
17568
  }), append(e, n);
17445
- }), reset(t), bind_this(t, (e) => set(p, e), () => get(p)), action(t, (e) => ct?.(e)), template_effect(() => set_style(t, `left: ${get(C) ?? ""}px; top: ${get(k) ?? ""}px; --context-menu-max-height: ${a() ?? ""};`)), delegated("keydown", t, ot), append(e, t);
17569
+ }), reset(t), bind_this(t, (e) => set(p, e), () => get(p)), action(t, (e) => lt?.(e)), template_effect(() => {
17570
+ set_style(t, `left: ${get(C) ?? ""}px; top: ${get(k) ?? ""}px; --context-menu-max-height: ${a() ?? ""};`), t.inert = !i();
17571
+ }), delegated("keydown", t, ct), transition(1, t, () => tokenizedFly, () => te), transition(2, t, () => tokenizedFly, () => te), append(e, t);
17446
17572
  };
17447
- return if_block(mt, (e) => {
17448
- i() && e(ht);
17449
- }), append(e, ut), pop(lt);
17573
+ return if_block(ht, (e) => {
17574
+ i() && e(gt);
17575
+ }), append(e, dt), pop(ut);
17450
17576
  }
17451
17577
  delegate(["keydown", "click"]), create_custom_element(ContextMenu, {
17452
17578
  items: {},
@@ -18388,7 +18514,22 @@ function Menu(e, t) {
18388
18514
  let e = get(G).getBoundingClientRect(), t = get(be).getBoundingClientRect(), n = window.innerWidth, i = window.innerHeight, a = e.left + t.width > n - 8, o = e.right - t.width >= 8, s = a && o ? "right" : "left", c = e.bottom + t.height > i - 8, l = e.top - t.height >= 8;
18389
18515
  return `${c && l ? "top" : "bottom"}-${s}`;
18390
18516
  }
18391
- let pt = 4;
18517
+ let pt = 4, mt = {
18518
+ y: 12,
18519
+ durationTokens: [
18520
+ "--menu-panel-transition-duration",
18521
+ "--duration-quick",
18522
+ "--motion-duration"
18523
+ ],
18524
+ fallbackDuration: 150,
18525
+ distanceTokens: ["--menu-panel-transition-distance", "--distance-medium"],
18526
+ fallbackDistance: 12,
18527
+ easingTokens: [
18528
+ "--menu-panel-transition-easing",
18529
+ "--ease-smooth-out",
18530
+ "--motion-easing"
18531
+ ]
18532
+ };
18392
18533
  user_effect(() => {
18393
18534
  if (!ne() || !i() || typeof window > "u") return;
18394
18535
  let e = null, t = () => {
@@ -18403,12 +18544,12 @@ function Menu(e, t) {
18403
18544
  window.removeEventListener("scroll", t, { capture: !0 }), window.removeEventListener("resize", t), e !== null && cancelAnimationFrame(e);
18404
18545
  };
18405
18546
  });
18406
- let mt = (e) => {
18547
+ let ht = (e) => {
18407
18548
  let t = e.getRootNode();
18408
18549
  return t instanceof ShadowRoot ? t : document.body;
18409
- }, ht = (e) => {
18410
- if (ne()) return mt(e).appendChild(e), { destroy: () => e.remove() };
18411
- }, gt = /* @__PURE__ */ user_derived(() => {
18550
+ }, gt = (e) => {
18551
+ if (ne()) return ht(e).appendChild(e), { destroy: () => e.remove() };
18552
+ }, _t = /* @__PURE__ */ user_derived(() => {
18412
18553
  if (!ne() || !i() || get(G) === null) return "";
18413
18554
  get(it);
18414
18555
  let e = get(G).getBoundingClientRect(), t = typeof window > "u" ? {
@@ -18433,21 +18574,21 @@ function Menu(e, t) {
18433
18574
  viewport: t
18434
18575
  });
18435
18576
  return `position:fixed;left:${n}px;top:${a}px;right:auto;bottom:auto;margin:0;z-index:var(--menu-z-index,1000);`;
18436
- }), _t = /* @__PURE__ */ user_derived(() => n().filter((e) => e.separator !== !0 && e.disabled !== !0)), vt = /* @__PURE__ */ user_derived(() => new SvelteMap(get(_t).map((e, t) => [e, t])));
18437
- function yt() {
18438
- i() ? xt() : bt();
18577
+ }), vt = /* @__PURE__ */ user_derived(() => n().filter((e) => e.separator !== !0 && e.disabled !== !0)), yt = /* @__PURE__ */ user_derived(() => new SvelteMap(get(vt).map((e, t) => [e, t])));
18578
+ function bt() {
18579
+ i() ? St() : xt();
18439
18580
  }
18440
- function bt(e = null) {
18581
+ function xt(e = null) {
18441
18582
  i(!0), te() === "auto" ? (set(lt, "bottom-left"), set(ut, !0)) : (set(lt, te()), set(ut, !1));
18442
- let t = h() == null ? null : n().find((e) => e.value === h() && e.disabled !== !0) ?? null, a = e ?? (t === null ? 0 : Tt(t));
18583
+ let t = h() == null ? null : n().find((e) => e.value === h() && e.disabled !== !0) ?? null, a = e ?? (t === null ? 0 : Et(t));
18443
18584
  set(at, a, !0), l()?.(), tick().then(() => {
18444
- te() === "auto" && (set(lt, ft(), !0), set(ut, !1)), wt(a);
18585
+ te() === "auto" && (set(lt, ft(), !0), set(ut, !1)), Tt(a);
18445
18586
  });
18446
18587
  }
18447
- function xt() {
18448
- i(!1), set(at, -1), set(ot, ""), u()?.(), St();
18449
- }
18450
18588
  function St() {
18589
+ i() && (i(!1), set(at, -1), set(ot, ""), u()?.(), Ct());
18590
+ }
18591
+ function Ct() {
18451
18592
  if (get(Me) !== null) {
18452
18593
  if (s()) {
18453
18594
  let e = get(Me).querySelector("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])");
@@ -18459,79 +18600,79 @@ function Menu(e, t) {
18459
18600
  get(Me).focus({ preventScroll: !0 });
18460
18601
  }
18461
18602
  }
18462
- function Ct(e) {
18463
- e.disabled !== !0 && (c()?.(e), xt());
18464
- }
18465
18603
  function wt(e) {
18604
+ !i() || e.disabled === !0 || (c()?.(e), St());
18605
+ }
18606
+ function Tt(e) {
18466
18607
  if (get(be) === null) return;
18467
18608
  let t = get(be).querySelectorAll(`[role="${get(re)}"]:not([aria-disabled="true"])`), n = t.item(e);
18468
18609
  e >= 0 && e < t.length && n instanceof HTMLElement && n.focus();
18469
18610
  }
18470
- function Tt(e) {
18471
- return get(vt).get(e) ?? -1;
18472
- }
18473
18611
  function Et(e) {
18474
- e.key === "Enter" || e.key === " " || e.key === "ArrowDown" ? (e.preventDefault(), bt()) : e.key === "ArrowUp" && (e.preventDefault(), bt(get(_t).length - 1));
18612
+ return get(yt).get(e) ?? -1;
18475
18613
  }
18476
18614
  function Dt(e) {
18477
- e.key === "ArrowDown" ? (e.preventDefault(), bt()) : e.key === "ArrowUp" && (e.preventDefault(), bt(get(_t).length - 1));
18615
+ e.key === "Enter" || e.key === " " || e.key === "ArrowDown" ? (e.preventDefault(), xt()) : e.key === "ArrowUp" && (e.preventDefault(), xt(get(vt).length - 1));
18478
18616
  }
18479
18617
  function Ot(e) {
18618
+ e.key === "ArrowDown" ? (e.preventDefault(), xt()) : e.key === "ArrowUp" && (e.preventDefault(), xt(get(vt).length - 1));
18619
+ }
18620
+ function kt(e) {
18480
18621
  switch (e.key) {
18481
18622
  case "ArrowDown": {
18482
18623
  e.preventDefault();
18483
18624
  let t = get(at) + 1;
18484
- set(at, t >= get(_t).length ? 0 : t, !0), wt(get(at));
18625
+ set(at, t >= get(vt).length ? 0 : t, !0), Tt(get(at));
18485
18626
  break;
18486
18627
  }
18487
18628
  case "ArrowUp": {
18488
18629
  e.preventDefault();
18489
18630
  let t = get(at) - 1;
18490
- set(at, t < 0 ? get(_t).length - 1 : t, !0), wt(get(at));
18631
+ set(at, t < 0 ? get(vt).length - 1 : t, !0), Tt(get(at));
18491
18632
  break;
18492
18633
  }
18493
18634
  case "Home":
18494
- e.preventDefault(), set(at, 0), wt(get(at));
18635
+ e.preventDefault(), set(at, 0), Tt(get(at));
18495
18636
  break;
18496
18637
  case "End":
18497
- e.preventDefault(), set(at, get(_t).length - 1), wt(get(at));
18638
+ e.preventDefault(), set(at, get(vt).length - 1), Tt(get(at));
18498
18639
  break;
18499
18640
  case "Enter":
18500
18641
  case " ": {
18501
18642
  e.preventDefault();
18502
- let t = get(_t).at(get(at));
18503
- get(at) >= 0 && t !== void 0 && Ct(t);
18643
+ let t = get(vt).at(get(at));
18644
+ get(at) >= 0 && t !== void 0 && wt(t);
18504
18645
  break;
18505
18646
  }
18506
18647
  case "Tab":
18507
- xt();
18648
+ St();
18508
18649
  break;
18509
18650
  default:
18510
- e.key.length === 1 && !e.ctrlKey && !e.metaKey && (e.preventDefault(), kt(e.key));
18651
+ e.key.length === 1 && !e.ctrlKey && !e.metaKey && (e.preventDefault(), At(e.key));
18511
18652
  break;
18512
18653
  }
18513
18654
  }
18514
- function kt(e) {
18655
+ function At(e) {
18515
18656
  get(ct) !== null && clearTimeout(get(ct)), set(ot, get(ot) + e.toLowerCase()), set(ct, setTimeout(() => {
18516
18657
  set(ot, "");
18517
18658
  }, 500), !0);
18518
- let t = get(_t).findIndex((e) => e.label.toLowerCase().startsWith(get(ot)));
18519
- t >= 0 && (set(at, t, !0), wt(get(at)));
18520
- }
18521
- function At(e) {
18522
- eventHitsInside(get(be), e) || xt();
18659
+ let t = get(vt).findIndex((e) => e.label.toLowerCase().startsWith(get(ot)));
18660
+ t >= 0 && (set(at, t, !0), Tt(get(at)));
18523
18661
  }
18524
18662
  function jt(e) {
18663
+ eventHitsInside(get(be), e) || St();
18664
+ }
18665
+ function Mt(e) {
18525
18666
  return { destroy: registerDismissible({
18526
18667
  element: () => get(G),
18527
- onEscape: xt,
18528
- onOutside: At
18668
+ onEscape: St,
18669
+ onOutside: jt
18529
18670
  }) };
18530
18671
  }
18531
18672
  onDestroy(() => {
18532
18673
  get(ct) !== null && clearTimeout(get(ct));
18533
18674
  });
18534
- var Mt = {
18675
+ var Nt = {
18535
18676
  get items() {
18536
18677
  return n();
18537
18678
  },
@@ -18634,12 +18775,12 @@ function Menu(e, t) {
18634
18775
  set usePortal(e = !1) {
18635
18776
  ne(e), flushSync();
18636
18777
  }
18637
- }, Nt = root_7$23(), Pt = child(Nt), It = (e) => {
18778
+ }, Pt = root_7$23(), It = child(Pt), Lt = (e) => {
18638
18779
  var t = root_1$51(), n = child(t), a = (e) => {
18639
18780
  var t = comment();
18640
18781
  snippet(first_child(t), o, () => ({
18641
- onclick: yt,
18642
- onkeydown: Dt,
18782
+ onclick: bt,
18783
+ onkeydown: Ot,
18643
18784
  ariaHaspopup: "menu",
18644
18785
  ariaExpanded: i()
18645
18786
  })), append(e, t);
@@ -18647,12 +18788,12 @@ function Menu(e, t) {
18647
18788
  if_block(n, (e) => {
18648
18789
  typeof o() == "function" && e(a);
18649
18790
  }), reset(t), bind_this(t, (e) => set(Me, e), () => get(Me)), append(e, t);
18650
- }, Lt = (e) => {
18791
+ }, Rt = (e) => {
18651
18792
  var t = root_2$40(), n = child(t), a = (e) => {
18652
18793
  var t = comment();
18653
18794
  snippet(first_child(t), o, () => ({
18654
- onclick: yt,
18655
- onkeydown: Et,
18795
+ onclick: bt,
18796
+ onkeydown: Dt,
18656
18797
  ariaHaspopup: "menu",
18657
18798
  ariaExpanded: i()
18658
18799
  })), append(e, t);
@@ -18661,14 +18802,14 @@ function Menu(e, t) {
18661
18802
  typeof o() == "function" && e(a);
18662
18803
  }), reset(t), bind_this(t, (e) => set(Me, e), () => get(Me)), template_effect(() => {
18663
18804
  set_attribute(t, "aria-expanded", i()), set_attribute(t, "aria-label", k() ?? null);
18664
- }), delegated("click", t, yt), delegated("keydown", t, Et), append(e, t);
18805
+ }), delegated("click", t, bt), delegated("keydown", t, Dt), append(e, t);
18665
18806
  };
18666
- if_block(Pt, (e) => {
18667
- s() ? e(It) : e(Lt, -1);
18807
+ if_block(It, (e) => {
18808
+ s() ? e(Lt) : e(Rt, -1);
18668
18809
  });
18669
- var Rt = sibling(Pt, 2), zt = (e) => {
18810
+ var zt = sibling(It, 2), Bt = (e) => {
18670
18811
  var t = root_6$25();
18671
- let i;
18812
+ let o;
18672
18813
  each(t, 21, n, (e) => e.value, (e, t) => {
18673
18814
  var n = comment(), i = first_child(n), o = (e) => {
18674
18815
  append(e, root_3$36());
@@ -18699,22 +18840,22 @@ function Menu(e, t) {
18699
18840
  "menu-item-disabled": get(t).disabled === !0,
18700
18841
  "menu-item-selected": h() != null && get(t).value === h()
18701
18842
  }), set_attribute(n, "role", get(re)), set_attribute(n, "id", get(t).id), set_attribute(n, "tabindex", get(t).disabled === !0 || S() === "listbox" ? -1 : 0), set_attribute(n, "aria-disabled", get(t).disabled === !0 ? "true" : null), set_attribute(n, "aria-selected", e), set_attribute(n, "data-pw", typeof a() == "string" ? `${a()}-item-${get(t).value}` : null), set_attribute(n, "testid", typeof a() == "string" ? `${a()}-item-${get(t).value}` : null), set_text(l, get(t).label);
18702
- }, [() => S() === "listbox" ? h() == null ? get(at) === Tt(get(t)) ? !0 : null : get(t).value === h() : null]), delegated("click", n, () => Ct(get(t))), event("focus", n, () => {
18703
- get(t).disabled !== !0 && set(at, Tt(get(t)), !0);
18843
+ }, [() => S() === "listbox" ? h() == null ? get(at) === Et(get(t)) ? !0 : null : get(t).value === h() : null]), delegated("click", n, () => wt(get(t))), event("focus", n, () => {
18844
+ get(t).disabled !== !0 && set(at, Et(get(t)), !0);
18704
18845
  }), append(e, n);
18705
18846
  };
18706
18847
  if_block(i, (e) => {
18707
18848
  get(t).separator === !0 ? e(o) : e(s, -1);
18708
18849
  }), append(e, n);
18709
- }), reset(t), bind_this(t, (e) => set(be, e), () => get(be)), effect(() => bind_element_size(t, "clientWidth", (e) => set(Re, e))), effect(() => bind_element_size(t, "clientHeight", (e) => set(Ue, e))), action(t, (e) => ht?.(e)), action(t, (e) => jt?.(e)), template_effect(() => {
18710
- i = set_class(t, 1, `menu-dropdown menu-dropdown-${(te() === "auto" ? get(lt) : te()) ?? ""}`, "svelte-ahcnny", i, { "menu-dropdown-measuring": get(ut) }), set_attribute(t, "role", S()), set_attribute(t, "id", R()), set_attribute(t, "aria-label", C()), set_style(t, get(gt));
18711
- }), delegated("keydown", t, Ot), append(e, t);
18850
+ }), reset(t), bind_this(t, (e) => set(be, e), () => get(be)), effect(() => bind_element_size(t, "clientWidth", (e) => set(Re, e))), effect(() => bind_element_size(t, "clientHeight", (e) => set(Ue, e))), action(t, (e) => gt?.(e)), action(t, (e) => Mt?.(e)), template_effect(() => {
18851
+ o = set_class(t, 1, `menu-dropdown menu-dropdown-${(te() === "auto" ? get(lt) : te()) ?? ""}`, "svelte-ahcnny", o, { "menu-dropdown-measuring": get(ut) }), set_attribute(t, "role", S()), set_attribute(t, "id", R()), set_attribute(t, "aria-label", C()), t.inert = !i(), set_style(t, get(_t));
18852
+ }), delegated("keydown", t, kt), transition(1, t, () => tokenizedFly, () => mt), transition(2, t, () => tokenizedFly, () => mt), append(e, t);
18712
18853
  };
18713
- return if_block(Rt, (e) => {
18714
- i() && e(zt);
18715
- }), reset(Nt), bind_this(Nt, (e) => set(G, e), () => get(G)), template_effect(() => {
18716
- set_class(Nt, 1, `menu-container ${f() ?? "" ?? ""}`, "svelte-ahcnny"), set_attribute(Nt, "data-pw", typeof a() == "string" ? a() : null), set_attribute(Nt, "testid", typeof a() == "string" ? a() : null);
18717
- }), append(e, Nt), pop(Mt);
18854
+ return if_block(zt, (e) => {
18855
+ i() && e(Bt);
18856
+ }), reset(Pt), bind_this(Pt, (e) => set(G, e), () => get(G)), template_effect(() => {
18857
+ set_class(Pt, 1, `menu-container ${f() ?? "" ?? ""}`, "svelte-ahcnny"), set_attribute(Pt, "data-pw", typeof a() == "string" ? a() : null), set_attribute(Pt, "testid", typeof a() == "string" ? a() : null);
18858
+ }), append(e, Pt), pop(Nt);
18718
18859
  }
18719
18860
  delegate(["click", "keydown"]), create_custom_element(Menu, {
18720
18861
  items: {},
@@ -18851,8 +18992,50 @@ function ModalAnimation(e, t) {
18851
18992
  };
18852
18993
  default: return e;
18853
18994
  }
18854
- }), u = /* @__PURE__ */ user_derived(() => ({ duration: prefersReducedMotion() ? 0 : 300 })), f = /* @__PURE__ */ user_derived(() => o() == null ? i() === "top" || i() === "bottom" : o() !== "fade"), p = /* @__PURE__ */ user_derived(() => a() === "ALL");
18855
- var h = {
18995
+ }), u = /* @__PURE__ */ user_derived(() => ({ duration: prefersReducedMotion() ? 0 : 300 })), f = /* @__PURE__ */ user_derived(() => ({
18996
+ x: get(l).x,
18997
+ y: get(l).y,
18998
+ durationTokens: ["--modal-content-open-transition-duration", "--motion-duration"],
18999
+ fallbackDuration: get(l).duration,
19000
+ distanceTokens: ["--modal-content-open-transition-distance", "--distance-overlay"],
19001
+ fallbackDistance: 60,
19002
+ easingTokens: [
19003
+ "--modal-content-open-transition-easing",
19004
+ "--ease-smooth-out",
19005
+ "--motion-easing"
19006
+ ]
19007
+ })), p = /* @__PURE__ */ user_derived(() => ({
19008
+ x: get(l).x,
19009
+ y: get(l).y,
19010
+ durationTokens: ["--modal-content-close-transition-duration", "--motion-duration"],
19011
+ fallbackDuration: get(l).duration,
19012
+ distanceTokens: ["--modal-content-close-transition-distance", "--distance-overlay"],
19013
+ fallbackDistance: 60,
19014
+ easingTokens: [
19015
+ "--modal-content-close-transition-easing",
19016
+ "--ease-smooth-out",
19017
+ "--motion-easing"
19018
+ ]
19019
+ })), h = /* @__PURE__ */ user_derived(() => ({
19020
+ durationTokens: ["--modal-content-open-transition-duration", "--motion-duration"],
19021
+ fallbackDuration: get(u).duration,
19022
+ easingTokens: [
19023
+ "--modal-content-open-transition-easing",
19024
+ "--ease-smooth-out",
19025
+ "--motion-easing"
19026
+ ],
19027
+ easing: linear$1
19028
+ })), S = /* @__PURE__ */ user_derived(() => ({
19029
+ durationTokens: ["--modal-content-close-transition-duration", "--motion-duration"],
19030
+ fallbackDuration: get(u).duration,
19031
+ easingTokens: [
19032
+ "--modal-content-close-transition-easing",
19033
+ "--ease-smooth-out",
19034
+ "--motion-easing"
19035
+ ],
19036
+ easing: linear$1
19037
+ })), C = /* @__PURE__ */ user_derived(() => o() == null ? i() === "top" || i() === "bottom" : o() !== "fade"), k = /* @__PURE__ */ user_derived(() => a() === "ALL");
19038
+ var R = {
18856
19039
  get enable() {
18857
19040
  return n();
18858
19041
  },
@@ -18889,38 +19072,38 @@ function ModalAnimation(e, t) {
18889
19072
  set testId(e) {
18890
19073
  c(e), flushSync();
18891
19074
  }
18892
- }, S = comment(), C = first_child(S), k = (e) => {
19075
+ }, te = comment(), ne = first_child(te), re = (e) => {
18893
19076
  var t = comment(), n = first_child(t), i = (e) => {
18894
19077
  var t = root$54();
18895
19078
  snippet(child(t), () => s() ?? noop), reset(t), template_effect(() => {
18896
19079
  set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null);
18897
- }), transition(5, t, () => fly, () => get(l)), transition(6, t, () => fly, () => get(l)), append(e, t);
19080
+ }), transition(5, t, () => tokenizedFly, () => get(f)), transition(6, t, () => tokenizedFly, () => get(p)), append(e, t);
18898
19081
  }, a = (e) => {
18899
19082
  var t = root$54();
18900
19083
  snippet(child(t), () => s() ?? noop), reset(t), template_effect(() => {
18901
19084
  set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null);
18902
- }), transition(5, t, () => fly, () => get(l)), append(e, t);
19085
+ }), transition(5, t, () => tokenizedFly, () => get(f)), append(e, t);
18903
19086
  }, o = (e) => {
18904
19087
  var t = root$54();
18905
19088
  snippet(child(t), () => s() ?? noop), reset(t), template_effect(() => {
18906
19089
  set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null);
18907
- }), transition(5, t, () => fade, () => get(u)), transition(6, t, () => fade, () => get(u)), append(e, t);
18908
- }, h = (e) => {
19090
+ }), transition(5, t, () => tokenizedFly, () => get(h)), transition(6, t, () => tokenizedFly, () => get(S)), append(e, t);
19091
+ }, l = (e) => {
18909
19092
  var t = root$54();
18910
19093
  snippet(child(t), () => s() ?? noop), reset(t), template_effect(() => {
18911
19094
  set_attribute(t, "data-pw", typeof c() == "string" ? c() : null), set_attribute(t, "testid", typeof c() == "string" ? c() : null);
18912
- }), transition(5, t, () => fade, () => get(u)), append(e, t);
19095
+ }), transition(5, t, () => tokenizedFly, () => get(h)), append(e, t);
18913
19096
  };
18914
19097
  if_block(n, (e) => {
18915
- get(f) && get(p) ? e(i) : get(f) ? e(a, 1) : get(p) ? e(o, 2) : e(h, -1);
19098
+ get(C) && get(k) ? e(i) : get(C) ? e(a, 1) : get(k) ? e(o, 2) : e(l, -1);
18916
19099
  }), append(e, t);
18917
- }, R = (e) => {
19100
+ }, G = (e) => {
18918
19101
  var t = comment();
18919
19102
  snippet(first_child(t), () => s() ?? noop), append(e, t);
18920
19103
  };
18921
- return if_block(C, (e) => {
18922
- n() ? e(k) : e(R, -1);
18923
- }), append(e, S), pop(h);
19104
+ return if_block(ne, (e) => {
19105
+ n() ? e(re) : e(G, -1);
19106
+ }), append(e, te), pop(R);
18924
19107
  }
18925
19108
  create_custom_element(ModalAnimation, {
18926
19109
  enable: {},
@@ -18935,8 +19118,16 @@ create_custom_element(ModalAnimation, {
18935
19118
  var root$53 = /* @__PURE__ */ from_html("<div><!></div>");
18936
19119
  function OverlayAnimation(e, t) {
18937
19120
  push(t, !0);
18938
- let n = prop(t, "children", 7), i = prop(t, "testId", 7), a = prop(t, "fadeIn", 7, !1);
18939
- var o = {
19121
+ let n = prop(t, "children", 7), i = prop(t, "testId", 7), a = prop(t, "fadeIn", 7, !1), o = {
19122
+ durationTokens: ["--modal-overlay-open-transition-duration", "--motion-duration"],
19123
+ fallbackDuration: 350,
19124
+ easing: linear$1
19125
+ }, s = {
19126
+ durationTokens: ["--modal-overlay-close-transition-duration", "--motion-duration"],
19127
+ fallbackDuration: 350,
19128
+ easing: linear$1
19129
+ };
19130
+ var c = {
18940
19131
  get children() {
18941
19132
  return n();
18942
19133
  },
@@ -18955,20 +19146,20 @@ function OverlayAnimation(e, t) {
18955
19146
  set fadeIn(e = !1) {
18956
19147
  a(e), flushSync();
18957
19148
  }
18958
- }, s = comment(), c = first_child(s), l = (e) => {
19149
+ }, l = comment(), u = first_child(l), f = (e) => {
18959
19150
  var t = root$53();
18960
19151
  snippet(child(t), () => n() ?? noop), reset(t), template_effect(() => {
18961
19152
  set_attribute(t, "data-pw", typeof i() == "string" ? i() : null), set_attribute(t, "testid", typeof i() == "string" ? i() : null);
18962
- }), transition(5, t, () => fade, () => ({ duration: 350 })), transition(2, t, () => fade, () => ({ duration: 350 })), append(e, t);
18963
- }, u = (e) => {
19153
+ }), transition(5, t, () => tokenizedFly, () => o), transition(2, t, () => tokenizedFly, () => s), append(e, t);
19154
+ }, p = (e) => {
18964
19155
  var t = root$53();
18965
19156
  snippet(child(t), () => n() ?? noop), reset(t), template_effect(() => {
18966
19157
  set_attribute(t, "data-pw", typeof i() == "string" ? i() : null), set_attribute(t, "testid", typeof i() == "string" ? i() : null);
18967
- }), transition(2, t, () => fade, () => ({ duration: 350 })), append(e, t);
19158
+ }), transition(2, t, () => tokenizedFly, () => s), append(e, t);
18968
19159
  };
18969
- return if_block(c, (e) => {
18970
- a() ? e(l) : e(u, -1);
18971
- }), append(e, s), pop(o);
19160
+ return if_block(u, (e) => {
19161
+ a() ? e(f) : e(p, -1);
19162
+ }), append(e, l), pop(c);
18972
19163
  }
18973
19164
  create_custom_element(OverlayAnimation, {
18974
19165
  children: {},
@@ -18998,7 +19189,9 @@ function Modal(e, t) {
18998
19189
  }
18999
19190
  };
19000
19191
  }, Ct = () => {
19001
- set(a, !0), be()?.(), ct()?.();
19192
+ set(a, !0), bt(() => {
19193
+ be()?.(), ct()?.();
19194
+ });
19002
19195
  }, wt = (e) => {
19003
19196
  Me()?.(e);
19004
19197
  }, Tt = (e) => {
@@ -19021,7 +19214,9 @@ function Modal(e, t) {
19021
19214
  t !== null && (e.preventDefault(), t.focus());
19022
19215
  }
19023
19216
  }, At = () => {
19024
- at()?.(), ct()?.();
19217
+ bt(() => {
19218
+ at()?.(), ct()?.();
19219
+ });
19025
19220
  }, jt = (e) => {
19026
19221
  (e.key === "Enter" || e.key === " ") && get(vt) && e.target === get(n) && (e.preventDefault(), bt(() => {
19027
19222
  at()?.(), ct()?.();
@@ -20084,7 +20279,7 @@ function computeSelectDropdownPosition(e) {
20084
20279
  //#region src/lib/Select/Select.svelte
20085
20280
  var root_1$46 = /* @__PURE__ */ from_html("<div class=\"select-empty svelte-52lifo\">No results</div>"), root_2$35 = /* @__PURE__ */ from_html("<span class=\"select-option-check svelte-52lifo\"></span>"), root_3$32 = /* @__PURE__ */ from_html("<span class=\"select-option-dash svelte-52lifo\"></span>"), root_4$27 = /* @__PURE__ */ from_html("<span aria-hidden=\"true\"><!></span>"), root_5$25 = /* @__PURE__ */ from_html("<div><!> </div>"), root_6$23 = /* @__PURE__ */ from_html("<span class=\"select-option-tick svelte-52lifo\" aria-hidden=\"true\"></span>"), root_7$21 = /* @__PURE__ */ from_html("<div><!> <!> <span class=\"select-option-label svelte-52lifo\"> </span> <!></div>"), root_8$19 = /* @__PURE__ */ from_html("<div class=\"select-bottom-content svelte-52lifo\"><!></div>"), root_9$16 = /* @__PURE__ */ from_html("<!> <!>", 1), root_10$15 = /* @__PURE__ */ from_html("<input type=\"hidden\"/>"), root_11$13 = /* @__PURE__ */ from_html("<input class=\"select-search svelte-52lifo\" type=\"text\" autocomplete=\"off\"/>"), root_12$12 = /* @__PURE__ */ from_html("<span class=\"select-placeholder svelte-52lifo\"> </span>"), root_13$10 = /* @__PURE__ */ from_html("<span> </span>"), root_14$9 = /* @__PURE__ */ from_html("<button type=\"button\" class=\"select-clear svelte-52lifo\" aria-label=\"Clear selection\"><span aria-hidden=\"true\">×</span></button>"), root_15$7 = /* @__PURE__ */ from_html("<div role=\"alert\" class=\"select-error-message svelte-52lifo\"> </div>"), root_16$6 = /* @__PURE__ */ from_html("<div><input class=\"select-menu-search svelte-52lifo\" type=\"search\" aria-label=\"Search options\" autocomplete=\"off\"/> <div class=\"select-menu-list svelte-52lifo\" role=\"listbox\" tabindex=\"-1\"><!></div> <!></div>"), root_17$6 = /* @__PURE__ */ from_html("<div role=\"listbox\"><!></div>"), root_18$5 = /* @__PURE__ */ from_html("<div><!> <div><div><!> <!> <span class=\"select-arrow svelte-52lifo\"></span></div> <!></div> <!> <!></div>"), $$css$95 = {
20086
20281
  hash: "svelte-52lifo",
20087
- code: ".select.svelte-52lifo {position:relative;width:var(--select-width, 100%);font-family:var(--select-font-family, inherit);font-size:var(--select-font-size, 14px);color:var(--select-color, #333333);}.select.disabled.svelte-52lifo {opacity:var(--select-disabled-opacity, 0.5);cursor:var(--select-disabled-cursor, not-allowed);pointer-events:none;}.select-trigger.svelte-52lifo {display:flex;flex-wrap:wrap;align-items:center;gap:var(--select-trigger-gap, 4px);min-height:var(--select-trigger-min-height, 40px);padding:var(--select-trigger-padding, 8px 12px);background:var(--select-trigger-background, #ffffff);border:var(--select-trigger-border, 1px solid #cccccc);border-radius:var(--select-trigger-border-radius, var(--radius, 4px));cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:var(--select-trigger-transition, border-color 0.15s, box-shadow 0.15s);}.select-trigger.svelte-52lifo .select-left-icon {--image-width: var(--select-left-icon-size, 16px);--image-height: var(--select-left-icon-size, 16px);--image-object-fit: contain;\n\n /* The icon inlines, so a currentColor asset resolves against this. Defaults to\n `inherit` — the trigger's text colour, which is what it already did — so this is\n a hook, not a change. Without it a consumer cannot tint the icon independently\n of the label, and an icon migrated to currentColor is forced to match its label\n exactly, flattening any deliberate muted-icon/strong-label hierarchy. */color:var(--select-left-icon-color, inherit);flex:none;}.select-trigger.svelte-52lifo:hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-trigger-hover-border-color, #999999);}.select-trigger.svelte-52lifo:focus-within,\n .select.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-focus-border-color, #2563eb);box-shadow:var(--select-trigger-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}\n\n /* Pressed feedback on the trigger. `:active` only, so it lasts exactly as\n long as the pointer is down and never lingers as a stuck state the way a\n class-driven one can. */.select.svelte-52lifo:not(.disabled) .select-trigger:where(.svelte-52lifo):active {background:var(--select-trigger-pressed-background, #ededed);}\n\n /* The error border has to outrank BOTH hover and focus/open, or the field\n stops reading as invalid the moment the user enters it -- which is the one\n moment they most need to see it. Listed after them, at equal or higher\n specificity, rather than reached for with !important. */.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo),\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover,\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-error-border-color, #dc2626);}.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {box-shadow:var(--select-trigger-error-shadow, 0 0 0 2px rgba(220, 38, 38, 0.2));}.select-error-message.svelte-52lifo {margin-top:var(--select-error-message-margin-top, 4px);font-size:var(--select-error-message-font-size, 12px);color:var(--select-error-message-color, #dc2626);}.select-control.svelte-52lifo {position:relative;}.select-control.has-clear.svelte-52lifo .select-trigger:where(.svelte-52lifo) {padding-inline-end:calc(var(--select-clear-size, 18px) + 36px);}.select-control.has-clear.svelte-52lifo .select-arrow:where(.svelte-52lifo) {position:absolute;right:12px;}.select-clear.svelte-52lifo {position:absolute;right:32px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--select-clear-size, 18px);height:var(--select-clear-size, 18px);margin:0;padding:0;border:none;border-radius:var(--select-clear-border-radius, var(--radius, 4px));background:var(--select-clear-background, transparent);color:var(--select-clear-color, #666666);font-size:var(--select-clear-font-size, 16px);line-height:1;cursor:pointer;}.select-clear.svelte-52lifo:focus-visible {outline:var(--select-clear-focus-outline, 2px solid currentColor);outline-offset:2px;}.select-clear.svelte-52lifo:hover {background:var(--select-clear-hover-background, #ededed);color:var(--select-clear-hover-color, #111111);}.select-clear.svelte-52lifo:active {background:var(--select-clear-pressed-background, #e0e0e0);}.select-value.svelte-52lifo {flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-placeholder.svelte-52lifo {flex:1;color:var(--select-placeholder-color, #666666);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-search.svelte-52lifo {flex:1;min-width:60px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:inherit;padding:0;cursor:text;}.select-search.svelte-52lifo::placeholder {color:var(--select-placeholder-color, #6b7280);}.select-arrow.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-arrow-size, 16px);height:var(--select-arrow-size, 16px);color:var(--select-arrow-color, #666666);flex-shrink:0;transition:transform var(--select-arrow-transition-duration, var(--motion-duration, 0.15s))\n var(--select-arrow-transition-easing, var(--motion-easing, ease));}.select.open.svelte-52lifo .select-arrow:where(.svelte-52lifo) {transform:rotate(180deg);}.select-arrow.svelte-52lifo svg {width:100%;height:100%;}\n\n /* Anchors the in-flow panel above the trigger. `margin-top` is what the\n downward panel uses for the gap, so it has to be unset here or the panel\n sits a gap's width too high. */.select-dropdown.select-dropdown-up.svelte-52lifo {top:auto;bottom:100%;margin-top:0;margin-bottom:var(--select-dropdown-gap, 4px);}\n\n /* One-tick measuring pass for placement=\"auto\": the panel needs rendered\n dimensions before the corner is chosen, without a visible flash at the\n wrong corner. */.select-dropdown.select-dropdown-measuring.svelte-52lifo {visibility:hidden;}.select-dropdown.svelte-52lifo {position:absolute;top:100%;left:var(--select-dropdown-left, 0);right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, auto);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, auto);margin-top:var(--select-dropdown-gap, 4px);background:var(--select-dropdown-background, #ffffff);border:var(--select-dropdown-border, 1px solid #cccccc);border-radius:var(--select-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--select-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--select-dropdown-z-index, 10);}\n\n /* With the search box inside the panel, the PANEL must stop scrolling and\n the list scroll instead -- otherwise the search box scrolls away as soon\n as the user moves down the results, which is the one control they still\n need. The max-height moves down with the scrolling, so the panel keeps\n growing to fit the search box plus a list of the same height as before. */.select-dropdown.svelte-52lifo:has(> .select-menu-list:where(.svelte-52lifo)) {max-height:none;overflow-y:visible;display:flex;flex-direction:column;}.select-menu-list.svelte-52lifo {max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;}.select-menu-search.svelte-52lifo {flex:none;margin:var(--select-menu-search-margin, 6px);padding:var(--select-menu-search-padding, 6px 8px);border:var(--select-menu-search-border, 1px solid #cccccc);border-radius:var(--select-menu-search-border-radius, var(--radius, 4px));background:var(--select-menu-search-background, #ffffff);color:var(--select-menu-search-color, inherit);font-family:inherit;font-size:var(--select-menu-search-font-size, inherit);outline:none;}.select-menu-search.svelte-52lifo:focus-visible {border-color:var(--select-menu-search-focus-border-color, #2563eb);box-shadow:var(--select-menu-search-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.select-dropdown-right.svelte-52lifo {left:auto;right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, 100%);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, max-content);}.select-dropdown.select-dropdown-portal.svelte-52lifo {\n /* Portaled to <body>: fixed positioning escapes overflow/scroll ancestors\n (e.g. a table cell). Placement (top/left/width/min-width) is set inline\n from the trigger rect, so neutralise the in-flow anchoring here. */position:fixed;right:auto;margin-top:0;\n /* In the root stacking context the panel competes with modals/sheets rather\n than painting above same-container siblings, so default it into the\n top-layer band (consumers still override via --select-dropdown-z-index). */z-index:var(--select-dropdown-z-index, 1000);}.select-option.svelte-52lifo {padding:var(--select-option-padding, 8px 12px);color:var(--select-option-color, #333333);font-size:var(--select-option-font-size, inherit);cursor:pointer;transition:background var(--select-option-transition-duration, var(--motion-duration, 0.1s))\n var(--select-option-transition-easing, var(--motion-easing, ease));}\n\n /* Per-option leading icon (SelectItem.icon). Kept inline + vertically centred so\n it needs no change to the option's display and can't regress icon-less lists. */.select-option.svelte-52lifo .select-option-icon {--image-width: var(--select-option-icon-size, 16px);--image-height: var(--select-option-icon-size, 16px);--image-object-fit: contain;color:var(--select-option-icon-color, inherit);vertical-align:middle;margin-right:var(--select-option-icon-gap, 8px);}.select-option.multi.svelte-52lifo {display:flex;align-items:center;gap:var(--select-option-gap, 0);}.select-option.svelte-52lifo:hover,\n .select-option.highlighted.svelte-52lifo {background:var(--select-option-hover-background, #f0f0f0);color:var(--select-option-hover-color, var(--select-option-color, #333333));}.select-option.selected.svelte-52lifo {background:var(--select-option-selected-background, #e8f0fe);color:var(--select-option-selected-color, var(--select-option-color, #333333));}.select-option-disabled.svelte-52lifo {opacity:var(--select-option-disabled-opacity, 0.4);cursor:var(--select-option-disabled-cursor, not-allowed);pointer-events:none;}.select-option.selected.highlighted.svelte-52lifo {background:var(\n --select-option-selected-hover-background,\n var(--select-option-selected-background, #e8f0fe)\n );}\n\n /* Pressed feedback comes last, and each selector carries enough specificity\n to outrank its non-active counterpart above. An option is always hovered\n when pressed and is often selected too, so a single low-specificity rule\n earlier in the sheet would be correct in isolation and invisible in\n practice -- which is how a pressed state ends up shipping as dead CSS.\n A press on an already-selected row still has to confirm the tap landed. */.select-option.svelte-52lifo:active,\n .select-option.selected.svelte-52lifo:active,\n .select-option.selected.highlighted.svelte-52lifo:active {background:var(--select-option-pressed-background, #ededed);}.select-option-indicator.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:var(--select-option-indicator-size, 18px);height:var(--select-option-indicator-size, 18px);border:var(--select-option-indicator-border, 2px solid #757575);border-radius:var(--select-option-indicator-border-radius, var(--radius, 4px));background-color:var(--select-option-indicator-background, transparent);color:var(--select-option-indicator-color, currentColor);transition:background-color\n var(--select-option-indicator-transition-duration, var(--motion-duration, 0.15s))\n var(--select-option-indicator-transition-easing, var(--motion-easing, ease)),\n border-color var(--select-option-indicator-transition-duration, var(--motion-duration, 0.15s))\n var(--select-option-indicator-transition-easing, var(--motion-easing, ease));}.select-option-indicator.checked.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-check.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-option-indicator-check-size, 12px);height:var(--select-option-indicator-check-size, 12px);color:var(--select-option-indicator-check-color, #ffffff);}.select-option-check.svelte-52lifo svg {width:100%;height:100%;}.select-option-indicator.indeterminate.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-dash.svelte-52lifo {width:var(--select-option-indicator-dash-size, 10px);height:var(--select-option-indicator-dash-thickness, 2px);border-radius:1px;background-color:var(--select-option-indicator-dash-color, #ffffff);}.select-option.select-all.svelte-52lifo {border-bottom:var(--select-all-border, none);font-weight:var(--select-all-font-weight, inherit);}.select-empty.svelte-52lifo {padding:var(--select-empty-padding, 8px 12px);color:var(--select-empty-color, #999999);font-style:var(--select-empty-font-style, italic);font-size:var(--select-empty-font-size, inherit);}.select-bottom-content.svelte-52lifo {border-top:var(--select-bottom-content-border, none);padding:var(--select-bottom-content-padding, 8px 12px);}.select-trigger.svelte-52lifo .pill {--pill-background: var(--select-pill-background, #e0e0e0);--pill-color: var(--select-pill-color, #333333);--pill-border-radius: var(--select-pill-border-radius, 999px);--pill-padding: var(--select-pill-padding, 2px 8px);--pill-font-size: var(--select-pill-font-size, 13px);}\n\n /* Ghost hierarchy: transparent, borderless trigger */.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo) {background:var(--select-ghost-trigger-background, transparent);border-color:var(--select-ghost-trigger-border-color, transparent);box-shadow:none;}.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-ghost-trigger-hover-border-color, transparent);background:var(--select-ghost-trigger-hover-background, rgba(0, 0, 0, 0.04));}.select.ghost.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-ghost-trigger-open-border-color, transparent);background:var(--select-ghost-trigger-open-background, rgba(0, 0, 0, 0.06));box-shadow:none;}\n\n /* Single-select right-edge tick (showSelectedTick) */.select-option.tickable.svelte-52lifo {display:flex;align-items:center;gap:8px;}.select-option.tickable.svelte-52lifo .select-option-label:where(.svelte-52lifo) {flex:1 1 auto;min-width:0;}.select-option-tick.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--select-option-tick-size, 16px);height:var(--select-option-tick-size, 16px);color:var(--select-option-tick-color, #2563eb);}.select-option-tick.svelte-52lifo svg {width:100%;height:100%;}\n\n /* The chevron rotates between closed and open. Small, but it is a transform,\n and the two end states are each meaningful, so dropping the tween just makes\n the flip instant. */\n @media (prefers-reduced-motion: reduce) {.select-arrow.svelte-52lifo {transition:none;}\n }"
20282
+ code: ".select.svelte-52lifo {position:relative;width:var(--select-width, 100%);font-family:var(--select-font-family, inherit);font-size:var(--select-font-size, 14px);color:var(--select-color, #333333);}.select.disabled.svelte-52lifo {opacity:var(--select-disabled-opacity, 0.5);cursor:var(--select-disabled-cursor, not-allowed);pointer-events:none;}.select-trigger.svelte-52lifo {display:flex;flex-wrap:wrap;align-items:center;gap:var(--select-trigger-gap, 4px);min-height:var(--select-trigger-min-height, 40px);padding:var(--select-trigger-padding, 8px 12px);background:var(--select-trigger-background, #ffffff);border:var(--select-trigger-border, 1px solid #cccccc);border-radius:var(--select-trigger-border-radius, var(--radius, 4px));cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;transition:var(\n --select-trigger-transition,\n border-color\n var(\n --select-trigger-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--select-trigger-transition-easing, var(--motion-easing, ease)),\n box-shadow\n var(\n --select-trigger-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--select-trigger-transition-easing, var(--motion-easing, ease))\n );}.select-trigger.svelte-52lifo .select-left-icon {--image-width: var(--select-left-icon-size, 16px);--image-height: var(--select-left-icon-size, 16px);--image-object-fit: contain;\n\n /* The icon inlines, so a currentColor asset resolves against this. Defaults to\n `inherit` — the trigger's text colour, which is what it already did — so this is\n a hook, not a change. Without it a consumer cannot tint the icon independently\n of the label, and an icon migrated to currentColor is forced to match its label\n exactly, flattening any deliberate muted-icon/strong-label hierarchy. */color:var(--select-left-icon-color, inherit);flex:none;}.select-trigger.svelte-52lifo:hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-trigger-hover-border-color, #999999);}.select-trigger.svelte-52lifo:focus-within,\n .select.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-focus-border-color, #2563eb);box-shadow:var(--select-trigger-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}\n\n /* Pressed feedback on the trigger. `:active` only, so it lasts exactly as\n long as the pointer is down and never lingers as a stuck state the way a\n class-driven one can. */.select.svelte-52lifo:not(.disabled) .select-trigger:where(.svelte-52lifo):active {background:var(--select-trigger-pressed-background, #ededed);}\n\n /* The error border has to outrank BOTH hover and focus/open, or the field\n stops reading as invalid the moment the user enters it -- which is the one\n moment they most need to see it. Listed after them, at equal or higher\n specificity, rather than reached for with !important. */.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo),\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover,\n .select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-trigger-error-border-color, #dc2626);}.select.error.svelte-52lifo .select-trigger:where(.svelte-52lifo):focus-within,\n .select.error.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {box-shadow:var(--select-trigger-error-shadow, 0 0 0 2px rgba(220, 38, 38, 0.2));}.select-error-message.svelte-52lifo {margin-top:var(--select-error-message-margin-top, 4px);font-size:var(--select-error-message-font-size, 12px);color:var(--select-error-message-color, #dc2626);}.select-control.svelte-52lifo {position:relative;}.select-control.has-clear.svelte-52lifo .select-trigger:where(.svelte-52lifo) {padding-inline-end:calc(var(--select-clear-size, 18px) + 36px);}.select-control.has-clear.svelte-52lifo .select-arrow:where(.svelte-52lifo) {position:absolute;right:12px;}.select-clear.svelte-52lifo {position:absolute;right:32px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--select-clear-size, 18px);height:var(--select-clear-size, 18px);margin:0;padding:0;border:none;border-radius:var(--select-clear-border-radius, var(--radius, 4px));background:var(--select-clear-background, transparent);color:var(--select-clear-color, #666666);font-size:var(--select-clear-font-size, 16px);line-height:1;cursor:pointer;}.select-clear.svelte-52lifo:focus-visible {outline:var(--select-clear-focus-outline, 2px solid currentColor);outline-offset:2px;}.select-clear.svelte-52lifo:hover {background:var(--select-clear-hover-background, #ededed);color:var(--select-clear-hover-color, #111111);}.select-clear.svelte-52lifo:active {background:var(--select-clear-pressed-background, #e0e0e0);}.select-value.svelte-52lifo {flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-placeholder.svelte-52lifo {flex:1;color:var(--select-placeholder-color, #666666);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:var(--select-value-align, left);}.select-search.svelte-52lifo {flex:1;min-width:60px;border:none;outline:none;background:transparent;font-family:inherit;font-size:inherit;color:inherit;padding:0;cursor:text;}.select-search.svelte-52lifo::placeholder {color:var(--select-placeholder-color, #6b7280);}.select-arrow.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-arrow-size, 16px);height:var(--select-arrow-size, 16px);color:var(--select-arrow-color, #666666);flex-shrink:0;transition:transform\n var(--select-arrow-transition-duration, var(--duration-quick, var(--motion-duration, 0.15s)))\n var(--select-arrow-transition-easing, var(--motion-easing, ease));}.select.open.svelte-52lifo .select-arrow:where(.svelte-52lifo) {transform:rotate(180deg);}.select-arrow.svelte-52lifo svg {width:100%;height:100%;}\n\n /* Anchors the in-flow panel above the trigger. `margin-top` is what the\n downward panel uses for the gap, so it has to be unset here or the panel\n sits a gap's width too high. */.select-dropdown.select-dropdown-up.svelte-52lifo {top:auto;bottom:100%;margin-top:0;margin-bottom:var(--select-dropdown-gap, 4px);}\n\n /* One-tick measuring pass for placement=\"auto\": the panel needs rendered\n dimensions before the corner is chosen, without a visible flash at the\n wrong corner. */.select-dropdown.select-dropdown-measuring.svelte-52lifo {visibility:hidden;}.select-dropdown.svelte-52lifo {position:absolute;top:100%;left:var(--select-dropdown-left, 0);right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, auto);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, auto);margin-top:var(--select-dropdown-gap, 4px);background:var(--select-dropdown-background, #ffffff);border:var(--select-dropdown-border, 1px solid #cccccc);border-radius:var(--select-dropdown-border-radius, var(--radius, 4px));box-shadow:var(--select-dropdown-shadow, 0 4px 12px rgba(0, 0, 0, 0.1));max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;z-index:var(--select-dropdown-z-index, 10);}\n\n /* With the search box inside the panel, the PANEL must stop scrolling and\n the list scroll instead -- otherwise the search box scrolls away as soon\n as the user moves down the results, which is the one control they still\n need. The max-height moves down with the scrolling, so the panel keeps\n growing to fit the search box plus a list of the same height as before. */.select-dropdown.svelte-52lifo:has(> .select-menu-list:where(.svelte-52lifo)) {max-height:none;overflow-y:visible;display:flex;flex-direction:column;}.select-menu-list.svelte-52lifo {max-height:var(--select-dropdown-max-height, 200px);overflow-y:auto;}.select-menu-search.svelte-52lifo {flex:none;margin:var(--select-menu-search-margin, 6px);padding:var(--select-menu-search-padding, 6px 8px);border:var(--select-menu-search-border, 1px solid #cccccc);border-radius:var(--select-menu-search-border-radius, var(--radius, 4px));background:var(--select-menu-search-background, #ffffff);color:var(--select-menu-search-color, inherit);font-family:inherit;font-size:var(--select-menu-search-font-size, inherit);outline:none;}.select-menu-search.svelte-52lifo:focus-visible {border-color:var(--select-menu-search-focus-border-color, #2563eb);box-shadow:var(--select-menu-search-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.select-dropdown-right.svelte-52lifo {left:auto;right:var(--select-dropdown-right, 0);min-width:var(--select-dropdown-min-width, 100%);max-width:var(--select-dropdown-max-width, none);width:var(--select-dropdown-width, max-content);}.select-dropdown.select-dropdown-portal.svelte-52lifo {\n /* Portaled to <body>: fixed positioning escapes overflow/scroll ancestors\n (e.g. a table cell). Placement (top/left/width/min-width) is set inline\n from the trigger rect, so neutralise the in-flow anchoring here. */position:fixed;right:auto;margin-top:0;\n /* In the root stacking context the panel competes with modals/sheets rather\n than painting above same-container siblings, so default it into the\n top-layer band (consumers still override via --select-dropdown-z-index). */z-index:var(--select-dropdown-z-index, 1000);}.select-option.svelte-52lifo {padding:var(--select-option-padding, 8px 12px);color:var(--select-option-color, #333333);font-size:var(--select-option-font-size, inherit);cursor:pointer;transition:background var(--select-option-transition-duration, var(--motion-duration, 0.1s))\n var(--select-option-transition-easing, var(--motion-easing, ease));}\n\n /* Per-option leading icon (SelectItem.icon). Kept inline + vertically centred so\n it needs no change to the option's display and can't regress icon-less lists. */.select-option.svelte-52lifo .select-option-icon {--image-width: var(--select-option-icon-size, 16px);--image-height: var(--select-option-icon-size, 16px);--image-object-fit: contain;color:var(--select-option-icon-color, inherit);vertical-align:middle;margin-right:var(--select-option-icon-gap, 8px);}.select-option.multi.svelte-52lifo {display:flex;align-items:center;gap:var(--select-option-gap, 0);}.select-option.svelte-52lifo:hover,\n .select-option.highlighted.svelte-52lifo {background:var(--select-option-hover-background, #f0f0f0);color:var(--select-option-hover-color, var(--select-option-color, #333333));}.select-option.selected.svelte-52lifo {background:var(--select-option-selected-background, #e8f0fe);color:var(--select-option-selected-color, var(--select-option-color, #333333));}.select-option-disabled.svelte-52lifo {opacity:var(--select-option-disabled-opacity, 0.4);cursor:var(--select-option-disabled-cursor, not-allowed);pointer-events:none;}.select-option.selected.highlighted.svelte-52lifo {background:var(\n --select-option-selected-hover-background,\n var(--select-option-selected-background, #e8f0fe)\n );}\n\n /* Pressed feedback comes last, and each selector carries enough specificity\n to outrank its non-active counterpart above. An option is always hovered\n when pressed and is often selected too, so a single low-specificity rule\n earlier in the sheet would be correct in isolation and invisible in\n practice -- which is how a pressed state ends up shipping as dead CSS.\n A press on an already-selected row still has to confirm the tap landed. */.select-option.svelte-52lifo:active,\n .select-option.selected.svelte-52lifo:active,\n .select-option.selected.highlighted.svelte-52lifo:active {background:var(--select-option-pressed-background, #ededed);}.select-option-indicator.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;width:var(--select-option-indicator-size, 18px);height:var(--select-option-indicator-size, 18px);border:var(--select-option-indicator-border, 2px solid #757575);border-radius:var(--select-option-indicator-border-radius, var(--radius, 4px));background-color:var(--select-option-indicator-background, transparent);color:var(--select-option-indicator-color, currentColor);transition:background-color\n var(\n --select-option-indicator-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--select-option-indicator-transition-easing, var(--motion-easing, ease)),\n border-color\n var(\n --select-option-indicator-transition-duration,\n var(--duration-quick, var(--motion-duration, 0.15s))\n )\n var(--select-option-indicator-transition-easing, var(--motion-easing, ease));}.select-option-indicator.checked.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-check.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;width:var(--select-option-indicator-check-size, 12px);height:var(--select-option-indicator-check-size, 12px);color:var(--select-option-indicator-check-color, #ffffff);}.select-option-check.svelte-52lifo svg {width:100%;height:100%;}.select-option-indicator.indeterminate.svelte-52lifo {background-color:var(--select-option-indicator-checked-background, #2196f3);border-color:var(--select-option-indicator-checked-border-color, #2196f3);}.select-option-dash.svelte-52lifo {width:var(--select-option-indicator-dash-size, 10px);height:var(--select-option-indicator-dash-thickness, 2px);border-radius:1px;background-color:var(--select-option-indicator-dash-color, #ffffff);}.select-option.select-all.svelte-52lifo {border-bottom:var(--select-all-border, none);font-weight:var(--select-all-font-weight, inherit);}.select-empty.svelte-52lifo {padding:var(--select-empty-padding, 8px 12px);color:var(--select-empty-color, #999999);font-style:var(--select-empty-font-style, italic);font-size:var(--select-empty-font-size, inherit);}.select-bottom-content.svelte-52lifo {border-top:var(--select-bottom-content-border, none);padding:var(--select-bottom-content-padding, 8px 12px);}.select-trigger.svelte-52lifo .pill {--pill-background: var(--select-pill-background, #e0e0e0);--pill-color: var(--select-pill-color, #333333);--pill-border-radius: var(--select-pill-border-radius, 999px);--pill-padding: var(--select-pill-padding, 2px 8px);--pill-font-size: var(--select-pill-font-size, 13px);}\n\n /* Ghost hierarchy: transparent, borderless trigger */.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo) {background:var(--select-ghost-trigger-background, transparent);border-color:var(--select-ghost-trigger-border-color, transparent);box-shadow:none;}.select.ghost.svelte-52lifo .select-trigger:where(.svelte-52lifo):hover:not(.disabled:where(.svelte-52lifo) .select-trigger:where(.svelte-52lifo)) {border-color:var(--select-ghost-trigger-hover-border-color, transparent);background:var(--select-ghost-trigger-hover-background, rgba(0, 0, 0, 0.04));}.select.ghost.open.svelte-52lifo .select-trigger:where(.svelte-52lifo) {border-color:var(--select-ghost-trigger-open-border-color, transparent);background:var(--select-ghost-trigger-open-background, rgba(0, 0, 0, 0.06));box-shadow:none;}\n\n /* Single-select right-edge tick (showSelectedTick) */.select-option.tickable.svelte-52lifo {display:flex;align-items:center;gap:8px;}.select-option.tickable.svelte-52lifo .select-option-label:where(.svelte-52lifo) {flex:1 1 auto;min-width:0;}.select-option-tick.svelte-52lifo {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--select-option-tick-size, 16px);height:var(--select-option-tick-size, 16px);color:var(--select-option-tick-color, #2563eb);}.select-option-tick.svelte-52lifo svg {width:100%;height:100%;}\n\n /* The chevron rotates between closed and open. Small, but it is a transform,\n and the two end states are each meaningful, so dropping the tween just makes\n the flip instant. */\n @media (prefers-reduced-motion: reduce) {.select-arrow.svelte-52lifo {transition:none;}\n }"
20088
20283
  };
20089
20284
  function Select(e, t) {
20090
20285
  let n = props_id();
@@ -21006,14 +21201,8 @@ customElements.define("sui-select", create_custom_element(Select_wc, {
21006
21201
  innerControlIsNotTheValue: !0
21007
21202
  })));
21008
21203
  //#endregion
21009
- //#region src/lib/reduced-motion.svelte.ts
21010
- var query = typeof window < "u" && typeof window.matchMedia == "function" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null, current = /* @__PURE__ */ state(proxy(query?.matches ?? !1));
21011
- query?.addEventListener("change", (e) => {
21012
- set(current, e.matches, !0);
21013
- });
21014
- var reducedMotion = { get current() {
21015
- return get(current);
21016
- } }, root$48 = /* @__PURE__ */ from_html("<span class=\"sheet-title svelte-1dln6bq\"> </span>"), root_1$45 = /* @__PURE__ */ from_html("<div class=\"sheet-close-button svelte-1dln6bq\"><!></div>"), root_2$34 = /* @__PURE__ */ from_html("<div class=\"sheet-header svelte-1dln6bq\"><!> <!></div>"), root_3$31 = /* @__PURE__ */ from_html("<div class=\"sheet-footer svelte-1dln6bq\"><!></div>"), root_4$26 = /* @__PURE__ */ from_html("<div tabindex=\"-1\"><div role=\"dialog\" aria-modal=\"true\" tabindex=\"-1\"><!> <div class=\"sheet-content svelte-1dln6bq\"><!></div> <!></div></div>"), $$css$93 = {
21204
+ //#region src/lib/Sheet/Sheet.svelte
21205
+ var root$48 = /* @__PURE__ */ from_html("<span class=\"sheet-title svelte-1dln6bq\"> </span>"), root_1$45 = /* @__PURE__ */ from_html("<div class=\"sheet-close-button svelte-1dln6bq\"><!></div>"), root_2$34 = /* @__PURE__ */ from_html("<div class=\"sheet-header svelte-1dln6bq\"><!> <!></div>"), root_3$31 = /* @__PURE__ */ from_html("<div class=\"sheet-footer svelte-1dln6bq\"><!></div>"), root_4$26 = /* @__PURE__ */ from_html("<div tabindex=\"-1\"><div role=\"dialog\" aria-modal=\"true\" tabindex=\"-1\"><!> <div class=\"sheet-content svelte-1dln6bq\"><!></div> <!></div></div>"), $$css$93 = {
21017
21206
  hash: "svelte-1dln6bq",
21018
21207
  code: ".sheet-overlay.svelte-1dln6bq {position:fixed;top:0;left:0;right:0;bottom:0;z-index:var(--sheet-overlay-z-index, 15);-webkit-tap-highlight-color:transparent;}.overlay-visible.svelte-1dln6bq {background-color:var(--sheet-overlay-background, #00000066);}.overlay-invisible.svelte-1dln6bq {background-color:transparent;}.overlay-interactive.svelte-1dln6bq {pointer-events:auto;}.overlay-noninteractive.svelte-1dln6bq {pointer-events:none;}.sheet-panel.svelte-1dln6bq {position:fixed;display:flex;flex-direction:column;background-color:var(--sheet-background, #ffffff);box-shadow:var(--sheet-box-shadow, -2px 0 8px rgba(0, 0, 0, 0.15));z-index:var(--sheet-z-index, 16);pointer-events:auto;outline:none;}\n\n /* The panel itself is the initial focus target on open (scrollLockAction\n focuses it directly, and it's the Tab-trap's own boundary), so removing\n its outline unconditionally left a keyboard user with no visible sign\n focus had moved into the sheet at all -- particularly visible on the\n \"Raw\" variant, which has no focusable child for focus to land on\n instead. :focus-visible restores a ring precisely when the browser\n judges it's from keyboard/programmatic focus rather than a mouse click,\n so clicking the trigger still shows nothing new. outline-offset is\n negative (inset) rather than the usual positive offset other components\n in this library use, because left/right/top/bottom panels sit flush\n against a viewport edge -- a positive offset would clip there. */.sheet-panel.svelte-1dln6bq:focus-visible {outline:var(--sheet-panel-focus-outline, 2px solid #2563eb);outline-offset:var(--sheet-panel-focus-outline-offset, -2px);}\n\n /* --sheet-top/-right/-bottom/-left all default to the previous hardcoded\n edge-to-edge values below, so an unconfigured Sheet renders unchanged.\n Overriding one (e.g. --sheet-top to clear a fixed header, or --sheet-bottom:\n auto to size to content) turns the panel from an edge-to-edge slide-in into\n an anchored floating panel, without needing a different component. */.sheet-panel.left.svelte-1dln6bq,\n .sheet-panel.right.svelte-1dln6bq {top:var(--sheet-top, 0);bottom:var(--sheet-bottom, 0);width:var(--sheet-width, 400px);max-width:var(--sheet-max-width, 100vw);}.sheet-panel.left.svelte-1dln6bq {left:var(--sheet-left, 0);border-right:var(--sheet-border, none);}.sheet-panel.right.svelte-1dln6bq {right:var(--sheet-right, 0);border-left:var(--sheet-border, none);}\n\n /* Top/bottom stretch edge to edge by default, exactly as before: --sheet-\n band-width is `auto`, so `margin-inline: auto` has nothing to distribute\n and the panel still spans --sheet-left to --sheet-right.\n\n Setting --sheet-band-width (or --sheet-band-max-width) caps it, and the\n auto margins then centre it between those same two insets -- which is the\n shape a bottom \"launch\" sheet wants above phone widths, and previously\n had to be faked with hand-computed calc() offsets.\n\n Deliberately NOT --sheet-width/--sheet-max-width, even though the issue\n proposed those names. Those already mean \"the width of a left/right\n panel\", so a consumer who themes them for their side sheets would find\n their bottom sheets silently reshaped by an upgrade. side=\"center\" avoids\n the same collision the same way, with its own --sheet-center-* tokens. */.sheet-panel.top.svelte-1dln6bq,\n .sheet-panel.bottom.svelte-1dln6bq {left:var(--sheet-left, 0);right:var(--sheet-right, 0);height:var(--sheet-height, 300px);max-height:var(--sheet-max-height, 100vh);width:var(--sheet-band-width, auto);max-width:var(--sheet-band-max-width, none);box-sizing:var(--sheet-band-box-sizing, content-box);margin-inline:auto;border:var(--sheet-band-border, none);}\n\n /* A capped panel is a floating card and needs all four edges; an\n edge-to-edge one deliberately draws only the edge it enters from. The\n entering edge falls back through --sheet-border so an existing theme that\n sets only that keeps rendering exactly as it did. */.sheet-panel.top.svelte-1dln6bq {top:var(--sheet-top, 0);border-bottom:var(--sheet-band-border, var(--sheet-border, none));}.sheet-panel.bottom.svelte-1dln6bq {bottom:var(--sheet-bottom, 0);border-top:var(--sheet-band-border, var(--sheet-border, none));}\n\n /* `side=\"center\"` is a fixed-size floating dialog, not an edge-anchored\n panel: no top/bottom/left/right offset, sized by its own tokens rather\n than --sheet-width/--sheet-height (so an existing left/right/top/bottom\n theme is untouched by adding this variant), and centered with a\n transform instead of stretching to an edge. */.sheet-panel.center.svelte-1dln6bq {top:50%;left:50%;transform:translate(-50%, -50%);width:var(--sheet-center-width, 480px);max-width:var(--sheet-center-max-width, calc(100vw - 32px));max-height:var(--sheet-center-max-height, 90vh);}.sheet-header.svelte-1dln6bq {display:flex;align-items:center;padding:var(--sheet-header-padding, 16px 20px);background-color:var(--sheet-header-background, inherit);border-bottom:var(--sheet-header-border-bottom, 1px solid #e0e0e0);flex-shrink:0;}.sheet-title.svelte-1dln6bq {flex:1;font-size:var(--sheet-title-font-size, 18px);font-weight:var(--sheet-title-font-weight, 600);font-family:var(--sheet-title-font-family, inherit);color:var(--sheet-title-color, #1a1a1a);line-height:var(--sheet-title-line-height, 1.4);}.sheet-close-button.svelte-1dln6bq {--button-width: var(--sheet-close-button-size, 32px);--button-height: var(--sheet-close-button-size, 32px);--button-border: none;--button-border-radius: var(--sheet-close-button-border-radius, var(--radius, 4px));--button-color: var(--sheet-close-button-background, transparent);--button-text-color: var(--sheet-close-button-color, #666666);--button-font-size: var(--sheet-close-button-font-size, 16px);--button-padding: 0;--button-hover-color: var(--sheet-close-button-hover-background, #f0f0f0);flex-shrink:0;display:flex;align-items:center;justify-content:center;}.sheet-content.svelte-1dln6bq {flex:1;overflow-y:var(--sheet-content-overflow-y, auto);padding:var(--sheet-content-padding, 20px);scrollbar-width:var(--sheet-scrollbar-width, none);}.sheet-content.svelte-1dln6bq::-webkit-scrollbar {display:none;}.sheet-footer.svelte-1dln6bq {padding:var(--sheet-footer-padding, 16px 20px);background-color:var(--sheet-footer-background, inherit);border-top:var(--sheet-footer-border-top, 1px solid #e0e0e0);flex-shrink:0;}"
21019
21208
  };
@@ -21052,16 +21241,28 @@ function Sheet(e, t) {
21052
21241
  duration: 300
21053
21242
  };
21054
21243
  }
21055
- });
21056
- function G() {
21057
- n(!1), S()?.();
21058
- }
21059
- function be(e) {
21060
- e.target === get(te) && s() && G();
21244
+ }), G = /* @__PURE__ */ user_derived(() => ({
21245
+ x: get(re).x,
21246
+ y: get(re).y,
21247
+ durationTokens: ["--sheet-panel-transition-duration", "--motion-duration"],
21248
+ fallbackDuration: get(re).duration,
21249
+ distanceTokens: ["--sheet-panel-transition-distance", "--distance-overlay"],
21250
+ fallbackDistance: 60,
21251
+ easingTokens: [
21252
+ "--sheet-panel-transition-easing",
21253
+ "--ease-smooth-out",
21254
+ "--motion-easing"
21255
+ ]
21256
+ }));
21257
+ function be() {
21258
+ n() && (n(!1), S()?.());
21061
21259
  }
21062
21260
  function Me(e) {
21261
+ e.target === get(te) && s() && be();
21262
+ }
21263
+ function Re(e) {
21063
21264
  if ((e.key === "Enter" || e.key === " ") && s() && e.target === get(te)) {
21064
- e.preventDefault(), G();
21265
+ e.preventDefault(), be();
21065
21266
  return;
21066
21267
  }
21067
21268
  if (e.key === "Tab") {
@@ -21073,12 +21274,12 @@ function Sheet(e, t) {
21073
21274
  t !== null && (e.preventDefault(), t.focus());
21074
21275
  }
21075
21276
  }
21076
- function Re(e) {
21277
+ function Ue(e) {
21077
21278
  let t = getActiveElement(e), n = !0;
21078
21279
  lockBodyScroll();
21079
21280
  let i = registerDismissible({
21080
21281
  element: () => get(ne),
21081
- onEscape: G
21282
+ onEscape: be
21082
21283
  });
21083
21284
  return tick().then(() => {
21084
21285
  n && get(ne) !== null && get(ne).focus();
@@ -21088,14 +21289,14 @@ function Sheet(e, t) {
21088
21289
  t instanceof HTMLElement && t.isConnected && (a === null || a === document.body || e.contains(a)) && t.focus();
21089
21290
  } };
21090
21291
  }
21091
- function Ue() {
21292
+ function it() {
21092
21293
  typeof C() == "function" && C()();
21093
21294
  }
21094
- function it() {
21295
+ function at() {
21095
21296
  typeof k() == "function" && k()();
21096
21297
  }
21097
- let at = /* @__PURE__ */ user_derived(() => typeof u() == "number" && Number.isInteger(u()) && u() >= 1 && u() <= 6 ? `h${u()}` : null);
21098
- var ot = {
21298
+ let ot = /* @__PURE__ */ user_derived(() => typeof u() == "number" && Number.isInteger(u()) && u() >= 1 && u() <= 6 ? `h${u()}` : null);
21299
+ var ct = {
21099
21300
  get open() {
21100
21301
  return n();
21101
21302
  },
@@ -21186,12 +21387,12 @@ function Sheet(e, t) {
21186
21387
  set classes(e) {
21187
21388
  R(e), flushSync();
21188
21389
  }
21189
- }, ct = comment(), lt = first_child(ct), ut = (e) => {
21390
+ }, lt = comment(), ut = first_child(lt), dt = (e) => {
21190
21391
  var t = root_4$26(), n = child(t), u = child(n), S = (e) => {
21191
21392
  var t = root_2$34(), n = child(t), i = (e) => {
21192
21393
  var t = comment(), n = first_child(t), i = (e) => {
21193
21394
  var t = comment();
21194
- element(first_child(t), () => get(at), !1, (e, t) => {
21395
+ element(first_child(t), () => get(ot), !1, (e, t) => {
21195
21396
  set_class(e, 0, "sheet-title svelte-1dln6bq");
21196
21397
  var n = text();
21197
21398
  template_effect(() => set_text(n, a())), append(t, n);
@@ -21201,7 +21402,7 @@ function Sheet(e, t) {
21201
21402
  reset(t), template_effect(() => set_text(n, a())), append(e, t);
21202
21403
  };
21203
21404
  if_block(n, (e) => {
21204
- get(at) === null ? e(o, -1) : e(i);
21405
+ get(ot) === null ? e(o, -1) : e(i);
21205
21406
  }), append(e, t);
21206
21407
  };
21207
21408
  if_block(n, (e) => {
@@ -21210,7 +21411,7 @@ function Sheet(e, t) {
21210
21411
  var o = sibling(n, 2), s = (e) => {
21211
21412
  var t = root_1$45();
21212
21413
  Button(child(t), spread_props({
21213
- onclick: G,
21414
+ onclick: be,
21214
21415
  ariaLabel: "Close"
21215
21416
  }, () => typeof f() == "string" ? { testId: `${f()}-close` } : {}, {
21216
21417
  children: (e, t) => {
@@ -21228,19 +21429,19 @@ function Sheet(e, t) {
21228
21429
  });
21229
21430
  var C = sibling(u, 2);
21230
21431
  snippet(child(C), p), reset(C);
21231
- var k = sibling(C, 2), ot = (e) => {
21432
+ var k = sibling(C, 2), re = (e) => {
21232
21433
  var t = root_3$31();
21233
21434
  snippet(child(t), h), reset(t), append(e, t);
21234
21435
  };
21235
21436
  if_block(k, (e) => {
21236
- typeof h() == "function" && e(ot);
21237
- }), reset(n), bind_this(n, (e) => set(ne, e), () => get(ne)), reset(t), bind_this(t, (e) => set(te, e), () => get(te)), action(t, (e) => Re?.(e)), template_effect((e) => {
21437
+ typeof h() == "function" && e(re);
21438
+ }), reset(n), bind_this(n, (e) => set(ne, e), () => get(ne)), reset(t), bind_this(t, (e) => set(te, e), () => get(te)), action(t, (e) => Ue?.(e)), template_effect((e) => {
21238
21439
  set_class(t, 1, `sheet-overlay ${o() ? "overlay-visible" : "overlay-invisible"} ${o() || s() ? "overlay-interactive" : "overlay-noninteractive"} ${R() ?? "" ?? ""}`, "svelte-1dln6bq"), set_attribute(t, "role", s() ? "button" : null), set_attribute(t, "aria-label", e), set_attribute(t, "data-pw", typeof f() == "string" ? f() : null), set_attribute(t, "testid", typeof f() == "string" ? f() : null), set_class(n, 1, `sheet-panel ${i() ?? ""}`, "svelte-1dln6bq"), set_attribute(n, "aria-label", a() ?? "Sheet"), set_attribute(n, "data-pw", typeof f() == "string" ? `${f()}-panel` : null), set_attribute(n, "testid", typeof f() == "string" ? `${f()}-panel` : null);
21239
- }, [() => s() ? c()?.trim() || "Close sheet" : null]), delegated("click", t, be), delegated("keydown", t, Me), event("introend", n, Ue), event("outroend", n, it), transition(7, n, () => fly, () => get(re)), transition(3, t, () => fade, () => ({ duration: 200 })), append(e, t);
21440
+ }, [() => s() ? c()?.trim() || "Close sheet" : null]), delegated("click", t, Me), delegated("keydown", t, Re), event("introend", n, it), event("outroend", n, at), transition(7, n, () => tokenizedFly, () => get(G)), transition(3, t, () => fade, () => ({ duration: 200 })), append(e, t);
21240
21441
  };
21241
- return if_block(lt, (e) => {
21242
- n() && e(ut);
21243
- }), append(e, ct), pop(ot);
21442
+ return if_block(ut, (e) => {
21443
+ n() && e(dt);
21444
+ }), append(e, lt), pop(ct);
21244
21445
  }
21245
21446
  delegate(["click", "keydown"]), create_custom_element(Sheet, {
21246
21447
  open: {},
@@ -21416,7 +21617,7 @@ function createCopyState(e = {}) {
21416
21617
  //#region src/lib/Snippet/Snippet.svelte
21417
21618
  var root$47 = /* @__PURE__ */ from_html("<span class=\"snippet-copied svelte-ql5iye\"> </span>"), root_1$44 = /* @__PURE__ */ from_html("<span class=\"snippet-copy-icon svelte-ql5iye\"></span>"), root_2$33 = /* @__PURE__ */ from_html("<div class=\"snippet-copy svelte-ql5iye\"><!></div> <span class=\"snippet-status svelte-ql5iye\" role=\"status\" aria-live=\"polite\"> </span>", 1), root_3$30 = /* @__PURE__ */ from_html("<div><code class=\"snippet-code svelte-ql5iye\"><span class=\"snippet-prompt svelte-ql5iye\"> </span> <span class=\"snippet-text svelte-ql5iye\"> </span></code> <!></div>"), $$css$91 = {
21418
21619
  hash: "svelte-ql5iye",
21419
- code: ".snippet.svelte-ql5iye {display:flex;align-items:center;justify-content:space-between;gap:var(--snippet-gap, 8px);background:var(--snippet-background, #1e1e1e);border:var(--snippet-border, 1px solid #333);border-radius:var(--snippet-border-radius, var(--radius, 4px));padding:var(--snippet-padding, 12px 16px);font-family:var(--snippet-font-family, monospace);font-size:var(--snippet-font-size, 14px);color:var(--snippet-color, #e0e0e0);margin:var(--snippet-margin, 0);}.snippet-code.svelte-ql5iye {display:flex;align-items:center;overflow:hidden;flex:1;min-width:0;}.snippet-prompt.svelte-ql5iye {color:var(--snippet-prompt-color, #888);margin-right:var(--snippet-prompt-margin-right, 8px);flex-shrink:0;}.snippet-text.svelte-ql5iye {color:var(--snippet-text-color, #e0e0e0);font-family:var(--snippet-text-font-family, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.snippet-copy.svelte-ql5iye {--button-color: var(--snippet-copy-background, transparent);--button-text-color: var(--snippet-copy-color, #888);--button-border: var(--snippet-copy-border, none);--button-padding: var(--snippet-copy-padding, 4px);--button-border-radius: var(--snippet-copy-border-radius, var(--radius, 4px));--cursor: var(--snippet-copy-cursor, pointer);--button-hover-color: var(--snippet-copy-hover-background, #333);display:flex;align-items:center;justify-content:center;flex-shrink:0;}.snippet-copy-icon.svelte-ql5iye {display:inline-flex;align-items:center;justify-content:center;width:var(--snippet-copy-size, 16px);height:var(--snippet-copy-size, 16px);}.snippet-copy-icon.svelte-ql5iye svg {width:100%;height:100%;}\n\n /* Announced, never shown: the visible \"Copied!\" is the label inside the\n button, and repeating it on screen would read as a duplicate. */.snippet-status.svelte-ql5iye {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}.snippet-copied.svelte-ql5iye {color:var(--snippet-copied-color, #4caf50);font-size:var(--snippet-copied-font-size, 12px);font-family:var(--snippet-font-family, monospace);}"
21620
+ code: ".snippet.svelte-ql5iye {display:flex;align-items:center;justify-content:space-between;gap:var(--snippet-gap, 8px);background:var(--snippet-background, #1e1e1e);border:var(--snippet-border, 1px solid #333);border-radius:var(--snippet-border-radius, var(--radius, 4px));padding:var(--snippet-padding, 12px 16px);font-family:var(--snippet-font-family, monospace);font-size:var(--snippet-font-size, 14px);color:var(--snippet-color, #e0e0e0);margin:var(--snippet-margin, 0);}.snippet-code.svelte-ql5iye {display:flex;align-items:center;overflow:hidden;flex:1;min-width:0;}.snippet-prompt.svelte-ql5iye {color:var(--snippet-prompt-color, #888);margin-right:var(--snippet-prompt-margin-right, 8px);flex-shrink:0;}.snippet-text.svelte-ql5iye {color:var(--snippet-text-color, #e0e0e0);font-family:var(--snippet-text-font-family, inherit);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.snippet-copy.svelte-ql5iye {--button-color: var(--snippet-copy-background, transparent);--button-text-color: var(--snippet-copy-color, #888);--button-border: var(--snippet-copy-border, none);--button-padding: var(--snippet-copy-padding, 4px);--button-border-radius: var(--snippet-copy-border-radius, var(--radius, 4px));--cursor: var(--snippet-copy-cursor, pointer);--button-hover-color: var(--snippet-copy-hover-background, #333);\n /* Ghost brings its own hover label; keep this button's. */--button-hover-text-color: var(--button-text-color);display:flex;align-items:center;justify-content:center;flex-shrink:0;}.snippet-copy-icon.svelte-ql5iye {display:inline-flex;align-items:center;justify-content:center;width:var(--snippet-copy-size, 16px);height:var(--snippet-copy-size, 16px);}.snippet-copy-icon.svelte-ql5iye svg {width:100%;height:100%;}\n\n /* Announced, never shown: the visible \"Copied!\" is the label inside the\n button, and repeating it on screen would read as a duplicate. */.snippet-status.svelte-ql5iye {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}.snippet-copied.svelte-ql5iye {color:var(--snippet-copied-color, #4caf50);font-size:var(--snippet-copied-font-size, 12px);font-family:var(--snippet-font-family, monospace);}"
21420
21621
  };
21421
21622
  function Snippet(e, t) {
21422
21623
  push(t, !0), append_styles$1(e, $$css$91);
@@ -21502,7 +21703,10 @@ function Snippet(e, t) {
21502
21703
  reset(re), reset(R);
21503
21704
  var be = sibling(R, 2), Me = (e) => {
21504
21705
  var t = root_2$33(), n = first_child(t);
21505
- Button(child(n), spread_props({ onclick: S }, () => h.copied ? {} : { ariaLabel: "Copy to clipboard" }, {
21706
+ Button(child(n), spread_props({
21707
+ variant: "ghost",
21708
+ onclick: S
21709
+ }, () => h.copied ? {} : { ariaLabel: "Copy to clipboard" }, {
21506
21710
  children: (e, t) => {
21507
21711
  var n = comment(), i = first_child(n), a = (e) => {
21508
21712
  var t = root$47(), n = child(t, !0);
@@ -22635,7 +22839,7 @@ delegate(["click", "keydown"]), create_custom_element(BuiltinCell, {
22635
22839
  //#region src/lib/assets/sort-default.svg?raw
22636
22840
  var sort_default_default = "<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M5.64645 1.64645C5.84171 1.45118 6.15829 1.45118 6.35355 1.64645L8.85355 4.14645C9.04882 4.34171 9.04882 4.65829 8.85355 4.85355C8.65829 5.04882 8.34171 5.04882 8.14645 4.85355L6 2.70711L3.85355 4.85355C3.65829 5.04882 3.34171 5.04882 3.14645 4.85355C2.95118 4.65829 2.95118 4.34171 3.14645 4.14645L5.64645 1.64645Z\" fill=\"currentColor\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3.14645 7.14645C3.34171 6.95118 3.65829 6.95118 3.85355 7.14645L6 9.29289L8.14645 7.14645C8.34171 6.95118 8.65829 6.95118 8.85355 7.14645C9.04882 7.34171 9.04882 7.65829 8.85355 7.85355L6.35355 10.3536C6.15829 10.5488 5.84171 10.5488 5.64645 10.3536L3.14645 7.85355C2.95118 7.65829 2.95118 7.34171 3.14645 7.14645Z\" fill=\"currentColor\"/>\n</svg>\n", root$44 = /* @__PURE__ */ from_html("<div class=\"table-title svelte-171ci2i\"> </div>"), root_1$41 = /* @__PURE__ */ from_html("<button class=\"table-search-clear svelte-171ci2i\" type=\"button\"></button>"), root_2$31 = /* @__PURE__ */ from_html("<div class=\"table-search svelte-171ci2i\"><span class=\"table-search-icon svelte-171ci2i\"></span> <input class=\"table-search-input svelte-171ci2i\" type=\"search\" autocomplete=\"off\"/> <!></div>"), root_3$28 = /* @__PURE__ */ from_html("<div class=\"table-toolbar svelte-171ci2i\"><!></div>"), root_4$24 = /* @__PURE__ */ from_html("<caption class=\"sr-only svelte-171ci2i\"> </caption>"), root_5$23 = /* @__PURE__ */ from_html("<th><!></th>"), root_6$21 = /* @__PURE__ */ from_html("<th></th>"), root_7$19 = /* @__PURE__ */ from_html("<th> </th>"), root_8$17 = /* @__PURE__ */ from_html("<span> </span>"), root_9$14 = /* @__PURE__ */ from_html("<span class=\"table-header-filter-icon svelte-171ci2i\"></span>"), root_10$13 = /* @__PURE__ */ from_html("<span><!></span>"), root_11$11 = /* @__PURE__ */ from_html("<span class=\"table-header-filter svelte-171ci2i\"><!></span>"), root_12$10 = /* @__PURE__ */ from_html("<span class=\"sort-icon sort-icon-asc\"></span>"), root_13$8 = /* @__PURE__ */ from_html("<span class=\"sort-icon sort-icon-desc\"></span>"), root_14$7 = /* @__PURE__ */ from_html("<span class=\"sort-icon sort-icon-idle\"></span>"), root_15$5 = /* @__PURE__ */ from_html("<div class=\"sort-button svelte-171ci2i\"><!></div>"), root_16$4 = /* @__PURE__ */ from_html("<!> <span class=\"table-inline-search-clear svelte-171ci2i\"><!></span>", 1), root_17$4 = /* @__PURE__ */ from_html("<span class=\"table-inline-search-trigger svelte-171ci2i\"><!></span>"), root_18$3 = /* @__PURE__ */ from_html("<span class=\"table-header-inline-search svelte-171ci2i\"><!></span>"), root_19$3 = /* @__PURE__ */ from_html("<th><span class=\"table-header-content svelte-171ci2i\"><!> <!> <!> <!></span></th>"), root_20$3 = /* @__PURE__ */ from_html("<tr class=\"svelte-171ci2i\"><td class=\"table-empty svelte-171ci2i\"><!></td></tr>"), root_21$2 = /* @__PURE__ */ from_html("<span class=\"table-mobile-label svelte-171ci2i\" aria-hidden=\"true\">Select</span>"), root_22$2 = /* @__PURE__ */ from_html("<td class=\"table-content table-checkbox-col svelte-171ci2i\"><!><!></td>"), root_23$2 = /* @__PURE__ */ from_html("<span class=\"table-mobile-label svelte-171ci2i\" aria-hidden=\"true\"> </span>"), root_24$2 = /* @__PURE__ */ from_html("<td class=\"table-content table-row-number-col svelte-171ci2i\"><!><span class=\"table-mobile-value svelte-171ci2i\"> </span></td>"), root_25$1 = /* @__PURE__ */ from_html("<div><!></div>"), root_26$1 = /* @__PURE__ */ from_html("<td><!><!></td>"), root_27 = /* @__PURE__ */ from_html("<tr><!><!><!></tr>"), root_28 = /* @__PURE__ */ from_html("<div class=\"table-footer svelte-171ci2i\"><!></div>"), root_29 = /* @__PURE__ */ from_html("<span class=\"table-paginator-size svelte-171ci2i\"><!></span>"), root_30 = /* @__PURE__ */ from_html("<span class=\"table-paginator-controls svelte-171ci2i\"><!> <!></span>"), root_31 = /* @__PURE__ */ from_html("<div class=\"table-footer table-paginator svelte-171ci2i\"><span class=\"table-paginator-range svelte-171ci2i\"> </span> <!></div>"), root_32 = /* @__PURE__ */ from_html("<div><div><div class=\"table-scroll svelte-171ci2i\"><table class=\"svelte-171ci2i\"><!><thead class=\"svelte-171ci2i\"><tr class=\"svelte-171ci2i\"><!><!><!></tr></thead><tbody class=\"svelte-171ci2i\"><!></tbody></table></div></div> <!></div>"), root_33 = /* @__PURE__ */ from_html("<!> <!> <!> <!>", 1), $$css$86 = {
22637
22841
  hash: "svelte-171ci2i",
22638
- code: "\n /* ── Title ─────────────────────────────────────────────────────────────── */.table-title.svelte-171ci2i {margin:var(--table-title-margin, 0px 0px 12px 0px);font-size:var(--table-title-font-size, var(--table-tile-font-size, 18px));font-weight:var(--table-title-font-weight, 600);\n /* Unlike .table-content, a heading legitimately has no background of its\n own -- it sits directly on whatever surface the consumer places it on.\n The old #111827 literal ignored that surface entirely: on a dark page\n it measured a contrast of 1.03 against #1a1a26, i.e. invisible. `color`\n already inherits by default, so `inherit` states that explicitly and\n lets the title track its container's text colour; `currentColor` would\n resolve to the same value here (the spec special-cases it to mean\n exactly `inherit` for the `color` property) but reads as if it were\n referencing a colour set elsewhere on this rule, which it isn't. */color:var(--table-title-color, inherit);font-family:var(--table-title-font-family, inherit);padding:var(--table-title-padding);}\n\n /* ── C2-3 Search bar ────────────────────────────────────────────────────── */.table-search.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-search-gap, 8px);padding:var(--table-search-padding, 8px 12px);border:var(--table-search-border, 1px solid #e5e7eb);border-radius:var(--table-search-border-radius, var(--radius, 4px));background-color:var(--table-search-background, #ffffff);margin-bottom:var(--table-search-margin-bottom, 8px);}.table-search-icon.svelte-171ci2i {display:inline-flex;align-items:center;color:var(--table-search-icon-color, #9ca3af);flex-shrink:0;}.table-search-icon.svelte-171ci2i svg {width:var(--table-search-icon-size, 16px);height:var(--table-search-icon-size, 16px);}.table-search-input.svelte-171ci2i {flex:1;border:none;outline:none;background:transparent;font-size:var(--table-search-font-size, 14px);color:var(--table-search-color, #111827);min-width:0;}.table-search-input.svelte-171ci2i:focus-visible {outline:2px solid var(--table-focus-outline-color, #3b82f6);outline-offset:2px;border-radius:var(--table-search-focus-border-radius, var(--radius, 4px));}.table-search-input.svelte-171ci2i::placeholder {color:var(--table-search-placeholder-color, #4b5563);}\n\n /* Hide browser-default clear button on search inputs */.table-search-input.svelte-171ci2i::-webkit-search-cancel-button {display:none;}.table-search-clear.svelte-171ci2i {display:inline-flex;align-items:center;padding:2px;border:none;background:transparent;color:var(--table-search-clear-color, #6b7280);cursor:pointer;border-radius:4px;flex-shrink:0;}.table-search-clear.svelte-171ci2i:hover {color:var(--table-search-clear-hover-color, #111827);background-color:var(--table-search-clear-hover-background, rgba(0, 0, 0, 0.05));}.table-search-clear.svelte-171ci2i svg {width:var(--table-search-clear-icon-size, 14px);height:var(--table-search-clear-icon-size, 14px);}.table-header-inline-search.svelte-171ci2i {display:inline-flex;align-items:center;gap:var(--table-inline-search-gap, 6px);margin-left:auto;}.table-inline-search-trigger.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: var(--table-inline-search-trigger-padding, 4px);--button-text-color: var(--table-inline-search-icon-color, #9ca3af);}.table-inline-search-trigger.svelte-171ci2i svg {width:var(--table-inline-search-icon-size, 16px);height:var(--table-inline-search-icon-size, 16px);display:block;}.table-inline-search-input.svelte-171ci2i {--input-margin: 0;width:var(--table-inline-search-input-width, 160px);}.table-inline-search-clear.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: var(--table-inline-search-clear-padding, 2px);--button-text-color: var(--table-inline-search-clear-color, #6b7280);}.table-inline-search-clear.svelte-171ci2i svg {width:var(--table-inline-search-clear-icon-size, 14px);height:var(--table-inline-search-clear-icon-size, 14px);}\n\n /* ── Container ──────────────────────────────────────────────────────────── */\n /* `hidden` is the default because it is what clips the table's corners to\n this element's border-radius; without it the first and last cells square\n off over the rounded border. A consumer who needs the container itself to\n scroll sideways sets this to `auto` and accepts that trade. Note the\n scrollable variant below sets `overflow-y`, and per the CSS overflow spec\n a `visible` on one axis computes to `auto` when the other is not visible,\n so `visible` here does not survive on a scrollable table. */.table-container.svelte-171ci2i {border:var(--table-border, 1px solid #e5e7eb);border-radius:var(--table-border-radius, var(--radius, 4px));width:var(--table-container-width, 100%);overflow:var(--table-container-overflow, hidden);}.scrollable-table.svelte-171ci2i {height:var(--table-container-height, 143px);overflow-y:auto;}.table-scroll-shell.svelte-171ci2i {position:relative;min-width:0;}\n\n /* Edge scrims: fade the clipped side of the table into its background so\n hidden columns read as \"more content this way\". Class-driven from live\n scroll state — never shown when the table fits. pointer-events: none\n keeps cells under the fade clickable; z-index 2 paints above sticky\n headers (z-index 1). */.table-scroll-shell.svelte-171ci2i::before,\n .table-scroll-shell.svelte-171ci2i::after {content:'';position:absolute;top:0;bottom:0;width:var(--table-scroll-scrim-width, 32px);opacity:0;pointer-events:none;transition:opacity var(--table-scroll-scrim-transition-duration, var(--motion-duration, 0.2s))\n var(--table-scroll-scrim-transition-easing, var(--motion-easing, ease));z-index:2;}.table-scroll-shell.svelte-171ci2i::before {left:0;border-radius:var(--table-border-radius, var(--radius, 4px)) 0 0\n var(--table-border-radius, var(--radius, 4px));background:linear-gradient(to right, var(--table-scroll-scrim-color, #ffffff), transparent);}.table-scroll-shell.svelte-171ci2i::after {right:0;border-radius:0 var(--table-border-radius, var(--radius, 4px))\n var(--table-border-radius, var(--radius, 4px)) 0;background:linear-gradient(to left, var(--table-scroll-scrim-color, #ffffff), transparent);}.table-scroll-shell.scrollable-left.svelte-171ci2i::before {opacity:1;}.table-scroll-shell.scrollable-right.svelte-171ci2i::after {opacity:1;}.table-scroll.svelte-171ci2i {overflow-x:auto;min-width:0;scrollbar-width:thin;}table.svelte-171ci2i {width:var(--table-width, 100%);border-collapse:var(--table-border-collapse, collapse);}.table-header.svelte-171ci2i,\n .table-content.svelte-171ci2i {border:var(--table-inner-border, none);padding:var(--table-padding, 12px 16px);text-align:var(--table-text-align, left);width:var(--table-column-width);\n /* Wrap at word boundaries; only a single word wider than the column may\n split as a last resort. break-word (not anywhere) keeps each column's\n min-content width at its longest word, so ordinary labels never split\n mid-word — the old break-all default did. Opt back in per consumer via\n --table-word-break / --table-overflow-wrap. */word-break:var(--table-word-break, normal);overflow-wrap:var(--table-overflow-wrap, break-word);}.scrollable-content.svelte-171ci2i {overflow-y:auto;height:var(--scrollable-column-height, 20px);}.table-header.svelte-171ci2i {background-color:var(--table-header-background, var(--table-header-border-bgcolor, #f9fafb));font-size:var(--table-header-font-size, 13px);font-family:var(--table-header-font-family, inherit);font-weight:var(--table-header-font-weight, 600);letter-spacing:var(--table-header-letter-spacing, 0.02em);text-transform:var(--table-header-text-transform, inherit);color:var(--table-header-color, var(--table-header-font-color, #6b7280));border-bottom:var(--table-header-border, var(--table-inner-border, none));}.table-header-content.svelte-171ci2i {display:flex;align-items:center;gap:4px;justify-content:var(--table-header-justify, flex-start);}.table-header-label.svelte-171ci2i {text-decoration:var(--table-header-tooltip-underline, underline dotted);text-underline-offset:2px;cursor:help;}.table-header-label-plain.svelte-171ci2i {text-decoration:none;}.table-header-filter.svelte-171ci2i {display:inline-flex;align-items:center;}.table-header-filter-trigger.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: 2px;--button-margin: 0;--button-width: fit-content;--button-height: fit-content;--button-text-color: var(--table-sort-button-color, inherit);--button-border-radius: 4px;--button-hover-color: var(--table-sort-button-hover-background, rgba(0, 0, 0, 0.05));display:inline-flex;align-items:center;opacity:var(--table-sort-idle-opacity, 0.5);}.table-header-filter-trigger.svelte-171ci2i:hover {opacity:var(--table-sort-idle-hover-opacity, 0.85);}.table-header-filter-active.svelte-171ci2i {opacity:1;color:var(--table-filter-active-color, #2563eb);}.table-header-filter-icon.svelte-171ci2i svg {width:var(--table-sort-icon-size, 14px);height:var(--table-sort-icon-size, 14px);display:block;}.table-cell-clamp.svelte-171ci2i {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.table-header-sticky.svelte-171ci2i {position:sticky;top:var(--table-header-sticky-top, 0);z-index:1;}.table-content.svelte-171ci2i {\n /* The terminal #ffffff matters as much as the colour beside it. Without it\n the whole declaration is invalid at computed-value time when neither\n variable is set, so the cell falls back to `transparent` and inherits\n whatever surface it lands on -- while `color` still resolves to a\n hardcoded near-black. On a dark page that is #111827 on #1a1a26: a\n measured contrast of 1.03, i.e. invisible. The header row never had the\n bug because it pairs its colour with a background of its own. */background-color:var(--table-content-background, var(--table-content-border-bgcolor, #ffffff));font-size:var(--table-content-font-size, 14px);font-family:var(--table-content-font-family, inherit);color:var(--table-content-color, var(--table-content-font-color, #111827));}\n\n /* Column highlight (TableColumn.highlighted). Row hover keeps higher\n specificity and row selection is declared later at equal specificity, so\n both row states paint over the column wash. */.table-header.table-col-highlighted.svelte-171ci2i {background-color:var(\n --table-col-highlight-header-background,\n var(--table-col-highlight-background, #f3f9ff)\n );}.table-content.table-col-highlighted.svelte-171ci2i {background-color:var(--table-col-highlight-background, #f3f9ff);}.table-row.svelte-171ci2i {border-bottom:var(--table-row-border, 1px solid #f3f4f6);background-color:var(--table-row-background);}.table-row.svelte-171ci2i:last-child {border-bottom:var(--table-row-last-border, none);}.table-row.svelte-171ci2i:nth-child(even) {background-color:var(--table-row-alt-background, var(--table-row-background));}.table-row.svelte-171ci2i:hover {background-color:var(--table-row-hover-background);}.table-row.svelte-171ci2i:hover > .table-content:where(.svelte-171ci2i) {background-color:var(\n --table-row-hover-background,\n var(--table-content-background, var(--table-content-border-bgcolor))\n );}.table-row-clickable.svelte-171ci2i {cursor:pointer;}.table-row-clickable.svelte-171ci2i:focus-visible {outline:2px solid var(--table-focus-outline-color, #3b82f6);outline-offset:-2px;}\n\n /* C2-1: Selected row highlight */.table-row-selected.svelte-171ci2i {background-color:var(--table-row-selected-background, #eff6ff);}.table-row-selected.svelte-171ci2i > .table-content:where(.svelte-171ci2i) {background-color:var(--table-row-selected-background, #eff6ff);}\n\n /* Summary/period-total row (summaryRowIndex): both the row and its cells,\n since a themed --table-content-background would otherwise paint over a\n row-level background. Falls back to the regular cell background. */.table-summary-row.svelte-171ci2i {background-color:var(--table-summary-row-background, var(--table-content-background));}.table-summary-row.svelte-171ci2i > .table-content:where(.svelte-171ci2i) {background-color:var(--table-summary-row-background, var(--table-content-background));}\n\n /* ── C2-1 Checkbox column ───────────────────────────────────────────────── */\n /* The column renders the library Checkbox. The table's own --table-checkbox-*\n tokens stay the public API and are bridged onto Checkbox's --checkbox-*\n variables here, so a consumer theming the table keeps working and a\n consumer theming Checkbox app-wide is overridden only inside the table. */.table-checkbox-col.svelte-171ci2i {width:var(--table-checkbox-col-width, 44px);padding:var(--table-checkbox-col-padding, 12px 12px);--checkbox-container-gap: 0;--checkbox-size: var(--table-checkbox-size, 18px);--checkbox-border: var(--table-checkbox-border, 2px solid #9ca3af);--checkbox-border-radius: var(--table-checkbox-border-radius, var(--radius, 4px));--checkbox-background: var(--table-checkbox-background, transparent);--checkbox-hover-border-color: var(--table-checkbox-hover-border-color, #6b7280);--checkbox-checked-background: var(--table-checkbox-checked-background, #2563eb);--checkbox-checked-border: var(\n --table-checkbox-checked-border,\n 2px solid var(--table-checkbox-checked-border-color, #2563eb)\n );--checkbox-indeterminate-background: var(--table-checkbox-indeterminate-background, #2563eb);--checkbox-indeterminate-border: var(\n --table-checkbox-indeterminate-border,\n 2px solid var(--table-checkbox-indeterminate-border-color, #2563eb)\n );--checkbox-disabled-opacity: var(--table-checkbox-disabled-opacity, 0.4);--checkbox-focus-ring: var(--table-checkbox-focus-ring, 0 0 0 3px rgba(59, 130, 246, 0.3));--checkbox-icon-size: var(--table-checkbox-icon-size, 12px);--checkbox-checkmark-color: var(--table-checkbox-icon-color, #ffffff);--checkbox-dash-color: var(--table-checkbox-icon-color, #ffffff);\n /* Named so a consumer can reach it. Table sets the Checkbox child's token\n directly, and a rule on the element beats anything declared at :root, so\n through <sui-table> the selection checkboxes' transition could not be\n slowed or stopped by any means -- custom properties are the only route\n across a shadow boundary and this one was already spoken for. */--checkbox-transition: var(--table-checkbox-transition, 0.15s);}\n\n /* ── Sort button ────────────────────────────────────────────────────────── */.sort-button.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: 2px;--button-margin: 0;--button-text-color: var(--table-sort-button-color, inherit);--button-border-radius: 4px;--button-width: fit-content;--button-height: fit-content;--button-hover-color: var(--table-sort-button-hover-background, rgba(0, 0, 0, 0.05));--button-hover-text-color: var(\n --table-sort-button-hover-color,\n var(--table-sort-button-color, inherit)\n );display:inline-flex;align-items:center;line-height:1;}.sort-button.svelte-171ci2i .sort-icon {display:inline-flex;align-items:center;}\n\n /* The sorted-direction half paints via currentColor; without an explicit\n color it inherits the Button's text color (white on the default button\n theme), which disappears on light headers. Default to the design\n system's active blue. */.sort-button.svelte-171ci2i .sort-icon:not(.sort-icon-idle) {color:var(--table-sort-active-color, #1b85ff);}.sort-button.svelte-171ci2i .sort-icon svg {width:var(--table-sort-icon-size, 14px);height:var(--table-sort-icon-size, 14px);display:block;}\n\n /* Two-tone state painting. The shared sort-default.svg asset stays\n color-agnostic (fill=\"currentColor\", like every other icon asset); the\n state colors live here. All halves default to the inactive fill, then\n the sorted direction's half is released back to currentColor (the\n active color above). Path order in the asset is up-chevron first,\n down-chevron second. */.sort-button.svelte-171ci2i .sort-icon svg path {fill:var(--table-sort-inactive-color, #c7c7c7);}.sort-button.svelte-171ci2i .sort-icon-asc svg path:first-child,\n .sort-button.svelte-171ci2i .sort-icon-desc svg path:last-child {fill:currentColor;}\n\n /* The design system draws every sort state fully opaque — faintness comes\n from the glyph fills (inactive halves #C7C7C7, active direction\n currentColor), never from transparency. The opacity vars remain for\n consumers that prefer a fade but now default to solid; hover steps the\n inactive halves to the design system's hover gray. */.sort-button.svelte-171ci2i .sort-icon-idle {opacity:var(--table-sort-idle-opacity, 1);}.sort-button.svelte-171ci2i:hover .sort-icon-idle {opacity:var(--table-sort-idle-hover-opacity, 1);--table-sort-inactive-color: var(--table-sort-hover-color, #797979);}\n\n /* ── Empty ──────────────────────────────────────────────────────────────── */.table-empty.svelte-171ci2i {padding:var(--table-empty-padding, 32px 24px);text-align:center;color:var(--table-empty-color, #9ca3af);}\n\n /* ── Footer ─────────────────────────────────────────────────────────────── */.table-footer.svelte-171ci2i {border-top:var(--table-footer-border, 1px solid #e5e7eb);padding:var(--table-footer-padding, 8px 16px);background-color:var(--table-footer-background, transparent);}.table-paginator.svelte-171ci2i {display:flex;align-items:center;justify-content:space-between;gap:var(--table-paginator-gap, 12px);flex-wrap:wrap;}.table-paginator-range.svelte-171ci2i {font-size:var(--table-paginator-range-font-size, 13px);color:var(--table-paginator-range-color, #6b7280);font-variant-numeric:tabular-nums;}.table-paginator-controls.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-paginator-gap, 12px);}.table-paginator-size.svelte-171ci2i {display:inline-flex;min-width:var(--table-paginator-size-width, 72px);\n /* Select's standalone defaults (40px min-height, 8px 12px padding) render\n 58px tall next to the 36px pagination buttons sharing this row. Match the\n steppers instead of towering over them. */--select-trigger-min-height: var(--table-paginator-size-height, 36px);--select-trigger-padding: var(--table-paginator-size-padding, 0 8px);}\n\n /* ── Toolbar (bulk actions) ─────────────────────────────────────────────── */.table-toolbar.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-toolbar-gap, 12px);padding:var(--table-toolbar-padding, 8px 12px);border:var(--table-toolbar-border, 1px solid #e5e7eb);border-radius:var(--table-toolbar-border-radius, var(--radius, 4px));background-color:var(--table-toolbar-background, #f9fafb);margin-bottom:var(--table-toolbar-margin-bottom, 8px);}\n\n /* ── Row-number column ──────────────────────────────────────────────────── */.table-row-number-col.svelte-171ci2i {width:var(--table-row-number-col-width, 48px);color:var(--table-row-number-color, #6b7280);font-variant-numeric:tabular-nums;text-align:var(--table-row-number-align, var(--table-text-align, left));}\n\n /* ── Accessibility ──────────────────────────────────────────────────────── */.sr-only.svelte-171ci2i {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}\n\n /* ── Mobile record cards (opt-in via `mobileCardLayout`) ──────────────────\n The label span is always in the DOM -- rendering it only under the media\n query below would mean an AT that queries computed style rather than\n layout (or a print stylesheet, or a future breakpoint change) sees no\n label at all until the exact 640px condition is re-evaluated. Keeping the\n element and toggling `display` is what lets `aria-hidden` on it (see the\n template) stay meaningful at every width: hidden today, but never a\n generated-content trick that could not carry that attribute in the first\n place. */.table-mobile-label.svelte-171ci2i {display:none;}\n\n /* The breakpoint is a literal, not `var(--table-mobile-breakpoint)`: a\n custom property can't be read inside an `@media` condition (only inside\n a declaration value), so a themable breakpoint was never on the table --\n documented in docs/Table.md rather than silently unsupported. */\n @media (max-width: 640px) {\n /* `display: table` (and its `-row`/`-cell`/etc. companions) is what gives\n a table its IMPLICIT header/cell ARIA semantics -- switching every one\n of these to `block` for the stacked-card look throws that away, which\n is exactly why `mobileRole()` in the script restates it explicitly as\n `table`/`rowgroup`/`row`/`columnheader`/`cell` on the elements below.\n Without both halves this rule would silently turn every consumer's\n table into an AX-tree list the moment their viewport narrowed. */.table-mobile-cards.svelte-171ci2i table:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i thead:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i tr:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i th:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i td:where(.svelte-171ci2i) {display:block;width:100%;}\n\n /* Headers are not shown as a row anymore -- their text now repeats per\n card as the `.table-mobile-label` beside each value -- but they stay\n in the DOM (not `display: none`) so `role=\"columnheader\"` continues\n naming its `role=\"cell\"` for any reading that still associates the\n two by DOM structure rather than only by the label span's text. */.table-mobile-cards.svelte-171ci2i thead:where(.svelte-171ci2i) {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}\n\n /* The horizontal-scroll affordance this table uses at desktop width (see\n .table-scroll / .table-scroll-shell above) has nothing to scroll once\n every cell is a full-width block, and a lingering scrim would fade a\n card edge that no longer clips anything. */.table-mobile-cards.svelte-171ci2i .table-scroll:where(.svelte-171ci2i) {overflow-x:visible;}.table-mobile-cards.svelte-171ci2i .table-scroll-shell:where(.svelte-171ci2i)::before,\n .table-mobile-cards.svelte-171ci2i .table-scroll-shell:where(.svelte-171ci2i)::after {display:none;}.table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i) tr.table-row:where(.svelte-171ci2i) {border:var(--table-mobile-card-border, 1px solid #e5e7eb);border-radius:var(\n --table-mobile-card-radius,\n var(--table-border-radius, var(--radius, 4px))\n );padding:var(--table-mobile-card-padding, 12px);margin-block-end:var(--table-mobile-card-gap, 12px);}.table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i) tr.table-row:where(.svelte-171ci2i):last-child {margin-block-end:0;}\n\n /* Each cell becomes a label/value pair instead of a table column; the\n label span (hidden above) is the only thing `display: inline` turns\n back on inside this query. */.table-mobile-cards.svelte-171ci2i td.table-content:where(.svelte-171ci2i) {display:flex;align-items:baseline;gap:var(--table-mobile-label-gap, 8px);border:none;}.table-mobile-cards.svelte-171ci2i .table-mobile-label:where(.svelte-171ci2i) {display:inline;flex:0 0 var(--table-mobile-label-width, 40%);font-weight:var(--table-mobile-label-font-weight, 600);color:var(--table-mobile-label-color, #6b7280);}.table-mobile-cards.svelte-171ci2i .table-mobile-value:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i td.table-content:where(.svelte-171ci2i) > div:where(.svelte-171ci2i) {flex:1 1 auto;min-width:0;}\n }"
22842
+ code: "\n /* ── Title ─────────────────────────────────────────────────────────────── */.table-title.svelte-171ci2i {margin:var(--table-title-margin, 0px 0px 12px 0px);font-size:var(--table-title-font-size, var(--table-tile-font-size, 18px));font-weight:var(--table-title-font-weight, 600);\n /* Unlike .table-content, a heading legitimately has no background of its\n own -- it sits directly on whatever surface the consumer places it on.\n The old #111827 literal ignored that surface entirely: on a dark page\n it measured a contrast of 1.03 against #1a1a26, i.e. invisible. `color`\n already inherits by default, so `inherit` states that explicitly and\n lets the title track its container's text colour; `currentColor` would\n resolve to the same value here (the spec special-cases it to mean\n exactly `inherit` for the `color` property) but reads as if it were\n referencing a colour set elsewhere on this rule, which it isn't. */color:var(--table-title-color, inherit);font-family:var(--table-title-font-family, inherit);padding:var(--table-title-padding);}\n\n /* ── C2-3 Search bar ────────────────────────────────────────────────────── */.table-search.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-search-gap, 8px);padding:var(--table-search-padding, 8px 12px);border:var(--table-search-border, 1px solid #e5e7eb);border-radius:var(--table-search-border-radius, var(--radius, 4px));background-color:var(--table-search-background, #ffffff);margin-bottom:var(--table-search-margin-bottom, 8px);}.table-search-icon.svelte-171ci2i {display:inline-flex;align-items:center;color:var(--table-search-icon-color, #9ca3af);flex-shrink:0;}.table-search-icon.svelte-171ci2i svg {width:var(--table-search-icon-size, 16px);height:var(--table-search-icon-size, 16px);}.table-search-input.svelte-171ci2i {flex:1;border:none;outline:none;background:transparent;font-size:var(--table-search-font-size, 14px);color:var(--table-search-color, #111827);min-width:0;}.table-search-input.svelte-171ci2i:focus-visible {outline:2px solid var(--table-focus-outline-color, #3b82f6);outline-offset:2px;border-radius:var(--table-search-focus-border-radius, var(--radius, 4px));}.table-search-input.svelte-171ci2i::placeholder {color:var(--table-search-placeholder-color, #4b5563);}\n\n /* Hide browser-default clear button on search inputs */.table-search-input.svelte-171ci2i::-webkit-search-cancel-button {display:none;}.table-search-clear.svelte-171ci2i {display:inline-flex;align-items:center;padding:2px;border:none;background:transparent;color:var(--table-search-clear-color, #6b7280);cursor:pointer;border-radius:4px;flex-shrink:0;}.table-search-clear.svelte-171ci2i:hover {color:var(--table-search-clear-hover-color, #111827);background-color:var(--table-search-clear-hover-background, rgba(0, 0, 0, 0.05));}.table-search-clear.svelte-171ci2i svg {width:var(--table-search-clear-icon-size, 14px);height:var(--table-search-clear-icon-size, 14px);}.table-header-inline-search.svelte-171ci2i {display:inline-flex;align-items:center;gap:var(--table-inline-search-gap, 6px);margin-left:auto;}.table-inline-search-trigger.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: var(--table-inline-search-trigger-padding, 4px);--button-text-color: var(--table-inline-search-icon-color, #9ca3af);}.table-inline-search-trigger.svelte-171ci2i svg {width:var(--table-inline-search-icon-size, 16px);height:var(--table-inline-search-icon-size, 16px);display:block;}.table-inline-search-input.svelte-171ci2i {--input-margin: 0;width:var(--table-inline-search-input-width, 160px);}.table-inline-search-clear.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: var(--table-inline-search-clear-padding, 2px);--button-text-color: var(--table-inline-search-clear-color, #6b7280);}.table-inline-search-clear.svelte-171ci2i svg {width:var(--table-inline-search-clear-icon-size, 14px);height:var(--table-inline-search-clear-icon-size, 14px);}\n\n /* ── Container ──────────────────────────────────────────────────────────── */\n /* `hidden` is the default because it is what clips the table's corners to\n this element's border-radius; without it the first and last cells square\n off over the rounded border. A consumer who needs the container itself to\n scroll sideways sets this to `auto` and accepts that trade. Note the\n scrollable variant below sets `overflow-y`, and per the CSS overflow spec\n a `visible` on one axis computes to `auto` when the other is not visible,\n so `visible` here does not survive on a scrollable table. */.table-container.svelte-171ci2i {border:var(--table-border, 1px solid #e5e7eb);border-radius:var(--table-border-radius, var(--radius, 4px));width:var(--table-container-width, 100%);overflow:var(--table-container-overflow, hidden);}.scrollable-table.svelte-171ci2i {height:var(--table-container-height, 143px);overflow-y:auto;}.table-scroll-shell.svelte-171ci2i {position:relative;min-width:0;}\n\n /* Edge scrims: fade the clipped side of the table into its background so\n hidden columns read as \"more content this way\". Class-driven from live\n scroll state — never shown when the table fits. pointer-events: none\n keeps cells under the fade clickable; z-index 2 paints above sticky\n headers (z-index 1). */.table-scroll-shell.svelte-171ci2i::before,\n .table-scroll-shell.svelte-171ci2i::after {content:'';position:absolute;top:0;bottom:0;width:var(--table-scroll-scrim-width, 32px);opacity:0;pointer-events:none;transition:opacity\n var(\n --table-scroll-scrim-transition-duration,\n var(--duration-base, var(--motion-duration, 0.2s))\n )\n var(--table-scroll-scrim-transition-easing, var(--motion-easing, ease));z-index:2;}.table-scroll-shell.svelte-171ci2i::before {left:0;border-radius:var(--table-border-radius, var(--radius, 4px)) 0 0\n var(--table-border-radius, var(--radius, 4px));background:linear-gradient(to right, var(--table-scroll-scrim-color, #ffffff), transparent);}.table-scroll-shell.svelte-171ci2i::after {right:0;border-radius:0 var(--table-border-radius, var(--radius, 4px))\n var(--table-border-radius, var(--radius, 4px)) 0;background:linear-gradient(to left, var(--table-scroll-scrim-color, #ffffff), transparent);}.table-scroll-shell.scrollable-left.svelte-171ci2i::before {opacity:1;}.table-scroll-shell.scrollable-right.svelte-171ci2i::after {opacity:1;}.table-scroll.svelte-171ci2i {overflow-x:auto;min-width:0;scrollbar-width:thin;}table.svelte-171ci2i {width:var(--table-width, 100%);border-collapse:var(--table-border-collapse, collapse);}.table-header.svelte-171ci2i,\n .table-content.svelte-171ci2i {border:var(--table-inner-border, none);padding:var(--table-padding, 12px 16px);text-align:var(--table-text-align, left);width:var(--table-column-width);\n /* Wrap at word boundaries; only a single word wider than the column may\n split as a last resort. break-word (not anywhere) keeps each column's\n min-content width at its longest word, so ordinary labels never split\n mid-word — the old break-all default did. Opt back in per consumer via\n --table-word-break / --table-overflow-wrap. */word-break:var(--table-word-break, normal);overflow-wrap:var(--table-overflow-wrap, break-word);}.scrollable-content.svelte-171ci2i {overflow-y:auto;height:var(--scrollable-column-height, 20px);}.table-header.svelte-171ci2i {background-color:var(--table-header-background, var(--table-header-border-bgcolor, #f9fafb));font-size:var(--table-header-font-size, 13px);font-family:var(--table-header-font-family, inherit);font-weight:var(--table-header-font-weight, 600);letter-spacing:var(--table-header-letter-spacing, 0.02em);text-transform:var(--table-header-text-transform, inherit);color:var(--table-header-color, var(--table-header-font-color, #6b7280));border-bottom:var(--table-header-border, var(--table-inner-border, none));}.table-header-content.svelte-171ci2i {display:flex;align-items:center;gap:4px;justify-content:var(--table-header-justify, flex-start);}.table-header-label.svelte-171ci2i {text-decoration:var(--table-header-tooltip-underline, underline dotted);text-underline-offset:2px;cursor:help;}.table-header-label-plain.svelte-171ci2i {text-decoration:none;}.table-header-filter.svelte-171ci2i {display:inline-flex;align-items:center;}.table-header-filter-trigger.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: 2px;--button-margin: 0;--button-width: fit-content;--button-height: fit-content;--button-text-color: var(--table-sort-button-color, inherit);--button-border-radius: 4px;--button-hover-color: var(--table-sort-button-hover-background, rgba(0, 0, 0, 0.05));display:inline-flex;align-items:center;opacity:var(--table-sort-idle-opacity, 0.5);}.table-header-filter-trigger.svelte-171ci2i:hover {opacity:var(--table-sort-idle-hover-opacity, 0.85);}.table-header-filter-active.svelte-171ci2i {opacity:1;color:var(--table-filter-active-color, #2563eb);}.table-header-filter-icon.svelte-171ci2i svg {width:var(--table-sort-icon-size, 14px);height:var(--table-sort-icon-size, 14px);display:block;}.table-cell-clamp.svelte-171ci2i {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.table-header-sticky.svelte-171ci2i {position:sticky;top:var(--table-header-sticky-top, 0);z-index:1;}.table-content.svelte-171ci2i {\n /* The terminal #ffffff matters as much as the colour beside it. Without it\n the whole declaration is invalid at computed-value time when neither\n variable is set, so the cell falls back to `transparent` and inherits\n whatever surface it lands on -- while `color` still resolves to a\n hardcoded near-black. On a dark page that is #111827 on #1a1a26: a\n measured contrast of 1.03, i.e. invisible. The header row never had the\n bug because it pairs its colour with a background of its own. */background-color:var(--table-content-background, var(--table-content-border-bgcolor, #ffffff));font-size:var(--table-content-font-size, 14px);font-family:var(--table-content-font-family, inherit);color:var(--table-content-color, var(--table-content-font-color, #111827));}\n\n /* Column highlight (TableColumn.highlighted). Row hover keeps higher\n specificity and row selection is declared later at equal specificity, so\n both row states paint over the column wash. */.table-header.table-col-highlighted.svelte-171ci2i {background-color:var(\n --table-col-highlight-header-background,\n var(--table-col-highlight-background, #f3f9ff)\n );}.table-content.table-col-highlighted.svelte-171ci2i {background-color:var(--table-col-highlight-background, #f3f9ff);}.table-row.svelte-171ci2i {border-bottom:var(--table-row-border, 1px solid #f3f4f6);background-color:var(--table-row-background);}.table-row.svelte-171ci2i:last-child {border-bottom:var(--table-row-last-border, none);}.table-row.svelte-171ci2i:nth-child(even) {background-color:var(--table-row-alt-background, var(--table-row-background));}.table-row.svelte-171ci2i:hover {background-color:var(--table-row-hover-background);}.table-row.svelte-171ci2i:hover > .table-content:where(.svelte-171ci2i) {background-color:var(\n --table-row-hover-background,\n var(--table-content-background, var(--table-content-border-bgcolor))\n );}.table-row-clickable.svelte-171ci2i {cursor:pointer;}.table-row-clickable.svelte-171ci2i:focus-visible {outline:2px solid var(--table-focus-outline-color, #3b82f6);outline-offset:-2px;}\n\n /* C2-1: Selected row highlight */.table-row-selected.svelte-171ci2i {background-color:var(--table-row-selected-background, #eff6ff);}.table-row-selected.svelte-171ci2i > .table-content:where(.svelte-171ci2i) {background-color:var(--table-row-selected-background, #eff6ff);}\n\n /* Summary/period-total row (summaryRowIndex): both the row and its cells,\n since a themed --table-content-background would otherwise paint over a\n row-level background. Falls back to the regular cell background. */.table-summary-row.svelte-171ci2i {background-color:var(--table-summary-row-background, var(--table-content-background));}.table-summary-row.svelte-171ci2i > .table-content:where(.svelte-171ci2i) {background-color:var(--table-summary-row-background, var(--table-content-background));}\n\n /* ── C2-1 Checkbox column ───────────────────────────────────────────────── */\n /* The column renders the library Checkbox. The table's own --table-checkbox-*\n tokens stay the public API and are bridged onto Checkbox's --checkbox-*\n variables here, so a consumer theming the table keeps working and a\n consumer theming Checkbox app-wide is overridden only inside the table. */.table-checkbox-col.svelte-171ci2i {width:var(--table-checkbox-col-width, 44px);padding:var(--table-checkbox-col-padding, 12px 12px);--checkbox-container-gap: 0;--checkbox-size: var(--table-checkbox-size, 18px);--checkbox-border: var(--table-checkbox-border, 2px solid #9ca3af);--checkbox-border-radius: var(--table-checkbox-border-radius, var(--radius, 4px));--checkbox-background: var(--table-checkbox-background, transparent);--checkbox-hover-border-color: var(--table-checkbox-hover-border-color, #6b7280);--checkbox-checked-background: var(--table-checkbox-checked-background, #2563eb);--checkbox-checked-border: var(\n --table-checkbox-checked-border,\n 2px solid var(--table-checkbox-checked-border-color, #2563eb)\n );--checkbox-indeterminate-background: var(--table-checkbox-indeterminate-background, #2563eb);--checkbox-indeterminate-border: var(\n --table-checkbox-indeterminate-border,\n 2px solid var(--table-checkbox-indeterminate-border-color, #2563eb)\n );--checkbox-disabled-opacity: var(--table-checkbox-disabled-opacity, 0.4);--checkbox-focus-ring: var(--table-checkbox-focus-ring, 0 0 0 3px rgba(59, 130, 246, 0.3));--checkbox-icon-size: var(--table-checkbox-icon-size, 12px);--checkbox-checkmark-color: var(--table-checkbox-icon-color, #ffffff);--checkbox-dash-color: var(--table-checkbox-icon-color, #ffffff);\n /* Named so a consumer can reach it. Table sets the Checkbox child's token\n directly, and a rule on the element beats anything declared at :root, so\n through <sui-table> the selection checkboxes' transition could not be\n slowed or stopped by any means -- custom properties are the only route\n across a shadow boundary and this one was already spoken for. */--checkbox-transition: var(\n --table-checkbox-transition,\n var(--duration-quick, var(--motion-duration, 0.15s))\n );}\n\n /* ── Sort button ────────────────────────────────────────────────────────── */.sort-button.svelte-171ci2i {--button-color: transparent;--button-border: none;--button-padding: 2px;--button-margin: 0;--button-text-color: var(--table-sort-button-color, inherit);--button-border-radius: 4px;--button-width: fit-content;--button-height: fit-content;--button-hover-color: var(--table-sort-button-hover-background, rgba(0, 0, 0, 0.05));--button-hover-text-color: var(\n --table-sort-button-hover-color,\n var(--table-sort-button-color, inherit)\n );display:inline-flex;align-items:center;line-height:1;}.sort-button.svelte-171ci2i .sort-icon {display:inline-flex;align-items:center;}\n\n /* The sorted-direction half paints via currentColor; without an explicit\n color it inherits the Button's text color (white on the default button\n theme), which disappears on light headers. Default to the design\n system's active blue. */.sort-button.svelte-171ci2i .sort-icon:not(.sort-icon-idle) {color:var(--table-sort-active-color, #1b85ff);}.sort-button.svelte-171ci2i .sort-icon svg {width:var(--table-sort-icon-size, 14px);height:var(--table-sort-icon-size, 14px);display:block;}\n\n /* Two-tone state painting. The shared sort-default.svg asset stays\n color-agnostic (fill=\"currentColor\", like every other icon asset); the\n state colors live here. All halves default to the inactive fill, then\n the sorted direction's half is released back to currentColor (the\n active color above). Path order in the asset is up-chevron first,\n down-chevron second. */.sort-button.svelte-171ci2i .sort-icon svg path {fill:var(--table-sort-inactive-color, #c7c7c7);}.sort-button.svelte-171ci2i .sort-icon-asc svg path:first-child,\n .sort-button.svelte-171ci2i .sort-icon-desc svg path:last-child {fill:currentColor;}\n\n /* The design system draws every sort state fully opaque — faintness comes\n from the glyph fills (inactive halves #C7C7C7, active direction\n currentColor), never from transparency. The opacity vars remain for\n consumers that prefer a fade but now default to solid; hover steps the\n inactive halves to the design system's hover gray. */.sort-button.svelte-171ci2i .sort-icon-idle {opacity:var(--table-sort-idle-opacity, 1);}.sort-button.svelte-171ci2i:hover .sort-icon-idle {opacity:var(--table-sort-idle-hover-opacity, 1);--table-sort-inactive-color: var(--table-sort-hover-color, #797979);}\n\n /* ── Empty ──────────────────────────────────────────────────────────────── */.table-empty.svelte-171ci2i {padding:var(--table-empty-padding, 32px 24px);text-align:center;color:var(--table-empty-color, #9ca3af);}\n\n /* ── Footer ─────────────────────────────────────────────────────────────── */.table-footer.svelte-171ci2i {border-top:var(--table-footer-border, 1px solid #e5e7eb);padding:var(--table-footer-padding, 8px 16px);background-color:var(--table-footer-background, transparent);}.table-paginator.svelte-171ci2i {display:flex;align-items:center;justify-content:space-between;gap:var(--table-paginator-gap, 12px);flex-wrap:wrap;}.table-paginator-range.svelte-171ci2i {font-size:var(--table-paginator-range-font-size, 13px);color:var(--table-paginator-range-color, #6b7280);font-variant-numeric:tabular-nums;}.table-paginator-controls.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-paginator-gap, 12px);}.table-paginator-size.svelte-171ci2i {display:inline-flex;min-width:var(--table-paginator-size-width, 72px);\n /* Select's standalone defaults (40px min-height, 8px 12px padding) render\n 58px tall next to the 36px pagination buttons sharing this row. Match the\n steppers instead of towering over them. */--select-trigger-min-height: var(--table-paginator-size-height, 36px);--select-trigger-padding: var(--table-paginator-size-padding, 0 8px);}\n\n /* ── Toolbar (bulk actions) ─────────────────────────────────────────────── */.table-toolbar.svelte-171ci2i {display:flex;align-items:center;gap:var(--table-toolbar-gap, 12px);padding:var(--table-toolbar-padding, 8px 12px);border:var(--table-toolbar-border, 1px solid #e5e7eb);border-radius:var(--table-toolbar-border-radius, var(--radius, 4px));background-color:var(--table-toolbar-background, #f9fafb);margin-bottom:var(--table-toolbar-margin-bottom, 8px);}\n\n /* ── Row-number column ──────────────────────────────────────────────────── */.table-row-number-col.svelte-171ci2i {width:var(--table-row-number-col-width, 48px);color:var(--table-row-number-color, #6b7280);font-variant-numeric:tabular-nums;text-align:var(--table-row-number-align, var(--table-text-align, left));}\n\n /* ── Accessibility ──────────────────────────────────────────────────────── */.sr-only.svelte-171ci2i {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}\n\n /* ── Mobile record cards (opt-in via `mobileCardLayout`) ──────────────────\n The label span is always in the DOM -- rendering it only under the media\n query below would mean an AT that queries computed style rather than\n layout (or a print stylesheet, or a future breakpoint change) sees no\n label at all until the exact 640px condition is re-evaluated. Keeping the\n element and toggling `display` is what lets `aria-hidden` on it (see the\n template) stay meaningful at every width: hidden today, but never a\n generated-content trick that could not carry that attribute in the first\n place. */.table-mobile-label.svelte-171ci2i {display:none;}\n\n /* The breakpoint is a literal, not `var(--table-mobile-breakpoint)`: a\n custom property can't be read inside an `@media` condition (only inside\n a declaration value), so a themable breakpoint was never on the table --\n documented in docs/Table.md rather than silently unsupported. */\n @media (max-width: 640px) {\n /* `display: table` (and its `-row`/`-cell`/etc. companions) is what gives\n a table its IMPLICIT header/cell ARIA semantics -- switching every one\n of these to `block` for the stacked-card look throws that away, which\n is exactly why `mobileRole()` in the script restates it explicitly as\n `table`/`rowgroup`/`row`/`columnheader`/`cell` on the elements below.\n Without both halves this rule would silently turn every consumer's\n table into an AX-tree list the moment their viewport narrowed. */.table-mobile-cards.svelte-171ci2i table:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i thead:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i tr:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i th:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i td:where(.svelte-171ci2i) {display:block;width:100%;}\n\n /* Headers are not shown as a row anymore -- their text now repeats per\n card as the `.table-mobile-label` beside each value -- but they stay\n in the DOM (not `display: none`) so `role=\"columnheader\"` continues\n naming its `role=\"cell\"` for any reading that still associates the\n two by DOM structure rather than only by the label span's text. */.table-mobile-cards.svelte-171ci2i thead:where(.svelte-171ci2i) {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}\n\n /* The horizontal-scroll affordance this table uses at desktop width (see\n .table-scroll / .table-scroll-shell above) has nothing to scroll once\n every cell is a full-width block, and a lingering scrim would fade a\n card edge that no longer clips anything. */.table-mobile-cards.svelte-171ci2i .table-scroll:where(.svelte-171ci2i) {overflow-x:visible;}.table-mobile-cards.svelte-171ci2i .table-scroll-shell:where(.svelte-171ci2i)::before,\n .table-mobile-cards.svelte-171ci2i .table-scroll-shell:where(.svelte-171ci2i)::after {display:none;}.table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i) tr.table-row:where(.svelte-171ci2i) {border:var(--table-mobile-card-border, 1px solid #e5e7eb);border-radius:var(\n --table-mobile-card-radius,\n var(--table-border-radius, var(--radius, 4px))\n );padding:var(--table-mobile-card-padding, 12px);margin-block-end:var(--table-mobile-card-gap, 12px);}.table-mobile-cards.svelte-171ci2i tbody:where(.svelte-171ci2i) tr.table-row:where(.svelte-171ci2i):last-child {margin-block-end:0;}\n\n /* Each cell becomes a label/value pair instead of a table column; the\n label span (hidden above) is the only thing `display: inline` turns\n back on inside this query. */.table-mobile-cards.svelte-171ci2i td.table-content:where(.svelte-171ci2i) {display:flex;align-items:baseline;gap:var(--table-mobile-label-gap, 8px);border:none;}.table-mobile-cards.svelte-171ci2i .table-mobile-label:where(.svelte-171ci2i) {display:inline;flex:0 0 var(--table-mobile-label-width, 40%);font-weight:var(--table-mobile-label-font-weight, 600);color:var(--table-mobile-label-color, #6b7280);}.table-mobile-cards.svelte-171ci2i .table-mobile-value:where(.svelte-171ci2i),\n .table-mobile-cards.svelte-171ci2i td.table-content:where(.svelte-171ci2i) > div:where(.svelte-171ci2i) {flex:1 1 auto;min-width:0;}\n }"
22639
22843
  };
22640
22844
  function Table(e, t) {
22641
22845
  push(t, !0), append_styles$1(e, $$css$86);
@@ -23192,6 +23396,7 @@ function Table(e, t) {
23192
23396
  {
23193
23397
  let e = /* @__PURE__ */ user_derived(() => bt()?.sortBy?.(get(t)) ?? `Sort by ${get(t)}`);
23194
23398
  Button(a, {
23399
+ variant: "ghost",
23195
23400
  onclick: () => It(n),
23196
23401
  get ariaLabel() {
23197
23402
  return get(e);
@@ -23768,71 +23973,47 @@ customElements.define("sui-table", create_custom_element(Table_wc, {
23768
23973
  //#region src/lib/Toast/Toast.svelte
23769
23974
  var root$42 = /* @__PURE__ */ from_html("<div class=\"toast-icon-wrapper svelte-37crwe\"><!></div>"), root_1$39 = /* @__PURE__ */ from_html("<div class=\"toast-subtext svelte-37crwe\"> </div>"), root_2$30 = /* @__PURE__ */ from_html("<div class=\"close-button svelte-37crwe\" tabindex=\"0\" role=\"button\"><!></div>"), root_3$27 = /* @__PURE__ */ from_html("<div role=\"alert\" aria-live=\"assertive\"><!> <div class=\"toast-message svelte-37crwe\"> <!> <!></div> <!></div>"), $$css$84 = {
23770
23975
  hash: "svelte-37crwe",
23771
- code: ".toast.svelte-37crwe {padding:var(--toast-padding, 10px);font-size:var(--toast-font-size, 14px);font-family:var(--toast-font-family, inherit);font-weight:var(--toast-font-weight, inherit);height:var(--toast-height, fit-content);border-radius:var(--toast-border-radius, var(--radius, 4px));border:var(--toast-border, none);border-style:var(--toast-border-style);width:var(--toast-width, fit-content);align-items:var(--toast-align-items, center);margin:var(--toast-margin, 0px 10px 10px 10px);justify-content:var(--toast-justify-content, space-between);z-index:var(--toast-z-index, 1000);display:var(--toast-display, flex);position:var(--toast-position, absolute);top:var(--toast-top, 10px);left:var(--toast-left, 0);right:var(--toast-right, 0);bottom:var(--toast-bottom, auto);background-color:var(--toast-background-color, #87ceeb);opacity:var(--toast-opacity, 1);box-sizing:var(--toast-box-sizing);\n\n /* A toast is a transient status overlay, not a click target: it floats\n above page content (often over drawer/footer CTAs) and used to swallow\n clicks meant for the controls beneath it for its whole duration.\n Click-through by default; the close button re-enables its own hit\n area below, and consumers with actionable bottomContent can opt the\n whole toast back in via --toast-pointer-events: auto. */pointer-events:var(--toast-pointer-events, none);}.no-page-overlap.svelte-37crwe {position:var(--toast-position, relative);}.toast-icon-wrapper.svelte-37crwe {display:flex;width:var(--toast-icon-wrapper-width, 20px);height:var(--toast-icon-wrapper-height, 20px);margin:var(--toast-icon-margin, 0px 6px 0px 0px);padding:var(--toast-icon-wrapper-padding, 1px);align-items:center;--image-height: var(--toast-icon-height, 100%);--image-width: fit-content;--image-filter: var(--toast-icon-filter, none);--image-border-radius: var(--toast-icon-border-radius, 50%);}.toast-message.svelte-37crwe {display:var(--toast-message-display, flex);flex:var(--toast-message-flex, 1);padding:var(--toast-message-padding, 1px);flex-direction:column;}.toast-subtext.svelte-37crwe {color:var(--toast-subtext-color, #c7c7c7);font-size:var(--toast-subtext-font-size, 10px);font-weight:var(--toast-subtext-font-weight, 400);margin:var(--toast-subtext-margin, 10px 0px 0px 0px);}.close-button.svelte-37crwe {pointer-events:auto;width:var(--toast-close-button-width, 20px);height:var(--toast-close-button-height, 20px);cursor:var(--toast-close-button-cursor, pointer);gap:var(--toast-close-button-gap, 6px);margin:var(--toast-close-button-margin, 0px 0px 0px 10px);display:var(--toast-close-button-display, flex);align-items:var(--toast-close-button-align-items, center);justify-content:var(--toast-close-button-justify-content, center);padding:var(--toast-close-button-padding, 1px);--image-height: var(--toast-icon-height, 100%);--image-width: fit-content;--image-filter: var(--toast-icon-filter, none);--image-border-radius: var(--toast-icon-border-radius, 50%);}.success.svelte-37crwe {color:var(--toast-success-text, #fff);background-color:var(--toast-success-background-color, var(--toast-background-color, #24aa5a));--toast-border: var(--toast-success-border);}.info.svelte-37crwe {color:var(--toast-info-text, #fff);background-color:var(--toast-info-background-color, var(--toast-background-color, #87ceeb));--toast-border: var(--toast-info-border);}.warn.svelte-37crwe {color:var(--toast-warn-text, #fff);background-color:var(--toast-warn-background-color, var(--toast-background-color, #f3a42d));--toast-border: var(--toast-warn-border);}.error.svelte-37crwe {color:var(--toast-error-text, #fff);background-color:var(--toast-error-background-color, var(--toast-background-color, #f04438));--toast-border: var(--toast-error-border);}"
23976
+ code: ".toast.svelte-37crwe {padding:var(--toast-padding, 10px);font-size:var(--toast-font-size, 14px);font-family:var(--toast-font-family, inherit);font-weight:var(--toast-font-weight, inherit);height:var(--toast-height, fit-content);border-radius:var(--toast-border-radius, var(--radius, 4px));border:var(--toast-border, none);border-style:var(--toast-border-style);width:var(--toast-width, fit-content);align-items:var(--toast-align-items, center);margin:var(--toast-margin, 0px 10px 10px 10px);justify-content:var(--toast-justify-content, space-between);z-index:var(--toast-z-index, 1000);position:var(--toast-position, absolute);top:var(--toast-top, 10px);left:var(--toast-left, 0);right:var(--toast-right, 0);bottom:var(--toast-bottom, auto);background-color:var(--toast-background-color, #87ceeb);box-sizing:var(--toast-box-sizing);\n\n /* A toast is a transient status overlay, not a click target: it floats\n above page content (often over drawer/footer CTAs) and used to swallow\n clicks meant for the controls beneath it for its whole duration.\n Click-through by default; the close button re-enables its own hit\n area below, and consumers with actionable bottomContent can opt the\n whole toast back in via --toast-pointer-events: auto. */pointer-events:var(--toast-pointer-events, none);\n\n /* Closed / pre-enter state. `@starting-style` below reuses these same\n values for the entrance's \"before\" frame, and removing `.is-visible`\n transitions back to these same values for the exit -- one shared\n \"hidden\" declaration, not independent in/out targets the way\n `in:fly`/`out:fly` configs could be. */display:none;opacity:0;transform:translate(var(--toast-enter-x, 0px), var(--toast-enter-y, 0px));\n\n /* max(50ms, …) rather than trusting the JS-side floor alone (toDurationStyle,\n in the script block): that only clamps the inAnimationDuration/\n outAnimationDuration PROP path. A consumer overriding --toast-close-duration\n directly via CSS -- the whole point of exposing it as a token -- bypasses\n the prop entirely, and a 0s/1ms transition never starts, so it never fires\n transitionend, so ontoasthide never runs. The floor has to live wherever\n the duration is actually consumed, not just where the props feed it. */transition:opacity max(50ms, var(--toast-close-duration, var(--motion-duration, 0.8s)))\n var(--toast-close-easing, var(--motion-easing, ease-in)),\n transform max(50ms, var(--toast-close-duration, var(--motion-duration, 0.8s)))\n var(--toast-close-easing, var(--motion-easing, ease-in)),\n display max(50ms, var(--toast-close-duration, var(--motion-duration, 0.8s))) allow-discrete;}.toast.is-visible.svelte-37crwe {display:var(--toast-display, flex);opacity:var(--toast-opacity, 1);transform:translate(0, 0);\n\n /* 400ms matches --duration-slow exactly (DESIGN_PRINCIPLES.md #1's scale),\n so it sits in this chain as the named tier; 800ms (the close side above)\n matches no named tier and skips straight to the root token. */\n /* Same max(50ms, …) floor as the closed-state block below, and for the same\n reason -- a consumer-set --toast-open-duration can bypass the JS-side\n floor on the inAnimationDuration prop just as easily as the close side. */transition:opacity\n max(50ms, var(--toast-open-duration, var(--duration-slow, var(--motion-duration, 0.4s))))\n var(--toast-open-easing, var(--ease-out, var(--motion-easing, ease-out))),\n transform\n max(50ms, var(--toast-open-duration, var(--duration-slow, var(--motion-duration, 0.4s))))\n var(--toast-open-easing, var(--ease-out, var(--motion-easing, ease-out))),\n display\n max(50ms, var(--toast-open-duration, var(--duration-slow, var(--motion-duration, 0.4s))))\n allow-discrete;\n\n @starting-style {opacity:0;transform:translate(var(--toast-enter-x, 0px), var(--toast-enter-y, 0px));\n }}.no-page-overlap.svelte-37crwe {position:var(--toast-position, relative);}.toast[data-direction='left-to-right'].svelte-37crwe {--toast-enter-x: calc(-1 * var(--distance-overlay, 60px));}.toast[data-direction='right-to-left'].svelte-37crwe {--toast-enter-x: var(--distance-overlay, 60px);}.toast[data-direction='bottom-to-top'].svelte-37crwe {--toast-enter-y: var(--distance-overlay, 60px);}.toast[data-direction='top-to-bottom'].svelte-37crwe {--toast-enter-y: calc(-1 * var(--distance-overlay, 60px));}\n\n /* Vertical directions travel a shorter, fixed distance in non-overlap mode --\n today's own literal (20px), kept as its own value rather than forced onto\n `--distance-overlay`: that token replaces the old 500px \"flying\" default,\n and 20px was already reasonable (DESIGN_PRINCIPLES.md #1). Horizontal\n directions never varied with `overlapPage` before this migration (see the\n pre-migration `getAnimationConfig` switch), so they get no non-overlap\n override here either. */.toast.no-page-overlap[data-direction='bottom-to-top'].svelte-37crwe {--toast-enter-y: 20px;}.toast.no-page-overlap[data-direction='top-to-bottom'].svelte-37crwe {--toast-enter-y: -20px;}\n\n /* Accessibility guard, not a style preference -- `!important` is deliberate.\n It has to outrank both the direction rules above and any per-instance\n inline `--toast-enter-x`/`-y` the component sets from `inAnimationOffset`/\n `outAnimationOffset` above (an inline style otherwise beats any selector in\n this sheet). Duration floors at 0.05s rather than 0s so the\n `transitionend` listener that fires `ontoasthide` still runs -- a `0s`\n transition never starts, so it never ends, and (empirically, under heavy\n main-thread jank) even a 1ms duration can get coalesced across a single\n style recalc with no observable \"before\" frame, which drops\n `transitionend` the same way. 50ms clears a normal frame budget with\n margin while staying well under perceptible motion. See\n DESIGN_PRINCIPLES.md #1 on matching a guard's specificity to what it has\n to override. */\n @media (prefers-reduced-motion: reduce) {.toast.svelte-37crwe,\n .toast.is-visible.svelte-37crwe {--toast-enter-x: 0px !important;--toast-enter-y: 0px !important;transition-duration:0.05s !important;}\n }.toast-icon-wrapper.svelte-37crwe {display:flex;width:var(--toast-icon-wrapper-width, 20px);height:var(--toast-icon-wrapper-height, 20px);margin:var(--toast-icon-margin, 0px 6px 0px 0px);padding:var(--toast-icon-wrapper-padding, 1px);align-items:center;--image-height: var(--toast-icon-height, 100%);--image-width: fit-content;--image-filter: var(--toast-icon-filter, none);--image-border-radius: var(--toast-icon-border-radius, 50%);}.toast-message.svelte-37crwe {display:var(--toast-message-display, flex);flex:var(--toast-message-flex, 1);padding:var(--toast-message-padding, 1px);flex-direction:column;}.toast-subtext.svelte-37crwe {color:var(--toast-subtext-color, #c7c7c7);font-size:var(--toast-subtext-font-size, 10px);font-weight:var(--toast-subtext-font-weight, 400);margin:var(--toast-subtext-margin, 10px 0px 0px 0px);}.close-button.svelte-37crwe {pointer-events:auto;width:var(--toast-close-button-width, 20px);height:var(--toast-close-button-height, 20px);cursor:var(--toast-close-button-cursor, pointer);gap:var(--toast-close-button-gap, 6px);margin:var(--toast-close-button-margin, 0px 0px 0px 10px);display:var(--toast-close-button-display, flex);align-items:var(--toast-close-button-align-items, center);justify-content:var(--toast-close-button-justify-content, center);padding:var(--toast-close-button-padding, 1px);--image-height: var(--toast-icon-height, 100%);--image-width: fit-content;--image-filter: var(--toast-icon-filter, none);--image-border-radius: var(--toast-icon-border-radius, 50%);}.success.svelte-37crwe {color:var(--toast-success-text, #fff);background-color:var(--toast-success-background-color, var(--toast-background-color, #24aa5a));--toast-border: var(--toast-success-border);}.info.svelte-37crwe {color:var(--toast-info-text, #fff);background-color:var(--toast-info-background-color, var(--toast-background-color, #87ceeb));--toast-border: var(--toast-info-border);}.warn.svelte-37crwe {color:var(--toast-warn-text, #fff);background-color:var(--toast-warn-background-color, var(--toast-background-color, #f3a42d));--toast-border: var(--toast-warn-border);}.error.svelte-37crwe {color:var(--toast-error-text, #fff);background-color:var(--toast-error-background-color, var(--toast-background-color, #f04438));--toast-border: var(--toast-error-border);}"
23772
23977
  };
23773
23978
  function Toast(e, t) {
23774
23979
  push(t, !0), append_styles$1(e, $$css$84);
23775
- let n = prop(t, "duration", 7, 2e3), i = prop(t, "leftIcon", 7), a = prop(t, "message", 7, ""), o = prop(t, "subtext", 7), s = prop(t, "rightIcon", 7), c = prop(t, "type", 7), l = prop(t, "direction", 7), u = prop(t, "overlapPage", 7, !0), f = prop(t, "inAnimationOffset", 7), p = prop(t, "inAnimationDuration", 7), h = prop(t, "outAnimationOffset", 7), S = prop(t, "outAnimationDuration", 7), C = prop(t, "testId", 7), k = prop(t, "messageTestId", 7), R = prop(t, "subTextTestId", 7), te = prop(t, "closeIconTestId", 7), ne = prop(t, "ontoasthide", 7), re = prop(t, "bottomContent", 7), G = prop(t, "classes", 7), be = /* @__PURE__ */ user_derived(() => at(u(), l())), Me = /* @__PURE__ */ state(!0), Re = /* @__PURE__ */ user_derived(() => [
23980
+ let n = prop(t, "duration", 7, 2e3), i = prop(t, "leftIcon", 7), a = prop(t, "message", 7, ""), o = prop(t, "subtext", 7), s = prop(t, "rightIcon", 7), c = prop(t, "type", 7), l = prop(t, "direction", 7), u = prop(t, "overlapPage", 7, !0), f = prop(t, "inAnimationOffset", 7), p = prop(t, "inAnimationDuration", 7), h = prop(t, "outAnimationOffset", 7), S = prop(t, "outAnimationDuration", 7), C = prop(t, "testId", 7), k = prop(t, "messageTestId", 7), R = prop(t, "subTextTestId", 7), te = prop(t, "closeIconTestId", 7), ne = prop(t, "ontoasthide", 7), re = prop(t, "bottomContent", 7), G = prop(t, "classes", 7), be = /* @__PURE__ */ state(!0), Me = /* @__PURE__ */ user_derived(() => [
23776
23981
  "toast",
23777
23982
  c() ?? "",
23778
23983
  G() ?? ""
23779
- ].filter((e) => e.length > 0).join(" "));
23780
- function Ue() {
23781
- set(Me, !1);
23984
+ ].filter((e) => e.length > 0).join(" ")), Re = /* @__PURE__ */ user_derived(() => l() ?? "top-to-bottom");
23985
+ function Ue(e, t) {
23986
+ switch (e) {
23987
+ case "left-to-right": return { x: -t };
23988
+ case "right-to-left": return { x: t };
23989
+ case "bottom-to-top": return { y: t };
23990
+ default: return { y: -t };
23991
+ }
23992
+ }
23993
+ let it = /* @__PURE__ */ user_derived(() => {
23994
+ let e = f() ?? h();
23995
+ return e == null ? {} : Ue(get(Re), e);
23996
+ });
23997
+ function at(e) {
23998
+ return typeof e == "number" ? `${Math.max(e, 50)}ms` : null;
23782
23999
  }
23783
- function it() {
23784
- ne()?.();
24000
+ let ot = /* @__PURE__ */ user_derived(() => at(p())), ct = /* @__PURE__ */ user_derived(() => at(S()));
24001
+ function lt() {
24002
+ set(be, !1);
23785
24003
  }
23786
- function at(e, t) {
23787
- let n = 0, i = 0, a = 0, o = 0;
23788
- switch (t) {
23789
- case "left-to-right":
23790
- n = -1 * (f() ?? 500), a = -1 * (h() ?? 500);
23791
- break;
23792
- case "right-to-left":
23793
- n = f() ?? 500, a = h() ?? 500;
23794
- break;
23795
- case "bottom-to-top":
23796
- i = f() ?? (e ? 500 : 20), o = h() ?? (e ? 500 : 20);
23797
- break;
23798
- default:
23799
- i = -1 * (f() ?? (e ? 500 : 20)), o = -1 * (h() ?? (e ? 100 : 20));
23800
- break;
23801
- }
23802
- return prefersReducedMotion() ? {
23803
- in: {
23804
- x: 0,
23805
- y: 0,
23806
- duration: 0
23807
- },
23808
- out: {
23809
- x: 0,
23810
- y: 0,
23811
- duration: 0
23812
- }
23813
- } : {
23814
- in: {
23815
- x: n,
23816
- y: i,
23817
- duration: p() ?? 400
23818
- },
23819
- out: {
23820
- x: a,
23821
- y: o,
23822
- duration: S() ?? 800
23823
- }
23824
- };
24004
+ function ut(e) {
24005
+ e.target === e.currentTarget && e.propertyName === "opacity" && !get(be) && ne()?.();
23825
24006
  }
23826
24007
  user_effect(() => {
23827
24008
  a(), n(), untrack(() => {
23828
- set(Me, !0);
24009
+ set(be, !0);
23829
24010
  });
23830
- let e = setTimeout(Ue, n());
24011
+ let e = setTimeout(lt, n());
23831
24012
  return () => {
23832
24013
  clearTimeout(e);
23833
24014
  };
23834
24015
  });
23835
- var ot = {
24016
+ var dt = {
23836
24017
  get duration() {
23837
24018
  return n();
23838
24019
  },
@@ -23947,63 +24128,66 @@ function Toast(e, t) {
23947
24128
  set classes(e) {
23948
24129
  G(e), flushSync();
23949
24130
  }
23950
- }, ct = comment(), lt = first_child(ct), ut = (e) => {
23951
- var t = root_3$27();
23952
- let n;
23953
- var c = child(t), l = (e) => {
23954
- var t = root$42();
23955
- Img(child(t), {
23956
- inlineSvg: !0,
23957
- get src() {
23958
- return i();
23959
- },
23960
- alt: "",
23961
- fallback: ""
23962
- }), reset(t), append(e, t);
23963
- };
23964
- if_block(c, (e) => {
23965
- typeof i() == "string" && i().length > 0 && e(l);
23966
- });
23967
- var f = sibling(c, 2), p = child(f), h = sibling(p), S = (e) => {
23968
- var t = root_1$39(), n = child(t, !0);
23969
- reset(t), template_effect(() => {
23970
- set_attribute(t, "data-pw", R()), set_attribute(t, "testid", R()), set_text(n, o());
23971
- }), append(e, t);
23972
- };
23973
- if_block(h, (e) => {
23974
- typeof o() == "string" && o().length > 0 && e(S);
23975
- });
23976
- var ne = sibling(h, 2), G = (e) => {
23977
- var t = comment();
23978
- snippet(first_child(t), re), append(e, t);
23979
- };
23980
- if_block(ne, (e) => {
23981
- typeof re() == "function" && e(G);
23982
- }), reset(f);
23983
- var Me = sibling(f, 2), at = (e) => {
23984
- var t = root_2$30();
23985
- Img(child(t), {
23986
- inlineSvg: !0,
23987
- get src() {
23988
- return s();
23989
- },
23990
- alt: "Close",
23991
- fallback: ""
23992
- }), reset(t), template_effect(() => {
23993
- set_attribute(t, "data-pw", te()), set_attribute(t, "testid", te());
23994
- }), delegated("click", t, Ue), delegated("keydown", t, (e) => {
23995
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), Ue());
23996
- }), append(e, t);
23997
- };
23998
- if_block(Me, (e) => {
23999
- typeof s() == "string" && s().length > 0 && e(at);
24131
+ }, ft = root_3$27();
24132
+ let pt, mt;
24133
+ var ht = child(ft), gt = (e) => {
24134
+ var t = root$42();
24135
+ Img(child(t), {
24136
+ inlineSvg: !0,
24137
+ get src() {
24138
+ return i();
24139
+ },
24140
+ alt: "",
24141
+ fallback: ""
24142
+ }), reset(t), append(e, t);
24143
+ };
24144
+ if_block(ht, (e) => {
24145
+ typeof i() == "string" && i().length > 0 && e(gt);
24146
+ });
24147
+ var _t = sibling(ht, 2), vt = child(_t), yt = sibling(vt), bt = (e) => {
24148
+ var t = root_1$39(), n = child(t, !0);
24149
+ reset(t), template_effect(() => {
24150
+ set_attribute(t, "data-pw", R()), set_attribute(t, "testid", R()), set_text(n, o());
24151
+ }), append(e, t);
24152
+ };
24153
+ if_block(yt, (e) => {
24154
+ typeof o() == "string" && o().length > 0 && e(bt);
24155
+ });
24156
+ var xt = sibling(yt, 2), St = (e) => {
24157
+ var t = comment();
24158
+ snippet(first_child(t), re), append(e, t);
24159
+ };
24160
+ if_block(xt, (e) => {
24161
+ typeof re() == "function" && e(St);
24162
+ }), reset(_t);
24163
+ var Ct = sibling(_t, 2), wt = (e) => {
24164
+ var t = root_2$30();
24165
+ Img(child(t), {
24166
+ inlineSvg: !0,
24167
+ get src() {
24168
+ return s();
24169
+ },
24170
+ alt: "Close",
24171
+ fallback: ""
24000
24172
  }), reset(t), template_effect(() => {
24001
- n = set_class(t, 1, clsx(get(Re)), "svelte-37crwe", n, { "no-page-overlap": !u() }), set_attribute(t, "data-pw", C()), set_attribute(t, "testid", C()), set_attribute(f, "data-pw", k()), set_attribute(f, "testid", k()), set_text(p, `${a() ?? ""} `);
24002
- }), event("outroend", t, it), transition(5, t, () => fly, () => get(be).in), transition(2, t, () => fly, () => get(be).out), append(e, t);
24173
+ set_attribute(t, "data-pw", te()), set_attribute(t, "testid", te());
24174
+ }), delegated("click", t, lt), delegated("keydown", t, (e) => {
24175
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), lt());
24176
+ }), append(e, t);
24003
24177
  };
24004
- return if_block(lt, (e) => {
24005
- get(Me) && e(ut);
24006
- }), append(e, ct), pop(ot);
24178
+ return if_block(Ct, (e) => {
24179
+ typeof s() == "string" && s().length > 0 && e(wt);
24180
+ }), reset(ft), template_effect(() => {
24181
+ pt = set_class(ft, 1, clsx(get(Me)), "svelte-37crwe", pt, {
24182
+ "is-visible": get(be),
24183
+ "no-page-overlap": !u()
24184
+ }), set_attribute(ft, "data-direction", get(Re)), set_attribute(ft, "data-pw", C()), set_attribute(ft, "testid", C()), mt = set_style(ft, "", mt, {
24185
+ "--toast-open-duration": get(ot),
24186
+ "--toast-close-duration": get(ct),
24187
+ "--toast-enter-x": get(it).x,
24188
+ "--toast-enter-y": get(it).y
24189
+ }), set_attribute(_t, "data-pw", k()), set_attribute(_t, "testid", k()), set_text(vt, `${a() ?? ""} `);
24190
+ }), event("transitionend", ft, ut), append(e, ft), pop(dt);
24007
24191
  }
24008
24192
  delegate(["click", "keydown"]), create_custom_element(Toast, {
24009
24193
  duration: {},
@@ -34849,7 +35033,7 @@ function dismissOnOutsidePointerDown(e, t) {
34849
35033
  //#region src/lib/PieChart/PieChart.svelte
34850
35034
  var root$31 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1478ug\"><!></div>"), root_1$29 = /* @__PURE__ */ from_html("<button type=\"button\"><span class=\"legend-swatch svelte-1478ug\"></span> <span class=\"legend-label svelte-1478ug\"> </span></button>"), root_2$21 = /* @__PURE__ */ from_html("<div class=\"pie-legend-sync svelte-1478ug\"></div>"), root_3$20 = /* @__PURE__ */ from_svg("<text text-anchor=\"middle\" dominant-baseline=\"middle\"> </text>"), root_4$19 = /* @__PURE__ */ from_svg("<path tabindex=\"0\" role=\"button\"></path><!>", 1), root_5$18 = /* @__PURE__ */ from_svg("<foreignObject><div class=\"pie-center-content svelte-1478ug\" xmlns=\"http://www.w3.org/1999/xhtml\"><!></div></foreignObject>"), root_6$18 = /* @__PURE__ */ from_svg("<g><!><!></g>"), root_7$16 = /* @__PURE__ */ from_html("<div class=\"pie-delta-badge svelte-1478ug\"><!></div>"), root_8$14 = /* @__PURE__ */ from_html("<li class=\"pie-legend-row svelte-1478ug\"><span class=\"pie-legend-swatch svelte-1478ug\"></span> <span class=\"pie-legend-label svelte-1478ug\"> </span> <span class=\"pie-legend-value svelte-1478ug\"><!></span></li>"), root_9$11 = /* @__PURE__ */ from_html("<button> </button>"), root_10$10 = /* @__PURE__ */ from_html("<div class=\"pie-legend-column svelte-1478ug\"><ul class=\"pie-legend-values svelte-1478ug\"></ul> <!></div>"), root_11$8 = /* @__PURE__ */ from_html("<div class=\"sr-only svelte-1478ug\" role=\"status\" aria-live=\"polite\" data-pw=\"pie-status\"> </div> <!> <!> <!> <!> <!>", 1), root_12$7 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$66 = {
34851
35035
  hash: "svelte-1478ug",
34852
- code: ".pie-chart.svelte-1478ug {width:100%;position:relative;}.slice.svelte-1478ug {stroke:var(--piechart-stroke-color, #fff);stroke-width:var(--piechart-stroke-width, 2);transition:transform var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));transform-origin:0 0;cursor:pointer;}.slice.hovered.svelte-1478ug {transform:scale(var(--piechart-hover-scale, 1.05));opacity:1;}.slice.dimmed.svelte-1478ug {opacity:var(--piechart-dimmed-opacity, 0.3);}.slice.svelte-1478ug:focus-visible {outline:var(--piechart-slice-focus-outline, 2px solid currentColor);outline-offset:var(--piechart-slice-focus-outline-offset, 2px);}.slice-label.svelte-1478ug {fill:var(--piechart-label-color, #333);font-size:var(--piechart-label-font-size, 12px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.slice-label.label-outside.svelte-1478ug {fill:var(--piechart-label-color, #555);}.pie-center-content.svelte-1478ug {width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;}.pie-delta-badge.svelte-1478ug {position:absolute;top:var(--piechart-delta-top, 8px);right:var(--piechart-delta-right, 8px);z-index:2;pointer-events:none;}.chart-empty.svelte-1478ug {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, #9ca3af);text-align:center;}\n /* Standard visually-hidden recipe (matches ChatComposer's .sr-only): present\n for assistive tech, removed from layout and the visual canvas. */.sr-only.svelte-1478ug {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}.pie-legend-sync.svelte-1478ug {display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--chart-legend-gap, 16px);font-family:var(--chart-font-family, inherit);padding:8px 0;}.pie-legend-sync-item.svelte-1478ug {display:flex;align-items:center;gap:6px;background:none;border:none;margin:0;padding:var(--piechart-legend-sync-padding, 2px 4px);font:inherit;cursor:var(--cursor, pointer);border-radius:var(--piechart-legend-sync-radius, var(--radius, 4px));}.pie-legend-sync-item.svelte-1478ug .legend-swatch:where(.svelte-1478ug) {display:inline-block;width:var(--chart-legend-swatch-size, 12px);height:var(--chart-legend-swatch-size, 12px);border-radius:var(--chart-swatch-radius, 2px);flex-shrink:0;}.pie-legend-sync-item.svelte-1478ug .legend-label:where(.svelte-1478ug) {font-size:var(--chart-legend-font-size, 12px);color:var(--chart-legend-color, light-dark(#333, #e5e7eb));}.pie-legend-sync-item.legend-sync-active.svelte-1478ug {background:var(\n --piechart-legend-sync-active-background,\n light-dark(rgba(0, 0, 0, 0.06), rgba(255, 255, 255, 0.1))\n );}.pie-legend-sync-item.svelte-1478ug:focus-visible {outline:var(--piechart-legend-sync-focus-outline, 2px solid currentColor);outline-offset:2px;}.pie-legend-values.svelte-1478ug {display:flex;flex-direction:column;gap:var(--piechart-legend-gap, 8px);padding:var(--piechart-legend-padding, 12px 0 0 0);font-family:var(--chart-font-family, inherit);list-style:none;margin:0;}.pie-legend-row.svelte-1478ug {display:flex;align-items:center;gap:var(--piechart-legend-row-gap, 6px);}.pie-legend-swatch.svelte-1478ug {display:inline-block;width:var(--chart-legend-swatch-size, 12px);height:var(--chart-legend-swatch-size, 12px);border-radius:var(--piechart-legend-swatch-radius, var(--radius, 4px));flex-shrink:0;}.pie-legend-label.svelte-1478ug {font-size:var(--chart-legend-font-size, 12px);color:var(--chart-legend-color, #333);min-width:var(--piechart-legend-label-min-width, 120px);}.pie-legend-value.svelte-1478ug {margin-left:auto;font-size:var(--piechart-legend-value-font-size, 12px);color:var(--piechart-legend-value-color, #333);min-width:var(--piechart-legend-value-min-width, 60px);text-align:right;}\n\n /* The column wrapper is present in both placements so the markup does not\n fork; as a plain block it changes nothing about the default below-chart\n rendering. */.pie-legend-column.svelte-1478ug {display:flex;flex-direction:column;}\n\n /* Only the values legend moves beside the chart -- the plain top legend is\n mutually exclusive with it, and the delta badge and tooltip are both\n absolutely positioned, so they stay out of this flex row entirely. */.pie-chart.legend-right.svelte-1478ug {display:flex;flex-direction:row;align-items:center;gap:var(--piechart-legend-column-gap, 16px);}.pie-chart.legend-right.svelte-1478ug .chart-container {\n /* flex-basis 0 rather than auto: the container carries width:100%, which\n as a flex item would otherwise claim the whole row and squeeze the\n legend to nothing. */flex:1 1 0;min-width:0;}.pie-chart.legend-right.svelte-1478ug .pie-legend-column:where(.svelte-1478ug) {flex:0 0 auto;max-width:var(--piechart-legend-column-max-width, 50%);}.pie-chart.legend-right.svelte-1478ug .pie-legend-values:where(.svelte-1478ug) {padding:var(--piechart-legend-column-padding, 0);}.pie-legend-more.svelte-1478ug {align-self:flex-start;margin-top:var(--piechart-legend-more-margin-top, 8px);padding:var(--piechart-legend-more-padding, 2px 4px);border:none;background:none;cursor:var(--cursor, pointer);font-size:var(--piechart-legend-more-font-size, 12px);font-family:inherit;color:var(--piechart-legend-more-color, #2563eb);}.pie-legend-more.svelte-1478ug:hover {text-decoration:underline;}.pie-legend-more.svelte-1478ug:focus-visible {outline:var(--piechart-legend-more-focus-outline, 2px solid currentColor);outline-offset:2px;}"
35036
+ code: ".pie-chart.svelte-1478ug {width:100%;position:relative;}.slice.svelte-1478ug {stroke:var(--piechart-stroke-color, #fff);stroke-width:var(--piechart-stroke-width, 2);transition:transform var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));transform-origin:0 0;cursor:pointer;}.slice.hovered.svelte-1478ug {transform:scale(var(--piechart-hover-scale, 1.05));opacity:1;}.slice.dimmed.svelte-1478ug {opacity:var(--piechart-dimmed-opacity, 0.3);}.slice.svelte-1478ug:focus-visible {outline:var(--piechart-slice-focus-outline, 2px solid currentColor);outline-offset:var(--piechart-slice-focus-outline-offset, 2px);}.slice-label.svelte-1478ug {fill:var(--piechart-label-color, #333);font-size:var(--piechart-label-font-size, 12px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.slice-label.label-outside.svelte-1478ug {fill:var(--piechart-label-color, #555);}.pie-center-content.svelte-1478ug {width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;}.pie-delta-badge.svelte-1478ug {position:absolute;top:var(--piechart-delta-top, 8px);right:var(--piechart-delta-right, 8px);z-index:2;pointer-events:none;}.chart-empty.svelte-1478ug {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, #9ca3af);text-align:center;}\n /* Standard visually-hidden recipe (matches ChatComposer's .sr-only): present\n for assistive tech, removed from layout and the visual canvas. */.sr-only.svelte-1478ug {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}.pie-legend-sync.svelte-1478ug {display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--chart-legend-gap, 16px);font-family:var(--chart-font-family, inherit);padding:8px 0;}.pie-legend-sync-item.svelte-1478ug {display:flex;align-items:center;gap:6px;background:none;border:none;margin:0;padding:var(--piechart-legend-sync-padding, 2px 4px);font:inherit;cursor:var(--cursor, pointer);border-radius:var(--piechart-legend-sync-radius, var(--radius, 4px));}.pie-legend-sync-item.svelte-1478ug .legend-swatch:where(.svelte-1478ug) {display:inline-block;width:var(--chart-legend-swatch-size, 12px);height:var(--chart-legend-swatch-size, 12px);border-radius:var(--chart-swatch-radius, 2px);flex-shrink:0;}.pie-legend-sync-item.svelte-1478ug .legend-label:where(.svelte-1478ug) {font-size:var(--chart-legend-font-size, 12px);color:var(--chart-legend-color, light-dark(#333, #e5e7eb));}.pie-legend-sync-item.legend-sync-active.svelte-1478ug {background:var(\n --piechart-legend-sync-active-background,\n light-dark(rgba(0, 0, 0, 0.06), rgba(255, 255, 255, 0.1))\n );}.pie-legend-sync-item.svelte-1478ug:focus-visible {outline:var(--piechart-legend-sync-focus-outline, 2px solid currentColor);outline-offset:2px;}.pie-legend-values.svelte-1478ug {display:flex;flex-direction:column;gap:var(--piechart-legend-gap, 8px);padding:var(--piechart-legend-padding, 12px 0 0 0);font-family:var(--chart-font-family, inherit);list-style:none;margin:0;}.pie-legend-row.svelte-1478ug {display:flex;align-items:center;gap:var(--piechart-legend-row-gap, 6px);}.pie-legend-swatch.svelte-1478ug {display:inline-block;width:var(--chart-legend-swatch-size, 12px);height:var(--chart-legend-swatch-size, 12px);border-radius:var(--piechart-legend-swatch-radius, var(--radius, 4px));flex-shrink:0;}.pie-legend-label.svelte-1478ug {font-size:var(--chart-legend-font-size, 12px);color:var(--chart-legend-color, #333);min-width:var(--piechart-legend-label-min-width, 120px);}.pie-legend-value.svelte-1478ug {margin-left:auto;font-size:var(--piechart-legend-value-font-size, 12px);color:var(--piechart-legend-value-color, #333);min-width:var(--piechart-legend-value-min-width, 60px);text-align:right;}\n\n /* The column wrapper is present in both placements so the markup does not\n fork; as a plain block it changes nothing about the default below-chart\n rendering. */.pie-legend-column.svelte-1478ug {display:flex;flex-direction:column;}\n\n /* Only the values legend moves beside the chart -- the plain top legend is\n mutually exclusive with it, and the delta badge and tooltip are both\n absolutely positioned, so they stay out of this flex row entirely. */.pie-chart.legend-right.svelte-1478ug {display:flex;flex-direction:row;align-items:center;gap:var(--piechart-legend-column-gap, 16px);}.pie-chart.legend-right.svelte-1478ug .chart-container {\n /* flex-basis 0 rather than auto: the container carries width:100%, which\n as a flex item would otherwise claim the whole row and squeeze the\n legend to nothing. */flex:1 1 0;min-width:0;}.pie-chart.legend-right.svelte-1478ug .pie-legend-column:where(.svelte-1478ug) {flex:0 0 auto;max-width:var(--piechart-legend-column-max-width, 50%);}.pie-chart.legend-right.svelte-1478ug .pie-legend-values:where(.svelte-1478ug) {padding:var(--piechart-legend-column-padding, 0);}.pie-legend-more.svelte-1478ug {align-self:flex-start;margin-top:var(--piechart-legend-more-margin-top, 8px);padding:var(--piechart-legend-more-padding, 2px 4px);border:none;background:none;cursor:var(--cursor, pointer);font-size:var(--piechart-legend-more-font-size, 12px);font-family:inherit;color:var(--piechart-legend-more-color, #2563eb);}.pie-legend-more.svelte-1478ug:hover {text-decoration:underline;}.pie-legend-more.svelte-1478ug:focus-visible {outline:var(--piechart-legend-more-focus-outline, 2px solid currentColor);outline-offset:2px;}"
34853
35037
  };
34854
35038
  function PieChart(e, t) {
34855
35039
  let n = props_id();
@@ -35590,7 +35774,7 @@ customElements.define("sui-pie-chart", create_custom_element(PieChart_wc, {
35590
35774
  //#region src/lib/SankeyChart/SankeyChart.svelte
35591
35775
  var root$30 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1rqxby\"><!></div>"), root_1$28 = /* @__PURE__ */ from_svg("<text class=\"sankey-col-label svelte-1rqxby\" text-anchor=\"middle\" dominant-baseline=\"auto\"> <title> </title></text>"), root_2$20 = /* @__PURE__ */ from_svg("<path class=\"sankey-link svelte-1rqxby\" fill=\"none\" tabindex=\"0\" role=\"button\"></path>"), root_3$19 = /* @__PURE__ */ from_svg("<rect tabindex=\"0\" role=\"button\"></rect>"), root_4$18 = /* @__PURE__ */ from_svg("<text dominant-baseline=\"middle\"> <title> </title></text>"), root_5$17 = /* @__PURE__ */ from_svg("<g><rect class=\"sankey-plot-bg svelte-1rqxby\"></rect><!><!><!><!></g>"), root_6$17 = /* @__PURE__ */ from_html("<!> <!>", 1), root_7$15 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$64 = {
35592
35776
  hash: "svelte-1rqxby",
35593
- code: ".sankey-chart.svelte-1rqxby {width:100%;position:relative;}.sankey-plot-bg.svelte-1rqxby {fill:var(--sankey-plot-background, transparent);pointer-events:none;}.sankey-link.svelte-1rqxby {transition:stroke-opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.sankey-link.svelte-1rqxby:focus-visible {outline:var(--sankey-focus-outline, 2px solid currentColor);outline-offset:var(--sankey-focus-outline-offset, 2px);}.sankey-node.svelte-1rqxby {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.sankey-node.svelte-1rqxby:focus-visible {outline:var(--sankey-focus-outline, 2px solid currentColor);outline-offset:var(--sankey-focus-outline-offset, 2px);}.sankey-node.node-dimmed.svelte-1rqxby {opacity:var(--sankey-dimmed-opacity, 0.15);}.sankey-label.svelte-1rqxby {fill:var(--sankey-label-color, #333);font-size:var(--sankey-label-font-size, 12px);font-weight:var(--sankey-label-font-weight, 400);font-family:var(--chart-font-family, inherit);\n /* Highcharts-style text outline: node labels render over link ribbons, so\n a halo in the chart's background colour keeps them legible at any flow\n density. Off (transparent / 0) by default. */paint-order:stroke;stroke:var(--sankey-label-halo-color, transparent);stroke-width:var(--sankey-label-halo-width, 0);stroke-linejoin:round;pointer-events:none;transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));}.sankey-col-label.svelte-1rqxby {fill:var(--sankey-col-label-color, #666);font-size:var(--sankey-col-label-font-size, 11px);font-weight:var(--sankey-col-label-font-weight, 400);font-family:var(--chart-font-family, inherit);pointer-events:none;}.sankey-label.node-dimmed.svelte-1rqxby {opacity:var(--sankey-dimmed-opacity, 0.15);}.chart-empty.svelte-1rqxby {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, #9ca3af);text-align:center;}"
35777
+ code: ".sankey-chart.svelte-1rqxby {width:100%;position:relative;}.sankey-plot-bg.svelte-1rqxby {fill:var(--sankey-plot-background, transparent);pointer-events:none;}.sankey-link.svelte-1rqxby {transition:stroke-opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.sankey-link.svelte-1rqxby:focus-visible {outline:var(--sankey-focus-outline, 2px solid currentColor);outline-offset:var(--sankey-focus-outline-offset, 2px);}.sankey-node.svelte-1rqxby {transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.sankey-node.svelte-1rqxby:focus-visible {outline:var(--sankey-focus-outline, 2px solid currentColor);outline-offset:var(--sankey-focus-outline-offset, 2px);}.sankey-node.node-dimmed.svelte-1rqxby {opacity:var(--sankey-dimmed-opacity, 0.15);}.sankey-label.svelte-1rqxby {fill:var(--sankey-label-color, #333);font-size:var(--sankey-label-font-size, 12px);font-weight:var(--sankey-label-font-weight, 400);font-family:var(--chart-font-family, inherit);\n /* Highcharts-style text outline: node labels render over link ribbons, so\n a halo in the chart's background colour keeps them legible at any flow\n density. Off (transparent / 0) by default. */paint-order:stroke;stroke:var(--sankey-label-halo-color, transparent);stroke-width:var(--sankey-label-halo-width, 0);stroke-linejoin:round;pointer-events:none;transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));}.sankey-col-label.svelte-1rqxby {fill:var(--sankey-col-label-color, #666);font-size:var(--sankey-col-label-font-size, 11px);font-weight:var(--sankey-col-label-font-weight, 400);font-family:var(--chart-font-family, inherit);pointer-events:none;}.sankey-label.node-dimmed.svelte-1rqxby {opacity:var(--sankey-dimmed-opacity, 0.15);}.chart-empty.svelte-1rqxby {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, #9ca3af);text-align:center;}"
35594
35778
  };
35595
35779
  function SankeyChart(e, t) {
35596
35780
  push(t, !0), append_styles$1(e, $$css$64);
@@ -36543,7 +36727,7 @@ function formatSeriesAggregate(e, t, n) {
36543
36727
  //#region src/lib/AreaChart/AreaChart.svelte
36544
36728
  var root$28 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-63gwba\"><!></div>"), root_1$26 = /* @__PURE__ */ from_svg("<linearGradient x1=\"0\" y1=\"0\" x2=\"0\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\"></stop><stop offset=\"100%\"></stop></linearGradient>"), root_2$18 = /* @__PURE__ */ from_svg("<defs></defs>"), root_3$17 = /* @__PURE__ */ from_svg("<g><!></g>"), root_4$16 = /* @__PURE__ */ from_svg("<path fill=\"none\"></path>"), root_5$15 = /* @__PURE__ */ from_svg("<circle></circle>"), root_6$15 = /* @__PURE__ */ from_svg("<circle class=\"dot svelte-63gwba\"></circle>"), root_7$13 = /* @__PURE__ */ from_svg("<text class=\"point-value svelte-63gwba\" text-anchor=\"middle\"> </text>"), root_8$12 = /* @__PURE__ */ from_svg("<circle class=\"focus-target svelte-63gwba\" tabindex=\"0\" role=\"button\"></circle>"), root_9$10 = /* @__PURE__ */ from_svg("<path></path><!><!><!><!><!>", 1), root_10$9 = /* @__PURE__ */ from_svg("<line class=\"hover-line svelte-63gwba\"></line>"), root_11$7 = /* @__PURE__ */ from_svg("<!><g><!><!><!><!><rect class=\"hover-overlay svelte-63gwba\" fill=\"transparent\"></rect></g>", 1), root_12$6 = /* @__PURE__ */ from_html("<!> <div class=\"chart-plot svelte-63gwba\"><!> <!></div>", 1), root_13$5 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$61 = {
36545
36729
  hash: "svelte-63gwba",
36546
- code: ".area-chart.svelte-63gwba {width:100%;position:relative;}.chart-plot.svelte-63gwba {position:relative;}.area-fill.svelte-63gwba {transition:fill-opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));pointer-events:none;}.area-fill.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.area-line.svelte-63gwba {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.area-line.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.single-point.svelte-63gwba {pointer-events:none;}.single-point.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.dot.svelte-63gwba {transition:r var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke:var(--chart-dot-stroke, light-dark(#fff, #111827));stroke-width:2;pointer-events:none;}.focus-target.svelte-63gwba {fill:transparent;pointer-events:none;}.focus-target.svelte-63gwba:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.point-value.svelte-63gwba {fill:var(--areachart-value-color, light-dark(#333, #e5e7eb));font-size:var(--areachart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.hover-line.svelte-63gwba {stroke:var(\n --areachart-hover-line-color,\n var(--linechart-hover-line-color, light-dark(#ccc, #4b5563))\n );stroke-width:1;stroke-dasharray:var(--areachart-hover-line-dash, var(--linechart-hover-line-dash, 4 4));pointer-events:none;}.hover-overlay.svelte-63gwba {cursor:crosshair;}.chart-empty.svelte-63gwba {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
36730
+ code: ".area-chart.svelte-63gwba {width:100%;position:relative;}.chart-plot.svelte-63gwba {position:relative;}.area-fill.svelte-63gwba {transition:fill-opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));pointer-events:none;}.area-fill.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.area-line.svelte-63gwba {transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.area-line.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.single-point.svelte-63gwba {pointer-events:none;}.single-point.dimmed.svelte-63gwba {opacity:var(--areachart-dimmed-opacity, 0.1);}.dot.svelte-63gwba {transition:r var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke:var(--chart-dot-stroke, light-dark(#fff, #111827));stroke-width:2;pointer-events:none;}.focus-target.svelte-63gwba {fill:transparent;pointer-events:none;}.focus-target.svelte-63gwba:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.point-value.svelte-63gwba {fill:var(--areachart-value-color, light-dark(#333, #e5e7eb));font-size:var(--areachart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.hover-line.svelte-63gwba {stroke:var(\n --areachart-hover-line-color,\n var(--linechart-hover-line-color, light-dark(#ccc, #4b5563))\n );stroke-width:1;stroke-dasharray:var(--areachart-hover-line-dash, var(--linechart-hover-line-dash, 4 4));pointer-events:none;}.hover-overlay.svelte-63gwba {cursor:crosshair;}.chart-empty.svelte-63gwba {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
36547
36731
  };
36548
36732
  function AreaChart(e, t) {
36549
36733
  push(t, !0), append_styles$1(e, $$css$61);
@@ -37392,7 +37576,7 @@ customElements.define("sui-area-chart", create_custom_element(AreaChart_wc, {
37392
37576
  //#region src/lib/BarChart/BarChart.svelte
37393
37577
  var root$27 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1mivkru\"><!></div>"), root_1$25 = /* @__PURE__ */ from_svg("<line x1=\"0\" y2=\"0\"></line>"), root_2$17 = /* @__PURE__ */ from_svg("<line x1=\"0\" y2=\"0\"></line><line x1=\"0\" y1=\"0\"></line>", 1), root_3$16 = /* @__PURE__ */ from_svg("<circle></circle>"), root_4$15 = /* @__PURE__ */ from_svg("<pattern patternUnits=\"userSpaceOnUse\"><rect></rect><!></pattern>"), root_5$14 = /* @__PURE__ */ from_svg("<stop></stop>"), root_6$14 = /* @__PURE__ */ from_svg("<linearGradient gradientUnits=\"userSpaceOnUse\"></linearGradient>"), root_7$12 = /* @__PURE__ */ from_svg("<defs></defs>"), root_8$11 = /* @__PURE__ */ from_svg("<g><!></g>"), root_9$9 = /* @__PURE__ */ from_svg("<path tabindex=\"0\" role=\"button\"></path>"), root_10$8 = /* @__PURE__ */ from_svg("<text> </text>"), root_11$6 = /* @__PURE__ */ from_svg("<!><!>", 1), root_12$5 = /* @__PURE__ */ from_svg("<!><g><!><!><!><!></g>", 1), root_13$4 = /* @__PURE__ */ from_html("<!> <div class=\"chart-plot svelte-1mivkru\"><div class=\"chart-scroll-area svelte-1mivkru\" role=\"region\"><div><!></div></div> <!></div>", 1), root_14$4 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$59 = {
37394
37578
  hash: "svelte-1mivkru",
37395
- code: ".bar-chart.svelte-1mivkru {width:100%;position:relative;}.chart-scroll-area.svelte-1mivkru {width:100%;}.chart-plot.svelte-1mivkru {position:relative;}.bar.svelte-1mivkru {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.bar.hovered.svelte-1mivkru {opacity:var(--barchart-bar-hover-opacity, 1);}.bar.highlighted.svelte-1mivkru {opacity:var(--barchart-bar-highlighted-opacity, 1);}.bar.dimmed.svelte-1mivkru {opacity:var(--barchart-bar-dimmed-opacity, 0.3);}.bar.svelte-1mivkru:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.bar-value.svelte-1mivkru {fill:var(--barchart-value-color, light-dark(#333, #e5e7eb));font-size:var(--barchart-value-font-size, 14px);font-weight:var(--barchart-value-font-weight, 600);font-family:var(--chart-font-family, inherit);pointer-events:none;}.bar-value-inside.svelte-1mivkru {paint-order:stroke;stroke-width:2px;stroke-opacity:0.35;stroke-linejoin:round;}.chart-empty.svelte-1mivkru {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
37579
+ code: ".bar-chart.svelte-1mivkru {width:100%;position:relative;}.chart-scroll-area.svelte-1mivkru {width:100%;}.chart-plot.svelte-1mivkru {position:relative;}.bar.svelte-1mivkru {transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.bar.hovered.svelte-1mivkru {opacity:var(--barchart-bar-hover-opacity, 1);}.bar.highlighted.svelte-1mivkru {opacity:var(--barchart-bar-highlighted-opacity, 1);}.bar.dimmed.svelte-1mivkru {opacity:var(--barchart-bar-dimmed-opacity, 0.3);}.bar.svelte-1mivkru:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.bar-value.svelte-1mivkru {fill:var(--barchart-value-color, light-dark(#333, #e5e7eb));font-size:var(--barchart-value-font-size, 14px);font-weight:var(--barchart-value-font-weight, 600);font-family:var(--chart-font-family, inherit);pointer-events:none;}.bar-value-inside.svelte-1mivkru {paint-order:stroke;stroke-width:2px;stroke-opacity:0.35;stroke-linejoin:round;}.chart-empty.svelte-1mivkru {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
37396
37580
  };
37397
37581
  function BarChart(e, t) {
37398
37582
  push(t, !0), append_styles$1(e, $$css$59);
@@ -38525,7 +38709,7 @@ customElements.define("sui-bar-chart", create_custom_element(BarChart_wc, {
38525
38709
  //#region src/lib/DualAxisBarChart/DualAxisBarChart.svelte
38526
38710
  var root$26 = /* @__PURE__ */ from_svg("<text class=\"axis-title axis-title-left svelte-1rqgr0s\" text-anchor=\"middle\"> </text>"), root_1$24 = /* @__PURE__ */ from_svg("<text class=\"axis-title axis-title-right svelte-1rqgr0s\" text-anchor=\"middle\"> </text>"), root_2$16 = /* @__PURE__ */ from_svg("<path role=\"img\"></path>"), root_3$15 = /* @__PURE__ */ from_svg("<path class=\"line-series svelte-1rqgr0s\" fill=\"none\"></path>"), root_4$14 = /* @__PURE__ */ from_svg("<circle style=\"stroke: var(--dual-axis-dot-stroke, light-dark(#fff, #111827)); stroke-width: var(--dual-axis-dot-stroke-width, 1.5);\" role=\"img\"></circle>"), root_5$13 = /* @__PURE__ */ from_svg("<!><!>", 1), root_6$13 = /* @__PURE__ */ from_svg("<rect class=\"hover-target svelte-1rqgr0s\" fill=\"transparent\" tabindex=\"0\" role=\"button\"></rect>"), root_7$11 = /* @__PURE__ */ from_svg("<line class=\"hover-guideline svelte-1rqgr0s\"></line>"), root_8$10 = /* @__PURE__ */ from_svg("<g><!><g><!></g><g><!></g><!><!><!><!><!><!></g><defs><marker></marker></defs>", 1), root_9$8 = /* @__PURE__ */ from_html("<!> <div class=\"chart-plot svelte-1rqgr0s\"><!> <!></div>", 1), root_10$7 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1rqgr0s\">No data available.</div>"), root_11$5 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$57 = {
38527
38711
  hash: "svelte-1rqgr0s",
38528
- code: ".dual-axis-bar-chart.svelte-1rqgr0s {width:100%;position:relative;}.chart-plot.svelte-1rqgr0s {position:relative;}.bar-shape.svelte-1rqgr0s {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.bar-hovered.svelte-1rqgr0s {opacity:var(--dual-axis-bar-hover-opacity, 1);}.bar-dimmed.svelte-1rqgr0s {opacity:var(--dual-axis-bar-dimmed-opacity, 0.3);}.line-series.svelte-1rqgr0s {stroke-width:var(--dual-axis-line-stroke-width, 2);stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.line-dot.svelte-1rqgr0s {transition:r var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.dot-dimmed.svelte-1rqgr0s {opacity:var(--dual-axis-bar-dimmed-opacity, 0.3);}.hover-target.svelte-1rqgr0s {cursor:pointer;}.hover-target.svelte-1rqgr0s:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:-2px;}.hover-guideline.svelte-1rqgr0s {stroke:var(--dual-axis-guideline-color, light-dark(#aaa, #4b5563));stroke-width:var(--dual-axis-guideline-width, 1);stroke-dasharray:var(--dual-axis-guideline-dash, 4 3);pointer-events:none;opacity:0.6;}.axis-title.svelte-1rqgr0s {fill:var(--chart-axis-label-color, light-dark(#333, #e5e7eb));font-size:var(--chart-axis-label-font-size, 11px);font-family:var(--chart-font-family, inherit);font-weight:500;}.chart-empty.svelte-1rqgr0s {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
38712
+ code: ".dual-axis-bar-chart.svelte-1rqgr0s {width:100%;position:relative;}.chart-plot.svelte-1rqgr0s {position:relative;}.bar-shape.svelte-1rqgr0s {transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.bar-hovered.svelte-1rqgr0s {opacity:var(--dual-axis-bar-hover-opacity, 1);}.bar-dimmed.svelte-1rqgr0s {opacity:var(--dual-axis-bar-dimmed-opacity, 0.3);}.line-series.svelte-1rqgr0s {stroke-width:var(--dual-axis-line-stroke-width, 2);stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.line-dot.svelte-1rqgr0s {transition:r var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.dot-dimmed.svelte-1rqgr0s {opacity:var(--dual-axis-bar-dimmed-opacity, 0.3);}.hover-target.svelte-1rqgr0s {cursor:pointer;}.hover-target.svelte-1rqgr0s:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:-2px;}.hover-guideline.svelte-1rqgr0s {stroke:var(--dual-axis-guideline-color, light-dark(#aaa, #4b5563));stroke-width:var(--dual-axis-guideline-width, 1);stroke-dasharray:var(--dual-axis-guideline-dash, 4 3);pointer-events:none;opacity:0.6;}.axis-title.svelte-1rqgr0s {fill:var(--chart-axis-label-color, light-dark(#333, #e5e7eb));font-size:var(--chart-axis-label-font-size, 11px);font-family:var(--chart-font-family, inherit);font-weight:500;}.chart-empty.svelte-1rqgr0s {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
38529
38713
  };
38530
38714
  function DualAxisBarChart(e, t) {
38531
38715
  push(t, !0), append_styles$1(e, $$css$57);
@@ -39153,7 +39337,7 @@ customElements.define("sui-dual-axis-bar-chart", create_custom_element(DualAxisB
39153
39337
  //#region src/lib/FunnelChart/FunnelChart.svelte
39154
39338
  var root$25 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1ork53m\"><!></div>"), root_1$23 = /* @__PURE__ */ from_svg("<text class=\"funnel-value-label svelte-1ork53m\" text-anchor=\"middle\" dominant-baseline=\"middle\" pointer-events=\"none\"> </text>"), root_2$15 = /* @__PURE__ */ from_svg("<text class=\"funnel-category-label svelte-1ork53m\" text-anchor=\"middle\" dominant-baseline=\"auto\"> </text><rect tabindex=\"0\" role=\"button\"></rect><!>", 1), root_3$14 = /* @__PURE__ */ from_svg("<polygon class=\"funnel-connector svelte-1ork53m\" pointer-events=\"none\"></polygon>"), root_4$13 = /* @__PURE__ */ from_svg("<g><!><!></g>"), root_5$12 = /* @__PURE__ */ from_html("<div class=\"chart-plot svelte-1ork53m\"><!> <!></div>"), root_6$12 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$55 = {
39155
39339
  hash: "svelte-1ork53m",
39156
- code: ".funnel-chart.svelte-1ork53m {width:100%;}.chart-plot.svelte-1ork53m {position:relative;}.funnel-category-label.svelte-1ork53m {fill:var(--funnel-chart-label-color, light-dark(#666, #9ca3af));font-size:var(--funnel-chart-label-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.funnel-bar.svelte-1ork53m {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n y var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n height var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.funnel-bar-hovered.svelte-1ork53m {opacity:var(--funnel-chart-bar-hover-opacity, 1);}.funnel-bar-dimmed.svelte-1ork53m {opacity:var(--funnel-chart-bar-dimmed-opacity, 0.35);}.funnel-bar.svelte-1ork53m:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.funnel-value-label.svelte-1ork53m {font-size:var(--funnel-chart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);paint-order:stroke;stroke-width:2px;stroke-opacity:0.35;stroke-linejoin:round;}.funnel-connector.svelte-1ork53m {transition:d var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));}.chart-empty.svelte-1ork53m {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#6b7280, #9ca3af));text-align:center;}"
39340
+ code: ".funnel-chart.svelte-1ork53m {width:100%;}.chart-plot.svelte-1ork53m {position:relative;}.funnel-category-label.svelte-1ork53m {fill:var(--funnel-chart-label-color, light-dark(#666, #9ca3af));font-size:var(--funnel-chart-label-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.funnel-bar.svelte-1ork53m {transition:opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n y var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n height var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));cursor:pointer;}.funnel-bar-hovered.svelte-1ork53m {opacity:var(--funnel-chart-bar-hover-opacity, 1);}.funnel-bar-dimmed.svelte-1ork53m {opacity:var(--funnel-chart-bar-dimmed-opacity, 0.35);}.funnel-bar.svelte-1ork53m:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}.funnel-value-label.svelte-1ork53m {font-size:var(--funnel-chart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);paint-order:stroke;stroke-width:2px;stroke-opacity:0.35;stroke-linejoin:round;}.funnel-connector.svelte-1ork53m {transition:d\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));}.chart-empty.svelte-1ork53m {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#6b7280, #9ca3af));text-align:center;}"
39157
39341
  };
39158
39342
  function FunnelChart(e, t) {
39159
39343
  push(t, !0), append_styles$1(e, $$css$55);
@@ -39563,7 +39747,7 @@ customElements.define("sui-funnel-chart", create_custom_element(FunnelChart_wc,
39563
39747
  //#region src/lib/LineChart/LineChart.svelte
39564
39748
  var root$24 = /* @__PURE__ */ from_html("<div class=\"chart-empty svelte-1iyxwjy\"><!></div>"), root_1$22 = /* @__PURE__ */ from_svg("<linearGradient x1=\"0\" y1=\"0\" x2=\"0\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0%\"></stop><stop offset=\"100%\"></stop></linearGradient>"), root_2$14 = /* @__PURE__ */ from_svg("<!><!>", 1), root_3$13 = /* @__PURE__ */ from_svg("<defs></defs>"), root_4$12 = /* @__PURE__ */ from_svg("<g><!></g>"), root_5$11 = /* @__PURE__ */ from_svg("<circle class=\"dot-halo svelte-1iyxwjy\"></circle>"), root_6$11 = /* @__PURE__ */ from_svg("<path></path>"), root_7$10 = /* @__PURE__ */ from_svg("<text class=\"point-value svelte-1iyxwjy\" text-anchor=\"middle\"> </text>"), root_8$9 = /* @__PURE__ */ from_svg("<!><path fill=\"none\"></path><!>", 1), root_9$7 = /* @__PURE__ */ from_svg("<circle></circle>"), root_10$6 = /* @__PURE__ */ from_svg("<circle class=\"focus-target svelte-1iyxwjy\" tabindex=\"0\" role=\"button\"></circle>"), root_11$4 = /* @__PURE__ */ from_svg("<line class=\"hover-line svelte-1iyxwjy\"></line>"), root_12$4 = /* @__PURE__ */ from_svg("<!><g><!><!><!><!><!><!><!><rect class=\"hover-overlay svelte-1iyxwjy\" fill=\"transparent\" data-pw=\"hover-overlay\" testID=\"hover-overlay\"></rect></g>", 1), root_13$3 = /* @__PURE__ */ from_html("<div class=\"sr-only svelte-1iyxwjy\" role=\"status\" aria-live=\"polite\" data-pw=\"line-status\"> </div> <!> <div class=\"chart-plot svelte-1iyxwjy\"><!> <!></div>", 1), root_14$3 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$53 = {
39565
39749
  hash: "svelte-1iyxwjy",
39566
- code: ".line-chart.svelte-1iyxwjy {width:100%;position:relative;}.chart-plot.svelte-1iyxwjy {position:relative;}.line-area-fill.svelte-1iyxwjy {transition:fill-opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));pointer-events:none;}.line-area-fill.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.line-path.svelte-1iyxwjy {transition:opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.line-path.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.single-point.svelte-1iyxwjy {pointer-events:none;}.single-point.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.dot.svelte-1iyxwjy {transition:r var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--motion-duration, 0.2s))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke:var(--chart-dot-stroke, light-dark(#fff, #111827));stroke-width:2;pointer-events:none;}.dot.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.dot.highlighted.svelte-1iyxwjy {stroke:var(--linechart-highlight-ring-color, light-dark(#fff, #111827));stroke-width:var(--linechart-highlight-ring-width, 2.5);}.dot-halo.svelte-1iyxwjy {opacity:0.25;pointer-events:none;}.focus-target.svelte-1iyxwjy {fill:transparent;pointer-events:none;}.focus-target.svelte-1iyxwjy:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}\n /* Standard visually-hidden recipe (matches PieChart's own .sr-only): present\n for assistive tech, removed from layout and the visual canvas. */.sr-only.svelte-1iyxwjy {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}.point-value.svelte-1iyxwjy {fill:var(--linechart-value-color, light-dark(#333, #e5e7eb));font-size:var(--linechart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.hover-line.svelte-1iyxwjy {stroke:var(--linechart-hover-line-color, light-dark(#ccc, #4b5563));stroke-width:1;stroke-dasharray:var(--linechart-hover-line-dash, 4 4);pointer-events:none;}.hover-overlay.svelte-1iyxwjy {cursor:crosshair;}.chart-empty.svelte-1iyxwjy {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
39750
+ code: ".line-chart.svelte-1iyxwjy {width:100%;position:relative;}.chart-plot.svelte-1iyxwjy {position:relative;}.line-area-fill.svelte-1iyxwjy {transition:fill-opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));pointer-events:none;}.line-area-fill.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.line-path.svelte-1iyxwjy {transition:opacity\n var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke-linecap:round;stroke-linejoin:round;pointer-events:none;}.line-path.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.single-point.svelte-1iyxwjy {pointer-events:none;}.single-point.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.dot.svelte-1iyxwjy {transition:r var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease)),\n opacity var(--chart-transition-duration, var(--duration-base, var(--motion-duration, 0.2s)))\n var(--chart-transition-easing, var(--motion-easing, ease));stroke:var(--chart-dot-stroke, light-dark(#fff, #111827));stroke-width:2;pointer-events:none;}.dot.dimmed.svelte-1iyxwjy {opacity:var(--linechart-dimmed-opacity, 0.2);}.dot.highlighted.svelte-1iyxwjy {stroke:var(--linechart-highlight-ring-color, light-dark(#fff, #111827));stroke-width:var(--linechart-highlight-ring-width, 2.5);}.dot-halo.svelte-1iyxwjy {opacity:0.25;pointer-events:none;}.focus-target.svelte-1iyxwjy {fill:transparent;pointer-events:none;}.focus-target.svelte-1iyxwjy:focus-visible {outline:2px solid var(--chart-axis-label-color, light-dark(#333, #e5e7eb));outline-offset:1px;}\n /* Standard visually-hidden recipe (matches PieChart's own .sr-only): present\n for assistive tech, removed from layout and the visual canvas. */.sr-only.svelte-1iyxwjy {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}.point-value.svelte-1iyxwjy {fill:var(--linechart-value-color, light-dark(#333, #e5e7eb));font-size:var(--linechart-value-font-size, 11px);font-family:var(--chart-font-family, inherit);pointer-events:none;}.hover-line.svelte-1iyxwjy {stroke:var(--linechart-hover-line-color, light-dark(#ccc, #4b5563));stroke-width:1;stroke-dasharray:var(--linechart-hover-line-dash, 4 4);pointer-events:none;}.hover-overlay.svelte-1iyxwjy {cursor:crosshair;}.chart-empty.svelte-1iyxwjy {padding:var(--chart-empty-padding, 32px 24px);color:var(--chart-empty-color, light-dark(#9ca3af, #6b7280));text-align:center;}"
39567
39751
  };
39568
39752
  function LineChart(e, t) {
39569
39753
  let n = props_id();
@@ -41137,7 +41321,7 @@ customElements.define("sui-draggable", create_custom_element(Draggable_wc, {
41137
41321
  //#region src/lib/assets/play.svg?raw
41138
41322
  var play_default = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 5v14l11-7z\" />\n</svg>\n", pause_default = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"6\" y=\"5\" width=\"4\" height=\"14\" rx=\"1\" />\n <rect x=\"14\" y=\"5\" width=\"4\" height=\"14\" rx=\"1\" />\n</svg>\n", volume_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 9v6h4l5 5V4L8 9H4z\" fill=\"currentColor\" stroke=\"none\" />\n <path d=\"M16 8.5a4 4 0 0 1 0 7\" />\n <path d=\"M18.5 6a7 7 0 0 1 0 12\" />\n</svg>\n", mute_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 9v6h4l5 5V4L8 9H4z\" fill=\"currentColor\" stroke=\"none\" />\n <line x1=\"16\" y1=\"9\" x2=\"21\" y2=\"14\" />\n <line x1=\"21\" y1=\"9\" x2=\"16\" y2=\"14\" />\n</svg>\n", fullscreen_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 9V5.5A1.5 1.5 0 0 1 5.5 4H9\" />\n <path d=\"M15 4h3.5A1.5 1.5 0 0 1 20 5.5V9\" />\n <path d=\"M20 15v3.5a1.5 1.5 0 0 1-1.5 1.5H15\" />\n <path d=\"M9 20H5.5A1.5 1.5 0 0 1 4 18.5V15\" />\n</svg>\n", exit_fullscreen_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 4v3.5A1.5 1.5 0 0 1 7.5 9H4\" />\n <path d=\"M20 9h-3.5A1.5 1.5 0 0 1 15 7.5V4\" />\n <path d=\"M15 20v-3.5a1.5 1.5 0 0 1 1.5-1.5H20\" />\n <path d=\"M4 15h3.5A1.5 1.5 0 0 1 9 16.5V20\" />\n</svg>\n", root_1$20 = /* @__PURE__ */ from_html("<span class=\"media-image svelte-16jqa96\"><!></span>"), root_2$13 = /* @__PURE__ */ from_html("<track kind=\"captions\"/>"), root_3$12 = /* @__PURE__ */ from_html("<div class=\"seek svelte-16jqa96\"><!></div>"), root_4$11 = /* @__PURE__ */ from_html("<span class=\"time svelte-16jqa96\"> </span>"), root_5$10 = /* @__PURE__ */ from_html("<div class=\"control bottom-control svelte-16jqa96\"><!></div>"), root_6$10 = /* @__PURE__ */ from_html("<div class=\"overlay svelte-16jqa96\"><div class=\"center-controls svelte-16jqa96\"><div class=\"control center-control svelte-16jqa96\"><!></div></div> <div><!> <!> <div class=\"control bottom-control svelte-16jqa96\"><!></div> <!></div></div>"), root_7$9 = /* @__PURE__ */ from_html("<video class=\"media svelte-16jqa96\" playsinline=\"\"><!></video> <!>", 3), root_8$8 = /* @__PURE__ */ from_html("<div><!></div>"), $$css$47 = {
41139
41323
  hash: "svelte-16jqa96",
41140
- code: ".media-player.svelte-16jqa96 {box-sizing:border-box;display:flex;position:relative;height:var(--media-player-height, 400px);width:var(--media-player-width, fit-content);border-radius:var(--media-player-border-radius, 14px);overflow:var(--media-player-overflow, hidden);background:var(--media-player-background, transparent);}.media.svelte-16jqa96 {height:var(--media-player-media-height, 100%);width:var(--media-player-media-width, fit-content);object-fit:var(--media-player-media-object-fit, contain);border-radius:var(--media-player-media-border-radius, inherit);display:block;}video.media.svelte-16jqa96 {cursor:var(--media-player-media-cursor, pointer);}.media-image.svelte-16jqa96 {display:contents;--image-height: var(--media-player-media-height, 100%);--image-width: var(--media-player-media-width, fit-content);--image-object-fit: var(--media-player-media-object-fit, contain);--image-border-radius: var(--media-player-media-border-radius, 0px);--image-padding: 0px;--image-margin: 0px;}.overlay.svelte-16jqa96 {position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;z-index:var(--media-player-overlay-z-index, 20);border-radius:inherit;background-color:var(--media-player-overlay-color, transparent);transition:var(--media-player-overlay-transition, background-color 0.2s ease);--center-controls-visibility: var(--media-player-center-controls-visibility, hidden);--bottom-controls-visibility: var(--media-player-bottom-controls-visibility, hidden);}\n\n /* :focus-within alongside :hover so the overlay controls (play/pause, mute) are\n reachable for keyboard users too -- :hover alone left them visibility:hidden (and\n so out of the tab order) for anyone not using a mouse. */.overlay.svelte-16jqa96:hover,\n .overlay.svelte-16jqa96:focus-within {background-color:var(--media-player-overlay-hover-color, #0000004d);--center-controls-visibility: visible;--bottom-controls-visibility: visible;}.center-controls.svelte-16jqa96 {display:flex;flex:1;justify-content:center;align-items:center;visibility:var(--center-controls-visibility);}.bottom-controls.svelte-16jqa96 {display:flex;width:100%;height:fit-content;justify-content:var(--media-player-bottom-controls-justify, flex-end);box-sizing:border-box;padding:var(--media-player-bottom-controls-padding, 12px);visibility:var(--bottom-controls-visibility);}\n\n /* With a seek bar, time or fullscreen present the row becomes a transport bar: the\n seek bar takes the free space and the rest sit beside it, centred on each other. */.bottom-controls.transport.svelte-16jqa96 {justify-content:var(--media-player-transport-justify, flex-start);align-items:center;gap:var(--media-player-transport-gap, 12px);}.seek.svelte-16jqa96 {flex:1;min-width:0;--slider-track-color: var(--media-player-seek-track-color, #ffffff59);--slider-fill-color: var(--media-player-seek-fill-color, #ffffff);--slider-thumb-color: var(--media-player-seek-thumb-color, #ffffff);}.time.svelte-16jqa96 {flex-shrink:0;font-family:var(--media-player-time-font-family, inherit);font-size:var(--media-player-time-font-size, 12px);font-variant-numeric:tabular-nums;color:var(--media-player-time-color, #ffffff);white-space:nowrap;}\n\n /* In fullscreen the container is the fullscreen element, so it must fill the screen\n rather than keep the fixed height a page layout gave it. */.media-player.fullscreen.svelte-16jqa96 {height:100%;width:100%;background:var(--media-player-fullscreen-background, #000000);}.media-player.fullscreen.svelte-16jqa96 .media:where(.svelte-16jqa96) {height:100%;width:100%;}.control.svelte-16jqa96 {--button-padding: var(--media-player-control-padding, 0px);--button-border: var(--media-player-control-border, none);--button-border-radius: var(--media-player-control-border-radius, 50%);--button-color: var(--media-player-control-background-color, transparent);--button-text-color: var(--media-player-control-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(\n --media-player-control-hover-background-color,\n var(--media-player-control-background-color, transparent)\n );--button-hover-text-color: var(\n --media-player-control-hover-color,\n var(--media-player-control-color, #ffffff)\n );}.center-control.svelte-16jqa96 {--button-width: var(--media-player-center-control-size, 64px);--button-height: var(--media-player-center-control-size, 64px);}.bottom-control.svelte-16jqa96 {--button-width: var(--media-player-bottom-control-size, 24px);--button-height: var(--media-player-bottom-control-size, 24px);}.control.svelte-16jqa96 svg,\n .control.svelte-16jqa96 img {height:var(--media-player-control-icon-size, 100%);width:var(--media-player-control-icon-size, 100%);object-fit:contain;}"
41324
+ code: ".media-player.svelte-16jqa96 {box-sizing:border-box;display:flex;position:relative;height:var(--media-player-height, 400px);width:var(--media-player-width, fit-content);border-radius:var(--media-player-border-radius, 14px);overflow:var(--media-player-overflow, hidden);background:var(--media-player-background, transparent);}.media.svelte-16jqa96 {height:var(--media-player-media-height, 100%);width:var(--media-player-media-width, fit-content);object-fit:var(--media-player-media-object-fit, contain);border-radius:var(--media-player-media-border-radius, inherit);display:block;}video.media.svelte-16jqa96 {cursor:var(--media-player-media-cursor, pointer);}.media-image.svelte-16jqa96 {display:contents;--image-height: var(--media-player-media-height, 100%);--image-width: var(--media-player-media-width, fit-content);--image-object-fit: var(--media-player-media-object-fit, contain);--image-border-radius: var(--media-player-media-border-radius, 0px);--image-padding: 0px;--image-margin: 0px;}.overlay.svelte-16jqa96 {position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;box-sizing:border-box;z-index:var(--media-player-overlay-z-index, 20);border-radius:inherit;background-color:var(--media-player-overlay-color, transparent);transition:var(\n --media-player-overlay-transition,\n background-color\n var(\n --media-player-overlay-transition-duration,\n var(--duration-base, var(--motion-duration, 0.2s))\n )\n var(--media-player-overlay-transition-easing, var(--motion-easing, ease))\n );--center-controls-visibility: var(--media-player-center-controls-visibility, hidden);--bottom-controls-visibility: var(--media-player-bottom-controls-visibility, hidden);}\n\n /* :focus-within alongside :hover so the overlay controls (play/pause, mute) are\n reachable for keyboard users too -- :hover alone left them visibility:hidden (and\n so out of the tab order) for anyone not using a mouse. */.overlay.svelte-16jqa96:hover,\n .overlay.svelte-16jqa96:focus-within {background-color:var(--media-player-overlay-hover-color, #0000004d);--center-controls-visibility: visible;--bottom-controls-visibility: visible;}.center-controls.svelte-16jqa96 {display:flex;flex:1;justify-content:center;align-items:center;visibility:var(--center-controls-visibility);}.bottom-controls.svelte-16jqa96 {display:flex;width:100%;height:fit-content;justify-content:var(--media-player-bottom-controls-justify, flex-end);box-sizing:border-box;padding:var(--media-player-bottom-controls-padding, 12px);visibility:var(--bottom-controls-visibility);}\n\n /* With a seek bar, time or fullscreen present the row becomes a transport bar: the\n seek bar takes the free space and the rest sit beside it, centred on each other. */.bottom-controls.transport.svelte-16jqa96 {justify-content:var(--media-player-transport-justify, flex-start);align-items:center;gap:var(--media-player-transport-gap, 12px);}.seek.svelte-16jqa96 {flex:1;min-width:0;--slider-track-color: var(--media-player-seek-track-color, #ffffff59);--slider-fill-color: var(--media-player-seek-fill-color, #ffffff);--slider-thumb-color: var(--media-player-seek-thumb-color, #ffffff);}.time.svelte-16jqa96 {flex-shrink:0;font-family:var(--media-player-time-font-family, inherit);font-size:var(--media-player-time-font-size, 12px);font-variant-numeric:tabular-nums;color:var(--media-player-time-color, #ffffff);white-space:nowrap;}\n\n /* In fullscreen the container is the fullscreen element, so it must fill the screen\n rather than keep the fixed height a page layout gave it. */.media-player.fullscreen.svelte-16jqa96 {height:100%;width:100%;background:var(--media-player-fullscreen-background, #000000);}.media-player.fullscreen.svelte-16jqa96 .media:where(.svelte-16jqa96) {height:100%;width:100%;}.control.svelte-16jqa96 {--button-padding: var(--media-player-control-padding, 0px);--button-border: var(--media-player-control-border, none);--button-border-radius: var(--media-player-control-border-radius, 50%);--button-color: var(--media-player-control-background-color, transparent);--button-text-color: var(--media-player-control-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(\n --media-player-control-hover-background-color,\n var(--media-player-control-background-color, transparent)\n );--button-hover-text-color: var(\n --media-player-control-hover-color,\n var(--media-player-control-color, #ffffff)\n );}.center-control.svelte-16jqa96 {--button-width: var(--media-player-center-control-size, 64px);--button-height: var(--media-player-center-control-size, 64px);}.bottom-control.svelte-16jqa96 {--button-width: var(--media-player-bottom-control-size, 24px);--button-height: var(--media-player-bottom-control-size, 24px);}.control.svelte-16jqa96 svg,\n .control.svelte-16jqa96 img {height:var(--media-player-control-icon-size, 100%);width:var(--media-player-control-icon-size, 100%);object-fit:contain;}"
41141
41325
  };
41142
41326
  function MediaPlayer(e, t) {
41143
41327
  push(t, !0), append_styles$1(e, $$css$47);
@@ -41806,7 +41990,7 @@ customElements.define("sui-media-player", create_custom_element(MediaPlayer_wc,
41806
41990
  //#region src/lib/assets/add.svg?raw
41807
41991
  var add_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n</svg>\n", file_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14 3v5h5\" />\n <path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8l-5-5z\" />\n</svg>\n", root$21 = /* @__PURE__ */ from_html("<div class=\"label svelte-nabf7u\"> </div>"), root_1$19 = /* @__PURE__ */ from_html("<div class=\"counter svelte-nabf7u\"><!></div>"), root_2$12 = /* @__PURE__ */ from_html("<div class=\"counter svelte-nabf7u\"> </div>"), root_3$11 = /* @__PURE__ */ from_html("<div class=\"header svelte-nabf7u\"><!> <!></div>"), root_4$10 = /* @__PURE__ */ from_html("<div class=\"description svelte-nabf7u\"> </div>"), root_5$9 = /* @__PURE__ */ from_html("<span class=\"thumb svelte-nabf7u\"><!></span>"), root_6$9 = /* @__PURE__ */ from_html("<span class=\"thumb-loading svelte-nabf7u\"><!></span>"), root_7$8 = /* @__PURE__ */ from_html("<div class=\"file-icon svelte-nabf7u\"><!></div>"), root_8$7 = /* @__PURE__ */ from_html("<span class=\"meta-name svelte-nabf7u\"> </span>"), root_9$6 = /* @__PURE__ */ from_html("<span class=\"meta-size svelte-nabf7u\"> </span>"), root_10$5 = /* @__PURE__ */ from_html("<div class=\"meta svelte-nabf7u\"><!> <!></div>"), root_11$3 = /* @__PURE__ */ from_html("<div class=\"remove svelte-nabf7u\"><!></div>"), root_12$3 = /* @__PURE__ */ from_html("<div><!> <!> <!></div>"), root_13$2 = /* @__PURE__ */ from_html("<span class=\"drop-text svelte-nabf7u\"> </span>"), root_14$2 = /* @__PURE__ */ from_html("<span class=\"drop-hint svelte-nabf7u\"> </span>"), root_15$2 = /* @__PURE__ */ from_html("<label><span class=\"drop-icon svelte-nabf7u\"><!></span> <!> <!> <input type=\"file\" class=\"file-input\" hidden=\"\"/></label>"), root_16$1 = /* @__PURE__ */ from_html("<div class=\"error svelte-nabf7u\" role=\"alert\"> </div>"), root_17$1 = /* @__PURE__ */ from_html("<div><!> <!> <div class=\"grid svelte-nabf7u\"><!> <!></div> <!></div>"), $$css$45 = {
41808
41992
  hash: "svelte-nabf7u",
41809
- code: ".media-upload.svelte-nabf7u {box-sizing:border-box;display:flex;flex-direction:column;width:var(--media-upload-width, fit-content);font-family:var(--media-upload-font-family, inherit);color:var(--media-upload-color, inherit);}.media-upload.disabled.svelte-nabf7u {opacity:var(--media-upload-disabled-opacity, 0.55);}.header.svelte-nabf7u {display:flex;align-items:baseline;justify-content:space-between;gap:var(--media-upload-header-gap, 12px);margin:var(--media-upload-label-margin, 0 0 4px 0);}.label.svelte-nabf7u {font-size:var(--media-upload-label-font-size, 14px);font-weight:var(--media-upload-label-font-weight, 600);color:var(--media-upload-label-color, #242833);}.counter.svelte-nabf7u {font-size:var(--media-upload-counter-font-size, 12px);font-weight:var(--media-upload-counter-font-weight, 500);color:var(--media-upload-counter-color, #5a5a5a);font-variant-numeric:tabular-nums;}.description.svelte-nabf7u {font-size:var(--media-upload-description-font-size, 12px);color:var(--media-upload-description-color, #656565);margin:var(--media-upload-description-margin, 0);}.grid.svelte-nabf7u {display:flex;flex-wrap:wrap;align-items:stretch;gap:var(--media-upload-gap, 12px);margin:var(--media-upload-content-margin, 12px 0 0 0);}.card.svelte-nabf7u,\n .drop-tile.svelte-nabf7u {box-sizing:border-box;height:var(--media-upload-item-height, 110px);width:var(--media-upload-item-width, 110px);border-radius:var(--media-upload-item-border-radius, 14px);}.card.svelte-nabf7u {position:relative;overflow:hidden;border:var(--media-upload-item-border, 1px solid #e4e4e7);background-color:var(--media-upload-item-background-color, #fafafa);box-shadow:var(--media-upload-item-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.06));transition:var(--media-upload-item-transition, box-shadow 0.2s ease, transform 0.2s ease);}.card.svelte-nabf7u:hover {box-shadow:var(--media-upload-item-hover-box-shadow, 0 6px 18px rgba(0, 0, 0, 0.14));transform:var(--media-upload-item-hover-transform, translateY(-2px));}.thumb.svelte-nabf7u {display:contents;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--media-upload-item-object-fit, cover);--image-border-radius: 0px;--image-padding: 0px;--image-margin: 0px;}.thumb-loading.svelte-nabf7u {display:contents;--shimmer-width: 100%;--shimmer-height: 100%;--shimmer-border-radius: 0px;}.file-icon.svelte-nabf7u {display:flex;height:100%;width:100%;justify-content:center;align-items:center;color:var(--media-upload-file-icon-color, #8a8f98);}.file-icon.svelte-nabf7u svg,\n .file-icon.svelte-nabf7u img {height:var(--media-upload-file-icon-size, 36px);width:var(--media-upload-file-icon-size, 36px);object-fit:contain;}.meta.svelte-nabf7u {position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:2px;box-sizing:border-box;padding:var(--media-upload-meta-padding, 6px 8px);background:var(\n --media-upload-meta-background,\n linear-gradient(to top, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0))\n );color:var(--media-upload-meta-color, #ffffff);}.is-file.svelte-nabf7u .meta:where(.svelte-nabf7u) {background:var(--media-upload-file-meta-background, transparent);color:var(--media-upload-file-meta-color, #52525b);}.meta-name.svelte-nabf7u {font-size:var(--media-upload-meta-name-font-size, 11px);font-weight:var(--media-upload-meta-name-font-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.meta-size.svelte-nabf7u {font-size:var(--media-upload-meta-size-font-size, 10px);opacity:var(--media-upload-meta-size-opacity, 0.85);font-variant-numeric:tabular-nums;}.remove.svelte-nabf7u {position:absolute;top:var(--media-upload-remove-inset, 6px);right:var(--media-upload-remove-inset, 6px);opacity:var(--media-upload-remove-opacity, 0);transition:var(--media-upload-remove-transition, opacity 0.18s ease);--button-width: var(--media-upload-remove-size, 24px);--button-height: var(--media-upload-remove-size, 24px);--button-padding: var(--media-upload-remove-padding, 4px);--button-border: var(--media-upload-remove-border, none);--button-border-radius: var(--media-upload-remove-border-radius, 50%);--button-color: var(--media-upload-remove-background-color, rgba(0, 0, 0, 0.55));--button-text-color: var(--media-upload-remove-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(--media-upload-remove-hover-background-color, rgba(0, 0, 0, 0.78));--button-hover-text-color: var(\n --media-upload-remove-hover-color,\n var(--media-upload-remove-color, #ffffff)\n );}.card.svelte-nabf7u:hover .remove:where(.svelte-nabf7u),\n .remove.svelte-nabf7u:focus-within {opacity:1;}.remove.svelte-nabf7u svg,\n .remove.svelte-nabf7u img {height:var(--media-upload-remove-icon-size, 100%);width:var(--media-upload-remove-icon-size, 100%);object-fit:contain;}.drop-tile.svelte-nabf7u {display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--media-upload-add-gap, 6px);box-sizing:border-box;padding:var(--media-upload-add-padding, 12px);text-align:center;background-color:var(--media-upload-add-background-color, #fafafa);border:var(--media-upload-add-border, 1.5px dashed #c8ccd2);color:var(--media-upload-add-color, #4b5563);cursor:pointer;transition:var(\n --media-upload-add-transition,\n border-color 0.18s ease,\n background-color 0.18s ease,\n color 0.18s ease\n );}.drop-tile.svelte-nabf7u:hover {background-color:var(--media-upload-add-hover-background-color, #f1f5ff);border:var(--media-upload-add-hover-border, 1.5px dashed #6d8eff);color:var(--media-upload-add-hover-color, #3b5bdb);}.drop-tile.dragging.svelte-nabf7u {background-color:var(--media-upload-add-dragging-background-color, #e7efff);border:var(--media-upload-add-dragging-border, 1.5px solid #3b5bdb);color:var(--media-upload-add-dragging-color, #3b5bdb);}.drop-icon.svelte-nabf7u {display:flex;justify-content:center;align-items:center;}.drop-icon.svelte-nabf7u svg,\n .drop-icon.svelte-nabf7u img {height:var(--media-upload-add-icon-size, 22px);width:var(--media-upload-add-icon-size, 22px);object-fit:contain;}.drop-text.svelte-nabf7u {font-size:var(--media-upload-add-text-font-size, 11px);line-height:var(--media-upload-add-text-line-height, 1.3);}.drop-hint.svelte-nabf7u {font-size:var(--media-upload-add-hint-font-size, 10px);color:var(--media-upload-add-hint-color, #4b5563);}.error.svelte-nabf7u {font-size:var(--media-upload-error-font-size, 12px);color:var(--media-upload-error-color, #e0334b);margin:var(--media-upload-error-margin, 8px 0 0 0);}\n\n /* `--media-upload-item-transition` defaults to a box-shadow AND transform lift\n on hover. The shadow alone would be fine; the transform is movement, and a\n consumer overriding the token is most likely adding more of it. Dropping the\n whole declaration is right here because every end state is a resting state. */\n @media (prefers-reduced-motion: reduce) {.media-item.svelte-nabf7u {transition:none;}\n }"
41993
+ code: ".media-upload.svelte-nabf7u {box-sizing:border-box;display:flex;flex-direction:column;width:var(--media-upload-width, fit-content);font-family:var(--media-upload-font-family, inherit);color:var(--media-upload-color, inherit);}.media-upload.disabled.svelte-nabf7u {opacity:var(--media-upload-disabled-opacity, 0.55);}.header.svelte-nabf7u {display:flex;align-items:baseline;justify-content:space-between;gap:var(--media-upload-header-gap, 12px);margin:var(--media-upload-label-margin, 0 0 4px 0);}.label.svelte-nabf7u {font-size:var(--media-upload-label-font-size, 14px);font-weight:var(--media-upload-label-font-weight, 600);color:var(--media-upload-label-color, #242833);}.counter.svelte-nabf7u {font-size:var(--media-upload-counter-font-size, 12px);font-weight:var(--media-upload-counter-font-weight, 500);color:var(--media-upload-counter-color, #5a5a5a);font-variant-numeric:tabular-nums;}.description.svelte-nabf7u {font-size:var(--media-upload-description-font-size, 12px);color:var(--media-upload-description-color, #656565);margin:var(--media-upload-description-margin, 0);}.grid.svelte-nabf7u {display:flex;flex-wrap:wrap;align-items:stretch;gap:var(--media-upload-gap, 12px);margin:var(--media-upload-content-margin, 12px 0 0 0);}.card.svelte-nabf7u,\n .drop-tile.svelte-nabf7u {box-sizing:border-box;height:var(--media-upload-item-height, 110px);width:var(--media-upload-item-width, 110px);border-radius:var(--media-upload-item-border-radius, 14px);}.card.svelte-nabf7u {position:relative;overflow:hidden;border:var(--media-upload-item-border, 1px solid #e4e4e7);background-color:var(--media-upload-item-background-color, #fafafa);box-shadow:var(--media-upload-item-box-shadow, 0 1px 2px rgba(0, 0, 0, 0.06));transition:var(--media-upload-item-transition, box-shadow 0.2s ease, transform 0.2s ease);}.card.svelte-nabf7u:hover {box-shadow:var(--media-upload-item-hover-box-shadow, 0 6px 18px rgba(0, 0, 0, 0.14));transform:var(--media-upload-item-hover-transform, translateY(-2px));}.thumb.svelte-nabf7u {display:contents;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--media-upload-item-object-fit, cover);--image-border-radius: 0px;--image-padding: 0px;--image-margin: 0px;}.thumb-loading.svelte-nabf7u {display:contents;--shimmer-width: 100%;--shimmer-height: 100%;--shimmer-border-radius: 0px;}.file-icon.svelte-nabf7u {display:flex;height:100%;width:100%;justify-content:center;align-items:center;color:var(--media-upload-file-icon-color, #8a8f98);}.file-icon.svelte-nabf7u svg,\n .file-icon.svelte-nabf7u img {height:var(--media-upload-file-icon-size, 36px);width:var(--media-upload-file-icon-size, 36px);object-fit:contain;}.meta.svelte-nabf7u {position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:2px;box-sizing:border-box;padding:var(--media-upload-meta-padding, 6px 8px);background:var(\n --media-upload-meta-background,\n linear-gradient(to top, rgba(0, 0, 0, 0.72), rgba(0, 0, 0, 0))\n );color:var(--media-upload-meta-color, #ffffff);}.is-file.svelte-nabf7u .meta:where(.svelte-nabf7u) {background:var(--media-upload-file-meta-background, transparent);color:var(--media-upload-file-meta-color, #52525b);}.meta-name.svelte-nabf7u {font-size:var(--media-upload-meta-name-font-size, 11px);font-weight:var(--media-upload-meta-name-font-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.meta-size.svelte-nabf7u {font-size:var(--media-upload-meta-size-font-size, 10px);opacity:var(--media-upload-meta-size-opacity, 0.85);font-variant-numeric:tabular-nums;}.remove.svelte-nabf7u {position:absolute;top:var(--media-upload-remove-inset, 6px);right:var(--media-upload-remove-inset, 6px);opacity:var(--media-upload-remove-opacity, 0);transition:var(--media-upload-remove-transition, opacity 0.18s ease);--button-width: var(--media-upload-remove-size, 24px);--button-height: var(--media-upload-remove-size, 24px);--button-padding: var(--media-upload-remove-padding, 4px);--button-border: var(--media-upload-remove-border, none);--button-border-radius: var(--media-upload-remove-border-radius, 50%);--button-color: var(--media-upload-remove-background-color, rgba(0, 0, 0, 0.55));--button-text-color: var(--media-upload-remove-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(--media-upload-remove-hover-background-color, rgba(0, 0, 0, 0.78));--button-hover-text-color: var(\n --media-upload-remove-hover-color,\n var(--media-upload-remove-color, #ffffff)\n );}.card.svelte-nabf7u:hover .remove:where(.svelte-nabf7u),\n .remove.svelte-nabf7u:focus-within {opacity:1;}.remove.svelte-nabf7u svg,\n .remove.svelte-nabf7u img {height:var(--media-upload-remove-icon-size, 100%);width:var(--media-upload-remove-icon-size, 100%);object-fit:contain;}.drop-tile.svelte-nabf7u {display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--media-upload-add-gap, 6px);box-sizing:border-box;padding:var(--media-upload-add-padding, 12px);text-align:center;background-color:var(--media-upload-add-background-color, #fafafa);border:var(--media-upload-add-border, 1.5px dashed #c8ccd2);color:var(--media-upload-add-color, #4b5563);cursor:pointer;transition:var(\n --media-upload-add-transition,\n border-color 0.18s ease,\n background-color 0.18s ease,\n color 0.18s ease\n );}.drop-tile.svelte-nabf7u:hover {background-color:var(--media-upload-add-hover-background-color, #f1f5ff);border:var(--media-upload-add-hover-border, 1.5px dashed #6d8eff);color:var(--media-upload-add-hover-color, #3b5bdb);}.drop-tile.dragging.svelte-nabf7u {background-color:var(--media-upload-add-dragging-background-color, #e7efff);border:var(--media-upload-add-dragging-border, 1.5px solid #3b5bdb);color:var(--media-upload-add-dragging-color, #3b5bdb);}.drop-icon.svelte-nabf7u {display:flex;justify-content:center;align-items:center;}.drop-icon.svelte-nabf7u svg,\n .drop-icon.svelte-nabf7u img {height:var(--media-upload-add-icon-size, 22px);width:var(--media-upload-add-icon-size, 22px);object-fit:contain;}.drop-text.svelte-nabf7u {font-size:var(--media-upload-add-text-font-size, 11px);line-height:var(--media-upload-add-text-line-height, 1.3);}.drop-hint.svelte-nabf7u {font-size:var(--media-upload-add-hint-font-size, 10px);color:var(--media-upload-add-hint-color, #4b5563);}.error.svelte-nabf7u {font-size:var(--media-upload-error-font-size, 12px);color:var(--media-upload-error-color, #e0334b);margin:var(--media-upload-error-margin, 8px 0 0 0);}\n\n /* `--media-upload-item-transition` defaults to a box-shadow AND transform lift\n on hover. The shadow alone would be fine; the transform is movement, and a\n consumer overriding the token is most likely adding more of it. Dropping the\n whole declaration is right here because every end state is a resting state. */\n @media (prefers-reduced-motion: reduce) {.card.svelte-nabf7u {transition:none;}\n }"
41810
41994
  };
41811
41995
  function MediaUpload(e, t) {
41812
41996
  let n = props_id();
@@ -42644,7 +42828,7 @@ var edit_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.
42644
42828
  }), append(e, i);
42645
42829
  }, root$18 = /* @__PURE__ */ from_html("<span class=\"grid-image-wrap svelte-14wkit2\"><!></span> <!>", 1), root_1$16 = /* @__PURE__ */ from_html("<span class=\"list-caption svelte-14wkit2\"> </span>"), root_2$10 = /* @__PURE__ */ from_html("<span class=\"list-text svelte-14wkit2\"><span class=\"list-title svelte-14wkit2\"> </span> <!></span>"), root_3$10 = /* @__PURE__ */ from_html("<!> <!>", 1), root_4$9 = /* @__PURE__ */ from_html("<button class=\"gallery-item-content svelte-14wkit2\"><!></button>"), root_5$8 = /* @__PURE__ */ from_html("<div class=\"gallery-item-content svelte-14wkit2\"><!></div>"), root_6$8 = /* @__PURE__ */ from_html("<div class=\"gallery-item-action svelte-14wkit2\"><!></div>"), root_7$7 = /* @__PURE__ */ from_html("<div class=\"gallery-item-actions svelte-14wkit2\"><!> <!></div>"), root_8$6 = /* @__PURE__ */ from_html("<div class=\"gallery-item svelte-14wkit2\" role=\"listitem\"><!> <!></div>"), root_9$5 = /* @__PURE__ */ from_html("<div class=\"lightbox-previous svelte-14wkit2\"><!></div>"), root_10$4 = /* @__PURE__ */ from_html("<figcaption class=\"lightbox-caption svelte-14wkit2\"> </figcaption>"), root_11$2 = /* @__PURE__ */ from_html("<figure class=\"lightbox-figure svelte-14wkit2\"><!> <!></figure>"), root_12$2 = /* @__PURE__ */ from_html("<div class=\"lightbox-next svelte-14wkit2\"><!></div>"), root_13$1 = /* @__PURE__ */ from_html("<div class=\"lightbox-counter svelte-14wkit2\" aria-live=\"polite\"> </div>"), root_14$1 = /* @__PURE__ */ from_html("<div role=\"dialog\" aria-modal=\"true\" tabindex=\"-1\"><div class=\"lightbox-close svelte-14wkit2\"><!></div> <!> <!> <!> <!></div>"), root_15$1 = /* @__PURE__ */ from_html("<div role=\"list\"></div> <!>", 1), $$css$39 = {
42646
42830
  hash: "svelte-14wkit2",
42647
- code: ".gallery.svelte-14wkit2 {width:var(--gallery-width, 100%);padding:var(--gallery-padding, 0px);margin:var(--gallery-margin, 0px);background:var(--gallery-background, transparent);}.gallery.grid.svelte-14wkit2 {display:grid;grid-template-columns:var(\n --gallery-grid-template-columns,\n repeat(var(--gallery-columns, 3), 1fr)\n );gap:var(--gallery-gap, 8px);}.gallery.list.svelte-14wkit2 {display:flex;flex-direction:column;gap:var(--gallery-gap, 8px);}.gallery-item.svelte-14wkit2 {position:relative;}.grid.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {aspect-ratio:var(--gallery-item-aspect-ratio, 1);border-radius:var(--gallery-item-border-radius, 0px);overflow:hidden;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--gallery-item-image-fit, cover);--image-border-radius: var(--gallery-item-border-radius, 0px);--image-transition: var(--gallery-item-image-transition);}.grid.has-item-footer.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {aspect-ratio:auto;overflow:visible;border-radius:0px;}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {display:flex;align-items:center;border-radius:var(--gallery-list-item-border-radius, 0px);background:var(--gallery-list-item-background, transparent);--image-width: var(--gallery-list-thumbnail-width, 56px);--image-height: var(--gallery-list-thumbnail-height, 56px);--image-object-fit: var(--gallery-list-thumbnail-fit, cover);--image-border-radius: var(--gallery-list-thumbnail-border-radius, 0px);--image-transition: var(--gallery-item-image-transition);--image-flex-shrink: 0;}.gallery-item-content.svelte-14wkit2 {font:inherit;color:inherit;border:var(--gallery-item-border, none);background:transparent;}button.gallery-item-content.svelte-14wkit2 {cursor:var(--gallery-item-cursor, pointer);transition:var(--gallery-item-transition);}.grid.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:block;width:100%;height:100%;padding:0;border-radius:var(--gallery-item-border-radius, 0px);}.grid.has-item-footer.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:flex;flex-direction:column;height:auto;border-radius:var(--gallery-item-border-radius, 0px);overflow:hidden;}.grid-image-wrap.svelte-14wkit2 {display:block;aspect-ratio:var(--gallery-item-aspect-ratio, 1);overflow:hidden;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--gallery-item-image-fit, cover);--image-border-radius: 0px;--image-transition: var(--gallery-item-image-transition);}.list.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:flex;align-items:center;text-align:left;flex:1;min-width:0;gap:var(--gallery-list-item-gap, 12px);padding:var(--gallery-list-item-padding, 8px);}.grid.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):hover {opacity:var(--gallery-item-hover-opacity, 1);transform:var(--gallery-item-hover-transform);}.grid.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):focus-visible {outline:var(--gallery-item-focus-outline, 2px solid currentColor);outline-offset:var(--gallery-item-focus-outline-offset, 2px);}.list.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):focus-visible {outline:none;}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2):has(button.gallery-item-content:where(.svelte-14wkit2)):hover {background:var(--gallery-list-item-hover-background, transparent);}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2):has(button.gallery-item-content:where(.svelte-14wkit2):focus-visible) {outline:var(--gallery-item-focus-outline, 2px solid currentColor);outline-offset:var(--gallery-item-focus-outline-offset, 2px);}.list-text.svelte-14wkit2 {display:flex;flex-direction:column;gap:var(--gallery-list-text-gap, 2px);min-width:0;}.list-title.svelte-14wkit2,\n .list-caption.svelte-14wkit2 {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.list-title.svelte-14wkit2 {color:var(--gallery-list-title-color, inherit);font-size:var(--gallery-list-title-font-size, 14px);font-weight:var(--gallery-list-title-font-weight, 500);font-family:var(--gallery-list-title-font-family, inherit);}.list-caption.svelte-14wkit2 {color:var(--gallery-list-caption-color, inherit);font-size:var(--gallery-list-caption-font-size, 12px);font-family:var(--gallery-list-caption-font-family, inherit);}.gallery-item-actions.svelte-14wkit2 {display:flex;align-items:center;gap:var(--gallery-item-actions-gap, 4px);}.grid.svelte-14wkit2 .gallery-item-actions:where(.svelte-14wkit2) {position:absolute;top:var(--gallery-item-actions-top, 8px);right:var(--gallery-item-actions-right, 8px);}.list.svelte-14wkit2 .gallery-item-actions:where(.svelte-14wkit2) {flex-shrink:0;padding-right:var(--gallery-item-actions-right, 8px);}.gallery-item-action.svelte-14wkit2 {border-radius:var(--gallery-item-action-border-radius, 8px);--button-color: transparent;--button-hover-color: transparent;--button-padding: var(--gallery-item-action-padding, 6px);--button-border-radius: var(--gallery-item-action-border-radius, 8px);--icon-container-padding: 0px;--icon-padding: 0px;--icon-width: var(--gallery-item-action-icon-size, 16px);--icon-height: var(--gallery-item-action-icon-size, 16px);}.grid.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2) {background:var(--gallery-item-action-background, #00000066);-webkit-backdrop-filter:var(--gallery-item-action-backdrop-filter, blur(8px));backdrop-filter:var(--gallery-item-action-backdrop-filter, blur(8px));--button-text-color: var(--gallery-item-action-color, #ffffff);}.grid.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2):hover {background:var(--gallery-item-action-hover-background, #00000099);}.list.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2) {background:var(--gallery-item-action-background, transparent);--button-text-color: var(--gallery-item-action-color, currentColor);}.list.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2):hover {background:var(--gallery-item-action-hover-background, #80808026);}.lightbox.svelte-14wkit2 {position:fixed;top:0;bottom:0;left:0;right:0;z-index:var(--gallery-lightbox-z-index, 15);display:flex;justify-content:center;align-items:center;background:var(--gallery-lightbox-background, #000000e6);-webkit-tap-highlight-color:transparent;}.lightbox.svelte-14wkit2:focus {outline:none;}\n\n /* lightboxAction focuses this element directly on open (and goToIndex\n re-focuses it whenever focus isn't already inside), and it's the\n Tab-trap's own boundary, so the unconditional :focus suppression above\n left a keyboard user with no visible sign focus had moved into the\n lightbox at all. :focus-visible wins the cascade over the plain :focus\n rule above (equal specificity, later in source, and a strict subset) only\n when the browser judges this came from keyboard/programmatic focus, so\n the thumbnail click that opens the lightbox still shows nothing new.\n outline-offset is negative (inset), matching Sheet's sheet-panel: the\n lightbox sits flush against all four viewport edges, so a positive offset\n would clip. */.lightbox.svelte-14wkit2:focus-visible {outline:var(--gallery-lightbox-focus-outline, 2px solid #2563eb);outline-offset:var(--gallery-lightbox-focus-outline-offset, -2px);}.lightbox-figure.svelte-14wkit2 {display:flex;flex-direction:column;align-items:center;gap:var(--gallery-lightbox-caption-gap, 12px);margin:0;pointer-events:none;--image-width: var(--gallery-lightbox-image-width, 85vw);--image-height: var(--gallery-lightbox-image-height, 75vh);--image-object-fit: var(--gallery-lightbox-image-fit, contain);--image-border-radius: var(--gallery-lightbox-image-border-radius, 0px);}.lightbox-caption.svelte-14wkit2 {color:var(--gallery-lightbox-caption-color, #ffffff);font-size:var(--gallery-lightbox-caption-font-size, 14px);font-family:var(--gallery-lightbox-caption-font-family, inherit);text-align:center;max-width:var(--gallery-lightbox-image-width, 85vw);}.lightbox-counter.svelte-14wkit2 {position:absolute;bottom:var(--gallery-lightbox-counter-bottom, 16px);left:50%;transform:translateX(-50%);color:var(--gallery-lightbox-counter-color, #ffffff);font-size:var(--gallery-lightbox-counter-font-size, 13px);font-family:var(--gallery-lightbox-counter-font-family, inherit);}.lightbox-close.svelte-14wkit2,\n .lightbox-previous.svelte-14wkit2,\n .lightbox-next.svelte-14wkit2 {position:absolute;--button-color: var(--gallery-lightbox-control-background, transparent);--button-text-color: var(--gallery-lightbox-control-color, #ffffff);--button-hover-color: var(--gallery-lightbox-control-hover-background, #ffffff1f);--button-padding: var(--gallery-lightbox-control-padding, 8px);--button-border-radius: var(--gallery-lightbox-control-border-radius, 50%);--icon-container-padding: 0px;--icon-padding: 0px;--icon-width: var(--gallery-lightbox-control-icon-size, 24px);--icon-height: var(--gallery-lightbox-control-icon-size, 24px);}.lightbox-close.svelte-14wkit2 {top:var(--gallery-lightbox-close-top, 16px);right:var(--gallery-lightbox-close-right, 16px);}.lightbox-previous.svelte-14wkit2,\n .lightbox-next.svelte-14wkit2 {top:50%;transform:translateY(-50%);}.lightbox-previous.svelte-14wkit2 {left:var(--gallery-lightbox-nav-inset, 16px);}.lightbox-next.svelte-14wkit2 {right:var(--gallery-lightbox-nav-inset, 16px);}"
42831
+ code: ".gallery.svelte-14wkit2 {width:var(--gallery-width, 100%);padding:var(--gallery-padding, 0px);margin:var(--gallery-margin, 0px);background:var(--gallery-background, transparent);}.gallery.grid.svelte-14wkit2 {display:grid;grid-template-columns:var(\n --gallery-grid-template-columns,\n repeat(var(--gallery-columns, 3), 1fr)\n );gap:var(--gallery-gap, 8px);}.gallery.list.svelte-14wkit2 {display:flex;flex-direction:column;gap:var(--gallery-gap, 8px);}.gallery-item.svelte-14wkit2 {position:relative;}.grid.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {aspect-ratio:var(--gallery-item-aspect-ratio, 1);border-radius:var(--gallery-item-border-radius, 0px);overflow:hidden;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--gallery-item-image-fit, cover);--image-border-radius: var(--gallery-item-border-radius, 0px);--image-transition: var(--gallery-item-image-transition);}.grid.has-item-footer.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {aspect-ratio:auto;overflow:visible;border-radius:0px;}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2) {display:flex;align-items:center;border-radius:var(--gallery-list-item-border-radius, 0px);background:var(--gallery-list-item-background, transparent);--image-width: var(--gallery-list-thumbnail-width, 56px);--image-height: var(--gallery-list-thumbnail-height, 56px);--image-object-fit: var(--gallery-list-thumbnail-fit, cover);--image-border-radius: var(--gallery-list-thumbnail-border-radius, 0px);--image-transition: var(--gallery-item-image-transition);--image-flex-shrink: 0;}.gallery-item-content.svelte-14wkit2 {font:inherit;color:inherit;border:var(--gallery-item-border, none);background:transparent;}button.gallery-item-content.svelte-14wkit2 {cursor:var(--gallery-item-cursor, pointer);transition:var(--gallery-item-transition);}.grid.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:block;width:100%;height:100%;padding:0;border-radius:var(--gallery-item-border-radius, 0px);}.grid.has-item-footer.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:flex;flex-direction:column;height:auto;border-radius:var(--gallery-item-border-radius, 0px);overflow:hidden;}.grid-image-wrap.svelte-14wkit2 {display:block;aspect-ratio:var(--gallery-item-aspect-ratio, 1);overflow:hidden;--image-width: 100%;--image-height: 100%;--image-object-fit: var(--gallery-item-image-fit, cover);--image-border-radius: 0px;--image-transition: var(--gallery-item-image-transition);}.list.svelte-14wkit2 .gallery-item-content:where(.svelte-14wkit2) {display:flex;align-items:center;text-align:left;flex:1;min-width:0;gap:var(--gallery-list-item-gap, 12px);padding:var(--gallery-list-item-padding, 8px);}.grid.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):hover {opacity:var(--gallery-item-hover-opacity, 1);transform:var(--gallery-item-hover-transform);}.grid.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):focus-visible {outline:var(--gallery-item-focus-outline, 2px solid currentColor);outline-offset:var(--gallery-item-focus-outline-offset, 2px);}.list.svelte-14wkit2 button.gallery-item-content:where(.svelte-14wkit2):focus-visible {outline:none;}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2):has(button.gallery-item-content:where(.svelte-14wkit2)):hover {background:var(--gallery-list-item-hover-background, transparent);}.list.svelte-14wkit2 .gallery-item:where(.svelte-14wkit2):has(button.gallery-item-content:where(.svelte-14wkit2):focus-visible) {outline:var(--gallery-item-focus-outline, 2px solid currentColor);outline-offset:var(--gallery-item-focus-outline-offset, 2px);}.list-text.svelte-14wkit2 {display:flex;flex-direction:column;gap:var(--gallery-list-text-gap, 2px);min-width:0;}.list-title.svelte-14wkit2,\n .list-caption.svelte-14wkit2 {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.list-title.svelte-14wkit2 {color:var(--gallery-list-title-color, inherit);font-size:var(--gallery-list-title-font-size, 14px);font-weight:var(--gallery-list-title-font-weight, 500);font-family:var(--gallery-list-title-font-family, inherit);}.list-caption.svelte-14wkit2 {color:var(--gallery-list-caption-color, inherit);font-size:var(--gallery-list-caption-font-size, 12px);font-family:var(--gallery-list-caption-font-family, inherit);}.gallery-item-actions.svelte-14wkit2 {display:flex;align-items:center;gap:var(--gallery-item-actions-gap, 4px);}.grid.svelte-14wkit2 .gallery-item-actions:where(.svelte-14wkit2) {position:absolute;top:var(--gallery-item-actions-top, 8px);right:var(--gallery-item-actions-right, 8px);}.list.svelte-14wkit2 .gallery-item-actions:where(.svelte-14wkit2) {flex-shrink:0;padding-right:var(--gallery-item-actions-right, 8px);}.gallery-item-action.svelte-14wkit2 {border-radius:var(--gallery-item-action-border-radius, 8px);--button-color: transparent;--button-hover-color: transparent;--button-padding: var(--gallery-item-action-padding, 6px);--button-border-radius: var(--gallery-item-action-border-radius, 8px);--icon-container-padding: 0px;--icon-padding: 0px;--icon-width: var(--gallery-item-action-icon-size, 16px);--icon-height: var(--gallery-item-action-icon-size, 16px);}.grid.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2) {background:var(--gallery-item-action-background, #00000066);-webkit-backdrop-filter:var(--gallery-item-action-backdrop-filter, blur(8px));backdrop-filter:var(--gallery-item-action-backdrop-filter, blur(8px));--button-text-color: var(--gallery-item-action-color, #ffffff);}.grid.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2):hover {background:var(--gallery-item-action-hover-background, #00000099);}.list.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2) {background:var(--gallery-item-action-background, transparent);--button-text-color: var(--gallery-item-action-color, currentColor);}.list.svelte-14wkit2 .gallery-item-action:where(.svelte-14wkit2):hover {background:var(--gallery-item-action-hover-background, #80808026);}.lightbox.svelte-14wkit2 {position:fixed;top:0;bottom:0;left:0;right:0;z-index:var(--gallery-lightbox-z-index, 15);display:flex;justify-content:center;align-items:center;background:var(--gallery-lightbox-background, #000000e6);-webkit-tap-highlight-color:transparent;--_gallery-lightbox-transition-duration: var(\n --gallery-lightbox-transition-duration,\n var(--duration-base, var(--motion-duration))\n );}.lightbox.svelte-14wkit2:focus {outline:none;}\n\n /* lightboxAction focuses this element directly on open (and goToIndex\n re-focuses it whenever focus isn't already inside), and it's the\n Tab-trap's own boundary, so the unconditional :focus suppression above\n left a keyboard user with no visible sign focus had moved into the\n lightbox at all. :focus-visible wins the cascade over the plain :focus\n rule above (equal specificity, later in source, and a strict subset) only\n when the browser judges this came from keyboard/programmatic focus, so\n the thumbnail click that opens the lightbox still shows nothing new.\n outline-offset is negative (inset), matching Sheet's sheet-panel: the\n lightbox sits flush against all four viewport edges, so a positive offset\n would clip. */.lightbox.svelte-14wkit2:focus-visible {outline:var(--gallery-lightbox-focus-outline, 2px solid #2563eb);outline-offset:var(--gallery-lightbox-focus-outline-offset, -2px);}.lightbox-figure.svelte-14wkit2 {display:flex;flex-direction:column;align-items:center;gap:var(--gallery-lightbox-caption-gap, 12px);margin:0;pointer-events:none;--image-width: var(--gallery-lightbox-image-width, 85vw);--image-height: var(--gallery-lightbox-image-height, 75vh);--image-object-fit: var(--gallery-lightbox-image-fit, contain);--image-border-radius: var(--gallery-lightbox-image-border-radius, 0px);}.lightbox-caption.svelte-14wkit2 {color:var(--gallery-lightbox-caption-color, #ffffff);font-size:var(--gallery-lightbox-caption-font-size, 14px);font-family:var(--gallery-lightbox-caption-font-family, inherit);text-align:center;max-width:var(--gallery-lightbox-image-width, 85vw);}.lightbox-counter.svelte-14wkit2 {position:absolute;bottom:var(--gallery-lightbox-counter-bottom, 16px);left:50%;transform:translateX(-50%);color:var(--gallery-lightbox-counter-color, #ffffff);font-size:var(--gallery-lightbox-counter-font-size, 13px);font-family:var(--gallery-lightbox-counter-font-family, inherit);}.lightbox-close.svelte-14wkit2,\n .lightbox-previous.svelte-14wkit2,\n .lightbox-next.svelte-14wkit2 {position:absolute;--button-color: var(--gallery-lightbox-control-background, transparent);--button-text-color: var(--gallery-lightbox-control-color, #ffffff);--button-hover-color: var(--gallery-lightbox-control-hover-background, #ffffff1f);--button-padding: var(--gallery-lightbox-control-padding, 8px);--button-border-radius: var(--gallery-lightbox-control-border-radius, 50%);--icon-container-padding: 0px;--icon-padding: 0px;--icon-width: var(--gallery-lightbox-control-icon-size, 24px);--icon-height: var(--gallery-lightbox-control-icon-size, 24px);}.lightbox-close.svelte-14wkit2 {top:var(--gallery-lightbox-close-top, 16px);right:var(--gallery-lightbox-close-right, 16px);}.lightbox-previous.svelte-14wkit2,\n .lightbox-next.svelte-14wkit2 {top:50%;transform:translateY(-50%);}.lightbox-previous.svelte-14wkit2 {left:var(--gallery-lightbox-nav-inset, 16px);}.lightbox-next.svelte-14wkit2 {right:var(--gallery-lightbox-nav-inset, 16px);}"
42648
42832
  };
42649
42833
  function Gallery(e, t) {
42650
42834
  push(t, !0), append_styles$1(e, $$css$39);
@@ -42716,41 +42900,50 @@ function Gallery(e, t) {
42716
42900
  unlockBodyScroll(), dt !== null && (dt.focus(), dt = null);
42717
42901
  } };
42718
42902
  }
42719
- function xt(e, t) {
42903
+ function xt(e) {
42904
+ let t = e.trim();
42905
+ if (t.length === 0) return null;
42906
+ let n = Number.parseFloat(t);
42907
+ return Number.isFinite(n) ? t.endsWith("ms") ? n : t.endsWith("s") ? n * 1e3 : null : null;
42908
+ }
42909
+ function St(e) {
42910
+ return typeof at() == "number" ? fade(e, { duration: at() }) : fade(e, { duration: xt(getComputedStyle(e).getPropertyValue("--_gallery-lightbox-transition-duration")) ?? 200 });
42911
+ }
42912
+ function Ct(e, t) {
42720
42913
  t instanceof HTMLElement && (dt = t), s(e), o(!0), be()?.(e);
42721
42914
  }
42722
- function St() {
42915
+ function wt() {
42723
42916
  o(!1), Me()?.();
42724
42917
  }
42725
- async function Ct(e) {
42918
+ async function Tt(e) {
42726
42919
  e < 0 || e >= i().length || (s(e), Re()?.(s()), await tick(), get(ot) !== null && !get(ot).contains(getActiveElement(get(ot))) && get(ot).focus());
42727
42920
  }
42728
- function wt() {
42729
- s() > 0 ? Ct(s() - 1) : l() && i().length > 1 && Ct(i().length - 1);
42921
+ function Et() {
42922
+ s() > 0 ? Tt(s() - 1) : l() && i().length > 1 && Tt(i().length - 1);
42730
42923
  }
42731
- function Tt() {
42732
- s() < i().length - 1 ? Ct(s() + 1) : l() && i().length > 1 && Ct(0);
42924
+ function Dt() {
42925
+ s() < i().length - 1 ? Tt(s() + 1) : l() && i().length > 1 && Tt(0);
42733
42926
  }
42734
- function Et(e, t) {
42735
- ne()?.(e, t), c() && xt(e, t.currentTarget);
42927
+ function Ot(e, t) {
42928
+ ne()?.(e, t), c() && Ct(e, t.currentTarget);
42736
42929
  }
42737
- function Dt(e, t) {
42930
+ function kt(e, t) {
42738
42931
  re()?.(e, t);
42739
42932
  }
42740
- function Ot(e, t) {
42933
+ function At(e, t) {
42741
42934
  G()?.(e, t);
42742
42935
  }
42743
- function kt(e) {
42936
+ function jt(e) {
42744
42937
  let t = get(ct)?.querySelector("button") ?? null, n = (get(ut) ?? get(lt) ?? get(ct))?.querySelector("button") ?? null;
42745
42938
  t === null || n === null || (e.shiftKey && (getActiveElement(get(ot)) === t || getActiveElement(get(ot)) === get(ot)) ? (e.preventDefault(), n.focus()) : !e.shiftKey && getActiveElement(get(ot)) === n && (e.preventDefault(), t.focus()));
42746
42939
  }
42747
- function At(e) {
42748
- Ue()?.(e), e.key === "Escape" ? St() : e.key === "ArrowLeft" ? (e.preventDefault(), wt()) : e.key === "ArrowRight" ? (e.preventDefault(), Tt()) : e.key === "Home" ? (e.preventDefault(), Ct(0)) : e.key === "End" ? (e.preventDefault(), Ct(i().length - 1)) : e.key === "Tab" && kt(e);
42940
+ function Mt(e) {
42941
+ Ue()?.(e), e.key === "Escape" ? wt() : e.key === "ArrowLeft" ? (e.preventDefault(), Et()) : e.key === "ArrowRight" ? (e.preventDefault(), Dt()) : e.key === "Home" ? (e.preventDefault(), Tt(0)) : e.key === "End" ? (e.preventDefault(), Tt(i().length - 1)) : e.key === "Tab" && jt(e);
42749
42942
  }
42750
- function jt(e) {
42751
- e.target === get(ot) && St();
42943
+ function Nt(e) {
42944
+ e.target === get(ot) && wt();
42752
42945
  }
42753
- var Mt = {
42946
+ var Pt = {
42754
42947
  get images() {
42755
42948
  return i();
42756
42949
  },
@@ -42895,11 +43088,11 @@ function Gallery(e, t) {
42895
43088
  set lightboxTransitionDuration(e) {
42896
43089
  at(e), flushSync();
42897
43090
  }
42898
- }, Nt = root_15$1(), Pt = first_child(Nt);
42899
- each(Pt, 21, i, index, (e, t, a) => {
43091
+ }, It = root_15$1(), Lt = first_child(It);
43092
+ each(Lt, 21, i, index, (e, t, a) => {
42900
43093
  var o = root_8$6(), s = child(o), l = (e) => {
42901
43094
  var o = root_4$9();
42902
- n(child(o), () => get(t), () => a), reset(o), template_effect(() => set_attribute(o, "aria-label", c() ? `View image ${a + 1} of ${i().length}: ${get(t).alt}` : get(t).alt)), delegated("click", o, (e) => Et(a, e)), append(e, o);
43095
+ n(child(o), () => get(t), () => a), reset(o), template_effect(() => set_attribute(o, "aria-label", c() ? `View image ${a + 1} of ${i().length}: ${get(t).alt}` : get(t).alt)), delegated("click", o, (e) => Ot(a, e)), append(e, o);
42903
43096
  }, u = (e) => {
42904
43097
  var i = root_5$8();
42905
43098
  n(child(i), () => get(t), () => a), reset(i), append(e, i);
@@ -42916,7 +43109,7 @@ function Gallery(e, t) {
42916
43109
  get ariaLabel() {
42917
43110
  return get(e);
42918
43111
  },
42919
- onclick: (e) => Dt(a, e),
43112
+ onclick: (e) => kt(a, e),
42920
43113
  children: (e, t) => {
42921
43114
  controlIcon(e, () => edit_default, C);
42922
43115
  },
@@ -42936,7 +43129,7 @@ function Gallery(e, t) {
42936
43129
  get ariaLabel() {
42937
43130
  return get(e);
42938
43131
  },
42939
- onclick: (e) => Ot(a, e),
43132
+ onclick: (e) => At(a, e),
42940
43133
  children: (e, t) => {
42941
43134
  controlIcon(e, () => delete_default, k);
42942
43135
  },
@@ -42952,12 +43145,12 @@ function Gallery(e, t) {
42952
43145
  if_block(f, (e) => {
42953
43146
  get(yt) && e(p);
42954
43147
  }), reset(o), append(e, o);
42955
- }), reset(Pt);
42956
- var It = sibling(Pt, 2), Lt = (e) => {
43148
+ }), reset(Lt);
43149
+ var Rt = sibling(Lt, 2), zt = (e) => {
42957
43150
  var t = root_14$1(), n = child(t);
42958
43151
  Button(child(n), {
42959
43152
  ariaLabel: "Close gallery",
42960
- onclick: St,
43153
+ onclick: wt,
42961
43154
  children: (e, t) => {
42962
43155
  controlIcon(e, () => close_default, S);
42963
43156
  },
@@ -42967,7 +43160,7 @@ function Gallery(e, t) {
42967
43160
  var t = root_9$5();
42968
43161
  Button(child(t), {
42969
43162
  ariaLabel: "Previous image",
42970
- onclick: wt,
43163
+ onclick: Et,
42971
43164
  children: (e, t) => {
42972
43165
  controlIcon(e, () => chevron_left_lg_default, p);
42973
43166
  },
@@ -43005,7 +43198,7 @@ function Gallery(e, t) {
43005
43198
  var t = root_12$2();
43006
43199
  Button(child(t), {
43007
43200
  ariaLabel: "Next image",
43008
- onclick: Tt,
43201
+ onclick: Dt,
43009
43202
  children: (e, t) => {
43010
43203
  controlIcon(e, () => chevron_right_lg_default, h);
43011
43204
  },
@@ -43023,13 +43216,13 @@ function Gallery(e, t) {
43023
43216
  u() && typeof get(ft) == "object" && e(te);
43024
43217
  }), reset(t), bind_this(t, (e) => set(ot, e), () => get(ot)), action(t, (e) => bt?.(e)), template_effect(() => {
43025
43218
  set_class(t, 1, `lightbox ${it() ?? "" ?? ""}`, "svelte-14wkit2"), set_attribute(t, "aria-label", typeof get(ft) == "object" ? get(ft).alt : "Image gallery");
43026
- }), delegated("click", t, jt), delegated("keydown", t, At), transition(3, t, () => fade, () => ({ duration: at() ?? 200 })), append(e, t);
43219
+ }), delegated("click", t, Nt), delegated("keydown", t, Mt), transition(3, t, () => St), append(e, t);
43027
43220
  };
43028
- return if_block(It, (e) => {
43029
- o() && e(Lt);
43221
+ return if_block(Rt, (e) => {
43222
+ o() && e(zt);
43030
43223
  }), template_effect(() => {
43031
- set_class(Pt, 1, `gallery ${a() ?? ""} ${get(gt) ? "has-item-footer" : ""} ${it() ?? "" ?? ""}`, "svelte-14wkit2"), set_attribute(Pt, "data-pw", typeof te() == "string" ? te() : null);
43032
- }), append(e, Nt), pop(Mt);
43224
+ set_class(Lt, 1, `gallery ${a() ?? ""} ${get(gt) ? "has-item-footer" : ""} ${it() ?? "" ?? ""}`, "svelte-14wkit2"), set_attribute(Lt, "data-pw", typeof te() == "string" ? te() : null);
43225
+ }), append(e, It), pop(Pt);
43033
43226
  }
43034
43227
  delegate(["click", "keydown"]), create_custom_element(Gallery, {
43035
43228
  images: {},
@@ -50959,7 +51152,7 @@ function normalizeDictationState(e) {
50959
51152
  //#region src/lib/ChatComposer/ChatComposer.svelte
50960
51153
  var root$12 = /* @__PURE__ */ from_html("<div class=\"sr-only svelte-xpd394\" role=\"status\" aria-live=\"polite\"> </div>"), root_1$11 = /* @__PURE__ */ from_html("<div class=\"attachments-rich svelte-xpd394\"><!></div>"), root_2$6 = /* @__PURE__ */ from_html("<div class=\"attachments svelte-xpd394\"></div>"), root_3$6 = /* @__PURE__ */ from_html("<div class=\"control attach svelte-xpd394\"><!> <input type=\"file\" class=\"file-input\" hidden=\"\"/></div>"), root_4$5 = /* @__PURE__ */ from_html("<div class=\"leading svelte-xpd394\"><!></div>"), root_5$4 = /* @__PURE__ */ from_html("<div><!></div>"), root_6$4 = /* @__PURE__ */ from_html("<div class=\"control send stop svelte-xpd394\"><!></div>"), root_7$4 = /* @__PURE__ */ from_html("<div class=\"control send action svelte-xpd394\"><!></div>"), root_8$4 = /* @__PURE__ */ from_html("<div class=\"control send svelte-xpd394\"><!></div>"), root_9$3 = /* @__PURE__ */ from_html("<div><!> <!> <div class=\"input-row svelte-xpd394\"><!> <!> <textarea class=\"input svelte-xpd394\" rows=\"1\"></textarea> <!> <!></div></div>"), $$css$32 = {
50961
51154
  hash: "svelte-xpd394",
50962
- code: ".chat-composer.svelte-xpd394 {box-sizing:border-box;display:flex;flex-direction:column;gap:var(--chat-composer-stack-gap, 8px);width:var(--chat-composer-width, 100%);padding:var(--chat-composer-padding, 8px);background:var(--chat-composer-background, #ffffff);border:var(--chat-composer-border, 1px solid #e4e4e7);border-radius:var(--chat-composer-border-radius, 24px);box-shadow:var(--chat-composer-box-shadow, none);}.chat-composer.disabled.svelte-xpd394 {opacity:var(--chat-composer-disabled-opacity, 0.6);}\n\n /* .input below sets outline: none with nothing standing in for it, so the\n visible replacement lives here on the surrounding surface instead --\n :focus-within lights up whenever the textarea inside is focused, the same\n pattern Select's .select-trigger uses for its nested search input. */.chat-composer.svelte-xpd394:focus-within {border-color:var(--chat-composer-focus-border-color, #2563eb);box-shadow:var(--chat-composer-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.attachments-rich.svelte-xpd394 {padding:var(--chat-composer-attachments-padding, 2px 4px 0);}.attachments.svelte-xpd394 {display:flex;flex-wrap:wrap;gap:var(--chat-composer-attachments-gap, 6px);padding:var(--chat-composer-attachments-padding, 2px 4px 0);}.input-row.svelte-xpd394 {display:flex;align-items:flex-end;gap:var(--chat-composer-gap, 8px);}.leading.svelte-xpd394 {display:flex;align-items:center;flex-shrink:0;}.input.svelte-xpd394 {flex:1;box-sizing:border-box;resize:none;border:none;outline:none;background:transparent;font-family:var(--chat-composer-font-family, inherit);font-size:var(--chat-composer-font-size, 0.9375rem);font-weight:var(--chat-composer-font-weight, 400);line-height:var(--chat-composer-line-height, 1.5);color:var(--chat-composer-color, #18181b);padding:var(--chat-composer-input-padding, 6px 4px);max-height:var(--chat-composer-max-height, 160px);overflow-y:auto;}.input.svelte-xpd394::placeholder {color:var(--chat-composer-placeholder-color, #52525b);}.control.svelte-xpd394 {flex-shrink:0;display:flex;}.control.svelte-xpd394 svg {height:100%;width:100%;}.attach.svelte-xpd394,\n .voice.svelte-xpd394 {--button-width: var(--chat-composer-action-size, 36px);--button-height: var(--chat-composer-action-size, 36px);--button-padding: var(--chat-composer-action-padding, 8px);--button-border-radius: var(--chat-composer-action-border-radius, 50%);--button-color: var(--chat-composer-action-background-color, transparent);--button-text-color: var(--chat-composer-action-color, #52525b);--button-content-gap: 0px;--button-hover-color: var(--chat-composer-action-hover-background-color, #f4f4f5);}.voice.recording.svelte-xpd394 {--button-color: var(--chat-composer-voice-recording-background-color, #fee2e2);--button-text-color: var(--chat-composer-voice-recording-color, #dc2626);}\n\n /* No dedicated busy palette: the disabled `Button` already dims itself\n (`--disabled-opacity`), which is enough to distinguish \"busy\" from the\n active \"recording\" red without inventing new color tokens that would\n need a matching dark-theme entry outside this component's scope. The\n `.busy` class is still applied to the wrapper (see markup) so a caller\n can target it with their own CSS if they want a distinct look. */.send.svelte-xpd394 {--button-width: var(--chat-composer-send-size, 40px);--button-height: var(--chat-composer-send-size, 40px);--button-padding: var(--chat-composer-send-padding, 8px);--button-border-radius: var(--chat-composer-send-border-radius, 50%);--button-color: var(--chat-composer-send-background-color, #18181b);--button-text-color: var(--chat-composer-send-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(--chat-composer-send-hover-background-color, #27272a);}.send.stop.svelte-xpd394 {--button-color: var(--chat-composer-stop-background-color, #18181b);--button-text-color: var(--chat-composer-stop-color, #ffffff);}\n\n /* Visually hidden but still read by assistive technology -- same pattern\n Table's caption and Label's required marker use. */.sr-only.svelte-xpd394 {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}"
51155
+ code: ".chat-composer.svelte-xpd394 {box-sizing:border-box;display:flex;flex-direction:column;gap:var(--chat-composer-stack-gap, 8px);width:var(--chat-composer-width, 100%);padding:var(--chat-composer-padding, 8px);background:var(--chat-composer-background, #ffffff);border:var(--chat-composer-border, 1px solid #e4e4e7);border-radius:var(--chat-composer-border-radius, 24px);box-shadow:var(--chat-composer-box-shadow, none);}.chat-composer.disabled.svelte-xpd394 {opacity:var(--chat-composer-disabled-opacity, 0.6);}\n\n /* .input below sets outline: none with nothing standing in for it, so the\n visible replacement lives here on the surrounding surface instead --\n :focus-within lights up whenever the textarea inside is focused, the same\n pattern Select's .select-trigger uses for its nested search input. */.chat-composer.svelte-xpd394:focus-within {border-color:var(--chat-composer-focus-border-color, #2563eb);box-shadow:var(--chat-composer-focus-shadow, 0 0 0 2px rgba(37, 99, 235, 0.2));}.attachments-rich.svelte-xpd394 {padding:var(--chat-composer-attachments-padding, 2px 4px 0);}.attachments.svelte-xpd394 {display:flex;flex-wrap:wrap;gap:var(--chat-composer-attachments-gap, 6px);padding:var(--chat-composer-attachments-padding, 2px 4px 0);}.input-row.svelte-xpd394 {display:flex;align-items:flex-end;gap:var(--chat-composer-gap, 8px);}.leading.svelte-xpd394 {display:flex;align-items:center;flex-shrink:0;}.input.svelte-xpd394 {flex:1;box-sizing:border-box;resize:none;border:none;outline:none;background:transparent;font-family:var(--chat-composer-font-family, inherit);font-size:var(--chat-composer-font-size, 0.9375rem);font-weight:var(--chat-composer-font-weight, 400);line-height:var(--chat-composer-line-height, 1.5);color:var(--chat-composer-color, #18181b);padding:var(--chat-composer-input-padding, 6px 4px);max-height:var(--chat-composer-max-height, 160px);overflow-y:auto;}.input.svelte-xpd394::placeholder {color:var(--chat-composer-placeholder-color, #52525b);}.control.svelte-xpd394 {flex-shrink:0;display:flex;}.control.svelte-xpd394 svg {height:100%;width:100%;}.attach.svelte-xpd394,\n .voice.svelte-xpd394 {--button-width: var(--chat-composer-action-size, 36px);--button-height: var(--chat-composer-action-size, 36px);--button-padding: var(--chat-composer-action-padding, 8px);--button-border-radius: var(--chat-composer-action-border-radius, 50%);--button-color: var(--chat-composer-action-background-color, transparent);--button-text-color: var(--chat-composer-action-color, #52525b);--button-content-gap: 0px;--button-hover-color: var(--chat-composer-action-hover-background-color, #f4f4f5);\n /* Ghost brings its own hover label; keep this control's, recording red included. */--button-hover-text-color: var(--button-text-color);}.voice.recording.svelte-xpd394 {--button-color: var(--chat-composer-voice-recording-background-color, #fee2e2);--button-text-color: var(--chat-composer-voice-recording-color, #dc2626);}\n\n /* No dedicated busy palette: the disabled `Button` already dims itself\n (`--disabled-opacity`), which is enough to distinguish \"busy\" from the\n active \"recording\" red without inventing new color tokens that would\n need a matching dark-theme entry outside this component's scope. The\n `.busy` class is still applied to the wrapper (see markup) so a caller\n can target it with their own CSS if they want a distinct look. */.send.svelte-xpd394 {--button-width: var(--chat-composer-send-size, 40px);--button-height: var(--chat-composer-send-size, 40px);--button-padding: var(--chat-composer-send-padding, 8px);--button-border-radius: var(--chat-composer-send-border-radius, 50%);--button-color: var(--chat-composer-send-background-color, #18181b);--button-text-color: var(--chat-composer-send-color, #ffffff);--button-content-gap: 0px;--button-hover-color: var(--chat-composer-send-hover-background-color, #27272a);}.send.stop.svelte-xpd394 {--button-color: var(--chat-composer-stop-background-color, #18181b);--button-text-color: var(--chat-composer-stop-color, #ffffff);}\n\n /* Visually hidden but still read by assistive technology -- same pattern\n Table's caption and Label's required marker use. */.sr-only.svelte-xpd394 {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);clip-path:inset(50%);white-space:nowrap;border-width:0;}"
50963
51156
  };
50964
51157
  function ChatComposer(e, t) {
50965
51158
  push(t, !0), append_styles$1(e, $$css$32);
@@ -51452,6 +51645,7 @@ function ChatComposer(e, t) {
51452
51645
  var Sn = sibling(vn, 2), Cn = child(Sn), wn = (e) => {
51453
51646
  var t = root_3$6(), n = child(t);
51454
51647
  Button(n, {
51648
+ variant: "ghost",
51455
51649
  onclick: () => {
51456
51650
  if (typeof jt() == "function") {
51457
51651
  jt()();
@@ -51503,6 +51697,7 @@ function ChatComposer(e, t) {
51503
51697
  var t = root_5$4();
51504
51698
  let n;
51505
51699
  Button(child(t), {
51700
+ variant: "ghost",
51506
51701
  onclick: () => Ot()?.(),
51507
51702
  get disabled() {
51508
51703
  return get(rn);
@@ -51856,7 +52051,7 @@ delegate(["click"]), create_custom_element(ChatSuggestions, {
51856
52051
  //#region src/lib/ThinkingIndicator/ThinkingIndicator.svelte
51857
52052
  var root$10 = /* @__PURE__ */ from_html("<span class=\"avatar svelte-uzfrw6\"><!></span>"), root_1$9 = /* @__PURE__ */ from_svg("<svg viewBox=\"0 0 16 16\" fill=\"none\" class=\"svelte-uzfrw6\"><path d=\"M4 6l4 4 4-4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-uzfrw6\"></path></svg>"), root_2$5 = /* @__PURE__ */ from_html("<span class=\"elapsed svelte-uzfrw6\"> </span>"), root_3$5 = /* @__PURE__ */ from_html("<span class=\"status-row svelte-uzfrw6\"><!> <span class=\"label-cluster svelte-uzfrw6\"><span> </span> <span aria-hidden=\"true\"><!></span></span></span> <!>", 1), root_4$4 = /* @__PURE__ */ from_svg("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\" class=\"svelte-uzfrw6\"><circle cx=\"11\" cy=\"11\" r=\"7\" class=\"svelte-uzfrw6\"></circle><path d=\"m21 21-4.3-4.3\" stroke-linecap=\"round\" class=\"svelte-uzfrw6\"></path></svg>"), root_5$3 = /* @__PURE__ */ from_html("<span class=\"trace-query-wrap svelte-uzfrw6\"><!></span>"), root_6$3 = /* @__PURE__ */ from_html("<span> </span>"), root_7$3 = /* @__PURE__ */ from_html("<span class=\"added svelte-uzfrw6\"> </span>"), root_8$3 = /* @__PURE__ */ from_html("<span class=\"removed svelte-uzfrw6\"> </span>"), root_9$2 = /* @__PURE__ */ from_html("<span class=\"row-diffstat svelte-uzfrw6\"><!> <!></span>"), root_10$2 = /* @__PURE__ */ from_html("<button type=\"button\"><b class=\"row-primary svelte-uzfrw6\"> </b> <!> <!></button>"), root_11 = /* @__PURE__ */ from_html("<span class=\"row-secondary svelte-uzfrw6\"> </span>"), root_12 = /* @__PURE__ */ from_html("<a class=\"trace-row linked svelte-uzfrw6\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"row-badge svelte-uzfrw6\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-uzfrw6\"><path d=\"M20 6 9 17l-5-5\" class=\"svelte-uzfrw6\"></path></svg></span> <b class=\"row-primary svelte-uzfrw6\"> </b> <!></a>"), root_13 = /* @__PURE__ */ from_svg("<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-uzfrw6\"><path d=\"M20 6 9 17l-5-5\" class=\"svelte-uzfrw6\"></path></svg>"), root_14 = /* @__PURE__ */ from_html("<span class=\"row-icon svelte-uzfrw6\" aria-hidden=\"true\"><!></span>"), root_15 = /* @__PURE__ */ from_html("<span class=\"row-badge svelte-uzfrw6\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-uzfrw6\"><path d=\"M20 6 9 17l-5-5\" class=\"svelte-uzfrw6\"></path></svg></span>"), root_16 = /* @__PURE__ */ from_html("<b class=\"row-primary svelte-uzfrw6\"> </b>"), root_17 = /* @__PURE__ */ from_html("<div><!> <!> <!> <!></div>"), root_18 = /* @__PURE__ */ from_html("<div class=\"trace-more svelte-uzfrw6\"> </div>"), root_19 = /* @__PURE__ */ from_html("<!> <div class=\"trace-body svelte-uzfrw6\"><span class=\"trace-connector svelte-uzfrw6\" aria-hidden=\"true\"></span> <div class=\"trace-rows svelte-uzfrw6\"></div></div> <!>", 1), root_20 = /* @__PURE__ */ from_html("<p class=\"detail svelte-uzfrw6\"> </p>"), root_21 = /* @__PURE__ */ from_html("<div class=\"thinking-indicator-body svelte-uzfrw6\"><!></div>"), root_22 = /* @__PURE__ */ from_html("<div><div class=\"toggle svelte-uzfrw6\"><!></div> <!></div>"), root_23 = /* @__PURE__ */ from_html("<span class=\"svelte-uzfrw6\"> </span>"), root_24 = /* @__PURE__ */ from_html("<span><!></span>"), root_25 = /* @__PURE__ */ from_html("<div aria-live=\"polite\" aria-atomic=\"true\"><span class=\"chip-icon svelte-uzfrw6\"><!></span> <span> </span></div>"), root_26 = /* @__PURE__ */ from_html("<div><span class=\"status-row svelte-uzfrw6\"><span class=\"avatar svelte-uzfrw6\"><!></span> <span> </span></span> <!></div>"), $$css$30 = {
51858
52053
  hash: "svelte-uzfrw6",
51859
- code: "\n @keyframes svelte-uzfrw6-thinking-indicator-shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n }\n\n @keyframes svelte-uzfrw6-thinking-indicator-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }\n\n @keyframes svelte-uzfrw6-thinking-indicator-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }.thinking-indicator.svelte-uzfrw6 {box-sizing:border-box;width:100%;}.expandable.svelte-uzfrw6 {border-bottom:var(--thinking-indicator-border-bottom, 1px solid #e4e4e7);padding-block:var(--thinking-indicator-padding-block, 0.5rem);margin-bottom:var(--thinking-indicator-margin-bottom, 1rem);min-height:0;transition:min-height 400ms\n var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1));}.expandable.busy.svelte-uzfrw6 {min-height:var(--thinking-indicator-trace-busy-min-height, 0px);}.toggle.svelte-uzfrw6 {width:100%;--button-color: transparent;--button-border: none;--button-box-shadow: none;--button-hover-box-shadow: none;--button-active-box-shadow: none;--button-width: 100%;--button-padding: 0;--button-justify-content: flex-start;--button-text-color: inherit;--button-content-gap: var(--thinking-indicator-header-gap, 0.375rem);}\n\n /* A flex ROW host makes the inner status-row hug its content, so the shimmer\n gradient maps to the text's own width rather than the full container. Neither\n form stretches to fill the width — a trailing gap after a short label is real\n empty space, not a reserved box, so nothing pushes the elapsed counter away. */.status-host.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-header-gap, 0.375rem);}.status-row.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-gap, 0.25rem);min-width:0;}.avatar.svelte-uzfrw6 {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--thinking-indicator-avatar-size, 1.5rem);height:var(--thinking-indicator-avatar-size, 1.5rem);--loader-width: var(--thinking-indicator-avatar-loader-size, 1rem);--loader-height: var(--thinking-indicator-avatar-loader-size, 1rem);}\n\n /* The chevron lives in the same flex cluster as the label so it hugs the text\n immediately, instead of drifting to the far edge of the toggle button. */.label-cluster.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-arrow-gap, 0.125rem);min-width:0;}.status-label.svelte-uzfrw6 {flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;font-size:var(--thinking-indicator-font-size, 0.75rem);line-height:var(--thinking-indicator-line-height, 1.25rem);color:var(--thinking-indicator-label-color, #858585);background:var(\n --thinking-indicator-shimmer-gradient,\n linear-gradient(90deg, #858585 0%, #bebebe 50%, #858585 100%)\n );background-size:200% 100%;background-clip:text;-webkit-text-fill-color:transparent;\n animation: svelte-uzfrw6-thinking-indicator-shimmer var(--thinking-indicator-shimmer-duration, 2s) linear\n infinite;}\n\n /* A settled label (no live busy phase) holds still instead of shimmering. */.static-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-label-color, #858585);}\n\n /* ---- chip variant: a self-contained floating pill (no ancestor supplies\n background/layout, unlike bare) — deliberately not `width: 100%`/box-sizing\n from `.thinking-indicator`, since a pill hugs its content. */.thinking-indicator-chip.svelte-uzfrw6 {box-sizing:border-box;display:inline-flex;align-items:center;gap:var(--thinking-indicator-chip-gap, 8px);width:fit-content;padding:var(--thinking-indicator-chip-padding, 8px 14px);background:var(--thinking-indicator-chip-background, #ffffff);border:var(--thinking-indicator-chip-border, 1px solid #e4e4e7);border-radius:var(--thinking-indicator-chip-border-radius, 999px);box-shadow:var(--thinking-indicator-chip-box-shadow, 0 6px 20px rgba(0, 0, 0, 0.08));max-width:var(--thinking-indicator-chip-max-width, 100%);}.chip-icon.svelte-uzfrw6 {display:inline-flex;align-items:center;flex-shrink:0;color:var(--thinking-indicator-chip-icon-color, currentColor);--loader-foreground: var(--thinking-indicator-chip-spinner-color, currentColor);--loader-foreground-end: var(--thinking-indicator-chip-spinner-color-end, transparent);--loader-width: var(--thinking-indicator-chip-spinner-size, 14px);--loader-height: var(--thinking-indicator-chip-spinner-size, 14px);--loader-before-width: 7px;--loader-before-height: 7px;--loader-after-width: 11px;--loader-after-height: 11px;--loader-background: var(--thinking-indicator-chip-background, #ffffff);}.chip-label.svelte-uzfrw6 {flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--thinking-indicator-chip-font-size, 0.85rem);font-weight:var(--thinking-indicator-chip-font-weight, 500);color:var(--thinking-indicator-chip-color, #52525b);background:var(\n --thinking-indicator-chip-shimmer-gradient,\n linear-gradient(90deg, #52525b 0%, #a0a0a0 50%, #52525b 100%)\n );background-size:200% 100%;background-clip:text;-webkit-text-fill-color:transparent;\n animation: svelte-uzfrw6-thinking-indicator-shimmer var(--thinking-indicator-chip-shimmer-duration, 2s) linear\n infinite;}\n\n /* Chip defaults to a static label (unlike the default/bare variants) since it\n mirrors ChatToolStatus, which never shimmered — pass `busy` explicitly to\n opt in. Higher specificity than the generic `.static-label` rule above, so\n it correctly overrides with the chip's own color token, not the default\n variant's. */.chip-label.static-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-chip-color, #52525b);}.arrow.svelte-uzfrw6 {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--thinking-indicator-arrow-size, 1rem);height:var(--thinking-indicator-arrow-size, 1rem);color:var(--thinking-indicator-arrow-color, #7a7a7a);transform:rotate(-90deg);transition:var(--thinking-indicator-arrow-transition, transform 0.2s ease-in-out);}.arrow.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:100%;height:100%;}.arrow.expanded.svelte-uzfrw6 {transform:rotate(0deg);}.detail.svelte-uzfrw6 {margin:0;padding-top:var(--thinking-indicator-detail-padding-top, 0.5rem);font-size:var(--thinking-indicator-detail-font-size, 0.875rem);line-height:var(--thinking-indicator-detail-line-height, 1.5);\n /* Resting text, not the shimmer highlight — needs its own readable default\n rather than reusing the shimmer's light sweep color. Matches\n --thinking-indicator-trace-prose-color, the same prose-at-rest ink used\n for the reasoning trace's paragraph rows. */color:var(--thinking-indicator-detail-color, #6b6b6b);text-align:left;}.elapsed.svelte-uzfrw6 {flex-shrink:0;font-variant-numeric:tabular-nums;color:var(--thinking-indicator-elapsed-color, #4b5563);font-size:var(--thinking-indicator-elapsed-font-size, 0.75rem);}\n\n /* ---- Trace body (rows?: ThinkingIndicatorTraceRow[]) ---- */\n\n /* Wrapper exists only to carry `inert` while the Accordion has it collapsed —\n no box of its own, so it can't disturb the detail/trace layout it wraps. */.thinking-indicator-body.svelte-uzfrw6 {display:contents;}.trace-query-wrap.svelte-uzfrw6 {display:inline-flex;margin:var(--thinking-indicator-trace-query-margin, 10px 0 0);--pill-width: auto;--pill-justify-content: flex-start;--pill-cursor: default;--pill-gap: 6px;--pill-background: var(--thinking-indicator-trace-query-background, #f1f1f1);--pill-color: var(--thinking-indicator-trace-query-color, #6b6b6b);--pill-border-radius: var(--thinking-indicator-trace-query-radius, 999px);--pill-padding: var(--thinking-indicator-trace-query-padding, 3px 11px);--pill-font-size: var(--thinking-indicator-trace-query-font-size, 0.8125rem);--pill-font-weight: 400;}.trace-query-wrap.svelte-uzfrw6 svg {width:11px;height:11px;}.trace-body.svelte-uzfrw6 {display:flex;gap:var(--thinking-indicator-trace-body-gap, 12px);padding-top:var(--thinking-indicator-trace-body-padding-top, 10px);}.trace-connector.svelte-uzfrw6 {width:2px;border-radius:999px;background:var(--thinking-indicator-trace-connector-color, #dcdcdc);margin-left:6px;flex-shrink:0;transition:height 500ms var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1));}.trace-rows.svelte-uzfrw6 {flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--thinking-indicator-trace-row-gap, 7px);align-self:flex-start;}.trace-row.svelte-uzfrw6 {display:flex;align-items:baseline;gap:8px;font-size:var(--thinking-indicator-trace-row-font-size, 0.8125rem);color:var(--thinking-indicator-trace-row-color, #2b2b2b);\n animation: svelte-uzfrw6-thinking-indicator-fade-up 320ms\n var(--thinking-indicator-trace-ease, cubic-bezier(0.23, 1, 0.32, 1)) both;text-decoration:none;}.trace-row.prose.svelte-uzfrw6 {color:var(--thinking-indicator-trace-prose-color, #6b6b6b);}.trace-row.selectable.svelte-uzfrw6 {border:none;background:none;font:inherit;text-align:left;padding:3px 6px;margin:-3px -6px;border-radius:var(--thinking-indicator-trace-row-radius, 6px);cursor:pointer;transition:background\n var(--thinking-indicator-trace-row-transition-duration, var(--motion-duration, 150ms))\n var(--thinking-indicator-trace-row-transition-easing, var(--motion-easing, ease));width:calc(100% + 12px);}.trace-row.selectable.svelte-uzfrw6:hover {background:var(--thinking-indicator-trace-row-hover-background, #f4f4f4);}.trace-row.selectable.selected.svelte-uzfrw6 {background:var(--thinking-indicator-trace-row-selected-background, #ececec);}.trace-row.linked.svelte-uzfrw6:hover .row-primary:where(.svelte-uzfrw6) {text-decoration:underline;}.row-primary.svelte-uzfrw6 {font-weight:var(--thinking-indicator-trace-row-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.row-secondary.svelte-uzfrw6 {color:var(--thinking-indicator-trace-secondary-color, #4b5563);font-size:var(--thinking-indicator-trace-secondary-font-size, 0.75rem);white-space:nowrap;}.row-secondary.mono.svelte-uzfrw6 {font-family:var(--thinking-indicator-trace-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Steps kind: a static check icon, or — on the frontier row while busy — the\n library Loader, recoloured/resized to match the row's small icon footprint. */.row-icon.svelte-uzfrw6 {display:inline-flex;align-self:center;width:14px;flex-shrink:0;color:var(--thinking-indicator-trace-icon-color, #9a9a9a);--loader-width: var(--thinking-indicator-trace-spinner-size, 11px);--loader-height: var(--thinking-indicator-trace-spinner-size, 11px);--loader-before-width: 5px;--loader-before-height: 5px;--loader-after-width: 8px;--loader-after-height: 8px;--loader-foreground: var(--thinking-indicator-trace-spinner-color, #6b6b6b);--loader-foreground-end: var(--thinking-indicator-trace-spinner-color-end, transparent);--loader-background: var(--thinking-indicator-trace-spinner-track-color, #dcdcdc);}.row-icon.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:12px;height:12px;}.row-badge.svelte-uzfrw6 {width:15px;height:15px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--thinking-indicator-trace-badge-check-color, #fff);flex-shrink:0;align-self:center;}.row-badge[data-tone='1'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-1, #2f6fec);}.row-badge[data-tone='2'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-2, #e56d24);}.row-badge[data-tone='3'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-3, #1f7a5f);}.row-badge.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:9px;height:9px;}.row-diffstat.svelte-uzfrw6 {margin-left:auto;font-family:var(--thinking-indicator-trace-mono-font, ui-monospace, Menlo, monospace);font-size:0.75rem;font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex;gap:5px;}.row-diffstat.svelte-uzfrw6 .added:where(.svelte-uzfrw6) {color:var(--thinking-indicator-trace-added-color, #1f7a5f);}.row-diffstat.svelte-uzfrw6 .removed:where(.svelte-uzfrw6) {color:var(--thinking-indicator-trace-removed-color, #c93f38);}.trace-more.svelte-uzfrw6 {font-size:var(--thinking-indicator-trace-more-font-size, 0.75rem);color:var(--thinking-indicator-trace-more-color, #9a9a9a);padding:6px 0 0 22px;\n animation: svelte-uzfrw6-thinking-indicator-fade-in\n var(--thinking-indicator-trace-more-animation-duration, var(--motion-duration, 300ms))\n var(--thinking-indicator-trace-more-animation-easing, var(--motion-easing, ease)) both;}\n\n @media (prefers-reduced-motion: reduce) {.status-label.svelte-uzfrw6,\n .chip-label.svelte-uzfrw6,\n .trace-row.svelte-uzfrw6,\n .trace-more.svelte-uzfrw6 {animation-duration:0.001s;}.expandable.svelte-uzfrw6,\n .trace-connector.svelte-uzfrw6,\n .arrow.svelte-uzfrw6 {transition-duration:0.001s;}.status-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-label-color, #858585);}.chip-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-chip-color, #52525b);}\n }"
52054
+ code: "\n @keyframes svelte-uzfrw6-thinking-indicator-shimmer {\n 0% {\n background-position: 200% 0;\n }\n\n 100% {\n background-position: -200% 0;\n }\n }\n\n @keyframes svelte-uzfrw6-thinking-indicator-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }\n\n @keyframes svelte-uzfrw6-thinking-indicator-fade-in {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }.thinking-indicator.svelte-uzfrw6 {box-sizing:border-box;width:100%;}.expandable.svelte-uzfrw6 {border-bottom:var(--thinking-indicator-border-bottom, 1px solid #e4e4e7);padding-block:var(--thinking-indicator-padding-block, 0.5rem);margin-bottom:var(--thinking-indicator-margin-bottom, 1rem);min-height:0;transition:min-height 400ms\n var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)));}.expandable.busy.svelte-uzfrw6 {min-height:var(--thinking-indicator-trace-busy-min-height, 0px);}.toggle.svelte-uzfrw6 {width:100%;--button-color: transparent;--button-border: none;--button-box-shadow: none;--button-hover-box-shadow: none;--button-active-box-shadow: none;--button-width: 100%;--button-padding: 0;--button-justify-content: flex-start;--button-text-color: inherit;--button-content-gap: var(--thinking-indicator-header-gap, 0.375rem);}\n\n /* A flex ROW host makes the inner status-row hug its content, so the shimmer\n gradient maps to the text's own width rather than the full container. Neither\n form stretches to fill the width — a trailing gap after a short label is real\n empty space, not a reserved box, so nothing pushes the elapsed counter away. */.status-host.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-header-gap, 0.375rem);}.status-row.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-gap, 0.25rem);min-width:0;}.avatar.svelte-uzfrw6 {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--thinking-indicator-avatar-size, 1.5rem);height:var(--thinking-indicator-avatar-size, 1.5rem);--loader-width: var(--thinking-indicator-avatar-loader-size, 1rem);--loader-height: var(--thinking-indicator-avatar-loader-size, 1rem);}\n\n /* The chevron lives in the same flex cluster as the label so it hugs the text\n immediately, instead of drifting to the far edge of the toggle button. */.label-cluster.svelte-uzfrw6 {display:flex;align-items:center;gap:var(--thinking-indicator-arrow-gap, 0.125rem);min-width:0;}.status-label.svelte-uzfrw6 {flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;font-size:var(--thinking-indicator-font-size, 0.75rem);line-height:var(--thinking-indicator-line-height, 1.25rem);color:var(--thinking-indicator-label-color, #858585);background:var(\n --thinking-indicator-shimmer-gradient,\n linear-gradient(90deg, #858585 0%, #bebebe 50%, #858585 100%)\n );background-size:200% 100%;background-clip:text;-webkit-text-fill-color:transparent;\n animation: svelte-uzfrw6-thinking-indicator-shimmer var(--thinking-indicator-shimmer-duration, 2s) linear\n infinite;}\n\n /* A settled label (no live busy phase) holds still instead of shimmering. */.static-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-label-color, #858585);}\n\n /* ---- chip variant: a self-contained floating pill (no ancestor supplies\n background/layout, unlike bare) — deliberately not `width: 100%`/box-sizing\n from `.thinking-indicator`, since a pill hugs its content. */.thinking-indicator-chip.svelte-uzfrw6 {box-sizing:border-box;display:inline-flex;align-items:center;gap:var(--thinking-indicator-chip-gap, 8px);width:fit-content;padding:var(--thinking-indicator-chip-padding, 8px 14px);background:var(--thinking-indicator-chip-background, #ffffff);border:var(--thinking-indicator-chip-border, 1px solid #e4e4e7);border-radius:var(--thinking-indicator-chip-border-radius, 999px);box-shadow:var(--thinking-indicator-chip-box-shadow, 0 6px 20px rgba(0, 0, 0, 0.08));max-width:var(--thinking-indicator-chip-max-width, 100%);}.chip-icon.svelte-uzfrw6 {display:inline-flex;align-items:center;flex-shrink:0;color:var(--thinking-indicator-chip-icon-color, currentColor);--loader-foreground: var(--thinking-indicator-chip-spinner-color, currentColor);--loader-foreground-end: var(--thinking-indicator-chip-spinner-color-end, transparent);--loader-width: var(--thinking-indicator-chip-spinner-size, 14px);--loader-height: var(--thinking-indicator-chip-spinner-size, 14px);--loader-before-width: 7px;--loader-before-height: 7px;--loader-after-width: 11px;--loader-after-height: 11px;--loader-background: var(--thinking-indicator-chip-background, #ffffff);}.chip-label.svelte-uzfrw6 {flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--thinking-indicator-chip-font-size, 0.85rem);font-weight:var(--thinking-indicator-chip-font-weight, 500);color:var(--thinking-indicator-chip-color, #52525b);background:var(\n --thinking-indicator-chip-shimmer-gradient,\n linear-gradient(90deg, #52525b 0%, #a0a0a0 50%, #52525b 100%)\n );background-size:200% 100%;background-clip:text;-webkit-text-fill-color:transparent;\n animation: svelte-uzfrw6-thinking-indicator-shimmer var(--thinking-indicator-chip-shimmer-duration, 2s) linear\n infinite;}\n\n /* Chip defaults to a static label (unlike the default/bare variants) since it\n mirrors ChatToolStatus, which never shimmered — pass `busy` explicitly to\n opt in. Higher specificity than the generic `.static-label` rule above, so\n it correctly overrides with the chip's own color token, not the default\n variant's. */.chip-label.static-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-chip-color, #52525b);}.arrow.svelte-uzfrw6 {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--thinking-indicator-arrow-size, 1rem);height:var(--thinking-indicator-arrow-size, 1rem);color:var(--thinking-indicator-arrow-color, #7a7a7a);transform:rotate(-90deg);transition:var(--thinking-indicator-arrow-transition, transform 0.2s ease-in-out);}.arrow.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:100%;height:100%;}.arrow.expanded.svelte-uzfrw6 {transform:rotate(0deg);}.detail.svelte-uzfrw6 {margin:0;padding-top:var(--thinking-indicator-detail-padding-top, 0.5rem);font-size:var(--thinking-indicator-detail-font-size, 0.875rem);line-height:var(--thinking-indicator-detail-line-height, 1.5);\n /* Resting text, not the shimmer highlight — needs its own readable default\n rather than reusing the shimmer's light sweep color. Matches\n --thinking-indicator-trace-prose-color, the same prose-at-rest ink used\n for the reasoning trace's paragraph rows. */color:var(--thinking-indicator-detail-color, #6b6b6b);text-align:left;}.elapsed.svelte-uzfrw6 {flex-shrink:0;font-variant-numeric:tabular-nums;color:var(--thinking-indicator-elapsed-color, #4b5563);font-size:var(--thinking-indicator-elapsed-font-size, 0.75rem);}\n\n /* ---- Trace body (rows?: ThinkingIndicatorTraceRow[]) ---- */\n\n /* Wrapper exists only to carry `inert` while the Accordion has it collapsed —\n no box of its own, so it can't disturb the detail/trace layout it wraps. */.thinking-indicator-body.svelte-uzfrw6 {display:contents;}.trace-query-wrap.svelte-uzfrw6 {display:inline-flex;margin:var(--thinking-indicator-trace-query-margin, 10px 0 0);--pill-width: auto;--pill-justify-content: flex-start;--pill-cursor: default;--pill-gap: 6px;--pill-background: var(--thinking-indicator-trace-query-background, #f1f1f1);--pill-color: var(--thinking-indicator-trace-query-color, #6b6b6b);--pill-border-radius: var(--thinking-indicator-trace-query-radius, 999px);--pill-padding: var(--thinking-indicator-trace-query-padding, 3px 11px);--pill-font-size: var(--thinking-indicator-trace-query-font-size, 0.8125rem);--pill-font-weight: 400;}.trace-query-wrap.svelte-uzfrw6 svg {width:11px;height:11px;}.trace-body.svelte-uzfrw6 {display:flex;gap:var(--thinking-indicator-trace-body-gap, 12px);padding-top:var(--thinking-indicator-trace-body-padding-top, 10px);}.trace-connector.svelte-uzfrw6 {width:2px;border-radius:999px;background:var(--thinking-indicator-trace-connector-color, #dcdcdc);margin-left:6px;flex-shrink:0;transition:height 500ms\n var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)));}.trace-rows.svelte-uzfrw6 {flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--thinking-indicator-trace-row-gap, 7px);align-self:flex-start;}.trace-row.svelte-uzfrw6 {display:flex;align-items:baseline;gap:8px;font-size:var(--thinking-indicator-trace-row-font-size, 0.8125rem);color:var(--thinking-indicator-trace-row-color, #2b2b2b);\n animation: svelte-uzfrw6-thinking-indicator-fade-up 320ms\n var(--thinking-indicator-trace-ease, var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1)))\n both;text-decoration:none;}.trace-row.prose.svelte-uzfrw6 {color:var(--thinking-indicator-trace-prose-color, #6b6b6b);}.trace-row.selectable.svelte-uzfrw6 {border:none;background:none;font:inherit;text-align:left;padding:3px 6px;margin:-3px -6px;border-radius:var(--thinking-indicator-trace-row-radius, 6px);cursor:pointer;transition:background\n var(--thinking-indicator-trace-row-transition-duration, var(--motion-duration, 150ms))\n var(--thinking-indicator-trace-row-transition-easing, var(--motion-easing, ease));width:calc(100% + 12px);}.trace-row.selectable.svelte-uzfrw6:hover {background:var(--thinking-indicator-trace-row-hover-background, #f4f4f4);}.trace-row.selectable.selected.svelte-uzfrw6 {background:var(--thinking-indicator-trace-row-selected-background, #ececec);}.trace-row.linked.svelte-uzfrw6:hover .row-primary:where(.svelte-uzfrw6) {text-decoration:underline;}.row-primary.svelte-uzfrw6 {font-weight:var(--thinking-indicator-trace-row-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.row-secondary.svelte-uzfrw6 {color:var(--thinking-indicator-trace-secondary-color, #4b5563);font-size:var(--thinking-indicator-trace-secondary-font-size, 0.75rem);white-space:nowrap;}.row-secondary.mono.svelte-uzfrw6 {font-family:var(--thinking-indicator-trace-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Steps kind: a static check icon, or — on the frontier row while busy — the\n library Loader, recoloured/resized to match the row's small icon footprint. */.row-icon.svelte-uzfrw6 {display:inline-flex;align-self:center;width:14px;flex-shrink:0;color:var(--thinking-indicator-trace-icon-color, #9a9a9a);--loader-width: var(--thinking-indicator-trace-spinner-size, 11px);--loader-height: var(--thinking-indicator-trace-spinner-size, 11px);--loader-before-width: 5px;--loader-before-height: 5px;--loader-after-width: 8px;--loader-after-height: 8px;--loader-foreground: var(--thinking-indicator-trace-spinner-color, #6b6b6b);--loader-foreground-end: var(--thinking-indicator-trace-spinner-color-end, transparent);--loader-background: var(--thinking-indicator-trace-spinner-track-color, #dcdcdc);}.row-icon.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:12px;height:12px;}.row-badge.svelte-uzfrw6 {width:15px;height:15px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;color:var(--thinking-indicator-trace-badge-check-color, #fff);flex-shrink:0;align-self:center;}.row-badge[data-tone='1'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-1, #2f6fec);}.row-badge[data-tone='2'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-2, #e56d24);}.row-badge[data-tone='3'].svelte-uzfrw6 {background:var(--thinking-indicator-trace-tone-3, #1f7a5f);}.row-badge.svelte-uzfrw6 svg:where(.svelte-uzfrw6) {width:9px;height:9px;}.row-diffstat.svelte-uzfrw6 {margin-left:auto;font-family:var(--thinking-indicator-trace-mono-font, ui-monospace, Menlo, monospace);font-size:0.75rem;font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex;gap:5px;}.row-diffstat.svelte-uzfrw6 .added:where(.svelte-uzfrw6) {color:var(--thinking-indicator-trace-added-color, #1f7a5f);}.row-diffstat.svelte-uzfrw6 .removed:where(.svelte-uzfrw6) {color:var(--thinking-indicator-trace-removed-color, #c93f38);}.trace-more.svelte-uzfrw6 {font-size:var(--thinking-indicator-trace-more-font-size, 0.75rem);color:var(--thinking-indicator-trace-more-color, #9a9a9a);padding:6px 0 0 22px;\n animation: svelte-uzfrw6-thinking-indicator-fade-in\n var(--thinking-indicator-trace-more-animation-duration, var(--motion-duration, 300ms))\n var(--thinking-indicator-trace-more-animation-easing, var(--motion-easing, ease)) both;}\n\n @media (prefers-reduced-motion: reduce) {.status-label.svelte-uzfrw6,\n .chip-label.svelte-uzfrw6,\n .trace-row.svelte-uzfrw6,\n .trace-more.svelte-uzfrw6 {animation-duration:0.001s;}.expandable.svelte-uzfrw6,\n .trace-connector.svelte-uzfrw6,\n .arrow.svelte-uzfrw6 {transition-duration:0.001s;}.status-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-label-color, #858585);}.chip-label.svelte-uzfrw6 {\n animation: none;-webkit-text-fill-color:var(--thinking-indicator-chip-color, #52525b);}\n }"
51860
52055
  };
51861
52056
  function ThinkingIndicator(e, t) {
51862
52057
  push(t, !0), append_styles$1(e, $$css$30);
@@ -54175,7 +54370,7 @@ customElements.define("sui-chat-tool-status", create_custom_element(ChatToolStat
54175
54370
  //#region src/lib/assets/chat.svg?raw
54176
54371
  var chat_default = "<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\" />\n</svg>\n", root_1$6 = /* @__PURE__ */ from_html("<div class=\"panel svelte-15b7gm8\" role=\"dialog\" tabindex=\"-1\"><!></div>"), root_2$4 = /* @__PURE__ */ from_html("<div class=\"panel-anchor svelte-15b7gm8\"><!></div>"), root_3$4 = /* @__PURE__ */ from_html("<div><!> <div class=\"launcher svelte-15b7gm8\"><!></div></div>"), $$css$18 = {
54177
54372
  hash: "svelte-15b7gm8",
54178
- code: ".chat-bubble.svelte-15b7gm8 {position:fixed;z-index:var(--chat-bubble-z-index, 1000);transition:var(--chat-bubble-snap-transition, transform 0.28s cubic-bezier(0.22, 1, 0.36, 1));}.chat-bubble.dragging.svelte-15b7gm8 {transition:none;}.chat-bubble[data-position='bottom-right'].svelte-15b7gm8 {right:var(--chat-bubble-offset-x, 24px);bottom:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='bottom-left'].svelte-15b7gm8 {left:var(--chat-bubble-offset-x, 24px);bottom:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='top-right'].svelte-15b7gm8 {right:var(--chat-bubble-offset-x, 24px);top:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='top-left'].svelte-15b7gm8 {left:var(--chat-bubble-offset-x, 24px);top:var(--chat-bubble-offset-y, 24px);}.panel-anchor.svelte-15b7gm8 {position:absolute;--resizable-handle-color: var(--chat-bubble-resize-handle-color, transparent);--resizable-transition: var(\n --chat-bubble-expand-transition,\n width 0.32s cubic-bezier(0.22, 1, 0.36, 1),\n height 0.32s cubic-bezier(0.22, 1, 0.36, 1)\n );}.chat-bubble[data-effective-vertical='bottom'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {bottom:calc(100% + var(--chat-bubble-panel-gap, 16px));}.chat-bubble[data-effective-vertical='top'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {top:calc(100% + var(--chat-bubble-panel-gap, 16px));}.chat-bubble[data-effective-side='right'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {right:0;}.chat-bubble[data-effective-side='left'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {left:0;}.panel.svelte-15b7gm8 {box-sizing:border-box;width:100%;height:100%;max-width:var(--chat-bubble-panel-max-width, calc(100vw - 32px));max-height:var(--chat-bubble-panel-max-height, calc(100dvh - 120px));border-radius:var(--chat-bubble-panel-border-radius, 16px);overflow:hidden;background:var(--chat-bubble-panel-background, #ffffff);box-shadow:var(--chat-bubble-panel-box-shadow, 0 16px 48px rgba(0, 0, 0, 0.22));outline:none;}\n\n /* setOpen() (see script) calls panel.focus() directly on open, and the panel\n -- not a child -- is the Tab-trap's own boundary, so removing its outline\n unconditionally left a keyboard user with no visible sign focus had moved\n into the launcher's panel at all. :focus-visible restores a ring only for\n keyboard/programmatic focus, so the launcher click that opens the panel\n shows nothing new. Matches Sheet's sheet-panel fix for the identical\n shape of problem. */.panel.svelte-15b7gm8:focus-visible {outline:var(--chat-bubble-panel-focus-outline, 2px solid #2563eb);outline-offset:var(--chat-bubble-panel-focus-outline-offset, -2px);}.launcher.svelte-15b7gm8 {--button-width: var(--chat-bubble-width, var(--chat-bubble-size, 56px));--button-height: var(--chat-bubble-height, var(--chat-bubble-size, 56px));--button-padding: var(--chat-bubble-padding, 16px);--button-border-radius: var(--chat-bubble-border-radius, 50%);--button-color: var(--chat-bubble-background-color, #18181b);--button-text-color: var(--chat-bubble-color, #ffffff);\n /* Button spaces its icon from its label with this gap. The launcher renders an\n icon alone inside a circle, so that gap would push the glyph off-centre --\n reset to 0 here rather than in Button, whose default is right for a labelled\n button. docs/ChatBubble.md records this as a pill-launcher caveat. */--button-content-gap: 0px;--button-box-shadow: var(--chat-bubble-box-shadow, 0 8px 24px rgba(0, 0, 0, 0.25));--button-hover-color: var(--chat-bubble-hover-background-color, #27272a);}.chat-bubble.is-draggable.svelte-15b7gm8 .launcher:where(.svelte-15b7gm8) {--cursor: grab;touch-action:none;}.chat-bubble.is-draggable.dragging.svelte-15b7gm8 .launcher:where(.svelte-15b7gm8) {--cursor: grabbing;}.launcher.svelte-15b7gm8 svg {height:100%;width:100%;}\n\n @media (prefers-reduced-motion: reduce) {.chat-bubble.svelte-15b7gm8 {transition:none;}\n }"
54373
+ code: ".chat-bubble.svelte-15b7gm8 {position:fixed;z-index:var(--chat-bubble-z-index, 1000);transition:var(\n --chat-bubble-snap-transition,\n transform 0.28s\n var(\n --chat-bubble-snap-transition-easing,\n var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1))\n )\n );}.chat-bubble.dragging.svelte-15b7gm8 {transition:none;}.chat-bubble[data-position='bottom-right'].svelte-15b7gm8 {right:var(--chat-bubble-offset-x, 24px);bottom:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='bottom-left'].svelte-15b7gm8 {left:var(--chat-bubble-offset-x, 24px);bottom:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='top-right'].svelte-15b7gm8 {right:var(--chat-bubble-offset-x, 24px);top:var(--chat-bubble-offset-y, 24px);}.chat-bubble[data-position='top-left'].svelte-15b7gm8 {left:var(--chat-bubble-offset-x, 24px);top:var(--chat-bubble-offset-y, 24px);}.panel-anchor.svelte-15b7gm8 {position:absolute;--resizable-handle-color: var(--chat-bubble-resize-handle-color, transparent);--resizable-transition: var(\n --chat-bubble-expand-transition,\n width 0.32s\n var(\n --chat-bubble-expand-transition-easing,\n var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1))\n ),\n height 0.32s\n var(\n --chat-bubble-expand-transition-easing,\n var(--ease-smooth-out, cubic-bezier(0.23, 1, 0.32, 1))\n )\n );}.chat-bubble[data-effective-vertical='bottom'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {bottom:calc(100% + var(--chat-bubble-panel-gap, 16px));}.chat-bubble[data-effective-vertical='top'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {top:calc(100% + var(--chat-bubble-panel-gap, 16px));}.chat-bubble[data-effective-side='right'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {right:0;}.chat-bubble[data-effective-side='left'].svelte-15b7gm8 .panel-anchor:where(.svelte-15b7gm8) {left:0;}.panel.svelte-15b7gm8 {box-sizing:border-box;width:100%;height:100%;max-width:var(--chat-bubble-panel-max-width, calc(100vw - 32px));max-height:var(--chat-bubble-panel-max-height, calc(100dvh - 120px));border-radius:var(--chat-bubble-panel-border-radius, 16px);overflow:hidden;background:var(--chat-bubble-panel-background, #ffffff);box-shadow:var(--chat-bubble-panel-box-shadow, 0 16px 48px rgba(0, 0, 0, 0.22));outline:none;}\n\n /* setOpen() (see script) calls panel.focus() directly on open, and the panel\n -- not a child -- is the Tab-trap's own boundary, so removing its outline\n unconditionally left a keyboard user with no visible sign focus had moved\n into the launcher's panel at all. :focus-visible restores a ring only for\n keyboard/programmatic focus, so the launcher click that opens the panel\n shows nothing new. Matches Sheet's sheet-panel fix for the identical\n shape of problem. */.panel.svelte-15b7gm8:focus-visible {outline:var(--chat-bubble-panel-focus-outline, 2px solid #2563eb);outline-offset:var(--chat-bubble-panel-focus-outline-offset, -2px);}.launcher.svelte-15b7gm8 {--button-width: var(--chat-bubble-width, var(--chat-bubble-size, 56px));--button-height: var(--chat-bubble-height, var(--chat-bubble-size, 56px));--button-padding: var(--chat-bubble-padding, 16px);--button-border-radius: var(--chat-bubble-border-radius, 50%);--button-color: var(--chat-bubble-background-color, #18181b);--button-text-color: var(--chat-bubble-color, #ffffff);\n /* Button spaces its icon from its label with this gap. The launcher renders an\n icon alone inside a circle, so that gap would push the glyph off-centre --\n reset to 0 here rather than in Button, whose default is right for a labelled\n button. docs/ChatBubble.md records this as a pill-launcher caveat. */--button-content-gap: 0px;--button-box-shadow: var(--chat-bubble-box-shadow, 0 8px 24px rgba(0, 0, 0, 0.25));--button-hover-color: var(--chat-bubble-hover-background-color, #27272a);}.chat-bubble.is-draggable.svelte-15b7gm8 .launcher:where(.svelte-15b7gm8) {--cursor: grab;touch-action:none;}.chat-bubble.is-draggable.dragging.svelte-15b7gm8 .launcher:where(.svelte-15b7gm8) {--cursor: grabbing;}.launcher.svelte-15b7gm8 svg {height:100%;width:100%;}\n\n @media (prefers-reduced-motion: reduce) {.chat-bubble.svelte-15b7gm8 {transition:none;}\n }"
54179
54374
  };
54180
54375
  function ChatBubble(e, t) {
54181
54376
  push(t, !0), append_styles$1(e, $$css$18);
@@ -54714,7 +54909,7 @@ var diffstatBadges = (e, t = noop) => {
54714
54909
  }), append(e, n);
54715
54910
  }, root_1$5 = /* @__PURE__ */ from_html("<span class=\"diffstat-pill diffstat-added svelte-1vnfzde\"><!></span>"), root_2$3 = /* @__PURE__ */ from_html("<span class=\"diffstat-pill diffstat-removed svelte-1vnfzde\"><!></span>"), root_3$3 = /* @__PURE__ */ from_html("<!> <!>", 1), root_4$3 = /* @__PURE__ */ from_html("<span class=\"chip-spinner svelte-1vnfzde\" aria-hidden=\"true\"><!></span>"), root_5$2 = /* @__PURE__ */ from_html("<span> </span>"), root_6$2 = /* @__PURE__ */ from_html("<span class=\"diffstat chip-diffstat svelte-1vnfzde\"><!></span>"), root_7$2 = /* @__PURE__ */ from_html("<span class=\"diffstat popover-diffstat svelte-1vnfzde\"><!></span>"), root_8$2 = /* @__PURE__ */ from_html("<div class=\"chip-popover svelte-1vnfzde\" role=\"dialog\" tabindex=\"-1\"><p> </p> <!></div>"), root_9$1 = /* @__PURE__ */ from_html("<div class=\"chip-wrap\"><button type=\"button\"><!> <b class=\"chip-label svelte-1vnfzde\"> </b> <!> <!></button> <!></div>"), root_10$1 = /* @__PURE__ */ from_html("<div></div>"), $$css$16 = {
54716
54911
  hash: "svelte-1vnfzde",
54717
- code: "\n @keyframes svelte-1vnfzde-tool-call-log-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }.tool-call-log.svelte-1vnfzde {display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--tool-call-log-gap, 8px);}\n\n /* Bespoke <button> markup (Pill's root is a non-interactive <div> and can't carry\n aria-expanded/button semantics — see docs), but its sizing recipe is deliberately\n pulled from Pill's own tokens (line-height, cursor) so it reads as the same family\n of control as the diffstat Pill badges nested inside it. */.chip.svelte-1vnfzde {display:inline-flex;align-items:center;gap:var(--tool-call-log-chip-gap, 6px);padding:var(--tool-call-log-chip-padding, 6px 10px);background:var(--tool-call-log-chip-background, #fafafa);border:var(--tool-call-log-chip-border, 1px solid #e4e4e7);border-radius:var(--tool-call-log-chip-radius, 6px);font:inherit;font-size:var(--tool-call-log-font-size, 0.8125rem);line-height:var(--tool-call-log-chip-line-height, 1);color:var(--tool-call-log-label-color, #2b2b2b);cursor:var(--tool-call-log-chip-cursor, pointer);max-width:100%;\n animation: svelte-1vnfzde-tool-call-log-fade-up\n var(--tool-call-log-chip-animation-duration, var(--motion-duration, 320ms))\n var(--tool-call-log-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;transition:background var(--tool-call-log-chip-transition-duration, var(--motion-duration, 150ms))\n var(--tool-call-log-chip-transition-easing, var(--motion-easing, ease)),\n border-color var(--tool-call-log-chip-transition-duration, var(--motion-duration, 150ms))\n var(--tool-call-log-chip-transition-easing, var(--motion-easing, ease));}.chip.svelte-1vnfzde:hover {background:var(--tool-call-log-chip-hover-background, #f1f1f1);}.chip[aria-expanded='true'].svelte-1vnfzde {border-color:var(--tool-call-log-chip-open-border-color, #c7c7cc);}.chip.error.svelte-1vnfzde {color:var(--tool-call-log-error-color, #9f2d27);border-color:var(--tool-call-log-error-border-color, #f2b8b5);background:var(--tool-call-log-error-background, #fdf1f0);}.chip.error.svelte-1vnfzde:hover {background:var(--tool-call-log-error-hover-background, #fbe6e5);}.chip-label.svelte-1vnfzde {font-weight:var(--tool-call-log-label-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chip-meta.svelte-1vnfzde {color:var(--tool-call-log-meta-color, #666666);font-size:var(--tool-call-log-meta-font-size, 0.75rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chip-meta.mono.svelte-1vnfzde {font-family:var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Sizes and colors the nested library Loader via CSS custom-property\n inheritance (no :global() needed — Loader is a plain DOM descendant of\n this span, same pattern as ThinkingIndicator's `.avatar`). Loader itself\n ships no literal fallback for --loader-foreground/-foreground-end/\n -background, so all three are set explicitly here rather than left to\n chance. */.chip-spinner.svelte-1vnfzde {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;--loader-width: var(--tool-call-log-spinner-size, 11px);--loader-height: var(--tool-call-log-spinner-size, 11px);--loader-before-width: 5px;--loader-before-height: 5px;--loader-after-width: 8px;--loader-after-height: 8px;--loader-foreground: var(--tool-call-log-spinner-color, #6b6b6b);--loader-foreground-end: var(--tool-call-log-spinner-track-color, #dcdcdc);--loader-background: var(--tool-call-log-chip-background, #fafafa);}.diffstat.svelte-1vnfzde {display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums;flex-shrink:0;}.chip-diffstat.svelte-1vnfzde {margin-left:var(--tool-call-log-diffstat-margin, 2px);}\n\n /* Pill customized into the small diffstat badge via its own --pill-* tokens\n (inherited the same way — Pill is a plain descendant of this span). Pill\n defaults `cursor` to `pointer` even when non-interactive, so it is pinned\n back to `default` here: these badges carry no onclick. */.diffstat-pill.svelte-1vnfzde {display:inline-flex;--pill-padding: var(--tool-call-log-diffstat-padding, 0 4px);--pill-border-radius: var(--tool-call-log-diffstat-radius, 4px);--pill-font-size: var(--tool-call-log-diffstat-font-size, 0.6875rem);--pill-font-family: var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);--pill-line-height: 1;--pill-cursor: default;}.diffstat-added.svelte-1vnfzde {--pill-background: var(--tool-call-log-added-background, #e4f5ee);--pill-color: var(--tool-call-log-added-color, #1f7a5f);}.diffstat-removed.svelte-1vnfzde {--pill-background: var(--tool-call-log-removed-background, #fbeceb);--pill-color: var(--tool-call-log-removed-color, #a8302a);}\n\n /* `position: fixed` is the baseline rather than a portal-only override —\n left/top/z-index come from the inline `popoverStyle`, computed against the\n live anchor rect, and that is viewport-relative in both portal modes. So\n `usePortal={false}` (see `popoverPortal`) changes only which ancestors can\n clip the popover, never how it is placed. */.chip-popover.svelte-1vnfzde {position:fixed;z-index:var(--tool-call-log-popover-z-index, 1000);display:flex;flex-direction:column;gap:var(--tool-call-log-popover-gap, 6px);min-width:var(--tool-call-log-popover-min-width, 220px);max-width:var(--tool-call-log-popover-max-width, 340px);padding:var(--tool-call-log-popover-padding, 10px 12px);background:var(--tool-call-log-popover-background, #ffffff);border:var(--tool-call-log-popover-border, 1px solid #e4e4e7);border-radius:var(--tool-call-log-popover-radius, 10px);box-shadow:var(--tool-call-log-popover-shadow, 0 10px 30px rgba(0, 0, 0, 0.12));\n animation: svelte-1vnfzde-tool-call-log-fade-up\n var(--tool-call-log-popover-animation-duration, var(--motion-duration, 200ms))\n var(--tool-call-log-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;}.popover-detail.svelte-1vnfzde {margin:0;color:var(--tool-call-log-popover-color, #2b2b2b);font-size:var(--tool-call-log-popover-font-size, 0.8125rem);white-space:pre-wrap;overflow-wrap:anywhere;}.popover-detail.mono.svelte-1vnfzde {font-family:var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);}\n\n @media (prefers-reduced-motion: reduce) {.chip.svelte-1vnfzde,\n .chip-popover.svelte-1vnfzde {animation-duration:0.001s;}\n /* Loader's own spin keyframe lives on its internally-scoped `.loader`\n class, which this file cannot reach with a plain scoped selector —\n :global() is required to disable it, same pattern as `.pill-dismiss\n :global(svg)` elsewhere in the library. Loader ships no\n reduced-motion guard of its own. */.chip-spinner.svelte-1vnfzde .loader {\n animation: none;}\n }"
54912
+ code: "\n @keyframes svelte-1vnfzde-tool-call-log-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }.tool-call-log.svelte-1vnfzde {display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--tool-call-log-gap, 8px);}\n\n /* Bespoke <button> markup (Pill's root is a non-interactive <div> and can't carry\n aria-expanded/button semantics — see docs), but its sizing recipe is deliberately\n pulled from Pill's own tokens (line-height, cursor) so it reads as the same family\n of control as the diffstat Pill badges nested inside it. */.chip.svelte-1vnfzde {display:inline-flex;align-items:center;gap:var(--tool-call-log-chip-gap, 6px);padding:var(--tool-call-log-chip-padding, 6px 10px);background:var(--tool-call-log-chip-background, #fafafa);border:var(--tool-call-log-chip-border, 1px solid #e4e4e7);border-radius:var(--tool-call-log-chip-radius, 6px);font:inherit;font-size:var(--tool-call-log-font-size, 0.8125rem);line-height:var(--tool-call-log-chip-line-height, 1);color:var(--tool-call-log-label-color, #2b2b2b);cursor:var(--tool-call-log-chip-cursor, pointer);max-width:100%;\n animation: svelte-1vnfzde-tool-call-log-fade-up\n var(--tool-call-log-chip-animation-duration, var(--motion-duration, 320ms))\n var(\n --tool-call-log-ease,\n var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))\n )\n both;transition:background var(--tool-call-log-chip-transition-duration, var(--motion-duration, 150ms))\n var(--tool-call-log-chip-transition-easing, var(--motion-easing, ease)),\n border-color var(--tool-call-log-chip-transition-duration, var(--motion-duration, 150ms))\n var(--tool-call-log-chip-transition-easing, var(--motion-easing, ease));}.chip.svelte-1vnfzde:hover {background:var(--tool-call-log-chip-hover-background, #f1f1f1);}.chip[aria-expanded='true'].svelte-1vnfzde {border-color:var(--tool-call-log-chip-open-border-color, #c7c7cc);}.chip.error.svelte-1vnfzde {color:var(--tool-call-log-error-color, #9f2d27);border-color:var(--tool-call-log-error-border-color, #f2b8b5);background:var(--tool-call-log-error-background, #fdf1f0);}.chip.error.svelte-1vnfzde:hover {background:var(--tool-call-log-error-hover-background, #fbe6e5);}.chip-label.svelte-1vnfzde {font-weight:var(--tool-call-log-label-weight, 500);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chip-meta.svelte-1vnfzde {color:var(--tool-call-log-meta-color, #666666);font-size:var(--tool-call-log-meta-font-size, 0.75rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chip-meta.mono.svelte-1vnfzde {font-family:var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Sizes and colors the nested library Loader via CSS custom-property\n inheritance (no :global() needed — Loader is a plain DOM descendant of\n this span, same pattern as ThinkingIndicator's `.avatar`). Loader itself\n ships no literal fallback for --loader-foreground/-foreground-end/\n -background, so all three are set explicitly here rather than left to\n chance. */.chip-spinner.svelte-1vnfzde {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;--loader-width: var(--tool-call-log-spinner-size, 11px);--loader-height: var(--tool-call-log-spinner-size, 11px);--loader-before-width: 5px;--loader-before-height: 5px;--loader-after-width: 8px;--loader-after-height: 8px;--loader-foreground: var(--tool-call-log-spinner-color, #6b6b6b);--loader-foreground-end: var(--tool-call-log-spinner-track-color, #dcdcdc);--loader-background: var(--tool-call-log-chip-background, #fafafa);}.diffstat.svelte-1vnfzde {display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums;flex-shrink:0;}.chip-diffstat.svelte-1vnfzde {margin-left:var(--tool-call-log-diffstat-margin, 2px);}\n\n /* Pill customized into the small diffstat badge via its own --pill-* tokens\n (inherited the same way — Pill is a plain descendant of this span). Pill\n defaults `cursor` to `pointer` even when non-interactive, so it is pinned\n back to `default` here: these badges carry no onclick. */.diffstat-pill.svelte-1vnfzde {display:inline-flex;--pill-padding: var(--tool-call-log-diffstat-padding, 0 4px);--pill-border-radius: var(--tool-call-log-diffstat-radius, 4px);--pill-font-size: var(--tool-call-log-diffstat-font-size, 0.6875rem);--pill-font-family: var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);--pill-line-height: 1;--pill-cursor: default;}.diffstat-added.svelte-1vnfzde {--pill-background: var(--tool-call-log-added-background, #e4f5ee);--pill-color: var(--tool-call-log-added-color, #1f7a5f);}.diffstat-removed.svelte-1vnfzde {--pill-background: var(--tool-call-log-removed-background, #fbeceb);--pill-color: var(--tool-call-log-removed-color, #a8302a);}\n\n /* `position: fixed` is the baseline rather than a portal-only override —\n left/top/z-index come from the inline `popoverStyle`, computed against the\n live anchor rect, and that is viewport-relative in both portal modes. So\n `usePortal={false}` (see `popoverPortal`) changes only which ancestors can\n clip the popover, never how it is placed. */.chip-popover.svelte-1vnfzde {position:fixed;z-index:var(--tool-call-log-popover-z-index, 1000);display:flex;flex-direction:column;gap:var(--tool-call-log-popover-gap, 6px);min-width:var(--tool-call-log-popover-min-width, 220px);max-width:var(--tool-call-log-popover-max-width, 340px);padding:var(--tool-call-log-popover-padding, 10px 12px);background:var(--tool-call-log-popover-background, #ffffff);border:var(--tool-call-log-popover-border, 1px solid #e4e4e7);border-radius:var(--tool-call-log-popover-radius, 10px);box-shadow:var(--tool-call-log-popover-shadow, 0 10px 30px rgba(0, 0, 0, 0.12));\n animation: svelte-1vnfzde-tool-call-log-fade-up\n var(--tool-call-log-popover-animation-duration, var(--motion-duration, 200ms))\n var(\n --tool-call-log-ease,\n var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))\n )\n both;}.popover-detail.svelte-1vnfzde {margin:0;color:var(--tool-call-log-popover-color, #2b2b2b);font-size:var(--tool-call-log-popover-font-size, 0.8125rem);white-space:pre-wrap;overflow-wrap:anywhere;}.popover-detail.mono.svelte-1vnfzde {font-family:var(--tool-call-log-mono-font, ui-monospace, Menlo, monospace);}\n\n @media (prefers-reduced-motion: reduce) {.chip.svelte-1vnfzde,\n .chip-popover.svelte-1vnfzde {animation-duration:0.001s;}\n /* Loader's own spin keyframe lives on its internally-scoped `.loader`\n class, which this file cannot reach with a plain scoped selector —\n :global() is required to disable it, same pattern as `.pill-dismiss\n :global(svg)` elsewhere in the library. Loader ships no\n reduced-motion guard of its own. */.chip-spinner.svelte-1vnfzde .loader {\n animation: none;}\n }"
54718
54913
  };
54719
54914
  function ToolCallLog(e, t) {
54720
54915
  push(t, !0), append_styles$1(e, $$css$16);
@@ -54906,7 +55101,7 @@ customElements.define("sui-tool-call-log", create_custom_element(ToolCallLog_wc,
54906
55101
  //#region src/lib/TaskList/TaskList.svelte
54907
55102
  var root$5 = /* @__PURE__ */ from_html("<span class=\"glyph-dot svelte-1te9fae\"></span>"), root_1$4 = /* @__PURE__ */ from_html("<span class=\"glyph-spinner svelte-1te9fae\"><!></span>"), root_2$2 = /* @__PURE__ */ from_html("<span class=\"glyph-check svelte-1te9fae\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1te9fae\"><path d=\"M20 6 9 17l-5-5\"></path></svg></span>"), root_3$2 = /* @__PURE__ */ from_html("<span class=\"glyph-x svelte-1te9fae\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"svelte-1te9fae\"><path d=\"M6 6l12 12M18 6 6 18\"></path></svg></span>"), root_4$2 = /* @__PURE__ */ from_html("<span class=\"glyph-inner svelte-1te9fae\" aria-hidden=\"true\"><!></span>"), root_5$1 = /* @__PURE__ */ from_html("<span> </span>"), root_6$1 = /* @__PURE__ */ from_html("<div class=\"row-retry svelte-1te9fae\"><!></div>"), root_7$1 = /* @__PURE__ */ from_html("<div><span class=\"row-glyph svelte-1te9fae\"><!></span> <span class=\"row-text svelte-1te9fae\"><span class=\"row-label svelte-1te9fae\"> </span> <!></span> <!></div>"), root_8$1 = /* @__PURE__ */ from_html("<div></div>"), $$css$14 = {
54908
55103
  hash: "svelte-1te9fae",
54909
- code: "\n @keyframes svelte-1te9fae-task-list-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }\n @keyframes svelte-1te9fae-task-list-glyph-fade {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes svelte-1te9fae-task-list-check-pop {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }.task-list.svelte-1te9fae {display:flex;flex-direction:column;gap:var(--task-list-row-gap, 10px);}.task-row.svelte-1te9fae {display:flex;align-items:baseline;gap:var(--task-list-row-inline-gap, 10px);\n /* --task-list-ease was an easing-only token (DESIGN_PRINCIPLES.md motion\n convention) — kept working unchanged, now paired with a duration token\n and both fall back through the library-wide --motion-* tokens. */\n animation: svelte-1te9fae-task-list-fade-up\n var(--task-list-row-animation-duration, var(--motion-duration, 320ms))\n var(--task-list-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;}.row-glyph.svelte-1te9fae {display:inline-flex;align-self:center;align-items:center;justify-content:center;width:var(--task-list-glyph-size, 16px);height:var(--task-list-glyph-size, 16px);flex-shrink:0;}.glyph-inner.svelte-1te9fae {display:inline-flex;align-items:center;justify-content:center;\n animation: svelte-1te9fae-task-list-glyph-fade\n var(--task-list-glyph-animation-duration, var(--motion-duration, 150ms))\n var(--task-list-glyph-animation-easing, var(--motion-easing, ease)) both;}.glyph-dot.svelte-1te9fae {width:6px;height:6px;border-radius:50%;background:var(--task-list-dot-color, #9a9a9a);}\n\n /* Loader draws its own ring via a rotating gradient rather than a bordered arc, so the old\n track/spinner two-tone maps onto the gradient's start/end stops: --loader-foreground is the\n bright leading edge, --loader-foreground-end the dimmer trailing one. The size vars are\n calc()'d off a single token so before/after stay proportional if a consumer overrides it. */.glyph-spinner.svelte-1te9fae {display:inline-flex;--loader-foreground: var(--task-list-spinner-color, #6b6b6b);--loader-foreground-end: var(--task-list-spinner-track-color, #dcdcdc);--loader-width: var(--task-list-spinner-size, 11px);--loader-height: var(--task-list-spinner-size, 11px);--loader-before-width: calc(var(--task-list-spinner-size, 11px) * 0.5);--loader-before-height: calc(var(--task-list-spinner-size, 11px) * 0.5);--loader-after-width: calc(var(--task-list-spinner-size, 11px) * 0.75);--loader-after-height: calc(var(--task-list-spinner-size, 11px) * 0.75);}.glyph-check.svelte-1te9fae,\n .glyph-x.svelte-1te9fae {display:inline-flex;}.glyph-check.svelte-1te9fae svg:where(.svelte-1te9fae),\n .glyph-x.svelte-1te9fae svg:where(.svelte-1te9fae) {width:12px;height:12px;}.glyph-check.svelte-1te9fae {color:var(--task-list-done-color, #6b6b6b);\n animation: svelte-1te9fae-task-list-check-pop\n var(--task-list-check-pop-animation-duration, var(--motion-duration, 200ms))\n var(--task-list-ease, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1))) both;}.glyph-x.svelte-1te9fae {color:var(--task-list-error-color, #c93f38);}.row-text.svelte-1te9fae {flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--task-list-text-gap, 8px);}.task-row.pending.svelte-1te9fae .row-text:where(.svelte-1te9fae) {opacity:var(--task-list-pending-opacity, 0.85);}.row-label.svelte-1te9fae {font-size:var(--task-list-row-font-size, 0.875rem);font-weight:var(--task-list-row-weight, 500);color:var(--task-list-row-color, #2b2b2b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.row-secondary.svelte-1te9fae {font-size:var(--task-list-secondary-font-size, 0.75rem);color:var(--task-list-secondary-color, #555b65);white-space:nowrap;}.row-secondary.mono.svelte-1te9fae {font-family:var(--task-list-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Themes the embedded Button into the compact error-tinted pill via its own custom\n properties — these inherit down into Button's internal rules regardless of the\n component boundary, the same wrapper-div pattern Banner uses for its dismiss button. */.row-retry.svelte-1te9fae {margin-left:auto;flex-shrink:0;align-self:center;--button-color: var(--task-list-retry-background, rgba(201, 63, 56, 0.12));--button-text-color: var(--task-list-retry-color, #c93f38);--button-hover-color: var(--task-list-retry-hover-background, rgba(201, 63, 56, 0.2));--button-hover-text-color: var(--task-list-retry-color, #c93f38);--button-border: none;--button-padding: var(--task-list-retry-padding, 3px 10px);--button-border-radius: var(--task-list-retry-radius, 999px);--button-font-size: var(--task-list-retry-font-size, 0.75rem);--button-font-weight: var(--task-list-retry-weight, 600);--button-transition: background 150ms ease;}\n\n @media (prefers-reduced-motion: reduce) {.task-row.svelte-1te9fae,\n .glyph-inner.svelte-1te9fae,\n .glyph-check.svelte-1te9fae {animation-duration:0.001s;}\n /* Loader's spin lives on its own internally-scoped element, reached here via :global()\n scoped to a descendant of our local .glyph-spinner wrapper — the 3-class specificity\n that produces reliably beats Loader's own 2-class rule regardless of stylesheet order. */.glyph-spinner.svelte-1te9fae .loader {\n animation: none;\n -webkit-animation: none;}\n }"
55104
+ code: "\n @keyframes svelte-1te9fae-task-list-fade-up {\n from {\n opacity: 0;\n transform: translateY(9px);\n }\n to {\n opacity: 1;\n transform: none;\n }\n }\n @keyframes svelte-1te9fae-task-list-glyph-fade {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n @keyframes svelte-1te9fae-task-list-check-pop {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }.task-list.svelte-1te9fae {display:flex;flex-direction:column;gap:var(--task-list-row-gap, 10px);}.task-row.svelte-1te9fae {display:flex;align-items:baseline;gap:var(--task-list-row-inline-gap, 10px);\n /* --task-list-ease was an easing-only token (DESIGN_PRINCIPLES.md motion\n convention) — kept working unchanged, now paired with a duration token\n and both fall back through the library-wide --motion-* tokens. */\n animation: svelte-1te9fae-task-list-fade-up\n var(--task-list-row-animation-duration, var(--motion-duration, 320ms))\n var(\n --task-list-ease,\n var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))\n )\n both;}.row-glyph.svelte-1te9fae {display:inline-flex;align-self:center;align-items:center;justify-content:center;width:var(--task-list-glyph-size, 16px);height:var(--task-list-glyph-size, 16px);flex-shrink:0;}.glyph-inner.svelte-1te9fae {display:inline-flex;align-items:center;justify-content:center;\n animation: svelte-1te9fae-task-list-glyph-fade\n var(--task-list-glyph-animation-duration, var(--motion-duration, 150ms))\n var(--task-list-glyph-animation-easing, var(--motion-easing, ease)) both;}.glyph-dot.svelte-1te9fae {width:6px;height:6px;border-radius:50%;background:var(--task-list-dot-color, #9a9a9a);}\n\n /* Loader draws its own ring via a rotating gradient rather than a bordered arc, so the old\n track/spinner two-tone maps onto the gradient's start/end stops: --loader-foreground is the\n bright leading edge, --loader-foreground-end the dimmer trailing one. The size vars are\n calc()'d off a single token so before/after stay proportional if a consumer overrides it. */.glyph-spinner.svelte-1te9fae {display:inline-flex;--loader-foreground: var(--task-list-spinner-color, #6b6b6b);--loader-foreground-end: var(--task-list-spinner-track-color, #dcdcdc);--loader-width: var(--task-list-spinner-size, 11px);--loader-height: var(--task-list-spinner-size, 11px);--loader-before-width: calc(var(--task-list-spinner-size, 11px) * 0.5);--loader-before-height: calc(var(--task-list-spinner-size, 11px) * 0.5);--loader-after-width: calc(var(--task-list-spinner-size, 11px) * 0.75);--loader-after-height: calc(var(--task-list-spinner-size, 11px) * 0.75);}.glyph-check.svelte-1te9fae,\n .glyph-x.svelte-1te9fae {display:inline-flex;}.glyph-check.svelte-1te9fae svg:where(.svelte-1te9fae),\n .glyph-x.svelte-1te9fae svg:where(.svelte-1te9fae) {width:12px;height:12px;}.glyph-check.svelte-1te9fae {color:var(--task-list-done-color, #6b6b6b);\n animation: svelte-1te9fae-task-list-check-pop\n var(--task-list-check-pop-animation-duration, var(--motion-duration, 200ms))\n var(\n --task-list-ease,\n var(--ease-smooth-out, var(--motion-easing, cubic-bezier(0.23, 1, 0.32, 1)))\n )\n both;}.glyph-x.svelte-1te9fae {color:var(--task-list-error-color, #c93f38);}.row-text.svelte-1te9fae {flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--task-list-text-gap, 8px);}.task-row.pending.svelte-1te9fae .row-text:where(.svelte-1te9fae) {opacity:var(--task-list-pending-opacity, 0.85);}.row-label.svelte-1te9fae {font-size:var(--task-list-row-font-size, 0.875rem);font-weight:var(--task-list-row-weight, 500);color:var(--task-list-row-color, #2b2b2b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.row-secondary.svelte-1te9fae {font-size:var(--task-list-secondary-font-size, 0.75rem);color:var(--task-list-secondary-color, #555b65);white-space:nowrap;}.row-secondary.mono.svelte-1te9fae {font-family:var(--task-list-mono-font, ui-monospace, Menlo, monospace);}\n\n /* Themes the embedded Button into the compact error-tinted pill via its own custom\n properties — these inherit down into Button's internal rules regardless of the\n component boundary, the same wrapper-div pattern Banner uses for its dismiss button. */.row-retry.svelte-1te9fae {margin-left:auto;flex-shrink:0;align-self:center;--button-color: var(--task-list-retry-background, rgba(201, 63, 56, 0.12));--button-text-color: var(--task-list-retry-color, #c93f38);--button-hover-color: var(--task-list-retry-hover-background, rgba(201, 63, 56, 0.2));--button-hover-text-color: var(--task-list-retry-color, #c93f38);--button-border: none;--button-padding: var(--task-list-retry-padding, 3px 10px);--button-border-radius: var(--task-list-retry-radius, 999px);--button-font-size: var(--task-list-retry-font-size, 0.75rem);--button-font-weight: var(--task-list-retry-weight, 600);--button-transition: background 150ms ease;}\n\n @media (prefers-reduced-motion: reduce) {.task-row.svelte-1te9fae,\n .glyph-inner.svelte-1te9fae,\n .glyph-check.svelte-1te9fae {animation-duration:0.001s;}\n /* Loader's spin lives on its own internally-scoped element, reached here via :global()\n scoped to a descendant of our local .glyph-spinner wrapper — the 3-class specificity\n that produces reliably beats Loader's own 2-class rule regardless of stylesheet order. */.glyph-spinner.svelte-1te9fae .loader {\n animation: none;\n -webkit-animation: none;}\n }"
54910
55105
  };
54911
55106
  function TaskList(e, t) {
54912
55107
  push(t, !0), append_styles$1(e, $$css$14);
@@ -56098,7 +56293,7 @@ customElements.define("sui-aspect-ratio", create_custom_element(AspectRatio_wc,
56098
56293
  //#region src/lib/assets/star.svg?raw
56099
56294
  var star_default = "<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\"\n ></path>\n</svg>\n", root_1 = /* @__PURE__ */ from_html("<span class=\"star-fill svelte-1c91y9i\"></span>"), root_2 = /* @__PURE__ */ from_html("<span class=\"star-empty svelte-1c91y9i\"></span> <!>", 1), root_3 = /* @__PURE__ */ from_html("<span class=\"star svelte-1c91y9i\" aria-hidden=\"true\"><!></span>"), root_4 = /* @__PURE__ */ from_html("<div role=\"slider\"><!> <input type=\"number\" class=\"native-input svelte-1c91y9i\" aria-hidden=\"true\"/></div>"), $$css$1 = {
56100
56295
  hash: "svelte-1c91y9i",
56101
- code: ".rating-group.svelte-1c91y9i {display:var(--rating-group-display, inline-flex);align-items:center;gap:var(--rating-group-gap, 2px);cursor:var(--rating-group-cursor, pointer);outline:none;border-radius:var(--rating-group-border-radius, var(--radius, 4px));width:fit-content;}.rating-group.svelte-1c91y9i:focus-visible {box-shadow:var(--rating-group-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.rating-group.disabled.svelte-1c91y9i {opacity:var(--rating-group-disabled-opacity, 0.4);cursor:var(--rating-group-disabled-cursor, not-allowed);}.rating-group.readonly.svelte-1c91y9i {cursor:var(--rating-group-readonly-cursor, default);}.star.svelte-1c91y9i {position:relative;display:inline-flex;width:var(--rating-group-star-size, 24px);height:var(--rating-group-star-size, 24px);flex-shrink:0;}.rating-group.svelte-1c91y9i:not(.disabled):not(.readonly) .star:where(.svelte-1c91y9i):hover {transform:var(--rating-group-star-hover-transform, scale(1.1));}.star-empty.svelte-1c91y9i,\n .star-fill.svelte-1c91y9i {position:absolute;inset:0;display:flex;}.star-empty.svelte-1c91y9i {color:var(--rating-group-star-empty-color, #d1d5db);}.star-empty.svelte-1c91y9i svg {width:100%;height:100%;}.star-fill.svelte-1c91y9i {color:var(--rating-group-star-filled-color, #f5a623);overflow:hidden;}.star-fill.svelte-1c91y9i svg {width:var(--rating-group-star-size, 24px);height:var(--rating-group-star-size, 24px);flex-shrink:0;}.native-input.svelte-1c91y9i {position:absolute;opacity:0;width:0;height:0;pointer-events:none;}"
56296
+ code: ".rating-group.svelte-1c91y9i {display:var(--rating-group-display, inline-flex);align-items:center;gap:var(--rating-group-gap, 2px);cursor:var(--rating-group-cursor, pointer);outline:none;border-radius:var(--rating-group-border-radius, var(--radius, 4px));width:fit-content;}.rating-group.svelte-1c91y9i:focus-visible {box-shadow:var(--rating-group-focus-ring, 0 0 0 3px rgba(33, 150, 243, 0.3));}.rating-group.disabled.svelte-1c91y9i {opacity:var(--rating-group-disabled-opacity, 0.4);cursor:var(--rating-group-disabled-cursor, not-allowed);}.rating-group.readonly.svelte-1c91y9i {cursor:var(--rating-group-readonly-cursor, default);}.star.svelte-1c91y9i {position:relative;display:inline-flex;width:var(--rating-group-star-size, 24px);height:var(--rating-group-star-size, 24px);flex-shrink:0;transition:transform\n var(--rating-group-star-transition-duration, var(--motion-duration, 0.15s))\n var(--rating-group-star-transition-easing, var(--motion-easing, ease));}.rating-group.svelte-1c91y9i:not(.disabled):not(.readonly) .star:where(.svelte-1c91y9i):hover {transform:var(--rating-group-star-hover-transform, scale(1.1));}\n\n @media (prefers-reduced-motion: reduce) {.star.svelte-1c91y9i {transition:none;}\n }.star-empty.svelte-1c91y9i,\n .star-fill.svelte-1c91y9i {position:absolute;inset:0;display:flex;}.star-empty.svelte-1c91y9i {color:var(--rating-group-star-empty-color, #d1d5db);}.star-empty.svelte-1c91y9i svg {width:100%;height:100%;}.star-fill.svelte-1c91y9i {color:var(--rating-group-star-filled-color, #f5a623);overflow:hidden;}.star-fill.svelte-1c91y9i svg {width:var(--rating-group-star-size, 24px);height:var(--rating-group-star-size, 24px);flex-shrink:0;}.native-input.svelte-1c91y9i {position:absolute;opacity:0;width:0;height:0;pointer-events:none;}"
56102
56297
  };
56103
56298
  function RatingGroup(e, t) {
56104
56299
  push(t, !0), append_styles$1(e, $$css$1);