@lmvz-ds/components 0.17.3 → 0.18.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 (276) hide show
  1. package/CHANGELOG.md +11 -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-button.cjs.entry.js +3 -3
  8. package/cjs/lmvz-card.cjs.entry.js +22 -2
  9. package/cjs/lmvz-components.cjs.js +1 -1
  10. package/cjs/lmvz-header_2.cjs.entry.js +5 -5
  11. package/cjs/lmvz-icon.cjs.entry.js +24 -13
  12. package/cjs/lmvz-input.cjs.entry.js +4 -4
  13. package/cjs/lmvz-menuitem.cjs.entry.js +2 -2
  14. package/cjs/lmvz-select.cjs.entry.js +2 -2
  15. package/cjs/loader.cjs.js +1 -1
  16. package/cjs/logger-Bn2yoZGP.js +7189 -0
  17. package/cjs/{reactive-controller-host-B_davRfI.js → reactive-controller-host-CtaVAiYJ.js} +27 -23
  18. package/collection/api/ds.constants.js +0 -66
  19. package/collection/collection-manifest.json +1 -1
  20. package/collection/components/lmvz-button/lmvz-button.js +5 -5
  21. package/collection/components/lmvz-header/lmvz-header.js +2 -2
  22. package/collection/components/lmvz-icon/lmvz-icon.css +5 -5
  23. package/collection/components/lmvz-icon/lmvz-icon.js +49 -18
  24. package/collection/components/lmvz-input/lmvz-input.js +6 -6
  25. package/collection/index.js +1 -2
  26. package/collection/integration/header-integration/header-integration.js +51 -0
  27. package/collection/utils/aria/aria-validation-controller.js +27 -23
  28. package/collection/utils/http.js +10 -13
  29. package/collection/utils/icons/icons-registry.js +34 -0
  30. package/collection/utils/icons/icons.js +49 -0
  31. package/collection/utils/icons/icons.unit.js +73 -0
  32. package/collection/utils/icons/public.js +2 -0
  33. package/collection/utils/public.js +1 -1
  34. package/components/index.d.ts +9 -9
  35. package/components/index.d.ts.bak +10 -10
  36. package/components/index.js +1 -1
  37. package/components/lmvz-action.d.ts +1 -1
  38. package/components/lmvz-action.d.ts.bak +11 -0
  39. package/components/lmvz-button.d.ts +1 -1
  40. package/components/lmvz-button.d.ts.bak +11 -0
  41. package/components/lmvz-button.js +1 -1
  42. package/components/lmvz-card.d.ts +1 -1
  43. package/components/lmvz-card.d.ts.bak +11 -0
  44. package/components/lmvz-card.js +1 -1
  45. package/components/lmvz-chip.d.ts +1 -1
  46. package/components/lmvz-chip.d.ts.bak +11 -0
  47. package/components/lmvz-header.d.ts +1 -1
  48. package/components/lmvz-header.d.ts.bak +11 -0
  49. package/components/lmvz-header.js +1 -1
  50. package/components/lmvz-icon.d.ts +1 -1
  51. package/components/lmvz-icon.d.ts.bak +11 -0
  52. package/components/lmvz-icon.js +1 -1
  53. package/components/lmvz-input.d.ts +1 -1
  54. package/components/lmvz-input.d.ts.bak +11 -0
  55. package/components/lmvz-input.js +1 -1
  56. package/components/lmvz-menuitem.d.ts +1 -1
  57. package/components/lmvz-menuitem.d.ts.bak +11 -0
  58. package/components/lmvz-menuitem.js +1 -1
  59. package/components/lmvz-select.d.ts +1 -1
  60. package/components/lmvz-select.d.ts.bak +11 -0
  61. package/components/lmvz-select.js +1 -1
  62. package/components/{p-Clo63DJF.js → p-CBLAeife.js} +1 -1
  63. package/components/p-DXOTa5VF.js +12 -0
  64. package/components/p-fiRXhuXK.js +1 -0
  65. package/esm/{aria-loader-D9aySMw6.js → aria-loader-BF_AYtbb.js} +2 -2
  66. package/esm/icons-Ca8oMiRa.js +157 -0
  67. package/esm/{index-n6jVNpyp.js → index-7Ru1khgk.js} +11972 -309
  68. package/esm/index.js +4 -80
  69. package/esm/lmvz-button.entry.js +3 -3
  70. package/esm/lmvz-card.entry.js +21 -2
  71. package/esm/lmvz-components.js +1 -1
  72. package/esm/lmvz-header_2.entry.js +5 -5
  73. package/esm/lmvz-icon.entry.js +24 -13
  74. package/esm/lmvz-input.entry.js +4 -4
  75. package/esm/lmvz-menuitem.entry.js +2 -2
  76. package/esm/lmvz-select.entry.js +2 -2
  77. package/esm/loader.js +1 -1
  78. package/esm/logger-fiRXhuXK.js +6990 -0
  79. package/esm/{reactive-controller-host-ByKmPKq1.js → reactive-controller-host-sR2jJxNG.js} +27 -23
  80. package/hydrate/index.js +68 -3832
  81. package/hydrate/index.mjs +68 -3832
  82. package/lmvz-components/index.esm.js +1 -1
  83. package/lmvz-components/lmvz-components.esm.js +1 -1
  84. package/lmvz-components/{p-986acfd0.entry.js → p-30b99f11.entry.js} +1 -1
  85. package/lmvz-components/{p-1bda378c.entry.js → p-77007422.entry.js} +1 -1
  86. package/lmvz-components/{p-CU4XwA2K.js → p-B3dnXEPG.js} +1 -1
  87. package/lmvz-components/p-Bh2Epkwf.js +1 -0
  88. package/lmvz-components/{p-DPHHQR5F.js → p-Bkfdgg0T.js} +1 -1
  89. package/lmvz-components/p-DXOTa5VF.js +12 -0
  90. package/lmvz-components/p-ae4aeb0a.entry.js +1 -0
  91. package/lmvz-components/p-b0208356.entry.js +1 -0
  92. package/lmvz-components/{p-121f74d8.entry.js → p-bfd7db0a.entry.js} +1 -1
  93. package/lmvz-components/{p-abbfa6aa.entry.js → p-d2e42f6a.entry.js} +1 -1
  94. package/lmvz-components/{p-b704eca8.entry.js → p-ffa21507.entry.js} +1 -1
  95. package/lmvz-components/p-fiRXhuXK.js +1 -0
  96. package/manifest.json +64 -283
  97. package/package.json +4 -2
  98. package/types/api/ds.constants.d.ts +22 -1
  99. package/types/api/ds.types.d.ts +3 -38
  100. package/types/api/index.d.ts +0 -1
  101. package/types/components/lmvz-action/lmvz-action.d.ts +1 -0
  102. package/types/components/lmvz-button/lmvz-button.d.ts +2 -2
  103. package/types/components/lmvz-card/lmvz-card.d.ts +1 -0
  104. package/types/components/lmvz-chip/lmvz-chip.d.ts +1 -0
  105. package/types/components/lmvz-header/lmvz-header.d.ts +1 -0
  106. package/types/components/lmvz-icon/lmvz-icon.d.ts +4 -1
  107. package/types/components/lmvz-input/lmvz-input.d.ts +1 -0
  108. package/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +1 -0
  109. package/types/components/lmvz-select/lmvz-select.d.ts +1 -0
  110. package/types/components.d.ts +747 -931
  111. package/types/index.d.ts +2 -2
  112. package/types/utils/aria/aria-validation-controller.d.ts +1 -0
  113. package/types/utils/aria/element-activation-controller.d.ts +1 -0
  114. package/types/utils/aria/list-keyboard-controller.d.ts +1 -0
  115. package/types/utils/assets.d.ts +1 -0
  116. package/types/utils/component.d.ts +2 -4
  117. package/types/utils/environment.d.ts +1 -0
  118. package/types/utils/http.d.ts +11 -8
  119. package/types/utils/http.unit.d.ts +1 -0
  120. package/types/utils/icons/icons-registry.d.ts +13 -0
  121. package/types/utils/icons/icons.d.ts +8 -0
  122. package/types/utils/icons/icons.unit.d.ts +8 -0
  123. package/types/utils/icons/public.d.ts +4 -0
  124. package/types/utils/public.d.ts +2 -1
  125. package/types/utils/reactive-controller-host.d.ts +1 -0
  126. package/assets/icons/actions.svg +0 -5
  127. package/assets/icons/adduser.svg +0 -3
  128. package/assets/icons/alert.svg +0 -3
  129. package/assets/icons/apple.svg +0 -3
  130. package/assets/icons/arrow-down.svg +0 -3
  131. package/assets/icons/arrow-left.svg +0 -3
  132. package/assets/icons/arrow-right.svg +0 -3
  133. package/assets/icons/arrow-up.svg +0 -3
  134. package/assets/icons/book.svg +0 -3
  135. package/assets/icons/bookmark.svg +0 -3
  136. package/assets/icons/checkmark.svg +0 -3
  137. package/assets/icons/chevron-left.svg +0 -3
  138. package/assets/icons/chevron-right.svg +0 -3
  139. package/assets/icons/chevron-up.svg +0 -3
  140. package/assets/icons/close-l.svg +0 -3
  141. package/assets/icons/close-sm.svg +0 -3
  142. package/assets/icons/cog.svg +0 -4
  143. package/assets/icons/computer.svg +0 -3
  144. package/assets/icons/dashboard.svg +0 -6
  145. package/assets/icons/delete.svg +0 -3
  146. package/assets/icons/download.svg +0 -3
  147. package/assets/icons/edit.svg +0 -3
  148. package/assets/icons/external.svg +0 -3
  149. package/assets/icons/facebook.svg +0 -3
  150. package/assets/icons/favorite.svg +0 -3
  151. package/assets/icons/filter.svg +0 -3
  152. package/assets/icons/group.svg +0 -3
  153. package/assets/icons/hide.svg +0 -3
  154. package/assets/icons/home.svg +0 -3
  155. package/assets/icons/info.svg +0 -3
  156. package/assets/icons/instagram.svg +0 -3
  157. package/assets/icons/letter.svg +0 -3
  158. package/assets/icons/linkedin.svg +0 -5
  159. package/assets/icons/logout.svg +0 -3
  160. package/assets/icons/map.svg +0 -3
  161. package/assets/icons/minus.svg +0 -3
  162. package/assets/icons/navigation.svg +0 -3
  163. package/assets/icons/plus.svg +0 -3
  164. package/assets/icons/qr-scan.svg +0 -3
  165. package/assets/icons/question.svg +0 -10
  166. package/assets/icons/reader.svg +0 -3
  167. package/assets/icons/reset.svg +0 -3
  168. package/assets/icons/school.svg +0 -3
  169. package/assets/icons/search.svg +0 -3
  170. package/assets/icons/send.svg +0 -3
  171. package/assets/icons/settings.svg +0 -3
  172. package/assets/icons/share.svg +0 -10
  173. package/assets/icons/shopping-cart.svg +0 -3
  174. package/assets/icons/show.svg +0 -3
  175. package/assets/icons/snapchat.svg +0 -3
  176. package/assets/icons/sort.svg +0 -3
  177. package/assets/icons/speech-bubble.svg +0 -3
  178. package/assets/icons/star.svg +0 -3
  179. package/assets/icons/student.svg +0 -3
  180. package/assets/icons/upload.svg +0 -3
  181. package/assets/icons/user.svg +0 -3
  182. package/assets/icons/warn-circle.svg +0 -3
  183. package/assets/icons/warn-triangle.svg +0 -3
  184. package/assets/icons/whatsapp.svg +0 -4
  185. package/assets/icons/world.svg +0 -10
  186. package/assets/icons/x.svg +0 -3
  187. package/assets/icons/youtube.svg +0 -3
  188. package/cjs/Effect-YVFLBEfy.js +0 -19037
  189. package/cjs/assets-DxYhun-q.js +0 -26
  190. package/cjs/icons-DgYgcKGK.js +0 -653
  191. package/collection/api/index.js +0 -1
  192. package/collection/assets/icons/actions.svg +0 -5
  193. package/collection/assets/icons/adduser.svg +0 -3
  194. package/collection/assets/icons/alert.svg +0 -3
  195. package/collection/assets/icons/apple.svg +0 -3
  196. package/collection/assets/icons/arrow-down.svg +0 -3
  197. package/collection/assets/icons/arrow-left.svg +0 -3
  198. package/collection/assets/icons/arrow-right.svg +0 -3
  199. package/collection/assets/icons/arrow-up.svg +0 -3
  200. package/collection/assets/icons/book.svg +0 -3
  201. package/collection/assets/icons/bookmark.svg +0 -3
  202. package/collection/assets/icons/checkmark.svg +0 -3
  203. package/collection/assets/icons/chevron-left.svg +0 -3
  204. package/collection/assets/icons/chevron-right.svg +0 -3
  205. package/collection/assets/icons/chevron-up.svg +0 -3
  206. package/collection/assets/icons/close-l.svg +0 -3
  207. package/collection/assets/icons/close-sm.svg +0 -3
  208. package/collection/assets/icons/cog.svg +0 -4
  209. package/collection/assets/icons/computer.svg +0 -3
  210. package/collection/assets/icons/dashboard.svg +0 -6
  211. package/collection/assets/icons/delete.svg +0 -3
  212. package/collection/assets/icons/download.svg +0 -3
  213. package/collection/assets/icons/edit.svg +0 -3
  214. package/collection/assets/icons/external.svg +0 -3
  215. package/collection/assets/icons/facebook.svg +0 -3
  216. package/collection/assets/icons/favorite.svg +0 -3
  217. package/collection/assets/icons/filter.svg +0 -3
  218. package/collection/assets/icons/group.svg +0 -3
  219. package/collection/assets/icons/hide.svg +0 -3
  220. package/collection/assets/icons/home.svg +0 -3
  221. package/collection/assets/icons/info.svg +0 -3
  222. package/collection/assets/icons/instagram.svg +0 -3
  223. package/collection/assets/icons/letter.svg +0 -3
  224. package/collection/assets/icons/linkedin.svg +0 -5
  225. package/collection/assets/icons/logout.svg +0 -3
  226. package/collection/assets/icons/map.svg +0 -3
  227. package/collection/assets/icons/minus.svg +0 -3
  228. package/collection/assets/icons/navigation.svg +0 -3
  229. package/collection/assets/icons/plus.svg +0 -3
  230. package/collection/assets/icons/qr-scan.svg +0 -3
  231. package/collection/assets/icons/question.svg +0 -10
  232. package/collection/assets/icons/reader.svg +0 -3
  233. package/collection/assets/icons/reset.svg +0 -3
  234. package/collection/assets/icons/school.svg +0 -3
  235. package/collection/assets/icons/search.svg +0 -3
  236. package/collection/assets/icons/send.svg +0 -3
  237. package/collection/assets/icons/settings.svg +0 -3
  238. package/collection/assets/icons/share.svg +0 -10
  239. package/collection/assets/icons/shopping-cart.svg +0 -3
  240. package/collection/assets/icons/show.svg +0 -3
  241. package/collection/assets/icons/snapchat.svg +0 -3
  242. package/collection/assets/icons/sort.svg +0 -3
  243. package/collection/assets/icons/speech-bubble.svg +0 -3
  244. package/collection/assets/icons/star.svg +0 -3
  245. package/collection/assets/icons/student.svg +0 -3
  246. package/collection/assets/icons/upload.svg +0 -3
  247. package/collection/assets/icons/user.svg +0 -3
  248. package/collection/assets/icons/warn-circle.svg +0 -3
  249. package/collection/assets/icons/warn-triangle.svg +0 -3
  250. package/collection/assets/icons/whatsapp.svg +0 -4
  251. package/collection/assets/icons/world.svg +0 -10
  252. package/collection/assets/icons/x.svg +0 -3
  253. package/collection/assets/icons/youtube.svg +0 -3
  254. package/collection/components/lmvz-icon/icons.js +0 -36
  255. package/collection/components/lmvz-icon/public.js +0 -1
  256. package/collection/components/lmvz-icon/test/icons.unit.js +0 -98
  257. package/collection/integration/header-integration.js +0 -46
  258. package/collection/utils/effect.js +0 -6
  259. package/collection/utils/validation/svg.js +0 -24
  260. package/components/p-CYcWxAp5.js +0 -1
  261. package/components/p-DHtXOUVf.js +0 -1
  262. package/components/p-VkiNs_yz.js +0 -12
  263. package/esm/Effect-DkwJP3kx.js +0 -18828
  264. package/esm/assets-_WDisN-f.js +0 -23
  265. package/esm/icons-Crg18Lio.js +0 -649
  266. package/lmvz-components/p-373a9cbf.entry.js +0 -1
  267. package/lmvz-components/p-6d5fa8c4.entry.js +0 -1
  268. package/lmvz-components/p-BT8PQPMJ.js +0 -1
  269. package/lmvz-components/p-BxiCs9Wn.js +0 -1
  270. package/lmvz-components/p-CXQcJLbG.js +0 -12
  271. package/lmvz-components/p-DkwJP3kx.js +0 -1
  272. package/types/components/lmvz-icon/icons.d.ts +0 -8
  273. package/types/components/lmvz-icon/public.d.ts +0 -1
  274. package/types/components/lmvz-icon/test/icons.unit.d.ts +0 -1
  275. package/types/utils/effect.d.ts +0 -3
  276. package/types/utils/validation/svg.d.ts +0 -11
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var ariaLoader = require('./aria-loader-W9Zvc9e-.js');
3
+ var ariaLoader = require('./aria-loader-CfFuAbJn.js');
4
4
  var index = require('./index-C2yDXRqP.js');
5
5
 
6
6
  class AriaValidationController {
@@ -59,25 +59,27 @@ 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
+ {
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,10 +140,12 @@ class AriaValidationController {
138
140
  });
139
141
  }
140
142
  discardVisibilityObserver() {
141
- if (!this.visibilityObserver)
142
- return;
143
- this.visibilityObserver.disconnect();
144
- this.visibilityObserver = undefined;
143
+ {
144
+ if (!this.visibilityObserver)
145
+ return;
146
+ this.visibilityObserver.disconnect();
147
+ this.visibilityObserver = undefined;
148
+ }
145
149
  }
146
150
  }
147
151
 
@@ -5,69 +5,3 @@ export const textSizes = [...sizes, 'xl'];
5
5
  export const inputTypes = ['text', 'email', 'password', 'tel', 'url', 'search', 'number'];
6
6
  export const iconSizes = [...sizes, 'inherit'];
7
7
  export const iconWeights = ['thin', 'medium', 'bold', 'filled'];
8
- export const iconNames = [
9
- 'Logo',
10
- 'actions',
11
- 'adduser',
12
- 'alert',
13
- 'apple',
14
- 'arrow-down',
15
- 'arrow-left',
16
- 'arrow-right',
17
- 'arrow-up',
18
- 'book',
19
- 'bookmark',
20
- 'checkmark',
21
- 'chevron-down',
22
- 'chevron-left',
23
- 'chevron-right',
24
- 'chevron-up',
25
- 'close-l',
26
- 'close-sm',
27
- 'cog',
28
- 'computer',
29
- 'dashboard',
30
- 'delete',
31
- 'download',
32
- 'edit',
33
- 'external',
34
- 'facebook',
35
- 'favorite',
36
- 'filter',
37
- 'group',
38
- 'hide',
39
- 'home',
40
- 'info',
41
- 'instagram',
42
- 'letter',
43
- 'linkedin',
44
- 'logout',
45
- 'map',
46
- 'minus',
47
- 'navigation',
48
- 'plus',
49
- 'qr-scan',
50
- 'question',
51
- 'reader',
52
- 'reset',
53
- 'school',
54
- 'search',
55
- 'send',
56
- 'settings',
57
- 'share',
58
- 'shopping-cart',
59
- 'show',
60
- 'snapchat',
61
- 'sort',
62
- 'speech-bubble',
63
- 'star',
64
- 'student',
65
- 'upload',
66
- 'user',
67
- 'warn-circle',
68
- 'warn-triangle',
69
- 'whatsapp',
70
- 'world',
71
- 'x',
72
- 'youtube',
73
- ];
@@ -9,7 +9,7 @@
9
9
  "components/lmvz-input/lmvz-input.js",
10
10
  "components/lmvz-menuitem/lmvz-menuitem.js",
11
11
  "components/lmvz-select/lmvz-select.js",
12
- "integration/header-integration.js"
12
+ "integration/header-integration/header-integration.js"
13
13
  ],
14
14
  "mixins": [],
15
15
  "compiler": {
@@ -57,7 +57,7 @@ export class LmvzButton extends ReactiveControllerHost {
57
57
  };
58
58
  render() {
59
59
  this.renderHiddenButton();
60
- return (h(Host, { key: 'c6f44d3765d579e04ab91272747035d8589e2ff2', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: '9d48dfc7a6a23df1eda46e9c9035520789a08d4c', ref: (e) => (this.validationEl = e), disabled: this.disabled, class: classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: '95e9fb932e477c7d6e933d2c00e6a3728e55c256' }))));
60
+ return (h(Host, { key: '2897a943aca62561b0e78b5b3f2b7b85d76f4e78', "aria-disabled": this.disabled ? 'true' : null }, h("button", { key: '92555224e33b00fb2602fdb2d19075145c0d9097', ref: (e) => (this.validationEl = e), disabled: this.disabled, class: classNames(this.variant, { [this.scale ?? '']: !!this.scale, disabled: this.disabled }), ...this.inheritedAttributes }, h("slot", { key: '637a03a73db84a63bf1e3165d57c474151f87783' }))));
61
61
  }
62
62
  static get is() { return "lmvz-button"; }
63
63
  static get encapsulation() { return "shadow"; }
@@ -104,7 +104,7 @@ export class LmvzButton extends ReactiveControllerHost {
104
104
  "Button": {
105
105
  "location": "import",
106
106
  "path": "../../api",
107
- "id": "src/api/index.ts::Button",
107
+ "id": "src/api/index.d.ts::Button",
108
108
  "referenceLocation": "Button"
109
109
  }
110
110
  }
@@ -134,7 +134,7 @@ export class LmvzButton extends ReactiveControllerHost {
134
134
  "Button": {
135
135
  "location": "import",
136
136
  "path": "../../api",
137
- "id": "src/api/index.ts::Button",
137
+ "id": "src/api/index.d.ts::Button",
138
138
  "referenceLocation": "Button"
139
139
  }
140
140
  }
@@ -206,8 +206,8 @@ export class LmvzButton extends ReactiveControllerHost {
206
206
  "references": {
207
207
  "FormRef": {
208
208
  "location": "import",
209
- "path": "../../utils/component",
210
- "id": "src/utils/component.ts::FormRef",
209
+ "path": "../../api",
210
+ "id": "src/api/index.d.ts::FormRef",
211
211
  "referenceLocation": "FormRef"
212
212
  }
213
213
  }
@@ -1,8 +1,8 @@
1
1
  import { h, Host } from "@stencil/core";
2
- import logo from "../../assets/icons/Logo.svg";
3
2
  import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
4
3
  import { ListKeyboardNavigationController } from "../../utils/aria/list-keyboard-controller";
5
4
  import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
5
+ import logo from "../../assets/icons/Logo.svg";
6
6
  export class LmvzHeader extends ReactiveControllerHost {
7
7
  el;
8
8
  get validationEl() {
@@ -84,7 +84,7 @@ export class LmvzHeader extends ReactiveControllerHost {
84
84
  }
85
85
  }
86
86
  render() {
87
- return (h(Host, { key: '35883b5d4a92d10b5b010d822fb2233604464f9b', onFocus: this.delegateFocus.bind(this) }, h("div", { key: '6fdec3af75bab2b076651b8cfef4aec8e23326a6', class: "brand" }, h("slot", { key: '3127b4223b8bebfe425efc7ce45626f37fbf76b9', name: "brand" }, h("img", { key: '20b3dd598e320c6950fb08bbd55dd80c47552eaf', id: "fallback-logo-lmvz", src: logo, alt: "Lehrmittelverlag Z\u00FCrich" }))), h("nav", { key: 'c3bf07f78930085c1a7b89421506bcd41d139911', "aria-label": "Hauptnavigation" }, h("div", { key: 'fbc5199080f52da4f10c8c14fbbc0877ecc5f31c', role: "menubar", class: "primary-menubar" }, h("slot", { key: '4210d213dcf7a1a27a73f2a9cf7ff97fec62f0db', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), h("div", { key: '7b91c269f75e1245f75d471ec5bb7eeabfe1094d', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, h("slot", { key: 'e23eb0f222b49d912bb45870df6d9b0d01f43788', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), h("div", { key: '4b19026d5b2e54aa7aed072ce57de4acaa75cb4f', class: "actions" }, h("slot", { key: '8f02d5d178bb60b40604fcd1be74d373d89c911f', name: "actions" }))));
87
+ return (h(Host, { key: '96626b8d29cdefc8ed97a7bb68a689ff6155d2c7', onFocus: this.delegateFocus.bind(this) }, h("div", { key: '41ac004bdc6c2c6a1f8e3d293f6b0c3727c27aff', class: "brand" }, h("slot", { key: '8e33150a54c8b8070b22db51c8584e06dd06dd5c', name: "brand" }, h("img", { key: '889955c7335d64f2c8d0b2e032db3dd64a27cbd2', id: "fallback-logo-lmvz", src: logo, alt: "Lehrmittelverlag Z\u00FCrich" }))), h("nav", { key: '37b6ef465d320c325e0c830bcc91ea3a575d2690', "aria-label": "Hauptnavigation" }, h("div", { key: '7a0ec1a78d6eee3b3e37f55f872806b0791c2156', role: "menubar", class: "primary-menubar" }, h("slot", { key: 'e0403633c6acd137c94b1552cc7f08e3549550d3', name: "nav-primary", ref: (el) => (this.primarySlot = el) }), h("div", { key: '4e377f38a0b94a766f9001174729e5763fa0a194', role: "menu", id: "nav-secondary", class: "secondary-menubar", hidden: !this.lmvzActiveNav, ref: (el) => (this.secondaryNav = el) }, h("slot", { key: '368e461f239498c706a3c9bb27a7b05de2b79cac', name: this.secondarySlotName, ref: (el) => (this.secondarySlot = el) })))), h("div", { key: '8ffaf8d6f1254644b48dc0a40b9f552339ecc690', class: "actions" }, h("slot", { key: '5b679885e4fa111d66e993458ab7f5092d8179d4', name: "actions" }))));
88
88
  }
89
89
  static get is() { return "lmvz-header"; }
90
90
  static get encapsulation() { return "shadow"; }
@@ -13,7 +13,7 @@
13
13
  display: block;
14
14
  }
15
15
 
16
- svg > path {
16
+ svg path {
17
17
  stroke: var(--lmvz-icon-color);
18
18
  fill: none;
19
19
  }
@@ -55,27 +55,27 @@
55
55
  }
56
56
 
57
57
  :host([weight='light']) {
58
- svg > path {
58
+ svg path {
59
59
  stroke-width: 1;
60
60
  }
61
61
  }
62
62
 
63
63
  :host([weight='medium']) {
64
- svg > path {
64
+ svg path {
65
65
  /* TODO: use semantic token */
66
66
  stroke-width: 1.5;
67
67
  }
68
68
  }
69
69
 
70
70
  :host([weight='bold']) {
71
- svg > path {
71
+ svg path {
72
72
  /* TODO: use semantic token */
73
73
  stroke-width: 2;
74
74
  }
75
75
  }
76
76
 
77
77
  :host([weight='filled']) {
78
- svg > path {
78
+ svg path {
79
79
  stroke-width: 2;
80
80
  fill: var(--lmvz-icon-color);
81
81
  }
@@ -1,8 +1,8 @@
1
+ import { isValidSVG } from "@lmvz-ds/lib-ts/validation/svg.js";
1
2
  import { Build, h, Host } from "@stencil/core";
2
- import { Effect } from "effect";
3
3
  import { AriaValidationController } from "../../utils/aria/aria-validation-controller";
4
+ import { resolveIconSvg } from "../../utils/icons/icons";
4
5
  import { ReactiveControllerHost } from "../../utils/reactive-controller-host";
5
- import { emptyDefaultSvg, fetchIconSvg } from "./icons";
6
6
  export class LmvzIcon extends ReactiveControllerHost {
7
7
  intersectionObserver;
8
8
  ariaValidationController = new AriaValidationController(this);
@@ -11,6 +11,7 @@ export class LmvzIcon extends ReactiveControllerHost {
11
11
  icon;
12
12
  weight = 'medium';
13
13
  size = 'md';
14
+ iconset;
14
15
  iconData;
15
16
  visible = false;
16
17
  ariaLabel;
@@ -29,18 +30,25 @@ export class LmvzIcon extends ReactiveControllerHost {
29
30
  super.connectedCallback();
30
31
  }
31
32
  disconnectedCallback() {
32
- if (this.intersectionObserver) {
33
+ if (this.intersectionObserver && typeof this.intersectionObserver.disconnect === 'function') {
33
34
  this.intersectionObserver.disconnect();
34
- this.intersectionObserver = undefined;
35
35
  }
36
+ this.intersectionObserver = undefined;
36
37
  super.disconnectedCallback();
37
38
  }
38
39
  async loadIconPathData() {
39
- const { icon, visible } = this;
40
+ const { icon, iconset, visible } = this;
40
41
  if (!Build.isBrowser || !icon || !visible) {
41
42
  return;
42
43
  }
43
- this.iconData = await Effect.runPromise(fetchIconSvg(this.icon).pipe(Effect.tapError((error) => Effect.logError(`Error loading icon "${icon}":`, error.message, error.cause, error.stack)), Effect.catchAll(() => Effect.succeed(emptyDefaultSvg()))));
44
+ if (isValidSVG(icon)) {
45
+ this.iconData = icon;
46
+ return;
47
+ }
48
+ this.iconData = await resolveIconSvg({
49
+ icon,
50
+ iconset,
51
+ });
44
52
  }
45
53
  componentDidRender() {
46
54
  this.validationEl = this.el.querySelector('svg');
@@ -48,7 +56,7 @@ export class LmvzIcon extends ReactiveControllerHost {
48
56
  super.componentDidRender();
49
57
  }
50
58
  render() {
51
- return h(Host, { key: 'f5c2f8025d0e9598d903e72770ebca6cad01961c', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
59
+ return h(Host, { key: '6022ed0e30bcdd13455ccaae65784ac70abcb349', role: "img", "aria-hidden": `${this.ariaHidden}`, innerHTML: this.iconData });
52
60
  }
53
61
  waitUntilVisible(callback, rootMargin = 50) {
54
62
  if (!Build.isBrowser || typeof window === 'undefined' || !window.IntersectionObserver) {
@@ -58,7 +66,9 @@ export class LmvzIcon extends ReactiveControllerHost {
58
66
  this.intersectionObserver = new IntersectionObserver((entries) => {
59
67
  entries.some((entry) => {
60
68
  if (entry.isIntersecting) {
61
- this.intersectionObserver?.disconnect();
69
+ if (this.intersectionObserver && typeof this.intersectionObserver.disconnect === 'function') {
70
+ this.intersectionObserver.disconnect();
71
+ }
62
72
  this.intersectionObserver = undefined;
63
73
  callback();
64
74
  return true;
@@ -80,21 +90,20 @@ export class LmvzIcon extends ReactiveControllerHost {
80
90
  "$": ["lmvz-icon.css"]
81
91
  };
82
92
  }
83
- static get assetsDirs() { return ["../../assets/icons"]; }
84
93
  static get properties() {
85
94
  return {
86
95
  "icon": {
87
96
  "type": "string",
88
97
  "mutable": false,
89
98
  "complexType": {
90
- "original": "Icon.IconName",
91
- "resolved": "\"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\"",
99
+ "original": "SVGString | string",
100
+ "resolved": "string | string & Brand<\"SVG\">",
92
101
  "references": {
93
- "Icon": {
102
+ "SVGString": {
94
103
  "location": "import",
95
- "path": "../../api",
96
- "id": "src/api/index.ts::Icon",
97
- "referenceLocation": "Icon"
104
+ "path": "@lmvz-ds/lib-ts/validation/SVGString.d.ts",
105
+ "id": "../../lib/ts/dist/validation/SVGString.d.ts::SVGString",
106
+ "referenceLocation": "SVGString"
98
107
  }
99
108
  }
100
109
  },
@@ -102,7 +111,7 @@ export class LmvzIcon extends ReactiveControllerHost {
102
111
  "optional": false,
103
112
  "docs": {
104
113
  "tags": [],
105
- "text": "The name of the icon to display (required)."
114
+ "text": "Required\n\nEither a valid name from a registered iconset, or the icon's SVG content (inline).\n\nWill be checked against the (default) iconset."
106
115
  },
107
116
  "getter": false,
108
117
  "setter": false,
@@ -119,7 +128,7 @@ export class LmvzIcon extends ReactiveControllerHost {
119
128
  "Icon": {
120
129
  "location": "import",
121
130
  "path": "../../api",
122
- "id": "src/api/index.ts::Icon",
131
+ "id": "src/api/index.d.ts::Icon",
123
132
  "referenceLocation": "Icon"
124
133
  }
125
134
  }
@@ -146,7 +155,7 @@ export class LmvzIcon extends ReactiveControllerHost {
146
155
  "Icon": {
147
156
  "location": "import",
148
157
  "path": "../../api",
149
- "id": "src/api/index.ts::Icon",
158
+ "id": "src/api/index.d.ts::Icon",
150
159
  "referenceLocation": "Icon"
151
160
  }
152
161
  }
@@ -163,6 +172,25 @@ export class LmvzIcon extends ReactiveControllerHost {
163
172
  "attribute": "size",
164
173
  "defaultValue": "'md'"
165
174
  },
175
+ "iconset": {
176
+ "type": "string",
177
+ "mutable": false,
178
+ "complexType": {
179
+ "original": "string",
180
+ "resolved": "string | undefined",
181
+ "references": {}
182
+ },
183
+ "required": false,
184
+ "optional": true,
185
+ "docs": {
186
+ "tags": [],
187
+ "text": "Optional custom icon iconset id. Must reference a registered custom iconset by its exported name."
188
+ },
189
+ "getter": false,
190
+ "setter": false,
191
+ "reflect": true,
192
+ "attribute": "iconset"
193
+ },
166
194
  "ariaLabel": {
167
195
  "type": "string",
168
196
  "mutable": false,
@@ -195,6 +223,9 @@ export class LmvzIcon extends ReactiveControllerHost {
195
223
  return [{
196
224
  "propName": "icon",
197
225
  "methodName": "loadIconPathData"
226
+ }, {
227
+ "propName": "iconset",
228
+ "methodName": "loadIconPathData"
198
229
  }];
199
230
  }
200
231
  }
@@ -150,9 +150,9 @@ export class LmvzInput extends ReactiveControllerHost {
150
150
  render() {
151
151
  const hasValue = Boolean(this.value);
152
152
  const shouldFloatLabel = hasValue || Boolean(this.placeholder);
153
- return (h("div", { key: '195e2c5046d48d01f4912993bde3c8d2b3a73d1d', class: classNames('input-container', {
153
+ return (h("div", { key: '3f14adbe321717cdfe305dc623940acb8be194f8', class: classNames('input-container', {
154
154
  'interaction-filled': hasValue,
155
- }) }, h("div", { key: '66bc3deab063a309eefc0de5ebf7f54331c9190c', class: "input-wrapper" }, h("slot", { key: 'fac318070421d526bb09ba0dd0efdecf8964d952', name: "before-input" }), h("div", { key: '1945152dc010d571c5886f222332b057e89e496c', class: "label-input-group" }, h("label", { key: 'd57392c2c83b1e5f362dd33fa9d060e570417f3f', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (h("span", { key: '507603a50eb08f0f4f5e2b87b2550fe6b657c4d4', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), h("input", { key: '0fe916fef48618331806142c0d3500d9e6dec9cb', id: this.inputId, ref: (el) => (this.nativeInputElement = el), type: this.type, min: this.min, max: this.max, step: this.step, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, form: this.form, autocomplete: this.autocomplete, inputmode: this.inputmode, autocorrect: this.autocorrect, autocapitalize: this.autocapitalize, spellcheck: this.spellcheck, autofocus: this.autofocus, minlength: this.minlength, maxlength: this.maxlength, pattern: this.pattern, "aria-invalid": this.error ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false', "aria-describedby": this.describedBy, "aria-errormessage": this.errorId, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur })), h("slot", { key: 'b415bedde58862e5bd7621f73a1d77bc478850a3', name: "after-input" })), h("div", { key: 'bc0e07f5243417f4c632eb2f7976dc944fdbf17a', id: this.helperId, role: "status" }, this.helperText || null), h("div", { key: '62e2267453b92edd47077b233cb231a1deecedc4', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
155
+ }) }, h("div", { key: '2cc559cc0ff4da1f8418c510188bcbb93b42da02', class: "input-wrapper" }, h("slot", { key: 'b41a5179b6d8651a9b60777718f92b32f80fda89', name: "before-input" }), h("div", { key: '4ac81c8d277d6592e1d84f4b3abfffef03843a9c', class: "label-input-group" }, h("label", { key: '80b272c3b069a246dcbf26812d2281e436c6cdfa', htmlFor: this.inputId, class: classNames({ floating: shouldFloatLabel }) }, this.label, this.required && (h("span", { key: 'eb00d3be1a3eddd0661df74cfb2d4b95c75f5eea', class: "required-indicator", "aria-hidden": "true" }, ' ', "*"))), h("input", { key: '6192c875976e7d21003de29badabd5a910ed0c17', id: this.inputId, ref: (el) => (this.nativeInputElement = el), type: this.type, min: this.min, max: this.max, step: this.step, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, readOnly: this.readonly, required: this.required, form: this.form, autocomplete: this.autocomplete, inputmode: this.inputmode, autocorrect: this.autocorrect, autocapitalize: this.autocapitalize, spellcheck: this.spellcheck, autofocus: this.autofocus, minlength: this.minlength, maxlength: this.maxlength, pattern: this.pattern, "aria-invalid": this.error ? 'true' : 'false', "aria-required": this.required ? 'true' : 'false', "aria-describedby": this.describedBy, "aria-errormessage": this.errorId, onInput: this.handleInput, onChange: this.handleChange, onFocus: this.handleFocus, onBlur: this.handleBlur })), h("slot", { key: '9a908984ecebead7f08bbd88ed57fa8f30a69b67', name: "after-input" })), h("div", { key: 'abe658929d955042358ff24ea2267ae5b7b3484d', id: this.helperId, role: "status" }, this.helperText || null), h("div", { key: '61c689c7d8ab3bbb7c62dc7a227c35441b4bbbd8', id: this.errorId, role: "alert" }, (this.showErrorMessage && this.errorMessage) || null)));
156
156
  }
157
157
  static get is() { return "lmvz-input"; }
158
158
  static get encapsulation() { return "scoped"; }
@@ -343,7 +343,7 @@ export class LmvzInput extends ReactiveControllerHost {
343
343
  "Input": {
344
344
  "location": "import",
345
345
  "path": "../../api",
346
- "id": "src/api/index.ts::Input",
346
+ "id": "src/api/index.d.ts::Input",
347
347
  "referenceLocation": "Input"
348
348
  }
349
349
  }
@@ -392,7 +392,7 @@ export class LmvzInput extends ReactiveControllerHost {
392
392
  "Input": {
393
393
  "location": "import",
394
394
  "path": "../../api",
395
- "id": "src/api/index.ts::Input",
395
+ "id": "src/api/index.d.ts::Input",
396
396
  "referenceLocation": "Input"
397
397
  }
398
398
  }
@@ -418,7 +418,7 @@ export class LmvzInput extends ReactiveControllerHost {
418
418
  "Input": {
419
419
  "location": "import",
420
420
  "path": "../../api",
421
- "id": "src/api/index.ts::Input",
421
+ "id": "src/api/index.d.ts::Input",
422
422
  "referenceLocation": "Input"
423
423
  }
424
424
  }
@@ -466,7 +466,7 @@ export class LmvzInput extends ReactiveControllerHost {
466
466
  "Input": {
467
467
  "location": "import",
468
468
  "path": "../../api",
469
- "id": "src/api/index.ts::Input",
469
+ "id": "src/api/index.d.ts::Input",
470
470
  "referenceLocation": "Input"
471
471
  }
472
472
  }
@@ -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: '0a3908f0f3d84284afd64773a256b4fda818fd0c' }, h("lmvz-header", { key: '618e855ba5dda9056d55b82a4b162c730abd4a28', lmvzActiveNav: this.activeNav }, h("lmvz-menuitem", { key: 'f65954cceeb98a5a6e09af7d8d0fd3997765d329', slot: "nav-primary", id: "lehrmittel", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '6d826ec9d509eba7d698bb7cc0e18b542856d824', href: "#" }, "Lehrmittel")), h("lmvz-menuitem", { key: '45ebdab853640539643f78c8e070a569bb16348f', slot: "nav-primary", id: "verwaltung", onLmvzActivation: this.activate.bind(this) }, h("a", { key: '1bbb9d73614f01054d592e63fa455153a86f9508', href: "#" }, "Verwaltung")), h("lmvz-menuitem", { key: '3b60360fb264ada58cb8667e860a9009d26dafad', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: 'dd01522ebe1e4d110f645476ba696864f546247e', ...typedIconFromSet('lmvz', 'edit') }), "Deutsch 7"), h("lmvz-menuitem", { key: '11e04037ea5d1f14ff8b3c166cc212554c736d06', slot: "connect-nav-lehrmittel" }, h("lmvz-icon", { key: '32d13093b3c42b125cdb6ca8d8e51da8f58856d3', ...typedIconFromSet('lmvz', 'edit') }), "Mathe 2"), h("lmvz-menuitem", { key: '842a7ac6e7d5205483b93b06bb50e8abf8bb22f8', slot: "connect-nav-verwaltung" }, h("lmvz-icon", { key: '60749db9c1706e50661630786bd3415f5cc315be', ...typedIconFromSet('lmvz', 'settings') }), "iwas mit Verwaltung"), h("lmvz-menuitem", { key: 'e81697a20343fbba1d2e7e378c83b19543222b53', slot: "connect-nav-verwaltung", "aria-label": "Einstellungen" }, h("lmvz-icon", { key: '789a3e28b7ba0d1f24937866fa1f82d4c55bd48f', ...typedIconFromSet('lmvz', 'settings') })), h("lmvz-button", { key: '2239f72674551d5fb495d4a79e3fcd53a126f6c1', slot: "actions", "aria-label": "Benutzerkonto" }, h("lmvz-icon", { key: '64f2ca4135431efac7702b4dd1e59fdfd1ed733d', ...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
  });