@logosphere-ui/core 0.0.0-alpha.4 → 0.0.0-alpha.40

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 (183) hide show
  1. package/AGENTS.md +1167 -0
  2. package/dist/AGENTS.md +1167 -0
  3. package/dist/atoms/Badge/badge.d.ts +1 -1
  4. package/dist/atoms/Button/button.d.ts +5 -3
  5. package/dist/atoms/Checkbox/checkbox.d.ts +13 -3
  6. package/dist/atoms/FormField/formfield.d.ts +12 -0
  7. package/dist/atoms/Slider/index.d.ts +1 -0
  8. package/dist/atoms/Slider/slider.d.ts +54 -0
  9. package/dist/badge-B0Bj-HAT.js +72 -0
  10. package/dist/badge-DWkKpZTX.cjs +13 -0
  11. package/dist/badge.cjs +1 -1
  12. package/dist/badge.js +1 -1
  13. package/dist/breadcrumb-BOuCLUJh.cjs +12 -0
  14. package/dist/breadcrumb-BeJqq-5C.js +41 -0
  15. package/dist/breadcrumb.cjs +1 -1
  16. package/dist/breadcrumb.js +1 -1
  17. package/dist/button-MBxtvVqn.cjs +10 -0
  18. package/dist/button-QWCkFTeJ.js +58 -0
  19. package/dist/button.cjs +1 -1
  20. package/dist/button.js +1 -1
  21. package/dist/calendar-DcDT4o-U.cjs +88 -0
  22. package/dist/calendar-DsriSHZ4.js +652 -0
  23. package/dist/calendar.cjs +1 -0
  24. package/dist/calendar.js +4 -0
  25. package/dist/card-BUWvno93.cjs +43 -0
  26. package/dist/{card-CUhlTJyJ.js → card-R_cKrdHK.js} +26 -25
  27. package/dist/card.cjs +1 -1
  28. package/dist/card.js +1 -1
  29. package/dist/chatbot-BPVC2wqM.cjs +183 -0
  30. package/dist/chatbot-yup4Nz00.js +564 -0
  31. package/dist/chatbot.cjs +1 -1
  32. package/dist/chatbot.js +2 -2
  33. package/dist/checkbox-BAbPDN6x.cjs +53 -0
  34. package/dist/checkbox-CTfbav6M.js +152 -0
  35. package/dist/checkbox.cjs +1 -1
  36. package/dist/checkbox.js +1 -1
  37. package/dist/chip-group-BqYKZKmu.cjs +26 -0
  38. package/dist/chip-group-CC5RBhN_.js +89 -0
  39. package/dist/chip-group.cjs +1 -0
  40. package/dist/chip-group.js +4 -0
  41. package/dist/combobox-Bah9Akr-.cjs +113 -0
  42. package/dist/combobox-Nxhk75IH.js +460 -0
  43. package/dist/combobox.cjs +1 -1
  44. package/dist/combobox.js +1 -1
  45. package/dist/datepicker-BExZseRQ.js +382 -0
  46. package/dist/datepicker-BOQ13sIm.cjs +85 -0
  47. package/dist/datepicker.cjs +1 -1
  48. package/dist/datepicker.js +2 -2
  49. package/dist/{download-manager-A4fOxGWJ.js → download-manager-BPg-6Qfg.js} +4 -4
  50. package/dist/download-manager-DDeTYRPs.cjs +97 -0
  51. package/dist/download-manager.cjs +1 -1
  52. package/dist/download-manager.js +1 -1
  53. package/dist/drawer-DBrOkz0z.cjs +32 -0
  54. package/dist/drawer-DHsESNFL.js +114 -0
  55. package/dist/drawer.cjs +1 -0
  56. package/dist/drawer.js +4 -0
  57. package/dist/formfield-JXiv9mvJ.cjs +33 -0
  58. package/dist/formfield-ss2mFweu.js +161 -0
  59. package/dist/formfield.cjs +1 -1
  60. package/dist/formfield.js +1 -1
  61. package/dist/icon.cjs +1 -0
  62. package/dist/icon.js +4 -0
  63. package/dist/index.cjs +291 -1
  64. package/dist/index.d.ts +15 -0
  65. package/dist/index.js +909 -32
  66. package/dist/index.umd.js +1545 -521
  67. package/dist/input-D9lFcDHU.js +278 -0
  68. package/dist/input-Dg-jos9u.cjs +60 -0
  69. package/dist/input.cjs +1 -1
  70. package/dist/input.js +1 -1
  71. package/dist/left-menu.cjs +1 -0
  72. package/dist/left-menu.js +5 -0
  73. package/dist/leftmenu-CMx2K5Ws.js +301 -0
  74. package/dist/leftmenu-DCfTelzi.cjs +83 -0
  75. package/dist/modal-BJNCTlBX.cjs +84 -0
  76. package/dist/modal-DNjURVZy.js +250 -0
  77. package/dist/modal.cjs +1 -1
  78. package/dist/modal.js +1 -1
  79. package/dist/molecules/Accordion/accordion.d.ts +42 -0
  80. package/dist/molecules/Accordion/index.d.ts +2 -0
  81. package/dist/molecules/Chip/chip-group.d.ts +29 -0
  82. package/dist/molecules/Chip/index.d.ts +2 -0
  83. package/dist/molecules/Collapse/collapse.d.ts +42 -0
  84. package/dist/molecules/Collapse/index.d.ts +2 -0
  85. package/dist/molecules/Input/input.d.ts +24 -1
  86. package/dist/molecules/InputGroup/index.d.ts +1 -0
  87. package/dist/molecules/InputGroup/input-group.d.ts +40 -0
  88. package/dist/molecules/Pagination/index.d.ts +1 -0
  89. package/dist/molecules/Pagination/pagination.d.ts +60 -0
  90. package/dist/molecules/Popover/popover.d.ts +1 -0
  91. package/dist/molecules/SplitButton/index.d.ts +2 -0
  92. package/dist/molecules/SplitButton/split-button.d.ts +53 -0
  93. package/dist/molecules/Stepper/index.d.ts +2 -0
  94. package/dist/molecules/Stepper/stepper.d.ts +34 -0
  95. package/dist/molecules/Textarea/text-area.d.ts +5 -2
  96. package/dist/molecules/TimePicker/index.d.ts +2 -0
  97. package/dist/molecules/TimePicker/timepicker.d.ts +62 -0
  98. package/dist/organisms/Calendar/calendar.d.ts +54 -0
  99. package/dist/organisms/Calendar/index.d.ts +1 -0
  100. package/dist/organisms/Calendar/shared.d.ts +9 -0
  101. package/dist/organisms/Chatbot/chatbot.d.ts +10 -1
  102. package/dist/organisms/Chatbot/index.d.ts +1 -1
  103. package/dist/organisms/Combobox/combobox.d.ts +39 -0
  104. package/dist/organisms/DatePicker/datepicker.d.ts +35 -33
  105. package/dist/organisms/Drawer/drawer.d.ts +30 -0
  106. package/dist/organisms/Drawer/index.d.ts +1 -0
  107. package/dist/organisms/LeftMenu/index.d.ts +2 -0
  108. package/dist/organisms/LeftMenu/leftmenu-item.d.ts +14 -0
  109. package/dist/organisms/LeftMenu/leftmenu.d.ts +45 -0
  110. package/dist/organisms/Modal/modal.d.ts +29 -4
  111. package/dist/organisms/Tab/tab.d.ts +13 -1
  112. package/dist/organisms/Toast/index.d.ts +2 -0
  113. package/dist/organisms/Toast/toast-container.d.ts +42 -0
  114. package/dist/organisms/Toast/toast.d.ts +48 -0
  115. package/dist/organisms/TreeMenu/index.d.ts +1 -0
  116. package/dist/organisms/TreeMenu/tree-menu.d.ts +41 -0
  117. package/dist/pagination-B91sZD5E.js +360 -0
  118. package/dist/pagination-Cnh-o-Nq.cjs +169 -0
  119. package/dist/pagination.cjs +1 -0
  120. package/dist/pagination.js +4 -0
  121. package/dist/{popover-B7tCqk3R.js → popover-CSgoaROl.js} +42 -39
  122. package/dist/popover-DwDyLpQq.cjs +30 -0
  123. package/dist/popover.cjs +1 -1
  124. package/dist/popover.js +1 -1
  125. package/dist/shared/icons/index.d.ts +1 -0
  126. package/dist/shared/types/button.types.d.ts +7 -0
  127. package/dist/styles/main.css +186 -182
  128. package/dist/switch-Do6SCkPJ.cjs +17 -0
  129. package/dist/switch-uYVuohJ-.js +68 -0
  130. package/dist/switch.cjs +1 -1
  131. package/dist/switch.js +1 -1
  132. package/dist/tab-BvRVHpWs.cjs +41 -0
  133. package/dist/tab-Byh4UgFB.js +204 -0
  134. package/dist/tab.cjs +1 -1
  135. package/dist/tab.js +1 -1
  136. package/dist/text-area-CHkrGi3S.js +239 -0
  137. package/dist/text-area-DvOiCcKP.cjs +51 -0
  138. package/dist/textarea.cjs +1 -1
  139. package/dist/textarea.js +1 -1
  140. package/dist/timepicker-CAat7fcK.js +320 -0
  141. package/dist/timepicker-Co7lW5Rp.cjs +119 -0
  142. package/dist/timepicker.cjs +1 -0
  143. package/dist/timepicker.js +4 -0
  144. package/dist/toast-container-DxFwLT5S.js +274 -0
  145. package/dist/toast-container-aY1lGjRi.cjs +64 -0
  146. package/dist/toast.cjs +1 -0
  147. package/dist/toast.js +6 -0
  148. package/dist/tree-menu-Dqy14_m2.cjs +47 -0
  149. package/dist/tree-menu-Psek8QB9.js +154 -0
  150. package/dist/tree-menu.cjs +1 -0
  151. package/dist/tree-menu.js +4 -0
  152. package/dist/ui-icon-Cd5YhUeQ.cjs +22 -0
  153. package/dist/ui-icon-Ckljc9hg.js +74 -0
  154. package/package.json +104 -12
  155. package/dist/badge-BbhaO73N.cjs +0 -13
  156. package/dist/badge-DE7Tgd8Z.js +0 -71
  157. package/dist/breadcrumb-B-4yqoJZ.js +0 -41
  158. package/dist/breadcrumb-Cop-B1J7.cjs +0 -12
  159. package/dist/button-C1EwOosO.js +0 -58
  160. package/dist/button-CDRccsk9.cjs +0 -10
  161. package/dist/card-n8ka8Zk-.cjs +0 -43
  162. package/dist/chatbot-Da_itUdJ.cjs +0 -160
  163. package/dist/chatbot-zkxngMRH.js +0 -481
  164. package/dist/checkbox-7Rb3WKGx.js +0 -119
  165. package/dist/checkbox-CdDTRdKV.cjs +0 -37
  166. package/dist/combobox-BJbI-Tgi.js +0 -268
  167. package/dist/combobox-pmE7bgEL.cjs +0 -99
  168. package/dist/datepicker-DFJx45C-.js +0 -750
  169. package/dist/datepicker-b9JGTTMx.cjs +0 -115
  170. package/dist/download-manager-BSIMTGaK.cjs +0 -97
  171. package/dist/formfield-D_7NFFoe.cjs +0 -27
  172. package/dist/formfield-d8fp9FTV.js +0 -118
  173. package/dist/input-BcnI1w3_.cjs +0 -46
  174. package/dist/input-Bj_7u8Iv.js +0 -192
  175. package/dist/modal-Bfc6WQSL.js +0 -110
  176. package/dist/modal-DQ8VFL-P.cjs +0 -39
  177. package/dist/popover-C2p5Pmts.cjs +0 -30
  178. package/dist/switch-Cpl53nRW.js +0 -64
  179. package/dist/switch-Rnnn10bn.cjs +0 -17
  180. package/dist/tab-BKdN4xAz.js +0 -176
  181. package/dist/tab-DcjAlXzU.cjs +0 -40
  182. package/dist/text-area-BkHdLnZj.cjs +0 -44
  183. package/dist/text-area-CC24lj8v.js +0 -204
package/dist/index.js CHANGED
@@ -1,34 +1,911 @@
1
- import { B as e } from "./button-C1EwOosO.js";
2
- import { L as t } from "./badge-DE7Tgd8Z.js";
3
- import { C as s } from "./checkbox-7Rb3WKGx.js";
4
- import { F as x } from "./formfield-d8fp9FTV.js";
5
- import { S as L } from "./switch-Cpl53nRW.js";
6
- import { B as C } from "./breadcrumb-B-4yqoJZ.js";
7
- import { C as h } from "./card-CUhlTJyJ.js";
8
- import { L as B } from "./input-Bj_7u8Iv.js";
9
- import { P as i } from "./popover-B7tCqk3R.js";
10
- import { T as l } from "./text-area-CC24lj8v.js";
11
- import { L as D } from "./chatbot-zkxngMRH.js";
12
- import { C as M } from "./combobox-BJbI-Tgi.js";
13
- import { L as T } from "./datepicker-DFJx45C-.js";
14
- import { D as w } from "./download-manager-A4fOxGWJ.js";
15
- import { M as v } from "./modal-Bfc6WQSL.js";
16
- import { L as I } from "./tab-BKdN4xAz.js";
1
+ import { U as tt } from "./ui-icon-Ckljc9hg.js";
2
+ import { B as ot } from "./button-QWCkFTeJ.js";
3
+ import { L as rt } from "./badge-B0Bj-HAT.js";
4
+ import { C as nt } from "./checkbox-CTfbav6M.js";
5
+ import { F as lt } from "./formfield-ss2mFweu.js";
6
+ import { unsafeCSS as m, css as y, LitElement as w, html as n, nothing as d } from "lit";
7
+ import { property as s, state as C, customElement as x, query as E } from "lit/decorators.js";
8
+ import { S as dt } from "./switch-uYVuohJ-.js";
9
+ import { B as ut } from "./breadcrumb-BeJqq-5C.js";
10
+ import { C as ht } from "./card-R_cKrdHK.js";
11
+ import { L as vt } from "./input-D9lFcDHU.js";
12
+ import { P as ft } from "./pagination-B91sZD5E.js";
13
+ import { P as yt } from "./popover-CSgoaROl.js";
14
+ import { createPopper as L } from "@popperjs/core";
15
+ import { C as xt } from "./chip-group-CC5RBhN_.js";
16
+ import { T as kt } from "./text-area-CHkrGi3S.js";
17
+ import { T as Ct } from "./timepicker-CAat7fcK.js";
18
+ import { L as Pt } from "./chatbot-yup4Nz00.js";
19
+ import { L as Lt } from "./calendar-DsriSHZ4.js";
20
+ import { C as Ot } from "./combobox-Nxhk75IH.js";
21
+ import { L as It } from "./datepicker-BExZseRQ.js";
22
+ import { D as Mt } from "./drawer-DHsESNFL.js";
23
+ import { D as At } from "./download-manager-BPg-6Qfg.js";
24
+ import { L as Nt, a as Kt } from "./leftmenu-CMx2K5Ws.js";
25
+ import { M as qt } from "./modal-DNjURVZy.js";
26
+ import { L as Ut, a as Ht, T as Vt } from "./toast-container-DxFwLT5S.js";
27
+ import { L as Zt } from "./tab-Byh4UgFB.js";
28
+ import { T as Qt } from "./tree-menu-Psek8QB9.js";
29
+ const D = ':host{display:block}.slider{position:relative;width:100%;font-family:var(--font-family-base)}.slider--has-tooltip .slider__track-area{margin-top:var(--spacing-8)}.slider__track-area{position:relative;height:20px;display:flex;align-items:center}.slider__track{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:6px;border-radius:var(--radius-full);background:var(--color-border);pointer-events:none}.slider__fill{position:absolute;top:50%;transform:translateY(-50%);height:6px;border-radius:var(--radius-full);background:var(--color-primary);pointer-events:none}.slider__input{position:absolute;top:50%;transform:translateY(-50%);left:0;width:100%;height:6px;margin:0;padding:0;-webkit-appearance:none;appearance:none;background:transparent;cursor:pointer;pointer-events:none;outline:none}.slider__input::-webkit-slider-runnable-track{background:transparent;height:6px}.slider__input::-moz-range-track{background:transparent;height:6px}.slider__input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;margin-top:-5px;border-radius:50%;background:var(--color-body-bg);border:2px solid var(--color-border);pointer-events:all;cursor:pointer;box-shadow:var(--shadow-sm)}.slider__input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--color-body-bg);border:2px solid var(--color-border);pointer-events:all;cursor:pointer;box-shadow:var(--shadow-sm)}.slider__input:not(:disabled):focus-visible::-webkit-slider-thumb{outline:none;box-shadow:0 0 0 4px var(--color-primary-bg-subtle)}.slider__input:not(:disabled):focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px var(--color-primary-bg-subtle)}.slider--disabled .slider__track{background:var(--color-border)}.slider--disabled .slider__fill{background:var(--color-primary-disabled)}.slider--disabled .slider__input{cursor:not-allowed}.slider--disabled .slider__input::-webkit-slider-thumb{background:var(--color-body-bg);border-color:var(--color-border);pointer-events:all;cursor:not-allowed;box-shadow:none}.slider--disabled .slider__input::-moz-range-thumb{background:var(--color-body-bg);border-color:var(--color-secondary-disabled);cursor:not-allowed;box-shadow:none}.slider--disabled .slider__scale-item{color:var(--color-secondary-disabled)}.slider--disabled .slider__scale-item:before{background:var(--color-secondary-disabled)}.slider--disabled .slider__tooltip{color:var(--color-secondary-disabled);border-color:var(--color-secondary-disabled)}.slider__tooltip{position:absolute;top:-34px;transform:translate(-50%);background:var(--color-body-bg);border:1px solid var(--color-border);color:var(--color-body-color);padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);white-space:nowrap;pointer-events:none;z-index:var(--z-index-tooltip);line-height:var(--line-height-normal)}.slider__scale{position:relative;height:26px;margin-top:var(--spacing-1)}.slider__scale-item{position:absolute;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--spacing-1);font-size:var(--font-size-xs);color:var(--color-tertiary);font-family:var(--font-family-base);font-weight:var(--font-weight-regular);white-space:nowrap;line-height:1;-webkit-user-select:none;user-select:none}.slider__scale-item:before{content:"";display:block;width:1px;height:6px;background:var(--color-border);flex-shrink:0}.slider__input--start,.slider__input--end{position:absolute;pointer-events:none}.slider__input--start::-webkit-slider-thumb,.slider__input--end::-webkit-slider-thumb{pointer-events:all}.slider__input--start::-moz-range-thumb,.slider__input--end::-moz-range-thumb{pointer-events:all}';
30
+ var O = Object.defineProperty, B = Object.getOwnPropertyDescriptor, c = (t, e, o, r) => {
31
+ for (var i = r > 1 ? void 0 : r ? B(e, o) : e, l = t.length - 1, a; l >= 0; l--)
32
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
33
+ return r && i && O(e, o, i), i;
34
+ };
35
+ let p = class extends w {
36
+ constructor() {
37
+ super(...arguments), this.value = 50, this.min = 0, this.max = 100, this.step = 1, this.disabled = !1, this.range = !1, this.rangeStart = 25, this.rangeEnd = 75, this.minDistance = 0, this.tooltip = "never", this.showScale = !1, this.percentage = !1, this.labels = [], this._hoverStart = !1, this._hoverEnd = !1;
38
+ }
39
+ // ── Computed helpers ─────────────────────────────────────────────────────────
40
+ get _isLabeled() {
41
+ return this.labels.length > 0;
42
+ }
43
+ get _effectiveStep() {
44
+ return this._isLabeled && this.labels.length > 1 ? (this.max - this.min) / (this.labels.length - 1) : this.step;
45
+ }
46
+ get _valuePct() {
47
+ return (this.value - this.min) / (this.max - this.min) * 100;
48
+ }
49
+ get _startPct() {
50
+ return (this.rangeStart - this.min) / (this.max - this.min) * 100;
51
+ }
52
+ get _endPct() {
53
+ return (this.rangeEnd - this.min) / (this.max - this.min) * 100;
54
+ }
55
+ get _displayValue() {
56
+ if (this._isLabeled) {
57
+ const t = Math.round((this.value - this.min) / this._effectiveStep);
58
+ return this.labels[Math.min(t, this.labels.length - 1)] ?? String(this.value);
59
+ }
60
+ return this.percentage ? `${Math.round(this.value)}%` : String(this.value);
61
+ }
62
+ get _displayStart() {
63
+ return this.percentage ? `${Math.round(this.rangeStart)}%` : String(this.rangeStart);
64
+ }
65
+ get _displayEnd() {
66
+ return this.percentage ? `${Math.round(this.rangeEnd)}%` : String(this.rangeEnd);
67
+ }
68
+ /** CSS left value that correctly follows the native thumb position (accounts for thumb radius offset). */
69
+ _thumbLeft(t) {
70
+ return `calc(${t}% + ${(0.5 - t / 100) * 16}px)`;
71
+ }
72
+ // ── Event handlers ───────────────────────────────────────────────────────────
73
+ _onSingleChange(t) {
74
+ const e = t.target;
75
+ this.value = Number(e.value), this._emit("change", { value: this.value });
76
+ }
77
+ _onStartChange(t) {
78
+ const e = t.target, o = Math.min(Number(e.value), this.rangeEnd - this.minDistance);
79
+ this.rangeStart = o, this._emit("change", { rangeStart: this.rangeStart, rangeEnd: this.rangeEnd });
80
+ }
81
+ _onEndChange(t) {
82
+ const e = t.target, o = Math.max(Number(e.value), this.rangeStart + this.minDistance);
83
+ this.rangeEnd = o, this._emit("change", { rangeStart: this.rangeStart, rangeEnd: this.rangeEnd });
84
+ }
85
+ _emit(t, e) {
86
+ this.dispatchEvent(new CustomEvent(t, { detail: e, bubbles: !0, composed: !0 }));
87
+ }
88
+ // ── Render parts ─────────────────────────────────────────────────────────────
89
+ _renderFill() {
90
+ return this.range ? n`
91
+ <div
92
+ class="slider__fill"
93
+ style="left: ${this._startPct}%; width: ${this._endPct - this._startPct}%"
94
+ ></div>
95
+ ` : n`<div class="slider__fill" style="width: ${this._valuePct}%"></div>`;
96
+ }
97
+ _renderTooltip(t, e, o) {
98
+ return this.tooltip === "never" ? d : this.tooltip === "hover" && !o ? d : n`
99
+ <div class="slider__tooltip" style="left: ${this._thumbLeft(e)}">${t}</div>
100
+ `;
101
+ }
102
+ _renderScale() {
103
+ if (!this.showScale) return d;
104
+ const t = this.max - this.min, e = Math.min(Math.round(t / this.step) + 1, 11), o = Array.from({ length: e }, (r, i) => {
105
+ const l = e > 1 ? i / (e - 1) * 100 : 0, a = this.min + l / 100 * t, z = this.percentage ? `${Math.round(a)}%` : String(Math.round(a));
106
+ return { pct: l, display: z };
107
+ });
108
+ return n`
109
+ <div class="slider__scale">
110
+ ${o.map(({ pct: r, display: i }) => n`
111
+ <span class="slider__scale-item" style="left: ${this._thumbLeft(r)}">${i}</span>
112
+ `)}
113
+ </div>
114
+ `;
115
+ }
116
+ _renderLabels() {
117
+ if (!this._isLabeled) return d;
118
+ const t = this.labels.length;
119
+ return n`
120
+ <div class="slider__scale">
121
+ ${this.labels.map((e, o) => {
122
+ const r = t > 1 ? o / (t - 1) * 100 : 0;
123
+ return n`
124
+ <span class="slider__scale-item" style="left: ${this._thumbLeft(r)}">${e}</span>
125
+ `;
126
+ })}
127
+ </div>
128
+ `;
129
+ }
130
+ _renderSingleInput() {
131
+ const t = this.tooltip === "always" || this.tooltip === "hover" && this._hoverStart;
132
+ return n`
133
+ <div class="slider__track-area">
134
+ <div class="slider__track"></div>
135
+ ${this._renderFill()}
136
+ ${this._renderTooltip(this._displayValue, this._valuePct, t)}
137
+ <input
138
+ type="range"
139
+ class="slider__input"
140
+ .value=${String(this.value)}
141
+ min=${this.min}
142
+ max=${this.max}
143
+ step=${this._effectiveStep}
144
+ ?disabled=${this.disabled}
145
+ @input=${this._onSingleChange}
146
+ @mouseenter=${() => {
147
+ this._hoverStart = !0;
148
+ }}
149
+ @mouseleave=${() => {
150
+ this._hoverStart = !1;
151
+ }}
152
+ @focus=${() => {
153
+ this._hoverStart = !0;
154
+ }}
155
+ @blur=${() => {
156
+ this._hoverStart = !1;
157
+ }}
158
+ aria-label="Slider"
159
+ aria-valuemin=${this.min}
160
+ aria-valuemax=${this.max}
161
+ aria-valuenow=${this.value}
162
+ aria-valuetext=${this._displayValue}
163
+ aria-disabled=${this.disabled}
164
+ />
165
+ </div>
166
+ `;
167
+ }
168
+ _renderRangeInputs() {
169
+ const t = this.tooltip === "always" || this.tooltip === "hover" && this._hoverStart, e = this.tooltip === "always" || this.tooltip === "hover" && this._hoverEnd, o = this._startPct >= 100 ? 4 : 3, r = this._startPct >= 100 ? 3 : 4;
170
+ return n`
171
+ <div class="slider__track-area">
172
+ <div class="slider__track"></div>
173
+ ${this._renderFill()}
174
+ ${this._renderTooltip(this._displayStart, this._startPct, t)}
175
+ ${this._renderTooltip(this._displayEnd, this._endPct, e)}
176
+ <input
177
+ type="range"
178
+ class="slider__input slider__input--start"
179
+ style="z-index: ${o}"
180
+ .value=${String(this.rangeStart)}
181
+ min=${this.min}
182
+ max=${this.max}
183
+ step=${this._effectiveStep}
184
+ ?disabled=${this.disabled}
185
+ @input=${this._onStartChange}
186
+ @mouseenter=${() => {
187
+ this._hoverStart = !0;
188
+ }}
189
+ @mouseleave=${() => {
190
+ this._hoverStart = !1;
191
+ }}
192
+ @focus=${() => {
193
+ this._hoverStart = !0;
194
+ }}
195
+ @blur=${() => {
196
+ this._hoverStart = !1;
197
+ }}
198
+ aria-label="Range start"
199
+ aria-valuemin=${this.min}
200
+ aria-valuemax=${this.max}
201
+ aria-valuenow=${this.rangeStart}
202
+ aria-valuetext=${this._displayStart}
203
+ aria-disabled=${this.disabled}
204
+ />
205
+ <input
206
+ type="range"
207
+ class="slider__input slider__input--end"
208
+ style="z-index: ${r}"
209
+ .value=${String(this.rangeEnd)}
210
+ min=${this.min}
211
+ max=${this.max}
212
+ step=${this._effectiveStep}
213
+ ?disabled=${this.disabled}
214
+ @input=${this._onEndChange}
215
+ @mouseenter=${() => {
216
+ this._hoverEnd = !0;
217
+ }}
218
+ @mouseleave=${() => {
219
+ this._hoverEnd = !1;
220
+ }}
221
+ @focus=${() => {
222
+ this._hoverEnd = !0;
223
+ }}
224
+ @blur=${() => {
225
+ this._hoverEnd = !1;
226
+ }}
227
+ aria-label="Range end"
228
+ aria-valuemin=${this.min}
229
+ aria-valuemax=${this.max}
230
+ aria-valuenow=${this.rangeEnd}
231
+ aria-valuetext=${this._displayEnd}
232
+ aria-disabled=${this.disabled}
233
+ />
234
+ </div>
235
+ `;
236
+ }
237
+ render() {
238
+ const t = this.tooltip !== "never", e = this.showScale || this._isLabeled;
239
+ return n`
240
+ <div
241
+ class="slider
242
+ ${this.disabled ? "slider--disabled" : ""}
243
+ ${t ? "slider--has-tooltip" : ""}
244
+ ${e ? "slider--has-below" : ""}
245
+ "
246
+ role="presentation"
247
+ >
248
+ ${this.range ? this._renderRangeInputs() : this._renderSingleInput()}
249
+ ${this._renderScale()}
250
+ ${this._renderLabels()}
251
+ </div>
252
+ `;
253
+ }
254
+ };
255
+ p.styles = [y`${m(D)}`];
256
+ c([
257
+ s({ type: Number })
258
+ ], p.prototype, "value", 2);
259
+ c([
260
+ s({ type: Number })
261
+ ], p.prototype, "min", 2);
262
+ c([
263
+ s({ type: Number })
264
+ ], p.prototype, "max", 2);
265
+ c([
266
+ s({ type: Number })
267
+ ], p.prototype, "step", 2);
268
+ c([
269
+ s({ type: Boolean })
270
+ ], p.prototype, "disabled", 2);
271
+ c([
272
+ s({ type: Boolean })
273
+ ], p.prototype, "range", 2);
274
+ c([
275
+ s({ type: Number })
276
+ ], p.prototype, "rangeStart", 2);
277
+ c([
278
+ s({ type: Number })
279
+ ], p.prototype, "rangeEnd", 2);
280
+ c([
281
+ s({ type: Number })
282
+ ], p.prototype, "minDistance", 2);
283
+ c([
284
+ s({ type: String })
285
+ ], p.prototype, "tooltip", 2);
286
+ c([
287
+ s({ type: Boolean })
288
+ ], p.prototype, "showScale", 2);
289
+ c([
290
+ s({ type: Boolean })
291
+ ], p.prototype, "percentage", 2);
292
+ c([
293
+ s({ type: Array })
294
+ ], p.prototype, "labels", 2);
295
+ c([
296
+ C()
297
+ ], p.prototype, "_hoverStart", 2);
298
+ c([
299
+ C()
300
+ ], p.prototype, "_hoverEnd", 2);
301
+ p = c([
302
+ x("logosphere-slider")
303
+ ], p);
304
+ const I = ":host{display:block}.stepper{display:flex;font-family:var(--font-family-base)}.stepper--horizontal{flex-direction:row;align-items:flex-start}.stepper--horizontal .stepper__step{display:flex;flex-direction:column;align-items:center;flex:1;position:relative;min-width:0}.stepper--horizontal .stepper__step-header{display:flex;flex-direction:column;align-items:center;width:100%;position:relative}.stepper--horizontal .stepper__connector{position:absolute;top:10px;left:calc(50% + 18px);right:calc(-50% + 18px);height:2px;z-index:0}.stepper--horizontal .stepper__labels{display:flex;flex-direction:column;align-items:center;text-align:center;margin-top:var(--spacing-2);padding:0 var(--spacing-1)}.stepper--vertical{flex-direction:column;align-items:stretch}.stepper--vertical .stepper__step{display:flex;flex-direction:column;position:relative}.stepper--vertical .stepper__step-header{display:flex;flex-direction:row;align-items:flex-start;gap:var(--spacing-3)}.stepper--vertical .stepper__labels{display:flex;flex-direction:column;padding-top:var(--spacing-1);padding-bottom:var(--spacing-4)}.stepper--vertical .stepper__connector{position:absolute;top:28px;left:9px;width:2px;bottom:0}.stepper__indicator{width:20px;height:20px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1;transition:background-color var(--transition-speed-base) var(--transition-timing),border-color var(--transition-speed-base) var(--transition-timing)}.stepper__indicator-number{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);line-height:1}.stepper__indicator-dot{width:10px;height:10px;border-radius:var(--radius-full);background-color:var(--color-primary);flex-shrink:0}.stepper__indicator--completed{background-color:var(--color-primary);border:2px solid var(--color-primary);color:#fff}.stepper__indicator--current{background-color:var(--color-body-bg);border:2px solid var(--color-primary)}.stepper__indicator--upcoming{background-color:var(--color-body-bg);border:2px solid var(--color-border);color:var(--color-tertiary)}.stepper__indicator--disabled{background-color:var(--color-light-bg);border:2px solid var(--color-secondary-disabled);color:var(--color-secondary-disabled)}.stepper__connector--completed{background-color:var(--color-primary)}.stepper__connector--upcoming{background-color:var(--color-border)}.stepper__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);color:var(--color-body-color);white-space:nowrap}.stepper__description{font-size:var(--font-size-xs);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-tertiary);margin-top:var(--spacing-0-5);white-space:normal}.stepper__step--current .stepper__title{color:var(--color-primary);font-weight:var(--font-weight-semibold)}.stepper__step--upcoming .stepper__title{color:var(--color-tertiary)}.stepper__step--disabled .stepper__title,.stepper__step--disabled .stepper__description{color:var(--color-secondary-disabled)}.stepper__step--clickable{cursor:pointer}.stepper__step--clickable:hover .stepper__indicator--upcoming,.stepper__step--clickable:hover .stepper__indicator--completed{box-shadow:0 0 0 4px var(--color-primary-bg-subtle)}.stepper__step--clickable:focus-visible{outline:none}.stepper__step--clickable:focus-visible .stepper__indicator{box-shadow:0 0 0 4px var(--color-primary-bg-subtle)}";
305
+ var T = Object.defineProperty, M = Object.getOwnPropertyDescriptor, $ = (t, e, o, r) => {
306
+ for (var i = r > 1 ? void 0 : r ? M(e, o) : e, l = t.length - 1, a; l >= 0; l--)
307
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
308
+ return r && i && T(e, o, i), i;
309
+ };
310
+ let f = class extends w {
311
+ constructor() {
312
+ super(...arguments), this.steps = [], this.activeStep = 0, this.orientation = "horizontal", this.clickable = !1;
313
+ }
314
+ // ── Computed state ──────────────────────────────────────────────────────────
315
+ _resolveState(t, e) {
316
+ return t.state ? t.state : t.disabled ? "disabled" : e < this.activeStep ? "completed" : e === this.activeStep ? "current" : "upcoming";
317
+ }
318
+ // ── Event handlers ──────────────────────────────────────────────────────────
319
+ _onStepClick(t, e) {
320
+ !this.clickable || e === "disabled" || e === "upcoming" || (this.activeStep = t, this.dispatchEvent(
321
+ new CustomEvent("step-change", {
322
+ detail: { index: t, step: this.steps[t] },
323
+ bubbles: !0,
324
+ composed: !0
325
+ })
326
+ ));
327
+ }
328
+ _onStepKeydown(t, e, o) {
329
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), this._onStepClick(e, o)), (t.key === "ArrowRight" || t.key === "ArrowDown") && (t.preventDefault(), this._focusStep(e + 1)), (t.key === "ArrowLeft" || t.key === "ArrowUp") && (t.preventDefault(), this._focusStep(e - 1));
330
+ }
331
+ _focusStep(t) {
332
+ const e = Math.max(0, Math.min(this.steps.length - 1, t));
333
+ this.shadowRoot?.querySelector(
334
+ `[data-step-index="${e}"]`
335
+ )?.focus();
336
+ }
337
+ // ── Render helpers ──────────────────────────────────────────────────────────
338
+ _renderIndicator(t, e) {
339
+ let o;
340
+ return t === "completed" ? o = n`<ui-icon name="uil-check" size="12"></ui-icon>` : t === "current" ? o = n`<span class="stepper__indicator-dot"></span>` : o = n`<span class="stepper__indicator-number">${e + 1}</span>`, n`
341
+ <div
342
+ class="stepper__indicator stepper__indicator--${t}"
343
+ aria-hidden="true"
344
+ >
345
+ ${o}
346
+ </div>
347
+ `;
348
+ }
349
+ _renderConnector(t, e) {
350
+ return e ? d : n`
351
+ <div
352
+ class="stepper__connector stepper__connector--${t === "completed" ? "completed" : "upcoming"}"
353
+ aria-hidden="true"
354
+ ></div>
355
+ `;
356
+ }
357
+ _renderStep(t, e) {
358
+ const o = this._resolveState(t, e), r = e === this.steps.length - 1, i = this.clickable && (o === "completed" || o === "current");
359
+ return n`
360
+ <div
361
+ class="stepper__step stepper__step--${o} ${i ? "stepper__step--clickable" : ""}"
362
+ data-step-index=${e}
363
+ role=${this.clickable ? "button" : "listitem"}
364
+ tabindex=${i ? "0" : "-1"}
365
+ aria-current=${o === "current" ? "step" : d}
366
+ aria-disabled=${o === "disabled" ? "true" : d}
367
+ aria-label="${t.title}${t.description ? `, ${t.description}` : ""}, ${o}"
368
+ @click=${() => this._onStepClick(e, o)}
369
+ @keydown=${(l) => this._onStepKeydown(l, e, o)}
370
+ >
371
+ <div class="stepper__step-header">
372
+ ${this._renderIndicator(o, e)}
373
+ ${this.orientation === "vertical" ? n`
374
+ <div class="stepper__labels">
375
+ <span class="stepper__title">${t.title}</span>
376
+ ${t.description ? n`<span class="stepper__description">${t.description}</span>` : d}
377
+ </div>
378
+ ` : d}
379
+ </div>
380
+
381
+ ${this.orientation === "horizontal" ? n`
382
+ <div class="stepper__labels">
383
+ <span class="stepper__title">${t.title}</span>
384
+ ${t.description ? n`<span class="stepper__description">${t.description}</span>` : d}
385
+ </div>
386
+ ` : d}
387
+
388
+ ${this._renderConnector(o, r)}
389
+ </div>
390
+ `;
391
+ }
392
+ render() {
393
+ return n`
394
+ <div
395
+ class="stepper stepper--${this.orientation}"
396
+ role="list"
397
+ aria-label="Progress steps"
398
+ >
399
+ ${this.steps.map((t, e) => this._renderStep(t, e))}
400
+ </div>
401
+ `;
402
+ }
403
+ };
404
+ f.styles = [y`${m(I)}`];
405
+ $([
406
+ s({ attribute: !1 })
407
+ ], f.prototype, "steps", 2);
408
+ $([
409
+ s({ type: Number })
410
+ ], f.prototype, "activeStep", 2);
411
+ $([
412
+ s({ type: String })
413
+ ], f.prototype, "orientation", 2);
414
+ $([
415
+ s({ type: Boolean })
416
+ ], f.prototype, "clickable", 2);
417
+ f = $([
418
+ x("logosphere-stepper")
419
+ ], f);
420
+ const F = ":host{display:inline-block;position:relative}.split-button{display:inline-flex;align-items:stretch;gap:1px;font-family:var(--font-family-base);border-radius:var(--radius-base);overflow:hidden}.split-button__action,.split-button__dropdown{display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;font-family:inherit;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:1.25rem;letter-spacing:-.14px;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-speed-base) var(--transition-timing);outline:none}.split-button__action:focus-visible,.split-button__dropdown:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;position:relative;z-index:1}.split-button__action:disabled,.split-button__dropdown:disabled{cursor:not-allowed;pointer-events:none}.split-button__action{gap:var(--spacing-1)}.split-button__chevron{transition:transform var(--transition-speed-base) var(--transition-timing);display:inline-flex}.split-button__chevron--open{transform:rotate(180deg)}.split-button--sm .split-button__action{padding:var(--spacing-0-5) var(--spacing-2)}.split-button--sm .split-button__dropdown{padding:var(--spacing-0-5) var(--spacing-1-5)}.split-button--md .split-button__action{padding:var(--spacing-1-5) var(--spacing-3)}.split-button--md .split-button__dropdown{padding:var(--spacing-1-5) var(--spacing-2)}.split-button--lg .split-button__action{padding:var(--spacing-2-5) var(--spacing-3)}.split-button--lg .split-button__dropdown{padding:var(--spacing-2-5) var(--spacing-2)}.split-button{background-color:#fff6}.split-button--primary .split-button__action,.split-button--primary .split-button__dropdown{background-color:var(--color-primary);color:#fff}.split-button--primary .split-button__action:hover:not(:disabled),.split-button--primary .split-button__dropdown:hover:not(:disabled){background-color:var(--color-primary-hover)}.split-button--primary .split-button__action:active:not(:disabled),.split-button--primary .split-button__dropdown:active:not(:disabled){background-color:var(--color-primary-active)}.split-button--primary.split-button--disabled,.split-button--primary .split-button__action:disabled,.split-button--primary .split-button__dropdown:disabled{background-color:var(--color-primary-disabled)}.split-button--primary.split-button--disabled .split-button__action,.split-button--primary.split-button--disabled .split-button__dropdown{background-color:var(--color-primary-disabled)}.split-button--secondary .split-button__action,.split-button--secondary .split-button__dropdown{background-color:var(--color-secondary);color:#fff}.split-button--secondary .split-button__action:hover:not(:disabled),.split-button--secondary .split-button__dropdown:hover:not(:disabled){background-color:var(--color-secondary-hover)}.split-button--secondary .split-button__action:active:not(:disabled),.split-button--secondary .split-button__dropdown:active:not(:disabled){background-color:var(--color-secondary-active)}.split-button--secondary.split-button--disabled .split-button__action,.split-button--secondary.split-button--disabled .split-button__dropdown,.split-button--secondary .split-button__action:disabled,.split-button--secondary .split-button__dropdown:disabled{background-color:var(--color-secondary-disabled)}.split-button--success .split-button__action,.split-button--success .split-button__dropdown{background-color:var(--color-success);color:#fff}.split-button--success .split-button__action:hover:not(:disabled),.split-button--success .split-button__dropdown:hover:not(:disabled){background-color:var(--color-success-hover)}.split-button--success .split-button__action:active:not(:disabled),.split-button--success .split-button__dropdown:active:not(:disabled){background-color:var(--color-success-active)}.split-button--success.split-button--disabled .split-button__action,.split-button--success.split-button--disabled .split-button__dropdown,.split-button--success .split-button__action:disabled,.split-button--success .split-button__dropdown:disabled{background-color:var(--color-success-disabled)}.split-button--danger .split-button__action,.split-button--danger .split-button__dropdown{background-color:var(--color-danger);color:#fff}.split-button--danger .split-button__action:hover:not(:disabled),.split-button--danger .split-button__dropdown:hover:not(:disabled){background-color:var(--color-danger-hover)}.split-button--danger .split-button__action:active:not(:disabled),.split-button--danger .split-button__dropdown:active:not(:disabled){background-color:var(--color-danger-active)}.split-button--danger.split-button--disabled .split-button__action,.split-button--danger.split-button--disabled .split-button__dropdown,.split-button--danger .split-button__action:disabled,.split-button--danger .split-button__dropdown:disabled{background-color:var(--color-danger-disabled)}.split-button--info .split-button__action,.split-button--info .split-button__dropdown{background-color:var(--color-info);color:#fff}.split-button--info .split-button__action:hover:not(:disabled),.split-button--info .split-button__dropdown:hover:not(:disabled){background-color:var(--color-info-hover)}.split-button--info .split-button__action:active:not(:disabled),.split-button--info .split-button__dropdown:active:not(:disabled){background-color:var(--color-info-active)}.split-button--info.split-button--disabled .split-button__action,.split-button--info.split-button--disabled .split-button__dropdown,.split-button--info .split-button__action:disabled,.split-button--info .split-button__dropdown:disabled{background-color:var(--color-info-disabled)}.split-button--warning .split-button__action,.split-button--warning .split-button__dropdown{background-color:var(--color-warning);color:var(--color-warning-emphasis)}.split-button--warning .split-button__action:hover:not(:disabled),.split-button--warning .split-button__dropdown:hover:not(:disabled){background-color:var(--color-warning-hover)}.split-button--warning .split-button__action:active:not(:disabled),.split-button--warning .split-button__dropdown:active:not(:disabled){background-color:var(--color-warning-active)}.split-button--warning.split-button--disabled .split-button__action,.split-button--warning.split-button--disabled .split-button__dropdown,.split-button--warning .split-button__action:disabled,.split-button--warning .split-button__dropdown:disabled{background-color:var(--color-warning-disabled)}.split-button__panel{position:fixed;z-index:var(--z-index-dropdown);min-width:160px;background-color:var(--color-body-bg);border:1px solid var(--color-border);border-radius:var(--radius-base);box-shadow:var(--shadow-lg);padding:var(--spacing-1) 0;outline:none}.split-button__panel-item{display:flex;align-items:center;gap:var(--spacing-2);width:100%;padding:var(--spacing-2) var(--spacing-3);background:none;border:none;cursor:pointer;font-family:var(--font-family-base);font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);color:var(--color-body-color);text-align:left;white-space:nowrap;transition:background-color var(--transition-speed-fast) var(--transition-timing);box-sizing:border-box}.split-button__panel-item:hover:not(:disabled){background-color:var(--color-body-bg-hover)}.split-button__panel-item:active:not(:disabled){background-color:var(--color-body-bg-active)}.split-button__panel-item--disabled,.split-button__panel-item:disabled{color:var(--color-secondary-disabled);cursor:not-allowed;pointer-events:none}.split-button__panel-divider{height:1px;background-color:var(--color-border);margin:var(--spacing-1) 0}";
421
+ var A = Object.defineProperty, j = Object.getOwnPropertyDescriptor, _ = (t, e, o, r) => {
422
+ for (var i = r > 1 ? void 0 : r ? j(e, o) : e, l = t.length - 1, a; l >= 0; l--)
423
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
424
+ return r && i && A(e, o, i), i;
425
+ };
426
+ let u = class extends w {
427
+ constructor() {
428
+ super(...arguments), this.label = "Button", this.size = "md", this.theme = "primary", this.disabled = !1, this.dropdownDisabled = !1, this.items = [], this._open = !1, this._onDocClick = (t) => {
429
+ this._open && (t.composedPath().includes(this) || this._setOpen(!1));
430
+ }, this._onDocKeydown = (t) => {
431
+ t.key === "Escape" && this._open && this._setOpen(!1);
432
+ };
433
+ }
434
+ // ── Lifecycle ────────────────────────────────────────────────────────────
435
+ connectedCallback() {
436
+ super.connectedCallback(), document.addEventListener("click", this._onDocClick, { capture: !0 }), document.addEventListener("keydown", this._onDocKeydown);
437
+ }
438
+ disconnectedCallback() {
439
+ super.disconnectedCallback(), document.removeEventListener("click", this._onDocClick, { capture: !0 }), document.removeEventListener("keydown", this._onDocKeydown), this._destroyPopper();
440
+ }
441
+ updated(t) {
442
+ super.updated(t), t.has("_open") && (this._open ? this._initPopper() : this._destroyPopper());
443
+ }
444
+ // ── Popper ───────────────────────────────────────────────────────────────
445
+ _initPopper() {
446
+ !this._dropdownBtn || !this._panel || (this._popper = L(this._dropdownBtn, this._panel, {
447
+ placement: "bottom-end",
448
+ strategy: "fixed",
449
+ modifiers: [
450
+ { name: "offset", options: { offset: [0, 4] } },
451
+ { name: "preventOverflow", options: { padding: 8 } },
452
+ { name: "flip", options: { padding: 8 } }
453
+ ]
454
+ }));
455
+ }
456
+ _destroyPopper() {
457
+ this._popper?.destroy(), this._popper = void 0;
458
+ }
459
+ _setOpen(t) {
460
+ this._open !== t && (this._open = t, this.dispatchEvent(
461
+ new CustomEvent(t ? "dropdown-open" : "dropdown-close", {
462
+ bubbles: !0,
463
+ composed: !0
464
+ })
465
+ ));
466
+ }
467
+ // ── Event handlers ────────────────────────────────────────────────────────
468
+ _onActionClick(t) {
469
+ t.stopPropagation(), !this.disabled && this.dispatchEvent(new CustomEvent("action", { bubbles: !0, composed: !0 }));
470
+ }
471
+ _onDropdownClick(t) {
472
+ t.stopPropagation(), !(this.disabled || this.dropdownDisabled) && this._setOpen(!this._open);
473
+ }
474
+ _onItemClick(t) {
475
+ t.disabled || (this.dispatchEvent(
476
+ new CustomEvent("item-select", {
477
+ detail: { value: t.value, item: t },
478
+ bubbles: !0,
479
+ composed: !0
480
+ })
481
+ ), this._setOpen(!1));
482
+ }
483
+ _onKeydown(t, e) {
484
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), e === "action" ? this._onActionClick(t) : this._onDropdownClick(t));
485
+ }
486
+ // ── Render ────────────────────────────────────────────────────────────────
487
+ _renderPanel() {
488
+ if (!this._open) return d;
489
+ const t = this.items.length > 0;
490
+ return n`
491
+ <div
492
+ class="split-button__panel"
493
+ role="menu"
494
+ aria-label="${this.label} options"
495
+ >
496
+ ${t ? this.items.map((e) => n`
497
+ ${e.divider ? n`<div class="split-button__panel-divider" role="separator"></div>` : d}
498
+ <button
499
+ class="split-button__panel-item ${e.disabled ? "split-button__panel-item--disabled" : ""}"
500
+ role="menuitem"
501
+ ?disabled=${e.disabled}
502
+ @click=${() => this._onItemClick(e)}
503
+ >
504
+ ${e.icon ? n`<ui-icon name=${e.icon} size="16"></ui-icon>` : d}
505
+ <span>${e.label}</span>
506
+ </button>
507
+ `) : n`<slot name="dropdown"></slot>`}
508
+ </div>
509
+ `;
510
+ }
511
+ render() {
512
+ const t = this.disabled, e = this.disabled || this.dropdownDisabled;
513
+ return n`
514
+ <div
515
+ class="split-button split-button--${this.size} split-button--${this.theme}
516
+ ${this.disabled ? "split-button--disabled" : ""}
517
+ ${this._open ? "split-button--open" : ""}"
518
+ role="group"
519
+ >
520
+ <!-- Main action -->
521
+ <button
522
+ class="split-button__action"
523
+ ?disabled=${t}
524
+ aria-label=${this.label}
525
+ @click=${this._onActionClick}
526
+ @keydown=${(o) => this._onKeydown(o, "action")}
527
+ type="button"
528
+ >
529
+ <slot name="prefix"></slot>
530
+ <span class="split-button__label">
531
+ <slot>${this.label}</slot>
532
+ </span>
533
+ </button>
534
+
535
+ <!-- Dropdown trigger -->
536
+ <button
537
+ class="split-button__dropdown"
538
+ ?disabled=${e}
539
+ aria-label="Open dropdown"
540
+ aria-haspopup="menu"
541
+ aria-expanded=${this._open ? "true" : "false"}
542
+ @click=${this._onDropdownClick}
543
+ @keydown=${(o) => this._onKeydown(o, "dropdown")}
544
+ type="button"
545
+ >
546
+ <ui-icon
547
+ name="uil-angle-down"
548
+ size="16"
549
+ class="split-button__chevron ${this._open ? "split-button__chevron--open" : ""}"
550
+ ></ui-icon>
551
+ </button>
552
+
553
+ <!-- Dropdown panel -->
554
+ ${this._renderPanel()}
555
+ </div>
556
+ `;
557
+ }
558
+ };
559
+ u.styles = [y`${m(F)}`];
560
+ _([
561
+ s({ type: String })
562
+ ], u.prototype, "label", 2);
563
+ _([
564
+ s({ type: String })
565
+ ], u.prototype, "size", 2);
566
+ _([
567
+ s({ type: String })
568
+ ], u.prototype, "theme", 2);
569
+ _([
570
+ s({ type: Boolean })
571
+ ], u.prototype, "disabled", 2);
572
+ _([
573
+ s({ type: Boolean })
574
+ ], u.prototype, "dropdownDisabled", 2);
575
+ _([
576
+ s({ attribute: !1 })
577
+ ], u.prototype, "items", 2);
578
+ _([
579
+ C()
580
+ ], u.prototype, "_open", 2);
581
+ _([
582
+ E(".split-button__dropdown")
583
+ ], u.prototype, "_dropdownBtn", 2);
584
+ _([
585
+ E(".split-button__panel")
586
+ ], u.prototype, "_panel", 2);
587
+ u = _([
588
+ x("logosphere-split-button")
589
+ ], u);
590
+ const N = ":host{display:block}.collapse{font-family:var(--font-family-base);background-color:var(--color-body-bg);overflow:hidden}.collapse--full{border:1px solid var(--color-border);border-radius:var(--radius-base)}.collapse--bottom{border-bottom:1px solid var(--color-border);border-radius:0}.collapse__header{display:flex;align-items:center;gap:var(--spacing-4);padding:var(--spacing-4) var(--spacing-4);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-speed-fast) var(--transition-timing);outline:none}.collapse--small .collapse__header{padding:var(--spacing-2) var(--spacing-4)}.collapse--full .collapse__header{border-radius:calc(var(--radius-base) - 1px)}.collapse--full.collapse--expanded .collapse__header{border-radius:calc(var(--radius-base) - 1px) calc(var(--radius-base) - 1px) 0 0}.collapse--full .collapse__header:hover:not(.collapse--disabled .collapse__header){background-color:var(--color-body-bg-hover)}.collapse--bottom .collapse__header:hover:not(.collapse--disabled .collapse__header){background-color:var(--color-body-bg-hover)}.collapse__header:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px;border-radius:calc(var(--radius-base) - 1px)}.collapse__title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);line-height:1.2;letter-spacing:-.16px;color:var(--color-body-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collapse__header-extra:empty{display:none}.collapse__header-extra{display:flex;align-items:center;gap:var(--spacing-2);flex-shrink:0}.collapse__header-spacer{flex:1}.collapse__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-secondary);transition:transform var(--transition-speed-base) var(--transition-timing)}.collapse__icon--expanded{transform:rotate(180deg)}.collapse__body{height:0;overflow:hidden;transition:height var(--transition-speed-slow) var(--transition-timing)}.collapse__body-inner{padding:0 var(--spacing-4) var(--spacing-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-normal);color:var(--color-body-color)}.collapse--bottom .collapse__body-inner{padding-top:var(--spacing-2)}.collapse--disabled .collapse__header{cursor:not-allowed;pointer-events:none}.collapse--disabled .collapse__title,.collapse--disabled .collapse__icon{color:var(--color-secondary-disabled)}.collapse--disabled.collapse--full{border-color:var(--color-secondary-disabled);background-color:var(--color-light-bg)}.collapse--disabled.collapse--bottom{border-bottom-color:var(--color-secondary-disabled);background-color:transparent}";
591
+ var K = Object.defineProperty, R = Object.getOwnPropertyDescriptor, v = (t, e, o, r) => {
592
+ for (var i = r > 1 ? void 0 : r ? R(e, o) : e, l = t.length - 1, a; l >= 0; l--)
593
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
594
+ return r && i && K(e, o, i), i;
595
+ };
596
+ const k = typeof requestAnimationFrame < "u" ? requestAnimationFrame.bind(window) : (t) => setTimeout(() => t(Date.now()), 16);
597
+ let b = class extends w {
598
+ constructor() {
599
+ super(...arguments), this.title = "", this.expanded = !1, this.disabled = !1, this.iconPosition = "right", this.border = "full", this.size = "default";
600
+ }
601
+ // ── Toggle ────────────────────────────────────────────────────────────────
602
+ _toggle() {
603
+ this.disabled || (this.expanded = !this.expanded, this.dispatchEvent(
604
+ new CustomEvent("toggle", {
605
+ detail: { expanded: this.expanded },
606
+ bubbles: !0,
607
+ composed: !0
608
+ })
609
+ ));
610
+ }
611
+ _onKeydown(t) {
612
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), this._toggle());
613
+ }
614
+ // ── Animated height ───────────────────────────────────────────────────────
615
+ /**
616
+ * CLOSING: Called inside willUpdate — BEFORE Lit re-renders — so we can
617
+ * capture and lock the current height before the CSS class is removed.
618
+ */
619
+ _lockHeightForClose() {
620
+ const t = this._body;
621
+ if (!t) return;
622
+ const e = t.getBoundingClientRect().height;
623
+ t.style.height = `${e}px`, t.style.overflow = "hidden";
624
+ }
625
+ willUpdate(t) {
626
+ super.willUpdate(t), t.has("expanded") && !this.expanded && this._lockHeightForClose();
627
+ }
628
+ updated(t) {
629
+ if (super.updated(t), !t.has("expanded") || !this._body || !this._inner) return;
630
+ const e = this._body, o = this._inner;
631
+ this.expanded ? (e.style.height = "0px", e.style.overflow = "hidden", k(() => {
632
+ k(() => {
633
+ e.style.height = `${o.scrollHeight}px`, e.addEventListener("transitionend", function r() {
634
+ e.style.height = "auto", e.style.overflow = "", e.removeEventListener("transitionend", r);
635
+ }, { once: !0 });
636
+ });
637
+ })) : (e.getBoundingClientRect(), k(() => {
638
+ k(() => {
639
+ e.style.height = "0px";
640
+ });
641
+ }));
642
+ }
643
+ // ── Render ────────────────────────────────────────────────────────────────
644
+ _renderIcon() {
645
+ return n`
646
+ <span class="collapse__icon ${this.expanded ? "collapse__icon--expanded" : ""}">
647
+ <ui-icon name="uil-angle-down" size="22"></ui-icon>
648
+ </span>
649
+ `;
650
+ }
651
+ render() {
652
+ return n`
653
+ <div
654
+ class="collapse
655
+ collapse--${this.border}
656
+ collapse--${this.size}
657
+ ${this.expanded ? "collapse--expanded" : ""}
658
+ ${this.disabled ? "collapse--disabled" : ""}"
659
+ >
660
+ <!-- Header -->
661
+ <div
662
+ class="collapse__header"
663
+ role="button"
664
+ tabindex=${this.disabled ? "-1" : "0"}
665
+ aria-expanded=${this.expanded ? "true" : "false"}
666
+ aria-disabled=${this.disabled ? "true" : d}
667
+ @click=${this._toggle}
668
+ @keydown=${this._onKeydown}
669
+ >
670
+ ${this.iconPosition === "left" ? this._renderIcon() : d}
671
+
672
+ <div class="collapse__title">
673
+ <slot name="title">${this.title}</slot>
674
+ </div>
675
+
676
+ <div class="collapse__header-extra">
677
+ <slot name="extra"></slot>
678
+ </div>
679
+
680
+ <!-- pushes extra to title side, icon stays at far right -->
681
+ <span class="collapse__header-spacer"></span>
682
+
683
+ ${this.iconPosition === "right" ? this._renderIcon() : d}
684
+ </div>
685
+
686
+ <!-- Body (animated) -->
687
+ <div class="collapse__body ${this.expanded ? "collapse__body--visible" : ""}">
688
+ <div class="collapse__body-inner">
689
+ <!-- slot="body" for explicit usage; default slot as fallback -->
690
+ <slot name="body"><slot></slot></slot>
691
+ </div>
692
+ </div>
693
+ </div>
694
+ `;
695
+ }
696
+ };
697
+ b.styles = [y`${m(N)}`];
698
+ v([
699
+ s({ type: String })
700
+ ], b.prototype, "title", 2);
701
+ v([
702
+ s({ type: Boolean, reflect: !0 })
703
+ ], b.prototype, "expanded", 2);
704
+ v([
705
+ s({ type: Boolean, reflect: !0 })
706
+ ], b.prototype, "disabled", 2);
707
+ v([
708
+ s({ type: String })
709
+ ], b.prototype, "iconPosition", 2);
710
+ v([
711
+ s({ type: String })
712
+ ], b.prototype, "border", 2);
713
+ v([
714
+ s({ type: String })
715
+ ], b.prototype, "size", 2);
716
+ v([
717
+ E(".collapse__body-inner")
718
+ ], b.prototype, "_inner", 2);
719
+ v([
720
+ E(".collapse__body")
721
+ ], b.prototype, "_body", 2);
722
+ b = v([
723
+ x("logosphere-collapse")
724
+ ], b);
725
+ const q = ":host{display:block}.input-group{display:inline-flex;align-items:center;font-family:var(--font-family-base)}.input-group--stretch>::slotted(*){align-self:stretch}.input-group>::slotted(*){flex-shrink:0}:host([block]){display:block}:host([block]) .input-group{display:flex;width:100%}:host([block]) .input-group>::slotted(*){flex:1;min-width:0}";
726
+ var G = Object.defineProperty, U = Object.getOwnPropertyDescriptor, P = (t, e, o, r) => {
727
+ for (var i = r > 1 ? void 0 : r ? U(e, o) : e, l = t.length - 1, a; l >= 0; l--)
728
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
729
+ return r && i && G(e, o, i), i;
730
+ };
731
+ let S = class extends w {
732
+ constructor() {
733
+ super(...arguments), this.stretch = !0, this._onFocusIn = (t) => {
734
+ const e = t.composedPath();
735
+ this._getChildren().forEach((r) => {
736
+ const i = e.includes(r);
737
+ r.style.zIndex = i ? "1" : "0", r.style.position = "relative";
738
+ });
739
+ }, this._onFocusOut = (t) => {
740
+ const e = t.relatedTarget;
741
+ e && this.contains(e) || this._getChildren().forEach((o) => {
742
+ o.style.zIndex = "", o.style.position = "";
743
+ });
744
+ };
745
+ }
746
+ // ── Lifecycle ─────────────────────────────────────────────────────────────
747
+ firstUpdated() {
748
+ this._applyGroupStyles(), this.addEventListener("focusin", this._onFocusIn), this.addEventListener("focusout", this._onFocusOut);
749
+ }
750
+ disconnectedCallback() {
751
+ super.disconnectedCallback(), this.removeEventListener("focusin", this._onFocusIn), this.removeEventListener("focusout", this._onFocusOut);
752
+ }
753
+ // ── Slot change ───────────────────────────────────────────────────────────
754
+ _onSlotChange() {
755
+ this._applyGroupStyles();
756
+ }
757
+ // ── Focus handling — raise focused child above siblings ───────────────────
758
+ _getChildren() {
759
+ return this.shadowRoot?.querySelector("slot")?.assignedElements() ?? [];
760
+ }
761
+ // ── Style application ─────────────────────────────────────────────────────
762
+ _applyGroupStyles() {
763
+ const t = this._getChildren(), e = t.length;
764
+ e !== 0 && t.forEach((o, r) => {
765
+ const i = r === 0, l = r === e - 1;
766
+ let a;
767
+ e === 1 ? a = "var(--radius-base)" : i ? a = "var(--radius-base) 0 0 var(--radius-base)" : l ? a = "0 var(--radius-base) var(--radius-base) 0" : a = "0", o.style.setProperty("--formfield-border-radius", a), o.style.marginLeft = i ? "" : "-1px";
768
+ });
769
+ }
770
+ // ── Render ────────────────────────────────────────────────────────────────
771
+ render() {
772
+ return n`
773
+ <div class="input-group${this.stretch ? " input-group--stretch" : ""}">
774
+ <slot @slotchange=${this._onSlotChange}></slot>
775
+ </div>
776
+ `;
777
+ }
778
+ };
779
+ S.styles = [y`${m(q)}`];
780
+ P([
781
+ s({ type: Boolean })
782
+ ], S.prototype, "stretch", 2);
783
+ S = P([
784
+ x("logosphere-input-group")
785
+ ], S);
786
+ const H = ":host{display:block}.accordion{display:flex;flex-direction:column}.accordion--full{gap:var(--spacing-2)}.accordion--bottom{gap:0}.accordion--full ::slotted(logosphere-collapse),.accordion--full logosphere-collapse{width:100%}";
787
+ var V = Object.defineProperty, Y = Object.getOwnPropertyDescriptor, g = (t, e, o, r) => {
788
+ for (var i = r > 1 ? void 0 : r ? Y(e, o) : e, l = t.length - 1, a; l >= 0; l--)
789
+ (a = t[l]) && (i = (r ? a(e, o, i) : a(i)) || i);
790
+ return r && i && V(e, o, i), i;
791
+ };
792
+ let h = class extends w {
793
+ constructor() {
794
+ super(...arguments), this.items = [], this.multiple = !1, this.defaultOpen = [], this.border = "full", this.iconPosition = "right", this.size = "default", this._openSet = /* @__PURE__ */ new Set(), this._onSlottedToggle = (t) => {
795
+ if (this.items.length > 0 || this.multiple) return;
796
+ const e = t.target;
797
+ t.detail.expanded && this.querySelectorAll("logosphere-collapse").forEach((o) => {
798
+ o !== e && o.expanded && (o.expanded = !1);
799
+ });
800
+ };
801
+ }
802
+ // ── Lifecycle ────────────────────────────────────────────────────────────
803
+ connectedCallback() {
804
+ super.connectedCallback();
805
+ const t = Array.isArray(this.defaultOpen) ? this.defaultOpen : [this.defaultOpen];
806
+ this._openSet = new Set(t), this.addEventListener("toggle", this._onSlottedToggle);
807
+ }
808
+ disconnectedCallback() {
809
+ super.disconnectedCallback(), this.removeEventListener("toggle", this._onSlottedToggle);
810
+ }
811
+ // ── Items-based mode ──────────────────────────────────────────────────────
812
+ _toggle(t) {
813
+ const e = new Set(this._openSet);
814
+ e.has(t) ? e.delete(t) : (this.multiple || e.clear(), e.add(t));
815
+ const o = this._openSet.has(t);
816
+ this._openSet = e, this.dispatchEvent(
817
+ new CustomEvent("accordion-change", {
818
+ detail: { index: t, expanded: !o, openIndices: [...this._openSet] },
819
+ bubbles: !0,
820
+ composed: !0
821
+ })
822
+ );
823
+ }
824
+ // ── Render ────────────────────────────────────────────────────────────────
825
+ render() {
826
+ return this.items.length === 0 ? n`
827
+ <div class="accordion accordion--${this.border}">
828
+ <slot></slot>
829
+ </div>
830
+ ` : n`
831
+ <div class="accordion accordion--${this.border}">
832
+ ${this.items.map((t, e) => n`
833
+ <logosphere-collapse
834
+ title=${t.title}
835
+ .expanded=${this._openSet.has(e)}
836
+ .disabled=${t.disabled ?? !1}
837
+ border=${this.border}
838
+ iconPosition=${this.iconPosition}
839
+ size=${this.size}
840
+ @toggle=${(o) => {
841
+ o.stopPropagation(), this._toggle(e);
842
+ }}
843
+ >
844
+ <span slot="body">${t.content}</span>
845
+ </logosphere-collapse>
846
+ `)}
847
+ </div>
848
+ `;
849
+ }
850
+ };
851
+ h.styles = [y`${m(H)}`];
852
+ g([
853
+ s({ attribute: !1 })
854
+ ], h.prototype, "items", 2);
855
+ g([
856
+ s({ type: Boolean })
857
+ ], h.prototype, "multiple", 2);
858
+ g([
859
+ s({ attribute: !1 })
860
+ ], h.prototype, "defaultOpen", 2);
861
+ g([
862
+ s({ type: String })
863
+ ], h.prototype, "border", 2);
864
+ g([
865
+ s({ type: String })
866
+ ], h.prototype, "iconPosition", 2);
867
+ g([
868
+ s({ type: String })
869
+ ], h.prototype, "size", 2);
870
+ g([
871
+ C()
872
+ ], h.prototype, "_openSet", 2);
873
+ h = g([
874
+ x("logosphere-accordion")
875
+ ], h);
17
876
  export {
18
- C as Breadcrumb,
19
- e as Button,
20
- h as Card,
21
- s as Checkbox,
22
- M as Combobox,
23
- w as DownloadManager,
24
- x as FormField,
25
- T as LedsDatePicker,
26
- D as LedsUiChatbot,
27
- t as LogosphereBadge,
28
- B as LogosphereInput,
29
- I as LogosphereTab,
30
- v as Modal,
31
- i as Popover,
32
- L as Switch,
33
- l as TextArea
877
+ h as Accordion,
878
+ ut as Breadcrumb,
879
+ ot as Button,
880
+ ht as Card,
881
+ nt as Checkbox,
882
+ xt as ChipGroup,
883
+ b as Collapse,
884
+ Ot as Combobox,
885
+ At as DownloadManager,
886
+ Mt as Drawer,
887
+ lt as FormField,
888
+ S as InputGroup,
889
+ Nt as LeftMenu,
890
+ Kt as LeftMenuItemElement,
891
+ rt as LogosphereBadge,
892
+ Lt as LogosphereCalendar,
893
+ Pt as LogosphereChatBot,
894
+ It as LogosphereDatePicker,
895
+ vt as LogosphereInput,
896
+ Zt as LogosphereTab,
897
+ Ut as LogosphereToast,
898
+ Ht as LogosphereToastContainer,
899
+ qt as Modal,
900
+ ft as Pagination,
901
+ yt as Popover,
902
+ p as Slider,
903
+ u as SplitButton,
904
+ f as Stepper,
905
+ dt as Switch,
906
+ kt as TextArea,
907
+ Ct as TimePicker,
908
+ Vt as ToastService,
909
+ Qt as TreeMenu,
910
+ tt as UiIcon
34
911
  };