@deepfuture/dui-components 0.0.21 → 1.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 (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 +92 -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 +87 -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 +220 -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 +82 -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 +14 -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 +23 -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 +85 -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 +40 -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 +125 -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 +16 -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 +59 -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 +306 -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 +32 -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 +93 -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 +31 -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
@@ -1,418 +1,40 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/dropzone */
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 { base } from "@deepfuture/dui-core/base";
43
- import { customEvent } from "@deepfuture/dui-core/event";
44
- // Event Factories
45
- export const dropzoneDropEvent = customEvent("drop", {
46
- bubbles: true,
47
- composed: true,
48
- });
49
- export const dropAcceptedEvent = customEvent("drop-accepted", { bubbles: true, composed: true });
50
- export const dropRejectedEvent = customEvent("drop-rejected", { bubbles: true, composed: true });
51
- export const dropzoneDragEnterEvent = customEvent("dragenter", {
52
- bubbles: true,
53
- composed: true,
54
- });
55
- export const dropzoneDragOverEvent = customEvent("dragover", {
56
- bubbles: true,
57
- composed: true,
58
- });
59
- export const dropzoneDragLeaveEvent = customEvent("dragleave", {
60
- bubbles: true,
61
- composed: true,
62
- });
63
- export const dropzoneErrorEvent = customEvent("dropzone-error", { bubbles: true, composed: true });
64
- /** Structural styles only — layout CSS. */
1
+ import { css } from "lit";
2
+ import { DuiDropzonePrimitive } from "@deepfuture/dui-primitives/dropzone";
3
+ import "../_install.js";
65
4
  const styles = css `
66
- :host {
67
- display: block;
5
+ :host([disabled]) {
6
+ opacity: 0.4;
68
7
  }
69
8
 
70
- :host([disabled]) {
71
- pointer-events: none;
9
+ [part="root"] {
10
+ border: var(--border-width-medium) dashed var(--border);
11
+ border-radius: var(--radius-md);
12
+ background: var(--background);
13
+ color: var(--text-1);
14
+ font-size: var(--text-sm);
15
+ padding: var(--space-4);
16
+ transition-property: border-color, background, color, box-shadow, filter, transform;
17
+ transition-duration: var(--duration-fast);
72
18
  }
73
19
 
74
- :host([no-style]) [part="root"] {
75
- all: unset;
20
+ [part="root"]:hover {
21
+ border-color: var(--border-strong);
22
+ background: var(--surface-1);
76
23
  }
77
24
 
78
- [part="root"] {
79
- text-align: center;
80
- cursor: pointer;
25
+ [part="root"]:focus-visible {
26
+ outline: none;
27
+ box-shadow:
28
+ 0 0 0 var(--focus-ring-offset) var(--background),
29
+ 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color);
81
30
  }
82
31
 
83
- input[type="file"] {
84
- display: none;
32
+ [part="root"][data-dragover] {
33
+ border-color: var(--accent);
34
+ background: var(--accent-subtle);
85
35
  }
86
36
  `;
87
- /**
88
- * `<dui-dropzone>` A drag-and-drop file upload area.
89
- *
90
- * @slot - Custom content for the dropzone area.
91
- * @csspart root - The dropzone container.
92
- *
93
- * @fires drop - Files dropped or selected (valid or invalid).
94
- * @fires drop-accepted - Files that passed validation.
95
- * @fires drop-rejected - Files that failed validation.
96
- * @fires dragenter - File dragged over the dropzone.
97
- * @fires dragover - File hovering over the dropzone.
98
- * @fires dragleave - File dragged away from the dropzone.
99
- * @fires dropzone-error - Internal error (e.g. file dialog failure).
100
- */
101
- let DuiDropzone = (() => {
102
- var _a;
103
- let _classSuper = LitElement;
104
- let _accept_decorators;
105
- let _accept_initializers = [];
106
- let _accept_extraInitializers = [];
107
- let _multiple_decorators;
108
- let _multiple_initializers = [];
109
- let _multiple_extraInitializers = [];
110
- let _disabled_decorators;
111
- let _disabled_initializers = [];
112
- let _disabled_extraInitializers = [];
113
- let _maxFiles_decorators;
114
- let _maxFiles_initializers = [];
115
- let _maxFiles_extraInitializers = [];
116
- let _maxSize_decorators;
117
- let _maxSize_initializers = [];
118
- let _maxSize_extraInitializers = [];
119
- let _minSize_decorators;
120
- let _minSize_initializers = [];
121
- let _minSize_extraInitializers = [];
122
- let _autoFocus_decorators;
123
- let _autoFocus_initializers = [];
124
- let _autoFocus_extraInitializers = [];
125
- let _noStyle_decorators;
126
- let _noStyle_initializers = [];
127
- let _noStyle_extraInitializers = [];
128
- let _private_isDragOver_decorators;
129
- let _private_isDragOver_initializers = [];
130
- let _private_isDragOver_extraInitializers = [];
131
- let _private_isDragOver_descriptor;
132
- return class DuiDropzone extends _classSuper {
133
- static {
134
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
135
- _accept_decorators = [property({ type: String, reflect: true })];
136
- _multiple_decorators = [property({ type: Boolean, reflect: true })];
137
- _disabled_decorators = [property({ type: Boolean, reflect: true })];
138
- _maxFiles_decorators = [property({ type: Number, reflect: true, attribute: "max-files" })];
139
- _maxSize_decorators = [property({ type: Number, reflect: true, attribute: "max-size" })];
140
- _minSize_decorators = [property({ type: Number, reflect: true, attribute: "min-size" })];
141
- _autoFocus_decorators = [property({ type: Boolean, reflect: true, attribute: "auto-focus" })];
142
- _noStyle_decorators = [property({ type: Boolean, reflect: true, attribute: "no-style" })];
143
- _private_isDragOver_decorators = [state()];
144
- __esDecorate(this, null, _accept_decorators, { kind: "accessor", name: "accept", static: false, private: false, access: { has: obj => "accept" in obj, get: obj => obj.accept, set: (obj, value) => { obj.accept = value; } }, metadata: _metadata }, _accept_initializers, _accept_extraInitializers);
145
- __esDecorate(this, null, _multiple_decorators, { kind: "accessor", name: "multiple", static: false, private: false, access: { has: obj => "multiple" in obj, get: obj => obj.multiple, set: (obj, value) => { obj.multiple = value; } }, metadata: _metadata }, _multiple_initializers, _multiple_extraInitializers);
146
- __esDecorate(this, null, _disabled_decorators, { kind: "accessor", name: "disabled", static: false, private: false, access: { has: obj => "disabled" in obj, get: obj => obj.disabled, set: (obj, value) => { obj.disabled = value; } }, metadata: _metadata }, _disabled_initializers, _disabled_extraInitializers);
147
- __esDecorate(this, null, _maxFiles_decorators, { kind: "accessor", name: "maxFiles", static: false, private: false, access: { has: obj => "maxFiles" in obj, get: obj => obj.maxFiles, set: (obj, value) => { obj.maxFiles = value; } }, metadata: _metadata }, _maxFiles_initializers, _maxFiles_extraInitializers);
148
- __esDecorate(this, null, _maxSize_decorators, { kind: "accessor", name: "maxSize", static: false, private: false, access: { has: obj => "maxSize" in obj, get: obj => obj.maxSize, set: (obj, value) => { obj.maxSize = value; } }, metadata: _metadata }, _maxSize_initializers, _maxSize_extraInitializers);
149
- __esDecorate(this, null, _minSize_decorators, { kind: "accessor", name: "minSize", static: false, private: false, access: { has: obj => "minSize" in obj, get: obj => obj.minSize, set: (obj, value) => { obj.minSize = value; } }, metadata: _metadata }, _minSize_initializers, _minSize_extraInitializers);
150
- __esDecorate(this, null, _autoFocus_decorators, { kind: "accessor", name: "autoFocus", static: false, private: false, access: { has: obj => "autoFocus" in obj, get: obj => obj.autoFocus, set: (obj, value) => { obj.autoFocus = value; } }, metadata: _metadata }, _autoFocus_initializers, _autoFocus_extraInitializers);
151
- __esDecorate(this, null, _noStyle_decorators, { kind: "accessor", name: "noStyle", static: false, private: false, access: { has: obj => "noStyle" in obj, get: obj => obj.noStyle, set: (obj, value) => { obj.noStyle = value; } }, metadata: _metadata }, _noStyle_initializers, _noStyle_extraInitializers);
152
- __esDecorate(this, _private_isDragOver_descriptor = { get: __setFunctionName(function () { return this.#isDragOver_accessor_storage; }, "#isDragOver", "get"), set: __setFunctionName(function (value) { this.#isDragOver_accessor_storage = value; }, "#isDragOver", "set") }, _private_isDragOver_decorators, { kind: "accessor", name: "#isDragOver", static: false, private: true, access: { has: obj => #isDragOver in obj, get: obj => obj.#isDragOver, set: (obj, value) => { obj.#isDragOver = value; } }, metadata: _metadata }, _private_isDragOver_initializers, _private_isDragOver_extraInitializers);
153
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
154
- }
155
- static tagName = "dui-dropzone";
156
- static styles = [base, styles];
157
- static ERROR_CODES = {
158
- FILE_DIALOG_OPEN_FAILED: "FILE_DIALOG_OPEN_FAILED",
159
- FILE_PROCESSING_FAILED: "FILE_PROCESSING_FAILED",
160
- };
161
- static REJECTION_CODES = {
162
- TOO_MANY_FILES: "TOO_MANY_FILES",
163
- FILE_TOO_LARGE: "FILE_TOO_LARGE",
164
- FILE_TOO_SMALL: "FILE_TOO_SMALL",
165
- FILE_INVALID_TYPE: "FILE_INVALID_TYPE",
166
- };
167
- #accept_accessor_storage = __runInitializers(this, _accept_initializers, void 0);
168
- /** Accepted file types (e.g. "image/*,.pdf"). */
169
- get accept() { return this.#accept_accessor_storage; }
170
- set accept(value) { this.#accept_accessor_storage = value; }
171
- #multiple_accessor_storage = (__runInitializers(this, _accept_extraInitializers), __runInitializers(this, _multiple_initializers, false));
172
- /** Allow multiple files. */
173
- get multiple() { return this.#multiple_accessor_storage; }
174
- set multiple(value) { this.#multiple_accessor_storage = value; }
175
- #disabled_accessor_storage = (__runInitializers(this, _multiple_extraInitializers), __runInitializers(this, _disabled_initializers, false));
176
- /** Disable the dropzone. */
177
- get disabled() { return this.#disabled_accessor_storage; }
178
- set disabled(value) { this.#disabled_accessor_storage = value; }
179
- #maxFiles_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _maxFiles_initializers, Infinity));
180
- /** Maximum number of files allowed. */
181
- get maxFiles() { return this.#maxFiles_accessor_storage; }
182
- set maxFiles(value) { this.#maxFiles_accessor_storage = value; }
183
- #maxSize_accessor_storage = (__runInitializers(this, _maxFiles_extraInitializers), __runInitializers(this, _maxSize_initializers, Infinity));
184
- /** Maximum file size in bytes. */
185
- get maxSize() { return this.#maxSize_accessor_storage; }
186
- set maxSize(value) { this.#maxSize_accessor_storage = value; }
187
- #minSize_accessor_storage = (__runInitializers(this, _maxSize_extraInitializers), __runInitializers(this, _minSize_initializers, 0));
188
- /** Minimum file size in bytes. */
189
- get minSize() { return this.#minSize_accessor_storage; }
190
- set minSize(value) { this.#minSize_accessor_storage = value; }
191
- #autoFocus_accessor_storage = (__runInitializers(this, _minSize_extraInitializers), __runInitializers(this, _autoFocus_initializers, false));
192
- /** Auto-focus the dropzone on mount. */
193
- get autoFocus() { return this.#autoFocus_accessor_storage; }
194
- set autoFocus(value) { this.#autoFocus_accessor_storage = value; }
195
- #noStyle_accessor_storage = (__runInitializers(this, _autoFocus_extraInitializers), __runInitializers(this, _noStyle_initializers, false));
196
- /** Disable default dropzone styling. */
197
- get noStyle() { return this.#noStyle_accessor_storage; }
198
- set noStyle(value) { this.#noStyle_accessor_storage = value; }
199
- #isDragOver_accessor_storage = (__runInitializers(this, _noStyle_extraInitializers), __runInitializers(this, _private_isDragOver_initializers, false));
200
- get #isDragOver() { return _private_isDragOver_descriptor.get.call(this); }
201
- set #isDragOver(value) { return _private_isDragOver_descriptor.set.call(this, value); }
202
- connectedCallback() {
203
- super.connectedCallback();
204
- if (this.autoFocus && !this.disabled) {
205
- this.updateComplete.then(() => {
206
- this.shadowRoot?.querySelector("[part='root']")?.focus();
207
- });
208
- }
209
- }
210
- /** Opens the native file dialog programmatically. */
211
- openFileDialog() {
212
- if (this.disabled)
213
- return;
214
- const input = this.shadowRoot?.querySelector('input[type="file"]');
215
- if (!input)
216
- return;
217
- try {
218
- input.click();
219
- }
220
- catch (error) {
221
- this.dispatchEvent(dropzoneErrorEvent({
222
- error,
223
- code: DuiDropzone.ERROR_CODES.FILE_DIALOG_OPEN_FAILED,
224
- }));
225
- }
226
- }
227
- #handleDragEnter = (__runInitializers(this, _private_isDragOver_extraInitializers), (e) => {
228
- e.preventDefault();
229
- e.stopPropagation();
230
- if (this.disabled)
231
- return;
232
- this.#isDragOver = true;
233
- this.dispatchEvent(dropzoneDragEnterEvent());
234
- });
235
- #handleDragOver = (e) => {
236
- e.preventDefault();
237
- e.stopPropagation();
238
- if (this.disabled)
239
- return;
240
- if (e.dataTransfer) {
241
- e.dataTransfer.dropEffect = "copy";
242
- }
243
- this.dispatchEvent(dropzoneDragOverEvent());
244
- };
245
- #handleDragLeave = (e) => {
246
- e.preventDefault();
247
- e.stopPropagation();
248
- if (this.disabled)
249
- return;
250
- this.#isDragOver = false;
251
- this.dispatchEvent(dropzoneDragLeaveEvent());
252
- };
253
- #handleDrop = (e) => {
254
- e.preventDefault();
255
- e.stopPropagation();
256
- if (this.disabled)
257
- return;
258
- this.#isDragOver = false;
259
- try {
260
- const files = Array.from(e.dataTransfer?.files ?? []);
261
- this.#processFiles(files);
262
- }
263
- catch (error) {
264
- this.dispatchEvent(dropzoneErrorEvent({
265
- error,
266
- code: DuiDropzone.ERROR_CODES.FILE_PROCESSING_FAILED,
267
- }));
268
- }
269
- };
270
- #handleClick = () => {
271
- if (this.disabled)
272
- return;
273
- this.openFileDialog();
274
- };
275
- #handleKeyDown = (e) => {
276
- if (this.disabled)
277
- return;
278
- if (e.key === "Enter" || e.key === " ") {
279
- e.preventDefault();
280
- this.openFileDialog();
281
- }
282
- };
283
- #handleInputChange = (e) => {
284
- if (this.disabled)
285
- return;
286
- const input = e.target;
287
- const files = Array.from(input.files ?? []);
288
- try {
289
- this.#processFiles(files);
290
- }
291
- catch (error) {
292
- this.dispatchEvent(dropzoneErrorEvent({
293
- error,
294
- code: DuiDropzone.ERROR_CODES.FILE_PROCESSING_FAILED,
295
- }));
296
- }
297
- finally {
298
- input.value = "";
299
- }
300
- };
301
- #processFiles(files) {
302
- const { acceptedFiles, rejectedFiles } = this.#validateFiles(files);
303
- this.dispatchEvent(dropzoneDropEvent({ acceptedFiles, rejectedFiles }));
304
- if (acceptedFiles.length > 0) {
305
- this.dispatchEvent(dropAcceptedEvent({ acceptedFiles }));
306
- }
307
- if (rejectedFiles.length > 0) {
308
- this.dispatchEvent(dropRejectedEvent({ rejectedFiles }));
309
- }
310
- }
311
- #validateFiles(files) {
312
- const acceptedFiles = [];
313
- const rejectedFiles = [];
314
- const maxAllowed = this.multiple ? this.maxFiles : 1;
315
- if (files.length > maxAllowed) {
316
- for (const file of files) {
317
- rejectedFiles.push({
318
- file,
319
- errors: [
320
- {
321
- code: DuiDropzone.REJECTION_CODES.TOO_MANY_FILES,
322
- message: this.multiple
323
- ? `Too many files. Maximum allowed is ${this.maxFiles}.`
324
- : "Multiple files not allowed.",
325
- },
326
- ],
327
- });
328
- }
329
- return { acceptedFiles, rejectedFiles };
330
- }
331
- for (const file of files) {
332
- const errors = [];
333
- if (file.size > this.maxSize) {
334
- errors.push({
335
- code: DuiDropzone.REJECTION_CODES.FILE_TOO_LARGE,
336
- message: `File is too large. Maximum size is ${this.maxSize} bytes.`,
337
- });
338
- }
339
- if (file.size < this.minSize) {
340
- errors.push({
341
- code: DuiDropzone.REJECTION_CODES.FILE_TOO_SMALL,
342
- message: `File is too small. Minimum size is ${this.minSize} bytes.`,
343
- });
344
- }
345
- if (this.accept && !this.#isValidFileType(file)) {
346
- errors.push({
347
- code: DuiDropzone.REJECTION_CODES.FILE_INVALID_TYPE,
348
- message: `File type not accepted. Allowed types: ${this.accept}`,
349
- });
350
- }
351
- if (errors.length > 0) {
352
- rejectedFiles.push({ file, errors });
353
- }
354
- else {
355
- acceptedFiles.push(file);
356
- }
357
- }
358
- return { acceptedFiles, rejectedFiles };
359
- }
360
- #isValidFileType(file) {
361
- if (!this.accept)
362
- return true;
363
- const acceptedTypes = this.accept
364
- .split(",")
365
- .map((type) => type.trim().toLowerCase());
366
- for (const acceptedType of acceptedTypes) {
367
- if (acceptedType.startsWith(".")) {
368
- if (file.name.toLowerCase().endsWith(acceptedType)) {
369
- return true;
370
- }
371
- }
372
- else if (acceptedType.endsWith("/*")) {
373
- const baseType = acceptedType.slice(0, -2);
374
- if (file.type.toLowerCase().startsWith(baseType)) {
375
- return true;
376
- }
377
- }
378
- else {
379
- if (file.type.toLowerCase() === acceptedType) {
380
- return true;
381
- }
382
- }
383
- }
384
- return false;
385
- }
386
- render() {
387
- return html `
388
- <div
389
- part="root"
390
- tabindex="${this.disabled ? -1 : 0}"
391
- ?data-dragover="${this.#isDragOver}"
392
- ?data-disabled="${this.disabled}"
393
- @dragenter="${this.#handleDragEnter}"
394
- @dragover="${this.#handleDragOver}"
395
- @dragleave="${this.#handleDragLeave}"
396
- @drop="${this.#handleDrop}"
397
- @click="${this.#handleClick}"
398
- @keydown="${this.#handleKeyDown}"
399
- >
400
- <slot>
401
- <span>Drag and drop files here or click to select</span>
402
- </slot>
403
- </div>
404
- <input
405
- type="file"
406
- ?multiple="${this.multiple}"
407
- accept="${this.accept || ""}"
408
- ?disabled="${this.disabled}"
409
- @change="${this.#handleInputChange}"
410
- tabindex="-1"
411
- aria-hidden="true"
412
- hidden
413
- />
414
- `;
415
- }
416
- };
417
- })();
418
- export { DuiDropzone };
37
+ export class DuiDropzone extends DuiDropzonePrimitive {
38
+ static styles = [...DuiDropzonePrimitive.styles, styles];
39
+ }
40
+ customElements.define(DuiDropzone.tagName, DuiDropzone);
@@ -1,4 +1,4 @@
1
- import { DuiDropzone, dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent } from "./dropzone.js";
2
- export { DuiDropzone, dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent };
3
- export type { DropzoneErrorCode, DropzoneRejectionCode, FileRejectionError, RejectedFile, DropzoneDropDetail, DropzoneAcceptedDetail, DropzoneRejectedDetail, DropzoneErrorDetail, } from "./dropzone.js";
4
- export declare const dropzoneFamily: (typeof DuiDropzone)[];
1
+ import "./dropzone.js";
2
+ export { DuiDropzone } from "./dropzone.js";
3
+ export type { DropzoneErrorCode, DropzoneRejectionCode, FileRejectionError, RejectedFile, DropzoneDropDetail, DropzoneAcceptedDetail, DropzoneRejectedDetail, DropzoneErrorDetail, } from "@deepfuture/dui-primitives/dropzone";
4
+ export { dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent } from "@deepfuture/dui-primitives/dropzone";
package/dropzone/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { DuiDropzone, dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent } from "./dropzone.js";
2
- export { DuiDropzone, dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent };
3
- export const dropzoneFamily = [DuiDropzone];
1
+ import "./dropzone.js";
2
+ export { DuiDropzone } from "./dropzone.js";
3
+ export { dropzoneDropEvent, dropAcceptedEvent, dropRejectedEvent, dropzoneErrorEvent } from "@deepfuture/dui-primitives/dropzone";
package/field/field.d.ts CHANGED
@@ -1,32 +1,5 @@
1
- import { LitElement, type PropertyValues, type TemplateResult } from "lit";
2
- /**
3
- * `<dui-field>` Slot-based form field wrapper.
4
- *
5
- * Provides label, description, and error slots around a default-slotted
6
- * form control. Manages ARIA wiring, field state (dirty, touched, focused,
7
- * filled), disabled propagation, and label click-to-focus.
8
- *
9
- * @slot label - Label text (e.g. `<span slot="label">Email</span>`).
10
- * @slot - Default slot for the form control.
11
- * @slot description - Help text (e.g. `<span slot="description">…</span>`).
12
- * @slot error - Error message (e.g. `<span slot="error">Required</span>`).
13
- * @csspart root - The field container element.
14
- * @csspart label - The label wrapper.
15
- * @csspart description - The description wrapper.
16
- * @csspart error - The error wrapper (hidden unless invalid).
17
- */
18
- export declare class DuiField extends LitElement {
19
- #private;
20
- static tagName: "dui-field";
1
+ import { DuiFieldPrimitive } from "@deepfuture/dui-primitives/field";
2
+ import "../_install.js";
3
+ export declare class DuiField extends DuiFieldPrimitive {
21
4
  static styles: import("lit").CSSResult[];
22
- /** Whether the child control is disabled. */
23
- accessor disabled: boolean;
24
- /** Whether the field is in an invalid state. */
25
- accessor invalid: boolean;
26
- /** Layout direction: vertical (column) or horizontal (row). */
27
- accessor orientation: "vertical" | "horizontal";
28
- connectedCallback(): void;
29
- disconnectedCallback(): void;
30
- willUpdate(changed: PropertyValues): void;
31
- render(): TemplateResult;
32
5
  }