le-kit 0.1.4 → 0.1.5

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 (198) hide show
  1. package/dist/le-kit/assets/custom-elements.json +4305 -0
  2. package/dist/le-kit/index-Da-89pOc.js +4522 -0
  3. package/dist/le-kit/{index-D21JjI31.js.map → index-Da-89pOc.js.map} +1 -1
  4. package/dist/le-kit/index.esm.js +116 -2
  5. package/dist/le-kit/index.esm.js.map +1 -1
  6. package/dist/{esm → le-kit}/le-box.entry.js +3 -3
  7. package/dist/le-kit/le-button.entry.esm.js.map +1 -0
  8. package/dist/le-kit/le-button.entry.js +90 -0
  9. package/dist/{esm → le-kit}/le-card.entry.js +3 -3
  10. package/dist/le-kit/le-checkbox.entry.esm.js.map +1 -0
  11. package/dist/le-kit/le-checkbox.entry.js +59 -0
  12. package/dist/le-kit/le-component.entry.esm.js.map +1 -0
  13. package/dist/{collection/components/le-component/le-component.js → le-kit/le-component.entry.js} +19 -134
  14. package/dist/le-kit/le-kit.css +1010 -1
  15. package/dist/le-kit/le-kit.esm.js +48 -2
  16. package/dist/le-kit/le-kit.esm.js.map +1 -1
  17. package/dist/{esm → le-kit}/le-number-input.entry.js +5 -5
  18. package/dist/le-kit/le-popover.entry.esm.js.map +1 -0
  19. package/dist/{components/le-popover2.js → le-kit/le-popover.entry.js} +9 -45
  20. package/dist/{esm → le-kit}/le-popup.entry.js +6 -6
  21. package/dist/{esm → le-kit}/le-round-progress.entry.js +2 -2
  22. package/dist/le-kit/le-slot.entry.esm.js.map +1 -0
  23. package/dist/{collection/components/le-slot/le-slot.js → le-kit/le-slot.entry.js} +30 -279
  24. package/dist/{esm → le-kit}/le-stack.entry.js +3 -3
  25. package/dist/le-kit/le-string-input.entry.esm.js.map +1 -0
  26. package/dist/le-kit/le-string-input.entry.js +93 -0
  27. package/dist/{esm → le-kit}/le-text.entry.js +3 -3
  28. package/dist/{esm → le-kit}/le-turntable.entry.js +2 -2
  29. package/dist/{esm/utils-CJLZrrdC.js → le-kit/utils-FDOApZ53.js} +3 -3
  30. package/dist/le-kit/{utils-apol-Xc_.js.map → utils-FDOApZ53.js.map} +1 -1
  31. package/package.json +1 -1
  32. package/dist/cjs/index-CO4npcak.js +0 -1796
  33. package/dist/cjs/index-CO4npcak.js.map +0 -1
  34. package/dist/cjs/index.cjs.js +0 -117
  35. package/dist/cjs/index.cjs.js.map +0 -1
  36. package/dist/cjs/le-box.cjs.entry.js +0 -184
  37. package/dist/cjs/le-box.entry.cjs.js.map +0 -1
  38. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +0 -1
  39. package/dist/cjs/le-button_6.cjs.entry.js +0 -1199
  40. package/dist/cjs/le-card.cjs.entry.js +0 -29
  41. package/dist/cjs/le-card.entry.cjs.js.map +0 -1
  42. package/dist/cjs/le-kit.cjs.js +0 -25
  43. package/dist/cjs/le-kit.cjs.js.map +0 -1
  44. package/dist/cjs/le-number-input.cjs.entry.js +0 -202
  45. package/dist/cjs/le-number-input.entry.cjs.js.map +0 -1
  46. package/dist/cjs/le-popup.cjs.entry.js +0 -212
  47. package/dist/cjs/le-popup.entry.cjs.js.map +0 -1
  48. package/dist/cjs/le-round-progress.cjs.entry.js +0 -106
  49. package/dist/cjs/le-round-progress.entry.cjs.js.map +0 -1
  50. package/dist/cjs/le-stack.cjs.entry.js +0 -135
  51. package/dist/cjs/le-stack.entry.cjs.js.map +0 -1
  52. package/dist/cjs/le-text.cjs.entry.js +0 -335
  53. package/dist/cjs/le-text.entry.cjs.js.map +0 -1
  54. package/dist/cjs/le-turntable.cjs.entry.js +0 -139
  55. package/dist/cjs/le-turntable.entry.cjs.js.map +0 -1
  56. package/dist/cjs/loader.cjs.js +0 -13
  57. package/dist/cjs/loader.cjs.js.map +0 -1
  58. package/dist/cjs/utils-BeT0iyCQ.js +0 -152
  59. package/dist/cjs/utils-BeT0iyCQ.js.map +0 -1
  60. package/dist/collection/collection-manifest.json +0 -26
  61. package/dist/collection/components/le-box/le-box.default.css +0 -37
  62. package/dist/collection/components/le-box/le-box.js +0 -614
  63. package/dist/collection/components/le-box/le-box.js.map +0 -1
  64. package/dist/collection/components/le-button/le-button.default.css +0 -263
  65. package/dist/collection/components/le-button/le-button.js +0 -368
  66. package/dist/collection/components/le-button/le-button.js.map +0 -1
  67. package/dist/collection/components/le-card/le-card.default.css +0 -74
  68. package/dist/collection/components/le-card/le-card.js +0 -102
  69. package/dist/collection/components/le-card/le-card.js.map +0 -1
  70. package/dist/collection/components/le-checkbox/le-checkbox.css +0 -93
  71. package/dist/collection/components/le-checkbox/le-checkbox.js +0 -192
  72. package/dist/collection/components/le-checkbox/le-checkbox.js.map +0 -1
  73. package/dist/collection/components/le-component/le-component.css +0 -189
  74. package/dist/collection/components/le-component/le-component.js.map +0 -1
  75. package/dist/collection/components/le-number-input/le-number-input.css +0 -135
  76. package/dist/collection/components/le-number-input/le-number-input.js +0 -515
  77. package/dist/collection/components/le-number-input/le-number-input.js.map +0 -1
  78. package/dist/collection/components/le-popover/le-popover.css +0 -143
  79. package/dist/collection/components/le-popover/le-popover.js +0 -693
  80. package/dist/collection/components/le-popover/le-popover.js.map +0 -1
  81. package/dist/collection/components/le-popup/le-popup.api.js +0 -101
  82. package/dist/collection/components/le-popup/le-popup.api.js.map +0 -1
  83. package/dist/collection/components/le-popup/le-popup.css +0 -222
  84. package/dist/collection/components/le-popup/le-popup.js +0 -596
  85. package/dist/collection/components/le-popup/le-popup.js.map +0 -1
  86. package/dist/collection/components/le-round-progress/le-round-progress.css +0 -34
  87. package/dist/collection/components/le-round-progress/le-round-progress.js +0 -184
  88. package/dist/collection/components/le-round-progress/le-round-progress.js.map +0 -1
  89. package/dist/collection/components/le-slot/le-slot.default.css +0 -222
  90. package/dist/collection/components/le-slot/le-slot.js.map +0 -1
  91. package/dist/collection/components/le-stack/le-stack.default.css +0 -37
  92. package/dist/collection/components/le-stack/le-stack.js +0 -389
  93. package/dist/collection/components/le-stack/le-stack.js.map +0 -1
  94. package/dist/collection/components/le-string-input/le-string-input.css +0 -83
  95. package/dist/collection/components/le-string-input/le-string-input.js +0 -359
  96. package/dist/collection/components/le-string-input/le-string-input.js.map +0 -1
  97. package/dist/collection/components/le-text/le-text.default.css +0 -169
  98. package/dist/collection/components/le-text/le-text.js +0 -475
  99. package/dist/collection/components/le-text/le-text.js.map +0 -1
  100. package/dist/collection/components/le-turntable/le-turntable.css +0 -10
  101. package/dist/collection/components/le-turntable/le-turntable.js +0 -210
  102. package/dist/collection/components/le-turntable/le-turntable.js.map +0 -1
  103. package/dist/collection/global/app.js +0 -130
  104. package/dist/collection/global/app.js.map +0 -1
  105. package/dist/collection/index.js +0 -15
  106. package/dist/collection/index.js.map +0 -1
  107. package/dist/collection/types/blocks.js +0 -115
  108. package/dist/collection/types/blocks.js.map +0 -1
  109. package/dist/collection/types/options.js +0 -2
  110. package/dist/collection/types/options.js.map +0 -1
  111. package/dist/collection/utils/utils.js +0 -141
  112. package/dist/collection/utils/utils.js.map +0 -1
  113. package/dist/components/index.js +0 -127
  114. package/dist/components/index.js.map +0 -1
  115. package/dist/components/le-box.js +0 -256
  116. package/dist/components/le-box.js.map +0 -1
  117. package/dist/components/le-button.js +0 -9
  118. package/dist/components/le-button.js.map +0 -1
  119. package/dist/components/le-button2.js +0 -1408
  120. package/dist/components/le-button2.js.map +0 -1
  121. package/dist/components/le-card.js +0 -83
  122. package/dist/components/le-card.js.map +0 -1
  123. package/dist/components/le-checkbox.js +0 -9
  124. package/dist/components/le-checkbox.js.map +0 -1
  125. package/dist/components/le-component.js +0 -9
  126. package/dist/components/le-component.js.map +0 -1
  127. package/dist/components/le-number-input.js +0 -271
  128. package/dist/components/le-number-input.js.map +0 -1
  129. package/dist/components/le-popover.js +0 -9
  130. package/dist/components/le-popover.js.map +0 -1
  131. package/dist/components/le-popover2.js.map +0 -1
  132. package/dist/components/le-popup.js +0 -279
  133. package/dist/components/le-popup.js.map +0 -1
  134. package/dist/components/le-round-progress.js +0 -135
  135. package/dist/components/le-round-progress.js.map +0 -1
  136. package/dist/components/le-slot.js +0 -9
  137. package/dist/components/le-slot.js.map +0 -1
  138. package/dist/components/le-stack.js +0 -198
  139. package/dist/components/le-stack.js.map +0 -1
  140. package/dist/components/le-string-input.js +0 -9
  141. package/dist/components/le-string-input.js.map +0 -1
  142. package/dist/components/le-text.js +0 -398
  143. package/dist/components/le-text.js.map +0 -1
  144. package/dist/components/le-turntable.js +0 -164
  145. package/dist/components/le-turntable.js.map +0 -1
  146. package/dist/docs.d.ts +0 -443
  147. package/dist/docs.json +0 -5185
  148. package/dist/esm/index-D71TXvJa.js +0 -1781
  149. package/dist/esm/index-D71TXvJa.js.map +0 -1
  150. package/dist/esm/index.js +0 -106
  151. package/dist/esm/index.js.map +0 -1
  152. package/dist/esm/le-box.entry.js.map +0 -1
  153. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +0 -1
  154. package/dist/esm/le-button_6.entry.js +0 -1192
  155. package/dist/esm/le-card.entry.js.map +0 -1
  156. package/dist/esm/le-kit.js +0 -21
  157. package/dist/esm/le-kit.js.map +0 -1
  158. package/dist/esm/le-number-input.entry.js.map +0 -1
  159. package/dist/esm/le-popup.entry.js.map +0 -1
  160. package/dist/esm/le-round-progress.entry.js.map +0 -1
  161. package/dist/esm/le-stack.entry.js.map +0 -1
  162. package/dist/esm/le-text.entry.js.map +0 -1
  163. package/dist/esm/le-turntable.entry.js.map +0 -1
  164. package/dist/esm/loader.js +0 -11
  165. package/dist/esm/loader.js.map +0 -1
  166. package/dist/esm/utils-CJLZrrdC.js.map +0 -1
  167. package/dist/index.cjs.js +0 -1
  168. package/dist/index.js +0 -1
  169. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +0 -1
  170. package/dist/le-kit/p-024a764e.entry.js +0 -2
  171. package/dist/le-kit/p-024a764e.entry.js.map +0 -1
  172. package/dist/le-kit/p-073cf0b9.entry.js +0 -2
  173. package/dist/le-kit/p-073cf0b9.entry.js.map +0 -1
  174. package/dist/le-kit/p-0955b105.entry.js +0 -2
  175. package/dist/le-kit/p-0955b105.entry.js.map +0 -1
  176. package/dist/le-kit/p-18d79ee2.entry.js +0 -2
  177. package/dist/le-kit/p-18d79ee2.entry.js.map +0 -1
  178. package/dist/le-kit/p-4b1d3b6d.entry.js +0 -2
  179. package/dist/le-kit/p-4b1d3b6d.entry.js.map +0 -1
  180. package/dist/le-kit/p-79d179bd.entry.js +0 -2
  181. package/dist/le-kit/p-79d179bd.entry.js.map +0 -1
  182. package/dist/le-kit/p-D71TXvJa.js +0 -3
  183. package/dist/le-kit/p-D71TXvJa.js.map +0 -1
  184. package/dist/le-kit/p-c8a9288e.entry.js +0 -2
  185. package/dist/le-kit/p-c8a9288e.entry.js.map +0 -1
  186. package/dist/le-kit/p-cfc35bd3.entry.js +0 -2
  187. package/dist/le-kit/p-cfc35bd3.entry.js.map +0 -1
  188. package/dist/le-kit/p-d04da1f5.entry.js +0 -2
  189. package/dist/le-kit/p-d04da1f5.entry.js.map +0 -1
  190. package/dist/le-kit/p-qIai5-eB.js +0 -2
  191. package/dist/le-kit/p-qIai5-eB.js.map +0 -1
  192. package/dist/themes/base.css +0 -89
  193. package/dist/themes/dark.css +0 -100
  194. package/dist/themes/default.css +0 -108
  195. package/dist/themes/gradient.css +0 -100
  196. package/dist/themes/index.css +0 -413
  197. package/dist/themes/minimal.css +0 -100
  198. package/dist/themes/warm.css +0 -100
@@ -1 +0,0 @@
1
- {"version":3,"file":"le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js","sources":["src/components/le-button/le-button.default.css?tag=le-button&encapsulation=shadow","src/components/le-button/le-button.tsx","src/components/le-checkbox/le-checkbox.css?tag=le-checkbox&encapsulation=shadow","src/components/le-checkbox/le-checkbox.tsx","src/components/le-component/le-component.css?tag=le-component&encapsulation=shadow","src/components/le-component/le-component.tsx","src/components/le-popover/le-popover.css?tag=le-popover&encapsulation=shadow","src/components/le-popover/le-popover.tsx","src/components/le-slot/le-slot.default.css?tag=le-slot&encapsulation=shadow","src/components/le-slot/le-slot.tsx","src/components/le-string-input/le-string-input.css?tag=le-string-input&encapsulation=shadow","src/components/le-string-input/le-string-input.tsx"],"sourcesContent":["/**\n * Default mode styles for le-button\n * Uses global design tokens with component-specific overrides\n */\n:host {\n display: inline-block;\n \n /* Component-specific tokens */\n --le-button-border-radius: var(--le-radius-md);\n --le-button-padding-x: 0.4rem;\n --le-button-padding-y: 0.4rem;\n --le-button-small-padding: 0.25rem;\n --le-button-font-size: var(--le-font-size-md);\n --le-button-font-weight: var(--le-font-weight-medium);\n --le-button-transition: var(--le-transition-fast);\n --le-button-icon-aspect-ratio: 1;\n \n /* Internal state variables - set by color classes */\n --_btn-bg: var(--le-color-primary);\n --_btn-bg-hover: var(--le-color-primary-dark);\n --_btn-bg-system: var(--le-color-black);\n --_btn-color: var(--le-color-primary-contrast);\n --_btn-border-color: var(--le-color-primary);\n}\n\n:host([full-width]) {\n display: block;\n width: 100%;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--le-spacing-3);\n width: 100%;\n padding: var(--le-button-padding-y) var(--le-button-padding-x);\n border: 1px solid var(--_btn-border-color);\n border-radius: var(--le-button-border-radius);\n background: var(--_btn-bg);\n color: var(--_btn-color);\n font-family: var(--le-font-family-base);\n font-size: var(--le-button-font-size);\n font-weight: var(--le-button-font-weight);\n line-height: var(--le-line-height-tight);\n text-decoration: none;\n cursor: pointer;\n transition: \n background-color var(--le-button-transition) var(--le-transition-easing),\n border-color var(--le-button-transition) var(--le-transition-easing),\n box-shadow var(--le-button-transition) var(--le-transition-easing),\n transform var(--le-button-transition) var(--le-transition-easing);\n}\n\n.button:hover:not(:disabled) {\n background: var(--_btn-bg-hover);\n border-color: var(--_btn-bg-hover);\n}\n\n.button:active:not(:disabled) {\n transform: translateY(1px);\n}\n\n.button:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* ===========================================\n * COLOR VARIANTS - Use theme semantic colors\n * =========================================== */\n\n/* Primary (default) */\n:host > le-component.color-primary {\n --_btn-bg: var(--le-color-primary);\n --_btn-bg-hover: var(--le-color-primary-dark);\n --_btn-color: var(--le-color-primary-contrast);\n --_btn-border-color: var(--le-color-primary);\n}\n\n/* Secondary */\n:host > le-component.color-secondary {\n --_btn-bg: var(--le-color-secondary);\n --_btn-bg-hover: var(--le-color-secondary-dark);\n --_btn-color: var(--le-color-secondary-contrast);\n --_btn-border-color: var(--le-color-secondary);\n}\n\n/* Success */\n:host > le-component.color-success {\n --_btn-bg: var(--le-color-success);\n --_btn-bg-hover: var(--le-color-success-dark);\n --_btn-color: var(--le-color-success-contrast);\n --_btn-border-color: var(--le-color-success);\n}\n\n/* Warning */\n:host > le-component.color-warning {\n --_btn-bg: var(--le-color-warning);\n --_btn-bg-hover: var(--le-color-warning-dark);\n --_btn-color: var(--le-color-warning-contrast);\n --_btn-border-color: var(--le-color-warning);\n}\n\n/* Danger */\n:host > le-component.color-danger {\n --_btn-bg: var(--le-color-danger);\n --_btn-bg-hover: var(--le-color-danger-dark);\n --_btn-color: var(--le-color-danger-contrast);\n --_btn-border-color: var(--le-color-danger);\n}\n\n/* Info */\n:host > le-component.color-info {\n --_btn-bg: var(--le-color-info);\n --_btn-bg-hover: var(--le-color-info-dark);\n --_btn-color: var(--le-color-info-contrast);\n --_btn-border-color: var(--le-color-info);\n}\n\n/* ===========================================\n * STYLE VARIANTS\n * =========================================== */\n\n/* Solid (default) - already styled by color classes */\n:host > le-component.variant-solid .button {\n box-shadow: var(--le-shadow-sm);\n}\n\n:host > le-component.variant-solid .button:hover:not(:disabled) {\n box-shadow: var(--le-shadow-md);\n}\n\n/* Outlined */\n:host > le-component.variant-outlined .button {\n background: transparent;\n color: var(--_btn-bg);\n border-color: var(--_btn-border-color);\n}\n\n:host > le-component.variant-outlined .button:hover:not(:disabled) {\n background: var(--_btn-bg);\n color: var(--_btn-color);\n}\n\n/* Clear (ghost) */\n:host > le-component.variant-clear .button {\n background: transparent;\n color: var(--_btn-bg);\n border-color: transparent;\n}\n\n:host > le-component.variant-clear .button:hover:not(:disabled) {\n background: var(--le-color-gray-100);\n border-color: transparent;\n}\n\n/* System (controls without access) */\n:host > le-component.variant-system .button {\n background: transparent;\n color: var(--_btn-bg-system);\n border-color: transparent;\n}\n\n/* ===========================================\n * SIZES\n * =========================================== */\n:host > le-component.size-small .button {\n --le-button-padding-x: 0.4rem;\n --le-button-padding-y: 0.3rem;\n --le-button-padding-top: 0.35rem;\n --le-button-font-size: var(--le-button-small-font-size, var(--le-font-size-xs));\n}\n\n:host > le-component.size-large .button {\n --le-button-padding-x: 0.9rem;\n --le-button-padding-y: 0.6rem;\n --le-button-font-size: var(--le-font-size-xl);\n}\n\n/* ===========================================\n * STATES & MODIFIERS\n * =========================================== */\n\n/* Full width */\n:host > le-component.full-width {\n display: block;\n width: 100%;\n}\n\n/* Selected state */\n:host > le-component.selected .button {\n box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n:host > le-component.variant-outlined.selected .button,\n:host > le-component.variant-clear.selected .button {\n background: var(--_btn-bg);\n color: var(--_btn-color);\n}\n\n/* Icon only */\n:host > le-component.icon-only .button {\n padding: 0.5rem;\n padding-bottom: 0.6rem;\n aspect-ratio: var(--le-button-icon-aspect-ratio, 1);\n}\n\n:host > le-component.icon-only.size-small .button {\n padding: var(--le-button-small-padding, 0.25rem);\n}\n\n:host > le-component.icon-only.size-large .button {\n padding: 0.75rem;\n}\n\n/* Hide content in icon-only mode */\n:host > le-component.icon-only .content {\n display: none;\n}\n\n/* ===========================================\n * CONTENT (le-slot wrapper)\n * =========================================== */\n.content {\n display: inline;\n}\n\n.content:empty {\n display: none;\n}\n\n/* ===========================================\n * ICON WRAPPERS & SLOTS\n * =========================================== */\n.icon-start,\n.icon-only,\n.icon-end {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.icon-start:empty,\n.icon-only:empty,\n.icon-end:empty {\n display: none;\n}\n\n::slotted([slot=\"icon-start\"]),\n::slotted([slot=\"icon-only\"]),\n::slotted([slot=\"icon-end\"]) {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.125em;\n height: 1.125em;\n}\n","import { Component, Prop, h, Element, Fragment, Event, EventEmitter } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A flexible button component with multiple variants and states.\n *\n * @slot - Button text content\n * @slot icon-start - Icon before the text\n * @slot icon-end - Icon after the text\n *\n * @cssprop --le-button-bg - Button background color\n * @cssprop --le-button-color - Button text color\n * @cssprop --le-button-border-radius - Button border radius\n * @cssprop --le-button-padding-x - Button horizontal padding\n * @cssprop --le-button-padding-y - Button vertical padding\n *\n * @csspart button - The native button element\n * @csspart content - The button content wrapper\n *\n * @cmsEditable true\n * @cmsCategory Actions\n */\n@Component({\n tag: 'le-button',\n styleUrl: 'le-button.default.css',\n shadow: true,\n})\nexport class LeButton {\n @Element() el: HTMLElement;\n\n /**\n * Mode of the popover should be 'default' for internal use\n */\n @Prop({ mutable: true, reflect: true }) mode: 'default' | 'admin';\n\n /**\n * Button variant style\n * @allowedValues solid | outlined | clear\n */\n @Prop() variant: 'solid' | 'outlined' | 'clear' | 'system' = 'solid';\n\n /**\n * Button color theme (uses theme semantic colors)\n * @allowedValues primary | secondary | success | warning | danger | info\n */\n @Prop() color: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info' = 'primary';\n\n /**\n * Button size\n * @allowedValues small | medium | large\n */\n @Prop() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether the button is in a selected/active state\n */\n @Prop() selected: boolean = false;\n\n /**\n * Whether the button takes full width of its container\n */\n @Prop({ reflect: true }) fullWidth: boolean = false;\n\n /**\n * Whether the button displays only an icon (square aspect ratio)\n */\n @Prop() iconOnly: boolean = false;\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The button type attribute\n * @allowedValues button | submit | reset\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Optional href to make the button act as a link\n */\n @Prop() href?: string;\n\n /**\n * Link target when href is set\n */\n @Prop() target?: string;\n\n /**\n * Emitted when the button is clicked.\n * This is a custom event that wraps the native click but ensures the target is the le-button.\n */\n @Event({ eventName: 'click' }) leClick: EventEmitter<PointerEvent>;\n\n private handleClick = (event: PointerEvent) => {\n // We stop the internal button click from bubbling up\n event.stopPropagation();\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n \n // And emit our own click event from the host element\n this.leClick.emit(event);\n };\n\n render() {\n const classes = classnames(`variant-${this.variant}`, `color-${this.color}`, `size-${this.size}`, {\n 'selected': this.selected,\n 'full-width': this.fullWidth,\n 'icon-only': this.iconOnly,\n 'disabled': this.disabled,\n });\n\n const TagType = this.href ? 'a' : 'button';\n const attrs = this.href ? { href: this.href, target: this.target, role: 'button' } : { type: this.type, disabled: this.disabled };\n\n return (\n <le-component component=\"le-button\" hostClass={classes}>\n <TagType class=\"button\" part=\"button\" {...attrs} onClick={this.handleClick}>\n {this.iconOnly ? (\n <span class=\"icon-start\">\n <slot name=\"icon-only\"></slot>\n </span>\n ) : (\n <Fragment>\n <span class=\"icon-start\">\n <slot name=\"icon-start\"></slot>\n </span>\n <le-slot name=\"\" description=\"Button text\" type=\"text\" class=\"content\" part=\"content\">\n <slot></slot>\n </le-slot>\n <span class=\"icon-end\">\n <slot name=\"icon-end\"></slot>\n </span>\n </Fragment>\n )}\n </TagType>\n </le-component>\n );\n }\n}\n",":host {\n display: block;\n --le-checkbox-size: 18px;\n --le-checkbox-color: var(--le-color-primary, #007bff);\n --le-checkbox-label-color: var(--le-color-text-primary, #333);\n --le-checkbox-desc-color: var(--le-color-text-secondary, #666);\n --le-checkbox-border-radius: var(--le-radius-sm, 2px);\n --le-checkbox-marker-color: var(--le-color-surface, #fff);\n}\n\n.le-checkbox-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.le-checkbox-label {\n display: inline-flex;\n align-items: flex-start;\n gap: 8px;\n cursor: pointer;\n user-select: none;\n}\n\n:host([disabled]) .le-checkbox-label {\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.le-checkbox-input {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 1.4em;\n}\n\ninput[type=\"checkbox\"] {\n appearance: none;\n -webkit-appearance: none;\n width: var(--le-checkbox-size);\n height: var(--le-checkbox-size);\n border: var(--le-border-width, 2px) solid var(--le-checkbox-color);\n border-radius: var(--le-checkbox-border-radius);\n margin: 0;\n margin-top: 2px; /* Align with text */\n position: relative;\n cursor: inherit;\n background-color: transparent;\n transition: background-color 0.2s, border-color 0.2s;\n}\n\ninput[type=\"checkbox\"]:checked {\n background-color: var(--le-checkbox-color);\n}\n\ninput[type=\"checkbox\"]:checked::after {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: calc(var(--le-checkbox-size) / 5);\n right: 0;\n margin: auto;\n width: calc(var(--le-checkbox-size) / 4);\n height: calc(var(--le-checkbox-size) / 2);\n border: solid var(--le-checkbox-marker-color, #fff);\n border-width: 0 calc(var(--le-checkbox-size) / 10) calc(var(--le-checkbox-size) / 10) 0;\n transform: rotate(45deg);\n}\n\ninput[type=\"checkbox\"]:focus-visible {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n.le-checkbox-text {\n flex: 1;\n flex-wrap: wrap;\n color: var(--le-checkbox-label-color);\n line-height: 1.5;\n text-align: start;\n}\n\n.le-checkbox-description {\n margin-left: calc(var(--le-checkbox-size) + 8px);\n font-size: 0.875em;\n color: var(--le-checkbox-desc-color);\n line-height: 1.4;\n}\n\n:host [slot=\"description\"] {\n margin: 0;\n}\n","import { Component, Prop, Event, EventEmitter, h, Element } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A checkbox component with support for labels, descriptions, and external IDs.\n *\n * @slot - The label text for the checkbox\n * @slot description - Additional description text displayed below the label\n *\n * @cssprop --le-checkbox-size - Size of the checkbox input\n * @cssprop --le-checkbox-color - Color of the checkbox when checked\n * @cssprop --le-checkbox-label-color - Color of the label text\n * @cssprop --le-checkbox-desc-color - Color of the description text\n */\n@Component({\n tag: 'le-checkbox',\n styleUrl: 'le-checkbox.css',\n shadow: true,\n})\nexport class LeCheckbox {\n @Element() el: HTMLElement;\n\n /**\n * Whether the checkbox is checked\n */\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\n\n /**\n * Whether the checkbox is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The name of the checkbox input\n */\n @Prop() name: string;\n\n /**\n * The value of the checkbox input\n */\n @Prop() value: string;\n\n /**\n * External ID for linking with external systems (e.g. database ID, PDF form field ID)\n */\n @Prop() externalId: string;\n\n /**\n * Emitted when the checked state changes\n */\n @Event({ eventName: 'change' }) leChange: EventEmitter<{ checked: boolean; value: string; name: string; externalId: string }>;\n\n private handleChange = (event: Event) => {\n // We stop the internal button click from bubbling up\n event.stopPropagation();\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.leChange.emit({\n checked: this.checked,\n value: this.value,\n name: this.name,\n externalId: this.externalId\n });\n };\n\n render() {\n return (\n <le-component component=\"le-checkbox\" hostClass={classnames({ 'disabled': this.disabled })}>\n <div class=\"le-checkbox-wrapper\">\n <label class=\"le-checkbox-label\">\n <span class=\"le-checkbox-input\">\n <input\n type=\"checkbox\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n disabled={this.disabled}\n onChange={this.handleChange}\n />\n </span>\n <span class=\"le-checkbox-text\">\n <le-slot name=\"\" type=\"text\" tag=\"span\">\n <slot></slot>\n </le-slot>\n </span>\n </label>\n \n <div class=\"le-checkbox-description\">\n <le-slot name=\"description\" type=\"text\" tag=\"div\" label=\"Description\">\n <slot name=\"description\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n","/**\n * le-component styles\n * \n * In default mode, the component is invisible (passthrough).\n * In admin mode, it shows a wrapper with header and settings.\n */\n\n:host {\n display: contents;\n}\n\n:host(.admin-mode) {\n display: block;\n}\n\n/* Admin mode wrapper */\n.le-component-wrapper {\n position: relative;\n border: 2px dashed var(--le-admin-border-color, #90caf9);\n border-radius: var(--le-radius-md, 8px);\n background: var(--le-admin-bg, rgba(144, 202, 249, 0.05));\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n}\n\n.le-component-wrapper:hover {\n border-color: var(--le-admin-border-hover, #42a5f5);\n box-shadow: 0 0 0 2px var(--le-admin-glow, rgba(66, 165, 245, 0.2));\n}\n\n/* Component header */\n.le-component-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--le-spacing-1, 4px);\n padding: 0 0 0 var(--le-spacing-1, 4px);\n background: var(--le-admin-header-bg, rgba(144, 202, 249, 0.15));\n border-bottom: 1px solid var(--le-admin-border-color, #90caf9);\n border-radius: var(--le-radius-md, 8px) var(--le-radius-md, 8px) 0 0;\n font-size: var(--le-font-size-xs, 11px);\n}\n\n.le-component-name {\n font-weight: var(--le-font-weight-medium, 500);\n color: var(--le-admin-text, #1976d2);\n text-transform: capitalize;\n text-align: start;\n overflow: hidden;\n width: 0;\n flex: 1 1 0%;\n}\n\n/* Component content area */\n.le-component-content {\n padding: var(--le-space-xs, 4px);\n}\n\n.le-component-trigger {\n font-size: 24px;\n line-height: 0px;\n width: 12px;\n height: 12px;\n}\n.le-component-button {\n width: 20px;\n}\n\n/* Property editor styles */\n.property-editor {\n display: flex;\n flex-direction: column;\n gap: var(--le-space-sm, 8px);\n max-width: 380px;\n}\n\n.property-field {\n display: flex;\n flex-direction: column;\n gap: var(--le-space-xs, 4px);\n}\n\n.property-field label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n font-size: var(--le-font-size-sm, 13px);\n font-weight: var(--le-font-weight-medium, 500);\n color: var(--le-color-text, #333);\n}\n\n.property-hint {\n font-size: var(--le-font-size-xs, 11px);\n font-weight: normal;\n color: var(--le-color-text-secondary, #666);\n line-height: 1.3;\n}\n\n.property-field input[type=\"text\"],\n.property-field input[type=\"number\"],\n.property-field select {\n padding: var(--le-space-xs, 4px) var(--le-space-sm, 8px);\n border: 1px solid var(--le-color-border, #ddd);\n border-radius: var(--le-radius-md, 7px);\n font-size: var(--le-font-size-sm, 13px);\n font-family: inherit;\n background: var(--le-color-surface, #fff);\n color: var(--le-color-text, #333);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\n\n.property-field input:focus,\n.property-field select:focus {\n outline: none;\n border-color: var(--le-color-primary, #1976d2);\n box-shadow: 0 0 0 2px var(--le-color-primary-light, rgba(25, 118, 210, 0.2));\n}\n\n/* Checkbox field */\n.property-field--checkbox {\n flex-direction: column;\n}\n\n.property-field--checkbox label {\n flex-direction: row;\n align-items: center;\n gap: var(--le-space-sm, 8px);\n cursor: pointer;\n}\n\n.property-field--checkbox input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n accent-color: var(--le-color-primary, #1976d2);\n}\n\n.property-field--checkbox .property-hint {\n margin-left: 24px;\n}\n\n/* No properties message */\n.no-properties {\n margin: 0;\n padding: var(--le-space-sm, 8px);\n font-size: var(--le-font-size-sm, 13px);\n color: var(--le-color-text-secondary, #666);\n text-align: center;\n}\n\n/* Property editor container */\n.property-editor-container {\n display: flex;\n flex-direction: column;\n gap: var(--le-space-md, 12px);\n}\n\n/* Actions section at bottom of editor */\n.property-editor-actions {\n padding-top: var(--le-space-sm, 8px);\n border-top: 1px solid var(--le-color-border, #e5e5e5);\n}\n\n/* Delete component button */\n.delete-component-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--le-space-xs, 4px);\n width: 100%;\n padding: var(--le-space-sm, 8px) var(--le-space-md, 12px);\n border: 1px solid var(--le-color-danger, #e53935);\n border-radius: var(--le-radius-md, 6px);\n background: transparent;\n color: var(--le-color-danger, #e53935);\n font-size: var(--le-font-size-sm, 13px);\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s, color 0.15s;\n}\n\n.delete-component-btn:hover {\n background: var(--le-color-danger, #e53935);\n color: white;\n}\n\n.delete-component-btn:active {\n opacity: 0.9;\n}\n","import { Component, Prop, State, h, Host, Element } from '@stencil/core';\nimport { classnames, observeModeChanges } from '../../utils/utils';\n\n/**\n * Component wrapper for admin mode editing.\n *\n * This component is used internally by other components to provide admin-mode \n * editing capabilities. It wraps the component's rendered output and shows\n * a settings popover for editing properties.\n *\n * In default mode, it acts as a simple passthrough (display: contents).\n * In admin mode, it shows a border, component name header, and settings popover.\n *\n * The host element is found automatically by traversing up through the shadow DOM.\n *\n * Usage inside a component's render method:\n * ```tsx\n * render() {\n * return (\n * <le-component component=\"le-card\">\n * <Host>...</Host>\n * </le-component>\n * );\n * }\n * ```\n *\n * @slot - The component's rendered content\n *\n * @cmsInternal true\n * @cmsCategory System\n */\n@Component({\n tag: 'le-component',\n styleUrl: 'le-component.css',\n shadow: true,\n})\nexport class LeComponent {\n @Element() el: HTMLElement;\n\n /**\n * The tag name of the component (e.g., 'le-card').\n * Used to look up property metadata and display the component name.\n */\n @Prop() component!: string;\n\n /**\n * Optional display name for the component.\n * If not provided, the tag name will be formatted as the display name.\n */\n @Prop() displayName?: string;\n\n /**\n * Classes to apply to the host element.\n * Allows parent components to pass their styling classes.\n */\n @Prop() hostClass?: string;\n\n /**\n * Inline styles to apply to the host element.\n * Allows parent components to pass dynamic styles (e.g., flex properties).\n */\n @Prop() hostStyle?: { [key: string]: string };\n\n /**\n * Reference to the host element (found automatically from parent)\n */\n private hostElement?: HTMLElement;\n\n /**\n * Internal state to track admin mode\n */\n @State() private adminMode: boolean = false;\n\n /**\n * Component metadata loaded from Custom Elements Manifest\n */\n @State() private componentMeta: ComponentMetadata | null = null;\n\n /**\n * Current property values of the host component\n */\n @State() private propertyValues: Record<string, any> = {};\n\n private disconnectModeObserver?: () => void;\n\n connectedCallback() {\n // Find the host element - le-component is rendered inside the component's shadow DOM,\n // so we need to find the shadow root's host element\n this.findHostElement();\n\n this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {\n this.adminMode = mode === 'admin';\n // Load metadata and refresh property values only when entering admin mode\n if (this.adminMode) {\n if (!this.componentMeta) {\n this.loadComponentMetadata();\n } else {\n this.readPropertyValues();\n }\n }\n });\n }\n\n /**\n * Find the host element by traversing up through shadow DOM\n */\n private findHostElement() {\n // Get the shadow root that contains this le-component\n const rootNode = this.el.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n // The host of this shadow root is our target component (e.g., le-card)\n this.hostElement = rootNode.host as HTMLElement;\n }\n }\n\n componentDidLoad() {\n // Read initial property values from the host element\n this.readPropertyValues();\n }\n\n disconnectedCallback() {\n this.disconnectModeObserver?.();\n }\n\n /**\n * Formats a tag name into a display name\n * e.g., 'le-card' -> 'Card'\n */\n private formatDisplayName(tagName: string): string {\n return tagName\n .replace(/^le-/, '') // Remove 'le-' prefix\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n /**\n * Load component metadata from the Custom Elements Manifest\n */\n private async loadComponentMetadata() {\n try {\n // Fetch the manifest - in production this would be bundled or cached\n const response = await fetch('/custom-elements.json');\n const manifest = await response.json();\n\n // Find the component definition\n for (const module of manifest.modules) {\n for (const declaration of module.declarations || []) {\n if (declaration.tagName === this.component) {\n const attributes = (declaration.attributes || []).filter(\n (attr: AttributeMetadata) => !this.isInternalAttribute(attr.name)\n );\n this.componentMeta = {\n tagName: declaration.tagName,\n description: declaration.description,\n attributes,\n };\n // console.log(`[le-component] Loaded metadata for ${this.component}:`, this.componentMeta);\n // Read property values after metadata is loaded\n this.readPropertyValues();\n return;\n }\n }\n }\n // console.warn(`[le-component] No metadata found for component: ${this.component}`);\n } catch (error) {\n // console.warn(`[le-component] Failed to load metadata for component: ${this.component}`, error);\n }\n }\n\n /**\n * Check if an attribute is internal (should not be shown in editor)\n */\n private isInternalAttribute(name: string): boolean {\n const internalAttrs = ['mode', 'theme', 'class', 'style', 'id', 'slot'];\n return internalAttrs.includes(name);\n }\n\n /**\n * Read current property values from the host element\n */\n private readPropertyValues() {\n if (!this.hostElement || !this.componentMeta) return;\n\n const values: Record<string, any> = {};\n for (const attr of this.componentMeta.attributes) {\n const value = this.hostElement.getAttribute(attr.name);\n values[attr.name] = this.parseAttributeValue(value, attr.type?.text);\n }\n this.propertyValues = values;\n }\n\n /**\n * Parse an attribute value based on its type\n */\n private parseAttributeValue(value: string | null, type?: string): any {\n if (value === null) return undefined;\n \n if (type === 'boolean') {\n return value !== null && value !== 'false';\n }\n if (type === 'number') {\n return parseFloat(value);\n }\n return value;\n }\n\n /**\n * Handle property value changes from the editor\n */\n private handlePropertyChange(attrName: string, value: any, type?: string) {\n if (!this.hostElement) return;\n\n // Update the host element's attribute\n if (type === 'boolean') {\n if (value) {\n this.hostElement.setAttribute(attrName, '');\n } else {\n this.hostElement.removeAttribute(attrName);\n }\n } else if (value === undefined || value === '') {\n this.hostElement.removeAttribute(attrName);\n } else {\n this.hostElement.setAttribute(attrName, String(value));\n }\n\n // Update local state\n this.propertyValues = { ...this.propertyValues, [attrName]: value };\n }\n\n /**\n * Delete this component from the DOM\n */\n private deleteComponent() {\n if (!this.hostElement) return;\n\n // Confirm deletion\n const name = this.displayName || this.formatDisplayName(this.component);\n if (!confirm(`Delete this ${name}?`)) return;\n\n // Remove the host element from its parent\n const parent = this.hostElement.parentElement;\n if (parent) {\n this.hostElement.remove();\n }\n }\n\n /**\n * Render the property editor form\n */\n private renderPropertyEditor() {\n const hasProperties = this.componentMeta && this.componentMeta.attributes.length > 0;\n\n return (\n <div class=\"property-editor-container\">\n {hasProperties ? (\n <form class=\"property-editor\" onSubmit={(e) => e.preventDefault()}>\n {this.componentMeta!.attributes.map(attr => this.renderPropertyField(attr))}\n </form>\n ) : (\n <p class=\"no-properties\">No editable properties</p>\n )}\n <div class=\"property-editor-actions\">\n <le-button\n type=\"button\"\n variant=\"outlined\"\n color=\"danger\"\n full-width\n onClick={() => this.deleteComponent()}\n >\n <span slot=\"icon-start\">🗑️</span>\n <span>Delete Component</span>\n </le-button>\n </div>\n </div>\n );\n }\n\n /**\n * Render a single property field based on its type\n */\n private renderPropertyField(attr: AttributeMetadata) {\n const value = this.propertyValues[attr.name];\n const type = attr.type?.text || 'string';\n\n // Check if type is a union of string literals (e.g., \"'default' | 'outlined' | 'elevated'\")\n const enumMatch = type.match(/^'[^']+'/);\n if (enumMatch) {\n const options = type.split('|').map(opt => opt.trim().replace(/'/g, ''));\n return (\n <div class=\"property-field\">\n <label htmlFor={`prop-${attr.name}`}>\n {attr.name}\n {attr.description && <span class=\"property-hint\">{attr.description}</span>}\n </label>\n <select\n id={`prop-${attr.name}`}\n onChange={(e) => this.handlePropertyChange(attr.name, (e.target as HTMLSelectElement).value, type)}\n >\n {options.map(opt => (\n <option value={opt} selected={value === opt || (!value && attr.default?.replace(/'/g, '') === opt)}>{opt}</option>\n ))}\n </select>\n </div>\n );\n }\n\n // Boolean type\n if (type === 'boolean') {\n return (\n <div class=\"property-field property-field--checkbox\">\n <le-checkbox\n name={`prop-${attr.name}`}\n checked={value === true || value === ''}\n onChange={(e) => this.handlePropertyChange(attr.name, (e.target as HTMLInputElement).checked, type)}\n >\n {attr.name}\n {attr.description && <div slot=\"description\">{attr.description}</div>}\n </le-checkbox>\n </div>\n );\n }\n\n // Number type\n if (type === 'number') {\n return (\n <div class=\"property-field\">\n <label htmlFor={`prop-${attr.name}`}>\n {attr.name}\n {attr.description && <span class=\"property-hint\">{attr.description}</span>}\n </label>\n <input\n type=\"number\"\n id={`prop-${attr.name}`}\n value={value ?? ''}\n placeholder={attr.default}\n onChange={(e) => this.handlePropertyChange(attr.name, (e.target as HTMLInputElement).value, type)}\n />\n </div>\n );\n }\n\n // Default: string/text input\n return (\n <div class=\"property-field\">\n <le-string-input\n name={`prop-${attr.name}`}\n label={attr.name}\n value={value ?? ''}\n placeholder={attr.default?.replace(/'/g, '')}\n onChange={(e: any) => this.handlePropertyChange(attr.name, e.detail.value, type)}\n >\n <span slot=\"description\">{attr.description}</span>\n </le-string-input>\n </div>\n );\n }\n\n render() {\n const name = this.displayName || this.formatDisplayName(this.component);\n\n // In default mode, just pass through content with host classes\n if (!this.adminMode) {\n return (\n <Host class={classnames(this.component, this.hostClass)} style={this.hostStyle}>\n <slot></slot>\n </Host>\n );\n }\n\n // In admin mode, show wrapper with header and settings\n return (\n <Host class={classnames(this.component, this.hostClass, 'admin-mode')} style={this.hostStyle}>\n <div class=\"le-component-wrapper\">\n <div class=\"le-component-header\">\n <span class=\"le-component-name\">{name}</span>\n <le-popover \n popoverTitle={`${name} Settings`}\n position=\"right\"\n align=\"start\"\n min-width=\"300px\"\n mode=\"default\"\n >\n <le-button\n type=\"button\"\n class=\"le-component-button\"\n slot=\"trigger\"\n variant=\"clear\"\n size=\"small\"\n aria-label=\"Edit component properties\"\n icon-only\n >\n <span class=\"le-component-trigger\" slot=\"icon-only\">⚙</span>\n </le-button>\n {this.renderPropertyEditor()}\n </le-popover>\n </div>\n <div class=\"le-component-content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n/**\n * Type definitions for component metadata\n */\ninterface ComponentMetadata {\n tagName: string;\n description?: string;\n attributes: AttributeMetadata[];\n}\n\ninterface AttributeMetadata {\n name: string;\n fieldName?: string;\n description?: string;\n default?: string;\n type?: {\n text: string;\n };\n}\n","/* ============================================\n le-popover.css\n Popover using native HTML Popover API\n ============================================ */\n\n:host {\n display: inline-block;\n position: relative;\n}\n\n/* ============================================\n Trigger\n ============================================ */\n\n.le-popover-trigger {\n display: inline-flex;\n cursor: pointer;\n}\n\n.le-popover-default-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid var(--le-color-border, #e0e0e0);\n border-radius: var(--le-radius-md, 6px);\n background: var(--le-color-surface, #fff);\n color: var(--le-color-text-secondary, #666);\n font-size: 16px;\n cursor: pointer;\n transition: all var(--le-transition-fast, 0.15s ease);\n}\n\n.le-popover-default-trigger:hover {\n border-color: var(--le-color-primary, #2196f3);\n color: var(--le-color-primary, #2196f3);\n background: var(--le-color-primary-light, rgba(33, 150, 243, 0.1));\n}\n\n/* ============================================\n Popover Content (native popover)\n ============================================ */\n\n.le-popover-content {\n /* Reset native popover defaults */\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n \n /* Positioning - will be set via JS */\n position: fixed;\n inset: unset;\n \n /* Styling */\n background: var(--le-color-surface, #ffffff);\n border: 1px solid var(--le-color-border, #e0e0e0);\n border-radius: var(--le-radius-lg, 8px);\n box-shadow: var(--le-shadow-lg, 0 4px 12px rgba(0, 0, 0, 0.15));\n overflow: hidden;\n font-family: var(--le-font-family, system-ui, -apple-system, sans-serif);\n font-size: var(--le-font-size-sm, 0.875rem);\n color: var(--le-color-text, #333);\n \n /* Animation */\n opacity: 0;\n transform: scale(0.95);\n transition: opacity 0.15s ease, transform 0.15s ease, display 0.15s ease allow-discrete;\n}\n\n/* When popover is open */\n.le-popover-content:popover-open {\n opacity: 1;\n transform: scale(1);\n}\n\n/* Starting style for animation (CSS Anchor Positioning spec) */\n@starting-style {\n .le-popover-content:popover-open {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n\n/* ============================================\n Header\n ============================================ */\n\n.le-popover-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--le-space-xs, 4px) var(--le-space-xs, 4px) var(--le-space-xs, 4px) var(--le-space-sm, 8px);\n border-bottom: 1px solid var(--le-color-border, #e0e0e0);\n background: var(--le-color-surface-alt, #f9f9f9);\n min-height: 32px;\n}\n\n.le-popover-title {\n font-weight: var(--le-font-weight-semibold, 600);\n font-size: var(--le-font-size-sm, 0.875rem);\n color: var(--le-color-text, #333);\n}\n\n.le-popover-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--le-color-text-secondary, #666);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: var(--le-radius-sm, 4px);\n transition: background-color 0.15s, color 0.15s;\n}\n\n.le-popover-close:hover {\n background: var(--le-color-surface-hover, rgba(0, 0, 0, 0.05));\n color: var(--le-color-text, #333);\n}\n\n/* ============================================\n Body\n ============================================ */\n\n.le-popover-body {\n padding: var(--le-space-md, 12px);\n}\n\n/* ============================================\n Scrollable content\n ============================================ */\n\n.le-popover-content[style*=\"overflow-y: auto\"] .le-popover-body {\n overflow-y: auto;\n}\n","import { Component, Prop, Method, Event, EventEmitter, State, h, Element } from '@stencil/core';\n\n/**\n * A popover component for displaying floating content.\n * \n * Uses the native HTML Popover API for proper layering with dialogs\n * and other top-layer elements. Falls back gracefully in older browsers.\n *\n * @slot - Content to display inside the popover\n * @slot trigger - Element that triggers the popover (optional)\n * \n * @cmsInternal true\n * @cmsCategory System\n */\n@Component({\n tag: 'le-popover',\n styleUrl: 'le-popover.css',\n shadow: true,\n})\nexport class LePopover {\n @Element() el: HTMLElement;\n\n /**\n * Mode of the popover should be 'default' for internal use\n */\n @Prop({ mutable: true, reflect: true }) mode: 'default' | 'admin';\n\n /**\n * Whether the popover is currently open\n */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /**\n * Position of the popover relative to its trigger\n */\n @Prop() position: 'top' | 'bottom' | 'left' | 'right' | 'auto' = 'bottom';\n\n /**\n * Alignment of the popover\n */\n @Prop() align: 'start' | 'center' | 'end' = 'start';\n\n /**\n * Optional title for the popover header\n */\n @Prop() popoverTitle?: string;\n\n /**\n * Whether to show a close button in the header\n */\n @Prop() showClose: boolean = true;\n\n /**\n * Whether clicking outside closes the popover\n */\n @Prop() closeOnClickOutside: boolean = true;\n\n /**\n * Whether pressing Escape closes the popover\n */\n @Prop() closeOnEscape: boolean = true;\n\n /**\n * Offset from the trigger element (in pixels)\n */\n @Prop() offset: number = 8;\n\n /**\n * Fixed width for the popover (e.g., '300px', '20rem')\n */\n @Prop() width?: string;\n\n /**\n * Minimum width for the popover (e.g., '200px', '15rem')\n */\n @Prop() minWidth?: string = '200px';\n\n /**\n * Maximum width for the popover (e.g., '400px', '25rem')\n */\n @Prop() maxWidth?: string;\n\n /**\n * Emitted when the popover opens\n */\n @Event() lePopoverOpen: EventEmitter<void>;\n\n /**\n * Emitted when the popover closes\n */\n @Event() lePopoverClose: EventEmitter<void>;\n\n @State() private isPositioned: boolean = false;\n\n private triggerEl?: HTMLElement;\n private popoverEl?: HTMLElement;\n private uniqueId: string = `le-popover-${Math.random().toString(36).substr(2, 9)}`;\n private scrollParents: Element[] = [];\n\n componentDidLoad() {\n // Listen for toggle events from the native popover API\n this.popoverEl?.addEventListener('toggle', this.handlePopoverToggle as EventListener);\n \n // Listen for other popovers opening to close this one\n document.addEventListener('le-popover-will-open', this.handleOtherPopoverOpen);\n }\n\n disconnectedCallback() {\n this.popoverEl?.removeEventListener('toggle', this.handlePopoverToggle as EventListener);\n document.removeEventListener('le-popover-will-open', this.handleOtherPopoverOpen);\n this.removeScrollListeners();\n }\n\n /**\n * Find all scrollable parent elements\n */\n private getScrollParents(element: Element): Element[] {\n const scrollParents: Element[] = [];\n let parent = element.parentElement;\n \n while (parent) {\n const style = getComputedStyle(parent);\n const overflow = style.overflow + style.overflowY + style.overflowX;\n if (/(auto|scroll)/.test(overflow)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n \n // Always include window for page scroll\n return scrollParents;\n }\n\n /**\n * Add scroll listeners to all scrollable parents\n */\n private addScrollListeners() {\n if (!this.triggerEl) return;\n \n this.scrollParents = this.getScrollParents(this.triggerEl);\n \n // Listen to each scroll parent\n this.scrollParents.forEach(parent => {\n parent.addEventListener('scroll', this.handleScroll, { passive: true });\n });\n \n // Also listen to window scroll and resize\n window.addEventListener('scroll', this.handleScroll, { passive: true });\n window.addEventListener('resize', this.handleScroll, { passive: true });\n }\n\n /**\n * Remove scroll listeners\n */\n private removeScrollListeners() {\n this.scrollParents.forEach(parent => {\n parent.removeEventListener('scroll', this.handleScroll);\n });\n window.removeEventListener('scroll', this.handleScroll);\n window.removeEventListener('resize', this.handleScroll);\n this.scrollParents = [];\n }\n\n private handleScroll = () => {\n if (this.open) {\n this.updatePosition();\n }\n };\n\n private handlePopoverToggle = (event: ToggleEvent) => {\n if (event.newState === 'open') {\n this.open = true;\n this.addScrollListeners();\n this.updatePosition();\n this.lePopoverOpen.emit();\n } else {\n this.open = false;\n this.isPositioned = false;\n this.removeScrollListeners();\n this.lePopoverClose.emit();\n }\n };\n\n private handleOtherPopoverOpen = (event: Event) => {\n const customEvent = event as CustomEvent;\n if (customEvent.detail?.popover === this.el) return;\n \n if (this.open) {\n this.hide();\n }\n };\n\n /**\n * Opens the popover\n */\n @Method()\n async show() {\n document.dispatchEvent(new CustomEvent('le-popover-will-open', {\n detail: { popover: this.el }\n }));\n \n this.popoverEl?.showPopover();\n }\n\n /**\n * Closes the popover\n */\n @Method()\n async hide() {\n this.popoverEl?.hidePopover();\n }\n\n /**\n * Toggles the popover\n */\n @Method()\n async toggle() {\n if (this.open) {\n await this.hide();\n } else {\n await this.show();\n }\n }\n\n private handleTriggerClick = (event: MouseEvent) => {\n event.stopPropagation();\n this.toggle();\n };\n\n private updatePosition() {\n if (!this.triggerEl || !this.popoverEl) return;\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.popoverEl.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const viewportPadding = 8;\n\n let position = this.position;\n let align = this.align;\n\n // Auto-position logic\n const spaceBelow = viewportHeight - triggerRect.bottom - viewportPadding;\n const spaceAbove = triggerRect.top - viewportPadding;\n const spaceRight = viewportWidth - triggerRect.right - viewportPadding;\n const spaceLeft = triggerRect.left - viewportPadding;\n\n if (position === 'auto') {\n if (spaceBelow >= popoverRect.height + this.offset) {\n position = 'bottom';\n } else if (spaceAbove >= popoverRect.height + this.offset) {\n position = 'top';\n } else if (spaceRight >= popoverRect.width + this.offset) {\n position = 'right';\n } else if (spaceLeft >= popoverRect.width + this.offset) {\n position = 'left';\n } else {\n const maxSpace = Math.max(spaceBelow, spaceAbove, spaceRight, spaceLeft);\n if (maxSpace === spaceBelow) position = 'bottom';\n else if (maxSpace === spaceAbove) position = 'top';\n else if (maxSpace === spaceRight) position = 'right';\n else position = 'left';\n }\n }\n\n // Adjust alignment for horizontal overflow\n if (position === 'top' || position === 'bottom') {\n if (align === 'start' && triggerRect.left + popoverRect.width > viewportWidth - viewportPadding) {\n align = 'end';\n } else if (align === 'end' && triggerRect.right - popoverRect.width < viewportPadding) {\n align = 'start';\n } else if (align === 'center') {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n if (triggerCenter - popoverRect.width / 2 < viewportPadding) {\n align = 'start';\n } else if (triggerCenter + popoverRect.width / 2 > viewportWidth - viewportPadding) {\n align = 'end';\n }\n }\n }\n\n // Calculate position\n let top: number = 0;\n let left: number = 0;\n let maxHeight: number | null = null;\n\n switch (position) {\n case 'top':\n top = triggerRect.top - popoverRect.height - this.offset;\n if (top < viewportPadding) {\n maxHeight = triggerRect.top - this.offset - viewportPadding * 2;\n top = viewportPadding;\n }\n break;\n case 'bottom':\n top = triggerRect.bottom + this.offset;\n if (top + popoverRect.height > viewportHeight - viewportPadding) {\n maxHeight = viewportHeight - top - viewportPadding;\n }\n break;\n case 'left':\n left = triggerRect.left - popoverRect.width - this.offset;\n top = triggerRect.top;\n if (left < viewportPadding) left = viewportPadding;\n break;\n case 'right':\n left = triggerRect.right + this.offset;\n top = triggerRect.top;\n if (left + popoverRect.width > viewportWidth - viewportPadding) {\n left = viewportWidth - popoverRect.width - viewportPadding;\n }\n break;\n }\n\n // Calculate horizontal alignment for top/bottom\n if (position === 'top' || position === 'bottom') {\n switch (align) {\n case 'start':\n left = triggerRect.left;\n break;\n case 'center':\n left = triggerRect.left + triggerRect.width / 2 - popoverRect.width / 2;\n break;\n case 'end':\n left = triggerRect.right - popoverRect.width;\n break;\n }\n \n // Constrain to viewport\n if (left < viewportPadding) {\n left = viewportPadding;\n } else if (left + popoverRect.width > viewportWidth - viewportPadding) {\n left = viewportWidth - popoverRect.width - viewportPadding;\n }\n }\n\n // Calculate vertical alignment for left/right\n if (position === 'left' || position === 'right') {\n switch (align) {\n case 'start':\n top = triggerRect.top;\n break;\n case 'center':\n top = triggerRect.top + triggerRect.height / 2 - popoverRect.height / 2;\n break;\n case 'end':\n top = triggerRect.bottom - popoverRect.height;\n break;\n }\n \n if (top < viewportPadding) top = viewportPadding;\n if (top + popoverRect.height > viewportHeight - viewportPadding) {\n maxHeight = viewportHeight - top - viewportPadding;\n }\n }\n\n // Apply styles\n this.popoverEl.style.top = `${top}px`;\n this.popoverEl.style.left = `${left}px`;\n \n if (maxHeight !== null && maxHeight > 100) {\n this.popoverEl.style.maxHeight = `${maxHeight}px`;\n this.popoverEl.style.overflowY = 'auto';\n } else {\n this.popoverEl.style.maxHeight = '';\n this.popoverEl.style.overflowY = '';\n }\n\n this.isPositioned = true;\n }\n\n render() {\n const popoverStyles: Record<string, string> = {\n visibility: this.isPositioned ? 'visible' : 'hidden',\n };\n \n if (this.width) popoverStyles.width = this.width;\n if (this.minWidth) popoverStyles.minWidth = this.minWidth;\n if (this.maxWidth) popoverStyles.maxWidth = this.maxWidth;\n\n return [\n <div \n class=\"le-popover-trigger\" \n ref={(el) => (this.triggerEl = el)}\n onClick={this.handleTriggerClick}\n >\n <slot name=\"trigger\">\n <button type=\"button\" class=\"le-popover-default-trigger\">\n <span>⊕</span>\n </button>\n </slot>\n </div>,\n \n <div\n id={this.uniqueId}\n class=\"le-popover-content\"\n popover={this.closeOnClickOutside ? 'auto' : 'manual'}\n ref={(el) => (this.popoverEl = el)}\n style={popoverStyles}\n >\n {(this.popoverTitle || this.showClose) && (\n <div class=\"le-popover-header\">\n {this.popoverTitle && <span class=\"le-popover-title\">{this.popoverTitle}</span>}\n {this.showClose && (\n <button \n type=\"button\" \n class=\"le-popover-close\"\n onClick={() => this.hide()}\n aria-label=\"Close\"\n >\n ×\n </button>\n )}\n </div>\n )}\n <div class=\"le-popover-body\">\n <slot></slot>\n </div>\n </div>\n ];\n }\n}\n","/**\n * Styles for le-slot component\n * Uses :host(.admin-mode) to toggle between default and admin styles\n */\n\n/* ============================================\n DEFAULT MODE - Invisible passthrough\n ============================================ */\n:host {\n display: contents;\n --le-slot-border-color: #0088ff;\n --le-slot-bg-color: rgba(0, 136, 255, 0.05);\n --le-slot-header-bg: rgb(218, 238, 255);\n --le-slot-label-color: #0066cc;\n --le-slot-description-color: #666;\n --le-slot-required-color: #e53935;\n --le-slot-dropzone-min-height: 20px;\n --le-slot-dropzone-border-color: #ccc;\n}\n\n.le-slot-container,\n.le-slot-header,\n.le-slot-description,\n.le-slot-dropzone,\n.le-slot-input {\n display: none;\n}\n\n/* Hidden slot wrapper - keeps slot in DOM but invisible */\n.hidden-slot {\n display: none;\n}\n\n/* ============================================\n ADMIN MODE - Visible placeholder UI\n ============================================ */\n:host(.admin-mode) {\n display: block;\n flex: 1;\n}\n\n:host(.admin-mode) .le-slot-container {\n position: relative;\n display: flex;\n flex-direction: column;\n border: 2px dashed var(--le-slot-border-color);\n border-radius: 4px;\n background: var(--le-slot-bg-color);\n margin: 4px 0;\n}\n\n:host(.admin-mode) .le-slot-header {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 0 0 0 var(--le-spacing-1, 4px);\n background: var(--le-slot-header-bg);\n border-bottom: 1px solid var(--le-slot-border-color);\n font-size: var(--le-font-size-xs, 11px);\n font-weight: 400;\n text-transform: capitalize;\n}\n:host(.admin-mode) .le-slot-header-no-label {\n justify-content: flex-end;\n height: 16px;\n border: none;\n background-color: transparent;\n}\n\n.le-slot-label {\n color: var(--le-slot-label-color);\n text-align: start;\n overflow: hidden;\n width: 0;\n flex: 1 1 0%;\n}\n\n.le-slot-required {\n color: var(--le-slot-required-color);\n font-weight: bold;\n}\n\n:host(.admin-mode) .le-slot-description {\n display: block;\n padding: 4px 8px;\n font-size: 12px;\n color: var(--le-slot-description-color);\n font-style: italic;\n}\n:host(.admin-mode) .le-slot-description-icon {\n display: inline-block;\n font-size: 9px;\n line-height: 1;\n cursor: pointer;\n color: var(--le-slot-description-color);\n}\n\n:host(.admin-mode) .le-slot-dropzone {\n display: block;\n min-height: var(--le-slot-dropzone-min-height);\n padding: var(--le-spacing-1, 4px);\n position: relative;\n}\n\n:host(.admin-mode) .le-slot-dropzone:empty::before {\n content: 'Drop content here';\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n inset: 8px;\n border: 2px dashed var(--le-slot-dropzone-border-color);\n border-radius: 4px;\n color: #999;\n font-size: 12px;\n pointer-events: none;\n}\n\n/* Highlight when dragging over */\n:host(.admin-mode.drag-over) .le-slot-container {\n border-color: #00cc66;\n background: rgba(0, 204, 102, 0.1);\n}\n\n:host(.admin-mode.drag-over) .le-slot-dropzone:empty::before {\n border-color: #00cc66;\n color: #00cc66;\n content: 'Release to drop';\n}\n\n/* ============================================\n TEXT INPUT STYLES (Admin mode)\n ============================================ */\n:host(.admin-mode) .le-slot-input {\n display: block;\n padding: var(--le-spacing-1, 4px);\n}\n\n:host(.admin-mode) .le-slot-input input,\n:host(.admin-mode) .le-slot-input textarea {\n display: block;\n width: 100%;\n padding: 8px 10px;\n border: 1px solid var(--le-slot-dropzone-border-color);\n border-radius: 4px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.4;\n background: #fff;\n color: #333;\n box-sizing: border-box;\n transition: border-color 0.2s, box-shadow 0.2s;\n}\n\n:host(.admin-mode) .le-slot-input input:focus,\n:host(.admin-mode) .le-slot-input textarea:focus {\n outline: none;\n border-color: var(--le-slot-border-color);\n box-shadow: 0 0 0 3px rgba(0, 136, 255, 0.15);\n}\n\n:host(.admin-mode) .le-slot-input input::placeholder,\n:host(.admin-mode) .le-slot-input textarea::placeholder {\n color: #999;\n}\n\n:host(.admin-mode) .le-slot-input textarea {\n resize: vertical;\n min-height: 60px;\n}\n\n/* Hide the slot content in text/textarea mode - it's just for default value */\n:host(.admin-mode) .le-slot-input slot {\n display: none;\n}\n\n/* ============================================\n INVALID HTML STATE\n ============================================ */\n.le-slot-invalid {\n color: var(--le-slot-required-color);\n font-size: 10px;\n margin-left: auto;\n font-weight: normal;\n text-transform: none;\n}\n\n:host(.admin-mode) .le-slot-input.has-error input,\n:host(.admin-mode) .le-slot-input.has-error textarea {\n border-color: var(--le-slot-required-color);\n background: rgba(229, 57, 53, 0.05);\n}\n\n:host(.admin-mode) .le-slot-input.has-error input:focus,\n:host(.admin-mode) .le-slot-input.has-error textarea:focus {\n border-color: var(--le-slot-required-color);\n box-shadow: 0 0 0 3px rgba(229, 57, 53, 0.15);\n}\n\n\n/* ========================================\n Component Picker (Add Button & Popover)\n ======================================== */\n.le-slot-add-btn {\n font-size: 24px;\n line-height: 0px;\n width: 12px;\n height: 12px;\n}\n\n.le-slot-header-no-label .le-slot-add-btn {\n font-size: 16px;\n}\n\n.le-slot-button {\n width: 20px;\n height: 20px;\n}\n\n:host(.admin-mode) .le-slot-header-no-label.le-slot-header-text {\n height: 0;\n}\n","import { Component, Prop, State, h, Host, Element, Event, EventEmitter } from '@stencil/core';\nimport { classnames, observeModeChanges } from '../../utils/utils';\n\n/**\n * Slot placeholder component for admin/CMS mode.\n *\n * This component renders a visual placeholder for slots when in admin mode,\n * allowing CMS systems to show available drop zones for content or inline editing.\n *\n * In non-admin mode, this component renders nothing and acts as a passthrough.\n *\n * @slot - Default slot for placeholder content or drop zone UI\n *\n * @cmsInternal true\n * @cmsCategory System\n */\n@Component({\n tag: 'le-slot',\n styleUrl: 'le-slot.default.css',\n shadow: true,\n})\nexport class LeSlot {\n @Element() el: HTMLElement;\n\n /**\n * 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\n */\n @Prop() type: 'slot' | 'text' | 'textarea' = 'slot';\n\n /**\n * The name of the slot this placeholder represents.\n * Should match the slot name in the parent component.\n */\n @Prop() name: string = '';\n\n /**\n * Label to display in admin mode.\n * If not provided, the slot name will be used.\n */\n @Prop() label?: string;\n\n /**\n * Description of what content this slot accepts.\n * Shown in admin mode to guide content editors.\n */\n @Prop() description?: string;\n\n /**\n * Comma-separated list of allowed component tags for this slot.\n * Used by CMS to filter available components.\n *\n * @example \"le-card,le-button,le-text\"\n */\n @Prop() allowedComponents?: string;\n\n /**\n * Whether multiple components can be dropped in this slot.\n */\n @Prop() multiple: boolean = true;\n\n /**\n * Whether this slot is required to have content.\n */\n @Prop() required: boolean = false;\n\n /**\n * Placeholder text for text/textarea inputs in admin mode.\n */\n @Prop() placeholder?: string;\n\n /**\n * The HTML tag to create when there's no slotted element.\n * Used with type=\"text\" or type=\"textarea\" to auto-create elements.\n * \n * @example \"h3\" - creates <h3 slot=\"header\">content</h3>\n * @example \"p\" - creates <p slot=\"content\">content</p>\n */\n @Prop() tag?: string;\n\n /**\n * CSS styles for the slot dropzone container.\n * Useful for layouts - e.g., \"flex-direction: row\" for horizontal stacks.\n * Only applies in admin mode for type=\"slot\".\n */\n @Prop() slotStyle?: string;\n\n /**\n * Internal state to track admin mode\n */\n @State() private adminMode: boolean = false;\n\n /**\n * Internal state for text input value (synced from slot content)\n */\n @State() private textValue: string = '';\n\n /**\n * Whether the current textValue contains valid HTML\n */\n @State() private isValidHtml: boolean = true;\n\n /**\n * Available components loaded from Custom Elements Manifest\n */\n @State() private availableComponents: ComponentInfo[] = [];\n\n /**\n * Whether the component picker popover is open\n */\n @State() private pickerOpen: boolean = false;\n\n /**\n * Reference to the slot element to access assignedNodes\n */\n private slotRef?: HTMLSlotElement;\n\n /**\n * The original slotted element (e.g., <h3 slot=\"header\">)\n */\n private slottedElement?: Element;\n\n /**\n * Emitted when text content changes in admin mode.\n * The event detail contains the new text value and validity.\n */\n @Event() leSlotChange: EventEmitter<{ name: string; value: string; isValid: boolean }>;\n\n private disconnectModeObserver?: () => void;\n\n connectedCallback() {\n this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {\n const wasAdmin = this.adminMode;\n this.adminMode = mode === 'admin';\n \n // When entering admin mode, read content from slotted elements\n if (this.adminMode && !wasAdmin) {\n // Need to wait for render to access slot ref\n requestAnimationFrame(() => this.readSlottedContent());\n \n // Load available components for the component picker\n if (this.type === 'slot') {\n this.loadAvailableComponents();\n }\n }\n });\n }\n\n disconnectedCallback() {\n this.disconnectModeObserver?.();\n }\n\n /**\n * Flag to prevent re-reading content right after we updated it\n */\n private isUpdating: boolean = false;\n\n /**\n * Read content from slotted elements via assignedNodes()\n */\n private readSlottedContent() {\n if (!this.slotRef) return;\n \n // Skip if we just updated the content ourselves\n if (this.isUpdating) {\n this.isUpdating = false;\n return;\n }\n\n const assignedNodes = this.slotRef.assignedNodes({ flatten: true });\n \n // For text/textarea types, we want to edit the innerHTML of slotted elements\n if (this.type === 'text' || this.type === 'textarea') {\n // Find the first element node (skip text nodes that are just whitespace)\n const elementNode = assignedNodes.find(\n node => node.nodeType === Node.ELEMENT_NODE\n ) as Element | undefined;\n\n if (elementNode) {\n // Only update textValue if slotted element changed or we don't have one yet\n if (this.slottedElement !== elementNode) {\n this.slottedElement = elementNode;\n this.textValue = elementNode.innerHTML?.trim() || '';\n // console.log(`[le-slot \"${this.name}\"] Read slotted content:`, this.textValue);\n }\n } else {\n // No element, check for direct text content\n const textContent = assignedNodes\n .filter(node => node.nodeType === Node.TEXT_NODE)\n .map(node => node.textContent)\n .join('')\n .trim();\n \n if (textContent && !this.textValue) {\n this.textValue = textContent;\n // console.log(`[le-slot \"${this.name}\"] Read text content:`, this.textValue);\n }\n }\n }\n }\n\n /**\n * Validates if a string contains valid HTML\n */\n private validateHtml(html: string): boolean {\n // Empty string is valid\n if (!html.trim()) return true;\n \n // Create a template element to parse the HTML\n const template = document.createElement('template');\n template.innerHTML = html;\n \n // Check that we don't have obviously broken HTML\n // Count opening and closing tags for common elements\n const openTags = (html.match(/<[a-z][^>]*(?<!\\/)>/gi) || []).length;\n const closeTags = (html.match(/<\\/[a-z][^>]*>/gi) || []).length;\n const selfClosing = (html.match(/<[a-z][^>]*\\/>/gi) || []).length;\n \n // Simple validation: opening tags (minus self-closing) should roughly match closing tags\n // Allow some tolerance for void elements like <br>, <img>, etc.\n const voidElements = (html.match(/<(br|hr|img|input|meta|link|area|base|col|embed|param|source|track|wbr)[^>]*>/gi) || []).length;\n \n const effectiveOpenTags = openTags - selfClosing - voidElements;\n \n // If difference is too large, HTML is likely broken\n if (Math.abs(effectiveOpenTags - closeTags) > 1) {\n return false;\n }\n \n return true;\n }\n\n private handleTextInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n this.textValue = target.value;\n this.isValidHtml = this.validateHtml(this.textValue);\n\n if (this.isValidHtml) {\n // Set flag to prevent slotchange from re-reading what we just wrote\n this.isUpdating = true;\n\n console.log('Updating text value:', this.textValue, 'slottedElement:', this.slottedElement);\n\n if (this.slottedElement) {\n // Update existing slotted element's innerHTML\n this.slottedElement.innerHTML = this.textValue;\n } else if (this.tag && this.textValue) {\n // No slotted element exists\n // If the slot doesn't have a name, then it's the default slot\n // remove the existing non-slotted content (text nodes and elements without slot attribute)\n const rootNode = this.el.getRootNode();\n if (!this.name && rootNode instanceof ShadowRoot) {\n const hostComponent = rootNode.host;\n Array.from(hostComponent.childNodes).forEach(node => {\n if (node.nodeType === Node.TEXT_NODE || \n (node.nodeType === Node.ELEMENT_NODE && !(node as Element).hasAttribute('slot'))) {\n node.remove();\n }\n });\n }\n // create one using the specified tag\n this.createSlottedElement();\n } else if (this.textValue) {\n // no tag specified - just replace everything in the host component\n const rootNode = this.el.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n const hostComponent = rootNode.host;\n hostComponent.innerHTML = this.textValue;\n }\n }\n }\n \n this.leSlotChange.emit({ \n name: this.name, \n value: this.textValue,\n isValid: this.isValidHtml \n });\n };\n\n /**\n * Create a new slotted element when none exists.\n * The element is appended to the host component's light DOM.\n */\n private createSlottedElement() {\n if (!this.tag) return;\n \n // Find the host component (le-card, etc.) by traversing up through shadow DOM\n // le-slot is inside le-card's shadow DOM, so we need to find le-card's host\n const rootNode = this.el.getRootNode();\n if (!(rootNode instanceof ShadowRoot)) return;\n \n const hostComponent = rootNode.host;\n if (!hostComponent) return;\n \n // Create the new element\n const newElement = document.createElement(this.tag);\n newElement.innerHTML = this.textValue;\n \n // Set the slot attribute if this is a named slot\n if (this.name) {\n newElement.setAttribute('slot', this.name);\n }\n \n // Append to the host component's light DOM\n hostComponent.appendChild(newElement);\n \n // Store reference to the new element\n this.slottedElement = newElement;\n \n // console.log(`[le-slot \"${this.name}\"] Created new <${this.tag}> element`);\n }\n\n /**\n * Load available components from Custom Elements Manifest\n */\n private async loadAvailableComponents() {\n try {\n const response = await fetch('/custom-elements.json');\n const manifest = await response.json();\n \n const components: ComponentInfo[] = [];\n const allowedList = this.allowedComponents?.split(',').map(s => s.trim()) || [];\n \n for (const module of manifest.modules) {\n for (const declaration of module.declarations || []) {\n if (declaration.tagName && declaration.customElement) {\n // Skip internal components (le-slot, le-component, le-popover)\n const isInternal = ['le-slot', 'le-component', 'le-popover'].includes(declaration.tagName);\n if (isInternal) continue;\n \n // If allowedComponents is specified, filter by it\n if (allowedList.length > 0 && !allowedList.includes(declaration.tagName)) {\n continue;\n }\n \n components.push({\n tagName: declaration.tagName,\n name: this.formatComponentName(declaration.tagName),\n description: declaration.description || '',\n });\n }\n }\n }\n \n this.availableComponents = components;\n } catch (error) {\n console.warn('[le-slot] Failed to load component manifest:', error);\n }\n }\n\n /**\n * Format a tag name into a display name\n * e.g., 'le-card' -> 'Card'\n */\n private formatComponentName(tagName: string): string {\n return tagName\n .replace(/^le-/, '')\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n\n /**\n * Add a new component to the slot\n */\n private addComponent(tagName: string) {\n // Find the host component by traversing up through shadow DOM\n const rootNode = this.el.getRootNode();\n if (!(rootNode instanceof ShadowRoot)) return;\n \n const hostComponent = rootNode.host;\n if (!hostComponent) return;\n \n // Create the new component element\n const newElement = document.createElement(tagName);\n \n // Set the slot attribute if this is a named slot\n if (this.name) {\n newElement.setAttribute('slot', this.name);\n }\n \n // Append to the host component's light DOM\n hostComponent.appendChild(newElement);\n \n // Emit change event so the page can save\n this.leSlotChange.emit({\n name: this.name,\n value: hostComponent.innerHTML,\n isValid: true,\n });\n }\n\n /**\n * Handle slot change event to re-read content when nodes are assigned\n */\n private handleSlotChange = () => {\n this.readSlottedContent();\n };\n\n render() {\n const displayLabel = this.label || this.name;\n\n // Always render the same structure, CSS handles visibility via .admin-mode class\n return (\n <Host\n class={{ \n 'admin-mode': this.adminMode,\n 'invalid-html': !this.isValidHtml \n }}\n role={this.adminMode ? 'region' : undefined}\n aria-label={this.adminMode ? `Slot: ${displayLabel}` : undefined}\n data-slot-name={this.name}\n data-slot-type={this.type}\n data-allowed={this.allowedComponents}\n data-multiple={this.multiple}\n data-required={this.required}\n >\n {this.adminMode ? (\n <div class=\"le-slot-container\">\n <div class={classnames('le-slot-header', {\n 'le-slot-header-no-label': !displayLabel,\n 'le-slot-header-text': this.type === 'text',\n 'le-slot-header-error': !this.isValidHtml\n })}>\n {displayLabel && (\n <span class=\"le-slot-label\">\n {displayLabel}\n {this.required && <span class=\"le-slot-required\">*</span>}\n </span>\n )}\n {/* {this.description && <le-popover mode=\"default\" showClose={false} align=\"end\" position=\"bottom\">\n <span slot=\"trigger\" class=\"le-slot-description-icon\">ℹ️</span>\n {this.description}\n </le-popover>} */}\n {!this.isValidHtml && <span class=\"le-slot-invalid\">⚠ Invalid HTML</span>}\n {this.type === 'slot' && this.adminMode && (\n <le-popover \n mode=\"default\"\n showClose={true}\n align=\"start\"\n position=\"right\"\n popoverTitle=\"Add Component\"\n open={this.pickerOpen}\n onLePopoverOpen={() => this.pickerOpen = true}\n onLePopoverClose={() => this.pickerOpen = false}\n >\n <le-button\n type=\"button\"\n class=\"le-slot-button\"\n slot=\"trigger\"\n variant=\"clear\"\n size=\"small\"\n aria-label=\"Add component\"\n icon-only\n >\n <span class=\"le-slot-add-btn\" slot=\"icon-only\">+</span>\n </le-button>\n <div class=\"le-slot-picker\">\n {this.availableComponents.length > 0 ? (\n <ul class=\"le-slot-picker-list\">\n {this.availableComponents.map(component => (\n <li key={component.tagName}>\n <button\n class=\"le-slot-picker-item\"\n onClick={() => {\n this.addComponent(component.tagName);\n this.pickerOpen = false;\n }}\n >\n <span class=\"le-slot-picker-name\">{component.name}</span>\n {component.description && (\n <span class=\"le-slot-picker-desc\">{component.description}</span>\n )}\n </button>\n </li>\n ))}\n </ul>\n ) : (\n <div class=\"le-slot-picker-empty\">No components available</div>\n )}\n </div>\n </le-popover>\n )}\n </div>\n {this.renderContent()}\n </div>\n ) : (\n // In default mode, just pass through the slot - slotted content renders naturally\n // Note: We use unnamed slot here because named slots from parent component\n // are passed as le-slot's light DOM children\n <slot \n // ref={(el) => this.slotRef = el as HTMLSlotElement}\n // onSlotchange={this.handleSlotChange}\n ></slot>\n )}\n </Host>\n );\n }\n\n private renderContent() {\n // Create the slot element with ref for reading assignedNodes\n // Wrap in a hidden div since slot elements can't have style prop in Stencil\n // Note: We use unnamed slot here because named slots from parent component\n // are passed as le-slot's light DOM children\n const slotElement = (\n <div class=\"hidden-slot\">\n <slot \n ref={(el) => this.slotRef = el as HTMLSlotElement}\n onSlotchange={this.handleSlotChange}\n ></slot>\n </div>\n );\n\n switch (this.type) {\n case 'text':\n return (\n <div class={{ 'le-slot-input': true, 'has-error': !this.isValidHtml }}>\n <le-string-input\n mode=\"default\"\n value={this.textValue}\n placeholder={this.placeholder || `Enter ${this.label || this.name || 'text'}...`}\n onChange={this.handleTextInput}\n // required={this.required}\n ></le-string-input>\n {slotElement}\n </div>\n );\n\n case 'textarea':\n return (\n <div class={{ 'le-slot-input': true, 'has-error': !this.isValidHtml }}>\n <textarea\n value={this.textValue}\n placeholder={this.placeholder || `Enter ${this.label || this.name || 'text'}...`}\n onInput={this.handleTextInput}\n required={this.required}\n rows={3}\n ></textarea>\n {slotElement}\n </div>\n );\n\n case 'slot':\n default:\n // Parse slotStyle string into style object if provided\n const dropzoneStyle: { [key: string]: string } = {};\n if (this.slotStyle) {\n this.slotStyle.split(';').forEach(rule => {\n const [prop, value] = rule.split(':').map(s => s.trim());\n if (prop && value) {\n // Convert kebab-case to camelCase for style object\n const camelProp = prop.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());\n dropzoneStyle[camelProp] = value;\n }\n });\n }\n return (\n <div class=\"le-slot-dropzone\" style={dropzoneStyle}>\n <slot \n ref={(el) => this.slotRef = el as HTMLSlotElement}\n onSlotchange={this.handleSlotChange}\n ></slot>\n </div>\n );\n }\n }\n}\n\n/**\n * Component info from the manifest\n */\ninterface ComponentInfo {\n tagName: string;\n name: string;\n description: string;\n}\n",":host {\n display: block;\n --le-input-bg: var(--le-color-surface, #ffffff);\n --le-input-color: var(--le-color-text-primary, #333333);\n --le-input-border: var(--le-border-width, 2px) solid var(--le-color-border-input, #007bff);\n --le-input-radius: var(--le-radius-sm, 4px);\n --le-input-padding: 2px 6px;\n --le-input-height: 1.5rem;\n --le-input-label-color: var(--le-color-text-primary, #333333);\n --le-input-desc-color: var(--le-color-text-secondary, #666666);\n --le-input-placeholder-color: #999999;\n}\n\n.le-input-wrapper {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.le-input-label {\n display: block;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--le-input-label-color);\n margin-bottom: 2px;\n}\n\n.le-input-container {\n position: relative;\n display: flex;\n align-items: center;\n background: var(--le-input-bg);\n border: var(--le-input-border);\n border-radius: var(--le-input-radius);\n transition: border-color 0.2s;\n}\n\n.le-input-container:focus-within {\n outline: 2px solid var(--le-color-focus);\n outline-offset: 2px;\n}\n\n\n:host([disabled]) .le-input-container {\n opacity: 0.6;\n background-color: rgba(0,0,0,0.05);\n cursor: not-allowed;\n}\n\ninput {\n flex: 1;\n min-height: var(--le-input-height);\n padding: var(--le-input-padding);\n border: none;\n background: transparent;\n color: var(--le-input-color);\n font-family: inherit;\n font-size: inherit;\n outline: none;\n width: 100%;\n}\n\ninput::placeholder {\n color: var(--le-input-placeholder-color);\n}\n\n.icon-start, .icon-end {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 8px;\n color: var(--le-input-desc-color);\n}\n\n.le-input-description {\n font-size: 0.85em;\n color: var(--le-input-desc-color);\n margin-top: 2px;\n}\n\n.le-input-description::has(le-slot > slot[name=description]:empty) {\n display: none;\n}\n","import { Component, Prop, Event, EventEmitter, h, Element } from '@stencil/core';\nimport { classnames } from '../../utils/utils';\n\n/**\n * A text input component with support for labels, descriptions, icons, and external IDs.\n *\n * @slot - The label text for the input\n * @slot description - Additional description text displayed below the input\n * @slot icon-start - Icon to display at the start of the input\n * @slot icon-end - Icon to display at the end of the input\n *\n * @cssprop --le-input-bg - Input background color\n * @cssprop --le-input-color - Input text color\n * @cssprop --le-input-border - Input border style\n * @cssprop --le-input-border-focus - Input border style when focused\n * @cssprop --le-input-radius - Input border radius\n * @cssprop --le-input-padding - Input padding\n */\n@Component({\n tag: 'le-string-input',\n styleUrl: 'le-string-input.css',\n shadow: true,\n})\nexport class LeStringInput {\n @Element() el: HTMLElement;\n\n /**\n * Mode of the popover should be 'default' for internal use\n */\n @Prop({ mutable: true, reflect: true }) mode: 'default' | 'admin';\n\n /**\n * The value of the input\n */\n @Prop({ mutable: true, reflect: true }) value: string;\n\n /**\n * The name of the input\n */\n @Prop() name: string;\n\n /**\n * The type of the input (text, email, password, etc.)\n */\n @Prop() type: 'text' | 'email' | 'password' | 'tel' | 'url' = 'text';\n\n /**\n * Label for the input\n */\n @Prop() label: string;\n\n /**\n * Icon for the start icon\n */\n @Prop() iconStart: string;\n\n /**\n * Icon for the end icon\n */\n @Prop() iconEnd: string;\n\n /**\n * Placeholder text\n */\n @Prop() placeholder: string;\n\n /**\n * Whether the input is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Whether the input is read-only\n */\n @Prop() readonly: boolean = false;\n\n /**\n * External ID for linking with external systems\n */\n @Prop() externalId: string;\n\n /**\n * Emitted when the value changes (on blur or Enter)\n */\n @Event({ eventName: 'change' }) leChange: EventEmitter<{ value: string; name: string; externalId: string }>;\n\n /**\n * Emitted when the input value changes (on keystroke)\n */\n @Event({ eventName: 'input' }) leInput: EventEmitter<{ value: string; name: string; externalId: string }>;\n\n private handleInput = (ev: Event) => {\n const input = ev.target as HTMLInputElement;\n this.value = input.value;\n this.leInput.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId\n });\n };\n\n private handleChange = (ev: Event) => {\n const input = ev.target as HTMLInputElement;\n this.value = input.value;\n this.leChange.emit({\n value: this.value,\n name: this.name,\n externalId: this.externalId\n });\n };\n\n private handleClick = (ev: Event) => {\n ev.stopPropagation();\n };\n\n render() {\n return (\n <le-component component=\"le-string-input\" hostClass={classnames({ 'disabled': this.disabled })}>\n <div class=\"le-input-wrapper\">\n {this.label && (\n <label class=\"le-input-label\" htmlFor={this.name}>{this.label}</label>\n )}\n \n <div class=\"le-input-container\">\n {this.iconStart && (\n <span class=\"icon-start\">{this.iconStart}</span>\n )}\n <input\n id={this.name}\n type={this.type}\n name={this.name}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n readOnly={this.readonly}\n onInput={this.handleInput}\n onChange={this.handleChange}\n onClick={this.handleClick}\n />\n {this.iconEnd && (\n <span class=\"icon-end\">{this.iconEnd}</span>\n )}\n </div>\n\n <div class=\"le-input-description\">\n <le-slot name=\"description\" type=\"text\" tag=\"p\" label=\"Description\">\n <slot name=\"description\"></slot>\n </le-slot>\n </div>\n </div>\n </le-component>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e,f as o,h as t,i as p}from"./p-D71TXvJa.js";const a=":host{display:contents}.le-popup-dialog{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;padding:0;border:none;background:transparent;max-width:none;max-height:none;overflow:visible;--_popup-min-width:var(--le-popup-min-width, 320px);--_popup-max-width:var(--le-popup-max-width, min(500px, 90vw));--_popup-min-height:var(--le-popup-min-height, auto)}.le-popup-dialog::backdrop{background:var(--le-popup-backdrop-color, rgba(0, 0, 0, 0.5));animation:le-popup-backdrop-fade 0.2s ease-out}@keyframes le-popup-backdrop-fade{from{opacity:0}to{opacity:1}}.le-popup-position-center{margin:auto}.le-popup-position-top{margin:var(--le-space-2xl, 48px) auto auto auto}.le-popup-position-top-left{margin:var(--le-space-lg, 24px) auto auto var(--le-space-lg, 24px)}.le-popup-position-top-right{margin:var(--le-space-lg, 24px) var(--le-space-lg, 24px) auto auto}.le-popup-position-bottom{margin:auto auto var(--le-space-2xl, 48px) auto}.le-popup-position-bottom-left{margin:auto auto var(--le-space-lg, 24px) var(--le-space-lg, 24px)}.le-popup-position-bottom-right{margin:auto var(--le-space-lg, 24px) var(--le-space-lg, 24px) auto}.le-popup-container{display:flex;flex-direction:column;min-width:var(--_popup-min-width);max-width:var(--_popup-max-width);min-height:var(--_popup-min-height);max-height:calc(100vh - var(--le-space-2xl, 48px) * 2);background:var(--le-color-surface, #ffffff);border:1px solid var(--le-color-border, #e0e0e0);border-radius:var(--le-radius-lg, 12px);box-shadow:var(--le-shadow-xl, 0 8px 32px rgba(0, 0, 0, 0.15));overflow:hidden;font-family:var(--le-font-family, system-ui, -apple-system, sans-serif);color:var(--le-color-text, #333);animation:le-popup-appear 0.2s ease-out}@keyframes le-popup-appear{from{opacity:0;transform:scale(0.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.le-popup-header{flex-shrink:0;padding:var(--le-space-md, 16px) var(--le-space-lg, 24px);border-bottom:1px solid var(--le-color-border, #e0e0e0);background:var(--le-color-surface-alt, #f9f9f9);font-size:var(--le-font-size-lg, 1.125rem);font-weight:var(--le-font-weight-semibold, 600);color:var(--le-color-text, #333)}.le-popup-body{flex:1;padding:var(--le-space-lg, 24px);overflow-y:auto}.le-popup-message{margin:0;font-size:var(--le-font-size-md, 1rem);line-height:var(--le-line-height-relaxed, 1.6);color:var(--le-color-text, #333)}.le-popup-message+::slotted(*){margin-top:var(--le-space-md, 16px)}.le-popup-input{display:block;width:100%;margin-top:var(--le-space-md, 16px);padding:var(--le-space-sm, 8px) var(--le-space-md, 16px);font-family:inherit;font-size:var(--le-font-size-md, 1rem);color:var(--le-color-text, #333);background:var(--le-color-background, #fff);border:1px solid var(--le-color-border, #e0e0e0);border-radius:var(--le-radius-md, 8px);outline:none;transition:border-color var(--le-transition-fast, 0.15s ease),\n box-shadow var(--le-transition-fast, 0.15s ease);box-sizing:border-box}.le-popup-input:focus{border-color:var(--le-color-primary, #2196f3);box-shadow:0 0 0 3px var(--le-color-primary-light, rgba(33, 150, 243, 0.2))}.le-popup-input::placeholder{color:var(--le-color-text-muted, #999)}.le-popup-footer{flex-shrink:0;display:flex;justify-content:flex-end;gap:var(--le-space-sm, 8px);padding:var(--le-space-md, 16px) var(--le-space-lg, 24px);border-top:1px solid var(--le-color-border, #e0e0e0);background:var(--le-color-surface-alt, #f9f9f9)}.le-popup-btn{min-width:80px}@media (max-width: 480px){.le-popup-container{min-width:calc(100vw - var(--le-space-md, 16px) * 2);max-width:calc(100vw - var(--le-space-md, 16px) * 2)}.le-popup-footer{flex-direction:column-reverse}.le-popup-btn{width:100%}}";const i=class{constructor(t){e(this,t);this.leConfirm=o(this,"leConfirm");this.leCancel=o(this,"leCancel");this.leOpen=o(this,"leOpen");this.leClose=o(this,"leClose")}get el(){return t(this)}open=false;type="alert";popupTitle;message;modal=true;position="center";confirmText="OK";cancelText="Cancel";placeholder="";defaultValue="";closeOnBackdrop=true;inputValue="";leConfirm;leCancel;leOpen;leClose;dialogEl;inputEl;resolvePromise;componentWillLoad(){this.inputValue=this.defaultValue}componentDidLoad(){this.dialogEl?.addEventListener("cancel",this.handleDialogCancel)}disconnectedCallback(){this.dialogEl?.removeEventListener("cancel",this.handleDialogCancel)}handleDialogCancel=e=>{e.preventDefault();this.handleCancel()};async show(){return new Promise((e=>{this.resolvePromise=e;this.inputValue=this.defaultValue;this.open=true;requestAnimationFrame((()=>{if(this.dialogEl){if(this.modal){this.dialogEl.showModal()}else{this.dialogEl.show()}this.leOpen.emit();if(this.type==="prompt"&&this.inputEl){this.inputEl.focus();this.inputEl.select()}}}))}))}async hide(e=false){const o={confirmed:e,value:this.type==="prompt"?this.inputValue:undefined};this.dialogEl?.close();this.open=false;this.leClose.emit(o);if(this.resolvePromise){this.resolvePromise(o);this.resolvePromise=undefined}}handleConfirm=()=>{const e={confirmed:true,value:this.type==="prompt"?this.inputValue:undefined};this.leConfirm.emit(e);this.hide(true)};handleCancel=()=>{const e={confirmed:false,value:undefined};this.leCancel.emit(e);this.hide(false)};handleBackdropClick=e=>{if(this.closeOnBackdrop&&e.target===this.dialogEl){const o=this.dialogEl.getBoundingClientRect();const t=e.clientX>=o.left&&e.clientX<=o.right&&e.clientY>=o.top&&e.clientY<=o.bottom;if(!t){this.handleCancel()}}};handleInputChange=e=>{this.inputValue=e.target.value};handleKeyDown=e=>{if(e.key==="Enter"&&this.type!=="custom"){e.preventDefault();this.handleConfirm()}};hasSlot(e){return!!this.el.querySelector(`[slot="${e}"]`)}renderHeader(){if(this.hasSlot("header")){return p("div",{class:"le-popup-header",part:"header"},p("slot",{name:"header"}))}if(this.popupTitle){return p("div",{class:"le-popup-header",part:"header"},this.popupTitle)}return null}renderBody(){return p("div",{class:"le-popup-body",part:"body"},this.message&&p("p",{class:"le-popup-message"},this.message),this.type==="prompt"&&p("input",{type:"text",class:"le-popup-input",part:"input",placeholder:this.placeholder,value:this.inputValue,onInput:this.handleInputChange,onKeyDown:this.handleKeyDown,ref:e=>this.inputEl=e}),p("le-slot",{name:"",tag:"div",description:"Custom popup content",type:"slot"},p("slot",null)))}renderFooter(){if(this.hasSlot("footer")){return p("div",{class:"le-popup-footer",part:"footer"},p("slot",{name:"footer"}))}if(this.type==="custom"){return null}return p("div",{class:"le-popup-footer",part:"footer"},(this.type==="confirm"||this.type==="prompt")&&p("le-button",{variant:"outlined",part:"button-cancel",class:"le-popup-btn",onClick:this.handleCancel},this.cancelText),p("le-button",{variant:"solid",part:"button-confirm",class:"le-popup-btn",onClick:this.handleConfirm},this.confirmText))}render(){const e=`le-popup-position-${this.position}`;return p("dialog",{key:"1c38c82d3f466449ff57f731fc22936a7e5af0eb",class:`le-popup-dialog ${e}`,part:"dialog",ref:e=>this.dialogEl=e,onClick:this.handleBackdropClick},p("le-component",{key:"8f82316129786f9fe17ae6cc5f5a8cf7cbc3a9b5",component:"le-popup"},p("div",{key:"e5fef42ae8b41ea52db123b4576849407be33c65",class:"le-popup-container",part:"container"},this.renderHeader(),this.renderBody(),this.renderFooter())))}};i.style=a;export{i as le_popup};
2
- //# sourceMappingURL=p-024a764e.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","createEvent","getElement","h","lePopupCss","LePopup","constructor","hostRef","this","leConfirm","leCancel","leOpen","leClose","el","open","type","popupTitle","message","modal","position","confirmText","cancelText","placeholder","defaultValue","closeOnBackdrop","inputValue","dialogEl","inputEl","resolvePromise","componentWillLoad","componentDidLoad","addEventListener","handleDialogCancel","disconnectedCallback","removeEventListener","e","preventDefault","handleCancel","show","Promise","resolve","requestAnimationFrame","showModal","emit","focus","select","hide","confirmed","result","value","undefined","close","handleConfirm","handleBackdropClick","target","rect","getBoundingClientRect","clickedInDialog","clientX","left","right","clientY","top","bottom","handleInputChange","handleKeyDown","key","hasSlot","name","querySelector","renderHeader","class","part","renderBody","onInput","onKeyDown","ref","tag","description","renderFooter","variant","onClick","render","positionClass","component","style"],"sources":["0"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,f as t,h as o,i as n,F as r,H as l}from"./p-D71TXvJa.js";import{c as s,o as i}from"./p-qIai5-eB.js";const a=':host{display:inline-block;--le-button-border-radius:var(--le-radius-md);--le-button-padding-x:0.4rem;--le-button-padding-y:0.4rem;--le-button-small-padding:0.25rem;--le-button-font-size:var(--le-font-size-md);--le-button-font-weight:var(--le-font-weight-medium);--le-button-transition:var(--le-transition-fast);--le-button-icon-aspect-ratio:1;--_btn-bg:var(--le-color-primary);--_btn-bg-hover:var(--le-color-primary-dark);--_btn-bg-system:var(--le-color-black);--_btn-color:var(--le-color-primary-contrast);--_btn-border-color:var(--le-color-primary)}:host([full-width]){display:block;width:100%}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--le-spacing-3);width:100%;padding:var(--le-button-padding-y) var(--le-button-padding-x);border:1px solid var(--_btn-border-color);border-radius:var(--le-button-border-radius);background:var(--_btn-bg);color:var(--_btn-color);font-family:var(--le-font-family-base);font-size:var(--le-button-font-size);font-weight:var(--le-button-font-weight);line-height:var(--le-line-height-tight);text-decoration:none;cursor:pointer;transition:background-color var(--le-button-transition) var(--le-transition-easing),\n border-color var(--le-button-transition) var(--le-transition-easing),\n box-shadow var(--le-button-transition) var(--le-transition-easing),\n transform var(--le-button-transition) var(--le-transition-easing)}.button:hover:not(:disabled){background:var(--_btn-bg-hover);border-color:var(--_btn-bg-hover)}.button:active:not(:disabled){transform:translateY(1px)}.button:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.button:disabled{opacity:0.5;cursor:not-allowed}:host>le-component.color-primary{--_btn-bg:var(--le-color-primary);--_btn-bg-hover:var(--le-color-primary-dark);--_btn-color:var(--le-color-primary-contrast);--_btn-border-color:var(--le-color-primary)}:host>le-component.color-secondary{--_btn-bg:var(--le-color-secondary);--_btn-bg-hover:var(--le-color-secondary-dark);--_btn-color:var(--le-color-secondary-contrast);--_btn-border-color:var(--le-color-secondary)}:host>le-component.color-success{--_btn-bg:var(--le-color-success);--_btn-bg-hover:var(--le-color-success-dark);--_btn-color:var(--le-color-success-contrast);--_btn-border-color:var(--le-color-success)}:host>le-component.color-warning{--_btn-bg:var(--le-color-warning);--_btn-bg-hover:var(--le-color-warning-dark);--_btn-color:var(--le-color-warning-contrast);--_btn-border-color:var(--le-color-warning)}:host>le-component.color-danger{--_btn-bg:var(--le-color-danger);--_btn-bg-hover:var(--le-color-danger-dark);--_btn-color:var(--le-color-danger-contrast);--_btn-border-color:var(--le-color-danger)}:host>le-component.color-info{--_btn-bg:var(--le-color-info);--_btn-bg-hover:var(--le-color-info-dark);--_btn-color:var(--le-color-info-contrast);--_btn-border-color:var(--le-color-info)}:host>le-component.variant-solid .button{box-shadow:var(--le-shadow-sm)}:host>le-component.variant-solid .button:hover:not(:disabled){box-shadow:var(--le-shadow-md)}:host>le-component.variant-outlined .button{background:transparent;color:var(--_btn-bg);border-color:var(--_btn-border-color)}:host>le-component.variant-outlined .button:hover:not(:disabled){background:var(--_btn-bg);color:var(--_btn-color)}:host>le-component.variant-clear .button{background:transparent;color:var(--_btn-bg);border-color:transparent}:host>le-component.variant-clear .button:hover:not(:disabled){background:var(--le-color-gray-100);border-color:transparent}:host>le-component.variant-system .button{background:transparent;color:var(--_btn-bg-system);border-color:transparent}:host>le-component.size-small .button{--le-button-padding-x:0.4rem;--le-button-padding-y:0.3rem;--le-button-padding-top:0.35rem;--le-button-font-size:var(--le-button-small-font-size, var(--le-font-size-xs))}:host>le-component.size-large .button{--le-button-padding-x:0.9rem;--le-button-padding-y:0.6rem;--le-button-font-size:var(--le-font-size-xl)}:host>le-component.full-width{display:block;width:100%}:host>le-component.selected .button{box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.2)}:host>le-component.variant-outlined.selected .button,:host>le-component.variant-clear.selected .button{background:var(--_btn-bg);color:var(--_btn-color)}:host>le-component.icon-only .button{padding:0.5rem;padding-bottom:0.6rem;aspect-ratio:var(--le-button-icon-aspect-ratio, 1)}:host>le-component.icon-only.size-small .button{padding:var(--le-button-small-padding, 0.25rem)}:host>le-component.icon-only.size-large .button{padding:0.75rem}:host>le-component.icon-only .content{display:none}.content{display:inline}.content:empty{display:none}.icon-start,.icon-only,.icon-end{display:flex;align-items:center;justify-content:center}.icon-start:empty,.icon-only:empty,.icon-end:empty{display:none}::slotted([slot="icon-start"]),::slotted([slot="icon-only"]),::slotted([slot="icon-end"]){display:flex;align-items:center;justify-content:center;width:1.125em;height:1.125em}';const c=class{constructor(o){e(this,o);this.leClick=t(this,"click")}get el(){return o(this)}mode;variant="solid";color="primary";size="medium";selected=false;fullWidth=false;iconOnly=false;disabled=false;type="button";href;target;leClick;handleClick=e=>{e.stopPropagation();if(this.disabled){e.preventDefault();return}this.leClick.emit(e)};render(){const e=s(`variant-${this.variant}`,`color-${this.color}`,`size-${this.size}`,{selected:this.selected,"full-width":this.fullWidth,"icon-only":this.iconOnly,disabled:this.disabled});const t=this.href?"a":"button";const o=this.href?{href:this.href,target:this.target,role:"button"}:{type:this.type,disabled:this.disabled};return n("le-component",{key:"363dbfddf4a765bfd6f36ed16d0912e281153806",component:"le-button",hostClass:e},n(t,{key:"e112acdff4278e976ad767bd1ea7c9ced5e85f43",class:"button",part:"button",...o,onClick:this.handleClick},this.iconOnly?n("span",{class:"icon-start"},n("slot",{name:"icon-only"})):n(r,null,n("span",{class:"icon-start"},n("slot",{name:"icon-start"})),n("le-slot",{name:"",description:"Button text",type:"text",class:"content",part:"content"},n("slot",null)),n("span",{class:"icon-end"},n("slot",{name:"icon-end"})))))}};c.style=a;const d=':host{display:block;--le-checkbox-size:18px;--le-checkbox-color:var(--le-color-primary, #007bff);--le-checkbox-label-color:var(--le-color-text-primary, #333);--le-checkbox-desc-color:var(--le-color-text-secondary, #666);--le-checkbox-border-radius:var(--le-radius-sm, 2px);--le-checkbox-marker-color:var(--le-color-surface, #fff)}.le-checkbox-wrapper{display:flex;flex-direction:column;gap:4px}.le-checkbox-label{display:inline-flex;align-items:flex-start;gap:8px;cursor:pointer;user-select:none}:host([disabled]) .le-checkbox-label{cursor:not-allowed;opacity:0.6}.le-checkbox-input{display:flex;align-items:center;justify-content:center;min-height:1.4em}input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:var(--le-checkbox-size);height:var(--le-checkbox-size);border:var(--le-border-width, 2px) solid var(--le-checkbox-color);border-radius:var(--le-checkbox-border-radius);margin:0;margin-top:2px;position:relative;cursor:inherit;background-color:transparent;transition:background-color 0.2s, border-color 0.2s}input[type="checkbox"]:checked{background-color:var(--le-checkbox-color)}input[type="checkbox"]:checked::after{content:\'\';position:absolute;left:0;top:0;bottom:calc(var(--le-checkbox-size) / 5);right:0;margin:auto;width:calc(var(--le-checkbox-size) / 4);height:calc(var(--le-checkbox-size) / 2);border:solid var(--le-checkbox-marker-color, #fff);border-width:0 calc(var(--le-checkbox-size) / 10) calc(var(--le-checkbox-size) / 10) 0;transform:rotate(45deg)}input[type="checkbox"]:focus-visible{outline:2px solid var(--le-color-focus);outline-offset:2px}.le-checkbox-text{flex:1;flex-wrap:wrap;color:var(--le-checkbox-label-color);line-height:1.5;text-align:start}.le-checkbox-description{margin-left:calc(var(--le-checkbox-size) + 8px);font-size:0.875em;color:var(--le-checkbox-desc-color);line-height:1.4}:host [slot="description"]{margin:0}';const p=class{constructor(o){e(this,o);this.leChange=t(this,"change")}get el(){return o(this)}checked=false;disabled=false;name;value;externalId;leChange;handleChange=e=>{e.stopPropagation();if(this.disabled){e.preventDefault();return}const t=e.target;this.checked=t.checked;this.leChange.emit({checked:this.checked,value:this.value,name:this.name,externalId:this.externalId})};render(){return n("le-component",{key:"43399929e07835e0019d509803e50a151921fa72",component:"le-checkbox",hostClass:s({disabled:this.disabled})},n("div",{key:"7ddbf2ac1690bb09082adfea70b9767c972d007a",class:"le-checkbox-wrapper"},n("label",{key:"8eec4055c713e8b3b155695751b10bff64c9f903",class:"le-checkbox-label"},n("span",{key:"2118b1cbe7911ff1674e522d723949d81cade185",class:"le-checkbox-input"},n("input",{key:"d0a30af5c14497fa6fa294c07ba74ae2e032481f",type:"checkbox",name:this.name,value:this.value,checked:this.checked,disabled:this.disabled,onChange:this.handleChange})),n("span",{key:"02cf9588431240039a53ee50e02b08ba5d63b974",class:"le-checkbox-text"},n("le-slot",{key:"e7d7b253deab72e627164eb72fc06109abfca6a5",name:"",type:"text",tag:"span"},n("slot",{key:"1d8c443073e48848513a8a6d04cd7805a394e54e"})))),n("div",{key:"16c2c927dc0c0f7844a203a0628bf0e561009bd0",class:"le-checkbox-description"},n("le-slot",{key:"c6898ecc8992dce4786e68ab4b136bf5c3a4d3aa",name:"description",type:"text",tag:"div",label:"Description"},n("slot",{key:"3342add8ed1400ab74681e445163eeb3dd415941",name:"description"})))))}};p.style=d;const h=':host{display:contents}:host(.admin-mode){display:block}.le-component-wrapper{position:relative;border:2px dashed var(--le-admin-border-color, #90caf9);border-radius:var(--le-radius-md, 8px);background:var(--le-admin-bg, rgba(144, 202, 249, 0.05));transition:border-color 0.2s ease, box-shadow 0.2s ease}.le-component-wrapper:hover{border-color:var(--le-admin-border-hover, #42a5f5);box-shadow:0 0 0 2px var(--le-admin-glow, rgba(66, 165, 245, 0.2))}.le-component-header{display:flex;align-items:center;justify-content:space-between;gap:var(--le-spacing-1, 4px);padding:0 0 0 var(--le-spacing-1, 4px);background:var(--le-admin-header-bg, rgba(144, 202, 249, 0.15));border-bottom:1px solid var(--le-admin-border-color, #90caf9);border-radius:var(--le-radius-md, 8px) var(--le-radius-md, 8px) 0 0;font-size:var(--le-font-size-xs, 11px)}.le-component-name{font-weight:var(--le-font-weight-medium, 500);color:var(--le-admin-text, #1976d2);text-transform:capitalize;text-align:start;overflow:hidden;width:0;flex:1 1 0%}.le-component-content{padding:var(--le-space-xs, 4px)}.le-component-trigger{font-size:24px;line-height:0px;width:12px;height:12px}.le-component-button{width:20px}.property-editor{display:flex;flex-direction:column;gap:var(--le-space-sm, 8px);max-width:380px}.property-field{display:flex;flex-direction:column;gap:var(--le-space-xs, 4px)}.property-field label{display:flex;flex-direction:column;gap:2px;font-size:var(--le-font-size-sm, 13px);font-weight:var(--le-font-weight-medium, 500);color:var(--le-color-text, #333)}.property-hint{font-size:var(--le-font-size-xs, 11px);font-weight:normal;color:var(--le-color-text-secondary, #666);line-height:1.3}.property-field input[type="text"],.property-field input[type="number"],.property-field select{padding:var(--le-space-xs, 4px) var(--le-space-sm, 8px);border:1px solid var(--le-color-border, #ddd);border-radius:var(--le-radius-md, 7px);font-size:var(--le-font-size-sm, 13px);font-family:inherit;background:var(--le-color-surface, #fff);color:var(--le-color-text, #333);transition:border-color 0.15s ease, box-shadow 0.15s ease}.property-field input:focus,.property-field select:focus{outline:none;border-color:var(--le-color-primary, #1976d2);box-shadow:0 0 0 2px var(--le-color-primary-light, rgba(25, 118, 210, 0.2))}.property-field--checkbox{flex-direction:column}.property-field--checkbox label{flex-direction:row;align-items:center;gap:var(--le-space-sm, 8px);cursor:pointer}.property-field--checkbox input[type="checkbox"]{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--le-color-primary, #1976d2)}.property-field--checkbox .property-hint{margin-left:24px}.no-properties{margin:0;padding:var(--le-space-sm, 8px);font-size:var(--le-font-size-sm, 13px);color:var(--le-color-text-secondary, #666);text-align:center}.property-editor-container{display:flex;flex-direction:column;gap:var(--le-space-md, 12px)}.property-editor-actions{padding-top:var(--le-space-sm, 8px);border-top:1px solid var(--le-color-border, #e5e5e5)}.delete-component-btn{display:flex;align-items:center;justify-content:center;gap:var(--le-space-xs, 4px);width:100%;padding:var(--le-space-sm, 8px) var(--le-space-md, 12px);border:1px solid var(--le-color-danger, #e53935);border-radius:var(--le-radius-md, 6px);background:transparent;color:var(--le-color-danger, #e53935);font-size:var(--le-font-size-sm, 13px);font-weight:500;cursor:pointer;transition:background-color 0.15s, color 0.15s}.delete-component-btn:hover{background:var(--le-color-danger, #e53935);color:white}.delete-component-btn:active{opacity:0.9}';const b=class{constructor(t){e(this,t)}get el(){return o(this)}component;displayName;hostClass;hostStyle;hostElement;adminMode=false;componentMeta=null;propertyValues={};disconnectModeObserver;connectedCallback(){this.findHostElement();this.disconnectModeObserver=i(this.el,(e=>{this.adminMode=e==="admin";if(this.adminMode){if(!this.componentMeta){this.loadComponentMetadata()}else{this.readPropertyValues()}}}))}findHostElement(){const e=this.el.getRootNode();if(e instanceof ShadowRoot){this.hostElement=e.host}}componentDidLoad(){this.readPropertyValues()}disconnectedCallback(){this.disconnectModeObserver?.()}formatDisplayName(e){return e.replace(/^le-/,"").split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")}async loadComponentMetadata(){try{const e=await fetch("/custom-elements.json");const t=await e.json();for(const e of t.modules){for(const t of e.declarations||[]){if(t.tagName===this.component){const e=(t.attributes||[]).filter((e=>!this.isInternalAttribute(e.name)));this.componentMeta={tagName:t.tagName,description:t.description,attributes:e};this.readPropertyValues();return}}}}catch(e){}}isInternalAttribute(e){const t=["mode","theme","class","style","id","slot"];return t.includes(e)}readPropertyValues(){if(!this.hostElement||!this.componentMeta)return;const e={};for(const t of this.componentMeta.attributes){const o=this.hostElement.getAttribute(t.name);e[t.name]=this.parseAttributeValue(o,t.type?.text)}this.propertyValues=e}parseAttributeValue(e,t){if(e===null)return undefined;if(t==="boolean"){return e!==null&&e!=="false"}if(t==="number"){return parseFloat(e)}return e}handlePropertyChange(e,t,o){if(!this.hostElement)return;if(o==="boolean"){if(t){this.hostElement.setAttribute(e,"")}else{this.hostElement.removeAttribute(e)}}else if(t===undefined||t===""){this.hostElement.removeAttribute(e)}else{this.hostElement.setAttribute(e,String(t))}this.propertyValues={...this.propertyValues,[e]:t}}deleteComponent(){if(!this.hostElement)return;const e=this.displayName||this.formatDisplayName(this.component);if(!confirm(`Delete this ${e}?`))return;const t=this.hostElement.parentElement;if(t){this.hostElement.remove()}}renderPropertyEditor(){const e=this.componentMeta&&this.componentMeta.attributes.length>0;return n("div",{class:"property-editor-container"},e?n("form",{class:"property-editor",onSubmit:e=>e.preventDefault()},this.componentMeta.attributes.map((e=>this.renderPropertyField(e)))):n("p",{class:"no-properties"},"No editable properties"),n("div",{class:"property-editor-actions"},n("le-button",{type:"button",variant:"outlined",color:"danger","full-width":true,onClick:()=>this.deleteComponent()},n("span",{slot:"icon-start"},"🗑️"),n("span",null,"Delete Component"))))}renderPropertyField(e){const t=this.propertyValues[e.name];const o=e.type?.text||"string";const r=o.match(/^'[^']+'/);if(r){const r=o.split("|").map((e=>e.trim().replace(/'/g,"")));return n("div",{class:"property-field"},n("label",{htmlFor:`prop-${e.name}`},e.name,e.description&&n("span",{class:"property-hint"},e.description)),n("select",{id:`prop-${e.name}`,onChange:t=>this.handlePropertyChange(e.name,t.target.value,o)},r.map((o=>n("option",{value:o,selected:t===o||!t&&e.default?.replace(/'/g,"")===o},o)))))}if(o==="boolean"){return n("div",{class:"property-field property-field--checkbox"},n("le-checkbox",{name:`prop-${e.name}`,checked:t===true||t==="",onChange:t=>this.handlePropertyChange(e.name,t.target.checked,o)},e.name,e.description&&n("div",{slot:"description"},e.description)))}if(o==="number"){return n("div",{class:"property-field"},n("label",{htmlFor:`prop-${e.name}`},e.name,e.description&&n("span",{class:"property-hint"},e.description)),n("input",{type:"number",id:`prop-${e.name}`,value:t??"",placeholder:e.default,onChange:t=>this.handlePropertyChange(e.name,t.target.value,o)}))}return n("div",{class:"property-field"},n("le-string-input",{name:`prop-${e.name}`,label:e.name,value:t??"",placeholder:e.default?.replace(/'/g,""),onChange:t=>this.handlePropertyChange(e.name,t.detail.value,o)},n("span",{slot:"description"},e.description)))}render(){const e=this.displayName||this.formatDisplayName(this.component);if(!this.adminMode){return n(l,{class:s(this.component,this.hostClass),style:this.hostStyle},n("slot",null))}return n(l,{class:s(this.component,this.hostClass,"admin-mode"),style:this.hostStyle},n("div",{class:"le-component-wrapper"},n("div",{class:"le-component-header"},n("span",{class:"le-component-name"},e),n("le-popover",{popoverTitle:`${e} Settings`,position:"right",align:"start","min-width":"300px",mode:"default"},n("le-button",{type:"button",class:"le-component-button",slot:"trigger",variant:"clear",size:"small","aria-label":"Edit component properties","icon-only":true},n("span",{class:"le-component-trigger",slot:"icon-only"},"⚙")),this.renderPropertyEditor())),n("div",{class:"le-component-content"},n("slot",null))))}};b.style=h;const f='/* ============================================\n le-popover.css\n Popover using native HTML Popover API\n ============================================ */\n\n:host {\n display: inline-block;\n position: relative;\n}\n\n/* ============================================\n Trigger\n ============================================ */\n\n.le-popover-trigger {\n display: inline-flex;\n cursor: pointer;\n}\n\n.le-popover-default-trigger {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: 1px solid var(--le-color-border, #e0e0e0);\n border-radius: var(--le-radius-md, 6px);\n background: var(--le-color-surface, #fff);\n color: var(--le-color-text-secondary, #666);\n font-size: 16px;\n cursor: pointer;\n transition: all var(--le-transition-fast, 0.15s ease);\n}\n\n.le-popover-default-trigger:hover {\n border-color: var(--le-color-primary, #2196f3);\n color: var(--le-color-primary, #2196f3);\n background: var(--le-color-primary-light, rgba(33, 150, 243, 0.1));\n}\n\n/* ============================================\n Popover Content (native popover)\n ============================================ */\n\n.le-popover-content {\n /* Reset native popover defaults */\n margin: 0;\n padding: 0;\n border: none;\n background: transparent;\n \n /* Positioning - will be set via JS */\n position: fixed;\n inset: unset;\n \n /* Styling */\n background: var(--le-color-surface, #ffffff);\n border: 1px solid var(--le-color-border, #e0e0e0);\n border-radius: var(--le-radius-lg, 8px);\n box-shadow: var(--le-shadow-lg, 0 4px 12px rgba(0, 0, 0, 0.15));\n overflow: hidden;\n font-family: var(--le-font-family, system-ui, -apple-system, sans-serif);\n font-size: var(--le-font-size-sm, 0.875rem);\n color: var(--le-color-text, #333);\n \n /* Animation */\n opacity: 0;\n transform: scale(0.95);\n transition: opacity 0.15s ease, transform 0.15s ease, display 0.15s ease allow-discrete;\n}\n\n/* When popover is open */\n.le-popover-content:popover-open {\n opacity: 1;\n transform: scale(1);\n}\n\n/* Starting style for animation (CSS Anchor Positioning spec) */\n@starting-style {\n .le-popover-content:popover-open {\n opacity: 0;\n transform: scale(0.95);\n }\n}\n\n/* ============================================\n Header\n ============================================ */\n\n.le-popover-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--le-space-xs, 4px) var(--le-space-xs, 4px) var(--le-space-xs, 4px) var(--le-space-sm, 8px);\n border-bottom: 1px solid var(--le-color-border, #e0e0e0);\n background: var(--le-color-surface-alt, #f9f9f9);\n min-height: 32px;\n}\n\n.le-popover-title {\n font-weight: var(--le-font-weight-semibold, 600);\n font-size: var(--le-font-size-sm, 0.875rem);\n color: var(--le-color-text, #333);\n}\n\n.le-popover-close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: transparent;\n color: var(--le-color-text-secondary, #666);\n font-size: 18px;\n line-height: 1;\n cursor: pointer;\n border-radius: var(--le-radius-sm, 4px);\n transition: background-color 0.15s, color 0.15s;\n}\n\n.le-popover-close:hover {\n background: var(--le-color-surface-hover, rgba(0, 0, 0, 0.05));\n color: var(--le-color-text, #333);\n}\n\n/* ============================================\n Body\n ============================================ */\n\n.le-popover-body {\n padding: var(--le-space-md, 12px);\n}\n\n/* ============================================\n Scrollable content\n ============================================ */\n\n.le-popover-content[style*="overflow-y: auto"] .le-popover-body {\n overflow-y: auto;\n}\n';const u=class{constructor(o){e(this,o);this.lePopoverOpen=t(this,"lePopoverOpen");this.lePopoverClose=t(this,"lePopoverClose")}get el(){return o(this)}mode;open=false;position="bottom";align="start";popoverTitle;showClose=true;closeOnClickOutside=true;closeOnEscape=true;offset=8;width;minWidth="200px";maxWidth;lePopoverOpen;lePopoverClose;isPositioned=false;triggerEl;popoverEl;uniqueId=`le-popover-${Math.random().toString(36).substr(2,9)}`;scrollParents=[];componentDidLoad(){this.popoverEl?.addEventListener("toggle",this.handlePopoverToggle);document.addEventListener("le-popover-will-open",this.handleOtherPopoverOpen)}disconnectedCallback(){this.popoverEl?.removeEventListener("toggle",this.handlePopoverToggle);document.removeEventListener("le-popover-will-open",this.handleOtherPopoverOpen);this.removeScrollListeners()}getScrollParents(e){const t=[];let o=e.parentElement;while(o){const e=getComputedStyle(o);const n=e.overflow+e.overflowY+e.overflowX;if(/(auto|scroll)/.test(n)){t.push(o)}o=o.parentElement}return t}addScrollListeners(){if(!this.triggerEl)return;this.scrollParents=this.getScrollParents(this.triggerEl);this.scrollParents.forEach((e=>{e.addEventListener("scroll",this.handleScroll,{passive:true})}));window.addEventListener("scroll",this.handleScroll,{passive:true});window.addEventListener("resize",this.handleScroll,{passive:true})}removeScrollListeners(){this.scrollParents.forEach((e=>{e.removeEventListener("scroll",this.handleScroll)}));window.removeEventListener("scroll",this.handleScroll);window.removeEventListener("resize",this.handleScroll);this.scrollParents=[]}handleScroll=()=>{if(this.open){this.updatePosition()}};handlePopoverToggle=e=>{if(e.newState==="open"){this.open=true;this.addScrollListeners();this.updatePosition();this.lePopoverOpen.emit()}else{this.open=false;this.isPositioned=false;this.removeScrollListeners();this.lePopoverClose.emit()}};handleOtherPopoverOpen=e=>{const t=e;if(t.detail?.popover===this.el)return;if(this.open){this.hide()}};async show(){document.dispatchEvent(new CustomEvent("le-popover-will-open",{detail:{popover:this.el}}));this.popoverEl?.showPopover()}async hide(){this.popoverEl?.hidePopover()}async toggle(){if(this.open){await this.hide()}else{await this.show()}}handleTriggerClick=e=>{e.stopPropagation();this.toggle()};updatePosition(){if(!this.triggerEl||!this.popoverEl)return;const e=this.triggerEl.getBoundingClientRect();const t=this.popoverEl.getBoundingClientRect();const o=window.innerWidth;const n=window.innerHeight;const r=8;let l=this.position;let s=this.align;const i=n-e.bottom-r;const a=e.top-r;const c=o-e.right-r;const d=e.left-r;if(l==="auto"){if(i>=t.height+this.offset){l="bottom"}else if(a>=t.height+this.offset){l="top"}else if(c>=t.width+this.offset){l="right"}else if(d>=t.width+this.offset){l="left"}else{const e=Math.max(i,a,c,d);if(e===i)l="bottom";else if(e===a)l="top";else if(e===c)l="right";else l="left"}}if(l==="top"||l==="bottom"){if(s==="start"&&e.left+t.width>o-r){s="end"}else if(s==="end"&&e.right-t.width<r){s="start"}else if(s==="center"){const n=e.left+e.width/2;if(n-t.width/2<r){s="start"}else if(n+t.width/2>o-r){s="end"}}}let p=0;let h=0;let b=null;switch(l){case"top":p=e.top-t.height-this.offset;if(p<r){b=e.top-this.offset-r*2;p=r}break;case"bottom":p=e.bottom+this.offset;if(p+t.height>n-r){b=n-p-r}break;case"left":h=e.left-t.width-this.offset;p=e.top;if(h<r)h=r;break;case"right":h=e.right+this.offset;p=e.top;if(h+t.width>o-r){h=o-t.width-r}break}if(l==="top"||l==="bottom"){switch(s){case"start":h=e.left;break;case"center":h=e.left+e.width/2-t.width/2;break;case"end":h=e.right-t.width;break}if(h<r){h=r}else if(h+t.width>o-r){h=o-t.width-r}}if(l==="left"||l==="right"){switch(s){case"start":p=e.top;break;case"center":p=e.top+e.height/2-t.height/2;break;case"end":p=e.bottom-t.height;break}if(p<r)p=r;if(p+t.height>n-r){b=n-p-r}}this.popoverEl.style.top=`${p}px`;this.popoverEl.style.left=`${h}px`;if(b!==null&&b>100){this.popoverEl.style.maxHeight=`${b}px`;this.popoverEl.style.overflowY="auto"}else{this.popoverEl.style.maxHeight="";this.popoverEl.style.overflowY=""}this.isPositioned=true}render(){const e={visibility:this.isPositioned?"visible":"hidden"};if(this.width)e.width=this.width;if(this.minWidth)e.minWidth=this.minWidth;if(this.maxWidth)e.maxWidth=this.maxWidth;return[n("div",{key:"3d2a3b86ddb3be577bd0e976a5a00f25396a97fb",class:"le-popover-trigger",ref:e=>this.triggerEl=e,onClick:this.handleTriggerClick},n("slot",{key:"9db2e9e2b0bdb25c5a2361115d2094292fe692ec",name:"trigger"},n("button",{key:"88d78b192f72731f00d6131b92b8d6a4b445d7f9",type:"button",class:"le-popover-default-trigger"},n("span",{key:"0f2913f160cda5dcbeb20c714219d587196e230b"},"⊕")))),n("div",{key:"b65d2de900ff6e67a62d92d7452db34afde9f257",id:this.uniqueId,class:"le-popover-content",popover:this.closeOnClickOutside?"auto":"manual",ref:e=>this.popoverEl=e,style:e},(this.popoverTitle||this.showClose)&&n("div",{key:"323061fc49c8e0fc9ae541dfc576e551b0a83818",class:"le-popover-header"},this.popoverTitle&&n("span",{key:"b1d9f4203966ae6a0bb14186824596643954d6f8",class:"le-popover-title"},this.popoverTitle),this.showClose&&n("button",{key:"d0d335d8c9897ed9ba7bd0370572a8cafa72b044",type:"button",class:"le-popover-close",onClick:()=>this.hide(),"aria-label":"Close"},"×")),n("div",{key:"52d3294394b0e1fd49f8c361414e228feed68ea9",class:"le-popover-body"},n("slot",{key:"16d8691545f2eaa44f136bfea33a1f1d71d18cd7"})))]}};u.style=f;const m=":host{display:contents;--le-slot-border-color:#0088ff;--le-slot-bg-color:rgba(0, 136, 255, 0.05);--le-slot-header-bg:rgb(218, 238, 255);--le-slot-label-color:#0066cc;--le-slot-description-color:#666;--le-slot-required-color:#e53935;--le-slot-dropzone-min-height:20px;--le-slot-dropzone-border-color:#ccc}.le-slot-container,.le-slot-header,.le-slot-description,.le-slot-dropzone,.le-slot-input{display:none}.hidden-slot{display:none}:host(.admin-mode){display:block;flex:1}:host(.admin-mode) .le-slot-container{position:relative;display:flex;flex-direction:column;border:2px dashed var(--le-slot-border-color);border-radius:4px;background:var(--le-slot-bg-color);margin:4px 0}:host(.admin-mode) .le-slot-header{display:flex;align-items:center;gap:4px;padding:0 0 0 var(--le-spacing-1, 4px);background:var(--le-slot-header-bg);border-bottom:1px solid var(--le-slot-border-color);font-size:var(--le-font-size-xs, 11px);font-weight:400;text-transform:capitalize}:host(.admin-mode) .le-slot-header-no-label{justify-content:flex-end;height:16px;border:none;background-color:transparent}.le-slot-label{color:var(--le-slot-label-color);text-align:start;overflow:hidden;width:0;flex:1 1 0%}.le-slot-required{color:var(--le-slot-required-color);font-weight:bold}:host(.admin-mode) .le-slot-description{display:block;padding:4px 8px;font-size:12px;color:var(--le-slot-description-color);font-style:italic}:host(.admin-mode) .le-slot-description-icon{display:inline-block;font-size:9px;line-height:1;cursor:pointer;color:var(--le-slot-description-color)}:host(.admin-mode) .le-slot-dropzone{display:block;min-height:var(--le-slot-dropzone-min-height);padding:var(--le-spacing-1, 4px);position:relative}:host(.admin-mode) .le-slot-dropzone:empty::before{content:'Drop content here';display:flex;align-items:center;justify-content:center;position:absolute;inset:8px;border:2px dashed var(--le-slot-dropzone-border-color);border-radius:4px;color:#999;font-size:12px;pointer-events:none}:host(.admin-mode.drag-over) .le-slot-container{border-color:#00cc66;background:rgba(0, 204, 102, 0.1)}:host(.admin-mode.drag-over) .le-slot-dropzone:empty::before{border-color:#00cc66;color:#00cc66;content:'Release to drop'}:host(.admin-mode) .le-slot-input{display:block;padding:var(--le-spacing-1, 4px)}:host(.admin-mode) .le-slot-input input,:host(.admin-mode) .le-slot-input textarea{display:block;width:100%;padding:8px 10px;border:1px solid var(--le-slot-dropzone-border-color);border-radius:4px;font-family:inherit;font-size:14px;line-height:1.4;background:#fff;color:#333;box-sizing:border-box;transition:border-color 0.2s, box-shadow 0.2s}:host(.admin-mode) .le-slot-input input:focus,:host(.admin-mode) .le-slot-input textarea:focus{outline:none;border-color:var(--le-slot-border-color);box-shadow:0 0 0 3px rgba(0, 136, 255, 0.15)}:host(.admin-mode) .le-slot-input input::placeholder,:host(.admin-mode) .le-slot-input textarea::placeholder{color:#999}:host(.admin-mode) .le-slot-input textarea{resize:vertical;min-height:60px}:host(.admin-mode) .le-slot-input slot{display:none}.le-slot-invalid{color:var(--le-slot-required-color);font-size:10px;margin-left:auto;font-weight:normal;text-transform:none}:host(.admin-mode) .le-slot-input.has-error input,:host(.admin-mode) .le-slot-input.has-error textarea{border-color:var(--le-slot-required-color);background:rgba(229, 57, 53, 0.05)}:host(.admin-mode) .le-slot-input.has-error input:focus,:host(.admin-mode) .le-slot-input.has-error textarea:focus{border-color:var(--le-slot-required-color);box-shadow:0 0 0 3px rgba(229, 57, 53, 0.15)}.le-slot-add-btn{font-size:24px;line-height:0px;width:12px;height:12px}.le-slot-header-no-label .le-slot-add-btn{font-size:16px}.le-slot-button{width:20px;height:20px}:host(.admin-mode) .le-slot-header-no-label.le-slot-header-text{height:0}";const v=class{constructor(o){e(this,o);this.leSlotChange=t(this,"leSlotChange")}get el(){return o(this)}type="slot";name="";label;description;allowedComponents;multiple=true;required=false;placeholder;tag;slotStyle;adminMode=false;textValue="";isValidHtml=true;availableComponents=[];pickerOpen=false;slotRef;slottedElement;leSlotChange;disconnectModeObserver;connectedCallback(){this.disconnectModeObserver=i(this.el,(e=>{const t=this.adminMode;this.adminMode=e==="admin";if(this.adminMode&&!t){requestAnimationFrame((()=>this.readSlottedContent()));if(this.type==="slot"){this.loadAvailableComponents()}}}))}disconnectedCallback(){this.disconnectModeObserver?.()}isUpdating=false;readSlottedContent(){if(!this.slotRef)return;if(this.isUpdating){this.isUpdating=false;return}const e=this.slotRef.assignedNodes({flatten:true});if(this.type==="text"||this.type==="textarea"){const t=e.find((e=>e.nodeType===Node.ELEMENT_NODE));if(t){if(this.slottedElement!==t){this.slottedElement=t;this.textValue=t.innerHTML?.trim()||""}}else{const t=e.filter((e=>e.nodeType===Node.TEXT_NODE)).map((e=>e.textContent)).join("").trim();if(t&&!this.textValue){this.textValue=t}}}}validateHtml(e){if(!e.trim())return true;const t=document.createElement("template");t.innerHTML=e;const o=(e.match(/<[a-z][^>]*(?<!\/)>/gi)||[]).length;const n=(e.match(/<\/[a-z][^>]*>/gi)||[]).length;const r=(e.match(/<[a-z][^>]*\/>/gi)||[]).length;const l=(e.match(/<(br|hr|img|input|meta|link|area|base|col|embed|param|source|track|wbr)[^>]*>/gi)||[]).length;const s=o-r-l;if(Math.abs(s-n)>1){return false}return true}handleTextInput=e=>{const t=e.target;this.textValue=t.value;this.isValidHtml=this.validateHtml(this.textValue);if(this.isValidHtml){this.isUpdating=true;console.log("Updating text value:",this.textValue,"slottedElement:",this.slottedElement);if(this.slottedElement){this.slottedElement.innerHTML=this.textValue}else if(this.tag&&this.textValue){const e=this.el.getRootNode();if(!this.name&&e instanceof ShadowRoot){const t=e.host;Array.from(t.childNodes).forEach((e=>{if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.ELEMENT_NODE&&!e.hasAttribute("slot")){e.remove()}}))}this.createSlottedElement()}else if(this.textValue){const e=this.el.getRootNode();if(e instanceof ShadowRoot){const t=e.host;t.innerHTML=this.textValue}}}this.leSlotChange.emit({name:this.name,value:this.textValue,isValid:this.isValidHtml})};createSlottedElement(){if(!this.tag)return;const e=this.el.getRootNode();if(!(e instanceof ShadowRoot))return;const t=e.host;if(!t)return;const o=document.createElement(this.tag);o.innerHTML=this.textValue;if(this.name){o.setAttribute("slot",this.name)}t.appendChild(o);this.slottedElement=o}async loadAvailableComponents(){try{const e=await fetch("/custom-elements.json");const t=await e.json();const o=[];const n=this.allowedComponents?.split(",").map((e=>e.trim()))||[];for(const e of t.modules){for(const t of e.declarations||[]){if(t.tagName&&t.customElement){const e=["le-slot","le-component","le-popover"].includes(t.tagName);if(e)continue;if(n.length>0&&!n.includes(t.tagName)){continue}o.push({tagName:t.tagName,name:this.formatComponentName(t.tagName),description:t.description||""})}}}this.availableComponents=o}catch(e){console.warn("[le-slot] Failed to load component manifest:",e)}}formatComponentName(e){return e.replace(/^le-/,"").split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")}addComponent(e){const t=this.el.getRootNode();if(!(t instanceof ShadowRoot))return;const o=t.host;if(!o)return;const n=document.createElement(e);if(this.name){n.setAttribute("slot",this.name)}o.appendChild(n);this.leSlotChange.emit({name:this.name,value:o.innerHTML,isValid:true})}handleSlotChange=()=>{this.readSlottedContent()};render(){const e=this.label||this.name;return n(l,{key:"bae03733e0443c10f1abe8b4c846d3eae0723d3d",class:{"admin-mode":this.adminMode,"invalid-html":!this.isValidHtml},role:this.adminMode?"region":undefined,"aria-label":this.adminMode?`Slot: ${e}`:undefined,"data-slot-name":this.name,"data-slot-type":this.type,"data-allowed":this.allowedComponents,"data-multiple":this.multiple,"data-required":this.required},this.adminMode?n("div",{class:"le-slot-container"},n("div",{class:s("le-slot-header",{"le-slot-header-no-label":!e,"le-slot-header-text":this.type==="text","le-slot-header-error":!this.isValidHtml})},e&&n("span",{class:"le-slot-label"},e,this.required&&n("span",{class:"le-slot-required"},"*")),!this.isValidHtml&&n("span",{class:"le-slot-invalid"},"⚠ Invalid HTML"),this.type==="slot"&&this.adminMode&&n("le-popover",{mode:"default",showClose:true,align:"start",position:"right",popoverTitle:"Add Component",open:this.pickerOpen,onLePopoverOpen:()=>this.pickerOpen=true,onLePopoverClose:()=>this.pickerOpen=false},n("le-button",{type:"button",class:"le-slot-button",slot:"trigger",variant:"clear",size:"small","aria-label":"Add component","icon-only":true},n("span",{class:"le-slot-add-btn",slot:"icon-only"},"+")),n("div",{class:"le-slot-picker"},this.availableComponents.length>0?n("ul",{class:"le-slot-picker-list"},this.availableComponents.map((e=>n("li",{key:e.tagName},n("button",{class:"le-slot-picker-item",onClick:()=>{this.addComponent(e.tagName);this.pickerOpen=false}},n("span",{class:"le-slot-picker-name"},e.name),e.description&&n("span",{class:"le-slot-picker-desc"},e.description)))))):n("div",{class:"le-slot-picker-empty"},"No components available")))),this.renderContent()):n("slot",null))}renderContent(){const e=n("div",{class:"hidden-slot"},n("slot",{ref:e=>this.slotRef=e,onSlotchange:this.handleSlotChange}));switch(this.type){case"text":return n("div",{class:{"le-slot-input":true,"has-error":!this.isValidHtml}},n("le-string-input",{mode:"default",value:this.textValue,placeholder:this.placeholder||`Enter ${this.label||this.name||"text"}...`,onChange:this.handleTextInput}),e);case"textarea":return n("div",{class:{"le-slot-input":true,"has-error":!this.isValidHtml}},n("textarea",{value:this.textValue,placeholder:this.placeholder||`Enter ${this.label||this.name||"text"}...`,onInput:this.handleTextInput,required:this.required,rows:3}),e);case"slot":default:const t={};if(this.slotStyle){this.slotStyle.split(";").forEach((e=>{const[o,n]=e.split(":").map((e=>e.trim()));if(o&&n){const e=o.replace(/-([a-z])/g,((e,t)=>t.toUpperCase()));t[e]=n}}))}return n("div",{class:"le-slot-dropzone",style:t},n("slot",{ref:e=>this.slotRef=e,onSlotchange:this.handleSlotChange}))}}};v.style=m;const g=":host{display:block;--le-input-bg:var(--le-color-surface, #ffffff);--le-input-color:var(--le-color-text-primary, #333333);--le-input-border:var(--le-border-width, 2px) solid var(--le-color-border-input, #007bff);--le-input-radius:var(--le-radius-sm, 4px);--le-input-padding:2px 6px;--le-input-height:1.5rem;--le-input-label-color:var(--le-color-text-primary, #333333);--le-input-desc-color:var(--le-color-text-secondary, #666666);--le-input-placeholder-color:#999999}.le-input-wrapper{display:flex;flex-direction:column;gap:2px}.le-input-label{display:block;font-size:0.9em;font-weight:500;color:var(--le-input-label-color);margin-bottom:2px}.le-input-container{position:relative;display:flex;align-items:center;background:var(--le-input-bg);border:var(--le-input-border);border-radius:var(--le-input-radius);transition:border-color 0.2s}.le-input-container:focus-within{outline:2px solid var(--le-color-focus);outline-offset:2px}:host([disabled]) .le-input-container{opacity:0.6;background-color:rgba(0,0,0,0.05);cursor:not-allowed}input{flex:1;min-height:var(--le-input-height);padding:var(--le-input-padding);border:none;background:transparent;color:var(--le-input-color);font-family:inherit;font-size:inherit;outline:none;width:100%}input::placeholder{color:var(--le-input-placeholder-color)}.icon-start,.icon-end{display:flex;align-items:center;justify-content:center;padding:0 8px;color:var(--le-input-desc-color)}.le-input-description{font-size:0.85em;color:var(--le-input-desc-color);margin-top:2px}.le-input-description::has(le-slot>slot[name=description]:empty){display:none}";const x=class{constructor(o){e(this,o);this.leChange=t(this,"change");this.leInput=t(this,"input")}get el(){return o(this)}mode;value;name;type="text";label;iconStart;iconEnd;placeholder;disabled=false;readonly=false;externalId;leChange;leInput;handleInput=e=>{const t=e.target;this.value=t.value;this.leInput.emit({value:this.value,name:this.name,externalId:this.externalId})};handleChange=e=>{const t=e.target;this.value=t.value;this.leChange.emit({value:this.value,name:this.name,externalId:this.externalId})};handleClick=e=>{e.stopPropagation()};render(){return n("le-component",{key:"d0c69370dae2d1fee5700954e4823d2a03a51331",component:"le-string-input",hostClass:s({disabled:this.disabled})},n("div",{key:"4acae8d3c34da2a86970a616c493ff210d561f5f",class:"le-input-wrapper"},this.label&&n("label",{key:"609191b45187b6b1a65d05cd594b149760ac6882",class:"le-input-label",htmlFor:this.name},this.label),n("div",{key:"36b4caff4468ac7421db03f811cb3ef4a622b001",class:"le-input-container"},this.iconStart&&n("span",{key:"344f88887fe8270bbef7e26ec1ad5da9fae1f8e4",class:"icon-start"},this.iconStart),n("input",{key:"4ba7beeddd7fb3cf23d03e029d11a804764cdd6e",id:this.name,type:this.type,name:this.name,value:this.value,placeholder:this.placeholder,disabled:this.disabled,readOnly:this.readonly,onInput:this.handleInput,onChange:this.handleChange,onClick:this.handleClick}),this.iconEnd&&n("span",{key:"7cdd4b52c3e1a1b18b19e697bdb42431941bba01",class:"icon-end"},this.iconEnd)),n("div",{key:"113a75aa413e4d95300aeaa97d1ce7a75cf68c7a",class:"le-input-description"},n("le-slot",{key:"0b37fc14e6df68f6c44cf9001d63a70f019e1cc3",name:"description",type:"text",tag:"p",label:"Description"},n("slot",{key:"2674056dc915fabdb4fcbcaa13294a116b9509a6",name:"description"})))))}};x.style=g;export{c as le_button,p as le_checkbox,b as le_component,u as le_popover,v as le_slot,x as le_string_input};
2
- //# sourceMappingURL=p-073cf0b9.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","createEvent","getElement","h","Fragment","Host","classnames","observeModeChanges","leButtonDefaultCss","LeButton","constructor","hostRef","this","leClick","el","mode","variant","color","size","selected","fullWidth","iconOnly","disabled","type","href","target","handleClick","event","stopPropagation","preventDefault","emit","render","classes","TagType","attrs","role","key","component","hostClass","class","part","onClick","name","description","style","leCheckboxCss","LeCheckbox","leChange","checked","value","externalId","handleChange","input","onChange","tag","label","leComponentCss","LeComponent","displayName","hostStyle","hostElement","adminMode","componentMeta","propertyValues","disconnectModeObserver","connectedCallback","findHostElement","loadComponentMetadata","readPropertyValues","rootNode","getRootNode","ShadowRoot","host","componentDidLoad","disconnectedCallback","formatDisplayName","tagName","replace","split","map","word","charAt","toUpperCase","slice","join","response","fetch","manifest","json","module","modules","declaration","declarations","attributes","filter","attr","isInternalAttribute","error","internalAttrs","includes","values","getAttribute","parseAttributeValue","text","undefined","parseFloat","handlePropertyChange","attrName","setAttribute","removeAttribute","String","deleteComponent","confirm","parent","parentElement","remove","renderPropertyEditor","hasProperties","length","onSubmit","e","renderPropertyField","slot","enumMatch","match","options","opt","trim","htmlFor","id","default","placeholder","detail","popoverTitle","position","align","lePopoverCss","LePopover","lePopoverOpen","lePopoverClose","open","showClose","closeOnClickOutside","closeOnEscape","offset","width","minWidth","maxWidth","isPositioned","triggerEl","popoverEl","uniqueId","Math","random","toString","substr","scrollParents","addEventListener","handlePopoverToggle","document","handleOtherPopoverOpen","removeEventListener","removeScrollListeners","getScrollParents","element","getComputedStyle","overflow","overflowY","overflowX","test","push","addScrollListeners","forEach","handleScroll","passive","window","updatePosition","newState","customEvent","popover","hide","show","dispatchEvent","CustomEvent","showPopover","hidePopover","toggle","handleTriggerClick","triggerRect","getBoundingClientRect","popoverRect","viewportWidth","innerWidth","viewportHeight","innerHeight","viewportPadding","spaceBelow","bottom","spaceAbove","top","spaceRight","right","spaceLeft","left","height","maxSpace","max","triggerCenter","maxHeight","popoverStyles","visibility","ref","leSlotDefaultCss","LeSlot","leSlotChange","allowedComponents","multiple","required","slotStyle","textValue","isValidHtml","availableComponents","pickerOpen","slotRef","slottedElement","wasAdmin","requestAnimationFrame","readSlottedContent","loadAvailableComponents","isUpdating","assignedNodes","flatten","elementNode","find","node","nodeType","Node","ELEMENT_NODE","innerHTML","textContent","TEXT_NODE","validateHtml","html","template","createElement","openTags","closeTags","selfClosing","voidElements","effectiveOpenTags","abs","handleTextInput","console","log","hostComponent","Array","from","childNodes","hasAttribute","createSlottedElement","isValid","newElement","appendChild","components","allowedList","s","customElement","isInternal","formatComponentName","warn","addComponent","handleSlotChange","displayLabel","onLePopoverOpen","onLePopoverClose","renderContent","slotElement","onSlotchange","onInput","rows","dropzoneStyle","rule","prop","camelProp","_","letter","leStringInputCss","LeStringInput","leInput","iconStart","iconEnd","readonly","handleInput","ev","readOnly"],"sources":["0"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,h as a,i as r}from"./p-D71TXvJa.js";import{c as d}from"./p-qIai5-eB.js";const o=":host{display:block;--le-card-bg:var(--le-color-surface);--le-card-border-radius:var(--le-radius-lg);--le-card-shadow:var(--le-shadow-md);--le-card-shadow-elevated:var(--le-shadow-lg);--le-card-shadow-hover:var(--le-shadow-xl);--le-card-padding:var(--le-space-md);--le-card-border-color:var(--le-color-border);--le-card-transition:var(--le-transition-normal)}.card{background:var(--le-card-bg);border-radius:var(--le-card-border-radius);overflow:hidden;color:var(--le-color-text);box-shadow:var(--le-card-shadow)}:host>le-component.variant-outlined .card{border:1px solid var(--le-card-border-color);box-shadow:none}:host>le-component.variant-elevated .card{box-shadow:var(--le-card-shadow-elevated)}:host>le-component.interactive .card{cursor:pointer;transition:transform var(--le-card-transition), box-shadow var(--le-card-transition)}:host>le-component.interactive .card:hover{transform:translateY(-2px);box-shadow:var(--le-card-shadow-hover)}:host>le-component.interactive .card:focus-visible{outline:2px solid var(--le-color-border-focus);outline-offset:2px}.card-header{padding:var(--le-card-padding);padding-bottom:0}.card-header:empty{display:none}.card-content{padding:var(--le-card-padding)}.card-footer{padding:var(--le-card-padding);padding-top:0}.card-footer:empty{display:none}";const t=class{constructor(a){e(this,a)}get el(){return a(this)}variant="default";interactive=false;render(){return r("le-component",{key:"3878b21dafb24349fd9c178c784028302fb95214",component:"le-card",hostClass:d(`variant-${this.variant}`,{interactive:this.interactive})},r("div",{key:"41470ad363928c5a5f70947a1fc859db03cf7619",class:"card",part:"card"},r("div",{key:"9e0d85016f98ee15eba90bbd4db004f9210b1bf3",class:"card-header",part:"header"},r("le-slot",{key:"dcd23b7da86e4026f2cc7fb62b410d7317ab2e2b",name:"header",label:"Header",description:"Card title",type:"text",tag:"h3"},r("slot",{key:"0f2f616c950d7548484bd8c87befa7ecff6d374f",name:"header"}))),r("div",{key:"1d77598852e8755e477a505d29c77643cea446d4",class:"card-content",part:"content"},r("le-slot",{key:"fd94892b8489f727a3e951f1771cab53b0667799",name:"",label:"Content",description:"Card content",type:"textarea",tag:"p",required:true},r("slot",{key:"dc1c2deff9405fd838aee733bc6e4394f60fefd7"}))),r("div",{key:"2944fa4515119b1868567545fa131fe178d7a3cf",class:"card-footer",part:"footer"},r("le-slot",{key:"bdd9b5a1baf2ebf487120afa458ae85285b05fcf",name:"footer",label:"Footer",description:"Card footer with actions","allowed-components":"le-button,le-link"},r("slot",{key:"8a79b1baaf6720f1397c0bacf5f71dc97dff2777",name:"footer"})))))}};t.style=o;export{t as le_card};
2
- //# sourceMappingURL=p-0955b105.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","getElement","h","classnames","leCardDefaultCss","LeCard","constructor","hostRef","this","el","variant","interactive","render","key","component","hostClass","class","part","name","label","description","type","tag","required","style"],"sources":["0"],"mappings":"YAAcA,OAAuBC,OAAiBC,MAAS,8BACjDC,MAAkB,kBAEhC,MAAMC,EAAmB,8wCAEzB,MAAMC,EAAS,MACX,WAAAC,CAAYC,GACRP,EAAiBQ,KAAMD,EAC3B,CACA,MAAIE,GAAO,OAAOR,EAAWO,KAAO,CAKpCE,QAAU,UAIVC,YAAc,MACd,MAAAC,GACI,OAAQV,EAAE,eAAgB,CAAEW,IAAK,2CAA4CC,UAAW,UAAWC,UAAWZ,EAAW,WAAWK,KAAKE,UAAW,CAAEC,YAAeH,KAAKG,eAAkBT,EAAE,MAAO,CAAEW,IAAK,2CAA4CG,MAAO,OAAQC,KAAM,QAAUf,EAAE,MAAO,CAAEW,IAAK,2CAA4CG,MAAO,cAAeC,KAAM,UAAYf,EAAE,UAAW,CAAEW,IAAK,2CAA4CK,KAAM,SAAUC,MAAO,SAAUC,YAAa,aAAcC,KAAM,OAAQC,IAAK,MAAQpB,EAAE,OAAQ,CAAEW,IAAK,2CAA4CK,KAAM,aAAehB,EAAE,MAAO,CAAEW,IAAK,2CAA4CG,MAAO,eAAgBC,KAAM,WAAaf,EAAE,UAAW,CAAEW,IAAK,2CAA4CK,KAAM,GAAIC,MAAO,UAAWC,YAAa,eAAgBC,KAAM,WAAYC,IAAK,IAAKC,SAAU,MAAQrB,EAAE,OAAQ,CAAEW,IAAK,+CAAiDX,EAAE,MAAO,CAAEW,IAAK,2CAA4CG,MAAO,cAAeC,KAAM,UAAYf,EAAE,UAAW,CAAEW,IAAK,2CAA4CK,KAAM,SAAUC,MAAO,SAAUC,YAAa,2BAA4B,qBAAsB,qBAAuBlB,EAAE,OAAQ,CAAEW,IAAK,2CAA4CK,KAAM,cACrxC,GAEJb,EAAOmB,MAAQpB,SAENC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,f as t,h as i,i as n}from"./p-D71TXvJa.js";import{c as r}from"./p-qIai5-eB.js";const s=":host{display:block;--le-input-bg:var(--le-color-surface, #ffffff);--le-input-color:var(--le-color-text-primary, #333333);--le-input-border:var(--le-border-width, 2px) solid var(--le-color-border-input, #007bff);--le-input-radius:var(--le-radius-sm, 4px);--le-input-padding:2px 6px;--le-input-height:1.5rem;--le-input-label-color:var(--le-color-text-primary, #333333);--le-input-desc-color:var(--le-color-text-secondary, #666666);--le-input-placeholder-color:#999999;--le-input-border-error:2px solid var(--le-color-danger, #dc3545);--le-input-error-color:var(--le-color-danger, #dc3545)}.le-input-wrapper{display:flex;flex-direction:column;gap:2px}.le-input-label{display:block;font-size:0.9em;font-weight:500;color:var(--le-input-label-color);margin-bottom:2px}.le-input-container{position:relative;display:flex;align-items:center;background:var(--le-input-bg);border:var(--le-input-border);border-radius:var(--le-input-radius);transition:border-color 0.2s}.le-input-container:focus-within{outline:2px solid var(--le-color-focus);outline-offset:2px}.le-input-container.has-error{border:var(--le-input-border-error)}:host([disabled]) .le-input-container{opacity:0.6;background-color:rgba(0,0,0,0.05);cursor:not-allowed}input{flex:1;width:100%;height:calc(var(--le-input-height) - 2px);padding:var(--le-input-padding);border:none;background:transparent;color:var(--le-input-color);font-family:inherit;font-size:inherit;outline:none;text-align:right;-moz-appearance:textfield;}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input::placeholder{color:var(--le-input-placeholder-color)}.icon-start,.icon-end{display:flex;align-items:center;justify-content:center;padding:0 8px;color:var(--le-input-desc-color)}.le-input-controls{display:flex;flex-direction:column;border-left:1px solid var(--le-color-border, #cccccc);height:100%}.le-input-control-btn{--le-button-border-radius:0;--le-button-padding-x:0;--le-button-padding-y:0;--le-button-small-font-size:9.5px;--le-button-small-padding:0 0.2rem;--le-button-icon-aspect-ratio:2;display:flex;align-items:center;justify-content:center;height:50%;cursor:pointer;background:none;border:none;color:var(--le-input-desc-color);font-size:10px;line-height:1}.le-input-control-btn:hover{background-color:rgba(0,0,0,0.05);color:var(--le-color-primary, #007bff)}.le-input-control-btn:active{background-color:rgba(0,0,0,0.1)}.le-input-description{font-size:0.85em;color:var(--le-input-desc-color);margin-top:2px}.le-input-error{font-size:0.85em;color:var(--le-input-error-color);margin-top:2px}";const l=class{constructor(i){e(this,i);this.leChange=t(this,"leChange");this.leInput=t(this,"leInput")}get el(){return i(this)}value;name;label;placeholder;min;max;step=1;required=false;disabled=false;readonly=false;iconStart;showSpinners=true;externalId;isValid=true;validationMessage="";leChange;leInput;valueChanged(){this.validate()}validate(){if(this.required&&(this.value===undefined||this.value===null||isNaN(this.value))){this.isValid=false;this.validationMessage="This field is required";return}if(this.value!==undefined&&this.value!==null&&!isNaN(this.value)){if(this.min!==undefined&&this.value<this.min){this.isValid=false;this.validationMessage=`Value must be at least ${this.min}`;return}if(this.max!==undefined&&this.value>this.max){this.isValid=false;this.validationMessage=`Value must be at most ${this.max}`;return}}this.isValid=true;this.validationMessage=""}emitChange(){this.leChange.emit({value:this.value,name:this.name,externalId:this.externalId,isValid:this.isValid})}emitInput(){this.leInput.emit({value:this.value,name:this.name,externalId:this.externalId,isValid:this.isValid})}updateValue(e){if(this.disabled||this.readonly)return;const t=this.step.toString().split(".")[1]?.length||0;const i=parseFloat(e.toFixed(t));this.value=i;this.validate();this.emitInput()}handleInput=e=>{const t=e.target;const i=parseFloat(t.value);if(t.value===""){this.value=undefined}else if(!isNaN(i)){this.value=i}this.validate();this.emitInput()};handleChange=()=>{this.validate();this.emitChange()};handleKeyDown=e=>{if(this.disabled||this.readonly)return;let t=1;if(e.shiftKey)t=10;if(e.altKey)t=.1;const i=this.value||0;if(e.key==="ArrowUp"){e.preventDefault();this.updateValue(i+this.step*t)}else if(e.key==="ArrowDown"){e.preventDefault();this.updateValue(i-this.step*t)}};handleWheel=e=>{if(this.disabled||this.readonly)return;if(document.activeElement!==e.target)return;e.preventDefault();const t=this.value||0;if(e.deltaY<0){this.updateValue(t+this.step)}else{this.updateValue(t-this.step)}};increment=e=>{e.preventDefault();const t=this.value||0;this.updateValue(t+this.step);this.emitChange()};decrement=e=>{e.preventDefault();const t=this.value||0;this.updateValue(t-this.step);this.emitChange()};render(){return n("le-component",{key:"6af8d1fd4c89597f7da3be391cabccbb9d1f9800",component:"le-number-input",hostClass:r({disabled:this.disabled})},n("div",{key:"e4e0ad02f89b2eb8dd7649d2f2e70bc821cb2774",class:"le-input-wrapper"},this.label&&n("label",{key:"30ad120d5571018ea9891340b5406f6939a1fe0e",class:"le-input-label",htmlFor:this.name},this.label),n("div",{key:"27b835ad1559a1ea4366c4b7c2b31d412e8b8ef7",class:r("le-input-container",{"has-error":!this.isValid})},this.iconStart&&n("span",{key:"0164cbb985b900b4b3136061a2609987a2c06e9f",class:"icon-start"},this.iconStart),n("input",{key:"6d68b764f45d61b7dd4ffe435bd9e9da04c4d87a",id:this.name,type:"number",name:this.name,placeholder:this.placeholder,min:this.min,max:this.max,step:this.step,value:this.value,disabled:this.disabled,readOnly:this.readonly,required:this.required,onInput:this.handleInput,onChange:this.handleChange,onKeyDown:this.handleKeyDown,onWheel:this.handleWheel}),this.showSpinners&&n("div",{key:"7ed04341c0c27a7d37afd4baf9698ea7776702f6",class:"le-input-controls"},n("le-button",{key:"80c96f7cbee40efd2b79f33e8401a13f187092a6",mode:"default",variant:"clear",size:"small","icon-only":true,class:"le-input-control-btn",onClick:this.increment,disabled:this.disabled||this.readonly||this.max!==undefined&&this.value>=this.max,tabindex:"-1"},n("span",{key:"d56b463073ce8174c668138179f1bbc16c700d9f",slot:"icon-only"},"↑")),n("le-button",{key:"74e70e65d6668cc1cee7abfaf464a60a29efa3f9",mode:"default",variant:"clear",size:"small","icon-only":true,class:"le-input-control-btn",onClick:this.decrement,disabled:this.disabled||this.readonly||this.min!==undefined&&this.value<=this.min,tabindex:"-1"},n("span",{key:"e2330cdf9f431b2c9f0953e42f71e897879d10fe",slot:"icon-only"},"↓")))),!this.isValid&&n("div",{key:"ba9bb8af8c4814b4316c1f0947c50a99fd24634c",class:"le-input-error"},this.validationMessage),n("div",{key:"30e43ac088f995fe24ab47678ca70fe771b6f1ab",class:"le-input-description"},n("le-slot",{key:"94f4bd21e32595470781eb6b004c9acbee72b81a",name:"description",type:"text",tag:"p",label:"Description"},n("slot",{key:"def94a79248d1887c5416ff95b2c625df85c68d0",name:"description"})))))}static get watchers(){return{value:["valueChanged"]}}};l.style=s;export{l as le_number_input};
2
- //# sourceMappingURL=p-18d79ee2.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["registerInstance","createEvent","getElement","h","classnames","leNumberInputCss","LeNumberInput","constructor","hostRef","this","leChange","leInput","el","value","name","label","placeholder","min","max","step","required","disabled","readonly","iconStart","showSpinners","externalId","isValid","validationMessage","valueChanged","validate","undefined","isNaN","emitChange","emit","emitInput","updateValue","newValue","precision","toString","split","length","rounded","parseFloat","toFixed","handleInput","ev","input","target","val","handleChange","handleKeyDown","multiplier","shiftKey","altKey","current","key","preventDefault","handleWheel","document","activeElement","deltaY","increment","decrement","render","component","hostClass","class","htmlFor","id","type","readOnly","onInput","onChange","onKeyDown","onWheel","mode","variant","size","onClick","tabindex","slot","tag","watchers","style"],"sources":["0"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,i,H as l}from"./p-D71TXvJa.js";import{o}from"./p-qIai5-eB.js";const n=":host{display:block}:host([hidden]){display:none}.le-text{margin:0;color:var(--le-text-color, var(--le-color-text));font-family:var(--le-font-family);line-height:var(--le-text-line-height, 1.5)}.variant-p{font-size:var(--le-font-size-base, 1rem);font-weight:var(--le-font-weight-normal, 400);color:var(--le-color-text)}.variant-h1{font-size:var(--le-font-size-4xl, 2.5rem);font-weight:var(--le-font-weight-bold, 700);line-height:1.2;color:var(--le-color-text);letter-spacing:-0.02em}.variant-h2{font-size:var(--le-font-size-3xl, 2rem);font-weight:var(--le-font-weight-bold, 700);line-height:1.25;color:var(--le-color-text);letter-spacing:-0.01em}.variant-h3{font-size:var(--le-font-size-2xl, 1.5rem);font-weight:var(--le-font-weight-semibold, 600);line-height:1.3;color:var(--le-color-text)}.variant-h4{font-size:var(--le-font-size-xl, 1.25rem);font-weight:var(--le-font-weight-semibold, 600);line-height:1.35;color:var(--le-color-text)}.variant-h5{font-size:var(--le-font-size-lg, 1.125rem);font-weight:var(--le-font-weight-medium, 500);line-height:1.4;color:var(--le-color-text)}.variant-h6{font-size:var(--le-font-size-base, 1rem);font-weight:var(--le-font-weight-medium, 500);line-height:1.45;color:var(--le-color-text);text-transform:uppercase;letter-spacing:0.05em}.variant-code{font-family:var(--le-font-family-mono, 'SF Mono', 'Fira Code', 'Consolas', monospace);font-size:var(--le-font-size-sm, 0.875rem);background:var(--le-color-surface-alt, #f5f5f5);padding:var(--le-space-md);border-radius:var(--le-radius-md);overflow-x:auto;white-space:pre-wrap;color:var(--le-color-text)}.variant-quote{font-size:var(--le-font-size-lg, 1.125rem);font-style:italic;color:var(--le-color-text-secondary);border-left:4px solid var(--le-color-primary);padding-left:var(--le-space-lg);margin-left:0;margin-right:0}.variant-label{font-size:var(--le-font-size-sm, 0.875rem);font-weight:var(--le-font-weight-medium, 500);color:var(--le-color-text-secondary);text-transform:uppercase;letter-spacing:0.05em}.variant-small{font-size:var(--le-font-size-sm, 0.875rem);color:var(--le-color-text-secondary)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.truncate.max-lines-2,.truncate.max-lines-3,.truncate.max-lines-4,.truncate.max-lines-5{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical}.truncate.max-lines-2{-webkit-line-clamp:2;line-clamp:2}.truncate.max-lines-3{-webkit-line-clamp:3;line-clamp:3}.truncate.max-lines-4{-webkit-line-clamp:4;line-clamp:4}.truncate.max-lines-5{-webkit-line-clamp:5;line-clamp:5}:host([align=\"center\"]) .le-text{text-align:center}:host([align=\"right\"]) .le-text{text-align:right}:host([align=\"justify\"]) .le-text{text-align:justify}.le-text a{color:var(--le-color-primary);text-decoration:underline}.le-text a:hover{color:var(--le-color-primary-dark)}.le-text strong,.le-text b{font-weight:var(--le-font-weight-bold, 700)}.le-text em,.le-text i{font-style:italic}.le-text u{text-decoration:underline}.le-text s,.le-text strike{text-decoration:line-through}";const s=class{constructor(e){t(this,e)}get el(){return e(this)}variant="p";align="left";color;truncate=false;maxLines;adminMode=false;content="";isFocused=false;selectionState={isBold:false,isItalic:false,isUnderline:false,isStrikethrough:false,isLink:false,blockType:"p"};editorRef;slotRef;disconnectModeObserver;connectedCallback(){this.disconnectModeObserver=o(this.el,(t=>{const e=this.adminMode;this.adminMode=t==="admin";if(this.adminMode&&!e){requestAnimationFrame((()=>this.readSlottedContent()))}else if(!this.adminMode&&e){this.syncContentToSlot()}}))}disconnectedCallback(){this.disconnectModeObserver?.()}onVariantChange(){if(this.adminMode&&this.editorRef){this.syncContentToSlot()}}readSlottedContent(){if(!this.slotRef)return;const t=this.slotRef.assignedNodes({flatten:true});let e="";t.forEach((t=>{if(t.nodeType===Node.TEXT_NODE){e+=t.textContent}else if(t.nodeType===Node.ELEMENT_NODE){e+=t.innerHTML||t.textContent}}));this.content=e.trim()}syncContentToSlot(){if(!this.editorRef)return;const t=this.editorRef.innerHTML;const e=this.slotRef;if(e){const i=e.assignedNodes({flatten:true});if(i.length>0){const e=i[0];if(e.nodeType===Node.ELEMENT_NODE){e.innerHTML=t}else if(e.nodeType===Node.TEXT_NODE){const i=e.parentNode;if(i){const l=document.createElement("span");l.innerHTML=t;i.replaceChild(l,e);if(l.childNodes.length===1&&l.firstChild?.nodeType===Node.TEXT_NODE){i.replaceChild(l.firstChild,l)}}}}else{this.el.innerHTML=t}}}handleInput=()=>{if(this.editorRef){this.content=this.editorRef.innerHTML;this.updateSelectionState()}};handleFocus=()=>{this.isFocused=true;this.updateSelectionState()};handleBlur=t=>{const e=t.relatedTarget;const i=this.el.shadowRoot?.querySelector(".le-text-toolbar");if(i?.contains(e)){return}setTimeout((()=>{if(!this.el.shadowRoot?.activeElement){this.isFocused=false;this.syncContentToSlot()}}),150)};handleSelectionChange=()=>{this.updateSelectionState()};updateSelectionState(){const t=window.getSelection();if(!t||t.rangeCount===0)return;this.selectionState={isBold:document.queryCommandState("bold"),isItalic:document.queryCommandState("italic"),isUnderline:document.queryCommandState("underline"),isStrikethrough:document.queryCommandState("strikeThrough"),isLink:this.isSelectionInLink(t),blockType:this.variant}}isSelectionInLink(t){if(!t.anchorNode)return false;let e=t.anchorNode;while(e&&e!==this.editorRef){if(e.nodeName==="A")return true;e=e.parentNode}return false}execCommand(t,e){this.editorRef?.focus();document.execCommand(t,false,e);this.handleInput();this.updateSelectionState()}toggleBold=t=>{t.preventDefault();this.execCommand("bold")};toggleItalic=t=>{t.preventDefault();this.execCommand("italic")};toggleUnderline=t=>{t.preventDefault();this.execCommand("underline")};toggleStrikethrough=t=>{t.preventDefault();this.execCommand("strikeThrough")};toggleLink=t=>{t.preventDefault();if(this.selectionState.isLink){this.execCommand("unlink")}else{const t=prompt("Enter URL:","https://");if(t){this.execCommand("createLink",t)}}};changeVariant=t=>{const e=t.target;this.variant=e.value};renderToolbar(){return i("div",{class:"le-text-toolbar"},i("select",{class:"le-text-toolbar-select",onChange:this.changeVariant,onMouseDown:t=>t.preventDefault()},i("option",{value:"p",selected:this.variant==="p"},"Paragraph"),i("option",{value:"h1",selected:this.variant==="h1"},"Heading 1"),i("option",{value:"h2",selected:this.variant==="h2"},"Heading 2"),i("option",{value:"h3",selected:this.variant==="h3"},"Heading 3"),i("option",{value:"h4",selected:this.variant==="h4"},"Heading 4"),i("option",{value:"h5",selected:this.variant==="h5"},"Heading 5"),i("option",{value:"h6",selected:this.variant==="h6"},"Heading 6"),i("option",{value:"quote",selected:this.variant==="quote"},"Quote"),i("option",{value:"code",selected:this.variant==="code"},"Code"),i("option",{value:"label",selected:this.variant==="label"},"Label"),i("option",{value:"small",selected:this.variant==="small"},"Small")),i("div",{class:"le-text-toolbar-divider"}),i("button",{type:"button",class:{"le-text-toolbar-btn":true,active:this.selectionState.isBold},onMouseDown:this.toggleBold,title:"Bold (Ctrl+B)"},i("strong",null,"B")),i("button",{type:"button",class:{"le-text-toolbar-btn":true,active:this.selectionState.isItalic},onMouseDown:this.toggleItalic,title:"Italic (Ctrl+I)"},i("em",null,"I")),i("button",{type:"button",class:{"le-text-toolbar-btn":true,active:this.selectionState.isUnderline},onMouseDown:this.toggleUnderline,title:"Underline (Ctrl+U)"},i("span",{style:{textDecoration:"underline"}},"U")),i("button",{type:"button",class:{"le-text-toolbar-btn":true,active:this.selectionState.isStrikethrough},onMouseDown:this.toggleStrikethrough,title:"Strikethrough"},i("span",{style:{textDecoration:"line-through"}},"S")),i("div",{class:"le-text-toolbar-divider"}),i("button",{type:"button",class:{"le-text-toolbar-btn":true,active:this.selectionState.isLink},onMouseDown:this.toggleLink,title:this.selectionState.isLink?"Remove link":"Add link"},"🔗"))}getTag(){switch(this.variant){case"quote":return"blockquote";case"code":return"pre";case"label":return"label";case"small":return"small";default:return this.variant}}render(){const t=this.getTag();const e={};if(this.color){e.color=this.color}if(this.align){e.textAlign=this.align}const o={"le-text":true,[`variant-${this.variant}`]:true,truncate:this.truncate,[`max-lines-${this.maxLines}`]:this.truncate&&this.maxLines};if(this.adminMode){return i(l,{class:"admin-mode"},i("le-component",{component:"le-text"},i("div",{class:"le-text-editor-wrapper"},this.isFocused&&this.renderToolbar(),i(t,{class:o,part:"text",style:e},i("div",{ref:t=>this.editorRef=t,class:"le-text-editor",contentEditable:true,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyUp:this.handleSelectionChange,onMouseUp:this.handleSelectionChange,innerHTML:this.content})),i("div",{class:"hidden-slot"},i("slot",{ref:t=>this.slotRef=t,onSlotchange:()=>this.readSlottedContent()})))))}return i(l,null,i(t,{class:o,part:"text",style:e},i("slot",{ref:t=>this.slotRef=t})))}static get watchers(){return{variant:["onVariantChange"]}}};s.style=n;export{s as le_text};
2
- //# sourceMappingURL=p-4b1d3b6d.entry.js.map