@svgrid/grid 2.1.0 → 2.1.2

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 (64) hide show
  1. package/dist/FlexRender.svelte +96 -96
  2. package/dist/GridFooter.svelte +178 -178
  3. package/dist/SvGrid.css +2377 -2377
  4. package/dist/SvGrid.svelte +2764 -2764
  5. package/dist/SvGridBoard.svelte +2281 -2281
  6. package/dist/SvGridDropdown.svelte +666 -666
  7. package/dist/cdn/svgrid.js +2 -2
  8. package/dist/cdn/svgrid.svelte-external.js +2 -2
  9. package/package.json +92 -92
  10. package/src/FlexRender.svelte +96 -96
  11. package/src/GridFooter.svelte +178 -178
  12. package/src/SvGrid.controller.svelte.ts +2553 -2553
  13. package/src/SvGrid.css +2377 -2377
  14. package/src/SvGrid.svelte +2764 -2764
  15. package/src/SvGrid.types.ts +944 -944
  16. package/src/SvGridBoard.svelte +2281 -2281
  17. package/src/SvGridDropdown.svelte +666 -666
  18. package/src/a11y.contract.test.ts +49 -49
  19. package/src/a11y.test.ts +59 -59
  20. package/src/a11y.ts +61 -61
  21. package/src/build-api.ts +798 -798
  22. package/src/cell-formatting.ts +169 -169
  23. package/src/cell-render.ts +469 -469
  24. package/src/collaboration.test.ts +104 -104
  25. package/src/collaboration.ts +167 -167
  26. package/src/core.performance.test.ts +30 -30
  27. package/src/core.ts +1111 -1111
  28. package/src/createGrid.svelte.ts +42 -42
  29. package/src/createGrid.test.ts +10 -10
  30. package/src/createGridState.svelte.ts +17 -17
  31. package/src/editing.test.ts +859 -859
  32. package/src/editing.ts +675 -675
  33. package/src/export-data-api.test.ts +126 -126
  34. package/src/export-format.test.ts +107 -107
  35. package/src/export-format.ts +598 -598
  36. package/src/flex-render.ts +3 -3
  37. package/src/index.ts +463 -463
  38. package/src/keyboard.test.ts +59 -59
  39. package/src/keyboard.ts +97 -97
  40. package/src/menus.ts +582 -582
  41. package/src/merge-objects.ts +48 -48
  42. package/src/render-component.ts +28 -28
  43. package/src/selection.test.ts +754 -754
  44. package/src/selection.ts +600 -600
  45. package/src/server-data-source.test.ts +289 -289
  46. package/src/server-data-source.ts +413 -413
  47. package/src/sparkline.test.ts +68 -68
  48. package/src/sparkline.ts +169 -169
  49. package/src/spreadsheet.test.ts +489 -489
  50. package/src/spreadsheet.ts +304 -304
  51. package/src/static-functions.ts +11 -11
  52. package/src/subscribe.ts +38 -38
  53. package/src/svgrid-wrapper.types.ts +439 -439
  54. package/src/svgrid.behavior.test.ts +706 -706
  55. package/src/svgrid.features.test.ts +157 -157
  56. package/src/svgrid.new-features.wrapper.test.ts +251 -251
  57. package/src/svgrid.wrapper.test.ts +40 -40
  58. package/src/themes/index.ts +159 -159
  59. package/src/virtualization/column-virtualizer.test.ts +27 -27
  60. package/src/virtualization/column-virtualizer.ts +30 -30
  61. package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
  62. package/src/virtualization/types.ts +30 -30
  63. package/src/virtualization/virtualizer.test.ts +47 -47
  64. package/src/virtualization/virtualizer.ts +296 -296
@@ -3758,7 +3758,7 @@ function wo(e, t) {
3758
3758
  //#region src/SvGridDropdown.svelte
3759
3759
  var To = /* @__PURE__ */ H("<span class=\"sv-grid-chip sv-grid-chip-removable svelte-ei8hp3\"> <span class=\"sv-grid-chip-remove svelte-ei8hp3\" role=\"button\">×</span></span>"), Eo = /* @__PURE__ */ H("<span class=\"sv-grid-dropdown-chips svelte-ei8hp3\"></span>"), Do = /* @__PURE__ */ H("<span class=\"sv-grid-chip svelte-ei8hp3\"> </span>"), Oo = /* @__PURE__ */ H("<span class=\"sv-grid-dropdown-label svelte-ei8hp3\"> </span>"), ko = /* @__PURE__ */ H("<input type=\"search\" class=\"sv-grid-dropdown-search\" placeholder=\"Search…\"/>"), Ao = /* @__PURE__ */ H("<div class=\"sv-grid-dropdown-empty\"> </div>"), jo = /* @__PURE__ */ H("<span class=\"sv-grid-dropdown-check\" aria-hidden=\"true\"> </span>"), Mo = /* @__PURE__ */ H("<span class=\"sv-grid-dropdown-option-chip\"> </span>"), No = /* @__PURE__ */ H("<span class=\"sv-grid-dropdown-option-label\"> </span>"), Po = /* @__PURE__ */ H("<div role=\"option\"><!> <!></div>"), Fo = /* @__PURE__ */ H("<div class=\"sv-grid-dropdown-footer\"><button type=\"button\" class=\"sv-grid-dropdown-done\">Done</button></div>"), Io = /* @__PURE__ */ H("<div role=\"listbox\"><!> <!> <!></div>"), Lo = /* @__PURE__ */ H("<div><button type=\"button\" aria-haspopup=\"listbox\"><!> <span class=\"sv-grid-dropdown-caret svelte-ei8hp3\" aria-hidden=\"true\">▾</span></button> <!></div>"), Ro = {
3760
3760
  hash: "svelte-ei8hp3",
3761
- code: "\r\n /* All colors derive from the grid's host CSS vars so light/dark themes\r\n \"just work\". Hard fallbacks are kept so the component is still\r\n usable in an unthemed page. */.sv-grid-dropdown.svelte-ei8hp3 {position:absolute;top:0;left:0;right:0;height:100%;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-trigger.svelte-ei8hp3 {display:flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;padding:0 8px;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);border:0;outline:none;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;}.sv-grid-dropdown-trigger.svelte-ei8hp3:focus {outline:2px solid var(--sg-accent, #2563eb);outline-offset:-2px;}.sv-grid-dropdown-trigger-chips.svelte-ei8hp3 {align-items:center;padding:4px 8px;flex-wrap:wrap;}.sv-grid-dropdown-chips.svelte-ei8hp3 {display:inline-flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;min-width:0;align-items:center;}.sv-grid-dropdown-label.svelte-ei8hp3 {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-caret.svelte-ei8hp3 {flex:0 0 auto;font-size:10px;opacity:0.7;line-height:1;}\r\n\r\n /* Popover sits absolutely below the trigger. The parent\r\n `.sv-grid-cell-editing` has `overflow: visible`, so this can hang\r\n past the row. Pulls its surface color from the grid's header bg\r\n so it reads as a slightly elevated layer on either theme. */\r\n /* Panel is `position: fixed` AND portal'd into document.body via\r\n `use:portalToBody`, so it escapes every ancestor overflow / clip /\r\n transform / stacking context. Coords come from updatePanelPosition(). */.sv-grid-dropdown-panel {overflow-y:auto;background:var(--sg-header-bg, var(--sg-bg, #ffffff));color:var(--sg-fg, #0f172a);border:1px solid var(--sg-accent, #2563eb);border-radius:6px;box-shadow:0 12px 28px rgba(0, 0, 0, 0.45);padding:4px 0;font-family:inherit;}\r\n /* When the option list fits in one panel we want NO scrollbar at all -\r\n * not even a sub-pixel ghost track. `overflow: visible` rules out the\r\n * scrollbar gutter that some browsers still reserve under\r\n * `overflow: auto` when content equals max-height. */.sv-grid-dropdown-panel.sv-grid-dropdown-panel-fits {overflow:visible;}.sv-grid-dropdown-option {display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;user-select:none;color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.1));}.sv-grid-dropdown-option-selected {font-weight:600;background:var(--sg-selection-bg, rgba(37, 99, 235, 0.15));}.sv-grid-dropdown-option-selected.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.18));}.sv-grid-dropdown-option-label {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-check {flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;color:var(--sg-accent, #2563eb);font-weight:700;}.sv-grid-dropdown-swatch {flex:0 0 12px;width:12px;height:12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-fg, #0f172a) 25%, transparent);}\r\n /* Colored option chip. Declared `:global` because the option panel is\r\n portal'd to <body>, where Svelte's scoped classes don't reach. The\r\n per-chip background / border / text color come from an inline style\r\n (see colorfulChipStyleInline) so each option matches its cell chip. */.sv-grid-dropdown-option-chip {display:inline-flex;align-items:center;max-width:100%;padding:2px 11px;border:1px solid transparent;border-radius:999px;font-size:0.9em;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-empty {padding:8px 10px;color:var(--sg-muted, rgba(15, 23, 42, 0.55));font-style:italic;font-size:0.9em;}.sv-grid-dropdown-footer {display:flex;justify-content:flex-end;padding:4px 6px;border-top:1px solid var(--sg-border, rgba(15, 23, 42, 0.08));margin-top:2px;}.sv-grid-dropdown-done {font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#fff;background:var(--sg-accent, #2563eb);border:0;border-radius:4px;padding:4px 10px;cursor:pointer;}.sv-grid-dropdown-done:hover {filter:brightness(1.12);}\r\n\r\n /* Note: option / footer / swatch styles are declared `:global(...)`\r\n above because the panel is portal'd to <body> and Svelte's scoped\r\n class won't survive on children of an element living outside the\r\n component subtree. */\r\n\r\n /* Theme-aware chip badges. Inside the trigger they sit on the cell\r\n background, so we need a tone that contrasts on BOTH themes - a\r\n translucent accent works well in dark mode and reads as a soft\r\n blue pill in light mode. */.sv-grid-chip.svelte-ei8hp3 {display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:0.85em;line-height:1.4;background:color-mix(in srgb, var(--sg-accent, #2563eb) 18%, transparent);color:var(--sg-fg, #0f172a);border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-accent, #2563eb) 35%, transparent);white-space:nowrap;}.sv-grid-chip-removable.svelte-ei8hp3 {padding-right:2px;}.sv-grid-chip-remove.svelte-ei8hp3 {display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #0f172a) 18%, transparent);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0;}.sv-grid-chip-remove.svelte-ei8hp3:hover {background:rgba(220, 38, 38, 0.7);color:#fff;}"
3761
+ code: "\n /* All colors derive from the grid's host CSS vars so light/dark themes\n \"just work\". Hard fallbacks are kept so the component is still\n usable in an unthemed page. */.sv-grid-dropdown.svelte-ei8hp3 {position:absolute;top:0;left:0;right:0;height:100%;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-trigger.svelte-ei8hp3 {display:flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;padding:0 8px;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);border:0;outline:none;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;}.sv-grid-dropdown-trigger.svelte-ei8hp3:focus {outline:2px solid var(--sg-accent, #2563eb);outline-offset:-2px;}.sv-grid-dropdown-trigger-chips.svelte-ei8hp3 {align-items:center;padding:4px 8px;flex-wrap:wrap;}.sv-grid-dropdown-chips.svelte-ei8hp3 {display:inline-flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;min-width:0;align-items:center;}.sv-grid-dropdown-label.svelte-ei8hp3 {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-caret.svelte-ei8hp3 {flex:0 0 auto;font-size:10px;opacity:0.7;line-height:1;}\n\n /* Popover sits absolutely below the trigger. The parent\n `.sv-grid-cell-editing` has `overflow: visible`, so this can hang\n past the row. Pulls its surface color from the grid's header bg\n so it reads as a slightly elevated layer on either theme. */\n /* Panel is `position: fixed` AND portal'd into document.body via\n `use:portalToBody`, so it escapes every ancestor overflow / clip /\n transform / stacking context. Coords come from updatePanelPosition(). */.sv-grid-dropdown-panel {overflow-y:auto;background:var(--sg-header-bg, var(--sg-bg, #ffffff));color:var(--sg-fg, #0f172a);border:1px solid var(--sg-accent, #2563eb);border-radius:6px;box-shadow:0 12px 28px rgba(0, 0, 0, 0.45);padding:4px 0;font-family:inherit;}\n /* When the option list fits in one panel we want NO scrollbar at all -\n * not even a sub-pixel ghost track. `overflow: visible` rules out the\n * scrollbar gutter that some browsers still reserve under\n * `overflow: auto` when content equals max-height. */.sv-grid-dropdown-panel.sv-grid-dropdown-panel-fits {overflow:visible;}.sv-grid-dropdown-option {display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;user-select:none;color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.1));}.sv-grid-dropdown-option-selected {font-weight:600;background:var(--sg-selection-bg, rgba(37, 99, 235, 0.15));}.sv-grid-dropdown-option-selected.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.18));}.sv-grid-dropdown-option-label {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-check {flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;color:var(--sg-accent, #2563eb);font-weight:700;}.sv-grid-dropdown-swatch {flex:0 0 12px;width:12px;height:12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-fg, #0f172a) 25%, transparent);}\n /* Colored option chip. Declared `:global` because the option panel is\n portal'd to <body>, where Svelte's scoped classes don't reach. The\n per-chip background / border / text color come from an inline style\n (see colorfulChipStyleInline) so each option matches its cell chip. */.sv-grid-dropdown-option-chip {display:inline-flex;align-items:center;max-width:100%;padding:2px 11px;border:1px solid transparent;border-radius:999px;font-size:0.9em;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-empty {padding:8px 10px;color:var(--sg-muted, rgba(15, 23, 42, 0.55));font-style:italic;font-size:0.9em;}.sv-grid-dropdown-footer {display:flex;justify-content:flex-end;padding:4px 6px;border-top:1px solid var(--sg-border, rgba(15, 23, 42, 0.08));margin-top:2px;}.sv-grid-dropdown-done {font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#fff;background:var(--sg-accent, #2563eb);border:0;border-radius:4px;padding:4px 10px;cursor:pointer;}.sv-grid-dropdown-done:hover {filter:brightness(1.12);}\n\n /* Note: option / footer / swatch styles are declared `:global(...)`\n above because the panel is portal'd to <body> and Svelte's scoped\n class won't survive on children of an element living outside the\n component subtree. */\n\n /* Theme-aware chip badges. Inside the trigger they sit on the cell\n background, so we need a tone that contrasts on BOTH themes - a\n translucent accent works well in dark mode and reads as a soft\n blue pill in light mode. */.sv-grid-chip.svelte-ei8hp3 {display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:0.85em;line-height:1.4;background:color-mix(in srgb, var(--sg-accent, #2563eb) 18%, transparent);color:var(--sg-fg, #0f172a);border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-accent, #2563eb) 35%, transparent);white-space:nowrap;}.sv-grid-chip-removable.svelte-ei8hp3 {padding-right:2px;}.sv-grid-chip-remove.svelte-ei8hp3 {display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #0f172a) 18%, transparent);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0;}.sv-grid-chip-remove.svelte-ei8hp3:hover {background:rgba(220, 38, 38, 0.7);color:#fff;}"
3762
3762
  };
3763
3763
  function zo(e, t) {
3764
3764
  Jt(t, !0), sa(e, Ro);
@@ -13295,7 +13295,7 @@ ki([
13295
13295
  //#region src/SvGridBoard.svelte
13296
13296
  var Yp = /* @__PURE__ */ H("<span class=\"sv-board-comment-author svelte-15b6cgu\"> </span>"), Xp = /* @__PURE__ */ H("<span class=\"sv-board-comment-at svelte-15b6cgu\"> </span>"), Zp = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-comment-del svelte-15b6cgu\" aria-label=\"Delete comment\">×</button>"), Qp = /* @__PURE__ */ H("<div class=\"sv-board-comment svelte-15b6cgu\"><div class=\"sv-board-comment-body svelte-15b6cgu\"><!> <span class=\"sv-board-comment-text\"> </span> <!></div> <!></div>"), $p = /* @__PURE__ */ H("<div class=\"sv-board-comment-empty svelte-15b6cgu\">No comments yet.</div>"), em = /* @__PURE__ */ H("<input class=\"sv-board-comment-add svelte-15b6cgu\" placeholder=\"Write a comment...\"/>"), tm = /* @__PURE__ */ H("<!> <!> <!>", 1), nm = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-lane-toggle svelte-15b6cgu\"> </button>"), rm = /* @__PURE__ */ H("<input class=\"sv-board-lane-rename svelte-15b6cgu\"/>"), im = /* @__PURE__ */ H("<span> </span>"), am = /* @__PURE__ */ H("<span class=\"sv-board-lane-summary svelte-15b6cgu\"> </span>"), om = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-lane-add svelte-15b6cgu\">+</button>"), sm = /* @__PURE__ */ H("<div aria-hidden=\"true\"></div>"), cm = /* @__PURE__ */ H("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), lm = /* @__PURE__ */ H("<span class=\"sv-board-card-flag svelte-15b6cgu\" aria-label=\"Blocked\"></span>"), um = /* @__PURE__ */ H("<input type=\"checkbox\" class=\"svelte-15b6cgu\"/>"), dm = /* @__PURE__ */ H("<input class=\"svelte-15b6cgu\"/>"), fm = /* @__PURE__ */ H("<label class=\"sv-board-field svelte-15b6cgu\"><span> </span> <!></label>"), pm = /* @__PURE__ */ H("<form class=\"sv-board-card-edit svelte-15b6cgu\"><!> <div class=\"sv-board-card-edit-actions svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-btn svelte-15b6cgu\">Cancel</button> <button type=\"submit\" class=\"sv-board-btn is-primary svelte-15b6cgu\">Save</button></div></form>"), mm = /* @__PURE__ */ H("<!> <!>", 1), hm = /* @__PURE__ */ H("<div class=\"sv-board-card-cover svelte-15b6cgu\" aria-hidden=\"true\"></div>"), gm = /* @__PURE__ */ H("<div class=\"sv-board-card-title svelte-15b6cgu\"> </div>"), _m = /* @__PURE__ */ H("<div class=\"sv-board-card-metarow svelte-15b6cgu\"><dt class=\"svelte-15b6cgu\"> </dt> <dd class=\"svelte-15b6cgu\"> </dd></div>"), vm = /* @__PURE__ */ H("<dl class=\"sv-board-card-meta svelte-15b6cgu\"></dl>"), ym = /* @__PURE__ */ H("<!> <!> <!> <!>", 1), bm = /* @__PURE__ */ H("<li><label><input type=\"checkbox\" class=\"svelte-15b6cgu\"/> <span class=\"svelte-15b6cgu\"> </span></label></li>"), xm = /* @__PURE__ */ H("<ul class=\"sv-board-subs-list svelte-15b6cgu\"></ul> <input class=\"sv-board-subs-add svelte-15b6cgu\" placeholder=\"Add subtask...\"/>", 1), Sm = /* @__PURE__ */ H("<div class=\"sv-board-subs svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-subs-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-count svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-bar svelte-15b6cgu\" aria-hidden=\"true\"><span class=\"svelte-15b6cgu\"></span></span></button> <!></div>"), Cm = /* @__PURE__ */ H("<li class=\"sv-board-kid svelte-15b6cgu\"><span class=\"sv-board-kid-title svelte-15b6cgu\"> </span> <span class=\"sv-board-kid-lane svelte-15b6cgu\"> </span></li>"), wm = /* @__PURE__ */ H("<ul class=\"sv-board-kids-list svelte-15b6cgu\"></ul>"), Tm = /* @__PURE__ */ H("<div class=\"sv-board-kids svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-kids-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> </button> <!></div>"), Em = /* @__PURE__ */ H("<div class=\"sv-board-comments svelte-15b6cgu\"><!></div>"), Dm = /* @__PURE__ */ H("<!> <article role=\"listitem\" tabindex=\"0\" aria-roledescription=\"Draggable card\"><!> <!> <!> <!> <!></article>", 1), Om = /* @__PURE__ */ H("<div aria-hidden=\"true\"></div>"), km = /* @__PURE__ */ H("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Am = /* @__PURE__ */ H("<div class=\"sv-board-lane-empty svelte-15b6cgu\">No cards</div>"), jm = /* @__PURE__ */ H("<input class=\"sv-board-composer-input svelte-15b6cgu\" placeholder=\"Card title...\"/>"), Mm = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-composer-btn svelte-15b6cgu\">+ Add a card</button>"), Nm = /* @__PURE__ */ H("<div role=\"list\"><!> <!> <!> <!></div> <!>", 1), Pm = /* @__PURE__ */ H("<section><header><!> <!> <span> <!></span> <!> <!></header> <!></section>"), Fm = /* @__PURE__ */ H("<span class=\"sv-board-badge is-blocked svelte-15b6cgu\">Blocked</span>"), Im = /* @__PURE__ */ H("<span class=\"sv-board-badge is-label svelte-15b6cgu\"> </span>"), Lm = /* @__PURE__ */ H("<span> </span>"), Rm = /* @__PURE__ */ H("<span class=\"sv-board-badge is-meta svelte-15b6cgu\" title=\"Age\"> </span>"), zm = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-badge is-meta is-btn svelte-15b6cgu\" title=\"Comments\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M2 3h12v8H8l-3 2v-2H2z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"></path></svg> </button>"), Bm = /* @__PURE__ */ H("<span class=\"sv-board-badge is-meta svelte-15b6cgu\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M11 5.5 6.5 10a2 2 0 0 1-3-3l5-5a3 3 0 0 1 4 4l-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg> </span>"), Vm = /* @__PURE__ */ H("<span class=\"sv-board-avatar svelte-15b6cgu\"> </span>"), Hm = /* @__PURE__ */ H("<span class=\"sv-board-avatars svelte-15b6cgu\"></span>"), Um = /* @__PURE__ */ H("<div class=\"sv-board-badges svelte-15b6cgu\"><!> <!> <!> <!> <!> <!> <!></div>"), Wm = /* @__PURE__ */ H("<button type=\"button\"> <span class=\"sv-board-facet-count svelte-15b6cgu\"> </span></button>"), Gm = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-facet-clear svelte-15b6cgu\">Clear filters</button>"), Km = /* @__PURE__ */ H("<div class=\"sv-board-facets svelte-15b6cgu\"><!> <!></div>"), qm = /* @__PURE__ */ H("<button type=\"button\" class=\"sv-board-swim-toggle svelte-15b6cgu\"> </button>"), Jm = /* @__PURE__ */ H("<span class=\"sv-board-swim-summary svelte-15b6cgu\"> </span>"), Ym = /* @__PURE__ */ H("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), Xm = /* @__PURE__ */ H("<section class=\"sv-board-swim svelte-15b6cgu\"><header class=\"sv-board-swim-head svelte-15b6cgu\"><!> <span class=\"sv-board-swim-title\"> </span> <span class=\"sv-board-swim-count svelte-15b6cgu\"> </span> <!></header> <!></section>"), Zm = /* @__PURE__ */ H("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), Qm = /* @__PURE__ */ H("<div class=\"sv-board-ctx\" aria-label=\"Card actions\"><!></div>"), $m = /* @__PURE__ */ H("<div class=\"sv-board-drawer-comments svelte-15b6cgu\"><div class=\"sv-board-drawer-h svelte-15b6cgu\">Comments</div> <!></div>"), eh = /* @__PURE__ */ H("<!> <!>", 1), th = /* @__PURE__ */ H("<div role=\"group\" aria-label=\"Board\"><!> <!> <div class=\"sv-board-sr svelte-15b6cgu\" aria-live=\"polite\" role=\"status\"> </div></div> <!> <!>", 1), nh = {
13297
13297
  hash: "svelte-15b6cgu",
13298
- code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\r\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\r\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\r\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\r\n opacity 0.12s ease,\r\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\r\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\r\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\r\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\r\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\r\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\r\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\r\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\r\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\r\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\r\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\r\n .sv-board-lane-body.svelte-15b6cgu,\r\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\r\n }"
13298
+ code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\n opacity 0.12s ease,\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\n .sv-board-lane-body.svelte-15b6cgu,\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\n }"
13299
13299
  };
13300
13300
  function rh(e, t) {
13301
13301
  Jt(t, !0), sa(e, nh);
@@ -1314,7 +1314,7 @@ function G(e, t) {
1314
1314
  //#region src/SvGridDropdown.svelte
1315
1315
  var Ge = e.from_html("<span class=\"sv-grid-chip sv-grid-chip-removable svelte-ei8hp3\"> <span class=\"sv-grid-chip-remove svelte-ei8hp3\" role=\"button\">×</span></span>"), Ke = e.from_html("<span class=\"sv-grid-dropdown-chips svelte-ei8hp3\"></span>"), qe = e.from_html("<span class=\"sv-grid-chip svelte-ei8hp3\"> </span>"), Je = e.from_html("<span class=\"sv-grid-dropdown-label svelte-ei8hp3\"> </span>"), Ye = e.from_html("<input type=\"search\" class=\"sv-grid-dropdown-search\" placeholder=\"Search…\"/>"), Xe = e.from_html("<div class=\"sv-grid-dropdown-empty\"> </div>"), Ze = e.from_html("<span class=\"sv-grid-dropdown-check\" aria-hidden=\"true\"> </span>"), Qe = e.from_html("<span class=\"sv-grid-dropdown-option-chip\"> </span>"), $e = e.from_html("<span class=\"sv-grid-dropdown-option-label\"> </span>"), et = e.from_html("<div role=\"option\"><!> <!></div>"), tt = e.from_html("<div class=\"sv-grid-dropdown-footer\"><button type=\"button\" class=\"sv-grid-dropdown-done\">Done</button></div>"), nt = e.from_html("<div role=\"listbox\"><!> <!> <!></div>"), rt = e.from_html("<div><button type=\"button\" aria-haspopup=\"listbox\"><!> <span class=\"sv-grid-dropdown-caret svelte-ei8hp3\" aria-hidden=\"true\">▾</span></button> <!></div>"), it = {
1316
1316
  hash: "svelte-ei8hp3",
1317
- code: "\r\n /* All colors derive from the grid's host CSS vars so light/dark themes\r\n \"just work\". Hard fallbacks are kept so the component is still\r\n usable in an unthemed page. */.sv-grid-dropdown.svelte-ei8hp3 {position:absolute;top:0;left:0;right:0;height:100%;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-trigger.svelte-ei8hp3 {display:flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;padding:0 8px;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);border:0;outline:none;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;}.sv-grid-dropdown-trigger.svelte-ei8hp3:focus {outline:2px solid var(--sg-accent, #2563eb);outline-offset:-2px;}.sv-grid-dropdown-trigger-chips.svelte-ei8hp3 {align-items:center;padding:4px 8px;flex-wrap:wrap;}.sv-grid-dropdown-chips.svelte-ei8hp3 {display:inline-flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;min-width:0;align-items:center;}.sv-grid-dropdown-label.svelte-ei8hp3 {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-caret.svelte-ei8hp3 {flex:0 0 auto;font-size:10px;opacity:0.7;line-height:1;}\r\n\r\n /* Popover sits absolutely below the trigger. The parent\r\n `.sv-grid-cell-editing` has `overflow: visible`, so this can hang\r\n past the row. Pulls its surface color from the grid's header bg\r\n so it reads as a slightly elevated layer on either theme. */\r\n /* Panel is `position: fixed` AND portal'd into document.body via\r\n `use:portalToBody`, so it escapes every ancestor overflow / clip /\r\n transform / stacking context. Coords come from updatePanelPosition(). */.sv-grid-dropdown-panel {overflow-y:auto;background:var(--sg-header-bg, var(--sg-bg, #ffffff));color:var(--sg-fg, #0f172a);border:1px solid var(--sg-accent, #2563eb);border-radius:6px;box-shadow:0 12px 28px rgba(0, 0, 0, 0.45);padding:4px 0;font-family:inherit;}\r\n /* When the option list fits in one panel we want NO scrollbar at all -\r\n * not even a sub-pixel ghost track. `overflow: visible` rules out the\r\n * scrollbar gutter that some browsers still reserve under\r\n * `overflow: auto` when content equals max-height. */.sv-grid-dropdown-panel.sv-grid-dropdown-panel-fits {overflow:visible;}.sv-grid-dropdown-option {display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;user-select:none;color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.1));}.sv-grid-dropdown-option-selected {font-weight:600;background:var(--sg-selection-bg, rgba(37, 99, 235, 0.15));}.sv-grid-dropdown-option-selected.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.18));}.sv-grid-dropdown-option-label {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-check {flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;color:var(--sg-accent, #2563eb);font-weight:700;}.sv-grid-dropdown-swatch {flex:0 0 12px;width:12px;height:12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-fg, #0f172a) 25%, transparent);}\r\n /* Colored option chip. Declared `:global` because the option panel is\r\n portal'd to <body>, where Svelte's scoped classes don't reach. The\r\n per-chip background / border / text color come from an inline style\r\n (see colorfulChipStyleInline) so each option matches its cell chip. */.sv-grid-dropdown-option-chip {display:inline-flex;align-items:center;max-width:100%;padding:2px 11px;border:1px solid transparent;border-radius:999px;font-size:0.9em;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-empty {padding:8px 10px;color:var(--sg-muted, rgba(15, 23, 42, 0.55));font-style:italic;font-size:0.9em;}.sv-grid-dropdown-footer {display:flex;justify-content:flex-end;padding:4px 6px;border-top:1px solid var(--sg-border, rgba(15, 23, 42, 0.08));margin-top:2px;}.sv-grid-dropdown-done {font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#fff;background:var(--sg-accent, #2563eb);border:0;border-radius:4px;padding:4px 10px;cursor:pointer;}.sv-grid-dropdown-done:hover {filter:brightness(1.12);}\r\n\r\n /* Note: option / footer / swatch styles are declared `:global(...)`\r\n above because the panel is portal'd to <body> and Svelte's scoped\r\n class won't survive on children of an element living outside the\r\n component subtree. */\r\n\r\n /* Theme-aware chip badges. Inside the trigger they sit on the cell\r\n background, so we need a tone that contrasts on BOTH themes - a\r\n translucent accent works well in dark mode and reads as a soft\r\n blue pill in light mode. */.sv-grid-chip.svelte-ei8hp3 {display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:0.85em;line-height:1.4;background:color-mix(in srgb, var(--sg-accent, #2563eb) 18%, transparent);color:var(--sg-fg, #0f172a);border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-accent, #2563eb) 35%, transparent);white-space:nowrap;}.sv-grid-chip-removable.svelte-ei8hp3 {padding-right:2px;}.sv-grid-chip-remove.svelte-ei8hp3 {display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #0f172a) 18%, transparent);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0;}.sv-grid-chip-remove.svelte-ei8hp3:hover {background:rgba(220, 38, 38, 0.7);color:#fff;}"
1317
+ code: "\n /* All colors derive from the grid's host CSS vars so light/dark themes\n \"just work\". Hard fallbacks are kept so the component is still\n usable in an unthemed page. */.sv-grid-dropdown.svelte-ei8hp3 {position:absolute;top:0;left:0;right:0;height:100%;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-trigger.svelte-ei8hp3 {display:flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;padding:0 8px;background:var(--sg-bg, #ffffff);color:var(--sg-fg, #0f172a);border:0;outline:none;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box;}.sv-grid-dropdown-trigger.svelte-ei8hp3:focus {outline:2px solid var(--sg-accent, #2563eb);outline-offset:-2px;}.sv-grid-dropdown-trigger-chips.svelte-ei8hp3 {align-items:center;padding:4px 8px;flex-wrap:wrap;}.sv-grid-dropdown-chips.svelte-ei8hp3 {display:inline-flex;flex-wrap:wrap;gap:4px;flex:1 1 auto;min-width:0;align-items:center;}.sv-grid-dropdown-label.svelte-ei8hp3 {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-caret.svelte-ei8hp3 {flex:0 0 auto;font-size:10px;opacity:0.7;line-height:1;}\n\n /* Popover sits absolutely below the trigger. The parent\n `.sv-grid-cell-editing` has `overflow: visible`, so this can hang\n past the row. Pulls its surface color from the grid's header bg\n so it reads as a slightly elevated layer on either theme. */\n /* Panel is `position: fixed` AND portal'd into document.body via\n `use:portalToBody`, so it escapes every ancestor overflow / clip /\n transform / stacking context. Coords come from updatePanelPosition(). */.sv-grid-dropdown-panel {overflow-y:auto;background:var(--sg-header-bg, var(--sg-bg, #ffffff));color:var(--sg-fg, #0f172a);border:1px solid var(--sg-accent, #2563eb);border-radius:6px;box-shadow:0 12px 28px rgba(0, 0, 0, 0.45);padding:4px 0;font-family:inherit;}\n /* When the option list fits in one panel we want NO scrollbar at all -\n * not even a sub-pixel ghost track. `overflow: visible` rules out the\n * scrollbar gutter that some browsers still reserve under\n * `overflow: auto` when content equals max-height. */.sv-grid-dropdown-panel.sv-grid-dropdown-panel-fits {overflow:visible;}.sv-grid-dropdown-option {display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;user-select:none;color:var(--sg-fg, #0f172a);}.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.1));}.sv-grid-dropdown-option-selected {font-weight:600;background:var(--sg-selection-bg, rgba(37, 99, 235, 0.15));}.sv-grid-dropdown-option-selected.sv-grid-dropdown-option-highlighted {background:var(--sg-row-hover-bg, rgba(37, 99, 235, 0.18));}.sv-grid-dropdown-option-label {flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-check {flex:0 0 16px;display:inline-flex;align-items:center;justify-content:center;color:var(--sg-accent, #2563eb);font-weight:700;}.sv-grid-dropdown-swatch {flex:0 0 12px;width:12px;height:12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-fg, #0f172a) 25%, transparent);}\n /* Colored option chip. Declared `:global` because the option panel is\n portal'd to <body>, where Svelte's scoped classes don't reach. The\n per-chip background / border / text color come from an inline style\n (see colorfulChipStyleInline) so each option matches its cell chip. */.sv-grid-dropdown-option-chip {display:inline-flex;align-items:center;max-width:100%;padding:2px 11px;border:1px solid transparent;border-radius:999px;font-size:0.9em;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-grid-dropdown-empty {padding:8px 10px;color:var(--sg-muted, rgba(15, 23, 42, 0.55));font-style:italic;font-size:0.9em;}.sv-grid-dropdown-footer {display:flex;justify-content:flex-end;padding:4px 6px;border-top:1px solid var(--sg-border, rgba(15, 23, 42, 0.08));margin-top:2px;}.sv-grid-dropdown-done {font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:#fff;background:var(--sg-accent, #2563eb);border:0;border-radius:4px;padding:4px 10px;cursor:pointer;}.sv-grid-dropdown-done:hover {filter:brightness(1.12);}\n\n /* Note: option / footer / swatch styles are declared `:global(...)`\n above because the panel is portal'd to <body> and Svelte's scoped\n class won't survive on children of an element living outside the\n component subtree. */\n\n /* Theme-aware chip badges. Inside the trigger they sit on the cell\n background, so we need a tone that contrasts on BOTH themes - a\n translucent accent works well in dark mode and reads as a soft\n blue pill in light mode. */.sv-grid-chip.svelte-ei8hp3 {display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:0.85em;line-height:1.4;background:color-mix(in srgb, var(--sg-accent, #2563eb) 18%, transparent);color:var(--sg-fg, #0f172a);border-radius:999px;border:1px solid color-mix(in srgb, var(--sg-accent, #2563eb) 35%, transparent);white-space:nowrap;}.sv-grid-chip-removable.svelte-ei8hp3 {padding-right:2px;}.sv-grid-chip-remove.svelte-ei8hp3 {display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:0;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #0f172a) 18%, transparent);color:inherit;font-size:12px;line-height:1;cursor:pointer;padding:0;}.sv-grid-chip-remove.svelte-ei8hp3:hover {background:rgba(220, 38, 38, 0.7);color:#fff;}"
1318
1318
  };
1319
1319
  function at(t, n) {
1320
1320
  e.push(n, !0), e.append_styles(t, it);
@@ -10888,7 +10888,7 @@ e.delegate([
10888
10888
  //#region src/SvGridBoard.svelte
10889
10889
  var lc = e.from_html("<span class=\"sv-board-comment-author svelte-15b6cgu\"> </span>"), uc = e.from_html("<span class=\"sv-board-comment-at svelte-15b6cgu\"> </span>"), dc = e.from_html("<button type=\"button\" class=\"sv-board-comment-del svelte-15b6cgu\" aria-label=\"Delete comment\">×</button>"), fc = e.from_html("<div class=\"sv-board-comment svelte-15b6cgu\"><div class=\"sv-board-comment-body svelte-15b6cgu\"><!> <span class=\"sv-board-comment-text\"> </span> <!></div> <!></div>"), pc = e.from_html("<div class=\"sv-board-comment-empty svelte-15b6cgu\">No comments yet.</div>"), mc = e.from_html("<input class=\"sv-board-comment-add svelte-15b6cgu\" placeholder=\"Write a comment...\"/>"), hc = e.from_html("<!> <!> <!>", 1), gc = e.from_html("<button type=\"button\" class=\"sv-board-lane-toggle svelte-15b6cgu\"> </button>"), _c = e.from_html("<input class=\"sv-board-lane-rename svelte-15b6cgu\"/>"), vc = e.from_html("<span> </span>"), yc = e.from_html("<span class=\"sv-board-lane-summary svelte-15b6cgu\"> </span>"), bc = e.from_html("<button type=\"button\" class=\"sv-board-lane-add svelte-15b6cgu\">+</button>"), xc = e.from_html("<div aria-hidden=\"true\"></div>"), Sc = e.from_html("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Cc = e.from_html("<span class=\"sv-board-card-flag svelte-15b6cgu\" aria-label=\"Blocked\"></span>"), wc = e.from_html("<input type=\"checkbox\" class=\"svelte-15b6cgu\"/>"), Tc = e.from_html("<input class=\"svelte-15b6cgu\"/>"), Ec = e.from_html("<label class=\"sv-board-field svelte-15b6cgu\"><span> </span> <!></label>"), Dc = e.from_html("<form class=\"sv-board-card-edit svelte-15b6cgu\"><!> <div class=\"sv-board-card-edit-actions svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-btn svelte-15b6cgu\">Cancel</button> <button type=\"submit\" class=\"sv-board-btn is-primary svelte-15b6cgu\">Save</button></div></form>"), Oc = e.from_html("<!> <!>", 1), kc = e.from_html("<div class=\"sv-board-card-cover svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Ac = e.from_html("<div class=\"sv-board-card-title svelte-15b6cgu\"> </div>"), jc = e.from_html("<div class=\"sv-board-card-metarow svelte-15b6cgu\"><dt class=\"svelte-15b6cgu\"> </dt> <dd class=\"svelte-15b6cgu\"> </dd></div>"), Mc = e.from_html("<dl class=\"sv-board-card-meta svelte-15b6cgu\"></dl>"), Nc = e.from_html("<!> <!> <!> <!>", 1), Pc = e.from_html("<li><label><input type=\"checkbox\" class=\"svelte-15b6cgu\"/> <span class=\"svelte-15b6cgu\"> </span></label></li>"), Fc = e.from_html("<ul class=\"sv-board-subs-list svelte-15b6cgu\"></ul> <input class=\"sv-board-subs-add svelte-15b6cgu\" placeholder=\"Add subtask...\"/>", 1), Ic = e.from_html("<div class=\"sv-board-subs svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-subs-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-count svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-bar svelte-15b6cgu\" aria-hidden=\"true\"><span class=\"svelte-15b6cgu\"></span></span></button> <!></div>"), Lc = e.from_html("<li class=\"sv-board-kid svelte-15b6cgu\"><span class=\"sv-board-kid-title svelte-15b6cgu\"> </span> <span class=\"sv-board-kid-lane svelte-15b6cgu\"> </span></li>"), Rc = e.from_html("<ul class=\"sv-board-kids-list svelte-15b6cgu\"></ul>"), zc = e.from_html("<div class=\"sv-board-kids svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-kids-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> </button> <!></div>"), Bc = e.from_html("<div class=\"sv-board-comments svelte-15b6cgu\"><!></div>"), Vc = e.from_html("<!> <article role=\"listitem\" tabindex=\"0\" aria-roledescription=\"Draggable card\"><!> <!> <!> <!> <!></article>", 1), Hc = e.from_html("<div aria-hidden=\"true\"></div>"), Uc = e.from_html("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Wc = e.from_html("<div class=\"sv-board-lane-empty svelte-15b6cgu\">No cards</div>"), Gc = e.from_html("<input class=\"sv-board-composer-input svelte-15b6cgu\" placeholder=\"Card title...\"/>"), Kc = e.from_html("<button type=\"button\" class=\"sv-board-composer-btn svelte-15b6cgu\">+ Add a card</button>"), qc = e.from_html("<div role=\"list\"><!> <!> <!> <!></div> <!>", 1), Jc = e.from_html("<section><header><!> <!> <span> <!></span> <!> <!></header> <!></section>"), Yc = e.from_html("<span class=\"sv-board-badge is-blocked svelte-15b6cgu\">Blocked</span>"), Xc = e.from_html("<span class=\"sv-board-badge is-label svelte-15b6cgu\"> </span>"), Zc = e.from_html("<span> </span>"), Qc = e.from_html("<span class=\"sv-board-badge is-meta svelte-15b6cgu\" title=\"Age\"> </span>"), $c = e.from_html("<button type=\"button\" class=\"sv-board-badge is-meta is-btn svelte-15b6cgu\" title=\"Comments\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M2 3h12v8H8l-3 2v-2H2z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"></path></svg> </button>"), el = e.from_html("<span class=\"sv-board-badge is-meta svelte-15b6cgu\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M11 5.5 6.5 10a2 2 0 0 1-3-3l5-5a3 3 0 0 1 4 4l-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg> </span>"), tl = e.from_html("<span class=\"sv-board-avatar svelte-15b6cgu\"> </span>"), nl = e.from_html("<span class=\"sv-board-avatars svelte-15b6cgu\"></span>"), rl = e.from_html("<div class=\"sv-board-badges svelte-15b6cgu\"><!> <!> <!> <!> <!> <!> <!></div>"), il = e.from_html("<button type=\"button\"> <span class=\"sv-board-facet-count svelte-15b6cgu\"> </span></button>"), al = e.from_html("<button type=\"button\" class=\"sv-board-facet-clear svelte-15b6cgu\">Clear filters</button>"), ol = e.from_html("<div class=\"sv-board-facets svelte-15b6cgu\"><!> <!></div>"), sl = e.from_html("<button type=\"button\" class=\"sv-board-swim-toggle svelte-15b6cgu\"> </button>"), cl = e.from_html("<span class=\"sv-board-swim-summary svelte-15b6cgu\"> </span>"), ll = e.from_html("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), ul = e.from_html("<section class=\"sv-board-swim svelte-15b6cgu\"><header class=\"sv-board-swim-head svelte-15b6cgu\"><!> <span class=\"sv-board-swim-title\"> </span> <span class=\"sv-board-swim-count svelte-15b6cgu\"> </span> <!></header> <!></section>"), dl = e.from_html("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), fl = e.from_html("<div class=\"sv-board-ctx\" aria-label=\"Card actions\"><!></div>"), pl = e.from_html("<div class=\"sv-board-drawer-comments svelte-15b6cgu\"><div class=\"sv-board-drawer-h svelte-15b6cgu\">Comments</div> <!></div>"), ml = e.from_html("<!> <!>", 1), hl = e.from_html("<div role=\"group\" aria-label=\"Board\"><!> <!> <div class=\"sv-board-sr svelte-15b6cgu\" aria-live=\"polite\" role=\"status\"> </div></div> <!> <!>", 1), gl = {
10890
10890
  hash: "svelte-15b6cgu",
10891
- code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\r\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\r\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\r\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\r\n opacity 0.12s ease,\r\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\r\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\r\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\r\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\r\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\r\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\r\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\r\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\r\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\r\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\r\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\r\n .sv-board-lane-body.svelte-15b6cgu,\r\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\r\n }"
10891
+ code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\n opacity 0.12s ease,\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\n .sv-board-lane-body.svelte-15b6cgu,\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\n }"
10892
10892
  };
10893
10893
  function _l(t, r) {
10894
10894
  e.push(r, !0), e.append_styles(t, gl);
package/package.json CHANGED
@@ -1,92 +1,92 @@
1
- {
2
- "name": "@svgrid/grid",
3
- "version": "2.1.0",
4
- "description": "SvGrid - a headless-first, Svelte 5-native data grid engine and render component.",
5
- "author": "jQWidgets <boikom@jqwidgets.com>",
6
- "license": "MIT",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/sv-grid/sv-grid.git",
10
- "directory": "packages/grid"
11
- },
12
- "homepage": "https://svgrid.com",
13
- "keywords": [
14
- "svelte",
15
- "grid",
16
- "table",
17
- "headless",
18
- "datagrid"
19
- ],
20
- "type": "module",
21
- "types": "dist/index.d.ts",
22
- "module": "dist/index.js",
23
- "svelte": "./dist/index.js",
24
- "unpkg": "./dist/cdn/svgrid.js",
25
- "jsdelivr": "./dist/cdn/svgrid.js",
26
- "exports": {
27
- ".": {
28
- "types": "./dist/index.d.ts",
29
- "svelte": "./dist/index.js",
30
- "import": "./dist/index.js"
31
- },
32
- "./cdn": {
33
- "import": "./dist/cdn/svgrid.js",
34
- "default": "./dist/cdn/svgrid.js"
35
- },
36
- "./cdn/svelte-external": {
37
- "import": "./dist/cdn/svgrid.svelte-external.js",
38
- "default": "./dist/cdn/svgrid.svelte-external.js"
39
- },
40
- "./static-functions": {
41
- "types": "./dist/static-functions.d.ts",
42
- "svelte": "./dist/static-functions.js",
43
- "import": "./dist/static-functions.js"
44
- },
45
- "./format": {
46
- "types": "./dist/export-format.d.ts",
47
- "svelte": "./dist/export-format.js",
48
- "import": "./dist/export-format.js"
49
- },
50
- "./flex-render": {
51
- "types": "./dist/flex-render.d.ts",
52
- "svelte": "./dist/flex-render.js",
53
- "import": "./dist/flex-render.js"
54
- },
55
- "./themes": {
56
- "types": "./dist/themes/index.d.ts",
57
- "svelte": "./dist/themes/index.js",
58
- "import": "./dist/themes/index.js"
59
- },
60
- "./themes/*.css": "./themes/*.css",
61
- "./package.json": "./package.json"
62
- },
63
- "engines": {
64
- "node": ">=16"
65
- },
66
- "files": [
67
- "dist",
68
- "src",
69
- "themes"
70
- ],
71
- "scripts": {
72
- "clean": "rimraf ./build && rimraf ./dist",
73
- "test:eslint": "eslint ./src",
74
- "test:types": "svelte-check --tsconfig ./tsconfig.json",
75
- "test:lib": "vitest run --coverage",
76
- "test:build": "publint --strict",
77
- "build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-themes.mjs"
78
- },
79
- "devDependencies": {
80
- "@sveltejs/package": "^2.5.7",
81
- "@sveltejs/vite-plugin-svelte": "^7.0.0",
82
- "@vitest/coverage-v8": "^4.1.5",
83
- "eslint-plugin-svelte": "^3.17.1",
84
- "jsdom": "^29.1.1",
85
- "publint": "^0.3.21",
86
- "svelte": "^5.55.5",
87
- "svelte-check": "^4.4.6"
88
- },
89
- "peerDependencies": {
90
- "svelte": "^5.0.0"
91
- }
92
- }
1
+ {
2
+ "name": "@svgrid/grid",
3
+ "version": "2.1.2",
4
+ "description": "SvGrid - a headless-first, Svelte 5-native data grid engine and render component.",
5
+ "author": "jQWidgets <boikom@jqwidgets.com>",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/sv-grid/sv-grid.git",
10
+ "directory": "packages/grid"
11
+ },
12
+ "homepage": "https://svgrid.com",
13
+ "keywords": [
14
+ "svelte",
15
+ "grid",
16
+ "table",
17
+ "headless",
18
+ "datagrid"
19
+ ],
20
+ "type": "module",
21
+ "types": "dist/index.d.ts",
22
+ "module": "dist/index.js",
23
+ "svelte": "./dist/index.js",
24
+ "unpkg": "./dist/cdn/svgrid.js",
25
+ "jsdelivr": "./dist/cdn/svgrid.js",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "svelte": "./dist/index.js",
30
+ "import": "./dist/index.js"
31
+ },
32
+ "./cdn": {
33
+ "import": "./dist/cdn/svgrid.js",
34
+ "default": "./dist/cdn/svgrid.js"
35
+ },
36
+ "./cdn/svelte-external": {
37
+ "import": "./dist/cdn/svgrid.svelte-external.js",
38
+ "default": "./dist/cdn/svgrid.svelte-external.js"
39
+ },
40
+ "./static-functions": {
41
+ "types": "./dist/static-functions.d.ts",
42
+ "svelte": "./dist/static-functions.js",
43
+ "import": "./dist/static-functions.js"
44
+ },
45
+ "./format": {
46
+ "types": "./dist/export-format.d.ts",
47
+ "svelte": "./dist/export-format.js",
48
+ "import": "./dist/export-format.js"
49
+ },
50
+ "./flex-render": {
51
+ "types": "./dist/flex-render.d.ts",
52
+ "svelte": "./dist/flex-render.js",
53
+ "import": "./dist/flex-render.js"
54
+ },
55
+ "./themes": {
56
+ "types": "./dist/themes/index.d.ts",
57
+ "svelte": "./dist/themes/index.js",
58
+ "import": "./dist/themes/index.js"
59
+ },
60
+ "./themes/*.css": "./themes/*.css",
61
+ "./package.json": "./package.json"
62
+ },
63
+ "engines": {
64
+ "node": ">=16"
65
+ },
66
+ "files": [
67
+ "dist",
68
+ "src",
69
+ "themes"
70
+ ],
71
+ "scripts": {
72
+ "clean": "rimraf ./build && rimraf ./dist",
73
+ "test:eslint": "eslint ./src",
74
+ "test:types": "svelte-check --tsconfig ./tsconfig.json",
75
+ "test:lib": "vitest run --coverage",
76
+ "test:build": "publint --strict",
77
+ "build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-themes.mjs"
78
+ },
79
+ "devDependencies": {
80
+ "@sveltejs/package": "^2.5.7",
81
+ "@sveltejs/vite-plugin-svelte": "^7.0.0",
82
+ "@vitest/coverage-v8": "^4.1.5",
83
+ "eslint-plugin-svelte": "^3.17.1",
84
+ "jsdom": "^29.1.1",
85
+ "publint": "^0.3.21",
86
+ "svelte": "^5.55.5",
87
+ "svelte-check": "^4.4.6"
88
+ },
89
+ "peerDependencies": {
90
+ "svelte": "^5.0.0"
91
+ }
92
+ }