@deepfuture/dui-components 0.0.21 → 1.0.0

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 (333) hide show
  1. package/README.md +56 -65
  2. package/_install.js +11 -0
  3. package/accordion/accordion-item.d.ts +3 -20
  4. package/accordion/accordion-item.js +93 -292
  5. package/accordion/accordion.d.ts +3 -18
  6. package/accordion/accordion.js +9 -247
  7. package/accordion/index.d.ts +6 -6
  8. package/accordion/index.js +5 -5
  9. package/alert-dialog/alert-dialog-close.d.ts +3 -14
  10. package/alert-dialog/alert-dialog-close.js +4 -34
  11. package/alert-dialog/alert-dialog-popup.d.ts +3 -32
  12. package/alert-dialog/alert-dialog-popup.js +68 -317
  13. package/alert-dialog/alert-dialog-trigger.d.ts +3 -14
  14. package/alert-dialog/alert-dialog-trigger.js +4 -51
  15. package/alert-dialog/alert-dialog.d.ts +3 -30
  16. package/alert-dialog/alert-dialog.js +8 -158
  17. package/alert-dialog/index.d.ts +11 -11
  18. package/alert-dialog/index.js +9 -9
  19. package/all.d.ts +159 -123
  20. package/all.js +134 -231
  21. package/avatar/avatar.d.ts +3 -39
  22. package/avatar/avatar.js +18 -238
  23. package/avatar/index.d.ts +4 -4
  24. package/avatar/index.js +3 -3
  25. package/badge/badge.d.ts +3 -10
  26. package/badge/badge.js +88 -22
  27. package/badge/index.d.ts +2 -3
  28. package/badge/index.js +2 -3
  29. package/breadcrumb/breadcrumb-ellipsis.d.ts +3 -12
  30. package/breadcrumb/breadcrumb-ellipsis.js +8 -34
  31. package/breadcrumb/breadcrumb-item.d.ts +3 -11
  32. package/breadcrumb/breadcrumb-item.js +7 -26
  33. package/breadcrumb/breadcrumb-link.d.ts +3 -12
  34. package/breadcrumb/breadcrumb-link.js +16 -26
  35. package/breadcrumb/breadcrumb-page.d.ts +3 -11
  36. package/breadcrumb/breadcrumb-page.js +8 -31
  37. package/breadcrumb/breadcrumb-separator.d.ts +3 -12
  38. package/breadcrumb/breadcrumb-separator.js +8 -31
  39. package/breadcrumb/breadcrumb.d.ts +3 -12
  40. package/breadcrumb/breadcrumb.js +10 -33
  41. package/breadcrumb/index.d.ts +12 -13
  42. package/breadcrumb/index.js +12 -13
  43. package/button/button.d.ts +3 -32
  44. package/button/button.js +221 -165
  45. package/button/index.d.ts +3 -3
  46. package/button/index.js +3 -3
  47. package/calendar/calendar.d.ts +3 -31
  48. package/calendar/calendar.js +71 -481
  49. package/calendar/index.d.ts +3 -3
  50. package/calendar/index.js +3 -3
  51. package/card/card.d.ts +3 -27
  52. package/card/card.js +80 -163
  53. package/card/index.d.ts +2 -3
  54. package/card/index.js +2 -3
  55. package/card-grid/card-grid.d.ts +3 -15
  56. package/card-grid/card-grid.js +8 -106
  57. package/card-grid/index.d.ts +2 -3
  58. package/card-grid/index.js +2 -3
  59. package/checkbox/checkbox-group.d.ts +3 -34
  60. package/checkbox/checkbox-group.js +11 -188
  61. package/checkbox/checkbox.d.ts +3 -47
  62. package/checkbox/checkbox.js +43 -341
  63. package/checkbox/index.d.ts +6 -6
  64. package/checkbox/index.js +5 -5
  65. package/collapsible/collapsible.d.ts +3 -20
  66. package/collapsible/collapsible.js +83 -277
  67. package/collapsible/index.d.ts +3 -3
  68. package/collapsible/index.js +3 -3
  69. package/combobox/combobox.d.ts +3 -47
  70. package/combobox/combobox.js +136 -538
  71. package/combobox/index.d.ts +4 -4
  72. package/combobox/index.js +3 -3
  73. package/command/command-empty.d.ts +3 -8
  74. package/command/command-empty.js +10 -88
  75. package/command/command-group.d.ts +3 -13
  76. package/command/command-group.js +15 -114
  77. package/command/command-input.d.ts +3 -11
  78. package/command/command-input.js +20 -136
  79. package/command/command-item.d.ts +3 -18
  80. package/command/command-item.js +24 -212
  81. package/command/command-list.d.ts +3 -7
  82. package/command/command-list.js +11 -79
  83. package/command/command-separator.d.ts +3 -5
  84. package/command/command-separator.js +10 -11
  85. package/command/command-shortcut.d.ts +3 -5
  86. package/command/command-shortcut.js +9 -12
  87. package/command/command.d.ts +3 -23
  88. package/command/command.js +10 -339
  89. package/command/index.d.ts +17 -19
  90. package/command/index.js +16 -18
  91. package/data-table/data-table.d.ts +3 -57
  92. package/data-table/data-table.js +86 -449
  93. package/data-table/index.d.ts +3 -4
  94. package/data-table/index.js +2 -3
  95. package/dialog/dialog-close.d.ts +3 -14
  96. package/dialog/dialog-close.js +4 -34
  97. package/dialog/dialog-popup.d.ts +3 -34
  98. package/dialog/dialog-popup.js +70 -336
  99. package/dialog/dialog-trigger.d.ts +3 -14
  100. package/dialog/dialog-trigger.js +4 -51
  101. package/dialog/dialog.d.ts +3 -30
  102. package/dialog/dialog.js +8 -158
  103. package/dialog/index.d.ts +11 -11
  104. package/dialog/index.js +9 -9
  105. package/dropzone/dropzone.d.ts +3 -72
  106. package/dropzone/dropzone.js +29 -407
  107. package/dropzone/index.d.ts +4 -4
  108. package/dropzone/index.js +3 -3
  109. package/field/field.d.ts +3 -30
  110. package/field/field.js +34 -353
  111. package/field/index.d.ts +1 -0
  112. package/field/index.js +1 -0
  113. package/fieldset/fieldset.d.ts +3 -18
  114. package/fieldset/fieldset.js +21 -110
  115. package/fieldset/index.d.ts +1 -0
  116. package/fieldset/index.js +1 -0
  117. package/icon/icon.d.ts +3 -15
  118. package/icon/icon.js +4 -33
  119. package/icon/index.d.ts +2 -3
  120. package/icon/index.js +2 -3
  121. package/input/index.d.ts +3 -3
  122. package/input/index.js +3 -3
  123. package/input/input.d.ts +3 -49
  124. package/input/input.js +57 -238
  125. package/menu/index.d.ts +4 -5
  126. package/menu/index.js +4 -5
  127. package/menu/menu-item.d.ts +3 -13
  128. package/menu/menu-item.js +41 -91
  129. package/menu/menu.d.ts +3 -15
  130. package/menu/menu.js +27 -277
  131. package/menubar/index.d.ts +3 -4
  132. package/menubar/index.js +2 -3
  133. package/menubar/menubar.d.ts +3 -19
  134. package/menubar/menubar.js +12 -183
  135. package/number-field/index.d.ts +3 -3
  136. package/number-field/index.js +3 -3
  137. package/number-field/number-field.d.ts +3 -55
  138. package/number-field/number-field.js +205 -698
  139. package/package.json +126 -113
  140. package/popover/index.d.ts +11 -11
  141. package/popover/index.js +9 -9
  142. package/popover/popover-close.d.ts +3 -12
  143. package/popover/popover-close.js +4 -32
  144. package/popover/popover-popup.d.ts +3 -18
  145. package/popover/popover-popup.js +28 -205
  146. package/popover/popover-trigger.d.ts +3 -13
  147. package/popover/popover-trigger.js +4 -73
  148. package/popover/popover.d.ts +3 -29
  149. package/popover/popover.js +8 -207
  150. package/portal/index.d.ts +3 -4
  151. package/portal/index.js +2 -3
  152. package/portal/portal.d.ts +3 -27
  153. package/portal/portal.js +8 -157
  154. package/preview-card/index.d.ts +9 -9
  155. package/preview-card/index.js +7 -7
  156. package/preview-card/preview-card-popup.d.ts +3 -14
  157. package/preview-card/preview-card-popup.js +29 -194
  158. package/preview-card/preview-card-trigger.d.ts +3 -12
  159. package/preview-card/preview-card-trigger.js +4 -74
  160. package/preview-card/preview-card.d.ts +3 -33
  161. package/preview-card/preview-card.js +8 -239
  162. package/progress/index.d.ts +2 -3
  163. package/progress/index.js +2 -3
  164. package/progress/progress.d.ts +3 -17
  165. package/progress/progress.js +28 -130
  166. package/radio/index.d.ts +6 -6
  167. package/radio/index.js +5 -5
  168. package/radio/radio-group.d.ts +3 -37
  169. package/radio/radio-group.js +8 -200
  170. package/radio/radio.d.ts +3 -28
  171. package/radio/radio.js +38 -213
  172. package/scroll-area/index.d.ts +2 -3
  173. package/scroll-area/index.js +2 -3
  174. package/scroll-area/scroll-area.d.ts +3 -36
  175. package/scroll-area/scroll-area.js +25 -535
  176. package/select/index.d.ts +3 -4
  177. package/select/index.js +2 -3
  178. package/select/select.d.ts +3 -39
  179. package/select/select.js +115 -425
  180. package/separator/index.d.ts +2 -3
  181. package/separator/index.js +2 -3
  182. package/separator/separator.d.ts +3 -10
  183. package/separator/separator.js +23 -85
  184. package/sidebar/index.d.ts +29 -29
  185. package/sidebar/index.js +27 -32
  186. package/sidebar/sidebar-content.d.ts +3 -12
  187. package/sidebar/sidebar-content.js +7 -29
  188. package/sidebar/sidebar-footer.d.ts +3 -10
  189. package/sidebar/sidebar-footer.js +7 -20
  190. package/sidebar/sidebar-group-label.d.ts +3 -15
  191. package/sidebar/sidebar-group-label.js +17 -41
  192. package/sidebar/sidebar-group.d.ts +3 -13
  193. package/sidebar/sidebar-group.js +7 -24
  194. package/sidebar/sidebar-header.d.ts +3 -10
  195. package/sidebar/sidebar-header.js +7 -16
  196. package/sidebar/sidebar-inset.d.ts +3 -13
  197. package/sidebar/sidebar-inset.js +7 -28
  198. package/sidebar/sidebar-menu-button.d.ts +3 -26
  199. package/sidebar/sidebar-menu-button.js +60 -217
  200. package/sidebar/sidebar-menu-item.d.ts +3 -10
  201. package/sidebar/sidebar-menu-item.js +7 -19
  202. package/sidebar/sidebar-menu.d.ts +3 -12
  203. package/sidebar/sidebar-menu.js +7 -25
  204. package/sidebar/sidebar-provider.d.ts +3 -34
  205. package/sidebar/sidebar-provider.js +22 -232
  206. package/sidebar/sidebar-separator.d.ts +3 -10
  207. package/sidebar/sidebar-separator.js +9 -19
  208. package/sidebar/sidebar-trigger.d.ts +3 -14
  209. package/sidebar/sidebar-trigger.js +10 -46
  210. package/sidebar/sidebar.d.ts +3 -19
  211. package/sidebar/sidebar.js +65 -262
  212. package/slider/index.d.ts +3 -3
  213. package/slider/index.js +3 -3
  214. package/slider/slider.d.ts +3 -45
  215. package/slider/slider.js +97 -382
  216. package/spinner/index.d.ts +2 -3
  217. package/spinner/index.js +2 -3
  218. package/spinner/spinner.d.ts +3 -11
  219. package/spinner/spinner.js +20 -163
  220. package/split-button/index.d.ts +3 -1
  221. package/split-button/index.js +3 -1
  222. package/split-button/split-button.d.ts +3 -33
  223. package/split-button/split-button.js +307 -394
  224. package/stepper/index.d.ts +3 -3
  225. package/stepper/index.js +3 -3
  226. package/stepper/stepper.d.ts +3 -41
  227. package/stepper/stepper.js +57 -381
  228. package/switch/index.d.ts +3 -3
  229. package/switch/index.js +3 -3
  230. package/switch/switch.d.ts +3 -30
  231. package/switch/switch.js +63 -228
  232. package/tabs/index.d.ts +12 -12
  233. package/tabs/index.js +11 -11
  234. package/tabs/tab.d.ts +3 -14
  235. package/tabs/tab.js +33 -131
  236. package/tabs/tabs-indicator.d.ts +3 -9
  237. package/tabs/tabs-indicator.js +17 -22
  238. package/tabs/tabs-list.d.ts +3 -15
  239. package/tabs/tabs-list.js +14 -113
  240. package/tabs/tabs-panel.d.ts +3 -16
  241. package/tabs/tabs-panel.js +32 -114
  242. package/tabs/tabs.d.ts +3 -22
  243. package/tabs/tabs.js +8 -170
  244. package/textarea/index.d.ts +4 -4
  245. package/textarea/index.js +3 -3
  246. package/textarea/textarea.d.ts +3 -36
  247. package/textarea/textarea.js +63 -220
  248. package/toggle/index.d.ts +6 -6
  249. package/toggle/index.js +5 -5
  250. package/toggle/toggle-group.d.ts +3 -27
  251. package/toggle/toggle-group.js +9 -224
  252. package/toggle/toggle.d.ts +3 -26
  253. package/toggle/toggle.js +94 -178
  254. package/tokens/properties.css +361 -0
  255. package/tokens/prose.css +250 -0
  256. package/tokens/prose.d.ts +2 -0
  257. package/tokens/prose.js +4 -0
  258. package/tokens/tokens-raw.d.ts +2 -0
  259. package/tokens/tokens-raw.js +2 -0
  260. package/tokens/tokens.css +409 -0
  261. package/tokens/tokens.d.ts +2 -0
  262. package/tokens/tokens.js +5 -0
  263. package/toolbar/index.d.ts +2 -3
  264. package/toolbar/index.js +2 -3
  265. package/toolbar/toolbar.d.ts +3 -11
  266. package/toolbar/toolbar.js +25 -116
  267. package/tooltip/index.d.ts +9 -9
  268. package/tooltip/index.js +7 -7
  269. package/tooltip/tooltip-popup.d.ts +3 -14
  270. package/tooltip/tooltip-popup.js +32 -185
  271. package/tooltip/tooltip-trigger.d.ts +3 -14
  272. package/tooltip/tooltip-trigger.js +5 -148
  273. package/tooltip/tooltip.d.ts +3 -35
  274. package/tooltip/tooltip.js +8 -253
  275. package/trunc/index.d.ts +2 -3
  276. package/trunc/index.js +2 -3
  277. package/trunc/trunc.d.ts +3 -17
  278. package/trunc/trunc.js +10 -108
  279. package/_deprecated/center/center.d.ts +0 -14
  280. package/_deprecated/center/center.js +0 -37
  281. package/_deprecated/center/index.d.ts +0 -3
  282. package/_deprecated/center/index.js +0 -3
  283. package/_deprecated/center/register.js +0 -4
  284. package/_deprecated/hstack/hstack.d.ts +0 -25
  285. package/_deprecated/hstack/hstack.js +0 -187
  286. package/_deprecated/hstack/index.d.ts +0 -4
  287. package/_deprecated/hstack/index.js +0 -3
  288. package/_deprecated/hstack/register.d.ts +0 -1
  289. package/_deprecated/hstack/register.js +0 -4
  290. package/_deprecated/page-inset/index.d.ts +0 -3
  291. package/_deprecated/page-inset/index.js +0 -3
  292. package/_deprecated/page-inset/page-inset.d.ts +0 -28
  293. package/_deprecated/page-inset/page-inset.js +0 -151
  294. package/_deprecated/page-inset/register.d.ts +0 -1
  295. package/_deprecated/page-inset/register.js +0 -4
  296. package/_deprecated/vstack/index.d.ts +0 -3
  297. package/_deprecated/vstack/index.js +0 -3
  298. package/_deprecated/vstack/register.d.ts +0 -1
  299. package/_deprecated/vstack/register.js +0 -4
  300. package/_deprecated/vstack/vstack.d.ts +0 -17
  301. package/_deprecated/vstack/vstack.js +0 -125
  302. package/accordion/accordion-context.d.ts +0 -15
  303. package/accordion/accordion-context.js +0 -3
  304. package/alert-dialog/alert-dialog-context.d.ts +0 -13
  305. package/alert-dialog/alert-dialog-context.js +0 -3
  306. package/checkbox/checkbox-group-context.d.ts +0 -11
  307. package/checkbox/checkbox-group-context.js +0 -3
  308. package/command/command-context.d.ts +0 -30
  309. package/command/command-context.js +0 -3
  310. package/command/command-score.d.ts +0 -6
  311. package/command/command-score.js +0 -31
  312. package/dialog/dialog-context.d.ts +0 -13
  313. package/dialog/dialog-context.js +0 -3
  314. package/global.d.ts +0 -179
  315. package/menubar/menubar-context.d.ts +0 -9
  316. package/menubar/menubar-context.js +0 -2
  317. package/popover/popover-context.d.ts +0 -17
  318. package/popover/popover-context.js +0 -3
  319. package/preview-card/preview-card-context.d.ts +0 -16
  320. package/preview-card/preview-card-context.js +0 -3
  321. package/radio/radio-group-context.d.ts +0 -11
  322. package/radio/radio-group-context.js +0 -2
  323. package/sidebar/sidebar-context.d.ts +0 -15
  324. package/sidebar/sidebar-context.js +0 -3
  325. package/split-button/register.d.ts +0 -1
  326. package/split-button/register.js +0 -4
  327. package/tabs/tabs-context.d.ts +0 -8
  328. package/tabs/tabs-context.js +0 -2
  329. package/toggle/toggle-group-context.d.ts +0 -9
  330. package/toggle/toggle-group-context.js +0 -2
  331. package/tooltip/tooltip-context.d.ts +0 -17
  332. package/tooltip/tooltip-context.js +0 -3
  333. /package/{_deprecated/center/register.d.ts → _install.d.ts} +0 -0
package/portal/portal.js CHANGED
@@ -1,157 +1,8 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/portal */
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- import { css, html, LitElement } from "lit";
37
- import { property } from "lit/decorators.js";
38
- import { getRootDocument } from "@deepfuture/dui-core/dom";
39
- /** Structural styles only — layout CSS. */
40
- const styles = css `
41
- :host {
42
- display: contents;
43
- }
44
- `;
45
- /**
46
- * `<dui-portal>` — Teleports light DOM children to a target container.
47
- *
48
- * Children are moved back into the portal when the element disconnects,
49
- * allowing the portal and its children to be moved or garbage-collected
50
- * correctly.
51
- *
52
- * @slot - Content to teleport.
53
- * @attr {string} target - CSS selector for the destination container (default: "body").
54
- * @attr {"shadow" | "document"} target-root - Where to resolve the target selector.
55
- */
56
- let DuiPortal = (() => {
57
- let _classSuper = LitElement;
58
- let _target_decorators;
59
- let _target_initializers = [];
60
- let _target_extraInitializers = [];
61
- let _targetRoot_decorators;
62
- let _targetRoot_initializers = [];
63
- let _targetRoot_extraInitializers = [];
64
- let _targetElement_decorators;
65
- let _targetElement_initializers = [];
66
- let _targetElement_extraInitializers = [];
67
- return class DuiPortal extends _classSuper {
68
- static {
69
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
70
- _target_decorators = [property({ type: String })];
71
- _targetRoot_decorators = [property({ type: String, attribute: "target-root", reflect: true })];
72
- _targetElement_decorators = [property({ attribute: false })];
73
- __esDecorate(this, null, _target_decorators, { kind: "accessor", name: "target", static: false, private: false, access: { has: obj => "target" in obj, get: obj => obj.target, set: (obj, value) => { obj.target = value; } }, metadata: _metadata }, _target_initializers, _target_extraInitializers);
74
- __esDecorate(this, null, _targetRoot_decorators, { kind: "accessor", name: "targetRoot", static: false, private: false, access: { has: obj => "targetRoot" in obj, get: obj => obj.targetRoot, set: (obj, value) => { obj.targetRoot = value; } }, metadata: _metadata }, _targetRoot_initializers, _targetRoot_extraInitializers);
75
- __esDecorate(this, null, _targetElement_decorators, { kind: "accessor", name: "targetElement", static: false, private: false, access: { has: obj => "targetElement" in obj, get: obj => obj.targetElement, set: (obj, value) => { obj.targetElement = value; } }, metadata: _metadata }, _targetElement_initializers, _targetElement_extraInitializers);
76
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
77
- }
78
- static tagName = "dui-portal";
79
- static styles = [styles];
80
- #target_accessor_storage = __runInitializers(this, _target_initializers, "body");
81
- /** CSS selector for the destination container. */
82
- get target() { return this.#target_accessor_storage; }
83
- set target(value) { this.#target_accessor_storage = value; }
84
- #targetRoot_accessor_storage = (__runInitializers(this, _target_extraInitializers), __runInitializers(this, _targetRoot_initializers, "document"));
85
- /** Where to resolve the target selector: "document" (default) or "shadow". */
86
- get targetRoot() { return this.#targetRoot_accessor_storage; }
87
- set targetRoot(value) { this.#targetRoot_accessor_storage = value; }
88
- #targetElement_accessor_storage = (__runInitializers(this, _targetRoot_extraInitializers), __runInitializers(this, _targetElement_initializers, void 0));
89
- /** Direct element reference for cross-shadow-root targets. Takes precedence over `target` selector. */
90
- get targetElement() { return this.#targetElement_accessor_storage; }
91
- set targetElement(value) { this.#targetElement_accessor_storage = value; }
92
- #container = (__runInitializers(this, _targetElement_extraInitializers), undefined);
93
- #movedNodes = new Set();
94
- #isMoving = false;
95
- #queryTarget() {
96
- const root = getRootDocument(this, {
97
- composed: this.targetRoot === "document",
98
- });
99
- return root?.querySelector(this.target) ?? undefined;
100
- }
101
- connectedCallback() {
102
- super.connectedCallback();
103
- this.#container = this.targetElement ?? this.#queryTarget();
104
- if (this.#container && this.childNodes.length > 0) {
105
- this.#moveChildrenToTarget();
106
- }
107
- }
108
- disconnectedCallback() {
109
- super.disconnectedCallback();
110
- this.#detach();
111
- }
112
- updated(changed) {
113
- if (changed.has("target") ||
114
- changed.has("targetRoot") ||
115
- changed.has("targetElement")) {
116
- this.#detach();
117
- this.#attach();
118
- }
119
- }
120
- #attach() {
121
- this.#container = this.targetElement ?? this.#queryTarget();
122
- this.#moveChildrenToTarget();
123
- }
124
- #detach() {
125
- if (this.#movedNodes.size === 0)
126
- return;
127
- this.#isMoving = true;
128
- for (const node of this.#movedNodes) {
129
- this.append(node);
130
- }
131
- this.#movedNodes.clear();
132
- this.#isMoving = false;
133
- this.#container = undefined;
134
- }
135
- #moveChildrenToTarget() {
136
- if (!this.#container) {
137
- throw new Error(`Portal target does not exist: ${this.target}`);
138
- }
139
- this.#isMoving = true;
140
- const nodes = Array.from(this.childNodes);
141
- for (const node of nodes) {
142
- this.#container.appendChild(node);
143
- this.#movedNodes.add(node);
144
- }
145
- this.#isMoving = false;
146
- }
147
- #handleSlotChange = () => {
148
- if (this.#isMoving || !this.#container)
149
- return;
150
- this.#moveChildrenToTarget();
151
- };
152
- render() {
153
- return html `<slot @slotchange=${this.#handleSlotChange}></slot>`;
154
- }
155
- };
156
- })();
157
- export { DuiPortal };
1
+ import { css } from "lit";
2
+ import { DuiPortalPrimitive } from "@deepfuture/dui-primitives/portal";
3
+ import "../_install.js";
4
+ const styles = css ``;
5
+ export class DuiPortal extends DuiPortalPrimitive {
6
+ static styles = [...DuiPortalPrimitive.styles, styles];
7
+ }
8
+ customElements.define(DuiPortal.tagName, DuiPortal);
@@ -1,9 +1,9 @@
1
- import { DuiPreviewCard, openChangeEvent } from "./preview-card.js";
2
- export { DuiPreviewCard, openChangeEvent };
3
- export type { PreviewCardOpenChangeDetail } from "./preview-card.js";
4
- import { DuiPreviewCardTrigger } from "./preview-card-trigger.js";
5
- export { DuiPreviewCardTrigger };
6
- import { DuiPreviewCardPopup } from "./preview-card-popup.js";
7
- export { DuiPreviewCardPopup };
8
- export type { PreviewCardContext, PreviewCardSide } from "./preview-card-context.js";
9
- export declare const previewCardFamily: (typeof DuiPreviewCard | typeof DuiPreviewCardTrigger | typeof DuiPreviewCardPopup)[];
1
+ import "./preview-card.js";
2
+ import "./preview-card-popup.js";
3
+ import "./preview-card-trigger.js";
4
+ export { DuiPreviewCard } from "./preview-card.js";
5
+ export { DuiPreviewCardPopup } from "./preview-card-popup.js";
6
+ export { DuiPreviewCardTrigger } from "./preview-card-trigger.js";
7
+ export type { PreviewCardOpenChangeDetail } from "@deepfuture/dui-primitives/preview-card";
8
+ export type { PreviewCardContext, PreviewCardSide } from "@deepfuture/dui-primitives/preview-card";
9
+ export { openChangeEvent } from "@deepfuture/dui-primitives/preview-card";
@@ -1,7 +1,7 @@
1
- import { DuiPreviewCard, openChangeEvent } from "./preview-card.js";
2
- export { DuiPreviewCard, openChangeEvent };
3
- import { DuiPreviewCardTrigger } from "./preview-card-trigger.js";
4
- export { DuiPreviewCardTrigger };
5
- import { DuiPreviewCardPopup } from "./preview-card-popup.js";
6
- export { DuiPreviewCardPopup };
7
- export const previewCardFamily = [DuiPreviewCard, DuiPreviewCardTrigger, DuiPreviewCardPopup];
1
+ import "./preview-card.js";
2
+ import "./preview-card-popup.js";
3
+ import "./preview-card-trigger.js";
4
+ export { DuiPreviewCard } from "./preview-card.js";
5
+ export { DuiPreviewCardPopup } from "./preview-card-popup.js";
6
+ export { DuiPreviewCardTrigger } from "./preview-card-trigger.js";
7
+ export { openChangeEvent } from "@deepfuture/dui-primitives/preview-card";
@@ -1,16 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/preview-card */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * `<dui-preview-card-popup>` — The preview card popup content container.
5
- *
6
- * @slot - Preview card content.
7
- */
8
- export declare class DuiPreviewCardPopup extends LitElement {
9
- #private;
10
- static tagName: "dui-preview-card-popup";
1
+ import { DuiPreviewCardPopupPrimitive } from "@deepfuture/dui-primitives/preview-card";
2
+ import "../_install.js";
3
+ export declare class DuiPreviewCardPopup extends DuiPreviewCardPopupPrimitive {
11
4
  static styles: import("lit").CSSResult[];
12
- /** Whether to show an arrow pointing to the trigger. */
13
- accessor showArrow: boolean;
14
- updated(): void;
15
- render(): TemplateResult;
16
5
  }
@@ -1,198 +1,33 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/preview-card */
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
37
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
38
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
39
- };
40
- import { css, html, LitElement } from "lit";
41
- import { property, state } from "lit/decorators.js";
42
- import { ContextConsumer } from "@lit/context";
43
- import { base } from "@deepfuture/dui-core/base";
44
- import { previewCardContext } from "./preview-card-context.js";
45
- import { FloatingPortalController } from "@deepfuture/dui-core/floating-portal-controller";
46
- import { renderArrow, } from "@deepfuture/dui-core/floating-popup-utils";
47
- const hostStyles = css `
48
- :host {
49
- display: contents;
1
+ import { css } from "lit";
2
+ import { DuiPreviewCardPopupPrimitive } from "@deepfuture/dui-primitives/preview-card";
3
+ import "../_install.js";
4
+ const styles = css `
5
+ .Popup {
6
+ padding: var(--preview-card-popup-padding, var(--space-4));
7
+ border-radius: var(--radius-md);
8
+ background: var(--surface-3);
9
+ color: var(--text-1);
10
+ font-family: var(--font-sans);
11
+ font-size: var(--text-sm);
12
+ line-height: var(--text-sm--line-height);
13
+ box-shadow: var(--shadow-lg);
14
+ border: var(--border-width-thin) solid var(--border);
15
+ max-width: var(--max-width, var(--space-80));
16
+ transition-duration: var(--duration-faster);
17
+ transition-timing-function: var(--ease-out-3);
50
18
  }
51
19
 
52
- .slot-wrapper {
53
- display: none;
20
+ .Arrow .arrow-fill {
21
+ fill: var(--surface-3);
54
22
  }
55
- `;
56
- /** Structural styles injected into the portal positioner. */
57
- const portalPopupStyles = [
58
- css `
59
- .Popup {
60
- box-sizing: border-box;
61
- pointer-events: auto;
62
- transform-origin: var(--transform-origin, center);
63
- opacity: 1;
64
- transform: scale(1);
65
- transition-property: opacity, transform;
66
- }
67
-
68
- .Popup[data-starting-style],
69
- .Popup[data-ending-style] {
70
- opacity: 0;
71
- transform: scale(0.96);
72
- }
73
-
74
- .Popup[data-side="top"] {
75
- --transform-origin: bottom center;
76
- }
77
-
78
- .Popup[data-side="bottom"] {
79
- --transform-origin: top center;
80
- }
81
23
 
82
- .Arrow {
83
- position: absolute;
84
- width: 10px;
85
- height: 6px;
86
- }
87
-
88
- .Arrow[data-side="top"] {
89
- bottom: -5px;
90
- left: 50%;
91
- transform: translateX(-50%);
92
- }
93
-
94
- .Arrow[data-side="bottom"] {
95
- top: -5px;
96
- left: 50%;
97
- transform: translateX(-50%) rotate(180deg);
98
- }
99
- `,
100
- ];
101
- /**
102
- * `<dui-preview-card-popup>` — The preview card popup content container.
103
- *
104
- * @slot - Preview card content.
105
- */
106
- let DuiPreviewCardPopup = (() => {
107
- let _classSuper = LitElement;
108
- let _showArrow_decorators;
109
- let _showArrow_initializers = [];
110
- let _showArrow_extraInitializers = [];
111
- let _private_side_decorators;
112
- let _private_side_initializers = [];
113
- let _private_side_extraInitializers = [];
114
- let _private_side_descriptor;
115
- return class DuiPreviewCardPopup extends _classSuper {
116
- static {
117
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
118
- _showArrow_decorators = [property({ type: Boolean, attribute: "show-arrow" })];
119
- _private_side_decorators = [state()];
120
- __esDecorate(this, null, _showArrow_decorators, { kind: "accessor", name: "showArrow", static: false, private: false, access: { has: obj => "showArrow" in obj, get: obj => obj.showArrow, set: (obj, value) => { obj.showArrow = value; } }, metadata: _metadata }, _showArrow_initializers, _showArrow_extraInitializers);
121
- __esDecorate(this, _private_side_descriptor = { get: __setFunctionName(function () { return this.#side_accessor_storage; }, "#side", "get"), set: __setFunctionName(function (value) { this.#side_accessor_storage = value; }, "#side", "set") }, _private_side_decorators, { kind: "accessor", name: "#side", static: false, private: true, access: { has: obj => #side in obj, get: obj => obj.#side, set: (obj, value) => { obj.#side = value; } }, metadata: _metadata }, _private_side_initializers, _private_side_extraInitializers);
122
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
123
- }
124
- static tagName = "dui-preview-card-popup";
125
- static styles = [base, hostStyles];
126
- #showArrow_accessor_storage = __runInitializers(this, _showArrow_initializers, true);
127
- /** Whether to show an arrow pointing to the trigger. */
128
- get showArrow() { return this.#showArrow_accessor_storage; }
129
- set showArrow(value) { this.#showArrow_accessor_storage = value; }
130
- #side_accessor_storage = (__runInitializers(this, _showArrow_extraInitializers), __runInitializers(this, _private_side_initializers, "top"));
131
- get #side() { return _private_side_descriptor.get.call(this); }
132
- set #side(value) { return _private_side_descriptor.set.call(this, value); }
133
- #ctx = (__runInitializers(this, _private_side_extraInitializers), new ContextConsumer(this, {
134
- context: previewCardContext,
135
- subscribe: true,
136
- }));
137
- #wasOpen = false;
138
- #portal = new FloatingPortalController(this, {
139
- getAnchor: () => this.#ctx.value?.triggerEl,
140
- matchWidth: false,
141
- placement: "top",
142
- offset: 8,
143
- styles: portalPopupStyles,
144
- contentContainer: ".PreviewCardContent",
145
- forwardProperties: ["--preview-card-popup-padding"],
146
- onPosition: ({ placement }) => {
147
- const actualSide = placement.split("-")[0];
148
- if (actualSide !== this.#side) {
149
- this.#side = actualSide;
150
- }
151
- },
152
- renderPopup: (portal) => {
153
- const popupId = this.#ctx.value?.popupId ?? "";
154
- return html `
155
- <div
156
- class="Popup"
157
- id="${popupId}"
158
- role="tooltip"
159
- ?data-starting-style="${portal.isStarting}"
160
- ?data-ending-style="${portal.isEnding}"
161
- data-side="${this.#side}"
162
- @mouseenter="${this.#handleMouseEnter}"
163
- @mouseleave="${this.#handleMouseLeave}"
164
- >
165
- <div class="PreviewCardContent"></div>
166
- ${this.showArrow ? renderArrow(this.#side) : ""}
167
- </div>
168
- `;
169
- },
170
- });
171
- #handleMouseEnter = () => {
172
- this.#ctx.value?.openPreviewCard();
173
- };
174
- #handleMouseLeave = () => {
175
- this.#ctx.value?.closePreviewCard();
176
- };
177
- updated() {
178
- const isOpen = this.#ctx.value?.open ?? false;
179
- if (isOpen && !this.#wasOpen) {
180
- this.#updatePlacement();
181
- this.#portal.open();
182
- }
183
- else if (!isOpen && this.#wasOpen) {
184
- this.#portal.close();
185
- }
186
- this.#wasOpen = isOpen;
187
- }
188
- #updatePlacement() {
189
- const side = this.#ctx.value?.side ?? "top";
190
- this.#portal.placement = side;
191
- this.#portal.offset = this.#ctx.value?.sideOffset ?? 8;
192
- }
193
- render() {
194
- return html `<div class="slot-wrapper"><slot></slot></div>`;
195
- }
196
- };
197
- })();
198
- export { DuiPreviewCardPopup };
24
+ .Arrow .arrow-stroke {
25
+ fill: none;
26
+ stroke: var(--border);
27
+ stroke-width: 1px;
28
+ }
29
+ `;
30
+ export class DuiPreviewCardPopup extends DuiPreviewCardPopupPrimitive {
31
+ static styles = [...DuiPreviewCardPopupPrimitive.styles, styles];
32
+ }
33
+ customElements.define(DuiPreviewCardPopup.tagName, DuiPreviewCardPopup);
@@ -1,13 +1,4 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/preview-card */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * `<dui-preview-card-trigger>` — The element that triggers the preview card on hover/focus.
5
- *
6
- * @slot - Content that triggers the preview card.
7
- */
8
- export declare class DuiPreviewCardTrigger extends LitElement {
9
- #private;
10
- static tagName: "dui-preview-card-trigger";
11
- static styles: import("lit").CSSResult[];
12
- render(): TemplateResult;
1
+ import { DuiPreviewCardTriggerPrimitive } from "@deepfuture/dui-primitives/preview-card";
2
+ import "../_install.js";
3
+ export declare class DuiPreviewCardTrigger extends DuiPreviewCardTriggerPrimitive {
13
4
  }
@@ -1,75 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/preview-card */
2
- import { css, html, LitElement } from "lit";
3
- import { ContextConsumer } from "@lit/context";
4
- import { base } from "@deepfuture/dui-core/base";
5
- import { previewCardContext } from "./preview-card-context.js";
6
- const hostStyles = css `
7
- :host {
8
- display: contents;
9
- }
10
- `;
11
- const componentStyles = css `
12
- .Trigger {
13
- display: contents;
14
- }
15
- `;
16
- /**
17
- * `<dui-preview-card-trigger>` — The element that triggers the preview card on hover/focus.
18
- *
19
- * @slot - Content that triggers the preview card.
20
- */
21
- export class DuiPreviewCardTrigger extends LitElement {
22
- static tagName = "dui-preview-card-trigger";
23
- static styles = [base, hostStyles, componentStyles];
24
- #ctx = new ContextConsumer(this, {
25
- context: previewCardContext,
26
- subscribe: true,
27
- });
28
- #handleMouseEnter = () => {
29
- this.#updateTriggerEl();
30
- this.#ctx.value?.openPreviewCard();
31
- };
32
- #handleMouseLeave = () => {
33
- this.#ctx.value?.closePreviewCard();
34
- };
35
- #handleFocus = () => {
36
- this.#updateTriggerEl();
37
- this.#ctx.value?.openPreviewCard();
38
- };
39
- #handleBlur = () => {
40
- this.#ctx.value?.closePreviewCard();
41
- };
42
- #handleKeyDown = (e) => {
43
- if (e.key === "Escape" && this.#ctx.value?.open) {
44
- this.#ctx.value?.closePreviewCard();
45
- }
46
- };
47
- #updateTriggerEl() {
48
- const slot = this.shadowRoot?.querySelector("slot");
49
- const slotted = slot?.assignedElements({ flatten: true });
50
- const el = slotted?.[0] ?? this;
51
- this.#ctx.value?.setTriggerEl(el);
52
- }
53
- render() {
54
- const isOpen = this.#ctx.value?.open ?? false;
55
- const popupId = this.#ctx.value?.popupId ?? "";
56
- const triggerId = this.#ctx.value?.triggerId ?? "";
57
- return html `
58
- <span
59
- class="Trigger"
60
- part="trigger"
61
- id="${triggerId}"
62
- tabindex="0"
63
- aria-describedby="${isOpen ? popupId : ""}"
64
- ?data-popup-open="${isOpen}"
65
- @mouseenter="${this.#handleMouseEnter}"
66
- @mouseleave="${this.#handleMouseLeave}"
67
- @focus="${this.#handleFocus}"
68
- @blur="${this.#handleBlur}"
69
- @keydown="${this.#handleKeyDown}"
70
- >
71
- <slot></slot>
72
- </span>
73
- `;
74
- }
1
+ import { DuiPreviewCardTriggerPrimitive } from "@deepfuture/dui-primitives/preview-card";
2
+ import "../_install.js";
3
+ export class DuiPreviewCardTrigger extends DuiPreviewCardTriggerPrimitive {
75
4
  }
5
+ customElements.define(DuiPreviewCardTrigger.tagName, DuiPreviewCardTrigger);
@@ -1,35 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/preview-card */
2
- import { LitElement, type PropertyValues, type TemplateResult } from "lit";
3
- import { type PreviewCardContext, type PreviewCardSide } from "./preview-card-context.js";
4
- export type PreviewCardOpenChangeDetail = {
5
- open: boolean;
6
- };
7
- export declare const openChangeEvent: (detail: PreviewCardOpenChangeDetail) => CustomEvent<PreviewCardOpenChangeDetail>;
8
- /**
9
- * `<dui-preview-card>` — A preview card root that provides context for trigger and popup.
10
- *
11
- * @slot - Default slot for dui-preview-card-trigger and dui-preview-card-popup.
12
- * @fires open-change - Dispatched when the preview card opens or closes.
13
- */
14
- export declare class DuiPreviewCard extends LitElement {
15
- #private;
16
- static tagName: "dui-preview-card";
1
+ import { DuiPreviewCardPrimitive } from "@deepfuture/dui-primitives/preview-card";
2
+ import "../_install.js";
3
+ export declare class DuiPreviewCard extends DuiPreviewCardPrimitive {
17
4
  static styles: import("lit").CSSResult[];
18
- /** Controlled open state. */
19
- accessor open: boolean;
20
- /** Default open state for uncontrolled usage. */
21
- accessor defaultOpen: boolean;
22
- /** Which side of the trigger the preview card appears on. */
23
- accessor side: PreviewCardSide;
24
- /** Offset from the trigger in pixels. */
25
- accessor sideOffset: number;
26
- /** Delay before opening in milliseconds. */
27
- accessor delay: number;
28
- /** Delay before closing in milliseconds. */
29
- accessor closeDelay: number;
30
- accessor _ctx: PreviewCardContext;
31
- connectedCallback(): void;
32
- disconnectedCallback(): void;
33
- protected willUpdate(changed: PropertyValues): void;
34
- render(): TemplateResult;
35
5
  }