le-kit 0.1.11 → 0.1.12

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 (170) hide show
  1. package/custom-elements.json +1075 -1075
  2. package/dist/{core/cjs/index-D7B9TPh8.js → cjs/index-o1DRKw1g.js} +11 -4
  3. package/dist/cjs/index-o1DRKw1g.js.map +1 -0
  4. package/dist/cjs/index.cjs.js +3 -3
  5. package/dist/cjs/le-box.cjs.entry.js +2 -2
  6. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -1
  7. package/dist/cjs/le-button_6.cjs.entry.js +11 -5
  8. package/dist/cjs/le-card.cjs.entry.js +2 -2
  9. package/dist/cjs/le-kit.cjs.js +1 -1
  10. package/dist/cjs/le-number-input.cjs.entry.js +2 -2
  11. package/dist/cjs/le-popup.cjs.entry.js +1 -1
  12. package/dist/cjs/le-round-progress.cjs.entry.js +1 -1
  13. package/dist/cjs/le-stack.cjs.entry.js +2 -2
  14. package/dist/cjs/le-text.cjs.entry.js +2 -2
  15. package/dist/cjs/le-turntable.cjs.entry.js +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/{core/cjs/utils-DrsoID-a.js → cjs/utils-DqhadIxH.js} +3 -3
  18. package/dist/cjs/{utils-DrsoID-a.js.map → utils-DqhadIxH.js.map} +1 -1
  19. package/dist/collection/assets/custom-elements.json +4305 -0
  20. package/dist/collection/components/le-component/le-component.js +5 -2
  21. package/dist/collection/components/le-component/le-component.js.map +1 -1
  22. package/dist/collection/components/le-slot/le-slot.js +6 -3
  23. package/dist/collection/components/le-slot/le-slot.js.map +1 -1
  24. package/dist/collection/global/app.js +1 -1
  25. package/dist/collection/global/app.js.map +1 -1
  26. package/dist/collection/index.js +1 -1
  27. package/dist/collection/index.js.map +1 -1
  28. package/dist/collection/themes/base.css +89 -0
  29. package/dist/collection/themes/dark.css +100 -0
  30. package/dist/collection/themes/default.css +108 -0
  31. package/dist/collection/themes/gradient.css +100 -0
  32. package/dist/collection/themes/index.css +413 -0
  33. package/dist/collection/themes/minimal.css +100 -0
  34. package/dist/collection/themes/warm.css +100 -0
  35. package/dist/{cjs/index-D7B9TPh8.js → core/cjs/index-BsRb_UTe.js} +4 -4
  36. package/dist/core/cjs/index-BsRb_UTe.js.map +1 -0
  37. package/dist/core/cjs/index.cjs.js +3 -3
  38. package/dist/core/cjs/le-box.cjs.entry.js +2 -2
  39. package/dist/core/cjs/le-button.cjs.entry.js +2 -2
  40. package/dist/core/cjs/le-card.cjs.entry.js +2 -2
  41. package/dist/core/cjs/le-checkbox.cjs.entry.js +2 -2
  42. package/dist/core/cjs/le-kit.cjs.js +1 -1
  43. package/dist/core/cjs/le-number-input.cjs.entry.js +2 -2
  44. package/dist/core/cjs/le-popover.cjs.entry.js +1 -1
  45. package/dist/core/cjs/le-popup.cjs.entry.js +1 -1
  46. package/dist/core/cjs/le-round-progress.cjs.entry.js +1 -1
  47. package/dist/core/cjs/le-stack.cjs.entry.js +2 -2
  48. package/dist/core/cjs/le-string-input.cjs.entry.js +2 -2
  49. package/dist/core/cjs/le-text.cjs.entry.js +2 -2
  50. package/dist/core/cjs/le-turntable.cjs.entry.js +1 -1
  51. package/dist/core/cjs/loader.cjs.js +1 -1
  52. package/dist/{cjs/utils-DrsoID-a.js → core/cjs/utils-nsP8_w8_.js} +3 -3
  53. package/dist/core/cjs/{utils-DrsoID-a.js.map → utils-nsP8_w8_.js.map} +1 -1
  54. package/dist/core/collection/global/app.js +1 -1
  55. package/dist/core/collection/global/app.js.map +1 -1
  56. package/dist/core/collection/index.js +1 -1
  57. package/dist/core/collection/index.js.map +1 -1
  58. package/dist/core/esm/{index-PS-3Rz-c.js → index-CJ-z5Zj1.js} +4 -4
  59. package/dist/core/esm/index-CJ-z5Zj1.js.map +1 -0
  60. package/dist/core/esm/index.js +2 -2
  61. package/dist/core/esm/le-box.entry.js +2 -2
  62. package/dist/core/esm/le-button.entry.js +2 -2
  63. package/dist/core/esm/le-card.entry.js +2 -2
  64. package/dist/core/esm/le-checkbox.entry.js +2 -2
  65. package/dist/core/esm/le-kit.js +2 -2
  66. package/dist/core/esm/le-number-input.entry.js +2 -2
  67. package/dist/core/esm/le-popover.entry.js +1 -1
  68. package/dist/core/esm/le-popup.entry.js +1 -1
  69. package/dist/core/esm/le-round-progress.entry.js +1 -1
  70. package/dist/core/esm/le-stack.entry.js +2 -2
  71. package/dist/core/esm/le-string-input.entry.js +2 -2
  72. package/dist/core/esm/le-text.entry.js +2 -2
  73. package/dist/core/esm/le-turntable.entry.js +1 -1
  74. package/dist/core/esm/loader.js +2 -2
  75. package/dist/core/esm/{utils-lgjSfQP0.js → utils-Bxmld82M.js} +3 -3
  76. package/dist/core/esm/{utils-lgjSfQP0.js.map → utils-Bxmld82M.js.map} +1 -1
  77. package/dist/core/le-kit/index.esm.js +1 -1
  78. package/dist/core/le-kit/le-kit.esm.js +1 -1
  79. package/dist/core/le-kit/{p-a5f1e539.entry.js → p-0308bd1f.entry.js} +2 -2
  80. package/dist/core/le-kit/{p-1c5262eb.entry.js → p-257495cc.entry.js} +2 -2
  81. package/dist/core/le-kit/{p-32c08678.entry.js → p-2ac4789a.entry.js} +2 -2
  82. package/dist/core/le-kit/{p-4bf51acc.entry.js → p-45eace7c.entry.js} +2 -2
  83. package/dist/core/le-kit/{p-fd665f35.entry.js → p-556086ca.entry.js} +2 -2
  84. package/dist/core/le-kit/{p-dcf1343d.entry.js → p-5ef81068.entry.js} +2 -2
  85. package/dist/core/le-kit/{p-a24b042d.entry.js → p-66d35f48.entry.js} +2 -2
  86. package/dist/core/le-kit/{p-4a9a9805.entry.js → p-73682c5e.entry.js} +2 -2
  87. package/dist/{le-kit/p-PS-3Rz-c.js → core/le-kit/p-CJ-z5Zj1.js} +1 -1
  88. package/dist/core/le-kit/p-CJ-z5Zj1.js.map +1 -0
  89. package/dist/core/le-kit/{p-DN2JVY-7.js → p-Drz36PDp.js} +2 -2
  90. package/dist/core/le-kit/{p-DN2JVY-7.js.map → p-Drz36PDp.js.map} +1 -1
  91. package/dist/core/le-kit/{p-bbc9e13e.entry.js → p-aa6e906f.entry.js} +2 -2
  92. package/dist/core/le-kit/{p-38e7ec05.entry.js → p-d75214f9.entry.js} +2 -2
  93. package/dist/core/le-kit/{p-9ee92c29.entry.js → p-df552906.entry.js} +2 -2
  94. package/dist/core/le-kit/{p-c4223c60.entry.js → p-e0861e82.entry.js} +2 -2
  95. package/dist/core/types/global/app.d.ts +1 -1
  96. package/dist/core/types/index.d.ts +1 -1
  97. package/dist/docs.json +1 -1
  98. package/dist/esm/{index-PS-3Rz-c.js → index-CwNQ1GTa.js} +10 -4
  99. package/dist/esm/index-CwNQ1GTa.js.map +1 -0
  100. package/dist/esm/index.js +2 -2
  101. package/dist/esm/le-box.entry.js +2 -2
  102. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -1
  103. package/dist/esm/le-button_6.entry.js +11 -5
  104. package/dist/esm/le-card.entry.js +2 -2
  105. package/dist/esm/le-kit.js +2 -2
  106. package/dist/esm/le-number-input.entry.js +2 -2
  107. package/dist/esm/le-popup.entry.js +1 -1
  108. package/dist/esm/le-round-progress.entry.js +1 -1
  109. package/dist/esm/le-stack.entry.js +2 -2
  110. package/dist/esm/le-text.entry.js +2 -2
  111. package/dist/esm/le-turntable.entry.js +1 -1
  112. package/dist/esm/loader.js +2 -2
  113. package/dist/esm/{utils-lgjSfQP0.js → utils-Cf7fMI0j.js} +3 -3
  114. package/dist/esm/{utils-lgjSfQP0.js.map → utils-Cf7fMI0j.js.map} +1 -1
  115. package/dist/le-kit/assets/custom-elements.json +4305 -0
  116. package/dist/le-kit/index.esm.js +1 -1
  117. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -1
  118. package/dist/le-kit/le-kit.esm.js +1 -1
  119. package/dist/le-kit/{p-935bb2d4.entry.js → p-08dbcc25.entry.js} +2 -2
  120. package/dist/le-kit/{p-d8157b06.entry.js → p-5dc35729.entry.js} +2 -2
  121. package/dist/le-kit/{p-34102cef.entry.js → p-64374730.entry.js} +2 -2
  122. package/dist/le-kit/{p-27710b5b.entry.js → p-79ec6f7c.entry.js} +2 -2
  123. package/dist/le-kit/{p-ccabc638.entry.js → p-8daf3c7f.entry.js} +2 -2
  124. package/dist/le-kit/p-9c69235d.entry.js +2 -0
  125. package/dist/le-kit/p-9c69235d.entry.js.map +1 -0
  126. package/dist/{core/le-kit/p-PS-3Rz-c.js → le-kit/p-CwNQ1GTa.js} +2 -2
  127. package/dist/le-kit/p-CwNQ1GTa.js.map +1 -0
  128. package/dist/le-kit/{p-e8c2ca0e.entry.js → p-ad398acd.entry.js} +2 -2
  129. package/dist/le-kit/{p-9d3dc4e5.entry.js → p-b8122ad6.entry.js} +2 -2
  130. package/dist/le-kit/{p-56a80e6d.entry.js → p-f9008505.entry.js} +2 -2
  131. package/dist/le-kit/{p-DN2JVY-7.js → p-y3FECAx9.js} +2 -2
  132. package/dist/le-kit/{p-DN2JVY-7.js.map → p-y3FECAx9.js.map} +1 -1
  133. package/dist/le-kit/themes/base.css +89 -0
  134. package/dist/le-kit/themes/dark.css +100 -0
  135. package/dist/le-kit/themes/default.css +108 -0
  136. package/dist/le-kit/themes/gradient.css +100 -0
  137. package/dist/le-kit/themes/index.css +413 -0
  138. package/dist/le-kit/themes/minimal.css +100 -0
  139. package/dist/le-kit/themes/warm.css +100 -0
  140. package/dist/types/global/app.d.ts +1 -1
  141. package/dist/types/index.d.ts +1 -1
  142. package/package.json +2 -2
  143. package/dist/cjs/index-D7B9TPh8.js.map +0 -1
  144. package/dist/core/cjs/index-D7B9TPh8.js.map +0 -1
  145. package/dist/core/esm/index-PS-3Rz-c.js.map +0 -1
  146. package/dist/core/le-kit/p-PS-3Rz-c.js.map +0 -1
  147. package/dist/esm/index-PS-3Rz-c.js.map +0 -1
  148. package/dist/le-kit/p-615ea10f.entry.js +0 -2
  149. package/dist/le-kit/p-615ea10f.entry.js.map +0 -1
  150. package/dist/le-kit/p-PS-3Rz-c.js.map +0 -1
  151. /package/dist/core/le-kit/{p-a5f1e539.entry.js.map → p-0308bd1f.entry.js.map} +0 -0
  152. /package/dist/core/le-kit/{p-1c5262eb.entry.js.map → p-257495cc.entry.js.map} +0 -0
  153. /package/dist/core/le-kit/{p-32c08678.entry.js.map → p-2ac4789a.entry.js.map} +0 -0
  154. /package/dist/core/le-kit/{p-4bf51acc.entry.js.map → p-45eace7c.entry.js.map} +0 -0
  155. /package/dist/core/le-kit/{p-fd665f35.entry.js.map → p-556086ca.entry.js.map} +0 -0
  156. /package/dist/core/le-kit/{p-dcf1343d.entry.js.map → p-5ef81068.entry.js.map} +0 -0
  157. /package/dist/core/le-kit/{p-a24b042d.entry.js.map → p-66d35f48.entry.js.map} +0 -0
  158. /package/dist/core/le-kit/{p-4a9a9805.entry.js.map → p-73682c5e.entry.js.map} +0 -0
  159. /package/dist/core/le-kit/{p-bbc9e13e.entry.js.map → p-aa6e906f.entry.js.map} +0 -0
  160. /package/dist/core/le-kit/{p-38e7ec05.entry.js.map → p-d75214f9.entry.js.map} +0 -0
  161. /package/dist/core/le-kit/{p-9ee92c29.entry.js.map → p-df552906.entry.js.map} +0 -0
  162. /package/dist/core/le-kit/{p-c4223c60.entry.js.map → p-e0861e82.entry.js.map} +0 -0
  163. /package/dist/le-kit/{p-935bb2d4.entry.js.map → p-08dbcc25.entry.js.map} +0 -0
  164. /package/dist/le-kit/{p-d8157b06.entry.js.map → p-5dc35729.entry.js.map} +0 -0
  165. /package/dist/le-kit/{p-34102cef.entry.js.map → p-64374730.entry.js.map} +0 -0
  166. /package/dist/le-kit/{p-27710b5b.entry.js.map → p-79ec6f7c.entry.js.map} +0 -0
  167. /package/dist/le-kit/{p-ccabc638.entry.js.map → p-8daf3c7f.entry.js.map} +0 -0
  168. /package/dist/le-kit/{p-e8c2ca0e.entry.js.map → p-ad398acd.entry.js.map} +0 -0
  169. /package/dist/le-kit/{p-9d3dc4e5.entry.js.map → p-b8122ad6.entry.js.map} +0 -0
  170. /package/dist/le-kit/{p-56a80e6d.entry.js.map → p-f9008505.entry.js.map} +0 -0
@@ -743,139 +743,6 @@
743
743
  }
744
744
  ]
745
745
  },
746
- {
747
- "kind": "javascript-module",
748
- "path": "src/components/le-card/le-card.tsx",
749
- "declarations": [
750
- {
751
- "kind": "class",
752
- "description": "A flexible card component with header, content, and footer slots.\n\nThe card uses le-slot wrappers for each slot area. In admin mode,\nle-slot shows placeholders for CMS editing. In default mode,\nle-slot acts as a transparent passthrough.",
753
- "name": "LeCard",
754
- "cssProperties": [
755
- {
756
- "description": "Card background color",
757
- "name": "--le-card-bg"
758
- },
759
- {
760
- "description": "Card border radius",
761
- "name": "--le-card-border-radius"
762
- },
763
- {
764
- "description": "Card box shadow",
765
- "name": "--le-card-shadow"
766
- },
767
- {
768
- "description": "Card content padding",
769
- "name": "--le-card-padding"
770
- }
771
- ],
772
- "cssParts": [
773
- {
774
- "description": "The main card container",
775
- "name": "card"
776
- },
777
- {
778
- "description": "The card header section",
779
- "name": "header"
780
- },
781
- {
782
- "description": "The card content section",
783
- "name": "content"
784
- },
785
- {
786
- "description": "The card footer section",
787
- "name": "footer"
788
- }
789
- ],
790
- "slots": [
791
- {
792
- "description": "Card header content (title, actions)",
793
- "name": "header"
794
- },
795
- {
796
- "description": "Default slot for main card content",
797
- "name": ""
798
- },
799
- {
800
- "description": "Card footer content (buttons, links)",
801
- "name": "footer"
802
- }
803
- ],
804
- "members": [
805
- {
806
- "kind": "field",
807
- "name": "el",
808
- "type": {
809
- "text": "HTMLElement"
810
- }
811
- },
812
- {
813
- "kind": "field",
814
- "name": "variant",
815
- "type": {
816
- "text": "'default' | 'outlined' | 'elevated'"
817
- },
818
- "default": "'default'",
819
- "description": "Card variant style"
820
- },
821
- {
822
- "kind": "field",
823
- "name": "interactive",
824
- "type": {
825
- "text": "boolean"
826
- },
827
- "default": "false",
828
- "description": "Whether the card is interactive (clickable)"
829
- },
830
- {
831
- "kind": "method",
832
- "name": "render"
833
- }
834
- ],
835
- "attributes": [
836
- {
837
- "name": "variant",
838
- "fieldName": "variant",
839
- "default": "'default'",
840
- "description": "Card variant style",
841
- "type": {
842
- "text": "'default' | 'outlined' | 'elevated'"
843
- }
844
- },
845
- {
846
- "name": "interactive",
847
- "fieldName": "interactive",
848
- "default": "false",
849
- "description": "Whether the card is interactive (clickable)",
850
- "type": {
851
- "text": "boolean"
852
- }
853
- }
854
- ],
855
- "tagName": "le-card",
856
- "events": [],
857
- "customElement": true
858
- }
859
- ],
860
- "exports": [
861
- {
862
- "kind": "js",
863
- "name": "LeCard",
864
- "declaration": {
865
- "name": "LeCard",
866
- "module": "src/components/le-card/le-card.tsx"
867
- }
868
- },
869
- {
870
- "kind": "custom-element-definition",
871
- "name": "le-card",
872
- "declaration": {
873
- "name": "LeCard",
874
- "module": "src/components/le-card/le-card.tsx"
875
- }
876
- }
877
- ]
878
- },
879
746
  {
880
747
  "kind": "javascript-module",
881
748
  "path": "src/components/le-component/le-component.tsx",
@@ -1177,38 +1044,60 @@
1177
1044
  },
1178
1045
  {
1179
1046
  "kind": "javascript-module",
1180
- "path": "src/components/le-checkbox/le-checkbox.tsx",
1047
+ "path": "src/components/le-card/le-card.tsx",
1181
1048
  "declarations": [
1182
1049
  {
1183
1050
  "kind": "class",
1184
- "description": "A checkbox component with support for labels, descriptions, and external IDs.",
1185
- "name": "LeCheckbox",
1051
+ "description": "A flexible card component with header, content, and footer slots.\n\nThe card uses le-slot wrappers for each slot area. In admin mode,\nle-slot shows placeholders for CMS editing. In default mode,\nle-slot acts as a transparent passthrough.",
1052
+ "name": "LeCard",
1186
1053
  "cssProperties": [
1187
1054
  {
1188
- "description": "Size of the checkbox input",
1189
- "name": "--le-checkbox-size"
1055
+ "description": "Card background color",
1056
+ "name": "--le-card-bg"
1190
1057
  },
1191
1058
  {
1192
- "description": "Color of the checkbox when checked",
1193
- "name": "--le-checkbox-color"
1059
+ "description": "Card border radius",
1060
+ "name": "--le-card-border-radius"
1194
1061
  },
1195
1062
  {
1196
- "description": "Color of the label text",
1197
- "name": "--le-checkbox-label-color"
1063
+ "description": "Card box shadow",
1064
+ "name": "--le-card-shadow"
1198
1065
  },
1199
1066
  {
1200
- "description": "Color of the description text",
1201
- "name": "--le-checkbox-desc-color"
1067
+ "description": "Card content padding",
1068
+ "name": "--le-card-padding"
1069
+ }
1070
+ ],
1071
+ "cssParts": [
1072
+ {
1073
+ "description": "The main card container",
1074
+ "name": "card"
1075
+ },
1076
+ {
1077
+ "description": "The card header section",
1078
+ "name": "header"
1079
+ },
1080
+ {
1081
+ "description": "The card content section",
1082
+ "name": "content"
1083
+ },
1084
+ {
1085
+ "description": "The card footer section",
1086
+ "name": "footer"
1202
1087
  }
1203
1088
  ],
1204
1089
  "slots": [
1205
1090
  {
1206
- "description": "The label text for the checkbox",
1091
+ "description": "Card header content (title, actions)",
1092
+ "name": "header"
1093
+ },
1094
+ {
1095
+ "description": "Default slot for main card content",
1207
1096
  "name": ""
1208
1097
  },
1209
1098
  {
1210
- "description": "Additional description text displayed below the label",
1211
- "name": "description"
1099
+ "description": "Card footer content (buttons, links)",
1100
+ "name": "footer"
1212
1101
  }
1213
1102
  ],
1214
1103
  "members": [
@@ -1221,50 +1110,21 @@
1221
1110
  },
1222
1111
  {
1223
1112
  "kind": "field",
1224
- "name": "checked",
1113
+ "name": "variant",
1225
1114
  "type": {
1226
- "text": "boolean"
1115
+ "text": "'default' | 'outlined' | 'elevated'"
1227
1116
  },
1228
- "default": "false",
1229
- "description": "Whether the checkbox is checked"
1117
+ "default": "'default'",
1118
+ "description": "Card variant style"
1230
1119
  },
1231
1120
  {
1232
1121
  "kind": "field",
1233
- "name": "disabled",
1122
+ "name": "interactive",
1234
1123
  "type": {
1235
1124
  "text": "boolean"
1236
1125
  },
1237
1126
  "default": "false",
1238
- "description": "Whether the checkbox is disabled"
1239
- },
1240
- {
1241
- "kind": "field",
1242
- "name": "name",
1243
- "type": {
1244
- "text": "string"
1245
- },
1246
- "description": "The name of the checkbox input"
1247
- },
1248
- {
1249
- "kind": "field",
1250
- "name": "value",
1251
- "type": {
1252
- "text": "string"
1253
- },
1254
- "description": "The value of the checkbox input"
1255
- },
1256
- {
1257
- "kind": "field",
1258
- "name": "externalId",
1259
- "type": {
1260
- "text": "string"
1261
- },
1262
- "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)"
1263
- },
1264
- {
1265
- "kind": "field",
1266
- "name": "handleChange",
1267
- "privacy": "private"
1127
+ "description": "Whether the card is interactive (clickable)"
1268
1128
  },
1269
1129
  {
1270
1130
  "kind": "method",
@@ -1273,130 +1133,82 @@
1273
1133
  ],
1274
1134
  "attributes": [
1275
1135
  {
1276
- "name": "checked",
1277
- "fieldName": "checked",
1278
- "default": "false",
1279
- "description": "Whether the checkbox is checked",
1136
+ "name": "variant",
1137
+ "fieldName": "variant",
1138
+ "default": "'default'",
1139
+ "description": "Card variant style",
1280
1140
  "type": {
1281
- "text": "boolean"
1141
+ "text": "'default' | 'outlined' | 'elevated'"
1282
1142
  }
1283
1143
  },
1284
1144
  {
1285
- "name": "disabled",
1286
- "fieldName": "disabled",
1145
+ "name": "interactive",
1146
+ "fieldName": "interactive",
1287
1147
  "default": "false",
1288
- "description": "Whether the checkbox is disabled",
1148
+ "description": "Whether the card is interactive (clickable)",
1289
1149
  "type": {
1290
1150
  "text": "boolean"
1291
1151
  }
1292
- },
1293
- {
1294
- "name": "name",
1295
- "fieldName": "name",
1296
- "description": "The name of the checkbox input",
1297
- "type": {
1298
- "text": "string"
1299
- }
1300
- },
1301
- {
1302
- "name": "value",
1303
- "fieldName": "value",
1304
- "description": "The value of the checkbox input",
1305
- "type": {
1306
- "text": "string"
1307
- }
1308
- },
1309
- {
1310
- "name": "external-id",
1311
- "fieldName": "externalId",
1312
- "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)",
1313
- "type": {
1314
- "text": "string"
1315
- }
1316
- }
1317
- ],
1318
- "tagName": "le-checkbox",
1319
- "events": [
1320
- {
1321
- "name": "change",
1322
- "type": {
1323
- "text": "EventEmitter<{ checked: boolean; value: string; name: string; externalId: string }>"
1324
- },
1325
- "description": "Emitted when the checked state changes"
1326
1152
  }
1327
1153
  ],
1154
+ "tagName": "le-card",
1155
+ "events": [],
1328
1156
  "customElement": true
1329
1157
  }
1330
1158
  ],
1331
1159
  "exports": [
1332
1160
  {
1333
1161
  "kind": "js",
1334
- "name": "LeCheckbox",
1162
+ "name": "LeCard",
1335
1163
  "declaration": {
1336
- "name": "LeCheckbox",
1337
- "module": "src/components/le-checkbox/le-checkbox.tsx"
1164
+ "name": "LeCard",
1165
+ "module": "src/components/le-card/le-card.tsx"
1338
1166
  }
1339
1167
  },
1340
1168
  {
1341
1169
  "kind": "custom-element-definition",
1342
- "name": "le-checkbox",
1170
+ "name": "le-card",
1343
1171
  "declaration": {
1344
- "name": "LeCheckbox",
1345
- "module": "src/components/le-checkbox/le-checkbox.tsx"
1172
+ "name": "LeCard",
1173
+ "module": "src/components/le-card/le-card.tsx"
1346
1174
  }
1347
1175
  }
1348
1176
  ]
1349
1177
  },
1350
1178
  {
1351
1179
  "kind": "javascript-module",
1352
- "path": "src/components/le-number-input/le-number-input.tsx",
1180
+ "path": "src/components/le-checkbox/le-checkbox.tsx",
1353
1181
  "declarations": [
1354
1182
  {
1355
1183
  "kind": "class",
1356
- "description": "A number input component with validation, keyboard controls, and custom spinners.",
1357
- "name": "LeNumberInput",
1184
+ "description": "A checkbox component with support for labels, descriptions, and external IDs.",
1185
+ "name": "LeCheckbox",
1358
1186
  "cssProperties": [
1359
1187
  {
1360
- "description": "Input background color",
1361
- "name": "--le-input-bg"
1362
- },
1363
- {
1364
- "description": "Input text color",
1365
- "name": "--le-input-color"
1366
- },
1367
- {
1368
- "description": "Input border style",
1369
- "name": "--le-input-border"
1370
- },
1371
- {
1372
- "description": "Input border style when focused",
1373
- "name": "--le-input-border-focus"
1188
+ "description": "Size of the checkbox input",
1189
+ "name": "--le-checkbox-size"
1374
1190
  },
1375
1191
  {
1376
- "description": "Input border style when invalid",
1377
- "name": "--le-input-border-error"
1192
+ "description": "Color of the checkbox when checked",
1193
+ "name": "--le-checkbox-color"
1378
1194
  },
1379
1195
  {
1380
- "description": "Input border radius",
1381
- "name": "--le-input-radius"
1196
+ "description": "Color of the label text",
1197
+ "name": "--le-checkbox-label-color"
1382
1198
  },
1383
1199
  {
1384
- "description": "Input padding",
1385
- "name": "--le-input-padding"
1200
+ "description": "Color of the description text",
1201
+ "name": "--le-checkbox-desc-color"
1386
1202
  }
1387
1203
  ],
1388
1204
  "slots": [
1389
1205
  {
1390
- "description": "The label text for the input",
1206
+ "description": "The label text for the checkbox",
1391
1207
  "name": ""
1392
1208
  },
1393
1209
  {
1394
- "description": "Additional description text displayed below the input",
1210
+ "description": "Additional description text displayed below the label",
1395
1211
  "name": "description"
1396
- },
1397
- {
1398
- "description": "Icon to display at the start of the input",
1399
- "name": "icon-start"
1400
1212
  }
1401
1213
  ],
1402
1214
  "members": [
@@ -1409,11 +1221,21 @@
1409
1221
  },
1410
1222
  {
1411
1223
  "kind": "field",
1412
- "name": "value",
1224
+ "name": "checked",
1413
1225
  "type": {
1414
- "text": "number"
1226
+ "text": "boolean"
1415
1227
  },
1416
- "description": "The value of the input"
1228
+ "default": "false",
1229
+ "description": "Whether the checkbox is checked"
1230
+ },
1231
+ {
1232
+ "kind": "field",
1233
+ "name": "disabled",
1234
+ "type": {
1235
+ "text": "boolean"
1236
+ },
1237
+ "default": "false",
1238
+ "description": "Whether the checkbox is disabled"
1417
1239
  },
1418
1240
  {
1419
1241
  "kind": "field",
@@ -1421,180 +1243,352 @@
1421
1243
  "type": {
1422
1244
  "text": "string"
1423
1245
  },
1424
- "description": "The name of the input"
1246
+ "description": "The name of the checkbox input"
1425
1247
  },
1426
1248
  {
1427
1249
  "kind": "field",
1428
- "name": "label",
1250
+ "name": "value",
1429
1251
  "type": {
1430
1252
  "text": "string"
1431
1253
  },
1432
- "description": "Label for the input"
1254
+ "description": "The value of the checkbox input"
1433
1255
  },
1434
1256
  {
1435
1257
  "kind": "field",
1436
- "name": "placeholder",
1258
+ "name": "externalId",
1437
1259
  "type": {
1438
1260
  "text": "string"
1439
1261
  },
1440
- "description": "Placeholder text"
1262
+ "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)"
1441
1263
  },
1442
1264
  {
1443
1265
  "kind": "field",
1444
- "name": "min",
1266
+ "name": "handleChange",
1267
+ "privacy": "private"
1268
+ },
1269
+ {
1270
+ "kind": "method",
1271
+ "name": "render"
1272
+ }
1273
+ ],
1274
+ "attributes": [
1275
+ {
1276
+ "name": "checked",
1277
+ "fieldName": "checked",
1278
+ "default": "false",
1279
+ "description": "Whether the checkbox is checked",
1445
1280
  "type": {
1446
- "text": "number | undefined"
1281
+ "text": "boolean"
1282
+ }
1283
+ },
1284
+ {
1285
+ "name": "disabled",
1286
+ "fieldName": "disabled",
1287
+ "default": "false",
1288
+ "description": "Whether the checkbox is disabled",
1289
+ "type": {
1290
+ "text": "boolean"
1291
+ }
1292
+ },
1293
+ {
1294
+ "name": "name",
1295
+ "fieldName": "name",
1296
+ "description": "The name of the checkbox input",
1297
+ "type": {
1298
+ "text": "string"
1299
+ }
1300
+ },
1301
+ {
1302
+ "name": "value",
1303
+ "fieldName": "value",
1304
+ "description": "The value of the checkbox input",
1305
+ "type": {
1306
+ "text": "string"
1307
+ }
1308
+ },
1309
+ {
1310
+ "name": "external-id",
1311
+ "fieldName": "externalId",
1312
+ "description": "External ID for linking with external systems (e.g. database ID, PDF form field ID)",
1313
+ "type": {
1314
+ "text": "string"
1315
+ }
1316
+ }
1317
+ ],
1318
+ "tagName": "le-checkbox",
1319
+ "events": [
1320
+ {
1321
+ "name": "change",
1322
+ "type": {
1323
+ "text": "EventEmitter<{ checked: boolean; value: string; name: string; externalId: string }>"
1447
1324
  },
1448
- "description": "Minimum allowed value"
1325
+ "description": "Emitted when the checked state changes"
1326
+ }
1327
+ ],
1328
+ "customElement": true
1329
+ }
1330
+ ],
1331
+ "exports": [
1332
+ {
1333
+ "kind": "js",
1334
+ "name": "LeCheckbox",
1335
+ "declaration": {
1336
+ "name": "LeCheckbox",
1337
+ "module": "src/components/le-checkbox/le-checkbox.tsx"
1338
+ }
1339
+ },
1340
+ {
1341
+ "kind": "custom-element-definition",
1342
+ "name": "le-checkbox",
1343
+ "declaration": {
1344
+ "name": "LeCheckbox",
1345
+ "module": "src/components/le-checkbox/le-checkbox.tsx"
1346
+ }
1347
+ }
1348
+ ]
1349
+ },
1350
+ {
1351
+ "kind": "javascript-module",
1352
+ "path": "src/components/le-popover/le-popover.tsx",
1353
+ "declarations": [
1354
+ {
1355
+ "kind": "class",
1356
+ "description": "A popover component for displaying floating content.\n\nUses the native HTML Popover API for proper layering with dialogs\nand other top-layer elements. Falls back gracefully in older browsers.",
1357
+ "name": "LePopover",
1358
+ "slots": [
1359
+ {
1360
+ "description": "Content to display inside the popover",
1361
+ "name": ""
1449
1362
  },
1363
+ {
1364
+ "description": "Element that triggers the popover (optional)",
1365
+ "name": "trigger"
1366
+ }
1367
+ ],
1368
+ "members": [
1450
1369
  {
1451
1370
  "kind": "field",
1452
- "name": "max",
1371
+ "name": "el",
1453
1372
  "type": {
1454
- "text": "number | undefined"
1455
- },
1456
- "description": "Maximum allowed value"
1373
+ "text": "HTMLElement"
1374
+ }
1457
1375
  },
1458
1376
  {
1459
1377
  "kind": "field",
1460
- "name": "step",
1378
+ "name": "mode",
1461
1379
  "type": {
1462
- "text": "number"
1380
+ "text": "'default' | 'admin'"
1463
1381
  },
1464
- "default": "1",
1465
- "description": "Step value for increment/decrement"
1382
+ "description": "Mode of the popover should be 'default' for internal use"
1466
1383
  },
1467
1384
  {
1468
1385
  "kind": "field",
1469
- "name": "required",
1386
+ "name": "open",
1470
1387
  "type": {
1471
1388
  "text": "boolean"
1472
1389
  },
1473
1390
  "default": "false",
1474
- "description": "Whether the input is required"
1391
+ "description": "Whether the popover is currently open"
1475
1392
  },
1476
1393
  {
1477
1394
  "kind": "field",
1478
- "name": "disabled",
1395
+ "name": "position",
1479
1396
  "type": {
1480
- "text": "boolean"
1397
+ "text": "'top' | 'bottom' | 'left' | 'right' | 'auto'"
1481
1398
  },
1482
- "default": "false",
1483
- "description": "Whether the input is disabled"
1399
+ "default": "'bottom'",
1400
+ "description": "Position of the popover relative to its trigger"
1484
1401
  },
1485
1402
  {
1486
1403
  "kind": "field",
1487
- "name": "readonly",
1404
+ "name": "align",
1488
1405
  "type": {
1489
- "text": "boolean"
1406
+ "text": "'start' | 'center' | 'end'"
1490
1407
  },
1491
- "default": "false",
1492
- "description": "Whether the input is read-only"
1408
+ "default": "'start'",
1409
+ "description": "Alignment of the popover"
1493
1410
  },
1494
1411
  {
1495
1412
  "kind": "field",
1496
- "name": "iconStart",
1413
+ "name": "popoverTitle",
1497
1414
  "type": {
1498
1415
  "text": "string | undefined"
1499
1416
  },
1500
- "description": "Icon for the start icon"
1417
+ "description": "Optional title for the popover header"
1501
1418
  },
1502
1419
  {
1503
1420
  "kind": "field",
1504
- "name": "showSpinners",
1421
+ "name": "showClose",
1505
1422
  "type": {
1506
1423
  "text": "boolean"
1507
1424
  },
1508
1425
  "default": "true",
1509
- "description": "Whether to show the spinner controls"
1426
+ "description": "Whether to show a close button in the header"
1510
1427
  },
1511
1428
  {
1512
1429
  "kind": "field",
1513
- "name": "externalId",
1430
+ "name": "closeOnClickOutside",
1514
1431
  "type": {
1515
- "text": "string"
1432
+ "text": "boolean"
1516
1433
  },
1517
- "description": "External ID for linking with external systems"
1434
+ "default": "true",
1435
+ "description": "Whether clicking outside closes the popover"
1518
1436
  },
1519
1437
  {
1520
1438
  "kind": "field",
1521
- "name": "isValid",
1439
+ "name": "closeOnEscape",
1522
1440
  "type": {
1523
1441
  "text": "boolean"
1524
1442
  },
1525
- "privacy": "private",
1526
1443
  "default": "true",
1527
- "description": "Internal validation state"
1444
+ "description": "Whether pressing Escape closes the popover"
1528
1445
  },
1529
1446
  {
1530
1447
  "kind": "field",
1531
- "name": "validationMessage",
1448
+ "name": "offset",
1532
1449
  "type": {
1533
- "text": "string"
1450
+ "text": "number"
1534
1451
  },
1535
- "privacy": "private",
1536
- "default": "''"
1452
+ "default": "8",
1453
+ "description": "Offset from the trigger element (in pixels)"
1537
1454
  },
1538
1455
  {
1539
- "kind": "method",
1540
- "name": "valueChanged"
1456
+ "kind": "field",
1457
+ "name": "width",
1458
+ "type": {
1459
+ "text": "string | undefined"
1460
+ },
1461
+ "description": "Fixed width for the popover (e.g., '300px', '20rem')"
1541
1462
  },
1542
1463
  {
1543
- "kind": "method",
1544
- "name": "validate",
1545
- "privacy": "private"
1464
+ "kind": "field",
1465
+ "name": "minWidth",
1466
+ "type": {
1467
+ "text": "string | undefined"
1468
+ },
1469
+ "default": "'200px'",
1470
+ "description": "Minimum width for the popover (e.g., '200px', '15rem')"
1546
1471
  },
1547
1472
  {
1548
- "kind": "method",
1549
- "name": "emitChange",
1473
+ "kind": "field",
1474
+ "name": "maxWidth",
1475
+ "type": {
1476
+ "text": "string | undefined"
1477
+ },
1478
+ "description": "Maximum width for the popover (e.g., '400px', '25rem')"
1479
+ },
1480
+ {
1481
+ "kind": "field",
1482
+ "name": "isPositioned",
1483
+ "type": {
1484
+ "text": "boolean"
1485
+ },
1486
+ "privacy": "private",
1487
+ "default": "false"
1488
+ },
1489
+ {
1490
+ "kind": "field",
1491
+ "name": "triggerEl",
1492
+ "type": {
1493
+ "text": "HTMLElement | undefined"
1494
+ },
1550
1495
  "privacy": "private"
1551
1496
  },
1552
1497
  {
1553
- "kind": "method",
1554
- "name": "emitInput",
1498
+ "kind": "field",
1499
+ "name": "popoverEl",
1500
+ "type": {
1501
+ "text": "HTMLElement | undefined"
1502
+ },
1555
1503
  "privacy": "private"
1556
1504
  },
1505
+ {
1506
+ "kind": "field",
1507
+ "name": "uniqueId",
1508
+ "type": {
1509
+ "text": "string"
1510
+ },
1511
+ "privacy": "private",
1512
+ "default": "`le-popover-${Math.random().toString(36).substr(2, 9)}`"
1513
+ },
1514
+ {
1515
+ "kind": "field",
1516
+ "name": "scrollParents",
1517
+ "type": {
1518
+ "text": "Element[]"
1519
+ },
1520
+ "privacy": "private",
1521
+ "default": "[]"
1522
+ },
1557
1523
  {
1558
1524
  "kind": "method",
1559
- "name": "updateValue",
1525
+ "name": "getScrollParents",
1560
1526
  "privacy": "private",
1527
+ "return": {
1528
+ "type": {
1529
+ "text": "Element[]"
1530
+ }
1531
+ },
1561
1532
  "parameters": [
1562
1533
  {
1563
- "name": "newValue",
1534
+ "name": "element",
1564
1535
  "type": {
1565
- "text": "number"
1536
+ "text": "Element"
1566
1537
  }
1567
1538
  }
1568
- ]
1539
+ ],
1540
+ "description": "Find all scrollable parent elements"
1569
1541
  },
1570
1542
  {
1571
- "kind": "field",
1572
- "name": "handleInput",
1573
- "privacy": "private"
1543
+ "kind": "method",
1544
+ "name": "addScrollListeners",
1545
+ "privacy": "private",
1546
+ "description": "Add scroll listeners to all scrollable parents"
1547
+ },
1548
+ {
1549
+ "kind": "method",
1550
+ "name": "removeScrollListeners",
1551
+ "privacy": "private",
1552
+ "description": "Remove scroll listeners"
1574
1553
  },
1575
1554
  {
1576
1555
  "kind": "field",
1577
- "name": "handleChange",
1556
+ "name": "handleScroll",
1578
1557
  "privacy": "private"
1579
1558
  },
1580
1559
  {
1581
1560
  "kind": "field",
1582
- "name": "handleKeyDown",
1561
+ "name": "handlePopoverToggle",
1583
1562
  "privacy": "private"
1584
1563
  },
1585
1564
  {
1586
1565
  "kind": "field",
1587
- "name": "handleWheel",
1566
+ "name": "handleOtherPopoverOpen",
1588
1567
  "privacy": "private"
1589
1568
  },
1569
+ {
1570
+ "kind": "method",
1571
+ "name": "show",
1572
+ "description": "Opens the popover"
1573
+ },
1574
+ {
1575
+ "kind": "method",
1576
+ "name": "hide",
1577
+ "description": "Closes the popover"
1578
+ },
1579
+ {
1580
+ "kind": "method",
1581
+ "name": "toggle",
1582
+ "description": "Toggles the popover"
1583
+ },
1590
1584
  {
1591
1585
  "kind": "field",
1592
- "name": "increment",
1586
+ "name": "handleTriggerClick",
1593
1587
  "privacy": "private"
1594
1588
  },
1595
1589
  {
1596
- "kind": "field",
1597
- "name": "decrement",
1590
+ "kind": "method",
1591
+ "name": "updatePosition",
1598
1592
  "privacy": "private"
1599
1593
  },
1600
1594
  {
@@ -1604,130 +1598,125 @@
1604
1598
  ],
1605
1599
  "attributes": [
1606
1600
  {
1607
- "name": "value",
1608
- "fieldName": "value",
1609
- "description": "The value of the input",
1610
- "type": {
1611
- "text": "number"
1612
- }
1613
- },
1614
- {
1615
- "name": "name",
1616
- "fieldName": "name",
1617
- "description": "The name of the input",
1601
+ "name": "mode",
1602
+ "fieldName": "mode",
1603
+ "description": "Mode of the popover should be 'default' for internal use",
1618
1604
  "type": {
1619
- "text": "string"
1605
+ "text": "'default' | 'admin'"
1620
1606
  }
1621
1607
  },
1622
1608
  {
1623
- "name": "label",
1624
- "fieldName": "label",
1625
- "description": "Label for the input",
1609
+ "name": "open",
1610
+ "fieldName": "open",
1611
+ "default": "false",
1612
+ "description": "Whether the popover is currently open",
1626
1613
  "type": {
1627
- "text": "string"
1614
+ "text": "boolean"
1628
1615
  }
1629
1616
  },
1630
1617
  {
1631
- "name": "placeholder",
1632
- "fieldName": "placeholder",
1633
- "description": "Placeholder text",
1618
+ "name": "position",
1619
+ "fieldName": "position",
1620
+ "default": "'bottom'",
1621
+ "description": "Position of the popover relative to its trigger",
1634
1622
  "type": {
1635
- "text": "string"
1623
+ "text": "'top' | 'bottom' | 'left' | 'right' | 'auto'"
1636
1624
  }
1637
1625
  },
1638
1626
  {
1639
- "name": "min",
1640
- "fieldName": "min",
1641
- "description": "Minimum allowed value",
1627
+ "name": "align",
1628
+ "fieldName": "align",
1629
+ "default": "'start'",
1630
+ "description": "Alignment of the popover",
1642
1631
  "type": {
1643
- "text": "number"
1632
+ "text": "'start' | 'center' | 'end'"
1644
1633
  }
1645
1634
  },
1646
1635
  {
1647
- "name": "max",
1648
- "fieldName": "max",
1649
- "description": "Maximum allowed value",
1636
+ "name": "popover-title",
1637
+ "fieldName": "popoverTitle",
1638
+ "description": "Optional title for the popover header",
1650
1639
  "type": {
1651
- "text": "number"
1640
+ "text": "string"
1652
1641
  }
1653
1642
  },
1654
1643
  {
1655
- "name": "step",
1656
- "fieldName": "step",
1657
- "default": "1",
1658
- "description": "Step value for increment/decrement",
1644
+ "name": "show-close",
1645
+ "fieldName": "showClose",
1646
+ "default": "true",
1647
+ "description": "Whether to show a close button in the header",
1659
1648
  "type": {
1660
- "text": "number"
1649
+ "text": "boolean"
1661
1650
  }
1662
1651
  },
1663
1652
  {
1664
- "name": "required",
1665
- "fieldName": "required",
1666
- "default": "false",
1667
- "description": "Whether the input is required",
1653
+ "name": "close-on-click-outside",
1654
+ "fieldName": "closeOnClickOutside",
1655
+ "default": "true",
1656
+ "description": "Whether clicking outside closes the popover",
1668
1657
  "type": {
1669
1658
  "text": "boolean"
1670
1659
  }
1671
1660
  },
1672
1661
  {
1673
- "name": "disabled",
1674
- "fieldName": "disabled",
1675
- "default": "false",
1676
- "description": "Whether the input is disabled",
1662
+ "name": "close-on-escape",
1663
+ "fieldName": "closeOnEscape",
1664
+ "default": "true",
1665
+ "description": "Whether pressing Escape closes the popover",
1677
1666
  "type": {
1678
1667
  "text": "boolean"
1679
1668
  }
1680
1669
  },
1681
1670
  {
1682
- "name": "readonly",
1683
- "fieldName": "readonly",
1684
- "default": "false",
1685
- "description": "Whether the input is read-only",
1671
+ "name": "offset",
1672
+ "fieldName": "offset",
1673
+ "default": "8",
1674
+ "description": "Offset from the trigger element (in pixels)",
1686
1675
  "type": {
1687
- "text": "boolean"
1676
+ "text": "number"
1688
1677
  }
1689
1678
  },
1690
1679
  {
1691
- "name": "icon-start",
1692
- "fieldName": "iconStart",
1693
- "description": "Icon for the start icon",
1680
+ "name": "width",
1681
+ "fieldName": "width",
1682
+ "description": "Fixed width for the popover (e.g., '300px', '20rem')",
1694
1683
  "type": {
1695
1684
  "text": "string"
1696
1685
  }
1697
1686
  },
1698
1687
  {
1699
- "name": "show-spinners",
1700
- "fieldName": "showSpinners",
1701
- "default": "true",
1702
- "description": "Whether to show the spinner controls",
1688
+ "name": "min-width",
1689
+ "fieldName": "minWidth",
1690
+ "default": "'200px'",
1691
+ "description": "Minimum width for the popover (e.g., '200px', '15rem')",
1703
1692
  "type": {
1704
- "text": "boolean"
1693
+ "text": "string"
1705
1694
  }
1706
1695
  },
1707
1696
  {
1708
- "name": "external-id",
1709
- "fieldName": "externalId",
1710
- "description": "External ID for linking with external systems",
1697
+ "name": "max-width",
1698
+ "fieldName": "maxWidth",
1699
+ "description": "Maximum width for the popover (e.g., '400px', '25rem')",
1711
1700
  "type": {
1712
1701
  "text": "string"
1713
1702
  }
1714
1703
  }
1715
1704
  ],
1716
- "tagName": "le-number-input",
1705
+ "tagName": "le-popover",
1717
1706
  "events": [
1718
1707
  {
1719
- "name": "leChange",
1708
+ "name": "lePopoverOpen",
1720
1709
  "type": {
1721
- "text": "EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>"
1710
+ "text": "EventEmitter<void>"
1722
1711
  },
1723
- "description": "Emitted when the value changes (on blur or Enter)"
1712
+ "description": "Emitted when the popover opens"
1724
1713
  },
1725
1714
  {
1726
- "name": "leInput",
1715
+ "name": "lePopoverClose",
1727
1716
  "type": {
1728
- "text": "EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>"
1717
+ "text": "EventEmitter<void>"
1729
1718
  },
1730
- "description": "Emitted when the input value changes (on keystroke/spin)"
1719
+ "description": "Emitted when the popover closes"
1731
1720
  }
1732
1721
  ],
1733
1722
  "customElement": true
@@ -1736,18 +1725,183 @@
1736
1725
  "exports": [
1737
1726
  {
1738
1727
  "kind": "js",
1739
- "name": "LeNumberInput",
1728
+ "name": "LePopover",
1740
1729
  "declaration": {
1741
- "name": "LeNumberInput",
1742
- "module": "src/components/le-number-input/le-number-input.tsx"
1730
+ "name": "LePopover",
1731
+ "module": "src/components/le-popover/le-popover.tsx"
1743
1732
  }
1744
1733
  },
1745
1734
  {
1746
1735
  "kind": "custom-element-definition",
1747
- "name": "le-number-input",
1736
+ "name": "le-popover",
1748
1737
  "declaration": {
1749
- "name": "LeNumberInput",
1750
- "module": "src/components/le-number-input/le-number-input.tsx"
1738
+ "name": "LePopover",
1739
+ "module": "src/components/le-popover/le-popover.tsx"
1740
+ }
1741
+ }
1742
+ ]
1743
+ },
1744
+ {
1745
+ "kind": "javascript-module",
1746
+ "path": "src/components/le-round-progress/le-round-progress.tsx",
1747
+ "declarations": [
1748
+ {
1749
+ "kind": "class",
1750
+ "description": "",
1751
+ "name": "LeRoundProgress",
1752
+ "members": [
1753
+ {
1754
+ "kind": "field",
1755
+ "name": "el",
1756
+ "type": {
1757
+ "text": "HTMLElement"
1758
+ }
1759
+ },
1760
+ {
1761
+ "kind": "field",
1762
+ "name": "value",
1763
+ "type": {
1764
+ "text": "number"
1765
+ },
1766
+ "default": "0"
1767
+ },
1768
+ {
1769
+ "kind": "method",
1770
+ "name": "updateValue",
1771
+ "parameters": [
1772
+ {
1773
+ "name": "newValue",
1774
+ "type": {
1775
+ "text": "string"
1776
+ }
1777
+ }
1778
+ ]
1779
+ },
1780
+ {
1781
+ "kind": "field",
1782
+ "name": "padding",
1783
+ "type": {
1784
+ "text": "number"
1785
+ },
1786
+ "default": "0"
1787
+ },
1788
+ {
1789
+ "kind": "method",
1790
+ "name": "updatePadding",
1791
+ "parameters": [
1792
+ {
1793
+ "name": "newValue",
1794
+ "type": {
1795
+ "text": "string"
1796
+ }
1797
+ }
1798
+ ]
1799
+ },
1800
+ {
1801
+ "kind": "field",
1802
+ "name": "paths",
1803
+ "type": {
1804
+ "text": "string"
1805
+ }
1806
+ },
1807
+ {
1808
+ "kind": "method",
1809
+ "name": "updateProgressBackgrounds",
1810
+ "parameters": [
1811
+ {
1812
+ "name": "newValue",
1813
+ "type": {
1814
+ "text": "string"
1815
+ }
1816
+ }
1817
+ ]
1818
+ },
1819
+ {
1820
+ "kind": "field",
1821
+ "name": "progressPaths",
1822
+ "type": {
1823
+ "text": "any[]"
1824
+ }
1825
+ },
1826
+ {
1827
+ "kind": "field",
1828
+ "name": "params",
1829
+ "type": {
1830
+ "text": "{\n width: number;\n diameter: number;\n circumference: number;\n }"
1831
+ }
1832
+ },
1833
+ {
1834
+ "kind": "method",
1835
+ "name": "calcParams"
1836
+ },
1837
+ {
1838
+ "kind": "method",
1839
+ "name": "getViewBox",
1840
+ "description": "Returns the viewPath attribute value for the SVG\nbased on the width of the parent element"
1841
+ },
1842
+ {
1843
+ "kind": "method",
1844
+ "name": "getPath",
1845
+ "description": "Returns the circular path for the progress stroke\nand additional paths in the background"
1846
+ },
1847
+ {
1848
+ "kind": "method",
1849
+ "name": "getStrokeDashArray"
1850
+ },
1851
+ {
1852
+ "kind": "method",
1853
+ "name": "getPaths"
1854
+ },
1855
+ {
1856
+ "kind": "method",
1857
+ "name": "render"
1858
+ }
1859
+ ],
1860
+ "attributes": [
1861
+ {
1862
+ "name": "value",
1863
+ "fieldName": "value",
1864
+ "default": "0",
1865
+ "type": {
1866
+ "text": "number"
1867
+ }
1868
+ },
1869
+ {
1870
+ "name": "padding",
1871
+ "fieldName": "padding",
1872
+ "default": "0",
1873
+ "type": {
1874
+ "text": "number"
1875
+ }
1876
+ },
1877
+ {
1878
+ "name": "paths",
1879
+ "fieldName": "paths",
1880
+ "type": {
1881
+ "text": "string"
1882
+ }
1883
+ }
1884
+ ],
1885
+ "tagName": "le-round-progress",
1886
+ "events": [],
1887
+ "customElement": true
1888
+ }
1889
+ ],
1890
+ "exports": [
1891
+ {
1892
+ "kind": "js",
1893
+ "name": "LeRoundProgress",
1894
+ "declaration": {
1895
+ "name": "LeRoundProgress",
1896
+ "module": "src/components/le-round-progress/le-round-progress.tsx"
1897
+ }
1898
+ },
1899
+ {
1900
+ "kind": "custom-element-definition",
1901
+ "name": "le-round-progress",
1902
+ "declaration": {
1903
+ "name": "LeRoundProgress",
1904
+ "module": "src/components/le-round-progress/le-round-progress.tsx"
1751
1905
  }
1752
1906
  }
1753
1907
  ]
@@ -2158,16 +2312,54 @@
2158
2312
  },
2159
2313
  {
2160
2314
  "kind": "javascript-module",
2161
- "path": "src/components/le-slot/le-slot.tsx",
2315
+ "path": "src/components/le-number-input/le-number-input.tsx",
2162
2316
  "declarations": [
2163
2317
  {
2164
2318
  "kind": "class",
2165
- "description": "Slot placeholder component for admin/CMS mode.\n\nThis component renders a visual placeholder for slots when in admin mode,\nallowing CMS systems to show available drop zones for content or inline editing.\n\nIn non-admin mode, this component renders nothing and acts as a passthrough.",
2166
- "name": "LeSlot",
2319
+ "description": "A number input component with validation, keyboard controls, and custom spinners.",
2320
+ "name": "LeNumberInput",
2321
+ "cssProperties": [
2322
+ {
2323
+ "description": "Input background color",
2324
+ "name": "--le-input-bg"
2325
+ },
2326
+ {
2327
+ "description": "Input text color",
2328
+ "name": "--le-input-color"
2329
+ },
2330
+ {
2331
+ "description": "Input border style",
2332
+ "name": "--le-input-border"
2333
+ },
2334
+ {
2335
+ "description": "Input border style when focused",
2336
+ "name": "--le-input-border-focus"
2337
+ },
2338
+ {
2339
+ "description": "Input border style when invalid",
2340
+ "name": "--le-input-border-error"
2341
+ },
2342
+ {
2343
+ "description": "Input border radius",
2344
+ "name": "--le-input-radius"
2345
+ },
2346
+ {
2347
+ "description": "Input padding",
2348
+ "name": "--le-input-padding"
2349
+ }
2350
+ ],
2167
2351
  "slots": [
2168
2352
  {
2169
- "description": "Default slot for placeholder content or drop zone UI",
2353
+ "description": "The label text for the input",
2170
2354
  "name": ""
2355
+ },
2356
+ {
2357
+ "description": "Additional description text displayed below the input",
2358
+ "name": "description"
2359
+ },
2360
+ {
2361
+ "description": "Icon to display at the start of the input",
2362
+ "name": "icon-start"
2171
2363
  }
2172
2364
  ],
2173
2365
  "members": [
@@ -2180,12 +2372,11 @@
2180
2372
  },
2181
2373
  {
2182
2374
  "kind": "field",
2183
- "name": "type",
2375
+ "name": "value",
2184
2376
  "type": {
2185
- "text": "'slot' | 'text' | 'textarea'"
2377
+ "text": "number"
2186
2378
  },
2187
- "default": "'slot'",
2188
- "description": "The type of slot content.\n- `slot`: Default, shows a dropzone for components (default)\n- `text`: Shows a single-line text input\n- `textarea`: Shows a multi-line text area"
2379
+ "description": "The value of the input"
2189
2380
  },
2190
2381
  {
2191
2382
  "kind": "field",
@@ -2193,267 +2384,200 @@
2193
2384
  "type": {
2194
2385
  "text": "string"
2195
2386
  },
2196
- "default": "''",
2197
- "description": "The name of the slot this placeholder represents.\nShould match the slot name in the parent component."
2387
+ "description": "The name of the input"
2198
2388
  },
2199
2389
  {
2200
2390
  "kind": "field",
2201
2391
  "name": "label",
2202
2392
  "type": {
2203
- "text": "string | undefined"
2393
+ "text": "string"
2204
2394
  },
2205
- "description": "Label to display in admin mode.\nIf not provided, the slot name will be used."
2395
+ "description": "Label for the input"
2206
2396
  },
2207
2397
  {
2208
2398
  "kind": "field",
2209
- "name": "description",
2399
+ "name": "placeholder",
2210
2400
  "type": {
2211
- "text": "string | undefined"
2401
+ "text": "string"
2212
2402
  },
2213
- "description": "Description of what content this slot accepts.\nShown in admin mode to guide content editors."
2403
+ "description": "Placeholder text"
2214
2404
  },
2215
2405
  {
2216
2406
  "kind": "field",
2217
- "name": "allowedComponents",
2407
+ "name": "min",
2218
2408
  "type": {
2219
- "text": "string | undefined"
2409
+ "text": "number | undefined"
2220
2410
  },
2221
- "description": "Comma-separated list of allowed component tags for this slot.\nUsed by CMS to filter available components."
2411
+ "description": "Minimum allowed value"
2222
2412
  },
2223
2413
  {
2224
2414
  "kind": "field",
2225
- "name": "multiple",
2415
+ "name": "max",
2226
2416
  "type": {
2227
- "text": "boolean"
2417
+ "text": "number | undefined"
2228
2418
  },
2229
- "default": "true",
2230
- "description": "Whether multiple components can be dropped in this slot."
2419
+ "description": "Maximum allowed value"
2231
2420
  },
2232
2421
  {
2233
2422
  "kind": "field",
2234
- "name": "required",
2423
+ "name": "step",
2235
2424
  "type": {
2236
- "text": "boolean"
2237
- },
2238
- "default": "false",
2239
- "description": "Whether this slot is required to have content."
2240
- },
2241
- {
2242
- "kind": "field",
2243
- "name": "placeholder",
2244
- "type": {
2245
- "text": "string | undefined"
2425
+ "text": "number"
2246
2426
  },
2247
- "description": "Placeholder text for text/textarea inputs in admin mode."
2427
+ "default": "1",
2428
+ "description": "Step value for increment/decrement"
2248
2429
  },
2249
2430
  {
2250
2431
  "kind": "field",
2251
- "name": "tag",
2432
+ "name": "required",
2252
2433
  "type": {
2253
- "text": "string | undefined"
2434
+ "text": "boolean"
2254
2435
  },
2255
- "description": "The HTML tag to create when there's no slotted element.\nUsed with type=\"text\" or type=\"textarea\" to auto-create elements."
2436
+ "default": "false",
2437
+ "description": "Whether the input is required"
2256
2438
  },
2257
2439
  {
2258
2440
  "kind": "field",
2259
- "name": "slotStyle",
2441
+ "name": "disabled",
2260
2442
  "type": {
2261
- "text": "string | undefined"
2443
+ "text": "boolean"
2262
2444
  },
2263
- "description": "CSS styles for the slot dropzone container.\nUseful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\nOnly applies in admin mode for type=\"slot\"."
2445
+ "default": "false",
2446
+ "description": "Whether the input is disabled"
2264
2447
  },
2265
2448
  {
2266
2449
  "kind": "field",
2267
- "name": "adminMode",
2450
+ "name": "readonly",
2268
2451
  "type": {
2269
2452
  "text": "boolean"
2270
2453
  },
2271
- "privacy": "private",
2272
2454
  "default": "false",
2273
- "description": "Internal state to track admin mode"
2455
+ "description": "Whether the input is read-only"
2274
2456
  },
2275
2457
  {
2276
2458
  "kind": "field",
2277
- "name": "textValue",
2459
+ "name": "iconStart",
2278
2460
  "type": {
2279
- "text": "string"
2461
+ "text": "string | undefined"
2280
2462
  },
2281
- "privacy": "private",
2282
- "default": "''",
2283
- "description": "Internal state for text input value (synced from slot content)"
2463
+ "description": "Icon for the start icon"
2284
2464
  },
2285
2465
  {
2286
2466
  "kind": "field",
2287
- "name": "isValidHtml",
2467
+ "name": "showSpinners",
2288
2468
  "type": {
2289
2469
  "text": "boolean"
2290
2470
  },
2291
- "privacy": "private",
2292
2471
  "default": "true",
2293
- "description": "Whether the current textValue contains valid HTML"
2472
+ "description": "Whether to show the spinner controls"
2294
2473
  },
2295
2474
  {
2296
2475
  "kind": "field",
2297
- "name": "availableComponents",
2476
+ "name": "externalId",
2298
2477
  "type": {
2299
- "text": "ComponentInfo[]"
2478
+ "text": "string"
2300
2479
  },
2301
- "privacy": "private",
2302
- "default": "[]",
2303
- "description": "Available components loaded from Custom Elements Manifest"
2480
+ "description": "External ID for linking with external systems"
2304
2481
  },
2305
2482
  {
2306
2483
  "kind": "field",
2307
- "name": "pickerOpen",
2484
+ "name": "isValid",
2308
2485
  "type": {
2309
2486
  "text": "boolean"
2310
2487
  },
2311
2488
  "privacy": "private",
2312
- "default": "false",
2313
- "description": "Whether the component picker popover is open"
2489
+ "default": "true",
2490
+ "description": "Internal validation state"
2314
2491
  },
2315
2492
  {
2316
2493
  "kind": "field",
2317
- "name": "slotRef",
2494
+ "name": "validationMessage",
2318
2495
  "type": {
2319
- "text": "HTMLSlotElement | undefined"
2496
+ "text": "string"
2320
2497
  },
2321
2498
  "privacy": "private",
2322
- "description": "Reference to the slot element to access assignedNodes"
2499
+ "default": "''"
2323
2500
  },
2324
2501
  {
2325
- "kind": "field",
2326
- "name": "slottedElement",
2327
- "type": {
2328
- "text": "Element | undefined"
2329
- },
2330
- "privacy": "private",
2331
- "description": "The original slotted element (e.g., <h3 slot=\"header\">)"
2502
+ "kind": "method",
2503
+ "name": "valueChanged"
2332
2504
  },
2333
2505
  {
2334
- "kind": "field",
2335
- "name": "disconnectModeObserver",
2336
- "type": {
2337
- "text": "() => void | undefined"
2338
- },
2506
+ "kind": "method",
2507
+ "name": "validate",
2339
2508
  "privacy": "private"
2340
2509
  },
2341
2510
  {
2342
- "kind": "field",
2343
- "name": "isUpdating",
2344
- "type": {
2345
- "text": "boolean"
2346
- },
2347
- "privacy": "private",
2348
- "default": "false",
2349
- "description": "Flag to prevent re-reading content right after we updated it"
2511
+ "kind": "method",
2512
+ "name": "emitChange",
2513
+ "privacy": "private"
2350
2514
  },
2351
2515
  {
2352
2516
  "kind": "method",
2353
- "name": "readSlottedContent",
2354
- "privacy": "private",
2355
- "description": "Read content from slotted elements via assignedNodes()"
2517
+ "name": "emitInput",
2518
+ "privacy": "private"
2356
2519
  },
2357
2520
  {
2358
2521
  "kind": "method",
2359
- "name": "validateHtml",
2522
+ "name": "updateValue",
2360
2523
  "privacy": "private",
2361
- "return": {
2362
- "type": {
2363
- "text": "boolean"
2364
- }
2365
- },
2366
2524
  "parameters": [
2367
2525
  {
2368
- "name": "html",
2526
+ "name": "newValue",
2369
2527
  "type": {
2370
- "text": "string"
2528
+ "text": "number"
2371
2529
  }
2372
2530
  }
2373
- ],
2374
- "description": "Validates if a string contains valid HTML"
2531
+ ]
2375
2532
  },
2376
2533
  {
2377
2534
  "kind": "field",
2378
- "name": "handleTextInput",
2535
+ "name": "handleInput",
2379
2536
  "privacy": "private"
2380
2537
  },
2381
2538
  {
2382
- "kind": "method",
2383
- "name": "createSlottedElement",
2384
- "privacy": "private",
2385
- "description": "Create a new slotted element when none exists.\nThe element is appended to the host component's light DOM."
2539
+ "kind": "field",
2540
+ "name": "handleChange",
2541
+ "privacy": "private"
2386
2542
  },
2387
2543
  {
2388
- "kind": "method",
2389
- "name": "loadAvailableComponents",
2390
- "privacy": "private",
2391
- "description": "Load available components from Custom Elements Manifest"
2544
+ "kind": "field",
2545
+ "name": "handleKeyDown",
2546
+ "privacy": "private"
2392
2547
  },
2393
2548
  {
2394
- "kind": "method",
2395
- "name": "formatComponentName",
2396
- "privacy": "private",
2397
- "return": {
2398
- "type": {
2399
- "text": "string"
2400
- }
2401
- },
2402
- "parameters": [
2403
- {
2404
- "name": "tagName",
2405
- "type": {
2406
- "text": "string"
2407
- }
2408
- }
2409
- ],
2410
- "description": "Format a tag name into a display name\ne.g., 'le-card' -> 'Card'"
2549
+ "kind": "field",
2550
+ "name": "handleWheel",
2551
+ "privacy": "private"
2411
2552
  },
2412
2553
  {
2413
- "kind": "method",
2414
- "name": "addComponent",
2415
- "privacy": "private",
2416
- "parameters": [
2417
- {
2418
- "name": "tagName",
2419
- "type": {
2420
- "text": "string"
2421
- }
2422
- }
2423
- ],
2424
- "description": "Add a new component to the slot"
2554
+ "kind": "field",
2555
+ "name": "increment",
2556
+ "privacy": "private"
2425
2557
  },
2426
2558
  {
2427
2559
  "kind": "field",
2428
- "name": "handleSlotChange",
2429
- "privacy": "private",
2430
- "description": "Handle slot change event to re-read content when nodes are assigned"
2560
+ "name": "decrement",
2561
+ "privacy": "private"
2431
2562
  },
2432
2563
  {
2433
2564
  "kind": "method",
2434
2565
  "name": "render"
2435
- },
2436
- {
2437
- "kind": "method",
2438
- "name": "renderContent",
2439
- "privacy": "private"
2440
2566
  }
2441
2567
  ],
2442
2568
  "attributes": [
2443
2569
  {
2444
- "name": "type",
2445
- "fieldName": "type",
2446
- "default": "'slot'",
2447
- "description": "The type of slot content.\n- `slot`: Default, shows a dropzone for components (default)\n- `text`: Shows a single-line text input\n- `textarea`: Shows a multi-line text area",
2570
+ "name": "value",
2571
+ "fieldName": "value",
2572
+ "description": "The value of the input",
2448
2573
  "type": {
2449
- "text": "'slot' | 'text' | 'textarea'"
2574
+ "text": "number"
2450
2575
  }
2451
2576
  },
2452
2577
  {
2453
2578
  "name": "name",
2454
2579
  "fieldName": "name",
2455
- "default": "''",
2456
- "description": "The name of the slot this placeholder represents.\nShould match the slot name in the parent component.",
2580
+ "description": "The name of the input",
2457
2581
  "type": {
2458
2582
  "text": "string"
2459
2583
  }
@@ -2461,78 +2585,112 @@
2461
2585
  {
2462
2586
  "name": "label",
2463
2587
  "fieldName": "label",
2464
- "description": "Label to display in admin mode.\nIf not provided, the slot name will be used.",
2588
+ "description": "Label for the input",
2465
2589
  "type": {
2466
2590
  "text": "string"
2467
2591
  }
2468
2592
  },
2469
2593
  {
2470
- "name": "description",
2471
- "fieldName": "description",
2472
- "description": "Description of what content this slot accepts.\nShown in admin mode to guide content editors.",
2594
+ "name": "placeholder",
2595
+ "fieldName": "placeholder",
2596
+ "description": "Placeholder text",
2473
2597
  "type": {
2474
2598
  "text": "string"
2475
2599
  }
2476
2600
  },
2477
2601
  {
2478
- "name": "allowed-components",
2479
- "fieldName": "allowedComponents",
2480
- "description": "Comma-separated list of allowed component tags for this slot.\nUsed by CMS to filter available components.",
2602
+ "name": "min",
2603
+ "fieldName": "min",
2604
+ "description": "Minimum allowed value",
2481
2605
  "type": {
2482
- "text": "string"
2606
+ "text": "number"
2483
2607
  }
2484
2608
  },
2485
2609
  {
2486
- "name": "multiple",
2487
- "fieldName": "multiple",
2488
- "default": "true",
2489
- "description": "Whether multiple components can be dropped in this slot.",
2610
+ "name": "max",
2611
+ "fieldName": "max",
2612
+ "description": "Maximum allowed value",
2490
2613
  "type": {
2491
- "text": "boolean"
2614
+ "text": "number"
2615
+ }
2616
+ },
2617
+ {
2618
+ "name": "step",
2619
+ "fieldName": "step",
2620
+ "default": "1",
2621
+ "description": "Step value for increment/decrement",
2622
+ "type": {
2623
+ "text": "number"
2492
2624
  }
2493
2625
  },
2494
2626
  {
2495
2627
  "name": "required",
2496
2628
  "fieldName": "required",
2497
2629
  "default": "false",
2498
- "description": "Whether this slot is required to have content.",
2630
+ "description": "Whether the input is required",
2499
2631
  "type": {
2500
2632
  "text": "boolean"
2501
2633
  }
2502
2634
  },
2503
2635
  {
2504
- "name": "placeholder",
2505
- "fieldName": "placeholder",
2506
- "description": "Placeholder text for text/textarea inputs in admin mode.",
2636
+ "name": "disabled",
2637
+ "fieldName": "disabled",
2638
+ "default": "false",
2639
+ "description": "Whether the input is disabled",
2507
2640
  "type": {
2508
- "text": "string"
2641
+ "text": "boolean"
2509
2642
  }
2510
2643
  },
2511
2644
  {
2512
- "name": "tag",
2513
- "fieldName": "tag",
2514
- "description": "The HTML tag to create when there's no slotted element.\nUsed with type=\"text\" or type=\"textarea\" to auto-create elements.",
2645
+ "name": "readonly",
2646
+ "fieldName": "readonly",
2647
+ "default": "false",
2648
+ "description": "Whether the input is read-only",
2515
2649
  "type": {
2516
- "text": "string"
2650
+ "text": "boolean"
2517
2651
  }
2518
2652
  },
2519
2653
  {
2520
- "name": "slot-style",
2521
- "fieldName": "slotStyle",
2522
- "description": "CSS styles for the slot dropzone container.\nUseful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\nOnly applies in admin mode for type=\"slot\".",
2654
+ "name": "icon-start",
2655
+ "fieldName": "iconStart",
2656
+ "description": "Icon for the start icon",
2523
2657
  "type": {
2524
2658
  "text": "string"
2525
2659
  }
2526
- }
2527
- ],
2528
- "tagName": "le-slot",
2529
- "events": [
2660
+ },
2530
2661
  {
2531
- "name": "leSlotChange",
2662
+ "name": "show-spinners",
2663
+ "fieldName": "showSpinners",
2664
+ "default": "true",
2665
+ "description": "Whether to show the spinner controls",
2532
2666
  "type": {
2533
- "text": "EventEmitter<{ name: string; value: string; isValid: boolean }>"
2534
- },
2535
- "description": "Emitted when text content changes in admin mode.\nThe event detail contains the new text value and validity."
2667
+ "text": "boolean"
2668
+ }
2669
+ },
2670
+ {
2671
+ "name": "external-id",
2672
+ "fieldName": "externalId",
2673
+ "description": "External ID for linking with external systems",
2674
+ "type": {
2675
+ "text": "string"
2676
+ }
2677
+ }
2678
+ ],
2679
+ "tagName": "le-number-input",
2680
+ "events": [
2681
+ {
2682
+ "name": "leChange",
2683
+ "type": {
2684
+ "text": "EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>"
2685
+ },
2686
+ "description": "Emitted when the value changes (on blur or Enter)"
2687
+ },
2688
+ {
2689
+ "name": "leInput",
2690
+ "type": {
2691
+ "text": "EventEmitter<{ value: number; name: string; externalId: string; isValid: boolean }>"
2692
+ },
2693
+ "description": "Emitted when the input value changes (on keystroke/spin)"
2536
2694
  }
2537
2695
  ],
2538
2696
  "customElement": true
@@ -2541,30 +2699,36 @@
2541
2699
  "exports": [
2542
2700
  {
2543
2701
  "kind": "js",
2544
- "name": "LeSlot",
2702
+ "name": "LeNumberInput",
2545
2703
  "declaration": {
2546
- "name": "LeSlot",
2547
- "module": "src/components/le-slot/le-slot.tsx"
2704
+ "name": "LeNumberInput",
2705
+ "module": "src/components/le-number-input/le-number-input.tsx"
2548
2706
  }
2549
2707
  },
2550
2708
  {
2551
2709
  "kind": "custom-element-definition",
2552
- "name": "le-slot",
2710
+ "name": "le-number-input",
2553
2711
  "declaration": {
2554
- "name": "LeSlot",
2555
- "module": "src/components/le-slot/le-slot.tsx"
2712
+ "name": "LeNumberInput",
2713
+ "module": "src/components/le-number-input/le-number-input.tsx"
2556
2714
  }
2557
2715
  }
2558
2716
  ]
2559
2717
  },
2560
2718
  {
2561
2719
  "kind": "javascript-module",
2562
- "path": "src/components/le-round-progress/le-round-progress.tsx",
2720
+ "path": "src/components/le-slot/le-slot.tsx",
2563
2721
  "declarations": [
2564
2722
  {
2565
2723
  "kind": "class",
2566
- "description": "",
2567
- "name": "LeRoundProgress",
2724
+ "description": "Slot placeholder component for admin/CMS mode.\n\nThis component renders a visual placeholder for slots when in admin mode,\nallowing CMS systems to show available drop zones for content or inline editing.\n\nIn non-admin mode, this component renders nothing and acts as a passthrough.",
2725
+ "name": "LeSlot",
2726
+ "slots": [
2727
+ {
2728
+ "description": "Default slot for placeholder content or drop zone UI",
2729
+ "name": ""
2730
+ }
2731
+ ],
2568
2732
  "members": [
2569
2733
  {
2570
2734
  "kind": "field",
@@ -2575,466 +2739,407 @@
2575
2739
  },
2576
2740
  {
2577
2741
  "kind": "field",
2578
- "name": "value",
2742
+ "name": "type",
2579
2743
  "type": {
2580
- "text": "number"
2744
+ "text": "'slot' | 'text' | 'textarea'"
2581
2745
  },
2582
- "default": "0"
2583
- },
2584
- {
2585
- "kind": "method",
2586
- "name": "updateValue",
2587
- "parameters": [
2588
- {
2589
- "name": "newValue",
2590
- "type": {
2591
- "text": "string"
2592
- }
2593
- }
2594
- ]
2746
+ "default": "'slot'",
2747
+ "description": "The type of slot content.\n- `slot`: Default, shows a dropzone for components (default)\n- `text`: Shows a single-line text input\n- `textarea`: Shows a multi-line text area"
2595
2748
  },
2596
2749
  {
2597
2750
  "kind": "field",
2598
- "name": "padding",
2751
+ "name": "name",
2599
2752
  "type": {
2600
- "text": "number"
2753
+ "text": "string"
2601
2754
  },
2602
- "default": "0"
2603
- },
2604
- {
2605
- "kind": "method",
2606
- "name": "updatePadding",
2607
- "parameters": [
2608
- {
2609
- "name": "newValue",
2610
- "type": {
2611
- "text": "string"
2612
- }
2613
- }
2614
- ]
2755
+ "default": "''",
2756
+ "description": "The name of the slot this placeholder represents.\nShould match the slot name in the parent component."
2615
2757
  },
2616
2758
  {
2617
2759
  "kind": "field",
2618
- "name": "paths",
2760
+ "name": "label",
2619
2761
  "type": {
2620
- "text": "string"
2621
- }
2622
- },
2623
- {
2624
- "kind": "method",
2625
- "name": "updateProgressBackgrounds",
2626
- "parameters": [
2627
- {
2628
- "name": "newValue",
2629
- "type": {
2630
- "text": "string"
2631
- }
2632
- }
2633
- ]
2762
+ "text": "string | undefined"
2763
+ },
2764
+ "description": "Label to display in admin mode.\nIf not provided, the slot name will be used."
2634
2765
  },
2635
2766
  {
2636
2767
  "kind": "field",
2637
- "name": "progressPaths",
2768
+ "name": "description",
2638
2769
  "type": {
2639
- "text": "any[]"
2640
- }
2770
+ "text": "string | undefined"
2771
+ },
2772
+ "description": "Description of what content this slot accepts.\nShown in admin mode to guide content editors."
2641
2773
  },
2642
2774
  {
2643
2775
  "kind": "field",
2644
- "name": "params",
2776
+ "name": "allowedComponents",
2645
2777
  "type": {
2646
- "text": "{\n width: number;\n diameter: number;\n circumference: number;\n }"
2647
- }
2648
- },
2649
- {
2650
- "kind": "method",
2651
- "name": "calcParams"
2652
- },
2653
- {
2654
- "kind": "method",
2655
- "name": "getViewBox",
2656
- "description": "Returns the viewPath attribute value for the SVG\nbased on the width of the parent element"
2657
- },
2658
- {
2659
- "kind": "method",
2660
- "name": "getPath",
2661
- "description": "Returns the circular path for the progress stroke\nand additional paths in the background"
2662
- },
2663
- {
2664
- "kind": "method",
2665
- "name": "getStrokeDashArray"
2666
- },
2667
- {
2668
- "kind": "method",
2669
- "name": "getPaths"
2778
+ "text": "string | undefined"
2779
+ },
2780
+ "description": "Comma-separated list of allowed component tags for this slot.\nUsed by CMS to filter available components."
2670
2781
  },
2671
2782
  {
2672
- "kind": "method",
2673
- "name": "render"
2674
- }
2675
- ],
2676
- "attributes": [
2677
- {
2678
- "name": "value",
2679
- "fieldName": "value",
2680
- "default": "0",
2783
+ "kind": "field",
2784
+ "name": "multiple",
2681
2785
  "type": {
2682
- "text": "number"
2683
- }
2786
+ "text": "boolean"
2787
+ },
2788
+ "default": "true",
2789
+ "description": "Whether multiple components can be dropped in this slot."
2684
2790
  },
2685
2791
  {
2686
- "name": "padding",
2687
- "fieldName": "padding",
2688
- "default": "0",
2792
+ "kind": "field",
2793
+ "name": "required",
2689
2794
  "type": {
2690
- "text": "number"
2691
- }
2795
+ "text": "boolean"
2796
+ },
2797
+ "default": "false",
2798
+ "description": "Whether this slot is required to have content."
2692
2799
  },
2693
- {
2694
- "name": "paths",
2695
- "fieldName": "paths",
2696
- "type": {
2697
- "text": "string"
2698
- }
2699
- }
2700
- ],
2701
- "tagName": "le-round-progress",
2702
- "events": [],
2703
- "customElement": true
2704
- }
2705
- ],
2706
- "exports": [
2707
- {
2708
- "kind": "js",
2709
- "name": "LeRoundProgress",
2710
- "declaration": {
2711
- "name": "LeRoundProgress",
2712
- "module": "src/components/le-round-progress/le-round-progress.tsx"
2713
- }
2714
- },
2715
- {
2716
- "kind": "custom-element-definition",
2717
- "name": "le-round-progress",
2718
- "declaration": {
2719
- "name": "LeRoundProgress",
2720
- "module": "src/components/le-round-progress/le-round-progress.tsx"
2721
- }
2722
- }
2723
- ]
2724
- },
2725
- {
2726
- "kind": "javascript-module",
2727
- "path": "src/components/le-stack/le-stack.tsx",
2728
- "declarations": [
2729
- {
2730
- "kind": "class",
2731
- "description": "A flexible stack layout component using CSS flexbox.\n\n`le-stack` arranges its children in a row (horizontal) or column (vertical)\nwith configurable spacing, alignment, and wrapping behavior. Perfect for\ncreating responsive layouts.",
2732
- "name": "LeStack",
2733
- "cssProperties": [
2734
- {
2735
- "description": "Gap between items (defaults to var(--le-space-md))",
2736
- "name": "--le-stack-gap"
2737
- }
2738
- ],
2739
- "cssParts": [
2740
- {
2741
- "description": "The main stack container",
2742
- "name": "stack"
2743
- }
2744
- ],
2745
- "slots": [
2746
- {
2747
- "description": "Default slot for stack items (le-box components recommended)",
2748
- "name": ""
2749
- }
2750
- ],
2751
- "members": [
2752
2800
  {
2753
2801
  "kind": "field",
2754
- "name": "el",
2802
+ "name": "placeholder",
2755
2803
  "type": {
2756
- "text": "HTMLElement"
2757
- }
2804
+ "text": "string | undefined"
2805
+ },
2806
+ "description": "Placeholder text for text/textarea inputs in admin mode."
2758
2807
  },
2759
2808
  {
2760
2809
  "kind": "field",
2761
- "name": "direction",
2810
+ "name": "tag",
2762
2811
  "type": {
2763
- "text": "'horizontal' | 'vertical'"
2812
+ "text": "string | undefined"
2764
2813
  },
2765
- "default": "'horizontal'",
2766
- "description": "Direction of the stack layout"
2814
+ "description": "The HTML tag to create when there's no slotted element.\nUsed with type=\"text\" or type=\"textarea\" to auto-create elements."
2767
2815
  },
2768
2816
  {
2769
2817
  "kind": "field",
2770
- "name": "gap",
2818
+ "name": "slotStyle",
2771
2819
  "type": {
2772
2820
  "text": "string | undefined"
2773
2821
  },
2774
- "description": "Gap between items (CSS value like '8px', '1rem', 'var(--le-space-md)')"
2822
+ "description": "CSS styles for the slot dropzone container.\nUseful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\nOnly applies in admin mode for type=\"slot\"."
2775
2823
  },
2776
2824
  {
2777
2825
  "kind": "field",
2778
- "name": "align",
2826
+ "name": "adminMode",
2779
2827
  "type": {
2780
- "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline'"
2828
+ "text": "boolean"
2781
2829
  },
2782
- "default": "'stretch'",
2783
- "description": "Alignment of items on the cross axis"
2830
+ "privacy": "private",
2831
+ "default": "false",
2832
+ "description": "Internal state to track admin mode"
2784
2833
  },
2785
2834
  {
2786
2835
  "kind": "field",
2787
- "name": "justify",
2836
+ "name": "textValue",
2788
2837
  "type": {
2789
- "text": "'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'"
2838
+ "text": "string"
2790
2839
  },
2791
- "default": "'start'",
2792
- "description": "Distribution of items on the main axis"
2840
+ "privacy": "private",
2841
+ "default": "''",
2842
+ "description": "Internal state for text input value (synced from slot content)"
2793
2843
  },
2794
2844
  {
2795
2845
  "kind": "field",
2796
- "name": "wrap",
2846
+ "name": "isValidHtml",
2797
2847
  "type": {
2798
2848
  "text": "boolean"
2799
2849
  },
2800
- "default": "false",
2801
- "description": "Whether items should wrap to multiple lines"
2850
+ "privacy": "private",
2851
+ "default": "true",
2852
+ "description": "Whether the current textValue contains valid HTML"
2802
2853
  },
2803
2854
  {
2804
2855
  "kind": "field",
2805
- "name": "alignContent",
2856
+ "name": "availableComponents",
2806
2857
  "type": {
2807
- "text": "'start' | 'center' | 'end' | 'stretch' | 'space-between' | 'space-around'"
2858
+ "text": "ComponentInfo[]"
2808
2859
  },
2809
- "default": "'stretch'",
2810
- "description": "Alignment of wrapped lines (only applies when wrap is true)"
2860
+ "privacy": "private",
2861
+ "default": "[]",
2862
+ "description": "Available components loaded from Custom Elements Manifest"
2811
2863
  },
2812
2864
  {
2813
2865
  "kind": "field",
2814
- "name": "reverse",
2866
+ "name": "pickerOpen",
2815
2867
  "type": {
2816
2868
  "text": "boolean"
2817
2869
  },
2870
+ "privacy": "private",
2818
2871
  "default": "false",
2819
- "description": "Whether to reverse the order of items"
2872
+ "description": "Whether the component picker popover is open"
2820
2873
  },
2821
2874
  {
2822
2875
  "kind": "field",
2823
- "name": "maxItems",
2876
+ "name": "slotRef",
2824
2877
  "type": {
2825
- "text": "number | undefined"
2878
+ "text": "HTMLSlotElement | undefined"
2826
2879
  },
2827
- "description": "Maximum number of items allowed in the stack (for CMS validation)"
2880
+ "privacy": "private",
2881
+ "description": "Reference to the slot element to access assignedNodes"
2828
2882
  },
2829
2883
  {
2830
2884
  "kind": "field",
2831
- "name": "fullWidth",
2885
+ "name": "slottedElement",
2832
2886
  "type": {
2833
- "text": "boolean"
2887
+ "text": "Element | undefined"
2834
2888
  },
2835
- "default": "false",
2836
- "description": "Whether the stack should take full width of its container"
2889
+ "privacy": "private",
2890
+ "description": "The original slotted element (e.g., <h3 slot=\"header\">)"
2837
2891
  },
2838
2892
  {
2839
2893
  "kind": "field",
2840
- "name": "fullHeight",
2894
+ "name": "disconnectModeObserver",
2841
2895
  "type": {
2842
- "text": "boolean"
2896
+ "text": "() => void | undefined"
2843
2897
  },
2844
- "default": "false",
2845
- "description": "Whether the stack should take full height of its container"
2898
+ "privacy": "private"
2846
2899
  },
2847
2900
  {
2848
2901
  "kind": "field",
2849
- "name": "padding",
2902
+ "name": "isUpdating",
2850
2903
  "type": {
2851
- "text": "string | undefined"
2904
+ "text": "boolean"
2852
2905
  },
2853
- "description": "Padding inside the stack container (CSS value)"
2906
+ "privacy": "private",
2907
+ "default": "false",
2908
+ "description": "Flag to prevent re-reading content right after we updated it"
2854
2909
  },
2855
2910
  {
2856
2911
  "kind": "method",
2857
- "name": "getFlexDirection",
2912
+ "name": "readSlottedContent",
2858
2913
  "privacy": "private",
2859
- "return": {
2860
- "type": {
2861
- "text": "string"
2862
- }
2863
- }
2914
+ "description": "Read content from slotted elements via assignedNodes()"
2864
2915
  },
2865
2916
  {
2866
2917
  "kind": "method",
2867
- "name": "getAlignItems",
2918
+ "name": "validateHtml",
2868
2919
  "privacy": "private",
2869
2920
  "return": {
2870
2921
  "type": {
2871
- "text": "string"
2922
+ "text": "boolean"
2872
2923
  }
2873
- }
2924
+ },
2925
+ "parameters": [
2926
+ {
2927
+ "name": "html",
2928
+ "type": {
2929
+ "text": "string"
2930
+ }
2931
+ }
2932
+ ],
2933
+ "description": "Validates if a string contains valid HTML"
2934
+ },
2935
+ {
2936
+ "kind": "field",
2937
+ "name": "handleTextInput",
2938
+ "privacy": "private"
2939
+ },
2940
+ {
2941
+ "kind": "method",
2942
+ "name": "createSlottedElement",
2943
+ "privacy": "private",
2944
+ "description": "Create a new slotted element when none exists.\nThe element is appended to the host component's light DOM."
2945
+ },
2946
+ {
2947
+ "kind": "method",
2948
+ "name": "loadAvailableComponents",
2949
+ "privacy": "private",
2950
+ "description": "Load available components from Custom Elements Manifest"
2874
2951
  },
2875
2952
  {
2876
2953
  "kind": "method",
2877
- "name": "getJustifyContent",
2954
+ "name": "formatComponentName",
2878
2955
  "privacy": "private",
2879
2956
  "return": {
2880
2957
  "type": {
2881
2958
  "text": "string"
2882
2959
  }
2883
- }
2960
+ },
2961
+ "parameters": [
2962
+ {
2963
+ "name": "tagName",
2964
+ "type": {
2965
+ "text": "string"
2966
+ }
2967
+ }
2968
+ ],
2969
+ "description": "Format a tag name into a display name\ne.g., 'le-card' -> 'Card'"
2884
2970
  },
2885
2971
  {
2886
2972
  "kind": "method",
2887
- "name": "getAlignContent",
2973
+ "name": "addComponent",
2888
2974
  "privacy": "private",
2889
- "return": {
2890
- "type": {
2891
- "text": "string"
2975
+ "parameters": [
2976
+ {
2977
+ "name": "tagName",
2978
+ "type": {
2979
+ "text": "string"
2980
+ }
2892
2981
  }
2893
- }
2982
+ ],
2983
+ "description": "Add a new component to the slot"
2984
+ },
2985
+ {
2986
+ "kind": "field",
2987
+ "name": "handleSlotChange",
2988
+ "privacy": "private",
2989
+ "description": "Handle slot change event to re-read content when nodes are assigned"
2894
2990
  },
2895
2991
  {
2896
2992
  "kind": "method",
2897
2993
  "name": "render"
2994
+ },
2995
+ {
2996
+ "kind": "method",
2997
+ "name": "renderContent",
2998
+ "privacy": "private"
2898
2999
  }
2899
3000
  ],
2900
3001
  "attributes": [
2901
3002
  {
2902
- "name": "direction",
2903
- "fieldName": "direction",
2904
- "default": "'horizontal'",
2905
- "description": "Direction of the stack layout",
3003
+ "name": "type",
3004
+ "fieldName": "type",
3005
+ "default": "'slot'",
3006
+ "description": "The type of slot content.\n- `slot`: Default, shows a dropzone for components (default)\n- `text`: Shows a single-line text input\n- `textarea`: Shows a multi-line text area",
2906
3007
  "type": {
2907
- "text": "'horizontal' | 'vertical'"
3008
+ "text": "'slot' | 'text' | 'textarea'"
2908
3009
  }
2909
3010
  },
2910
3011
  {
2911
- "name": "gap",
2912
- "fieldName": "gap",
2913
- "description": "Gap between items (CSS value like '8px', '1rem', 'var(--le-space-md)')",
3012
+ "name": "name",
3013
+ "fieldName": "name",
3014
+ "default": "''",
3015
+ "description": "The name of the slot this placeholder represents.\nShould match the slot name in the parent component.",
2914
3016
  "type": {
2915
3017
  "text": "string"
2916
3018
  }
2917
3019
  },
2918
3020
  {
2919
- "name": "align",
2920
- "fieldName": "align",
2921
- "default": "'stretch'",
2922
- "description": "Alignment of items on the cross axis",
3021
+ "name": "label",
3022
+ "fieldName": "label",
3023
+ "description": "Label to display in admin mode.\nIf not provided, the slot name will be used.",
2923
3024
  "type": {
2924
- "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline'"
3025
+ "text": "string"
2925
3026
  }
2926
3027
  },
2927
3028
  {
2928
- "name": "justify",
2929
- "fieldName": "justify",
2930
- "default": "'start'",
2931
- "description": "Distribution of items on the main axis",
3029
+ "name": "description",
3030
+ "fieldName": "description",
3031
+ "description": "Description of what content this slot accepts.\nShown in admin mode to guide content editors.",
2932
3032
  "type": {
2933
- "text": "'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'"
3033
+ "text": "string"
2934
3034
  }
2935
3035
  },
2936
3036
  {
2937
- "name": "wrap",
2938
- "fieldName": "wrap",
2939
- "default": "false",
2940
- "description": "Whether items should wrap to multiple lines",
3037
+ "name": "allowed-components",
3038
+ "fieldName": "allowedComponents",
3039
+ "description": "Comma-separated list of allowed component tags for this slot.\nUsed by CMS to filter available components.",
2941
3040
  "type": {
2942
- "text": "boolean"
3041
+ "text": "string"
2943
3042
  }
2944
3043
  },
2945
3044
  {
2946
- "name": "align-content",
2947
- "fieldName": "alignContent",
2948
- "default": "'stretch'",
2949
- "description": "Alignment of wrapped lines (only applies when wrap is true)",
3045
+ "name": "multiple",
3046
+ "fieldName": "multiple",
3047
+ "default": "true",
3048
+ "description": "Whether multiple components can be dropped in this slot.",
2950
3049
  "type": {
2951
- "text": "'start' | 'center' | 'end' | 'stretch' | 'space-between' | 'space-around'"
3050
+ "text": "boolean"
2952
3051
  }
2953
3052
  },
2954
3053
  {
2955
- "name": "reverse",
2956
- "fieldName": "reverse",
3054
+ "name": "required",
3055
+ "fieldName": "required",
2957
3056
  "default": "false",
2958
- "description": "Whether to reverse the order of items",
3057
+ "description": "Whether this slot is required to have content.",
2959
3058
  "type": {
2960
3059
  "text": "boolean"
2961
3060
  }
2962
3061
  },
2963
3062
  {
2964
- "name": "max-items",
2965
- "fieldName": "maxItems",
2966
- "description": "Maximum number of items allowed in the stack (for CMS validation)",
3063
+ "name": "placeholder",
3064
+ "fieldName": "placeholder",
3065
+ "description": "Placeholder text for text/textarea inputs in admin mode.",
2967
3066
  "type": {
2968
- "text": "number"
3067
+ "text": "string"
2969
3068
  }
2970
3069
  },
2971
3070
  {
2972
- "name": "full-width",
2973
- "fieldName": "fullWidth",
2974
- "default": "false",
2975
- "description": "Whether the stack should take full width of its container",
3071
+ "name": "tag",
3072
+ "fieldName": "tag",
3073
+ "description": "The HTML tag to create when there's no slotted element.\nUsed with type=\"text\" or type=\"textarea\" to auto-create elements.",
2976
3074
  "type": {
2977
- "text": "boolean"
3075
+ "text": "string"
2978
3076
  }
2979
3077
  },
2980
3078
  {
2981
- "name": "full-height",
2982
- "fieldName": "fullHeight",
2983
- "default": "false",
2984
- "description": "Whether the stack should take full height of its container",
3079
+ "name": "slot-style",
3080
+ "fieldName": "slotStyle",
3081
+ "description": "CSS styles for the slot dropzone container.\nUseful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\nOnly applies in admin mode for type=\"slot\".",
2985
3082
  "type": {
2986
- "text": "boolean"
3083
+ "text": "string"
2987
3084
  }
2988
- },
3085
+ }
3086
+ ],
3087
+ "tagName": "le-slot",
3088
+ "events": [
2989
3089
  {
2990
- "name": "padding",
2991
- "fieldName": "padding",
2992
- "description": "Padding inside the stack container (CSS value)",
3090
+ "name": "leSlotChange",
2993
3091
  "type": {
2994
- "text": "string"
2995
- }
3092
+ "text": "EventEmitter<{ name: string; value: string; isValid: boolean }>"
3093
+ },
3094
+ "description": "Emitted when text content changes in admin mode.\nThe event detail contains the new text value and validity."
2996
3095
  }
2997
3096
  ],
2998
- "tagName": "le-stack",
2999
- "events": [],
3000
3097
  "customElement": true
3001
3098
  }
3002
3099
  ],
3003
3100
  "exports": [
3004
3101
  {
3005
3102
  "kind": "js",
3006
- "name": "LeStack",
3103
+ "name": "LeSlot",
3007
3104
  "declaration": {
3008
- "name": "LeStack",
3009
- "module": "src/components/le-stack/le-stack.tsx"
3105
+ "name": "LeSlot",
3106
+ "module": "src/components/le-slot/le-slot.tsx"
3010
3107
  }
3011
3108
  },
3012
3109
  {
3013
3110
  "kind": "custom-element-definition",
3014
- "name": "le-stack",
3111
+ "name": "le-slot",
3015
3112
  "declaration": {
3016
- "name": "LeStack",
3017
- "module": "src/components/le-stack/le-stack.tsx"
3113
+ "name": "LeSlot",
3114
+ "module": "src/components/le-slot/le-slot.tsx"
3018
3115
  }
3019
3116
  }
3020
3117
  ]
3021
3118
  },
3022
3119
  {
3023
3120
  "kind": "javascript-module",
3024
- "path": "src/components/le-popover/le-popover.tsx",
3121
+ "path": "src/components/le-stack/le-stack.tsx",
3025
3122
  "declarations": [
3026
3123
  {
3027
3124
  "kind": "class",
3028
- "description": "A popover component for displaying floating content.\n\nUses the native HTML Popover API for proper layering with dialogs\nand other top-layer elements. Falls back gracefully in older browsers.",
3029
- "name": "LePopover",
3125
+ "description": "A flexible stack layout component using CSS flexbox.\n\n`le-stack` arranges its children in a row (horizontal) or column (vertical)\nwith configurable spacing, alignment, and wrapping behavior. Perfect for\ncreating responsive layouts.",
3126
+ "name": "LeStack",
3127
+ "cssProperties": [
3128
+ {
3129
+ "description": "Gap between items (defaults to var(--le-space-md))",
3130
+ "name": "--le-stack-gap"
3131
+ }
3132
+ ],
3133
+ "cssParts": [
3134
+ {
3135
+ "description": "The main stack container",
3136
+ "name": "stack"
3137
+ }
3138
+ ],
3030
3139
  "slots": [
3031
3140
  {
3032
- "description": "Content to display inside the popover",
3141
+ "description": "Default slot for stack items (le-box components recommended)",
3033
3142
  "name": ""
3034
- },
3035
- {
3036
- "description": "Element that triggers the popover (optional)",
3037
- "name": "trigger"
3038
3143
  }
3039
3144
  ],
3040
3145
  "members": [
@@ -3047,221 +3152,139 @@
3047
3152
  },
3048
3153
  {
3049
3154
  "kind": "field",
3050
- "name": "mode",
3051
- "type": {
3052
- "text": "'default' | 'admin'"
3053
- },
3054
- "description": "Mode of the popover should be 'default' for internal use"
3055
- },
3056
- {
3057
- "kind": "field",
3058
- "name": "open",
3059
- "type": {
3060
- "text": "boolean"
3061
- },
3062
- "default": "false",
3063
- "description": "Whether the popover is currently open"
3064
- },
3065
- {
3066
- "kind": "field",
3067
- "name": "position",
3068
- "type": {
3069
- "text": "'top' | 'bottom' | 'left' | 'right' | 'auto'"
3070
- },
3071
- "default": "'bottom'",
3072
- "description": "Position of the popover relative to its trigger"
3073
- },
3074
- {
3075
- "kind": "field",
3076
- "name": "align",
3155
+ "name": "direction",
3077
3156
  "type": {
3078
- "text": "'start' | 'center' | 'end'"
3157
+ "text": "'horizontal' | 'vertical'"
3079
3158
  },
3080
- "default": "'start'",
3081
- "description": "Alignment of the popover"
3159
+ "default": "'horizontal'",
3160
+ "description": "Direction of the stack layout"
3082
3161
  },
3083
3162
  {
3084
3163
  "kind": "field",
3085
- "name": "popoverTitle",
3164
+ "name": "gap",
3086
3165
  "type": {
3087
3166
  "text": "string | undefined"
3088
3167
  },
3089
- "description": "Optional title for the popover header"
3090
- },
3091
- {
3092
- "kind": "field",
3093
- "name": "showClose",
3094
- "type": {
3095
- "text": "boolean"
3096
- },
3097
- "default": "true",
3098
- "description": "Whether to show a close button in the header"
3099
- },
3100
- {
3101
- "kind": "field",
3102
- "name": "closeOnClickOutside",
3103
- "type": {
3104
- "text": "boolean"
3105
- },
3106
- "default": "true",
3107
- "description": "Whether clicking outside closes the popover"
3108
- },
3109
- {
3110
- "kind": "field",
3111
- "name": "closeOnEscape",
3112
- "type": {
3113
- "text": "boolean"
3114
- },
3115
- "default": "true",
3116
- "description": "Whether pressing Escape closes the popover"
3168
+ "description": "Gap between items (CSS value like '8px', '1rem', 'var(--le-space-md)')"
3117
3169
  },
3118
3170
  {
3119
3171
  "kind": "field",
3120
- "name": "offset",
3172
+ "name": "align",
3121
3173
  "type": {
3122
- "text": "number"
3174
+ "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline'"
3123
3175
  },
3124
- "default": "8",
3125
- "description": "Offset from the trigger element (in pixels)"
3176
+ "default": "'stretch'",
3177
+ "description": "Alignment of items on the cross axis"
3126
3178
  },
3127
3179
  {
3128
3180
  "kind": "field",
3129
- "name": "width",
3181
+ "name": "justify",
3130
3182
  "type": {
3131
- "text": "string | undefined"
3183
+ "text": "'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'"
3132
3184
  },
3133
- "description": "Fixed width for the popover (e.g., '300px', '20rem')"
3185
+ "default": "'start'",
3186
+ "description": "Distribution of items on the main axis"
3134
3187
  },
3135
3188
  {
3136
3189
  "kind": "field",
3137
- "name": "minWidth",
3190
+ "name": "wrap",
3138
3191
  "type": {
3139
- "text": "string | undefined"
3192
+ "text": "boolean"
3140
3193
  },
3141
- "default": "'200px'",
3142
- "description": "Minimum width for the popover (e.g., '200px', '15rem')"
3194
+ "default": "false",
3195
+ "description": "Whether items should wrap to multiple lines"
3143
3196
  },
3144
3197
  {
3145
3198
  "kind": "field",
3146
- "name": "maxWidth",
3199
+ "name": "alignContent",
3147
3200
  "type": {
3148
- "text": "string | undefined"
3201
+ "text": "'start' | 'center' | 'end' | 'stretch' | 'space-between' | 'space-around'"
3149
3202
  },
3150
- "description": "Maximum width for the popover (e.g., '400px', '25rem')"
3203
+ "default": "'stretch'",
3204
+ "description": "Alignment of wrapped lines (only applies when wrap is true)"
3151
3205
  },
3152
3206
  {
3153
3207
  "kind": "field",
3154
- "name": "isPositioned",
3208
+ "name": "reverse",
3155
3209
  "type": {
3156
3210
  "text": "boolean"
3157
3211
  },
3158
- "privacy": "private",
3159
- "default": "false"
3212
+ "default": "false",
3213
+ "description": "Whether to reverse the order of items"
3160
3214
  },
3161
3215
  {
3162
3216
  "kind": "field",
3163
- "name": "triggerEl",
3217
+ "name": "maxItems",
3164
3218
  "type": {
3165
- "text": "HTMLElement | undefined"
3219
+ "text": "number | undefined"
3166
3220
  },
3167
- "privacy": "private"
3221
+ "description": "Maximum number of items allowed in the stack (for CMS validation)"
3168
3222
  },
3169
3223
  {
3170
3224
  "kind": "field",
3171
- "name": "popoverEl",
3225
+ "name": "fullWidth",
3172
3226
  "type": {
3173
- "text": "HTMLElement | undefined"
3227
+ "text": "boolean"
3174
3228
  },
3175
- "privacy": "private"
3229
+ "default": "false",
3230
+ "description": "Whether the stack should take full width of its container"
3176
3231
  },
3177
3232
  {
3178
3233
  "kind": "field",
3179
- "name": "uniqueId",
3234
+ "name": "fullHeight",
3180
3235
  "type": {
3181
- "text": "string"
3236
+ "text": "boolean"
3182
3237
  },
3183
- "privacy": "private",
3184
- "default": "`le-popover-${Math.random().toString(36).substr(2, 9)}`"
3238
+ "default": "false",
3239
+ "description": "Whether the stack should take full height of its container"
3185
3240
  },
3186
3241
  {
3187
3242
  "kind": "field",
3188
- "name": "scrollParents",
3243
+ "name": "padding",
3189
3244
  "type": {
3190
- "text": "Element[]"
3245
+ "text": "string | undefined"
3191
3246
  },
3192
- "privacy": "private",
3193
- "default": "[]"
3247
+ "description": "Padding inside the stack container (CSS value)"
3194
3248
  },
3195
3249
  {
3196
3250
  "kind": "method",
3197
- "name": "getScrollParents",
3251
+ "name": "getFlexDirection",
3198
3252
  "privacy": "private",
3199
3253
  "return": {
3200
3254
  "type": {
3201
- "text": "Element[]"
3202
- }
3203
- },
3204
- "parameters": [
3205
- {
3206
- "name": "element",
3207
- "type": {
3208
- "text": "Element"
3209
- }
3255
+ "text": "string"
3210
3256
  }
3211
- ],
3212
- "description": "Find all scrollable parent elements"
3257
+ }
3213
3258
  },
3214
3259
  {
3215
3260
  "kind": "method",
3216
- "name": "addScrollListeners",
3261
+ "name": "getAlignItems",
3217
3262
  "privacy": "private",
3218
- "description": "Add scroll listeners to all scrollable parents"
3263
+ "return": {
3264
+ "type": {
3265
+ "text": "string"
3266
+ }
3267
+ }
3219
3268
  },
3220
3269
  {
3221
3270
  "kind": "method",
3222
- "name": "removeScrollListeners",
3271
+ "name": "getJustifyContent",
3223
3272
  "privacy": "private",
3224
- "description": "Remove scroll listeners"
3225
- },
3226
- {
3227
- "kind": "field",
3228
- "name": "handleScroll",
3229
- "privacy": "private"
3230
- },
3231
- {
3232
- "kind": "field",
3233
- "name": "handlePopoverToggle",
3234
- "privacy": "private"
3235
- },
3236
- {
3237
- "kind": "field",
3238
- "name": "handleOtherPopoverOpen",
3239
- "privacy": "private"
3240
- },
3241
- {
3242
- "kind": "method",
3243
- "name": "show",
3244
- "description": "Opens the popover"
3245
- },
3246
- {
3247
- "kind": "method",
3248
- "name": "hide",
3249
- "description": "Closes the popover"
3250
- },
3251
- {
3252
- "kind": "method",
3253
- "name": "toggle",
3254
- "description": "Toggles the popover"
3255
- },
3256
- {
3257
- "kind": "field",
3258
- "name": "handleTriggerClick",
3259
- "privacy": "private"
3273
+ "return": {
3274
+ "type": {
3275
+ "text": "string"
3276
+ }
3277
+ }
3260
3278
  },
3261
3279
  {
3262
3280
  "kind": "method",
3263
- "name": "updatePosition",
3264
- "privacy": "private"
3281
+ "name": "getAlignContent",
3282
+ "privacy": "private",
3283
+ "return": {
3284
+ "type": {
3285
+ "text": "string"
3286
+ }
3287
+ }
3265
3288
  },
3266
3289
  {
3267
3290
  "kind": "method",
@@ -3270,145 +3293,122 @@
3270
3293
  ],
3271
3294
  "attributes": [
3272
3295
  {
3273
- "name": "mode",
3274
- "fieldName": "mode",
3275
- "description": "Mode of the popover should be 'default' for internal use",
3276
- "type": {
3277
- "text": "'default' | 'admin'"
3278
- }
3279
- },
3280
- {
3281
- "name": "open",
3282
- "fieldName": "open",
3283
- "default": "false",
3284
- "description": "Whether the popover is currently open",
3296
+ "name": "direction",
3297
+ "fieldName": "direction",
3298
+ "default": "'horizontal'",
3299
+ "description": "Direction of the stack layout",
3285
3300
  "type": {
3286
- "text": "boolean"
3301
+ "text": "'horizontal' | 'vertical'"
3287
3302
  }
3288
3303
  },
3289
3304
  {
3290
- "name": "position",
3291
- "fieldName": "position",
3292
- "default": "'bottom'",
3293
- "description": "Position of the popover relative to its trigger",
3305
+ "name": "gap",
3306
+ "fieldName": "gap",
3307
+ "description": "Gap between items (CSS value like '8px', '1rem', 'var(--le-space-md)')",
3294
3308
  "type": {
3295
- "text": "'top' | 'bottom' | 'left' | 'right' | 'auto'"
3309
+ "text": "string"
3296
3310
  }
3297
3311
  },
3298
3312
  {
3299
3313
  "name": "align",
3300
3314
  "fieldName": "align",
3301
- "default": "'start'",
3302
- "description": "Alignment of the popover",
3315
+ "default": "'stretch'",
3316
+ "description": "Alignment of items on the cross axis",
3303
3317
  "type": {
3304
- "text": "'start' | 'center' | 'end'"
3318
+ "text": "'start' | 'center' | 'end' | 'stretch' | 'baseline'"
3305
3319
  }
3306
3320
  },
3307
3321
  {
3308
- "name": "popover-title",
3309
- "fieldName": "popoverTitle",
3310
- "description": "Optional title for the popover header",
3322
+ "name": "justify",
3323
+ "fieldName": "justify",
3324
+ "default": "'start'",
3325
+ "description": "Distribution of items on the main axis",
3311
3326
  "type": {
3312
- "text": "string"
3327
+ "text": "'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'"
3313
3328
  }
3314
3329
  },
3315
3330
  {
3316
- "name": "show-close",
3317
- "fieldName": "showClose",
3318
- "default": "true",
3319
- "description": "Whether to show a close button in the header",
3331
+ "name": "wrap",
3332
+ "fieldName": "wrap",
3333
+ "default": "false",
3334
+ "description": "Whether items should wrap to multiple lines",
3320
3335
  "type": {
3321
3336
  "text": "boolean"
3322
3337
  }
3323
3338
  },
3324
3339
  {
3325
- "name": "close-on-click-outside",
3326
- "fieldName": "closeOnClickOutside",
3327
- "default": "true",
3328
- "description": "Whether clicking outside closes the popover",
3340
+ "name": "align-content",
3341
+ "fieldName": "alignContent",
3342
+ "default": "'stretch'",
3343
+ "description": "Alignment of wrapped lines (only applies when wrap is true)",
3329
3344
  "type": {
3330
- "text": "boolean"
3345
+ "text": "'start' | 'center' | 'end' | 'stretch' | 'space-between' | 'space-around'"
3331
3346
  }
3332
3347
  },
3333
3348
  {
3334
- "name": "close-on-escape",
3335
- "fieldName": "closeOnEscape",
3336
- "default": "true",
3337
- "description": "Whether pressing Escape closes the popover",
3349
+ "name": "reverse",
3350
+ "fieldName": "reverse",
3351
+ "default": "false",
3352
+ "description": "Whether to reverse the order of items",
3338
3353
  "type": {
3339
3354
  "text": "boolean"
3340
3355
  }
3341
3356
  },
3342
3357
  {
3343
- "name": "offset",
3344
- "fieldName": "offset",
3345
- "default": "8",
3346
- "description": "Offset from the trigger element (in pixels)",
3358
+ "name": "max-items",
3359
+ "fieldName": "maxItems",
3360
+ "description": "Maximum number of items allowed in the stack (for CMS validation)",
3347
3361
  "type": {
3348
3362
  "text": "number"
3349
3363
  }
3350
3364
  },
3351
3365
  {
3352
- "name": "width",
3353
- "fieldName": "width",
3354
- "description": "Fixed width for the popover (e.g., '300px', '20rem')",
3366
+ "name": "full-width",
3367
+ "fieldName": "fullWidth",
3368
+ "default": "false",
3369
+ "description": "Whether the stack should take full width of its container",
3355
3370
  "type": {
3356
- "text": "string"
3371
+ "text": "boolean"
3357
3372
  }
3358
3373
  },
3359
3374
  {
3360
- "name": "min-width",
3361
- "fieldName": "minWidth",
3362
- "default": "'200px'",
3363
- "description": "Minimum width for the popover (e.g., '200px', '15rem')",
3375
+ "name": "full-height",
3376
+ "fieldName": "fullHeight",
3377
+ "default": "false",
3378
+ "description": "Whether the stack should take full height of its container",
3364
3379
  "type": {
3365
- "text": "string"
3380
+ "text": "boolean"
3366
3381
  }
3367
3382
  },
3368
3383
  {
3369
- "name": "max-width",
3370
- "fieldName": "maxWidth",
3371
- "description": "Maximum width for the popover (e.g., '400px', '25rem')",
3384
+ "name": "padding",
3385
+ "fieldName": "padding",
3386
+ "description": "Padding inside the stack container (CSS value)",
3372
3387
  "type": {
3373
3388
  "text": "string"
3374
3389
  }
3375
3390
  }
3376
3391
  ],
3377
- "tagName": "le-popover",
3378
- "events": [
3379
- {
3380
- "name": "lePopoverOpen",
3381
- "type": {
3382
- "text": "EventEmitter<void>"
3383
- },
3384
- "description": "Emitted when the popover opens"
3385
- },
3386
- {
3387
- "name": "lePopoverClose",
3388
- "type": {
3389
- "text": "EventEmitter<void>"
3390
- },
3391
- "description": "Emitted when the popover closes"
3392
- }
3393
- ],
3392
+ "tagName": "le-stack",
3393
+ "events": [],
3394
3394
  "customElement": true
3395
3395
  }
3396
3396
  ],
3397
3397
  "exports": [
3398
3398
  {
3399
3399
  "kind": "js",
3400
- "name": "LePopover",
3400
+ "name": "LeStack",
3401
3401
  "declaration": {
3402
- "name": "LePopover",
3403
- "module": "src/components/le-popover/le-popover.tsx"
3402
+ "name": "LeStack",
3403
+ "module": "src/components/le-stack/le-stack.tsx"
3404
3404
  }
3405
3405
  },
3406
3406
  {
3407
3407
  "kind": "custom-element-definition",
3408
- "name": "le-popover",
3408
+ "name": "le-stack",
3409
3409
  "declaration": {
3410
- "name": "LePopover",
3411
- "module": "src/components/le-popover/le-popover.tsx"
3410
+ "name": "LeStack",
3411
+ "module": "src/components/le-stack/le-stack.tsx"
3412
3412
  }
3413
3413
  }
3414
3414
  ]