@lmvz-ds/components 0.19.0 → 0.21.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 (112) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/assets/icons/checkmark.svg +4 -0
  3. package/cjs/{aria-loader-CfFuAbJn.js → aria-loader-Cec1zR2g.js} +1 -1
  4. package/cjs/icons-BQASWgk-.js +80 -0
  5. package/cjs/{index--7IqZZqn.js → index-3g9Z9sfF.js} +765 -2854
  6. package/cjs/index.cjs.js +4 -3
  7. package/cjs/lmvz-button.cjs.entry.js +3 -3
  8. package/cjs/lmvz-card.cjs.entry.js +1 -1
  9. package/cjs/lmvz-checkbox.cjs.entry.js +113 -0
  10. package/cjs/lmvz-chip.cjs.entry.js +3 -3
  11. package/cjs/lmvz-components.cjs.js +1 -1
  12. package/cjs/lmvz-header_2.cjs.entry.js +3 -3
  13. package/cjs/lmvz-icon.cjs.entry.js +9 -7
  14. package/cjs/lmvz-input.cjs.entry.js +4 -4
  15. package/cjs/lmvz-menuitem.cjs.entry.js +4 -4
  16. package/cjs/lmvz-select.cjs.entry.js +3 -3
  17. package/cjs/lmvz-toggle.cjs.entry.js +96 -0
  18. package/cjs/loader.cjs.js +1 -1
  19. package/cjs/{logger-Bn2yoZGP.js → logger-DsM6xg6V.js} +3063 -833
  20. package/cjs/{reactive-controller-host-Bi9eu2bV.js → reactive-controller-host-BA4ZhjKA.js} +1 -1
  21. package/cjs/{icons-Tg7ySOh-.js → svg-BMBduILB.js} +31 -85
  22. package/collection/assets/icons/checkmark.svg +4 -0
  23. package/collection/collection-manifest.json +2 -0
  24. package/collection/components/lmvz-button/lmvz-button.css +1 -2
  25. package/collection/components/lmvz-card/lmvz-card.css +1 -2
  26. package/collection/components/lmvz-checkbox/lmvz-checkbox.css +207 -0
  27. package/collection/components/lmvz-checkbox/lmvz-checkbox.js +424 -0
  28. package/collection/components/lmvz-chip/lmvz-chip.js +1 -1
  29. package/collection/components/lmvz-header/lmvz-header.js +1 -1
  30. package/collection/components/lmvz-icon/lmvz-icon.js +5 -5
  31. package/collection/components/lmvz-input/lmvz-input.js +2 -2
  32. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +1 -1
  33. package/collection/components/lmvz-menuitem/lmvz-menuitem.js +1 -1
  34. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  35. package/collection/components/lmvz-toggle/lmvz-toggle.css +118 -0
  36. package/collection/components/lmvz-toggle/lmvz-toggle.js +358 -0
  37. package/collection/integration/header-integration/header-integration.js +1 -1
  38. package/collection/utils/icons/icons.js +2 -13
  39. package/collection/utils/icons/icons.unit.js +3 -15
  40. package/components/index.d.ts +4 -0
  41. package/components/index.d.ts.bak +4 -0
  42. package/components/index.js +1 -1
  43. package/components/lmvz-button.js +1 -1
  44. package/components/lmvz-card.js +1 -1
  45. package/components/lmvz-checkbox.d.ts +11 -0
  46. package/components/lmvz-checkbox.d.ts.bak +11 -0
  47. package/components/lmvz-checkbox.js +1 -0
  48. package/components/lmvz-chip.js +1 -1
  49. package/components/lmvz-header.js +1 -1
  50. package/components/lmvz-icon.js +1 -1
  51. package/components/lmvz-input.js +1 -1
  52. package/components/lmvz-menuitem.js +1 -1
  53. package/components/lmvz-select.js +1 -1
  54. package/components/lmvz-toggle.d.ts +11 -0
  55. package/components/lmvz-toggle.d.ts.bak +11 -0
  56. package/components/lmvz-toggle.js +1 -0
  57. package/components/p-0s99QfRy.js +12 -0
  58. package/components/{p-DbeHBSOe.js → p-BuFx0tTm.js} +1 -1
  59. package/components/p-CGmJG63p.js +1 -0
  60. package/components/p-CcxjkCOx.js +1 -0
  61. package/esm/{aria-loader-CES8Ae1e.js → aria-loader-BVolm0lC.js} +1 -1
  62. package/esm/icons-CmuFKDRz.js +75 -0
  63. package/esm/{index-BvxaUA12.js → index-Dh_9sN0q.js} +389 -2478
  64. package/esm/index.js +4 -3
  65. package/esm/lmvz-button.entry.js +3 -3
  66. package/esm/lmvz-card.entry.js +1 -1
  67. package/esm/lmvz-checkbox.entry.js +111 -0
  68. package/esm/lmvz-chip.entry.js +3 -3
  69. package/esm/lmvz-components.js +1 -1
  70. package/esm/lmvz-header_2.entry.js +3 -3
  71. package/esm/lmvz-icon.entry.js +9 -7
  72. package/esm/lmvz-input.entry.js +4 -4
  73. package/esm/lmvz-menuitem.entry.js +4 -4
  74. package/esm/lmvz-select.entry.js +3 -3
  75. package/esm/lmvz-toggle.entry.js +94 -0
  76. package/esm/loader.js +1 -1
  77. package/esm/{logger-0bL3pydp.js → logger-CGmJG63p.js} +2870 -765
  78. package/esm/{reactive-controller-host-J2thAxVH.js → reactive-controller-host-DHcPpJW7.js} +1 -1
  79. package/esm/{icons-Bj4dF1-I.js → svg-B2YoIRuh.js} +29 -80
  80. package/hydrate/index.js +2551 -165
  81. package/hydrate/index.mjs +2551 -165
  82. package/lmvz-components/index.esm.js +1 -1
  83. package/lmvz-components/lmvz-components.esm.js +1 -1
  84. package/lmvz-components/{p-ec96c6b6.entry.js → p-0f7a4236.entry.js} +1 -1
  85. package/lmvz-components/p-0s99QfRy.js +12 -0
  86. package/lmvz-components/p-2f83d7a2.entry.js +1 -0
  87. package/lmvz-components/{p-6e8acbd9.entry.js → p-32171f4f.entry.js} +1 -1
  88. package/lmvz-components/{p-9212bd23.entry.js → p-400b2318.entry.js} +1 -1
  89. package/lmvz-components/{p-9626e951.entry.js → p-851969bd.entry.js} +1 -1
  90. package/lmvz-components/p-9f9d845d.entry.js +1 -0
  91. package/lmvz-components/p-CFsC37ww.js +1 -0
  92. package/lmvz-components/p-CGmJG63p.js +1 -0
  93. package/lmvz-components/p-CcxjkCOx.js +1 -0
  94. package/lmvz-components/{p-BxHnZA0M.js → p-GdMr6Qlp.js} +1 -1
  95. package/lmvz-components/p-a12f95da.entry.js +1 -0
  96. package/lmvz-components/{p-e1b847d2.entry.js → p-ab4437dc.entry.js} +1 -1
  97. package/lmvz-components/p-c3b7890d.entry.js +1 -0
  98. package/lmvz-components/{p-7a6bec13.entry.js → p-d0a0e206.entry.js} +1 -1
  99. package/lmvz-components/{p-DYaffOLo.js → p-dhVSUYqd.js} +1 -1
  100. package/manifest.json +833 -77
  101. package/package.json +9 -1
  102. package/types/components/lmvz-checkbox/lmvz-checkbox.d.ts +39 -0
  103. package/types/components/lmvz-toggle/lmvz-toggle.d.ts +31 -0
  104. package/types/components.d.ts +270 -0
  105. package/types/utils/icons/icons.d.ts +0 -1
  106. package/components/p-DXOTa5VF.js +0 -12
  107. package/components/p-fiRXhuXK.js +0 -1
  108. package/lmvz-components/p-0bL3pydp.js +0 -1
  109. package/lmvz-components/p-40569208.entry.js +0 -1
  110. package/lmvz-components/p-49ab22bd.entry.js +0 -1
  111. package/lmvz-components/p-Bu4Z_PMf.js +0 -1
  112. package/lmvz-components/p-DHZwxmLb.js +0 -12
package/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-05-18T09:58:50",
2
+ "timestamp": "2026-05-21T07:12:41",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.4",
@@ -506,6 +506,415 @@
506
506
  "dependencies": [],
507
507
  "dependencyGraph": {}
508
508
  },
509
+ {
510
+ "filePath": "src/components/lmvz-checkbox/lmvz-checkbox.tsx",
511
+ "encapsulation": "scoped",
512
+ "tag": "lmvz-checkbox",
513
+ "readme": "# lmvz-checkbox\n\nAccessible, form-associated checkbox built as a Stencil scoped web component. Participates in native HTML forms via `ElementInternals` and emits a `lmvzChange` event on toggle.\n\n## Usage\n\n### Basic\n\n```html\n<lmvz-checkbox label=\"Accept terms and conditions\"></lmvz-checkbox>\n\n<!-- With helper text -->\n<lmvz-checkbox\n label=\"Subscribe to newsletter\"\n helper-text=\"You can unsubscribe at any time.\"\n></lmvz-checkbox>\n\n<!-- Required with error state -->\n<lmvz-checkbox\n label=\"I agree to the privacy policy\"\n required\n error\n error-message=\"You must accept the privacy policy to continue.\"\n></lmvz-checkbox>\n```\n\n### Form integration\n\n`lmvz-checkbox` participates in native form submission via `ElementInternals`. Use `name` to set the field name and `value` to control the submitted value (defaults to `'on'`).\n\n```html\n<form id=\"signup-form\">\n <lmvz-checkbox\n name=\"terms\"\n label=\"Accept terms and conditions\"\n value=\"accepted\"\n required\n ></lmvz-checkbox>\n <button type=\"submit\">Submit</button>\n</form>\n```\n\n```js\ndocument.getElementById('signup-form').addEventListener('submit', (event) => {\n event.preventDefault();\n const data = new FormData(event.target);\n // data.get('terms') === 'accepted' when checked, null when unchecked\n console.log(data.get('terms'));\n});\n```\n\nTo associate the checkbox with a form outside its DOM subtree, pass the form element's `id` via the `form` attribute:\n\n```html\n<form id=\"external-form\">...</form>\n<lmvz-checkbox name=\"consent\" label=\"I consent\" form=\"external-form\"></lmvz-checkbox>\n```\n\n## Reflected Attributes\n\nThe following props are reflected as HTML attributes and can be used in CSS attribute selectors:\n\n| Prop | Attribute |\n|------|-----------|\n| `checked` | `checked` |\n| `disabled` | `disabled` |\n| `required` | `required` |\n| `error` | `error` |\n\n## CSS Custom Properties\n\nOverride these on the `:host` element to theme the component. All defaults reference LMVZ semantic or global design tokens.\n\n| Custom Property | Default | Purpose |\n|----------------|---------|---------|\n| `--checkbox-box-size` | `var(--lmvz-global-dimension-s18)` | Width and height of the checkbox box |\n| `--checkbox-border-radius` | `var(--lmvz-global-dimension-s4)` | Border radius of the checkbox box |\n| `--checkbox-border-color` | `var(--lmvz-semantic-color-border-default)` | Default (unchecked) border color |\n| `--checkbox-border-color-hover` | `var(--lmvz-semantic-color-border-hover)` | Border color on hover |\n| `--checkbox-border-color-checked` | `var(--lmvz-semantic-color-border-active)` | Border color when checked |\n| `--checkbox-border-color-error` | `var(--lmvz-semantic-color-status-on-danger)` | Border color in error state |\n| `--checkbox-focus-color` | `var(--lmvz-semantic-color-status-on-active)` | Focus ring color |\n| `--checkbox-checkmark-color` | `var(--lmvz-semantic-color-border-active)` | Checkmark SVG stroke color |\n| `--checkbox-label-color` | `var(--lmvz-semantic-color-on-surface-primary)` | Label text color (default and hover) |\n| `--checkbox-label-color-checked` | `var(--lmvz-semantic-color-status-on-active)` | Label text color when checked |\n| `--checkbox-wrapper-bg-hover` | `var(--lmvz-semantic-color-int-tertiary-hover)` | Pill background on hover |\n| `--checkbox-wrapper-bg-checked` | `var(--lmvz-semantic-color-status-active)` | Pill background when checked |\n| `--checkbox-ripple-bg` | `var(--lmvz-semantic-color-int-secondary-hover)` | Ripple dot color |\n| `--checkbox-helper-color` | `var(--lmvz-semantic-color-on-surface-secondary)` | Helper text color |\n| `--checkbox-error-color` | `var(--lmvz-semantic-color-status-on-danger)` | Error message text color |\n| `--checkbox-disabled-opacity` | `var(--lmvz-component-input-disabled-opacity)` | Opacity when disabled — see caveat below |\n\n## Known Caveats\n\n### Checkbox box size uses a generic dimension token (5.1)\n\n`--checkbox-box-size` defaults to `--lmvz-global-dimension-s18` (18 px). This is a global dimension token; a component-specific token (`component.checkbox.box-size`) is the recommended long-term solution. The effective rendered size is 18 px until that token exists.\n\n### Border-radius uses a generic dimension token (5.2)\n\n`--checkbox-border-radius` defaults to `--lmvz-global-dimension-s4` (4 px). This is a generic dimension token. If `component.checkbox.border-radius` is introduced, this property should be migrated to it.\n\n### Checked label contrast borderline (5.3)\n\nWhen checked, the label text color (`--lmvz-semantic-color-status-on-active`, `#0e7ab4`) against the checked wrapper background (`--lmvz-semantic-color-status-active`, `#f1f9fe`) produces approximately 4.4:1 contrast. This is marginally below the WCAG AA minimum of 4.5:1 for normal text. This was accepted as a design trade-off. Verify contrast against the actual rendered background before each accessibility audit.\n\n### Helper text font-weight inconsistency with `lmvz-input` (5.6)\n\nHelper text renders at `font-weight: 400` per the `body-sm` design token. `lmvz-input` uses `font-weight: 500` for its helper text — a pre-existing inconsistency in the design system. `lmvz-checkbox` intentionally follows the token-specified value. This should be resolved at the design system token level.\n\n### Disabled opacity token export bug (5.7)\n\n`--lmvz-component-input-disabled-opacity` resolves from `global.opacity.opacity-disabled`, which has a known Supernova export bug: the token value is stored as `\"40px\"` (dimension type) instead of `0.4` (unitless number). If disabled checkboxes render at full opacity or at an incorrect size, apply the following workaround at the consuming app level:\n\n```css\nlmvz-checkbox[disabled] {\n --checkbox-disabled-opacity: 0.4;\n}\n```\n\nThis token bug should be tracked and fixed in `packages/design-tokens`.\n",
514
+ "docs": "Checkbox component with form association, ARIA validation, and accessible label support.",
515
+ "docsTags": [
516
+ {
517
+ "name": "example",
518
+ "text": "```html\n<lmvz-checkbox label=\"Accept terms\" name=\"terms\" required></lmvz-checkbox>\n```"
519
+ }
520
+ ],
521
+ "usage": {},
522
+ "props": [
523
+ {
524
+ "name": "autofocus",
525
+ "type": "boolean",
526
+ "complexType": {
527
+ "original": "boolean",
528
+ "resolved": "boolean",
529
+ "references": {}
530
+ },
531
+ "mutable": false,
532
+ "attr": "autofocus",
533
+ "reflectToAttr": false,
534
+ "docs": "Whether the checkbox should autofocus.",
535
+ "docsTags": [
536
+ {
537
+ "name": "default",
538
+ "text": "false"
539
+ }
540
+ ],
541
+ "default": "false",
542
+ "values": [
543
+ {
544
+ "type": "boolean"
545
+ }
546
+ ],
547
+ "optional": false,
548
+ "required": false,
549
+ "getter": false,
550
+ "setter": false
551
+ },
552
+ {
553
+ "name": "checked",
554
+ "type": "boolean",
555
+ "complexType": {
556
+ "original": "boolean",
557
+ "resolved": "boolean",
558
+ "references": {}
559
+ },
560
+ "mutable": true,
561
+ "attr": "checked",
562
+ "reflectToAttr": true,
563
+ "docs": "Whether the checkbox is checked.",
564
+ "docsTags": [
565
+ {
566
+ "name": "default",
567
+ "text": "false"
568
+ }
569
+ ],
570
+ "default": "false",
571
+ "values": [
572
+ {
573
+ "type": "boolean"
574
+ }
575
+ ],
576
+ "optional": false,
577
+ "required": false,
578
+ "getter": false,
579
+ "setter": false
580
+ },
581
+ {
582
+ "name": "disabled",
583
+ "type": "boolean",
584
+ "complexType": {
585
+ "original": "boolean",
586
+ "resolved": "boolean",
587
+ "references": {}
588
+ },
589
+ "mutable": false,
590
+ "attr": "disabled",
591
+ "reflectToAttr": true,
592
+ "docs": "Whether the checkbox is disabled.",
593
+ "docsTags": [
594
+ {
595
+ "name": "default",
596
+ "text": "false"
597
+ }
598
+ ],
599
+ "default": "false",
600
+ "values": [
601
+ {
602
+ "type": "boolean"
603
+ }
604
+ ],
605
+ "optional": false,
606
+ "required": false,
607
+ "getter": false,
608
+ "setter": false
609
+ },
610
+ {
611
+ "name": "error",
612
+ "type": "boolean",
613
+ "complexType": {
614
+ "original": "boolean",
615
+ "resolved": "boolean",
616
+ "references": {}
617
+ },
618
+ "mutable": false,
619
+ "attr": "error",
620
+ "reflectToAttr": true,
621
+ "docs": "Whether the checkbox is in an error state.",
622
+ "docsTags": [
623
+ {
624
+ "name": "default",
625
+ "text": "false"
626
+ }
627
+ ],
628
+ "default": "false",
629
+ "values": [
630
+ {
631
+ "type": "boolean"
632
+ }
633
+ ],
634
+ "optional": false,
635
+ "required": false,
636
+ "getter": false,
637
+ "setter": false
638
+ },
639
+ {
640
+ "name": "errorMessage",
641
+ "type": "string | undefined",
642
+ "complexType": {
643
+ "original": "string",
644
+ "resolved": "string | undefined",
645
+ "references": {}
646
+ },
647
+ "mutable": false,
648
+ "attr": "error-message",
649
+ "reflectToAttr": false,
650
+ "docs": "Error message displayed when error is true. Required when error=true.",
651
+ "docsTags": [],
652
+ "values": [
653
+ {
654
+ "type": "string"
655
+ },
656
+ {
657
+ "type": "undefined"
658
+ }
659
+ ],
660
+ "optional": true,
661
+ "required": false,
662
+ "getter": false,
663
+ "setter": false
664
+ },
665
+ {
666
+ "name": "form",
667
+ "type": "string | undefined",
668
+ "complexType": {
669
+ "original": "string",
670
+ "resolved": "string | undefined",
671
+ "references": {}
672
+ },
673
+ "mutable": false,
674
+ "attr": "form",
675
+ "reflectToAttr": false,
676
+ "docs": "Form id to associate with (for out-of-form usage).",
677
+ "docsTags": [],
678
+ "values": [
679
+ {
680
+ "type": "string"
681
+ },
682
+ {
683
+ "type": "undefined"
684
+ }
685
+ ],
686
+ "optional": true,
687
+ "required": false,
688
+ "getter": false,
689
+ "setter": false
690
+ },
691
+ {
692
+ "name": "helperText",
693
+ "type": "string | undefined",
694
+ "complexType": {
695
+ "original": "string",
696
+ "resolved": "string | undefined",
697
+ "references": {}
698
+ },
699
+ "mutable": false,
700
+ "attr": "helper-text",
701
+ "reflectToAttr": false,
702
+ "docs": "Helper / description text displayed below the label.",
703
+ "docsTags": [],
704
+ "values": [
705
+ {
706
+ "type": "string"
707
+ },
708
+ {
709
+ "type": "undefined"
710
+ }
711
+ ],
712
+ "optional": true,
713
+ "required": false,
714
+ "getter": false,
715
+ "setter": false
716
+ },
717
+ {
718
+ "name": "label",
719
+ "type": "string",
720
+ "complexType": {
721
+ "original": "string",
722
+ "resolved": "string",
723
+ "references": {}
724
+ },
725
+ "mutable": false,
726
+ "attr": "label",
727
+ "reflectToAttr": false,
728
+ "docs": "Label text for the checkbox. Required for accessibility.",
729
+ "docsTags": [],
730
+ "values": [
731
+ {
732
+ "type": "string"
733
+ }
734
+ ],
735
+ "optional": false,
736
+ "required": true,
737
+ "getter": false,
738
+ "setter": false
739
+ },
740
+ {
741
+ "name": "name",
742
+ "type": "string | undefined",
743
+ "complexType": {
744
+ "original": "string",
745
+ "resolved": "string | undefined",
746
+ "references": {}
747
+ },
748
+ "mutable": false,
749
+ "attr": "name",
750
+ "reflectToAttr": false,
751
+ "docs": "Name attribute for form submission via ElementInternals.",
752
+ "docsTags": [],
753
+ "values": [
754
+ {
755
+ "type": "string"
756
+ },
757
+ {
758
+ "type": "undefined"
759
+ }
760
+ ],
761
+ "optional": true,
762
+ "required": false,
763
+ "getter": false,
764
+ "setter": false
765
+ },
766
+ {
767
+ "name": "required",
768
+ "type": "boolean",
769
+ "complexType": {
770
+ "original": "boolean",
771
+ "resolved": "boolean",
772
+ "references": {}
773
+ },
774
+ "mutable": false,
775
+ "attr": "required",
776
+ "reflectToAttr": true,
777
+ "docs": "Whether the checkbox is required.",
778
+ "docsTags": [
779
+ {
780
+ "name": "default",
781
+ "text": "false"
782
+ }
783
+ ],
784
+ "default": "false",
785
+ "values": [
786
+ {
787
+ "type": "boolean"
788
+ }
789
+ ],
790
+ "optional": false,
791
+ "required": false,
792
+ "getter": false,
793
+ "setter": false
794
+ },
795
+ {
796
+ "name": "value",
797
+ "type": "string",
798
+ "complexType": {
799
+ "original": "string",
800
+ "resolved": "string",
801
+ "references": {}
802
+ },
803
+ "mutable": false,
804
+ "attr": "value",
805
+ "reflectToAttr": false,
806
+ "docs": "Form submission value when checked.",
807
+ "docsTags": [
808
+ {
809
+ "name": "default",
810
+ "text": "'on'"
811
+ }
812
+ ],
813
+ "default": "'on'",
814
+ "values": [
815
+ {
816
+ "type": "string"
817
+ }
818
+ ],
819
+ "optional": false,
820
+ "required": false,
821
+ "getter": false,
822
+ "setter": false
823
+ }
824
+ ],
825
+ "methods": [
826
+ {
827
+ "name": "checkValidity",
828
+ "returns": {
829
+ "type": "Promise<boolean>",
830
+ "docs": ""
831
+ },
832
+ "complexType": {
833
+ "signature": "() => Promise<boolean>",
834
+ "parameters": [],
835
+ "references": {
836
+ "Promise": {
837
+ "location": "global",
838
+ "id": "global::Promise"
839
+ }
840
+ },
841
+ "return": "Promise<boolean>"
842
+ },
843
+ "signature": "checkValidity() => Promise<boolean>",
844
+ "parameters": [],
845
+ "docs": "Returns whether the checkbox satisfies its validation constraints.",
846
+ "docsTags": []
847
+ },
848
+ {
849
+ "name": "focusInput",
850
+ "returns": {
851
+ "type": "Promise<void>",
852
+ "docs": ""
853
+ },
854
+ "complexType": {
855
+ "signature": "() => Promise<void>",
856
+ "parameters": [],
857
+ "references": {
858
+ "Promise": {
859
+ "location": "global",
860
+ "id": "global::Promise"
861
+ }
862
+ },
863
+ "return": "Promise<void>"
864
+ },
865
+ "signature": "focusInput() => Promise<void>",
866
+ "parameters": [],
867
+ "docs": "Sets focus on the native checkbox input.",
868
+ "docsTags": []
869
+ },
870
+ {
871
+ "name": "reportValidity",
872
+ "returns": {
873
+ "type": "Promise<boolean>",
874
+ "docs": ""
875
+ },
876
+ "complexType": {
877
+ "signature": "() => Promise<boolean>",
878
+ "parameters": [],
879
+ "references": {
880
+ "Promise": {
881
+ "location": "global",
882
+ "id": "global::Promise"
883
+ }
884
+ },
885
+ "return": "Promise<boolean>"
886
+ },
887
+ "signature": "reportValidity() => Promise<boolean>",
888
+ "parameters": [],
889
+ "docs": "Reports validation errors to the user.",
890
+ "docsTags": []
891
+ }
892
+ ],
893
+ "events": [
894
+ {
895
+ "event": "lmvzChange",
896
+ "detail": "boolean",
897
+ "bubbles": true,
898
+ "complexType": {
899
+ "original": "boolean",
900
+ "resolved": "boolean",
901
+ "references": {}
902
+ },
903
+ "cancelable": true,
904
+ "composed": true,
905
+ "docs": "Emitted whenever the checkbox checked state changes.\nEvent detail contains the new checked boolean value.",
906
+ "docsTags": []
907
+ }
908
+ ],
909
+ "listeners": [],
910
+ "styles": [],
911
+ "slots": [],
912
+ "parts": [],
913
+ "states": [],
914
+ "dependents": [],
915
+ "dependencies": [],
916
+ "dependencyGraph": {}
917
+ },
509
918
  {
510
919
  "filePath": "src/components/lmvz-chip/lmvz-chip.tsx",
511
920
  "encapsulation": "shadow",
@@ -5041,82 +5450,295 @@
5041
5450
  "mutable": false,
5042
5451
  "attr": "role",
5043
5452
  "reflectToAttr": true,
5044
- "docs": "Accessibility role exposed by the host element.",
5453
+ "docs": "Accessibility role exposed by the host element.",
5454
+ "docsTags": [
5455
+ {
5456
+ "name": "default",
5457
+ "text": "'menuitem'"
5458
+ },
5459
+ {
5460
+ "name": "readonly",
5461
+ "text": ""
5462
+ }
5463
+ ],
5464
+ "default": "'menuitem'",
5465
+ "values": [
5466
+ {
5467
+ "type": "string"
5468
+ }
5469
+ ],
5470
+ "optional": false,
5471
+ "required": false,
5472
+ "getter": true,
5473
+ "setter": false
5474
+ },
5475
+ {
5476
+ "name": "ti",
5477
+ "type": "number",
5478
+ "complexType": {
5479
+ "original": "number",
5480
+ "resolved": "number",
5481
+ "references": {}
5482
+ },
5483
+ "mutable": false,
5484
+ "attr": "tabindex",
5485
+ "reflectToAttr": true,
5486
+ "docs": "Keeps the host focusable for keyboard navigation inside `lmvz-header`.",
5487
+ "docsTags": [
5488
+ {
5489
+ "name": "default",
5490
+ "text": "0"
5491
+ },
5492
+ {
5493
+ "name": "readonly",
5494
+ "text": ""
5495
+ }
5496
+ ],
5497
+ "default": "0",
5498
+ "values": [
5499
+ {
5500
+ "type": "number"
5501
+ }
5502
+ ],
5503
+ "optional": false,
5504
+ "required": false,
5505
+ "getter": true,
5506
+ "setter": false
5507
+ }
5508
+ ],
5509
+ "methods": [],
5510
+ "events": [
5511
+ {
5512
+ "event": "lmvzActivation",
5513
+ "detail": "void",
5514
+ "bubbles": true,
5515
+ "complexType": {
5516
+ "original": "void",
5517
+ "resolved": "void",
5518
+ "references": {}
5519
+ },
5520
+ "cancelable": true,
5521
+ "composed": true,
5522
+ "docs": "Event emitted when the menu item is activated, either by a click or by pressing \"Enter\" or \"Space\" while the menu item is focused.",
5523
+ "docsTags": []
5524
+ }
5525
+ ],
5526
+ "listeners": [],
5527
+ "styles": [],
5528
+ "slots": [],
5529
+ "parts": [],
5530
+ "states": [],
5531
+ "dependents": [],
5532
+ "dependencies": [],
5533
+ "dependencyGraph": {}
5534
+ },
5535
+ {
5536
+ "filePath": "src/components/lmvz-select/lmvz-select.tsx",
5537
+ "encapsulation": "scoped",
5538
+ "tag": "lmvz-select",
5539
+ "readme": "# lmvz-select\n\n\n",
5540
+ "docs": "Select component with floating label and pill-shaped trigger.\nWraps a native `<select>` element for full keyboard and form support.",
5541
+ "docsTags": [
5542
+ {
5543
+ "name": "example",
5544
+ "text": "```html\n<lmvz-select label=\"Country\" name=\"country\">\n <option value=\"ch\">Switzerland</option>\n <option value=\"de\">Germany</option>\n <option value=\"at\">Austria</option>\n</lmvz-select>\n```"
5545
+ },
5546
+ {
5547
+ "name": "example",
5548
+ "text": "```typescript\nconst select = document.querySelector('lmvz-select');\nselect.addEventListener('lmvzChange', (e) => console.log(e.detail));\n```"
5549
+ },
5550
+ {
5551
+ "name": "slot",
5552
+ "text": "default - Native `<option>` or `<optgroup>` elements."
5553
+ }
5554
+ ],
5555
+ "usage": {},
5556
+ "props": [
5557
+ {
5558
+ "name": "disabled",
5559
+ "type": "boolean",
5560
+ "complexType": {
5561
+ "original": "boolean",
5562
+ "resolved": "boolean",
5563
+ "references": {}
5564
+ },
5565
+ "mutable": false,
5566
+ "attr": "disabled",
5567
+ "reflectToAttr": true,
5568
+ "docs": "Whether the select is disabled.",
5569
+ "docsTags": [
5570
+ {
5571
+ "name": "default",
5572
+ "text": "false"
5573
+ }
5574
+ ],
5575
+ "default": "false",
5576
+ "values": [
5577
+ {
5578
+ "type": "boolean"
5579
+ }
5580
+ ],
5581
+ "optional": false,
5582
+ "required": false,
5583
+ "getter": false,
5584
+ "setter": false
5585
+ },
5586
+ {
5587
+ "name": "helperText",
5588
+ "type": "string | undefined",
5589
+ "complexType": {
5590
+ "original": "string",
5591
+ "resolved": "string | undefined",
5592
+ "references": {}
5593
+ },
5594
+ "mutable": false,
5595
+ "attr": "helper-text",
5596
+ "reflectToAttr": false,
5597
+ "docs": "Helper text displayed below the select field.",
5598
+ "docsTags": [],
5599
+ "values": [
5600
+ {
5601
+ "type": "string"
5602
+ },
5603
+ {
5604
+ "type": "undefined"
5605
+ }
5606
+ ],
5607
+ "optional": true,
5608
+ "required": false,
5609
+ "getter": false,
5610
+ "setter": false
5611
+ },
5612
+ {
5613
+ "name": "label",
5614
+ "type": "string",
5615
+ "complexType": {
5616
+ "original": "string",
5617
+ "resolved": "string",
5618
+ "references": {}
5619
+ },
5620
+ "mutable": false,
5621
+ "attr": "label",
5622
+ "reflectToAttr": false,
5623
+ "docs": "Label text displayed as a placeholder when no value is selected,\nand floated above the trigger when a value is present.",
5624
+ "docsTags": [],
5625
+ "values": [
5626
+ {
5627
+ "type": "string"
5628
+ }
5629
+ ],
5630
+ "optional": false,
5631
+ "required": true,
5632
+ "getter": false,
5633
+ "setter": false
5634
+ },
5635
+ {
5636
+ "name": "name",
5637
+ "type": "string | undefined",
5638
+ "complexType": {
5639
+ "original": "string",
5640
+ "resolved": "string | undefined",
5641
+ "references": {}
5642
+ },
5643
+ "mutable": false,
5644
+ "attr": "name",
5645
+ "reflectToAttr": false,
5646
+ "docs": "Name attribute passed to the native select for form submission.",
5647
+ "docsTags": [],
5648
+ "values": [
5649
+ {
5650
+ "type": "string"
5651
+ },
5652
+ {
5653
+ "type": "undefined"
5654
+ }
5655
+ ],
5656
+ "optional": true,
5657
+ "required": false,
5658
+ "getter": false,
5659
+ "setter": false
5660
+ },
5661
+ {
5662
+ "name": "required",
5663
+ "type": "boolean",
5664
+ "complexType": {
5665
+ "original": "boolean",
5666
+ "resolved": "boolean",
5667
+ "references": {}
5668
+ },
5669
+ "mutable": false,
5670
+ "attr": "required",
5671
+ "reflectToAttr": true,
5672
+ "docs": "Whether a value is required.",
5045
5673
  "docsTags": [
5046
5674
  {
5047
5675
  "name": "default",
5048
- "text": "'menuitem'"
5049
- },
5050
- {
5051
- "name": "readonly",
5052
- "text": ""
5676
+ "text": "false"
5053
5677
  }
5054
5678
  ],
5055
- "default": "'menuitem'",
5679
+ "default": "false",
5056
5680
  "values": [
5057
5681
  {
5058
- "type": "string"
5682
+ "type": "boolean"
5059
5683
  }
5060
5684
  ],
5061
5685
  "optional": false,
5062
5686
  "required": false,
5063
- "getter": true,
5687
+ "getter": false,
5064
5688
  "setter": false
5065
5689
  },
5066
5690
  {
5067
- "name": "ti",
5068
- "type": "number",
5691
+ "name": "value",
5692
+ "type": "string | undefined",
5069
5693
  "complexType": {
5070
- "original": "number",
5071
- "resolved": "number",
5694
+ "original": "string",
5695
+ "resolved": "string | undefined",
5072
5696
  "references": {}
5073
5697
  },
5074
- "mutable": false,
5075
- "attr": "tabindex",
5076
- "reflectToAttr": true,
5077
- "docs": "Keeps the host focusable for keyboard navigation inside `lmvz-header`.",
5078
- "docsTags": [
5698
+ "mutable": true,
5699
+ "attr": "value",
5700
+ "reflectToAttr": false,
5701
+ "docs": "Currently selected value.",
5702
+ "docsTags": [],
5703
+ "values": [
5079
5704
  {
5080
- "name": "default",
5081
- "text": "0"
5705
+ "type": "string"
5082
5706
  },
5083
5707
  {
5084
- "name": "readonly",
5085
- "text": ""
5086
- }
5087
- ],
5088
- "default": "0",
5089
- "values": [
5090
- {
5091
- "type": "number"
5708
+ "type": "undefined"
5092
5709
  }
5093
5710
  ],
5094
- "optional": false,
5711
+ "optional": true,
5095
5712
  "required": false,
5096
- "getter": true,
5713
+ "getter": false,
5097
5714
  "setter": false
5098
5715
  }
5099
5716
  ],
5100
5717
  "methods": [],
5101
5718
  "events": [
5102
5719
  {
5103
- "event": "lmvzActivation",
5104
- "detail": "void",
5720
+ "event": "lmvzChange",
5721
+ "detail": "string",
5105
5722
  "bubbles": true,
5106
5723
  "complexType": {
5107
- "original": "void",
5108
- "resolved": "void",
5724
+ "original": "string",
5725
+ "resolved": "string",
5109
5726
  "references": {}
5110
5727
  },
5111
5728
  "cancelable": true,
5112
5729
  "composed": true,
5113
- "docs": "Event emitted when the menu item is activated, either by a click or by pressing \"Enter\" or \"Space\" while the menu item is focused.",
5730
+ "docs": "Emitted when the user selects a new option. Detail contains the new value.",
5114
5731
  "docsTags": []
5115
5732
  }
5116
5733
  ],
5117
5734
  "listeners": [],
5118
5735
  "styles": [],
5119
- "slots": [],
5736
+ "slots": [
5737
+ {
5738
+ "name": "default",
5739
+ "docs": "Native `<option>` or `<optgroup>` elements."
5740
+ }
5741
+ ],
5120
5742
  "parts": [],
5121
5743
  "states": [],
5122
5744
  "dependents": [],
@@ -5124,27 +5746,48 @@
5124
5746
  "dependencyGraph": {}
5125
5747
  },
5126
5748
  {
5127
- "filePath": "src/components/lmvz-select/lmvz-select.tsx",
5749
+ "filePath": "src/components/lmvz-toggle/lmvz-toggle.tsx",
5128
5750
  "encapsulation": "scoped",
5129
- "tag": "lmvz-select",
5130
- "readme": "# lmvz-select\n\n\n",
5131
- "docs": "Select component with floating label and pill-shaped trigger.\nWraps a native `<select>` element for full keyboard and form support.",
5751
+ "tag": "lmvz-toggle",
5752
+ "readme": "# lmvz-toggle\n\n\n",
5753
+ "docs": "Toggle (switch) component. Wraps a native `<input type=\"checkbox\" role=\"switch\">` for full keyboard and form support.",
5132
5754
  "docsTags": [
5133
5755
  {
5134
5756
  "name": "example",
5135
- "text": "```html\n<lmvz-select label=\"Country\" name=\"country\">\n <option value=\"ch\">Switzerland</option>\n <option value=\"de\">Germany</option>\n <option value=\"at\">Austria</option>\n</lmvz-select>\n```"
5136
- },
5137
- {
5138
- "name": "example",
5139
- "text": "```typescript\nconst select = document.querySelector('lmvz-select');\nselect.addEventListener('lmvzChange', (e) => console.log(e.detail));\n```"
5140
- },
5141
- {
5142
- "name": "slot",
5143
- "text": "default - Native `<option>` or `<optgroup>` elements."
5757
+ "text": "```html\n<lmvz-toggle label=\"Enable notifications\" name=\"notifications\" required></lmvz-toggle>\n```"
5144
5758
  }
5145
5759
  ],
5146
5760
  "usage": {},
5147
5761
  "props": [
5762
+ {
5763
+ "name": "checked",
5764
+ "type": "boolean",
5765
+ "complexType": {
5766
+ "original": "boolean",
5767
+ "resolved": "boolean",
5768
+ "references": {}
5769
+ },
5770
+ "mutable": true,
5771
+ "attr": "checked",
5772
+ "reflectToAttr": true,
5773
+ "docs": "Whether the toggle is checked",
5774
+ "docsTags": [
5775
+ {
5776
+ "name": "default",
5777
+ "text": "false"
5778
+ }
5779
+ ],
5780
+ "default": "false",
5781
+ "values": [
5782
+ {
5783
+ "type": "boolean"
5784
+ }
5785
+ ],
5786
+ "optional": false,
5787
+ "required": false,
5788
+ "getter": false,
5789
+ "setter": false
5790
+ },
5148
5791
  {
5149
5792
  "name": "disabled",
5150
5793
  "type": "boolean",
@@ -5156,7 +5799,7 @@
5156
5799
  "mutable": false,
5157
5800
  "attr": "disabled",
5158
5801
  "reflectToAttr": true,
5159
- "docs": "Whether the select is disabled.",
5802
+ "docs": "Whether the toggle is disabled",
5160
5803
  "docsTags": [
5161
5804
  {
5162
5805
  "name": "default",
@@ -5175,7 +5818,7 @@
5175
5818
  "setter": false
5176
5819
  },
5177
5820
  {
5178
- "name": "helperText",
5821
+ "name": "form",
5179
5822
  "type": "string | undefined",
5180
5823
  "complexType": {
5181
5824
  "original": "string",
@@ -5183,9 +5826,9 @@
5183
5826
  "references": {}
5184
5827
  },
5185
5828
  "mutable": false,
5186
- "attr": "helper-text",
5829
+ "attr": "form",
5187
5830
  "reflectToAttr": false,
5188
- "docs": "Helper text displayed below the select field.",
5831
+ "docs": "Form id to associate with",
5189
5832
  "docsTags": [],
5190
5833
  "values": [
5191
5834
  {
@@ -5211,7 +5854,7 @@
5211
5854
  "mutable": false,
5212
5855
  "attr": "label",
5213
5856
  "reflectToAttr": false,
5214
- "docs": "Label text displayed as a placeholder when no value is selected,\nand floated above the trigger when a value is present.",
5857
+ "docs": "Label text for the toggle",
5215
5858
  "docsTags": [],
5216
5859
  "values": [
5217
5860
  {
@@ -5234,7 +5877,7 @@
5234
5877
  "mutable": false,
5235
5878
  "attr": "name",
5236
5879
  "reflectToAttr": false,
5237
- "docs": "Name attribute passed to the native select for form submission.",
5880
+ "docs": "Name attribute for form integration",
5238
5881
  "docsTags": [],
5239
5882
  "values": [
5240
5883
  {
@@ -5260,7 +5903,7 @@
5260
5903
  "mutable": false,
5261
5904
  "attr": "required",
5262
5905
  "reflectToAttr": true,
5263
- "docs": "Whether a value is required.",
5906
+ "docs": "Whether the toggle is required",
5264
5907
  "docsTags": [
5265
5908
  {
5266
5909
  "name": "default",
@@ -5280,56 +5923,169 @@
5280
5923
  },
5281
5924
  {
5282
5925
  "name": "value",
5283
- "type": "string | undefined",
5926
+ "type": "string",
5284
5927
  "complexType": {
5285
5928
  "original": "string",
5286
- "resolved": "string | undefined",
5929
+ "resolved": "string",
5287
5930
  "references": {}
5288
5931
  },
5289
- "mutable": true,
5932
+ "mutable": false,
5290
5933
  "attr": "value",
5291
5934
  "reflectToAttr": false,
5292
- "docs": "Currently selected value.",
5293
- "docsTags": [],
5935
+ "docs": "Value submitted with the form when checked",
5936
+ "docsTags": [
5937
+ {
5938
+ "name": "default",
5939
+ "text": "'on'"
5940
+ }
5941
+ ],
5942
+ "default": "'on'",
5294
5943
  "values": [
5295
5944
  {
5296
5945
  "type": "string"
5297
- },
5298
- {
5299
- "type": "undefined"
5300
5946
  }
5301
5947
  ],
5302
- "optional": true,
5948
+ "optional": false,
5303
5949
  "required": false,
5304
5950
  "getter": false,
5305
5951
  "setter": false
5306
5952
  }
5307
5953
  ],
5308
- "methods": [],
5954
+ "methods": [
5955
+ {
5956
+ "name": "blurToggle",
5957
+ "returns": {
5958
+ "type": "Promise<void>",
5959
+ "docs": ""
5960
+ },
5961
+ "complexType": {
5962
+ "signature": "() => Promise<void>",
5963
+ "parameters": [],
5964
+ "references": {
5965
+ "Promise": {
5966
+ "location": "global",
5967
+ "id": "global::Promise"
5968
+ }
5969
+ },
5970
+ "return": "Promise<void>"
5971
+ },
5972
+ "signature": "blurToggle() => Promise<void>",
5973
+ "parameters": [],
5974
+ "docs": "Removes focus from the toggle",
5975
+ "docsTags": []
5976
+ },
5977
+ {
5978
+ "name": "checkValidity",
5979
+ "returns": {
5980
+ "type": "Promise<boolean>",
5981
+ "docs": ""
5982
+ },
5983
+ "complexType": {
5984
+ "signature": "() => Promise<boolean>",
5985
+ "parameters": [],
5986
+ "references": {
5987
+ "Promise": {
5988
+ "location": "global",
5989
+ "id": "global::Promise"
5990
+ }
5991
+ },
5992
+ "return": "Promise<boolean>"
5993
+ },
5994
+ "signature": "checkValidity() => Promise<boolean>",
5995
+ "parameters": [],
5996
+ "docs": "Returns whether the toggle satisfies its validation constraints",
5997
+ "docsTags": []
5998
+ },
5999
+ {
6000
+ "name": "focusToggle",
6001
+ "returns": {
6002
+ "type": "Promise<void>",
6003
+ "docs": ""
6004
+ },
6005
+ "complexType": {
6006
+ "signature": "() => Promise<void>",
6007
+ "parameters": [],
6008
+ "references": {
6009
+ "Promise": {
6010
+ "location": "global",
6011
+ "id": "global::Promise"
6012
+ }
6013
+ },
6014
+ "return": "Promise<void>"
6015
+ },
6016
+ "signature": "focusToggle() => Promise<void>",
6017
+ "parameters": [],
6018
+ "docs": "Sets focus on the toggle",
6019
+ "docsTags": []
6020
+ },
6021
+ {
6022
+ "name": "getInputElement",
6023
+ "returns": {
6024
+ "type": "Promise<HTMLInputElement | undefined>",
6025
+ "docs": ""
6026
+ },
6027
+ "complexType": {
6028
+ "signature": "() => Promise<HTMLInputElement | undefined>",
6029
+ "parameters": [],
6030
+ "references": {
6031
+ "Promise": {
6032
+ "location": "global",
6033
+ "id": "global::Promise"
6034
+ },
6035
+ "HTMLInputElement": {
6036
+ "location": "global",
6037
+ "id": "global::HTMLInputElement"
6038
+ }
6039
+ },
6040
+ "return": "Promise<HTMLInputElement | undefined>"
6041
+ },
6042
+ "signature": "getInputElement() => Promise<HTMLInputElement | undefined>",
6043
+ "parameters": [],
6044
+ "docs": "Returns the native HTMLInputElement.\n\nPromise resolves when the element is ready and the input is available.",
6045
+ "docsTags": []
6046
+ },
6047
+ {
6048
+ "name": "reportValidity",
6049
+ "returns": {
6050
+ "type": "Promise<boolean>",
6051
+ "docs": ""
6052
+ },
6053
+ "complexType": {
6054
+ "signature": "() => Promise<boolean>",
6055
+ "parameters": [],
6056
+ "references": {
6057
+ "Promise": {
6058
+ "location": "global",
6059
+ "id": "global::Promise"
6060
+ }
6061
+ },
6062
+ "return": "Promise<boolean>"
6063
+ },
6064
+ "signature": "reportValidity() => Promise<boolean>",
6065
+ "parameters": [],
6066
+ "docs": "Reports validation errors to the user",
6067
+ "docsTags": []
6068
+ }
6069
+ ],
5309
6070
  "events": [
5310
6071
  {
5311
6072
  "event": "lmvzChange",
5312
- "detail": "string",
6073
+ "detail": "boolean",
5313
6074
  "bubbles": true,
5314
6075
  "complexType": {
5315
- "original": "string",
5316
- "resolved": "string",
6076
+ "original": "boolean",
6077
+ "resolved": "boolean",
5317
6078
  "references": {}
5318
6079
  },
5319
6080
  "cancelable": true,
5320
6081
  "composed": true,
5321
- "docs": "Emitted when the user selects a new option. Detail contains the new value.",
6082
+ "docs": "Emitted when the toggle is switched. Event detail is the new checked state.",
5322
6083
  "docsTags": []
5323
6084
  }
5324
6085
  ],
5325
6086
  "listeners": [],
5326
6087
  "styles": [],
5327
- "slots": [
5328
- {
5329
- "name": "default",
5330
- "docs": "Native `<option>` or `<optgroup>` elements."
5331
- }
5332
- ],
6088
+ "slots": [],
5333
6089
  "parts": [],
5334
6090
  "states": [],
5335
6091
  "dependents": [],