@lmvz-ds/components 0.32.0 → 0.34.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 (191) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/{aria-loader-BRo2FTGh.js → aria-loader-DWUVcapD.js} +1 -1
  3. package/cjs/{aria-validation-controller-Z4TtOp2l.js → aria-validation-controller-BC0Eaiv4.js} +1 -1
  4. package/cjs/async.util-BQ60l-WC.js +20 -0
  5. package/cjs/{ds.constants-CKeXfK-s.js → ds.constants-C6eKRAEu.js} +5 -1
  6. package/cjs/{element.util-Cq4y-_iX.js → element.util-Dbyc8yUG.js} +35 -0
  7. package/cjs/{icons-BQASWgk-.js → icons-snv0hyf1.js} +1 -1
  8. package/cjs/{index-3g9Z9sfF.js → index-Bn3k5SiE.js} +1044 -508
  9. package/cjs/index.cjs.js +7 -5
  10. package/cjs/{list-keyboard-controller-StN6Yn8W.js → list-keyboard-controller-Dm5S_l0D.js} +1 -1
  11. package/cjs/lmvz-action-list.cjs.entry.js +13 -6
  12. package/cjs/lmvz-button-group.cjs.entry.js +4 -4
  13. package/cjs/lmvz-button_2.cjs.entry.js +7 -7
  14. package/cjs/lmvz-card.cjs.entry.js +1 -1
  15. package/cjs/lmvz-checkbox.cjs.entry.js +5 -5
  16. package/cjs/lmvz-chip.cjs.entry.js +3 -3
  17. package/cjs/lmvz-components.cjs.js +1 -1
  18. package/cjs/lmvz-header_2.cjs.entry.js +4 -4
  19. package/cjs/lmvz-input.cjs.entry.js +4 -3
  20. package/cjs/lmvz-link.cjs.entry.js +4 -4
  21. package/cjs/lmvz-menuitem.cjs.entry.js +3 -3
  22. package/cjs/lmvz-message.cjs.entry.js +3 -3
  23. package/cjs/lmvz-modal.cjs.entry.js +6 -6
  24. package/cjs/lmvz-popover.cjs.entry.js +1570 -0
  25. package/cjs/lmvz-radio.cjs.entry.js +4 -4
  26. package/cjs/lmvz-select.cjs.entry.js +3 -3
  27. package/cjs/lmvz-snackbar.cjs.entry.js +1 -1
  28. package/cjs/lmvz-spinner.cjs.entry.js +1 -1
  29. package/cjs/lmvz-tab.cjs.entry.js +1 -1
  30. package/cjs/lmvz-tabs.cjs.entry.js +3 -3
  31. package/cjs/lmvz-toggle.cjs.entry.js +6 -5
  32. package/cjs/loader.cjs.js +1 -1
  33. package/cjs/{logger-DsM6xg6V.js → logger-NBdKPSou.js} +1 -1
  34. package/cjs/{stencil.util-DzvzXSwk.js → stencil.util-DxdYjVoH.js} +2 -10
  35. package/cjs/{svg-BMBduILB.js → svg-CysxzZw7.js} +1 -1
  36. package/collection/api/ds.constants.js +3 -1
  37. package/collection/collection-manifest.json +1 -0
  38. package/collection/components/lmvz-action-list/lmvz-action-list.css +150 -38
  39. package/collection/components/lmvz-action-list/lmvz-action-list.js +9 -1
  40. package/collection/components/lmvz-button/lmvz-button.css +14 -18
  41. package/collection/components/lmvz-button/lmvz-button.js +1 -1
  42. package/collection/components/lmvz-button-group/lmvz-button-group.css +1 -2
  43. package/collection/components/lmvz-card/lmvz-card.css +16 -19
  44. package/collection/components/lmvz-checkbox/lmvz-checkbox.css +3 -6
  45. package/collection/components/lmvz-link/lmvz-link.css +1 -1
  46. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +1 -2
  47. package/collection/components/lmvz-modal/lmvz-modal.css +1 -2
  48. package/collection/components/lmvz-popover/lmvz-popover.css +46 -0
  49. package/collection/components/lmvz-popover/lmvz-popover.js +470 -0
  50. package/collection/components/lmvz-radio/lmvz-radio.css +2 -4
  51. package/collection/components/lmvz-radio/lmvz-radio.js +1 -1
  52. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  53. package/collection/components/lmvz-snackbar/lmvz-snackbar.js +1 -1
  54. package/collection/components/lmvz-spinner/lmvz-spinner.js +1 -1
  55. package/collection/components/lmvz-tab/lmvz-tab.js +1 -1
  56. package/collection/components/lmvz-tabs/lmvz-tabs.js +1 -1
  57. package/collection/components/lmvz-toggle/lmvz-toggle.css +1 -2
  58. package/collection/components/lmvz-toggle/lmvz-toggle.js +1 -1
  59. package/collection/integration/header-integration/header-integration.js +1 -1
  60. package/collection/utils/async/async.util.js +6 -0
  61. package/collection/utils/element/element.util.js +33 -0
  62. package/components/index.d.ts +2 -0
  63. package/components/index.d.ts.bak +2 -0
  64. package/components/index.js +1 -1
  65. package/components/lmvz-action-list.js +1 -1
  66. package/components/lmvz-button-group.js +1 -1
  67. package/components/lmvz-button.js +1 -1
  68. package/components/lmvz-card.js +1 -1
  69. package/components/lmvz-checkbox.js +1 -1
  70. package/components/lmvz-chip.js +1 -1
  71. package/components/lmvz-header.js +1 -1
  72. package/components/lmvz-icon.js +1 -1
  73. package/components/lmvz-input.js +1 -1
  74. package/components/lmvz-link.js +1 -1
  75. package/components/lmvz-menuitem.js +1 -1
  76. package/components/lmvz-message.js +1 -1
  77. package/components/lmvz-modal.js +1 -1
  78. package/components/lmvz-popover.d.ts +11 -0
  79. package/components/lmvz-popover.d.ts.bak +11 -0
  80. package/components/lmvz-popover.js +1 -0
  81. package/components/lmvz-radio.js +1 -1
  82. package/components/lmvz-select.js +1 -1
  83. package/components/lmvz-snackbar.js +1 -1
  84. package/components/lmvz-spinner.js +1 -1
  85. package/components/lmvz-tab.js +1 -1
  86. package/components/lmvz-tabs.js +1 -1
  87. package/components/lmvz-toggle.js +1 -1
  88. package/components/p-0ctLESas.js +1 -0
  89. package/components/{p-CdDO7mQa.js → p-BDonpCG8.js} +1 -1
  90. package/components/p-BhSTYZC6.js +1 -0
  91. package/components/p-CE-QR3Tp.js +1 -0
  92. package/components/{p-C8znmF2h.js → p-CFTmV4XZ.js} +1 -1
  93. package/components/{p-CxfT9IA1.js → p-CK3Ixl1K.js} +1 -1
  94. package/components/p-Cghfdblf.js +12 -0
  95. package/components/{p-B4m1n4et.js → p-D-2gj6LP.js} +1 -1
  96. package/components/{p-CGmJG63p.js → p-D06Ds9Dh.js} +1 -1
  97. package/components/{p-DeO5Vbxh.js → p-D7S1WiEC.js} +1 -1
  98. package/components/p-D9nUtvTm.js +1 -0
  99. package/components/{p-DJ90327O.js → p-De-xQqdU.js} +1 -1
  100. package/components/{p-CcxjkCOx.js → p-DjvtQE7c.js} +1 -1
  101. package/esm/{aria-loader-GfsGHZHY.js → aria-loader-BfH06m7H.js} +1 -1
  102. package/esm/{aria-validation-controller-BnyUKeJ6.js → aria-validation-controller-BvOU1BO8.js} +1 -1
  103. package/esm/async.util-D9nUtvTm.js +17 -0
  104. package/esm/{ds.constants-DuEtnKRj.js → ds.constants-0ctLESas.js} +4 -2
  105. package/esm/{element.util-CxfT9IA1.js → element.util-B0eCxdyI.js} +34 -1
  106. package/esm/{icons-CmuFKDRz.js → icons-DQOFaux5.js} +1 -1
  107. package/esm/{index-Dh_9sN0q.js → index-7ULiPTL_.js} +1044 -508
  108. package/esm/index.js +5 -5
  109. package/esm/{list-keyboard-controller-BKa9Kd2t.js → list-keyboard-controller-tle6IRkv.js} +1 -1
  110. package/esm/lmvz-action-list.entry.js +13 -6
  111. package/esm/lmvz-button-group.entry.js +4 -4
  112. package/esm/lmvz-button_2.entry.js +7 -7
  113. package/esm/lmvz-card.entry.js +1 -1
  114. package/esm/lmvz-checkbox.entry.js +5 -5
  115. package/esm/lmvz-chip.entry.js +3 -3
  116. package/esm/lmvz-components.js +1 -1
  117. package/esm/lmvz-header_2.entry.js +4 -4
  118. package/esm/lmvz-input.entry.js +4 -3
  119. package/esm/lmvz-link.entry.js +4 -4
  120. package/esm/lmvz-menuitem.entry.js +3 -3
  121. package/esm/lmvz-message.entry.js +3 -3
  122. package/esm/lmvz-modal.entry.js +6 -6
  123. package/esm/lmvz-popover.entry.js +1568 -0
  124. package/esm/lmvz-radio.entry.js +4 -4
  125. package/esm/lmvz-select.entry.js +3 -3
  126. package/esm/lmvz-snackbar.entry.js +1 -1
  127. package/esm/lmvz-spinner.entry.js +1 -1
  128. package/esm/lmvz-tab.entry.js +1 -1
  129. package/esm/lmvz-tabs.entry.js +3 -3
  130. package/esm/lmvz-toggle.entry.js +6 -5
  131. package/esm/loader.js +1 -1
  132. package/esm/{logger-CGmJG63p.js → logger-D06Ds9Dh.js} +1 -1
  133. package/esm/{stencil.util-CJRqhXjK.js → stencil.util-wGFRYLwZ.js} +1 -9
  134. package/esm/{svg-B2YoIRuh.js → svg-Dz3GD0LB.js} +1 -1
  135. package/hydrate/index.js +1652 -25
  136. package/hydrate/index.mjs +1652 -25
  137. package/lmvz-components/index.esm.js +1 -1
  138. package/lmvz-components/lmvz-components.esm.js +1 -1
  139. package/lmvz-components/p-03c38ff2.entry.js +1 -0
  140. package/lmvz-components/{p-582f44ff.entry.js → p-08613ba2.entry.js} +1 -1
  141. package/lmvz-components/p-0ctLESas.js +1 -0
  142. package/lmvz-components/{p-ed3c2b13.entry.js → p-11de5905.entry.js} +1 -1
  143. package/lmvz-components/{p-b79af711.entry.js → p-2036044c.entry.js} +1 -1
  144. package/lmvz-components/{p-c0d05a97.entry.js → p-4254aa38.entry.js} +1 -1
  145. package/lmvz-components/{p-8e1f66dd.entry.js → p-49e98627.entry.js} +1 -1
  146. package/lmvz-components/p-4f005b23.entry.js +1 -0
  147. package/lmvz-components/p-50063516.entry.js +1 -0
  148. package/lmvz-components/{p-48109e1d.entry.js → p-585470ef.entry.js} +1 -1
  149. package/lmvz-components/{p-24125bcf.entry.js → p-5bbbcfc0.entry.js} +1 -1
  150. package/lmvz-components/{p-c3e8092e.entry.js → p-6140866f.entry.js} +1 -1
  151. package/lmvz-components/p-9b7ce515.entry.js +1 -0
  152. package/lmvz-components/p-9f8fd077.entry.js +1 -0
  153. package/lmvz-components/{p-CxfT9IA1.js → p-B0eCxdyI.js} +1 -1
  154. package/lmvz-components/{p-CdDO7mQa.js → p-BDonpCG8.js} +1 -1
  155. package/lmvz-components/p-BhSTYZC6.js +1 -0
  156. package/lmvz-components/p-Cghfdblf.js +12 -0
  157. package/lmvz-components/p-CyDgnpOB.js +1 -0
  158. package/lmvz-components/{p-CGmJG63p.js → p-D06Ds9Dh.js} +1 -1
  159. package/lmvz-components/{p-CPOia2kT.js → p-D9PQIBzA.js} +1 -1
  160. package/lmvz-components/p-D9nUtvTm.js +1 -0
  161. package/lmvz-components/{p-CcxjkCOx.js → p-DjvtQE7c.js} +1 -1
  162. package/lmvz-components/{p-B4m1n4et.js → p-DuLiExhX.js} +1 -1
  163. package/lmvz-components/{p-1ce90ea7.entry.js → p-b0626234.entry.js} +1 -1
  164. package/lmvz-components/{p-fa2cd315.entry.js → p-b67ff2d1.entry.js} +1 -1
  165. package/lmvz-components/p-bfde444e.entry.js +1 -0
  166. package/lmvz-components/{p-703b10b5.entry.js → p-cc2734e9.entry.js} +1 -1
  167. package/lmvz-components/{p-25a78ead.entry.js → p-ce1a9f39.entry.js} +1 -1
  168. package/lmvz-components/{p-80a26307.entry.js → p-ddc28256.entry.js} +1 -1
  169. package/lmvz-components/p-fd455288.entry.js +1 -0
  170. package/manifest.json +386 -3
  171. package/package.json +7 -3
  172. package/types/api/ds.constants.d.ts +3 -1
  173. package/types/api/ds.types.d.ts +7 -0
  174. package/types/components/lmvz-popover/lmvz-popover.d.ts +37 -0
  175. package/types/components.d.ts +108 -1
  176. package/types/utils/async/async.util.d.ts +3 -0
  177. package/types/utils/element/element.util.d.ts +2 -0
  178. package/components/p-0s99QfRy.js +0 -12
  179. package/components/p-B0H9qIwE.js +0 -1
  180. package/components/p-CJRqhXjK.js +0 -1
  181. package/components/p-DuEtnKRj.js +0 -1
  182. package/lmvz-components/p-0s99QfRy.js +0 -12
  183. package/lmvz-components/p-4072b2fb.entry.js +0 -1
  184. package/lmvz-components/p-592d509b.entry.js +0 -1
  185. package/lmvz-components/p-6f61c24d.entry.js +0 -1
  186. package/lmvz-components/p-74c7521c.entry.js +0 -1
  187. package/lmvz-components/p-947e1fe6.entry.js +0 -1
  188. package/lmvz-components/p-CFsC37ww.js +0 -1
  189. package/lmvz-components/p-CJRqhXjK.js +0 -1
  190. package/lmvz-components/p-DuEtnKRj.js +0 -1
  191. package/lmvz-components/p-c00f0d96.entry.js +0 -1
@@ -1 +1 @@
1
- import{r as e,g as a,h as t,H as r}from"./p-BPeerEwm.js";const o=class{constructor(a){e(this,a)}get el(){return a(this)}mediaSlotEl;value;disabled=!1;selected=!1;vertical=!1;handleMediaSlotChange=()=>{this.el.toggleAttribute("has-media",(this.mediaSlotEl?.assignedElements()??[]).length>0)};componentDidLoad(){this.handleMediaSlotChange(),this.el.dispatchEvent(new CustomEvent("lmvzTabReady",{bubbles:!0,composed:!1}))}render(){return t(r,{key:"642a74020dfe8e3f96ebbdf8067b1eba5c07bd15"},t("button",{key:"b786b259aed2f2e1f61f3ef14959f564841b3761",part:"button",role:"tab",disabled:this.disabled,"aria-selected":String(this.selected),"aria-disabled":this.disabled?"true":void 0,tabIndex:0},t("slot",{key:"e29265a24673c39397266ef21419cebdf9a05a2c",name:"media",ref:e=>this.mediaSlotEl=e,onSlotchange:this.handleMediaSlotChange}),t("span",{key:"c74ae843e36f85291e404955056ba1f34d0393e7",class:"label"},t("slot",{key:"0f13548f3ec10a126016bfc92aa93a4c21b86e0f"})),t("span",{key:"2f969a70550975bffd1884a55b12fec733331b01","aria-hidden":"true",part:"indicator",class:"indicator"})))}static get delegatesFocus(){return!0}};o.style=" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } hr { height: 0; border: none; margin: var(--lmvz-dimension-4-8, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)) 0; border-top: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-subtle, #f0f0f0); } } :host { display: inline-block; flex: none; } :host([disabled]) { cursor: not-allowed; pointer-events: none; } button { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); position: relative; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--lmvz-component-component-spacing-0-default, 4px); padding-top: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); padding-bottom: var(--lmvz-dimension-8-14, clamp(0.5rem, 0.41rem + 0.39vw, 0.88rem)); padding-inline: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); border: none; border-radius: var(--lmvz-semantic-border-radius-round, 999px); background: var(--lmvz-tab-background); color: var(--lmvz-tab-color); font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); cursor: pointer; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease; } button:focus-visible { outline: var(--lmvz-ds-outline, 1px solid #0e7ab4); outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)); z-index: 1; } button:disabled { opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; cursor: not-allowed; } button:hover { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-hover, #000000); } button:active { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-active, #000000); } :host([has-media]) { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); } :host([has-media]) button { padding-top: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); padding-bottom: var(--lmvz-dimension-12-14, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem)); padding-inline: var(--lmvz-dimension-40-48, clamp(2.5rem, 2.38rem + 0.52vw, 3rem)); border-radius: var(--lmvz-semantic-border-radius-lg, 14px); } :host([has-media]) button:hover { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000); } :host([has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000); } :host([selected]) button { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); --lmvz-tab-background: var(--lmvz-semantic-color-status-active, #f6fbfe); } :host([selected][has-media]) button:hover, :host([selected][has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } .indicator { --lmvz-tab-indicator-size: 4px; position: absolute; background: linear-gradient(to right, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); opacity: 0; transition: opacity 0.15s ease; inset-block-end: 0; inset-inline: 0; block-size: var(--lmvz-tab-indicator-size); border-start-start-radius: 0; border-start-end-radius: 0; border-end-start-radius: var(--lmvz-tab-indicator-size); border-end-end-radius: var(--lmvz-tab-indicator-size); } :host([selected][has-media]) .indicator { opacity: 1; } :host([vertical]) button { border-radius: var(--lmvz-semantic-border-radius-round, 999px); } :host([vertical]) .indicator { inset-block: 0; inset-inline: 0 auto; inline-size: var(--lmvz-tab-indicator-size); block-size: auto; border-radius: 0 var(--lmvz-tab-indicator-size) var(--lmvz-tab-indicator-size) 0; background: linear-gradient(to bottom, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); } ::slotted(*) { --lmvz-component-color: var(--lmvz-tab-color); } ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); } :host([has-media]) ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.44rem + 0.26vw, 1.75rem)); } .label { display: contents; } ";export{o as lmvz_tab}
1
+ import{r as e,g as a,h as t,H as r}from"./p-BPeerEwm.js";const o=class{constructor(a){e(this,a)}get el(){return a(this)}mediaSlotEl;value;disabled=!1;selected=!1;vertical=!1;handleMediaSlotChange=()=>{this.el.toggleAttribute("has-media",(this.mediaSlotEl?.assignedElements()??[]).length>0)};componentDidLoad(){this.handleMediaSlotChange(),this.el.dispatchEvent(new CustomEvent("lmvzTabReady",{bubbles:!0,composed:!1}))}render(){return t(r,{key:"6bb908c4956e84cd344fc8e81b400d33bb2dce98"},t("button",{key:"fbc5b650c9bfb5653d17f9a66a14ffbf0fe87f83",part:"button",role:"tab",disabled:this.disabled,"aria-selected":String(this.selected),"aria-disabled":this.disabled?"true":void 0,tabIndex:0},t("slot",{key:"a16da4d11ecca9db3d03da3b0076b698295ead1f",name:"media",ref:e=>this.mediaSlotEl=e,onSlotchange:this.handleMediaSlotChange}),t("span",{key:"e9e83fd4aa556716af3c7b7e52e1e1d8a5a33061",class:"label"},t("slot",{key:"a4c0378e62d67d7bcc772ff6a77ae1a86f41208c"})),t("span",{key:"de03b763d99f55b8773334df3d18c2d3855de4de","aria-hidden":"true",part:"indicator",class:"indicator"})))}static get delegatesFocus(){return!0}};o.style=" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } hr { height: 0; border: none; margin: var(--lmvz-dimension-4-8, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)) 0; border-top: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-subtle, #f0f0f0); } } :host { display: inline-block; flex: none; } :host([disabled]) { cursor: not-allowed; pointer-events: none; } button { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); position: relative; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--lmvz-component-component-spacing-0-default, 4px); padding-top: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); padding-bottom: var(--lmvz-dimension-8-14, clamp(0.5rem, 0.41rem + 0.39vw, 0.88rem)); padding-inline: var(--lmvz-dimension-16-24, clamp(1rem, 0.88rem + 0.52vw, 1.5rem)); border: none; border-radius: var(--lmvz-semantic-border-radius-round, 999px); background: var(--lmvz-tab-background); color: var(--lmvz-tab-color); font: var(--lmvz-typography-body-md-strong, 500 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); cursor: pointer; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease; } button:focus-visible { outline: var(--lmvz-ds-outline, 1px solid #0e7ab4); outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)); z-index: 1; } button:disabled { opacity: var(--lmvz-component-input-disabled-opacity, 40%); pointer-events: none; cursor: not-allowed; } button:hover { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-hover, #000000); } button:active { --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); --lmvz-tab-color: var(--lmvz-semantic-color-int-on-secondary-active, #000000); } :host([has-media]) { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary, #000000); --lmvz-tab-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); } :host([has-media]) button { padding-top: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); padding-bottom: var(--lmvz-dimension-12-14, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem)); padding-inline: var(--lmvz-dimension-40-48, clamp(2.5rem, 2.38rem + 0.52vw, 3rem)); border-radius: var(--lmvz-semantic-border-radius-lg, 14px); } :host([has-media]) button:hover { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-hover, #000000); } :host([has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-int-on-tertiary-active, #000000); } :host([selected]) button { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); --lmvz-tab-background: var(--lmvz-semantic-color-status-active, #f6fbfe); } :host([selected][has-media]) button:hover, :host([selected][has-media]) button:active { --lmvz-tab-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4); } .indicator { --lmvz-tab-indicator-size: 4px; position: absolute; background: linear-gradient(to right, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); opacity: 0; transition: opacity 0.15s ease; inset-block-end: 0; inset-inline: 0; block-size: var(--lmvz-tab-indicator-size); border-start-start-radius: 0; border-start-end-radius: 0; border-end-start-radius: var(--lmvz-tab-indicator-size); border-end-end-radius: var(--lmvz-tab-indicator-size); } :host([selected][has-media]) .indicator { opacity: 1; } :host([vertical]) button { border-radius: var(--lmvz-semantic-border-radius-round, 999px); } :host([vertical]) .indicator { inset-block: 0; inset-inline: 0 auto; inline-size: var(--lmvz-tab-indicator-size); block-size: auto; border-radius: 0 var(--lmvz-tab-indicator-size) var(--lmvz-tab-indicator-size) 0; background: linear-gradient(to bottom, var(--lmvz-semantic-color-gradient-main-1, #0e7ab4), var(--lmvz-semantic-color-gradient-main-2, #0e7ab4)); } ::slotted(*) { --lmvz-component-color: var(--lmvz-tab-color); } ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-dimension-16-18, clamp(1rem, 0.97rem + 0.13vw, 1.13rem)); } :host([has-media]) ::slotted(lmvz-icon) { --lmvz-component-size: var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.44rem + 0.26vw, 1.75rem)); } .label { display: contents; } ";export{o as lmvz_tab}
@@ -1 +1 @@
1
- import{g as e,r as t,c as o,h as i,H as s}from"./p-BPeerEwm.js";import{c as a}from"./p-BSV3KDWl.js";import{t as r}from"./p-CcxjkCOx.js";import{A as l}from"./p-CPOia2kT.js";import{i as n,g as d}from"./p-CxfT9IA1.js";import{R as c}from"./p-FBuCCcFC.js";import"./p-CGmJG63p.js";import"./p-CdDO7mQa.js";const h=r(a);let f=0;const m=class extends c{get el(){return e(this)}inheritedAriaAttributes={};dialogEl;dialogStateObserver;headerSlot;buttonGroupEl;closeButtonEl;previouslyFocusedElement=null;wrappedDialogShowModal;pendingCloseReturnValue;dialogTitleId="lmvz-modal-title-"+f++;hasHeader=!1;open=!1;closeLabel="Schliessen";dialogClose;dialogCancel;get dialog(){return this.dialogEl}get validationEl(){return this.dialogEl??this.el}constructor(e){super(),t(this,e),this.dialogClose=o(this,"close",6),this.dialogCancel=o(this,"cancel",1),this.addController(new l(this,{validationTiming:"slot"}))}handleFormDialogSubmit(e){const t=e.submitter;("dialog"===e.target.method||"dialog"===t?.getAttribute("formmethod"))&&(e.preventDefault(),this.dialogEl?.close(t?.value??""))}connectedCallback(){this.inheritedAriaAttributes=n(this.el,["role"]),Object.defineProperty(this.el,"dialog",{configurable:!0,enumerable:!0,get:()=>(this.ensureDialogShowModalCapture(),this.dialogEl)}),super.connectedCallback()}componentDidLoad(){this.handleHeaderSlotChange(),this.observeDialogState(),this.syncDialogVisibility(),super.componentDidLoad()}disconnectedCallback(){this.dialogStateObserver?.disconnect(),super.disconnectedCallback()}componentDidRender(){this.open&&this.focusPrimaryAction(),super.componentDidRender()}handleOpenChange(){this.syncDialogVisibility()}get dialogAccessibilityAttributes(){const e={...this.inheritedAriaAttributes};if(delete e["aria-label"],delete e["aria-labelledby"],this.hasHeader)return e["aria-labelledby"]=this.dialogTitleId,e;const t=this.inheritedAriaAttributes["aria-labelledby"];if("string"==typeof t)return e["aria-labelledby"]=t,e;const o=this.inheritedAriaAttributes["aria-label"];return"string"==typeof o&&(e["aria-label"]=o),e}hasAssignedContent(e){return Boolean(e?.assignedNodes({flatten:!0}).some((e=>e.nodeType===Node.TEXT_NODE?Boolean(e.textContent?.trim()):e.nodeType===Node.ELEMENT_NODE)))}observeDialogState(){this.dialogEl&&"undefined"!=typeof MutationObserver&&(this.dialogStateObserver?.disconnect(),this.dialogStateObserver=new MutationObserver((()=>{this.dialogEl&&this.dialogEl.open!==this.open&&(this.open=!!this.dialogEl.open)})),this.dialogStateObserver.observe(this.dialogEl,{attributes:!0,attributeFilter:["open"]}))}capturePreviouslyFocusedElement(){const e=this.dialogEl,t=d(document);e&&t&&!e.contains(t)&&(this.previouslyFocusedElement=t)}ensureDialogShowModalCapture(){const e=this.dialogEl;if(!e||"function"!=typeof e.showModal)return;const t=e.showModal;if(t===this.wrappedDialogShowModal)return;const o=()=>(this.capturePreviouslyFocusedElement(),t.call(e));Object.defineProperty(e,"showModal",{configurable:!0,value:o}),this.wrappedDialogShowModal=o}syncDialogVisibility(){const e=this.dialogEl;if(e)return this.open?(e.open||(this.capturePreviouslyFocusedElement(),"function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),void this.focusPrimaryAction()):void(e.open&&("function"==typeof e.close?e.close():(e.removeAttribute("open"),this.handleDialogClose())))}focusPrimaryAction(){const e=this.buttonGroupEl?.primaryEnabledAction??this.closeButtonEl;e&&"undefined"!=typeof window&&window.requestAnimationFrame((()=>{this.open&&e.focus()}))}restoreFocus(){this.previouslyFocusedElement?.isConnected&&(this.previouslyFocusedElement.focus(),this.previouslyFocusedElement=null)}handleCloseButtonClick=()=>{if(!this.dialogEl)return;const e=this.dialogEl;if("function"==typeof e.requestClose)return this.pendingCloseReturnValue="close",void e.requestClose("close");"function"!=typeof this.dialogEl.close?this.handleDialogClose():this.dialogEl.close("close")};handleDialogCancel=e=>{if(e.preventDefault(),this.dialogCancel.emit().defaultPrevented)return void(this.pendingCloseReturnValue=void 0);const t=this.pendingCloseReturnValue;this.pendingCloseReturnValue=void 0,this.dialogEl?.close(t)};handleDialogClose=()=>{console.log("Dialog close handler called"),this.open&&(this.open=!1),this.restoreFocus(),this.dialogClose.emit()};handleHeaderSlotChange=()=>{this.hasHeader=this.hasAssignedContent(this.headerSlot)};render(){return i(s,{key:"8b5f506cdac223a440309d472639fe965b94f8c2"},i("dialog",{key:"0b70ac4d9590266271052c4d7fdef03c684d9b72",ref:e=>this.dialogEl=e,onCancel:this.handleDialogCancel,onClose:this.handleDialogClose,...this.dialogAccessibilityAttributes},i("div",{key:"25b529bec1905408c2041b7370ab37586eade47d",class:"modal-shell"},i("header",{key:"d86ae4a6f4ac7f6efd38385f1407d1f6bfbb1abb",class:{header:!0,"has-title":this.hasHeader}},i("div",{key:"7fd7059bfb0b90834895a87c2f2598e2e8c2ba80",class:"title",id:this.dialogTitleId,hidden:!this.hasHeader},i("slot",{key:"b6eb7885e220e5def4c3c8420d5b83f4a7e30907",name:"header",ref:e=>this.headerSlot=e,onSlotchange:this.handleHeaderSlotChange})),i("lmvz-button",{key:"dcebb06482cdef7423c6b62ef877ca9aaabf55a4",ref:e=>this.closeButtonEl=e,type:"button",class:"close-button","aria-label":this.closeLabel,onClick:this.handleCloseButtonClick,variant:"tertiary"},i("lmvz-icon",{key:"0db22c68fe164ed2a33bfaeacf9eac619424f464",icon:h}))),i("div",{key:"ef402c343f2c68210351f7556eec08f2e9be851b",class:"body"},i("slot",{key:"3fe86dc88c88c2cf7bfe3429c62cb2047b64611a"})),i("footer",{key:"92b7bdab1ffe700749fc029723f70913f436397d",class:"actions",hidden:!this.buttonGroupEl?.hasActions},i("lmvz-button-group",{key:"7e1b310fb1b20449ead14d0702af4977c74198dd",ref:e=>this.buttonGroupEl=e},i("slot",{key:"cb2187ab2758c61e80b65f9fc55c6be5f9fd0458",name:"actions"}))))))}static get watchers(){return{open:[{handleOpenChange:0}]}}};m.style=" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('RouterBook-Regular'), local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'); font-weight: 400; } @font-face { font-family: Router; src: local('RouterMedium-Regular'), local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'); font-weight: 500; } @font-face { font-family: Router; src: local('RouterBold-Regular'), local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'); font-weight: 700; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } hr { height: 0; border: none; margin: var(--lmvz-dimension-4-8, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)) 0; border-top: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-subtle, #f0f0f0); } } :host { display: contents; --lmvz-modal-shell-gap: var(--lmvz-dimension-16-20, clamp(1rem, 0.94rem + 0.26vw, 1.25rem)); } dialog { border: none; padding: 0; background: transparent; height: 100vh; width: 100vw; contain: layout size; } dialog::backdrop { background: rgba(0, 0, 0, 0.19); background: rgb(from var(--lmvz-semantic-color-int-primary, #000000) r g b / 0.29); } .modal-shell { margin-inline: auto; top: 50%; transform: translateY(-50%); box-sizing: border-box; width: fit-content; max-height: 100%; max-width: clamp(20rem, 100%, 90vw); display: flex; flex-direction: column; gap: var(--lmvz-modal-shell-gap); padding: var(--lmvz-component-wrapper-lg-padding-y, clamp(2.25rem, 2.19rem + 0.26vw, 2.5rem)) var(--lmvz-component-wrapper-lg-padding-x, clamp(1.5rem, 1.14rem + 1.55vw, 3rem)); border-radius: var(--lmvz-component-wrapper-lg-border-radius, 18px); background: var(--lmvz-semantic-color-surface-primary, #ffffff); position: relative; .close-button { position: absolute; top: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); right: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); } } .header { display: flex; align-items: flex-start; justify-content: flex-end; gap: var(--lmvz-modal-shell-gap); } .title { min-inline-size: 0; font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.5 Router); } .has-title .title { flex: 1 1 auto; } .body { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); flex: 1; overflow: scroll; } ";export{m as lmvz_modal}
1
+ import{g as e,r as t,c as o,h as i,H as s}from"./p-BPeerEwm.js";import{c as a}from"./p-BSV3KDWl.js";import{t as r}from"./p-DjvtQE7c.js";import{A as l}from"./p-D9PQIBzA.js";import{a as n,g as d}from"./p-B0eCxdyI.js";import{R as c}from"./p-FBuCCcFC.js";import"./p-D06Ds9Dh.js";import"./p-BDonpCG8.js";const h=r(a);let f=0;const m=class extends c{get el(){return e(this)}inheritedAriaAttributes={};dialogEl;dialogStateObserver;headerSlot;buttonGroupEl;closeButtonEl;previouslyFocusedElement=null;wrappedDialogShowModal;pendingCloseReturnValue;dialogTitleId="lmvz-modal-title-"+f++;hasHeader=!1;open=!1;closeLabel="Schliessen";dialogClose;dialogCancel;get dialog(){return this.dialogEl}get validationEl(){return this.dialogEl??this.el}constructor(e){super(),t(this,e),this.dialogClose=o(this,"close",6),this.dialogCancel=o(this,"cancel",1),this.addController(new l(this,{validationTiming:"slot"}))}handleFormDialogSubmit(e){const t=e.submitter;("dialog"===e.target.method||"dialog"===t?.getAttribute("formmethod"))&&(e.preventDefault(),this.dialogEl?.close(t?.value??""))}connectedCallback(){this.inheritedAriaAttributes=n(this.el,["role"]),Object.defineProperty(this.el,"dialog",{configurable:!0,enumerable:!0,get:()=>(this.ensureDialogShowModalCapture(),this.dialogEl)}),super.connectedCallback()}componentDidLoad(){this.handleHeaderSlotChange(),this.observeDialogState(),this.syncDialogVisibility(),super.componentDidLoad()}disconnectedCallback(){this.dialogStateObserver?.disconnect(),super.disconnectedCallback()}componentDidRender(){this.open&&this.focusPrimaryAction(),super.componentDidRender()}handleOpenChange(){this.syncDialogVisibility()}get dialogAccessibilityAttributes(){const e={...this.inheritedAriaAttributes};if(delete e["aria-label"],delete e["aria-labelledby"],this.hasHeader)return e["aria-labelledby"]=this.dialogTitleId,e;const t=this.inheritedAriaAttributes["aria-labelledby"];if("string"==typeof t)return e["aria-labelledby"]=t,e;const o=this.inheritedAriaAttributes["aria-label"];return"string"==typeof o&&(e["aria-label"]=o),e}hasAssignedContent(e){return Boolean(e?.assignedNodes({flatten:!0}).some((e=>e.nodeType===Node.TEXT_NODE?Boolean(e.textContent?.trim()):e.nodeType===Node.ELEMENT_NODE)))}observeDialogState(){this.dialogEl&&"undefined"!=typeof MutationObserver&&(this.dialogStateObserver?.disconnect(),this.dialogStateObserver=new MutationObserver((()=>{this.dialogEl&&this.dialogEl.open!==this.open&&(this.open=!!this.dialogEl.open)})),this.dialogStateObserver.observe(this.dialogEl,{attributes:!0,attributeFilter:["open"]}))}capturePreviouslyFocusedElement(){const e=this.dialogEl,t=d(document);e&&t&&!e.contains(t)&&(this.previouslyFocusedElement=t)}ensureDialogShowModalCapture(){const e=this.dialogEl;if(!e||"function"!=typeof e.showModal)return;const t=e.showModal;if(t===this.wrappedDialogShowModal)return;const o=()=>(this.capturePreviouslyFocusedElement(),t.call(e));Object.defineProperty(e,"showModal",{configurable:!0,value:o}),this.wrappedDialogShowModal=o}syncDialogVisibility(){const e=this.dialogEl;if(e)return this.open?(e.open||(this.capturePreviouslyFocusedElement(),"function"==typeof e.showModal?e.showModal():e.setAttribute("open","")),void this.focusPrimaryAction()):void(e.open&&("function"==typeof e.close?e.close():(e.removeAttribute("open"),this.handleDialogClose())))}focusPrimaryAction(){const e=this.buttonGroupEl?.primaryEnabledAction??this.closeButtonEl;e&&"undefined"!=typeof window&&window.requestAnimationFrame((()=>{this.open&&e.focus()}))}restoreFocus(){this.previouslyFocusedElement?.isConnected&&(this.previouslyFocusedElement.focus(),this.previouslyFocusedElement=null)}handleCloseButtonClick=()=>{if(!this.dialogEl)return;const e=this.dialogEl;if("function"==typeof e.requestClose)return this.pendingCloseReturnValue="close",void e.requestClose("close");"function"!=typeof this.dialogEl.close?this.handleDialogClose():this.dialogEl.close("close")};handleDialogCancel=e=>{if(e.preventDefault(),this.dialogCancel.emit().defaultPrevented)return void(this.pendingCloseReturnValue=void 0);const t=this.pendingCloseReturnValue;this.pendingCloseReturnValue=void 0,this.dialogEl?.close(t)};handleDialogClose=()=>{console.log("Dialog close handler called"),this.open&&(this.open=!1),this.restoreFocus(),this.dialogClose.emit()};handleHeaderSlotChange=()=>{this.hasHeader=this.hasAssignedContent(this.headerSlot)};render(){return i(s,{key:"8b5f506cdac223a440309d472639fe965b94f8c2"},i("dialog",{key:"0b70ac4d9590266271052c4d7fdef03c684d9b72",ref:e=>this.dialogEl=e,onCancel:this.handleDialogCancel,onClose:this.handleDialogClose,...this.dialogAccessibilityAttributes},i("div",{key:"25b529bec1905408c2041b7370ab37586eade47d",class:"modal-shell"},i("header",{key:"d86ae4a6f4ac7f6efd38385f1407d1f6bfbb1abb",class:{header:!0,"has-title":this.hasHeader}},i("div",{key:"7fd7059bfb0b90834895a87c2f2598e2e8c2ba80",class:"title",id:this.dialogTitleId,hidden:!this.hasHeader},i("slot",{key:"b6eb7885e220e5def4c3c8420d5b83f4a7e30907",name:"header",ref:e=>this.headerSlot=e,onSlotchange:this.handleHeaderSlotChange})),i("lmvz-button",{key:"dcebb06482cdef7423c6b62ef877ca9aaabf55a4",ref:e=>this.closeButtonEl=e,type:"button",class:"close-button","aria-label":this.closeLabel,onClick:this.handleCloseButtonClick,variant:"tertiary"},i("lmvz-icon",{key:"0db22c68fe164ed2a33bfaeacf9eac619424f464",icon:h}))),i("div",{key:"ef402c343f2c68210351f7556eec08f2e9be851b",class:"body"},i("slot",{key:"3fe86dc88c88c2cf7bfe3429c62cb2047b64611a"})),i("footer",{key:"92b7bdab1ffe700749fc029723f70913f436397d",class:"actions",hidden:!this.buttonGroupEl?.hasActions},i("lmvz-button-group",{key:"7e1b310fb1b20449ead14d0702af4977c74198dd",ref:e=>this.buttonGroupEl=e},i("slot",{key:"cb2187ab2758c61e80b65f9fc55c6be5f9fd0458",name:"actions"}))))))}static get watchers(){return{open:[{handleOpenChange:0}]}}};m.style=" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('RouterBook-Regular'), local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'); font-weight: 400; } @font-face { font-family: Router; src: local('RouterMedium-Regular'), local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'); font-weight: 500; } @font-face { font-family: Router; src: local('RouterBold-Regular'), local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'); font-weight: 700; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } hr { height: 0; border: none; margin: var(--lmvz-dimension-4-8, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)) 0; border-top: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-subtle, #f0f0f0); } } :host { display: contents; --lmvz-modal-shell-gap: var(--lmvz-dimension-16-20, clamp(1rem, 0.94rem + 0.26vw, 1.25rem)); } dialog { border: none; padding: 0; background: transparent; height: 100vh; width: 100vw; contain: layout size; } dialog::backdrop { background: rgba(0, 0, 0, 0.19); background: rgb(from var(--lmvz-semantic-color-int-primary, #000000) r g b / 0.29); } .modal-shell { margin-inline: auto; top: 50%; transform: translateY(-50%); box-sizing: border-box; width: fit-content; max-height: 100%; max-width: clamp(20rem, 100%, 90vw); display: flex; flex-direction: column; gap: var(--lmvz-modal-shell-gap); padding: var(--lmvz-component-wrapper-lg-padding-y, clamp(2.25rem, 2.19rem + 0.26vw, 2.5rem)) var(--lmvz-component-wrapper-lg-padding-x, clamp(1.5rem, 1.14rem + 1.55vw, 3rem)); border-radius: var(--lmvz-component-wrapper-lg-border-radius, 18px); background: var(--lmvz-semantic-color-surface-primary, #ffffff); position: relative; .close-button { position: absolute; top: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); right: var(--lmvz-dimension-10-12, clamp(0.63rem, 0.59rem + 0.13vw, 0.75rem)); } } .header { display: flex; align-items: flex-start; justify-content: flex-end; gap: var(--lmvz-modal-shell-gap); } .title { min-inline-size: 0; font: var(--lmvz-typography-heading-lg, 500 clamp(1.25rem, 1.19rem + 0.26vw, 1.5rem) / 1.5 Router); } .has-title .title { flex: 1 1 auto; } .body { font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router); flex: 1; overflow: scroll; } ";export{m as lmvz_modal}
@@ -0,0 +1 @@
1
+ import{g as t,r as o,c as r,h as e,H as n}from"./p-BPeerEwm.js";import{c as i}from"./p-BfTCfPZ1.js";import{A as a}from"./p-D9PQIBzA.js";import{E as l}from"./p-CN0JX9-m.js";import{a as m,j as v}from"./p-B0eCxdyI.js";import{R as s}from"./p-FBuCCcFC.js";import{p as d}from"./p-DjvtQE7c.js";import{a as c}from"./p-CyDgnpOB.js";import"./p-BDonpCG8.js";import"./p-D06Ds9Dh.js";const u=class extends s{get el(){return t(this)}validationEl;inheritedAttributes={};formEl=null;formButtonEl=null;lmvzActivation;ti=0;resolveFocusableElement(){return this.validationEl}scale="default";variant;disabled=!1;type="button";form;formMethod;name;value;buttonRole;constructor(t){super(),o(this,t),this.lmvzActivation=r(this,"lmvzActivation",7),this.addController(new a(this)),this.addController(new l(this,{localHandler:this.handleClick.bind(this),keys:["Enter"]}))}connectedCallback(){this.inheritedAttributes=m(this.el,["role"]),super.connectedCallback()}disconnectedCallback(){this.formButtonEl?.remove(),this.formButtonEl=null,this.formEl=null,super.disconnectedCallback()}renderHiddenButton(){if("submit"!==this.type)return this.formButtonEl?.remove(),this.formButtonEl=null,void(this.formEl=null);const t=v(this.form,this.el);if(!t)return this.formButtonEl?.remove(),this.formButtonEl=null,void(this.formEl=null);this.formEl=t;const o=this.formButtonEl??document.createElement("button");o.type="submit",o.style.display="none",o.disabled=this.disabled,o.name=this.name??"",o.value=this.value??"",this.formMethod?o.setAttribute("formmethod",this.formMethod):o.removeAttribute("formmethod"),this.formButtonEl!==o&&(this.formButtonEl=o),o.parentElement!==t&&(o.remove(),t.appendChild(o))}submitForm(t){this.formEl&&this.formButtonEl&&(t.preventDefault(),this.formButtonEl.click())}handleClick=t=>{"submit"===this.type&&this.submitForm(t)};render(){return this.renderHiddenButton(),e(n,{key:"f3e619dca398c3a8a78e9d2f8c3df4178b2531b2",role:"presentation"},e("button",{key:"eb1aac6756a70968d3a72cb40c1d52d96340423e",ref:t=>this.validationEl=t,part:"button",role:this.buttonRole,disabled:this.disabled,type:this.type,class:i(this.variant??"secondary",{[this.scale??""]:!!this.scale,disabled:this.disabled}),...this.inheritedAttributes},e("slot",{key:"786ff1c10ae05eda646c77ac8779813be6e51949"})))}static get delegatesFocus(){return!0}};u.style=" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('RouterBook-Regular'), local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'); font-weight: 400; } @font-face { font-family: Router; src: local('RouterMedium-Regular'), local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'); font-weight: 500; } @font-face { font-family: Router; src: local('RouterBold-Regular'), local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'); font-weight: 700; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } *[hidden] { display: none !important; } hr { height: 0; border: none; margin: var(--lmvz-dimension-4-8, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)) 0; border-top: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-subtle, #f0f0f0); } } :host { button { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-secondary, #f0f0f0)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-int-on-secondary, #000000)); --lmvz-button-radius: var(--lmvz-button-radius-override, var(--lmvz-component-input-radius-default, 999px)); --lmvz-button-padding-inline: var(--lmvz-button-padding-inline-override, var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)))); --lmvz-button-padding-block: var(--lmvz-button-padding-block-override, var(--lmvz-button-padding, var(--lmvz-component-input-padding-md, clamp(0.88rem, 0.84rem + 0.13vw, 1rem)))); --lmvz-button-gap: var(--lmvz-button-gap-override, var(--lmvz-component-input-gap-md, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem))); --lmvz-button-min-height: var(--lmvz-button-min-height-override, var(--lmvz-component-input-size-md, clamp(2.5rem, 2.44rem + 0.26vw, 2.75rem))); --lmvz-button-font: var(--lmvz-button-font-override, var(--lmvz-typography-label-md-strong, normal 700 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.5 Router)); --lmvz-button-border-width: var(--lmvz-button-border-width-override, 0); --lmvz-button-border-color: var(--lmvz-button-border-color-override, transparent); display: inline-flex; align-items: center; justify-content: var(--lmvz-button-content-justification-override, center); gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); min-height: var(--lmvz-button-min-height); border-radius: var(--lmvz-button-radius); border: var(--lmvz-button-border-width) solid var(--lmvz-button-border-color); background-color: var(--lmvz-button-background); color: var(--lmvz-button-color); cursor: pointer; font: var(--lmvz-button-font); text-decoration: none; white-space: nowrap; transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; } button > * { font: inherit; color: inherit; } button:focus-visible { outline: var(--lmvz-ds-outline, 1px solid #0e7ab4); outline-offset: var(--lmvz-ds-outline-offset, clamp(0.25rem, 0.19rem + 0.26vw, 0.5rem)); position: relative; z-index: 1; } button:is([disabled], .disabled) { cursor: not-allowed; pointer-events: none; opacity: var(--lmvz-component-input-disabled-opacity, 40%); } button:not([disabled]):hover { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0)); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-secondary-active, #d4d4d4)); } button.primary { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-primary, #000000)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-border-width: var(--lmvz-button-border-width-override, 0); --lmvz-button-border-color: var(--lmvz-button-border-color-override, transparent); } button.primary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-primary-hover, #2e2e2e)); } button.primary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-primary-active, #545454)); } button.danger { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-tertiary, #ffffff)); --lmvz-button-border-color: var(--lmvz-button-border-color-override, transparent); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-status-on-danger, #e52a31)); } button.danger:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-status-danger, #fdf1f2)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-status-on-danger, #e52a31)); } button.danger:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-status-on-danger-subtle, #f7bfc2)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-status-on-danger, #e52a31)); } button.tertiary { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-tertiary, #ffffff)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-int-on-tertiary, #000000)); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-int-on-tertiary-hover, #000000)); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-button-background-override, var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0)); --lmvz-button-color: var(--lmvz-button-color-override, var(--lmvz-semantic-color-int-on-tertiary-active, #000000)); } button.small { --lmvz-button-padding-inline: var(--lmvz-button-padding-inline-override, var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem))); --lmvz-button-padding-block: var(--lmvz-button-padding-block-override, var(--lmvz-component-input-padding-sm, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem))); --lmvz-button-gap: var(--lmvz-button-gap-override, var(--lmvz-component-input-gap-sm, clamp(0.38rem, 0.31rem + 0.26vw, 0.63rem))); --lmvz-button-min-height: var(--lmvz-button-min-height-override, var(--lmvz-component-input-size-sm, clamp(2rem, 1.94rem + 0.26vw, 2.25rem))); --lmvz-button-font: var(--lmvz-button-font-override, var(--lmvz-typography-label-sm-strong, normal 700 clamp(0.69rem, 0.67rem + 0.06vw, 0.75rem) / 1.5 Router)); } button.large { --lmvz-button-padding-inline: var(--lmvz-button-padding-inline-override, var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem))); --lmvz-button-padding-block: var(--lmvz-button-padding-block-override, var(--lmvz-component-input-padding-lg, clamp(1rem, 0.94rem + 0.26vw, 1.25rem))); --lmvz-button-gap: var(--lmvz-button-gap-override, var(--lmvz-component-input-gap-lg, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-min-height: var(--lmvz-button-min-height-override, var(--lmvz-component-input-size-lg, clamp(2.75rem, 2.69rem + 0.26vw, 3rem))); --lmvz-button-font: var(--lmvz-button-font-override, var(--lmvz-typography-label-lg-strong, normal 700 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.5 Router)); } display: inline-block; button { width: 100%; } } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } ";const b=class extends s{intersectionObserver;ariaValidationController=new a(this);get el(){return t(this)}validationEl;icon;weight="medium";size="md";iconset;iconData;visible=!1;ariaLabel;get ariaHidden(){return!this.ariaLabel}constructor(t){super(),o(this,t),this.addController(this.ariaValidationController)}connectedCallback(){this.waitUntilVisible((()=>{this.visible=!0,this.loadIconPathData()})),super.connectedCallback()}disconnectedCallback(){this.intersectionObserver&&"function"==typeof this.intersectionObserver.disconnect&&this.intersectionObserver.disconnect(),this.intersectionObserver=void 0,super.disconnectedCallback()}async loadIconPathData(){const{icon:t,iconset:o,visible:r}=this;if(!t||!r)return;const e=d(t);this.iconData=e||await c({icon:t,iconset:o})}componentDidRender(){this.validationEl=this.el.querySelector("svg"),this.ariaValidationController.revalidateAria(),super.componentDidRender()}render(){return e(n,{key:"4fba217d573d968951819f12af24d775c8ac62dc",role:"img","aria-hidden":`${this.ariaHidden}`,innerHTML:this.iconData})}waitUntilVisible(t,o=50){"undefined"!=typeof window&&window.IntersectionObserver?(this.intersectionObserver=new IntersectionObserver((o=>{o.some((o=>!!o.isIntersecting&&(this.intersectionObserver&&"function"==typeof this.intersectionObserver.disconnect&&this.intersectionObserver.disconnect(),this.intersectionObserver=void 0,t(),!0)))}),{rootMargin:`${o}px`}),this.intersectionObserver.observe(this.el)):t()}static get watchers(){return{icon:[{loadIconPathData:0}],iconset:[{loadIconPathData:0}]}}};b.style=".sc-lmvz-icon-h{--lmvz-icon-color:var(--lmvz-component-color, var(--lmvz-semantic-color-on-surface-input-primary, #000000));--lmvz-icon-size:var(--lmvz-component-size, var(--lmvz-component-icon-size-md, clamp(1rem, 0.94rem + 0.26vw, 1.25rem)));display:inline-block;line-height:0;svg{display:block;height:var(--lmvz-icon-size);width:auto}svg path{stroke:var(--lmvz-icon-color);fill:none}}[size='xs'].sc-lmvz-icon-h{svg{--lmvz-icon-size:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem))}}[size='sm'].sc-lmvz-icon-h{svg{--lmvz-icon-size:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.84rem + 0.13vw, 1rem))}}[size='md'].sc-lmvz-icon-h{svg{--lmvz-icon-size:var(--lmvz-component-icon-size-md, clamp(1rem, 0.94rem + 0.26vw, 1.25rem))}}[size='lg'].sc-lmvz-icon-h{svg{--lmvz-icon-size:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.44rem + 0.26vw, 1.75rem))}}[size='inherit'].sc-lmvz-icon-h{svg{height:var(--lmvz-component-size, inherit)}}[weight='light'].sc-lmvz-icon-h{svg path{stroke-width:1}}[weight='medium'].sc-lmvz-icon-h{svg path{stroke-width:1.5}}[weight='bold'].sc-lmvz-icon-h{svg path{stroke-width:2}}[weight='filled'].sc-lmvz-icon-h{svg path{stroke-width:2;fill:var(--lmvz-icon-color)}}";export{u as lmvz_button,b as lmvz_icon}
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-06-23T09:00:42",
2
+ "timestamp": "2026-06-25T13:11:11",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.5",
@@ -456,10 +456,10 @@
456
456
  },
457
457
  {
458
458
  "name": "variant",
459
- "type": "\"primary\" | \"secondary\" | \"tertiary\" | undefined",
459
+ "type": "\"danger\" | \"primary\" | \"secondary\" | \"tertiary\" | undefined",
460
460
  "complexType": {
461
461
  "original": "Button.Variant",
462
- "resolved": "\"primary\" | \"secondary\" | \"tertiary\" | undefined",
462
+ "resolved": "\"danger\" | \"primary\" | \"secondary\" | \"tertiary\" | undefined",
463
463
  "references": {
464
464
  "Button": {
465
465
  "location": "import",
@@ -480,6 +480,10 @@
480
480
  }
481
481
  ],
482
482
  "values": [
483
+ {
484
+ "value": "danger",
485
+ "type": "string"
486
+ },
483
487
  {
484
488
  "value": "primary",
485
489
  "type": "string"
@@ -6502,6 +6506,380 @@
6502
6506
  ]
6503
6507
  }
6504
6508
  },
6509
+ {
6510
+ "filePath": "src/components/lmvz-popover/lmvz-popover.tsx",
6511
+ "encapsulation": "shadow",
6512
+ "tag": "lmvz-popover",
6513
+ "readme": "# lmvz-popover\n\nA non-modal floating dialog anchored to a trigger element. Positions automatically via `@floating-ui/dom` with collision avoidance (flip and shift middleware). Content-agnostic: accepts any slotted elements.\n\n## Usage\n\nAnchor the popover to a trigger element by setting the `anchor` prop to the trigger's `id` or element reference.\n\nIf no `id` is set on the popover host, one is auto-assigned at load time.\n\n```html\n<button\n id=\"trigger\"\n onclick=\"document.getElementById('my-popover').toggle()\"\n>\n Open menu\n</button>\n<lmvz-popover id=\"my-popover\" anchor=\"trigger\" label=\"Menu options\">\n <p>Popover content goes here</p>\n</lmvz-popover>\n```\n\n## Props\n\n| Prop | Type | Default | Description |\n|---|---|---|---|\n| `open` | `boolean` | `false` | Opens or closes the popover. |\n| `anchor` | `string \\| HTMLElement` | – | Anchor element id or reference for positioning. |\n| `placement` | `'top' \\| 'bottom' \\| 'start' \\| 'end' \\| 'top-start' \\| 'top-end' \\| 'bottom-start' \\| 'bottom-end'` | `'bottom-start'` | Preferred placement relative to the anchor. |\n| `size` | `'sm' \\| 'md' \\| 'lg'` | `'sm'` | Size variant of the card surface. |\n| `autoFocus` | `boolean` | `true` | Moves focus to the first focusable element when opened. |\n| `label` | `string` | – | Accessible label for the popover container (reflected on dialog role). |\n\n## Slots\n\n| Slot | Description |\n|---|---|\n| `default` | Popover content. Any elements may be slotted. |\n\n## Events\n\n| Event | Cancelable | Description |\n|---|---|---|\n| `lmvzOpen` | No | Fired after the popover opens. |\n| `lmvzClose` | No | Fired after the popover closes. |\n| `lmvzCancel` | **Yes** | Fired before light-dismiss (click outside) or Escape close. Call `event.preventDefault()` to veto the close and keep the popover open. |\n\n## Methods\n\n| Method | Returns | Description |\n|---|---|---|\n| `show()` | `Promise<void>` | Opens the popover. |\n| `hide()` | `Promise<void>` | Closes the popover after firing `lmvzCancel`. If `lmvzCancel` is prevented, the popover remains open. |\n| `toggle()` | `Promise<void>` | Toggles the open state. |\n\n## CSS Customization\n\n### Shadow Parts\n\n| Part | Description |\n|---|---|\n| `container` | The popover's dialog container. Target to customize positioning, overflow, or appearance. |\n\n### Custom Properties\n\n| Property | Description | Default |\n|---|---|---|\n| `--lmvz-popover-max-width` | Maximum width of the popover surface. | `none` |\n| `--lmvz-popover-max-height` | Maximum height of the popover surface. | `none` |\n| `--lmvz-popover-z-index` | Z-index of the popover surface. | `1` |\n\n## Accessibility\n\n### Trigger Requirements\n\nWhen you set the `anchor` prop, the popover automatically writes three ARIA attributes to the resolved anchor element for screen reader and assistive technology support:\n\n- **`aria-haspopup=\"dialog\"`** — Announces that the trigger opens a dialog.\n- **`aria-expanded`** — Reflects the popover's open state (`\"true\"` when open, `\"false\"` when closed).\n- **`aria-controls`** — Points to the popover's `id` to establish the relationship between trigger and content.\n\nDo not set these attributes manually. Exception: if you pre-set `aria-haspopup` to a different value (e.g. `\"menu\"` for an action-list popover), the component preserves your value.\n\n### Content Semantics\n\nThe component renders a `role=\"dialog\"` container. Provide a `label` prop or set `aria-labelledby` on the host element to satisfy dialog labeling requirements.\n\n### AriaValidation\n\nWhen `@lmvz-ds/aria-validation` is enabled (development only), the component validates:\n\n- **Host element:** Must have an accessible label via the `label` prop or `aria-labelledby` attribute.\n- **Anchor element:** Must be interactive and focusable (e.g., `<button>`, `<a href>`, elements with `tabindex`, or elements with an interactive ARIA role). Non-interactive anchors produce a dev-time warning.\n\nValidation is disabled in production builds and test runtimes.\n\n## Notes\n\n- The popover is non-modal: focus is not trapped, and interaction outside does not require acknowledgment.\n- Positioning is automatic with collision avoidance. Use `placement` to express preference, but the component will flip or shift as needed to keep content visible.\n- Light-dismiss (clicking outside the popover or pressing Escape) fires `lmvzCancel` first, allowing consumers to intercept and prevent close (e.g., to warn unsaved changes).\n\n## Out of Scope\n\nIntegration with sibling components (e.g., action-list, select, date-picker) is intentionally not implemented in the popover itself. These components integrate via the trigger element and slot content, and remain the responsibility of the consuming application.\n",
6514
+ "docs": "A non-modal floating dialog anchored to a trigger element. Positions automatically via `@floating-ui/dom` with collision avoidance (flip and shift middleware). Content-agnostic: accepts any slotted elements.",
6515
+ "docsTags": [
6516
+ {
6517
+ "name": "slot",
6518
+ "text": "default - Popover content. Any element may be slotted here."
6519
+ }
6520
+ ],
6521
+ "usage": {},
6522
+ "props": [
6523
+ {
6524
+ "name": "anchor",
6525
+ "type": "HTMLElement | string | undefined",
6526
+ "complexType": {
6527
+ "original": "string | HTMLElement",
6528
+ "resolved": "HTMLElement | string | undefined",
6529
+ "references": {
6530
+ "HTMLElement": {
6531
+ "location": "global",
6532
+ "id": "global::HTMLElement"
6533
+ }
6534
+ }
6535
+ },
6536
+ "mutable": false,
6537
+ "attr": "anchor",
6538
+ "reflectToAttr": false,
6539
+ "docs": "The anchor element or its id. Used for positioning.",
6540
+ "docsTags": [],
6541
+ "values": [
6542
+ {
6543
+ "type": "HTMLElement"
6544
+ },
6545
+ {
6546
+ "type": "string"
6547
+ },
6548
+ {
6549
+ "type": "undefined"
6550
+ }
6551
+ ],
6552
+ "optional": true,
6553
+ "required": false,
6554
+ "getter": false,
6555
+ "setter": false
6556
+ },
6557
+ {
6558
+ "name": "autoFocus",
6559
+ "type": "boolean",
6560
+ "complexType": {
6561
+ "original": "boolean",
6562
+ "resolved": "boolean",
6563
+ "references": {}
6564
+ },
6565
+ "mutable": false,
6566
+ "attr": "auto-focus",
6567
+ "reflectToAttr": false,
6568
+ "docs": "Whether to move focus to the first focusable element on open.",
6569
+ "docsTags": [
6570
+ {
6571
+ "name": "default",
6572
+ "text": "true"
6573
+ }
6574
+ ],
6575
+ "default": "true",
6576
+ "values": [
6577
+ {
6578
+ "type": "boolean"
6579
+ }
6580
+ ],
6581
+ "optional": false,
6582
+ "required": false,
6583
+ "getter": false,
6584
+ "setter": false
6585
+ },
6586
+ {
6587
+ "name": "label",
6588
+ "type": "string | undefined",
6589
+ "complexType": {
6590
+ "original": "string",
6591
+ "resolved": "string | undefined",
6592
+ "references": {}
6593
+ },
6594
+ "mutable": false,
6595
+ "attr": "label",
6596
+ "reflectToAttr": false,
6597
+ "docs": "Accessible label for the popover container.",
6598
+ "docsTags": [],
6599
+ "values": [
6600
+ {
6601
+ "type": "string"
6602
+ },
6603
+ {
6604
+ "type": "undefined"
6605
+ }
6606
+ ],
6607
+ "optional": true,
6608
+ "required": false,
6609
+ "getter": false,
6610
+ "setter": false
6611
+ },
6612
+ {
6613
+ "name": "open",
6614
+ "type": "boolean",
6615
+ "complexType": {
6616
+ "original": "boolean",
6617
+ "resolved": "boolean",
6618
+ "references": {}
6619
+ },
6620
+ "mutable": true,
6621
+ "attr": "open",
6622
+ "reflectToAttr": true,
6623
+ "docs": "Whether the popover is open.",
6624
+ "docsTags": [
6625
+ {
6626
+ "name": "default",
6627
+ "text": "false"
6628
+ }
6629
+ ],
6630
+ "default": "false",
6631
+ "values": [
6632
+ {
6633
+ "type": "boolean"
6634
+ }
6635
+ ],
6636
+ "optional": false,
6637
+ "required": false,
6638
+ "getter": false,
6639
+ "setter": false
6640
+ },
6641
+ {
6642
+ "name": "placement",
6643
+ "type": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"end\" | \"start\" | \"top\" | \"top-end\" | \"top-start\"",
6644
+ "complexType": {
6645
+ "original": "Popover.Placement",
6646
+ "resolved": "\"bottom\" | \"bottom-end\" | \"bottom-start\" | \"end\" | \"start\" | \"top\" | \"top-end\" | \"top-start\"",
6647
+ "references": {
6648
+ "Popover": {
6649
+ "location": "import",
6650
+ "path": "../../api",
6651
+ "id": "src/api/index.d.ts::Popover",
6652
+ "referenceLocation": "Popover"
6653
+ }
6654
+ }
6655
+ },
6656
+ "mutable": false,
6657
+ "attr": "placement",
6658
+ "reflectToAttr": false,
6659
+ "docs": "Preferred placement relative to the anchor.",
6660
+ "docsTags": [
6661
+ {
6662
+ "name": "default",
6663
+ "text": "'bottom-start'"
6664
+ }
6665
+ ],
6666
+ "default": "'bottom-start'",
6667
+ "values": [
6668
+ {
6669
+ "value": "bottom",
6670
+ "type": "string"
6671
+ },
6672
+ {
6673
+ "value": "bottom-end",
6674
+ "type": "string"
6675
+ },
6676
+ {
6677
+ "value": "bottom-start",
6678
+ "type": "string"
6679
+ },
6680
+ {
6681
+ "value": "end",
6682
+ "type": "string"
6683
+ },
6684
+ {
6685
+ "value": "start",
6686
+ "type": "string"
6687
+ },
6688
+ {
6689
+ "value": "top",
6690
+ "type": "string"
6691
+ },
6692
+ {
6693
+ "value": "top-end",
6694
+ "type": "string"
6695
+ },
6696
+ {
6697
+ "value": "top-start",
6698
+ "type": "string"
6699
+ }
6700
+ ],
6701
+ "optional": false,
6702
+ "required": false,
6703
+ "getter": false,
6704
+ "setter": false
6705
+ },
6706
+ {
6707
+ "name": "size",
6708
+ "type": "\"lg\" | \"md\" | \"sm\"",
6709
+ "complexType": {
6710
+ "original": "Popover.Size",
6711
+ "resolved": "\"lg\" | \"md\" | \"sm\"",
6712
+ "references": {
6713
+ "Popover": {
6714
+ "location": "import",
6715
+ "path": "../../api",
6716
+ "id": "src/api/index.d.ts::Popover",
6717
+ "referenceLocation": "Popover"
6718
+ }
6719
+ }
6720
+ },
6721
+ "mutable": false,
6722
+ "attr": "size",
6723
+ "reflectToAttr": false,
6724
+ "docs": "Controls the size variant of the card surface.",
6725
+ "docsTags": [
6726
+ {
6727
+ "name": "default",
6728
+ "text": "'sm'"
6729
+ }
6730
+ ],
6731
+ "default": "'sm'",
6732
+ "values": [
6733
+ {
6734
+ "value": "lg",
6735
+ "type": "string"
6736
+ },
6737
+ {
6738
+ "value": "md",
6739
+ "type": "string"
6740
+ },
6741
+ {
6742
+ "value": "sm",
6743
+ "type": "string"
6744
+ }
6745
+ ],
6746
+ "optional": false,
6747
+ "required": false,
6748
+ "getter": false,
6749
+ "setter": false
6750
+ }
6751
+ ],
6752
+ "methods": [
6753
+ {
6754
+ "name": "hide",
6755
+ "returns": {
6756
+ "type": "Promise<void>",
6757
+ "docs": ""
6758
+ },
6759
+ "complexType": {
6760
+ "signature": "() => Promise<void>",
6761
+ "parameters": [],
6762
+ "references": {
6763
+ "Promise": {
6764
+ "location": "global",
6765
+ "id": "global::Promise"
6766
+ }
6767
+ },
6768
+ "return": "Promise<void>"
6769
+ },
6770
+ "signature": "hide() => Promise<void>",
6771
+ "parameters": [],
6772
+ "docs": "Closes the popover, firing lmvzCancel first. If cancelled, the popover stays open.",
6773
+ "docsTags": []
6774
+ },
6775
+ {
6776
+ "name": "show",
6777
+ "returns": {
6778
+ "type": "Promise<void>",
6779
+ "docs": ""
6780
+ },
6781
+ "complexType": {
6782
+ "signature": "() => Promise<void>",
6783
+ "parameters": [],
6784
+ "references": {
6785
+ "Promise": {
6786
+ "location": "global",
6787
+ "id": "global::Promise"
6788
+ }
6789
+ },
6790
+ "return": "Promise<void>"
6791
+ },
6792
+ "signature": "show() => Promise<void>",
6793
+ "parameters": [],
6794
+ "docs": "Opens the popover.",
6795
+ "docsTags": []
6796
+ },
6797
+ {
6798
+ "name": "toggle",
6799
+ "returns": {
6800
+ "type": "Promise<void>",
6801
+ "docs": ""
6802
+ },
6803
+ "complexType": {
6804
+ "signature": "() => Promise<void>",
6805
+ "parameters": [],
6806
+ "references": {
6807
+ "Promise": {
6808
+ "location": "global",
6809
+ "id": "global::Promise"
6810
+ }
6811
+ },
6812
+ "return": "Promise<void>"
6813
+ },
6814
+ "signature": "toggle() => Promise<void>",
6815
+ "parameters": [],
6816
+ "docs": "Toggles the popover open state.",
6817
+ "docsTags": []
6818
+ }
6819
+ ],
6820
+ "events": [
6821
+ {
6822
+ "event": "lmvzCancel",
6823
+ "detail": "void",
6824
+ "bubbles": true,
6825
+ "complexType": {
6826
+ "original": "void",
6827
+ "resolved": "void",
6828
+ "references": {}
6829
+ },
6830
+ "cancelable": true,
6831
+ "composed": true,
6832
+ "docs": "Fired before light-dismiss or Escape close.\nCall `event.preventDefault()` to veto the close.",
6833
+ "docsTags": []
6834
+ },
6835
+ {
6836
+ "event": "lmvzClose",
6837
+ "detail": "void",
6838
+ "bubbles": true,
6839
+ "complexType": {
6840
+ "original": "void",
6841
+ "resolved": "void",
6842
+ "references": {}
6843
+ },
6844
+ "cancelable": true,
6845
+ "composed": true,
6846
+ "docs": "Fired after the popover closes.",
6847
+ "docsTags": []
6848
+ },
6849
+ {
6850
+ "event": "lmvzOpen",
6851
+ "detail": "void",
6852
+ "bubbles": true,
6853
+ "complexType": {
6854
+ "original": "void",
6855
+ "resolved": "void",
6856
+ "references": {}
6857
+ },
6858
+ "cancelable": true,
6859
+ "composed": true,
6860
+ "docs": "Fired after the popover opens.",
6861
+ "docsTags": []
6862
+ }
6863
+ ],
6864
+ "listeners": [],
6865
+ "styles": [],
6866
+ "slots": [
6867
+ {
6868
+ "name": "default",
6869
+ "docs": "Popover content. Any element may be slotted here."
6870
+ }
6871
+ ],
6872
+ "parts": [
6873
+ {
6874
+ "name": "container",
6875
+ "docs": ""
6876
+ }
6877
+ ],
6878
+ "states": [],
6879
+ "dependents": [],
6880
+ "dependencies": [],
6881
+ "dependencyGraph": {}
6882
+ },
6505
6883
  {
6506
6884
  "filePath": "src/components/lmvz-radio/lmvz-radio.tsx",
6507
6885
  "encapsulation": "scoped",
@@ -8335,6 +8713,11 @@
8335
8713
  "docstring": "",
8336
8714
  "path": "src/api/index.d.ts"
8337
8715
  },
8716
+ "src/api/index.d.ts::Popover": {
8717
+ "declaration": "any",
8718
+ "docstring": "",
8719
+ "path": "src/api/index.d.ts"
8720
+ },
8338
8721
  "src/api/index.d.ts::Select": {
8339
8722
  "declaration": "any",
8340
8723
  "docstring": "",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmvz-ds/components",
3
3
  "private": false,
4
- "version": "0.32.0",
4
+ "version": "0.34.0",
5
5
  "type": "module",
6
6
  "description": "The components of the design system",
7
7
  "author": "Patrick Nemenz <patrick.nemenz@adesso.at>",
@@ -115,6 +115,10 @@
115
115
  "./lmvz-action-list": {
116
116
  "import": "./components/lmvz-action-list.js",
117
117
  "types": "./components/lmvz-action-list.d.ts"
118
+ },
119
+ "./lmvz-popover": {
120
+ "import": "./components/lmvz-popover.js",
121
+ "types": "./components/lmvz-popover.d.ts"
118
122
  }
119
123
  },
120
124
  "main": "./index.cjs.js",
@@ -129,10 +133,10 @@
129
133
  },
130
134
  "dependencies": {
131
135
  "classnames": "^2.5.1",
132
- "effect": "^3.21.1"
136
+ "effect": "^3.21.4"
133
137
  },
134
138
  "optionalDependencies": {
135
- "@lmvz-ds/aria-validation": "~0.16.1"
139
+ "@lmvz-ds/aria-validation": "~0.17.0"
136
140
  },
137
141
  "files": [
138
142
  "**/*"
@@ -1,4 +1,4 @@
1
- export declare const variants: readonly ["primary", "secondary", "tertiary"];
1
+ export declare const variants: readonly ["primary", "secondary", "tertiary", "danger"];
2
2
  export declare const scaleValues: readonly ["small", "default", "large"];
3
3
  export declare const sizes: readonly ["xs", "sm", "md", "lg"];
4
4
  export declare const textSizes: readonly ["xs", "sm", "md", "lg", "xl"];
@@ -14,3 +14,5 @@ export declare const messageTypes: readonly ["neutral", "warning"];
14
14
  export declare const snackbarStatuses: readonly ["success", "warning", "error"];
15
15
  export declare const snackbarPriorities: readonly ["low", "normal", "high"];
16
16
  export declare const snackbarDismissReasons: readonly ["timeout", "manual", "action", "overridden", "swallowed"];
17
+ export declare const popoverPlacements: readonly ["top", "bottom", "start", "end", "top-start", "top-end", "bottom-start", "bottom-end"];
18
+ export declare const popoverSizes: readonly ["sm", "md", "lg"];
@@ -7,6 +7,8 @@ import type {
7
7
  inputTypes,
8
8
  linkTypes,
9
9
  messageTypes,
10
+ popoverPlacements,
11
+ popoverSizes,
10
12
  scaleValues,
11
13
  selectSizes,
12
14
  sizes,
@@ -67,5 +69,10 @@ export namespace Snackbar {
67
69
  export type DismissReason = (typeof snackbarDismissReasons)[number];
68
70
  }
69
71
 
72
+ export namespace Popover {
73
+ export type Placement = (typeof popoverPlacements)[number];
74
+ export type Size = (typeof popoverSizes)[number];
75
+ }
76
+
70
77
  export type Attributes = { [key: string]: unknown };
71
78
  export type FormRef = string | HTMLFormElement | undefined;
@@ -0,0 +1,37 @@
1
+ import { type EventEmitter } from '../../stencil-public-runtime';
2
+ import type { Popover } from '../../api';
3
+ export declare class LmvzPopover {
4
+ readonly el: HTMLElement;
5
+ private readonly closureController;
6
+ private containerEl?;
7
+ private slotEl?;
8
+ private previouslyFocusedElement;
9
+ open: boolean;
10
+ anchor?: string | HTMLElement;
11
+ placement: Popover.Placement;
12
+ size: Popover.Size;
13
+ autoFocus: boolean;
14
+ label?: string;
15
+ lmvzOpen: EventEmitter<void>;
16
+ lmvzClose: EventEmitter<void>;
17
+ lmvzCancel: EventEmitter<void>;
18
+ show(): Promise<void>;
19
+ hide(): Promise<void>;
20
+ toggle(): Promise<void>;
21
+ componentDidLoad(): void;
22
+ protected handleOpenChange(isOpen: boolean): void;
23
+ protected handleAnchorChange(): void;
24
+ disconnectedCallback(): void;
25
+ private resolveAnchor;
26
+ private updatePosition;
27
+ private onOpen;
28
+ private onClose;
29
+ private applyAnchorAriaOpen;
30
+ private applyAnchorAriaClose;
31
+ private focusFirst;
32
+ private restoreFocus;
33
+ private triggerClose;
34
+ private setupCloseHandlers;
35
+ private removeCloseHandlers;
36
+ render(): any;
37
+ }