@ds-mo/ui 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +1 -1
  2. package/dist/.build-stamp +1 -1
  3. package/dist/components/ds-bar-nav.js +1 -1
  4. package/dist/components/ds-bar-nav.js.map +1 -1
  5. package/dist/components/ds-breadcrumb.js +1 -1
  6. package/dist/components/ds-button-group.js +1 -1
  7. package/dist/components/ds-button-group.js.map +1 -1
  8. package/dist/components/ds-button-unfilled-icon.d.ts +11 -0
  9. package/dist/components/ds-button-unfilled-icon.js +2 -0
  10. package/dist/components/ds-button.js +1 -1
  11. package/dist/components/ds-checkbox.js +1 -1
  12. package/dist/components/ds-field.js +1 -1
  13. package/dist/components/ds-menu.js +1 -1
  14. package/dist/components/ds-panel-nav.js +1 -1
  15. package/dist/components/ds-panel-nav.js.map +1 -1
  16. package/dist/components/ds-panel-tools.js +1 -1
  17. package/dist/components/ds-panel-tools.js.map +1 -1
  18. package/dist/components/ds-select.js +1 -1
  19. package/dist/components/ds-slider.js +1 -1
  20. package/dist/components/ds-tab-group-nav.js +1 -1
  21. package/dist/components/ds-tab-group.js +1 -1
  22. package/dist/components/ds-tab-group.js.map +1 -1
  23. package/dist/components/ds-toggle.js +1 -1
  24. package/dist/components/{p-CsO880L-.js → p-CD3yg7ue.js} +2 -2
  25. package/dist/components/p-CSc44rQs.js +2 -0
  26. package/dist/components/p-CSc44rQs.js.map +1 -0
  27. package/dist/components/p-CZpCmCiq.js +2 -0
  28. package/dist/components/p-CZpCmCiq.js.map +1 -0
  29. package/dist/components/p-YzIqPOqL.js +2 -0
  30. package/dist/components/p-YzIqPOqL.js.map +1 -0
  31. package/dist/types/components/BarNav/BarNav.d.ts +8 -7
  32. package/dist/types/components/BarNav/bar-nav-tabs-menu-utils.d.ts +3 -0
  33. package/dist/types/components/BarNav/bar-nav-types.d.ts +0 -11
  34. package/dist/types/components/BarNav/index.d.ts +1 -1
  35. package/dist/types/components/ButtonUnfilledIcon/ButtonUnfilledIcon.d.ts +33 -0
  36. package/dist/types/components/ButtonUnfilledIcon/index.d.ts +2 -0
  37. package/dist/types/components/Menu/Menu.d.ts +3 -0
  38. package/dist/types/components.d.ts +154 -98
  39. package/package.json +1 -1
  40. package/src/angular/index.ts +1 -1
  41. package/src/angular/proxies.ts +34 -32
  42. package/src/react/components.ts +1 -1
  43. package/src/react/ds-button-unfilled-icon.ts +33 -0
  44. package/src/wc/components/BarNav/BarNav.tsx +126 -133
  45. package/src/wc/components/BarNav/bar-nav-tabs-menu-utils.ts +55 -0
  46. package/src/wc/components/BarNav/bar-nav-types.ts +0 -12
  47. package/src/wc/components/BarNav/index.ts +1 -1
  48. package/src/wc/components/ButtonUnfilledIcon/ButtonUnfilledIcon.tsx +113 -0
  49. package/src/wc/components/ButtonUnfilledIcon/index.ts +1 -0
  50. package/src/wc/components/Menu/Menu.tsx +18 -7
  51. package/src/wc/components/PanelNav/PanelNav.tsx +12 -9
  52. package/src/wc/components/PanelTools/PanelTools.tsx +4 -2
  53. package/src/wc/components/TabGroup/TabGroup.tsx +1 -0
  54. package/src/wc/components/TabGroupNav/TabGroupNav.tsx +1 -0
  55. package/src/wc/components.d.ts +154 -98
  56. package/src/wc/utils/focus-ring.css +33 -0
  57. package/dist/components/ds-bar-nav-action.d.ts +0 -11
  58. package/dist/components/ds-bar-nav-action.js +0 -2
  59. package/dist/components/p-CCZFMcLe.js +0 -2
  60. package/dist/components/p-CCZFMcLe.js.map +0 -1
  61. package/dist/components/p-CuuuDjJJ.js +0 -2
  62. package/dist/components/p-CuuuDjJJ.js.map +0 -1
  63. package/dist/components/p-DlsexsFg.js +0 -2
  64. package/dist/components/p-DlsexsFg.js.map +0 -1
  65. package/dist/types/components/BarNavAction/BarNavAction.d.ts +0 -21
  66. package/dist/types/components/BarNavAction/index.d.ts +0 -2
  67. package/src/react/ds-bar-nav-action.ts +0 -27
  68. package/src/wc/components/BarNavAction/BarNavAction.tsx +0 -78
  69. package/src/wc/components/BarNavAction/index.ts +0 -1
  70. /package/dist/components/{ds-bar-nav-action.js.map → ds-button-unfilled-icon.js.map} +0 -0
  71. /package/dist/components/{p-CsO880L-.js.map → p-CD3yg7ue.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["tabGroupNavCss","TabGroupNav","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","value","tabs","orientation","selectableTabs","getSelectableTabs","selectTab","id","options","dsChange","emit","focus","focusTab","btn","el","querySelector","preventScroll","onValueChange","next","prev","undefined","requestAnimationFrame","active","document","activeElement","contains","activeId","getAttribute","nextTab","blur","findEnabled","from","step","len","length","n","i","disabled","handleKeyDown","e","currentIdx","findIndex","t","isVertical","nextIdx","key","first","lastEnabled","reverse","preventDefault","getBgClass","background","render","bgClass","isNavigation","h","Host","class","role","ariaLabel","ariaLabelledby","map","tab","index","isTabDivider","isSelected","type","panelId","tabIndex","onClick","tab__label","dot","label","variant"],"sources":["src/wc/components/TabGroupNav/TabGroupNav.css?tag=ds-tab-group-nav&encapsulation=scoped","src/wc/components/TabGroupNav/TabGroupNav.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 --_dot-ring: var(--color-background-secondary);\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: none;\n}\n\n.tab:hover::after { background: var(--_hover-bg); transition: none; }\n.tab:active::after { background: var(--_pressed-bg); transition: none; }\n\n/* Focus ring only — no persistent hover fill from keyboard focus */\n.tab:focus-visible:not(:hover):not(:active)::after {\n background: transparent;\n}\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 — dot anchors top-right like BarNav action icon zone */\n.tab__label {\n position: relative;\n display: inline-flex;\n align-items: center;\n padding: 0 var(--dimension-space-025);\n white-space: nowrap;\n}\n\n/* Clearance for top-right dot — slightly less than space-025 + space-075 */\n.tab__label--dot {\n padding-right: calc(var(--dimension-space-025) + var(--dimension-space-050));\n}\n\n/* Notification dot — top-right corner of the label zone */\n.tab__dot {\n position: absolute;\n top: 0;\n right: 0;\n pointer-events: none;\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 --_dot-ring: var(--color-background-medium-neutral);\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 --_dot-ring: var(--color-background-bold-neutral);\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 --_dot-ring: var(--color-background-strong-neutral);\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 --_dot-ring: var(--color-always-dark-background);\n color: var(--color-always-dark-foreground-secondary);\n}\n\n.on-always-dark.tab--selected { color: var(--color-always-dark-foreground-primary); }\n\n.on-navigation {\n color: var(--color-navigation-foreground-secondary);\n --_hover-bg: var(--color-navigation-interaction-hover);\n --_pressed-bg: var(--color-navigation-interaction-pressed);\n --_dot: var(--color-navigation-foreground-brand);\n --_dot-ring: var(--color-navigation-background);\n}\n\n.on-navigation.tab--selected { color: var(--color-navigation-foreground-primary); }\n\n.on-navigation:focus-visible {\n outline-color: var(--color-navigation-interaction-focus);\n}\n\n.tab-list--on-navigation .tab-divider__line {\n background-color: var(--color-navigation-border-tertiary);\n}\n\n/* In-tablist visual group separator — not focusable, skipped by keyboard nav */\n.tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-space-100);\n height: var(--dimension-size-400);\n padding-block: var(--dimension-space-075);\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.tab-divider__line {\n width: var(--dimension-stroke-width-012);\n align-self: stretch;\n background-color: var(--color-border-secondary);\n}\n\n.tab-divider--vertical {\n width: auto;\n height: var(--dimension-space-100);\n align-self: stretch;\n padding-block: 0;\n padding-inline: var(--dimension-space-075);\n}\n\n.tab-divider--vertical .tab-divider__line {\n width: auto;\n height: var(--dimension-stroke-width-012);\n align-self: stretch;\n}\n","import { Component, Prop, Event, EventEmitter, Element, Listen, Watch, h, Host } from '@stencil/core';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabItem,\n type TabItemTab,\n} from '../TabGroup/tab-item-utils';\n\nexport type TabGroupNavBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'always-dark' | 'navigation';\n\n@Component({\n tag: 'ds-tab-group-nav',\n styleUrl: 'TabGroupNav.css',\n scoped: true,\n})\nexport class TabGroupNav {\n @Element() el!: HTMLElement;\n\n @Prop({ mutable: true }) value: string = '';\n @Prop() tabs: TabItem[] = [];\n @Prop() background: TabGroupNavBackground | 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 get selectableTabs(): TabItemTab[] {\n return getSelectableTabs(this.tabs);\n }\n\n private selectTab(id: string, options?: { focus?: boolean }) {\n this.value = id;\n this.dsChange.emit(id);\n if (options?.focus !== false) {\n this.focusTab(id);\n }\n }\n\n private focusTab(id: string) {\n const btn = this.el.querySelector(`[data-tab-id=\"${id}\"]`) as HTMLElement | null;\n btn?.focus({ preventScroll: true });\n }\n\n /** Keep focus on the selected tab when value changes externally (e.g. BarNav menu). */\n @Watch('value')\n onValueChange(next: string, prev: string | undefined) {\n if (prev === undefined || next === prev) return;\n\n requestAnimationFrame(() => {\n const active = document.activeElement as HTMLElement | null;\n if (!active || !this.el.contains(active)) return;\n\n const activeId = active.getAttribute('data-tab-id');\n if (activeId === next) return;\n\n const nextTab = this.el.querySelector(`[data-tab-id=\"${next}\"]`) as HTMLElement | null;\n if (nextTab) {\n nextTab.focus({ preventScroll: true });\n } else {\n active.blur();\n }\n });\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 tabs = this.selectableTabs;\n const len = tabs.length;\n for (let n = 0; n < len; n++) {\n const i = (from + step * (n + 1) + len * (n + 1)) % len;\n if (!tabs[i]?.disabled) return i;\n }\n return from;\n }\n\n @Listen('keydown')\n handleKeyDown(e: KeyboardEvent) {\n const tabs = this.selectableTabs;\n if (!tabs.length) return;\n\n const currentIdx = 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 = tabs.findIndex(t => !t.disabled);\n nextIdx = first === -1 ? null : first;\n } else if (e.key === 'End') {\n const lastEnabled = [...tabs].reverse().findIndex(t => !t.disabled);\n nextIdx = lastEnabled === -1 ? null : tabs.length - 1 - lastEnabled;\n }\n\n if (nextIdx !== null) {\n e.preventDefault();\n const next = tabs[nextIdx];\n this.selectTab(next.id);\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 if (this.background === 'navigation') return 'on-navigation';\n return `on-${this.background}`;\n }\n\n render() {\n const bgClass = this.getBgClass();\n const isVertical = this.orientation === 'vertical';\n const isNavigation = this.background === 'navigation';\n\n return (\n <Host class=\"tab-group-nav-host\">\n <div\n role=\"tablist\"\n class={{\n 'tab-list': true,\n 'tab-list--vertical': isVertical,\n 'tab-list--on-navigation': isNavigation,\n }}\n aria-label={this.ariaLabel}\n aria-labelledby={this.ariaLabelledby}\n aria-orientation={isVertical ? 'vertical' : undefined}\n >\n {this.tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div\n key={`divider-${index}`}\n class={{\n 'tab-divider': true,\n 'tab-divider--vertical': isVertical,\n }}\n aria-hidden=\"true\"\n >\n <div class=\"tab-divider__line\" />\n </div>\n );\n }\n\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={{\n tab__label: true,\n 'tab__label--dot': !!tab.dot,\n [isSelected ? 'text-body-medium-emphasis' : 'text-body-medium']: true,\n }}>\n {tab.label}\n {tab.dot && (\n <ds-badge\n class=\"tab__dot\"\n variant=\"dot\"\n background=\"var(--_dot-ring)\"\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"4IAAA,MAAMA,EAAiB,IAAM,0rJ,MCehBC,EAAWC,EAAA,MAAAD,UAAAE,EALxB,WAAAC,CAAAC,G,6EAQ2BC,KAAAC,MAAgB,GACjCD,KAAAE,KAAkB,GAIlBF,KAAAG,YAAyC,YAkLlD,CA9KC,kBAAYC,GACV,OAAOC,EAAkBL,KAAKE,K,CAGxB,SAAAI,CAAUC,EAAYC,GAC5BR,KAAKC,MAAQM,EACbP,KAAKS,SAASC,KAAKH,GACnB,GAAIC,GAASG,QAAU,MAAO,CAC5BX,KAAKY,SAASL,E,EAIV,QAAAK,CAASL,GACf,MAAMM,EAAMb,KAAKc,GAAGC,cAAc,iBAAiBR,OACnDM,GAAKF,MAAM,CAAEK,cAAe,M,CAK9B,aAAAC,CAAcC,EAAcC,GAC1B,GAAIA,IAASC,WAAaF,IAASC,EAAM,OAEzCE,uBAAsB,KACpB,MAAMC,EAASC,SAASC,cACxB,IAAKF,IAAWtB,KAAKc,GAAGW,SAASH,GAAS,OAE1C,MAAMI,EAAWJ,EAAOK,aAAa,eACrC,GAAID,IAAaR,EAAM,OAEvB,MAAMU,EAAU5B,KAAKc,GAAGC,cAAc,iBAAiBG,OACvD,GAAIU,EAAS,CACXA,EAAQjB,MAAM,CAAEK,cAAe,M,KAC1B,CACLM,EAAOO,M,KASL,WAAAC,CAAYC,EAAcC,GAChC,MAAM9B,EAAOF,KAAKI,eAClB,MAAM6B,EAAM/B,EAAKgC,OACjB,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAKE,IAAK,CAC5B,MAAMC,GAAKL,EAAOC,GAAQG,EAAI,GAAKF,GAAOE,EAAI,IAAMF,EACpD,IAAK/B,EAAKkC,IAAIC,SAAU,OAAOD,C,CAEjC,OAAOL,C,CAIT,aAAAO,CAAcC,GACZ,MAAMrC,EAAOF,KAAKI,eAClB,IAAKF,EAAKgC,OAAQ,OAElB,MAAMM,EAAatC,EAAKuC,WAAUC,GAAKA,EAAEnC,KAAOP,KAAKC,QACrD,MAAM0C,EAAa3C,KAAKG,cAAgB,WAExC,IAAIyC,EAAyB,KAE7B,IAAKD,EAAY,CACf,GAAIJ,EAAEM,MAAQ,aAAc,CAC1BD,EAAU5C,KAAK8B,YAAYU,EAAY,E,MAClC,GAAID,EAAEM,MAAQ,YAAa,CAChCD,EAAU5C,KAAK8B,YAAYU,GAAY,E,MAEpC,CACL,GAAID,EAAEM,MAAQ,YAAa,CACzBD,EAAU5C,KAAK8B,YAAYU,EAAY,E,MAClC,GAAID,EAAEM,MAAQ,UAAW,CAC9BD,EAAU5C,KAAK8B,YAAYU,GAAY,E,EAI3C,GAAID,EAAEM,MAAQ,OAAQ,CACpB,MAAMC,EAAQ5C,EAAKuC,WAAUC,IAAMA,EAAEL,WACrCO,EAAUE,KAAU,EAAK,KAAOA,C,MAC3B,GAAIP,EAAEM,MAAQ,MAAO,CAC1B,MAAME,EAAc,IAAI7C,GAAM8C,UAAUP,WAAUC,IAAMA,EAAEL,WAC1DO,EAAUG,KAAgB,EAAK,KAAO7C,EAAKgC,OAAS,EAAIa,C,CAG1D,GAAIH,IAAY,KAAM,CACpBL,EAAEU,iBACF,MAAM/B,EAAOhB,EAAK0C,GAClB5C,KAAKM,UAAUY,EAAKX,G,EAIhB,UAAA2C,GACN,IAAKlD,KAAKmD,YAAcnD,KAAKmD,aAAe,QAAS,MAAO,GAC5D,GAAInD,KAAKmD,aAAe,cAAe,MAAO,iBAC9C,GAAInD,KAAKmD,aAAe,aAAc,MAAO,gBAC7C,MAAO,MAAMnD,KAAKmD,Y,CAGpB,MAAAC,GACE,MAAMC,EAAUrD,KAAKkD,aACrB,MAAMP,EAAa3C,KAAKG,cAAgB,WACxC,MAAMmD,EAAetD,KAAKmD,aAAe,aAEzC,OACEI,EAACC,EAAI,CAAAX,IAAA,2CAACY,MAAM,sBACVF,EAAA,OAAAV,IAAA,2CACEa,KAAK,UACLD,MAAO,CACL,WAAY,KACZ,qBAAsBd,EACtB,0BAA2BW,GAC5B,aACWtD,KAAK2D,UAAS,kBACT3D,KAAK4D,eAAc,mBAClBjB,EAAa,WAAavB,WAE3CpB,KAAKE,KAAK2D,KAAI,CAACC,EAAKC,KACnB,GAAIC,EAAaF,GAAM,CACrB,OACEP,EAAA,OACEV,IAAK,WAAWkB,IAChBN,MAAO,CACL,cAAe,KACf,wBAAyBd,GAC1B,cACW,QAEZY,EAAA,OAAKE,MAAM,sB,CAKjB,MAAMQ,EAAaH,EAAIvD,KAAOP,KAAKC,MACnC,OACEsD,EAAA,UACEV,IAAKiB,EAAIvD,GACT2D,KAAK,SACLR,KAAK,MAAK,cACGI,EAAIvD,GACjBkD,MAAO,CACLK,IAAK,KACL,gBAAiBG,EACjBZ,CAACA,KAAYA,GACd,gBACcY,EAAU,gBACVH,EAAIzB,UAAYjB,UAAS,gBACzB0C,EAAIK,SAAW/C,UAC9BiB,SAAUyB,EAAIzB,SACd+B,SAAUH,EAAa,GAAI,EAC3BI,QAAS,KAAOP,EAAIzB,UAAYrC,KAAKM,UAAUwD,EAAIvD,KAEnDgD,EAAA,QAAME,MAAO,CACXa,WAAY,KACZ,oBAAqBR,EAAIS,IACzB,CAACN,EAAa,4BAA8B,oBAAqB,OAEhEH,EAAIU,MACJV,EAAIS,KACHhB,EAAA,YACEE,MAAM,WACNgB,QAAQ,MACRtB,WAAW,mBACXqB,MAAM,GAAE,cACI,UAIX,K","ignoreList":[]}
@@ -1,21 +0,0 @@
1
- import { EventEmitter } from '../../stencil-public-runtime';
2
- export type BarNavActionBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'always-dark' | 'navigation';
3
- export declare class BarNavAction {
4
- el: HTMLElement;
5
- /** Icon name passed to <ds-icon>. */
6
- icon: string;
7
- /** Controlled toggle/selected state. */
8
- selected: boolean;
9
- /** Show a notification dot (brand colour) at the top-right of the icon. */
10
- dot: boolean;
11
- /** Disables interaction. */
12
- inactive: boolean;
13
- ariaLabel: string;
14
- /** Parent surface context — adjusts hover/press colours for coloured backgrounds. */
15
- background: BarNavActionBackground | undefined;
16
- /** Emits the new selected value (!selected) on click. */
17
- dsChange: EventEmitter<boolean>;
18
- private handleClick;
19
- render(): any;
20
- }
21
- //# sourceMappingURL=BarNavAction.d.ts.map
@@ -1,2 +0,0 @@
1
- export type { BarNavActionBackground } from './BarNavAction';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1,27 +0,0 @@
1
- 'use client';
2
-
3
- /**
4
- * This file was automatically generated by the Stencil React Output Target.
5
- * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
6
- */
7
-
8
- /* eslint-disable */
9
-
10
- import type { EventName, StencilReactComponent } from '@stencil/react-output-target/runtime';
11
- import { createComponent } from '@stencil/react-output-target/runtime';
12
- import React from 'react';
13
-
14
- import { type DsBarNavActionCustomEvent } from "@ds-mo/ui";
15
- import type { Components } from "@ds-mo/ui/dist/components";
16
- import { DsBarNavAction as DsBarNavActionElement, defineCustomElement as defineDsBarNavAction } from "@ds-mo/ui/dist/components/ds-bar-nav-action.js";
17
-
18
- export type DsBarNavActionEvents = { onDsChange: EventName<DsBarNavActionCustomEvent<boolean>> };
19
-
20
- export const DsBarNavAction: StencilReactComponent<DsBarNavActionElement, DsBarNavActionEvents, Components.DsBarNavAction> = /*@__PURE__*/ createComponent<DsBarNavActionElement, DsBarNavActionEvents, Components.DsBarNavAction>({
21
- tagName: 'ds-bar-nav-action',
22
- elementClass: DsBarNavActionElement,
23
- // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
24
- react: React,
25
- events: { onDsChange: 'dsChange' } as DsBarNavActionEvents,
26
- defineCustomElement: defineDsBarNavAction
27
- });
@@ -1,78 +0,0 @@
1
- import { Component, Prop, Event, EventEmitter, Element, h, Host } from '@stencil/core';
2
-
3
- export type BarNavActionBackground = 'faint' | 'medium' | 'bold' | 'strong' | 'always-dark' | 'navigation';
4
-
5
- @Component({
6
- tag: 'ds-bar-nav-action',
7
- styleUrl: 'BarNavAction.css',
8
- scoped: true,
9
- })
10
- export class BarNavAction {
11
- @Element() el!: HTMLElement;
12
-
13
- /** Icon name passed to <ds-icon>. */
14
- @Prop() icon: string = '';
15
-
16
- /** Controlled toggle/selected state. */
17
- @Prop() selected: boolean = false;
18
-
19
- /** Show a notification dot (brand colour) at the top-right of the icon. */
20
- @Prop() dot: boolean = false;
21
-
22
- /** Disables interaction. */
23
- @Prop() inactive: boolean = false;
24
-
25
- @Prop({ attribute: 'aria-label' }) ariaLabel: string = 'action';
26
-
27
- /** Parent surface context — adjusts hover/press colours for coloured backgrounds. */
28
- @Prop() background: BarNavActionBackground | undefined;
29
-
30
- /** Emits the new selected value (!selected) on click. */
31
- @Event() dsChange!: EventEmitter<boolean>;
32
-
33
- private handleClick = () => {
34
- if (this.inactive) return;
35
- this.dsChange.emit(!this.selected);
36
- };
37
-
38
- render() {
39
- const bg = this.background;
40
-
41
- const cls: Record<string, boolean> = {
42
- 'action-btn': true,
43
- selected: this.selected,
44
- inactive: this.inactive,
45
- onMedium: bg === 'medium',
46
- onBold: bg === 'bold',
47
- onStrong: bg === 'strong',
48
- onAlwaysDark: bg === 'always-dark',
49
- onNavigation: bg === 'navigation',
50
- };
51
-
52
- return (
53
- <Host>
54
- <button
55
- type="button"
56
- class={cls}
57
- disabled={this.inactive}
58
- aria-pressed={this.selected}
59
- aria-label={this.ariaLabel}
60
- onClick={this.handleClick}
61
- >
62
- <span class="action-btn__icon-wrap">
63
- <ds-icon name={this.icon} size="md" color="inherit" />
64
- {this.dot && (
65
- <ds-badge
66
- class="action-btn__dot"
67
- variant="dot"
68
- background="var(--_dot-ring)"
69
- label=""
70
- aria-hidden="true"
71
- />
72
- )}
73
- </span>
74
- </button>
75
- </Host>
76
- );
77
- }
78
- }
@@ -1 +0,0 @@
1
- export type { BarNavActionBackground } from './BarNavAction';