@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.
- package/CHANGELOG.md +11 -0
- package/README.md +3 -0
- package/cjs/{aria-loader-W9Zvc9e-.js → aria-loader-CfFuAbJn.js} +2 -2
- package/cjs/icons-swqMn6s2.js +163 -0
- package/cjs/{index-BNm4PQrX.js → index--7IqZZqn.js} +12179 -516
- package/cjs/index.cjs.js +6 -85
- package/cjs/lmvz-button.cjs.entry.js +3 -3
- package/cjs/lmvz-card.cjs.entry.js +22 -2
- package/cjs/lmvz-components.cjs.js +1 -1
- package/cjs/lmvz-header_2.cjs.entry.js +5 -5
- package/cjs/lmvz-icon.cjs.entry.js +24 -13
- package/cjs/lmvz-input.cjs.entry.js +4 -4
- package/cjs/lmvz-menuitem.cjs.entry.js +2 -2
- package/cjs/lmvz-select.cjs.entry.js +2 -2
- package/cjs/loader.cjs.js +1 -1
- package/cjs/logger-Bn2yoZGP.js +7189 -0
- package/cjs/{reactive-controller-host-B_davRfI.js → reactive-controller-host-CtaVAiYJ.js} +27 -23
- package/collection/api/ds.constants.js +0 -66
- package/collection/collection-manifest.json +1 -1
- package/collection/components/lmvz-button/lmvz-button.js +5 -5
- package/collection/components/lmvz-header/lmvz-header.js +2 -2
- package/collection/components/lmvz-icon/lmvz-icon.css +5 -5
- package/collection/components/lmvz-icon/lmvz-icon.js +49 -18
- package/collection/components/lmvz-input/lmvz-input.js +6 -6
- package/collection/index.js +1 -2
- package/collection/integration/header-integration/header-integration.js +51 -0
- package/collection/utils/aria/aria-validation-controller.js +27 -23
- package/collection/utils/http.js +10 -13
- package/collection/utils/icons/icons-registry.js +34 -0
- package/collection/utils/icons/icons.js +49 -0
- package/collection/utils/icons/icons.unit.js +73 -0
- package/collection/utils/icons/public.js +2 -0
- package/collection/utils/public.js +1 -1
- package/components/index.d.ts +9 -9
- package/components/index.d.ts.bak +10 -10
- package/components/index.js +1 -1
- package/components/lmvz-action.d.ts +1 -1
- package/components/lmvz-action.d.ts.bak +11 -0
- package/components/lmvz-button.d.ts +1 -1
- package/components/lmvz-button.d.ts.bak +11 -0
- package/components/lmvz-button.js +1 -1
- package/components/lmvz-card.d.ts +1 -1
- package/components/lmvz-card.d.ts.bak +11 -0
- package/components/lmvz-card.js +1 -1
- package/components/lmvz-chip.d.ts +1 -1
- package/components/lmvz-chip.d.ts.bak +11 -0
- package/components/lmvz-header.d.ts +1 -1
- package/components/lmvz-header.d.ts.bak +11 -0
- package/components/lmvz-header.js +1 -1
- package/components/lmvz-icon.d.ts +1 -1
- package/components/lmvz-icon.d.ts.bak +11 -0
- package/components/lmvz-icon.js +1 -1
- package/components/lmvz-input.d.ts +1 -1
- package/components/lmvz-input.d.ts.bak +11 -0
- package/components/lmvz-input.js +1 -1
- package/components/lmvz-menuitem.d.ts +1 -1
- package/components/lmvz-menuitem.d.ts.bak +11 -0
- package/components/lmvz-menuitem.js +1 -1
- package/components/lmvz-select.d.ts +1 -1
- package/components/lmvz-select.d.ts.bak +11 -0
- package/components/lmvz-select.js +1 -1
- package/components/{p-Clo63DJF.js → p-CBLAeife.js} +1 -1
- package/components/p-DXOTa5VF.js +12 -0
- package/components/p-fiRXhuXK.js +1 -0
- package/esm/{aria-loader-D9aySMw6.js → aria-loader-BF_AYtbb.js} +2 -2
- package/esm/icons-Ca8oMiRa.js +157 -0
- package/esm/{index-n6jVNpyp.js → index-7Ru1khgk.js} +11972 -309
- package/esm/index.js +4 -80
- package/esm/lmvz-button.entry.js +3 -3
- package/esm/lmvz-card.entry.js +21 -2
- package/esm/lmvz-components.js +1 -1
- package/esm/lmvz-header_2.entry.js +5 -5
- package/esm/lmvz-icon.entry.js +24 -13
- package/esm/lmvz-input.entry.js +4 -4
- package/esm/lmvz-menuitem.entry.js +2 -2
- package/esm/lmvz-select.entry.js +2 -2
- package/esm/loader.js +1 -1
- package/esm/logger-fiRXhuXK.js +6990 -0
- package/esm/{reactive-controller-host-ByKmPKq1.js → reactive-controller-host-sR2jJxNG.js} +27 -23
- package/hydrate/index.js +68 -3832
- package/hydrate/index.mjs +68 -3832
- package/lmvz-components/index.esm.js +1 -1
- package/lmvz-components/lmvz-components.esm.js +1 -1
- package/lmvz-components/{p-986acfd0.entry.js → p-30b99f11.entry.js} +1 -1
- package/lmvz-components/{p-1bda378c.entry.js → p-77007422.entry.js} +1 -1
- package/lmvz-components/{p-CU4XwA2K.js → p-B3dnXEPG.js} +1 -1
- package/lmvz-components/p-Bh2Epkwf.js +1 -0
- package/lmvz-components/{p-DPHHQR5F.js → p-Bkfdgg0T.js} +1 -1
- package/lmvz-components/p-DXOTa5VF.js +12 -0
- package/lmvz-components/p-ae4aeb0a.entry.js +1 -0
- package/lmvz-components/p-b0208356.entry.js +1 -0
- package/lmvz-components/{p-121f74d8.entry.js → p-bfd7db0a.entry.js} +1 -1
- package/lmvz-components/{p-abbfa6aa.entry.js → p-d2e42f6a.entry.js} +1 -1
- package/lmvz-components/{p-b704eca8.entry.js → p-ffa21507.entry.js} +1 -1
- package/lmvz-components/p-fiRXhuXK.js +1 -0
- package/manifest.json +64 -283
- package/package.json +4 -2
- package/types/api/ds.constants.d.ts +22 -1
- package/types/api/ds.types.d.ts +3 -38
- package/types/api/index.d.ts +0 -1
- package/types/components/lmvz-action/lmvz-action.d.ts +1 -0
- package/types/components/lmvz-button/lmvz-button.d.ts +2 -2
- package/types/components/lmvz-card/lmvz-card.d.ts +1 -0
- package/types/components/lmvz-chip/lmvz-chip.d.ts +1 -0
- package/types/components/lmvz-header/lmvz-header.d.ts +1 -0
- package/types/components/lmvz-icon/lmvz-icon.d.ts +4 -1
- package/types/components/lmvz-input/lmvz-input.d.ts +1 -0
- package/types/components/lmvz-menuitem/lmvz-menuitem.d.ts +1 -0
- package/types/components/lmvz-select/lmvz-select.d.ts +1 -0
- package/types/components.d.ts +747 -931
- package/types/index.d.ts +2 -2
- package/types/utils/aria/aria-validation-controller.d.ts +1 -0
- package/types/utils/aria/element-activation-controller.d.ts +1 -0
- package/types/utils/aria/list-keyboard-controller.d.ts +1 -0
- package/types/utils/assets.d.ts +1 -0
- package/types/utils/component.d.ts +2 -4
- package/types/utils/environment.d.ts +1 -0
- package/types/utils/http.d.ts +11 -8
- package/types/utils/http.unit.d.ts +1 -0
- package/types/utils/icons/icons-registry.d.ts +13 -0
- package/types/utils/icons/icons.d.ts +8 -0
- package/types/utils/icons/icons.unit.d.ts +8 -0
- package/types/utils/icons/public.d.ts +4 -0
- package/types/utils/public.d.ts +2 -1
- package/types/utils/reactive-controller-host.d.ts +1 -0
- package/assets/icons/actions.svg +0 -5
- package/assets/icons/adduser.svg +0 -3
- package/assets/icons/alert.svg +0 -3
- package/assets/icons/apple.svg +0 -3
- package/assets/icons/arrow-down.svg +0 -3
- package/assets/icons/arrow-left.svg +0 -3
- package/assets/icons/arrow-right.svg +0 -3
- package/assets/icons/arrow-up.svg +0 -3
- package/assets/icons/book.svg +0 -3
- package/assets/icons/bookmark.svg +0 -3
- package/assets/icons/checkmark.svg +0 -3
- package/assets/icons/chevron-left.svg +0 -3
- package/assets/icons/chevron-right.svg +0 -3
- package/assets/icons/chevron-up.svg +0 -3
- package/assets/icons/close-l.svg +0 -3
- package/assets/icons/close-sm.svg +0 -3
- package/assets/icons/cog.svg +0 -4
- package/assets/icons/computer.svg +0 -3
- package/assets/icons/dashboard.svg +0 -6
- package/assets/icons/delete.svg +0 -3
- package/assets/icons/download.svg +0 -3
- package/assets/icons/edit.svg +0 -3
- package/assets/icons/external.svg +0 -3
- package/assets/icons/facebook.svg +0 -3
- package/assets/icons/favorite.svg +0 -3
- package/assets/icons/filter.svg +0 -3
- package/assets/icons/group.svg +0 -3
- package/assets/icons/hide.svg +0 -3
- package/assets/icons/home.svg +0 -3
- package/assets/icons/info.svg +0 -3
- package/assets/icons/instagram.svg +0 -3
- package/assets/icons/letter.svg +0 -3
- package/assets/icons/linkedin.svg +0 -5
- package/assets/icons/logout.svg +0 -3
- package/assets/icons/map.svg +0 -3
- package/assets/icons/minus.svg +0 -3
- package/assets/icons/navigation.svg +0 -3
- package/assets/icons/plus.svg +0 -3
- package/assets/icons/qr-scan.svg +0 -3
- package/assets/icons/question.svg +0 -10
- package/assets/icons/reader.svg +0 -3
- package/assets/icons/reset.svg +0 -3
- package/assets/icons/school.svg +0 -3
- package/assets/icons/search.svg +0 -3
- package/assets/icons/send.svg +0 -3
- package/assets/icons/settings.svg +0 -3
- package/assets/icons/share.svg +0 -10
- package/assets/icons/shopping-cart.svg +0 -3
- package/assets/icons/show.svg +0 -3
- package/assets/icons/snapchat.svg +0 -3
- package/assets/icons/sort.svg +0 -3
- package/assets/icons/speech-bubble.svg +0 -3
- package/assets/icons/star.svg +0 -3
- package/assets/icons/student.svg +0 -3
- package/assets/icons/upload.svg +0 -3
- package/assets/icons/user.svg +0 -3
- package/assets/icons/warn-circle.svg +0 -3
- package/assets/icons/warn-triangle.svg +0 -3
- package/assets/icons/whatsapp.svg +0 -4
- package/assets/icons/world.svg +0 -10
- package/assets/icons/x.svg +0 -3
- package/assets/icons/youtube.svg +0 -3
- package/cjs/Effect-YVFLBEfy.js +0 -19037
- package/cjs/assets-DxYhun-q.js +0 -26
- package/cjs/icons-DgYgcKGK.js +0 -653
- package/collection/api/index.js +0 -1
- package/collection/assets/icons/actions.svg +0 -5
- package/collection/assets/icons/adduser.svg +0 -3
- package/collection/assets/icons/alert.svg +0 -3
- package/collection/assets/icons/apple.svg +0 -3
- package/collection/assets/icons/arrow-down.svg +0 -3
- package/collection/assets/icons/arrow-left.svg +0 -3
- package/collection/assets/icons/arrow-right.svg +0 -3
- package/collection/assets/icons/arrow-up.svg +0 -3
- package/collection/assets/icons/book.svg +0 -3
- package/collection/assets/icons/bookmark.svg +0 -3
- package/collection/assets/icons/checkmark.svg +0 -3
- package/collection/assets/icons/chevron-left.svg +0 -3
- package/collection/assets/icons/chevron-right.svg +0 -3
- package/collection/assets/icons/chevron-up.svg +0 -3
- package/collection/assets/icons/close-l.svg +0 -3
- package/collection/assets/icons/close-sm.svg +0 -3
- package/collection/assets/icons/cog.svg +0 -4
- package/collection/assets/icons/computer.svg +0 -3
- package/collection/assets/icons/dashboard.svg +0 -6
- package/collection/assets/icons/delete.svg +0 -3
- package/collection/assets/icons/download.svg +0 -3
- package/collection/assets/icons/edit.svg +0 -3
- package/collection/assets/icons/external.svg +0 -3
- package/collection/assets/icons/facebook.svg +0 -3
- package/collection/assets/icons/favorite.svg +0 -3
- package/collection/assets/icons/filter.svg +0 -3
- package/collection/assets/icons/group.svg +0 -3
- package/collection/assets/icons/hide.svg +0 -3
- package/collection/assets/icons/home.svg +0 -3
- package/collection/assets/icons/info.svg +0 -3
- package/collection/assets/icons/instagram.svg +0 -3
- package/collection/assets/icons/letter.svg +0 -3
- package/collection/assets/icons/linkedin.svg +0 -5
- package/collection/assets/icons/logout.svg +0 -3
- package/collection/assets/icons/map.svg +0 -3
- package/collection/assets/icons/minus.svg +0 -3
- package/collection/assets/icons/navigation.svg +0 -3
- package/collection/assets/icons/plus.svg +0 -3
- package/collection/assets/icons/qr-scan.svg +0 -3
- package/collection/assets/icons/question.svg +0 -10
- package/collection/assets/icons/reader.svg +0 -3
- package/collection/assets/icons/reset.svg +0 -3
- package/collection/assets/icons/school.svg +0 -3
- package/collection/assets/icons/search.svg +0 -3
- package/collection/assets/icons/send.svg +0 -3
- package/collection/assets/icons/settings.svg +0 -3
- package/collection/assets/icons/share.svg +0 -10
- package/collection/assets/icons/shopping-cart.svg +0 -3
- package/collection/assets/icons/show.svg +0 -3
- package/collection/assets/icons/snapchat.svg +0 -3
- package/collection/assets/icons/sort.svg +0 -3
- package/collection/assets/icons/speech-bubble.svg +0 -3
- package/collection/assets/icons/star.svg +0 -3
- package/collection/assets/icons/student.svg +0 -3
- package/collection/assets/icons/upload.svg +0 -3
- package/collection/assets/icons/user.svg +0 -3
- package/collection/assets/icons/warn-circle.svg +0 -3
- package/collection/assets/icons/warn-triangle.svg +0 -3
- package/collection/assets/icons/whatsapp.svg +0 -4
- package/collection/assets/icons/world.svg +0 -10
- package/collection/assets/icons/x.svg +0 -3
- package/collection/assets/icons/youtube.svg +0 -3
- package/collection/components/lmvz-icon/icons.js +0 -36
- package/collection/components/lmvz-icon/public.js +0 -1
- package/collection/components/lmvz-icon/test/icons.unit.js +0 -98
- package/collection/integration/header-integration.js +0 -46
- package/collection/utils/effect.js +0 -6
- package/collection/utils/validation/svg.js +0 -24
- package/components/p-CYcWxAp5.js +0 -1
- package/components/p-DHtXOUVf.js +0 -1
- package/components/p-VkiNs_yz.js +0 -12
- package/esm/Effect-DkwJP3kx.js +0 -18828
- package/esm/assets-_WDisN-f.js +0 -23
- package/esm/icons-Crg18Lio.js +0 -649
- package/lmvz-components/p-373a9cbf.entry.js +0 -1
- package/lmvz-components/p-6d5fa8c4.entry.js +0 -1
- package/lmvz-components/p-BT8PQPMJ.js +0 -1
- package/lmvz-components/p-BxiCs9Wn.js +0 -1
- package/lmvz-components/p-CXQcJLbG.js +0 -12
- package/lmvz-components/p-DkwJP3kx.js +0 -1
- package/types/components/lmvz-icon/icons.d.ts +0 -8
- package/types/components/lmvz-icon/public.d.ts +0 -1
- package/types/components/lmvz-icon/test/icons.unit.d.ts +0 -1
- package/types/utils/effect.d.ts +0 -3
- package/types/utils/validation/svg.d.ts +0 -11
|
@@ -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
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from './icons/public';
|
package/components/index.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/* LmvzComponents custom elements */
|
|
2
|
-
export { LmvzAction as LmvzAction } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
55
|
+
export * from '../types';
|
package/components/index.js
CHANGED
|
@@ -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-
|
|
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}
|
|
@@ -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;
|
|
@@ -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
|
|
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:"2897a943aca62561b0e78b5b3f2b7b85d76f4e78","aria-disabled":this.disabled?"true":null},r("button",{key:"92555224e33b00fb2602fdb2d19075145c0d9097",ref:t=>this.validationEl=t,disabled:this.disabled,class:a(this.variant,{[this.scale??""]:!!this.scale,disabled:this.disabled}),...this.inheritedAttributes},r("slot",{key:"637a03a73db84a63bf1e3165d57c474151f87783"})))}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}
|
|
@@ -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;
|
package/components/lmvz-card.js
CHANGED
|
@@ -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 t,H as r,c as a,h as o,d as n,t as l}from"./p-C_bScbrd.js";const m=t(class extends r{constructor(e){super(),!1!==e&&this.__registerHost(),this.primaryAction=a(this,"primaryAction")}cardTitle;imageUrl;description;primaryActionLabel="";primaryAction;get fallbackImage(){return((t,r)=>{const a=function(...e){return e.filter(Boolean).join("/").replace("//","/").replace("/./","/")}("../../assets",r,t);try{return e(a)}catch{return console.warn(`Failed to create URL for asset "${t}" in path "${r}".\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:"46c2832b4f90b9eb222749632bc7ad59cd645e10",role:"article"},o("div",{key:"cc387fe96cff2dd04c24f75cf838a2bf6f438279",class:"top"},o("div",{key:"f9a54a5f81378ef4265e1d74c36c78af002e8874",class:"image-wrapper",style:{backgroundImage:`url(${this.imageUrl??this.fallbackImage})`}},o("div",{key:"76daed00408f7ae9ee46977637ddcd3d4f846380",class:"chip-slot"},o("slot",{key:"6ad522ef7428166b876d0218ef8d801c4ef337f1",name:"chip"})))),o("div",{key:"9c9799668ac199cfecbe10061e271d70d70e2d07",class:"bottom"},o("header",{key:"1bec743235bea5c7ab163225ffbd7bc6cf11f754"},o("h2",{key:"06f8e14153328bc5ca920e71e09d9343047c440c",class:"title"},this.cardTitle)),o("p",{key:"86b95db4e6464ca3236b4a03798013c3580819bf",class:"description"},this.description),o("div",{key:"553dc998d5318a4730196baa0b9baff3a0a3369f",class:"actions"},o("button",{key:"7532d01b46769198c23a1b1015c187fdefce146a",class:"primary",onClick:this._onPrimaryClick.bind(this),"data-testid":"primary"},this.primaryActionLabel),o("button",{key:"633d679ae59b1896aa2a06e04b4564569cf27a7d",class:"tertiary","aria-label":"More actions",onClick:this._onOverflowClick},o("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"]}]),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}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface LmvzChip extends Components.LmvzChip, HTMLElement {}
|
|
4
|
+
export const LmvzChip: {
|
|
5
|
+
prototype: LmvzChip;
|
|
6
|
+
new (): LmvzChip;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface LmvzHeader extends Components.LmvzHeader, HTMLElement {}
|
|
4
|
+
export const LmvzHeader: {
|
|
5
|
+
prototype: LmvzHeader;
|
|
6
|
+
new (): LmvzHeader;
|
|
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 M,h as N,d as e,t as I}from"./p-C_bScbrd.js";import{R as j,a as D}from"./p-
|
|
1
|
+
import{p as M,h as N,d as e,t as I}from"./p-C_bScbrd.js";import{R as j,a as D}from"./p-CBLAeife.js";import{g,c as i}from"./p-DQEkWkMh.js";class u{host;elements=[];constructor(M){this.host=M}hostDidRender(){this.host.el.addEventListener("keydown",this.handleKeydown)}updateElements(M){this.elements=M}handleKeydown=M=>{const{key:N}=M;if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft"].includes(N))return;const e=g(document),I=this.getNextFocusableElement(e,["ArrowDown","ArrowRight"].includes(N)?"down":"up");I&&(M.preventDefault(),I.focus?.())};getNextFocusableElement(M,N){if(!M)return;const{elements:e}=this,I=e.indexOf(M);if(-1===I)return;let j;if("down"===N?j=(I+1)%e.length:"up"===N&&(j=(I-1+e.length)%e.length),null==j)return;const D=e[j];return i(D)?D:this.getNextFocusableElement(D,N)}}const a=M(class extends j{get el(){return this}get validationEl(){return this.el}primarySlot;secondarySlot;secondaryNav;keyboardNavigationController=new u(this);get primaryMenuitems(){return this.primarySlot?.assignedElements({flatten:!1})||[]}get secondaryMenuitems(){return this.secondarySlot?.assignedElements({flatten:!0})||[]}get role(){return"banner"}lmvzActiveNav;get secondarySlotName(){return"connect-nav-"+this.lmvzActiveNav}constructor(M){super(!1),!1!==M&&this.__registerHost(),this.__attachShadow(),this.addController(new D(this,{reValidateOnPropChanges:!0})),this.addController(this.keyboardNavigationController)}handleActiveNavChange(){this.updateElementsActive()}componentDidLoad(){this.primarySlot?.addEventListener("slotchange",this.handlePrimaryNavItemsChange.bind(this)),this.handlePrimaryNavItemsChange(),this.secondarySlot?.addEventListener("slotchange",this.handleSecondaryNavItemsChange.bind(this)),super.componentDidLoad()}handlePrimaryNavItemsChange(){const M=this.primaryMenuitems;M.length?(M.forEach((M=>{M.setAttribute("aria-haspopup","true"),M.setAttribute("aria-controls","nav-secondary")})),this.updateElementsActive(),this.updateKeyboardNavSubjects()):console.warn("Primary slot has no assigned elements. Please add navigation items to the primary slot.")}handleSecondaryNavItemsChange(){this.secondaryMenuitems.length&&this.updateKeyboardNavSubjects()}updateKeyboardNavSubjects(){this.keyboardNavigationController.updateElements([...this.primaryMenuitems,...this.secondaryMenuitems])}updateElementsActive(){const M=this.primaryMenuitems;if(!M.length)return;let N="";M.forEach((M=>{const e=M.id===this.lmvzActiveNav;e&&(N=M.textContent||M.id),M.setAttribute("aria-expanded",e?"true":"false")})),N&&this.secondaryNav?.setAttribute("aria-label","Untermenü für "+N)}delegateFocus(){const M=this.primaryMenuitems[0];M&&M.focus()}render(){return N(e,{key:"96626b8d29cdefc8ed97a7bb68a689ff6155d2c7",onFocus:this.delegateFocus.bind(this)},N("div",{key:"41ac004bdc6c2c6a1f8e3d293f6b0c3727c27aff",class:"brand"},N("slot",{key:"8e33150a54c8b8070b22db51c8584e06dd06dd5c",name:"brand"},N("img",{key:"889955c7335d64f2c8d0b2e032db3dd64a27cbd2",id:"fallback-logo-lmvz",src:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDYiIGhlaWdodD0iNzIiIHZpZXdCb3g9IjAgMCA0NiA3MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzI3Ml80MDUpIj4KPHBhdGggZD0iTTEyLjUgMjAuNjVDMTMuMSAyMC42NSAxNC4yIDIwLjM1IDE0LjcgMjAuMzVDMTYuMSAyMC4zNSAxNy4yIDIxLjQ1IDE3LjIgMjIuODVDMTcuMiAyNC4yNSAxNi4xIDI1LjM1IDE0LjcgMjUuMzVIMi44QzEuMiAyNS4zNSAwIDI0LjE1IDAgMjIuNTVDMCAyMS45NSAwLjIgMjAuNjUgMC4yIDIwLjA1VjUuODQ5OTlDMC4yIDUuMTQ5OTkgMCAzLjk0OTk5IDAgMy4zNDk5OUMwIDEuNzQ5OTkgMS4yIDAuNTQ5OTg4IDIuOCAwLjU0OTk4OEM0LjMgMC41NDk5ODggNS42IDEuNzQ5OTkgNS42IDMuMzQ5OTlDNS42IDMuOTQ5OTkgNS40IDUuMTQ5OTkgNS40IDUuODQ5OTlWMjAuNTVIMTIuNVYyMC42NVpNMjIuMSAyMi43NUMyMi4xIDIyLjE1IDIyLjMgMjAuOTUgMjIuMyAyMC4yNVY1Ljg0OTk5QzIyLjMgNS4xNDk5OSAyMi4xIDMuOTQ5OTkgMjIuMSAzLjQ0OTk5QzIyLjEgMS45NDk5OSAyMy4yIDAuNzQ5OTg4IDI0LjYgMC43NDk5ODhIMjUuMkMyNi40IDAuNzQ5OTg4IDI3LjIgMS41NDk5OSAyNy42IDIuNjQ5OTlMMjggMy40NDk5OUwzMi45IDE0LjA1QzMzLjMgMTQuOTUgMzMuNyAxNi4wNSAzNCAxNi43NUMzNC4zIDE2LjA1IDM0LjcgMTQuOTUgMzUuMSAxNC4wNUw0MCAzLjU0OTk5TDQwLjMgMi41NDk5OUM0MC43IDEuNTQ5OTkgNDEuNSAwLjY0OTk4OCA0Mi42IDAuNjQ5OTg4SDQzLjJDNDQuNyAwLjY0OTk4OCA0NS43IDEuODQ5OTkgNDUuNyAzLjM0OTk5QzQ1LjcgMy45NDk5OSA0NS41IDUuMTQ5OTkgNDUuNSA1Ljc0OTk5VjIwLjE1QzQ1LjUgMjAuODUgNDUuNyAyMi4wNSA0NS43IDIyLjY1QzQ1LjcgMjQuMjUgNDQuNSAyNS40NSA0MyAyNS40NUM0MS40IDI1LjQ1IDQwLjMgMjQuMjUgNDAuMyAyMi42NUM0MC4zIDIxLjk1IDQwLjQgMjAuNzUgNDAuNCAyMC4xNUw0MC42IDE0LjA1QzQwLjYgMTMuMTUgNDAuNyAxMS43NSA0MC43IDEwLjY1TDM3IDE5LjA1QzM2LjcgMTkuNzUgMzYuNiAxOS45NSAzNi40IDIwLjM1QzM2IDIxLjI1IDM1LjMgMjEuODUgMzMuOSAyMS44NUMzMi41IDIxLjg1IDMxLjggMjEuMjUgMzEuNCAyMC40NUMzMS4yIDIwLjA1IDMxLjIgMTkuNzUgMzAuOCAxOS4wNUwyNyAxMC43NUMyNyAxMC43NSAyNy4xIDEzLjE1IDI3LjIgMTQuMDVMMjcuNCAyMC4xNUMyNy40IDIwLjg1IDI3LjUgMjEuOTUgMjcuNSAyMi42NUMyNy41IDI0LjI1IDI2LjQgMjUuNDUgMjQuOCAyNS40NUMyMy4zIDI1LjU1IDIyLjEgMjQuMjUgMjIuMSAyMi43NVpNMjguNyAzMi45NUMyOS4xIDMyLjk1IDMwLjIgMzMuMTUgMzAuNyAzMy4xNUg0MS44QzQyLjMgMzMuMTUgNDMuMiAzMi45NSA0My43IDMyLjk1QzQ0LjkgMzIuOTUgNDUuOCAzMy44NSA0NS44IDM1LjA1QzQ1LjggMzYuMTUgNDQuOSAzNy4xNSA0My43IDM3LjE1QzQzLjMgMzcuMTUgNDIuMyAzNi45NSA0MS44IDM2Ljk1SDMwLjhDMzAuMyAzNi45NSAyOS4yIDM3LjE1IDI4LjggMzcuMTVDMjcuNiAzNy4xNSAyNi43IDM2LjI1IDI2LjcgMzUuMDVDMjYuNiAzMy45NSAyNy41IDMyLjk1IDI4LjcgMzIuOTVaTTIuMSA2Ny4yNUMyLjUgNjcuMjUgMy42IDY3LjQ1IDQuMSA2Ny40NUgxOC41QzE5IDY3LjQ1IDE5LjkgNjcuMjUgMjAuNCA2Ny4yNUMyMS42IDY3LjI1IDIyLjUgNjguMTUgMjIuNSA2OS4zNUMyMi41IDcwLjQ1IDIxLjYgNzEuNDUgMjAuNCA3MS40NUMyMCA3MS40NSAxOSA3MS4yNSAxOC41IDcxLjI1SDQuMUMzLjYgNzEuMjUgMi41IDcxLjQ1IDIuMSA3MS40NUMwLjkgNzEuNDUgMCA3MC41NSAwIDY5LjM1QzAgNjguMjUgMC45IDY3LjI1IDIuMSA2Ny4yNVpNMjEuOSAzNS42NUMyMS45IDM1Ljk1IDIxLjggMzYuMzUgMjEuNiAzNi43NUMyMS4zIDM3LjQ1IDIwLjkgMzguMzUgMjAuNyAzOC44NUwxNC43IDU0LjY1QzE0LjUgNTUuMDUgMTQuNCA1NS41NSAxNC4yIDU2LjM1QzEzLjggNTcuNjUgMTIuNiA1OC4yNSAxMS4yIDU4LjI1SDEwLjhDOS40IDU4LjI1IDguMiA1Ny43NSA3LjggNTYuMzVDNy42IDU1LjU1IDcuNCA1NS4xNSA3LjIgNTQuNjVMMS4yIDM4Ljg1QzEgMzguMzUgMC42IDM3LjU1IDAuMiAzNi44NUMwLjEgMzYuNDUgMCAzNS45NSAwIDM1LjY1QzAgMzQuMTUgMS4yIDMyLjg1IDIuOCAzMi44NUMzLjkgMzIuODUgNSAzMy41NSA1LjMgMzQuNzVDNS41IDM1LjU1IDUuNSAzNi4xNSA2IDM3LjU1TDEwLjIgNDkuNDVDMTAuNSA1MC4zNSAxMC45IDUxLjQ1IDExLjEgNTIuMzVDMTEuMyA1MS40NSAxMS42IDUwLjQ1IDExLjkgNDkuNTVMMTYgMzcuNTVDMTYuNSAzNi4wNSAxNi40IDM1LjY1IDE2LjcgMzQuODVDMTcuMSAzMy42NSAxOC4xIDMyLjg1IDE5LjMgMzIuODVDMjAuOSAzMi44NSAyMS45IDM0LjE1IDIxLjkgMzUuNjVaTTI5LjcgNzEuNDVDMjguMiA3MS40NSAyNy4yIDcwLjQ1IDI3LjIgNjkuMTVDMjcuMiA2OC43NSAyNy4yIDY4LjI1IDI3LjggNjcuNDVMMzcuNCA1My40NUMzNy45IDUyLjc1IDM4LjUgNTIuMDUgMzkuMSA1MS4zNUgzMi4yQzMxLjUgNTEuMzUgMzAuNyA1MS42NSAzMC4xIDUxLjY1QzI4LjcgNTEuNjUgMjcuNiA1MC43NSAyNy42IDQ5LjM1QzI3LjYgNDcuOTUgMjguNyA0Ni45NSAzMC4xIDQ2Ljk1SDQyLjdDNDQuMiA0Ni45NSA0NS4yIDQ3Ljg1IDQ1LjIgNDkuMjVDNDUuMiA0OS42NSA0NSA1MC4zNSA0NC41IDUxLjA1TDM1LjIgNjQuODVDMzQuNyA2NS42NSAzNC4xIDY2LjQ1IDMzLjUgNjcuMDVINDEuMUM0MS45IDY3LjA1IDQyLjcgNjYuNzUgNDMuMyA2Ni43NUM0NC43IDY2Ljc1IDQ1LjcgNjcuNzUgNDUuNyA2OS4wNUM0NS43IDcwLjU1IDQ0LjUgNzEuNTUgNDMuMiA3MS41NUgyOS43VjcxLjQ1WiIgZmlsbD0iYmxhY2siLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yNzJfNDA1Ij4KPHJlY3Qgd2lkdGg9IjQ2IiBoZWlnaHQ9IjcyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=",alt:"Lehrmittelverlag Zürich"}))),N("nav",{key:"37b6ef465d320c325e0c830bcc91ea3a575d2690","aria-label":"Hauptnavigation"},N("div",{key:"7a0ec1a78d6eee3b3e37f55f872806b0791c2156",role:"menubar",class:"primary-menubar"},N("slot",{key:"e0403633c6acd137c94b1552cc7f08e3549550d3",name:"nav-primary",ref:M=>this.primarySlot=M}),N("div",{key:"4e377f38a0b94a766f9001174729e5763fa0a194",role:"menu",id:"nav-secondary",class:"secondary-menubar",hidden:!this.lmvzActiveNav,ref:M=>this.secondaryNav=M},N("slot",{key:"368e461f239498c706a3c9bb27a7b05de2b79cac",name:this.secondarySlotName,ref:M=>this.secondarySlot=M})))),N("div",{key:"8ffaf8d6f1254644b48dc0a40b9f552339ecc690",class:"actions"},N("slot",{key:"5b679885e4fa111d66e993458ab7f5092d8179d4",name:"actions"})))}static get watchers(){return{lmvzActiveNav:[{handleActiveNavChange:0}]}}static get style(){return":host{display:flex;width:100vw;flex-direction:row;align-items:center;box-sizing:border-box;background-color:var(--lmvz-semantic-color-surface-primary, #ffffff);--lmvz-header-x-spacing-level-1:var(--lmvz-dimension-8-28, clamp(0.5rem, 0.2rem + 1.29vw, 1.75rem));--lmvz-header-x-spacing-level-2:var(--lmvz-component-buttongroup-wrapper-gap-x, clamp(0.25rem, 0.16rem + 0.39vw, 0.63rem));padding:var(--lmvz-dimension-8-16, clamp(0.5rem, 0.38rem + 0.52vw, 1rem)) var(--lmvz-header-x-spacing-level-1);gap:var(--lmvz-header-x-spacing-level-1);.brand{display:inline-flex;justify-content:center;align-items:center}#fallback-logo-lmvz{height:34px;width:auto}nav{flex-grow:1}.primary-menubar{display:flex;flex-direction:row;align-items:center}.secondary-menubar{display:flex;flex-direction:row;align-items:center;margin-left:var(--lmvz-header-x-spacing-level-2);padding-left:var(--lmvz-header-x-spacing-level-2);border-left:1px solid var(--lmvz-semantic-color-border-default, #e0e0e0)}}"}},[769,"lmvz-header",{role:[2561],lmvzActiveNav:[1,"lmvz-active-nav"]},void 0,{lmvzActiveNav:[{handleActiveNavChange:0}]}]),t=a,A=function(){"undefined"!=typeof customElements&&["lmvz-header"].forEach((M=>{"lmvz-header"===M&&(customElements.get(I(M))||customElements.define(I(M),a))}))};export{t as LmvzHeader,A as defineCustomElement}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface LmvzIcon extends Components.LmvzIcon, HTMLElement {}
|
|
4
|
+
export const LmvzIcon: {
|
|
5
|
+
prototype: LmvzIcon;
|
|
6
|
+
new (): LmvzIcon;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
package/components/lmvz-icon.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as t,h as s,d as e,t as i}from"./p-C_bScbrd.js";import{g as r,a as n,l as o,i as a,b as c,c as h,m as l,d as m,e as d,f as u,h as v,j as p,k as g,s as f,n as w,o as z,p as y,q as b,t as x,u as S,v as k,w as C,x as E,y as D,z as O,A as _,B as V,C as M,D as P,E as R,F as j,G as L,H as N,I as T,J as A,K as B,L as I,M as F,N as H,O as K,P as G,Q as J,R as U,S as W,T as $,U as X,_ as Y,V as q,W as Q,X as Z,Y as tt,Z as st,$ as et,a0 as it,a1 as rt,a2 as nt,a3 as ot,a4 as at,a5 as ct,a6 as ht,a7 as lt,a8 as mt,a9 as dt,aa as ut,r as vt,ab as pt,ac as gt,ad as ft,ae as wt}from"./p-CYcWxAp5.js";import{R as zt,a as yt}from"./p-Clo63DJF.js";import{c as bt}from"./p-DHtXOUVf.js";const xt=Symbol.for("effect/Brand/Refined"),St=(t,s,e,i)=>_({_tag:"Complete",key:t,exit:s,entryStats:e,timeToLiveMillis:i}),kt=(t,s)=>_({_tag:"Pending",key:t,deferred:s}),Ct=Symbol.for("effect/Cache/MapKey");class Et{current;[Ct]=Ct;previous=void 0;next=void 0;constructor(t){this.current=t}[F](){return H(J(this.current),G(J(this.previous)),G(J(this.next)),K(this))}[U](t){return this===t||Ot(t)&&$(this.current,t.current)&&$(this.previous,t.previous)&&$(this.next,t.next)}}const Dt=t=>new Et(t),Ot=t=>W(t,Ct);class _t{head=void 0;tail=void 0;add(t){if(t!==this.tail)if(void 0===this.tail)this.head=t,this.tail=t;else{const s=t.previous,e=t.next;void 0!==e&&(t.next=void 0,void 0!==s?(s.next=e,e.previous=s):(this.head=e,this.head.previous=void 0)),this.tail.next=t,t.previous=this.tail,this.tail=t}}remove(){const t=this.head;if(void 0!==t){const s=t.next;void 0!==s?(t.next=void 0,this.head=s,this.head.previous=void 0):(this.head=void 0,this.tail=void 0)}return t}}const Vt=Symbol.for("effect/Cache"),Mt={_Key:t=>t,_Error:t=>t,_Value:t=>t},Pt=Symbol.for("effect/ConsumerCache"),Rt={_Key:t=>t,_Error:t=>t,_Value:t=>t},jt=t=>({loadedMillis:t});class Lt{capacity;context;fiberId;lookup;timeToLive;[Vt]=Mt;[Pt]=Rt;cacheState;constructor(t,s,e,i,r){this.capacity=t,this.context=s,this.fiberId=e,this.lookup=i,this.timeToLive=r,this.cacheState={map:P(),keys:new _t,accesses:I(),updating:B(!1),hits:0,misses:0}}get(t){return d(this.getEither(t),g)}get cacheStats(){return f((()=>({hits:this.cacheState.hits,misses:this.cacheState.misses,size:w(this.cacheState.map)})))}getOption(t){return z((()=>l(y(this.cacheState.map,t),{onNone:()=>{const s=Dt(t);return this.trackAccess(s),this.trackMiss(),b(x())},onSome:t=>this.resolveMapValue(t)})))}getOptionComplete(t){return z((()=>l(y(this.cacheState.map,t),{onNone:()=>{const s=Dt(t);return this.trackAccess(s),this.trackMiss(),b(x())},onSome:t=>this.resolveMapValue(t,!0)})))}contains(t){return f((()=>S(this.cacheState.map,t)))}entryStats(t){return f((()=>{const s=y(this.cacheState.map,t);if(k(s))switch(s.value._tag){case"Complete":return C(jt(s.value.entryStats.loadedMillis));case"Pending":return x();case"Refreshing":return C(jt(s.value.complete.entryStats.loadedMillis))}return x()}))}getEither(t){return z((()=>{const s=t;let e,i,r=E(y(this.cacheState.map,s));return void 0===r&&(i=D(this.fiberId),e=Dt(s),S(this.cacheState.map,s)?r=E(y(this.cacheState.map,s)):O(this.cacheState.map,s,kt(e,i))),void 0===r?(this.trackAccess(e),this.trackMiss(),d(this.lookupValueOf(t,i),n)):V(this.resolveMapValue(r),l({onNone:()=>this.getEither(t),onSome:t=>b(o(t))}))}))}invalidate(t){return f((()=>{M(this.cacheState.map,t)}))}invalidateWhen(t,s){return f((()=>{const e=y(this.cacheState.map,t);k(e)&&"Complete"===e.value._tag&&"Success"===e.value.exit._tag&&s(e.value.exit.value)&&M(this.cacheState.map,t)}))}get invalidateAll(){return f((()=>{this.cacheState.map=P()}))}refresh(t){return R((s=>z((()=>{const e=t,i=D(this.fiberId);let r=E(y(this.cacheState.map,e));if(void 0===r&&(S(this.cacheState.map,e)?r=E(y(this.cacheState.map,e)):O(this.cacheState.map,e,kt(Dt(e),i))),void 0===r)return X(this.lookupValueOf(t,i));switch(r._tag){case"Complete":if(this.hasExpired(s,r.timeToLiveMillis)){const s=E(y(this.cacheState.map,e));return $(s,r)&&M(this.cacheState.map,e),X(this.get(t))}return H(this.lookupValueOf(t,i),q((()=>{const t=E(y(this.cacheState.map,e));if($(t,r)){const t=((t,s)=>_({_tag:"Refreshing",deferred:t,complete:s}))(i,r);return O(this.cacheState.map,e,t),!0}return!1})),X);case"Pending":case"Refreshing":return Y(r.deferred)}}))))}set(t,s){return R((e=>f((()=>{const i=e.unsafeCurrentTimeMillis(),r=t,n=Q(s),o=St(Dt(r),n,jt(i),i+Z(m(this.timeToLive(n))));O(this.cacheState.map,r,o)}))))}get size(){return f((()=>w(this.cacheState.map)))}get values(){return f((()=>{const t=[];for(const s of this.cacheState.map)"Complete"===s[1]._tag&&"Success"===s[1].exit._tag&&t.push(s[1].exit.value);return t}))}get entries(){return f((()=>{const t=[];for(const s of this.cacheState.map)"Complete"===s[1]._tag&&"Success"===s[1].exit._tag&&t.push([s[0],s[1].exit.value]);return t}))}get keys(){return f((()=>{const t=[];for(const s of this.cacheState.map)"Complete"===s[1]._tag&&"Success"===s[1].exit._tag&&t.push(s[0]);return t}))}resolveMapValue(t,s=!1){return R((e=>{switch(t._tag){case"Complete":return this.trackAccess(t.key),this.hasExpired(e,t.timeToLiveMillis)?(M(this.cacheState.map,t.key.current),b(x())):(this.trackHit(),d(t.exit,C));case"Pending":return this.trackAccess(t.key),this.trackHit(),s?b(x()):d(Y(t.deferred),C);case"Refreshing":return this.trackAccess(t.complete.key),this.trackHit(),this.hasExpired(e,t.complete.timeToLiveMillis)?s?b(x()):d(Y(t.deferred),C):d(t.complete.exit,C)}}))}trackHit(){this.cacheState.hits=this.cacheState.hits+1}trackMiss(){this.cacheState.misses=this.cacheState.misses+1}trackAccess(t){if(j(this.cacheState.accesses,t),L(this.cacheState.updating,!1,!0)){let t=!0;for(;t;){const s=N(this.cacheState.accesses,T);s===T?t=!1:this.cacheState.keys.add(s)}let s=w(this.cacheState.map);for(t=s>this.capacity;t;){const e=this.cacheState.keys.remove();void 0!==e?S(this.cacheState.map,e.current)&&(M(this.cacheState.map,e.current),s-=1,t=s>this.capacity):t=!1}A(this.cacheState.updating,!1)}}hasExpired(t,s){return t.unsafeCurrentTimeMillis()>s}lookupValueOf(t,s){return R((e=>z((()=>{const i=t;return H(this.lookup(t),nt(this.context),rt,V((t=>{const r=e.unsafeCurrentTimeMillis(),n=jt(r),o=St(Dt(i),t,n,r+Z(m(this.timeToLive(t))));return O(this.cacheState.map,i,o),st(it(s,t),t)})),tt((()=>st(et(s),f((()=>{M(this.cacheState.map,i)}))))))}))))}}const Nt=t=>{const s=m(t.timeToLive);return(t=>d(u([v(),p]),(([s,e])=>new Lt(t.capacity,s,e,t.lookup,(s=>m(t.timeToLive(s)))))))({capacity:t.capacity,lookup:t.lookup,timeToLive:()=>s})},Tt=function(){const t=Symbol.for("effect/Data/Error/plainArgs");return class extends ot{constructor(s){super(s?.message,s?.cause?{cause:s.cause}:void 0),s&&(Object.assign(this,s),Object.defineProperty(this,t,{value:s,enumerable:!1}))}toJSON(){return{...this[t],...this}}}}(),At=t=>{const s={BaseEffectError:class extends Tt{_tag=t}};return s.BaseEffectError.prototype.name=t,s.BaseEffectError};class Bt extends(At("FetchError")){}class It extends(At("NotFoundError")){}class Ft extends(At("ResponseTextError")){constructor(t){super(Error("Failed to read response text",{cause:t}))}}const Ht=function(...t){const s=2===t.length?s=>t[0](s)?n(s):o(t[1](s)):s=>l(t[0](s),{onNone:()=>n(s),onSome:o});return Object.assign((t=>r(s(t),a)),{[xt]:xt,option:t=>h(s(t)),either:s,is:t=>c(s(t))})}((function(t){if("string"!=typeof t)return!1;try{return"svg"===(new DOMParser).parseFromString(t,"image/svg+xml").documentElement.nodeName}catch{return!1}}),(()=>[{message:"SVG data is malformed",meta:void 0}]));class Kt extends(At("BrandValidationError")){constructor(t,s){super(Error(`Brand validation failed for type ${s}.`,{cause:t}))}}let Gt=null;function Jt(){return mt((function*(){Gt?yield*Gt.invalidateAll:dt("Attempted to clear icon cache before it was initialized")}))}const Ut=t(class extends zt{intersectionObserver;ariaValidationController=new yt(this);get el(){return this}validationEl;icon;weight="medium";size="md";iconData;visible=!1;ariaLabel;get ariaHidden(){return!this.ariaLabel}constructor(t){super(!1),!1!==t&&this.__registerHost(),this.addController(this.ariaValidationController)}connectedCallback(){this.waitUntilVisible((()=>{this.visible=!0,this.loadIconPathData()})),super.connectedCallback()}disconnectedCallback(){this.intersectionObserver&&(this.intersectionObserver.disconnect(),this.intersectionObserver=void 0),super.disconnectedCallback()}async loadIconPathData(){const{icon:t,visible:s}=this;t&&s&&(this.iconData=await vt(function(t){const s=t;return mt((function*(){return Gt||(Gt=yield*Nt({capacity:200,timeToLive:ut,lookup:t=>mt((function*(){const s=bt(t+".svg","icons"),e=yield*(t=>at((function*(){const s=yield*ct({try:()=>fetch(t,void 0),catch:t=>new Bt({cause:t})});return 404===s.status?yield*ht(new It({url:s.url})):s})))(s),i=yield*(t=>ct({try:()=>t.text(),catch:t=>new Ft(t)}))(e);return yield*(t=>lt({try:()=>Ht(t),catch:t=>new Kt(t,"SVGString")}))(i)}))})),yield*Gt.get(s)}))}(this.icon).pipe(pt((s=>gt(`Error loading icon "${t}":`,s.message,s.cause,s.stack))),ft((()=>wt(Ht('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"></svg>')))))))}componentDidRender(){this.validationEl=this.el.querySelector("svg"),this.ariaValidationController.revalidateAria(),super.componentDidRender()}render(){return s(e,{key:"f5c2f8025d0e9598d903e72770ebca6cad01961c",role:"img","aria-hidden":""+this.ariaHidden,innerHTML:this.iconData})}waitUntilVisible(t,s=50){"undefined"!=typeof window&&window.IntersectionObserver?(this.intersectionObserver=new IntersectionObserver((s=>{s.some((s=>!!s.isIntersecting&&(this.intersectionObserver?.disconnect(),this.intersectionObserver=void 0,t(),!0)))}),{rootMargin:s+"px"}),this.intersectionObserver.observe(this.el)):t()}static get assetsDirs(){return["../../assets/icons"]}static get watchers(){return{icon:[{loadIconPathData:0}]}}static get style(){return".sc-lmvz-icon-h{--lmvz-icon-color:var(--lmvz-component-color, var(--lmvz-semantic-color-on-surface-input-primary, #000000));display:inline-block;line-height:0;svg{display:block}svg>path{stroke:var(--lmvz-icon-color);fill:none}}[size='xs'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));height:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))}}[size='sm'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem));height:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem))}}[size='md'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem));height:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem))}}[size='lg'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem));height:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem))}}[size='inherit'].sc-lmvz-icon-h{svg{width:inherit;height:inherit}}[weight='light'].sc-lmvz-icon-h{svg>path{stroke-width:1}}[weight='medium'].sc-lmvz-icon-h{svg>path{stroke-width:1.5}}[weight='bold'].sc-lmvz-icon-h{svg>path{stroke-width:2}}[weight='filled'].sc-lmvz-icon-h{svg>path{stroke-width:2;fill:var(--lmvz-icon-color)}}"}},[514,"lmvz-icon",{icon:[513],weight:[513],size:[513],ariaLabel:[513,"aria-label"],iconData:[32],visible:[32]},void 0,{icon:[{loadIconPathData:0}]}]),Wt=Ut,$t=function(){"undefined"!=typeof customElements&&["lmvz-icon"].forEach((t=>{"lmvz-icon"===t&&(customElements.get(i(t))||customElements.define(i(t),Ut))}))};export{Wt as LmvzIcon,Jt as c,$t as defineCustomElement}
|
|
1
|
+
import{p as i,h as e,d as t,t as n}from"./p-C_bScbrd.js";import{g as o,r as s,l as r,i as c,a,b as l,m,t as h,T as v,c as d}from"./p-fiRXhuXK.js";import{R as g,a as p}from"./p-CBLAeife.js";const u=Symbol.for("effect/Brand/Refined"),w=function(...i){const e=2===i.length?e=>i[0](e)?s(e):r(i[1](e)):e=>m(i[0](e),{onNone:()=>s(e),onSome:r});return Object.assign((i=>o(e(i),c)),{[u]:u,option:i=>l(e(i)),either:e,is:i=>a(e(i))})}(z,(()=>[{message:"SVG data is malformed",meta:void 0}]));class f extends(v("BrandValidationError")){constructor(i,e){super(Error(`Brand validation failed for type ${e}.`,{cause:i}))}}function z(i){if("string"!=typeof i)return!1;try{return"svg"===(new DOMParser).parseFromString(i,"image/svg+xml").documentElement.nodeName}catch{return!1}}const b=Symbol.for("LMVZ__iconProviderRegistry"),y={};function $(){return"undefined"==typeof window?y:window[b]??(window[b]={})}function x(i,e){const t=$(),n=i;Object.prototype.hasOwnProperty.call(t,n)&&console.warn(`Icon provider with name "${n}" is already registered. Overwriting existing provider.`),t[n]=e}function k(i){const e=$();if(i)return e[i];const t=Object.keys(e);if(0===t.length)return;t.length>1&&console.warn(`Multiple icon providers registered (${t.join(", ")}). Using the first one: "${t[0]}".`);const n=t[0];return n?e[n]:void 0}const I=()=>w('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"></svg>');function D(i,e){return{iconset:i,icon:e}}const P=i(class extends g{intersectionObserver;ariaValidationController=new p(this);get el(){return this}validationEl;icon;weight="medium";size="md";iconset;iconData;visible=!1;ariaLabel;get ariaHidden(){return!this.ariaLabel}constructor(i){super(!1),!1!==i&&this.__registerHost(),this.addController(this.ariaValidationController)}connectedCallback(){this.waitUntilVisible((()=>{this.visible=!0,this.loadIconPathData()})),super.connectedCallback()}disconnectedCallback(){this.intersectionObserver&&"function"==typeof this.intersectionObserver.disconnect&&this.intersectionObserver.disconnect(),this.intersectionObserver=void 0,super.disconnectedCallback()}async loadIconPathData(){const{icon:i,iconset:e,visible:t}=this;i&&t&&(this.iconData=z(i)?i:await async function(i){const{icon:e,iconset:t}=i;return await(async()=>{const i=k(t);if(i)try{const n=await Promise.resolve(i.resolve(e));if(!n?.svg)return void console.warn(`Icon "${e}"${t?` from set "${t}"`:""} not found in provider. Using default icon.`);const o=await async function(i){try{return await d((i=>h({try:()=>w(i),catch:i=>new f(i,"SVGString")}))(i))}catch{return console.error("Invalid SVG string:",i),I()}}(n.svg);if(o)return o}catch(i){return void console.error(`Error resolving icon "${e}" with provider:`,i)}else console.warn(`No icon provider registered. Unable to resolve icon "${e}"${t?` from set "${t}"`:""}. Using default icon.`)})()||(console.error(`Icon "${e}" not found${t?` in set "${t}"`:""}. Using default icon.`),I())}({icon:i,iconset:e}))}componentDidRender(){this.validationEl=this.el.querySelector("svg"),this.ariaValidationController.revalidateAria(),super.componentDidRender()}render(){return e(t,{key:"6022ed0e30bcdd13455ccaae65784ac70abcb349",role:"img","aria-hidden":""+this.ariaHidden,innerHTML:this.iconData})}waitUntilVisible(i,e=50){"undefined"!=typeof window&&window.IntersectionObserver?(this.intersectionObserver=new IntersectionObserver((e=>{e.some((e=>!!e.isIntersecting&&(this.intersectionObserver&&"function"==typeof this.intersectionObserver.disconnect&&this.intersectionObserver.disconnect(),this.intersectionObserver=void 0,i(),!0)))}),{rootMargin:e+"px"}),this.intersectionObserver.observe(this.el)):i()}static get watchers(){return{icon:[{loadIconPathData:0}],iconset:[{loadIconPathData:0}]}}static get style(){return".sc-lmvz-icon-h{--lmvz-icon-color:var(--lmvz-component-color, var(--lmvz-semantic-color-on-surface-input-primary, #000000));display:inline-block;line-height:0;svg{display:block}svg path{stroke:var(--lmvz-icon-color);fill:none}}[size='xs'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem));height:var(--lmvz-component-icon-size-xs, clamp(0.75rem, 0.69rem + 0.26vw, 1rem))}}[size='sm'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem));height:var(--lmvz-component-icon-size-sm, clamp(0.88rem, 0.81rem + 0.26vw, 1.13rem))}}[size='md'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem));height:var(--lmvz-component-icon-size-md, clamp(1rem, 0.88rem + 0.52vw, 1.5rem))}}[size='lg'].sc-lmvz-icon-h{svg{width:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem));height:var(--lmvz-component-icon-size-lg, clamp(1.5rem, 1.38rem + 0.52vw, 2rem))}}[size='inherit'].sc-lmvz-icon-h{svg{width:inherit;height:inherit}}[weight='light'].sc-lmvz-icon-h{svg path{stroke-width:1}}[weight='medium'].sc-lmvz-icon-h{svg path{stroke-width:1.5}}[weight='bold'].sc-lmvz-icon-h{svg path{stroke-width:2}}[weight='filled'].sc-lmvz-icon-h{svg path{stroke-width:2;fill:var(--lmvz-icon-color)}}"}},[514,"lmvz-icon",{icon:[513],weight:[513],size:[513],iconset:[513],ariaLabel:[513,"aria-label"],iconData:[32],visible:[32]},void 0,{icon:[{loadIconPathData:0}],iconset:[{loadIconPathData:0}]}]),S=P,E=function(){"undefined"!=typeof customElements&&["lmvz-icon"].forEach((i=>{"lmvz-icon"===i&&(customElements.get(n(i))||customElements.define(n(i),P))}))};export{S as LmvzIcon,E as defineCustomElement,k as g,x as r,D as t}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface LmvzInput extends Components.LmvzInput, HTMLElement {}
|
|
4
|
+
export const LmvzInput: {
|
|
5
|
+
prototype: LmvzInput;
|
|
6
|
+
new (): LmvzInput;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|