@deepfuture/dui-components 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/accordion/accordion-context.d.ts +15 -0
  2. package/accordion/accordion-context.js +3 -0
  3. package/accordion/accordion-item.d.ts +22 -0
  4. package/accordion/accordion-item.js +254 -0
  5. package/accordion/accordion.d.ts +20 -0
  6. package/accordion/accordion.js +185 -0
  7. package/accordion/index.d.ts +3 -0
  8. package/accordion/index.js +2 -0
  9. package/accordion/register.d.ts +1 -0
  10. package/accordion/register.js +8 -0
  11. package/alert-dialog/alert-dialog-close.d.ts +15 -0
  12. package/alert-dialog/alert-dialog-close.js +35 -0
  13. package/alert-dialog/alert-dialog-context.d.ts +13 -0
  14. package/alert-dialog/alert-dialog-context.js +3 -0
  15. package/alert-dialog/alert-dialog-popup.d.ts +34 -0
  16. package/alert-dialog/alert-dialog-popup.js +260 -0
  17. package/alert-dialog/alert-dialog-trigger.d.ts +15 -0
  18. package/alert-dialog/alert-dialog-trigger.js +52 -0
  19. package/alert-dialog/alert-dialog.d.ts +30 -0
  20. package/alert-dialog/alert-dialog.js +97 -0
  21. package/alert-dialog/index.d.ts +6 -0
  22. package/alert-dialog/index.js +4 -0
  23. package/alert-dialog/register.d.ts +1 -0
  24. package/alert-dialog/register.js +16 -0
  25. package/all.d.ts +86 -0
  26. package/all.js +191 -0
  27. package/avatar/avatar.d.ts +41 -0
  28. package/avatar/avatar.js +188 -0
  29. package/avatar/index.d.ts +2 -0
  30. package/avatar/index.js +1 -0
  31. package/avatar/register.d.ts +1 -0
  32. package/avatar/register.js +4 -0
  33. package/badge/badge.d.ts +14 -0
  34. package/badge/badge.js +43 -0
  35. package/badge/index.d.ts +2 -0
  36. package/badge/index.js +1 -0
  37. package/badge/register.d.ts +1 -0
  38. package/badge/register.js +4 -0
  39. package/breadcrumb/breadcrumb-ellipsis.d.ts +14 -0
  40. package/breadcrumb/breadcrumb-ellipsis.js +39 -0
  41. package/breadcrumb/breadcrumb-item.d.ts +13 -0
  42. package/breadcrumb/breadcrumb-item.js +31 -0
  43. package/breadcrumb/breadcrumb-link.d.ts +14 -0
  44. package/breadcrumb/breadcrumb-link.js +32 -0
  45. package/breadcrumb/breadcrumb-page.d.ts +13 -0
  46. package/breadcrumb/breadcrumb-page.js +36 -0
  47. package/breadcrumb/breadcrumb-separator.d.ts +14 -0
  48. package/breadcrumb/breadcrumb-separator.js +36 -0
  49. package/breadcrumb/breadcrumb.d.ts +14 -0
  50. package/breadcrumb/breadcrumb.js +38 -0
  51. package/breadcrumb/index.d.ts +6 -0
  52. package/breadcrumb/index.js +6 -0
  53. package/breadcrumb/register.d.ts +1 -0
  54. package/breadcrumb/register.js +14 -0
  55. package/button/button.d.ts +38 -0
  56. package/button/button.js +143 -0
  57. package/button/index.d.ts +2 -0
  58. package/button/index.js +1 -0
  59. package/button/register.d.ts +1 -0
  60. package/button/register.js +4 -0
  61. package/calendar/calendar.d.ts +33 -0
  62. package/calendar/calendar.js +428 -0
  63. package/calendar/index.d.ts +1 -0
  64. package/calendar/index.js +1 -0
  65. package/calendar/register.d.ts +1 -0
  66. package/calendar/register.js +4 -0
  67. package/center/center.d.ts +14 -0
  68. package/center/center.js +37 -0
  69. package/center/index.d.ts +1 -0
  70. package/center/index.js +1 -0
  71. package/center/register.d.ts +1 -0
  72. package/center/register.js +4 -0
  73. package/checkbox/checkbox-group-context.d.ts +11 -0
  74. package/checkbox/checkbox-group-context.js +3 -0
  75. package/checkbox/checkbox-group.d.ts +34 -0
  76. package/checkbox/checkbox-group.js +128 -0
  77. package/checkbox/checkbox.d.ts +46 -0
  78. package/checkbox/checkbox.js +314 -0
  79. package/checkbox/index.d.ts +3 -0
  80. package/checkbox/index.js +2 -0
  81. package/checkbox/register.d.ts +1 -0
  82. package/checkbox/register.js +8 -0
  83. package/collapsible/collapsible.d.ts +22 -0
  84. package/collapsible/collapsible.js +227 -0
  85. package/collapsible/index.d.ts +1 -0
  86. package/collapsible/index.js +1 -0
  87. package/collapsible/register.d.ts +1 -0
  88. package/collapsible/register.js +4 -0
  89. package/combobox/combobox.d.ts +46 -0
  90. package/combobox/combobox.js +524 -0
  91. package/combobox/index.d.ts +2 -0
  92. package/combobox/index.js +1 -0
  93. package/combobox/register.d.ts +1 -0
  94. package/combobox/register.js +4 -0
  95. package/command/command-context.d.ts +30 -0
  96. package/command/command-context.js +3 -0
  97. package/command/command-empty.d.ts +10 -0
  98. package/command/command-empty.js +50 -0
  99. package/command/command-group.d.ts +15 -0
  100. package/command/command-group.js +79 -0
  101. package/command/command-input.d.ts +13 -0
  102. package/command/command-input.js +106 -0
  103. package/command/command-item.d.ts +20 -0
  104. package/command/command-item.js +175 -0
  105. package/command/command-list.d.ts +9 -0
  106. package/command/command-list.js +43 -0
  107. package/command/command-score.d.ts +6 -0
  108. package/command/command-score.js +31 -0
  109. package/command/command-separator.d.ts +7 -0
  110. package/command/command-separator.js +15 -0
  111. package/command/command-shortcut.d.ts +7 -0
  112. package/command/command-shortcut.js +16 -0
  113. package/command/command.d.ts +25 -0
  114. package/command/command.js +278 -0
  115. package/command/index.d.ts +10 -0
  116. package/command/index.js +9 -0
  117. package/command/register.d.ts +1 -0
  118. package/command/register.js +22 -0
  119. package/data-table/data-table.d.ts +59 -0
  120. package/data-table/data-table.js +416 -0
  121. package/data-table/index.d.ts +2 -0
  122. package/data-table/index.js +1 -0
  123. package/data-table/register.d.ts +1 -0
  124. package/data-table/register.js +4 -0
  125. package/dialog/dialog-close.d.ts +15 -0
  126. package/dialog/dialog-close.js +35 -0
  127. package/dialog/dialog-context.d.ts +13 -0
  128. package/dialog/dialog-context.js +3 -0
  129. package/dialog/dialog-popup.d.ts +36 -0
  130. package/dialog/dialog-popup.js +277 -0
  131. package/dialog/dialog-trigger.d.ts +15 -0
  132. package/dialog/dialog-trigger.js +52 -0
  133. package/dialog/dialog.d.ts +30 -0
  134. package/dialog/dialog.js +97 -0
  135. package/dialog/index.d.ts +6 -0
  136. package/dialog/index.js +4 -0
  137. package/dialog/register.d.ts +1 -0
  138. package/dialog/register.js +16 -0
  139. package/dropzone/dropzone.d.ts +74 -0
  140. package/dropzone/dropzone.js +357 -0
  141. package/dropzone/index.d.ts +2 -0
  142. package/dropzone/index.js +1 -0
  143. package/dropzone/register.d.ts +1 -0
  144. package/dropzone/register.js +4 -0
  145. package/field/field-context.d.ts +20 -0
  146. package/field/field-context.js +2 -0
  147. package/field/index.d.ts +2 -0
  148. package/field/index.js +1 -0
  149. package/global.d.ts +189 -0
  150. package/hstack/hstack.d.ts +25 -0
  151. package/hstack/hstack.js +141 -0
  152. package/hstack/index.d.ts +2 -0
  153. package/hstack/index.js +1 -0
  154. package/hstack/register.d.ts +1 -0
  155. package/hstack/register.js +4 -0
  156. package/icon/icon.d.ts +16 -0
  157. package/icon/icon.js +34 -0
  158. package/icon/index.d.ts +1 -0
  159. package/icon/index.js +1 -0
  160. package/icon/register.d.ts +1 -0
  161. package/icon/register.js +4 -0
  162. package/input/index.d.ts +1 -0
  163. package/input/index.js +1 -0
  164. package/input/input.d.ts +47 -0
  165. package/input/input.js +205 -0
  166. package/input/register.d.ts +1 -0
  167. package/input/register.js +4 -0
  168. package/link/index.d.ts +1 -0
  169. package/link/index.js +1 -0
  170. package/link/link.d.ts +27 -0
  171. package/link/link.js +57 -0
  172. package/link/register.d.ts +1 -0
  173. package/link/register.js +4 -0
  174. package/menu/index.d.ts +2 -0
  175. package/menu/index.js +2 -0
  176. package/menu/menu-item.d.ts +17 -0
  177. package/menu/menu-item.js +62 -0
  178. package/menu/menu.d.ts +15 -0
  179. package/menu/menu.js +228 -0
  180. package/menu/register.d.ts +1 -0
  181. package/menu/register.js +8 -0
  182. package/menubar/index.d.ts +2 -0
  183. package/menubar/index.js +1 -0
  184. package/menubar/menubar-context.d.ts +9 -0
  185. package/menubar/menubar-context.js +2 -0
  186. package/menubar/menubar.d.ts +19 -0
  187. package/menubar/menubar.js +130 -0
  188. package/menubar/register.d.ts +1 -0
  189. package/menubar/register.js +4 -0
  190. package/number-field/index.d.ts +1 -0
  191. package/number-field/index.js +1 -0
  192. package/number-field/number-field.d.ts +34 -0
  193. package/number-field/number-field.js +326 -0
  194. package/number-field/register.d.ts +1 -0
  195. package/number-field/register.js +4 -0
  196. package/package.json +217 -0
  197. package/page-inset/index.d.ts +1 -0
  198. package/page-inset/index.js +1 -0
  199. package/page-inset/page-inset.d.ts +28 -0
  200. package/page-inset/page-inset.js +103 -0
  201. package/page-inset/register.d.ts +1 -0
  202. package/page-inset/register.js +4 -0
  203. package/popover/index.d.ts +6 -0
  204. package/popover/index.js +4 -0
  205. package/popover/popover-close.d.ts +13 -0
  206. package/popover/popover-close.js +33 -0
  207. package/popover/popover-context.d.ts +17 -0
  208. package/popover/popover-context.js +3 -0
  209. package/popover/popover-popup.d.ts +20 -0
  210. package/popover/popover-popup.js +176 -0
  211. package/popover/popover-trigger.d.ts +13 -0
  212. package/popover/popover-trigger.js +57 -0
  213. package/popover/popover.d.ts +30 -0
  214. package/popover/popover.js +140 -0
  215. package/popover/register.d.ts +1 -0
  216. package/popover/register.js +16 -0
  217. package/portal/index.d.ts +2 -0
  218. package/portal/index.js +1 -0
  219. package/portal/portal.d.ts +29 -0
  220. package/portal/portal.js +115 -0
  221. package/portal/register.d.ts +1 -0
  222. package/portal/register.js +4 -0
  223. package/preview-card/index.d.ts +5 -0
  224. package/preview-card/index.js +3 -0
  225. package/preview-card/preview-card-context.d.ts +16 -0
  226. package/preview-card/preview-card-context.js +3 -0
  227. package/preview-card/preview-card-popup.d.ts +16 -0
  228. package/preview-card/preview-card-popup.js +167 -0
  229. package/preview-card/preview-card-trigger.d.ts +13 -0
  230. package/preview-card/preview-card-trigger.js +75 -0
  231. package/preview-card/preview-card.d.ts +34 -0
  232. package/preview-card/preview-card.js +164 -0
  233. package/preview-card/register.d.ts +1 -0
  234. package/preview-card/register.js +12 -0
  235. package/progress/index.d.ts +1 -0
  236. package/progress/index.js +1 -0
  237. package/progress/progress.d.ts +19 -0
  238. package/progress/progress.js +94 -0
  239. package/progress/register.d.ts +1 -0
  240. package/progress/register.js +4 -0
  241. package/radio/index.d.ts +3 -0
  242. package/radio/index.js +2 -0
  243. package/radio/radio-group-context.d.ts +11 -0
  244. package/radio/radio-group-context.js +2 -0
  245. package/radio/radio-group.d.ts +37 -0
  246. package/radio/radio-group.js +135 -0
  247. package/radio/radio.d.ts +27 -0
  248. package/radio/radio.js +204 -0
  249. package/radio/register.d.ts +1 -0
  250. package/radio/register.js +8 -0
  251. package/scroll-area/index.d.ts +1 -0
  252. package/scroll-area/index.js +1 -0
  253. package/scroll-area/register.d.ts +1 -0
  254. package/scroll-area/register.js +4 -0
  255. package/scroll-area/scroll-area.d.ts +38 -0
  256. package/scroll-area/scroll-area.js +453 -0
  257. package/select/index.d.ts +2 -0
  258. package/select/index.js +1 -0
  259. package/select/register.d.ts +1 -0
  260. package/select/register.js +4 -0
  261. package/select/select.d.ts +36 -0
  262. package/select/select.js +404 -0
  263. package/separator/index.d.ts +1 -0
  264. package/separator/index.js +1 -0
  265. package/separator/register.d.ts +1 -0
  266. package/separator/register.js +4 -0
  267. package/separator/separator.d.ts +12 -0
  268. package/separator/separator.js +50 -0
  269. package/sidebar/index.d.ts +16 -0
  270. package/sidebar/index.js +13 -0
  271. package/sidebar/register.d.ts +1 -0
  272. package/sidebar/register.js +52 -0
  273. package/sidebar/sidebar-content.d.ts +14 -0
  274. package/sidebar/sidebar-content.js +30 -0
  275. package/sidebar/sidebar-context.d.ts +15 -0
  276. package/sidebar/sidebar-context.js +3 -0
  277. package/sidebar/sidebar-footer.d.ts +12 -0
  278. package/sidebar/sidebar-footer.js +21 -0
  279. package/sidebar/sidebar-group-label.d.ts +17 -0
  280. package/sidebar/sidebar-group-label.js +49 -0
  281. package/sidebar/sidebar-group.d.ts +15 -0
  282. package/sidebar/sidebar-group.js +29 -0
  283. package/sidebar/sidebar-header.d.ts +12 -0
  284. package/sidebar/sidebar-header.js +21 -0
  285. package/sidebar/sidebar-inset.d.ts +15 -0
  286. package/sidebar/sidebar-inset.js +29 -0
  287. package/sidebar/sidebar-menu-button.d.ts +31 -0
  288. package/sidebar/sidebar-menu-button.js +201 -0
  289. package/sidebar/sidebar-menu-item.d.ts +12 -0
  290. package/sidebar/sidebar-menu-item.js +20 -0
  291. package/sidebar/sidebar-menu.d.ts +14 -0
  292. package/sidebar/sidebar-menu.js +30 -0
  293. package/sidebar/sidebar-provider.d.ts +34 -0
  294. package/sidebar/sidebar-provider.js +157 -0
  295. package/sidebar/sidebar-separator.d.ts +12 -0
  296. package/sidebar/sidebar-separator.js +24 -0
  297. package/sidebar/sidebar-trigger.d.ts +16 -0
  298. package/sidebar/sidebar-trigger.js +50 -0
  299. package/sidebar/sidebar.d.ts +21 -0
  300. package/sidebar/sidebar.js +228 -0
  301. package/slider/index.d.ts +1 -0
  302. package/slider/index.js +1 -0
  303. package/slider/register.d.ts +1 -0
  304. package/slider/register.js +4 -0
  305. package/slider/slider.d.ts +37 -0
  306. package/slider/slider.js +268 -0
  307. package/spinner/index.d.ts +1 -0
  308. package/spinner/index.js +1 -0
  309. package/spinner/register.d.ts +1 -0
  310. package/spinner/register.js +4 -0
  311. package/spinner/spinner.d.ts +18 -0
  312. package/spinner/spinner.js +138 -0
  313. package/switch/index.d.ts +1 -0
  314. package/switch/index.js +1 -0
  315. package/switch/register.d.ts +1 -0
  316. package/switch/register.js +4 -0
  317. package/switch/switch.d.ts +29 -0
  318. package/switch/switch.js +201 -0
  319. package/tabs/index.d.ts +6 -0
  320. package/tabs/index.js +5 -0
  321. package/tabs/register.d.ts +1 -0
  322. package/tabs/register.js +10 -0
  323. package/tabs/tab.d.ts +16 -0
  324. package/tabs/tab.js +98 -0
  325. package/tabs/tabs-context.d.ts +8 -0
  326. package/tabs/tabs-context.js +2 -0
  327. package/tabs/tabs-indicator.d.ts +11 -0
  328. package/tabs/tabs-indicator.js +27 -0
  329. package/tabs/tabs-list.d.ts +17 -0
  330. package/tabs/tabs-list.js +85 -0
  331. package/tabs/tabs-panel.d.ts +18 -0
  332. package/tabs/tabs-panel.js +85 -0
  333. package/tabs/tabs.d.ts +24 -0
  334. package/tabs/tabs.js +111 -0
  335. package/textarea/index.d.ts +2 -0
  336. package/textarea/index.js +1 -0
  337. package/textarea/register.d.ts +1 -0
  338. package/textarea/register.js +4 -0
  339. package/textarea/textarea.d.ts +37 -0
  340. package/textarea/textarea.js +170 -0
  341. package/toggle/index.d.ts +3 -0
  342. package/toggle/index.js +2 -0
  343. package/toggle/register.d.ts +1 -0
  344. package/toggle/register.js +8 -0
  345. package/toggle/toggle-group-context.d.ts +9 -0
  346. package/toggle/toggle-group-context.js +2 -0
  347. package/toggle/toggle-group.d.ts +27 -0
  348. package/toggle/toggle-group.js +163 -0
  349. package/toggle/toggle.d.ts +25 -0
  350. package/toggle/toggle.js +124 -0
  351. package/toolbar/index.d.ts +1 -0
  352. package/toolbar/index.js +1 -0
  353. package/toolbar/register.d.ts +1 -0
  354. package/toolbar/register.js +4 -0
  355. package/toolbar/toolbar.d.ts +15 -0
  356. package/toolbar/toolbar.js +89 -0
  357. package/tooltip/index.d.ts +5 -0
  358. package/tooltip/index.js +3 -0
  359. package/tooltip/register.d.ts +1 -0
  360. package/tooltip/register.js +12 -0
  361. package/tooltip/tooltip-context.d.ts +17 -0
  362. package/tooltip/tooltip-context.js +3 -0
  363. package/tooltip/tooltip-popup.d.ts +16 -0
  364. package/tooltip/tooltip-popup.js +162 -0
  365. package/tooltip/tooltip-trigger.d.ts +15 -0
  366. package/tooltip/tooltip-trigger.js +110 -0
  367. package/tooltip/tooltip.d.ts +36 -0
  368. package/tooltip/tooltip.js +176 -0
  369. package/trunc/index.d.ts +1 -0
  370. package/trunc/index.js +1 -0
  371. package/trunc/register.d.ts +1 -0
  372. package/trunc/register.js +4 -0
  373. package/trunc/trunc.d.ts +19 -0
  374. package/trunc/trunc.js +68 -0
  375. package/vstack/index.d.ts +1 -0
  376. package/vstack/index.js +1 -0
  377. package/vstack/register.d.ts +1 -0
  378. package/vstack/register.js +4 -0
  379. package/vstack/vstack.d.ts +17 -0
  380. package/vstack/vstack.js +83 -0
@@ -0,0 +1,170 @@
1
+ /** Ported from original DUI: deep-future-app/app/client/components/dui/textarea */
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ import { css, html, LitElement } from "lit";
9
+ import { property } from "lit/decorators.js";
10
+ import { live } from "lit/directives/live.js";
11
+ import { styleMap } from "lit/directives/style-map.js";
12
+ import { base } from "@deepfuture/dui-core/base";
13
+ import { customEvent } from "@deepfuture/dui-core/event";
14
+ export const textareaChangeEvent = customEvent("textarea-change", { bubbles: true, composed: true });
15
+ const styles = css `
16
+ :host {
17
+ display: block;
18
+ }
19
+
20
+ [part="textarea"] {
21
+ box-sizing: border-box;
22
+ width: 100%;
23
+ font-family: inherit;
24
+ outline: none;
25
+ resize: vertical;
26
+ transition-property: border-color, box-shadow, background, filter, transform;
27
+ }
28
+
29
+ [part="textarea"][data-resize="none"] {
30
+ resize: none;
31
+ }
32
+
33
+ [part="textarea"][data-resize="vertical"] {
34
+ resize: vertical;
35
+ }
36
+
37
+ [part="textarea"][data-resize="horizontal"] {
38
+ resize: horizontal;
39
+ }
40
+
41
+ [part="textarea"][data-resize="both"] {
42
+ resize: both;
43
+ }
44
+
45
+ [part="textarea"][data-resize="auto"] {
46
+ resize: none;
47
+ field-sizing: content;
48
+ }
49
+
50
+ [part="textarea"]:disabled {
51
+ cursor: not-allowed;
52
+ }
53
+ `;
54
+ /**
55
+ * A multi-line text input with resize modes including auto-grow.
56
+ */
57
+ export class DuiTextarea extends LitElement {
58
+ static { this.tagName = "dui-textarea"; }
59
+ static { this.shadowRootOptions = {
60
+ ...LitElement.shadowRootOptions,
61
+ delegatesFocus: true,
62
+ }; }
63
+ static { this.styles = [base, styles]; }
64
+ #value_accessor_storage = "";
65
+ /** Current textarea value. */
66
+ get value() { return this.#value_accessor_storage; }
67
+ set value(value) { this.#value_accessor_storage = value; }
68
+ #placeholder_accessor_storage = "";
69
+ /** Placeholder text. */
70
+ get placeholder() { return this.#placeholder_accessor_storage; }
71
+ set placeholder(value) { this.#placeholder_accessor_storage = value; }
72
+ #disabled_accessor_storage = false;
73
+ get disabled() { return this.#disabled_accessor_storage; }
74
+ set disabled(value) { this.#disabled_accessor_storage = value; }
75
+ #required_accessor_storage = false;
76
+ get required() { return this.#required_accessor_storage; }
77
+ set required(value) { this.#required_accessor_storage = value; }
78
+ #readonly_accessor_storage = false;
79
+ get readonly() { return this.#readonly_accessor_storage; }
80
+ set readonly(value) { this.#readonly_accessor_storage = value; }
81
+ #rows_accessor_storage = undefined;
82
+ /** Number of visible text rows. */
83
+ get rows() { return this.#rows_accessor_storage; }
84
+ set rows(value) { this.#rows_accessor_storage = value; }
85
+ #minLength_accessor_storage = undefined;
86
+ get minLength() { return this.#minLength_accessor_storage; }
87
+ set minLength(value) { this.#minLength_accessor_storage = value; }
88
+ #maxLength_accessor_storage = undefined;
89
+ get maxLength() { return this.#maxLength_accessor_storage; }
90
+ set maxLength(value) { this.#maxLength_accessor_storage = value; }
91
+ #name_accessor_storage = "";
92
+ get name() { return this.#name_accessor_storage; }
93
+ set name(value) { this.#name_accessor_storage = value; }
94
+ #variant_accessor_storage = "default";
95
+ /** Visual variant: "default" or "ghost" (no border/background). */
96
+ get variant() { return this.#variant_accessor_storage; }
97
+ set variant(value) { this.#variant_accessor_storage = value; }
98
+ #resize_accessor_storage = "vertical";
99
+ /** Resize behavior: "none" | "vertical" | "horizontal" | "both" | "auto". */
100
+ get resize() { return this.#resize_accessor_storage; }
101
+ set resize(value) { this.#resize_accessor_storage = value; }
102
+ #maxHeight_accessor_storage = undefined;
103
+ /** Maximum height (CSS value). Textarea scrolls when content exceeds this. */
104
+ get maxHeight() { return this.#maxHeight_accessor_storage; }
105
+ set maxHeight(value) { this.#maxHeight_accessor_storage = value; }
106
+ #onInput = (event) => {
107
+ const target = event.target;
108
+ this.value = target.value;
109
+ this.dispatchEvent(textareaChangeEvent({ value: this.value }));
110
+ };
111
+ render() {
112
+ const textAreaStyles = styleMap({
113
+ overflowY: this.maxHeight === undefined ? "auto" : "initial",
114
+ maxHeight: this.maxHeight ?? "initial",
115
+ });
116
+ return html `
117
+ <textarea
118
+ part="textarea"
119
+ style=${textAreaStyles}
120
+ .value=${live(this.value)}
121
+ placeholder=${this.placeholder}
122
+ rows=${this.rows ?? ""}
123
+ ?disabled=${this.disabled}
124
+ ?required=${this.required}
125
+ ?readonly=${this.readonly}
126
+ minlength=${this.minLength ?? ""}
127
+ maxlength=${this.maxLength ?? ""}
128
+ name=${this.name}
129
+ data-resize=${this.resize}
130
+ @input=${this.#onInput}
131
+ ></textarea>
132
+ `;
133
+ }
134
+ }
135
+ __decorate([
136
+ property()
137
+ ], DuiTextarea.prototype, "value", null);
138
+ __decorate([
139
+ property()
140
+ ], DuiTextarea.prototype, "placeholder", null);
141
+ __decorate([
142
+ property({ type: Boolean, reflect: true })
143
+ ], DuiTextarea.prototype, "disabled", null);
144
+ __decorate([
145
+ property({ type: Boolean })
146
+ ], DuiTextarea.prototype, "required", null);
147
+ __decorate([
148
+ property({ type: Boolean })
149
+ ], DuiTextarea.prototype, "readonly", null);
150
+ __decorate([
151
+ property({ type: Number })
152
+ ], DuiTextarea.prototype, "rows", null);
153
+ __decorate([
154
+ property({ type: Number, attribute: "minlength" })
155
+ ], DuiTextarea.prototype, "minLength", null);
156
+ __decorate([
157
+ property({ type: Number, attribute: "maxlength" })
158
+ ], DuiTextarea.prototype, "maxLength", null);
159
+ __decorate([
160
+ property()
161
+ ], DuiTextarea.prototype, "name", null);
162
+ __decorate([
163
+ property({ reflect: true })
164
+ ], DuiTextarea.prototype, "variant", null);
165
+ __decorate([
166
+ property()
167
+ ], DuiTextarea.prototype, "resize", null);
168
+ __decorate([
169
+ property({ attribute: "max-height" })
170
+ ], DuiTextarea.prototype, "maxHeight", null);
@@ -0,0 +1,3 @@
1
+ export { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
+ export { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
3
+ export type { ToggleGroupContext } from "./toggle-group-context.js";
@@ -0,0 +1,2 @@
1
+ export { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
+ export { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import { DuiToggle } from "./toggle.js";
2
+ import { DuiToggleGroup } from "./toggle-group.js";
3
+ if (!customElements.get(DuiToggle.tagName)) {
4
+ customElements.define(DuiToggle.tagName, DuiToggle);
5
+ }
6
+ if (!customElements.get(DuiToggleGroup.tagName)) {
7
+ customElements.define(DuiToggleGroup.tagName, DuiToggleGroup);
8
+ }
@@ -0,0 +1,9 @@
1
+ export type ToggleGroupContext = {
2
+ readonly value: string[];
3
+ readonly disabled: boolean;
4
+ readonly type: "single" | "multiple";
5
+ readonly toggle: (itemValue: string) => void;
6
+ };
7
+ export declare const toggleGroupContext: {
8
+ __context__: ToggleGroupContext;
9
+ };
@@ -0,0 +1,2 @@
1
+ import { createContext } from "@lit/context";
2
+ export const toggleGroupContext = createContext(Symbol("dui-toggle-group"));
@@ -0,0 +1,27 @@
1
+ import { LitElement, type TemplateResult } from "lit";
2
+ export declare const valueChangeEvent: (detail: {
3
+ value: string[];
4
+ }) => CustomEvent<{
5
+ value: string[];
6
+ }>;
7
+ /**
8
+ * `<dui-toggle-group>` — Groups toggle buttons with shared single/multi selection.
9
+ *
10
+ * @slot - `dui-toggle` children.
11
+ * @csspart root - The group container.
12
+ * @fires value-change - Fired when selection changes. Detail: { value: string[] }
13
+ */
14
+ export declare class DuiToggleGroup extends LitElement {
15
+ #private;
16
+ static tagName: "dui-toggle-group";
17
+ static styles: import("lit").CSSResult[];
18
+ accessor value: string[] | undefined;
19
+ accessor defaultValue: string[];
20
+ accessor type: "single" | "multiple";
21
+ accessor orientation: "horizontal" | "vertical";
22
+ accessor disabled: boolean;
23
+ accessor loop: boolean;
24
+ connectedCallback(): void;
25
+ willUpdate(): void;
26
+ render(): TemplateResult;
27
+ }
@@ -0,0 +1,163 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, html, LitElement } from "lit";
8
+ import { property } from "lit/decorators.js";
9
+ import { base } from "@deepfuture/dui-core/base";
10
+ import { customEvent } from "@deepfuture/dui-core/event";
11
+ export const valueChangeEvent = customEvent("value-change", { bubbles: true, composed: true });
12
+ /** Structural styles only — layout CSS. */
13
+ const styles = css `
14
+ :host {
15
+ display: inline-flex;
16
+ }
17
+
18
+ [part="root"] {
19
+ display: inline-flex;
20
+ }
21
+
22
+ :host([orientation="vertical"]) [part="root"] {
23
+ flex-direction: column;
24
+ }
25
+ `;
26
+ /**
27
+ * `<dui-toggle-group>` — Groups toggle buttons with shared single/multi selection.
28
+ *
29
+ * @slot - `dui-toggle` children.
30
+ * @csspart root - The group container.
31
+ * @fires value-change - Fired when selection changes. Detail: { value: string[] }
32
+ */
33
+ export class DuiToggleGroup extends LitElement {
34
+ static { this.tagName = "dui-toggle-group"; }
35
+ static { this.styles = [base, styles]; }
36
+ #value_accessor_storage = undefined;
37
+ get value() { return this.#value_accessor_storage; }
38
+ set value(value) { this.#value_accessor_storage = value; }
39
+ #defaultValue_accessor_storage = [];
40
+ get defaultValue() { return this.#defaultValue_accessor_storage; }
41
+ set defaultValue(value) { this.#defaultValue_accessor_storage = value; }
42
+ #type_accessor_storage = "single";
43
+ get type() { return this.#type_accessor_storage; }
44
+ set type(value) { this.#type_accessor_storage = value; }
45
+ #orientation_accessor_storage = "horizontal";
46
+ get orientation() { return this.#orientation_accessor_storage; }
47
+ set orientation(value) { this.#orientation_accessor_storage = value; }
48
+ #disabled_accessor_storage = false;
49
+ get disabled() { return this.#disabled_accessor_storage; }
50
+ set disabled(value) { this.#disabled_accessor_storage = value; }
51
+ #loop_accessor_storage = true;
52
+ get loop() { return this.#loop_accessor_storage; }
53
+ set loop(value) { this.#loop_accessor_storage = value; }
54
+ #internalValue_accessor_storage = [];
55
+ get #internalValue() { return this.#internalValue_accessor_storage; }
56
+ set #internalValue(value) { this.#internalValue_accessor_storage = value; }
57
+ get #currentValue() {
58
+ return this.value ?? this.#internalValue;
59
+ }
60
+ #toggle = (itemValue) => {
61
+ if (this.disabled)
62
+ return;
63
+ const current = this.#currentValue;
64
+ let next;
65
+ if (this.type === "single") {
66
+ next = current.includes(itemValue) ? [] : [itemValue];
67
+ }
68
+ else {
69
+ next = current.includes(itemValue)
70
+ ? current.filter((v) => v !== itemValue)
71
+ : [...current, itemValue];
72
+ }
73
+ if (this.value === undefined) {
74
+ this.#internalValue = next;
75
+ }
76
+ this.dispatchEvent(valueChangeEvent({ value: next }));
77
+ };
78
+ #ctx_accessor_storage = this.#buildContext();
79
+ get #ctx() { return this.#ctx_accessor_storage; }
80
+ set #ctx(value) { this.#ctx_accessor_storage = value; }
81
+ #buildContext() {
82
+ return {
83
+ value: this.#currentValue,
84
+ disabled: this.disabled,
85
+ type: this.type,
86
+ toggle: this.#toggle,
87
+ };
88
+ }
89
+ connectedCallback() {
90
+ super.connectedCallback();
91
+ if (this.value === undefined && this.defaultValue.length > 0) {
92
+ this.#internalValue = [...this.defaultValue];
93
+ }
94
+ this.#ctx = this.#buildContext();
95
+ }
96
+ willUpdate() {
97
+ this.#ctx = this.#buildContext();
98
+ }
99
+ #onKeyDown = (e) => {
100
+ const isHorizontal = this.orientation === "horizontal";
101
+ const nextKey = isHorizontal ? "ArrowRight" : "ArrowDown";
102
+ const prevKey = isHorizontal ? "ArrowLeft" : "ArrowUp";
103
+ if (e.key !== nextKey && e.key !== prevKey)
104
+ return;
105
+ e.preventDefault();
106
+ const toggles = [
107
+ ...this.querySelectorAll("dui-toggle"),
108
+ ];
109
+ const focusable = toggles.filter((t) => !t.hasAttribute("disabled"));
110
+ if (focusable.length === 0)
111
+ return;
112
+ const active = this.shadowRoot?.activeElement ??
113
+ document.activeElement;
114
+ const currentToggle = toggles.find((t) => t === active || t.shadowRoot?.activeElement === active || t.contains(active));
115
+ const currentIndex = currentToggle
116
+ ? focusable.indexOf(currentToggle)
117
+ : -1;
118
+ let nextIndex;
119
+ if (e.key === nextKey) {
120
+ nextIndex = currentIndex + 1;
121
+ if (nextIndex >= focusable.length) {
122
+ nextIndex = this.loop ? 0 : focusable.length - 1;
123
+ }
124
+ }
125
+ else {
126
+ nextIndex = currentIndex - 1;
127
+ if (nextIndex < 0) {
128
+ nextIndex = this.loop ? focusable.length - 1 : 0;
129
+ }
130
+ }
131
+ focusable[nextIndex]?.focus();
132
+ };
133
+ render() {
134
+ return html `
135
+ <div
136
+ part="root"
137
+ role="group"
138
+ aria-orientation="${this.orientation}"
139
+ @keydown="${this.#onKeyDown}"
140
+ >
141
+ <slot></slot>
142
+ </div>
143
+ `;
144
+ }
145
+ }
146
+ __decorate([
147
+ property({ type: Array })
148
+ ], DuiToggleGroup.prototype, "value", null);
149
+ __decorate([
150
+ property({ type: Array, attribute: "default-value" })
151
+ ], DuiToggleGroup.prototype, "defaultValue", null);
152
+ __decorate([
153
+ property({ reflect: true })
154
+ ], DuiToggleGroup.prototype, "type", null);
155
+ __decorate([
156
+ property({ reflect: true })
157
+ ], DuiToggleGroup.prototype, "orientation", null);
158
+ __decorate([
159
+ property({ type: Boolean, reflect: true })
160
+ ], DuiToggleGroup.prototype, "disabled", null);
161
+ __decorate([
162
+ property({ type: Boolean })
163
+ ], DuiToggleGroup.prototype, "loop", null);
@@ -0,0 +1,25 @@
1
+ import { LitElement, type TemplateResult } from "lit";
2
+ export declare const pressedChangeEvent: (detail: {
3
+ pressed: boolean;
4
+ }) => CustomEvent<{
5
+ pressed: boolean;
6
+ }>;
7
+ /**
8
+ * `<dui-toggle>` — A two-state toggle button. Works standalone or inside a toggle group.
9
+ *
10
+ * @slot - Toggle content (text and/or icons).
11
+ * @csspart root - The button element.
12
+ * @fires pressed-change - Fired when toggled. Detail: { pressed: boolean }
13
+ */
14
+ export declare class DuiToggle extends LitElement {
15
+ #private;
16
+ static tagName: "dui-toggle";
17
+ static shadowRootOptions: ShadowRootInit;
18
+ static styles: import("lit").CSSResult[];
19
+ accessor pressed: boolean | undefined;
20
+ accessor defaultPressed: boolean;
21
+ accessor disabled: boolean;
22
+ accessor value: string | undefined;
23
+ connectedCallback(): void;
24
+ render(): TemplateResult;
25
+ }
@@ -0,0 +1,124 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { css, html, LitElement } from "lit";
8
+ import { property } from "lit/decorators.js";
9
+ import { base } from "@deepfuture/dui-core/base";
10
+ import { customEvent } from "@deepfuture/dui-core/event";
11
+ export const pressedChangeEvent = customEvent("pressed-change", { bubbles: true, composed: true });
12
+ /** Structural styles only — layout CSS. */
13
+ const styles = css `
14
+ :host {
15
+ display: inline-block;
16
+ }
17
+
18
+ [part="root"] {
19
+ display: inline-flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ border: none;
23
+ background: none;
24
+ cursor: pointer;
25
+ padding: 0;
26
+ margin: 0;
27
+ font: inherit;
28
+ color: inherit;
29
+ }
30
+
31
+ [part="root"]:disabled {
32
+ cursor: not-allowed;
33
+ }
34
+ `;
35
+ /**
36
+ * `<dui-toggle>` — A two-state toggle button. Works standalone or inside a toggle group.
37
+ *
38
+ * @slot - Toggle content (text and/or icons).
39
+ * @csspart root - The button element.
40
+ * @fires pressed-change - Fired when toggled. Detail: { pressed: boolean }
41
+ */
42
+ export class DuiToggle extends LitElement {
43
+ static { this.tagName = "dui-toggle"; }
44
+ static { this.shadowRootOptions = {
45
+ ...LitElement.shadowRootOptions,
46
+ delegatesFocus: true,
47
+ }; }
48
+ static { this.styles = [base, styles]; }
49
+ #pressed_accessor_storage = undefined;
50
+ get pressed() { return this.#pressed_accessor_storage; }
51
+ set pressed(value) { this.#pressed_accessor_storage = value; }
52
+ #defaultPressed_accessor_storage = false;
53
+ get defaultPressed() { return this.#defaultPressed_accessor_storage; }
54
+ set defaultPressed(value) { this.#defaultPressed_accessor_storage = value; }
55
+ #disabled_accessor_storage = false;
56
+ get disabled() { return this.#disabled_accessor_storage; }
57
+ set disabled(value) { this.#disabled_accessor_storage = value; }
58
+ #value_accessor_storage = undefined;
59
+ get value() { return this.#value_accessor_storage; }
60
+ set value(value) { this.#value_accessor_storage = value; }
61
+ #internalPressed_accessor_storage = false;
62
+ get #internalPressed() { return this.#internalPressed_accessor_storage; }
63
+ set #internalPressed(value) { this.#internalPressed_accessor_storage = value; }
64
+ #groupCtx_accessor_storage;
65
+ get #groupCtx() { return this.#groupCtx_accessor_storage; }
66
+ set #groupCtx(value) { this.#groupCtx_accessor_storage = value; }
67
+ get #isPressed() {
68
+ if (this.#groupCtx && this.value !== undefined) {
69
+ return this.#groupCtx.value.includes(this.value);
70
+ }
71
+ return this.pressed ?? this.#internalPressed;
72
+ }
73
+ get #isDisabled() {
74
+ return this.disabled || (this.#groupCtx?.disabled ?? false);
75
+ }
76
+ connectedCallback() {
77
+ super.connectedCallback();
78
+ if (this.pressed === undefined && this.defaultPressed) {
79
+ this.#internalPressed = true;
80
+ }
81
+ }
82
+ #handleClick = () => {
83
+ if (this.#isDisabled)
84
+ return;
85
+ if (this.#groupCtx && this.value !== undefined) {
86
+ this.#groupCtx.toggle(this.value);
87
+ return;
88
+ }
89
+ const newPressed = !this.#isPressed;
90
+ if (this.pressed === undefined) {
91
+ this.#internalPressed = newPressed;
92
+ }
93
+ this.dispatchEvent(pressedChangeEvent({ pressed: newPressed }));
94
+ };
95
+ render() {
96
+ const isPressed = this.#isPressed;
97
+ const isDisabled = this.#isDisabled;
98
+ return html `
99
+ <button
100
+ part="root"
101
+ type="button"
102
+ aria-pressed="${String(isPressed)}"
103
+ ?disabled="${isDisabled}"
104
+ ?data-pressed="${isPressed}"
105
+ ?data-disabled="${isDisabled}"
106
+ @click="${this.#handleClick}"
107
+ >
108
+ <slot></slot>
109
+ </button>
110
+ `;
111
+ }
112
+ }
113
+ __decorate([
114
+ property({ type: Boolean })
115
+ ], DuiToggle.prototype, "pressed", null);
116
+ __decorate([
117
+ property({ type: Boolean, attribute: "default-pressed" })
118
+ ], DuiToggle.prototype, "defaultPressed", null);
119
+ __decorate([
120
+ property({ type: Boolean, reflect: true })
121
+ ], DuiToggle.prototype, "disabled", null);
122
+ __decorate([
123
+ property()
124
+ ], DuiToggle.prototype, "value", null);
@@ -0,0 +1 @@
1
+ export { DuiToolbar } from "./toolbar.js";
@@ -0,0 +1 @@
1
+ export { DuiToolbar } from "./toolbar.js";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import { DuiToolbar } from "./toolbar.js";
2
+ if (!customElements.get(DuiToolbar.tagName)) {
3
+ customElements.define(DuiToolbar.tagName, DuiToolbar);
4
+ }
@@ -0,0 +1,15 @@
1
+ /** Ported from original DUI: deep-future-app/app/client/components/dui/toolbar */
2
+ import { LitElement, type TemplateResult } from "lit";
3
+ export declare class DuiToolbar extends LitElement {
4
+ static tagName: "dui-toolbar";
5
+ static styles: import("lit").CSSResult[];
6
+ /** Sets a minimum height using the corresponding `--component-height-*` token. */
7
+ accessor size: "sm" | "md" | "lg" | "xl" | undefined;
8
+ /** Adds horizontal and vertical padding. */
9
+ accessor inset: boolean;
10
+ /** Reduces left inset padding when a button is the first item. */
11
+ accessor hasButtonLeft: boolean;
12
+ /** Reduces right inset padding when a button is the last item. */
13
+ accessor hasButtonRight: boolean;
14
+ render(): TemplateResult;
15
+ }
@@ -0,0 +1,89 @@
1
+ /** Ported from original DUI: deep-future-app/app/client/components/dui/toolbar */
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ import { css, html, LitElement } from "lit";
9
+ import { property } from "lit/decorators.js";
10
+ import { base } from "@deepfuture/dui-core/base";
11
+ const styles = css `
12
+ :host {
13
+ display: block;
14
+ }
15
+
16
+ [part="root"] {
17
+ display: grid;
18
+ grid-template-columns: 1fr auto 1fr;
19
+ align-items: center;
20
+ box-sizing: border-box;
21
+ }
22
+
23
+ [part="left"] {
24
+ justify-self: start;
25
+ display: flex;
26
+ align-items: center;
27
+ }
28
+
29
+ [part="center"] {
30
+ justify-self: center;
31
+ grid-column: 2;
32
+ display: flex;
33
+ align-items: center;
34
+ }
35
+
36
+ [part="right"] {
37
+ justify-self: end;
38
+ grid-column: 3;
39
+ display: flex;
40
+ align-items: center;
41
+ }
42
+ `;
43
+ export class DuiToolbar extends LitElement {
44
+ static { this.tagName = "dui-toolbar"; }
45
+ static { this.styles = [base, styles]; }
46
+ #size_accessor_storage;
47
+ /** Sets a minimum height using the corresponding `--component-height-*` token. */
48
+ get size() { return this.#size_accessor_storage; }
49
+ set size(value) { this.#size_accessor_storage = value; }
50
+ #inset_accessor_storage = false;
51
+ /** Adds horizontal and vertical padding. */
52
+ get inset() { return this.#inset_accessor_storage; }
53
+ set inset(value) { this.#inset_accessor_storage = value; }
54
+ #hasButtonLeft_accessor_storage = false;
55
+ /** Reduces left inset padding when a button is the first item. */
56
+ get hasButtonLeft() { return this.#hasButtonLeft_accessor_storage; }
57
+ set hasButtonLeft(value) { this.#hasButtonLeft_accessor_storage = value; }
58
+ #hasButtonRight_accessor_storage = false;
59
+ /** Reduces right inset padding when a button is the last item. */
60
+ get hasButtonRight() { return this.#hasButtonRight_accessor_storage; }
61
+ set hasButtonRight(value) { this.#hasButtonRight_accessor_storage = value; }
62
+ render() {
63
+ return html `
64
+ <nav part="root" role="toolbar">
65
+ <div part="left">
66
+ <slot name="left"></slot>
67
+ </div>
68
+ <div part="center">
69
+ <slot name="center"></slot>
70
+ </div>
71
+ <div part="right">
72
+ <slot name="right"></slot>
73
+ </div>
74
+ </nav>
75
+ `;
76
+ }
77
+ }
78
+ __decorate([
79
+ property({ reflect: true })
80
+ ], DuiToolbar.prototype, "size", null);
81
+ __decorate([
82
+ property({ type: Boolean, reflect: true })
83
+ ], DuiToolbar.prototype, "inset", null);
84
+ __decorate([
85
+ property({ type: Boolean, reflect: true, attribute: "has-button-left" })
86
+ ], DuiToolbar.prototype, "hasButtonLeft", null);
87
+ __decorate([
88
+ property({ type: Boolean, reflect: true, attribute: "has-button-right" })
89
+ ], DuiToolbar.prototype, "hasButtonRight", null);
@@ -0,0 +1,5 @@
1
+ export { DuiTooltip, openChangeEvent } from "./tooltip.js";
2
+ export type { TooltipOpenChangeDetail } from "./tooltip.js";
3
+ export { DuiTooltipTrigger } from "./tooltip-trigger.js";
4
+ export { DuiTooltipPopup } from "./tooltip-popup.js";
5
+ export type { TooltipContext, TooltipSide } from "./tooltip-context.js";