le-kit 0.0.3 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/admin/index.d.ts +25 -0
- package/dist/admin/index.js +80 -0
- package/dist/cjs/index-CO4npcak.js +1796 -0
- package/dist/cjs/index-CO4npcak.js.map +1 -0
- package/dist/cjs/index.cjs.js +117 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/le-box.cjs.entry.js +184 -0
- package/dist/cjs/le-box.entry.cjs.js.map +1 -0
- package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -0
- package/dist/cjs/le-button_6.cjs.entry.js +1199 -0
- package/dist/cjs/le-card.cjs.entry.js +29 -0
- package/dist/cjs/le-card.entry.cjs.js.map +1 -0
- package/dist/cjs/le-kit.cjs.js +25 -0
- package/dist/cjs/le-kit.cjs.js.map +1 -0
- package/dist/cjs/le-number-input.cjs.entry.js +202 -0
- package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
- package/dist/cjs/le-popup.cjs.entry.js +212 -0
- package/dist/cjs/le-popup.entry.cjs.js.map +1 -0
- package/dist/cjs/le-round-progress.cjs.entry.js +106 -0
- package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
- package/dist/cjs/le-stack.cjs.entry.js +135 -0
- package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
- package/dist/cjs/le-text.cjs.entry.js +335 -0
- package/dist/cjs/le-text.entry.cjs.js.map +1 -0
- package/dist/cjs/le-turntable.cjs.entry.js +139 -0
- package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +13 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/utils-BeT0iyCQ.js +152 -0
- package/dist/cjs/utils-BeT0iyCQ.js.map +1 -0
- package/dist/collection/collection-manifest.json +20 -102
- package/dist/collection/components/le-box/le-box.default.css +37 -0
- package/dist/collection/components/le-box/le-box.js +614 -0
- package/dist/collection/components/le-box/le-box.js.map +1 -0
- package/dist/collection/components/le-button/le-button.default.css +263 -0
- package/dist/collection/components/le-button/le-button.js +368 -0
- package/dist/collection/components/le-button/le-button.js.map +1 -0
- package/dist/collection/components/le-card/le-card.default.css +74 -0
- package/dist/collection/components/le-card/le-card.js +102 -0
- package/dist/collection/components/le-card/le-card.js.map +1 -0
- package/dist/collection/components/le-checkbox/le-checkbox.css +93 -0
- package/dist/collection/components/le-checkbox/le-checkbox.js +192 -0
- package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
- package/dist/collection/components/le-component/le-component.css +189 -0
- package/dist/collection/components/le-component/le-component.js +359 -0
- package/dist/collection/components/le-component/le-component.js.map +1 -0
- package/dist/collection/components/le-number-input/le-number-input.css +135 -0
- package/dist/collection/components/le-number-input/le-number-input.js +515 -0
- package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
- package/dist/collection/components/le-popover/le-popover.css +143 -0
- package/dist/collection/components/le-popover/le-popover.js +693 -0
- package/dist/collection/components/le-popover/le-popover.js.map +1 -0
- package/dist/collection/components/le-popup/le-popup.api.js +101 -0
- package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
- package/dist/collection/components/le-popup/le-popup.css +222 -0
- package/dist/collection/components/le-popup/le-popup.js +596 -0
- package/dist/collection/components/le-popup/le-popup.js.map +1 -0
- package/dist/collection/components/le-round-progress/le-round-progress.js +184 -84
- package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
- package/dist/collection/components/le-slot/le-slot.default.css +222 -0
- package/dist/collection/components/le-slot/le-slot.js +636 -0
- package/dist/collection/components/le-slot/le-slot.js.map +1 -0
- package/dist/collection/components/le-stack/le-stack.default.css +37 -0
- package/dist/collection/components/le-stack/le-stack.js +389 -0
- package/dist/collection/components/le-stack/le-stack.js.map +1 -0
- package/dist/collection/components/le-string-input/le-string-input.css +83 -0
- package/dist/collection/components/le-string-input/le-string-input.js +359 -0
- package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
- package/dist/collection/components/le-text/le-text.default.css +169 -0
- package/dist/collection/components/le-text/le-text.js +475 -0
- package/dist/collection/components/le-text/le-text.js.map +1 -0
- package/dist/collection/components/le-turntable/le-turntable.js +210 -102
- package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
- package/dist/collection/global/app.js +130 -0
- package/dist/collection/global/app.js.map +1 -0
- package/dist/collection/index-admin.js +27 -0
- package/dist/collection/index-admin.js.map +1 -0
- package/dist/collection/index-core.js +25 -0
- package/dist/collection/index-core.js.map +1 -0
- package/dist/collection/index.js +15 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/types/blocks.js +115 -0
- package/dist/collection/types/blocks.js.map +1 -0
- package/dist/collection/types/options.js +2 -0
- package/dist/collection/types/options.js.map +1 -0
- package/dist/collection/utils/utils.js +141 -5
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/components/index.d.ts +64 -0
- package/dist/components/index.js +127 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/le-box.d.ts +11 -0
- package/dist/components/le-box.js +256 -0
- package/dist/components/le-box.js.map +1 -0
- package/dist/components/le-button.d.ts +11 -0
- package/dist/components/le-button.js +9 -0
- package/dist/components/le-button.js.map +1 -0
- package/dist/components/le-button2.js +1408 -0
- package/dist/components/le-button2.js.map +1 -0
- package/dist/components/le-card.d.ts +11 -0
- package/dist/components/le-card.js +83 -0
- package/dist/components/le-card.js.map +1 -0
- package/dist/components/le-checkbox.d.ts +11 -0
- package/dist/components/le-checkbox.js +9 -0
- package/dist/components/le-checkbox.js.map +1 -0
- package/dist/components/le-component.d.ts +11 -0
- package/dist/components/le-component.js +9 -0
- package/dist/components/le-component.js.map +1 -0
- package/dist/components/le-number-input.d.ts +11 -0
- package/dist/components/le-number-input.js +271 -0
- package/dist/components/le-number-input.js.map +1 -0
- package/dist/components/le-popover.d.ts +11 -0
- package/dist/components/le-popover.js +9 -0
- package/dist/components/le-popover.js.map +1 -0
- package/dist/components/le-popover2.js +382 -0
- package/dist/components/le-popover2.js.map +1 -0
- package/dist/components/le-popup.d.ts +11 -0
- package/dist/components/le-popup.js +279 -0
- package/dist/components/le-popup.js.map +1 -0
- package/dist/components/le-round-progress.d.ts +11 -0
- package/dist/components/le-round-progress.js +135 -0
- package/dist/components/le-round-progress.js.map +1 -0
- package/dist/components/le-slot.d.ts +11 -0
- package/dist/components/le-slot.js +9 -0
- package/dist/components/le-slot.js.map +1 -0
- package/dist/components/le-stack.d.ts +11 -0
- package/dist/components/le-stack.js +198 -0
- package/dist/components/le-stack.js.map +1 -0
- package/dist/components/le-string-input.d.ts +11 -0
- package/dist/components/le-string-input.js +9 -0
- package/dist/components/le-string-input.js.map +1 -0
- package/dist/components/le-text.d.ts +11 -0
- package/dist/components/le-text.js +398 -0
- package/dist/components/le-text.js.map +1 -0
- package/dist/components/le-turntable.d.ts +11 -0
- package/dist/components/le-turntable.js +164 -0
- package/dist/components/le-turntable.js.map +1 -0
- package/dist/core/components/index.d.ts +64 -0
- package/dist/core/components/index.js +127 -0
- package/dist/core/components/index.js.map +1 -0
- package/dist/core/components/le-box.d.ts +11 -0
- package/dist/core/components/le-box.js +246 -0
- package/dist/core/components/le-box.js.map +1 -0
- package/dist/core/components/le-button.d.ts +11 -0
- package/dist/core/components/le-button.js +9 -0
- package/dist/core/components/le-button.js.map +1 -0
- package/dist/core/components/le-button2.js +1358 -0
- package/dist/core/components/le-button2.js.map +1 -0
- package/dist/core/components/le-card.d.ts +11 -0
- package/dist/core/components/le-card.js +73 -0
- package/dist/core/components/le-card.js.map +1 -0
- package/dist/core/components/le-checkbox.d.ts +11 -0
- package/dist/core/components/le-checkbox.js +9 -0
- package/dist/core/components/le-checkbox.js.map +1 -0
- package/dist/core/components/le-component.js.map +1 -0
- package/dist/core/components/le-number-input.d.ts +11 -0
- package/dist/core/components/le-number-input.js +261 -0
- package/dist/core/components/le-number-input.js.map +1 -0
- package/dist/core/components/le-popover.d.ts +11 -0
- package/dist/core/components/le-popover.js +9 -0
- package/dist/core/components/le-popover.js.map +1 -0
- package/dist/core/components/le-popover2.js +382 -0
- package/dist/core/components/le-popover2.js.map +1 -0
- package/dist/core/components/le-popup.d.ts +11 -0
- package/dist/core/components/le-popup.js +269 -0
- package/dist/core/components/le-popup.js.map +1 -0
- package/dist/core/components/le-round-progress.d.ts +11 -0
- package/dist/core/components/le-round-progress.js +135 -0
- package/dist/core/components/le-round-progress.js.map +1 -0
- package/dist/core/components/le-slot.js.map +1 -0
- package/dist/core/components/le-stack.d.ts +11 -0
- package/dist/core/components/le-stack.js +188 -0
- package/dist/core/components/le-stack.js.map +1 -0
- package/dist/core/components/le-string-input.d.ts +11 -0
- package/dist/core/components/le-string-input.js +9 -0
- package/dist/core/components/le-string-input.js.map +1 -0
- package/dist/core/components/le-text.d.ts +11 -0
- package/dist/core/components/le-text.js +388 -0
- package/dist/core/components/le-text.js.map +1 -0
- package/dist/core/components/le-turntable.d.ts +11 -0
- package/dist/core/components/le-turntable.js +164 -0
- package/dist/core/components/le-turntable.js.map +1 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.js +74 -0
- package/dist/core/stencil-runtime.js +1 -0
- package/dist/docs.d.ts +443 -0
- package/dist/docs.json +5185 -0
- package/dist/esm/index-D71TXvJa.js +1781 -0
- package/dist/esm/index-D71TXvJa.js.map +1 -0
- package/dist/esm/index.js +105 -5
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/le-box.entry.js +182 -0
- package/dist/esm/le-box.entry.js.map +1 -0
- package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -0
- package/dist/esm/le-button_6.entry.js +1192 -0
- package/dist/esm/le-card.entry.js +27 -0
- package/dist/esm/le-card.entry.js.map +1 -0
- package/dist/esm/le-kit.js +21 -0
- package/dist/esm/le-kit.js.map +1 -0
- package/dist/esm/le-number-input.entry.js +200 -0
- package/dist/esm/le-number-input.entry.js.map +1 -0
- package/dist/esm/le-popup.entry.js +210 -0
- package/dist/esm/le-popup.entry.js.map +1 -0
- package/dist/esm/le-round-progress.entry.js +104 -0
- package/dist/esm/le-round-progress.entry.js.map +1 -0
- package/dist/esm/le-stack.entry.js +133 -0
- package/dist/esm/le-stack.entry.js.map +1 -0
- package/dist/esm/le-text.entry.js +333 -0
- package/dist/esm/le-text.entry.js.map +1 -0
- package/dist/esm/le-turntable.entry.js +137 -0
- package/dist/esm/le-turntable.entry.js.map +1 -0
- package/dist/esm/loader.js +11 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/utils-CJLZrrdC.js +146 -0
- package/dist/esm/utils-CJLZrrdC.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -2
- package/dist/le-kit/index-D21JjI31.js.map +1 -0
- package/dist/le-kit/index.esm.js +2 -0
- package/dist/le-kit/index.esm.js.map +1 -0
- package/dist/le-kit/le-box.entry.esm.js.map +1 -0
- package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -0
- package/dist/le-kit/le-card.entry.esm.js.map +1 -0
- package/dist/le-kit/le-kit.css +1 -0
- package/dist/le-kit/le-kit.esm.js +2 -0
- package/dist/le-kit/le-kit.esm.js.map +1 -0
- package/dist/le-kit/le-number-input.entry.esm.js.map +1 -0
- package/dist/le-kit/le-popup.entry.esm.js.map +1 -0
- package/dist/le-kit/le-round-progress.entry.esm.js.map +1 -0
- package/dist/le-kit/le-stack.entry.esm.js.map +1 -0
- package/dist/le-kit/le-text.entry.esm.js.map +1 -0
- package/dist/le-kit/le-turntable.entry.esm.js.map +1 -0
- package/dist/le-kit/loader.esm.js.map +1 -0
- package/dist/le-kit/p-024a764e.entry.js +2 -0
- package/dist/le-kit/p-024a764e.entry.js.map +1 -0
- package/dist/le-kit/p-073cf0b9.entry.js +2 -0
- package/dist/le-kit/p-073cf0b9.entry.js.map +1 -0
- package/dist/le-kit/p-0955b105.entry.js +2 -0
- package/dist/le-kit/p-0955b105.entry.js.map +1 -0
- package/dist/le-kit/p-18d79ee2.entry.js +2 -0
- package/dist/le-kit/p-18d79ee2.entry.js.map +1 -0
- package/dist/le-kit/p-4b1d3b6d.entry.js +2 -0
- package/dist/le-kit/p-4b1d3b6d.entry.js.map +1 -0
- package/dist/le-kit/p-79d179bd.entry.js +2 -0
- package/dist/le-kit/p-79d179bd.entry.js.map +1 -0
- package/dist/le-kit/p-D71TXvJa.js +3 -0
- package/dist/le-kit/p-D71TXvJa.js.map +1 -0
- package/dist/le-kit/p-c8a9288e.entry.js +2 -0
- package/dist/le-kit/p-c8a9288e.entry.js.map +1 -0
- package/dist/le-kit/p-cfc35bd3.entry.js +2 -0
- package/dist/le-kit/p-cfc35bd3.entry.js.map +1 -0
- package/dist/le-kit/p-d04da1f5.entry.js +2 -0
- package/dist/le-kit/p-d04da1f5.entry.js.map +1 -0
- package/dist/le-kit/p-qIai5-eB.js +2 -0
- package/dist/le-kit/p-qIai5-eB.js.map +1 -0
- package/dist/le-kit/utils-apol-Xc_.js.map +1 -0
- package/dist/themes/base.css +89 -0
- package/dist/themes/dark.css +100 -0
- package/dist/themes/default.css +108 -0
- package/dist/themes/gradient.css +100 -0
- package/dist/themes/index.css +413 -0
- package/dist/themes/minimal.css +100 -0
- package/dist/themes/warm.css +100 -0
- package/dist/types/components/le-box/le-box.d.ts +111 -0
- package/dist/types/components/le-button/le-button.d.ts +78 -0
- package/dist/types/components/le-card/le-card.d.ts +37 -0
- package/dist/types/components/le-checkbox/le-checkbox.d.ts +46 -0
- package/dist/types/components/le-component/le-component.d.ts +115 -0
- package/dist/types/components/le-number-input/le-number-input.d.ts +106 -0
- package/dist/types/components/le-popover/le-popover.d.ts +109 -0
- package/dist/types/components/le-popup/le-popup.api.d.ts +73 -0
- package/dist/types/components/le-popup/le-popup.d.ts +122 -0
- package/dist/types/components/le-round-progress/le-round-progress.d.ts +2 -3
- package/dist/types/components/le-slot/le-slot.d.ts +149 -0
- package/dist/types/components/le-stack/le-stack.d.ts +73 -0
- package/dist/types/components/le-string-input/le-string-input.d.ts +83 -0
- package/dist/types/components/le-text/le-text.d.ts +141 -0
- package/dist/types/components/le-turntable/le-turntable.d.ts +1 -2
- package/dist/types/components.d.ts +2030 -62
- package/dist/types/global/app.d.ts +40 -0
- package/dist/types/index-admin.d.ts +29 -0
- package/dist/types/index-core.d.ts +27 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/stencil-public-runtime.d.ts +1756 -0
- package/dist/types/types/blocks.d.ts +136 -0
- package/dist/types/types/options.d.ts +124 -0
- package/dist/types/utils/utils.d.ts +54 -1
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +64 -13
- package/readme.md +180 -46
- package/dist/cjs/es5/build/jqoqzji9.entry.js +0 -6
- package/dist/cjs/es5/build/jqoqzji9.sc.entry.js +0 -6
- package/dist/cjs/es5/build/novg0vs0.entry.js +0 -9
- package/dist/cjs/es5/build/novg0vs0.sc.entry.js +0 -9
- package/dist/cjs/es5/index.js +0 -1
- package/dist/cjs/es5/le-kit.components.js +0 -4
- package/dist/cjs/es5/le-kit.core.js +0 -459
- package/dist/cjs/es5/le-kit.define.js +0 -9
- package/dist/cjs/es5/polyfills/array.js +0 -63
- package/dist/cjs/es5/polyfills/css-shim.js +0 -178
- package/dist/cjs/es5/polyfills/dom.js +0 -125
- package/dist/cjs/es5/polyfills/fetch.js +0 -186
- package/dist/cjs/es5/polyfills/map.js +0 -54
- package/dist/cjs/es5/polyfills/object.js +0 -27
- package/dist/cjs/es5/polyfills/promise.js +0 -80
- package/dist/cjs/es5/polyfills/string.js +0 -15
- package/dist/cjs/es5/polyfills/tslib.js +0 -244
- package/dist/cjs/es5/polyfills/url.js +0 -68
- package/dist/collection/interface.js +0 -0
- package/dist/esm/es2017/build/jqoqzji9.entry.js +0 -88
- package/dist/esm/es2017/build/jqoqzji9.sc.entry.js +0 -88
- package/dist/esm/es2017/build/novg0vs0.entry.js +0 -106
- package/dist/esm/es2017/build/novg0vs0.sc.entry.js +0 -106
- package/dist/esm/es2017/index.js +0 -1
- package/dist/esm/es2017/le-kit.components.js +0 -2
- package/dist/esm/es2017/le-kit.core.js +0 -5
- package/dist/esm/es2017/le-kit.define.js +0 -9
- package/dist/esm/es5/build/jqoqzji9.entry.js +0 -1
- package/dist/esm/es5/build/jqoqzji9.sc.entry.js +0 -1
- package/dist/esm/es5/build/novg0vs0.entry.js +0 -1
- package/dist/esm/es5/build/novg0vs0.sc.entry.js +0 -1
- package/dist/esm/es5/index.js +0 -1
- package/dist/esm/es5/le-kit.components.js +0 -2
- package/dist/esm/es5/le-kit.core.js +0 -5
- package/dist/esm/es5/le-kit.define.js +0 -9
- package/dist/esm/es5/polyfills/array.js +0 -23
- package/dist/esm/es5/polyfills/css-shim.js +0 -8
- package/dist/esm/es5/polyfills/dom.js +0 -22
- package/dist/esm/es5/polyfills/fetch.js +0 -20
- package/dist/esm/es5/polyfills/map.js +0 -7
- package/dist/esm/es5/polyfills/object.js +0 -20
- package/dist/esm/es5/polyfills/promise.js +0 -8
- package/dist/esm/es5/polyfills/string.js +0 -12
- package/dist/esm/es5/polyfills/tslib.js +0 -160
- package/dist/esm/es5/polyfills/url.js +0 -7
- package/dist/le-kit/jqoqzji9.entry.js +0 -1
- package/dist/le-kit/jqoqzji9.es5.entry.js +0 -1
- package/dist/le-kit/jqoqzji9.sc.entry.js +0 -1
- package/dist/le-kit/jqoqzji9.sc.es5.entry.js +0 -1
- package/dist/le-kit/le-kit.lfyfa4jd.js +0 -123
- package/dist/le-kit/le-kit.rzqb8hph.js +0 -4
- package/dist/le-kit/novg0vs0.entry.js +0 -1
- package/dist/le-kit/novg0vs0.es5.entry.js +0 -1
- package/dist/le-kit/novg0vs0.sc.entry.js +0 -1
- package/dist/le-kit/novg0vs0.sc.es5.entry.js +0 -1
- package/dist/le-kit.js +0 -1
- package/dist/loader/index.cjs.js +0 -1
- package/dist/loader/index.d.ts +0 -1
- package/dist/loader/index.es2017.js +0 -1
- package/dist/loader/index.js +0 -1
- package/dist/loader/package.json +0 -9
- package/dist/types/stencil.core.d.ts +0 -1203
- package/dist/web-components.json +0 -41
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Block types for the rich text editor.
|
|
3
|
+
*
|
|
4
|
+
* Used by: le-rich-text-editor, le-editor-block, le-block-menu
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Default block type configurations.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_BLOCK_CONFIGS = [
|
|
10
|
+
{
|
|
11
|
+
type: 'paragraph',
|
|
12
|
+
label: 'Text',
|
|
13
|
+
icon: '📝',
|
|
14
|
+
tag: 'p',
|
|
15
|
+
placeholder: 'Type something...',
|
|
16
|
+
editable: true,
|
|
17
|
+
description: 'Plain text paragraph',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: 'heading1',
|
|
21
|
+
label: 'Heading 1',
|
|
22
|
+
icon: 'H1',
|
|
23
|
+
tag: 'h1',
|
|
24
|
+
placeholder: 'Heading 1',
|
|
25
|
+
editable: true,
|
|
26
|
+
description: 'Large section heading',
|
|
27
|
+
shortcut: '# ',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'heading2',
|
|
31
|
+
label: 'Heading 2',
|
|
32
|
+
icon: 'H2',
|
|
33
|
+
tag: 'h2',
|
|
34
|
+
placeholder: 'Heading 2',
|
|
35
|
+
editable: true,
|
|
36
|
+
description: 'Medium section heading',
|
|
37
|
+
shortcut: '## ',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'heading3',
|
|
41
|
+
label: 'Heading 3',
|
|
42
|
+
icon: 'H3',
|
|
43
|
+
tag: 'h3',
|
|
44
|
+
placeholder: 'Heading 3',
|
|
45
|
+
editable: true,
|
|
46
|
+
description: 'Small section heading',
|
|
47
|
+
shortcut: '### ',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'bullet-list',
|
|
51
|
+
label: 'Bulleted List',
|
|
52
|
+
icon: '•',
|
|
53
|
+
tag: 'li',
|
|
54
|
+
placeholder: 'List item',
|
|
55
|
+
editable: true,
|
|
56
|
+
description: 'Unordered list',
|
|
57
|
+
shortcut: '- ',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: 'numbered-list',
|
|
61
|
+
label: 'Numbered List',
|
|
62
|
+
icon: '1.',
|
|
63
|
+
tag: 'li',
|
|
64
|
+
placeholder: 'List item',
|
|
65
|
+
editable: true,
|
|
66
|
+
description: 'Ordered list',
|
|
67
|
+
shortcut: '1. ',
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
type: 'quote',
|
|
71
|
+
label: 'Quote',
|
|
72
|
+
icon: '❝',
|
|
73
|
+
tag: 'blockquote',
|
|
74
|
+
placeholder: 'Quote',
|
|
75
|
+
editable: true,
|
|
76
|
+
description: 'Block quote',
|
|
77
|
+
shortcut: '> ',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: 'code',
|
|
81
|
+
label: 'Code',
|
|
82
|
+
icon: '</>',
|
|
83
|
+
tag: 'code',
|
|
84
|
+
placeholder: 'Code',
|
|
85
|
+
editable: true,
|
|
86
|
+
description: 'Code block',
|
|
87
|
+
shortcut: '``` ',
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'divider',
|
|
91
|
+
label: 'Divider',
|
|
92
|
+
icon: '—',
|
|
93
|
+
tag: 'hr',
|
|
94
|
+
editable: false,
|
|
95
|
+
description: 'Horizontal line',
|
|
96
|
+
shortcut: '---',
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
/**
|
|
100
|
+
* Generate a unique block ID
|
|
101
|
+
*/
|
|
102
|
+
export function generateBlockId() {
|
|
103
|
+
return `block-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Create a new block with default values
|
|
107
|
+
*/
|
|
108
|
+
export function createBlock(type, content = '') {
|
|
109
|
+
return {
|
|
110
|
+
id: generateBlockId(),
|
|
111
|
+
type,
|
|
112
|
+
content,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/types/blocks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmIH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,GAAG;QACR,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,WAAW,EAAE,WAAW;QACxB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,OAAO;QACpB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,aAAa;QAC1B,QAAQ,EAAE,IAAI;KACf;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,MAAM;QACX,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,YAAY;QACzB,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,GAAG;QACT,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAWF;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe,EAAE,UAAkB,EAAE;IAC/D,OAAO;QACL,EAAE,EAAE,eAAe,EAAE;QACrB,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Block types for the rich text editor.\n *\n * Used by: le-rich-text-editor, le-editor-block, le-block-menu\n */\n\n/**\n * Available block types for the editor.\n * Start with essential types, expand in future versions.\n */\nexport type BlockType = 'paragraph' | 'heading1' | 'heading2' | 'heading3' | 'bullet-list' | 'numbered-list' | 'quote' | 'code' | 'divider';\n\n/**\n * A single block in the editor.\n *\n * @example Paragraph block\n * ```typescript\n * const block: LeBlock = {\n * id: 'block-1',\n * type: 'paragraph',\n * content: 'Hello <strong>world</strong>!'\n * };\n * ```\n *\n * @example Code block with language\n * ```typescript\n * const block: LeBlock = {\n * id: 'block-2',\n * type: 'code',\n * content: 'const x = 1;',\n * attributes: { language: 'typescript' }\n * };\n * ```\n */\nexport interface LeBlock {\n /**\n * Unique identifier for the block.\n */\n id: string;\n\n /**\n * The type of block (paragraph, heading, list, etc.)\n */\n type: BlockType;\n\n /**\n * HTML content of the block.\n * For most blocks, this is the inner HTML.\n * For divider, this is empty.\n */\n content: string;\n\n /**\n * Block-specific attributes.\n */\n attributes?: LeBlockAttributes;\n}\n\n/**\n * Block-specific attributes\n */\nexport interface LeBlockAttributes {\n /**\n * Programming language for code blocks.\n */\n language?: string;\n\n /**\n * Placeholder text shown when block is empty.\n */\n placeholder?: string;\n\n /**\n * Custom CSS class for the block.\n */\n className?: string;\n\n /**\n * Additional custom attributes.\n */\n [key: string]: unknown;\n}\n\n/**\n * Configuration for a block type.\n * Used by the block registry to render and manage blocks.\n */\nexport interface BlockTypeConfig {\n /**\n * Block type identifier.\n */\n type: BlockType;\n\n /**\n * Display label for the block type (shown in block menu).\n */\n label: string;\n\n /**\n * Icon for the block type (emoji or icon name).\n */\n icon?: string;\n\n /**\n * HTML tag to render for this block type.\n */\n tag: string;\n\n /**\n * CSS class applied to the block element.\n */\n className?: string;\n\n /**\n * Placeholder text shown when block is empty.\n */\n placeholder?: string;\n\n /**\n * Whether the block content is editable.\n * Set to false for blocks like divider.\n */\n editable?: boolean;\n\n /**\n * Description shown in block menu.\n */\n description?: string;\n\n /**\n * Keyboard shortcut hint (e.g., \"# \" for heading).\n */\n shortcut?: string;\n}\n\n/**\n * Default block type configurations.\n */\nexport const DEFAULT_BLOCK_CONFIGS: BlockTypeConfig[] = [\n {\n type: 'paragraph',\n label: 'Text',\n icon: '📝',\n tag: 'p',\n placeholder: 'Type something...',\n editable: true,\n description: 'Plain text paragraph',\n },\n {\n type: 'heading1',\n label: 'Heading 1',\n icon: 'H1',\n tag: 'h1',\n placeholder: 'Heading 1',\n editable: true,\n description: 'Large section heading',\n shortcut: '# ',\n },\n {\n type: 'heading2',\n label: 'Heading 2',\n icon: 'H2',\n tag: 'h2',\n placeholder: 'Heading 2',\n editable: true,\n description: 'Medium section heading',\n shortcut: '## ',\n },\n {\n type: 'heading3',\n label: 'Heading 3',\n icon: 'H3',\n tag: 'h3',\n placeholder: 'Heading 3',\n editable: true,\n description: 'Small section heading',\n shortcut: '### ',\n },\n {\n type: 'bullet-list',\n label: 'Bulleted List',\n icon: '•',\n tag: 'li',\n placeholder: 'List item',\n editable: true,\n description: 'Unordered list',\n shortcut: '- ',\n },\n {\n type: 'numbered-list',\n label: 'Numbered List',\n icon: '1.',\n tag: 'li',\n placeholder: 'List item',\n editable: true,\n description: 'Ordered list',\n shortcut: '1. ',\n },\n {\n type: 'quote',\n label: 'Quote',\n icon: '❝',\n tag: 'blockquote',\n placeholder: 'Quote',\n editable: true,\n description: 'Block quote',\n shortcut: '> ',\n },\n {\n type: 'code',\n label: 'Code',\n icon: '</>',\n tag: 'code',\n placeholder: 'Code',\n editable: true,\n description: 'Code block',\n shortcut: '``` ',\n },\n {\n type: 'divider',\n label: 'Divider',\n icon: '—',\n tag: 'hr',\n editable: false,\n description: 'Horizontal line',\n shortcut: '---',\n },\n];\n\n/**\n * Event detail for block changes\n */\nexport interface LeBlockChangeDetail {\n blocks: LeBlock[];\n changedBlock?: LeBlock;\n action: 'add' | 'remove' | 'update' | 'move';\n}\n\n/**\n * Generate a unique block ID\n */\nexport function generateBlockId(): string {\n return `block-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Create a new block with default values\n */\nexport function createBlock(type: BlockType, content: string = ''): LeBlock {\n return {\n id: generateBlockId(),\n type,\n content,\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Universal option interface used across Le-Kit components.\n *\n * Used by: le-select, le-combobox, le-multiselect, le-tabs,\n * le-block-menu, le-emoji-picker, and any menu/list components.\n *\n * @example Basic option\n * ```typescript\n * const option: LeOption = {\n * label: 'Option 1',\n * value: 'opt1'\n * };\n * ```\n *\n * @example With icons and description\n * ```typescript\n * const option: LeOption = {\n * label: 'Settings',\n * value: 'settings',\n * iconStart: '⚙️',\n * description: 'Configure application settings'\n * };\n * ```\n *\n * @example Grouped options\n * ```typescript\n * const options: LeOption[] = [\n * { label: 'Apple', value: 'apple', group: 'Fruits' },\n * { label: 'Banana', value: 'banana', group: 'Fruits' },\n * { label: 'Carrot', value: 'carrot', group: 'Vegetables' },\n * ];\n * ```\n *\n * @example Nested options (for submenus)\n * ```typescript\n * const option: LeOption = {\n * label: 'More actions',\n * iconEnd: '▶',\n * children: [\n * { label: 'Duplicate', value: 'duplicate' },\n * { label: 'Archive', value: 'archive' },\n * ]\n * };\n * ```\n */\nexport interface LeOption {\n /**\n * Unique identifier for the option.\n * Auto-generated if not provided.\n */\n id?: string;\n\n /**\n * Display text for the option (required).\n */\n label: string;\n\n /**\n * Selection value. Defaults to label if not provided.\n */\n value?: string | number;\n\n /**\n * Whether the option is disabled and cannot be selected.\n */\n disabled?: boolean;\n\n /**\n * Whether the option is currently selected.\n * Used for multiselect and menu components.\n */\n selected?: boolean;\n\n /**\n * Whether the option is checked.\n * Used for checkbox/radio menu items.\n */\n checked?: boolean;\n\n /**\n * Icon displayed at the start (left) of the option.\n * Can be a URL, icon name, or emoji character.\n */\n iconStart?: string;\n\n /**\n * Icon displayed at the end (right) of the option.\n * Can be a URL, icon name, or emoji character.\n */\n iconEnd?: string;\n\n /**\n * Secondary description text displayed below the label.\n */\n description?: string;\n\n /**\n * Nested child options for hierarchical menus or submenus.\n */\n children?: LeOption[];\n\n /**\n * Group label for categorizing options in flat lists.\n * Options with the same group value are visually grouped together.\n */\n group?: string;\n\n /**\n * Add a visual separator line before or after this option.\n */\n separator?: 'before' | 'after';\n\n /**\n * Custom data passthrough for application-specific needs.\n * This data is included in selection events.\n */\n data?: Record<string, unknown>;\n}\n\n/**\n * Helper type for option value\n */\nexport type LeOptionValue = string | number;\n\n/**\n * Event detail for option selection events\n */\nexport interface LeOptionSelectDetail {\n value: LeOptionValue;\n option: LeOption;\n}\n\n/**\n * Event detail for multi-option selection events\n */\nexport interface LeMultiOptionSelectDetail {\n values: LeOptionValue[];\n options: LeOption[];\n}\n"]}
|
|
@@ -1,5 +1,141 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for le-kit components
|
|
3
|
+
*/
|
|
4
|
+
import { getMode } from "../global/app";
|
|
5
|
+
/**
|
|
6
|
+
* Generates a unique ID for component instances
|
|
7
|
+
*/
|
|
8
|
+
export function generateId(prefix = 'le') {
|
|
9
|
+
return `${prefix}-${Math.random().toString(36).substring(2, 9)}`;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Parses a comma-separated string into an array
|
|
13
|
+
*/
|
|
14
|
+
export function parseCommaSeparated(value) {
|
|
15
|
+
if (!value)
|
|
16
|
+
return [];
|
|
17
|
+
return value
|
|
18
|
+
.split(',')
|
|
19
|
+
.map(s => s.trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a slot has content
|
|
24
|
+
*/
|
|
25
|
+
export function slotHasContent(el, slotName = '') {
|
|
26
|
+
const selector = slotName ? `[slot="${slotName}"]` : ':not([slot])';
|
|
27
|
+
return el.querySelector(selector) !== null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sets up a MutationObserver to track mode changes on ancestor elements.
|
|
31
|
+
* Returns a cleanup function to disconnect the observer.
|
|
32
|
+
*
|
|
33
|
+
* If the element or any ancestor has an explicit `mode` attribute, that creates
|
|
34
|
+
* a "mode boundary" - the mode is determined from that point, not from further up.
|
|
35
|
+
* This allows components like le-popover to force default mode for their children.
|
|
36
|
+
*
|
|
37
|
+
* @param el - The component's host element
|
|
38
|
+
* @param callback - Function to call when mode changes, receives the new mode
|
|
39
|
+
* @returns Cleanup function to disconnect the observer
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* export class MyComponent {
|
|
44
|
+
* @Element() el: HTMLElement;
|
|
45
|
+
* @State() adminMode: boolean = false;
|
|
46
|
+
* private disconnectModeObserver?: () => void;
|
|
47
|
+
*
|
|
48
|
+
* connectedCallback() {
|
|
49
|
+
* this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {
|
|
50
|
+
* this.adminMode = mode === 'admin';
|
|
51
|
+
* });
|
|
52
|
+
* }
|
|
53
|
+
*
|
|
54
|
+
* disconnectedCallback() {
|
|
55
|
+
* this.disconnectModeObserver?.();
|
|
56
|
+
* }
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export function observeModeChanges(el, callback) {
|
|
61
|
+
// Call immediately with current mode
|
|
62
|
+
callback(getMode(el));
|
|
63
|
+
// Set up observer for mode attribute changes
|
|
64
|
+
const observer = new MutationObserver(() => {
|
|
65
|
+
callback(getMode(el));
|
|
66
|
+
});
|
|
67
|
+
// Observe the element itself (for mode boundary changes)
|
|
68
|
+
observer.observe(el, {
|
|
69
|
+
attributes: true,
|
|
70
|
+
attributeFilter: ['mode'],
|
|
71
|
+
});
|
|
72
|
+
// Observe document root
|
|
73
|
+
observer.observe(document.documentElement, {
|
|
74
|
+
attributes: true,
|
|
75
|
+
attributeFilter: ['mode'],
|
|
76
|
+
});
|
|
77
|
+
// Traverse up, crossing shadow boundaries, and observe each element
|
|
78
|
+
let current = el;
|
|
79
|
+
while (current) {
|
|
80
|
+
if (current instanceof Element && current.parentElement) {
|
|
81
|
+
current = current.parentElement;
|
|
82
|
+
observer.observe(current, {
|
|
83
|
+
attributes: true,
|
|
84
|
+
attributeFilter: ['mode'],
|
|
85
|
+
});
|
|
86
|
+
// If this element has an explicit mode, it's a boundary
|
|
87
|
+
if (current.hasAttribute('mode')) {
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// Check if we're in a shadow root
|
|
93
|
+
const root = current.getRootNode();
|
|
94
|
+
if (root instanceof ShadowRoot) {
|
|
95
|
+
// Cross the shadow boundary and observe the host
|
|
96
|
+
current = root.host;
|
|
97
|
+
observer.observe(current, {
|
|
98
|
+
attributes: true,
|
|
99
|
+
attributeFilter: ['mode'],
|
|
100
|
+
});
|
|
101
|
+
// If the host has an explicit mode, it's a boundary
|
|
102
|
+
if (current.hasAttribute('mode')) {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Return cleanup function
|
|
112
|
+
return () => observer.disconnect();
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Combines multiple class names into a single string, filtering out falsy values.
|
|
116
|
+
*
|
|
117
|
+
* @param classes - arguments of class names, undefined, arrays, objects with boolean values and nested combinations of these
|
|
118
|
+
* @returns Combined class names string
|
|
119
|
+
*/
|
|
120
|
+
export function classnames(...classes) {
|
|
121
|
+
const result = [];
|
|
122
|
+
classes.forEach(cls => {
|
|
123
|
+
if (!cls)
|
|
124
|
+
return;
|
|
125
|
+
if (typeof cls === 'string') {
|
|
126
|
+
result.push(cls);
|
|
127
|
+
}
|
|
128
|
+
else if (Array.isArray(cls)) {
|
|
129
|
+
result.push(classnames(...cls));
|
|
130
|
+
}
|
|
131
|
+
else if (typeof cls === 'object') {
|
|
132
|
+
Object.entries(cls).forEach(([key, value]) => {
|
|
133
|
+
if (value) {
|
|
134
|
+
result.push(key);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return result.join(' ');
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB,IAAI;IAC9C,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAe,EAAE,WAAmB,EAAE;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,QAAQ,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;IACpE,OAAO,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAe,EACf,QAAgC;IAEhC,qCAAqC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEtB,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;QACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE;QACnB,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,CAAC,MAAM,CAAC;KAC1B,CAAC,CAAC;IAEH,wBAAwB;IACxB,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;QACzC,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,CAAC,MAAM,CAAC;KAC1B,CAAC,CAAC;IAEH,oEAAoE;IACpE,IAAI,OAAO,GAAgB,EAAE,CAAC;IAC9B,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAO,YAAY,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxD,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;YAChC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;gBACxB,UAAU,EAAE,IAAI;gBAChB,eAAe,EAAE,CAAC,MAAM,CAAC;aAC1B,CAAC,CAAC;YACH,wDAAwD;YACxD,IAAK,OAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;gBAC/B,iDAAiD;gBACjD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACpB,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE;oBACxB,UAAU,EAAE,IAAI;oBAChB,eAAe,EAAE,CAAC,MAAM,CAAC;iBAC1B,CAAC,CAAC;gBACH,oDAAoD;gBACpD,IAAK,OAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9C,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,OAAc;IAC1C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACpB,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["/**\n * Utility functions for le-kit components\n */\n\nimport { getMode } from '../global/app';\n\n/**\n * Generates a unique ID for component instances\n */\nexport function generateId(prefix: string = 'le'): string {\n return `${prefix}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Parses a comma-separated string into an array\n */\nexport function parseCommaSeparated(value: string | undefined): string[] {\n if (!value) return [];\n return value\n .split(',')\n .map(s => s.trim())\n .filter(Boolean);\n}\n\n/**\n * Checks if a slot has content\n */\nexport function slotHasContent(el: HTMLElement, slotName: string = ''): boolean {\n const selector = slotName ? `[slot=\"${slotName}\"]` : ':not([slot])';\n return el.querySelector(selector) !== null;\n}\n\n/**\n * Sets up a MutationObserver to track mode changes on ancestor elements.\n * Returns a cleanup function to disconnect the observer.\n * \n * If the element or any ancestor has an explicit `mode` attribute, that creates\n * a \"mode boundary\" - the mode is determined from that point, not from further up.\n * This allows components like le-popover to force default mode for their children.\n * \n * @param el - The component's host element\n * @param callback - Function to call when mode changes, receives the new mode\n * @returns Cleanup function to disconnect the observer\n * \n * @example\n * ```tsx\n * export class MyComponent {\n * @Element() el: HTMLElement;\n * @State() adminMode: boolean = false;\n * private disconnectModeObserver?: () => void;\n * \n * connectedCallback() {\n * this.disconnectModeObserver = observeModeChanges(this.el, (mode) => {\n * this.adminMode = mode === 'admin';\n * });\n * }\n * \n * disconnectedCallback() {\n * this.disconnectModeObserver?.();\n * }\n * }\n * ```\n */\nexport function observeModeChanges(\n el: HTMLElement,\n callback: (mode: string) => void\n): () => void {\n // Call immediately with current mode\n callback(getMode(el));\n\n // Set up observer for mode attribute changes\n const observer = new MutationObserver(() => {\n callback(getMode(el));\n });\n\n // Observe the element itself (for mode boundary changes)\n observer.observe(el, {\n attributes: true,\n attributeFilter: ['mode'],\n });\n\n // Observe document root\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['mode'],\n });\n\n // Traverse up, crossing shadow boundaries, and observe each element\n let current: Node | null = el;\n while (current) {\n if (current instanceof Element && current.parentElement) {\n current = current.parentElement;\n observer.observe(current, {\n attributes: true,\n attributeFilter: ['mode'],\n });\n // If this element has an explicit mode, it's a boundary\n if ((current as Element).hasAttribute('mode')) {\n break;\n }\n } else {\n // Check if we're in a shadow root\n const root = current.getRootNode();\n if (root instanceof ShadowRoot) {\n // Cross the shadow boundary and observe the host\n current = root.host;\n observer.observe(current, {\n attributes: true,\n attributeFilter: ['mode'],\n });\n // If the host has an explicit mode, it's a boundary\n if ((current as Element).hasAttribute('mode')) {\n break;\n }\n } else {\n break;\n }\n }\n }\n\n // Return cleanup function\n return () => observer.disconnect();\n}\n\n/**\n * Combines multiple class names into a single string, filtering out falsy values.\n * \n * @param classes - arguments of class names, undefined, arrays, objects with boolean values and nested combinations of these\n * @returns Combined class names string\n */\nexport function classnames(...classes: any[]): string {\n const result: string[] = [];\n\n classes.forEach(cls => {\n if (!cls) return;\n\n if (typeof cls === 'string') {\n result.push(cls);\n } else if (Array.isArray(cls)) {\n result.push(classnames(...cls));\n } else if (typeof cls === 'object') {\n Object.entries(cls).forEach(([key, value]) => {\n if (value) {\n result.push(key);\n }\n });\n }\n });\n\n return result.join(' ');\n}\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/* LeKit custom elements */
|
|
2
|
+
export { LeBox as LeBox } from '../types/components/le-box/le-box';
|
|
3
|
+
export { defineCustomElement as defineCustomElementLeBox } from './le-box';
|
|
4
|
+
export { LeButton as LeButton } from '../types/components/le-button/le-button';
|
|
5
|
+
export { defineCustomElement as defineCustomElementLeButton } from './le-button';
|
|
6
|
+
export { LeCard as LeCard } from '../types/components/le-card/le-card';
|
|
7
|
+
export { defineCustomElement as defineCustomElementLeCard } from './le-card';
|
|
8
|
+
export { LeCheckbox as LeCheckbox } from '../types/components/le-checkbox/le-checkbox';
|
|
9
|
+
export { defineCustomElement as defineCustomElementLeCheckbox } from './le-checkbox';
|
|
10
|
+
export { LeComponent as LeComponent } from '../types/components/le-component/le-component';
|
|
11
|
+
export { defineCustomElement as defineCustomElementLeComponent } from './le-component';
|
|
12
|
+
export { LeNumberInput as LeNumberInput } from '../types/components/le-number-input/le-number-input';
|
|
13
|
+
export { defineCustomElement as defineCustomElementLeNumberInput } from './le-number-input';
|
|
14
|
+
export { LePopover as LePopover } from '../types/components/le-popover/le-popover';
|
|
15
|
+
export { defineCustomElement as defineCustomElementLePopover } from './le-popover';
|
|
16
|
+
export { LePopup as LePopup } from '../types/components/le-popup/le-popup';
|
|
17
|
+
export { defineCustomElement as defineCustomElementLePopup } from './le-popup';
|
|
18
|
+
export { LeRoundProgress as LeRoundProgress } from '../types/components/le-round-progress/le-round-progress';
|
|
19
|
+
export { defineCustomElement as defineCustomElementLeRoundProgress } from './le-round-progress';
|
|
20
|
+
export { LeSlot as LeSlot } from '../types/components/le-slot/le-slot';
|
|
21
|
+
export { defineCustomElement as defineCustomElementLeSlot } from './le-slot';
|
|
22
|
+
export { LeStack as LeStack } from '../types/components/le-stack/le-stack';
|
|
23
|
+
export { defineCustomElement as defineCustomElementLeStack } from './le-stack';
|
|
24
|
+
export { LeStringInput as LeStringInput } from '../types/components/le-string-input/le-string-input';
|
|
25
|
+
export { defineCustomElement as defineCustomElementLeStringInput } from './le-string-input';
|
|
26
|
+
export { LeText as LeText } from '../types/components/le-text/le-text';
|
|
27
|
+
export { defineCustomElement as defineCustomElementLeText } from './le-text';
|
|
28
|
+
export { LeTurntable as LeTurntable } from '../types/components/le-turntable/le-turntable';
|
|
29
|
+
export { defineCustomElement as defineCustomElementLeTurntable } from './le-turntable';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Get the base path to where the assets can be found. Use "setAssetPath(path)"
|
|
33
|
+
* if the path needs to be customized.
|
|
34
|
+
*/
|
|
35
|
+
export declare const getAssetPath: (path: string) => string;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Used to manually set the base path where assets can be found.
|
|
39
|
+
* If the script is used as "module", it's recommended to use "import.meta.url",
|
|
40
|
+
* such as "setAssetPath(import.meta.url)". Other options include
|
|
41
|
+
* "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
|
|
42
|
+
* dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
|
|
43
|
+
* But do note that this configuration depends on how your script is bundled, or lack of
|
|
44
|
+
* bundling, and where your assets can be loaded from. Additionally custom bundling
|
|
45
|
+
* will have to ensure the static assets are copied to its build directory.
|
|
46
|
+
*/
|
|
47
|
+
export declare const setAssetPath: (path: string) => void;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Used to specify a nonce value that corresponds with an application's CSP.
|
|
51
|
+
* When set, the nonce will be added to all dynamically created script and style tags at runtime.
|
|
52
|
+
* Alternatively, the nonce value can be set on a meta tag in the DOM head
|
|
53
|
+
* (<meta name="csp-nonce" content="{ nonce value here }" />) which
|
|
54
|
+
* will result in the same behavior.
|
|
55
|
+
*/
|
|
56
|
+
export declare const setNonce: (nonce: string) => void
|
|
57
|
+
|
|
58
|
+
export interface SetPlatformOptions {
|
|
59
|
+
raf?: (c: FrameRequestCallback) => number;
|
|
60
|
+
ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
61
|
+
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
62
|
+
}
|
|
63
|
+
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
64
|
+
export * from '../types';
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { i as initializeMode } from './le-button2.js';
|
|
2
|
+
export { g as generateId, a as getMode, c as getTheme, p as parseCommaSeparated, b as setGlobalMode, d as setGlobalTheme, s as slotHasContent } from './le-button2.js';
|
|
3
|
+
export { getAssetPath, render, setAssetPath, setNonce, setPlatformOptions } from '@stencil/core/internal/client';
|
|
4
|
+
export { LeBox, defineCustomElement as defineCustomElementLeBox } from './le-box.js';
|
|
5
|
+
export { LeButton, defineCustomElement as defineCustomElementLeButton } from './le-button.js';
|
|
6
|
+
export { LeCard, defineCustomElement as defineCustomElementLeCard } from './le-card.js';
|
|
7
|
+
export { LeCheckbox, defineCustomElement as defineCustomElementLeCheckbox } from './le-checkbox.js';
|
|
8
|
+
export { LeComponent, defineCustomElement as defineCustomElementLeComponent } from './le-component.js';
|
|
9
|
+
export { LeNumberInput, defineCustomElement as defineCustomElementLeNumberInput } from './le-number-input.js';
|
|
10
|
+
export { LePopover, defineCustomElement as defineCustomElementLePopover } from './le-popover.js';
|
|
11
|
+
export { LePopup, defineCustomElement as defineCustomElementLePopup } from './le-popup.js';
|
|
12
|
+
export { LeRoundProgress, defineCustomElement as defineCustomElementLeRoundProgress } from './le-round-progress.js';
|
|
13
|
+
export { LeSlot, defineCustomElement as defineCustomElementLeSlot } from './le-slot.js';
|
|
14
|
+
export { LeStack, defineCustomElement as defineCustomElementLeStack } from './le-stack.js';
|
|
15
|
+
export { LeStringInput, defineCustomElement as defineCustomElementLeStringInput } from './le-string-input.js';
|
|
16
|
+
export { LeText, defineCustomElement as defineCustomElementLeText } from './le-text.js';
|
|
17
|
+
export { LeTurntable, defineCustomElement as defineCustomElementLeTurntable } from './le-turntable.js';
|
|
18
|
+
|
|
19
|
+
const globalScripts = initializeMode;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Programmatic API for le-popup component
|
|
23
|
+
*
|
|
24
|
+
* These functions allow you to show popups without manually creating elements.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* // Alert
|
|
28
|
+
* await leAlert('Something happened!');
|
|
29
|
+
*
|
|
30
|
+
* // Confirm
|
|
31
|
+
* const confirmed = await leConfirm('Are you sure?');
|
|
32
|
+
* if (confirmed) { ... }
|
|
33
|
+
*
|
|
34
|
+
* // Prompt
|
|
35
|
+
* const name = await lePrompt('What is your name?');
|
|
36
|
+
* if (name !== null) { ... }
|
|
37
|
+
*/
|
|
38
|
+
/**
|
|
39
|
+
* Show an alert popup with a message
|
|
40
|
+
* @param message - The message to display
|
|
41
|
+
* @param options - Optional configuration
|
|
42
|
+
* @returns Promise that resolves when closed
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* await leAlert('File saved successfully!');
|
|
46
|
+
* await leAlert('Error occurred', { title: 'Error', theme: 'dark' });
|
|
47
|
+
*/
|
|
48
|
+
async function leAlert(message, options = {}) {
|
|
49
|
+
const popup = createPopupElement(message, { ...options, type: 'alert' });
|
|
50
|
+
document.body.appendChild(popup);
|
|
51
|
+
await popup.show();
|
|
52
|
+
popup.remove();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Show a confirm popup with OK/Cancel buttons
|
|
56
|
+
* @param message - The message to display
|
|
57
|
+
* @param options - Optional configuration
|
|
58
|
+
* @returns Promise that resolves to true (confirmed) or false (cancelled)
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* const confirmed = await leConfirm('Delete this item?');
|
|
62
|
+
* if (confirmed) {
|
|
63
|
+
* deleteItem();
|
|
64
|
+
* }
|
|
65
|
+
*/
|
|
66
|
+
async function leConfirm(message, options = {}) {
|
|
67
|
+
const popup = createPopupElement(message, { ...options, type: 'confirm' });
|
|
68
|
+
document.body.appendChild(popup);
|
|
69
|
+
const result = await popup.show();
|
|
70
|
+
popup.remove();
|
|
71
|
+
return result.confirmed;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Show a prompt popup with an input field
|
|
75
|
+
* @param message - The message to display
|
|
76
|
+
* @param options - Optional configuration (including defaultValue, placeholder)
|
|
77
|
+
* @returns Promise that resolves to the input value or null if cancelled
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* const name = await lePrompt('Enter your name:', {
|
|
81
|
+
* title: 'Welcome',
|
|
82
|
+
* placeholder: 'John Doe',
|
|
83
|
+
* defaultValue: 'Guest'
|
|
84
|
+
* });
|
|
85
|
+
* if (name !== null) {
|
|
86
|
+
* greetUser(name);
|
|
87
|
+
* }
|
|
88
|
+
*/
|
|
89
|
+
async function lePrompt(message, options = {}) {
|
|
90
|
+
const popup = createPopupElement(message, { ...options, type: 'prompt' });
|
|
91
|
+
document.body.appendChild(popup);
|
|
92
|
+
const result = await popup.show();
|
|
93
|
+
popup.remove();
|
|
94
|
+
return result.confirmed ? (result.value ?? '') : null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a popup element with the given configuration
|
|
98
|
+
*/
|
|
99
|
+
function createPopupElement(message, options) {
|
|
100
|
+
const popup = document.createElement('le-popup');
|
|
101
|
+
popup.message = message;
|
|
102
|
+
popup.type = options.type || 'alert';
|
|
103
|
+
if (options.title)
|
|
104
|
+
popup.popupTitle = options.title;
|
|
105
|
+
if (options.modal !== undefined)
|
|
106
|
+
popup.modal = options.modal;
|
|
107
|
+
if (options.position)
|
|
108
|
+
popup.position = options.position;
|
|
109
|
+
if (options.confirmText)
|
|
110
|
+
popup.confirmText = options.confirmText;
|
|
111
|
+
if (options.cancelText)
|
|
112
|
+
popup.cancelText = options.cancelText;
|
|
113
|
+
if (options.placeholder)
|
|
114
|
+
popup.placeholder = options.placeholder;
|
|
115
|
+
if (options.defaultValue)
|
|
116
|
+
popup.defaultValue = options.defaultValue;
|
|
117
|
+
if (options.theme)
|
|
118
|
+
popup.setAttribute('theme', options.theme);
|
|
119
|
+
return popup;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
globalScripts();
|
|
123
|
+
|
|
124
|
+
export { leAlert, leConfirm, lePrompt };
|
|
125
|
+
//# sourceMappingURL=index.js.map
|
|
126
|
+
|
|
127
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"index.js","mappings":";;;;;;;;;;;;;;;;;;AACO,MAAM,aAAa,GAAGA,cAAe;;ACD5C;;;;;;;;;;;;;;;;AAgBG;AAqCH;;;;;;;;;AASG;AACI,eAAe,OAAO,CAAC,OAAe,EAAE,UAAwB,EAAE,EAAA;AACvE,IAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACxE,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEhC,IAAA,MAAM,KAAK,CAAC,IAAI,EAAE;IAClB,KAAK,CAAC,MAAM,EAAE;AAChB;AAEA;;;;;;;;;;;AAWG;AACI,eAAe,SAAS,CAAC,OAAe,EAAE,UAAwB,EAAE,EAAA;AACzE,IAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC1E,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEhC,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE;IACjC,KAAK,CAAC,MAAM,EAAE;IAEd,OAAO,MAAM,CAAC,SAAS;AACzB;AAEA;;;;;;;;;;;;;;;AAeG;AACI,eAAe,QAAQ,CAAC,OAAe,EAAE,UAAwB,EAAE,EAAA;AACxE,IAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACzE,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEhC,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE;IACjC,KAAK,CAAC,MAAM,EAAE;AAEd,IAAA,OAAO,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI;AACvD;AAEA;;AAEG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,OAAqB,EAAA;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAuB;AAEtE,IAAA,KAAK,CAAC,OAAO,GAAG,OAAO;IACvB,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO;IAEpC,IAAI,OAAO,CAAC,KAAK;AAAE,QAAA,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK;AACnD,IAAA,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;AAAE,QAAA,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;IAC5D,IAAI,OAAO,CAAC,QAAQ;AAAE,QAAA,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACvD,IAAI,OAAO,CAAC,WAAW;AAAE,QAAA,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAChE,IAAI,OAAO,CAAC,UAAU;AAAE,QAAA,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;IAC7D,IAAI,OAAO,CAAC,WAAW;AAAE,QAAA,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;IAChE,IAAI,OAAO,CAAC,YAAY;AAAE,QAAA,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;IACnE,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AAE7D,IAAA,OAAO,KAAK;AACd;;;;;;","names":["appGlobalScript"],"sources":["@stencil/core/internal/app-globals","src/components/le-popup/le-popup.api.ts"],"sourcesContent":["import appGlobalScript from '/Users/leechy/Projects/le-kit/src/global/app.ts';\nexport const globalScripts = appGlobalScript;\nexport const globalStyles = \":root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--le-spacing-0:0;--le-spacing-1:0.25rem;--le-spacing-2:0.5rem;--le-spacing-3:0.75rem;--le-spacing-4:1rem;--le-spacing-5:1.25rem;--le-spacing-6:1.5rem;--le-spacing-8:2rem;--le-spacing-10:2.5rem;--le-spacing-12:3rem;--le-spacing-16:4rem;--le-font-family-base:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--le-font-family-mono:'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', monospace;--le-font-size-xs:0.75rem;--le-font-size-sm:0.875rem;--le-font-size-md:1rem;--le-font-size-lg:1.125rem;--le-font-size-xl:1.25rem;--le-font-size-2xl:1.5rem;--le-font-size-3xl:1.875rem;--le-font-size-4xl:2.25rem;--le-font-weight-normal:400;--le-font-weight-medium:500;--le-font-weight-semibold:600;--le-font-weight-bold:700;--le-line-height-tight:1.25;--le-line-height-normal:1.5;--le-line-height-relaxed:1.75;--le-radius-none:0;--le-radius-xs:0.066rem;--le-radius-sm:0.125rem;--le-radius-md:0.25rem;--le-radius-lg:0.5rem;--le-radius-xl:0.75rem;--le-radius-2xl:1rem;--le-radius-full:9999px;--le-transition-fast:100ms;--le-transition-normal:200ms;--le-transition-slow:300ms;--le-transition-easing:cubic-bezier(0.4, 0, 0.2, 1);--le-z-dropdown:1000;--le-z-sticky:1020;--le-z-fixed:1030;--le-z-modal-backdrop:1040;--le-z-modal:1050;--le-z-popover:1060;--le-z-tooltip:1070}:root,[theme=\\\"default\\\"]{--le-color-primary:#0088ff;--le-color-primary-light:#4da6ff;--le-color-primary-dark:#0066cc;--le-color-primary-contrast:#ffffff;--le-color-secondary:#6c757d;--le-color-secondary-light:#868e96;--le-color-secondary-dark:#545b62;--le-color-secondary-contrast:#ffffff;--le-color-success:#28a745;--le-color-success-light:#48c764;--le-color-success-dark:#1e7e34;--le-color-success-contrast:#ffffff;--le-color-warning:#ffc107;--le-color-warning-light:#ffcd39;--le-color-warning-dark:#d39e00;--le-color-warning-contrast:#212529;--le-color-danger:#dc3545;--le-color-danger-light:#e4606d;--le-color-danger-dark:#bd2130;--le-color-danger-contrast:#ffffff;--le-color-info:#17a2b8;--le-color-info-light:#3ab0c3;--le-color-info-dark:#117a8b;--le-color-info-contrast:#ffffff;--le-color-white:#ffffff;--le-color-black:#000000;--le-color-gray-50:#fafafa;--le-color-gray-100:#f5f5f5;--le-color-gray-200:#eeeeee;--le-color-gray-300:#e0e0e0;--le-color-gray-400:#bdbdbd;--le-color-gray-500:#9e9e9e;--le-color-gray-600:#757575;--le-color-gray-700:#616161;--le-color-gray-800:#424242;--le-color-gray-900:#212121;--le-color-background:#ffffff;--le-color-background-secondary:#f5f5f5;--le-color-background-tertiary:#eeeeee;--le-color-surface:#ffffff;--le-color-surface-elevated:#ffffff;--le-color-text-primary:#212121;--le-color-text-secondary:#757575;--le-color-text-disabled:#9e9e9e;--le-color-text-inverse:#ffffff;--le-color-border:#e0e0e0;--le-color-border-light:#eeeeee;--le-color-border-dark:#bdbdbd;--le-border-width:2px;--le-color-border-input:#c4d6e6;--le-color-focus:rgba(0, 136, 255, 0.5);--le-radius-none:0;--le-radius-sm:0.125rem;--le-radius-md:0.25rem;--le-radius-lg:0.5rem;--le-radius-xl:0.75rem;--le-radius-2xl:1rem;--le-radius-full:9999px;--le-shadow-none:none;--le-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.05);--le-shadow-md:0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);--le-shadow-lg:0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);--le-shadow-xl:0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05);--le-shadow-2xl:0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04)}[theme=\\\"dark\\\"]{--le-color-primary:#4da6ff;--le-color-primary-light:#80c1ff;--le-color-primary-dark:#0088ff;--le-color-primary-contrast:#000000;--le-color-secondary:#868e96;--le-color-secondary-light:#adb5bd;--le-color-secondary-dark:#6c757d;--le-color-secondary-contrast:#000000;--le-color-success:#48c764;--le-color-success-light:#6dd587;--le-color-success-dark:#28a745;--le-color-success-contrast:#000000;--le-color-warning:#ffcd39;--le-color-warning-light:#ffda6a;--le-color-warning-dark:#ffc107;--le-color-warning-contrast:#000000;--le-color-danger:#e4606d;--le-color-danger-light:#ea868f;--le-color-danger-dark:#dc3545;--le-color-danger-contrast:#000000;--le-color-info:#3ab0c3;--le-color-info-light:#6dc4d3;--le-color-info-dark:#17a2b8;--le-color-info-contrast:#000000;--le-color-white:#ffffff;--le-color-black:#000000;--le-color-gray-50:#212121;--le-color-gray-100:#424242;--le-color-gray-200:#616161;--le-color-gray-300:#757575;--le-color-gray-400:#9e9e9e;--le-color-gray-500:#bdbdbd;--le-color-gray-600:#e0e0e0;--le-color-gray-700:#eeeeee;--le-color-gray-800:#f5f5f5;--le-color-gray-900:#fafafa;--le-color-background:#121212;--le-color-background-secondary:#1e1e1e;--le-color-background-tertiary:#2d2d2d;--le-color-surface:#1e1e1e;--le-color-surface-elevated:#2d2d2d;--le-color-text-primary:#ffffff;--le-color-text-secondary:#b3b3b3;--le-color-text-disabled:#666666;--le-color-text-inverse:#121212;--le-color-border:#333333;--le-color-border-light:#2d2d2d;--le-color-border-dark:#444444;--le-border-width:2px;--le-color-border-input:#515c6b;--le-color-focus:rgba(77, 166, 255, 0.5);--le-radius-none:0;--le-radius-sm:0.125rem;--le-radius-md:0.25rem;--le-radius-lg:0.5rem;--le-radius-xl:0.75rem;--le-radius-2xl:1rem;--le-radius-full:9999px;--le-shadow-none:none;--le-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.3);--le-shadow-md:0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);--le-shadow-lg:0 4px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);--le-shadow-xl:0 10px 15px rgba(0, 0, 0, 0.4), 0 4px 6px rgba(0, 0, 0, 0.3);--le-shadow-2xl:0 20px 25px rgba(0, 0, 0, 0.4), 0 10px 10px rgba(0, 0, 0, 0.3)}[theme=\\\"gradient\\\"]{--le-color-primary:#8b5cf6;--le-color-primary-light:#a78bfa;--le-color-primary-dark:#7c3aed;--le-color-primary-contrast:#ffffff;--le-color-secondary:#ec4899;--le-color-secondary-light:#f472b6;--le-color-secondary-dark:#db2777;--le-color-secondary-contrast:#ffffff;--le-color-success:#10b981;--le-color-success-light:#34d399;--le-color-success-dark:#059669;--le-color-success-contrast:#ffffff;--le-color-warning:#f59e0b;--le-color-warning-light:#fbbf24;--le-color-warning-dark:#d97706;--le-color-warning-contrast:#000000;--le-color-danger:#ef4444;--le-color-danger-light:#f87171;--le-color-danger-dark:#dc2626;--le-color-danger-contrast:#ffffff;--le-color-info:#06b6d4;--le-color-info-light:#22d3ee;--le-color-info-dark:#0891b2;--le-color-info-contrast:#ffffff;--le-color-white:#ffffff;--le-color-black:#000000;--le-color-gray-50:#faf5ff;--le-color-gray-100:#f3e8ff;--le-color-gray-200:#e9d5ff;--le-color-gray-300:#d8b4fe;--le-color-gray-400:#c084fc;--le-color-gray-500:#a855f7;--le-color-gray-600:#9333ea;--le-color-gray-700:#7e22ce;--le-color-gray-800:#6b21a8;--le-color-gray-900:#581c87;--le-color-background:linear-gradient(135deg, #667eea 0%, #764ba2 100%);--le-color-background-secondary:rgba(255, 255, 255, 0.1);--le-color-background-tertiary:rgba(255, 255, 255, 0.05);--le-color-surface:rgba(255, 255, 255, 0.95);--le-color-surface-elevated:#ffffff;--le-color-text-primary:#1f2937;--le-color-text-secondary:#6b7280;--le-color-text-disabled:#9ca3af;--le-color-text-inverse:#ffffff;--le-color-border:rgba(139, 92, 246, 0.3);--le-color-border-light:rgba(139, 92, 246, 0.1);--le-color-border-dark:rgba(139, 92, 246, 0.5);--le-border-width:2px;--le-color-border-input:#eccddd;--le-color-focus:rgba(139, 92, 246, 0.5);--le-radius-none:0;--le-radius-sm:0.25rem;--le-radius-md:0.5rem;--le-radius-lg:1rem;--le-radius-xl:1.5rem;--le-radius-2xl:2rem;--le-radius-full:9999px;--le-shadow-none:none;--le-shadow-sm:0 1px 2px rgba(139, 92, 246, 0.1);--le-shadow-md:0 4px 6px rgba(139, 92, 246, 0.15), 0 2px 4px rgba(139, 92, 246, 0.1);--le-shadow-lg:0 10px 20px rgba(139, 92, 246, 0.2), 0 4px 8px rgba(139, 92, 246, 0.1);--le-shadow-xl:0 20px 40px rgba(139, 92, 246, 0.25), 0 8px 16px rgba(139, 92, 246, 0.15);--le-shadow-2xl:0 30px 60px rgba(139, 92, 246, 0.3), 0 15px 30px rgba(139, 92, 246, 0.2)}[theme=\\\"minimal\\\"]{--le-color-primary:#111827;--le-color-primary-light:#374151;--le-color-primary-dark:#030712;--le-color-primary-contrast:#ffffff;--le-color-secondary:#6b7280;--le-color-secondary-light:#9ca3af;--le-color-secondary-dark:#4b5563;--le-color-secondary-contrast:#ffffff;--le-color-success:#059669;--le-color-success-light:#10b981;--le-color-success-dark:#047857;--le-color-success-contrast:#ffffff;--le-color-warning:#d97706;--le-color-warning-light:#f59e0b;--le-color-warning-dark:#b45309;--le-color-warning-contrast:#ffffff;--le-color-danger:#dc2626;--le-color-danger-light:#ef4444;--le-color-danger-dark:#b91c1c;--le-color-danger-contrast:#ffffff;--le-color-info:#0284c7;--le-color-info-light:#0ea5e9;--le-color-info-dark:#0369a1;--le-color-info-contrast:#ffffff;--le-color-white:#ffffff;--le-color-black:#000000;--le-color-gray-50:#f9fafb;--le-color-gray-100:#f3f4f6;--le-color-gray-200:#e5e7eb;--le-color-gray-300:#d1d5db;--le-color-gray-400:#9ca3af;--le-color-gray-500:#6b7280;--le-color-gray-600:#4b5563;--le-color-gray-700:#374151;--le-color-gray-800:#1f2937;--le-color-gray-900:#111827;--le-color-background:#ffffff;--le-color-background-secondary:#fafafa;--le-color-background-tertiary:#f5f5f5;--le-color-surface:#ffffff;--le-color-surface-elevated:#ffffff;--le-color-text-primary:#111827;--le-color-text-secondary:#6b7280;--le-color-text-disabled:#9ca3af;--le-color-text-inverse:#ffffff;--le-color-border:#e5e7eb;--le-color-border-light:#f3f4f6;--le-color-border-dark:#d1d5db;--le-border-width:1px;--le-color-border-input:#c8cfdd;--le-color-focus:rgba(17, 24, 39, 0.3);--le-radius-none:0;--le-radius-sm:0;--le-radius-md:2px;--le-radius-lg:4px;--le-radius-xl:6px;--le-radius-2xl:8px;--le-radius-full:9999px;--le-shadow-none:none;--le-shadow-sm:none;--le-shadow-md:0 1px 2px rgba(0, 0, 0, 0.05);--le-shadow-lg:0 1px 3px rgba(0, 0, 0, 0.08);--le-shadow-xl:0 2px 4px rgba(0, 0, 0, 0.1);--le-shadow-2xl:0 4px 8px rgba(0, 0, 0, 0.1)}[theme=\\\"warm\\\"]{--le-color-primary:#ea580c;--le-color-primary-light:#fb923c;--le-color-primary-dark:#c2410c;--le-color-primary-contrast:#ffffff;--le-color-secondary:#b45309;--le-color-secondary-light:#d97706;--le-color-secondary-dark:#92400e;--le-color-secondary-contrast:#ffffff;--le-color-success:#16a34a;--le-color-success-light:#22c55e;--le-color-success-dark:#15803d;--le-color-success-contrast:#ffffff;--le-color-warning:#ca8a04;--le-color-warning-light:#eab308;--le-color-warning-dark:#a16207;--le-color-warning-contrast:#000000;--le-color-danger:#dc2626;--le-color-danger-light:#ef4444;--le-color-danger-dark:#b91c1c;--le-color-danger-contrast:#ffffff;--le-color-info:#0891b2;--le-color-info-light:#06b6d4;--le-color-info-dark:#0e7490;--le-color-info-contrast:#ffffff;--le-color-white:#ffffff;--le-color-black:#000000;--le-color-gray-50:#fffbeb;--le-color-gray-100:#fef3c7;--le-color-gray-200:#fde68a;--le-color-gray-300:#fcd34d;--le-color-gray-400:#fbbf24;--le-color-gray-500:#f59e0b;--le-color-gray-600:#d97706;--le-color-gray-700:#b45309;--le-color-gray-800:#92400e;--le-color-gray-900:#78350f;--le-color-background:#fffbeb;--le-color-background-secondary:#fef3c7;--le-color-background-tertiary:#fde68a;--le-color-surface:#ffffff;--le-color-surface-elevated:#ffffff;--le-color-text-primary:#78350f;--le-color-text-secondary:#92400e;--le-color-text-disabled:#d97706;--le-color-text-inverse:#ffffff;--le-color-border:#fcd34d;--le-color-border-light:#fde68a;--le-color-border-dark:#fbbf24;--le-border-width:2px;--le-color-border-input:#e7d4c4;--le-color-focus:rgba(234, 88, 12, 0.5);--le-radius-none:0;--le-radius-sm:0.125rem;--le-radius-md:0.375rem;--le-radius-lg:0.625rem;--le-radius-xl:0.875rem;--le-radius-2xl:1.125rem;--le-radius-full:9999px;--le-shadow-none:none;--le-shadow-sm:0 1px 2px rgba(234, 88, 12, 0.05);--le-shadow-md:0 4px 6px rgba(234, 88, 12, 0.1), 0 2px 4px rgba(234, 88, 12, 0.06);--le-shadow-lg:0 10px 15px rgba(234, 88, 12, 0.15), 0 4px 6px rgba(234, 88, 12, 0.08);--le-shadow-xl:0 20px 25px rgba(234, 88, 12, 0.15), 0 10px 10px rgba(234, 88, 12, 0.1);--le-shadow-2xl:0 25px 50px rgba(234, 88, 12, 0.2), 0 12px 24px rgba(234, 88, 12, 0.12)}:root{--le-space-xs:4px;--le-space-sm:8px;--le-space-md:16px;--le-space-lg:24px;--le-space-xl:32px;--le-space-2xl:48px;--le-space-3xl:64px;--le-font-family:system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--le-font-family-mono:'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, monospace;--le-font-size-xs:0.75rem;--le-font-size-sm:0.875rem;--le-font-size-md:1rem;--le-font-size-lg:1.125rem;--le-font-size-xl:1.25rem;--le-font-size-2xl:1.5rem;--le-font-size-3xl:2rem;--le-font-size-4xl:2.5rem;--le-font-weight-normal:400;--le-font-weight-medium:500;--le-font-weight-semibold:600;--le-font-weight-bold:700;--le-line-height-tight:1.25;--le-line-height-normal:1.5;--le-line-height-relaxed:1.75;--le-transition-fast:150ms ease;--le-transition-normal:250ms ease;--le-transition-slow:400ms ease;--le-transition-bounce:400ms cubic-bezier(0.68, -0.55, 0.265, 1.55);--le-z-dropdown:1000;--le-z-sticky:1020;--le-z-fixed:1030;--le-z-modal-backdrop:1040;--le-z-modal:1050;--le-z-popover:1060;--le-z-tooltip:1070}:root,[theme=\\\"default\\\"]{--le-color-primary:#3b82f6;--le-color-primary-hover:#2563eb;--le-color-primary-active:#1d4ed8;--le-color-primary-subtle:#eff6ff;--le-color-on-primary:#ffffff;--le-color-secondary:#64748b;--le-color-secondary-hover:#475569;--le-color-secondary-active:#334155;--le-color-secondary-subtle:#f1f5f9;--le-color-on-secondary:#ffffff;--le-color-success:#22c55e;--le-color-success-subtle:#f0fdf4;--le-color-on-success:#ffffff;--le-color-warning:#f59e0b;--le-color-warning-subtle:#fffbeb;--le-color-on-warning:#000000;--le-color-error:#ef4444;--le-color-error-subtle:#fef2f2;--le-color-on-error:#ffffff;--le-color-info:#06b6d4;--le-color-info-subtle:#ecfeff;--le-color-on-info:#ffffff;--le-color-background:#ffffff;--le-color-surface:#ffffff;--le-color-surface-raised:#ffffff;--le-color-surface-overlay:rgba(0, 0, 0, 0.5);--le-color-text:#1e293b;--le-color-text-secondary:#64748b;--le-color-text-muted:#94a3b8;--le-color-text-inverse:#ffffff;--le-color-border:#e2e8f0;--le-color-border-strong:#cbd5e1;--le-color-border-focus:var(--le-color-primary);--le-radius-none:0;--le-radius-sm:4px;--le-radius-md:7px;--le-radius-lg:12px;--le-radius-xl:16px;--le-radius-2xl:24px;--le-radius-full:9999px;--le-shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.05);--le-shadow-md:0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);--le-shadow-lg:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);--le-shadow-xl:0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);--le-shadow-focus:0 0 0 3px rgba(59, 130, 246, 0.3)}[theme=\\\"dark\\\"]{--le-color-primary:#60a5fa;--le-color-primary-hover:#93c5fd;--le-color-primary-active:#3b82f6;--le-color-primary-subtle:#1e3a5f;--le-color-on-primary:#0f172a;--le-color-secondary:#94a3b8;--le-color-secondary-hover:#cbd5e1;--le-color-secondary-active:#64748b;--le-color-secondary-subtle:#1e293b;--le-color-on-secondary:#0f172a;--le-color-success:#4ade80;--le-color-success-subtle:#14532d;--le-color-on-success:#0f172a;--le-color-warning:#fbbf24;--le-color-warning-subtle:#422006;--le-color-on-warning:#0f172a;--le-color-error:#f87171;--le-color-error-subtle:#450a0a;--le-color-on-error:#0f172a;--le-color-info:#22d3ee;--le-color-info-subtle:#164e63;--le-color-on-info:#0f172a;--le-color-background:#0f172a;--le-color-surface:#1e293b;--le-color-surface-raised:#334155;--le-color-surface-overlay:rgba(0, 0, 0, 0.7);--le-color-text:#f1f5f9;--le-color-text-secondary:#94a3b8;--le-color-text-muted:#64748b;--le-color-text-inverse:#0f172a;--le-color-border:#334155;--le-color-border-strong:#475569;--le-color-border-focus:var(--le-color-primary);--le-shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.3);--le-shadow-md:0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);--le-shadow-lg:0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.3);--le-shadow-xl:0 20px 25px -5px rgba(0, 0, 0, 0.5), 0 8px 10px -6px rgba(0, 0, 0, 0.4);--le-shadow-focus:0 0 0 3px rgba(96, 165, 250, 0.4)}[theme=\\\"gradient\\\"]{--le-color-primary:#8b5cf6;--le-color-primary-hover:#a78bfa;--le-color-primary-active:#7c3aed;--le-color-primary-subtle:#f5f3ff;--le-color-on-primary:#ffffff;--le-color-secondary:#ec4899;--le-color-secondary-hover:#f472b6;--le-color-secondary-active:#db2777;--le-color-secondary-subtle:#fdf2f8;--le-color-on-secondary:#ffffff;--le-color-success:#10b981;--le-color-success-subtle:#ecfdf5;--le-color-on-success:#ffffff;--le-color-warning:#f59e0b;--le-color-warning-subtle:#fffbeb;--le-color-on-warning:#000000;--le-color-error:#f43f5e;--le-color-error-subtle:#fff1f2;--le-color-on-error:#ffffff;--le-color-info:#06b6d4;--le-color-info-subtle:#ecfeff;--le-color-on-info:#ffffff;--le-color-background:linear-gradient(135deg, #faf5ff 0%, #fdf2f8 50%, #fff7ed 100%);--le-color-surface:rgba(255, 255, 255, 0.9);--le-color-surface-raised:#ffffff;--le-color-surface-overlay:rgba(139, 92, 246, 0.3);--le-color-text:#1f2937;--le-color-text-secondary:#6b7280;--le-color-text-muted:#9ca3af;--le-color-text-inverse:#ffffff;--le-color-border:rgba(139, 92, 246, 0.2);--le-color-border-strong:rgba(139, 92, 246, 0.4);--le-color-border-focus:var(--le-color-primary);--le-radius-sm:6px;--le-radius-md:12px;--le-radius-lg:16px;--le-radius-xl:20px;--le-radius-2xl:28px;--le-shadow-sm:0 1px 3px 0 rgba(139, 92, 246, 0.1);--le-shadow-md:0 4px 6px -1px rgba(139, 92, 246, 0.15), 0 2px 4px -2px rgba(236, 72, 153, 0.1);--le-shadow-lg:0 10px 15px -3px rgba(139, 92, 246, 0.2), 0 4px 6px -4px rgba(236, 72, 153, 0.15);--le-shadow-xl:0 20px 25px -5px rgba(139, 92, 246, 0.25), 0 8px 10px -6px rgba(236, 72, 153, 0.2);--le-shadow-focus:0 0 0 3px rgba(139, 92, 246, 0.4)}[theme=\\\"minimal\\\"]{--le-color-primary:#374151;--le-color-primary-hover:#1f2937;--le-color-primary-active:#111827;--le-color-primary-subtle:#f3f4f6;--le-color-on-primary:#ffffff;--le-color-secondary:#9ca3af;--le-color-secondary-hover:#6b7280;--le-color-secondary-active:#4b5563;--le-color-secondary-subtle:#f9fafb;--le-color-on-secondary:#ffffff;--le-color-success:#059669;--le-color-success-subtle:#f0fdf4;--le-color-on-success:#ffffff;--le-color-warning:#d97706;--le-color-warning-subtle:#fffbeb;--le-color-on-warning:#ffffff;--le-color-error:#dc2626;--le-color-error-subtle:#fef2f2;--le-color-on-error:#ffffff;--le-color-info:#0891b2;--le-color-info-subtle:#ecfeff;--le-color-on-info:#ffffff;--le-color-background:#fafafa;--le-color-surface:#ffffff;--le-color-surface-raised:#ffffff;--le-color-surface-overlay:rgba(0, 0, 0, 0.4);--le-color-text:#111827;--le-color-text-secondary:#6b7280;--le-color-text-muted:#9ca3af;--le-color-text-inverse:#ffffff;--le-color-border:#e5e7eb;--le-color-border-strong:#d1d5db;--le-color-border-focus:var(--le-color-primary);--le-radius-none:0;--le-radius-sm:2px;--le-radius-md:4px;--le-radius-lg:6px;--le-radius-xl:8px;--le-radius-2xl:12px;--le-radius-full:9999px;--le-shadow-sm:0 1px 2px 0 rgba(0, 0, 0, 0.03);--le-shadow-md:0 2px 4px -1px rgba(0, 0, 0, 0.06);--le-shadow-lg:0 4px 8px -2px rgba(0, 0, 0, 0.08);--le-shadow-xl:0 8px 16px -4px rgba(0, 0, 0, 0.1);--le-shadow-focus:0 0 0 2px rgba(55, 65, 81, 0.2)}[theme=\\\"warm\\\"]{--le-color-primary:#ea580c;--le-color-primary-hover:#f97316;--le-color-primary-active:#c2410c;--le-color-primary-subtle:#fff7ed;--le-color-on-primary:#ffffff;--le-color-secondary:#78716c;--le-color-secondary-hover:#57534e;--le-color-secondary-active:#44403c;--le-color-secondary-subtle:#fafaf9;--le-color-on-secondary:#ffffff;--le-color-success:#65a30d;--le-color-success-subtle:#f7fee7;--le-color-on-success:#ffffff;--le-color-warning:#d97706;--le-color-warning-subtle:#fffbeb;--le-color-on-warning:#000000;--le-color-error:#dc2626;--le-color-error-subtle:#fef2f2;--le-color-on-error:#ffffff;--le-color-info:#0891b2;--le-color-info-subtle:#ecfeff;--le-color-on-info:#ffffff;--le-color-background:#fffbf5;--le-color-surface:#ffffff;--le-color-surface-raised:#ffffff;--le-color-surface-overlay:rgba(120, 53, 15, 0.4);--le-color-text:#292524;--le-color-text-secondary:#78716c;--le-color-text-muted:#a8a29e;--le-color-text-inverse:#ffffff;--le-color-border:#e7e5e4;--le-color-border-strong:#d6d3d1;--le-color-border-focus:var(--le-color-primary);--le-radius-sm:4px;--le-radius-md:8px;--le-radius-lg:12px;--le-radius-xl:16px;--le-radius-2xl:24px;--le-shadow-sm:0 1px 2px 0 rgba(120, 53, 15, 0.05);--le-shadow-md:0 4px 6px -1px rgba(120, 53, 15, 0.1), 0 2px 4px -2px rgba(120, 53, 15, 0.08);--le-shadow-lg:0 10px 15px -3px rgba(120, 53, 15, 0.12), 0 4px 6px -4px rgba(120, 53, 15, 0.1);--le-shadow-xl:0 20px 25px -5px rgba(120, 53, 15, 0.15), 0 8px 10px -6px rgba(120, 53, 15, 0.12);--le-shadow-focus:0 0 0 3px rgba(234, 88, 12, 0.3)}\";\n","/**\n * Programmatic API for le-popup component\n * \n * These functions allow you to show popups without manually creating elements.\n * \n * @example\n * // Alert\n * await leAlert('Something happened!');\n * \n * // Confirm\n * const confirmed = await leConfirm('Are you sure?');\n * if (confirmed) { ... }\n * \n * // Prompt\n * const name = await lePrompt('What is your name?');\n * if (name !== null) { ... }\n */\n\nimport type { PopupType, PopupPosition, PopupResult } from './le-popup';\n\n/**\n * Options for programmatic popup functions\n */\nexport interface PopupOptions {\n title?: string;\n type?: PopupType;\n modal?: boolean;\n position?: PopupPosition;\n confirmText?: string;\n cancelText?: string;\n placeholder?: string;\n defaultValue?: string;\n theme?: string;\n}\n\n/**\n * Interface for the le-popup custom element\n */\ninterface HTMLLePopupElement extends HTMLElement {\n open: boolean;\n type: PopupType;\n popupTitle?: string;\n message?: string;\n modal: boolean;\n position: PopupPosition;\n confirmText: string;\n cancelText: string;\n placeholder: string;\n defaultValue: string;\n show(): Promise<PopupResult>;\n hide(confirmed?: boolean): Promise<void>;\n}\n\n/**\n * Show an alert popup with a message\n * @param message - The message to display\n * @param options - Optional configuration\n * @returns Promise that resolves when closed\n * \n * @example\n * await leAlert('File saved successfully!');\n * await leAlert('Error occurred', { title: 'Error', theme: 'dark' });\n */\nexport async function leAlert(message: string, options: PopupOptions = {}): Promise<void> {\n const popup = createPopupElement(message, { ...options, type: 'alert' });\n document.body.appendChild(popup);\n \n await popup.show();\n popup.remove();\n}\n\n/**\n * Show a confirm popup with OK/Cancel buttons\n * @param message - The message to display\n * @param options - Optional configuration\n * @returns Promise that resolves to true (confirmed) or false (cancelled)\n * \n * @example\n * const confirmed = await leConfirm('Delete this item?');\n * if (confirmed) {\n * deleteItem();\n * }\n */\nexport async function leConfirm(message: string, options: PopupOptions = {}): Promise<boolean> {\n const popup = createPopupElement(message, { ...options, type: 'confirm' });\n document.body.appendChild(popup);\n \n const result = await popup.show();\n popup.remove();\n \n return result.confirmed;\n}\n\n/**\n * Show a prompt popup with an input field\n * @param message - The message to display\n * @param options - Optional configuration (including defaultValue, placeholder)\n * @returns Promise that resolves to the input value or null if cancelled\n * \n * @example\n * const name = await lePrompt('Enter your name:', { \n * title: 'Welcome',\n * placeholder: 'John Doe',\n * defaultValue: 'Guest'\n * });\n * if (name !== null) {\n * greetUser(name);\n * }\n */\nexport async function lePrompt(message: string, options: PopupOptions = {}): Promise<string | null> {\n const popup = createPopupElement(message, { ...options, type: 'prompt' });\n document.body.appendChild(popup);\n \n const result = await popup.show();\n popup.remove();\n \n return result.confirmed ? (result.value ?? '') : null;\n}\n\n/**\n * Create a popup element with the given configuration\n */\nfunction createPopupElement(message: string, options: PopupOptions): HTMLLePopupElement {\n const popup = document.createElement('le-popup') as HTMLLePopupElement;\n \n popup.message = message;\n popup.type = options.type || 'alert';\n \n if (options.title) popup.popupTitle = options.title;\n if (options.modal !== undefined) popup.modal = options.modal;\n if (options.position) popup.position = options.position;\n if (options.confirmText) popup.confirmText = options.confirmText;\n if (options.cancelText) popup.cancelText = options.cancelText;\n if (options.placeholder) popup.placeholder = options.placeholder;\n if (options.defaultValue) popup.defaultValue = options.defaultValue;\n if (options.theme) popup.setAttribute('theme', options.theme);\n \n return popup;\n}\n"],"version":3}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface LeBox extends Components.LeBox, HTMLElement {}
|
|
4
|
+
export const LeBox: {
|
|
5
|
+
prototype: LeBox;
|
|
6
|
+
new (): LeBox;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|