@lmvz-ds/components 0.19.0 → 0.20.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 (103) hide show
  1. package/CHANGELOG.md +10 -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/loader.cjs.js +1 -1
  18. package/cjs/{logger-Bn2yoZGP.js → logger-DsM6xg6V.js} +3063 -833
  19. package/cjs/{reactive-controller-host-Bi9eu2bV.js → reactive-controller-host-BA4ZhjKA.js} +1 -1
  20. package/cjs/{icons-Tg7ySOh-.js → svg-BMBduILB.js} +31 -85
  21. package/collection/assets/icons/checkmark.svg +4 -0
  22. package/collection/collection-manifest.json +1 -0
  23. package/collection/components/lmvz-button/lmvz-button.css +1 -2
  24. package/collection/components/lmvz-card/lmvz-card.css +1 -2
  25. package/collection/components/lmvz-checkbox/lmvz-checkbox.css +207 -0
  26. package/collection/components/lmvz-checkbox/lmvz-checkbox.js +424 -0
  27. package/collection/components/lmvz-chip/lmvz-chip.js +1 -1
  28. package/collection/components/lmvz-header/lmvz-header.js +1 -1
  29. package/collection/components/lmvz-icon/lmvz-icon.js +5 -5
  30. package/collection/components/lmvz-input/lmvz-input.js +2 -2
  31. package/collection/components/lmvz-menuitem/lmvz-menuitem.css +1 -1
  32. package/collection/components/lmvz-menuitem/lmvz-menuitem.js +1 -1
  33. package/collection/components/lmvz-select/lmvz-select.js +1 -1
  34. package/collection/integration/header-integration/header-integration.js +1 -1
  35. package/collection/utils/icons/icons.js +2 -13
  36. package/collection/utils/icons/icons.unit.js +3 -15
  37. package/components/index.d.ts +2 -0
  38. package/components/index.d.ts.bak +2 -0
  39. package/components/index.js +1 -1
  40. package/components/lmvz-button.js +1 -1
  41. package/components/lmvz-card.js +1 -1
  42. package/components/lmvz-checkbox.d.ts +11 -0
  43. package/components/lmvz-checkbox.d.ts.bak +11 -0
  44. package/components/lmvz-checkbox.js +1 -0
  45. package/components/lmvz-chip.js +1 -1
  46. package/components/lmvz-header.js +1 -1
  47. package/components/lmvz-icon.js +1 -1
  48. package/components/lmvz-input.js +1 -1
  49. package/components/lmvz-menuitem.js +1 -1
  50. package/components/lmvz-select.js +1 -1
  51. package/components/p-0s99QfRy.js +12 -0
  52. package/components/{p-DbeHBSOe.js → p-BuFx0tTm.js} +1 -1
  53. package/components/p-CGmJG63p.js +1 -0
  54. package/components/p-CcxjkCOx.js +1 -0
  55. package/esm/{aria-loader-CES8Ae1e.js → aria-loader-BVolm0lC.js} +1 -1
  56. package/esm/icons-CmuFKDRz.js +75 -0
  57. package/esm/{index-BvxaUA12.js → index-Dh_9sN0q.js} +389 -2478
  58. package/esm/index.js +4 -3
  59. package/esm/lmvz-button.entry.js +3 -3
  60. package/esm/lmvz-card.entry.js +1 -1
  61. package/esm/lmvz-checkbox.entry.js +111 -0
  62. package/esm/lmvz-chip.entry.js +3 -3
  63. package/esm/lmvz-components.js +1 -1
  64. package/esm/lmvz-header_2.entry.js +3 -3
  65. package/esm/lmvz-icon.entry.js +9 -7
  66. package/esm/lmvz-input.entry.js +4 -4
  67. package/esm/lmvz-menuitem.entry.js +4 -4
  68. package/esm/lmvz-select.entry.js +3 -3
  69. package/esm/loader.js +1 -1
  70. package/esm/{logger-0bL3pydp.js → logger-CGmJG63p.js} +2870 -765
  71. package/esm/{reactive-controller-host-J2thAxVH.js → reactive-controller-host-DHcPpJW7.js} +1 -1
  72. package/esm/{icons-Bj4dF1-I.js → svg-B2YoIRuh.js} +29 -80
  73. package/hydrate/index.js +2441 -165
  74. package/hydrate/index.mjs +2441 -165
  75. package/lmvz-components/index.esm.js +1 -1
  76. package/lmvz-components/lmvz-components.esm.js +1 -1
  77. package/lmvz-components/{p-ec96c6b6.entry.js → p-0f7a4236.entry.js} +1 -1
  78. package/lmvz-components/p-0s99QfRy.js +12 -0
  79. package/lmvz-components/p-2f83d7a2.entry.js +1 -0
  80. package/lmvz-components/{p-6e8acbd9.entry.js → p-32171f4f.entry.js} +1 -1
  81. package/lmvz-components/{p-9212bd23.entry.js → p-400b2318.entry.js} +1 -1
  82. package/lmvz-components/{p-9626e951.entry.js → p-851969bd.entry.js} +1 -1
  83. package/lmvz-components/p-9f9d845d.entry.js +1 -0
  84. package/lmvz-components/p-CFsC37ww.js +1 -0
  85. package/lmvz-components/p-CGmJG63p.js +1 -0
  86. package/lmvz-components/p-CcxjkCOx.js +1 -0
  87. package/lmvz-components/{p-BxHnZA0M.js → p-GdMr6Qlp.js} +1 -1
  88. package/lmvz-components/p-a12f95da.entry.js +1 -0
  89. package/lmvz-components/{p-e1b847d2.entry.js → p-ab4437dc.entry.js} +1 -1
  90. package/lmvz-components/{p-7a6bec13.entry.js → p-d0a0e206.entry.js} +1 -1
  91. package/lmvz-components/{p-DYaffOLo.js → p-dhVSUYqd.js} +1 -1
  92. package/manifest.json +410 -1
  93. package/package.json +5 -1
  94. package/types/components/lmvz-checkbox/lmvz-checkbox.d.ts +39 -0
  95. package/types/components.d.ts +151 -0
  96. package/types/utils/icons/icons.d.ts +0 -1
  97. package/components/p-DXOTa5VF.js +0 -12
  98. package/components/p-fiRXhuXK.js +0 -1
  99. package/lmvz-components/p-0bL3pydp.js +0 -1
  100. package/lmvz-components/p-40569208.entry.js +0 -1
  101. package/lmvz-components/p-49ab22bd.entry.js +0 -1
  102. package/lmvz-components/p-Bu4Z_PMf.js +0 -1
  103. 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-20T12:42:52",
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",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lmvz-ds/components",
3
3
  "private": false,
4
- "version": "0.19.0",
4
+ "version": "0.20.0",
5
5
  "type": "module",
6
6
  "description": "The components of the design system",
7
7
  "author": "Patrick Nemenz <patrick.nemenz@adesso.at>",
@@ -67,6 +67,10 @@
67
67
  "./lmvz-select": {
68
68
  "types": "./components/lmvz-select.d.ts",
69
69
  "import": "./components/lmvz-select.js"
70
+ },
71
+ "./lmvz-checkbox": {
72
+ "import": "./components/lmvz-checkbox.js",
73
+ "types": "./components/lmvz-checkbox.d.ts"
70
74
  }
71
75
  },
72
76
  "main": "./index.cjs.js",
@@ -0,0 +1,39 @@
1
+ import { type EventEmitter } from '../../stencil-public-runtime';
2
+ import { type AriaValidationHost } from '../../utils/aria/aria-validation-controller';
3
+ import { ReactiveControllerHost } from '../../utils/reactive-controller-host';
4
+ export declare class LmvzCheckbox extends ReactiveControllerHost implements AriaValidationHost {
5
+ readonly el: HTMLElement;
6
+ get validationEl(): HTMLElement;
7
+ internals: ElementInternals;
8
+ private nativeInput;
9
+ private checkboxId;
10
+ private initialChecked;
11
+ private get helperId();
12
+ private get errorId();
13
+ private get ariaDescribedBy();
14
+ label: string;
15
+ checked: boolean;
16
+ value: string;
17
+ name?: string;
18
+ disabled: boolean;
19
+ required: boolean;
20
+ error: boolean;
21
+ errorMessage?: string;
22
+ helperText?: string;
23
+ form?: string;
24
+ autofocus: boolean;
25
+ private checkedState;
26
+ protected handleCheckedChange(val: boolean): void;
27
+ lmvzChange: EventEmitter<boolean>;
28
+ focusInput(): Promise<void>;
29
+ checkValidity(): Promise<boolean>;
30
+ reportValidity(): Promise<boolean>;
31
+ constructor();
32
+ componentWillLoad(): void;
33
+ componentWillRender(): void;
34
+ formAssociatedCallback(): void;
35
+ formResetCallback(): void;
36
+ formStateRestoreCallback(state: string | File | FormData): void;
37
+ private handleChange;
38
+ render(): any;
39
+ }
@@ -67,6 +67,76 @@ export declare namespace Components {
67
67
  */
68
68
  "primaryActionLabel": string;
69
69
  }
70
+ /**
71
+ * Checkbox component with form association, ARIA validation, and accessible label support.
72
+ * @example ```html
73
+ * <lmvz-checkbox label="Accept terms" name="terms" required></lmvz-checkbox>
74
+ * ```
75
+ */
76
+ export interface LmvzCheckbox {
77
+ /**
78
+ * Whether the checkbox should autofocus.
79
+ * @default false
80
+ */
81
+ "autofocus": boolean;
82
+ /**
83
+ * Returns whether the checkbox satisfies its validation constraints.
84
+ */
85
+ "checkValidity": () => Promise<boolean>;
86
+ /**
87
+ * Whether the checkbox is checked.
88
+ * @default false
89
+ */
90
+ "checked": boolean;
91
+ /**
92
+ * Whether the checkbox is disabled.
93
+ * @default false
94
+ */
95
+ "disabled": boolean;
96
+ /**
97
+ * Whether the checkbox is in an error state.
98
+ * @default false
99
+ */
100
+ "error": boolean;
101
+ /**
102
+ * Error message displayed when error is true. Required when error=true.
103
+ */
104
+ "errorMessage"?: string;
105
+ /**
106
+ * Sets focus on the native checkbox input.
107
+ */
108
+ "focusInput": () => Promise<void>;
109
+ /**
110
+ * Form id to associate with (for out-of-form usage).
111
+ */
112
+ "form"?: string;
113
+ /**
114
+ * Helper / description text displayed below the label.
115
+ */
116
+ "helperText"?: string;
117
+ /**
118
+ * Label text for the checkbox. Required for accessibility.
119
+ */
120
+ "label": string;
121
+ /**
122
+ * Name attribute for form submission via ElementInternals.
123
+ */
124
+ "name"?: string;
125
+ /**
126
+ * Reports validation errors to the user.
127
+ */
128
+ "reportValidity": () => Promise<boolean>;
129
+ /**
130
+ * Whether the checkbox is required.
131
+ * @default false
132
+ */
133
+ "required": boolean;
134
+ /**
135
+ * Form submission value when checked.
136
+ * @default 'on'
137
+ */
138
+ "value": string;
139
+ }
70
140
  /**
71
141
  * The chip displays a compact semantic status as a non-interactive UI element.
72
142
  */
@@ -423,6 +493,68 @@ export declare namespace JSX {
423
493
  */
424
494
  "primaryActionLabel"?: string;
425
495
  }
496
+ /**
497
+ * Checkbox component with form association, ARIA validation, and accessible label support.
498
+ * @example ```html
499
+ * <lmvz-checkbox label="Accept terms" name="terms" required></lmvz-checkbox>
500
+ * ```
501
+ */
502
+ export interface LmvzCheckbox {
503
+ /**
504
+ * Whether the checkbox should autofocus.
505
+ * @default false
506
+ */
507
+ "autofocus"?: boolean;
508
+ /**
509
+ * Whether the checkbox is checked.
510
+ * @default false
511
+ */
512
+ "checked"?: boolean;
513
+ /**
514
+ * Whether the checkbox is disabled.
515
+ * @default false
516
+ */
517
+ "disabled"?: boolean;
518
+ /**
519
+ * Whether the checkbox is in an error state.
520
+ * @default false
521
+ */
522
+ "error"?: boolean;
523
+ /**
524
+ * Error message displayed when error is true. Required when error=true.
525
+ */
526
+ "errorMessage"?: string;
527
+ /**
528
+ * Form id to associate with (for out-of-form usage).
529
+ */
530
+ "form"?: string;
531
+ /**
532
+ * Helper / description text displayed below the label.
533
+ */
534
+ "helperText"?: string;
535
+ /**
536
+ * Label text for the checkbox. Required for accessibility.
537
+ */
538
+ "label": string;
539
+ /**
540
+ * Name attribute for form submission via ElementInternals.
541
+ */
542
+ "name"?: string;
543
+ /**
544
+ * Emitted whenever the checkbox checked state changes. Event detail contains the new checked boolean value.
545
+ */
546
+ "onLmvzChange"?: (event: LmvzCheckboxCustomEvent<boolean>) => void;
547
+ /**
548
+ * Whether the checkbox is required.
549
+ * @default false
550
+ */
551
+ "required"?: boolean;
552
+ /**
553
+ * Form submission value when checked.
554
+ * @default 'on'
555
+ */
556
+ "value"?: string;
557
+ }
426
558
  /**
427
559
  * The chip displays a compact semantic status as a non-interactive UI element.
428
560
  */
@@ -692,6 +824,19 @@ export declare namespace JSX {
692
824
  "description": string;
693
825
  "primaryActionLabel": string;
694
826
  }
827
+ export interface LmvzCheckboxAttributes {
828
+ "label": string;
829
+ "checked": boolean;
830
+ "value": string;
831
+ "name": string;
832
+ "disabled": boolean;
833
+ "required": boolean;
834
+ "error": boolean;
835
+ "errorMessage": string;
836
+ "helperText": string;
837
+ "form": string;
838
+ "autofocus": boolean;
839
+ }
695
840
  export interface LmvzChipAttributes {
696
841
  "type": Chip.Type;
697
842
  "size": Chip.Size;
@@ -750,6 +895,7 @@ export declare namespace JSX {
750
895
  "lmvz-action": LmvzAction;
751
896
  "lmvz-button": Omit<LmvzButton, keyof LmvzButtonAttributes> & { [K in keyof LmvzButton & keyof LmvzButtonAttributes]?: LmvzButton[K] } & { [K in keyof LmvzButton & keyof LmvzButtonAttributes as `attr:${K}`]?: LmvzButtonAttributes[K] } & { [K in keyof LmvzButton & keyof LmvzButtonAttributes as `prop:${K}`]?: LmvzButton[K] };
752
897
  "lmvz-card": Omit<LmvzCard, keyof LmvzCardAttributes> & { [K in keyof LmvzCard & keyof LmvzCardAttributes]?: LmvzCard[K] } & { [K in keyof LmvzCard & keyof LmvzCardAttributes as `attr:${K}`]?: LmvzCardAttributes[K] } & { [K in keyof LmvzCard & keyof LmvzCardAttributes as `prop:${K}`]?: LmvzCard[K] } & OneOf<"cardTitle", LmvzCard["cardTitle"], LmvzCardAttributes["cardTitle"]>;
898
+ "lmvz-checkbox": Omit<LmvzCheckbox, keyof LmvzCheckboxAttributes> & { [K in keyof LmvzCheckbox & keyof LmvzCheckboxAttributes]?: LmvzCheckbox[K] } & { [K in keyof LmvzCheckbox & keyof LmvzCheckboxAttributes as `attr:${K}`]?: LmvzCheckboxAttributes[K] } & { [K in keyof LmvzCheckbox & keyof LmvzCheckboxAttributes as `prop:${K}`]?: LmvzCheckbox[K] } & OneOf<"label", LmvzCheckbox["label"], LmvzCheckboxAttributes["label"]>;
753
899
  "lmvz-chip": Omit<LmvzChip, keyof LmvzChipAttributes> & { [K in keyof LmvzChip & keyof LmvzChipAttributes]?: LmvzChip[K] } & { [K in keyof LmvzChip & keyof LmvzChipAttributes as `attr:${K}`]?: LmvzChipAttributes[K] } & { [K in keyof LmvzChip & keyof LmvzChipAttributes as `prop:${K}`]?: LmvzChip[K] };
754
900
  "lmvz-header": Omit<LmvzHeader, keyof LmvzHeaderAttributes> & { [K in keyof LmvzHeader & keyof LmvzHeaderAttributes]?: LmvzHeader[K] } & { [K in keyof LmvzHeader & keyof LmvzHeaderAttributes as `attr:${K}`]?: LmvzHeaderAttributes[K] } & { [K in keyof LmvzHeader & keyof LmvzHeaderAttributes as `prop:${K}`]?: LmvzHeader[K] };
755
901
  "lmvz-icon": Omit<LmvzIcon, keyof LmvzIconAttributes> & { [K in keyof LmvzIcon & keyof LmvzIconAttributes]?: LmvzIcon[K] } & { [K in keyof LmvzIcon & keyof LmvzIconAttributes as `attr:${K}`]?: LmvzIconAttributes[K] } & { [K in keyof LmvzIcon & keyof LmvzIconAttributes as `prop:${K}`]?: LmvzIcon[K] } & OneOf<"icon", LmvzIcon["icon"], LmvzIconAttributes["icon"]>;
@@ -774,6 +920,11 @@ export declare interface LmvzCardCustomEvent<T> extends CustomEvent<T> {
774
920
  target: HTMLLmvzCardElement;
775
921
  }
776
922
 
923
+ export declare interface LmvzCheckboxCustomEvent<T> extends CustomEvent<T> {
924
+ detail: T;
925
+ target: HTMLLmvzCheckboxElement;
926
+ }
927
+
777
928
  declare namespace LmvzDS {
778
929
  type Variant = (typeof variants)[number];
779
930
  type Size = (typeof sizes)[number];
@@ -1,7 +1,6 @@
1
1
  import type { IconPropsFallback, IconPropsForSet, IconPropsForSetWithoutFallback, KnownIconSetId } from '@lmvz-ds/lib-icon-api';
2
2
  import type { SVGString } from '@lmvz-ds/lib-ts/validation/SVGString.d.ts';
3
3
  export type IconData = SVGString;
4
- export declare const emptyDefaultSvg: () => import("@lmvz-ds/lib-ts/validation/SVGString.js").SVGString;
5
4
  export declare function resolveIconSvg<I extends KnownIconSetId>(options: IconPropsForSet<I>): Promise<IconData>;
6
5
  export declare function resolveIconSvg(options: IconPropsFallback): Promise<IconData>;
7
6
  export declare function typedIconFromSet<S extends string>(iconset: S, icon: IconPropsForSetWithoutFallback<S>['icon']): IconPropsForSetWithoutFallback<S>;