@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
@@ -1,176 +0,0 @@
1
- import { LitElement as p, nothing as c, html as r, unsafeCSS as f, css as v } from "lit";
2
- import { property as b, state as h, query as _, customElement as u } from "lit/decorators.js";
3
- const y = ".tab{width:100%;font-family:var(--font-family-base)}.tab__list{display:flex;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid var(--color-border);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.tab__list::-webkit-scrollbar{display:none}.tab__button{display:inline-flex;flex-direction:row;align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);min-width:120px;position:relative;cursor:pointer;border:none;border-bottom:2px solid transparent;background:transparent;font-family:var(--font-family-base);white-space:nowrap;transition:background-color var(--transition-speed-base) var(--transition-timing),border-color var(--transition-speed-base) var(--transition-timing)}.tab__button:hover:not(.tab__button--disabled):not(.tab__button--active){background-color:var(--color-tertiary-bg)}.tab__button--active{border-bottom-color:var(--color-primary)}.tab__button--disabled{cursor:not-allowed;opacity:.4;pointer-events:none}.tab__icon{font-size:var(--font-size-xl);flex-shrink:0;color:inherit;line-height:1}.tab__content{display:flex;flex-direction:column;align-items:flex-start}.tab__label{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);color:var(--color-body-text)}.tab__label--inactive{color:var(--color-tertiary)}.tab__description{font-size:var(--font-size-xs);text-align:left;color:var(--color-tertiary)}.tab__description--active{color:var(--color-secondary)}.tab__panel{padding:var(--spacing-4);outline:none}.tab__panel--hidden{display:none}";
4
- var g = Object.defineProperty, w = Object.getOwnPropertyDescriptor, n = (e, i, t, a) => {
5
- for (var s = a > 1 ? void 0 : a ? w(i, t) : i, l = e.length - 1, d; l >= 0; l--)
6
- (d = e[l]) && (s = (a ? d(i, t, s) : d(s)) || s);
7
- return a && s && g(i, t, s), s;
8
- };
9
- let o = class extends p {
10
- constructor() {
11
- super(...arguments), this.tabs = [], this.activeTab = "", this.lazy = !0, this.variant = "default", this._focusedIndex = 0, this._renderedTabs = /* @__PURE__ */ new Set();
12
- }
13
- connectedCallback() {
14
- super.connectedCallback(), !this.activeTab && this.tabs.length > 0 && (this.activeTab = this.tabs[0].id);
15
- }
16
- willUpdate(e) {
17
- if (super.willUpdate(e), e.has("activeTab") && this.activeTab) {
18
- this._renderedTabs.add(this.activeTab);
19
- const i = this.tabs.findIndex((t) => t.id === this.activeTab);
20
- i !== -1 && (this._focusedIndex = i);
21
- }
22
- e.has("tabs") && this.tabs.length > 0 && (this.tabs.some((t) => t.id === this.activeTab) || (this.activeTab = this.tabs[0].id), this._focusedIndex = this.tabs.findIndex((t) => t.id === this.activeTab));
23
- }
24
- // ==================== EVENTS ====================
25
- handleTabClick(e, i) {
26
- if (i) return;
27
- const t = this.activeTab;
28
- this.activeTab = e, this._focusedIndex = this.tabs.findIndex((a) => a.id === e), this.dispatchEvent(
29
- new CustomEvent("tab-change", {
30
- detail: { oldTab: t, newTab: e },
31
- bubbles: !0,
32
- composed: !0
33
- })
34
- );
35
- }
36
- handleKeyDown(e) {
37
- const { tabs: i } = this;
38
- if (i.filter((s) => !s.disabled).length === 0) return;
39
- let t = this._focusedIndex;
40
- const a = this._focusedIndex;
41
- switch (e.key) {
42
- case "ArrowLeft":
43
- e.preventDefault();
44
- do
45
- t = t > 0 ? t - 1 : i.length - 1;
46
- while (i[t]?.disabled && t !== a);
47
- break;
48
- case "ArrowRight":
49
- e.preventDefault();
50
- do
51
- t = t < i.length - 1 ? t + 1 : 0;
52
- while (i[t]?.disabled && t !== a);
53
- break;
54
- case "Home":
55
- for (e.preventDefault(), t = 0; i[t]?.disabled && t < i.length - 1; ) t++;
56
- break;
57
- case "End":
58
- for (e.preventDefault(), t = i.length - 1; i[t]?.disabled && t > 0; ) t--;
59
- break;
60
- default:
61
- return;
62
- }
63
- if (t !== this._focusedIndex && !i[t]?.disabled) {
64
- const s = this.activeTab;
65
- this._focusedIndex = t, this.activeTab = i[t].id, this.updateComplete.then(() => {
66
- this.shadowRoot?.querySelector(
67
- `[role="tab"][data-tab-id="${i[t].id}"]`
68
- )?.focus();
69
- }), this.dispatchEvent(
70
- new CustomEvent("tab-change", {
71
- detail: { oldTab: s, newTab: i[t].id },
72
- bubbles: !0,
73
- composed: !0
74
- })
75
- );
76
- }
77
- }
78
- scrollTabIntoView(e) {
79
- this.updateComplete.then(() => {
80
- const i = this.shadowRoot?.querySelector(
81
- `[role="tab"][data-tab-id="${e}"]`
82
- );
83
- if (i && this.tablist) {
84
- const t = this.tablist.getBoundingClientRect(), a = i.getBoundingClientRect();
85
- a.left < t.left ? this.tablist.scrollLeft -= t.left - a.left + 16 : a.right > t.right && (this.tablist.scrollLeft += a.right - t.right + 16);
86
- }
87
- });
88
- }
89
- // ==================== RENDER ====================
90
- renderTabButton(e, i) {
91
- const t = this.activeTab === e.id, a = this._focusedIndex === i, s = [
92
- "tab__button",
93
- t ? "tab__button--active" : "",
94
- e.disabled ? "tab__button--disabled" : ""
95
- ].filter(Boolean).join(" "), l = ["tab__label", t ? "" : "tab__label--inactive"].filter(Boolean).join(" "), d = ["tab__description", t ? "tab__description--active" : ""].filter(Boolean).join(" ");
96
- return r`
97
- <button
98
- role="tab"
99
- class=${s}
100
- data-tab-id=${e.id}
101
- aria-selected=${t ? "true" : "false"}
102
- aria-controls="panel-${e.id}"
103
- tabindex=${t || a ? "0" : "-1"}
104
- ?disabled=${e.disabled}
105
- @click=${() => this.handleTabClick(e.id, e.disabled)}
106
- @focus=${() => this.scrollTabIntoView(e.id)}
107
- >
108
- ${e.icon ? r`<i class="${e.icon} tab__icon"></i>` : c}
109
- <div class="tab__content">
110
- <span class=${l}>${e.label}</span>
111
- ${e.description ? r`<span class=${d}>${e.description}</span>` : c}
112
- </div>
113
- </button>
114
- `;
115
- }
116
- renderTabPanel(e) {
117
- const i = this.activeTab === e.id;
118
- if (!(!this.lazy || this._renderedTabs.has(e.id))) return c;
119
- const a = ["tab__panel", i ? "" : "tab__panel--hidden"].filter(Boolean).join(" ");
120
- return r`
121
- <div
122
- role="tabpanel"
123
- id="panel-${e.id}"
124
- aria-labelledby="tab-${e.id}"
125
- class=${a}
126
- tabindex="0"
127
- >
128
- <slot name=${`panel-${e.id}`}>
129
- ${typeof e.content == "string" ? r`${e.content}` : c}
130
- </slot>
131
- </div>
132
- `;
133
- }
134
- render() {
135
- return r`
136
- <div class="tab">
137
- <div role="tablist" aria-label="Tabs" class="tab__list" @keydown=${this.handleKeyDown}>
138
- ${this.tabs.map((e, i) => this.renderTabButton(e, i))}
139
- </div>
140
- <div class="tab__panels">${this.tabs.map((e) => this.renderTabPanel(e))}</div>
141
- </div>
142
- `;
143
- }
144
- };
145
- o.styles = [
146
- v`
147
- ${f(y)}
148
- `
149
- ];
150
- n([
151
- b({ type: Array })
152
- ], o.prototype, "tabs", 2);
153
- n([
154
- b({ type: String })
155
- ], o.prototype, "activeTab", 2);
156
- n([
157
- b({ type: Boolean })
158
- ], o.prototype, "lazy", 2);
159
- n([
160
- b({ type: String })
161
- ], o.prototype, "variant", 2);
162
- n([
163
- h()
164
- ], o.prototype, "_focusedIndex", 2);
165
- n([
166
- h()
167
- ], o.prototype, "_renderedTabs", 2);
168
- n([
169
- _('[role="tablist"]')
170
- ], o.prototype, "tablist", 2);
171
- o = n([
172
- u("logosphere-tab")
173
- ], o);
174
- export {
175
- o as L
176
- };
@@ -1,40 +0,0 @@
1
- "use strict";const s=require("lit"),n=require("lit/decorators.js"),c=".tab{width:100%;font-family:var(--font-family-base)}.tab__list{display:flex;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid var(--color-border);scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.tab__list::-webkit-scrollbar{display:none}.tab__button{display:inline-flex;flex-direction:row;align-items:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);min-width:120px;position:relative;cursor:pointer;border:none;border-bottom:2px solid transparent;background:transparent;font-family:var(--font-family-base);white-space:nowrap;transition:background-color var(--transition-speed-base) var(--transition-timing),border-color var(--transition-speed-base) var(--transition-timing)}.tab__button:hover:not(.tab__button--disabled):not(.tab__button--active){background-color:var(--color-tertiary-bg)}.tab__button--active{border-bottom-color:var(--color-primary)}.tab__button--disabled{cursor:not-allowed;opacity:.4;pointer-events:none}.tab__icon{font-size:var(--font-size-xl);flex-shrink:0;color:inherit;line-height:1}.tab__content{display:flex;flex-direction:column;align-items:flex-start}.tab__label{font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);color:var(--color-body-text)}.tab__label--inactive{color:var(--color-tertiary)}.tab__description{font-size:var(--font-size-xs);text-align:left;color:var(--color-tertiary)}.tab__description--active{color:var(--color-secondary)}.tab__panel{padding:var(--spacing-4);outline:none}.tab__panel--hidden{display:none}";var h=Object.defineProperty,p=Object.getOwnPropertyDescriptor,r=(d,e,a,t)=>{for(var i=t>1?void 0:t?p(e,a):e,o=d.length-1,l;o>=0;o--)(l=d[o])&&(i=(t?l(e,a,i):l(i))||i);return t&&i&&h(e,a,i),i};exports.LogosphereTab=class extends s.LitElement{constructor(){super(...arguments),this.tabs=[],this.activeTab="",this.lazy=!0,this.variant="default",this._focusedIndex=0,this._renderedTabs=new Set}connectedCallback(){super.connectedCallback(),!this.activeTab&&this.tabs.length>0&&(this.activeTab=this.tabs[0].id)}willUpdate(e){if(super.willUpdate(e),e.has("activeTab")&&this.activeTab){this._renderedTabs.add(this.activeTab);const a=this.tabs.findIndex(t=>t.id===this.activeTab);a!==-1&&(this._focusedIndex=a)}e.has("tabs")&&this.tabs.length>0&&(this.tabs.some(t=>t.id===this.activeTab)||(this.activeTab=this.tabs[0].id),this._focusedIndex=this.tabs.findIndex(t=>t.id===this.activeTab))}handleTabClick(e,a){if(a)return;const t=this.activeTab;this.activeTab=e,this._focusedIndex=this.tabs.findIndex(i=>i.id===e),this.dispatchEvent(new CustomEvent("tab-change",{detail:{oldTab:t,newTab:e},bubbles:!0,composed:!0}))}handleKeyDown(e){const{tabs:a}=this;if(a.filter(o=>!o.disabled).length===0)return;let t=this._focusedIndex;const i=this._focusedIndex;switch(e.key){case"ArrowLeft":e.preventDefault();do t=t>0?t-1:a.length-1;while(a[t]?.disabled&&t!==i);break;case"ArrowRight":e.preventDefault();do t=t<a.length-1?t+1:0;while(a[t]?.disabled&&t!==i);break;case"Home":for(e.preventDefault(),t=0;a[t]?.disabled&&t<a.length-1;)t++;break;case"End":for(e.preventDefault(),t=a.length-1;a[t]?.disabled&&t>0;)t--;break;default:return}if(t!==this._focusedIndex&&!a[t]?.disabled){const o=this.activeTab;this._focusedIndex=t,this.activeTab=a[t].id,this.updateComplete.then(()=>{this.shadowRoot?.querySelector(`[role="tab"][data-tab-id="${a[t].id}"]`)?.focus()}),this.dispatchEvent(new CustomEvent("tab-change",{detail:{oldTab:o,newTab:a[t].id},bubbles:!0,composed:!0}))}}scrollTabIntoView(e){this.updateComplete.then(()=>{const a=this.shadowRoot?.querySelector(`[role="tab"][data-tab-id="${e}"]`);if(a&&this.tablist){const t=this.tablist.getBoundingClientRect(),i=a.getBoundingClientRect();i.left<t.left?this.tablist.scrollLeft-=t.left-i.left+16:i.right>t.right&&(this.tablist.scrollLeft+=i.right-t.right+16)}})}renderTabButton(e,a){const t=this.activeTab===e.id,i=this._focusedIndex===a,o=["tab__button",t?"tab__button--active":"",e.disabled?"tab__button--disabled":""].filter(Boolean).join(" "),l=["tab__label",t?"":"tab__label--inactive"].filter(Boolean).join(" "),b=["tab__description",t?"tab__description--active":""].filter(Boolean).join(" ");return s.html`
2
- <button
3
- role="tab"
4
- class=${o}
5
- data-tab-id=${e.id}
6
- aria-selected=${t?"true":"false"}
7
- aria-controls="panel-${e.id}"
8
- tabindex=${t||i?"0":"-1"}
9
- ?disabled=${e.disabled}
10
- @click=${()=>this.handleTabClick(e.id,e.disabled)}
11
- @focus=${()=>this.scrollTabIntoView(e.id)}
12
- >
13
- ${e.icon?s.html`<i class="${e.icon} tab__icon"></i>`:s.nothing}
14
- <div class="tab__content">
15
- <span class=${l}>${e.label}</span>
16
- ${e.description?s.html`<span class=${b}>${e.description}</span>`:s.nothing}
17
- </div>
18
- </button>
19
- `}renderTabPanel(e){const a=this.activeTab===e.id;if(!(!this.lazy||this._renderedTabs.has(e.id)))return s.nothing;const i=["tab__panel",a?"":"tab__panel--hidden"].filter(Boolean).join(" ");return s.html`
20
- <div
21
- role="tabpanel"
22
- id="panel-${e.id}"
23
- aria-labelledby="tab-${e.id}"
24
- class=${i}
25
- tabindex="0"
26
- >
27
- <slot name=${`panel-${e.id}`}>
28
- ${typeof e.content=="string"?s.html`${e.content}`:s.nothing}
29
- </slot>
30
- </div>
31
- `}render(){return s.html`
32
- <div class="tab">
33
- <div role="tablist" aria-label="Tabs" class="tab__list" @keydown=${this.handleKeyDown}>
34
- ${this.tabs.map((e,a)=>this.renderTabButton(e,a))}
35
- </div>
36
- <div class="tab__panels">${this.tabs.map(e=>this.renderTabPanel(e))}</div>
37
- </div>
38
- `}};exports.LogosphereTab.styles=[s.css`
39
- ${s.unsafeCSS(c)}
40
- `];r([n.property({type:Array})],exports.LogosphereTab.prototype,"tabs",2);r([n.property({type:String})],exports.LogosphereTab.prototype,"activeTab",2);r([n.property({type:Boolean})],exports.LogosphereTab.prototype,"lazy",2);r([n.property({type:String})],exports.LogosphereTab.prototype,"variant",2);r([n.state()],exports.LogosphereTab.prototype,"_focusedIndex",2);r([n.state()],exports.LogosphereTab.prototype,"_renderedTabs",2);r([n.query('[role="tablist"]')],exports.LogosphereTab.prototype,"tablist",2);exports.LogosphereTab=r([n.customElement("logosphere-tab")],exports.LogosphereTab);
@@ -1,44 +0,0 @@
1
- "use strict";const i=require("lit"),t=require("lit/decorators.js"),p=require("lit/directives/live.js"),u=".textarea__field{width:100%;background:transparent;border:none;outline:none;font-size:var(--font-size-sm);font-family:var(--font-family-base);color:var(--color-body-text);box-sizing:border-box;line-height:1.5}.textarea__field::placeholder{color:var(--color-tertiary)}.textarea__field:disabled{cursor:not-allowed}.textarea__field--resize-none{resize:none}.textarea__field--resize-vertical{resize:vertical}.textarea__field--resize-horizontal{resize:horizontal}.textarea__field--resize-both{resize:both}.textarea__field--auto-resize{resize:none;overflow:hidden}.textarea__clear-btn{border:none;background:transparent;color:var(--color-gray-400);cursor:pointer;padding:0;display:inline-flex;align-items:flex-start;align-self:flex-start;margin-top:var(--spacing-1);outline:none;flex-shrink:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.textarea__clear-btn:hover{color:var(--color-gray-600)}";var d=Object.defineProperty,y=Object.getOwnPropertyDescriptor,r=(l,e,a,o)=>{for(var s=o>1?void 0:o?y(e,a):e,n=l.length-1,h;n>=0;n--)(h=l[n])&&(s=(o?h(e,a,s):h(s))||s);return o&&s&&d(e,a,s),s};exports.TextArea=class extends i.LitElement{constructor(){super(...arguments),this.value="",this.placeholder="",this.name="",this.autocomplete="",this.rows=3,this.wrap="soft",this.resize="vertical",this.autoResize=!1,this.size="default",this.variant="default",this.showClear=!1,this.label="",this.helper="",this.error="",this.required=!1,this.disabled=!1,this.readonly=!1,this._internalError="",this.handleInput=e=>{const a=e.target;this.value=a.value,this.autoResize&&this.adjustHeight(),this._internalError&&(this._internalError="",this._textareaElement.setCustomValidity("")),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleChange=e=>{const a=e.target;this.value=a.value,a.checkValidity()||(this._internalError=a.validationMessage),this.dispatchEvent(new CustomEvent("change",{bubbles:!0,composed:!0,detail:{value:this.value,originalEvent:e}}))},this.handleKeyDown=e=>{this.dispatchEvent(new CustomEvent("keydown",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleKeyUp=e=>{this.dispatchEvent(new CustomEvent("keyup",{bubbles:!0,composed:!0,detail:{key:e.key,originalEvent:e}}))},this.handleClear=()=>{this.value="",this._textareaElement&&(this._textareaElement.value="",this.autoResize&&this.adjustHeight()),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:"",originalEvent:null}}))}}get textareaElement(){return this._textareaElement}focus(){this._textareaElement?.focus()}blur(){this._textareaElement?.blur()}select(){this._textareaElement?.select()}setSelectionRange(e,a,o){this._textareaElement?.setSelectionRange(e,a,o)}checkValidity(){return this._textareaElement?.checkValidity()??!0}reportValidity(){return this._textareaElement?.reportValidity()??!0}setCustomValidity(e){this._textareaElement?.setCustomValidity(e),this._internalError=e,this.requestUpdate()}adjustHeight(){!this.autoResize||!this._textareaElement||(this._textareaElement.style.height="auto",this._textareaElement.style.height=`${this._textareaElement.scrollHeight}px`)}updated(e){super.updated(e),e.has("value")&&this.autoResize&&this.adjustHeight()}getResizeClass(){return this.autoResize?"textarea__field--auto-resize":{none:"textarea__field--resize-none",vertical:"textarea__field--resize-vertical",horizontal:"textarea__field--resize-horizontal",both:"textarea__field--resize-both"}[this.resize]}render(){const e=this.error||this._internalError,a=this.showClear&&this.value&&!this.disabled&&!this.readonly,o=`textarea__field ${this.getResizeClass()}`;return i.html`
2
- <logosphere-formfield
3
- .label=${this.label}
4
- .helper=${this.helper}
5
- .error=${e}
6
- .required=${this.required}
7
- .disabled=${this.disabled}
8
- .readonly=${this.readonly}
9
- .placeholder=${this.placeholder}
10
- .size=${this.size}
11
- .variant=${this.variant}
12
- >
13
- <textarea
14
- class="${o}"
15
- .value=${p.live(this.value)}
16
- placeholder=${this.placeholder||i.nothing}
17
- name=${this.name||i.nothing}
18
- autocomplete=${this.autocomplete||i.nothing}
19
- ?required=${this.required}
20
- ?disabled=${this.disabled}
21
- ?readonly=${this.readonly}
22
- minlength=${this.minlength??i.nothing}
23
- maxlength=${this.maxlength??i.nothing}
24
- rows=${this.rows}
25
- cols=${this.cols??i.nothing}
26
- wrap=${this.wrap}
27
- @input=${this.handleInput}
28
- @change=${this.handleChange}
29
- @keydown=${this.handleKeyDown}
30
- @keyup=${this.handleKeyUp}
31
- ></textarea>
32
- ${a?i.html`
33
- <button
34
- type="button"
35
- slot="suffix"
36
- class="textarea__clear-btn"
37
- @click=${this.handleClear}
38
- tabindex="-1"
39
- >
40
- <ui-icon name="uil-times" size="14"></ui-icon>
41
- </button>
42
- `:i.nothing}
43
- </logosphere-formfield>
44
- `}};exports.TextArea.styles=[i.css`${i.unsafeCSS(u)}`];r([t.query("textarea")],exports.TextArea.prototype,"_textareaElement",2);r([t.property({type:String})],exports.TextArea.prototype,"value",2);r([t.property({type:String})],exports.TextArea.prototype,"placeholder",2);r([t.property({type:String})],exports.TextArea.prototype,"name",2);r([t.property({type:String})],exports.TextArea.prototype,"autocomplete",2);r([t.property({type:Number})],exports.TextArea.prototype,"minlength",2);r([t.property({type:Number})],exports.TextArea.prototype,"maxlength",2);r([t.property({type:Number})],exports.TextArea.prototype,"rows",2);r([t.property({type:Number})],exports.TextArea.prototype,"cols",2);r([t.property({type:String})],exports.TextArea.prototype,"wrap",2);r([t.property({type:String})],exports.TextArea.prototype,"resize",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"autoResize",2);r([t.property({type:String})],exports.TextArea.prototype,"size",2);r([t.property({type:String})],exports.TextArea.prototype,"variant",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"showClear",2);r([t.property({type:String})],exports.TextArea.prototype,"label",2);r([t.property({type:String})],exports.TextArea.prototype,"helper",2);r([t.property({type:String})],exports.TextArea.prototype,"error",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"required",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"disabled",2);r([t.property({type:Boolean})],exports.TextArea.prototype,"readonly",2);r([t.state()],exports.TextArea.prototype,"_internalError",2);exports.TextArea=r([t.customElement("logosphere-textarea")],exports.TextArea);
@@ -1,204 +0,0 @@
1
- import { LitElement as d, nothing as l, html as u, unsafeCSS as y, css as c } from "lit";
2
- import { query as m, property as a, state as _, customElement as v } from "lit/decorators.js";
3
- import { live as f } from "lit/directives/live.js";
4
- const b = ".textarea__field{width:100%;background:transparent;border:none;outline:none;font-size:var(--font-size-sm);font-family:var(--font-family-base);color:var(--color-body-text);box-sizing:border-box;line-height:1.5}.textarea__field::placeholder{color:var(--color-tertiary)}.textarea__field:disabled{cursor:not-allowed}.textarea__field--resize-none{resize:none}.textarea__field--resize-vertical{resize:vertical}.textarea__field--resize-horizontal{resize:horizontal}.textarea__field--resize-both{resize:both}.textarea__field--auto-resize{resize:none;overflow:hidden}.textarea__clear-btn{border:none;background:transparent;color:var(--color-gray-400);cursor:pointer;padding:0;display:inline-flex;align-items:flex-start;align-self:flex-start;margin-top:var(--spacing-1);outline:none;flex-shrink:0;transition:color var(--transition-speed-fast) var(--transition-timing)}.textarea__clear-btn:hover{color:var(--color-gray-600)}";
5
- var x = Object.defineProperty, g = Object.getOwnPropertyDescriptor, r = (e, i, s, n) => {
6
- for (var o = n > 1 ? void 0 : n ? g(i, s) : i, h = e.length - 1, p; h >= 0; h--)
7
- (p = e[h]) && (o = (n ? p(i, s, o) : p(o)) || o);
8
- return n && o && x(i, s, o), o;
9
- };
10
- let t = class extends d {
11
- constructor() {
12
- super(...arguments), this.value = "", this.placeholder = "", this.name = "", this.autocomplete = "", this.rows = 3, this.wrap = "soft", this.resize = "vertical", this.autoResize = !1, this.size = "default", this.variant = "default", this.showClear = !1, this.label = "", this.helper = "", this.error = "", this.required = !1, this.disabled = !1, this.readonly = !1, this._internalError = "", this.handleInput = (e) => {
13
- const i = e.target;
14
- this.value = i.value, this.autoResize && this.adjustHeight(), this._internalError && (this._internalError = "", this._textareaElement.setCustomValidity("")), this.dispatchEvent(new CustomEvent("input", {
15
- bubbles: !0,
16
- composed: !0,
17
- detail: { value: this.value, originalEvent: e }
18
- }));
19
- }, this.handleChange = (e) => {
20
- const i = e.target;
21
- this.value = i.value, i.checkValidity() || (this._internalError = i.validationMessage), this.dispatchEvent(new CustomEvent("change", {
22
- bubbles: !0,
23
- composed: !0,
24
- detail: { value: this.value, originalEvent: e }
25
- }));
26
- }, this.handleKeyDown = (e) => {
27
- this.dispatchEvent(new CustomEvent("keydown", {
28
- bubbles: !0,
29
- composed: !0,
30
- detail: { key: e.key, originalEvent: e }
31
- }));
32
- }, this.handleKeyUp = (e) => {
33
- this.dispatchEvent(new CustomEvent("keyup", {
34
- bubbles: !0,
35
- composed: !0,
36
- detail: { key: e.key, originalEvent: e }
37
- }));
38
- }, this.handleClear = () => {
39
- this.value = "", this._textareaElement && (this._textareaElement.value = "", this.autoResize && this.adjustHeight()), this.dispatchEvent(new CustomEvent("clear", { bubbles: !0, composed: !0 })), this.dispatchEvent(new CustomEvent("input", {
40
- bubbles: !0,
41
- composed: !0,
42
- detail: { value: "", originalEvent: null }
43
- }));
44
- };
45
- }
46
- get textareaElement() {
47
- return this._textareaElement;
48
- }
49
- focus() {
50
- this._textareaElement?.focus();
51
- }
52
- blur() {
53
- this._textareaElement?.blur();
54
- }
55
- select() {
56
- this._textareaElement?.select();
57
- }
58
- setSelectionRange(e, i, s) {
59
- this._textareaElement?.setSelectionRange(e, i, s);
60
- }
61
- checkValidity() {
62
- return this._textareaElement?.checkValidity() ?? !0;
63
- }
64
- reportValidity() {
65
- return this._textareaElement?.reportValidity() ?? !0;
66
- }
67
- setCustomValidity(e) {
68
- this._textareaElement?.setCustomValidity(e), this._internalError = e, this.requestUpdate();
69
- }
70
- adjustHeight() {
71
- !this.autoResize || !this._textareaElement || (this._textareaElement.style.height = "auto", this._textareaElement.style.height = `${this._textareaElement.scrollHeight}px`);
72
- }
73
- updated(e) {
74
- super.updated(e), e.has("value") && this.autoResize && this.adjustHeight();
75
- }
76
- getResizeClass() {
77
- return this.autoResize ? "textarea__field--auto-resize" : {
78
- none: "textarea__field--resize-none",
79
- vertical: "textarea__field--resize-vertical",
80
- horizontal: "textarea__field--resize-horizontal",
81
- both: "textarea__field--resize-both"
82
- }[this.resize];
83
- }
84
- render() {
85
- const e = this.error || this._internalError, i = this.showClear && this.value && !this.disabled && !this.readonly, s = `textarea__field ${this.getResizeClass()}`;
86
- return u`
87
- <logosphere-formfield
88
- .label=${this.label}
89
- .helper=${this.helper}
90
- .error=${e}
91
- .required=${this.required}
92
- .disabled=${this.disabled}
93
- .readonly=${this.readonly}
94
- .placeholder=${this.placeholder}
95
- .size=${this.size}
96
- .variant=${this.variant}
97
- >
98
- <textarea
99
- class="${s}"
100
- .value=${f(this.value)}
101
- placeholder=${this.placeholder || l}
102
- name=${this.name || l}
103
- autocomplete=${this.autocomplete || l}
104
- ?required=${this.required}
105
- ?disabled=${this.disabled}
106
- ?readonly=${this.readonly}
107
- minlength=${this.minlength ?? l}
108
- maxlength=${this.maxlength ?? l}
109
- rows=${this.rows}
110
- cols=${this.cols ?? l}
111
- wrap=${this.wrap}
112
- @input=${this.handleInput}
113
- @change=${this.handleChange}
114
- @keydown=${this.handleKeyDown}
115
- @keyup=${this.handleKeyUp}
116
- ></textarea>
117
- ${i ? u`
118
- <button
119
- type="button"
120
- slot="suffix"
121
- class="textarea__clear-btn"
122
- @click=${this.handleClear}
123
- tabindex="-1"
124
- >
125
- <ui-icon name="uil-times" size="14"></ui-icon>
126
- </button>
127
- ` : l}
128
- </logosphere-formfield>
129
- `;
130
- }
131
- };
132
- t.styles = [c`${y(b)}`];
133
- r([
134
- m("textarea")
135
- ], t.prototype, "_textareaElement", 2);
136
- r([
137
- a({ type: String })
138
- ], t.prototype, "value", 2);
139
- r([
140
- a({ type: String })
141
- ], t.prototype, "placeholder", 2);
142
- r([
143
- a({ type: String })
144
- ], t.prototype, "name", 2);
145
- r([
146
- a({ type: String })
147
- ], t.prototype, "autocomplete", 2);
148
- r([
149
- a({ type: Number })
150
- ], t.prototype, "minlength", 2);
151
- r([
152
- a({ type: Number })
153
- ], t.prototype, "maxlength", 2);
154
- r([
155
- a({ type: Number })
156
- ], t.prototype, "rows", 2);
157
- r([
158
- a({ type: Number })
159
- ], t.prototype, "cols", 2);
160
- r([
161
- a({ type: String })
162
- ], t.prototype, "wrap", 2);
163
- r([
164
- a({ type: String })
165
- ], t.prototype, "resize", 2);
166
- r([
167
- a({ type: Boolean })
168
- ], t.prototype, "autoResize", 2);
169
- r([
170
- a({ type: String })
171
- ], t.prototype, "size", 2);
172
- r([
173
- a({ type: String })
174
- ], t.prototype, "variant", 2);
175
- r([
176
- a({ type: Boolean })
177
- ], t.prototype, "showClear", 2);
178
- r([
179
- a({ type: String })
180
- ], t.prototype, "label", 2);
181
- r([
182
- a({ type: String })
183
- ], t.prototype, "helper", 2);
184
- r([
185
- a({ type: String })
186
- ], t.prototype, "error", 2);
187
- r([
188
- a({ type: Boolean })
189
- ], t.prototype, "required", 2);
190
- r([
191
- a({ type: Boolean })
192
- ], t.prototype, "disabled", 2);
193
- r([
194
- a({ type: Boolean })
195
- ], t.prototype, "readonly", 2);
196
- r([
197
- _()
198
- ], t.prototype, "_internalError", 2);
199
- t = r([
200
- v("logosphere-textarea")
201
- ], t);
202
- export {
203
- t as T
204
- };