@lmvz-ds/components 0.17.3 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +3 -0
  3. package/cjs/{aria-loader-W9Zvc9e-.js → aria-loader-CfFuAbJn.js} +2 -2
  4. package/cjs/icons-swqMn6s2.js +163 -0
  5. package/cjs/{index-BNm4PQrX.js → index--7IqZZqn.js} +12179 -516
  6. package/cjs/index.cjs.js +6 -85
  7. package/cjs/lmvz-action.cjs.entry.js +1 -1
  8. package/cjs/lmvz-button.cjs.entry.js +4 -4
  9. package/cjs/lmvz-card.cjs.entry.js +24 -4
  10. package/cjs/lmvz-chip.cjs.entry.js +1 -1
  11. package/cjs/lmvz-components.cjs.js +1 -1
  12. package/cjs/lmvz-header_2.cjs.entry.js +5 -5
  13. package/cjs/lmvz-icon.cjs.entry.js +24 -13
  14. package/cjs/lmvz-input.cjs.entry.js +5 -5
  15. package/cjs/lmvz-menuitem.cjs.entry.js +4 -4
  16. package/cjs/lmvz-select.cjs.entry.js +4 -4
  17. package/cjs/loader.cjs.js +1 -1
  18. package/cjs/logger-Bn2yoZGP.js +7189 -0
  19. package/cjs/{reactive-controller-host-B_davRfI.js → reactive-controller-host-CtaVAiYJ.js} +27 -23
  20. package/collection/api/ds.constants.js +0 -66
  21. package/collection/collection-manifest.json +1 -1
  22. package/collection/components/lmvz-action/lmvz-action.js +1 -1
  23. package/collection/components/lmvz-button/lmvz-button.css +2 -2
  24. package/collection/components/lmvz-button/lmvz-button.js +5 -5
  25. package/collection/components/lmvz-card/lmvz-card.css +5 -5
  26. package/collection/components/lmvz-card/lmvz-card.js +1 -1
  27. package/collection/components/lmvz-chip/lmvz-chip.js +1 -1
  28. package/collection/components/lmvz-header/lmvz-header.js +2 -2
  29. package/collection/components/lmvz-icon/lmvz-icon.css +13 -13
  30. package/collection/components/lmvz-icon/lmvz-icon.js +49 -18
  31. package/collection/components/lmvz-input/lmvz-input.css +1 -1
  32. package/collection/components/lmvz-input/lmvz-input.js +6 -6
  33. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +2 -2
  34. package/collection/components/lmvz-menuitem/lmvz-menuitem.js +1 -1
  35. package/collection/components/lmvz-select/lmvz-select.css +3 -3
  36. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  37. package/collection/index.js +1 -2
  38. package/collection/integration/header-integration/header-integration.js +51 -0
  39. package/collection/utils/aria/aria-validation-controller.js +27 -23
  40. package/collection/utils/http.js +10 -13
  41. package/collection/utils/icons/icons-registry.js +34 -0
  42. package/collection/utils/icons/icons.js +49 -0
  43. package/collection/utils/icons/icons.unit.js +73 -0
  44. package/collection/utils/icons/public.js +2 -0
  45. package/collection/utils/public.js +1 -1
  46. package/components/index.d.ts +9 -9
  47. package/components/index.d.ts.bak +10 -10
  48. package/components/index.js +1 -1
  49. package/components/lmvz-action.d.ts +1 -1
  50. package/components/lmvz-action.d.ts.bak +11 -0
  51. package/components/lmvz-action.js +1 -1
  52. package/components/lmvz-button.d.ts +1 -1
  53. package/components/lmvz-button.d.ts.bak +11 -0
  54. package/components/lmvz-button.js +1 -1
  55. package/components/lmvz-card.d.ts +1 -1
  56. package/components/lmvz-card.d.ts.bak +11 -0
  57. package/components/lmvz-card.js +1 -1
  58. package/components/lmvz-chip.d.ts +1 -1
  59. package/components/lmvz-chip.d.ts.bak +11 -0
  60. package/components/lmvz-chip.js +1 -1
  61. package/components/lmvz-header.d.ts +1 -1
  62. package/components/lmvz-header.d.ts.bak +11 -0
  63. package/components/lmvz-header.js +1 -1
  64. package/components/lmvz-icon.d.ts +1 -1
  65. package/components/lmvz-icon.d.ts.bak +11 -0
  66. package/components/lmvz-icon.js +1 -1
  67. package/components/lmvz-input.d.ts +1 -1
  68. package/components/lmvz-input.d.ts.bak +11 -0
  69. package/components/lmvz-input.js +1 -1
  70. package/components/lmvz-menuitem.d.ts +1 -1
  71. package/components/lmvz-menuitem.d.ts.bak +11 -0
  72. package/components/lmvz-menuitem.js +1 -1
  73. package/components/lmvz-select.d.ts +1 -1
  74. package/components/lmvz-select.d.ts.bak +11 -0
  75. package/components/lmvz-select.js +1 -1
  76. package/components/{p-Clo63DJF.js → p-CBLAeife.js} +1 -1
  77. package/components/p-DXOTa5VF.js +12 -0
  78. package/components/p-fiRXhuXK.js +1 -0
  79. package/esm/{aria-loader-D9aySMw6.js → aria-loader-BF_AYtbb.js} +2 -2
  80. package/esm/icons-Ca8oMiRa.js +157 -0
  81. package/esm/{index-n6jVNpyp.js → index-7Ru1khgk.js} +11972 -309
  82. package/esm/index.js +4 -80
  83. package/esm/lmvz-action.entry.js +1 -1
  84. package/esm/lmvz-button.entry.js +4 -4
  85. package/esm/lmvz-card.entry.js +23 -4
  86. package/esm/lmvz-chip.entry.js +1 -1
  87. package/esm/lmvz-components.js +1 -1
  88. package/esm/lmvz-header_2.entry.js +5 -5
  89. package/esm/lmvz-icon.entry.js +24 -13
  90. package/esm/lmvz-input.entry.js +5 -5
  91. package/esm/lmvz-menuitem.entry.js +4 -4
  92. package/esm/lmvz-select.entry.js +4 -4
  93. package/esm/loader.js +1 -1
  94. package/esm/logger-fiRXhuXK.js +6990 -0
  95. package/esm/{reactive-controller-host-ByKmPKq1.js → reactive-controller-host-sR2jJxNG.js} +27 -23
  96. package/hydrate/index.js +78 -3842
  97. package/hydrate/index.mjs +78 -3842
  98. package/lmvz-components/index.esm.js +1 -1
  99. package/lmvz-components/lmvz-components.esm.js +1 -1
  100. package/lmvz-components/p-0f645295.entry.js +1 -0
  101. package/lmvz-components/{p-986acfd0.entry.js → p-1506fa34.entry.js} +1 -1
  102. package/lmvz-components/p-658c5c34.entry.js +1 -0
  103. package/lmvz-components/{p-1bda378c.entry.js → p-80675ee5.entry.js} +1 -1
  104. package/lmvz-components/p-872e2106.entry.js +1 -0
  105. package/lmvz-components/p-93038c98.entry.js +1 -0
  106. package/lmvz-components/{p-CU4XwA2K.js → p-B3dnXEPG.js} +1 -1
  107. package/lmvz-components/p-Bh2Epkwf.js +1 -0
  108. package/lmvz-components/{p-DPHHQR5F.js → p-Bkfdgg0T.js} +1 -1
  109. package/lmvz-components/p-DXOTa5VF.js +12 -0
  110. package/lmvz-components/p-bbab5471.entry.js +1 -0
  111. package/lmvz-components/p-c7e368c4.entry.js +1 -0
  112. package/lmvz-components/{p-b704eca8.entry.js → p-ff6a0267.entry.js} +1 -1
  113. package/lmvz-components/p-fiRXhuXK.js +1 -0
  114. package/manifest.json +64 -283
  115. package/package.json +4 -2
  116. package/types/api/ds.constants.d.ts +22 -1
  117. package/types/api/ds.types.d.ts +3 -38
  118. package/types/api/index.d.ts +0 -1
  119. package/types/components/lmvz-action/lmvz-action.d.ts +1 -0
  120. package/types/components/lmvz-button/lmvz-button.d.ts +2 -2
  121. package/types/components/lmvz-card/lmvz-card.d.ts +1 -0
  122. package/types/components/lmvz-chip/lmvz-chip.d.ts +1 -0
  123. package/types/components/lmvz-header/lmvz-header.d.ts +1 -0
  124. package/types/components/lmvz-icon/lmvz-icon.d.ts +4 -1
  125. package/types/components/lmvz-input/lmvz-input.d.ts +1 -0
  126. package/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +1 -0
  127. package/types/components/lmvz-select/lmvz-select.d.ts +1 -0
  128. package/types/components.d.ts +747 -931
  129. package/types/index.d.ts +2 -2
  130. package/types/utils/aria/aria-validation-controller.d.ts +1 -0
  131. package/types/utils/aria/element-activation-controller.d.ts +1 -0
  132. package/types/utils/aria/list-keyboard-controller.d.ts +1 -0
  133. package/types/utils/assets.d.ts +1 -0
  134. package/types/utils/component.d.ts +2 -4
  135. package/types/utils/environment.d.ts +1 -0
  136. package/types/utils/http.d.ts +11 -8
  137. package/types/utils/http.unit.d.ts +1 -0
  138. package/types/utils/icons/icons-registry.d.ts +13 -0
  139. package/types/utils/icons/icons.d.ts +8 -0
  140. package/types/utils/icons/icons.unit.d.ts +8 -0
  141. package/types/utils/icons/public.d.ts +4 -0
  142. package/types/utils/public.d.ts +2 -1
  143. package/types/utils/reactive-controller-host.d.ts +1 -0
  144. package/assets/.DS_Store +0 -0
  145. package/assets/icons/.DS_Store +0 -0
  146. package/assets/icons/actions.svg +0 -5
  147. package/assets/icons/adduser.svg +0 -3
  148. package/assets/icons/alert.svg +0 -3
  149. package/assets/icons/apple.svg +0 -3
  150. package/assets/icons/arrow-down.svg +0 -3
  151. package/assets/icons/arrow-left.svg +0 -3
  152. package/assets/icons/arrow-right.svg +0 -3
  153. package/assets/icons/arrow-up.svg +0 -3
  154. package/assets/icons/book.svg +0 -3
  155. package/assets/icons/bookmark.svg +0 -3
  156. package/assets/icons/checkmark.svg +0 -3
  157. package/assets/icons/chevron-left.svg +0 -3
  158. package/assets/icons/chevron-right.svg +0 -3
  159. package/assets/icons/chevron-up.svg +0 -3
  160. package/assets/icons/close-l.svg +0 -3
  161. package/assets/icons/close-sm.svg +0 -3
  162. package/assets/icons/cog.svg +0 -4
  163. package/assets/icons/computer.svg +0 -3
  164. package/assets/icons/dashboard.svg +0 -6
  165. package/assets/icons/delete.svg +0 -3
  166. package/assets/icons/download.svg +0 -3
  167. package/assets/icons/edit.svg +0 -3
  168. package/assets/icons/external.svg +0 -3
  169. package/assets/icons/facebook.svg +0 -3
  170. package/assets/icons/favorite.svg +0 -3
  171. package/assets/icons/filter.svg +0 -3
  172. package/assets/icons/group.svg +0 -3
  173. package/assets/icons/hide.svg +0 -3
  174. package/assets/icons/home.svg +0 -3
  175. package/assets/icons/info.svg +0 -3
  176. package/assets/icons/instagram.svg +0 -3
  177. package/assets/icons/letter.svg +0 -3
  178. package/assets/icons/linkedin.svg +0 -5
  179. package/assets/icons/logout.svg +0 -3
  180. package/assets/icons/map.svg +0 -3
  181. package/assets/icons/minus.svg +0 -3
  182. package/assets/icons/navigation.svg +0 -3
  183. package/assets/icons/plus.svg +0 -3
  184. package/assets/icons/qr-scan.svg +0 -3
  185. package/assets/icons/question.svg +0 -10
  186. package/assets/icons/reader.svg +0 -3
  187. package/assets/icons/reset.svg +0 -3
  188. package/assets/icons/school.svg +0 -3
  189. package/assets/icons/search.svg +0 -3
  190. package/assets/icons/send.svg +0 -3
  191. package/assets/icons/settings.svg +0 -3
  192. package/assets/icons/share.svg +0 -10
  193. package/assets/icons/shopping-cart.svg +0 -3
  194. package/assets/icons/show.svg +0 -3
  195. package/assets/icons/snapchat.svg +0 -3
  196. package/assets/icons/sort.svg +0 -3
  197. package/assets/icons/speech-bubble.svg +0 -3
  198. package/assets/icons/star.svg +0 -3
  199. package/assets/icons/student.svg +0 -3
  200. package/assets/icons/upload.svg +0 -3
  201. package/assets/icons/user.svg +0 -3
  202. package/assets/icons/warn-circle.svg +0 -3
  203. package/assets/icons/warn-triangle.svg +0 -3
  204. package/assets/icons/whatsapp.svg +0 -4
  205. package/assets/icons/world.svg +0 -10
  206. package/assets/icons/x.svg +0 -3
  207. package/assets/icons/youtube.svg +0 -3
  208. package/cjs/Effect-YVFLBEfy.js +0 -19037
  209. package/cjs/assets-DxYhun-q.js +0 -26
  210. package/cjs/icons-DgYgcKGK.js +0 -653
  211. package/collection/api/index.js +0 -1
  212. package/collection/assets/.DS_Store +0 -0
  213. package/collection/assets/icons/.DS_Store +0 -0
  214. package/collection/assets/icons/actions.svg +0 -5
  215. package/collection/assets/icons/adduser.svg +0 -3
  216. package/collection/assets/icons/alert.svg +0 -3
  217. package/collection/assets/icons/apple.svg +0 -3
  218. package/collection/assets/icons/arrow-down.svg +0 -3
  219. package/collection/assets/icons/arrow-left.svg +0 -3
  220. package/collection/assets/icons/arrow-right.svg +0 -3
  221. package/collection/assets/icons/arrow-up.svg +0 -3
  222. package/collection/assets/icons/book.svg +0 -3
  223. package/collection/assets/icons/bookmark.svg +0 -3
  224. package/collection/assets/icons/checkmark.svg +0 -3
  225. package/collection/assets/icons/chevron-left.svg +0 -3
  226. package/collection/assets/icons/chevron-right.svg +0 -3
  227. package/collection/assets/icons/chevron-up.svg +0 -3
  228. package/collection/assets/icons/close-l.svg +0 -3
  229. package/collection/assets/icons/close-sm.svg +0 -3
  230. package/collection/assets/icons/cog.svg +0 -4
  231. package/collection/assets/icons/computer.svg +0 -3
  232. package/collection/assets/icons/dashboard.svg +0 -6
  233. package/collection/assets/icons/delete.svg +0 -3
  234. package/collection/assets/icons/download.svg +0 -3
  235. package/collection/assets/icons/edit.svg +0 -3
  236. package/collection/assets/icons/external.svg +0 -3
  237. package/collection/assets/icons/facebook.svg +0 -3
  238. package/collection/assets/icons/favorite.svg +0 -3
  239. package/collection/assets/icons/filter.svg +0 -3
  240. package/collection/assets/icons/group.svg +0 -3
  241. package/collection/assets/icons/hide.svg +0 -3
  242. package/collection/assets/icons/home.svg +0 -3
  243. package/collection/assets/icons/info.svg +0 -3
  244. package/collection/assets/icons/instagram.svg +0 -3
  245. package/collection/assets/icons/letter.svg +0 -3
  246. package/collection/assets/icons/linkedin.svg +0 -5
  247. package/collection/assets/icons/logout.svg +0 -3
  248. package/collection/assets/icons/map.svg +0 -3
  249. package/collection/assets/icons/minus.svg +0 -3
  250. package/collection/assets/icons/navigation.svg +0 -3
  251. package/collection/assets/icons/plus.svg +0 -3
  252. package/collection/assets/icons/qr-scan.svg +0 -3
  253. package/collection/assets/icons/question.svg +0 -10
  254. package/collection/assets/icons/reader.svg +0 -3
  255. package/collection/assets/icons/reset.svg +0 -3
  256. package/collection/assets/icons/school.svg +0 -3
  257. package/collection/assets/icons/search.svg +0 -3
  258. package/collection/assets/icons/send.svg +0 -3
  259. package/collection/assets/icons/settings.svg +0 -3
  260. package/collection/assets/icons/share.svg +0 -10
  261. package/collection/assets/icons/shopping-cart.svg +0 -3
  262. package/collection/assets/icons/show.svg +0 -3
  263. package/collection/assets/icons/snapchat.svg +0 -3
  264. package/collection/assets/icons/sort.svg +0 -3
  265. package/collection/assets/icons/speech-bubble.svg +0 -3
  266. package/collection/assets/icons/star.svg +0 -3
  267. package/collection/assets/icons/student.svg +0 -3
  268. package/collection/assets/icons/upload.svg +0 -3
  269. package/collection/assets/icons/user.svg +0 -3
  270. package/collection/assets/icons/warn-circle.svg +0 -3
  271. package/collection/assets/icons/warn-triangle.svg +0 -3
  272. package/collection/assets/icons/whatsapp.svg +0 -4
  273. package/collection/assets/icons/world.svg +0 -10
  274. package/collection/assets/icons/x.svg +0 -3
  275. package/collection/assets/icons/youtube.svg +0 -3
  276. package/collection/components/lmvz-icon/icons.js +0 -36
  277. package/collection/components/lmvz-icon/public.js +0 -1
  278. package/collection/components/lmvz-icon/test/icons.unit.js +0 -98
  279. package/collection/integration/header-integration.js +0 -46
  280. package/collection/utils/effect.js +0 -6
  281. package/collection/utils/validation/svg.js +0 -24
  282. package/components/p-CYcWxAp5.js +0 -1
  283. package/components/p-DHtXOUVf.js +0 -1
  284. package/components/p-VkiNs_yz.js +0 -12
  285. package/esm/Effect-DkwJP3kx.js +0 -18828
  286. package/esm/assets-_WDisN-f.js +0 -23
  287. package/esm/icons-Crg18Lio.js +0 -649
  288. package/lmvz-components/p-121f74d8.entry.js +0 -1
  289. package/lmvz-components/p-373a9cbf.entry.js +0 -1
  290. package/lmvz-components/p-43e295ba.entry.js +0 -1
  291. package/lmvz-components/p-5f150890.entry.js +0 -1
  292. package/lmvz-components/p-6d5fa8c4.entry.js +0 -1
  293. package/lmvz-components/p-BT8PQPMJ.js +0 -1
  294. package/lmvz-components/p-BxiCs9Wn.js +0 -1
  295. package/lmvz-components/p-CXQcJLbG.js +0 -12
  296. package/lmvz-components/p-DkwJP3kx.js +0 -1
  297. package/lmvz-components/p-abbfa6aa.entry.js +0 -1
  298. package/types/components/lmvz-icon/icons.d.ts +0 -8
  299. package/types/components/lmvz-icon/public.d.ts +0 -1
  300. package/types/components/lmvz-icon/test/icons.unit.d.ts +0 -1
  301. package/types/utils/effect.d.ts +0 -3
  302. package/types/utils/validation/svg.d.ts +0 -11
@@ -56,7 +56,7 @@
56
56
  --lmvz-select-label-minimized-padding-x: 4px;
57
57
  --lmvz-select-disabled-opacity: var(--lmvz-component-input-disabled-opacity, 40%);
58
58
  --lmvz-select-helper-color: var(--lmvz-semantic-color-on-surface-input-secondary, #7a7a7a);
59
- --lmvz-select-focus-color: var(--lmvz-semantic-color-status-on-selected, #0e7ab4);
59
+ --lmvz-select-focus-color: var(--lmvz-semantic-color-status-on-active, #0e7ab4);
60
60
  --lmvz-select-error-color: var(--lmvz-semantic-color-status-on-danger, #e52a31);
61
61
  }
62
62
  .select-wrapper {
@@ -143,8 +143,8 @@ div[aria-hidden] > span:last-child {
143
143
  }
144
144
  img {
145
145
  display: block;
146
- width: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
147
- height: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));
146
+ width: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
147
+ height: var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.72rem + 0.13vw, 0.88rem));
148
148
  }
149
149
  /* Native select – absolutely covers the trigger, invisible, intercepts clicks */
150
150
  select {
@@ -50,7 +50,7 @@ export class LmvzSelect extends ReactiveControllerHost {
50
50
  render() {
51
51
  const hasValue = this.hasValue;
52
52
  const shouldShowLabel = hasValue;
53
- return (h(Host, { key: '7d1abb943f79e90451b43c9221801b80a2f61346' }, h("div", { key: 'ded3e45246ab38e89d444c59239cdc63a2c4d4fc', class: "select-wrapper" }, h("label", { key: 'cb68ff79976c2fb55d4cc827f9e90ba2597a8a43', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && h("span", { key: 'ab77eaea1645b95d90f00ffb609bbd7a1704f7bc', "aria-hidden": "true" }, " *")), h("div", { key: '45cee00478a6cc31c10dddf69d8e6687fc8f440d', "aria-hidden": "true" }, h("span", { key: '0c5d425ea8843234aa6abd94a207377e2a675686' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && h("span", { key: 'ebef5322371ee0253b50dd801b80cbb6402c067a', "aria-hidden": "true" }, " *")), h("span", { key: 'a12d31dc29563444f728133f181b48914d31705b' }, h("img", { key: 'dd3f175d1ca2b9ccc6c2bfa2075e5da62016a896', src: chevronDownSvg, alt: "" }))), h("select", { key: 'a196f3b824177d1b45971c38341bf6a2939dda82', id: this.selectId, ref: (el) => (this.nativeSelectEl = el), name: this.name, disabled: this.disabled, required: this.required, "aria-label": this.label, onChange: this.handleChange }, !hasValue && h("option", { key: '536cc559def0e9ffa4b2150693ece9a597c238d1', value: "", disabled: true, selected: true, hidden: true }), h("slot", { key: 'ad9fed96b9f8c1d8257511bb1d5ab5ee756973ce' }))), this.helperText && h("div", { key: '4723b44d781c900be5aae7ece2a0be04b6c744b9', role: "status" }, this.helperText)));
53
+ return (h(Host, { key: '7f4650d5971bb93dba48385df734e6b7a0b4f7eb' }, h("div", { key: '79d6234cd15f64c8bff787d715107e7e86145333', class: "select-wrapper" }, h("label", { key: '14d93469c6d309b68427ff7bfc2bd531c8f0ecf6', htmlFor: this.selectId, class: shouldShowLabel ? 'floating-label' : 'assistive-label' }, this.label, this.required && shouldShowLabel && h("span", { key: 'c8be809e09d768d6f73ccccdfbf0bf495869ac72', "aria-hidden": "true" }, " *")), h("div", { key: '1db5d44b44100342a4ca5feff648b61a0bdadb1a', "aria-hidden": "true" }, h("span", { key: '3fdc95aab9997a10f4ba42dabc3758aea0797a22' }, hasValue ? this.selectedLabel : this.label, this.required && !hasValue && h("span", { key: '11aef8194551059130b6be5351587219a1e80f00', "aria-hidden": "true" }, " *")), h("span", { key: '8fc52ff3e46d7b52d8d5069a74ebf7bb0d981081' }, h("img", { key: '129dd4038772eba9313e1e322866c70408f4e2ad', src: chevronDownSvg, alt: "" }))), h("select", { key: '6eb6cf496e60b3c1bd9556e596cbef34d4da5a09', id: this.selectId, ref: (el) => (this.nativeSelectEl = el), name: this.name, disabled: this.disabled, required: this.required, "aria-label": this.label, onChange: this.handleChange }, !hasValue && h("option", { key: '70d660e0bc7e4c127234ce77decf35d6fea7fe8d', value: "", disabled: true, selected: true, hidden: true }), h("slot", { key: 'e6cbc238c9c0cf8e8c31d0347a1f621272a94ca6' }))), this.helperText && h("div", { key: '432d405ee7338da46509ff207599b882a19ea44e', role: "status" }, this.helperText)));
54
54
  }
55
55
  static get is() { return "lmvz-select"; }
56
56
  static get encapsulation() { return "scoped"; }
@@ -1,4 +1,3 @@
1
1
  export * from '@lmvz-ds/aria-validation';
2
- export * from './api';
3
- export * from './components/lmvz-icon/public';
2
+ export { iconSizes, iconWeights, inputTypes, textSizes } from './api/ds.constants';
4
3
  export * from './utils/public';
@@ -0,0 +1,51 @@
1
+ import { LmvzOnDemandProvider } from "@lmvz-ds/icons/on-demand";
2
+ import { h, Host } from "@stencil/core";
3
+ import { registerIconProvider, typedIconFromSet } from "../../utils/public";
4
+ export class HeaderIntegration {
5
+ activeNav;
6
+ constructor() {
7
+ registerIconProvider('lmvz', new LmvzOnDemandProvider());
8
+ }
9
+ activate(event) {
10
+ const target = event.currentTarget;
11
+ const navItem = target.closest('[slot="nav-primary"]');
12
+ if (!navItem)
13
+ return;
14
+ const navId = navItem.id;
15
+ if (!navId) {
16
+ console.warn('Nav item does not have an id:', navItem);
17
+ return;
18
+ }
19
+ console.log('Activating nav item:', navId);
20
+ this.activeNav = navId;
21
+ }
22
+ render() {
23
+ return (h(Host, { key: 'c192a622b5bd6dc897f68a8674b80f2f756fce9f' }, h("lmvz-header", { key: '28164f06e7c830394eff129805bb9f04a65a71d9', lmvzActiveNav: this.activeNav }, h("lmvz-menuitem", { key: 'a1e7c57cf93bce45dbe072520901d420d44e3d18', slot: "nav-primary", id: "lehrmittel", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '4c7e115cf69202fea183c890877a54cbe1d8d50b', href: "#" }, "Lehrmittel")), h("lmvz-menuitem", { key: '030f392c7fbf4555455ba29a4ce32fc66f533b85', slot: "nav-primary", id: "verwaltung", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '2a2ed5eb44aa966ed82d2f70109e450209dfebc8', href: "#" }, "Verwaltung")), h("lmvz-menuitem", { key: '41f7671d33438b3c4f6f66e97aba6b71b3a751df', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: 'd719206230eb6b8195a50a62e1180f4b03e02096', ...typedIconFromSet('lmvz', 'edit') }), "Deutsch 7"), h("lmvz-menuitem", { key: '3bd1c78d0c2fb0986a4c917d0fab6feb0201e26b', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: 'dde5646eae294c55cb4bc5adadbe45e9cbf6f49b', ...typedIconFromSet('lmvz', 'edit') }), "Mathe 2"), h("lmvz-menuitem", { key: 'b25de021719847e19f59ffd008310eba28bcfb0f', slot: "connect-nav-verwaltung" }, h("lmvz-icon", { key: 'e12057579322cb914f65b429cd31276738eab564', ...typedIconFromSet('lmvz', 'settings') }), "iwas mit Verwaltung"), h("lmvz-menuitem", { key: '8cae676fc7e4c2f3308a462e7031d634c12315e2', slot: "connect-nav-verwaltung", "aria-label": "Einstellungen" }, h("lmvz-icon", { key: '2e5911e8a47aa6fd24246f0ce76611ba01a96be3', ...typedIconFromSet('lmvz', 'settings') })), h("lmvz-button", { key: 'aee754e586af13dab256cfc027c259a6e8bcf817', slot: "actions", "aria-label": "Benutzerkonto" }, h("lmvz-icon", { key: '25f3d2863dca590135c5880a4b0e76b5512a38df', ...typedIconFromSet('lmvz', 'user'), size: "lg" })))));
24
+ }
25
+ static get is() { return "header-integration"; }
26
+ static get encapsulation() { return "shadow"; }
27
+ static get styles() { return ".active button {\n background-color: var(--lmvz-semantic-color-status-selected);\n }"; }
28
+ static get properties() {
29
+ return {
30
+ "activeNav": {
31
+ "type": "string",
32
+ "mutable": true,
33
+ "complexType": {
34
+ "original": "string",
35
+ "resolved": "string | undefined",
36
+ "references": {}
37
+ },
38
+ "required": false,
39
+ "optional": true,
40
+ "docs": {
41
+ "tags": [],
42
+ "text": ""
43
+ },
44
+ "getter": false,
45
+ "setter": false,
46
+ "reflect": false,
47
+ "attribute": "active-nav"
48
+ }
49
+ };
50
+ }
51
+ }
@@ -1,6 +1,6 @@
1
1
  import { ARIA_VALIDATION_RUNTIME_CHANGED_EVENT, enableAriaValidation, isAriaValidationEnabled, queueValidation, useVerboseLogging, } from "@lmvz-ds/aria-validation";
2
2
  import { Build } from "@stencil/core";
3
- if (Build.isDev) {
3
+ if (Build.isDev && Build.isBrowser) {
4
4
  enableAriaValidation();
5
5
  }
6
6
  export class AriaValidationController {
@@ -59,25 +59,27 @@ export class AriaValidationController {
59
59
  this.host.validationSlot?.addEventListener('slotchange', this.enqueueValidation.bind(this));
60
60
  }
61
61
  observeVisibilityOnce() {
62
- window.setTimeout(() => {
63
- if (!this.host.validationEl)
64
- return;
65
- this.visibilityObserver = new IntersectionObserver((entries) => {
66
- for (const entry of entries) {
67
- if (entry.target !== this.host.validationEl)
68
- continue;
69
- if (!entry.isIntersecting)
70
- continue;
71
- this.checkLazyValidation();
72
- this.discardVisibilityObserver();
73
- }
74
- }, {
75
- root: this.host.validationEl?.parentElement,
76
- rootMargin: '0px',
77
- threshold: 0.01,
62
+ if (Build.isBrowser) {
63
+ window.setTimeout(() => {
64
+ if (!this.host.validationEl)
65
+ return;
66
+ this.visibilityObserver = new IntersectionObserver((entries) => {
67
+ for (const entry of entries) {
68
+ if (entry.target !== this.host.validationEl)
69
+ continue;
70
+ if (!entry.isIntersecting)
71
+ continue;
72
+ this.checkLazyValidation();
73
+ this.discardVisibilityObserver();
74
+ }
75
+ }, {
76
+ root: this.host.validationEl?.parentElement,
77
+ rootMargin: '0px',
78
+ threshold: 0.01,
79
+ });
80
+ this.visibilityObserver.observe(this.host.validationEl);
78
81
  });
79
- this.visibilityObserver.observe(this.host.validationEl);
80
- });
82
+ }
81
83
  }
82
84
  checkLazyValidation() {
83
85
  if (!this.elementLoaded)
@@ -138,9 +140,11 @@ export class AriaValidationController {
138
140
  });
139
141
  }
140
142
  discardVisibilityObserver() {
141
- if (!this.visibilityObserver)
142
- return;
143
- this.visibilityObserver.disconnect();
144
- this.visibilityObserver = undefined;
143
+ if (Build.isBrowser) {
144
+ if (!this.visibilityObserver)
145
+ return;
146
+ this.visibilityObserver.disconnect();
147
+ this.visibilityObserver = undefined;
148
+ }
145
149
  }
146
150
  }
@@ -1,24 +1,21 @@
1
- import { Data, Micro as Effect } from "effect";
2
- export class FetchError extends Data.TaggedError('FetchError') {
1
+ import { Micro } from "effect";
2
+ export class FetchError extends Micro.TaggedError('FetchError') {
3
3
  }
4
- export class NotFoundError extends Data.TaggedError('NotFoundError') {
4
+ export class NotFoundError extends Micro.TaggedError('NotFoundError') {
5
5
  }
6
- export const httpClient = (input, init) => Effect.gen(function* () {
7
- const response = yield* Effect.tryPromise({
6
+ export const httpClient = (input, init) => Micro.gen(function* () {
7
+ const response = yield* Micro.tryPromise({
8
8
  try: () => fetch(input, init),
9
- catch: error => new FetchError({ cause: error }),
9
+ catch: (error) => new FetchError({ cause: error }),
10
10
  });
11
11
  if (response.status === 404) {
12
- return yield* Effect.fail(new NotFoundError({ url: response.url }));
12
+ return yield* Micro.fail(new NotFoundError({ url: response.url }));
13
13
  }
14
14
  return response;
15
15
  });
16
- export class ResponseTextError extends Data.TaggedError('ResponseTextError') {
17
- constructor(error) {
18
- super(new Error(`Failed to read response text`, { cause: error }));
19
- }
16
+ export class ResponseTextError extends Micro.TaggedError('ResponseTextError') {
20
17
  }
21
- export const responseAsText = (res) => Effect.tryPromise({
18
+ export const responseAsText = (res) => Micro.tryPromise({
22
19
  try: () => res.text(),
23
- catch: error => new ResponseTextError(error),
20
+ catch: (error) => new ResponseTextError({ message: 'Failed to read response text', cause: error }),
24
21
  });
@@ -0,0 +1,34 @@
1
+ const IconProviderRegistryKey = Symbol.for('LMVZ__iconProviderRegistry');
2
+ const inMemoryRegistry = {};
3
+ function getRegistry() {
4
+ if (typeof window === 'undefined') {
5
+ return inMemoryRegistry;
6
+ }
7
+ return window[IconProviderRegistryKey] ?? (window[IconProviderRegistryKey] = {});
8
+ }
9
+ export function registerIconProvider(id, provider) {
10
+ const registry = getRegistry();
11
+ const providerName = id;
12
+ if (Object.prototype.hasOwnProperty.call(registry, providerName)) {
13
+ console.warn(`Icon provider with name "${providerName}" is already registered. Overwriting existing provider.`);
14
+ }
15
+ registry[providerName] = provider;
16
+ }
17
+ export function getRegisteredIconProvider(id) {
18
+ const registry = getRegistry();
19
+ if (id) {
20
+ return registry[id];
21
+ }
22
+ const providerNames = Object.keys(registry);
23
+ if (providerNames.length === 0) {
24
+ return undefined;
25
+ }
26
+ if (providerNames.length > 1) {
27
+ console.warn(`Multiple icon providers registered (${providerNames.join(', ')}). Using the first one: "${providerNames[0]}".`);
28
+ }
29
+ const firstProviderName = providerNames[0];
30
+ if (!firstProviderName) {
31
+ return undefined;
32
+ }
33
+ return registry[firstProviderName];
34
+ }
@@ -0,0 +1,49 @@
1
+ import { createValidSVGString, SVGString as SVGFactory } from "@lmvz-ds/lib-ts/validation/svg.js";
2
+ import { Micro } from "effect";
3
+ import { getRegisteredIconProvider } from "./icons-registry";
4
+ export const emptyDefaultSvg = () => SVGFactory(`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"></svg>`);
5
+ async function toValidSvgStringWithFallback(value) {
6
+ try {
7
+ return await Micro.runPromise(createValidSVGString(value));
8
+ }
9
+ catch {
10
+ console.error('Invalid SVG string:', value);
11
+ return emptyDefaultSvg();
12
+ }
13
+ }
14
+ export async function resolveIconSvg(options) {
15
+ const { icon, iconset } = options;
16
+ const iconSvg = await (async () => {
17
+ const provider = getRegisteredIconProvider(iconset);
18
+ if (!provider) {
19
+ console.warn(`No icon provider registered. Unable to resolve icon "${icon}"${iconset ? ` from set "${iconset}"` : ''}. Using default icon.`);
20
+ return;
21
+ }
22
+ try {
23
+ const resolved = await Promise.resolve(provider.resolve(icon));
24
+ if (!resolved?.svg) {
25
+ console.warn(`Icon "${icon}"${iconset ? ` from set "${iconset}"` : ''} not found in provider. Using default icon.`);
26
+ return;
27
+ }
28
+ const validated = await toValidSvgStringWithFallback(resolved.svg);
29
+ if (validated) {
30
+ return validated;
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.error(`Error resolving icon "${icon}" with provider:`, error);
35
+ return;
36
+ }
37
+ return;
38
+ })();
39
+ if (iconSvg)
40
+ return iconSvg;
41
+ console.error(`Icon "${icon}" not found${iconset ? ` in set "${iconset}"` : ''}. Using default icon.`);
42
+ return emptyDefaultSvg();
43
+ }
44
+ export function typedIconFromSet(iconset, icon) {
45
+ return {
46
+ iconset,
47
+ icon,
48
+ };
49
+ }
@@ -0,0 +1,73 @@
1
+ import { SVGString } from "@lmvz-ds/lib-ts/validation/svg.js";
2
+ import { beforeAll, beforeEach, describe, expect, test, vi } from "@stencil/vitest";
3
+ import { emptyDefaultSvg, resolveIconSvg } from "./icons";
4
+ import { registerIconProvider } from "./icons-registry";
5
+ const fetchMock = vi.fn();
6
+ describe('icon utils:', () => {
7
+ beforeAll(() => {
8
+ vi.stubGlobal('DOMParser', class {
9
+ parseFromString(str, _type) {
10
+ return {
11
+ documentElement: {
12
+ nodeName: typeof str === 'string' && str.trimStart().startsWith('<svg') ? 'svg' : 'not-svg',
13
+ },
14
+ };
15
+ }
16
+ });
17
+ });
18
+ beforeEach(() => {
19
+ vi.clearAllMocks();
20
+ fetchMock.mockReset();
21
+ vi.stubGlobal('fetch', fetchMock);
22
+ });
23
+ const validSvg = '<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>';
24
+ const invalidSvg = '<div>not an svg</div>';
25
+ test('SVGString branding enforces valid SVG', () => {
26
+ expect(() => SVGString(validSvg)).not.toThrow();
27
+ expect(() => SVGString(invalidSvg)).toThrow();
28
+ expect(() => SVGString('')).toThrow();
29
+ expect(() => SVGString(123)).toThrow();
30
+ });
31
+ test('emptyDefaultSvg is a valid branded SVGString', () => {
32
+ expect(() => SVGString(emptyDefaultSvg())).not.toThrow();
33
+ expect(emptyDefaultSvg()).toContain('<svg');
34
+ });
35
+ test('resolveIconSvg fails loading "book" with no iconset/provider and falls back to default', async () => {
36
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => undefined);
37
+ const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
38
+ const resolved = await resolveIconSvg({ icon: 'book' });
39
+ expect(resolved).toBe(emptyDefaultSvg());
40
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('No icon provider registered.'));
41
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Using default icon.'));
42
+ warnSpy.mockRestore();
43
+ errorSpy.mockRestore();
44
+ });
45
+ test('resolveIconSvg resolves icon from a valid iconset provider', async () => {
46
+ registerIconProvider('test-set-success', {
47
+ resolve(name) {
48
+ if (name === 'test-icon') {
49
+ return { name, svg: validSvg };
50
+ }
51
+ return undefined;
52
+ },
53
+ });
54
+ const resolved = await resolveIconSvg({ iconset: 'test-set-success', icon: 'test-icon' });
55
+ expect(resolved).toContain('<svg');
56
+ expect(() => SVGString(resolved)).not.toThrow();
57
+ });
58
+ test('resolveIconSvg falls back when icon is missing in a valid iconset provider', async () => {
59
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => undefined);
60
+ const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => undefined);
61
+ registerIconProvider('test-set-miss', {
62
+ resolve(name) {
63
+ return name;
64
+ },
65
+ });
66
+ const resolved = await resolveIconSvg({ iconset: 'test-set-miss', icon: 'book' });
67
+ expect(resolved).toBe(emptyDefaultSvg());
68
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('not found in provider'));
69
+ expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Using default icon.'));
70
+ warnSpy.mockRestore();
71
+ errorSpy.mockRestore();
72
+ });
73
+ });
@@ -0,0 +1,2 @@
1
+ export { getRegisteredIconProvider, registerIconProvider } from './icons-registry.js';
2
+ export { typedIconFromSet } from './icons.js';
@@ -1 +1 @@
1
- export { run } from './effect';
1
+ export * from './icons/public';
@@ -1,21 +1,21 @@
1
1
  /* LmvzComponents custom elements */
2
- export { LmvzAction as LmvzAction } from '../../types/components/lmvz-action/lmvz-action';
2
+ export { LmvzAction as LmvzAction } from '../types/components/lmvz-action/lmvz-action';
3
3
  export { defineCustomElement as defineCustomElementLmvzAction } from './lmvz-action';
4
- export { LmvzButton as LmvzButton } from '../../types/components/lmvz-button/lmvz-button';
4
+ export { LmvzButton as LmvzButton } from '../types/components/lmvz-button/lmvz-button';
5
5
  export { defineCustomElement as defineCustomElementLmvzButton } from './lmvz-button';
6
- export { LmvzCard as LmvzCard } from '../../types/components/lmvz-card/lmvz-card';
6
+ export { LmvzCard as LmvzCard } from '../types/components/lmvz-card/lmvz-card';
7
7
  export { defineCustomElement as defineCustomElementLmvzCard } from './lmvz-card';
8
- export { LmvzChip as LmvzChip } from '../../types/components/lmvz-chip/lmvz-chip';
8
+ export { LmvzChip as LmvzChip } from '../types/components/lmvz-chip/lmvz-chip';
9
9
  export { defineCustomElement as defineCustomElementLmvzChip } from './lmvz-chip';
10
- export { LmvzHeader as LmvzHeader } from '../../types/components/lmvz-header/lmvz-header';
10
+ export { LmvzHeader as LmvzHeader } from '../types/components/lmvz-header/lmvz-header';
11
11
  export { defineCustomElement as defineCustomElementLmvzHeader } from './lmvz-header';
12
- export { LmvzIcon as LmvzIcon } from '../../types/components/lmvz-icon/lmvz-icon';
12
+ export { LmvzIcon as LmvzIcon } from '../types/components/lmvz-icon/lmvz-icon';
13
13
  export { defineCustomElement as defineCustomElementLmvzIcon } from './lmvz-icon';
14
- export { LmvzInput as LmvzInput } from '../../types/components/lmvz-input/lmvz-input';
14
+ export { LmvzInput as LmvzInput } from '../types/components/lmvz-input/lmvz-input';
15
15
  export { defineCustomElement as defineCustomElementLmvzInput } from './lmvz-input';
16
- export { LmvzMenuItem as LmvzMenuitem } from '../../types/components/lmvz-menuitem/lmvz-menuitem';
16
+ export { LmvzMenuItem as LmvzMenuitem } from '../types/components/lmvz-menuitem/lmvz-menuitem';
17
17
  export { defineCustomElement as defineCustomElementLmvzMenuitem } from './lmvz-menuitem';
18
- export { LmvzSelect as LmvzSelect } from '../../types/components/lmvz-select/lmvz-select';
18
+ export { LmvzSelect as LmvzSelect } from '../types/components/lmvz-select/lmvz-select';
19
19
  export { defineCustomElement as defineCustomElementLmvzSelect } from './lmvz-select';
20
20
 
21
21
  /**
@@ -1,21 +1,21 @@
1
1
  /* LmvzComponents custom elements */
2
- export { LmvzAction as LmvzAction } from '../../types/components/lmvz-action/lmvz-action';
2
+ export { LmvzAction as LmvzAction } from '../types/components/lmvz-action/lmvz-action';
3
3
  export { defineCustomElement as defineCustomElementLmvzAction } from './lmvz-action';
4
- export { LmvzButton as LmvzButton } from '../../types/components/lmvz-button/lmvz-button';
4
+ export { LmvzButton as LmvzButton } from '../types/components/lmvz-button/lmvz-button';
5
5
  export { defineCustomElement as defineCustomElementLmvzButton } from './lmvz-button';
6
- export { LmvzCard as LmvzCard } from '../../types/components/lmvz-card/lmvz-card';
6
+ export { LmvzCard as LmvzCard } from '../types/components/lmvz-card/lmvz-card';
7
7
  export { defineCustomElement as defineCustomElementLmvzCard } from './lmvz-card';
8
- export { LmvzChip as LmvzChip } from '../../types/components/lmvz-chip/lmvz-chip';
8
+ export { LmvzChip as LmvzChip } from '../types/components/lmvz-chip/lmvz-chip';
9
9
  export { defineCustomElement as defineCustomElementLmvzChip } from './lmvz-chip';
10
- export { LmvzHeader as LmvzHeader } from '../../types/components/lmvz-header/lmvz-header';
10
+ export { LmvzHeader as LmvzHeader } from '../types/components/lmvz-header/lmvz-header';
11
11
  export { defineCustomElement as defineCustomElementLmvzHeader } from './lmvz-header';
12
- export { LmvzIcon as LmvzIcon } from '../../types/components/lmvz-icon/lmvz-icon';
12
+ export { LmvzIcon as LmvzIcon } from '../types/components/lmvz-icon/lmvz-icon';
13
13
  export { defineCustomElement as defineCustomElementLmvzIcon } from './lmvz-icon';
14
- export { LmvzInput as LmvzInput } from '../../types/components/lmvz-input/lmvz-input';
14
+ export { LmvzInput as LmvzInput } from '../types/components/lmvz-input/lmvz-input';
15
15
  export { defineCustomElement as defineCustomElementLmvzInput } from './lmvz-input';
16
- export { LmvzMenuItem as LmvzMenuitem } from '../../types/components/lmvz-menuitem/lmvz-menuitem';
16
+ export { LmvzMenuItem as LmvzMenuitem } from '../types/components/lmvz-menuitem/lmvz-menuitem';
17
17
  export { defineCustomElement as defineCustomElementLmvzMenuitem } from './lmvz-menuitem';
18
- export { LmvzSelect as LmvzSelect } from '../../types/components/lmvz-select/lmvz-select';
18
+ export { LmvzSelect as LmvzSelect } from '../types/components/lmvz-select/lmvz-select';
19
19
  export { defineCustomElement as defineCustomElementLmvzSelect } from './lmvz-select';
20
20
 
21
21
  /**
@@ -52,4 +52,4 @@ export interface SetPlatformOptions {
52
52
  }
53
53
  export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
54
54
 
55
- export * from '../../types';
55
+ export * from '../types';
@@ -1 +1 @@
1
- export{g as getAssetPath,r as render,s as setAssetPath,a as setNonce,b as setPlatformOptions}from"./p-C_bScbrd.js";export{A as ARIA_VALIDATION_RUNTIME_CHANGED_EVENT,d as disableAriaValidation,e as enableAriaValidation,i as isAriaValidationEnabled,q as queueValidation,u as useVerboseLogging}from"./p-Clo63DJF.js";export{LmvzIcon,c as clearIconCache,defineCustomElement as defineCustomElementLmvzIcon}from"./lmvz-icon.js";import{r as t}from"./p-CYcWxAp5.js";export{LmvzAction,defineCustomElement as defineCustomElementLmvzAction}from"./lmvz-action.js";export{LmvzButton,defineCustomElement as defineCustomElementLmvzButton}from"./lmvz-button.js";export{LmvzCard,defineCustomElement as defineCustomElementLmvzCard}from"./lmvz-card.js";export{LmvzChip,defineCustomElement as defineCustomElementLmvzChip}from"./lmvz-chip.js";export{LmvzHeader,defineCustomElement as defineCustomElementLmvzHeader}from"./lmvz-header.js";export{LmvzInput,defineCustomElement as defineCustomElementLmvzInput}from"./lmvz-input.js";export{LmvzMenuitem,defineCustomElement as defineCustomElementLmvzMenuitem}from"./lmvz-menuitem.js";export{LmvzSelect,defineCustomElement as defineCustomElementLmvzSelect}from"./lmvz-select.js";const o=["primary","secondary","tertiary"],n=["small","default","large"],m=["xs","sm","md","lg"],l=[...m,"xl"],f=["text","email","password","tel","url","search","number"],p=[...m,"inherit"],v=["thin","medium","bold","filled"],h=["Logo","actions","adduser","alert","apple","arrow-down","arrow-left","arrow-right","arrow-up","book","bookmark","checkmark","chevron-down","chevron-left","chevron-right","chevron-up","close-l","close-sm","cog","computer","dashboard","delete","download","edit","external","facebook","favorite","filter","group","hide","home","info","instagram","letter","linkedin","logout","map","minus","navigation","plus","qr-scan","question","reader","reset","school","search","send","settings","share","shopping-cart","show","snapchat","sort","speech-bubble","star","student","upload","user","warn-circle","warn-triangle","whatsapp","world","x","youtube"];function z(e){return t(e).catch((e=>{console.error("Unhandled error in Effect:",e)}))}export{h as iconNames,p as iconSizes,v as iconWeights,f as inputTypes,z as run,n as scaleValues,m as sizes,l as textSizes,o as variants}
1
+ export{g as getAssetPath,r as render,s as setAssetPath,a as setNonce,b as setPlatformOptions}from"./p-C_bScbrd.js";export{A as ARIA_VALIDATION_RUNTIME_CHANGED_EVENT,d as disableAriaValidation,e as enableAriaValidation,i as isAriaValidationEnabled,q as queueValidation,u as useVerboseLogging}from"./p-CBLAeife.js";export{LmvzIcon,defineCustomElement as defineCustomElementLmvzIcon,g as getRegisteredIconProvider,r as registerIconProvider,t as typedIconFromSet}from"./lmvz-icon.js";export{LmvzAction,defineCustomElement as defineCustomElementLmvzAction}from"./lmvz-action.js";export{LmvzButton,defineCustomElement as defineCustomElementLmvzButton}from"./lmvz-button.js";export{LmvzCard,defineCustomElement as defineCustomElementLmvzCard}from"./lmvz-card.js";export{LmvzChip,defineCustomElement as defineCustomElementLmvzChip}from"./lmvz-chip.js";export{LmvzHeader,defineCustomElement as defineCustomElementLmvzHeader}from"./lmvz-header.js";export{LmvzInput,defineCustomElement as defineCustomElementLmvzInput}from"./lmvz-input.js";export{LmvzMenuitem,defineCustomElement as defineCustomElementLmvzMenuitem}from"./lmvz-menuitem.js";export{LmvzSelect,defineCustomElement as defineCustomElementLmvzSelect}from"./lmvz-select.js";const m=["xs","sm","md","lg"],n=[...m,"xl"],o=["text","email","password","tel","url","search","number"],l=[...m,"inherit"],f=["thin","medium","bold","filled"];export{l as iconSizes,f as iconWeights,o as inputTypes,n as textSizes}
@@ -1,4 +1,4 @@
1
- import type { Components, JSX } from "../../types/components";
1
+ import type { Components, JSX } from "../types/components";
2
2
 
3
3
  interface LmvzAction extends Components.LmvzAction, HTMLElement {}
4
4
  export const LmvzAction: {
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface LmvzAction extends Components.LmvzAction, HTMLElement {}
4
+ export const LmvzAction: {
5
+ prototype: LmvzAction;
6
+ new (): LmvzAction;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -1 +1 @@
1
- import{p as t,H as s,c,h as e,d as i,t as o}from"./p-C_bScbrd.js";const n=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.actionClick=c(this,"actionClick")}actionClick;_onClick(t){this.actionClick.emit(t)}render(){return e(i,{key:"15c0f20e08cd5019abfd3bb71ec69d175dc5ba48",onClick:this._onClick.bind(this)},e("slot",{key:"f71a7853168d1b66b0a50b0f971d140385530ac3"}))}static get style(){return":host{display:block}"}},[257,"lmvz-action"]),a=n,l=function(){"undefined"!=typeof customElements&&["lmvz-action"].forEach((t=>{"lmvz-action"===t&&(customElements.get(o(t))||customElements.define(o(t),n))}))};export{a as LmvzAction,l as defineCustomElement}
1
+ import{p as t,H as s,c,h as e,d as i,t as o}from"./p-C_bScbrd.js";const n=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.actionClick=c(this,"actionClick")}actionClick;_onClick(t){this.actionClick.emit(t)}render(){return e(i,{key:"00da873d80f00dc57e5a0d60f2b58a6c505e41f1",onClick:this._onClick.bind(this)},e("slot",{key:"7938b5e172ef2b027180aac801b0d9962cd68fa5"}))}static get style(){return":host{display:block}"}},[257,"lmvz-action"]),a=n,l=function(){"undefined"!=typeof customElements&&["lmvz-action"].forEach((t=>{"lmvz-action"===t&&(customElements.get(o(t))||customElements.define(o(t),n))}))};export{a as LmvzAction,l as defineCustomElement}
@@ -1,4 +1,4 @@
1
- import type { Components, JSX } from "../../types/components";
1
+ import type { Components, JSX } from "../types/components";
2
2
 
3
3
  interface LmvzButton extends Components.LmvzButton, HTMLElement {}
4
4
  export const LmvzButton: {
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface LmvzButton extends Components.LmvzButton, HTMLElement {}
4
+ export const LmvzButton: {
5
+ prototype: LmvzButton;
6
+ new (): LmvzButton;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -1 +1 @@
1
- import{p as t,c as o,h as e,d as r,t as n}from"./p-C_bScbrd.js";import{c as a}from"./p-BfTCfPZ1.js";import{R as l,a as m}from"./p-Clo63DJF.js";import{E as i}from"./p-CN0JX9-m.js";import{i as s,f as d}from"./p-DQEkWkMh.js";const c=t(class extends l{get el(){return this}validationEl;inheritedAttributes={};formEl=null;formButtonEl=null;lmvzActivation;get ti(){return 0}scale="default";variant="secondary";disabled=!1;type="button";form;constructor(t){super(!1),!1!==t&&this.__registerHost(),this.__attachShadow(),this.lmvzActivation=o(this,"lmvzActivation"),this.addController(new m(this)),this.addController(new i(this,{localHandler:this.handleClick.bind(this),keys:["Enter"]}))}connectedCallback(){this.inheritedAttributes=s(this.el),super.connectedCallback()}renderHiddenButton(){const t=this.formEl=d(this.form,this.el);if(!t)return;const{formButtonEl:o}=this;if(null!==o&&t.contains(o))return;const e=this.formButtonEl=document.createElement("button");e.type="submit",e.style.display="none",e.disabled=this.disabled,t.appendChild(e)}submitForm(t){this.formEl&&this.formButtonEl&&(t.preventDefault(),this.formButtonEl.click())}handleClick=t=>{"submit"===this.type&&this.submitForm(t)};render(){return this.renderHiddenButton(),e(r,{key:"c6f44d3765d579e04ab91272747035d8589e2ff2","aria-disabled":this.disabled?"true":null},e("button",{key:"9d48dfc7a6a23df1eda46e9c9035520789a08d4c",ref:t=>this.validationEl=t,disabled:this.disabled,class:a(this.variant,{[this.scale??""]:!!this.scale,disabled:this.disabled}),...this.inheritedAttributes},e("slot",{key:"95e9fb932e477c7d6e933d2c00e6a3728e55c256"})))}static get delegatesFocus(){return!0}static get style(){return" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } :host { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); 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-align: center; 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-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-selected, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } 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-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #d4d4d4); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: contents; } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } "}},[785,"lmvz-button",{ti:[2562,"tabindex"],scale:[513],variant:[513],disabled:[516],type:[1],form:[1]}]),v=c,u=function(){"undefined"!=typeof customElements&&["lmvz-button"].forEach((t=>{"lmvz-button"===t&&(customElements.get(n(t))||customElements.define(n(t),c))}))};export{v as LmvzButton,u as defineCustomElement}
1
+ import{p as t,c as o,h as r,d as e,t as n}from"./p-C_bScbrd.js";import{c as a}from"./p-BfTCfPZ1.js";import{R as l,a as m}from"./p-CBLAeife.js";import{E as i}from"./p-CN0JX9-m.js";import{i as s,f as d}from"./p-DQEkWkMh.js";const c=t(class extends l{get el(){return this}validationEl;inheritedAttributes={};formEl=null;formButtonEl=null;lmvzActivation;get ti(){return 0}scale="default";variant="secondary";disabled=!1;type="button";form;constructor(t){super(!1),!1!==t&&this.__registerHost(),this.__attachShadow(),this.lmvzActivation=o(this,"lmvzActivation"),this.addController(new m(this)),this.addController(new i(this,{localHandler:this.handleClick.bind(this),keys:["Enter"]}))}connectedCallback(){this.inheritedAttributes=s(this.el),super.connectedCallback()}renderHiddenButton(){const t=this.formEl=d(this.form,this.el);if(!t)return;const{formButtonEl:o}=this;if(null!==o&&t.contains(o))return;const r=this.formButtonEl=document.createElement("button");r.type="submit",r.style.display="none",r.disabled=this.disabled,t.appendChild(r)}submitForm(t){this.formEl&&this.formButtonEl&&(t.preventDefault(),this.formButtonEl.click())}handleClick=t=>{"submit"===this.type&&this.submitForm(t)};render(){return this.renderHiddenButton(),r(e,{key:"1448b16151418790d0a78eda2248b7d61fd8e32b","aria-disabled":this.disabled?"true":null},r("button",{key:"2cf7ccc0692179b68aaea534a7a4d11dbcbe27b5",ref:t=>this.validationEl=t,disabled:this.disabled,class:a(this.variant,{[this.scale??""]:!!this.scale,disabled:this.disabled}),...this.inheritedAttributes},r("slot",{key:"8fd9f99f8c79657fd3dbeafb2fd88ca667bc0d44"})))}static get delegatesFocus(){return!0}static get style(){return" @layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } :host { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); 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-align: center; 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-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-active, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } 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-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: contents; } ::slotted(*) { --lmvz-component-color: var(--lmvz-button-color); } "}},[785,"lmvz-button",{ti:[2562,"tabindex"],scale:[513],variant:[513],disabled:[516],type:[1],form:[1]}]),v=c,u=function(){"undefined"!=typeof customElements&&["lmvz-button"].forEach((t=>{"lmvz-button"===t&&(customElements.get(n(t))||customElements.define(n(t),c))}))};export{v as LmvzButton,u as defineCustomElement}
@@ -1,4 +1,4 @@
1
- import type { Components, JSX } from "../../types/components";
1
+ import type { Components, JSX } from "../types/components";
2
2
 
3
3
  interface LmvzCard extends Components.LmvzCard, HTMLElement {}
4
4
  export const LmvzCard: {
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface LmvzCard extends Components.LmvzCard, HTMLElement {}
4
+ export const LmvzCard: {
5
+ prototype: LmvzCard;
6
+ new (): LmvzCard;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -1 +1 @@
1
- import{p as e,H as r,c as t,h as a,d as o,t as m}from"./p-C_bScbrd.js";import{c as n}from"./p-DHtXOUVf.js";const l=e(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.primaryAction=t(this,"primaryAction")}cardTitle;imageUrl;description;primaryActionLabel="";primaryAction;get fallbackImage(){return n("card-placeholder.svg")}_onPrimaryClick(){this.primaryAction.emit()}_onOverflowClick(e){console.log(e)}render(){return a(o,{key:"46c2832b4f90b9eb222749632bc7ad59cd645e10",role:"article"},a("div",{key:"cc387fe96cff2dd04c24f75cf838a2bf6f438279",class:"top"},a("div",{key:"f9a54a5f81378ef4265e1d74c36c78af002e8874",class:"image-wrapper",style:{backgroundImage:`url(${this.imageUrl??this.fallbackImage})`}},a("div",{key:"76daed00408f7ae9ee46977637ddcd3d4f846380",class:"chip-slot"},a("slot",{key:"6ad522ef7428166b876d0218ef8d801c4ef337f1",name:"chip"})))),a("div",{key:"9c9799668ac199cfecbe10061e271d70d70e2d07",class:"bottom"},a("header",{key:"1bec743235bea5c7ab163225ffbd7bc6cf11f754"},a("h2",{key:"06f8e14153328bc5ca920e71e09d9343047c440c",class:"title"},this.cardTitle)),a("p",{key:"86b95db4e6464ca3236b4a03798013c3580819bf",class:"description"},this.description),a("div",{key:"553dc998d5318a4730196baa0b9baff3a0a3369f",class:"actions"},a("button",{key:"7532d01b46769198c23a1b1015c187fdefce146a",class:"primary",onClick:this._onPrimaryClick.bind(this),"data-testid":"primary"},this.primaryActionLabel),a("button",{key:"633d679ae59b1896aa2a06e04b4564569cf27a7d",class:"tertiary","aria-label":"More actions",onClick:this._onOverflowClick},a("span",{key:"b72c45f93d259502b9d7c5ffb19e292a53c60ec6",class:"icon-placeholder"},"...")))))}static get assetsDirs(){return["../../assets"]}static get style(){return"@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } .sc-lmvz-card-h { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); 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-align: center; 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-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-selected, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } 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-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #d4d4d4); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: flex; min-width: var(--lmvz-other-component-card-minwidth, 20.4375rem); max-width: var(--lmvz-other-component-card-maxwidth, 21.6875rem); flex-direction: column; align-items: flex-start; border-radius: var(--lmvz-semantic-border-radius-lg, 14px); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); background: var(--lmvz-semantic-color-surface-primary, #ffffff); } *.sc-lmvz-card { color: var(--lmvz-semantic-color-on-surface-primary, #000000); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .top.sc-lmvz-card { display: flex; padding: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); flex-direction: column; justify-content: center; align-items: center; align-self: stretch; } .bottom.sc-lmvz-card { display: flex; min-width: 150px; padding: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)); flex-direction: column; align-items: flex-start; align-self: stretch; } .title.sc-lmvz-card { margin: 0; display: flex; justify-content: center; align-items: center; align-self: stretch; padding-bottom: var(--lmvz-global-s4, 4px); overflow-wrap: break-word; font: var(--lmvz-typography-heading-2xl, 500 clamp(2rem, 1.94rem + 0.26vw, 2.25rem) / 1.2 Router); } .description.sc-lmvz-card { display: flex; margin: 0; padding-bottom: var(--lmvz-component-body-sm-padding-bottom, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-items: flex-start; align-self: stretch; white-space: pre-line; font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .image-wrapper.sc-lmvz-card { aspect-ratio: 4 / 3; width: 100%; background-size: cover; background-position: center; flex: 1 0 0; align-self: stretch; border-radius: var(--lmvz-semantic-border-radius-md, 6px); } .actions.sc-lmvz-card { margin-top: var(--lmvz-component-form-wrapper-gap-y, clamp(1.13rem, 0.97rem + 0.65vw, 1.75rem)); display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-self: stretch; } button.primary.sc-lmvz-card, lmvz-button.primary.sc-lmvz-card { display: flex; justify-content: center; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); flex: 1 0 0; }"}},[774,"lmvz-card",{cardTitle:[1,"card-title"],imageUrl:[1,"image-url"],description:[1],primaryActionLabel:[1,"primary-action-label"]}]),c=l,i=function(){"undefined"!=typeof customElements&&["lmvz-card"].forEach((e=>{"lmvz-card"===e&&(customElements.get(m(e))||customElements.define(m(e),l))}))};export{c as LmvzCard,i as defineCustomElement}
1
+ import{g as e,p as r,H as t,c as a,h as o,d as n,t as l}from"./p-C_bScbrd.js";const m=r(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.primaryAction=a(this,"primaryAction")}cardTitle;imageUrl;description;primaryActionLabel="";primaryAction;get fallbackImage(){return((r,t)=>{const a=function(...e){return e.filter(Boolean).join("/").replace("//","/").replace("/./","/")}("../../assets",t,r);try{return e(a)}catch{return console.warn(`Failed to create URL for asset "${r}" in path "${t}".\n Please provide an absolute URL in your app's 'setAssetPath(...)' configuration! Falling back to a relative URL, which may work in some environments but is not guaranteed to be correct.`),new URL(a,import.meta?.url??window?.location?.origin??"")}})("card-placeholder.svg")}_onPrimaryClick(){this.primaryAction.emit()}_onOverflowClick(e){console.log(e)}render(){return o(n,{key:"fceb19eb0d7ad6c6aecfa6fbd5bb6425c7c3e312",role:"article"},o("div",{key:"4cb516b5dee1f2f84f21984fa350f61fd83c771c",class:"top"},o("div",{key:"713b2a3245d885a9b99f6c7d54a35053699c1be8",class:"image-wrapper",style:{backgroundImage:`url(${this.imageUrl??this.fallbackImage})`}},o("div",{key:"e8ea65e7f5d11a2335cab950d6bf02208d0b18a1",class:"chip-slot"},o("slot",{key:"e9a039742107fdf56216186ddcdf367c4432790b",name:"chip"})))),o("div",{key:"9549e46a1872e0edf298b79435d298aa1ae96a37",class:"bottom"},o("header",{key:"3bbfb72ecec519d16380ae7e00da4b1ccb6f1cf3"},o("h2",{key:"f5a33e498893e61b407c10ab36c9a93b7eecf9f1",class:"title"},this.cardTitle)),o("p",{key:"19709bb100d014369c836a5a7174772f2d095d2e",class:"description"},this.description),o("div",{key:"06b5acab3c80cc91865f3aa39da32d42f470348e",class:"actions"},o("button",{key:"4e954452ac9771359c881aa6b43f11e89e38aecf",class:"primary",onClick:this._onPrimaryClick.bind(this),"data-testid":"primary"},this.primaryActionLabel),o("button",{key:"b6a682bf95eb26468c450bed494290565288a515",class:"tertiary","aria-label":"More actions",onClick:this._onOverflowClick},o("span",{key:"70a526d1fafd8b7051f6e7107b35d6f594e10d68",class:"icon-placeholder"},"...")))))}static get assetsDirs(){return["../../assets"]}static get style(){return"@layer lmvz-ds.reset, lmvz-ds.theme, lmvz-ds.components, lmvz-ds.overrides; @layer lmvz-ds.theme { @font-face { font-family: Router; src: local('Router-Book'), url('/assets/fonts/Router-Book.woff') format('woff'), local('Router'); font-weight: 400 normal; } @font-face { font-family: Router; src: local('Router-Medium'), url('/assets/fonts/Router-Medium.woff') format('woff'), local('Router'); font-weight: 500; } @font-face { font-family: Router; src: local('Router-Bold'), url('/assets/fonts/Router-Bold.woff') format('woff'), local('Router'); font-weight: 700 bold; } } @layer lmvz-ds.reset { body { margin: 0; } h1, h2, h3, h4, h5, h6 { margin: 0; } } .sc-lmvz-card-h { button { --lmvz-button-color: var(--lmvz-component-color, var(--lmvz-semantic-color-int-on-primary, #ffffff)); --lmvz-button-padding-inline: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-x, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-padding-block: var(--lmvz-button-padding, var(--lmvz-component-input-md-padding-y, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))); --lmvz-button-gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); --lmvz-button-radius: var(--lmvz-component-input-radius-default, 999px); --lmvz-button-border-width: 0; --lmvz-button-border-color: transparent; --lmvz-button-background: var(--lmvz-semantic-color-int-primary, #000000); display: inline-flex; align-items: center; justify-content: center; gap: var(--lmvz-button-gap); padding-block: var(--lmvz-button-padding-block); padding-inline: var(--lmvz-button-padding-inline); 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-align: center; 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-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-status-active, #f1f9fe); outline-offset: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); } 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-semantic-color-int-primary-hover, #2e2e2e); } button:not([disabled]):active { --lmvz-button-background: var(--lmvz-semantic-color-int-primary-active, #545454); } button.secondary { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary, #f0f0f0); --lmvz-button-color: var(--lmvz-semantic-color-int-on-secondary, #000000); --lmvz-button-border-width: var(--lmvz-semantic-border-width-default, 1px); --lmvz-button-border-color: var(--lmvz-semantic-color-border-default, #e0e0e0); } button.secondary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-hover, #e0e0e0); --lmvz-button-border-color: var(--lmvz-semantic-color-border-hover, #c7c7c7); } button.secondary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-secondary-active, #d4d4d4); --lmvz-button-border-color: var(--lmvz-semantic-color-border-active, #0f8acc); } button.tertiary { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary, #ffffff); --lmvz-button-color: var(--lmvz-semantic-color-int-on-tertiary, #545454); } button.tertiary:not([disabled], .disabled):hover { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-hover, #f0f0f0); } button.tertiary:not([disabled], .disabled):active { --lmvz-button-background: var(--lmvz-semantic-color-int-tertiary-active, #e0e0e0); } button.small { --lmvz-button-padding-inline: var(--lmvz-component-input-sm-padding-x, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-padding-block: var(--lmvz-component-input-sm-padding-y, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); --lmvz-button-gap: var(--lmvz-component-input-sm-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } button.large { --lmvz-button-padding-inline: var(--lmvz-component-input-lg-padding-x, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-padding-block: var(--lmvz-component-input-lg-padding-y, clamp(0.88rem, 0.78rem + 0.39vw, 1.25rem)); --lmvz-button-gap: var(--lmvz-component-input-lg-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); --lmvz-button-font: var(--lmvz-typography-body-lg, 400 clamp(1rem, 0.97rem + 0.13vw, 1.13rem) / 1.4 Router); } display: flex; min-width: var(--lmvz-card-component-card-minwidth, 20.4375rem); max-width: var(--lmvz-card-component-card-maxwidth, 21.6875rem); flex-direction: column; align-items: flex-start; border-radius: var(--lmvz-semantic-border-radius-lg, 14px); border: var(--lmvz-semantic-border-width-default, 1px) solid var(--lmvz-semantic-color-border-default, #e0e0e0); background: var(--lmvz-semantic-color-surface-primary, #ffffff); } *.sc-lmvz-card { color: var(--lmvz-semantic-color-on-surface-primary, #000000); font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .top.sc-lmvz-card { display: flex; padding: var(--lmvz-dimension-8-12, clamp(0.5rem, 0.44rem + 0.26vw, 0.75rem)); flex-direction: column; justify-content: center; align-items: center; align-self: stretch; } .bottom.sc-lmvz-card { display: flex; min-width: 150px; padding: var(--lmvz-dimension-4-6, clamp(0.25rem, 0.22rem + 0.13vw, 0.38rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)) var(--lmvz-dimension-10-14, clamp(0.63rem, 0.56rem + 0.26vw, 0.88rem)); flex-direction: column; align-items: flex-start; align-self: stretch; } .title.sc-lmvz-card { margin: 0; display: flex; justify-content: center; align-items: center; align-self: stretch; padding-bottom: var(--lmvz-global-s4, 4px); overflow-wrap: break-word; font: var(--lmvz-typography-heading-2xl, 500 clamp(2.25rem, 2.13rem + 0.52vw, 2.75rem) / 1.2 Router); } .description.sc-lmvz-card { display: flex; margin: 0; padding-bottom: var(--lmvz-component-body-sm-padding-bottom, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-items: flex-start; align-self: stretch; white-space: pre-line; font: var(--lmvz-typography-body-md, 400 clamp(0.88rem, 0.84rem + 0.13vw, 1rem) / 1.4 Router); } .image-wrapper.sc-lmvz-card { aspect-ratio: 4 / 3; width: 100%; background-size: cover; background-position: center; flex: 1 0 0; align-self: stretch; border-radius: var(--lmvz-semantic-border-radius-md, 6px); } .actions.sc-lmvz-card { margin-top: var(--lmvz-component-form-wrapper-gap-y, clamp(1.13rem, 0.97rem + 0.65vw, 1.75rem)); display: flex; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); align-self: stretch; } button.primary.sc-lmvz-card, lmvz-button.primary.sc-lmvz-card { display: flex; justify-content: center; align-items: center; gap: var(--lmvz-component-input-md-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem)); flex: 1 0 0; }"}},[774,"lmvz-card",{cardTitle:[1,"card-title"],imageUrl:[1,"image-url"],description:[1],primaryActionLabel:[1,"primary-action-label"]}]),i=m,c=function(){"undefined"!=typeof customElements&&["lmvz-card"].forEach((e=>{"lmvz-card"===e&&(customElements.get(l(e))||customElements.define(l(e),m))}))};export{i as LmvzCard,c as defineCustomElement}