@logosphere-ui/core 0.0.0-alpha.5 → 0.0.0-alpha.50

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 (208) hide show
  1. package/AGENTS.md +1204 -0
  2. package/dist/AGENTS.md +1204 -0
  3. package/dist/accordion-CYuCj7nB.cjs +21 -0
  4. package/dist/accordion-cDabqwu6.js +96 -0
  5. package/dist/accordion.cjs +1 -0
  6. package/dist/accordion.js +4 -0
  7. package/dist/atoms/Badge/badge.d.ts +1 -1
  8. package/dist/atoms/Button/button.d.ts +5 -3
  9. package/dist/atoms/Checkbox/checkbox.d.ts +13 -3
  10. package/dist/atoms/FormField/formfield.d.ts +12 -0
  11. package/dist/atoms/Slider/index.d.ts +1 -0
  12. package/dist/atoms/Slider/slider.d.ts +54 -0
  13. package/dist/badge-BhINg1p5.js +72 -0
  14. package/dist/badge-CKSG_MyA.cjs +13 -0
  15. package/dist/badge.cjs +1 -1
  16. package/dist/badge.js +1 -1
  17. package/dist/breadcrumb-BOuCLUJh.cjs +12 -0
  18. package/dist/breadcrumb-BeJqq-5C.js +41 -0
  19. package/dist/breadcrumb.cjs +1 -1
  20. package/dist/breadcrumb.js +1 -1
  21. package/dist/button-CVkIa7M0.js +58 -0
  22. package/dist/button-vdNReBMi.cjs +10 -0
  23. package/dist/button.cjs +1 -1
  24. package/dist/button.js +1 -1
  25. package/dist/calendar-C71sj3Ki.js +652 -0
  26. package/dist/calendar-DZJM5Tyu.cjs +88 -0
  27. package/dist/calendar.cjs +1 -0
  28. package/dist/calendar.js +4 -0
  29. package/dist/{card-CUhlTJyJ.js → card-C7xXMV3h.js} +26 -25
  30. package/dist/card-DmQRNKtk.cjs +43 -0
  31. package/dist/card.cjs +1 -1
  32. package/dist/card.js +1 -1
  33. package/dist/chatbot-BAou4THb.cjs +183 -0
  34. package/dist/chatbot-BRfqXYYt.js +564 -0
  35. package/dist/chatbot.cjs +1 -1
  36. package/dist/chatbot.js +2 -2
  37. package/dist/checkbox-BAbPDN6x.cjs +53 -0
  38. package/dist/checkbox-CTfbav6M.js +152 -0
  39. package/dist/checkbox.cjs +1 -1
  40. package/dist/checkbox.js +1 -1
  41. package/dist/chip-group-D4DwnC37.cjs +26 -0
  42. package/dist/chip-group-DzfOd6Vw.js +89 -0
  43. package/dist/chip-group.cjs +1 -0
  44. package/dist/chip-group.js +4 -0
  45. package/dist/collapse-CbRE8ABx.cjs +47 -0
  46. package/dist/collapse-DY6SJ9jS.js +141 -0
  47. package/dist/collapse.cjs +1 -0
  48. package/dist/collapse.js +4 -0
  49. package/dist/combobox-BAa3UAQs.cjs +113 -0
  50. package/dist/combobox-BR05Tgfd.js +460 -0
  51. package/dist/combobox.cjs +1 -1
  52. package/dist/combobox.js +1 -1
  53. package/dist/datepicker-BFYWQRrJ.js +382 -0
  54. package/dist/datepicker-BWE4qDJM.cjs +85 -0
  55. package/dist/datepicker.cjs +1 -1
  56. package/dist/datepicker.js +2 -2
  57. package/dist/{download-manager-A4fOxGWJ.js → download-manager-BPg-6Qfg.js} +4 -4
  58. package/dist/download-manager-DDeTYRPs.cjs +97 -0
  59. package/dist/download-manager.cjs +1 -1
  60. package/dist/download-manager.js +1 -1
  61. package/dist/drawer-CRu4G2zu.cjs +32 -0
  62. package/dist/drawer-DhuBPWHP.js +114 -0
  63. package/dist/drawer.cjs +1 -0
  64. package/dist/drawer.js +4 -0
  65. package/dist/formfield-JXiv9mvJ.cjs +33 -0
  66. package/dist/formfield-ss2mFweu.js +161 -0
  67. package/dist/formfield.cjs +1 -1
  68. package/dist/formfield.js +1 -1
  69. package/dist/icon.cjs +1 -0
  70. package/dist/icon.js +4 -0
  71. package/dist/index.cjs +1 -1
  72. package/dist/index.d.ts +15 -0
  73. package/dist/index.js +65 -32
  74. package/dist/index.umd.js +1613 -521
  75. package/dist/input-DyLKo7h6.cjs +60 -0
  76. package/dist/input-N3Z8D7q1.js +278 -0
  77. package/dist/input-group-C6sA1lzj.cjs +5 -0
  78. package/dist/input-group-DUPlrpug.js +66 -0
  79. package/dist/input-group.cjs +1 -0
  80. package/dist/input-group.js +4 -0
  81. package/dist/input.cjs +1 -1
  82. package/dist/input.js +1 -1
  83. package/dist/left-menu.cjs +1 -0
  84. package/dist/left-menu.js +5 -0
  85. package/dist/leftmenu-DiKo8iud.cjs +120 -0
  86. package/dist/leftmenu-DlU_G4Sj.js +373 -0
  87. package/dist/modal-g3KbWncV.cjs +84 -0
  88. package/dist/modal-vSjEpYrG.js +250 -0
  89. package/dist/modal.cjs +1 -1
  90. package/dist/modal.js +1 -1
  91. package/dist/molecules/Accordion/accordion.d.ts +42 -0
  92. package/dist/molecules/Accordion/index.d.ts +2 -0
  93. package/dist/molecules/Chip/chip-group.d.ts +29 -0
  94. package/dist/molecules/Chip/index.d.ts +2 -0
  95. package/dist/molecules/Collapse/collapse.d.ts +42 -0
  96. package/dist/molecules/Collapse/index.d.ts +2 -0
  97. package/dist/molecules/Input/input.d.ts +24 -1
  98. package/dist/molecules/InputGroup/index.d.ts +1 -0
  99. package/dist/molecules/InputGroup/input-group.d.ts +40 -0
  100. package/dist/molecules/Pagination/index.d.ts +1 -0
  101. package/dist/molecules/Pagination/pagination.d.ts +60 -0
  102. package/dist/molecules/Popover/popover.d.ts +5 -0
  103. package/dist/molecules/SplitButton/index.d.ts +2 -0
  104. package/dist/molecules/SplitButton/split-button.d.ts +53 -0
  105. package/dist/molecules/Stepper/index.d.ts +2 -0
  106. package/dist/molecules/Stepper/stepper.d.ts +34 -0
  107. package/dist/molecules/Textarea/text-area.d.ts +5 -2
  108. package/dist/molecules/TimePicker/index.d.ts +2 -0
  109. package/dist/molecules/TimePicker/timepicker.d.ts +62 -0
  110. package/dist/organisms/Calendar/calendar.d.ts +54 -0
  111. package/dist/organisms/Calendar/index.d.ts +1 -0
  112. package/dist/organisms/Calendar/shared.d.ts +9 -0
  113. package/dist/organisms/Chatbot/chatbot.d.ts +10 -1
  114. package/dist/organisms/Chatbot/index.d.ts +1 -1
  115. package/dist/organisms/Combobox/combobox.d.ts +39 -0
  116. package/dist/organisms/DatePicker/datepicker.d.ts +35 -33
  117. package/dist/organisms/Drawer/drawer.d.ts +30 -0
  118. package/dist/organisms/Drawer/index.d.ts +1 -0
  119. package/dist/organisms/LeftMenu/index.d.ts +2 -0
  120. package/dist/organisms/LeftMenu/leftmenu-types.d.ts +24 -0
  121. package/dist/organisms/LeftMenu/leftmenu.d.ts +60 -0
  122. package/dist/organisms/Modal/modal.d.ts +29 -4
  123. package/dist/organisms/Tab/tab.d.ts +13 -1
  124. package/dist/organisms/Toast/index.d.ts +2 -0
  125. package/dist/organisms/Toast/toast-container.d.ts +42 -0
  126. package/dist/organisms/Toast/toast.d.ts +48 -0
  127. package/dist/organisms/TreeMenu/index.d.ts +1 -0
  128. package/dist/organisms/TreeMenu/tree-menu.d.ts +59 -0
  129. package/dist/pagination-CjXvpE2j.js +360 -0
  130. package/dist/pagination-Nnzacqdo.cjs +169 -0
  131. package/dist/pagination.cjs +1 -0
  132. package/dist/pagination.js +4 -0
  133. package/dist/popover-CrXUbUR-.cjs +30 -0
  134. package/dist/popover-M5ZcS5rj.js +161 -0
  135. package/dist/popover.cjs +1 -1
  136. package/dist/popover.js +1 -1
  137. package/dist/shared/icons/index.d.ts +1 -0
  138. package/dist/shared/types/button.types.d.ts +7 -0
  139. package/dist/slider-DSRs5uhl.cjs +108 -0
  140. package/dist/slider-ntLRajQa.js +280 -0
  141. package/dist/slider.cjs +1 -0
  142. package/dist/slider.js +4 -0
  143. package/dist/split-button-BdBweoip.js +177 -0
  144. package/dist/split-button-BpffPlVg.cjs +63 -0
  145. package/dist/split-button.cjs +1 -0
  146. package/dist/split-button.js +4 -0
  147. package/dist/stepper-CZhwgLNp.js +122 -0
  148. package/dist/stepper-ZOMaU6aZ.cjs +52 -0
  149. package/dist/stepper.cjs +1 -0
  150. package/dist/stepper.js +4 -0
  151. package/dist/styles/main.css +186 -182
  152. package/dist/switch-Do6SCkPJ.cjs +17 -0
  153. package/dist/switch-uYVuohJ-.js +68 -0
  154. package/dist/switch.cjs +1 -1
  155. package/dist/switch.js +1 -1
  156. package/dist/tab-BvRVHpWs.cjs +41 -0
  157. package/dist/tab-Byh4UgFB.js +204 -0
  158. package/dist/tab.cjs +1 -1
  159. package/dist/tab.js +1 -1
  160. package/dist/text-area-1rALZ0iy.js +239 -0
  161. package/dist/text-area-D_TYL4_q.cjs +51 -0
  162. package/dist/textarea.cjs +1 -1
  163. package/dist/textarea.js +1 -1
  164. package/dist/timepicker-B9l6HN-d.js +320 -0
  165. package/dist/timepicker-Bpf2d4Nn.cjs +119 -0
  166. package/dist/timepicker.cjs +1 -0
  167. package/dist/timepicker.js +4 -0
  168. package/dist/toast-container-C5qYjInG.js +274 -0
  169. package/dist/toast-container-D2dyP20J.cjs +64 -0
  170. package/dist/toast.cjs +1 -0
  171. package/dist/toast.js +6 -0
  172. package/dist/tree-menu-BZ7aBC7R.js +237 -0
  173. package/dist/tree-menu-DDQ_DYl7.cjs +78 -0
  174. package/dist/tree-menu.cjs +1 -0
  175. package/dist/tree-menu.js +4 -0
  176. package/dist/ui-icon-BeR-PaPg.js +75 -0
  177. package/dist/ui-icon-DWl7I5BQ.cjs +22 -0
  178. package/package.json +104 -15
  179. package/dist/badge-BbhaO73N.cjs +0 -13
  180. package/dist/badge-DE7Tgd8Z.js +0 -71
  181. package/dist/breadcrumb-B-4yqoJZ.js +0 -41
  182. package/dist/breadcrumb-Cop-B1J7.cjs +0 -12
  183. package/dist/button-C1EwOosO.js +0 -58
  184. package/dist/button-CDRccsk9.cjs +0 -10
  185. package/dist/card-n8ka8Zk-.cjs +0 -43
  186. package/dist/chatbot-Da_itUdJ.cjs +0 -160
  187. package/dist/chatbot-zkxngMRH.js +0 -481
  188. package/dist/checkbox-7Rb3WKGx.js +0 -119
  189. package/dist/checkbox-CdDTRdKV.cjs +0 -37
  190. package/dist/combobox-BJbI-Tgi.js +0 -268
  191. package/dist/combobox-pmE7bgEL.cjs +0 -99
  192. package/dist/datepicker-DFJx45C-.js +0 -750
  193. package/dist/datepicker-b9JGTTMx.cjs +0 -115
  194. package/dist/download-manager-BSIMTGaK.cjs +0 -97
  195. package/dist/formfield-D_7NFFoe.cjs +0 -27
  196. package/dist/formfield-d8fp9FTV.js +0 -118
  197. package/dist/input-BcnI1w3_.cjs +0 -46
  198. package/dist/input-Bj_7u8Iv.js +0 -192
  199. package/dist/modal-Bfc6WQSL.js +0 -110
  200. package/dist/modal-DQ8VFL-P.cjs +0 -39
  201. package/dist/popover-B7tCqk3R.js +0 -140
  202. package/dist/popover-C2p5Pmts.cjs +0 -30
  203. package/dist/switch-Cpl53nRW.js +0 -64
  204. package/dist/switch-Rnnn10bn.cjs +0 -17
  205. package/dist/tab-BKdN4xAz.js +0 -176
  206. package/dist/tab-DcjAlXzU.cjs +0 -40
  207. package/dist/text-area-BkHdLnZj.cjs +0 -44
  208. package/dist/text-area-CC24lj8v.js +0 -204
package/dist/textarea.js CHANGED
@@ -1,4 +1,4 @@
1
- import { T as a } from "./text-area-CC24lj8v.js";
1
+ import { T as a } from "./text-area-1rALZ0iy.js";
2
2
  export {
3
3
  a as TextArea
4
4
  };
@@ -0,0 +1,320 @@
1
+ import { unsafeCSS as d, css as _, LitElement as m, html as h } from "lit";
2
+ import { property as s, state as c, query as u, customElement as v } from "lit/decorators.js";
3
+ import { createPopper as b } from "@popperjs/core";
4
+ import "./input-N3Z8D7q1.js";
5
+ import "./ui-icon-BeR-PaPg.js";
6
+ const g = ":host{display:block;width:100%}.timepicker__reference{display:block;width:100%}.timepicker__trigger{border:none;background:transparent;color:var(--color-tertiary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;height:100%;min-height:32px;outline:none;border-radius:0 var(--radius-base) var(--radius-base) 0;transition:color var(--transition-speed-fast) var(--transition-timing),background-color var(--transition-speed-fast) var(--transition-timing)}.timepicker__trigger:hover{color:var(--color-body-text);background-color:var(--color-body-bg-hover)}.timepicker__trigger--active{color:var(--color-body-text)}.timepicker__trigger:disabled{pointer-events:none;opacity:.4}.timepicker__popup[popover]{position:fixed;inset:unset;margin:0;padding:0;border:none;width:240px;background-color:var(--color-body-bg);border-radius:12px;box-shadow:0 4px 16px #7878783d;overflow:hidden;z-index:var(--z-index-dropdown, 1000)}.timepicker__spinner{display:flex;flex-direction:row;align-items:stretch;padding:var(--spacing-1) var(--spacing-2)}.timepicker__col{flex:1;display:flex;flex-direction:column;padding:0px var(--spacing-5)}.timepicker__col--left{align-items:flex-start}.timepicker__col--right{align-items:flex-end}.timepicker__col--sep{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 var(--spacing-1)}.timepicker__spin-btn{height:32px;display:flex;align-items:center;justify-content:center;border:none;padding:var(--spacing-2);background:transparent;color:var(--color-secondary);border-radius:var(--radius-base);cursor:pointer;outline:none;box-sizing:border-box;transition:background-color var(--transition-speed-fast) var(--transition-timing),color var(--transition-speed-fast) var(--transition-timing)}.timepicker__spin-btn:hover{background-color:var(--color-body-bg-hover);color:var(--color-body-text)}.timepicker__spin-btn:active{background-color:var(--color-body-bg-active)}.timepicker__time-unit{height:32px;display:flex;align-items:center;justify-content:center;font-size:14px;font-family:var(--font-family-base);font-weight:var(--font-weight-regular);line-height:1.25rem;letter-spacing:-.14px;color:var(--color-body-text);text-align:center;box-sizing:border-box;padding:var(--spacing-2)}.timepicker__colon{height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;font-family:var(--font-family-base);font-weight:var(--font-weight-medium);color:var(--color-secondary)}.timepicker__actions{display:flex;align-items:center;padding:var(--spacing-2);border-top:1px solid var(--color-border);gap:var(--spacing-1)}.timepicker__action-btn{flex:1 0 0;min-width:0;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-secondary);border-radius:var(--radius-full);cursor:pointer;padding:var(--spacing-2);outline:none;transition:background-color var(--transition-speed-fast) var(--transition-timing),color var(--transition-speed-fast) var(--transition-timing)}.timepicker__action-btn:hover{background-color:var(--color-body-bg-hover);color:var(--color-body-text)}.timepicker__action-btn:active{background-color:var(--color-body-bg-active)}";
7
+ var f = Object.defineProperty, y = Object.getOwnPropertyDescriptor, i = (t, r, n, a) => {
8
+ for (var o = a > 1 ? void 0 : a ? y(r, n) : r, p = t.length - 1, l; p >= 0; p--)
9
+ (l = t[p]) && (o = (a ? l(r, n, o) : l(o)) || o);
10
+ return a && o && f(r, n, o), o;
11
+ };
12
+ let e = class extends m {
13
+ constructor() {
14
+ super(...arguments), this.value = "", this.label = "", this.helper = "", this.error = "", this.placeholder = "__:__", this.required = !1, this.disabled = !1, this.readonly = !1, this.size = "default", this.variant = "default", this._isOpen = !1, this._hour = 0, this._minute = 0, this._handleOutsideClick = (t) => {
15
+ this._isOpen && !t.composedPath().includes(this) && (this._isOpen = !1);
16
+ }, this._handleInputChange = (t) => {
17
+ t.stopPropagation();
18
+ const r = t.detail?.value ?? "";
19
+ if (/^\d{2}:\d{2}$/.test(r)) {
20
+ const [n, a] = this._parseValue(r);
21
+ this._hour = n, this._minute = a;
22
+ const o = `${this._pad(n)}:${this._pad(a)}`;
23
+ this.value = o, this._emit(o);
24
+ }
25
+ }, this._handleInputClear = (t) => {
26
+ t.stopPropagation(), this.value = "", this._hour = 0, this._minute = 0, this._emit(""), this.dispatchEvent(new CustomEvent("clear", { bubbles: !0, composed: !0 })), this._isOpen = !1;
27
+ }, this._incrementHour = () => {
28
+ this._hour = (this._hour + 1) % 24, this._syncValue();
29
+ }, this._decrementHour = () => {
30
+ this._hour = (this._hour - 1 + 24) % 24, this._syncValue();
31
+ }, this._incrementMinute = () => {
32
+ this._minute = (this._minute + 1) % 60, this._syncValue();
33
+ }, this._decrementMinute = () => {
34
+ this._minute = (this._minute - 1 + 60) % 60, this._syncValue();
35
+ };
36
+ }
37
+ // ── Lifecycle ───────────────────────────────────────────────────────────────
38
+ connectedCallback() {
39
+ super.connectedCallback(), document.addEventListener("click", this._handleOutsideClick);
40
+ }
41
+ disconnectedCallback() {
42
+ super.disconnectedCallback(), document.removeEventListener("click", this._handleOutsideClick), this._destroyPopper();
43
+ }
44
+ willUpdate(t) {
45
+ if (t.has("value") && /^\d{1,2}:\d{2}$/.test(this.value)) {
46
+ const [r, n] = this._parseValue(this.value);
47
+ this._hour = r, this._minute = n;
48
+ }
49
+ }
50
+ updated(t) {
51
+ t.has("_isOpen") && (this._isOpen ? this.updateComplete.then(() => {
52
+ this._showPopover(), this._updatePopper();
53
+ }) : (this._hidePopover(), this._destroyPopper()));
54
+ }
55
+ // ── Value helpers ───────────────────────────────────────────────────────────
56
+ _parseValue(t) {
57
+ const r = t.match(/^(\d{1,2}):(\d{2})$/);
58
+ return r ? [
59
+ Math.min(23, Math.max(0, parseInt(r[1], 10))),
60
+ Math.min(59, Math.max(0, parseInt(r[2], 10)))
61
+ ] : [0, 0];
62
+ }
63
+ _pad(t) {
64
+ return String(t).padStart(2, "0");
65
+ }
66
+ // ── Popper / Popover ────────────────────────────────────────────────────────
67
+ _updatePopper() {
68
+ !this._referenceEl || !this._popupEl || (this._popperInstance = b(this._referenceEl, this._popupEl, {
69
+ placement: "bottom-start",
70
+ modifiers: [
71
+ { name: "offset", options: { offset: [0, 4] } },
72
+ { name: "flip", options: { fallbackPlacements: ["top-start"] } },
73
+ {
74
+ name: "preventOverflow",
75
+ options: { boundary: document.documentElement, padding: 8 }
76
+ }
77
+ ]
78
+ }));
79
+ }
80
+ _destroyPopper() {
81
+ this._popperInstance?.destroy(), this._popperInstance = void 0;
82
+ }
83
+ _showPopover() {
84
+ this._popupEl?.showPopover?.();
85
+ }
86
+ _hidePopover() {
87
+ const t = this._popupEl;
88
+ try {
89
+ t?.hidePopover?.();
90
+ } catch {
91
+ }
92
+ }
93
+ _togglePopup() {
94
+ if (!(this.disabled || this.readonly))
95
+ if (this._isOpen)
96
+ this._isOpen = !1;
97
+ else {
98
+ const [t, r] = this._parseValue(this.value);
99
+ this._hour = t, this._minute = r, this._isOpen = !0;
100
+ }
101
+ }
102
+ _clearValue(t) {
103
+ t?.stopPropagation(), this.value = "", this._hour = 0, this._minute = 0, this._emit(""), this.dispatchEvent(new CustomEvent("clear", { bubbles: !0, composed: !0 })), this._isOpen = !1;
104
+ }
105
+ _setNow() {
106
+ const t = /* @__PURE__ */ new Date();
107
+ this._hour = t.getHours(), this._minute = t.getMinutes(), this._syncValue();
108
+ }
109
+ _emit(t) {
110
+ this.onChange?.(t), this.dispatchEvent(new CustomEvent("change", {
111
+ bubbles: !0,
112
+ composed: !0,
113
+ detail: { value: t }
114
+ })), this.dispatchEvent(new CustomEvent("lgsChange", {
115
+ bubbles: !0,
116
+ composed: !0,
117
+ detail: { value: t }
118
+ }));
119
+ }
120
+ _syncValue() {
121
+ const t = `${this._pad(this._hour)}:${this._pad(this._minute)}`;
122
+ this.value = t, this._emit(t);
123
+ }
124
+ _startSpin(t) {
125
+ t(), this._spinInterval = setInterval(t, 120);
126
+ }
127
+ _stopSpin() {
128
+ clearInterval(this._spinInterval), this._spinInterval = void 0;
129
+ }
130
+ // ── Render ──────────────────────────────────────────────────────────────────
131
+ _renderPopup() {
132
+ return h`
133
+ <div data-timepicker-popup popover="manual" class="timepicker__popup">
134
+ <div class="timepicker__spinner">
135
+ <!-- Sol sütun: saat -->
136
+ <div class="timepicker__col timepicker__col--left">
137
+ <button
138
+ class="timepicker__spin-btn"
139
+ @mousedown=${() => this._startSpin(this._incrementHour)}
140
+ @mouseup=${this._stopSpin}
141
+ @mouseleave=${this._stopSpin}
142
+ @touchstart=${(t) => {
143
+ t.preventDefault(), this._startSpin(this._incrementHour);
144
+ }}
145
+ @touchend=${this._stopSpin}
146
+ tabindex="-1"
147
+ aria-label="Saat artır"
148
+ ><ui-icon name="uil-arrow-up" size="16"></ui-icon></button>
149
+ <div class="timepicker__time-unit">${this._pad(this._hour)}</div>
150
+ <button
151
+ class="timepicker__spin-btn"
152
+ @mousedown=${() => this._startSpin(this._decrementHour)}
153
+ @mouseup=${this._stopSpin}
154
+ @mouseleave=${this._stopSpin}
155
+ @touchstart=${(t) => {
156
+ t.preventDefault(), this._startSpin(this._decrementHour);
157
+ }}
158
+ @touchend=${this._stopSpin}
159
+ tabindex="-1"
160
+ aria-label="Saat azalt"
161
+ ><ui-icon name="uil-arrow-down" size="16"></ui-icon></button>
162
+ </div>
163
+
164
+ <!-- Orta sütun: iki nokta -->
165
+ <div class="timepicker__col timepicker__col--sep">
166
+ <div class="timepicker__colon">:</div>
167
+ </div>
168
+
169
+ <!-- Sağ sütun: dakika -->
170
+ <div class="timepicker__col timepicker__col--right">
171
+ <button
172
+ class="timepicker__spin-btn"
173
+ @mousedown=${() => this._startSpin(this._incrementMinute)}
174
+ @mouseup=${this._stopSpin}
175
+ @mouseleave=${this._stopSpin}
176
+ @touchstart=${(t) => {
177
+ t.preventDefault(), this._startSpin(this._incrementMinute);
178
+ }}
179
+ @touchend=${this._stopSpin}
180
+ tabindex="-1"
181
+ aria-label="Dakika artır"
182
+ ><ui-icon name="uil-arrow-up" size="16"></ui-icon></button>
183
+ <div class="timepicker__time-unit">${this._pad(this._minute)}</div>
184
+ <button
185
+ class="timepicker__spin-btn"
186
+ @mousedown=${() => this._startSpin(this._decrementMinute)}
187
+ @mouseup=${this._stopSpin}
188
+ @mouseleave=${this._stopSpin}
189
+ @touchstart=${(t) => {
190
+ t.preventDefault(), this._startSpin(this._decrementMinute);
191
+ }}
192
+ @touchend=${this._stopSpin}
193
+ tabindex="-1"
194
+ aria-label="Dakika azalt"
195
+ ><ui-icon name="uil-arrow-down" size="16"></ui-icon></button>
196
+ </div>
197
+ </div>
198
+
199
+ <!-- Action buttons -->
200
+ <div class="timepicker__actions">
201
+ <button
202
+ class="timepicker__action-btn"
203
+ @click=${this._setNow}
204
+ title="Şu anki saati seç"
205
+ >
206
+ <ui-icon name="uil-calendar-alt" size="16"></ui-icon>
207
+ </button>
208
+ <button
209
+ class="timepicker__action-btn"
210
+ @click=${() => this._clearValue()}
211
+ title="Temizle"
212
+ >
213
+ <ui-icon name="uil-trash" size="16"></ui-icon>
214
+ </button>
215
+ <button
216
+ class="timepicker__action-btn"
217
+ @click=${() => {
218
+ this._isOpen = !1;
219
+ }}
220
+ title="Kapat"
221
+ >
222
+ <ui-icon name="uil-times" size="16"></ui-icon>
223
+ </button>
224
+ </div>
225
+ </div>
226
+ `;
227
+ }
228
+ render() {
229
+ return h`
230
+ <div class="timepicker__reference">
231
+ <logosphere-input
232
+ .label=${this.label}
233
+ .helper=${this.helper}
234
+ .error=${this.error}
235
+ .required=${this.required}
236
+ .disabled=${this.disabled}
237
+ .readonly=${this.readonly}
238
+ .size=${this.size}
239
+ .variant=${this.variant}
240
+ .placeholder=${this.placeholder}
241
+ .value=${this.value}
242
+ mask="00:00"
243
+ @input=${this._handleInputChange}
244
+ @clear=${this._handleInputClear}
245
+ @change=${(t) => t.stopPropagation()}
246
+ >
247
+ <button
248
+ slot="suffix"
249
+ type="button"
250
+ class="timepicker__trigger ${this._isOpen ? "timepicker__trigger--active" : ""}"
251
+ @click=${this._togglePopup}
252
+ ?disabled=${this.disabled}
253
+ tabindex=${this.disabled ? "-1" : "0"}
254
+ aria-label="Saat seç"
255
+ aria-expanded=${this._isOpen ? "true" : "false"}
256
+ >
257
+ <ui-icon name="uil-clock" size="16"></ui-icon>
258
+ </button>
259
+ </logosphere-input>
260
+ </div>
261
+
262
+ ${this._renderPopup()}
263
+ `;
264
+ }
265
+ };
266
+ e.styles = [_`${d(g)}`];
267
+ i([
268
+ s({ type: String })
269
+ ], e.prototype, "value", 2);
270
+ i([
271
+ s({ type: String })
272
+ ], e.prototype, "label", 2);
273
+ i([
274
+ s({ type: String })
275
+ ], e.prototype, "helper", 2);
276
+ i([
277
+ s({ type: String })
278
+ ], e.prototype, "error", 2);
279
+ i([
280
+ s({ type: String })
281
+ ], e.prototype, "placeholder", 2);
282
+ i([
283
+ s({ type: Boolean })
284
+ ], e.prototype, "required", 2);
285
+ i([
286
+ s({ type: Boolean })
287
+ ], e.prototype, "disabled", 2);
288
+ i([
289
+ s({ type: Boolean })
290
+ ], e.prototype, "readonly", 2);
291
+ i([
292
+ s({ type: String })
293
+ ], e.prototype, "size", 2);
294
+ i([
295
+ s({ type: String })
296
+ ], e.prototype, "variant", 2);
297
+ i([
298
+ s({ attribute: !1 })
299
+ ], e.prototype, "onChange", 2);
300
+ i([
301
+ c()
302
+ ], e.prototype, "_isOpen", 2);
303
+ i([
304
+ c()
305
+ ], e.prototype, "_hour", 2);
306
+ i([
307
+ c()
308
+ ], e.prototype, "_minute", 2);
309
+ i([
310
+ u(".timepicker__reference")
311
+ ], e.prototype, "_referenceEl", 2);
312
+ i([
313
+ u("[data-timepicker-popup]")
314
+ ], e.prototype, "_popupEl", 2);
315
+ e = i([
316
+ v("logosphere-timepicker")
317
+ ], e);
318
+ export {
319
+ e as T
320
+ };
@@ -0,0 +1,119 @@
1
+ "use strict";const a=require("lit"),t=require("lit/decorators.js"),l=require("@popperjs/core");require("./input-DyLKo7h6.cjs");require("./ui-icon-DWl7I5BQ.cjs");const u=":host{display:block;width:100%}.timepicker__reference{display:block;width:100%}.timepicker__trigger{border:none;background:transparent;color:var(--color-tertiary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;height:100%;min-height:32px;outline:none;border-radius:0 var(--radius-base) var(--radius-base) 0;transition:color var(--transition-speed-fast) var(--transition-timing),background-color var(--transition-speed-fast) var(--transition-timing)}.timepicker__trigger:hover{color:var(--color-body-text);background-color:var(--color-body-bg-hover)}.timepicker__trigger--active{color:var(--color-body-text)}.timepicker__trigger:disabled{pointer-events:none;opacity:.4}.timepicker__popup[popover]{position:fixed;inset:unset;margin:0;padding:0;border:none;width:240px;background-color:var(--color-body-bg);border-radius:12px;box-shadow:0 4px 16px #7878783d;overflow:hidden;z-index:var(--z-index-dropdown, 1000)}.timepicker__spinner{display:flex;flex-direction:row;align-items:stretch;padding:var(--spacing-1) var(--spacing-2)}.timepicker__col{flex:1;display:flex;flex-direction:column;padding:0px var(--spacing-5)}.timepicker__col--left{align-items:flex-start}.timepicker__col--right{align-items:flex-end}.timepicker__col--sep{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 var(--spacing-1)}.timepicker__spin-btn{height:32px;display:flex;align-items:center;justify-content:center;border:none;padding:var(--spacing-2);background:transparent;color:var(--color-secondary);border-radius:var(--radius-base);cursor:pointer;outline:none;box-sizing:border-box;transition:background-color var(--transition-speed-fast) var(--transition-timing),color var(--transition-speed-fast) var(--transition-timing)}.timepicker__spin-btn:hover{background-color:var(--color-body-bg-hover);color:var(--color-body-text)}.timepicker__spin-btn:active{background-color:var(--color-body-bg-active)}.timepicker__time-unit{height:32px;display:flex;align-items:center;justify-content:center;font-size:14px;font-family:var(--font-family-base);font-weight:var(--font-weight-regular);line-height:1.25rem;letter-spacing:-.14px;color:var(--color-body-text);text-align:center;box-sizing:border-box;padding:var(--spacing-2)}.timepicker__colon{height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;font-family:var(--font-family-base);font-weight:var(--font-weight-medium);color:var(--color-secondary)}.timepicker__actions{display:flex;align-items:center;padding:var(--spacing-2);border-top:1px solid var(--color-border);gap:var(--spacing-1)}.timepicker__action-btn{flex:1 0 0;min-width:0;height:32px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-secondary);border-radius:var(--radius-full);cursor:pointer;padding:var(--spacing-2);outline:none;transition:background-color var(--transition-speed-fast) var(--transition-timing),color var(--transition-speed-fast) var(--transition-timing)}.timepicker__action-btn:hover{background-color:var(--color-body-bg-hover);color:var(--color-body-text)}.timepicker__action-btn:active{background-color:var(--color-body-bg-active)}";var h=Object.defineProperty,d=Object.getOwnPropertyDescriptor,i=(p,e,r,o)=>{for(var s=o>1?void 0:o?d(e,r):e,n=p.length-1,c;n>=0;n--)(c=p[n])&&(s=(o?c(e,r,s):c(s))||s);return o&&s&&h(e,r,s),s};exports.TimePicker=class extends a.LitElement{constructor(){super(...arguments),this.value="",this.label="",this.helper="",this.error="",this.placeholder="__:__",this.required=!1,this.disabled=!1,this.readonly=!1,this.size="default",this.variant="default",this._isOpen=!1,this._hour=0,this._minute=0,this._handleOutsideClick=e=>{this._isOpen&&!e.composedPath().includes(this)&&(this._isOpen=!1)},this._handleInputChange=e=>{e.stopPropagation();const r=e.detail?.value??"";if(/^\d{2}:\d{2}$/.test(r)){const[o,s]=this._parseValue(r);this._hour=o,this._minute=s;const n=`${this._pad(o)}:${this._pad(s)}`;this.value=n,this._emit(n)}},this._handleInputClear=e=>{e.stopPropagation(),this.value="",this._hour=0,this._minute=0,this._emit(""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this._isOpen=!1},this._incrementHour=()=>{this._hour=(this._hour+1)%24,this._syncValue()},this._decrementHour=()=>{this._hour=(this._hour-1+24)%24,this._syncValue()},this._incrementMinute=()=>{this._minute=(this._minute+1)%60,this._syncValue()},this._decrementMinute=()=>{this._minute=(this._minute-1+60)%60,this._syncValue()}}connectedCallback(){super.connectedCallback(),document.addEventListener("click",this._handleOutsideClick)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("click",this._handleOutsideClick),this._destroyPopper()}willUpdate(e){if(e.has("value")&&/^\d{1,2}:\d{2}$/.test(this.value)){const[r,o]=this._parseValue(this.value);this._hour=r,this._minute=o}}updated(e){e.has("_isOpen")&&(this._isOpen?this.updateComplete.then(()=>{this._showPopover(),this._updatePopper()}):(this._hidePopover(),this._destroyPopper()))}_parseValue(e){const r=e.match(/^(\d{1,2}):(\d{2})$/);return r?[Math.min(23,Math.max(0,parseInt(r[1],10))),Math.min(59,Math.max(0,parseInt(r[2],10)))]:[0,0]}_pad(e){return String(e).padStart(2,"0")}_updatePopper(){!this._referenceEl||!this._popupEl||(this._popperInstance=l.createPopper(this._referenceEl,this._popupEl,{placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,4]}},{name:"flip",options:{fallbackPlacements:["top-start"]}},{name:"preventOverflow",options:{boundary:document.documentElement,padding:8}}]}))}_destroyPopper(){this._popperInstance?.destroy(),this._popperInstance=void 0}_showPopover(){this._popupEl?.showPopover?.()}_hidePopover(){const e=this._popupEl;try{e?.hidePopover?.()}catch{}}_togglePopup(){if(!(this.disabled||this.readonly))if(this._isOpen)this._isOpen=!1;else{const[e,r]=this._parseValue(this.value);this._hour=e,this._minute=r,this._isOpen=!0}}_clearValue(e){e?.stopPropagation(),this.value="",this._hour=0,this._minute=0,this._emit(""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this._isOpen=!1}_setNow(){const e=new Date;this._hour=e.getHours(),this._minute=e.getMinutes(),this._syncValue()}_emit(e){this.onChange?.(e),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:e}})),this.dispatchEvent(new CustomEvent("lgsChange",{bubbles:!0,composed:!0,detail:{value:e}}))}_syncValue(){const e=`${this._pad(this._hour)}:${this._pad(this._minute)}`;this.value=e,this._emit(e)}_startSpin(e){e(),this._spinInterval=setInterval(e,120)}_stopSpin(){clearInterval(this._spinInterval),this._spinInterval=void 0}_renderPopup(){return a.html`
2
+ <div data-timepicker-popup popover="manual" class="timepicker__popup">
3
+ <div class="timepicker__spinner">
4
+ <!-- Sol sütun: saat -->
5
+ <div class="timepicker__col timepicker__col--left">
6
+ <button
7
+ class="timepicker__spin-btn"
8
+ @mousedown=${()=>this._startSpin(this._incrementHour)}
9
+ @mouseup=${this._stopSpin}
10
+ @mouseleave=${this._stopSpin}
11
+ @touchstart=${e=>{e.preventDefault(),this._startSpin(this._incrementHour)}}
12
+ @touchend=${this._stopSpin}
13
+ tabindex="-1"
14
+ aria-label="Saat artır"
15
+ ><ui-icon name="uil-arrow-up" size="16"></ui-icon></button>
16
+ <div class="timepicker__time-unit">${this._pad(this._hour)}</div>
17
+ <button
18
+ class="timepicker__spin-btn"
19
+ @mousedown=${()=>this._startSpin(this._decrementHour)}
20
+ @mouseup=${this._stopSpin}
21
+ @mouseleave=${this._stopSpin}
22
+ @touchstart=${e=>{e.preventDefault(),this._startSpin(this._decrementHour)}}
23
+ @touchend=${this._stopSpin}
24
+ tabindex="-1"
25
+ aria-label="Saat azalt"
26
+ ><ui-icon name="uil-arrow-down" size="16"></ui-icon></button>
27
+ </div>
28
+
29
+ <!-- Orta sütun: iki nokta -->
30
+ <div class="timepicker__col timepicker__col--sep">
31
+ <div class="timepicker__colon">:</div>
32
+ </div>
33
+
34
+ <!-- Sağ sütun: dakika -->
35
+ <div class="timepicker__col timepicker__col--right">
36
+ <button
37
+ class="timepicker__spin-btn"
38
+ @mousedown=${()=>this._startSpin(this._incrementMinute)}
39
+ @mouseup=${this._stopSpin}
40
+ @mouseleave=${this._stopSpin}
41
+ @touchstart=${e=>{e.preventDefault(),this._startSpin(this._incrementMinute)}}
42
+ @touchend=${this._stopSpin}
43
+ tabindex="-1"
44
+ aria-label="Dakika artır"
45
+ ><ui-icon name="uil-arrow-up" size="16"></ui-icon></button>
46
+ <div class="timepicker__time-unit">${this._pad(this._minute)}</div>
47
+ <button
48
+ class="timepicker__spin-btn"
49
+ @mousedown=${()=>this._startSpin(this._decrementMinute)}
50
+ @mouseup=${this._stopSpin}
51
+ @mouseleave=${this._stopSpin}
52
+ @touchstart=${e=>{e.preventDefault(),this._startSpin(this._decrementMinute)}}
53
+ @touchend=${this._stopSpin}
54
+ tabindex="-1"
55
+ aria-label="Dakika azalt"
56
+ ><ui-icon name="uil-arrow-down" size="16"></ui-icon></button>
57
+ </div>
58
+ </div>
59
+
60
+ <!-- Action buttons -->
61
+ <div class="timepicker__actions">
62
+ <button
63
+ class="timepicker__action-btn"
64
+ @click=${this._setNow}
65
+ title="Şu anki saati seç"
66
+ >
67
+ <ui-icon name="uil-calendar-alt" size="16"></ui-icon>
68
+ </button>
69
+ <button
70
+ class="timepicker__action-btn"
71
+ @click=${()=>this._clearValue()}
72
+ title="Temizle"
73
+ >
74
+ <ui-icon name="uil-trash" size="16"></ui-icon>
75
+ </button>
76
+ <button
77
+ class="timepicker__action-btn"
78
+ @click=${()=>{this._isOpen=!1}}
79
+ title="Kapat"
80
+ >
81
+ <ui-icon name="uil-times" size="16"></ui-icon>
82
+ </button>
83
+ </div>
84
+ </div>
85
+ `}render(){return a.html`
86
+ <div class="timepicker__reference">
87
+ <logosphere-input
88
+ .label=${this.label}
89
+ .helper=${this.helper}
90
+ .error=${this.error}
91
+ .required=${this.required}
92
+ .disabled=${this.disabled}
93
+ .readonly=${this.readonly}
94
+ .size=${this.size}
95
+ .variant=${this.variant}
96
+ .placeholder=${this.placeholder}
97
+ .value=${this.value}
98
+ mask="00:00"
99
+ @input=${this._handleInputChange}
100
+ @clear=${this._handleInputClear}
101
+ @change=${e=>e.stopPropagation()}
102
+ >
103
+ <button
104
+ slot="suffix"
105
+ type="button"
106
+ class="timepicker__trigger ${this._isOpen?"timepicker__trigger--active":""}"
107
+ @click=${this._togglePopup}
108
+ ?disabled=${this.disabled}
109
+ tabindex=${this.disabled?"-1":"0"}
110
+ aria-label="Saat seç"
111
+ aria-expanded=${this._isOpen?"true":"false"}
112
+ >
113
+ <ui-icon name="uil-clock" size="16"></ui-icon>
114
+ </button>
115
+ </logosphere-input>
116
+ </div>
117
+
118
+ ${this._renderPopup()}
119
+ `}};exports.TimePicker.styles=[a.css`${a.unsafeCSS(u)}`];i([t.property({type:String})],exports.TimePicker.prototype,"value",2);i([t.property({type:String})],exports.TimePicker.prototype,"label",2);i([t.property({type:String})],exports.TimePicker.prototype,"helper",2);i([t.property({type:String})],exports.TimePicker.prototype,"error",2);i([t.property({type:String})],exports.TimePicker.prototype,"placeholder",2);i([t.property({type:Boolean})],exports.TimePicker.prototype,"required",2);i([t.property({type:Boolean})],exports.TimePicker.prototype,"disabled",2);i([t.property({type:Boolean})],exports.TimePicker.prototype,"readonly",2);i([t.property({type:String})],exports.TimePicker.prototype,"size",2);i([t.property({type:String})],exports.TimePicker.prototype,"variant",2);i([t.property({attribute:!1})],exports.TimePicker.prototype,"onChange",2);i([t.state()],exports.TimePicker.prototype,"_isOpen",2);i([t.state()],exports.TimePicker.prototype,"_hour",2);i([t.state()],exports.TimePicker.prototype,"_minute",2);i([t.query(".timepicker__reference")],exports.TimePicker.prototype,"_referenceEl",2);i([t.query("[data-timepicker-popup]")],exports.TimePicker.prototype,"_popupEl",2);exports.TimePicker=i([t.customElement("logosphere-timepicker")],exports.TimePicker);
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./timepicker-Bpf2d4Nn.cjs");Object.defineProperty(exports,"TimePicker",{enumerable:!0,get:()=>e.TimePicker});
@@ -0,0 +1,4 @@
1
+ import { T as i } from "./timepicker-B9l6HN-d.js";
2
+ export {
3
+ i as TimePicker
4
+ };