le-kit 0.1.5 → 0.1.6

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 (199) hide show
  1. package/dist/cjs/index-WzJ78D5H.js +1803 -0
  2. package/dist/cjs/index-WzJ78D5H.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +117 -0
  4. package/dist/cjs/index.cjs.js.map +1 -0
  5. package/dist/cjs/le-box.cjs.entry.js +184 -0
  6. package/dist/cjs/le-box.entry.cjs.js.map +1 -0
  7. package/dist/cjs/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.cjs.js.map +1 -0
  8. package/dist/cjs/le-button_6.cjs.entry.js +1202 -0
  9. package/dist/cjs/le-card.cjs.entry.js +29 -0
  10. package/dist/cjs/le-card.entry.cjs.js.map +1 -0
  11. package/dist/cjs/le-kit.cjs.js +25 -0
  12. package/dist/cjs/le-kit.cjs.js.map +1 -0
  13. package/dist/cjs/le-number-input.cjs.entry.js +202 -0
  14. package/dist/cjs/le-number-input.entry.cjs.js.map +1 -0
  15. package/dist/cjs/le-popup.cjs.entry.js +212 -0
  16. package/dist/cjs/le-popup.entry.cjs.js.map +1 -0
  17. package/dist/cjs/le-round-progress.cjs.entry.js +106 -0
  18. package/dist/cjs/le-round-progress.entry.cjs.js.map +1 -0
  19. package/dist/cjs/le-stack.cjs.entry.js +135 -0
  20. package/dist/cjs/le-stack.entry.cjs.js.map +1 -0
  21. package/dist/cjs/le-text.cjs.entry.js +335 -0
  22. package/dist/cjs/le-text.entry.cjs.js.map +1 -0
  23. package/dist/cjs/le-turntable.cjs.entry.js +139 -0
  24. package/dist/cjs/le-turntable.entry.cjs.js.map +1 -0
  25. package/dist/cjs/loader.cjs.js +13 -0
  26. package/dist/cjs/loader.cjs.js.map +1 -0
  27. package/dist/cjs/utils-CBjH2E8A.js +152 -0
  28. package/dist/cjs/utils-CBjH2E8A.js.map +1 -0
  29. package/dist/collection/assets/.gitkeep +1 -0
  30. package/dist/collection/assets/custom-elements.json +4305 -0
  31. package/dist/collection/collection-manifest.json +26 -0
  32. package/dist/collection/components/le-box/le-box.default.css +37 -0
  33. package/dist/collection/components/le-box/le-box.js +614 -0
  34. package/dist/collection/components/le-box/le-box.js.map +1 -0
  35. package/dist/collection/components/le-button/le-button.default.css +263 -0
  36. package/dist/collection/components/le-button/le-button.js +368 -0
  37. package/dist/collection/components/le-button/le-button.js.map +1 -0
  38. package/dist/collection/components/le-card/le-card.default.css +74 -0
  39. package/dist/collection/components/le-card/le-card.js +102 -0
  40. package/dist/collection/components/le-card/le-card.js.map +1 -0
  41. package/dist/collection/components/le-checkbox/le-checkbox.css +93 -0
  42. package/dist/collection/components/le-checkbox/le-checkbox.js +192 -0
  43. package/dist/collection/components/le-checkbox/le-checkbox.js.map +1 -0
  44. package/dist/collection/components/le-component/le-component.css +189 -0
  45. package/dist/{le-kit/le-component.entry.js → collection/components/le-component/le-component.js} +137 -20
  46. package/dist/collection/components/le-component/le-component.js.map +1 -0
  47. package/dist/collection/components/le-number-input/le-number-input.css +135 -0
  48. package/dist/collection/components/le-number-input/le-number-input.js +515 -0
  49. package/dist/collection/components/le-number-input/le-number-input.js.map +1 -0
  50. package/dist/collection/components/le-popover/le-popover.css +143 -0
  51. package/dist/collection/components/le-popover/le-popover.js +693 -0
  52. package/dist/collection/components/le-popover/le-popover.js.map +1 -0
  53. package/dist/collection/components/le-popup/le-popup.api.js +101 -0
  54. package/dist/collection/components/le-popup/le-popup.api.js.map +1 -0
  55. package/dist/collection/components/le-popup/le-popup.css +222 -0
  56. package/dist/collection/components/le-popup/le-popup.js +596 -0
  57. package/dist/collection/components/le-popup/le-popup.js.map +1 -0
  58. package/dist/collection/components/le-round-progress/le-round-progress.css +34 -0
  59. package/dist/collection/components/le-round-progress/le-round-progress.js +184 -0
  60. package/dist/collection/components/le-round-progress/le-round-progress.js.map +1 -0
  61. package/dist/collection/components/le-slot/le-slot.default.css +222 -0
  62. package/dist/{le-kit/le-slot.entry.js → collection/components/le-slot/le-slot.js} +266 -16
  63. package/dist/collection/components/le-slot/le-slot.js.map +1 -0
  64. package/dist/collection/components/le-stack/le-stack.default.css +37 -0
  65. package/dist/collection/components/le-stack/le-stack.js +389 -0
  66. package/dist/collection/components/le-stack/le-stack.js.map +1 -0
  67. package/dist/collection/components/le-string-input/le-string-input.css +83 -0
  68. package/dist/collection/components/le-string-input/le-string-input.js +359 -0
  69. package/dist/collection/components/le-string-input/le-string-input.js.map +1 -0
  70. package/dist/collection/components/le-text/le-text.default.css +169 -0
  71. package/dist/collection/components/le-text/le-text.js +475 -0
  72. package/dist/collection/components/le-text/le-text.js.map +1 -0
  73. package/dist/collection/components/le-turntable/le-turntable.css +10 -0
  74. package/dist/collection/components/le-turntable/le-turntable.js +210 -0
  75. package/dist/collection/components/le-turntable/le-turntable.js.map +1 -0
  76. package/dist/collection/global/app.js +130 -0
  77. package/dist/collection/global/app.js.map +1 -0
  78. package/dist/collection/index.js +15 -0
  79. package/dist/collection/index.js.map +1 -0
  80. package/dist/collection/types/blocks.js +115 -0
  81. package/dist/collection/types/blocks.js.map +1 -0
  82. package/dist/collection/types/options.js +2 -0
  83. package/dist/collection/types/options.js.map +1 -0
  84. package/dist/collection/utils/utils.js +141 -0
  85. package/dist/collection/utils/utils.js.map +1 -0
  86. package/dist/components/index.js +127 -0
  87. package/dist/components/index.js.map +1 -0
  88. package/dist/components/le-box.js +256 -0
  89. package/dist/components/le-box.js.map +1 -0
  90. package/dist/components/le-button.js +9 -0
  91. package/dist/components/le-button.js.map +1 -0
  92. package/dist/components/le-button2.js +1411 -0
  93. package/dist/components/le-button2.js.map +1 -0
  94. package/dist/components/le-card.js +83 -0
  95. package/dist/components/le-card.js.map +1 -0
  96. package/dist/components/le-checkbox.js +9 -0
  97. package/dist/components/le-checkbox.js.map +1 -0
  98. package/dist/components/le-component.js +9 -0
  99. package/dist/components/le-component.js.map +1 -0
  100. package/dist/components/le-number-input.js +271 -0
  101. package/dist/components/le-number-input.js.map +1 -0
  102. package/dist/components/le-popover.js +9 -0
  103. package/dist/components/le-popover.js.map +1 -0
  104. package/dist/{le-kit/le-popover.entry.js → components/le-popover2.js} +45 -9
  105. package/dist/components/le-popover2.js.map +1 -0
  106. package/dist/components/le-popup.js +279 -0
  107. package/dist/components/le-popup.js.map +1 -0
  108. package/dist/components/le-round-progress.js +135 -0
  109. package/dist/components/le-round-progress.js.map +1 -0
  110. package/dist/components/le-slot.js +9 -0
  111. package/dist/components/le-slot.js.map +1 -0
  112. package/dist/components/le-stack.js +198 -0
  113. package/dist/components/le-stack.js.map +1 -0
  114. package/dist/components/le-string-input.js +9 -0
  115. package/dist/components/le-string-input.js.map +1 -0
  116. package/dist/components/le-text.js +398 -0
  117. package/dist/components/le-text.js.map +1 -0
  118. package/dist/components/le-turntable.js +164 -0
  119. package/dist/components/le-turntable.js.map +1 -0
  120. package/dist/docs.d.ts +443 -0
  121. package/dist/docs.json +5185 -0
  122. package/dist/esm/index-CdjJ98OT.js +1787 -0
  123. package/dist/esm/index-CdjJ98OT.js.map +1 -0
  124. package/dist/esm/index.js +106 -0
  125. package/dist/esm/index.js.map +1 -0
  126. package/dist/{le-kit → esm}/le-box.entry.js +3 -3
  127. package/dist/esm/le-box.entry.js.map +1 -0
  128. package/dist/esm/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.js.map +1 -0
  129. package/dist/esm/le-button_6.entry.js +1195 -0
  130. package/dist/{le-kit → esm}/le-card.entry.js +3 -3
  131. package/dist/esm/le-card.entry.js.map +1 -0
  132. package/dist/esm/le-kit.js +21 -0
  133. package/dist/esm/le-kit.js.map +1 -0
  134. package/dist/{le-kit → esm}/le-number-input.entry.js +5 -5
  135. package/dist/esm/le-number-input.entry.js.map +1 -0
  136. package/dist/{le-kit → esm}/le-popup.entry.js +6 -6
  137. package/dist/esm/le-popup.entry.js.map +1 -0
  138. package/dist/{le-kit → esm}/le-round-progress.entry.js +2 -2
  139. package/dist/esm/le-round-progress.entry.js.map +1 -0
  140. package/dist/{le-kit → esm}/le-stack.entry.js +3 -3
  141. package/dist/esm/le-stack.entry.js.map +1 -0
  142. package/dist/{le-kit → esm}/le-text.entry.js +3 -3
  143. package/dist/esm/le-text.entry.js.map +1 -0
  144. package/dist/{le-kit → esm}/le-turntable.entry.js +2 -2
  145. package/dist/esm/le-turntable.entry.js.map +1 -0
  146. package/dist/esm/loader.js +11 -0
  147. package/dist/esm/loader.js.map +1 -0
  148. package/dist/{le-kit/utils-FDOApZ53.js → esm/utils-CzfSUhYB.js} +3 -3
  149. package/dist/{le-kit/utils-FDOApZ53.js.map → esm/utils-CzfSUhYB.js.map} +1 -1
  150. package/dist/index.cjs.js +1 -0
  151. package/dist/index.js +1 -0
  152. package/dist/le-kit/index.esm.js +2 -116
  153. package/dist/le-kit/index.esm.js.map +1 -1
  154. package/dist/le-kit/le-button.le-checkbox.le-component.le-popover.le-slot.le-string-input.entry.esm.js.map +1 -0
  155. package/dist/le-kit/le-kit.css +1 -1010
  156. package/dist/le-kit/le-kit.esm.js +2 -48
  157. package/dist/le-kit/le-kit.esm.js.map +1 -1
  158. package/dist/le-kit/p-0633b3ab.entry.js +2 -0
  159. package/dist/le-kit/p-0633b3ab.entry.js.map +1 -0
  160. package/dist/le-kit/p-1452a995.entry.js +2 -0
  161. package/dist/le-kit/p-1452a995.entry.js.map +1 -0
  162. package/dist/le-kit/p-220528ee.entry.js +2 -0
  163. package/dist/le-kit/p-220528ee.entry.js.map +1 -0
  164. package/dist/le-kit/p-32ff3dbe.entry.js +2 -0
  165. package/dist/le-kit/p-32ff3dbe.entry.js.map +1 -0
  166. package/dist/le-kit/p-3551598e.entry.js +2 -0
  167. package/dist/le-kit/p-3551598e.entry.js.map +1 -0
  168. package/dist/le-kit/p-722899f0.entry.js +2 -0
  169. package/dist/le-kit/p-722899f0.entry.js.map +1 -0
  170. package/dist/le-kit/p-95764888.entry.js +2 -0
  171. package/dist/le-kit/p-95764888.entry.js.map +1 -0
  172. package/dist/le-kit/p-CdjJ98OT.js +3 -0
  173. package/dist/le-kit/p-CdjJ98OT.js.map +1 -0
  174. package/dist/le-kit/p-CvDc0yWN.js +2 -0
  175. package/dist/le-kit/p-CvDc0yWN.js.map +1 -0
  176. package/dist/le-kit/p-bc20e30d.entry.js +2 -0
  177. package/dist/le-kit/p-bc20e30d.entry.js.map +1 -0
  178. package/dist/le-kit/p-d32eddad.entry.js +2 -0
  179. package/dist/le-kit/p-d32eddad.entry.js.map +1 -0
  180. package/dist/themes/base.css +89 -0
  181. package/dist/themes/dark.css +100 -0
  182. package/dist/themes/default.css +108 -0
  183. package/dist/themes/gradient.css +100 -0
  184. package/dist/themes/index.css +413 -0
  185. package/dist/themes/minimal.css +100 -0
  186. package/dist/themes/warm.css +100 -0
  187. package/dist/types/components.d.ts +4 -4
  188. package/package.json +1 -1
  189. package/dist/le-kit/index-Da-89pOc.js +0 -4522
  190. package/dist/le-kit/index-Da-89pOc.js.map +0 -1
  191. package/dist/le-kit/le-button.entry.esm.js.map +0 -1
  192. package/dist/le-kit/le-button.entry.js +0 -90
  193. package/dist/le-kit/le-checkbox.entry.esm.js.map +0 -1
  194. package/dist/le-kit/le-checkbox.entry.js +0 -59
  195. package/dist/le-kit/le-component.entry.esm.js.map +0 -1
  196. package/dist/le-kit/le-popover.entry.esm.js.map +0 -1
  197. package/dist/le-kit/le-slot.entry.esm.js.map +0 -1
  198. package/dist/le-kit/le-string-input.entry.esm.js.map +0 -1
  199. package/dist/le-kit/le-string-input.entry.js +0 -93
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./p-CdjJ98OT.js";function e(t="le"){return`${t}-${Math.random().toString(36).substring(2,9)}`}function r(t){if(!t)return[];return t.split(",").map((t=>t.trim())).filter(Boolean)}function o(t,e=""){const r=e?`[slot="${e}"]`:":not([slot])";return t.querySelector(r)!==null}function i(e,r){r(t(e));const o=new MutationObserver((()=>{r(t(e))}));o.observe(e,{attributes:true,attributeFilter:["mode"]});o.observe(document.documentElement,{attributes:true,attributeFilter:["mode"]});let i=e;while(i){if(i instanceof Element&&i.parentElement){i=i.parentElement;o.observe(i,{attributes:true,attributeFilter:["mode"]});if(i.hasAttribute("mode")){break}}else{const t=i.getRootNode();if(t instanceof ShadowRoot){i=t.host;o.observe(i,{attributes:true,attributeFilter:["mode"]});if(i.hasAttribute("mode")){break}}else{break}}}return()=>o.disconnect()}function n(...t){const e=[];t.forEach((t=>{if(!t)return;if(typeof t==="string"){e.push(t)}else if(Array.isArray(t)){e.push(n(...t))}else if(typeof t==="object"){Object.entries(t).forEach((([t,r])=>{if(r){e.push(t)}}))}}));return e.join(" ")}export{n as c,e as g,i as o,r as p,o as s};
2
+ //# sourceMappingURL=p-CvDc0yWN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p-CvDc0yWN.js","sources":["src/utils/utils.ts"],"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"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e,f as o,h as t,i as p}from"./p-CdjJ98OT.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-bc20e30d.entry.js.map
@@ -0,0 +1 @@
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":[]}
@@ -0,0 +1,2 @@
1
+ import{r as t,h as e,i,H as l}from"./p-CdjJ98OT.js";import{o}from"./p-CvDc0yWN.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-d32eddad.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["registerInstance","getElement","h","Host","observeModeChanges","leTextDefaultCss","LeText","constructor","hostRef","this","el","variant","align","color","truncate","maxLines","adminMode","content","isFocused","selectionState","isBold","isItalic","isUnderline","isStrikethrough","isLink","blockType","editorRef","slotRef","disconnectModeObserver","connectedCallback","mode","wasAdmin","requestAnimationFrame","readSlottedContent","syncContentToSlot","disconnectedCallback","onVariantChange","assignedNodes","flatten","html","forEach","node","nodeType","Node","TEXT_NODE","textContent","ELEMENT_NODE","innerHTML","trim","newContent","slot","length","firstNode","parent","parentNode","temp","document","createElement","replaceChild","childNodes","firstChild","handleInput","updateSelectionState","handleFocus","handleBlur","e","relatedTarget","toolbar","shadowRoot","querySelector","contains","setTimeout","activeElement","handleSelectionChange","selection","window","getSelection","rangeCount","queryCommandState","isSelectionInLink","anchorNode","nodeName","execCommand","command","value","focus","toggleBold","preventDefault","toggleItalic","toggleUnderline","toggleStrikethrough","toggleLink","url","prompt","changeVariant","select","target","renderToolbar","class","onChange","onMouseDown","selected","type","active","title","style","textDecoration","getTag","render","Tag","textStyle","textAlign","textClass","component","part","ref","contentEditable","onInput","onFocus","onBlur","onKeyUp","onMouseUp","onSlotchange","watchers"],"sources":["0"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Le-Kit Base Design Tokens
3
+ *
4
+ * Structural tokens that rarely change between themes:
5
+ * - Spacing scale
6
+ * - Typography (font families, sizes, weights, line heights)
7
+ * - Transitions
8
+ * - Z-index layers
9
+ *
10
+ * Import this file along with a theme file (default.css, dark.css, etc.)
11
+ */
12
+
13
+ :root {
14
+ -webkit-font-smoothing: antialiased;
15
+ -moz-osx-font-smoothing: grayscale;
16
+
17
+ /* ============================================
18
+ * SPACING SCALE
19
+ * ============================================ */
20
+ --le-spacing-0: 0;
21
+ --le-spacing-1: 0.25rem; /* 4px */
22
+ --le-spacing-2: 0.5rem; /* 8px */
23
+ --le-spacing-3: 0.75rem; /* 12px */
24
+ --le-spacing-4: 1rem; /* 16px */
25
+ --le-spacing-5: 1.25rem; /* 20px */
26
+ --le-spacing-6: 1.5rem; /* 24px */
27
+ --le-spacing-8: 2rem; /* 32px */
28
+ --le-spacing-10: 2.5rem; /* 40px */
29
+ --le-spacing-12: 3rem; /* 48px */
30
+ --le-spacing-16: 4rem; /* 64px */
31
+
32
+ /* ============================================
33
+ * TYPOGRAPHY
34
+ * ============================================ */
35
+ --le-font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
36
+ --le-font-family-mono: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', monospace;
37
+
38
+ /* Font sizes */
39
+ --le-font-size-xs: 0.75rem; /* 12px */
40
+ --le-font-size-sm: 0.875rem; /* 14px */
41
+ --le-font-size-md: 1rem; /* 16px */
42
+ --le-font-size-lg: 1.125rem; /* 18px */
43
+ --le-font-size-xl: 1.25rem; /* 20px */
44
+ --le-font-size-2xl: 1.5rem; /* 24px */
45
+ --le-font-size-3xl: 1.875rem; /* 30px */
46
+ --le-font-size-4xl: 2.25rem; /* 36px */
47
+
48
+ /* Font weights */
49
+ --le-font-weight-normal: 400;
50
+ --le-font-weight-medium: 500;
51
+ --le-font-weight-semibold: 600;
52
+ --le-font-weight-bold: 700;
53
+
54
+ /* Line heights */
55
+ --le-line-height-tight: 1.25;
56
+ --le-line-height-normal: 1.5;
57
+ --le-line-height-relaxed: 1.75;
58
+
59
+ /* ============================================
60
+ * RADIUSES
61
+ * ============================================ */
62
+ --le-radius-none: 0;
63
+ --le-radius-xs: 0.066rem; /* 1px */
64
+ --le-radius-sm: 0.125rem; /* 2px */
65
+ --le-radius-md: 0.25rem; /* 4px */
66
+ --le-radius-lg: 0.5rem; /* 8px */
67
+ --le-radius-xl: 0.75rem; /* 12px */
68
+ --le-radius-2xl: 1rem; /* 16px */
69
+ --le-radius-full: 9999px;
70
+
71
+ /* ============================================
72
+ * TRANSITIONS
73
+ * ============================================ */
74
+ --le-transition-fast: 100ms;
75
+ --le-transition-normal: 200ms;
76
+ --le-transition-slow: 300ms;
77
+ --le-transition-easing: cubic-bezier(0.4, 0, 0.2, 1);
78
+
79
+ /* ============================================
80
+ * Z-INDEX LAYERS
81
+ * ============================================ */
82
+ --le-z-dropdown: 1000;
83
+ --le-z-sticky: 1020;
84
+ --le-z-fixed: 1030;
85
+ --le-z-modal-backdrop: 1040;
86
+ --le-z-modal: 1050;
87
+ --le-z-popover: 1060;
88
+ --le-z-tooltip: 1070;
89
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Le-Kit Dark Theme
3
+ *
4
+ * Dark mode with light text on dark backgrounds.
5
+ *
6
+ * Usage: set theme="dark" on any element, or import as your default.
7
+ */
8
+
9
+ [theme="dark"] {
10
+ /* Primary brand color - lighter for dark backgrounds */
11
+ --le-color-primary: #4da6ff;
12
+ --le-color-primary-light: #80c1ff;
13
+ --le-color-primary-dark: #0088ff;
14
+ --le-color-primary-contrast: #000000;
15
+
16
+ /* Secondary accent color */
17
+ --le-color-secondary: #868e96;
18
+ --le-color-secondary-light: #adb5bd;
19
+ --le-color-secondary-dark: #6c757d;
20
+ --le-color-secondary-contrast: #000000;
21
+
22
+ /* Semantic colors - adjusted for dark mode */
23
+ --le-color-success: #48c764;
24
+ --le-color-success-light: #6dd587;
25
+ --le-color-success-dark: #28a745;
26
+ --le-color-success-contrast: #000000;
27
+
28
+ --le-color-warning: #ffcd39;
29
+ --le-color-warning-light: #ffda6a;
30
+ --le-color-warning-dark: #ffc107;
31
+ --le-color-warning-contrast: #000000;
32
+
33
+ --le-color-danger: #e4606d;
34
+ --le-color-danger-light: #ea868f;
35
+ --le-color-danger-dark: #dc3545;
36
+ --le-color-danger-contrast: #000000;
37
+
38
+ --le-color-info: #3ab0c3;
39
+ --le-color-info-light: #6dc4d3;
40
+ --le-color-info-dark: #17a2b8;
41
+ --le-color-info-contrast: #000000;
42
+
43
+ /* Neutral colors - inverted */
44
+ --le-color-white: #ffffff;
45
+ --le-color-black: #000000;
46
+ --le-color-gray-50: #212121;
47
+ --le-color-gray-100: #424242;
48
+ --le-color-gray-200: #616161;
49
+ --le-color-gray-300: #757575;
50
+ --le-color-gray-400: #9e9e9e;
51
+ --le-color-gray-500: #bdbdbd;
52
+ --le-color-gray-600: #e0e0e0;
53
+ --le-color-gray-700: #eeeeee;
54
+ --le-color-gray-800: #f5f5f5;
55
+ --le-color-gray-900: #fafafa;
56
+
57
+ /* Background colors */
58
+ --le-color-background: #121212;
59
+ --le-color-background-secondary: #1e1e1e;
60
+ --le-color-background-tertiary: #2d2d2d;
61
+
62
+ /* Surface colors */
63
+ --le-color-surface: #1e1e1e;
64
+ --le-color-surface-elevated: #2d2d2d;
65
+
66
+ /* Text colors */
67
+ --le-color-text-primary: #ffffff;
68
+ --le-color-text-secondary: #b3b3b3;
69
+ --le-color-text-disabled: #666666;
70
+ --le-color-text-inverse: #121212;
71
+
72
+ /* Border colors */
73
+ --le-color-border: #333333;
74
+ --le-color-border-light: #2d2d2d;
75
+ --le-color-border-dark: #444444;
76
+
77
+ /** Input borders */
78
+ --le-border-width: 2px;
79
+ --le-color-border-input: #515c6b;
80
+
81
+ /* Focus ring */
82
+ --le-color-focus: rgba(77, 166, 255, 0.5);
83
+
84
+ /* Border radius - same as default */
85
+ --le-radius-none: 0;
86
+ --le-radius-sm: 0.125rem;
87
+ --le-radius-md: 0.25rem;
88
+ --le-radius-lg: 0.5rem;
89
+ --le-radius-xl: 0.75rem;
90
+ --le-radius-2xl: 1rem;
91
+ --le-radius-full: 9999px;
92
+
93
+ /* Shadows - darker for dark mode */
94
+ --le-shadow-none: none;
95
+ --le-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
96
+ --le-shadow-md: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
97
+ --le-shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.3);
98
+ --le-shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.4), 0 4px 6px rgba(0, 0, 0, 0.3);
99
+ --le-shadow-2xl: 0 20px 25px rgba(0, 0, 0, 0.4), 0 10px 10px rgba(0, 0, 0, 0.3);
100
+ }
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Le-Kit Default Theme
3
+ *
4
+ * Clean, professional light theme with blue primary color.
5
+ *
6
+ * Usage:
7
+ * 1. As default: import alongside base.css
8
+ * 2. For switching: set theme="default" on any element
9
+ *
10
+ * To create a custom theme:
11
+ * 1. Copy this file
12
+ * 2. Change selector to :root or [theme="your-theme"]
13
+ * 3. Modify the variables you need
14
+ */
15
+
16
+ :root,
17
+ [theme="default"] {
18
+ /* Primary brand color */
19
+ --le-color-primary: #0088ff;
20
+ --le-color-primary-light: #4da6ff;
21
+ --le-color-primary-dark: #0066cc;
22
+ --le-color-primary-contrast: #ffffff;
23
+
24
+ /* Secondary accent color */
25
+ --le-color-secondary: #6c757d;
26
+ --le-color-secondary-light: #868e96;
27
+ --le-color-secondary-dark: #545b62;
28
+ --le-color-secondary-contrast: #ffffff;
29
+
30
+ /* Semantic colors */
31
+ --le-color-success: #28a745;
32
+ --le-color-success-light: #48c764;
33
+ --le-color-success-dark: #1e7e34;
34
+ --le-color-success-contrast: #ffffff;
35
+
36
+ --le-color-warning: #ffc107;
37
+ --le-color-warning-light: #ffcd39;
38
+ --le-color-warning-dark: #d39e00;
39
+ --le-color-warning-contrast: #212529;
40
+
41
+ --le-color-danger: #dc3545;
42
+ --le-color-danger-light: #e4606d;
43
+ --le-color-danger-dark: #bd2130;
44
+ --le-color-danger-contrast: #ffffff;
45
+
46
+ --le-color-info: #17a2b8;
47
+ --le-color-info-light: #3ab0c3;
48
+ --le-color-info-dark: #117a8b;
49
+ --le-color-info-contrast: #ffffff;
50
+
51
+ /* Neutral colors */
52
+ --le-color-white: #ffffff;
53
+ --le-color-black: #000000;
54
+ --le-color-gray-50: #fafafa;
55
+ --le-color-gray-100: #f5f5f5;
56
+ --le-color-gray-200: #eeeeee;
57
+ --le-color-gray-300: #e0e0e0;
58
+ --le-color-gray-400: #bdbdbd;
59
+ --le-color-gray-500: #9e9e9e;
60
+ --le-color-gray-600: #757575;
61
+ --le-color-gray-700: #616161;
62
+ --le-color-gray-800: #424242;
63
+ --le-color-gray-900: #212121;
64
+
65
+ /* Background colors */
66
+ --le-color-background: #ffffff;
67
+ --le-color-background-secondary: #f5f5f5;
68
+ --le-color-background-tertiary: #eeeeee;
69
+
70
+ /* Surface colors (cards, modals, etc.) */
71
+ --le-color-surface: #ffffff;
72
+ --le-color-surface-elevated: #ffffff;
73
+
74
+ /* Text colors */
75
+ --le-color-text-primary: #212121;
76
+ --le-color-text-secondary: #757575;
77
+ --le-color-text-disabled: #9e9e9e;
78
+ --le-color-text-inverse: #ffffff;
79
+
80
+ /* Border colors */
81
+ --le-color-border: #e0e0e0;
82
+ --le-color-border-light: #eeeeee;
83
+ --le-color-border-dark: #bdbdbd;
84
+
85
+ /** Input borders */
86
+ --le-border-width: 2px;
87
+ --le-color-border-input: #c4d6e6;
88
+
89
+ /* Focus ring */
90
+ --le-color-focus: rgba(0, 136, 255, 0.5);
91
+
92
+ /* Border radius */
93
+ --le-radius-none: 0;
94
+ --le-radius-sm: 0.125rem; /* 2px */
95
+ --le-radius-md: 0.25rem; /* 4px */
96
+ --le-radius-lg: 0.5rem; /* 8px */
97
+ --le-radius-xl: 0.75rem; /* 12px */
98
+ --le-radius-2xl: 1rem; /* 16px */
99
+ --le-radius-full: 9999px;
100
+
101
+ /* Shadows */
102
+ --le-shadow-none: none;
103
+ --le-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
104
+ --le-shadow-md: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
105
+ --le-shadow-lg: 0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06);
106
+ --le-shadow-xl: 0 10px 15px rgba(0, 0, 0, 0.1), 0 4px 6px rgba(0, 0, 0, 0.05);
107
+ --le-shadow-2xl: 0 20px 25px rgba(0, 0, 0, 0.1), 0 10px 10px rgba(0, 0, 0, 0.04);
108
+ }
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Le-Kit Gradient Theme
3
+ *
4
+ * Modern gradient style with purple accents and rounded corners.
5
+ *
6
+ * Usage: set theme="gradient" on any element, or import as your default.
7
+ */
8
+
9
+ [theme="gradient"] {
10
+ /* Primary brand color - purple */
11
+ --le-color-primary: #8b5cf6;
12
+ --le-color-primary-light: #a78bfa;
13
+ --le-color-primary-dark: #7c3aed;
14
+ --le-color-primary-contrast: #ffffff;
15
+
16
+ /* Secondary accent color - pink */
17
+ --le-color-secondary: #ec4899;
18
+ --le-color-secondary-light: #f472b6;
19
+ --le-color-secondary-dark: #db2777;
20
+ --le-color-secondary-contrast: #ffffff;
21
+
22
+ /* Semantic colors */
23
+ --le-color-success: #10b981;
24
+ --le-color-success-light: #34d399;
25
+ --le-color-success-dark: #059669;
26
+ --le-color-success-contrast: #ffffff;
27
+
28
+ --le-color-warning: #f59e0b;
29
+ --le-color-warning-light: #fbbf24;
30
+ --le-color-warning-dark: #d97706;
31
+ --le-color-warning-contrast: #000000;
32
+
33
+ --le-color-danger: #ef4444;
34
+ --le-color-danger-light: #f87171;
35
+ --le-color-danger-dark: #dc2626;
36
+ --le-color-danger-contrast: #ffffff;
37
+
38
+ --le-color-info: #06b6d4;
39
+ --le-color-info-light: #22d3ee;
40
+ --le-color-info-dark: #0891b2;
41
+ --le-color-info-contrast: #ffffff;
42
+
43
+ /* Neutral colors */
44
+ --le-color-white: #ffffff;
45
+ --le-color-black: #000000;
46
+ --le-color-gray-50: #faf5ff;
47
+ --le-color-gray-100: #f3e8ff;
48
+ --le-color-gray-200: #e9d5ff;
49
+ --le-color-gray-300: #d8b4fe;
50
+ --le-color-gray-400: #c084fc;
51
+ --le-color-gray-500: #a855f7;
52
+ --le-color-gray-600: #9333ea;
53
+ --le-color-gray-700: #7e22ce;
54
+ --le-color-gray-800: #6b21a8;
55
+ --le-color-gray-900: #581c87;
56
+
57
+ /* Background colors */
58
+ --le-color-background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
59
+ --le-color-background-secondary: rgba(255, 255, 255, 0.1);
60
+ --le-color-background-tertiary: rgba(255, 255, 255, 0.05);
61
+
62
+ /* Surface colors */
63
+ --le-color-surface: rgba(255, 255, 255, 0.95);
64
+ --le-color-surface-elevated: #ffffff;
65
+
66
+ /* Text colors */
67
+ --le-color-text-primary: #1f2937;
68
+ --le-color-text-secondary: #6b7280;
69
+ --le-color-text-disabled: #9ca3af;
70
+ --le-color-text-inverse: #ffffff;
71
+
72
+ /* Border colors */
73
+ --le-color-border: rgba(139, 92, 246, 0.3);
74
+ --le-color-border-light: rgba(139, 92, 246, 0.1);
75
+ --le-color-border-dark: rgba(139, 92, 246, 0.5);
76
+
77
+ /** Input borders */
78
+ --le-border-width: 2px;
79
+ --le-color-border-input: #eccddd;
80
+
81
+ /* Focus ring */
82
+ --le-color-focus: rgba(139, 92, 246, 0.5);
83
+
84
+ /* Border radius - more rounded */
85
+ --le-radius-none: 0;
86
+ --le-radius-sm: 0.25rem;
87
+ --le-radius-md: 0.5rem;
88
+ --le-radius-lg: 1rem;
89
+ --le-radius-xl: 1.5rem;
90
+ --le-radius-2xl: 2rem;
91
+ --le-radius-full: 9999px;
92
+
93
+ /* Shadows - purple tinted */
94
+ --le-shadow-none: none;
95
+ --le-shadow-sm: 0 1px 2px rgba(139, 92, 246, 0.1);
96
+ --le-shadow-md: 0 4px 6px rgba(139, 92, 246, 0.15), 0 2px 4px rgba(139, 92, 246, 0.1);
97
+ --le-shadow-lg: 0 10px 20px rgba(139, 92, 246, 0.2), 0 4px 8px rgba(139, 92, 246, 0.1);
98
+ --le-shadow-xl: 0 20px 40px rgba(139, 92, 246, 0.25), 0 8px 16px rgba(139, 92, 246, 0.15);
99
+ --le-shadow-2xl: 0 30px 60px rgba(139, 92, 246, 0.3), 0 15px 30px rgba(139, 92, 246, 0.2);
100
+ }