@ds-mo/ui 13.11.1 → 13.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +307 -10
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-mobile-header.d.ts +1 -1
- package/dist/angular/ds-mobile-header.js +3 -3
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/ds-table.d.ts +31 -0
- package/dist/angular/ds-table.js +57 -0
- package/dist/angular/ds-tag.d.ts +1 -1
- package/dist/angular/ds-tag.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-bar-workflow.js.map +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js.map +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-radio.js.map +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.d.ts +11 -0
- package/dist/components/ds-table.js +2 -0
- package/dist/components/ds-table.js.map +1 -0
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-tag.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.d.ts +30 -0
- package/dist/components/p-B1JB0Zn-.js +2 -0
- package/dist/components/{p-DgglLVCj.js.map → p-B1JB0Zn-.js.map} +1 -1
- package/dist/components/p-B2t8alvH.js +2 -0
- package/dist/components/{p-DK4PGrHm.js.map → p-B2t8alvH.js.map} +1 -1
- package/dist/components/p-BAGTb6cZ.js +2 -0
- package/dist/components/p-BAGTb6cZ.js.map +1 -0
- package/dist/components/p-BEEYhbIb.js +2 -0
- package/dist/components/p-BEEYhbIb.js.map +1 -0
- package/dist/components/{p-BRajO-Za.js → p-BFMV9TJO.js} +2 -2
- package/dist/components/p-BNHPCCw8.js +2 -0
- package/dist/components/{p-DCN04sgt.js.map → p-BNHPCCw8.js.map} +1 -1
- package/dist/components/{p-DJGdoPMG.js → p-BUZLhvs1.js} +2 -2
- package/dist/components/p-BgaF83uh.js +2 -0
- package/dist/components/{p-C5gZHZHU.js.map → p-BgaF83uh.js.map} +1 -1
- package/dist/components/p-Br0fwWUG.js +2 -0
- package/dist/components/{p-BHb3Ws8e.js.map → p-Br0fwWUG.js.map} +1 -1
- package/dist/components/{p-DcmqsAMP.js → p-BydCwx7x.js} +2 -2
- package/dist/components/p-C3Z01Glr.js +2 -0
- package/dist/components/p-C3Z01Glr.js.map +1 -0
- package/dist/components/{p-Dg9qiMDa.js → p-C9StMCWg.js} +2 -2
- package/dist/components/{p-BX57q1Lo.js → p-CSlTJWFG.js} +2 -2
- package/dist/components/{p-BQ7Nzx9A.js → p-Ch5yT3UA.js} +2 -2
- package/dist/components/p-Cw1bbiCG.js +2 -0
- package/dist/components/p-Cw1bbiCG.js.map +1 -0
- package/dist/components/p-CzV4gIxd.js +2 -0
- package/dist/components/p-CzV4gIxd.js.map +1 -0
- package/dist/components/p-D-F8eyXy.js +2 -0
- package/dist/components/p-D-F8eyXy.js.map +1 -0
- package/dist/components/p-DGvzGGcu.js +2 -0
- package/dist/components/{p-CIlO_j3q.js.map → p-DGvzGGcu.js.map} +1 -1
- package/dist/components/{p-DkhE3BsH.js → p-bLCbOPYa.js} +2 -2
- package/dist/components/p-cPh32CFB.js +2 -0
- package/dist/components/{p-BnGJrBPG.js.map → p-cPh32CFB.js.map} +1 -1
- package/dist/docs/components.json +1590 -59
- package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +2 -0
- package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +3 -2
- package/dist/mcp-data/registry/button-filled.json +20 -1
- package/dist/mcp-data/registry/button-unfilled.json +20 -1
- package/dist/mcp-data/registry/mobile-header.json +48 -10
- package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
- package/dist/mcp-data/registry/registry.json +309 -9
- package/dist/mcp-data/registry/shell-app.json +4 -2
- package/dist/mcp-data/registry/shell-tools.json +4 -4
- package/dist/mcp-data/registry/tab-group.json +22 -2
- package/dist/mcp-data/registry/table.json +777 -0
- package/dist/mcp-data/registry/tag.json +22 -3
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-table.d.ts +17 -0
- package/dist/react/ds-table.js +19 -0
- package/dist/styles/table.css +874 -0
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +2 -0
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +2 -0
- package/dist/types/components/MobileHeader/MobileHeader.d.ts +8 -3
- package/dist/types/components/MobileHeader/index.d.ts +1 -1
- package/dist/types/components/MobileHeader/mobile-header-types.d.ts +3 -2
- package/dist/types/components/ShellApp/ShellApp.d.ts +8 -0
- package/dist/types/components/TabGroup/TabGroup.d.ts +3 -0
- package/dist/types/components/Table/Table.d.ts +126 -0
- package/dist/types/components/Table/index.d.ts +2 -0
- package/dist/types/components/Table/table-model.d.ts +29 -0
- package/dist/types/components/Table/table-types.d.ts +189 -0
- package/dist/types/components/Tag/Tag.d.ts +2 -0
- package/dist/types/components.d.ts +417 -6
- package/package.json +3 -2
- package/dist/components/p-BHb3Ws8e.js +0 -2
- package/dist/components/p-BnGJrBPG.js +0 -2
- package/dist/components/p-C5gZHZHU.js +0 -2
- package/dist/components/p-CIlO_j3q.js +0 -2
- package/dist/components/p-CVmtbj-6.js +0 -2
- package/dist/components/p-CVmtbj-6.js.map +0 -1
- package/dist/components/p-DAbaMtEX.js +0 -2
- package/dist/components/p-DAbaMtEX.js.map +0 -1
- package/dist/components/p-DCN04sgt.js +0 -2
- package/dist/components/p-DK4PGrHm.js +0 -2
- package/dist/components/p-DW9p068S.js +0 -2
- package/dist/components/p-DW9p068S.js.map +0 -1
- package/dist/components/p-DgglLVCj.js +0 -2
- package/dist/components/p-Xftomzsv.js +0 -2
- package/dist/components/p-Xftomzsv.js.map +0 -1
- package/dist/components/p-c1pY-Mqq.js +0 -2
- package/dist/components/p-c1pY-Mqq.js.map +0 -1
- /package/dist/components/{p-BRajO-Za.js.map → p-BFMV9TJO.js.map} +0 -0
- /package/dist/components/{p-DJGdoPMG.js.map → p-BUZLhvs1.js.map} +0 -0
- /package/dist/components/{p-DcmqsAMP.js.map → p-BydCwx7x.js.map} +0 -0
- /package/dist/components/{p-Dg9qiMDa.js.map → p-C9StMCWg.js.map} +0 -0
- /package/dist/components/{p-BX57q1Lo.js.map → p-CSlTJWFG.js.map} +0 -0
- /package/dist/components/{p-BQ7Nzx9A.js.map → p-Ch5yT3UA.js.map} +0 -0
- /package/dist/components/{p-DkhE3BsH.js.map → p-bLCbOPYa.js.map} +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface DsTable extends Components.DsTable, HTMLElement {}
|
|
4
|
+
export const DsTable: {
|
|
5
|
+
prototype: DsTable;
|
|
6
|
+
new (): DsTable;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as t,c as s,h as a,a as l,t as i}from"./index.js";import{d as n}from"./p-DwKC_9u2.js";import{d as r}from"./p-C3Z01Glr.js";import{d as o}from"./p-B2t8alvH.js";import{d}from"./p-DBJJiSP0.js";import{d as c}from"./p-DumWT7NN.js";import{d as b}from"./p-Ca-I2UnB.js";import{d as h}from"./p-C9StMCWg.js";import{d as _}from"./p-BEEYhbIb.js";import{d as u}from"./p-BNiIyZCn.js";const f={xs:"--dimension-table-column-width-xs",sm:"--dimension-table-column-width-sm",md:"--dimension-table-column-width-md",lg:"--dimension-table-column-width-lg",xl:"--dimension-table-column-width-xl"};function m(e){return typeof e==="object"&&e!==null&&"primary"in e&&!("kind"in e)}function v(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="primary-text"}function p(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="tag"}function g(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="icon"}function w(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="image"}function k(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="action"}function y(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="empty"}function x(e){return typeof e==="object"&&e!==null&&"kind"in e&&e.kind==="blank"}function z(e){if(e==null)return null;if(p(e))return e.label;if(g(e))return null;if(w(e))return e.alt;if(k(e))return e.label??e.ariaLabel;if(v(e))return e.primary;if(y(e)||x(e))return null;return m(e)?e.primary:e}function C(e,t){const s=e.selectionLabel?.trim();if(s)return s;for(const s of t){const t=z(e.cells[s.id]);if(t!=null&&String(t).trim())return String(t)}return e.id}function S(e,t){if(e?.columnId!==t)return{columnId:t,direction:"asc"};if(e.direction==="asc")return{columnId:t,direction:"desc"};return{columnId:t,direction:"asc"}}function M(e){return{...e,direction:e.direction==="asc"?"desc":"asc"}}function L(e){if(typeof e.size!=="number"||!Number.isFinite(e.size)||e.size<=0){return undefined}const t=Number.isFinite(e.minSize)&&(e.minSize??0)>0?e.minSize:0;const s=Number.isFinite(e.maxSize)&&(e.maxSize??0)>0?Math.max(e.maxSize,t):Number.POSITIVE_INFINITY;return Math.min(Math.max(e.size,t),s)}function $(e){if(typeof e.size==="string"){return`var(${f[e.size]})`}const t=L(e);return t==null?undefined:`${t}px`}function I(e){const t=e.map($).filter((e=>!!e));if(t.length===0)return undefined;return t.length===1?t[0]:`calc(${t.join(" + ")})`}function E(e,t,s){return s?t.flatMap((e=>e.rows)):e}function j(e){return e.selectable!==false&&!e.disabled}function D(e,t){const s=new Set(t);const a=e.filter(j).map((e=>e.id));const l=a.reduce(((e,t)=>e+(s.has(t)?1:0)),0);return{selectableRowIds:a,selectedLoadedCount:l,allSelected:a.length>0&&l===a.length,indeterminate:l>0&&l<a.length}}function R(e,t){if(!j(t))return[...e];const s=new Set(e);if(s.has(t.id))s.delete(t.id);else s.add(t.id);return[...s]}function B(e,t){const s=new Set(e);const a=D(t,e);for(const e of a.selectableRowIds){if(a.allSelected)s.delete(e);else s.add(e)}return[...s]}function H(e){const t=Number.isFinite(e.totalCount)?Math.max(0,e.totalCount):0;return Math.max(t,e.rows.length)}function T(e,t,s,a){const l=[];const i=new Set;for(const t of e){if(!t.id.trim())l.push("Every column requires a non-empty id.");else if(i.has(t.id))l.push(`Duplicate column id: ${t.id}`);if(!t.header.trim()&&!t.headerLabel?.trim()){l.push(`Column ${t.id||"(missing id)"} requires a visible header or headerLabel.`)}i.add(t.id)}const n=new Set;if(a){for(const e of s){if(!e.id.trim())l.push("Every group requires a non-empty id.");else if(n.has(e.id))l.push(`Duplicate group id: ${e.id}`);n.add(e.id);if(e.totalCount!=null&&e.totalCount<e.rows.length){l.push(`Group ${e.id} totalCount is smaller than its loaded row count.`)}}}const r=new Set;for(const e of E(t,s,a)){if(!e.id.trim())l.push("Every row requires a non-empty id.");else if(r.has(e.id))l.push(`Duplicate row id: ${e.id}`);r.add(e.id)}return[...new Set(l)]}const A=()=>`@media (forced-colors: active){.sc-ds-table:root,.sc-ds-table-h,.ds-forced-colors-scope.sc-ds-table{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-table-h,.ds-interaction-fill.sc-ds-table{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-table-h::before,.ds-interaction-fill.sc-ds-table::before,.ds-interaction-fill.sc-ds-table-h::after,.ds-interaction-fill.sc-ds-table::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-table-h::before,.ds-interaction-fill.sc-ds-table::before{z-index:1}.ds-interaction-fill.sc-ds-table-h::after,.ds-interaction-fill.sc-ds-table::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-table-h,.ds-interaction-fill--bordered.sc-ds-table{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-table-h::before,.ds-interaction-fill--selected.sc-ds-table::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-table-h,.ds-interaction-fill--selected.sc-ds-table{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-table-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-table:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-table-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-table:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-table-h::after,.ds-interaction-fill--grouped.sc-ds-table::after,.ds-interaction-fill--grouped.sc-ds-table-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-table:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}.ds-interaction-fill--grouped.sc-ds-table-h,.ds-interaction-fill--grouped.sc-ds-table{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-table-h>.ds-interaction-fill__content.sc-ds-table,.ds-interaction-fill.sc-ds-table>.ds-interaction-fill__content.sc-ds-table,.ds-interaction-fill__content.sc-ds-table{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-table-h,.ds-interaction-fill--on-faint.sc-ds-table{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-table-h,.ds-interaction-fill--on-medium.sc-ds-table{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-table-h,.ds-interaction-fill--on-bold.sc-ds-table{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-table-h,.ds-interaction-fill--on-strong.sc-ds-table{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-table-h,.ds-interaction-fill--on-translucent.sc-ds-table{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-table-h,.ds-interaction-fill--on-inverted.sc-ds-table{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-table-h,.ds-interaction-fill--on-media.sc-ds-table{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-table-h,.ds-interaction-fill--on-always-dark.sc-ds-table{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-table-h,.ds-interaction-fill--on-navigation.sc-ds-table{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-table-h::after,.ds-interaction-fill.sc-ds-table::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-table-h::before,.ds-interaction-fill--selected.sc-ds-table::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-table-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-table:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}`;const N=()=>`.sc-ds-table:where(.ds-table){--_table-cell-track-min-block-size:calc( var(--dimension-size-400) - var(--dimension-space-050) );--_table-cell-track-padding-inline:calc( var(--dimension-space-075) - var(--dimension-space-025) );--_table-cell-track-label-inset:var(--dimension-space-025);--_table-image-block-size:calc( var(--dimension-size-800) - var(--dimension-space-150) );--_table-surface:var(--ds-table-surface, var(--color-background-primary));--_table-header-surface:var(--ds-table-header-surface, var(--color-background-primary));--_table-group-surface:var(--ds-table-group-surface, var(--color-background-faint-neutral));--_table-row-hover:var(--ds-table-row-hover, var(--color-interaction-hover));--_table-row-pressed:var(--ds-table-row-pressed, var(--color-interaction-pressed));--_table-row-selected:var(--ds-table-row-selected, var(--color-interaction-active-brand));--_table-border:var(--ds-table-border, var(--color-border-secondary));--_table-column-border:var(--ds-table-column-border, var(--color-border-tertiary));--_table-sticky-border:var(--ds-table-sticky-border, var(--color-border-secondary));--_table-border-strong:var(--ds-table-border-strong, var(--color-border-secondary));--_table-radius:var(--ds-table-radius, var(--dimension-radius-075));--_table-header-min-block-size:var( --ds-table-header-min-block-size, var(--dimension-size-400) );--_table-row-min-block-size:var( --ds-table-row-min-block-size, var(--dimension-size-500) );--_table-cell-padding-block:var( --ds-table-cell-padding-block, var(--dimension-space-100) );--_table-cell-padding-inline:var( --ds-table-cell-padding-inline, var(--dimension-space-100) );--_table-selection-column-inline-size:var( --ds-table-selection-column-inline-size, var(--dimension-size-500) );--_table-selection-column-contribution:0;--_table-sticky-start-shadow:var( --ds-table-sticky-start-shadow, inset var(--dimension-space-050) 0 var(--dimension-space-050) calc(-1 * var(--dimension-space-050)) var(--color-elevation-shadow) );--_table-sticky-end-shadow:var( --ds-table-sticky-end-shadow, inset calc(-1 * var(--dimension-space-050)) 0 var(--dimension-space-050) calc(-1 * var(--dimension-space-050)) var(--color-elevation-shadow) );display:block;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;color:var(--color-foreground-primary);-webkit-user-select:none;user-select:none}.sc-ds-table:where(.ds-table__frame){position:relative;timeline-scope:--ds-table-inline-scroll;box-sizing:border-box;min-inline-size:0;max-inline-size:100%;overflow:visible;border:0;border-radius:var(--_table-radius);background:var(--_table-surface)}.sc-ds-table:where(.ds-table__viewport){box-sizing:border-box;max-block-size:var(--ds-table-max-block-size, none);max-inline-size:100%;min-inline-size:0;overflow:auto;scroll-timeline:--ds-table-inline-scroll inline;overscroll-behavior-x:none;overscroll-behavior-y:auto;scrollbar-gutter:stable;border-radius:var(--_table-radius);outline:none}.sc-ds-table:where(.ds-table--document-sticky-header .ds-table__viewport){scrollbar-gutter:auto}.sc-ds-table:where(.ds-table__viewport:focus-visible){outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.sc-ds-table:where(.ds-table__table){box-sizing:border-box;inline-size:100%;min-inline-size:max(100%, var(--ds-table-explicit-min-inline-size, 0));border:0;border-spacing:0;border-collapse:separate;table-layout:fixed;background:var(--_table-surface);color:inherit}.sc-ds-table:where(.ds-table__table--selectable){--_table-selection-column-contribution:var(--_table-selection-column-inline-size);min-inline-size:max( 100%, calc(var(--ds-table-explicit-min-inline-size, 0) + var(--_table-selection-column-contribution)) )}.sc-ds-table:where(.ds-table__caption){padding:var(--_table-cell-padding-inline);border-block-end:var(--dimension-stroke-width-012) solid var(--_table-border);background:var(--_table-surface);text-align:start}.sc-ds-table:where(.ds-table__selection-column){inline-size:var(--_table-selection-column-inline-size)}.sc-ds-table:where(.ds-table__head){position:relative;z-index:1}.sc-ds-table:where(.ds-table--contained-sticky-header .ds-table__head){position:sticky;inset-block-start:0;z-index:2}.sc-ds-table:where(.ds-table__document-sticky-header){position:sticky;inset-block-start:var(--ds-table-sticky-header-offset, 0);z-index:3;block-size:var(--_table-header-min-block-size);margin-block-end:calc(-1 * var(--_table-header-min-block-size));max-inline-size:100%;overflow:hidden;border-radius:var(--_table-radius) var(--_table-radius) 0 0;background:var(--_table-header-surface)}.sc-ds-table:where(.ds-table__sticky-header-table){block-size:var(--_table-header-min-block-size);transform:translate3d(calc(-1 * var(--ds-table-inline-scroll-offset, 0px)), 0, 0);will-change:transform}.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-start){transform:translate3d(var(--ds-table-inline-scroll-offset, 0), 0, 0)}.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-end){transform:translate3d( calc( var(--ds-table-inline-scroll-offset, 0) - var(--ds-table-inline-scroll-max-offset, 0) ), 0, 0 )}@supports (animation-timeline: --ds-table-inline-scroll){.sc-ds-table:where(.ds-table__sticky-header-table){animation:ds-table-follow-inline-scroll var(--effect-motion-short-2) both;animation-timeline:--ds-table-inline-scroll;animation-range:0% 100%;animation-timing-function:linear}.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-start){animation:ds-table-counter-inline-scroll-start var(--effect-motion-short-2) both;animation-timeline:--ds-table-inline-scroll;animation-range:0% 100%;animation-timing-function:linear}.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-end){animation:ds-table-counter-inline-scroll-end var(--effect-motion-short-2) both;animation-timeline:--ds-table-inline-scroll;animation-range:0% 100%;animation-timing-function:linear}}@keyframes ds-table-follow-inline-scroll{from{transform:translate3d(0, 0, 0)}to{transform:translate3d( calc(-1 * var(--ds-table-inline-scroll-max-offset, 0)), 0, 0 )}}@keyframes ds-table-counter-inline-scroll-start{from{transform:translate3d(0, 0, 0)}to{transform:translate3d(var(--ds-table-inline-scroll-max-offset, 0), 0, 0)}}@keyframes ds-table-counter-inline-scroll-end{from{transform:translate3d( calc(-1 * var(--ds-table-inline-scroll-max-offset, 0)), 0, 0 )}to{transform:translate3d(0, 0, 0)}}.sc-ds-table:where(.ds-table__head--semantic-copy){opacity:0;pointer-events:none}.sc-ds-table:where(.ds-table__header-row){min-block-size:var(--_table-header-min-block-size);background:var(--_table-header-surface)}.sc-ds-table:where(.ds-table__header-cell),.sc-ds-table:where(.ds-table__cell),.sc-ds-table:where(.ds-table__group-cell),.sc-ds-table:where(.ds-table__load-cell),.sc-ds-table:where(.ds-table__state-cell){box-sizing:border-box;border:0;border-block-end:var(--dimension-stroke-width-012) solid var(--_table-border);text-align:start;vertical-align:middle}.sc-ds-table:where(.ds-table__header-cell){position:relative;min-block-size:calc( var(--_table-header-min-block-size) - var(--dimension-space-100) - var(--dimension-space-100) );block-size:calc( var(--_table-header-min-block-size) - var(--dimension-space-100) - var(--dimension-space-100) );padding:var(--dimension-space-100);border-block-end:0;background:var(--_table-header-surface);color:var(--color-foreground-secondary)}.sc-ds-table:where(.ds-table__header-cell)::after{content:'';position:absolute;inset-inline:0;inset-block-end:0;z-index:1;block-size:var(--dimension-stroke-width-012);background:var(--_table-border-strong);pointer-events:none}.sc-ds-table:where(.ds-table__cell){min-block-size:var(--_table-row-min-block-size);block-size:var(--_table-row-min-block-size);padding:var(--_table-cell-padding-block) var(--_table-cell-padding-inline);--ds-interaction-group-divider-width:var(--dimension-stroke-width-012);--ds-interaction-group-divider-color:var(--_table-border);border-block-end:0;background-color:inherit;vertical-align:top}.sc-ds-table:where(.ds-table__header-cell+.ds-table__header-cell){border-inline-start:0}.sc-ds-table:where(.ds-table__header-cell+.ds-table__header-cell)::before{content:'';position:absolute;inset:0;z-index:0;box-shadow:inset var(--dimension-stroke-width-012) 0 0 var(--_table-column-border);pointer-events:none}.sc-ds-table:where(.ds-table__cell+.ds-table__cell){--ds-interaction-group-divider-inline-start-width:var(--dimension-stroke-width-012);--ds-interaction-group-divider-inline-start-color:var(--_table-column-border)}.sc-ds-table:where(.ds-table__header-labels),.sc-ds-table:where(.ds-table__header-static),.sc-ds-table:where(.ds-table__header-label){display:flex;align-items:center;box-sizing:border-box;min-inline-size:0;block-size:var(--dimension-size-200);padding:0;color:inherit;text-align:inherit}.sc-ds-table:where(.ds-table__header-labels){flex:0 1 auto}.sc-ds-table:where(.ds-table__header-label){flex:0 1 auto;inline-size:fit-content;padding-inline:var(--dimension-space-025);color:var(--color-foreground-secondary)}.sc-ds-table:where(.ds-table__header-label[data-sort-active='true']){color:var(--color-foreground-primary)}.sc-ds-table:where(.ds-table__header-label-box){min-inline-size:0;padding-inline:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-label--interactive){appearance:none;border:0;border-radius:var(--dimension-radius-025);background:transparent;cursor:default;outline:none;-webkit-tap-highlight-color:transparent}@media (hover: hover) and (pointer: fine){.sc-ds-table:where(.ds-table__header-label--interactive:hover){color:var(--color-foreground-primary)}}.sc-ds-table:where(.ds-table__header-label--interactive:active){color:var(--color-foreground-primary)}.sc-ds-table:where(.ds-table__header-label--interactive:focus-visible),.sc-ds-table:where(.ds-table__selection-control:focus-visible){outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.sc-ds-table:where(.ds-table__header-content),.sc-ds-table:where(.ds-table__header-labels),.sc-ds-table:where(.ds-table__header-segment),.sc-ds-table:where(.ds-table__sort-slot),.sc-ds-table:where(.ds-table__group-content),.sc-ds-table:where(.ds-table__load-content){display:inline-flex;align-items:center;min-inline-size:0}.sc-ds-table:where(.ds-table__header-content){display:flex;inline-size:100%;gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__header-labels){max-inline-size:100%;gap:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-segment){flex:0 1 auto;gap:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__header-separator){flex:0 0 auto}.sc-ds-table:where(.ds-table__sort-slot){justify-content:center;flex:0 0 auto;inline-size:var(--dimension-size-200);block-size:var(--dimension-size-200);margin-inline-start:auto}.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-content){justify-content:center}.sc-ds-table:where(.ds-table__cell--align-center .ds-table__sort-slot),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__sort-slot){margin-inline-start:0}.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-labels){margin-inline-start:auto}.sc-ds-table:where(.ds-table__cell-content),.sc-ds-table:where(.ds-table__cell-copy){display:flex;min-inline-size:0;max-inline-size:100%}.sc-ds-table:where(.ds-table__cell-content){align-items:flex-start;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-copy){flex:1;flex-direction:column;justify-content:flex-start}.sc-ds-table:where(.ds-table__cell-track){display:flex;align-items:center;box-sizing:border-box;min-inline-size:0;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-track--text){inline-size:100%;padding-inline:var(--_table-cell-track-label-inset)}.sc-ds-table:where(.ds-table__cell--text-single),.sc-ds-table:where(.ds-table__cell--text-multi),.sc-ds-table:where(.ds-table__cell--primary-text),.sc-ds-table:where(.ds-table__cell--empty),.sc-ds-table:where(.ds-table__cell--blank){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell--text-single .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--empty .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--blank .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--text-single .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--empty .ds-table__cell-track){min-block-size:0}.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-copy){gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__cell--text-multi .ds-table__cell-secondary){padding-block:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__cell--primary-text .ds-table__cell-secondary){padding-block:0}.sc-ds-table:where(.ds-table__cell--tag-tag-only),.sc-ds-table:where(.ds-table__cell--tag-tag-with-text){padding:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__cell--tag-text-with-tag){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell-tag-stack){display:flex;flex-direction:column;align-items:flex-start;box-sizing:border-box;min-inline-size:0;max-inline-size:100%}.sc-ds-table:where(.ds-table__cell-tag-text){inline-size:100%}.sc-ds-table:where(.ds-table__cell-tag-stack--tag-with-text .ds-table__cell-tag-text){padding-inline:calc( var(--_table-cell-track-padding-inline) + var(--_table-cell-track-label-inset) );padding-block:var(--dimension-space-025);min-block-size:0}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag .ds-table__cell-tag-text){padding-inline:var(--_table-cell-track-label-inset);min-block-size:0}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag){gap:var(--dimension-space-050)}.sc-ds-table:where(.ds-table__cell-tag-control-track){display:flex;align-items:center;min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-tag-stack--text-with-tag .ds-table__cell-tag-control-track){min-block-size:0}.sc-ds-table:where(.ds-table__cell--icon){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__cell--icon .ds-table__cell-content){align-items:center;justify-content:center;inline-size:100%;min-block-size:var(--dimension-iconography-md)}.sc-ds-table:where(.ds-table__cell--image){padding:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__cell-image){display:block;box-sizing:border-box;flex:none;block-size:var(--_table-image-block-size);aspect-ratio:16 / 9;overflow:hidden;border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);border-radius:var(--dimension-radius-025)}.sc-ds-table:where(.ds-table__cell-image-content),.sc-ds-table:where(.ds-table__cell-image-placeholder){display:block;inline-size:100%;block-size:100%}.sc-ds-table:where(.ds-table__cell-image-content){object-fit:cover}.sc-ds-table:where(.ds-table__cell--action){padding:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__cell--action .ds-table__cell-content){min-block-size:var(--_table-cell-track-min-block-size)}.sc-ds-table:where(.ds-table__cell-primary),.sc-ds-table:where(.ds-table__cell-secondary){min-inline-size:0}.sc-ds-table:where(.ds-table__cell-copy--wrap){overflow-wrap:anywhere}.sc-ds-table:where(.ds-table__cell--align-center),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-static),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-labels),.sc-ds-table:where(.ds-table__cell--align-center .ds-table__header-label){text-align:center;justify-content:center}.sc-ds-table:where(.ds-table__cell--align-end),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__cell-content),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__cell-track),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-static),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-labels),.sc-ds-table:where(.ds-table__cell--align-end .ds-table__header-label){text-align:end;justify-content:flex-end}.sc-ds-table:where(.ds-table__body){background:var(--_table-surface)}.sc-ds-table:where(.ds-table__row){min-block-size:var(--_table-row-min-block-size);background:var(--_table-surface)}.sc-ds-table:where(.ds-table__row>.ds-table__cell.ds-interaction-fill){--ds-interaction-active:var(--_table-row-selected);--ds-interaction-group-fill:transparent}@media (hover: hover) and (pointer: fine){.sc-ds-table:where(.ds-table__row--interactive:hover>.ds-table__cell.ds-interaction-fill){--ds-interaction-group-fill:var(--_table-row-hover)}}.sc-ds-table:where(.ds-table__row--interactive:active>.ds-table__cell.ds-interaction-fill){--ds-interaction-group-fill:var(--_table-row-pressed)}.sc-ds-table:where(.ds-table__row--interactive:focus-visible){outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.sc-ds-table:where(.ds-table__row--disabled){color:var(--color-foreground-tertiary);opacity:var(--effect-opacity-medium)}.sc-ds-table:where(.ds-table__selection-cell){inline-size:var(--_table-selection-column-inline-size);padding:0;text-align:center}.sc-ds-table:where(.ds-table__cell--sticky-start),.sc-ds-table:where(.ds-table__cell--sticky-end){--ds-interaction-position:sticky;--ds-interaction-z-index:2;position:sticky;z-index:2;background-color:var(--_table-surface)}.sc-ds-table:where(.ds-table__cell--sticky-start){inset-inline-start:0}.sc-ds-table:where(.ds-table__cell--sticky-end){inset-inline-end:0}.sc-ds-table:where(.ds-table__header-cell.ds-table__cell--sticky-start),.sc-ds-table:where(.ds-table__header-cell.ds-table__cell--sticky-end){z-index:3;background-color:var(--_table-header-surface)}.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-start),.sc-ds-table:where(.ds-table__sticky-header-table .ds-table__cell--sticky-end){position:relative;inset-inline:auto;will-change:transform}.sc-ds-table:where(.ds-table__selection-cell.ds-table__cell--sticky-start){--ds-interaction-group-divider-inline-end-width:0px}.sc-ds-table:where(.ds-table__cell--sticky-start+.ds-table__cell){--ds-interaction-group-divider-inline-start-width:0px}.sc-ds-table:where(.ds-table__cell--sticky-end){--ds-interaction-group-divider-inline-start-width:0px}.sc-ds-table:where(.ds-table__header-cell.ds-table__cell--sticky-start+.ds-table__header-cell)::before,.sc-ds-table:where(.ds-table__header-cell.ds-table__cell--sticky-end)::before{box-shadow:none}.sc-ds-table:where(.ds-table__sticky-edge){position:absolute;inset-block:0 var(--dimension-stroke-width-012);z-index:4;inline-size:var(--dimension-stroke-width-012);background:var(--_table-sticky-border);pointer-events:none}.sc-ds-table:where(.ds-table__sticky-edge)::after{content:'';position:absolute;inset-block:0;inline-size:var(--dimension-space-050);pointer-events:none}.sc-ds-table:where(.ds-table__sticky-edge--start){inset-inline-end:0}.sc-ds-table:where(.ds-table__sticky-edge--start)::after{inset-inline-start:100%}.sc-ds-table:where(.ds-table__sticky-edge--end){inset-inline-start:0}.sc-ds-table:where(.ds-table__sticky-edge--end)::after{inset-inline-end:100%}.sc-ds-table:where(.ds-table__frame--overflow-start .ds-table__sticky-edge--start)::after{box-shadow:var(--_table-sticky-start-shadow)}.sc-ds-table:where(.ds-table__frame--overflow-end .ds-table__sticky-edge--end)::after{box-shadow:var(--_table-sticky-end-shadow)}.sc-ds-table:where(.ds-table__cell.ds-table__selection-cell){padding:var(--dimension-space-125)}.sc-ds-table:where(.ds-table__selection-control){appearance:none;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;inline-size:100%;min-block-size:calc( var(--_table-header-min-block-size) - var(--dimension-stroke-width-012) );padding:0;border:0;border-radius:0;background:transparent;color:inherit;cursor:default;outline:none}.sc-ds-table:where(.ds-table__cell.ds-table__selection-cell .ds-table__selection-control){inline-size:var(--dimension-iconography-md);min-block-size:var(--dimension-iconography-md);block-size:var(--dimension-iconography-md)}.sc-ds-table:where(.ds-table__selection-control:disabled){cursor:default}.sc-ds-table:where(.ds-table__selection-control:disabled ds-checkbox){opacity:var(--effect-opacity-medium)}.sc-ds-table:where(.ds-table__group-cell){min-block-size:var(--_table-header-min-block-size);padding:var(--dimension-space-075) var(--_table-cell-padding-inline);background:var(--_table-group-surface)}.sc-ds-table:where(.ds-table__group-content){gap:var(--dimension-space-075)}.sc-ds-table:where(.ds-table__load-cell),.sc-ds-table:where(.ds-table__state-cell){padding:var(--dimension-space-200) var(--_table-cell-padding-inline);background:var(--_table-surface);text-align:center}.sc-ds-table:where(.ds-table__load-content){justify-content:center;gap:var(--dimension-space-100)}.sc-ds-table:where(.ds-table__load-content--error){flex-wrap:wrap}.sc-ds-table:where(.ds-table__auto-sentinel){display:block;min-block-size:var(--dimension-space-025)}.sc-ds-table:where(.ds-table__state-cell){block-size:calc(var(--dimension-size-800) * 2)}.sc-ds-table:where(.ds-table__skeleton-row){pointer-events:none}.sc-ds-table:where(.ds-table__skeleton-row:last-child .ds-table__cell),.sc-ds-table:where(.ds-table__load-row:last-child .ds-table__load-cell),.sc-ds-table:where(.ds-table__state-row:last-child .ds-table__state-cell),.sc-ds-table:where(.ds-table__body:last-child .ds-table__row:last-child .ds-table__cell){border-block-end:0;--ds-interaction-group-divider-width:0px}.sc-ds-table:where(.ds-visually-hidden){position:absolute;inline-size:var(--dimension-stroke-width-012);block-size:var(--dimension-stroke-width-012);padding:0;margin:calc(-1 * var(--dimension-stroke-width-012));overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){.sc-ds-table:where(.ds-table__cell--sticky-start),.sc-ds-table:where(.ds-table__cell--sticky-end){transition:none}}@media (forced-colors: active){.sc-ds-table:where(.ds-table){--_table-surface:var(--ds-forced-color-surface);--_table-header-surface:var(--ds-forced-color-surface);--_table-group-surface:var(--ds-forced-color-surface);--_table-border:var(--ds-forced-color-control-boundary);--_table-column-border:var(--ds-forced-color-control-boundary);--_table-border-strong:var(--ds-forced-color-control-boundary);color:var(--ds-forced-color-content)}.sc-ds-table:where(.ds-table__frame--overflow-start .ds-table__sticky-edge--start)::after,.sc-ds-table:where(.ds-table__frame--overflow-end .ds-table__sticky-edge--end)::after{box-shadow:none}.sc-ds-table:where(.ds-table__row--disabled){color:var(--ds-forced-color-disabled);opacity:1}.sc-ds-table:where(.ds-table__selection-control:disabled ds-checkbox){--ds-forced-color-content:var(--ds-forced-color-disabled);opacity:1}.sc-ds-table:where(.ds-table__header-label--interactive:focus-visible),.sc-ds-table:where(.ds-table__selection-control:focus-visible),.sc-ds-table:where(.ds-table__viewport:focus-visible){outline-color:var(--ds-forced-color-selected)}}.sc-ds-table-h{display:block;box-sizing:border-box;min-width:0;max-width:100%}`;const O=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.dsSortChange=s(this,"dsSortChange");this.dsGroupingChange=s(this,"dsGroupingChange");this.dsSelectionChange=s(this,"dsSelectionChange");this.dsLoadMore=s(this,"dsLoadMore");this.dsCellAction=s(this,"dsCellAction");this.dsRowActivate=s(this,"dsRowActivate");this.columns=[];this.rows=[];this.groups=[];this.grouping=null;this.sort=null;this.captionVisibility="hidden";this.stickyHeader=false;this.selectionMode="none";this.selectedRowIds=[];this.loading=false;this.skeletonRows=5;this.emptyHeading="No results";this.emptyBody="No data is available.";this.error=false;this.errorHeading="Unable to load data";this.errorBody="The data could not be loaded.";this.emptyCellLabel="Not available";this.lazyLoading=false;this.loadMoreMode="auto";this.hasMore=false;this.loadingMore=false;this.loadIdentity="default";this.loadMoreThreshold=0;this.loadMoreLabel="Load more";this.retryLabel="Retry";this.loadingMoreLabel="Loading more results";this.endOfResultsLabel="All results loaded";this.rowsLoadedLabel="{count} more rows loaded. {total} rows loaded.";this.overflowStart=false;this.overflowEnd=false;this.scrollable=false;this.intersectionSupported=true;this.announcement="";this.viewportEl=null;this.stickyHeaderTableEl=null;this.tableEl=null;this.sentinelEl=null;this.resizeObserver=null;this.intersectionObserver=null;this.observedSentinel=null;this.requestPending=false;this.requestedRowCount=0;this.previousLoadedRowCount=0;this.previousModelWarning="";this.hasLoaded=false;this.reconnectFrame=null;this.syncOverflow=()=>{const e=this.viewportEl;if(!e)return;const t=e.scrollWidth-e.clientWidth>1;const s=t||e.scrollHeight-e.clientHeight>1;const a=t&&e.scrollLeft>1;const l=t&&e.scrollLeft+e.clientWidth<e.scrollWidth-1;if(a!==this.overflowStart)this.overflowStart=a;if(l!==this.overflowEnd)this.overflowEnd=l;if(s!==this.scrollable)this.scrollable=s;this.syncStickyHeaderPosition()}}componentWillLoad(){this.previousLoadedRowCount=this.loadedRows.length;this.intersectionSupported=typeof IntersectionObserver!=="undefined";this.warnModelIssues()}componentDidLoad(){this.hasLoaded=true;this.connectViewportObserver();this.syncOverflow();this.connectIntersectionObserver()}componentDidRender(){this.syncStickyHeaderPosition();this.connectIntersectionObserver()}connectedCallback(){if(!this.hasLoaded)return;if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=requestAnimationFrame((()=>{this.reconnectFrame=null;this.connectViewportObserver();this.syncOverflow();this.connectIntersectionObserver()}))}disconnectedCallback(){if(this.reconnectFrame!==null)cancelAnimationFrame(this.reconnectFrame);this.reconnectFrame=null;this.viewportEl?.removeEventListener("scroll",this.syncOverflow);this.resizeObserver?.disconnect();this.resizeObserver=null;this.disconnectIntersectionObserver()}handleStructureChange(){this.warnModelIssues();this.resetLoadRequest()}handleDataChange(){const e=this.loadedRows.length;if(e>this.previousLoadedRowCount){const t=e-this.previousLoadedRowCount;this.announcement=this.rowsLoadedLabel.replace("{count}",String(t)).replace("{total}",String(e))}if(e>this.requestedRowCount)this.requestPending=false;this.previousLoadedRowCount=e;this.warnModelIssues();this.disconnectIntersectionObserver()}handleLoadIdentityChange(){this.previousLoadedRowCount=this.loadedRows.length;this.resetLoadRequest()}handleLazyConfigurationChange(){this.disconnectIntersectionObserver()}handleLoadingMoreChange(e){if(e){this.requestPending=true;this.announcement=this.loadingMoreLabel}else if(this.loadMoreMode==="manual"){this.requestPending=false}this.disconnectIntersectionObserver()}handleLoadMoreErrorChange(e){if(e?.trim()){this.requestPending=false;this.announcement=e}this.disconnectIntersectionObserver()}handleHasMoreChange(e,t){if(!e){this.requestPending=false;if(t)this.announcement=this.endOfResultsLabel}this.disconnectIntersectionObserver()}get grouped(){return this.grouping!==null}get selectable(){return this.selectionMode==="multiple"}get documentStickyHeader(){return this.stickyHeader&&this.resolvedMaxHeight===undefined}get loadedRows(){return E(this.rows,this.groups,this.grouped)}get hasData(){return this.loadedRows.length>0}get totalColumns(){return this.columns.length+(this.selectable?1:0)}get selectedSet(){return new Set(this.selectedRowIds)}get selectionState(){return D(this.loadedRows,this.selectedRowIds)}get resolvedMaxHeight(){if(this.maxHeight==null||this.maxHeight==="")return undefined;return typeof this.maxHeight==="number"?`${Math.max(0,this.maxHeight)}px`:this.maxHeight}get tableStyle(){const e=I(this.columns);return e==null?undefined:{"--ds-table-explicit-min-inline-size":e}}warnModelIssues(){const e=T(this.columns,this.rows,this.groups,this.grouped);if(!this.caption?.trim())e.unshift("A non-empty caption is required.");if(this.grouping&&!this.columns.some((e=>e.id===this.grouping.columnId))){e.push(`Grouping references unknown column id: ${this.grouping.columnId}`)}if(this.sort&&!this.columns.some((e=>e.id===this.sort.columnId||e.headerSegments?.some((e=>e.sortKey===this.sort.columnId))))){e.push(`Sorting references unknown column id: ${this.sort.columnId}`)}const t=this.columns.filter((e=>e.sticky==="start"));const s=this.columns.filter((e=>e.sticky==="end"));if(t.length>1||this.selectable&&t.length>0){e.push("Only one sticky start column is supported, and row selection already owns that lane.")}if(s.length>1)e.push("Only one sticky end column is supported.");for(const a of[...t,...s]){if(!$(a))e.push(`Sticky column ${a.id} requires an explicit size.`)}const a=e.join(" ");if(!a||a===this.previousModelWarning)return;this.previousModelWarning=a;console.warn(`[ds-table] ${a}`)}connectViewportObserver(){if(!this.viewportEl)return;this.viewportEl.removeEventListener("scroll",this.syncOverflow);this.viewportEl.addEventListener("scroll",this.syncOverflow,{passive:true});this.resizeObserver?.disconnect();if(typeof ResizeObserver==="undefined")return;this.resizeObserver=new ResizeObserver(this.syncOverflow);this.resizeObserver.observe(this.viewportEl);if(this.tableEl)this.resizeObserver.observe(this.tableEl)}syncStickyHeaderPosition(){if(!this.viewportEl||!this.stickyHeaderTableEl)return;const e=this.viewportEl.scrollLeft;const t=Math.max(0,this.viewportEl.scrollWidth-this.viewportEl.clientWidth);this.stickyHeaderTableEl.style.setProperty("--ds-table-inline-scroll-offset",`${e}px`);this.stickyHeaderTableEl.style.setProperty("--ds-table-inline-scroll-max-offset",`${t}px`)}resetLoadRequest(){this.requestPending=false;this.requestedRowCount=this.loadedRows.length;this.disconnectIntersectionObserver()}disconnectIntersectionObserver(){this.intersectionObserver?.disconnect();this.intersectionObserver=null;this.observedSentinel=null}connectIntersectionObserver(){if(!this.lazyLoading||this.loadMoreMode!=="auto"||!this.hasMore||!!this.loadMoreError?.trim()||!this.intersectionSupported||!this.viewportEl||!this.sentinelEl){this.disconnectIntersectionObserver();return}if(this.intersectionObserver&&this.observedSentinel===this.sentinelEl)return;this.disconnectIntersectionObserver();const e=Number.isFinite(this.loadMoreThreshold)?Math.max(0,this.loadMoreThreshold):0;this.intersectionObserver=new IntersectionObserver((e=>{if(e.some((e=>e.isIntersecting)))this.requestLoadMore("auto")}),{root:this.resolvedMaxHeight===undefined?null:this.viewportEl,rootMargin:`0px 0px ${e}px 0px`});this.observedSentinel=this.sentinelEl;this.intersectionObserver.observe(this.sentinelEl)}requestLoadMore(e){if(!this.lazyLoading||!this.hasMore||this.loadingMore||e!=="retry"&&!!this.loadMoreError?.trim()||this.requestPending)return;this.requestPending=true;this.requestedRowCount=this.loadedRows.length;this.announcement=this.loadingMoreLabel;this.dsLoadMore.emit({reason:e,loadIdentity:this.loadIdentity,loadedRowCount:this.requestedRowCount})}emitSort(e,t=e.id){if(this.grouping?.columnId===e.id&&t===e.id){this.dsGroupingChange.emit({grouping:M(this.grouping)});return}if(!e.sortable)return;this.dsSortChange.emit({sort:S(this.sort,t)})}sortButtonLabel(e,t=e.id,s=e.header){if(this.grouping?.columnId===e.id&&t===e.id){const t=this.grouping.direction==="asc"?"descending":"ascending";return`Sort ${e.header} groups ${t}. Currently grouped ${this.grouping.direction==="asc"?"ascending":"descending"}.`}if(this.sort?.columnId!==t)return`Sort ${s} ascending`;if(this.sort.direction==="asc")return`Sort ${s} descending. Currently ascending.`;return`Sort ${s} ascending. Currently descending.`}emitRowSelection(e){const t=R(this.selectedRowIds,e);const s=t.includes(e.id);this.dsSelectionChange.emit({selectedRowIds:t,scope:"row",changedRowId:e.id,selected:s})}emitAllSelection(){this.dsSelectionChange.emit({selectedRowIds:B(this.selectedRowIds,this.loadedRows),scope:"all-loaded",selected:!this.selectionState.allSelected})}rowEventOwnsActivation(e){const s=e.currentTarget;return!e.composedPath().some((e=>{if(!(e instanceof t)||e===s)return false;return e.matches('button, a, input, select, textarea, [role="button"], [role="checkbox"], ds-button-unfilled')}))}emitRowActivation(e,t){if(!e.interactive||e.disabled||!this.rowEventOwnsActivation(t))return;this.dsRowActivate.emit({rowId:e.id})}handleRowKeydown(e,t){if(t.target!==t.currentTarget||t.key!=="Enter"&&t.key!==" ")return;t.preventDefault();this.emitRowActivation(e,t)}renderSelectionControl(e,t,s,l,i){return a("button",{class:"ds-table__selection-control ds-interaction-fill__content",type:"button",role:"checkbox","aria-label":e,"aria-checked":s?"mixed":String(t),disabled:l,onClick:i},a("ds-checkbox",{label:"",size:"md",checked:t,indeterminate:s,presentation:true}))}renderStickyEdge(e){if(!e)return null;return a("span",{class:`ds-table__sticky-edge ds-table__sticky-edge--${e}`,"aria-hidden":"true"})}renderColumnHeader(e,t=true,s=false){const l=this.grouping?.columnId===e.id;const i=e.headerSegments?.length?e.headerSegments:[{label:e.header,sortKey:e.id}];const n=!l?i.find((e=>e.sortKey===this.sort?.columnId)):undefined;const r=!!n;const o=l||r;const d=e.align??"start";const c=l?this.grouping.direction:r?this.sort.direction:undefined;const b=r?this.sort.direction==="asc"?"ascending":"descending":undefined;const h=a("span",{class:"ds-table__header-labels"},i.map(((s,r)=>{const o=l?i.length===1:n?.sortKey===s.sortKey;const d=t&&(!!e.sortable||l&&s.sortKey===e.id);const c=a("ds-text",{class:"ds-table__header-label-box ds-control-label-box",as:"span",variant:"text-caption",emphasis:o,color:"inherit",lineTruncation:1},s.label);const b=d?a("button",{class:"ds-table__header-label ds-table__header-label--interactive",type:"button","aria-label":this.sortButtonLabel(e,s.sortKey,s.label),"data-sort-control":"label","data-sort-key":s.sortKey,"data-sort-active":o?"true":undefined,onClick:()=>this.emitSort(e,s.sortKey)},c):a("span",{class:"ds-table__header-label ds-table__header-static"},c);return a("span",{class:"ds-table__header-segment",key:s.sortKey},b,r<i.length-1&&a("ds-text",{class:"ds-table__header-separator",as:"span",variant:"text-caption",color:"tertiary","aria-hidden":"true"},s.separator??"/"))})));const _=t?a("span",{class:"ds-table__sort-slot"},o&&a("ds-button-unfilled",{class:"ds-table__sort-direction",variant:"icon",icon:c==="asc"?"ArrowUp":"ArrowDown",size:"xs","aria-label":this.sortButtonLabel(e,n?.sortKey??e.id,n?.label??e.header),hasBorder:false,activeFill:false,isActive:true,pressScale:false,"data-sort-control":"direction",onDsClick:()=>this.emitSort(e,n?.sortKey??e.id)})):null;return a("th",{key:e.id,class:{"ds-table__header-cell":true,[`ds-table__cell--align-${d}`]:true,"ds-table__cell--sticky-start":e.sticky==="start","ds-table__cell--sticky-end":e.sticky==="end"},scope:s?undefined:"col","aria-sort":s?undefined:b,"data-column-id":e.id,"data-grouped":l?"true":undefined,"data-sort-active":o?"true":undefined},!e.header.trim()&&e.headerLabel?.trim()&&a("span",{class:"ds-visually-hidden"},e.headerLabel),a("span",{class:"ds-table__header-content"},d==="end"&&_,d==="center"&&a("span",{class:"ds-table__sort-slot ds-table__sort-slot--balance","data-sort-balance":"true","aria-hidden":"true"}),h,d!=="end"&&_),this.renderStickyEdge(e.sticky))}renderColgroup(){return a("colgroup",null,this.selectable&&a("col",{class:"ds-table__selection-column"}),this.columns.map((e=>{const t=$(e);return a("col",{key:e.id,style:t?{width:t}:undefined})})))}renderHeader(e=true,t=false){const s=this.selectionState;return a("thead",{class:{"ds-table__head":true,"ds-table__head--semantic-copy":!e}},a("tr",{class:"ds-table__header-row"},this.selectable&&a("th",{class:"ds-table__header-cell ds-table__selection-cell ds-table__cell--sticky-start",scope:t?undefined:"col"},e?this.renderSelectionControl(s.allSelected?"Deselect all loaded rows":"Select all loaded rows",s.allSelected,s.indeterminate,s.selectableRowIds.length===0,(()=>this.emitAllSelection())):a("span",{class:"ds-visually-hidden"},"Select rows"),this.renderStickyEdge("start")),this.columns.map((s=>this.renderColumnHeader(s,e,t)))))}renderCellValue(e,t,s){if(x(e))return null;if(e==null||y(e)){return a("ds-text",{class:"ds-table__cell-track ds-table__cell-track--text",as:"span",variant:"text-body-medium",color:"secondary"},a("span",{"aria-hidden":"true"},"—"),a("span",{class:"ds-visually-hidden"},this.emptyCellLabel))}if(g(e)){return a("ds-icon",{name:e.icon,size:"md",color:e.color??"secondary",label:e.label})}if(w(e)){return a("span",{class:"ds-table__cell-image"},e.src?a("img",{class:"ds-table__cell-image-content",src:e.src,alt:e.alt,loading:"lazy"}):a("span",{class:"ds-table__cell-image-placeholder",role:"img","aria-label":e.alt}))}if(k(e)){return a("ds-button-unfilled",{variant:e.variant??"label",size:"md",isInset:true,label:e.label??"",icon:e.icon??"","aria-label":e.ariaLabel??null,hasBorder:e.hasBorder??false,isInactive:e.isInactive??false,isLoading:e.isLoading??false,onDsClick:a=>{a.stopPropagation();this.dsCellAction.emit({actionId:e.actionId,rowId:s.id,columnId:t.id})}})}if(p(e)){const t=e.variant??"tag-only";const s=a("ds-tag",{label:e.label,intent:e.intent??"neutral",contrast:e.contrast??"faint",size:t==="text-with-tag"?"sm":"md",icon:e.icon??"",rounded:e.rounded??false,isInset:true});if(t==="tag-only")return s;return a("span",{class:`ds-table__cell-tag-stack ds-table__cell-tag-stack--${t}`},t==="tag-with-text"&&s,a("ds-text",{class:"ds-table__cell-tag-text ds-table__cell-track",as:"span",variant:t==="tag-with-text"?"text-body-small":"text-body-medium",color:"secondary",lineTruncation:1},e.text),t==="text-with-tag"&&a("span",{class:"ds-table__cell-tag-control-track"},s))}const l=v(e);const i=m(e)||l?e:{primary:e,fontFeature:typeof e==="number"?"tabular-nums":"normal"};const n=i.wrap??t.wrap??false;return a("span",{class:{"ds-table__cell-copy":true,"ds-table__cell-copy--wrap":n}},a("ds-text",{class:"ds-table__cell-primary ds-table__cell-track ds-table__cell-track--text",as:"span",variant:"text-body-medium",color:"primary",lineTruncation:n?"none":1,wrap:n?"wrap":"nowrap",fontFeature:i.fontFeature??"normal"},i.primary),i.secondary!==undefined&&i.secondary!==""&&a("ds-text",{class:"ds-table__cell-secondary ds-table__cell-track ds-table__cell-track--text",as:"span",variant:l?"text-body-medium":"text-body-small",color:l?"primary":"secondary",lineTruncation:n?"none":1,wrap:n?"wrap":"nowrap"},i.secondary))}renderRow(e){const t=this.selectedSet.has(e.id);const s=e.selectable!==false&&!e.disabled;return a("tr",{key:e.id,class:{"ds-table__row":true,"ds-table__row--selected":t,"ds-table__row--disabled":!!e.disabled,"ds-table__row--interactive":!!e.interactive&&!e.disabled},"data-row-id":e.id,"data-selected":t?"true":undefined,"aria-disabled":e.disabled?"true":undefined,tabIndex:e.interactive&&!e.disabled?0:undefined,onClick:t=>this.emitRowActivation(e,t),onKeyDown:t=>this.handleRowKeydown(e,t)},this.selectable&&a("td",{class:{"ds-table__cell":true,"ds-table__selection-cell":true,"ds-table__cell--sticky-start":true,"ds-interaction-fill":true,"ds-interaction-fill--grouped":true,"ds-interaction-fill--selected":t}},this.renderSelectionControl(`${t?"Deselect":"Select"} ${C(e,this.columns)}`,t,false,!s,(()=>this.emitRowSelection(e))),this.renderStickyEdge("start")),this.columns.map((s=>{const l=s.align??"start";const i=e.cells[s.id];const n=p(i);const r=g(i);const o=w(i);const d=k(i);const c=v(i);const b=i==null||y(i);const h=x(i);const _=c||!n&&!r&&!o&&!d&&!b&&!h;const u=_&&!c&&(!m(i)||!i.secondary);const f=n?i.variant??"tag-only":undefined;const z=_?c?"primary-pair":u?"single":"multi":undefined;const C=n?"tag":r?"icon":o?"image":d?"action":c?"primary-text":b?"empty":h?"blank":"text";return a("td",{key:`${e.id}:${s.id}`,class:{"ds-table__cell":true,[`ds-table__cell--align-${l}`]:true,"ds-table__cell--tag":n,[`ds-table__cell--tag-${f}`]:n,"ds-table__cell--icon":r,"ds-table__cell--image":o,"ds-table__cell--action":d,"ds-table__cell--primary-text":c,"ds-table__cell--text-single":u,"ds-table__cell--text-multi":_&&!u,"ds-table__cell--empty":b,"ds-table__cell--blank":h,"ds-table__cell--sticky-start":s.sticky==="start","ds-table__cell--sticky-end":s.sticky==="end","ds-interaction-fill":true,"ds-interaction-fill--grouped":true,"ds-interaction-fill--selected":t},"data-column-id":s.id,"data-cell-type":C,"data-cell-variant":f??z},a("span",{class:"ds-table__cell-content ds-interaction-fill__content"},this.renderCellValue(i,s,e)),this.renderStickyEdge(s.sticky))})))}renderDataBodies(){if(!this.grouped){return a("tbody",{class:"ds-table__body"},this.rows.map((e=>this.renderRow(e))))}return this.groups.map((e=>{const t=H(e);const s=e.countLabel??`${t} ${t===1?"item":"items"}`;return a("tbody",{class:"ds-table__body ds-table__group","data-group-id":e.id,key:e.id},a("tr",{class:"ds-table__group-row"},a("th",{class:"ds-table__group-cell",scope:"rowgroup",colSpan:this.totalColumns},a("span",{class:"ds-table__group-content"},a("ds-icon",{name:"GroupBy",size:"sm",color:"secondary","aria-hidden":"true"}),a("ds-text",{as:"span",variant:"text-body-small",emphasis:true,color:"primary"},e.label),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},s)))),e.rows.map((e=>this.renderRow(e))))}))}renderSkeletonBody(){const e=Math.min(20,Math.max(1,Math.round(this.skeletonRows)||1));return a("tbody",{class:"ds-table__body ds-table__skeleton-body"},Array.from({length:e},((e,t)=>a("tr",{class:"ds-table__row ds-table__skeleton-row",key:`skeleton-${t}`},this.selectable&&a("td",{class:"ds-table__cell ds-table__selection-cell ds-table__cell--sticky-start"},a("ds-skeleton",{variant:"icon",iconSize:"md"}),this.renderStickyEdge("start")),this.columns.map((e=>a("td",{class:{"ds-table__cell":true,"ds-table__cell--sticky-start":e.sticky==="start","ds-table__cell--sticky-end":e.sticky==="end"},key:`skeleton-${t}:${e.id}`},a("span",{class:"ds-table__cell-content"},a("ds-skeleton",{variant:"text",textVariant:"text-body-medium",width:"100%"})),this.renderStickyEdge(e.sticky))))))))}renderStateBody(e){const t=e==="error";return a("tbody",{class:"ds-table__body ds-table__state-body"},a("tr",{class:"ds-table__state-row"},a("td",{class:"ds-table__state-cell",colSpan:this.totalColumns},a("ds-empty-state",{icon:t?"ErrorTriangle":"Inbox",heading:t?this.errorHeading:this.emptyHeading,body:t?this.errorBody:this.emptyBody}))))}renderLazyBody(){if(!this.lazyLoading||!this.hasData)return null;const e=this.loadMoreError?.trim();const t=this.loadMoreMode==="manual"||!this.intersectionSupported;return a("tbody",{class:"ds-table__body ds-table__load-body"},a("tr",{class:"ds-table__load-row",ref:e=>{this.sentinelEl=e??null}},a("td",{class:"ds-table__load-cell",colSpan:this.totalColumns},e?a("span",{class:"ds-table__load-content ds-table__load-content--error"},a("ds-icon",{name:"ErrorTriangle",size:"sm",color:"negative","aria-hidden":"true"}),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},e),a("ds-button-unfilled",{label:this.retryLabel,size:"sm",onDsClick:()=>this.requestLoadMore("retry")})):this.loadingMore?a("span",{class:"ds-table__load-content"},a("ds-loader",{size:"sm",color:"secondary"}),a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},this.loadingMoreLabel)):this.hasMore&&t?a("ds-button-unfilled",{label:this.loadMoreLabel,size:"sm",onDsClick:()=>this.requestLoadMore("manual")}):this.hasMore?a("span",{class:"ds-table__auto-sentinel","aria-hidden":"true"}):a("ds-text",{as:"span",variant:"text-body-small",color:"secondary"},this.endOfResultsLabel))))}renderDocumentStickyHeader(){if(!this.documentStickyHeader)return null;return a("div",{class:"ds-table__document-sticky-header"},a("table",{class:{"ds-table__table":true,"ds-table__sticky-header-table":true,"ds-table__table--selectable":this.selectable},style:this.tableStyle,role:"presentation",ref:e=>{this.stickyHeaderTableEl=e??null}},this.renderColgroup(),this.renderHeader(true,true)))}render(){const e=this.scrollLabel?.trim()||`${this.caption} scroll area`;const t=this.loading&&!this.hasData;const s=!this.hasData&&this.error;const i=this.resolvedMaxHeight?{"--ds-table-max-block-size":this.resolvedMaxHeight}:undefined;return a(l,{key:"3e6820ee0f3cc873fa46b641584efd41749839eb",class:"table-host"},a("div",{key:"ccfd98fed42ab87eb5788cb124fdf02718efaeb3",class:{"ds-table":true,"ds-table--sticky-header":this.stickyHeader,"ds-table--document-sticky-header":this.documentStickyHeader,"ds-table--contained-sticky-header":this.stickyHeader&&!this.documentStickyHeader}},a("div",{key:"e14b251cdd292d41c26a34fe0aacafd05e83fcf3",class:{"ds-table__frame":true,"ds-table__frame--overflow-start":this.overflowStart,"ds-table__frame--overflow-end":this.overflowEnd}},this.renderDocumentStickyHeader(),a("div",{key:"943700fc6c120fce108dfcc13dfcac7712e1b7ec",class:"ds-table__viewport",style:i,ref:e=>{this.viewportEl=e??null},role:this.scrollable?"region":undefined,"aria-label":this.scrollable?e:undefined,tabIndex:this.scrollable?0:undefined},a("table",{key:"91eb58bd8a116ef7f37578f829b18cbab7ab3ea2",class:{"ds-table__table":true,"ds-table__table--selectable":this.selectable},style:this.tableStyle,"aria-busy":t||this.loadingMore?"true":undefined,ref:e=>{this.tableEl=e??null}},a("caption",{key:"73a7a9ad0887a74c81969f41bbfd43b321f07bba",class:{"ds-table__caption":true,"ds-visually-hidden":this.captionVisibility==="hidden"}},a("ds-text",{key:"e63a8932eb461b40914906bd0a18ca506d92f0a9",as:"span",variant:"text-title-small",emphasis:true,color:"primary"},this.caption)),this.renderColgroup(),this.renderHeader(!this.documentStickyHeader),t?this.renderSkeletonBody():s?this.renderStateBody("error"):this.hasData?this.renderDataBodies():this.renderStateBody("empty"),!t&&!s&&this.renderLazyBody()))),a("div",{key:"dea565f70fd217790e76cdecda77cd776417c7f1",class:"ds-visually-hidden",role:"status","aria-live":"polite","aria-atomic":"true"},this.announcement)))}static get watchers(){return{columns:[{handleStructureChange:0}],grouping:[{handleStructureChange:0}],rows:[{handleDataChange:0}],groups:[{handleDataChange:0}],loadIdentity:[{handleLoadIdentityChange:0}],lazyLoading:[{handleLazyConfigurationChange:0}],loadMoreMode:[{handleLazyConfigurationChange:0}],loadMoreThreshold:[{handleLazyConfigurationChange:0}],loadingMore:[{handleLoadingMoreChange:0}],loadMoreError:[{handleLoadMoreErrorChange:0}],hasMore:[{handleHasMoreChange:0}]}}static get style(){return A()+N()}},[2,"ds-table",{columns:[16],rows:[16],groups:[16],grouping:[16],sort:[16],caption:[1],captionVisibility:[1,"caption-visibility"],stickyHeader:[4,"sticky-header"],maxHeight:[8,"max-height"],scrollLabel:[1,"scroll-label"],selectionMode:[1,"selection-mode"],selectedRowIds:[16],loading:[4],skeletonRows:[2,"skeleton-rows"],emptyHeading:[1,"empty-heading"],emptyBody:[1,"empty-body"],error:[4],errorHeading:[1,"error-heading"],errorBody:[1,"error-body"],emptyCellLabel:[1,"empty-cell-label"],lazyLoading:[4,"lazy-loading"],loadMoreMode:[1,"load-more-mode"],hasMore:[4,"has-more"],loadingMore:[4,"loading-more"],loadMoreError:[1,"load-more-error"],loadIdentity:[8,"load-identity"],loadMoreThreshold:[2,"load-more-threshold"],loadMoreLabel:[1,"load-more-label"],retryLabel:[1,"retry-label"],loadingMoreLabel:[1,"loading-more-label"],endOfResultsLabel:[1,"end-of-results-label"],rowsLoadedLabel:[1,"rows-loaded-label"],overflowStart:[32],overflowEnd:[32],scrollable:[32],intersectionSupported:[32],announcement:[32]},undefined,{columns:[{handleStructureChange:0}],grouping:[{handleStructureChange:0}],rows:[{handleDataChange:0}],groups:[{handleDataChange:0}],loadIdentity:[{handleLoadIdentityChange:0}],lazyLoading:[{handleLazyConfigurationChange:0}],loadMoreMode:[{handleLazyConfigurationChange:0}],loadMoreThreshold:[{handleLazyConfigurationChange:0}],loadingMore:[{handleLoadingMoreChange:0}],loadMoreError:[{handleLoadMoreErrorChange:0}],hasMore:[{handleHasMoreChange:0}]}]);function q(){if(typeof customElements==="undefined"){return}const e=["ds-table","ds-badge","ds-button-unfilled","ds-checkbox","ds-empty-state","ds-icon","ds-loader","ds-skeleton","ds-tag","ds-text"];e.forEach((e=>{switch(e){case"ds-table":if(!customElements.get(i(e))){customElements.define(i(e),O)}break;case"ds-badge":if(!customElements.get(i(e))){n()}break;case"ds-button-unfilled":if(!customElements.get(i(e))){r()}break;case"ds-checkbox":if(!customElements.get(i(e))){o()}break;case"ds-empty-state":if(!customElements.get(i(e))){d()}break;case"ds-icon":if(!customElements.get(i(e))){c()}break;case"ds-loader":if(!customElements.get(i(e))){b()}break;case"ds-skeleton":if(!customElements.get(i(e))){h()}break;case"ds-tag":if(!customElements.get(i(e))){_()}break;case"ds-text":if(!customElements.get(i(e))){u()}break}}))}q();const F=O;const G=q;export{F as DsTable,G as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ds-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TABLE_COLUMN_WIDTH_TOKENS","xs","sm","md","lg","xl","isTableCellText","value","isTableCellPrimaryText","kind","isTableCellTag","isTableCellIcon","isTableCellImage","isTableCellAction","isTableCellEmpty","isTableCellBlank","tableCellPrimary","label","alt","ariaLabel","primary","tableRowSelectionLabel","row","columns","explicit","selectionLabel","trim","column","cells","id","String","nextTableSortState","current","columnId","direction","nextTableGroupOrder","grouping","clampTableColumnSize","size","Number","isFinite","undefined","minimum","minSize","maximum","maxSize","Math","max","POSITIVE_INFINITY","min","tableColumnSize","width","tableExplicitMinWidth","widths","map","filter","length","join","tableRows","rows","groups","grouped","flatMap","group","canSelectRow","selectable","disabled","deriveTableSelectionState","selectedRowIds","selected","Set","selectableRowIds","selectedLoadedCount","reduce","count","has","allSelected","indeterminate","toggleTableRowSelection","delete","add","toggleAllLoadedTableRows","loadedRows","state","resolvedTableGroupCount","total","totalCount","tableModelIssues","issues","columnIds","push","header","headerLabel","groupIds","rowIds","interactionFillCss","tableCss","Table","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","sort","captionVisibility","stickyHeader","selectionMode","loading","skeletonRows","emptyHeading","emptyBody","error","errorHeading","errorBody","emptyCellLabel","lazyLoading","loadMoreMode","hasMore","loadingMore","loadIdentity","loadMoreThreshold","loadMoreLabel","retryLabel","loadingMoreLabel","endOfResultsLabel","rowsLoadedLabel","overflowStart","overflowEnd","scrollable","intersectionSupported","announcement","viewportEl","stickyHeaderTableEl","tableEl","sentinelEl","resizeObserver","intersectionObserver","observedSentinel","requestPending","requestedRowCount","previousLoadedRowCount","previousModelWarning","hasLoaded","reconnectFrame","syncOverflow","viewport","overflows","scrollWidth","clientWidth","scrollHeight","clientHeight","nextStart","scrollLeft","nextEnd","syncStickyHeaderPosition","componentWillLoad","IntersectionObserver","warnModelIssues","componentDidLoad","connectViewportObserver","connectIntersectionObserver","componentDidRender","connectedCallback","cancelAnimationFrame","requestAnimationFrame","disconnectedCallback","removeEventListener","disconnect","disconnectIntersectionObserver","handleStructureChange","resetLoadRequest","handleDataChange","nextCount","added","replace","handleLoadIdentityChange","handleLazyConfigurationChange","handleLoadingMoreChange","handleLoadMoreErrorChange","handleHasMoreChange","hadMore","documentStickyHeader","resolvedMaxHeight","hasData","totalColumns","selectedSet","selectionState","maxHeight","tableStyle","caption","unshift","some","headerSegments","segment","sortKey","stickyStart","sticky","stickyEnd","message","console","warn","addEventListener","passive","ResizeObserver","observe","offset","maxOffset","style","setProperty","loadMoreError","threshold","entries","entry","isIntersecting","requestLoadMore","root","rootMargin","reason","dsLoadMore","emit","loadedRowCount","emitSort","dsGroupingChange","sortable","dsSortChange","sortButtonLabel","next","emitRowSelection","includes","dsSelectionChange","scope","changedRowId","emitAllSelection","rowEventOwnsActivation","event","currentTarget","composedPath","target","matches","emitRowActivation","interactive","dsRowActivate","rowId","handleRowKeydown","key","preventDefault","renderSelectionControl","checked","onActivate","h","class","type","role","onClick","presentation","renderStickyEdge","renderColumnHeader","presentational","groupedColumn","activeMemberSegment","find","activeMemberSort","activeSort","align","memberAriaSort","labelControl","index","segmentActive","segmentInteractive","as","variant","emphasis","color","lineTruncation","control","separator","sortControl","icon","hasBorder","activeFill","isActive","pressScale","onDsClick","renderColgroup","renderHeader","selection","renderCellValue","name","src","isInset","isInactive","isLoading","stopPropagation","dsCellAction","actionId","tag","intent","contrast","rounded","text","primaryText","fontFeature","wraps","wrap","secondary","renderRow","rowSelectable","tabIndex","onKeyDown","tagCell","iconCell","imageCell","actionCell","primaryTextCell","emptyCell","blankCell","textCell","singleTextCell","tagVariant","textVariant","cellType","renderDataBodies","countLabel","colSpan","renderSkeletonBody","round","Array","from","_","iconSize","renderStateBody","heading","body","renderLazyBody","manualFallback","ref","element","renderDocumentStickyHeader","render","regionLabel","scrollLabel","initialLoading","initialError","viewportStyle","Host"],"sources":["src/wc/components/Table/table-model.ts","src/wc/utils/interaction-fill.css?tag=ds-table&encapsulation=scoped","src/wc/components/Table/Table.css?tag=ds-table&encapsulation=scoped","src/wc/components/Table/Table.tsx"],"sourcesContent":["import type {\n TableCellBlank,\n TableCellAction,\n TableCellEmpty,\n TableCellIcon,\n TableCellImage,\n TableCellPrimaryText,\n TableCellText,\n TableCellTag,\n TableCellValue,\n TableColumn,\n TableGroup,\n TableGroupingState,\n TableRow,\n TableSortState,\n} from './table-types';\n\nexport interface TableSelectionState {\n selectableRowIds: string[];\n selectedLoadedCount: number;\n allSelected: boolean;\n indeterminate: boolean;\n}\n\nconst TABLE_COLUMN_WIDTH_TOKENS = {\n xs: '--dimension-table-column-width-xs',\n sm: '--dimension-table-column-width-sm',\n md: '--dimension-table-column-width-md',\n lg: '--dimension-table-column-width-lg',\n xl: '--dimension-table-column-width-xl',\n} as const;\n\nexport function isTableCellText(value: TableCellValue): value is TableCellText {\n return typeof value === 'object' && value !== null && 'primary' in value && !('kind' in value);\n}\n\nexport function isTableCellPrimaryText(value: TableCellValue): value is TableCellPrimaryText {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'primary-text';\n}\n\nexport function isTableCellTag(value: TableCellValue): value is TableCellTag {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'tag';\n}\n\nexport function isTableCellIcon(value: TableCellValue): value is TableCellIcon {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'icon';\n}\n\nexport function isTableCellImage(value: TableCellValue): value is TableCellImage {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'image';\n}\n\nexport function isTableCellAction(value: TableCellValue): value is TableCellAction {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'action';\n}\n\nexport function isTableCellEmpty(value: TableCellValue): value is TableCellEmpty {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'empty';\n}\n\nexport function isTableCellBlank(value: TableCellValue): value is TableCellBlank {\n return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'blank';\n}\n\nexport function tableCellPrimary(value: TableCellValue): string | number | null {\n if (value == null) return null;\n if (isTableCellTag(value)) return value.label;\n if (isTableCellIcon(value)) return null;\n if (isTableCellImage(value)) return value.alt;\n if (isTableCellAction(value)) return value.label ?? value.ariaLabel;\n if (isTableCellPrimaryText(value)) return value.primary;\n if (isTableCellEmpty(value) || isTableCellBlank(value)) return null;\n return isTableCellText(value) ? value.primary : value;\n}\n\nexport function tableRowSelectionLabel(row: TableRow, columns: TableColumn[]): string {\n const explicit = row.selectionLabel?.trim();\n if (explicit) return explicit;\n\n for (const column of columns) {\n const primary = tableCellPrimary(row.cells[column.id]);\n if (primary != null && String(primary).trim()) return String(primary);\n }\n\n return row.id;\n}\n\nexport function nextTableSortState(\n current: TableSortState | null | undefined,\n columnId: string,\n): TableSortState {\n if (current?.columnId !== columnId) return { columnId, direction: 'asc' };\n if (current.direction === 'asc') return { columnId, direction: 'desc' };\n return { columnId, direction: 'asc' };\n}\n\nexport function nextTableGroupOrder(grouping: TableGroupingState): TableGroupingState {\n return {\n ...grouping,\n direction: grouping.direction === 'asc' ? 'desc' : 'asc',\n };\n}\n\nexport function clampTableColumnSize(column: TableColumn): number | undefined {\n if (typeof column.size !== 'number' || !Number.isFinite(column.size) || column.size <= 0) {\n return undefined;\n }\n\n const minimum = Number.isFinite(column.minSize) && (column.minSize ?? 0) > 0\n ? column.minSize!\n : 0;\n const maximum = Number.isFinite(column.maxSize) && (column.maxSize ?? 0) > 0\n ? Math.max(column.maxSize!, minimum)\n : Number.POSITIVE_INFINITY;\n\n return Math.min(Math.max(column.size!, minimum), maximum);\n}\n\nexport function tableColumnSize(column: TableColumn): string | undefined {\n if (typeof column.size === 'string') {\n return `var(${TABLE_COLUMN_WIDTH_TOKENS[column.size]})`;\n }\n const width = clampTableColumnSize(column);\n return width == null ? undefined : `${width}px`;\n}\n\nexport function tableExplicitMinWidth(columns: TableColumn[]): string | undefined {\n const widths = columns.map(tableColumnSize).filter((width): width is string => !!width);\n if (widths.length === 0) return undefined;\n return widths.length === 1 ? widths[0] : `calc(${widths.join(' + ')})`;\n}\n\nexport function tableRows(rows: TableRow[], groups: TableGroup[], grouped: boolean): TableRow[] {\n return grouped ? groups.flatMap(group => group.rows) : rows;\n}\n\nfunction canSelectRow(row: TableRow): boolean {\n return row.selectable !== false && !row.disabled;\n}\n\nexport function deriveTableSelectionState(\n rows: TableRow[],\n selectedRowIds: readonly string[],\n): TableSelectionState {\n const selected = new Set(selectedRowIds);\n const selectableRowIds = rows.filter(canSelectRow).map(row => row.id);\n const selectedLoadedCount = selectableRowIds.reduce(\n (count, id) => count + (selected.has(id) ? 1 : 0),\n 0,\n );\n\n return {\n selectableRowIds,\n selectedLoadedCount,\n allSelected: selectableRowIds.length > 0 && selectedLoadedCount === selectableRowIds.length,\n indeterminate: selectedLoadedCount > 0 && selectedLoadedCount < selectableRowIds.length,\n };\n}\n\nexport function toggleTableRowSelection(\n selectedRowIds: readonly string[],\n row: TableRow,\n): string[] {\n if (!canSelectRow(row)) return [...selectedRowIds];\n const selected = new Set(selectedRowIds);\n if (selected.has(row.id)) selected.delete(row.id);\n else selected.add(row.id);\n return [...selected];\n}\n\nexport function toggleAllLoadedTableRows(\n selectedRowIds: readonly string[],\n loadedRows: TableRow[],\n): string[] {\n const selected = new Set(selectedRowIds);\n const state = deriveTableSelectionState(loadedRows, selectedRowIds);\n\n for (const id of state.selectableRowIds) {\n if (state.allSelected) selected.delete(id);\n else selected.add(id);\n }\n\n return [...selected];\n}\n\nexport function resolvedTableGroupCount(group: TableGroup): number {\n const total = Number.isFinite(group.totalCount) ? Math.max(0, group.totalCount!) : 0;\n return Math.max(total, group.rows.length);\n}\n\nexport function tableModelIssues(\n columns: TableColumn[],\n rows: TableRow[],\n groups: TableGroup[],\n grouped: boolean,\n): string[] {\n const issues: string[] = [];\n const columnIds = new Set<string>();\n for (const column of columns) {\n if (!column.id.trim()) issues.push('Every column requires a non-empty id.');\n else if (columnIds.has(column.id)) issues.push(`Duplicate column id: ${column.id}`);\n if (!column.header.trim() && !column.headerLabel?.trim()) {\n issues.push(`Column ${column.id || '(missing id)'} requires a visible header or headerLabel.`);\n }\n columnIds.add(column.id);\n }\n\n const groupIds = new Set<string>();\n if (grouped) {\n for (const group of groups) {\n if (!group.id.trim()) issues.push('Every group requires a non-empty id.');\n else if (groupIds.has(group.id)) issues.push(`Duplicate group id: ${group.id}`);\n groupIds.add(group.id);\n if (group.totalCount != null && group.totalCount < group.rows.length) {\n issues.push(`Group ${group.id} totalCount is smaller than its loaded row count.`);\n }\n }\n }\n\n const rowIds = new Set<string>();\n for (const row of tableRows(rows, groups, grouped)) {\n if (!row.id.trim()) issues.push('Every row requires a non-empty id.');\n else if (rowIds.has(row.id)) issues.push(`Duplicate row id: ${row.id}`);\n rowIds.add(row.id);\n }\n\n return [...new Set(issues)];\n}\n","@import './forced-colors.css';\n\n/**\n * Interaction fill — selected (`::before`) + hover/press (`::after`) overlays.\n *\n * Paint translucent interaction tokens *over* the control’s own background —\n * never by swapping `background-color` on `:hover` / `:active`, and never via\n * `color-mix(bg, fg)` for control chrome.\n *\n * Paint order (bottom → top):\n * 1. Element background (intent / surface)\n * 2. `::before` — selected / active (opt-in via `.ds-interaction-fill--selected`)\n * 3. Label / icon / badge content (`.ds-interaction-fill__content` or z-index: 2)\n * 4. `::after` — hover / press wash + optional inset border + inset focus ring\n *\n * Apply `.ds-interaction-fill` on the interactive element (host or inner row).\n * Omit `.ds-interaction-fill--selected` when chrome wants icon-color-only\n * selection (`activeFill={false}` on unfilled icon buttons).\n *\n * Fills use positive z-index so they paint *above* an opaque host background\n * (Chip, ButtonFilled). Content sits under the hover wash so badge dots are\n * covered; raise label/icon with `.ds-interaction-fill__content` (z-index: 2)\n * — never above `::after` (z-index: 3).\n *\n * Inset borders must paint on `::after` (not the element’s own `box-shadow`)\n * so the stroke stays visible above selected / hover washes. Set\n * `--ds-interaction-border-*` or use `.ds-interaction-fill--bordered`.\n * Do not use a layout `border` on interaction targets.\n *\n * If the control uses `all: unset`, re-assert `position: relative; z-index: 0`\n * after the unset so this util’s stacking context still applies.\n *\n * Surface helpers remap tokens + `--ds-focus-ring-color`:\n * `.ds-interaction-fill--on-faint|medium|bold|strong|translucent|inverted|media|always-dark|navigation`\n *\n * Override hooks: `--ds-interaction-hover`, `--ds-interaction-pressed`,\n * `--ds-interaction-active`, `--ds-interaction-border-color`,\n * `--ds-interaction-border-width`, `--ds-interaction-divider-color`, and\n * `--ds-interaction-divider-width`, plus the corresponding inline-start/end\n * divider hooks.\n *\n * @see AGENTS.md — \"Interaction fill\"\n */\n\n:host(.ds-interaction-fill),\n.ds-interaction-fill {\n position: var(--ds-interaction-position, relative);\n z-index: var(--ds-interaction-z-index, 0);\n cursor: default;\n --ds-interaction-hover: var(--color-interaction-hover);\n --ds-interaction-pressed: var(--color-interaction-pressed);\n --ds-interaction-active: var(--color-interaction-active-brand);\n /* Inset stroke on ::after — default off (transparent / zero width). */\n --ds-interaction-border-width: 0px;\n --ds-interaction-border-color: transparent;\n --ds-interaction-divider-width: 0px;\n --ds-interaction-divider-color: transparent;\n --ds-interaction-divider-inline-start-width: 0px;\n --ds-interaction-divider-inline-start-color: transparent;\n --ds-interaction-divider-inline-end-width: 0px;\n --ds-interaction-divider-inline-end-color: transparent;\n}\n\n:host(.ds-interaction-fill)::before,\n.ds-interaction-fill::before,\n:host(.ds-interaction-fill)::after,\n.ds-interaction-fill::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: transparent;\n pointer-events: none;\n cursor: inherit;\n transition: none;\n}\n\n/* Layer stack (bottom → top): selected → content → hover/press + border (topmost). */\n:host(.ds-interaction-fill)::before,\n.ds-interaction-fill::before {\n z-index: 1;\n}\n\n:host(.ds-interaction-fill)::after,\n.ds-interaction-fill::after {\n z-index: 3;\n /* Border above selected (::before) and this pseudo’s own hover wash. */\n box-shadow:\n inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color),\n inset var(--ds-interaction-divider-inline-start-width) 0 0\n var(--ds-interaction-divider-inline-start-color),\n inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0\n var(--ds-interaction-divider-inline-end-color),\n inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color);\n}\n\n/* Opt-in secondary inset border (override color via `--ds-interaction-border-color`). */\n:host(.ds-interaction-fill--bordered),\n.ds-interaction-fill--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--color-border-secondary);\n}\n\n:host(.ds-interaction-fill--selected)::before,\n.ds-interaction-fill--selected::before {\n background: var(--ds-interaction-active);\n}\n\n/*\n * Notification-dot halo: when selected fill is on, set `--ds-interaction-dot-ring`\n * to the active wash so rings can match. Prefer also remapping the consumer’s\n * surface ring token (e.g. `--ds-button-unfilled-dot-ring`) or passing\n * `background=\"var(--ds-interaction-active)\"` from the parent when selected —\n * custom-property fallbacks through nested scoped hosts are easy to miss.\n * Omit `--selected` (chrome `activeFill={false}`) to keep the surface ring.\n */\n:host(.ds-interaction-fill--selected),\n.ds-interaction-fill--selected {\n --ds-interaction-dot-ring: var(--ds-interaction-active);\n}\n\n/*\n * Touch browsers can latch :hover after a tap. Only hover-capable fine\n * pointers receive the hover wash; touch still receives :active press feedback.\n */\n@media (hover: hover) and (pointer: fine) {\n :host(.ds-interaction-fill:hover:not(:disabled))::after,\n .ds-interaction-fill:hover:not(:disabled)::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n:host(.ds-interaction-fill:active:not(:disabled))::after,\n.ds-interaction-fill:active:not(:disabled)::after {\n background: var(--ds-interaction-pressed);\n}\n\n/* A parent row/list may coordinate one fill across several sibling targets. */\n:host(.ds-interaction-fill--grouped)::after,\n.ds-interaction-fill--grouped::after,\n:host(.ds-interaction-fill--grouped:hover:not(:disabled))::after,\n.ds-interaction-fill--grouped:hover:not(:disabled)::after,\n:host(.ds-interaction-fill--grouped:active:not(:disabled))::after,\n.ds-interaction-fill--grouped:active:not(:disabled)::after {\n background: var(--ds-interaction-group-fill, transparent);\n}\n\n:host(.ds-interaction-fill--grouped),\n.ds-interaction-fill--grouped {\n --ds-interaction-divider-width: var(--ds-interaction-group-divider-width, 0px);\n --ds-interaction-divider-color: var(--ds-interaction-group-divider-color, transparent);\n --ds-interaction-divider-inline-start-width: var(\n --ds-interaction-group-divider-inline-start-width,\n 0px\n );\n --ds-interaction-divider-inline-start-color: var(\n --ds-interaction-group-divider-inline-start-color,\n transparent\n );\n --ds-interaction-divider-inline-end-width: var(\n --ds-interaction-group-divider-inline-end-width,\n 0px\n );\n --ds-interaction-divider-inline-end-color: var(\n --ds-interaction-group-divider-inline-end-color,\n transparent\n );\n}\n\n/* Content under the hover wash (so badge dots are covered by ::after). */\n:host(.ds-interaction-fill) > .ds-interaction-fill__content,\n.ds-interaction-fill > .ds-interaction-fill__content,\n.ds-interaction-fill__content {\n position: relative;\n z-index: 2;\n cursor: inherit;\n}\n\n/* ── Surface context ─────────────────────────────────────────────────────── */\n\n:host(.ds-interaction-fill--on-faint),\n.ds-interaction-fill--on-faint {\n --ds-interaction-active: var(--color-interaction-active);\n}\n\n:host(.ds-interaction-fill--on-medium),\n.ds-interaction-fill--on-medium {\n --ds-interaction-hover: var(--color-interaction-on-medium-background-hover);\n --ds-interaction-pressed: var(--color-interaction-on-medium-background-pressed);\n --ds-interaction-active: var(--color-interaction-on-medium-background-active);\n --ds-focus-ring-color: var(--color-interaction-on-medium-background-focus);\n}\n\n:host(.ds-interaction-fill--on-bold),\n.ds-interaction-fill--on-bold {\n --ds-interaction-hover: var(--color-interaction-on-bold-background-hover);\n --ds-interaction-pressed: var(--color-interaction-on-bold-background-pressed);\n --ds-interaction-active: var(--color-interaction-on-bold-background-active);\n --ds-focus-ring-color: var(--color-interaction-on-bold-background-focus);\n}\n\n:host(.ds-interaction-fill--on-strong),\n.ds-interaction-fill--on-strong {\n --ds-interaction-hover: var(--color-interaction-on-strong-background-hover);\n --ds-interaction-pressed: var(--color-interaction-on-strong-background-pressed);\n --ds-interaction-active: var(--color-interaction-on-strong-background-active);\n --ds-focus-ring-color: var(--color-interaction-on-strong-background-focus);\n}\n\n:host(.ds-interaction-fill--on-translucent),\n.ds-interaction-fill--on-translucent {\n --ds-interaction-hover: var(--color-translucent-interaction-hover);\n --ds-interaction-pressed: var(--color-translucent-interaction-pressed);\n --ds-interaction-active: var(--color-translucent-interaction-active);\n --ds-focus-ring-color: var(--color-translucent-interaction-focus);\n}\n\n:host(.ds-interaction-fill--on-inverted),\n.ds-interaction-fill--on-inverted {\n --ds-interaction-hover: var(--color-inverted-interaction-hover);\n --ds-interaction-pressed: var(--color-inverted-interaction-pressed);\n --ds-interaction-active: var(--color-inverted-interaction-active);\n --ds-focus-ring-color: var(--color-inverted-interaction-focus);\n}\n\n:host(.ds-interaction-fill--on-media),\n.ds-interaction-fill--on-media {\n --ds-interaction-hover: var(--color-media-interaction-hover);\n --ds-interaction-pressed: var(--color-media-interaction-pressed);\n --ds-interaction-active: var(--color-media-interaction-active);\n --ds-focus-ring-color: var(--color-media-interaction-focus);\n}\n\n:host(.ds-interaction-fill--on-always-dark),\n.ds-interaction-fill--on-always-dark {\n --ds-interaction-hover: var(--color-always-dark-interaction-hover);\n --ds-interaction-pressed: var(--color-always-dark-interaction-pressed);\n --ds-interaction-active: var(--color-always-dark-interaction-active);\n --ds-focus-ring-color: var(--color-always-dark-interaction-focus);\n}\n\n:host(.ds-interaction-fill--on-navigation),\n.ds-interaction-fill--on-navigation {\n --ds-interaction-hover: var(--color-navigation-interaction-hover);\n --ds-interaction-pressed: var(--color-navigation-interaction-pressed);\n --ds-interaction-active: var(--color-navigation-interaction-active);\n --ds-focus-ring-color: var(--color-navigation-interaction-focus);\n}\n\n@media (forced-colors: active) {\n /*\n * Forced-colors removes box-shadows and remaps translucent fills. Restore\n * boundaries with outlines and make selection a non-color-only inset ring.\n * Focus-ring selectors remain more specific and replace this outline while\n * keyboard focus is visible.\n */\n :host(.ds-interaction-fill)::after,\n .ds-interaction-fill::after {\n box-shadow: none;\n outline:\n var(--ds-interaction-border-width) solid\n var(--ds-forced-color-control-boundary);\n outline-offset: calc(-1 * var(--ds-interaction-border-width));\n }\n\n :host(.ds-interaction-fill--selected)::before,\n .ds-interaction-fill--selected::before {\n background: transparent;\n outline: var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);\n outline-offset: calc(-1 * var(--dimension-stroke-width-025));\n }\n}\n\n@media (forced-colors: active) and (hover: hover) and (pointer: fine) {\n :host(.ds-interaction-fill:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible))::after,\n .ds-interaction-fill:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after {\n outline-color: var(--ds-forced-color-selected);\n outline-width: var(--dimension-stroke-width-012);\n }\n}\n","@import '../../styles/table.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n deriveTableSelectionState,\n isTableCellAction,\n isTableCellBlank,\n isTableCellEmpty,\n isTableCellIcon,\n isTableCellImage,\n isTableCellPrimaryText,\n isTableCellText,\n isTableCellTag,\n nextTableGroupOrder,\n nextTableSortState,\n resolvedTableGroupCount,\n tableColumnSize,\n tableExplicitMinWidth,\n tableModelIssues,\n tableRows,\n tableRowSelectionLabel,\n toggleAllLoadedTableRows,\n toggleTableRowSelection,\n} from './table-model';\nimport type {\n TableCaptionVisibility,\n TableCellActionDetail,\n TableCellValue,\n TableColumn,\n TableGroup,\n TableGroupingChangeDetail,\n TableGroupingState,\n TableLoadMoreDetail,\n TableLoadMoreMode,\n TableLoadMoreReason,\n TableRow,\n TableRowActivateDetail,\n TableSelectionChangeDetail,\n TableSelectionMode,\n TableSortChangeDetail,\n TableSortState,\n} from './table-types';\n\n@Component({\n tag: 'ds-table',\n styleUrls: [\n '../../utils/interaction-fill.css',\n 'Table.css',\n ],\n scoped: true,\n})\nexport class Table {\n /** Stable column definitions. Assign through JavaScript. */\n @Prop() columns: TableColumn[] = [];\n /** Ungrouped row data. Ignored while grouping is active. Assign through JavaScript. */\n @Prop() rows: TableRow[] = [];\n /** One level of application-owned grouped data. Assign through JavaScript. */\n @Prop() groups: TableGroup[] = [];\n /** Controlled grouping column and group-order direction. */\n @Prop() grouping: TableGroupingState | null = null;\n /** Controlled member-row sort state. */\n @Prop() sort: TableSortState | null = null;\n\n /** Required accessible table name, rendered as a native caption. */\n @Prop() caption!: string;\n @Prop() captionVisibility: TableCaptionVisibility = 'hidden';\n @Prop() stickyHeader: boolean = false;\n /** Maximum scroll-region height. Numbers resolve to CSS pixels. */\n @Prop() maxHeight: string | number | undefined;\n /** Optional explicit label for the horizontal/vertical scroll region. */\n @Prop() scrollLabel: string | undefined;\n\n @Prop() selectionMode: TableSelectionMode = 'none';\n /** Controlled selected row identities. IDs outside the loaded rows are preserved. */\n @Prop() selectedRowIds: string[] = [];\n\n /** Initial loading state. Existing rows stay visible; incremental loading uses loadingMore. */\n @Prop() loading: boolean = false;\n @Prop() skeletonRows: number = 5;\n @Prop() emptyHeading: string = 'No results';\n @Prop() emptyBody: string = 'No data is available.';\n /** Initial error state. Existing rows stay visible; incremental failures use loadMoreError. */\n @Prop() error: boolean = false;\n @Prop() errorHeading: string = 'Unable to load data';\n @Prop() errorBody: string = 'The data could not be loaded.';\n @Prop() emptyCellLabel: string = 'Not available';\n\n /** Enable application-owned incremental loading without pagination. */\n @Prop() lazyLoading: boolean = false;\n @Prop() loadMoreMode: TableLoadMoreMode = 'auto';\n @Prop() hasMore: boolean = false;\n @Prop() loadingMore: boolean = false;\n @Prop() loadMoreError: string | undefined;\n /** Reset key for a new query/group/sort dataset. */\n @Prop() loadIdentity: string | number = 'default';\n /** IntersectionObserver root margin in CSS pixels. */\n @Prop() loadMoreThreshold: number = 0;\n @Prop() loadMoreLabel: string = 'Load more';\n @Prop() retryLabel: string = 'Retry';\n @Prop() loadingMoreLabel: string = 'Loading more results';\n @Prop() endOfResultsLabel: string = 'All results loaded';\n /** Supports {count} and {total} placeholders. */\n @Prop() rowsLoadedLabel: string = '{count} more rows loaded. {total} rows loaded.';\n\n @Event() dsSortChange!: EventEmitter<TableSortChangeDetail>;\n @Event() dsGroupingChange!: EventEmitter<TableGroupingChangeDetail>;\n @Event() dsSelectionChange!: EventEmitter<TableSelectionChangeDetail>;\n @Event() dsLoadMore!: EventEmitter<TableLoadMoreDetail>;\n @Event() dsCellAction!: EventEmitter<TableCellActionDetail>;\n @Event() dsRowActivate!: EventEmitter<TableRowActivateDetail>;\n\n @State() private overflowStart = false;\n @State() private overflowEnd = false;\n @State() private scrollable = false;\n @State() private intersectionSupported = true;\n @State() private announcement = '';\n\n private viewportEl: HTMLElement | null = null;\n private stickyHeaderTableEl: HTMLTableElement | null = null;\n private tableEl: HTMLTableElement | null = null;\n private sentinelEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private intersectionObserver: IntersectionObserver | null = null;\n private observedSentinel: HTMLElement | null = null;\n private requestPending = false;\n private requestedRowCount = 0;\n private previousLoadedRowCount = 0;\n private previousModelWarning = '';\n private hasLoaded = false;\n private reconnectFrame: number | null = null;\n\n componentWillLoad(): void {\n this.previousLoadedRowCount = this.loadedRows.length;\n this.intersectionSupported = typeof IntersectionObserver !== 'undefined';\n this.warnModelIssues();\n }\n\n componentDidLoad(): void {\n this.hasLoaded = true;\n this.connectViewportObserver();\n this.syncOverflow();\n this.connectIntersectionObserver();\n }\n\n componentDidRender(): void {\n this.syncStickyHeaderPosition();\n this.connectIntersectionObserver();\n }\n\n connectedCallback(): void {\n if (!this.hasLoaded) return;\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = requestAnimationFrame(() => {\n this.reconnectFrame = null;\n this.connectViewportObserver();\n this.syncOverflow();\n this.connectIntersectionObserver();\n });\n }\n\n disconnectedCallback(): void {\n if (this.reconnectFrame !== null) cancelAnimationFrame(this.reconnectFrame);\n this.reconnectFrame = null;\n this.viewportEl?.removeEventListener('scroll', this.syncOverflow);\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.disconnectIntersectionObserver();\n }\n\n @Watch('columns')\n @Watch('grouping')\n handleStructureChange(): void {\n this.warnModelIssues();\n this.resetLoadRequest();\n }\n\n @Watch('rows')\n @Watch('groups')\n handleDataChange(): void {\n const nextCount = this.loadedRows.length;\n if (nextCount > this.previousLoadedRowCount) {\n const added = nextCount - this.previousLoadedRowCount;\n this.announcement = this.rowsLoadedLabel\n .replace('{count}', String(added))\n .replace('{total}', String(nextCount));\n }\n if (nextCount > this.requestedRowCount) this.requestPending = false;\n this.previousLoadedRowCount = nextCount;\n this.warnModelIssues();\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadIdentity')\n handleLoadIdentityChange(): void {\n this.previousLoadedRowCount = this.loadedRows.length;\n this.resetLoadRequest();\n }\n\n @Watch('lazyLoading')\n @Watch('loadMoreMode')\n @Watch('loadMoreThreshold')\n handleLazyConfigurationChange(): void {\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadingMore')\n handleLoadingMoreChange(loading: boolean): void {\n if (loading) {\n this.requestPending = true;\n this.announcement = this.loadingMoreLabel;\n } else if (this.loadMoreMode === 'manual') {\n // A completed manual request may legitimately append no rows. Permit a\n // deliberate follow-up activation; automatic mode stays guarded until\n // the data shape or query identity changes.\n this.requestPending = false;\n }\n this.disconnectIntersectionObserver();\n }\n\n @Watch('loadMoreError')\n handleLoadMoreErrorChange(error: string | undefined): void {\n if (error?.trim()) {\n this.requestPending = false;\n this.announcement = error;\n }\n this.disconnectIntersectionObserver();\n }\n\n @Watch('hasMore')\n handleHasMoreChange(hasMore: boolean, hadMore: boolean): void {\n if (!hasMore) {\n this.requestPending = false;\n if (hadMore) this.announcement = this.endOfResultsLabel;\n }\n this.disconnectIntersectionObserver();\n }\n\n private get grouped(): boolean {\n return this.grouping !== null;\n }\n\n private get selectable(): boolean {\n return this.selectionMode === 'multiple';\n }\n\n private get documentStickyHeader(): boolean {\n return this.stickyHeader && this.resolvedMaxHeight === undefined;\n }\n\n private get loadedRows(): TableRow[] {\n return tableRows(this.rows, this.groups, this.grouped);\n }\n\n private get hasData(): boolean {\n return this.loadedRows.length > 0;\n }\n\n private get totalColumns(): number {\n return this.columns.length + (this.selectable ? 1 : 0);\n }\n\n private get selectedSet(): Set<string> {\n return new Set(this.selectedRowIds);\n }\n\n private get selectionState() {\n return deriveTableSelectionState(this.loadedRows, this.selectedRowIds);\n }\n\n private get resolvedMaxHeight(): string | undefined {\n if (this.maxHeight == null || this.maxHeight === '') return undefined;\n return typeof this.maxHeight === 'number' ? `${Math.max(0, this.maxHeight)}px` : this.maxHeight;\n }\n\n private get tableStyle(): Record<string, string> | undefined {\n const width = tableExplicitMinWidth(this.columns);\n return width == null ? undefined : { '--ds-table-explicit-min-inline-size': width };\n }\n\n private warnModelIssues(): void {\n const issues = tableModelIssues(this.columns, this.rows, this.groups, this.grouped);\n if (!this.caption?.trim()) issues.unshift('A non-empty caption is required.');\n if (this.grouping && !this.columns.some(column => column.id === this.grouping!.columnId)) {\n issues.push(`Grouping references unknown column id: ${this.grouping.columnId}`);\n }\n if (\n this.sort &&\n !this.columns.some(column =>\n column.id === this.sort!.columnId ||\n column.headerSegments?.some(segment => segment.sortKey === this.sort!.columnId),\n )\n ) {\n issues.push(`Sorting references unknown column id: ${this.sort.columnId}`);\n }\n const stickyStart = this.columns.filter(column => column.sticky === 'start');\n const stickyEnd = this.columns.filter(column => column.sticky === 'end');\n if (stickyStart.length > 1 || (this.selectable && stickyStart.length > 0)) {\n issues.push('Only one sticky start column is supported, and row selection already owns that lane.');\n }\n if (stickyEnd.length > 1) issues.push('Only one sticky end column is supported.');\n for (const column of [...stickyStart, ...stickyEnd]) {\n if (!tableColumnSize(column)) issues.push(`Sticky column ${column.id} requires an explicit size.`);\n }\n const message = issues.join(' ');\n if (!message || message === this.previousModelWarning) return;\n this.previousModelWarning = message;\n console.warn(`[ds-table] ${message}`);\n }\n\n private connectViewportObserver(): void {\n if (!this.viewportEl) return;\n this.viewportEl.removeEventListener('scroll', this.syncOverflow);\n this.viewportEl.addEventListener('scroll', this.syncOverflow, { passive: true });\n\n this.resizeObserver?.disconnect();\n if (typeof ResizeObserver === 'undefined') return;\n this.resizeObserver = new ResizeObserver(this.syncOverflow);\n this.resizeObserver.observe(this.viewportEl);\n if (this.tableEl) this.resizeObserver.observe(this.tableEl);\n }\n\n private syncOverflow = (): void => {\n const viewport = this.viewportEl;\n if (!viewport) return;\n const overflows = viewport.scrollWidth - viewport.clientWidth > 1;\n const scrollable = overflows || viewport.scrollHeight - viewport.clientHeight > 1;\n const nextStart = overflows && viewport.scrollLeft > 1;\n const nextEnd = overflows && viewport.scrollLeft + viewport.clientWidth < viewport.scrollWidth - 1;\n if (nextStart !== this.overflowStart) this.overflowStart = nextStart;\n if (nextEnd !== this.overflowEnd) this.overflowEnd = nextEnd;\n if (scrollable !== this.scrollable) this.scrollable = scrollable;\n this.syncStickyHeaderPosition();\n };\n\n private syncStickyHeaderPosition(): void {\n if (!this.viewportEl || !this.stickyHeaderTableEl) return;\n const offset = this.viewportEl.scrollLeft;\n const maxOffset = Math.max(0, this.viewportEl.scrollWidth - this.viewportEl.clientWidth);\n this.stickyHeaderTableEl.style.setProperty('--ds-table-inline-scroll-offset', `${offset}px`);\n this.stickyHeaderTableEl.style.setProperty('--ds-table-inline-scroll-max-offset', `${maxOffset}px`);\n }\n\n private resetLoadRequest(): void {\n this.requestPending = false;\n this.requestedRowCount = this.loadedRows.length;\n this.disconnectIntersectionObserver();\n }\n\n private disconnectIntersectionObserver(): void {\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n this.observedSentinel = null;\n }\n\n private connectIntersectionObserver(): void {\n if (\n !this.lazyLoading ||\n this.loadMoreMode !== 'auto' ||\n !this.hasMore ||\n !!this.loadMoreError?.trim() ||\n !this.intersectionSupported ||\n !this.viewportEl ||\n !this.sentinelEl\n ) {\n this.disconnectIntersectionObserver();\n return;\n }\n\n if (this.intersectionObserver && this.observedSentinel === this.sentinelEl) return;\n this.disconnectIntersectionObserver();\n\n const threshold = Number.isFinite(this.loadMoreThreshold)\n ? Math.max(0, this.loadMoreThreshold)\n : 0;\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n if (entries.some(entry => entry.isIntersecting)) this.requestLoadMore('auto');\n },\n {\n root: this.resolvedMaxHeight === undefined ? null : this.viewportEl,\n rootMargin: `0px 0px ${threshold}px 0px`,\n },\n );\n this.observedSentinel = this.sentinelEl;\n this.intersectionObserver.observe(this.sentinelEl);\n }\n\n private requestLoadMore(reason: TableLoadMoreReason): void {\n if (\n !this.lazyLoading ||\n !this.hasMore ||\n this.loadingMore ||\n (reason !== 'retry' && !!this.loadMoreError?.trim()) ||\n this.requestPending\n ) return;\n\n this.requestPending = true;\n this.requestedRowCount = this.loadedRows.length;\n this.announcement = this.loadingMoreLabel;\n this.dsLoadMore.emit({\n reason,\n loadIdentity: this.loadIdentity,\n loadedRowCount: this.requestedRowCount,\n });\n }\n\n private emitSort(column: TableColumn, sortKey = column.id): void {\n if (this.grouping?.columnId === column.id && sortKey === column.id) {\n this.dsGroupingChange.emit({ grouping: nextTableGroupOrder(this.grouping) });\n return;\n }\n if (!column.sortable) return;\n this.dsSortChange.emit({ sort: nextTableSortState(this.sort, sortKey) });\n }\n\n private sortButtonLabel(column: TableColumn, sortKey = column.id, label = column.header): string {\n if (this.grouping?.columnId === column.id && sortKey === column.id) {\n const next = this.grouping.direction === 'asc' ? 'descending' : 'ascending';\n return `Sort ${column.header} groups ${next}. Currently grouped ${this.grouping.direction === 'asc' ? 'ascending' : 'descending'}.`;\n }\n\n if (this.sort?.columnId !== sortKey) return `Sort ${label} ascending`;\n if (this.sort.direction === 'asc') return `Sort ${label} descending. Currently ascending.`;\n return `Sort ${label} ascending. Currently descending.`;\n }\n\n private emitRowSelection(row: TableRow): void {\n const next = toggleTableRowSelection(this.selectedRowIds, row);\n const selected = next.includes(row.id);\n this.dsSelectionChange.emit({\n selectedRowIds: next,\n scope: 'row',\n changedRowId: row.id,\n selected,\n });\n }\n\n private emitAllSelection(): void {\n this.dsSelectionChange.emit({\n selectedRowIds: toggleAllLoadedTableRows(this.selectedRowIds, this.loadedRows),\n scope: 'all-loaded',\n selected: !this.selectionState.allSelected,\n });\n }\n\n private rowEventOwnsActivation(event: Event): boolean {\n const currentTarget = event.currentTarget;\n return !event.composedPath().some(target => {\n if (!(target instanceof HTMLElement) || target === currentTarget) return false;\n return target.matches(\n 'button, a, input, select, textarea, [role=\"button\"], [role=\"checkbox\"], ds-button-unfilled',\n );\n });\n }\n\n private emitRowActivation(row: TableRow, event: Event): void {\n if (!row.interactive || row.disabled || !this.rowEventOwnsActivation(event)) return;\n this.dsRowActivate.emit({ rowId: row.id });\n }\n\n private handleRowKeydown(row: TableRow, event: KeyboardEvent): void {\n if (event.target !== event.currentTarget || (event.key !== 'Enter' && event.key !== ' ')) return;\n event.preventDefault();\n this.emitRowActivation(row, event);\n }\n\n private renderSelectionControl(\n label: string,\n checked: boolean,\n indeterminate: boolean,\n disabled: boolean,\n onActivate: () => void,\n ) {\n return (\n <button\n class=\"ds-table__selection-control ds-interaction-fill__content\"\n type=\"button\"\n role=\"checkbox\"\n aria-label={label}\n aria-checked={indeterminate ? 'mixed' : String(checked)}\n disabled={disabled}\n onClick={onActivate}\n >\n <ds-checkbox\n label=\"\"\n size=\"md\"\n checked={checked}\n indeterminate={indeterminate}\n presentation={true}\n />\n </button>\n );\n }\n\n private renderStickyEdge(sticky: TableColumn['sticky']) {\n if (!sticky) return null;\n return (\n <span\n class={`ds-table__sticky-edge ds-table__sticky-edge--${sticky}`}\n aria-hidden=\"true\"\n />\n );\n }\n\n private renderColumnHeader(\n column: TableColumn,\n interactive = true,\n presentational = false,\n ) {\n const groupedColumn = this.grouping?.columnId === column.id;\n const headerSegments = column.headerSegments?.length\n ? column.headerSegments\n : [{ label: column.header, sortKey: column.id }];\n const activeMemberSegment = !groupedColumn\n ? headerSegments.find(segment => segment.sortKey === this.sort?.columnId)\n : undefined;\n const activeMemberSort = !!activeMemberSegment;\n const activeSort = groupedColumn || activeMemberSort;\n const align = column.align ?? 'start';\n const direction = groupedColumn\n ? this.grouping!.direction\n : activeMemberSort\n ? this.sort!.direction\n : undefined;\n const memberAriaSort = activeMemberSort\n ? (this.sort!.direction === 'asc' ? 'ascending' : 'descending')\n : undefined;\n\n const labelControl = (\n <span class=\"ds-table__header-labels\">\n {headerSegments.map((segment, index) => {\n const segmentActive = groupedColumn\n ? headerSegments.length === 1\n : activeMemberSegment?.sortKey === segment.sortKey;\n const segmentInteractive = interactive && (\n !!column.sortable || (groupedColumn && segment.sortKey === column.id)\n );\n const label = (\n <ds-text\n class=\"ds-table__header-label-box ds-control-label-box\"\n as=\"span\"\n variant=\"text-caption\"\n emphasis={segmentActive}\n color=\"inherit\"\n lineTruncation={1}\n >\n {segment.label}\n </ds-text>\n );\n const control = segmentInteractive ? (\n <button\n class=\"ds-table__header-label ds-table__header-label--interactive\"\n type=\"button\"\n aria-label={this.sortButtonLabel(column, segment.sortKey, segment.label)}\n data-sort-control=\"label\"\n data-sort-key={segment.sortKey}\n data-sort-active={segmentActive ? 'true' : undefined}\n onClick={() => this.emitSort(column, segment.sortKey)}\n >\n {label}\n </button>\n ) : (\n <span class=\"ds-table__header-label ds-table__header-static\">{label}</span>\n );\n\n return (\n <span class=\"ds-table__header-segment\" key={segment.sortKey}>\n {control}\n {index < headerSegments.length - 1 && (\n <ds-text\n class=\"ds-table__header-separator\"\n as=\"span\"\n variant=\"text-caption\"\n color=\"tertiary\"\n aria-hidden=\"true\"\n >\n {segment.separator ?? '/'}\n </ds-text>\n )}\n </span>\n );\n })}\n </span>\n );\n const sortControl = interactive ? (\n <span class=\"ds-table__sort-slot\">\n {activeSort && (\n <ds-button-unfilled\n class=\"ds-table__sort-direction\"\n variant=\"icon\"\n icon={direction === 'asc' ? 'ArrowUp' : 'ArrowDown'}\n size=\"xs\"\n aria-label={this.sortButtonLabel(\n column,\n activeMemberSegment?.sortKey ?? column.id,\n activeMemberSegment?.label ?? column.header,\n )}\n hasBorder={false}\n activeFill={false}\n isActive={true}\n pressScale={false}\n data-sort-control=\"direction\"\n onDsClick={() => this.emitSort(column, activeMemberSegment?.sortKey ?? column.id)}\n />\n )}\n </span>\n ) : null;\n\n return (\n <th\n key={column.id}\n class={{\n 'ds-table__header-cell': true,\n [`ds-table__cell--align-${align}`]: true,\n 'ds-table__cell--sticky-start': column.sticky === 'start',\n 'ds-table__cell--sticky-end': column.sticky === 'end',\n }}\n scope={presentational ? undefined : 'col'}\n aria-sort={presentational ? undefined : memberAriaSort}\n data-column-id={column.id}\n data-grouped={groupedColumn ? 'true' : undefined}\n data-sort-active={activeSort ? 'true' : undefined}\n >\n {!column.header.trim() && column.headerLabel?.trim() && (\n <span class=\"ds-visually-hidden\">{column.headerLabel}</span>\n )}\n <span class=\"ds-table__header-content\">\n {align === 'end' && sortControl}\n {align === 'center' && (\n <span\n class=\"ds-table__sort-slot ds-table__sort-slot--balance\"\n data-sort-balance=\"true\"\n aria-hidden=\"true\"\n />\n )}\n {labelControl}\n {align !== 'end' && sortControl}\n </span>\n {this.renderStickyEdge(column.sticky)}\n </th>\n );\n }\n\n private renderColgroup() {\n return (\n <colgroup>\n {this.selectable && <col class=\"ds-table__selection-column\" />}\n {this.columns.map(column => {\n const width = tableColumnSize(column);\n return <col key={column.id} style={width ? { width } : undefined} />;\n })}\n </colgroup>\n );\n }\n\n private renderHeader(interactive = true, presentational = false) {\n const selection = this.selectionState;\n return (\n <thead class={{\n 'ds-table__head': true,\n 'ds-table__head--semantic-copy': !interactive,\n }}>\n <tr class=\"ds-table__header-row\">\n {this.selectable && (\n <th\n class=\"ds-table__header-cell ds-table__selection-cell ds-table__cell--sticky-start\"\n scope={presentational ? undefined : 'col'}\n >\n {interactive ? this.renderSelectionControl(\n selection.allSelected ? 'Deselect all loaded rows' : 'Select all loaded rows',\n selection.allSelected,\n selection.indeterminate,\n selection.selectableRowIds.length === 0,\n () => this.emitAllSelection(),\n ) : (\n <span class=\"ds-visually-hidden\">Select rows</span>\n )}\n {this.renderStickyEdge('start')}\n </th>\n )}\n {this.columns.map(column => (\n this.renderColumnHeader(column, interactive, presentational)\n ))}\n </tr>\n </thead>\n );\n }\n\n private renderCellValue(value: TableCellValue, column: TableColumn, row: TableRow) {\n if (isTableCellBlank(value)) return null;\n\n if (value == null || isTableCellEmpty(value)) {\n return (\n <ds-text\n class=\"ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n >\n <span aria-hidden=\"true\">—</span>\n <span class=\"ds-visually-hidden\">{this.emptyCellLabel}</span>\n </ds-text>\n );\n }\n\n if (isTableCellIcon(value)) {\n return (\n <ds-icon\n name={value.icon}\n size=\"md\"\n color={value.color ?? 'secondary'}\n label={value.label}\n />\n );\n }\n\n if (isTableCellImage(value)) {\n return (\n <span class=\"ds-table__cell-image\">\n {value.src ? (\n <img class=\"ds-table__cell-image-content\" src={value.src} alt={value.alt} loading=\"lazy\" />\n ) : (\n <span\n class=\"ds-table__cell-image-placeholder\"\n role=\"img\"\n aria-label={value.alt}\n />\n )}\n </span>\n );\n }\n\n if (isTableCellAction(value)) {\n return (\n <ds-button-unfilled\n variant={value.variant ?? 'label'}\n size=\"md\"\n isInset={true}\n label={value.label ?? ''}\n icon={value.icon ?? ''}\n aria-label={value.ariaLabel ?? null}\n hasBorder={value.hasBorder ?? false}\n isInactive={value.isInactive ?? false}\n isLoading={value.isLoading ?? false}\n onDsClick={event => {\n event.stopPropagation();\n this.dsCellAction.emit({\n actionId: value.actionId,\n rowId: row.id,\n columnId: column.id,\n });\n }}\n />\n );\n }\n\n if (isTableCellTag(value)) {\n const variant = value.variant ?? 'tag-only';\n const tag = (\n <ds-tag\n label={value.label}\n intent={value.intent ?? 'neutral'}\n contrast={value.contrast ?? 'faint'}\n size={variant === 'text-with-tag' ? 'sm' : 'md'}\n icon={value.icon ?? ''}\n rounded={value.rounded ?? false}\n isInset\n />\n );\n\n if (variant === 'tag-only') return tag;\n\n return (\n <span class={`ds-table__cell-tag-stack ds-table__cell-tag-stack--${variant}`}>\n {variant === 'tag-with-text' && tag}\n <ds-text\n class=\"ds-table__cell-tag-text ds-table__cell-track\"\n as=\"span\"\n variant={variant === 'tag-with-text' ? 'text-body-small' : 'text-body-medium'}\n color=\"secondary\"\n lineTruncation={1}\n >\n {value.text}\n </ds-text>\n {variant === 'text-with-tag' && (\n <span class=\"ds-table__cell-tag-control-track\">{tag}</span>\n )}\n </span>\n );\n }\n\n const primaryText = isTableCellPrimaryText(value);\n const text = isTableCellText(value) || primaryText\n ? value\n : { primary: value, fontFeature: typeof value === 'number' ? 'tabular-nums' as const : 'normal' as const };\n const wraps = text.wrap ?? column.wrap ?? false;\n\n return (\n <span class={{ 'ds-table__cell-copy': true, 'ds-table__cell-copy--wrap': wraps }}>\n <ds-text\n class=\"ds-table__cell-primary ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"primary\"\n lineTruncation={wraps ? 'none' : 1}\n wrap={wraps ? 'wrap' : 'nowrap'}\n fontFeature={text.fontFeature ?? 'normal'}\n >\n {text.primary}\n </ds-text>\n {text.secondary !== undefined && text.secondary !== '' && (\n <ds-text\n class=\"ds-table__cell-secondary ds-table__cell-track ds-table__cell-track--text\"\n as=\"span\"\n variant={primaryText ? 'text-body-medium' : 'text-body-small'}\n color={primaryText ? 'primary' : 'secondary'}\n lineTruncation={wraps ? 'none' : 1}\n wrap={wraps ? 'wrap' : 'nowrap'}\n >\n {text.secondary}\n </ds-text>\n )}\n </span>\n );\n }\n\n private renderRow(row: TableRow) {\n const selected = this.selectedSet.has(row.id);\n const rowSelectable = row.selectable !== false && !row.disabled;\n return (\n <tr\n key={row.id}\n class={{\n 'ds-table__row': true,\n 'ds-table__row--selected': selected,\n 'ds-table__row--disabled': !!row.disabled,\n 'ds-table__row--interactive': !!row.interactive && !row.disabled,\n }}\n data-row-id={row.id}\n data-selected={selected ? 'true' : undefined}\n aria-disabled={row.disabled ? 'true' : undefined}\n tabIndex={row.interactive && !row.disabled ? 0 : undefined}\n onClick={event => this.emitRowActivation(row, event)}\n onKeyDown={event => this.handleRowKeydown(row, event)}\n >\n {this.selectable && (\n <td class={{\n 'ds-table__cell': true,\n 'ds-table__selection-cell': true,\n 'ds-table__cell--sticky-start': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--grouped': true,\n 'ds-interaction-fill--selected': selected,\n }}>\n {this.renderSelectionControl(\n `${selected ? 'Deselect' : 'Select'} ${tableRowSelectionLabel(row, this.columns)}`,\n selected,\n false,\n !rowSelectable,\n () => this.emitRowSelection(row),\n )}\n {this.renderStickyEdge('start')}\n </td>\n )}\n {this.columns.map(column => {\n const align = column.align ?? 'start';\n const value = row.cells[column.id];\n const tagCell = isTableCellTag(value);\n const iconCell = isTableCellIcon(value);\n const imageCell = isTableCellImage(value);\n const actionCell = isTableCellAction(value);\n const primaryTextCell = isTableCellPrimaryText(value);\n const emptyCell = value == null || isTableCellEmpty(value);\n const blankCell = isTableCellBlank(value);\n const textCell = primaryTextCell || (!tagCell && !iconCell && !imageCell && !actionCell && !emptyCell && !blankCell);\n const singleTextCell = textCell && !primaryTextCell && (!isTableCellText(value) || !value.secondary);\n const tagVariant = tagCell ? value.variant ?? 'tag-only' : undefined;\n const textVariant = textCell\n ? primaryTextCell\n ? 'primary-pair'\n : singleTextCell\n ? 'single'\n : 'multi'\n : undefined;\n const cellType = tagCell\n ? 'tag'\n : iconCell\n ? 'icon'\n : imageCell\n ? 'image'\n : actionCell\n ? 'action'\n : primaryTextCell\n ? 'primary-text'\n : emptyCell\n ? 'empty'\n : blankCell\n ? 'blank'\n : 'text';\n return (\n <td\n key={`${row.id}:${column.id}`}\n class={{\n 'ds-table__cell': true,\n [`ds-table__cell--align-${align}`]: true,\n 'ds-table__cell--tag': tagCell,\n [`ds-table__cell--tag-${tagVariant}`]: tagCell,\n 'ds-table__cell--icon': iconCell,\n 'ds-table__cell--image': imageCell,\n 'ds-table__cell--action': actionCell,\n 'ds-table__cell--primary-text': primaryTextCell,\n 'ds-table__cell--text-single': singleTextCell,\n 'ds-table__cell--text-multi': textCell && !singleTextCell,\n 'ds-table__cell--empty': emptyCell,\n 'ds-table__cell--blank': blankCell,\n 'ds-table__cell--sticky-start': column.sticky === 'start',\n 'ds-table__cell--sticky-end': column.sticky === 'end',\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--grouped': true,\n 'ds-interaction-fill--selected': selected,\n }}\n data-column-id={column.id}\n data-cell-type={cellType}\n data-cell-variant={tagVariant ?? textVariant}\n >\n <span class=\"ds-table__cell-content ds-interaction-fill__content\">\n {this.renderCellValue(value, column, row)}\n </span>\n {this.renderStickyEdge(column.sticky)}\n </td>\n );\n })}\n </tr>\n );\n }\n\n private renderDataBodies() {\n if (!this.grouped) {\n return <tbody class=\"ds-table__body\">{this.rows.map(row => this.renderRow(row))}</tbody>;\n }\n\n return this.groups.map(group => {\n const count = resolvedTableGroupCount(group);\n const countLabel = group.countLabel ?? `${count} ${count === 1 ? 'item' : 'items'}`;\n return (\n <tbody class=\"ds-table__body ds-table__group\" data-group-id={group.id} key={group.id}>\n <tr class=\"ds-table__group-row\">\n <th class=\"ds-table__group-cell\" scope=\"rowgroup\" colSpan={this.totalColumns}>\n <span class=\"ds-table__group-content\">\n <ds-icon name=\"GroupBy\" size=\"sm\" color=\"secondary\" aria-hidden=\"true\" />\n <ds-text as=\"span\" variant=\"text-body-small\" emphasis={true} color=\"primary\">\n {group.label}\n </ds-text>\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {countLabel}\n </ds-text>\n </span>\n </th>\n </tr>\n {group.rows.map(row => this.renderRow(row))}\n </tbody>\n );\n });\n }\n\n private renderSkeletonBody() {\n const count = Math.min(20, Math.max(1, Math.round(this.skeletonRows) || 1));\n return (\n <tbody class=\"ds-table__body ds-table__skeleton-body\">\n {Array.from({ length: count }, (_, index) => (\n <tr class=\"ds-table__row ds-table__skeleton-row\" key={`skeleton-${index}`}>\n {this.selectable && (\n <td class=\"ds-table__cell ds-table__selection-cell ds-table__cell--sticky-start\">\n <ds-skeleton variant=\"icon\" iconSize=\"md\" />\n {this.renderStickyEdge('start')}\n </td>\n )}\n {this.columns.map(column => (\n <td\n class={{\n 'ds-table__cell': true,\n 'ds-table__cell--sticky-start': column.sticky === 'start',\n 'ds-table__cell--sticky-end': column.sticky === 'end',\n }}\n key={`skeleton-${index}:${column.id}`}\n >\n <span class=\"ds-table__cell-content\">\n <ds-skeleton variant=\"text\" textVariant=\"text-body-medium\" width=\"100%\" />\n </span>\n {this.renderStickyEdge(column.sticky)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n );\n }\n\n private renderStateBody(kind: 'empty' | 'error') {\n const error = kind === 'error';\n return (\n <tbody class=\"ds-table__body ds-table__state-body\">\n <tr class=\"ds-table__state-row\">\n <td class=\"ds-table__state-cell\" colSpan={this.totalColumns}>\n <ds-empty-state\n icon={error ? 'ErrorTriangle' : 'Inbox'}\n heading={error ? this.errorHeading : this.emptyHeading}\n body={error ? this.errorBody : this.emptyBody}\n />\n </td>\n </tr>\n </tbody>\n );\n }\n\n private renderLazyBody() {\n if (!this.lazyLoading || !this.hasData) return null;\n const error = this.loadMoreError?.trim();\n const manualFallback = this.loadMoreMode === 'manual' || !this.intersectionSupported;\n\n return (\n <tbody class=\"ds-table__body ds-table__load-body\">\n <tr\n class=\"ds-table__load-row\"\n ref={element => {\n this.sentinelEl = element ?? null;\n }}\n >\n <td class=\"ds-table__load-cell\" colSpan={this.totalColumns}>\n {error ? (\n <span class=\"ds-table__load-content ds-table__load-content--error\">\n <ds-icon name=\"ErrorTriangle\" size=\"sm\" color=\"negative\" aria-hidden=\"true\" />\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">{error}</ds-text>\n <ds-button-unfilled\n label={this.retryLabel}\n size=\"sm\"\n onDsClick={() => this.requestLoadMore('retry')}\n />\n </span>\n ) : this.loadingMore ? (\n <span class=\"ds-table__load-content\">\n <ds-loader size=\"sm\" color=\"secondary\" />\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {this.loadingMoreLabel}\n </ds-text>\n </span>\n ) : this.hasMore && manualFallback ? (\n <ds-button-unfilled\n label={this.loadMoreLabel}\n size=\"sm\"\n onDsClick={() => this.requestLoadMore('manual')}\n />\n ) : this.hasMore ? (\n <span class=\"ds-table__auto-sentinel\" aria-hidden=\"true\" />\n ) : (\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {this.endOfResultsLabel}\n </ds-text>\n )}\n </td>\n </tr>\n </tbody>\n );\n }\n\n private renderDocumentStickyHeader() {\n if (!this.documentStickyHeader) return null;\n return (\n <div\n class=\"ds-table__document-sticky-header\"\n >\n <table\n class={{\n 'ds-table__table': true,\n 'ds-table__sticky-header-table': true,\n 'ds-table__table--selectable': this.selectable,\n }}\n style={this.tableStyle}\n role=\"presentation\"\n ref={element => {\n this.stickyHeaderTableEl = element ?? null;\n }}\n >\n {this.renderColgroup()}\n {this.renderHeader(true, true)}\n </table>\n </div>\n );\n }\n\n render() {\n const regionLabel = this.scrollLabel?.trim() || `${this.caption} scroll area`;\n const initialLoading = this.loading && !this.hasData;\n const initialError = !this.hasData && this.error;\n const viewportStyle = this.resolvedMaxHeight\n ? { '--ds-table-max-block-size': this.resolvedMaxHeight }\n : undefined;\n\n return (\n <Host class=\"table-host\">\n <div class={{\n 'ds-table': true,\n 'ds-table--sticky-header': this.stickyHeader,\n 'ds-table--document-sticky-header': this.documentStickyHeader,\n 'ds-table--contained-sticky-header': this.stickyHeader && !this.documentStickyHeader,\n }}>\n <div\n class={{\n 'ds-table__frame': true,\n 'ds-table__frame--overflow-start': this.overflowStart,\n 'ds-table__frame--overflow-end': this.overflowEnd,\n }}\n >\n {this.renderDocumentStickyHeader()}\n <div\n class=\"ds-table__viewport\"\n style={viewportStyle}\n ref={element => {\n this.viewportEl = element ?? null;\n }}\n role={this.scrollable ? 'region' : undefined}\n aria-label={this.scrollable ? regionLabel : undefined}\n tabIndex={this.scrollable ? 0 : undefined}\n >\n <table\n class={{\n 'ds-table__table': true,\n 'ds-table__table--selectable': this.selectable,\n }}\n style={this.tableStyle}\n aria-busy={initialLoading || this.loadingMore ? 'true' : undefined}\n ref={element => {\n this.tableEl = element ?? null;\n }}\n >\n <caption\n class={{\n 'ds-table__caption': true,\n 'ds-visually-hidden': this.captionVisibility === 'hidden',\n }}\n >\n <ds-text as=\"span\" variant=\"text-title-small\" emphasis={true} color=\"primary\">\n {this.caption}\n </ds-text>\n </caption>\n {this.renderColgroup()}\n {this.renderHeader(!this.documentStickyHeader)}\n {initialLoading\n ? this.renderSkeletonBody()\n : initialError\n ? this.renderStateBody('error')\n : this.hasData\n ? this.renderDataBodies()\n : this.renderStateBody('empty')}\n {!initialLoading && !initialError && this.renderLazyBody()}\n </table>\n </div>\n </div>\n <div class=\"ds-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {this.announcement}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as o,H as t,c as r,h as n,a as s,t as a}from"./index.js";import{d as i}from"./p-DumWT7NN.js";import{d as c}from"./p-BNiIyZCn.js";import{C as e}from"./p-CuwopElg.js";const d=()=>`.ds-control--lg.sc-ds-tag,.ds-control--lg.sc-ds-tag-h,.ds-control--md.sc-ds-tag-h,.ds-control--md.sc-ds-tag,.ds-control--sm.sc-ds-tag-h,.ds-control--sm.sc-ds-tag,.ds-control--xs.sc-ds-tag-h,.ds-control--xs.sc-ds-tag{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-tag-h,.ds-control--lg.sc-ds-tag{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-tag-h,.ds-control--md.sc-ds-tag{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-tag-h,.ds-control--sm.sc-ds-tag{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-tag-h,.ds-control--xs.sc-ds-tag{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-tag-h,.ds-interaction-fill.sc-ds-tag{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-tag-h::before,.ds-interaction-fill.sc-ds-tag::before,.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-tag-h::before,.ds-interaction-fill.sc-ds-tag::before{z-index:1}.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-tag-h,.ds-interaction-fill--bordered.sc-ds-tag{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-tag-h::before,.ds-interaction-fill--selected.sc-ds-tag::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-tag-h,.ds-interaction-fill--selected.sc-ds-tag{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tag-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-tag:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-tag-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-tag:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-tag-h>.ds-interaction-fill__content.sc-ds-tag,.ds-interaction-fill.sc-ds-tag>.ds-interaction-fill__content.sc-ds-tag,.ds-interaction-fill__content.sc-ds-tag{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-tag-h,.ds-interaction-fill--on-faint.sc-ds-tag{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-tag-h,.ds-interaction-fill--on-medium.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-tag-h,.ds-interaction-fill--on-bold.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-tag-h,.ds-interaction-fill--on-strong.sc-ds-tag{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-tag-h,.ds-interaction-fill--on-translucent.sc-ds-tag{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-tag-h,.ds-interaction-fill--on-inverted.sc-ds-tag{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-tag-h,.ds-interaction-fill--on-media.sc-ds-tag{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-tag-h,.ds-interaction-fill--on-always-dark.sc-ds-tag{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-tag-h,.ds-interaction-fill--on-navigation.sc-ds-tag{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-tag-h::after,.ds-interaction-fill.sc-ds-tag::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-tag-h::before,.ds-interaction-fill--selected.sc-ds-tag::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tag-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-tag:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-tag-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-tag-h,.ds-focus-ring.sc-ds-tag,.ds-focus-ring-inset.sc-ds-tag-h,.ds-focus-ring-inset.sc-ds-tag{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-tag-h:focus-visible,.ds-focus-ring.sc-ds-tag:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-tag-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-tag{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-tag-h:focus-visible,.ds-focus-ring-inset.sc-ds-tag:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-tag-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-tag:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tag::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-tag-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-tag:root,.sc-ds-tag-h,.ds-forced-colors-scope.sc-ds-tag{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-control-inactive.sc-ds-tag-h,.ds-control-inactive.sc-ds-tag{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-tag-h,.ds-control-inactive.sc-ds-tag{color:var(--ds-forced-color-disabled);opacity:1}}.sc-ds-tag-h{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;color:var(--color-foreground-primary);position:relative;border-radius:var(--ds-control-radius, var(--dimension-radius-025));height:var(--ds-control-height);padding:0 var(--ds-control-padding-inline);gap:var(--ds-control-gap);user-select:none;-webkit-user-select:none}.tag--rounded.sc-ds-tag-h{border-radius:var(--dimension-radius-half)}.tag__label.sc-ds-tag{position:relative;z-index:2;padding:0 var(--ds-control-label-inset);white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.tag--intent-neutral.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-neutral);color:var(--color-foreground-medium-neutral)}.tag--intent-brand.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-brand);color:var(--color-foreground-on-strong-background-primary)}.tag--intent-ai.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-ai);color:var(--color-foreground-medium-ai)}.tag--intent-negative.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-negative);color:var(--color-foreground-medium-negative)}.tag--intent-warning.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-warning);color:var(--color-foreground-medium-warning)}.tag--intent-caution.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-caution);color:var(--color-foreground-medium-caution)}.tag--intent-positive.tag--contrast-strong.sc-ds-tag-h{background-color:var(--color-background-strong-positive);color:var(--color-foreground-medium-positive)}.tag--intent-neutral.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-neutral);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-brand.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-brand);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-ai.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-ai);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-negative.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-negative);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-warning.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-warning);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-caution.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-caution);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-positive.tag--contrast-bold.sc-ds-tag-h{background-color:var(--color-background-bold-positive);color:var(--color-foreground-on-bold-background-primary)}.tag--intent-neutral.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-neutral);color:var(--color-foreground-strong-neutral)}.tag--intent-brand.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-brand);color:var(--color-foreground-on-medium-background-primary)}.tag--intent-ai.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-ai);color:var(--color-foreground-strong-ai)}.tag--intent-negative.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-negative);color:var(--color-foreground-strong-negative)}.tag--intent-warning.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-warning);color:var(--color-foreground-strong-warning)}.tag--intent-caution.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-caution);color:var(--color-foreground-strong-caution)}.tag--intent-positive.tag--contrast-medium.sc-ds-tag-h{background-color:var(--color-background-medium-positive);color:var(--color-foreground-strong-positive)}.tag--intent-neutral.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-neutral);color:var(--color-foreground-bold-neutral)}.tag--intent-brand.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-brand);color:var(--color-foreground-bold-brand)}.tag--intent-ai.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-ai);color:var(--color-foreground-bold-ai)}.tag--intent-negative.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-negative);color:var(--color-foreground-bold-negative)}.tag--intent-warning.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-warning);color:var(--color-foreground-bold-warning)}.tag--intent-caution.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-caution);color:var(--color-foreground-bold-caution)}.tag--intent-positive.tag--contrast-faint.sc-ds-tag-h{background-color:var(--color-background-faint-positive);color:var(--color-foreground-bold-positive)}.tag--interactive.sc-ds-tag-h{padding:0;gap:0}.tag__button.sc-ds-tag{all:unset;position:relative;z-index:0;display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;max-width:100%;height:100%;padding:0 var(--ds-control-padding-inline);gap:var(--ds-control-gap);border-radius:inherit;color:inherit;cursor:default}.tag__button.sc-ds-tag:disabled{cursor:not-allowed}.tag__button--expanded.sc-ds-tag::after{background:var(--ds-interaction-pressed)}.tag__prefix-icon.sc-ds-tag,.tag__suffix-icon.sc-ds-tag{position:relative;z-index:2;display:inline-flex;flex-shrink:0;width:var(--ds-control-icon);height:var(--ds-control-icon)}`;const l={md:"md",sm:"sm",xs:"xs"};const g=o(class o extends t{constructor(o){super();if(o!==false){this.__registerHost()}this.dsClick=r(this,"dsClick");this.icon="";this.intent="neutral";this.contrast="faint";this.size="md";this.rounded=false;this.interactive=false;this.expanded=false;this.isInactive=false;this.handleClick=o=>{if(!this.interactive||this.isInactive)return;this.dsClick.emit(o)}}render(){const o=e[this.size];const t=l[this.size];const r=this.maxWidth!=null?{maxWidth:typeof this.maxWidth==="number"?`${this.maxWidth}px`:this.maxWidth}:undefined;const a={tag:true,[`tag--intent-${this.intent}`]:true,[`tag--contrast-${this.contrast}`]:true,[`tag--size-${this.size}`]:true,"ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs","tag--rounded":this.rounded,"tag--interactive":this.interactive,"ds-control-inactive":this.interactive&&this.isInactive};const i=[this.icon&&n("ds-icon",{class:"tag__prefix-icon",name:this.icon,size:t,color:"inherit"}),n("ds-text",{class:"tag__label",as:"span",variant:o,color:"inherit"},this.label)];if(!this.interactive){return n(s,{class:a,style:r},i)}return n(s,{class:a,style:r},n("button",{type:"button",class:{tag__button:true,"tag__button--expanded":this.expanded,"ds-interaction-fill":true,"ds-focus-ring-inset":true},"aria-haspopup":"menu","aria-expanded":this.expanded?"true":"false","aria-controls":this.ariaControls,disabled:this.isInactive||undefined,onClick:this.handleClick},i,n("ds-icon",{class:"tag__suffix-icon",name:"ChevronUpDown",size:t,color:"inherit"})))}static get style(){return d()}},[2,"ds-tag",{label:[1],icon:[1],intent:[1],contrast:[1],size:[1],rounded:[4],maxWidth:[8,"max-width"],interactive:[4],expanded:[4],ariaControls:[1,"aria-controls"],isInactive:[4,"is-inactive"]}]);function u(){if(typeof customElements==="undefined"){return}const o=["ds-tag","ds-icon","ds-text"];o.forEach((o=>{switch(o){case"ds-tag":if(!customElements.get(a(o))){customElements.define(a(o),g)}break;case"ds-icon":if(!customElements.get(a(o))){i()}break;case"ds-text":if(!customElements.get(a(o))){c()}break}}))}u();const v=g;const f=u;export{v as DsTag,f as defineCustomElement};
|
|
1
|
+
import{T as o,d as s}from"./p-BEEYhbIb.js";const t=o;const p=s;export{t as DsTag,p as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-tag.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["tagCss","ICON_SIZE","md","sm","xs","Tag","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","icon","intent","contrast","size","rounded","interactive","expanded","isInactive","handleClick","event","dsClick","emit","render","textVariant","CONTROL_TEXT_VARIANT","iconSize","maxWidthStyle","maxWidth","undefined","hostClass","tag","content","h","class","name","color","as","variant","label","Host","style","type","tag__button","ariaControls","disabled","onClick"],"sources":["src/wc/components/Tag/Tag.css?tag=ds-tag&encapsulation=scoped","src/wc/components/Tag/Tag.tsx"],"sourcesContent":["@import '../../utils/tag-chip.css';\n\n/* ── Intent × Contrast — strong ─────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-strong) { background-color: var(--color-background-strong-neutral); color: var(--color-foreground-medium-neutral); }\n:host(.tag--intent-brand.tag--contrast-strong) { background-color: var(--color-background-strong-brand); color: var(--color-foreground-on-strong-background-primary); }\n:host(.tag--intent-ai.tag--contrast-strong) { background-color: var(--color-background-strong-ai); color: var(--color-foreground-medium-ai); }\n:host(.tag--intent-negative.tag--contrast-strong) { background-color: var(--color-background-strong-negative); color: var(--color-foreground-medium-negative); }\n:host(.tag--intent-warning.tag--contrast-strong) { background-color: var(--color-background-strong-warning); color: var(--color-foreground-medium-warning); }\n:host(.tag--intent-caution.tag--contrast-strong) { background-color: var(--color-background-strong-caution); color: var(--color-foreground-medium-caution); }\n:host(.tag--intent-positive.tag--contrast-strong) { background-color: var(--color-background-strong-positive); color: var(--color-foreground-medium-positive); }\n\n/* ── Intent × Contrast — bold ───────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-bold) { background-color: var(--color-background-bold-neutral); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-brand.tag--contrast-bold) { background-color: var(--color-background-bold-brand); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-ai.tag--contrast-bold) { background-color: var(--color-background-bold-ai); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-negative.tag--contrast-bold) { background-color: var(--color-background-bold-negative); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-warning.tag--contrast-bold) { background-color: var(--color-background-bold-warning); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-caution.tag--contrast-bold) { background-color: var(--color-background-bold-caution); color: var(--color-foreground-on-bold-background-primary); }\n:host(.tag--intent-positive.tag--contrast-bold) { background-color: var(--color-background-bold-positive); color: var(--color-foreground-on-bold-background-primary); }\n\n/* ── Intent × Contrast — medium ─────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-medium) { background-color: var(--color-background-medium-neutral); color: var(--color-foreground-strong-neutral); }\n:host(.tag--intent-brand.tag--contrast-medium) { background-color: var(--color-background-medium-brand); color: var(--color-foreground-on-medium-background-primary); }\n:host(.tag--intent-ai.tag--contrast-medium) { background-color: var(--color-background-medium-ai); color: var(--color-foreground-strong-ai); }\n:host(.tag--intent-negative.tag--contrast-medium) { background-color: var(--color-background-medium-negative); color: var(--color-foreground-strong-negative); }\n:host(.tag--intent-warning.tag--contrast-medium) { background-color: var(--color-background-medium-warning); color: var(--color-foreground-strong-warning); }\n:host(.tag--intent-caution.tag--contrast-medium) { background-color: var(--color-background-medium-caution); color: var(--color-foreground-strong-caution); }\n:host(.tag--intent-positive.tag--contrast-medium) { background-color: var(--color-background-medium-positive); color: var(--color-foreground-strong-positive); }\n\n/* ── Intent × Contrast — faint ──────────────────────────────────────────── */\n\n:host(.tag--intent-neutral.tag--contrast-faint) { background-color: var(--color-background-faint-neutral); color: var(--color-foreground-bold-neutral); }\n:host(.tag--intent-brand.tag--contrast-faint) { background-color: var(--color-background-faint-brand); color: var(--color-foreground-bold-brand); }\n:host(.tag--intent-ai.tag--contrast-faint) { background-color: var(--color-background-faint-ai); color: var(--color-foreground-bold-ai); }\n:host(.tag--intent-negative.tag--contrast-faint) { background-color: var(--color-background-faint-negative); color: var(--color-foreground-bold-negative); }\n:host(.tag--intent-warning.tag--contrast-faint) { background-color: var(--color-background-faint-warning); color: var(--color-foreground-bold-warning); }\n:host(.tag--intent-caution.tag--contrast-faint) { background-color: var(--color-background-faint-caution); color: var(--color-foreground-bold-caution); }\n:host(.tag--intent-positive.tag--contrast-faint) { background-color: var(--color-background-faint-positive); color: var(--color-foreground-bold-positive); }\n\n/* ── Interactive menu trigger ───────────────────────────────────────────── */\n\n:host(.tag--interactive) {\n padding: 0;\n gap: 0;\n}\n\n.tag__button {\n all: unset;\n position: relative;\n z-index: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n height: 100%;\n padding: 0 var(--ds-control-padding-inline);\n gap: var(--ds-control-gap);\n border-radius: inherit;\n color: inherit;\n cursor: default;\n}\n\n.tag__button:disabled {\n cursor: not-allowed;\n}\n\n.tag__button--expanded::after {\n background: var(--ds-interaction-pressed);\n}\n\n/* Hover/press wash stays above the Tag's semantic background. */\n\n/* ── Icons ──────────────────────────────────────────────────────────────── */\n\n.tag__prefix-icon,\n.tag__suffix-icon {\n position: relative;\n z-index: 2;\n display: inline-flex;\n flex-shrink: 0;\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n}\n","import { Component, Event, EventEmitter, Prop, h, Host } from '@stencil/core';\nimport { CONTROL_TEXT_VARIANT } from '../../utils';\n\nexport type TagIntent = 'neutral' | 'brand' | 'ai' | 'negative' | 'warning' | 'caution' | 'positive';\nexport type TagContrast = 'strong' | 'bold' | 'medium' | 'faint';\nexport type TagSize = 'md' | 'sm' | 'xs';\n\n/**\n * `ds-icon` size prop matching control-density icon metrics\n * (md→20 / sm→16 / xs→12 via `--dimension-iconography-*`).\n */\nconst ICON_SIZE: Record<TagSize, 'md' | 'sm' | 'xs'> = {\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\n@Component({\n tag: 'ds-tag',\n styleUrl: 'Tag.css',\n scoped: true,\n})\nexport class Tag {\n @Prop() label!: string;\n /** Canonical icon name rendered before the visible label. */\n @Prop() icon: string = '';\n @Prop() intent: TagIntent = 'neutral';\n @Prop() contrast: TagContrast = 'faint';\n @Prop() size: TagSize = 'md';\n @Prop() rounded: boolean = false;\n @Prop() maxWidth: string | number | undefined;\n /** Render a menu-trigger button with a fixed ChevronUpDown suffix. */\n @Prop() interactive: boolean = false;\n /** Controlled open state for the menu triggered by an interactive Tag. */\n @Prop() expanded: boolean = false;\n /** ID of the menu controlled by an interactive Tag. */\n @Prop() ariaControls: string | undefined;\n /** Disable an interactive Tag and apply the shared inactive treatment. */\n @Prop() isInactive: boolean = false;\n\n /** Fired when the interactive Tag button is activated. */\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.interactive || this.isInactive) return;\n this.dsClick.emit(event);\n };\n\n render() {\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n\n const maxWidthStyle = this.maxWidth != null\n ? { maxWidth: typeof this.maxWidth === 'number' ? `${this.maxWidth}px` : this.maxWidth }\n : undefined;\n const hostClass = {\n 'tag': true,\n [`tag--intent-${this.intent}`]: true,\n [`tag--contrast-${this.contrast}`]: true,\n [`tag--size-${this.size}`]: true,\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'tag--rounded': this.rounded,\n 'tag--interactive': this.interactive,\n 'ds-control-inactive': this.interactive && this.isInactive,\n };\n const content = [\n this.icon && (\n <ds-icon\n class=\"tag__prefix-icon\"\n name={this.icon}\n size={iconSize}\n color=\"inherit\"\n ></ds-icon>\n ),\n <ds-text class=\"tag__label\" as=\"span\" variant={textVariant} color=\"inherit\">\n {this.label}\n </ds-text>,\n ];\n\n if (!this.interactive) {\n return <Host class={hostClass} style={maxWidthStyle}>{content}</Host>;\n }\n\n return (\n <Host class={hostClass} style={maxWidthStyle}>\n <button\n type=\"button\"\n class={{\n 'tag__button': true,\n 'tag__button--expanded': this.expanded,\n 'ds-interaction-fill': true,\n 'ds-focus-ring-inset': true,\n }}\n aria-haspopup=\"menu\"\n aria-expanded={this.expanded ? 'true' : 'false'}\n aria-controls={this.ariaControls}\n disabled={this.isInactive || undefined}\n onClick={this.handleClick}\n >\n {content}\n <ds-icon\n class=\"tag__suffix-icon\"\n name=\"ChevronUpDown\"\n size={iconSize}\n color=\"inherit\"\n ></ds-icon>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"8KAAA,MAAMA,EAAS,IAAM,ojfCWrB,MAAMC,EAAiD,CACrDC,GAAI,KACJC,GAAI,KACJC,GAAI,M,MAQOC,EAAGC,EAAA,MAAAD,UAAAE,EALhB,WAAAC,CAAAC,G,2EAQUC,KAAAC,KAAe,GACfD,KAAAE,OAAoB,UACpBF,KAAAG,SAAwB,QACxBH,KAAAI,KAAgB,KAChBJ,KAAAK,QAAmB,MAGnBL,KAAAM,YAAuB,MAEvBN,KAAAO,SAAoB,MAIpBP,KAAAQ,WAAsB,MAKtBR,KAAAS,YAAeC,IACrB,IAAKV,KAAKM,aAAeN,KAAKQ,WAAY,OAC1CR,KAAKW,QAAQC,KAAKF,EAAM,CAmE3B,CAhEC,MAAAG,GACE,MAAMC,EAAcC,EAAqBf,KAAKI,MAC9C,MAAMY,EAAWzB,EAAUS,KAAKI,MAEhC,MAAMa,EAAgBjB,KAAKkB,UAAY,KACnC,CAAEA,gBAAiBlB,KAAKkB,WAAa,SAAW,GAAGlB,KAAKkB,aAAelB,KAAKkB,UAC5EC,UACJ,MAAMC,EAAY,CAChBC,IAAO,KACP,CAAC,eAAerB,KAAKE,UAAW,KAChC,CAAC,iBAAiBF,KAAKG,YAAa,KACpC,CAAC,aAAaH,KAAKI,QAAS,KAC5B,iBAAkBJ,KAAKI,OAAS,KAChC,iBAAkBJ,KAAKI,OAAS,KAChC,iBAAkBJ,KAAKI,OAAS,KAChC,eAAgBJ,KAAKK,QACrB,mBAAoBL,KAAKM,YACzB,sBAAuBN,KAAKM,aAAeN,KAAKQ,YAElD,MAAMc,EAAU,CACdtB,KAAKC,MACHsB,EAAA,WACEC,MAAM,mBACNC,KAAMzB,KAAKC,KACXG,KAAMY,EACNU,MAAM,YAGVH,EAAA,WAASC,MAAM,aAAaG,GAAG,OAAOC,QAASd,EAAaY,MAAM,WAC/D1B,KAAK6B,QAIV,IAAK7B,KAAKM,YAAa,CACrB,OAAOiB,EAACO,EAAI,CAACN,MAAOJ,EAAWW,MAAOd,GAAgBK,E,CAGxD,OACEC,EAACO,EAAI,CAACN,MAAOJ,EAAWW,MAAOd,GAC7BM,EAAA,UACES,KAAK,SACLR,MAAO,CACLS,YAAe,KACf,wBAAyBjC,KAAKO,SAC9B,sBAAuB,KACvB,sBAAuB,MACxB,gBACa,OAAM,gBACLP,KAAKO,SAAW,OAAS,QAAO,gBAChCP,KAAKkC,aACpBC,SAAUnC,KAAKQ,YAAcW,UAC7BiB,QAASpC,KAAKS,aAEba,EACDC,EAAA,WACEC,MAAM,mBACNC,KAAK,gBACLrB,KAAMY,EACNU,MAAM,a","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|