@ornery/ui-grid-vanilla 1.0.7 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +1 -1
  2. package/dist/adopt-styles.d.ts +2 -0
  3. package/dist/adopt-styles.d.ts.map +1 -0
  4. package/dist/attribute-bridge.d.ts +39 -0
  5. package/dist/attribute-bridge.d.ts.map +1 -0
  6. package/dist/browser/ui-grid-element.js +4 -4
  7. package/dist/browser.d.ts +3 -0
  8. package/dist/browser.d.ts.map +1 -0
  9. package/dist/components/grid-body-cell/grid-body-cell.d.ts +19 -0
  10. package/dist/components/grid-body-cell/grid-body-cell.d.ts.map +1 -0
  11. package/dist/components/grid-body-cell/index.d.ts +2 -0
  12. package/dist/components/grid-body-cell/index.d.ts.map +1 -0
  13. package/dist/components/grid-cell-editor/grid-cell-editor.d.ts +28 -0
  14. package/dist/components/grid-cell-editor/grid-cell-editor.d.ts.map +1 -0
  15. package/dist/components/grid-cell-editor/index.d.ts +2 -0
  16. package/dist/components/grid-cell-editor/index.d.ts.map +1 -0
  17. package/dist/components/grid-filter-cell/grid-filter-cell.d.ts +32 -0
  18. package/dist/components/grid-filter-cell/grid-filter-cell.d.ts.map +1 -0
  19. package/dist/components/grid-filter-cell/grid-filter-cell.template.d.ts +8 -0
  20. package/dist/components/grid-filter-cell/grid-filter-cell.template.d.ts.map +1 -0
  21. package/dist/components/grid-filter-cell/index.d.ts +2 -0
  22. package/dist/components/grid-filter-cell/index.d.ts.map +1 -0
  23. package/dist/components/grid-group-row/grid-group-row.d.ts +55 -0
  24. package/dist/components/grid-group-row/grid-group-row.d.ts.map +1 -0
  25. package/dist/components/grid-group-row/grid-group-row.template.d.ts +12 -0
  26. package/dist/components/grid-group-row/grid-group-row.template.d.ts.map +1 -0
  27. package/dist/components/grid-group-row/index.d.ts +2 -0
  28. package/dist/components/grid-group-row/index.d.ts.map +1 -0
  29. package/dist/components/grid-header-cell/grid-header-cell.d.ts +13 -0
  30. package/dist/components/grid-header-cell/grid-header-cell.d.ts.map +1 -0
  31. package/dist/components/grid-header-cell/index.d.ts +2 -0
  32. package/dist/components/grid-header-cell/index.d.ts.map +1 -0
  33. package/dist/components/grid-pagination/grid-pagination.d.ts +45 -0
  34. package/dist/components/grid-pagination/grid-pagination.d.ts.map +1 -0
  35. package/dist/components/grid-pagination/grid-pagination.template.d.ts +17 -0
  36. package/dist/components/grid-pagination/grid-pagination.template.d.ts.map +1 -0
  37. package/dist/components/grid-pagination/index.d.ts +2 -0
  38. package/dist/components/grid-pagination/index.d.ts.map +1 -0
  39. package/dist/components/grid-template/grid-template.d.ts +31 -0
  40. package/dist/components/grid-template/grid-template.d.ts.map +1 -0
  41. package/dist/components/grid-template/index.d.ts +2 -0
  42. package/dist/components/grid-template/index.d.ts.map +1 -0
  43. package/dist/events.d.ts +43 -0
  44. package/dist/events.d.ts.map +1 -0
  45. package/dist/focus.d.ts +100 -0
  46. package/dist/focus.d.ts.map +1 -0
  47. package/dist/framework-slots.d.ts +170 -0
  48. package/dist/framework-slots.d.ts.map +1 -0
  49. package/dist/grid-controller.d.ts +363 -0
  50. package/dist/grid-controller.d.ts.map +1 -0
  51. package/dist/icons.d.ts +34 -0
  52. package/dist/icons.d.ts.map +1 -0
  53. package/dist/index.d.ts +11 -902
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +4 -4
  56. package/dist/index.mjs +4 -4
  57. package/dist/patch.d.ts +88 -0
  58. package/dist/patch.d.ts.map +1 -0
  59. package/dist/render.d.ts +62 -0
  60. package/dist/render.d.ts.map +1 -0
  61. package/dist/templates/index.d.ts +24 -0
  62. package/dist/templates/index.d.ts.map +1 -0
  63. package/dist/ui-grid-empty.template.d.ts +8 -0
  64. package/dist/ui-grid-empty.template.d.ts.map +1 -0
  65. package/dist/ui-grid-shell.template.d.ts +17 -0
  66. package/dist/ui-grid-shell.template.d.ts.map +1 -0
  67. package/dist/ui-grid-standalone.element.d.ts +309 -0
  68. package/dist/ui-grid-standalone.element.d.ts.map +1 -0
  69. package/dist/utils/cell-class.d.ts +9 -0
  70. package/dist/utils/cell-class.d.ts.map +1 -0
  71. package/dist/utils/display-items.d.ts +11 -0
  72. package/dist/utils/display-items.d.ts.map +1 -0
  73. package/dist/utils/dom.d.ts +22 -0
  74. package/dist/utils/dom.d.ts.map +1 -0
  75. package/package.json +13 -10
  76. package/tsconfig.dts.json +15 -0
  77. package/tsconfig.json +0 -1
  78. package/tsup.config.ts +1 -1
  79. package/dist/index.d.mts +0 -904
package/README.md CHANGED
@@ -243,7 +243,7 @@ export default defineConfig({
243
243
 
244
244
  ## API
245
245
 
246
- ### `mountVanillaUiGrid(target, options, rustModule?, tagName?)`
246
+ ### `mountVanillaUiGrid(target, options, wasmModule?, tagName?)`
247
247
 
248
248
  Mount a grid into a target element. Returns the grid element.
249
249
 
@@ -0,0 +1,2 @@
1
+ export declare function adoptStyles(shadowRoot: ShadowRoot, css: string, key: object): void;
2
+ //# sourceMappingURL=adopt-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adopt-styles.d.ts","sourceRoot":"","sources":["../src/adopt-styles.ts"],"names":[],"mappings":"AAiBA,wBAAgB,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAqBlF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Declarative attribute bridge.
3
+ *
4
+ * The grid element accepts its full `GridOptions` shape through HTML
5
+ * attributes so it can be driven declaratively from any framework (or
6
+ * plain HTML). This module owns:
7
+ *
8
+ * - `OBSERVED_GRID_ATTRIBUTES`: the list passed to `observedAttributes`
9
+ * - `parseGridAttributeOptions(el)`: reads attributes off an element and
10
+ * returns the `Partial<GridOptions>` they describe
11
+ * - the individual attribute parsers (boolean / tri-state / number / JSON)
12
+ *
13
+ * The element keeps its own `attributeOptions` cache and `buildEffectiveOptions`
14
+ * merge so JS-set properties can override attribute values, but the parsing
15
+ * itself lives here.
16
+ */
17
+ import type { GridOptions } from '@ornery/ui-grid-core';
18
+ /** The list passed to `static observedAttributes`. Every kebab-case name
19
+ * that corresponds to a GridOptions field lives here. */
20
+ export declare const OBSERVED_GRID_ATTRIBUTES: readonly string[];
21
+ /**
22
+ * Read every supported attribute off the element and produce the
23
+ * corresponding `Partial<GridOptions>`. Missing attributes are simply
24
+ * absent from the result — the element merges this with its imperative
25
+ * `options` setter so JS-set properties win.
26
+ */
27
+ export declare function parseGridAttributeOptions(el: Element): Partial<GridOptions>;
28
+ /** Present attribute → true. Absent → undefined (no override). */
29
+ export declare function parseBoolean(el: Element, name: string): boolean | undefined;
30
+ /**
31
+ * Tri-state boolean. Present + empty/"true" → true; "false"/"0"/"off" →
32
+ * false; absent → undefined. Use for flags that default to true in the
33
+ * model so consumers can opt out with `attr="false"` without removing
34
+ * the attribute.
35
+ */
36
+ export declare function parseTriStateBoolean(el: Element, name: string): boolean | undefined;
37
+ export declare function parseNumber(el: Element, name: string): number | undefined;
38
+ export declare function parseJson<T = unknown>(el: Element, name: string): T | undefined;
39
+ //# sourceMappingURL=attribute-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-bridge.d.ts","sourceRoot":"","sources":["../src/attribute-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAiB,WAAW,EAAc,MAAM,sBAAsB,CAAC;AAEnF;yDACyD;AACzD,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAuDrD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAwK3E;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAOnF;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzE;AAED,wBAAgB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAS/E"}
@@ -7724,7 +7724,7 @@ function createVanillaGridController(options) {
7724
7724
  return new VanillaGridController(options);
7725
7725
  }
7726
7726
 
7727
- // scss-inline:/home/runner/work/uiGrid/uiGrid/projects/ui-grid-vanilla/src/ui-grid-shell.scss
7727
+ // scss-inline:/home/runner/work/ui-grid/ui-grid/projects/ui-grid-vanilla/src/ui-grid-shell.scss
7728
7728
  var ui_grid_shell_default = ':host{--_ui-grid-border-color: var(--ui-grid-border-color, var(--app-ui-grid-border-color, #d4d4d8));--_ui-grid-header-background: var( --ui-grid-header-background, var(--app-ui-grid-header-background, #f3f4f6) );--_ui-grid-row-odd: var(--ui-grid-row-odd, var(--app-ui-grid-row-odd, #fcfcfd));--_ui-grid-row-even: var(--ui-grid-row-even, var(--app-ui-grid-row-even, #f7f7f8));--_ui-grid-row-hover: var( --ui-grid-row-hover, var( --app-ui-grid-row-hover, color-mix(in srgb, var(--_ui-grid-accent) 4%, var(--_ui-grid-surface)) ) );--_ui-grid-row-focus-background: var( --ui-grid-row-focus-background, var( --app-ui-grid-row-focus-background, color-mix(in srgb, var(--_ui-grid-accent) 9%, var(--_ui-grid-surface)) ) );--_ui-grid-cell-color: var(--ui-grid-cell-color, var(--app-ui-grid-cell-color, #111827));--_ui-grid-muted-color: var(--ui-grid-muted-color, var(--app-ui-grid-muted-color, #6b7280));--_ui-grid-surface: var(--ui-grid-surface, var(--app-ui-grid-surface, #ffffff));--_ui-grid-radius: var(--ui-grid-radius, var(--app-ui-grid-radius, 4px));--_ui-grid-shadow: var( --ui-grid-shadow, var(--app-ui-grid-shadow, 0 10px 24px rgba(15, 23, 42, 0.08)) );--_ui-grid-header-weight: var(--ui-grid-header-weight, var(--app-ui-grid-header-weight, 700));--_ui-grid-accent: var(--ui-grid-accent, var(--app-ui-grid-accent, #2563eb));--_ui-grid-group-background: var( --ui-grid-group-background, var(--app-ui-grid-group-background, #eceff3) );--_ui-grid-status-active-bg: var( --ui-grid-status-active-bg, var(--app-ui-grid-status-active-bg, rgba(22, 163, 74, 0.14)) );--_ui-grid-status-active-color: var( --ui-grid-status-active-color, var(--app-ui-grid-status-active-color, #166534) );--_ui-grid-status-expansion-bg: var( --ui-grid-status-expansion-bg, var(--app-ui-grid-status-expansion-bg, rgba(37, 99, 235, 0.14)) );--_ui-grid-status-expansion-color: var( --ui-grid-status-expansion-color, var(--app-ui-grid-status-expansion-color, #1d4ed8) );--_ui-grid-status-enterprise-bg: var( --ui-grid-status-enterprise-bg, var(--app-ui-grid-status-enterprise-bg, rgba(15, 118, 110, 0.14)) );--_ui-grid-status-enterprise-color: var( --ui-grid-status-enterprise-color, var(--app-ui-grid-status-enterprise-color, #115e59) );--_ui-grid-status-pilot-bg: var( --ui-grid-status-pilot-bg, var(--app-ui-grid-status-pilot-bg, rgba(234, 88, 12, 0.14)) );--_ui-grid-status-pilot-color: var( --ui-grid-status-pilot-color, var(--app-ui-grid-status-pilot-color, #c2410c) );--_ui-grid-shell-gap: var(--ui-grid-shell-gap, var(--app-ui-grid-shell-gap, 1.5rem));--_ui-grid-hero-gap: var(--ui-grid-hero-gap, var(--app-ui-grid-hero-gap, 1.5rem));--_ui-grid-hero-padding-block: var( --ui-grid-hero-padding-block, var(--app-ui-grid-hero-padding-block, 1rem) );--_ui-grid-eyebrow-margin-block-end: var( --ui-grid-eyebrow-margin-block-end, var(--app-ui-grid-eyebrow-margin-block-end, 0.5rem) );--_ui-grid-eyebrow-letter-spacing: var( --ui-grid-eyebrow-letter-spacing, var(--app-ui-grid-eyebrow-letter-spacing, 0.18em) );--_ui-grid-eyebrow-font-size: var( --ui-grid-eyebrow-font-size, var(--app-ui-grid-eyebrow-font-size, 0.72rem) );--_ui-grid-hero-title-font-size: var( --ui-grid-hero-title-font-size, var(--app-ui-grid-hero-title-font-size, clamp(1.4rem, 2vw, 2rem)) );--_ui-grid-hero-title-line-height: var( --ui-grid-hero-title-line-height, var(--app-ui-grid-hero-title-line-height, 1.1) );--_ui-grid-hero-deck-max-width: var( --ui-grid-hero-deck-max-width, var(--app-ui-grid-hero-deck-max-width, 56ch) );--_ui-grid-hero-deck-margin-block-start: var( --ui-grid-hero-deck-margin-block-start, var(--app-ui-grid-hero-deck-margin-block-start, 0.75rem) );--_ui-grid-hero-actions-gap: var( --ui-grid-hero-actions-gap, var(--app-ui-grid-hero-actions-gap, 1rem) );--_ui-grid-action-radius: var(--ui-grid-action-radius, var(--app-ui-grid-action-radius, 999px));--_ui-grid-action-padding-block: var( --ui-grid-action-padding-block, var(--app-ui-grid-action-padding-block, 0.8rem) );--_ui-grid-action-padding-inline: var( --ui-grid-action-padding-inline, var(--app-ui-grid-action-padding-inline, 1.1rem) );--_ui-grid-stats-card-min-width: var( --ui-grid-stats-card-min-width, var(--app-ui-grid-stats-card-min-width, 8rem) );--_ui-grid-stats-card-padding-block: var( --ui-grid-stats-card-padding-block, var(--app-ui-grid-stats-card-padding-block, 0.85rem) );--_ui-grid-stats-card-padding-inline: var( --ui-grid-stats-card-padding-inline, var(--app-ui-grid-stats-card-padding-inline, 1rem) );--_ui-grid-stats-card-value-font-size: var( --ui-grid-stats-card-value-font-size, var(--app-ui-grid-stats-card-value-font-size, 1.9rem) );--_ui-grid-metrics-gap: var(--ui-grid-metrics-gap, var(--app-ui-grid-metrics-gap, 1rem));--_ui-grid-metric-card-padding-block: var( --ui-grid-metric-card-padding-block, var(--app-ui-grid-metric-card-padding-block, 1rem) );--_ui-grid-metric-card-padding-inline: var( --ui-grid-metric-card-padding-inline, var(--app-ui-grid-metric-card-padding-inline, 1.1rem) );--_ui-grid-metric-value-font-size: var( --ui-grid-metric-value-font-size, var(--app-ui-grid-metric-value-font-size, 1.3rem) );--_ui-grid-toolbar-gap: var(--ui-grid-toolbar-gap, var(--app-ui-grid-toolbar-gap, 1rem));--_ui-grid-toolbar-padding-block: var( --ui-grid-toolbar-padding-block, var(--app-ui-grid-toolbar-padding-block, 1rem) );--_ui-grid-toolbar-padding-inline: var( --ui-grid-toolbar-padding-inline, var(--app-ui-grid-toolbar-padding-inline, 1.25rem) );--_ui-grid-toolbar-inline-gap: var( --ui-grid-toolbar-inline-gap, var(--app-ui-grid-toolbar-inline-gap, 0.4rem) );--_ui-grid-overflow-x: var(--ui-grid-overflow-x, var(--app-ui-grid-overflow-x, auto));--_ui-grid-overflow-y: var(--ui-grid-overflow-y, var(--app-ui-grid-overflow-y, auto));--_ui-grid-header-z-index: var(--ui-grid-header-z-index, var(--app-ui-grid-header-z-index, 3));--_ui-grid-pinned-cell-z-index: var( --ui-grid-pinned-cell-z-index, var(--app-ui-grid-pinned-cell-z-index, 2) );--_ui-grid-pin-menu-open-z-index: var( --ui-grid-pin-menu-open-z-index, var(--app-ui-grid-pin-menu-open-z-index, 8) );--_ui-grid-pin-menu-z-index: var(--ui-grid-pin-menu-z-index, var(--app-ui-grid-pin-menu-z-index, 20));--_ui-grid-header-cell-gap: var( --ui-grid-header-cell-gap, var(--app-ui-grid-header-cell-gap, 0.75rem) );--_ui-grid-header-cell-padding-block: var( --ui-grid-header-cell-padding-block, var(--app-ui-grid-header-cell-padding-block, 0.85rem) );--_ui-grid-header-cell-padding-inline: var( --ui-grid-header-cell-padding-inline, var(--app-ui-grid-header-cell-padding-inline, 1rem) );--_ui-grid-header-cell-background-active: var( --ui-grid-header-cell-background-active, var( --app-ui-grid-header-cell-background-active, color-mix(in srgb, var(--_ui-grid-accent) 8%, var(--_ui-grid-header-background)) ) );--_ui-grid-pinned-divider-shadow-left: var( --ui-grid-pinned-divider-shadow-left, var( --app-ui-grid-pinned-divider-shadow-left, 2px 0 4px rgba(0, 0, 0, 0.06) ) );--_ui-grid-pinned-divider-shadow-right: var( --ui-grid-pinned-divider-shadow-right, var( --app-ui-grid-pinned-divider-shadow-right, -2px 0 4px rgba(0, 0, 0, 0.06) ) );--_ui-grid-pinned-divider-clip-left: var( --ui-grid-pinned-divider-clip-left, var(--app-ui-grid-pinned-divider-clip-left, inset(0 -4px 0 0)) );--_ui-grid-pinned-divider-clip-right: var( --ui-grid-pinned-divider-clip-right, var(--app-ui-grid-pinned-divider-clip-right, inset(0 0 0 -4px)) );--_ui-grid-header-actions-gap: var( --ui-grid-header-actions-gap, var(--app-ui-grid-header-actions-gap, 0.4rem) );--_ui-grid-control-size: var(--ui-grid-control-size, var(--app-ui-grid-control-size, 2rem));--_ui-grid-control-radius: var( --ui-grid-control-radius, var(--app-ui-grid-control-radius, 999px) );--_ui-grid-control-icon-size: var( --ui-grid-control-icon-size, var(--app-ui-grid-control-icon-size, 1rem) );--_ui-grid-control-background: var( --ui-grid-control-background, var(--app-ui-grid-control-background, var(--_ui-grid-surface)) );--_ui-grid-control-border-color: var( --ui-grid-control-border-color, var(--app-ui-grid-control-border-color, var(--_ui-grid-border-color)) );--_ui-grid-control-color: var( --ui-grid-control-color, var(--app-ui-grid-control-color, var(--_ui-grid-muted-color)) );--_ui-grid-control-background-active: var( --ui-grid-control-background-active, var( --app-ui-grid-control-background-active, color-mix(in srgb, var(--_ui-grid-accent) 12%, var(--_ui-grid-surface)) ) );--_ui-grid-control-border-color-active: var( --ui-grid-control-border-color-active, var( --app-ui-grid-control-border-color-active, color-mix(in srgb, var(--_ui-grid-accent) 35%, var(--_ui-grid-border-color)) ) );--_ui-grid-control-color-active: var( --ui-grid-control-color-active, var(--app-ui-grid-control-color-active, var(--_ui-grid-accent)) );--_ui-grid-pin-menu-offset-block-start: var( --ui-grid-pin-menu-offset-block-start, var(--app-ui-grid-pin-menu-offset-block-start, 0.35rem) );--_ui-grid-pin-menu-gap: var(--ui-grid-pin-menu-gap, var(--app-ui-grid-pin-menu-gap, 0.25rem));--_ui-grid-pin-menu-padding: var( --ui-grid-pin-menu-padding, var(--app-ui-grid-pin-menu-padding, 0.25rem) );--_ui-grid-pin-menu-radius: var(--ui-grid-pin-menu-radius, var(--app-ui-grid-pin-menu-radius, 999px));--_ui-grid-pin-menu-shadow: var( --ui-grid-pin-menu-shadow, var( --app-ui-grid-pin-menu-shadow, 0 10px 24px color-mix(in srgb, var(--_ui-grid-cell-color) 10%, transparent) ) );--_ui-grid-pin-menu-action-size: var( --ui-grid-pin-menu-action-size, var(--app-ui-grid-pin-menu-action-size, 1.75rem) );--_ui-grid-pin-control-collapsed-size: var( --ui-grid-pin-control-collapsed-size, var(--app-ui-grid-pin-control-collapsed-size, 1px) );--_ui-grid-pin-control-transition-duration: var( --ui-grid-pin-control-transition-duration, var(--app-ui-grid-pin-control-transition-duration, 160ms) );--_ui-grid-pin-control-transition-easing: var( --ui-grid-pin-control-transition-easing, var(--app-ui-grid-pin-control-transition-easing, cubic-bezier(0.22, 1, 0.36, 1)) );--_ui-grid-pin-menu-scale-closed: var( --ui-grid-pin-menu-scale-closed, var(--app-ui-grid-pin-menu-scale-closed, 0.72) );--_ui-grid-filter-cell-padding-block-start: var( --ui-grid-filter-cell-padding-block-start, var(--app-ui-grid-filter-cell-padding-block-start, 0.75rem) );--_ui-grid-filter-cell-padding-block-end: var( --ui-grid-filter-cell-padding-block-end, var(--app-ui-grid-filter-cell-padding-block-end, 1rem) );--_ui-grid-filter-cell-padding-inline: var( --ui-grid-filter-cell-padding-inline, var(--app-ui-grid-filter-cell-padding-inline, 1rem) );--_ui-grid-filter-input-padding-block: var( --ui-grid-filter-input-padding-block, var(--app-ui-grid-filter-input-padding-block, 0.55rem) );--_ui-grid-filter-input-padding-inline: var( --ui-grid-filter-input-padding-inline, var(--app-ui-grid-filter-input-padding-inline, 0.7rem) );--_ui-grid-filter-input-focus-outline: var( --ui-grid-filter-input-focus-outline, var( --app-ui-grid-filter-input-focus-outline, 2px solid color-mix(in srgb, var(--_ui-grid-accent) 18%, transparent) ) );--_ui-grid-body-cell-padding-block: var( --ui-grid-body-cell-padding-block, var(--app-ui-grid-body-cell-padding-block, 0.95rem) );--_ui-grid-body-cell-padding-inline: var( --ui-grid-body-cell-padding-inline, var(--app-ui-grid-body-cell-padding-inline, 1rem) );--_ui-grid-cell-shell-gap: var(--ui-grid-cell-shell-gap, var(--app-ui-grid-cell-shell-gap, 0.55rem));--_ui-grid-row-toggle-size: var(--ui-grid-row-toggle-size, var(--app-ui-grid-row-toggle-size, 1.55rem));--_ui-grid-row-toggle-radius: var( --ui-grid-row-toggle-radius, var(--app-ui-grid-row-toggle-radius, 999px) );--_ui-grid-toggle-icon-size: var( --ui-grid-toggle-icon-size, var(--app-ui-grid-toggle-icon-size, 1.1rem) );--_ui-grid-group-disclosure-icon-size: var( --ui-grid-group-disclosure-icon-size, var(--app-ui-grid-group-disclosure-icon-size, 0.9rem) );--_ui-grid-pagination-icon-size: var( --ui-grid-pagination-icon-size, var(--app-ui-grid-pagination-icon-size, 1.2rem) );--_ui-grid-expandable-row-padding-block: var( --ui-grid-expandable-row-padding-block, var(--app-ui-grid-expandable-row-padding-block, 1rem) );--_ui-grid-expandable-row-padding-inline: var( --ui-grid-expandable-row-padding-inline, var(--app-ui-grid-expandable-row-padding-inline, 1.25rem) );--_ui-grid-expandable-row-background: var( --ui-grid-expandable-row-background, var( --app-ui-grid-expandable-row-background, color-mix(in srgb, var(--_ui-grid-accent) 4%, var(--_ui-grid-surface)) ) );--_ui-grid-cell-focus-background: var( --ui-grid-cell-focus-background, var( --app-ui-grid-cell-focus-background, color-mix(in srgb, var(--_ui-grid-accent) 14%, var(--_ui-grid-surface)) ) );--_ui-grid-cell-focus-ring: var( --ui-grid-cell-focus-ring, var( --app-ui-grid-cell-focus-ring, inset 0 0 0 1px color-mix(in srgb, var(--_ui-grid-accent) 28%, transparent) ) );--_ui-grid-cell-editing-background: var( --ui-grid-cell-editing-background, var( --app-ui-grid-cell-editing-background, color-mix(in srgb, var(--_ui-grid-accent) 7%, var(--_ui-grid-surface)) ) );--_ui-grid-cell-editor-border-color: var( --ui-grid-cell-editor-border-color, var( --app-ui-grid-cell-editor-border-color, color-mix(in srgb, var(--_ui-grid-accent) 45%, var(--_ui-grid-border-color)) ) );--_ui-grid-cell-editor-radius: var( --ui-grid-cell-editor-radius, var(--app-ui-grid-cell-editor-radius, calc(var(--_ui-grid-radius) - 1px)) );--_ui-grid-cell-editor-padding-block: var( --ui-grid-cell-editor-padding-block, var(--app-ui-grid-cell-editor-padding-block, 0.45rem) );--_ui-grid-cell-editor-padding-inline: var( --ui-grid-cell-editor-padding-inline, var(--app-ui-grid-cell-editor-padding-inline, 0.55rem) );--_ui-grid-cell-editor-focus-outline: var( --ui-grid-cell-editor-focus-outline, var( --app-ui-grid-cell-editor-focus-outline, 2px solid color-mix(in srgb, var(--_ui-grid-accent) 18%, transparent) ) );--_ui-grid-group-row-gap: var(--ui-grid-group-row-gap, var(--app-ui-grid-group-row-gap, 0.9rem));--_ui-grid-group-row-padding-block: var( --ui-grid-group-row-padding-block, var(--app-ui-grid-group-row-padding-block, 0.9rem) );--_ui-grid-group-row-padding-inline: var( --ui-grid-group-row-padding-inline, var(--app-ui-grid-group-row-padding-inline, 1rem) );--_ui-grid-drag-preview-shadow: var( --ui-grid-drag-preview-shadow, var(--app-ui-grid-drag-preview-shadow, 0 12px 30px rgba(15, 23, 42, 0.16)) );--_ui-grid-drag-preview-radius: var( --ui-grid-drag-preview-radius, var(--app-ui-grid-drag-preview-radius, 0.9rem) );--_ui-grid-drag-placeholder-opacity: var( --ui-grid-drag-placeholder-opacity, var(--app-ui-grid-drag-placeholder-opacity, 0.3) );--_ui-grid-drag-placeholder-background: var( --ui-grid-drag-placeholder-background, var( --app-ui-grid-drag-placeholder-background, color-mix(in srgb, var(--_ui-grid-accent) 9%, var(--_ui-grid-header-background)) ) );--_ui-grid-drag-placeholder-border: var( --ui-grid-drag-placeholder-border, var( --app-ui-grid-drag-placeholder-border, 1px dashed color-mix(in srgb, var(--_ui-grid-accent) 45%, var(--_ui-grid-border-color)) ) );--_ui-grid-drag-placeholder-shadow: var( --ui-grid-drag-placeholder-shadow, var( --app-ui-grid-drag-placeholder-shadow, inset 0 0 0 1px color-mix(in srgb, var(--_ui-grid-accent) 18%, transparent) ) );--_ui-grid-empty-state-gap: var( --ui-grid-empty-state-gap, var(--app-ui-grid-empty-state-gap, 0.35rem) );--_ui-grid-empty-state-min-height: var( --ui-grid-empty-state-min-height, var(--app-ui-grid-empty-state-min-height, 16rem) );--_ui-grid-empty-state-padding: var( --ui-grid-empty-state-padding, var(--app-ui-grid-empty-state-padding, 2rem) );--_ui-grid-pagination-gap: var(--ui-grid-pagination-gap, var(--app-ui-grid-pagination-gap, 1rem));--_ui-grid-pagination-padding-block: var( --ui-grid-pagination-padding-block, var(--app-ui-grid-pagination-padding-block, 0.85rem) );--_ui-grid-pagination-padding-inline: var( --ui-grid-pagination-padding-inline, var(--app-ui-grid-pagination-padding-inline, 1.25rem) );--_ui-grid-pagination-controls-gap: var( --ui-grid-pagination-controls-gap, var(--app-ui-grid-pagination-controls-gap, 0.75rem) );--_ui-grid-pagination-size-gap: var( --ui-grid-pagination-size-gap, var(--app-ui-grid-pagination-size-gap, 0.4rem) );--_ui-grid-pagination-button-padding-block: var( --ui-grid-pagination-button-padding-block, var(--app-ui-grid-pagination-button-padding-block, 0.45rem) );--_ui-grid-pagination-button-padding-inline: var( --ui-grid-pagination-button-padding-inline, var(--app-ui-grid-pagination-button-padding-inline, 0.8rem) );--_ui-grid-pagination-select-padding-block: var( --ui-grid-pagination-select-padding-block, var(--app-ui-grid-pagination-select-padding-block, 0.35rem) );--_ui-grid-pagination-select-padding-inline: var( --ui-grid-pagination-select-padding-inline, var(--app-ui-grid-pagination-select-padding-inline, 0.55rem) );--_ui-grid-status-pill-padding-block: var( --ui-grid-status-pill-padding-block, var(--app-ui-grid-status-pill-padding-block, 0.2rem) );--_ui-grid-status-pill-padding-inline: var( --ui-grid-status-pill-padding-inline, var(--app-ui-grid-status-pill-padding-inline, 0.55rem) );--_ui-grid-status-pill-radius: var( --ui-grid-status-pill-radius, var(--app-ui-grid-status-pill-radius, 999px) );--_ui-grid-status-pill-font-size: var( --ui-grid-status-pill-font-size, var(--app-ui-grid-status-pill-font-size, 0.85rem) );--_ui-grid-status-pill-default-bg: var( --ui-grid-status-pill-default-bg, var(--app-ui-grid-status-pill-default-bg, rgba(15, 23, 42, 0.07)) );display:block;color:var(--_ui-grid-cell-color)}:host *,:host *::before,:host *::after{--ui-grid-border-color: var(--_ui-grid-border-color);--ui-grid-header-background: var(--_ui-grid-header-background);--ui-grid-row-odd: var(--_ui-grid-row-odd);--ui-grid-row-even: var(--_ui-grid-row-even);--ui-grid-row-hover: var(--_ui-grid-row-hover);--ui-grid-row-focus-background: var(--_ui-grid-row-focus-background);--ui-grid-cell-color: var(--_ui-grid-cell-color);--ui-grid-muted-color: var(--_ui-grid-muted-color);--ui-grid-surface: var(--_ui-grid-surface);--ui-grid-radius: var(--_ui-grid-radius);--ui-grid-shadow: var(--_ui-grid-shadow);--ui-grid-header-weight: var(--_ui-grid-header-weight);--ui-grid-accent: var(--_ui-grid-accent);--ui-grid-group-background: var(--_ui-grid-group-background);--ui-grid-status-active-bg: var(--_ui-grid-status-active-bg);--ui-grid-status-active-color: var(--_ui-grid-status-active-color);--ui-grid-status-expansion-bg: var(--_ui-grid-status-expansion-bg);--ui-grid-status-expansion-color: var(--_ui-grid-status-expansion-color);--ui-grid-status-enterprise-bg: var(--_ui-grid-status-enterprise-bg);--ui-grid-status-enterprise-color: var(--_ui-grid-status-enterprise-color);--ui-grid-status-pilot-bg: var(--_ui-grid-status-pilot-bg);--ui-grid-status-pilot-color: var(--_ui-grid-status-pilot-color);--ui-grid-shell-gap: var(--_ui-grid-shell-gap);--ui-grid-hero-gap: var(--_ui-grid-hero-gap);--ui-grid-hero-padding-block: var(--_ui-grid-hero-padding-block);--ui-grid-eyebrow-margin-block-end: var(--_ui-grid-eyebrow-margin-block-end);--ui-grid-eyebrow-letter-spacing: var(--_ui-grid-eyebrow-letter-spacing);--ui-grid-eyebrow-font-size: var(--_ui-grid-eyebrow-font-size);--ui-grid-hero-title-font-size: var(--_ui-grid-hero-title-font-size);--ui-grid-hero-title-line-height: var(--_ui-grid-hero-title-line-height);--ui-grid-hero-deck-max-width: var(--_ui-grid-hero-deck-max-width);--ui-grid-hero-deck-margin-block-start: var(--_ui-grid-hero-deck-margin-block-start);--ui-grid-hero-actions-gap: var(--_ui-grid-hero-actions-gap);--ui-grid-action-radius: var(--_ui-grid-action-radius);--ui-grid-action-padding-block: var(--_ui-grid-action-padding-block);--ui-grid-action-padding-inline: var(--_ui-grid-action-padding-inline);--ui-grid-stats-card-min-width: var(--_ui-grid-stats-card-min-width);--ui-grid-stats-card-padding-block: var(--_ui-grid-stats-card-padding-block);--ui-grid-stats-card-padding-inline: var(--_ui-grid-stats-card-padding-inline);--ui-grid-stats-card-value-font-size: var(--_ui-grid-stats-card-value-font-size);--ui-grid-metrics-gap: var(--_ui-grid-metrics-gap);--ui-grid-metric-card-padding-block: var(--_ui-grid-metric-card-padding-block);--ui-grid-metric-card-padding-inline: var(--_ui-grid-metric-card-padding-inline);--ui-grid-metric-value-font-size: var(--_ui-grid-metric-value-font-size);--ui-grid-toolbar-gap: var(--_ui-grid-toolbar-gap);--ui-grid-toolbar-padding-block: var(--_ui-grid-toolbar-padding-block);--ui-grid-toolbar-padding-inline: var(--_ui-grid-toolbar-padding-inline);--ui-grid-toolbar-inline-gap: var(--_ui-grid-toolbar-inline-gap);--ui-grid-overflow-x: var(--_ui-grid-overflow-x);--ui-grid-overflow-y: var(--_ui-grid-overflow-y);--ui-grid-header-z-index: var(--_ui-grid-header-z-index);--ui-grid-pinned-cell-z-index: var(--_ui-grid-pinned-cell-z-index);--ui-grid-pin-menu-open-z-index: var(--_ui-grid-pin-menu-open-z-index);--ui-grid-pin-menu-z-index: var(--_ui-grid-pin-menu-z-index);--ui-grid-header-cell-gap: var(--_ui-grid-header-cell-gap);--ui-grid-header-cell-padding-block: var(--_ui-grid-header-cell-padding-block);--ui-grid-header-cell-padding-inline: var(--_ui-grid-header-cell-padding-inline);--ui-grid-header-cell-background-active: var(--_ui-grid-header-cell-background-active);--ui-grid-pinned-divider-shadow-left: var(--_ui-grid-pinned-divider-shadow-left);--ui-grid-pinned-divider-shadow-right: var(--_ui-grid-pinned-divider-shadow-right);--ui-grid-pinned-divider-clip-left: var(--_ui-grid-pinned-divider-clip-left);--ui-grid-pinned-divider-clip-right: var(--_ui-grid-pinned-divider-clip-right);--ui-grid-header-actions-gap: var(--_ui-grid-header-actions-gap);--ui-grid-control-size: var(--_ui-grid-control-size);--ui-grid-control-radius: var(--_ui-grid-control-radius);--ui-grid-control-icon-size: var(--_ui-grid-control-icon-size);--ui-grid-control-background: var(--_ui-grid-control-background);--ui-grid-control-border-color: var(--_ui-grid-control-border-color);--ui-grid-control-color: var(--_ui-grid-control-color);--ui-grid-control-background-active: var(--_ui-grid-control-background-active);--ui-grid-control-border-color-active: var(--_ui-grid-control-border-color-active);--ui-grid-control-color-active: var(--_ui-grid-control-color-active);--ui-grid-pin-menu-offset-block-start: var(--_ui-grid-pin-menu-offset-block-start);--ui-grid-pin-menu-gap: var(--_ui-grid-pin-menu-gap);--ui-grid-pin-menu-padding: var(--_ui-grid-pin-menu-padding);--ui-grid-pin-menu-radius: var(--_ui-grid-pin-menu-radius);--ui-grid-pin-menu-shadow: var(--_ui-grid-pin-menu-shadow);--ui-grid-pin-menu-action-size: var(--_ui-grid-pin-menu-action-size);--ui-grid-pin-control-collapsed-size: var(--_ui-grid-pin-control-collapsed-size);--ui-grid-pin-control-transition-duration: var(--_ui-grid-pin-control-transition-duration);--ui-grid-pin-control-transition-easing: var(--_ui-grid-pin-control-transition-easing);--ui-grid-pin-menu-scale-closed: var(--_ui-grid-pin-menu-scale-closed);--ui-grid-filter-cell-padding-block-start: var(--_ui-grid-filter-cell-padding-block-start);--ui-grid-filter-cell-padding-block-end: var(--_ui-grid-filter-cell-padding-block-end);--ui-grid-filter-cell-padding-inline: var(--_ui-grid-filter-cell-padding-inline);--ui-grid-filter-input-padding-block: var(--_ui-grid-filter-input-padding-block);--ui-grid-filter-input-padding-inline: var(--_ui-grid-filter-input-padding-inline);--ui-grid-filter-input-focus-outline: var(--_ui-grid-filter-input-focus-outline);--ui-grid-body-cell-padding-block: var(--_ui-grid-body-cell-padding-block);--ui-grid-body-cell-padding-inline: var(--_ui-grid-body-cell-padding-inline);--ui-grid-cell-shell-gap: var(--_ui-grid-cell-shell-gap);--ui-grid-row-toggle-size: var(--_ui-grid-row-toggle-size);--ui-grid-row-toggle-radius: var(--_ui-grid-row-toggle-radius);--ui-grid-toggle-icon-size: var(--_ui-grid-toggle-icon-size);--ui-grid-group-disclosure-icon-size: var(--_ui-grid-group-disclosure-icon-size);--ui-grid-pagination-icon-size: var(--_ui-grid-pagination-icon-size);--ui-grid-expandable-row-padding-block: var(--_ui-grid-expandable-row-padding-block);--ui-grid-expandable-row-padding-inline: var(--_ui-grid-expandable-row-padding-inline);--ui-grid-expandable-row-background: var(--_ui-grid-expandable-row-background);--ui-grid-cell-focus-background: var(--_ui-grid-cell-focus-background);--ui-grid-cell-focus-ring: var(--_ui-grid-cell-focus-ring);--ui-grid-cell-editing-background: var(--_ui-grid-cell-editing-background);--ui-grid-cell-editor-border-color: var(--_ui-grid-cell-editor-border-color);--ui-grid-cell-editor-radius: var(--_ui-grid-cell-editor-radius);--ui-grid-cell-editor-padding-block: var(--_ui-grid-cell-editor-padding-block);--ui-grid-cell-editor-padding-inline: var(--_ui-grid-cell-editor-padding-inline);--ui-grid-cell-editor-focus-outline: var(--_ui-grid-cell-editor-focus-outline);--ui-grid-group-row-gap: var(--_ui-grid-group-row-gap);--ui-grid-group-row-padding-block: var(--_ui-grid-group-row-padding-block);--ui-grid-group-row-padding-inline: var(--_ui-grid-group-row-padding-inline);--ui-grid-drag-preview-shadow: var(--_ui-grid-drag-preview-shadow);--ui-grid-drag-preview-radius: var(--_ui-grid-drag-preview-radius);--ui-grid-drag-placeholder-opacity: var(--_ui-grid-drag-placeholder-opacity);--ui-grid-drag-placeholder-background: var(--_ui-grid-drag-placeholder-background);--ui-grid-drag-placeholder-border: var(--_ui-grid-drag-placeholder-border);--ui-grid-drag-placeholder-shadow: var(--_ui-grid-drag-placeholder-shadow);--ui-grid-empty-state-gap: var(--_ui-grid-empty-state-gap);--ui-grid-empty-state-min-height: var(--_ui-grid-empty-state-min-height);--ui-grid-empty-state-padding: var(--_ui-grid-empty-state-padding);--ui-grid-pagination-gap: var(--_ui-grid-pagination-gap);--ui-grid-pagination-padding-block: var(--_ui-grid-pagination-padding-block);--ui-grid-pagination-padding-inline: var(--_ui-grid-pagination-padding-inline);--ui-grid-pagination-controls-gap: var(--_ui-grid-pagination-controls-gap);--ui-grid-pagination-size-gap: var(--_ui-grid-pagination-size-gap);--ui-grid-pagination-button-padding-block: var(--_ui-grid-pagination-button-padding-block);--ui-grid-pagination-button-padding-inline: var(--_ui-grid-pagination-button-padding-inline);--ui-grid-pagination-select-padding-block: var(--_ui-grid-pagination-select-padding-block);--ui-grid-pagination-select-padding-inline: var(--_ui-grid-pagination-select-padding-inline);--ui-grid-status-pill-padding-block: var(--_ui-grid-status-pill-padding-block);--ui-grid-status-pill-padding-inline: var(--_ui-grid-status-pill-padding-inline);--ui-grid-status-pill-radius: var(--_ui-grid-status-pill-radius);--ui-grid-status-pill-font-size: var(--_ui-grid-status-pill-font-size);--ui-grid-status-pill-default-bg: var(--_ui-grid-status-pill-default-bg);box-sizing:border-box}:host{isolation:isolate;contain:layout paint}.grid-shell{display:grid;gap:var(--ui-grid-shell-gap)}.grid-hero{display:flex;justify-content:space-between;gap:var(--ui-grid-hero-gap);align-items:end;padding:var(--ui-grid-hero-padding-block) 0;color:var(--ui-grid-cell-color)}.eyebrow{margin:0 0 var(--ui-grid-eyebrow-margin-block-end);text-transform:uppercase;letter-spacing:var(--ui-grid-eyebrow-letter-spacing);font-size:var(--ui-grid-eyebrow-font-size);color:var(--ui-grid-muted-color)}h1{margin:0;font-size:var(--ui-grid-hero-title-font-size);line-height:var(--ui-grid-hero-title-line-height)}.deck{max-width:var(--ui-grid-hero-deck-max-width);margin:var(--ui-grid-hero-deck-margin-block-start) 0 0;color:var(--ui-grid-muted-color)}.hero-actions{display:flex;gap:var(--ui-grid-hero-actions-gap);align-items:center;flex-wrap:wrap}.action{border:0;border-radius:var(--ui-grid-action-radius);padding:var(--ui-grid-action-padding-block) var(--ui-grid-action-padding-inline);font:inherit;cursor:pointer}.action-secondary{background:var(--ui-grid-surface);color:var(--ui-grid-cell-color);border:1px solid var(--ui-grid-border-color)}.stats-card{min-width:var(--ui-grid-stats-card-min-width);padding:var(--ui-grid-stats-card-padding-block) var(--ui-grid-stats-card-padding-inline);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);border:1px solid var(--ui-grid-border-color);display:grid}.stats-card span{font-size:var(--ui-grid-stats-card-value-font-size);font-weight:700}.stats-card small{color:var(--ui-grid-muted-color)}.grid-frame{display:grid;grid-template-rows:auto minmax(0, 1fr) auto;height:100%;min-height:0;border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);border:1px solid var(--ui-grid-border-color);box-shadow:var(--ui-grid-shadow);overflow:hidden}.metrics-strip{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:var(--ui-grid-metrics-gap)}.metrics-strip article{padding:var(--ui-grid-metric-card-padding-block) var(--ui-grid-metric-card-padding-inline);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);border:1px solid var(--ui-grid-border-color);display:grid}.metrics-strip strong{font-size:var(--ui-grid-metric-value-font-size)}.metrics-strip span{color:var(--ui-grid-muted-color)}.grid-toolbar{display:flex;justify-content:space-between;gap:var(--ui-grid-toolbar-gap);padding:var(--ui-grid-toolbar-padding-block) var(--ui-grid-toolbar-padding-inline);align-items:center;background:var(--ui-grid-header-background);border-bottom:1px solid var(--ui-grid-border-color)}.grid-toolbar div{display:flex;gap:var(--ui-grid-toolbar-inline-gap);align-items:baseline}.grid-toolbar p{margin:0;color:var(--ui-grid-muted-color)}.grid-table{position:relative;height:100%;min-height:0;width:100%;min-width:0;display:flex;flex-direction:column;background:var(--ui-grid-surface);overflow-anchor:none}.grid-header-strip,.grid-filter-strip{flex:0 0 auto;position:sticky;z-index:var(--ui-grid-header-z-index);background:var(--ui-grid-surface);overflow:hidden}.grid-header-strip{top:0}.grid-filter-strip{top:var(--ui-grid-header-sticky-top, 0px)}.grid-body-viewport{flex:1 1 auto;min-height:0;overflow-x:auto;overflow-anchor:none;overscroll-behavior-x:none}.header-grid,.filter-grid,.body-grid{display:grid;width:100%;min-width:max-content}.header-cell,.filter-cell,.body-cell,.group-row{min-width:0}.header-cell{display:grid;grid-template-columns:minmax(0, 1fr) auto;gap:var(--ui-grid-header-cell-gap);padding:var(--ui-grid-header-cell-padding-block) var(--ui-grid-header-cell-padding-inline);border-bottom:1px solid var(--ui-grid-border-color);background:var(--ui-grid-header-background);font-weight:var(--ui-grid-header-weight);align-items:center;position:relative}.header-cell.is-active{background:var(--ui-grid-header-cell-background-active)}.header-cell[draggable=true]{cursor:grab}.header-cell.is-dragging{opacity:.6}.header-cell.is-drag-target{background:color-mix(in srgb, var(--ui-grid-accent) 9%, var(--ui-grid-header-background));border:1px dashed color-mix(in srgb, var(--ui-grid-accent) 45%, var(--ui-grid-border-color));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ui-grid-accent) 18%, transparent)}.header-cell.is-pin-menu-open{z-index:var(--ui-grid-pin-menu-open-z-index)}.header-cell.is-pinned,.filter-cell.is-pinned,.body-cell.is-pinned{position:sticky;z-index:var(--ui-grid-pinned-cell-z-index);background:var(--ui-grid-surface)}.header-cell.is-pinned{background:var(--ui-grid-header-background)}.body-cell.is-pinned.body-cell-odd{background:var(--ui-grid-row-odd)}.body-cell.is-pinned:not(.body-cell-odd){background:var(--ui-grid-row-even)}.header-cell.is-pinned-left-last,.filter-cell.is-pinned-left-last,.body-cell.is-pinned-left-last{box-shadow:var(--ui-grid-pinned-divider-shadow-left);clip-path:var(--ui-grid-pinned-divider-clip-left)}.header-cell.is-pinned-right-first,.filter-cell.is-pinned-right-first,.body-cell.is-pinned-right-first{box-shadow:var(--ui-grid-pinned-divider-shadow-right);clip-path:var(--ui-grid-pinned-divider-clip-right)}.header-label{min-width:0;display:block;white-space:nowrap;overflow:hidden;text-overflow:clip;hyphens:none}.header-actions{display:inline-flex;align-items:center;gap:var(--ui-grid-header-actions-gap);justify-self:end}.column-resizer{position:absolute;top:0;right:-4px;width:8px;height:100%;padding:0;border:0;background:rgba(0,0,0,0);cursor:col-resize;z-index:5}.column-resizer::after{content:"";position:absolute;top:20%;bottom:20%;left:50%;width:2px;transform:translateX(-50%);border-radius:999px;background:color-mix(in srgb, var(--_ui-grid-border-color) 80%, transparent);opacity:0;transition:opacity 120ms ease}.header-cell:hover .column-resizer::after,.column-resizer:focus-visible::after{opacity:1}.pin-control{position:relative;display:inline-grid;place-items:center;justify-items:center;min-width:var(--ui-grid-control-size);overflow:hidden}.header-action,.chip-action{display:inline-flex;align-items:center;justify-content:center;width:var(--ui-grid-control-size);height:var(--ui-grid-control-size);display:flex;border:0;background:var(--ui-grid-control-background);padding:0;font:inherit;border-radius:var(--ui-grid-control-radius);cursor:pointer}.header-action-disabled{cursor:default}.header-action svg,.chip-action svg{width:var(--ui-grid-control-icon-size);height:var(--ui-grid-control-icon-size);fill:currentColor}.header-action{color:var(--ui-grid-control-color);border:1px solid var(--ui-grid-control-border-color)}.header-cell.is-active .header-action{color:var(--ui-grid-control-color-active);border-color:var(--ui-grid-control-border-color-active)}.chip-action{border:1px solid var(--ui-grid-control-border-color);color:var(--ui-grid-control-color)}.chip-action-active{background:var(--ui-grid-control-background-active);border-color:var(--ui-grid-control-border-color-active);color:var(--ui-grid-control-color-active)}.pin-trigger{grid-area:1/1;transform-origin:center;transition:width var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),height var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),opacity var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),transform var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),border-color var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),background-color var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),color var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing)}.pin-menu{grid-area:1/1;z-index:var(--ui-grid-pin-menu-z-index);display:grid;grid-auto-rows:var(--ui-grid-pin-menu-action-size);gap:var(--ui-grid-pin-menu-gap);padding:var(--ui-grid-pin-menu-padding);border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-pin-menu-radius);background:var(--ui-grid-surface);box-shadow:var(--ui-grid-pin-menu-shadow);justify-items:center;align-items:center;width:var(--ui-grid-control-size);max-height:var(--ui-grid-pin-control-collapsed-size);opacity:0;pointer-events:none;transform:scale(var(--ui-grid-pin-menu-scale-closed));transform-origin:center;transition:max-height var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),opacity var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),transform var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),padding var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),border-color var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing),box-shadow var(--ui-grid-pin-control-transition-duration) var(--ui-grid-pin-control-transition-easing)}.pin-control-open{align-items:start}.pin-control-open .pin-trigger{width:var(--ui-grid-pin-control-collapsed-size);height:var(--ui-grid-pin-control-collapsed-size);opacity:0;transform:scale(0.72);pointer-events:none}.pin-control-open .pin-menu{max-height:calc(var(--ui-grid-pin-menu-action-size)*2 + var(--ui-grid-pin-menu-gap) + var(--ui-grid-pin-menu-padding)*2);opacity:1;pointer-events:auto;transform:scale(1)}.pin-menu-action{display:inline-flex;align-items:center;justify-content:center;width:var(--ui-grid-pin-menu-action-size);height:var(--ui-grid-pin-menu-action-size);border:0;border-radius:var(--ui-grid-control-radius);background:rgba(0,0,0,0);color:var(--ui-grid-control-color);cursor:pointer}.pin-menu-action:hover,.pin-menu-action:focus-visible{outline:0;background:var(--ui-grid-control-background-active);color:var(--ui-grid-control-color-active)}.pin-menu-action svg{width:var(--ui-grid-control-icon-size);height:var(--ui-grid-control-icon-size);fill:currentColor}.body-cell{padding:var(--ui-grid-body-cell-padding-block) var(--ui-grid-body-cell-padding-inline);border-bottom:1px solid var(--ui-grid-border-color);color:var(--ui-grid-cell-color);background:var(--ui-grid-row-even);outline:0}.body-cell.body-cell-odd{background:var(--ui-grid-row-odd)}.cell-shell{display:flex;align-items:center;gap:var(--ui-grid-cell-shell-gap);min-width:0}.cell-value{min-width:0;flex:1 1 auto}.row-toggle{border:1px solid var(--ui-grid-border-color);background:var(--ui-grid-surface);color:var(--ui-grid-cell-color);width:var(--ui-grid-row-toggle-size);height:var(--ui-grid-row-toggle-size);border-radius:var(--ui-grid-row-toggle-radius);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:0 0 auto;padding:0;font:inherit}.toggle-icon{width:var(--ui-grid-toggle-icon-size);height:var(--ui-grid-toggle-icon-size);fill:currentColor;pointer-events:none}.group-disclosure-icon{width:var(--ui-grid-group-disclosure-icon-size);height:var(--ui-grid-group-disclosure-icon-size)}.pagination-icon{width:var(--ui-grid-pagination-icon-size);height:var(--ui-grid-pagination-icon-size);fill:currentColor}.expandable-row{padding:var(--ui-grid-expandable-row-padding-block) var(--ui-grid-expandable-row-padding-inline);border-bottom:1px solid var(--ui-grid-border-color);background:var(--ui-grid-expandable-row-background)}.body-grid>.body-cell:hover:not(.row-focused):not(.cell-focused):not(.cell-editing){background:var(--ui-grid-row-hover);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ui-grid-accent) 10%, transparent)}.body-cell.row-focused,.body-grid>.body-cell.row-focused{background:var(--ui-grid-row-focus-background)}.body-cell.cell-focused,.body-grid>.body-cell.cell-focused{background:var(--ui-grid-cell-focus-background);box-shadow:var(--ui-grid-cell-focus-ring)}.body-cell.cell-editing,.body-grid>.body-cell.cell-editing{background:var(--ui-grid-cell-editing-background)}.cell-editor{display:block;width:100%;min-width:0;max-width:100%;border:1px solid var(--ui-grid-cell-editor-border-color);border-radius:var(--ui-grid-cell-editor-radius);background:var(--ui-grid-surface);color:var(--ui-grid-cell-color);padding:var(--ui-grid-cell-editor-padding-block) var(--ui-grid-cell-editor-padding-inline);font:inherit}.cell-editor:focus{outline:var(--ui-grid-cell-editor-focus-outline)}.grid-viewport{width:100%}.grid-virtual-spacer{position:relative;width:max-content;min-width:100%}.grid-virtual-body{position:absolute;left:0}.body-cell.align-center{text-align:center}.body-cell.align-end{text-align:right}.empty-state{display:grid;place-items:center;gap:var(--ui-grid-empty-state-gap);min-height:var(--ui-grid-empty-state-min-height);text-align:center;padding:var(--ui-grid-empty-state-padding);color:var(--ui-grid-muted-color);background:var(--ui-grid-surface)}.empty-state p,.empty-state strong{margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.status-pill{display:inline-flex;align-items:center;justify-content:center;padding:var(--ui-grid-status-pill-padding-block) var(--ui-grid-status-pill-padding-inline);border-radius:var(--ui-grid-status-pill-radius);background:var(--ui-grid-status-pill-default-bg);color:var(--ui-grid-cell-color);font-size:var(--ui-grid-status-pill-font-size);font-weight:700}.status-pill-enterprise{background:var(--ui-grid-status-enterprise-bg);color:var(--ui-grid-status-enterprise-color)}.status-pill-active{background:var(--ui-grid-status-active-bg);color:var(--ui-grid-status-active-color)}.status-pill-expansion{background:var(--ui-grid-status-expansion-bg);color:var(--ui-grid-status-expansion-color)}.status-pill-pilot{background:var(--ui-grid-status-pilot-bg);color:var(--ui-grid-status-pilot-color)}@media(max-width: 900px){.metrics-strip{grid-template-columns:repeat(2, minmax(0, 1fr))}.grid-hero,.grid-toolbar{grid-template-columns:1fr;display:grid}.hero-actions{justify-content:space-between}}@media(max-width: 640px){.metrics-strip{grid-template-columns:1fr}}.ui-grid-row-selected,.body-cell.ui-grid-row-selected{background:var(--ui-grid-row-selected-bg, var(--app-ui-grid-row-selected-bg, color-mix(in srgb, var(--ui-grid-accent, #2563eb) 22%, var(--ui-grid-surface, #ffffff))));color:var(--ui-grid-row-selected-color, var(--app-ui-grid-row-selected-color, var(--ui-grid-cell-color)))}.body-cell.ui-grid-row-selected.body-cell-odd{background:var(--ui-grid-row-selected-bg-odd, var(--app-ui-grid-row-selected-bg-odd, color-mix(in srgb, var(--ui-grid-accent, #2563eb) 26%, var(--ui-grid-surface, #ffffff))))}.ui-grid-row-focused,.body-cell.ui-grid-row-focused{outline:1px dashed var(--ui-grid-accent, #2563eb);outline-offset:-1px}.body-cell[data-column=selectionRowHeaderCol],.header-cell[data-column=selectionRowHeaderCol],.filter-cell[data-column=selectionRowHeaderCol]{padding:0 !important;cursor:pointer;user-select:none;-webkit-user-select:none;display:flex;align-items:center;justify-content:center}.body-cell[data-column=selectionRowHeaderCol]>.cell-shell,.body-cell[data-column=selectionRowHeaderCol]>.cell-shell>.cell-content{padding:0 !important;padding-inline-start:0 !important;margin:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.filter-cell[data-column=selectionRowHeaderCol]{padding:0;background:var(--_ui-grid-header-background, var(--ui-grid-header-background, transparent));border-bottom:1px solid var(--_ui-grid-border-color, var(--ui-grid-border-color, transparent))}.ui-grid-selection-row-header-buttons{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer}.ui-grid-selection-checkbox{display:inline-block;width:16px;height:16px;box-sizing:border-box;border:2px solid currentColor;border-radius:3px;background:rgba(0,0,0,0);color:var(--ui-grid-cell-color, currentColor);position:relative;transition:background 120ms ease,border-color 120ms ease,color 120ms ease;opacity:.7}.ui-grid-selection-row-header-buttons:hover .ui-grid-selection-checkbox{opacity:1;color:var(--ui-grid-accent, var(--_ui-grid-accent, #2563eb))}.ui-grid-selection-checkbox-checked{background:var(--ui-grid-accent, var(--_ui-grid-accent, #2563eb));color:var(--ui-grid-accent, var(--_ui-grid-accent, #2563eb));border-color:var(--ui-grid-accent, var(--_ui-grid-accent, #2563eb));opacity:1}.ui-grid-selection-checkbox-checked::after{content:"";position:absolute;left:3px;top:0;width:5px;height:9px;border:2px solid var(--ui-grid-surface, var(--_ui-grid-surface, #ffffff));border-top:0;border-left:0;transform:rotate(45deg)}.ui-grid-selection-checkbox-disabled{opacity:.3;cursor:not-allowed}.ui-grid-selection-select-all{display:inline-flex;align-items:center;justify-content:center;background:rgba(0,0,0,0);border:0;padding:0;margin:0;cursor:pointer;width:100%;height:100%}.ui-grid-selection-select-all:focus-visible{outline:2px solid var(--_ui-grid-accent, var(--ui-grid-accent, #2563eb));outline-offset:-2px}.grid-body-viewport:has([data-column=selectionRowHeaderCol]){user-select:none;-webkit-user-select:none}.body-cell.ui-grid-row-dirty{color:var(--ui-grid-row-dirty-color, var(--app-ui-grid-row-dirty-color, #610B38));background:var(--ui-grid-row-dirty-bg, var(--app-ui-grid-row-dirty-bg, color-mix(in srgb, var(--ui-grid-accent, #2563eb) 8%, var(--ui-grid-surface, #ffffff))))}.body-cell.ui-grid-row-saving{color:var(--ui-grid-row-saving-color, var(--app-ui-grid-row-saving-color, #848484)) !important;opacity:var(--ui-grid-row-saving-opacity, 0.75);cursor:progress}.body-cell.ui-grid-row-error{color:var(--ui-grid-row-error-color, var(--app-ui-grid-row-error-color, #FF0000)) !important;background:var(--ui-grid-row-error-bg, var(--app-ui-grid-row-error-bg, color-mix(in srgb, #ff0000 14%, var(--ui-grid-surface, #ffffff))))}.body-cell.ui-grid-cell-invalid{position:relative;background:var(--ui-grid-cell-invalid-bg, var(--app-ui-grid-cell-invalid-bg, color-mix(in srgb, #ff0000 10%, var(--ui-grid-surface, #ffffff))))}.body-cell.ui-grid-cell-invalid::after{content:"";position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 var(--ui-grid-cell-invalid-marker-size, 8px) var(--ui-grid-cell-invalid-marker-size, 8px) 0;border-color:rgba(0,0,0,0) var(--ui-grid-cell-invalid-marker-color, #ff0000) rgba(0,0,0,0) rgba(0,0,0,0);pointer-events:none}.filter-cell{padding:var(--ui-grid-filter-cell-padding-block-start) var(--ui-grid-filter-cell-padding-inline) var(--ui-grid-filter-cell-padding-block-end);border-bottom:1px solid var(--ui-grid-border-color);background:var(--ui-grid-header-background)}.filter-cell input{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);padding:var(--ui-grid-filter-input-padding-block) var(--ui-grid-filter-input-padding-inline);font:inherit}.filter-cell input:focus{outline:var(--ui-grid-filter-input-focus-outline);border-color:var(--ui-grid-accent)}.group-row{display:flex;align-items:center;gap:var(--ui-grid-group-row-gap);border:0;width:100%;padding:var(--ui-grid-group-row-padding-block) var(--ui-grid-group-row-padding-inline);background:var(--ui-grid-group-background);border-bottom:1px solid var(--ui-grid-border-color);color:var(--ui-grid-cell-color);cursor:pointer;text-align:left}.group-row span,.group-row small{color:var(--ui-grid-muted-color)}.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--ui-grid-pagination-gap);padding:var(--ui-grid-pagination-padding-block) var(--ui-grid-pagination-padding-inline);border-top:1px solid var(--ui-grid-border-color);background:var(--ui-grid-header-background)}.pagination-bar p{margin:0;color:var(--ui-grid-muted-color)}.pagination-controls{display:flex;align-items:center;gap:var(--ui-grid-pagination-controls-gap);flex-wrap:wrap}.pagination-button{padding:var(--ui-grid-pagination-button-padding-block) var(--ui-grid-pagination-button-padding-inline)}.pagination-size{display:inline-flex;align-items:center;gap:var(--ui-grid-pagination-size-gap)}.pagination-size select{border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);padding:var(--ui-grid-pagination-select-padding-block) var(--ui-grid-pagination-select-padding-inline);font:inherit}';
7729
7729
 
7730
7730
  // src/adopt-styles.ts
@@ -7789,7 +7789,7 @@ function gridShellTemplate(ctx) {
7789
7789
  };
7790
7790
  }
7791
7791
 
7792
- // scss-inline:/home/runner/work/uiGrid/uiGrid/projects/ui-grid-vanilla/src/components/grid-filter-cell/grid-filter-cell.scss
7792
+ // scss-inline:/home/runner/work/ui-grid/ui-grid/projects/ui-grid-vanilla/src/components/grid-filter-cell/grid-filter-cell.scss
7793
7793
  var grid_filter_cell_default = ":host{display:block;box-sizing:border-box;padding:var(--ui-grid-filter-cell-padding-block-start) var(--ui-grid-filter-cell-padding-inline) var(--ui-grid-filter-cell-padding-block-end);border-bottom:1px solid var(--ui-grid-border-color);background:var(--ui-grid-header-background)}input{box-sizing:border-box;color:inherit;width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);padding:var(--ui-grid-filter-input-padding-block) var(--ui-grid-filter-input-padding-inline);font:inherit}input:focus{outline:var(--ui-grid-filter-input-focus-outline);border-color:var(--ui-grid-accent)}";
7794
7794
 
7795
7795
  // src/components/grid-filter-cell/grid-filter-cell.template.ts
@@ -7892,7 +7892,7 @@ var UIGridFilterCell = class _UIGridFilterCell extends HTMLElement {
7892
7892
  }
7893
7893
  };
7894
7894
 
7895
- // scss-inline:/home/runner/work/uiGrid/uiGrid/projects/ui-grid-vanilla/src/components/grid-group-row/grid-group-row.scss
7895
+ // scss-inline:/home/runner/work/ui-grid/ui-grid/projects/ui-grid-vanilla/src/components/grid-group-row/grid-group-row.scss
7896
7896
  var grid_group_row_default = ".sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}:host{box-sizing:border-box;display:flex;align-items:center;gap:var(--ui-grid-group-row-gap);border:0;width:100%;padding:var(--ui-grid-group-row-padding-block) var(--ui-grid-group-row-padding-inline);background:var(--ui-grid-group-background);border-bottom:1px solid var(--ui-grid-border-color);color:var(--ui-grid-cell-color);cursor:pointer;text-align:left}span,small{color:var(--ui-grid-muted-color)}.toggle-icon{width:var(--ui-grid-toggle-icon-size);height:var(--ui-grid-toggle-icon-size);fill:currentColor;pointer-events:none}.group-disclosure-icon{width:var(--ui-grid-group-disclosure-icon-size);height:var(--ui-grid-group-disclosure-icon-size)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}";
7897
7897
 
7898
7898
  // src/components/grid-group-row/grid-group-row.template.ts
@@ -7965,7 +7965,7 @@ var UIGridGroupRow = class _UIGridGroupRow extends HTMLElement {
7965
7965
  }
7966
7966
  };
7967
7967
 
7968
- // scss-inline:/home/runner/work/uiGrid/uiGrid/projects/ui-grid-vanilla/src/components/grid-pagination/grid-pagination.scss
7968
+ // scss-inline:/home/runner/work/ui-grid/ui-grid/projects/ui-grid-vanilla/src/components/grid-pagination/grid-pagination.scss
7969
7969
  var grid_pagination_default = ".sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}:host{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:var(--ui-grid-pagination-gap);padding:var(--ui-grid-pagination-padding-block) var(--ui-grid-pagination-padding-inline);border-top:1px solid var(--ui-grid-border-color);background:var(--ui-grid-header-background)}p{margin:0;color:var(--ui-grid-muted-color)}.pagination-controls{display:flex;align-items:center;gap:var(--ui-grid-pagination-controls-gap);flex-wrap:wrap}.pagination-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);color:inherit;cursor:pointer;font:inherit;padding:var(--ui-grid-pagination-button-padding-block) var(--ui-grid-pagination-button-padding-inline)}.pagination-button:disabled{opacity:.4;cursor:default}.pagination-icon{width:var(--ui-grid-pagination-icon-size);height:var(--ui-grid-pagination-icon-size);fill:currentColor}.pagination-size{display:inline-flex;align-items:center;gap:var(--ui-grid-pagination-size-gap)}.pagination-size select{color:inherit;border:1px solid var(--ui-grid-border-color);border-radius:var(--ui-grid-radius);background:var(--ui-grid-surface);padding:var(--ui-grid-pagination-select-padding-block) var(--ui-grid-pagination-select-padding-inline);font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}";
7970
7970
 
7971
7971
  // src/components/grid-pagination/grid-pagination.template.ts
@@ -0,0 +1,3 @@
1
+ export * from './index';
2
+ export { defineStandaloneUiGridElement } from './ui-grid-standalone.element';
3
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `<ui-grid-body-cell>` — Data cell element.
3
+ *
4
+ * An empty custom element. The grid shell pre-computes `class`, `style`,
5
+ * `tabindex`, and all `data-*` attributes directly into the emitted HTML
6
+ * string, so the browser parser finishes the element's visual state in one
7
+ * pass. No `attributeChangedCallback` work is required at upgrade time — at
8
+ * 1000+ cells per render, the callback storm was the single largest cost on
9
+ * the hot path.
10
+ *
11
+ * The class remains so the tag name resolves (`closest('ui-grid-body-cell')`
12
+ * still works) and so the element-specific CSS selectors target correctly.
13
+ * The parent is the single writer; cells are never mutated from outside.
14
+ */
15
+ export declare class UIGridBodyCell extends HTMLElement {
16
+ static readonly TAG = "ui-grid-body-cell";
17
+ static define(tagName?: string): void;
18
+ }
19
+ //# sourceMappingURL=grid-body-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-body-cell.d.ts","sourceRoot":"","sources":["../../../src/components/grid-body-cell/grid-body-cell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,uBAAuB;IAE1C,MAAM,CAAC,MAAM,CAAC,OAAO,SAAqB,GAAG,IAAI;CAKlD"}
@@ -0,0 +1,2 @@
1
+ export { UIGridBodyCell } from './grid-body-cell';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-body-cell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `<ui-grid-cell-editor>` — Single-input cell editor element.
3
+ *
4
+ * Light-DOM custom element. Mounts ONE `<input class="cell-editor">` in
5
+ * `connectedCallback` and reuses it across renders — every subsequent snapshot
6
+ * patches `value`/`type`/`disabled` in place instead of recreating the input.
7
+ * That keeps the keystroke path destructive-free: typing never rebuilds the
8
+ * focused node, so focus and caret survive the parent grid's re-renders.
9
+ *
10
+ * The inner `<input>` carries `data-role="editor"` + `data-row` + `data-column`
11
+ * so the parent grid's delegated `input` / `blur` handlers continue to find it
12
+ * via `composedPath()`/event.target unchanged.
13
+ *
14
+ * Value updates coming in from the controller (`data-value`) are only pushed
15
+ * into the input when the input is NOT the currently focused element — this
16
+ * avoids clobbering the user's in-progress edit / caret position.
17
+ */
18
+ export declare class UIGridCellEditor extends HTMLElement {
19
+ static readonly TAG = "ui-grid-cell-editor";
20
+ private mounted;
21
+ private inputEl;
22
+ static get observedAttributes(): string[];
23
+ connectedCallback(): void;
24
+ attributeChangedCallback(): void;
25
+ private sync;
26
+ static define(tagName?: string): void;
27
+ }
28
+ //# sourceMappingURL=grid-cell-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-cell-editor.d.ts","sourceRoot":"","sources":["../../../src/components/grid-cell-editor/grid-cell-editor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,yBAAyB;IAE5C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAiC;IAEhD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAED,iBAAiB,IAAI,IAAI;IA8BzB,wBAAwB,IAAI,IAAI;IAMhC,OAAO,CAAC,IAAI;IAmCZ,MAAM,CAAC,MAAM,CAAC,OAAO,SAAuB,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,2 @@
1
+ export { UIGridCellEditor } from './grid-cell-editor';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-cell-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `<ui-grid-filter-cell>` — Column filter input element.
3
+ *
4
+ * An autonomous custom element that renders a filter input for a single grid column.
5
+ * Uses shadow DOM with scoped styles via `adoptedStyleSheets`.
6
+ *
7
+ * **Rendering pattern:** the template is mounted once in `connectedCallback` via
8
+ * `renderFilterCell()`. Attribute updates patch the existing input in place
9
+ * (value, placeholder, disabled) so the filter input never loses focus on re-renders.
10
+ *
11
+ * **CSS architecture:** Styles are scoped to the shadow DOM via `grid-filter-cell.scss`.
12
+ * CSS custom properties (`--ui-grid-*`) inherit from the parent grid's shadow tree.
13
+ *
14
+ * **Pinning:** The host element receives pinning classes (`is-pinned`, `is-pinned-left-last`,
15
+ * `is-pinned-right-first`) which are styled by the parent grid's CSS since the host element
16
+ * itself lives in the grid's shadow tree.
17
+ */
18
+ export declare class UIGridFilterCell extends HTMLElement {
19
+ static readonly TAG = "ui-grid-filter-cell";
20
+ columnName: string;
21
+ value: string;
22
+ placeholder: string;
23
+ private mounted;
24
+ private inputEl;
25
+ constructor();
26
+ static get observedAttributes(): string[];
27
+ connectedCallback(): void;
28
+ attributeChangedCallback(): void;
29
+ private sync;
30
+ static define(tagName?: string): void;
31
+ }
32
+ //# sourceMappingURL=grid-filter-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-filter-cell.d.ts","sourceRoot":"","sources":["../../../src/components/grid-filter-cell/grid-filter-cell.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,yBAAyB;IAE5C,UAAU,SAAM;IAChB,KAAK,SAAM;IACX,WAAW,SAAM;IAEjB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAiC;;IAOhD,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAIxC;IAED,iBAAiB,IAAI,IAAI;IAYzB,wBAAwB,IAAI,IAAI;IAMhC,OAAO,CAAC,IAAI;IAyDZ,MAAM,CAAC,MAAM,CAAC,OAAO,SAAuB,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,8 @@
1
+ interface FilterCellContext {
2
+ columnName: string;
3
+ placeholder: string;
4
+ value: string;
5
+ }
6
+ export declare function renderFilterCell(ctx: FilterCellContext, shadowRoot: ShadowRoot): void;
7
+ export {};
8
+ //# sourceMappingURL=grid-filter-cell.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-filter-cell.template.d.ts","sourceRoot":"","sources":["../../../src/components/grid-filter-cell/grid-filter-cell.template.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAQrF"}
@@ -0,0 +1,2 @@
1
+ export { UIGridFilterCell } from './grid-filter-cell';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-filter-cell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `<ui-grid-group-row>` — Group disclosure row element.
3
+ *
4
+ * An autonomous custom element that renders a group header row with a disclosure
5
+ * toggle icon, group field/label, and row count. Uses shadow DOM with scoped styles
6
+ * via `adoptedStyleSheets`.
7
+ *
8
+ * **Rendering pattern:** instance properties are populated from data attributes,
9
+ * then `renderGroupRow(this, shadowRoot)` writes the markup into the shadow root.
10
+ *
11
+ * **CSS architecture:** Styles are scoped to the shadow DOM via `grid-group-row.scss`.
12
+ * CSS custom properties (`--ui-grid-*`) inherit from the parent grid's shadow tree.
13
+ *
14
+ * **Event delegation:** The host element carries `data-action="toggle-group"` and
15
+ * `data-group` attributes so the parent grid's click handler can identify it without
16
+ * piercing the shadow boundary.
17
+ *
18
+ * @example
19
+ * ```html
20
+ * <ui-grid-group-row
21
+ * data-action="toggle-group"
22
+ * data-group="category:Fruit"
23
+ * data-collapsed="false"
24
+ * data-field="category"
25
+ * data-label="Fruit"
26
+ * data-count="5"
27
+ * data-depth="0"
28
+ * data-icon-path="M7 10l5 5 5-5z">
29
+ * </ui-grid-group-row>
30
+ * ```
31
+ */
32
+ export declare class UIGridGroupRow extends HTMLElement {
33
+ static readonly TAG = "ui-grid-group-row";
34
+ /** The grouping field name (e.g. "category"). */
35
+ field: string;
36
+ /** The group value label (e.g. "Fruit"). */
37
+ label: string;
38
+ /** Number of rows in this group. */
39
+ count: string;
40
+ /** Accessibility label for the disclosure toggle. */
41
+ disclosureLabel: string;
42
+ /** SVG path data for the disclosure icon. */
43
+ iconPath: string;
44
+ /** SVG viewBox for the disclosure icon. */
45
+ iconViewBox: string;
46
+ /** Suffix text after the count (e.g. "items"). */
47
+ rowsSuffix: string;
48
+ constructor();
49
+ static get observedAttributes(): string[];
50
+ connectedCallback(): void;
51
+ attributeChangedCallback(): void;
52
+ private render;
53
+ static define(tagName?: string): void;
54
+ }
55
+ //# sourceMappingURL=grid-group-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-group-row.d.ts","sourceRoot":"","sources":["../../../src/components/grid-group-row/grid-group-row.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,uBAAuB;IAE1C,iDAAiD;IACjD,KAAK,SAAM;IACX,4CAA4C;IAC5C,KAAK,SAAM;IACX,oCAAoC;IACpC,KAAK,SAAO;IACZ,qDAAqD;IACrD,eAAe,SAAM;IACrB,6CAA6C;IAC7C,QAAQ,SAAM;IACd,2CAA2C;IAC3C,WAAW,SAAe;IAC1B,kDAAkD;IAClD,UAAU,SAAM;;IAOhB,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAIxC;IAED,iBAAiB,IAAI,IAAI;IAIzB,wBAAwB,IAAI,IAAI;IAMhC,OAAO,CAAC,MAAM;IAgBd,MAAM,CAAC,MAAM,CAAC,OAAO,SAAqB,GAAG,IAAI;CAKlD"}
@@ -0,0 +1,12 @@
1
+ interface GroupRowContext {
2
+ iconViewBox: string;
3
+ iconPath: string;
4
+ disclosureLabel: string;
5
+ field: string;
6
+ label: string;
7
+ count: string;
8
+ rowsSuffix: string;
9
+ }
10
+ export declare function renderGroupRow(ctx: GroupRowContext, shadowRoot: ShadowRoot): void;
11
+ export {};
12
+ //# sourceMappingURL=grid-group-row.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-group-row.template.d.ts","sourceRoot":"","sources":["../../../src/components/grid-group-row/grid-group-row.template.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAOjF"}
@@ -0,0 +1,2 @@
1
+ export { UIGridGroupRow } from './grid-group-row';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-group-row/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `<ui-grid-header-cell>` — Column header cell element.
3
+ *
4
+ * An empty custom element. Same performance rationale as `<ui-grid-body-cell>`:
5
+ * the grid shell pre-computes `class`, `style`, `draggable`, and all `data-*`
6
+ * attributes into the emitted HTML string. No per-element lifecycle callback
7
+ * runs during parse — the parent is the single writer.
8
+ */
9
+ export declare class UIGridHeaderCell extends HTMLElement {
10
+ static readonly TAG = "ui-grid-header-cell";
11
+ static define(tagName?: string): void;
12
+ }
13
+ //# sourceMappingURL=grid-header-cell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-header-cell.d.ts","sourceRoot":"","sources":["../../../src/components/grid-header-cell/grid-header-cell.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,yBAAyB;IAE5C,MAAM,CAAC,MAAM,CAAC,OAAO,SAAuB,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,2 @@
1
+ export { UIGridHeaderCell } from './grid-header-cell';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-header-cell/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `<ui-grid-pagination>` — Pagination controls element.
3
+ *
4
+ * Mounts once via `template(this).connect()` in `connectedCallback`; subsequent
5
+ * attribute changes patch the existing DOM in place (text labels, button disabled
6
+ * flags, select options). The parent grid re-uses a single `<ui-grid-pagination>`
7
+ * node and just sets data-attributes on it, so nothing inside ever loses focus.
8
+ */
9
+ export declare class UIGridPagination extends HTMLElement {
10
+ static readonly TAG = "ui-grid-pagination";
11
+ rangeLabel: string;
12
+ currentPage: string;
13
+ totalPages: string;
14
+ pageLabel: string;
15
+ ofLabel: string;
16
+ prevLabel: string;
17
+ nextLabel: string;
18
+ rowsLabel: string;
19
+ prevIconPath: string;
20
+ prevIconViewBox: string;
21
+ nextIconPath: string;
22
+ nextIconViewBox: string;
23
+ private mounted;
24
+ private rangeEl;
25
+ private pageCounterEl;
26
+ private prevBtn;
27
+ private nextBtn;
28
+ private prevIconPathEl;
29
+ private nextIconPathEl;
30
+ private prevLabelSr;
31
+ private nextLabelSr;
32
+ private rowsLabelSr;
33
+ private sizeSelect;
34
+ private lastPageSizesKey;
35
+ constructor();
36
+ static get observedAttributes(): string[];
37
+ connectedCallback(): void;
38
+ attributeChangedCallback(): void;
39
+ private captureTemplateBindings;
40
+ private cacheElements;
41
+ private attachSelectListener;
42
+ private sync;
43
+ static define(tagName?: string): void;
44
+ }
45
+ //# sourceMappingURL=grid-pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-pagination.d.ts","sourceRoot":"","sources":["../../../src/components/grid-pagination/grid-pagination.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,wBAAwB;IAE3C,UAAU,SAAM;IAChB,WAAW,SAAO;IAClB,UAAU,SAAO;IACjB,SAAS,SAAM;IACf,OAAO,SAAM;IACb,SAAS,SAAM;IACf,SAAS,SAAM;IACf,SAAS,SAAM;IACf,YAAY,SAAM;IAClB,eAAe,SAAe;IAC9B,YAAY,SAAM;IAClB,eAAe,SAAe;IAE9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,gBAAgB,CAAM;;IAO9B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAMxC;IAED,iBAAiB,IAAI,IAAI;IAWzB,wBAAwB,IAAI,IAAI;IAMhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,IAAI;IAwFZ,MAAM,CAAC,MAAM,CAAC,OAAO,SAAuB,GAAG,IAAI;CAKpD"}
@@ -0,0 +1,17 @@
1
+ interface PaginationContext {
2
+ rangeLabel: string;
3
+ prevLabel: string;
4
+ prevIconViewBox: string;
5
+ prevIconPath: string;
6
+ pageLabel: string;
7
+ currentPage: string;
8
+ ofLabel: string;
9
+ totalPages: string;
10
+ nextLabel: string;
11
+ nextIconViewBox: string;
12
+ nextIconPath: string;
13
+ rowsLabel: string;
14
+ }
15
+ export declare function renderPagination(ctx: PaginationContext, shadowRoot: ShadowRoot): void;
16
+ export {};
17
+ //# sourceMappingURL=grid-pagination.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-pagination.template.d.ts","sourceRoot":"","sources":["../../../src/components/grid-pagination/grid-pagination.template.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAmBrF"}
@@ -0,0 +1,2 @@
1
+ export { UIGridPagination } from './grid-pagination';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-pagination/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * A declarative template element for defining reusable cell/row templates
3
+ * without writing JavaScript.
4
+ *
5
+ * Supports both `${this.prop}` and `{{prop}}` binding syntax.
6
+ *
7
+ * @example
8
+ * ```html
9
+ * <template is="ui-grid-template" name="ui-status-badge" status="unknown">
10
+ * <style>
11
+ * :host { display: inline-block; }
12
+ * .badge { padding: 2px 8px; border-radius: 4px; font-size: 0.8em; }
13
+ * .badge-active { background: #d1fae5; color: #065f46; }
14
+ * .badge-inactive { background: #fee2e2; color: #991b1b; }
15
+ * </style>
16
+ * <span class="badge badge-${this.status}">${this.status}</span>
17
+ * </template>
18
+ *
19
+ * <ui-grid-element>
20
+ * <template slot="cell-status">
21
+ * <ui-status-badge status="{{value}}"></ui-status-badge>
22
+ * </template>
23
+ * </ui-grid-element>
24
+ * ```
25
+ */
26
+ export declare class UIGridTemplate extends HTMLTemplateElement {
27
+ static readonly TAG = "ui-grid-template";
28
+ connectedCallback(): void;
29
+ static define(tagName?: string): void;
30
+ }
31
+ //# sourceMappingURL=grid-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-template.d.ts","sourceRoot":"","sources":["../../../src/components/grid-template/grid-template.ts"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,sBAAsB;IAEzC,iBAAiB,IAAI,IAAI;IA6DzB,MAAM,CAAC,MAAM,CAAC,OAAO,SAAqB,GAAG,IAAI;CAKlD"}
@@ -0,0 +1,2 @@
1
+ export { UIGridTemplate } from './grid-template';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/grid-template/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC"}