@ds-mo/ui 0.9.4 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ds-bar-nav-action.d.ts +11 -0
- package/dist/components/ds-bar-nav-action.js +2 -0
- package/dist/components/ds-bar-nav-action.js.map +1 -0
- package/dist/components/ds-bar-nav.d.ts +11 -0
- package/dist/components/ds-bar-nav.js +2 -0
- package/dist/components/ds-bar-nav.js.map +1 -0
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-group.js +1 -1
- package/dist/components/ds-button-group.js.map +1 -1
- package/dist/components/ds-button.js +1 -1
- package/dist/components/ds-card.js +1 -1
- package/dist/components/ds-card.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-empty-state.js.map +1 -1
- package/dist/components/ds-fade.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-header.js +1 -1
- package/dist/components/ds-header.js.map +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-label-wrap.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-radio-group.js +1 -1
- package/dist/components/ds-scrollbar.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-surface.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tab-group.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast-provider.js +1 -1
- package/dist/components/ds-toggle-button-group.js +1 -1
- package/dist/components/ds-toggle-button.js +1 -1
- package/dist/components/ds-toggle.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/{p-DdN6WnFs.js → p-B51N5kiy.js} +2 -2
- package/dist/components/{p-Leo9RPok.js → p-C_mk7BoY.js} +2 -2
- package/dist/components/p-CdSPCP4g.js +2 -0
- package/dist/components/p-CdSPCP4g.js.map +1 -0
- package/dist/components/{p-CGuwZUFk.js → p-CkBXHj0e.js} +2 -2
- package/dist/components/p-D1cpKdRU.js +2 -0
- package/dist/components/p-D1cpKdRU.js.map +1 -0
- package/dist/components/{p-DRuXu8Ql.js → p-M_LSU5Uu.js} +2 -2
- package/dist/types/.stencil/BarNav/BarNav.d.ts +52 -0
- package/dist/types/.stencil/BarNav/index.d.ts +2 -0
- package/dist/types/.stencil/BarNavAction/BarNavAction.d.ts +20 -0
- package/dist/types/.stencil/BarNavAction/index.d.ts +2 -0
- package/dist/types/.stencil/TabGroup/TabGroup.d.ts +2 -11
- package/dist/types/components.d.ts +190 -0
- package/package.json +2 -2
- package/src/angular/index.ts +2 -0
- package/src/angular/proxies.ts +65 -0
- /package/dist/components/{p-DdN6WnFs.js.map → p-B51N5kiy.js.map} +0 -0
- /package/dist/components/{p-Leo9RPok.js.map → p-C_mk7BoY.js.map} +0 -0
- /package/dist/components/{p-CGuwZUFk.js.map → p-CkBXHj0e.js.map} +0 -0
- /package/dist/components/{p-DRuXu8Ql.js.map → p-M_LSU5Uu.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as r,H as o,c as e,h as t,a,t as s}from"./index.js";const n=()=>`.sc-ds-tab-group-h{display:block}.tab-list.sc-ds-tab-group{display:flex;align-items:center;gap:var(--dimension-space-050);position:relative}.tab-list--vertical.sc-ds-tab-group{flex-direction:column;align-items:stretch}.tab.sc-ds-tab-group{display:flex;align-items:center;justify-content:center;gap:var(--dimension-space-050);padding:var(--dimension-space-075);background-color:transparent;border:none;border-radius:var(--dimension-radius-025);cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--color-foreground-secondary);position:relative;transition:color var(--effect-motion-short-2);flex-shrink:0;height:var(--dimension-size-400);min-width:var(--dimension-size-400);box-sizing:border-box;--_hover-bg:var(--color-interaction-hover);--_pressed-bg:var(--color-interaction-pressed);--_dot:var(--color-foreground-bold-brand)}.tab.sc-ds-tab-group::after{content:'';position:absolute;inset:0;border-radius:var(--dimension-radius-025, 2px);background:transparent;pointer-events:none;transition:background var(--effect-animation-duration-short-3, 200ms) var(--effect-animation-easing-ease-out, ease)}.tab.sc-ds-tab-group:hover::after{background:var(--_hover-bg);transition:none}.tab.sc-ds-tab-group:active::after{background:var(--_pressed-bg);transition:none}.tab--selected.sc-ds-tab-group{color:var(--color-foreground-primary)}.tab.sc-ds-tab-group:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:var(--dimension-space-025)}.tab.sc-ds-tab-group:disabled,.tab[aria-disabled="true"].sc-ds-tab-group{opacity:0.5;cursor:not-allowed;pointer-events:none}.tab-list--vertical.sc-ds-tab-group .tab.sc-ds-tab-group{justify-content:flex-start}.tab__label.sc-ds-tab-group{position:relative;padding:0 var(--dimension-space-025);white-space:nowrap}.tab__dot-wrap.sc-ds-tab-group{position:relative;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.tab__dot.sc-ds-tab-group{width:var(--dimension-space-075);height:var(--dimension-space-075);border-radius:var(--dimension-radius-full, 9999px);background:var(--_dot)}.on-medium.sc-ds-tab-group{--_hover-bg:var(--color-interaction-on-medium-background-hover);--_pressed-bg:var(--color-interaction-on-medium-background-pressed)}.on-bold.sc-ds-tab-group{--_hover-bg:var(--color-interaction-on-bold-background-hover);--_pressed-bg:var(--color-interaction-on-bold-background-pressed);color:var(--color-foreground-on-bold-background-secondary)}.on-bold.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-primary)}.on-strong.sc-ds-tab-group{--_hover-bg:var(--color-interaction-on-strong-background-hover);--_pressed-bg:var(--color-interaction-on-strong-background-pressed);color:var(--color-foreground-on-bold-background-secondary)}.on-strong.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-primary)}.on-always-dark.sc-ds-tab-group{--_hover-bg:var(--color-always-dark-interaction-hover);--_pressed-bg:var(--color-always-dark-interaction-pressed);color:var(--color-always-dark-foreground-secondary)}.on-always-dark.tab--selected.sc-ds-tab-group{color:var(--color-always-dark-foreground-primary)}`;const i=r(class r extends o{constructor(r){super();if(r!==false){this.__registerHost()}this.dsChange=e(this,"dsChange");this.value="";this.tabs=[];this.orientation="horizontal"}selectTab(r){this.value=r;this.dsChange.emit(r)}findEnabled(r,o){const e=this.tabs.length;for(let t=0;t<e;t++){const a=(r+o*(t+1)+e*(t+1))%e;if(!this.tabs[a]?.disabled)return a}return r}handleKeyDown(r){if(!this.tabs.length)return;const o=this.tabs.findIndex((r=>r.id===this.value));const e=this.orientation==="vertical";let t=null;if(!e){if(r.key==="ArrowRight"){t=this.findEnabled(o,1)}else if(r.key==="ArrowLeft"){t=this.findEnabled(o,-1)}}else{if(r.key==="ArrowDown"){t=this.findEnabled(o,1)}else if(r.key==="ArrowUp"){t=this.findEnabled(o,-1)}}if(r.key==="Home"){const r=this.tabs.findIndex((r=>!r.disabled));t=r===-1?null:r}else if(r.key==="End"){const r=[...this.tabs].reverse().findIndex((r=>!r.disabled));t=r===-1?null:this.tabs.length-1-r}if(t!==null){r.preventDefault();const o=this.tabs[t];this.selectTab(o.id);const e=this.el.querySelector(`[data-tab-id="${o.id}"]`);e?.focus()}}getBgClass(){if(!this.background||this.background==="faint")return"";if(this.background==="always-dark")return"on-always-dark";return`on-${this.background}`}render(){const r=this.getBgClass();const o=this.orientation==="vertical";return t(a,{key:"eb385dcf5e03e68f92c6d310a13fe754af8258d0",class:"tab-group-host"},t("div",{key:"62cbb809e40f92dbf503a76438666411eabba2df",role:"tablist",class:{"tab-list":true,"tab-list--vertical":o},"aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby,"aria-orientation":o?"vertical":undefined},this.tabs.map((o=>{const e=o.id===this.value;return t("button",{key:o.id,type:"button",role:"tab","data-tab-id":o.id,class:{tab:true,"tab--selected":e,[r]:!!r},"aria-selected":e,"aria-disabled":o.disabled||undefined,"aria-controls":o.panelId??undefined,disabled:o.disabled,tabIndex:e?0:-1,onClick:()=>!o.disabled&&this.selectTab(o.id)},t("span",{class:`tab__label ${e?"text-body-medium-emphasis":"text-body-medium"}`},o.label),o.dot&&t("span",{class:"tab__dot-wrap","aria-hidden":"true"},t("span",{class:"tab__dot"})))}))))}get el(){return this}static get style(){return n()}},[2,"ds-tab-group",{value:[1025],tabs:[16],background:[1],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"],orientation:[1]},[[0,"keydown","handleKeyDown"]]]);function d(){if(typeof customElements==="undefined"){return}const r=["ds-tab-group"];r.forEach((r=>{switch(r){case"ds-tab-group":if(!customElements.get(s(r))){customElements.define(s(r),i)}break}}))}d();export{i as T,d};
|
|
2
|
+
//# sourceMappingURL=p-D1cpKdRU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["tabGroupCss","TabGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","tabs","orientation","selectTab","id","dsChange","emit","findEnabled","from","step","len","length","n","i","disabled","handleKeyDown","e","currentIdx","findIndex","t","isVertical","nextIdx","key","first","lastEnabled","reverse","preventDefault","next","btn","el","querySelector","focus","getBgClass","background","render","bgClass","h","Host","class","role","ariaLabel","ariaLabelledby","undefined","map","tab","isSelected","type","panelId","tabIndex","onClick","label","dot"],"sources":["src/wc/components/TabGroup/TabGroup.css?tag=ds-tab-group&encapsulation=scoped","src/wc/components/TabGroup/TabGroup.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.tab-list {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n position: relative;\n}\n\n/* Vertical orientation */\n.tab-list--vertical {\n flex-direction: column;\n align-items: stretch;\n}\n\n.tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-050);\n padding: var(--dimension-space-075);\n background-color: transparent;\n border: none;\n border-radius: var(--dimension-radius-025);\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n color: var(--color-foreground-secondary);\n position: relative;\n /* Only transition color — hover bg is instant (see ::after below) */\n transition: color var(--effect-motion-short-2);\n flex-shrink: 0;\n height: var(--dimension-size-400);\n min-width: var(--dimension-size-400);\n box-sizing: border-box;\n --_hover-bg: var(--color-interaction-hover);\n --_pressed-bg: var(--color-interaction-pressed);\n --_dot: var(--color-foreground-bold-brand);\n}\n\n/* Interaction layer — same pattern as PanelNav */\n.tab::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dimension-radius-025, 2px);\n background: transparent;\n pointer-events: none;\n transition: background var(--effect-animation-duration-short-3, 200ms) var(--effect-animation-easing-ease-out, ease);\n}\n\n.tab:hover::after { background: var(--_hover-bg); transition: none; }\n.tab:active::after { background: var(--_pressed-bg); transition: none; }\n\n.tab--selected { color: var(--color-foreground-primary); }\n\n.tab:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-interaction-focus);\n outline-offset: var(--dimension-space-025);\n}\n\n.tab:disabled,\n.tab[aria-disabled=\"true\"] {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Vertical tabs read as a list — left-align the label */\n.tab-list--vertical .tab { justify-content: flex-start; }\n\n/* Label — 2px inset matches the Figma text-label frame */\n.tab__label {\n position: relative;\n padding: 0 var(--dimension-space-025);\n white-space: nowrap;\n}\n\n/* Notification dot — 20×20 icon-slot wrapper, dot circle inside */\n.tab__dot-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.tab__dot {\n width: var(--dimension-space-075);\n height: var(--dimension-space-075);\n border-radius: var(--dimension-radius-full, 9999px);\n background: var(--_dot);\n}\n\n/* Background context */\n.on-medium {\n --_hover-bg: var(--color-interaction-on-medium-background-hover);\n --_pressed-bg: var(--color-interaction-on-medium-background-pressed);\n}\n\n.on-bold {\n --_hover-bg: var(--color-interaction-on-bold-background-hover);\n --_pressed-bg: var(--color-interaction-on-bold-background-pressed);\n color: var(--color-foreground-on-bold-background-secondary);\n}\n\n.on-bold.tab--selected { color: var(--color-foreground-on-bold-background-primary); }\n\n.on-strong {\n --_hover-bg: var(--color-interaction-on-strong-background-hover);\n --_pressed-bg: var(--color-interaction-on-strong-background-pressed);\n color: var(--color-foreground-on-bold-background-secondary);\n}\n\n.on-strong.tab--selected { color: var(--color-foreground-on-bold-background-primary); }\n\n.on-always-dark {\n --_hover-bg: var(--color-always-dark-interaction-hover);\n --_pressed-bg: var(--color-always-dark-interaction-pressed);\n color: var(--color-always-dark-foreground-secondary);\n}\n\n.on-always-dark.tab--selected { color: var(--color-always-dark-foreground-primary); }\n","import { Component, Prop, Event, EventEmitter, Element, Listen, h, Host } from '@stencil/core';\n\nexport type TabBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'always-dark';\n\nexport interface TabItem {\n id: string;\n label: string;\n disabled?: boolean;\n /** id of the tabpanel this tab controls */\n panelId?: string;\n /** Show a notification dot (brand) on the tab — no count, matching panel-nav. */\n dot?: boolean;\n}\n\n@Component({\n tag: 'ds-tab-group',\n styleUrl: 'TabGroup.css',\n scoped: true,\n})\nexport class TabGroup {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop() tabs: TabItem[] = [];\n @Prop() background: TabBackground | undefined;\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | undefined;\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n @Prop() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n @Event() dsChange!: EventEmitter<string>;\n\n private selectTab(id: string) {\n this.value = id;\n this.dsChange.emit(id);\n }\n\n /**\n * Find the next non-disabled tab index relative to `from`, stepping by `step`.\n * Returns `from` unchanged if no other enabled tab exists.\n */\n private findEnabled(from: number, step: 1 | -1): number {\n const len = this.tabs.length;\n for (let n = 0; n < len; n++) {\n const i = (from + step * (n + 1) + len * (n + 1)) % len;\n if (!this.tabs[i]?.disabled) return i;\n }\n return from;\n }\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n if (!this.tabs.length) return;\n\n const currentIdx = this.tabs.findIndex(t => t.id === this.value);\n const isVertical = this.orientation === 'vertical';\n\n let nextIdx: number | null = null;\n\n if (!isVertical) {\n if (e.key === 'ArrowRight') {\n nextIdx = this.findEnabled(currentIdx, 1);\n } else if (e.key === 'ArrowLeft') {\n nextIdx = this.findEnabled(currentIdx, -1);\n }\n } else {\n if (e.key === 'ArrowDown') {\n nextIdx = this.findEnabled(currentIdx, 1);\n } else if (e.key === 'ArrowUp') {\n nextIdx = this.findEnabled(currentIdx, -1);\n }\n }\n\n if (e.key === 'Home') {\n const first = this.tabs.findIndex(t => !t.disabled);\n nextIdx = first === -1 ? null : first;\n } else if (e.key === 'End') {\n const lastEnabled = [...this.tabs].reverse().findIndex(t => !t.disabled);\n nextIdx = lastEnabled === -1 ? null : this.tabs.length - 1 - lastEnabled;\n }\n\n if (nextIdx !== null) {\n e.preventDefault();\n const next = this.tabs[nextIdx];\n this.selectTab(next.id);\n const btn = this.el.querySelector(`[data-tab-id=\"${next.id}\"]`) as HTMLElement | null;\n btn?.focus();\n }\n }\n\n private getBgClass(): string {\n if (!this.background || this.background === 'faint') return '';\n if (this.background === 'always-dark') return 'on-always-dark';\n return `on-${this.background}`;\n }\n\n render() {\n const bgClass = this.getBgClass();\n const isVertical = this.orientation === 'vertical';\n\n return (\n <Host class=\"tab-group-host\">\n <div\n role=\"tablist\"\n class={{ 'tab-list': true, 'tab-list--vertical': isVertical }}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-orientation={isVertical ? 'vertical' : undefined}\n >\n {this.tabs.map(tab => {\n const isSelected = tab.id === this.value;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n tab: true,\n 'tab--selected': isSelected,\n [bgClass]: !!bgClass,\n }}\n aria-selected={isSelected}\n aria-disabled={tab.disabled || undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.disabled}\n tabIndex={isSelected ? 0 : -1}\n onClick={() => !tab.disabled && this.selectTab(tab.id)}\n >\n <span class={`tab__label ${isSelected ? 'text-body-medium-emphasis' : 'text-body-medium'}`}>\n {tab.label}\n </span>\n {tab.dot && (\n <span class=\"tab__dot-wrap\" aria-hidden=\"true\">\n <span class=\"tab__dot\" />\n </span>\n )}\n </button>\n );\n })}\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 e,c as n,h as s,a as t,t as r}from"./index.js";import{d as i}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{p as o,H as e,c as n,h as s,a as t,t as r}from"./index.js";import{d as i}from"./p-CkBXHj0e.js";const a=()=>`.toggle-btn.sc-ds-toggle-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--dimension-radius-050);cursor:pointer;position:relative;transition:transform var(--effect-motion-short-2);height:var(--dimension-size-400);font-family:inherit;background:transparent;box-sizing:border-box;-webkit-user-select:none;user-select:none;--_hover-bg:var(--color-interaction-hover);--_pressed-bg:var(--color-interaction-pressed);--_border:var(--color-border-tertiary)}.toggle-btn.sc-ds-toggle-button:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-interaction-focus);outline-offset:var(--dimension-space-025)}.toggle-btn.sc-ds-toggle-button:hover:not(.inactive){background-color:var(--_hover-bg)}.toggle-btn.sc-ds-toggle-button:active:not(.inactive){background-color:var(--_pressed-bg);transform:scale(var(--dimension-scale-subtle))}.onMedium.sc-ds-toggle-button{--_hover-bg:var(--color-interaction-on-medium-background-hover);--_pressed-bg:var(--color-interaction-on-medium-background-pressed);--_border:var(--color-border-on-medium-background-tertiary)}.onBold.sc-ds-toggle-button{--_hover-bg:var(--color-interaction-on-bold-background-hover);--_pressed-bg:var(--color-interaction-on-bold-background-pressed);--_border:var(--color-border-on-bold-background-tertiary)}.onStrong.sc-ds-toggle-button{--_hover-bg:var(--color-interaction-on-strong-background-hover);--_pressed-bg:var(--color-interaction-on-strong-background-pressed);--_border:var(--color-border-on-strong-background-tertiary)}.onAlwaysDark.sc-ds-toggle-button{--_hover-bg:var(--color-always-dark-interaction-hover);--_pressed-bg:var(--color-always-dark-interaction-pressed);--_border:var(--color-always-dark-border-tertiary)}.elevationElevated.sc-ds-toggle-button{background-color:var(--color-background-primary);box-shadow:var(--effect-elevation-elevated-sm);color:var(--color-foreground-secondary);--_hover-bg:color-mix(in oklch, var(--color-background-primary) 90%, var(--color-foreground-primary));--_pressed-bg:color-mix(in oklch, var(--color-background-primary) 85%, var(--color-foreground-primary))}.elevationFlat.sc-ds-toggle-button{box-shadow:inset 0 0 0 1px var(--_border);color:var(--color-foreground-secondary)}.elevationNone.sc-ds-toggle-button{color:var(--color-foreground-secondary)}.elevationFloating.sc-ds-toggle-button{background-color:var(--color-background-primary);box-shadow:var(--effect-elevation-elevated-floating);color:var(--color-foreground-secondary);--_hover-bg:color-mix(in oklch, var(--color-background-primary) 90%, var(--color-foreground-primary));--_pressed-bg:color-mix(in oklch, var(--color-background-primary) 85%, var(--color-foreground-primary))}.onBold.elevationNone.sc-ds-toggle-button,.onBold.elevationFlat.sc-ds-toggle-button,.onStrong.elevationNone.sc-ds-toggle-button,.onStrong.elevationFlat.sc-ds-toggle-button{color:var(--color-foreground-on-bold-background-secondary)}.onAlwaysDark.elevationNone.sc-ds-toggle-button,.onAlwaysDark.elevationFlat.sc-ds-toggle-button{color:var(--color-always-dark-foreground-secondary)}.pressed.sc-ds-toggle-button{background-color:var(--color-background-faint-brand);color:var(--color-foreground-bold-brand)}.iconOnly.sc-ds-toggle-button{padding:0;width:var(--dimension-size-400);min-width:var(--dimension-size-400)}.labelOnly.sc-ds-toggle-button{padding:0 var(--dimension-space-100)}.iconAndLabel.sc-ds-toggle-button{padding:0 var(--dimension-space-100) 0 var(--dimension-space-075);gap:var(--dimension-space-025)}.sizeSM.sc-ds-toggle-button{height:var(--dimension-size-300)}.sizeSM.iconOnly.sc-ds-toggle-button{width:var(--dimension-size-300);min-width:var(--dimension-size-300)}.sizeSM.labelOnly.sc-ds-toggle-button{padding:0 var(--dimension-space-075)}.sizeSM.iconAndLabel.sc-ds-toggle-button{padding:0 var(--dimension-space-075) 0 var(--dimension-space-050);gap:0}.sizeXS.sc-ds-toggle-button{height:var(--dimension-size-200)}.sizeXS.iconOnly.sc-ds-toggle-button{width:var(--dimension-size-200);min-width:var(--dimension-size-200)}.sizeXS.labelOnly.sc-ds-toggle-button,.sizeXS.iconAndLabel.sc-ds-toggle-button{padding:0 var(--dimension-space-025);gap:0}.rounded.sc-ds-toggle-button{border-radius:var(--dimension-radius-half)}.rounded.labelOnly.sc-ds-toggle-button{padding-left:calc(var(--dimension-space-100) + var(--dimension-space-050));padding-right:calc(var(--dimension-space-100) + var(--dimension-space-050))}.rounded.iconAndLabel.sc-ds-toggle-button{padding-left:calc(var(--dimension-space-075) + var(--dimension-space-050));padding-right:calc(var(--dimension-space-100) + var(--dimension-space-050))}.rounded.sizeSM.labelOnly.sc-ds-toggle-button{padding-left:calc(var(--dimension-space-075) + var(--dimension-space-050));padding-right:calc(var(--dimension-space-075) + var(--dimension-space-050))}.rounded.sizeSM.iconAndLabel.sc-ds-toggle-button{padding-left:calc(var(--dimension-space-050) + var(--dimension-space-050));padding-right:calc(var(--dimension-space-075) + var(--dimension-space-050))}.rounded.iconOnly.sc-ds-toggle-button{width:var(--dimension-size-400);min-width:var(--dimension-size-400);padding:0}.rounded.sizeSM.iconOnly.sc-ds-toggle-button{width:var(--dimension-size-300);min-width:var(--dimension-size-300)}.rounded.sizeXS.iconOnly.sc-ds-toggle-button{width:var(--dimension-size-200);min-width:var(--dimension-size-200)}.inactive.sc-ds-toggle-button{opacity:0.5;cursor:not-allowed;pointer-events:none}.toggle-btn__icon.sc-ds-toggle-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:0}.toggle-btn__label.sc-ds-toggle-button{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}`;const d={md:"md",sm:"sm",xs:"xs"};const c={md:20,sm:16,xs:12};const l={md:"text-body-medium-emphasis",sm:"text-body-small-emphasis",xs:"text-caption-emphasis"};const g=o(class o extends e{constructor(o){super();if(o!==false){this.__registerHost()}this.dsChange=n(this,"dsChange");this.elevation="elevated";this.size="md";this.rounded=false;this.pressed=false;this.inactive=false;this.handleClick=()=>{if(this.inactive)return;this.dsChange.emit(!this.pressed)}}render(){const o=this.size;const e=d[o];const n=c[o];const r=l[o];const i=!!this.icon;const a=!!this.label;const g=i&&!a;const b=a&&!i;const u=i&&a;const v=this.background;const m=this.elevation.charAt(0).toUpperCase()+this.elevation.slice(1);const p={"toggle-btn":true,[`elevation${m}`]:true,sizeSM:o==="sm",sizeXS:o==="xs",rounded:this.rounded,inactive:this.inactive,pressed:this.pressed,iconOnly:g,labelOnly:b,iconAndLabel:u,onMedium:v==="medium",onBold:v==="bold",onStrong:v==="strong",onAlwaysDark:v==="always-dark"};return s(t,{key:"f7b99f3dc5230052f69a6381f17b3737f2a6ee54"},s("button",{key:"92b9964ed2828871a6e7c27f36177c2418b01cd6",type:"button",class:p,disabled:this.inactive,"aria-label":this.ariaLabel??this.label??"toggle","aria-pressed":this.pressed,onClick:this.handleClick},i&&s("span",{key:"138b709f8b2d1e77e92a8dd5692804a4f1bc5b46",class:"toggle-btn__icon",style:{fontSize:`${n}px`}},s("ds-icon",{key:"656c9a0892e1cd2c69212657a198ba72a9c06dd3",name:this.icon,size:e})),a&&s("span",{key:"5cc2448462e7d03747723b20d4159f23ede404b0",class:`toggle-btn__label ${r}`},this.label)))}static get style(){return a()}},[2,"ds-toggle-button",{elevation:[1],label:[1],icon:[1],size:[1],rounded:[4],background:[1],pressed:[1028],inactive:[4],ariaLabel:[1,"aria-label"]}]);function b(){if(typeof customElements==="undefined"){return}const o=["ds-toggle-button","ds-icon"];o.forEach((o=>{switch(o){case"ds-toggle-button":if(!customElements.get(r(o))){customElements.define(r(o),g)}break;case"ds-icon":if(!customElements.get(r(o))){i()}break}}))}b();export{g as T,b as d};
|
|
2
|
+
//# sourceMappingURL=p-M_LSU5Uu.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
+
export type BarNavBackground = 'primary' | 'secondary' | 'transparent' | 'translucent';
|
|
3
|
+
export interface BarNavTab {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/** Notification dot on this tab. */
|
|
8
|
+
dot?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface BarNavActionItem {
|
|
11
|
+
id: string;
|
|
12
|
+
/** Icon name for <ds-icon>. */
|
|
13
|
+
icon: string;
|
|
14
|
+
/** Whether this action button is currently pressed/active. */
|
|
15
|
+
selected?: boolean;
|
|
16
|
+
/** Show a notification dot. */
|
|
17
|
+
dot?: boolean;
|
|
18
|
+
inactive?: boolean;
|
|
19
|
+
ariaLabel?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class BarNav {
|
|
22
|
+
/**
|
|
23
|
+
* Tab items for the left section.
|
|
24
|
+
* Set via JS property: `el.tabs = [...]`
|
|
25
|
+
*/
|
|
26
|
+
tabs: BarNavTab[];
|
|
27
|
+
/** ID of the currently active tab. */
|
|
28
|
+
value: string;
|
|
29
|
+
/**
|
|
30
|
+
* Action items rendered in the right section.
|
|
31
|
+
* Set via JS property: `el.actions = [...]`
|
|
32
|
+
*/
|
|
33
|
+
actions: BarNavActionItem[];
|
|
34
|
+
/**
|
|
35
|
+
* Fallback heading shown when no tabs are provided.
|
|
36
|
+
* When tabs are present the heading is hidden.
|
|
37
|
+
*/
|
|
38
|
+
heading: string | undefined;
|
|
39
|
+
/** Surface background variant. */
|
|
40
|
+
background: BarNavBackground;
|
|
41
|
+
/** Emitted when the active tab changes. Detail = tab id. */
|
|
42
|
+
dsTabChange: EventEmitter<string>;
|
|
43
|
+
/** Emitted when an action button is toggled. Detail = { id, selected }. */
|
|
44
|
+
dsActionChange: EventEmitter<{
|
|
45
|
+
id: string;
|
|
46
|
+
selected: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
private handleTabChange;
|
|
49
|
+
private handleActionChange;
|
|
50
|
+
render(): any;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=BarNav.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { EventEmitter } from '../../stencil-public-runtime';
|
|
2
|
+
export type BarNavActionBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'always-dark';
|
|
3
|
+
export declare class BarNavAction {
|
|
4
|
+
/** Icon name passed to <ds-icon>. */
|
|
5
|
+
icon: string;
|
|
6
|
+
/** Controlled toggle/selected state. */
|
|
7
|
+
selected: boolean;
|
|
8
|
+
/** Show a notification dot (brand colour) at the top-right of the icon. */
|
|
9
|
+
dot: boolean;
|
|
10
|
+
/** Disables interaction. */
|
|
11
|
+
inactive: boolean;
|
|
12
|
+
ariaLabel: string;
|
|
13
|
+
/** Parent surface context — adjusts hover/press colours for coloured backgrounds. */
|
|
14
|
+
background: BarNavActionBackground | undefined;
|
|
15
|
+
/** Emits the new selected value (!selected) on click. */
|
|
16
|
+
dsChange: EventEmitter<boolean>;
|
|
17
|
+
private handleClick;
|
|
18
|
+
render(): any;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=BarNavAction.d.ts.map
|
|
@@ -6,8 +6,8 @@ export interface TabItem {
|
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
/** id of the tabpanel this tab controls */
|
|
8
8
|
panelId?: string;
|
|
9
|
-
/**
|
|
10
|
-
|
|
9
|
+
/** Show a notification dot (brand) on the tab — no count, matching panel-nav. */
|
|
10
|
+
dot?: boolean;
|
|
11
11
|
}
|
|
12
12
|
export declare class TabGroup {
|
|
13
13
|
el: HTMLElement;
|
|
@@ -17,16 +17,7 @@ export declare class TabGroup {
|
|
|
17
17
|
ariaLabel: string | undefined;
|
|
18
18
|
ariaLabelledby: string | undefined;
|
|
19
19
|
orientation: 'horizontal' | 'vertical';
|
|
20
|
-
private indicatorOffset;
|
|
21
|
-
private indicatorSize;
|
|
22
20
|
dsChange: EventEmitter<string>;
|
|
23
|
-
private resizeObserver;
|
|
24
|
-
componentDidLoad(): void;
|
|
25
|
-
disconnectedCallback(): void;
|
|
26
|
-
onValueChange(): void;
|
|
27
|
-
onTabsChange(): void;
|
|
28
|
-
onOrientationChange(): void;
|
|
29
|
-
private updateIndicator;
|
|
30
21
|
private selectTab;
|
|
31
22
|
/**
|
|
32
23
|
* Find the next non-disabled tab index relative to `from`, stepping by `step`.
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
|
|
8
8
|
import { AccordionItemData } from "./components/Accordion/Accordion";
|
|
9
9
|
import { BannerContrast, BannerIntent } from "./components/Banner/Banner";
|
|
10
|
+
import { BarNavActionItem, BarNavBackground, BarNavTab } from "./components/BarNav/BarNav";
|
|
11
|
+
import { BarNavActionBackground } from "./components/BarNavAction/BarNavAction";
|
|
10
12
|
import { BreadcrumbItem } from "./components/Breadcrumb/Breadcrumb";
|
|
11
13
|
import { ButtonBackground, ButtonContrast, ButtonElevation, ButtonIntent, ButtonSize, ButtonVariant } from "./components/Button/Button";
|
|
12
14
|
import { ButtonGroupElevation, ButtonGroupItem, ButtonGroupSize } from "./components/ButtonGroup/ButtonGroup";
|
|
@@ -37,6 +39,8 @@ import { ToggleGroupBackground, ToggleGroupElevation, ToggleGroupItem, ToggleGro
|
|
|
37
39
|
import { TooltipAlign, TooltipSide } from "./components/Tooltip/Tooltip";
|
|
38
40
|
export { AccordionItemData } from "./components/Accordion/Accordion";
|
|
39
41
|
export { BannerContrast, BannerIntent } from "./components/Banner/Banner";
|
|
42
|
+
export { BarNavActionItem, BarNavBackground, BarNavTab } from "./components/BarNav/BarNav";
|
|
43
|
+
export { BarNavActionBackground } from "./components/BarNavAction/BarNavAction";
|
|
40
44
|
export { BreadcrumbItem } from "./components/Breadcrumb/Breadcrumb";
|
|
41
45
|
export { ButtonBackground, ButtonContrast, ButtonElevation, ButtonIntent, ButtonSize, ButtonVariant } from "./components/Button/Button";
|
|
42
46
|
export { ButtonGroupElevation, ButtonGroupItem, ButtonGroupSize } from "./components/ButtonGroup/ButtonGroup";
|
|
@@ -127,6 +131,62 @@ export namespace Components {
|
|
|
127
131
|
*/
|
|
128
132
|
"showDismiss": boolean;
|
|
129
133
|
}
|
|
134
|
+
interface DsBarNav {
|
|
135
|
+
/**
|
|
136
|
+
* Action items rendered in the right section. Set via JS property: `el.actions = [...]`
|
|
137
|
+
* @default []
|
|
138
|
+
*/
|
|
139
|
+
"actions": BarNavActionItem[];
|
|
140
|
+
/**
|
|
141
|
+
* Surface background variant.
|
|
142
|
+
* @default 'secondary'
|
|
143
|
+
*/
|
|
144
|
+
"background": BarNavBackground;
|
|
145
|
+
/**
|
|
146
|
+
* Fallback heading shown when no tabs are provided. When tabs are present the heading is hidden.
|
|
147
|
+
*/
|
|
148
|
+
"heading": string | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Tab items for the left section. Set via JS property: `el.tabs = [...]`
|
|
151
|
+
* @default []
|
|
152
|
+
*/
|
|
153
|
+
"tabs": BarNavTab[];
|
|
154
|
+
/**
|
|
155
|
+
* ID of the currently active tab.
|
|
156
|
+
* @default ''
|
|
157
|
+
*/
|
|
158
|
+
"value": string;
|
|
159
|
+
}
|
|
160
|
+
interface DsBarNavAction {
|
|
161
|
+
/**
|
|
162
|
+
* @default 'action'
|
|
163
|
+
*/
|
|
164
|
+
"ariaLabel": string;
|
|
165
|
+
/**
|
|
166
|
+
* Parent surface context — adjusts hover/press colours for coloured backgrounds.
|
|
167
|
+
*/
|
|
168
|
+
"background": BarNavActionBackground | undefined;
|
|
169
|
+
/**
|
|
170
|
+
* Show a notification dot (brand colour) at the top-right of the icon.
|
|
171
|
+
* @default false
|
|
172
|
+
*/
|
|
173
|
+
"dot": boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Icon name passed to <ds-icon>.
|
|
176
|
+
* @default ''
|
|
177
|
+
*/
|
|
178
|
+
"icon": string;
|
|
179
|
+
/**
|
|
180
|
+
* Disables interaction.
|
|
181
|
+
* @default false
|
|
182
|
+
*/
|
|
183
|
+
"inactive": boolean;
|
|
184
|
+
/**
|
|
185
|
+
* Controlled toggle/selected state.
|
|
186
|
+
* @default false
|
|
187
|
+
*/
|
|
188
|
+
"selected": boolean;
|
|
189
|
+
}
|
|
130
190
|
interface DsBreadcrumb {
|
|
131
191
|
/**
|
|
132
192
|
* @default []
|
|
@@ -887,6 +947,14 @@ export interface DsBannerCustomEvent<T> extends CustomEvent<T> {
|
|
|
887
947
|
detail: T;
|
|
888
948
|
target: HTMLDsBannerElement;
|
|
889
949
|
}
|
|
950
|
+
export interface DsBarNavCustomEvent<T> extends CustomEvent<T> {
|
|
951
|
+
detail: T;
|
|
952
|
+
target: HTMLDsBarNavElement;
|
|
953
|
+
}
|
|
954
|
+
export interface DsBarNavActionCustomEvent<T> extends CustomEvent<T> {
|
|
955
|
+
detail: T;
|
|
956
|
+
target: HTMLDsBarNavActionElement;
|
|
957
|
+
}
|
|
890
958
|
export interface DsBreadcrumbCustomEvent<T> extends CustomEvent<T> {
|
|
891
959
|
detail: T;
|
|
892
960
|
target: HTMLDsBreadcrumbElement;
|
|
@@ -1004,6 +1072,41 @@ declare global {
|
|
|
1004
1072
|
prototype: HTMLDsBannerElement;
|
|
1005
1073
|
new (): HTMLDsBannerElement;
|
|
1006
1074
|
};
|
|
1075
|
+
interface HTMLDsBarNavElementEventMap {
|
|
1076
|
+
"dsTabChange": string;
|
|
1077
|
+
"dsActionChange": { id: string; selected: boolean };
|
|
1078
|
+
}
|
|
1079
|
+
interface HTMLDsBarNavElement extends Components.DsBarNav, HTMLStencilElement {
|
|
1080
|
+
addEventListener<K extends keyof HTMLDsBarNavElementEventMap>(type: K, listener: (this: HTMLDsBarNavElement, ev: DsBarNavCustomEvent<HTMLDsBarNavElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1081
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1082
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1083
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
1084
|
+
removeEventListener<K extends keyof HTMLDsBarNavElementEventMap>(type: K, listener: (this: HTMLDsBarNavElement, ev: DsBarNavCustomEvent<HTMLDsBarNavElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
1085
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1086
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1087
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
1088
|
+
}
|
|
1089
|
+
var HTMLDsBarNavElement: {
|
|
1090
|
+
prototype: HTMLDsBarNavElement;
|
|
1091
|
+
new (): HTMLDsBarNavElement;
|
|
1092
|
+
};
|
|
1093
|
+
interface HTMLDsBarNavActionElementEventMap {
|
|
1094
|
+
"dsChange": boolean;
|
|
1095
|
+
}
|
|
1096
|
+
interface HTMLDsBarNavActionElement extends Components.DsBarNavAction, HTMLStencilElement {
|
|
1097
|
+
addEventListener<K extends keyof HTMLDsBarNavActionElementEventMap>(type: K, listener: (this: HTMLDsBarNavActionElement, ev: DsBarNavActionCustomEvent<HTMLDsBarNavActionElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1098
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1099
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
1100
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
1101
|
+
removeEventListener<K extends keyof HTMLDsBarNavActionElementEventMap>(type: K, listener: (this: HTMLDsBarNavActionElement, ev: DsBarNavActionCustomEvent<HTMLDsBarNavActionElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
1102
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1103
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
1104
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
1105
|
+
}
|
|
1106
|
+
var HTMLDsBarNavActionElement: {
|
|
1107
|
+
prototype: HTMLDsBarNavActionElement;
|
|
1108
|
+
new (): HTMLDsBarNavActionElement;
|
|
1109
|
+
};
|
|
1007
1110
|
interface HTMLDsBreadcrumbElementEventMap {
|
|
1008
1111
|
"dsNavigate": { item: BreadcrumbItem; index: number };
|
|
1009
1112
|
}
|
|
@@ -1437,6 +1540,8 @@ declare global {
|
|
|
1437
1540
|
"ds-accordion": HTMLDsAccordionElement;
|
|
1438
1541
|
"ds-badge": HTMLDsBadgeElement;
|
|
1439
1542
|
"ds-banner": HTMLDsBannerElement;
|
|
1543
|
+
"ds-bar-nav": HTMLDsBarNavElement;
|
|
1544
|
+
"ds-bar-nav-action": HTMLDsBarNavActionElement;
|
|
1440
1545
|
"ds-breadcrumb": HTMLDsBreadcrumbElement;
|
|
1441
1546
|
"ds-button": HTMLDsButtonElement;
|
|
1442
1547
|
"ds-button-group": HTMLDsButtonGroupElement;
|
|
@@ -1539,6 +1644,74 @@ declare namespace LocalJSX {
|
|
|
1539
1644
|
*/
|
|
1540
1645
|
"showDismiss"?: boolean;
|
|
1541
1646
|
}
|
|
1647
|
+
interface DsBarNav {
|
|
1648
|
+
/**
|
|
1649
|
+
* Action items rendered in the right section. Set via JS property: `el.actions = [...]`
|
|
1650
|
+
* @default []
|
|
1651
|
+
*/
|
|
1652
|
+
"actions"?: BarNavActionItem[];
|
|
1653
|
+
/**
|
|
1654
|
+
* Surface background variant.
|
|
1655
|
+
* @default 'secondary'
|
|
1656
|
+
*/
|
|
1657
|
+
"background"?: BarNavBackground;
|
|
1658
|
+
/**
|
|
1659
|
+
* Fallback heading shown when no tabs are provided. When tabs are present the heading is hidden.
|
|
1660
|
+
*/
|
|
1661
|
+
"heading"?: string | undefined;
|
|
1662
|
+
/**
|
|
1663
|
+
* Emitted when an action button is toggled. Detail = { id, selected }.
|
|
1664
|
+
*/
|
|
1665
|
+
"onDsActionChange"?: (event: DsBarNavCustomEvent<{ id: string; selected: boolean }>) => void;
|
|
1666
|
+
/**
|
|
1667
|
+
* Emitted when the active tab changes. Detail = tab id.
|
|
1668
|
+
*/
|
|
1669
|
+
"onDsTabChange"?: (event: DsBarNavCustomEvent<string>) => void;
|
|
1670
|
+
/**
|
|
1671
|
+
* Tab items for the left section. Set via JS property: `el.tabs = [...]`
|
|
1672
|
+
* @default []
|
|
1673
|
+
*/
|
|
1674
|
+
"tabs"?: BarNavTab[];
|
|
1675
|
+
/**
|
|
1676
|
+
* ID of the currently active tab.
|
|
1677
|
+
* @default ''
|
|
1678
|
+
*/
|
|
1679
|
+
"value"?: string;
|
|
1680
|
+
}
|
|
1681
|
+
interface DsBarNavAction {
|
|
1682
|
+
/**
|
|
1683
|
+
* @default 'action'
|
|
1684
|
+
*/
|
|
1685
|
+
"ariaLabel"?: string;
|
|
1686
|
+
/**
|
|
1687
|
+
* Parent surface context — adjusts hover/press colours for coloured backgrounds.
|
|
1688
|
+
*/
|
|
1689
|
+
"background"?: BarNavActionBackground | undefined;
|
|
1690
|
+
/**
|
|
1691
|
+
* Show a notification dot (brand colour) at the top-right of the icon.
|
|
1692
|
+
* @default false
|
|
1693
|
+
*/
|
|
1694
|
+
"dot"?: boolean;
|
|
1695
|
+
/**
|
|
1696
|
+
* Icon name passed to <ds-icon>.
|
|
1697
|
+
* @default ''
|
|
1698
|
+
*/
|
|
1699
|
+
"icon"?: string;
|
|
1700
|
+
/**
|
|
1701
|
+
* Disables interaction.
|
|
1702
|
+
* @default false
|
|
1703
|
+
*/
|
|
1704
|
+
"inactive"?: boolean;
|
|
1705
|
+
/**
|
|
1706
|
+
* Emits the new selected value (!selected) on click.
|
|
1707
|
+
*/
|
|
1708
|
+
"onDsChange"?: (event: DsBarNavActionCustomEvent<boolean>) => void;
|
|
1709
|
+
/**
|
|
1710
|
+
* Controlled toggle/selected state.
|
|
1711
|
+
* @default false
|
|
1712
|
+
*/
|
|
1713
|
+
"selected"?: boolean;
|
|
1714
|
+
}
|
|
1542
1715
|
interface DsBreadcrumb {
|
|
1543
1716
|
/**
|
|
1544
1717
|
* @default []
|
|
@@ -2368,6 +2541,19 @@ declare namespace LocalJSX {
|
|
|
2368
2541
|
"showDismiss": boolean;
|
|
2369
2542
|
"dismissLabel": string;
|
|
2370
2543
|
}
|
|
2544
|
+
interface DsBarNavAttributes {
|
|
2545
|
+
"value": string;
|
|
2546
|
+
"heading": string | undefined;
|
|
2547
|
+
"background": BarNavBackground;
|
|
2548
|
+
}
|
|
2549
|
+
interface DsBarNavActionAttributes {
|
|
2550
|
+
"icon": string;
|
|
2551
|
+
"selected": boolean;
|
|
2552
|
+
"dot": boolean;
|
|
2553
|
+
"inactive": boolean;
|
|
2554
|
+
"ariaLabel": string;
|
|
2555
|
+
"background": BarNavActionBackground | undefined;
|
|
2556
|
+
}
|
|
2371
2557
|
interface DsBreadcrumbAttributes {
|
|
2372
2558
|
"separator": string;
|
|
2373
2559
|
}
|
|
@@ -2621,6 +2807,8 @@ declare namespace LocalJSX {
|
|
|
2621
2807
|
"ds-accordion": Omit<DsAccordion, keyof DsAccordionAttributes> & { [K in keyof DsAccordion & keyof DsAccordionAttributes]?: DsAccordion[K] } & { [K in keyof DsAccordion & keyof DsAccordionAttributes as `attr:${K}`]?: DsAccordionAttributes[K] } & { [K in keyof DsAccordion & keyof DsAccordionAttributes as `prop:${K}`]?: DsAccordion[K] };
|
|
2622
2808
|
"ds-badge": Omit<DsBadge, keyof DsBadgeAttributes> & { [K in keyof DsBadge & keyof DsBadgeAttributes]?: DsBadge[K] } & { [K in keyof DsBadge & keyof DsBadgeAttributes as `attr:${K}`]?: DsBadgeAttributes[K] } & { [K in keyof DsBadge & keyof DsBadgeAttributes as `prop:${K}`]?: DsBadge[K] };
|
|
2623
2809
|
"ds-banner": Omit<DsBanner, keyof DsBannerAttributes> & { [K in keyof DsBanner & keyof DsBannerAttributes]?: DsBanner[K] } & { [K in keyof DsBanner & keyof DsBannerAttributes as `attr:${K}`]?: DsBannerAttributes[K] } & { [K in keyof DsBanner & keyof DsBannerAttributes as `prop:${K}`]?: DsBanner[K] };
|
|
2810
|
+
"ds-bar-nav": Omit<DsBarNav, keyof DsBarNavAttributes> & { [K in keyof DsBarNav & keyof DsBarNavAttributes]?: DsBarNav[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `attr:${K}`]?: DsBarNavAttributes[K] } & { [K in keyof DsBarNav & keyof DsBarNavAttributes as `prop:${K}`]?: DsBarNav[K] };
|
|
2811
|
+
"ds-bar-nav-action": Omit<DsBarNavAction, keyof DsBarNavActionAttributes> & { [K in keyof DsBarNavAction & keyof DsBarNavActionAttributes]?: DsBarNavAction[K] } & { [K in keyof DsBarNavAction & keyof DsBarNavActionAttributes as `attr:${K}`]?: DsBarNavActionAttributes[K] } & { [K in keyof DsBarNavAction & keyof DsBarNavActionAttributes as `prop:${K}`]?: DsBarNavAction[K] };
|
|
2624
2812
|
"ds-breadcrumb": Omit<DsBreadcrumb, keyof DsBreadcrumbAttributes> & { [K in keyof DsBreadcrumb & keyof DsBreadcrumbAttributes]?: DsBreadcrumb[K] } & { [K in keyof DsBreadcrumb & keyof DsBreadcrumbAttributes as `attr:${K}`]?: DsBreadcrumbAttributes[K] } & { [K in keyof DsBreadcrumb & keyof DsBreadcrumbAttributes as `prop:${K}`]?: DsBreadcrumb[K] };
|
|
2625
2813
|
"ds-button": Omit<DsButton, keyof DsButtonAttributes> & { [K in keyof DsButton & keyof DsButtonAttributes]?: DsButton[K] } & { [K in keyof DsButton & keyof DsButtonAttributes as `attr:${K}`]?: DsButtonAttributes[K] } & { [K in keyof DsButton & keyof DsButtonAttributes as `prop:${K}`]?: DsButton[K] };
|
|
2626
2814
|
"ds-button-group": Omit<DsButtonGroup, keyof DsButtonGroupAttributes> & { [K in keyof DsButtonGroup & keyof DsButtonGroupAttributes]?: DsButtonGroup[K] } & { [K in keyof DsButtonGroup & keyof DsButtonGroupAttributes as `attr:${K}`]?: DsButtonGroupAttributes[K] } & { [K in keyof DsButtonGroup & keyof DsButtonGroupAttributes as `prop:${K}`]?: DsButtonGroup[K] };
|
|
@@ -2664,6 +2852,8 @@ declare module "@stencil/core" {
|
|
|
2664
2852
|
"ds-accordion": LocalJSX.IntrinsicElements["ds-accordion"] & JSXBase.HTMLAttributes<HTMLDsAccordionElement>;
|
|
2665
2853
|
"ds-badge": LocalJSX.IntrinsicElements["ds-badge"] & JSXBase.HTMLAttributes<HTMLDsBadgeElement>;
|
|
2666
2854
|
"ds-banner": LocalJSX.IntrinsicElements["ds-banner"] & JSXBase.HTMLAttributes<HTMLDsBannerElement>;
|
|
2855
|
+
"ds-bar-nav": LocalJSX.IntrinsicElements["ds-bar-nav"] & JSXBase.HTMLAttributes<HTMLDsBarNavElement>;
|
|
2856
|
+
"ds-bar-nav-action": LocalJSX.IntrinsicElements["ds-bar-nav-action"] & JSXBase.HTMLAttributes<HTMLDsBarNavActionElement>;
|
|
2667
2857
|
"ds-breadcrumb": LocalJSX.IntrinsicElements["ds-breadcrumb"] & JSXBase.HTMLAttributes<HTMLDsBreadcrumbElement>;
|
|
2668
2858
|
"ds-button": LocalJSX.IntrinsicElements["ds-button"] & JSXBase.HTMLAttributes<HTMLDsButtonElement>;
|
|
2669
2859
|
"ds-button-group": LocalJSX.IntrinsicElements["ds-button-group"] & JSXBase.HTMLAttributes<HTMLDsButtonGroupElement>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ds-mo/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "CompoMo — composable web components styled with TokoMo design tokens",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"zod": "^4.4.3"
|
|
81
81
|
},
|
|
82
82
|
"engines": {
|
|
83
|
-
"node": "
|
|
83
|
+
"node": "^20.19.0 || >=22.12.0"
|
|
84
84
|
},
|
|
85
85
|
"sideEffects": [
|
|
86
86
|
"**/*.css",
|
package/src/angular/index.ts
CHANGED
package/src/angular/proxies.ts
CHANGED
|
@@ -86,6 +86,71 @@ export declare interface DsBanner extends Components.DsBanner {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
|
|
89
|
+
@ProxyCmp({
|
|
90
|
+
inputs: ['actions', 'background', 'heading', 'tabs', 'value']
|
|
91
|
+
})
|
|
92
|
+
@Component({
|
|
93
|
+
selector: 'ds-bar-nav',
|
|
94
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
95
|
+
template: '<ng-content></ng-content>',
|
|
96
|
+
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
97
|
+
inputs: ['actions', 'background', 'heading', 'tabs', 'value'],
|
|
98
|
+
outputs: ['dsTabChange', 'dsActionChange'],
|
|
99
|
+
standalone: false
|
|
100
|
+
})
|
|
101
|
+
export class DsBarNav {
|
|
102
|
+
protected el: HTMLDsBarNavElement;
|
|
103
|
+
@Output() dsTabChange = new EventEmitter<CustomEvent<string>>();
|
|
104
|
+
@Output() dsActionChange = new EventEmitter<CustomEvent<{ id: string; selected: boolean }>>();
|
|
105
|
+
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
|
|
106
|
+
c.detach();
|
|
107
|
+
this.el = r.nativeElement;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
export declare interface DsBarNav extends Components.DsBarNav {
|
|
113
|
+
/**
|
|
114
|
+
* Emitted when the active tab changes. Detail = tab id.
|
|
115
|
+
*/
|
|
116
|
+
dsTabChange: EventEmitter<CustomEvent<string>>;
|
|
117
|
+
/**
|
|
118
|
+
* Emitted when an action button is toggled. Detail = { id, selected }.
|
|
119
|
+
*/
|
|
120
|
+
dsActionChange: EventEmitter<CustomEvent<{ id: string; selected: boolean }>>;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
@ProxyCmp({
|
|
125
|
+
inputs: ['ariaLabel', 'background', 'dot', 'icon', 'inactive', 'selected']
|
|
126
|
+
})
|
|
127
|
+
@Component({
|
|
128
|
+
selector: 'ds-bar-nav-action',
|
|
129
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
130
|
+
template: '<ng-content></ng-content>',
|
|
131
|
+
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
132
|
+
inputs: ['ariaLabel', 'background', 'dot', 'icon', 'inactive', 'selected'],
|
|
133
|
+
outputs: ['dsChange'],
|
|
134
|
+
standalone: false
|
|
135
|
+
})
|
|
136
|
+
export class DsBarNavAction {
|
|
137
|
+
protected el: HTMLDsBarNavActionElement;
|
|
138
|
+
@Output() dsChange = new EventEmitter<CustomEvent<boolean>>();
|
|
139
|
+
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
|
|
140
|
+
c.detach();
|
|
141
|
+
this.el = r.nativeElement;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
export declare interface DsBarNavAction extends Components.DsBarNavAction {
|
|
147
|
+
/**
|
|
148
|
+
* Emits the new selected value (!selected) on click.
|
|
149
|
+
*/
|
|
150
|
+
dsChange: EventEmitter<CustomEvent<boolean>>;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
|
|
89
154
|
@ProxyCmp({
|
|
90
155
|
inputs: ['items', 'separator']
|
|
91
156
|
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|