@deepfuture/dui-components 0.0.20 → 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 -193
  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 -546
  176. package/select/index.d.ts +3 -4
  177. package/select/index.js +2 -3
  178. package/select/select.d.ts +3 -37
  179. package/select/select.js +115 -403
  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 -84
  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 -31
  223. package/split-button/split-button.js +307 -384
  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/card/card.d.ts CHANGED
@@ -1,29 +1,5 @@
1
- /** Ported from ShadCN/ui: https://ui.shadcn.com/docs/components/card */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * `<dui-card>` — A container for grouped content with header, body,
5
- * and footer sections.
6
- *
7
- * Uses flex-column + gap for vertical rhythm. The card owns all internal
8
- * spacing; consumers slot content into named regions.
9
- *
10
- * @slot - Main card content (body).
11
- * @slot title - Card heading text.
12
- * @slot description - Helper text below the title.
13
- * @slot action - Top-right header action (button, badge, etc.).
14
- * @slot footer - Footer content (buttons, links, etc.).
15
- *
16
- * @csspart root - The outer card container.
17
- * @csspart header - The header section (title + description + action).
18
- * @csspart header-text - The vertical stack holding title and description.
19
- * @csspart content - The wrapper around the default slot.
20
- * @csspart footer - The footer section.
21
- */
22
- export declare class DuiCard extends LitElement {
23
- #private;
24
- static tagName: "dui-card";
1
+ import { DuiCardPrimitive } from "@deepfuture/dui-primitives/card";
2
+ import "../_install.js";
3
+ export declare class DuiCard extends DuiCardPrimitive {
25
4
  static styles: import("lit").CSSResult[];
26
- /** Card size — controls internal spacing via `--card-*` tokens. */
27
- accessor size: string;
28
- render(): TemplateResult;
29
5
  }
package/card/card.js CHANGED
@@ -1,179 +1,96 @@
1
- /** Ported from ShadCN/ui: https://ui.shadcn.com/docs/components/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 { base } from "@deepfuture/dui-core/base";
43
- /** Structural styles only — layout CSS. */
1
+ import { css } from "lit";
2
+ import { DuiCardPrimitive } from "@deepfuture/dui-primitives/card";
3
+ import "../_install.js";
44
4
  const styles = css `
5
+ /* ---------------------------------------------------------------
6
+ * Size tokens
7
+ * --------------------------------------------------------------- */
8
+
45
9
  :host {
46
- display: block;
10
+ --card-gap: var(--space-5);
11
+ --card-px: var(--space-5);
12
+ --card-py-top: var(--space-6);
13
+ --card-py-bottom: var(--space-5);
14
+ --card-action-offset-top: calc(-1 * var(--space-2_5));
15
+ --card-action-offset-end: calc(-1 * var(--space-1));
16
+ }
17
+
18
+ :host([size="sm"]) {
19
+ --card-gap: var(--space-4);
20
+ --card-px: var(--space-4);
21
+ --card-py-top: var(--space-4);
22
+ --card-py-bottom: var(--space-4);
47
23
  }
48
24
 
25
+ /* ---------------------------------------------------------------
26
+ * Root
27
+ * --------------------------------------------------------------- */
28
+
49
29
  [part="root"] {
50
- display: flex;
51
- flex-direction: column;
52
- overflow: hidden;
30
+ gap: var(--card-gap);
31
+ padding: 0;
32
+ border-radius: var(--radius-lg);
33
+ background: var(--surface-1);
34
+ color: var(--text-1);
35
+ font-family: var(--font-sans);
36
+ font-size: var(--text-sm);
37
+ line-height: var(--text-sm--line-height);
38
+ border: var(--border-width-thin) solid var(--border);
53
39
  }
54
40
 
55
- [part="header"]:not([hidden]) {
56
- display: flex;
57
- align-items: start;
41
+ /* ---------------------------------------------------------------
42
+ * Header
43
+ * --------------------------------------------------------------- */
44
+
45
+ [part="header"] {
46
+ padding: var(--space-6) var(--card-px) var(--space-2);
47
+ gap: var(--space-2);
48
+ }
49
+
50
+ [part="action"] {
51
+ margin-top: var(--card-action-offset-top);
52
+ margin-right: var(--card-action-offset-end);
58
53
  }
59
54
 
60
55
  [part="header-text"] {
61
- flex: 1;
62
- min-width: 0;
63
- display: flex;
64
- flex-direction: column;
56
+ gap: var(--space-3);
65
57
  }
66
58
 
67
- [part="action"] {
68
- height: 0;
69
- overflow: visible;
70
- display: flex;
71
- align-items: start;
59
+ ::slotted([slot="title"]) {
60
+ text-wrap: balance;
61
+ font-size: var(--text-base);
62
+ font-weight: var(--font-weight-semibold);
63
+ line-height: var(--line-height-snug);
64
+ text-box: trim-both cap alphabetic;
65
+ }
66
+
67
+ ::slotted([slot="description"]) {
68
+ text-wrap: pretty;
69
+ font-size: var(--text-sm);
70
+ line-height: var(--text-sm--line-height);
71
+ color: var(--text-2);
72
+ text-box: trim-both cap alphabetic;
72
73
  }
73
74
 
74
- [part="footer"]:not([hidden]) {
75
- display: flex;
76
- align-items: center;
75
+ /* ---------------------------------------------------------------
76
+ * Content
77
+ * --------------------------------------------------------------- */
78
+
79
+ [part="content"] {
80
+ padding: 0 var(--card-px);
81
+ }
82
+
83
+ /* ---------------------------------------------------------------
84
+ * Footer
85
+ * --------------------------------------------------------------- */
86
+
87
+ [part="footer"] {
88
+ padding: 0 var(--card-px) var(--card-py-bottom);
89
+ gap: var(--space-2);
90
+ justify-content: flex-end;
77
91
  }
78
92
  `;
79
- /**
80
- * `<dui-card>` — A container for grouped content with header, body,
81
- * and footer sections.
82
- *
83
- * Uses flex-column + gap for vertical rhythm. The card owns all internal
84
- * spacing; consumers slot content into named regions.
85
- *
86
- * @slot - Main card content (body).
87
- * @slot title - Card heading text.
88
- * @slot description - Helper text below the title.
89
- * @slot action - Top-right header action (button, badge, etc.).
90
- * @slot footer - Footer content (buttons, links, etc.).
91
- *
92
- * @csspart root - The outer card container.
93
- * @csspart header - The header section (title + description + action).
94
- * @csspart header-text - The vertical stack holding title and description.
95
- * @csspart content - The wrapper around the default slot.
96
- * @csspart footer - The footer section.
97
- */
98
- let DuiCard = (() => {
99
- let _classSuper = LitElement;
100
- let _size_decorators;
101
- let _size_initializers = [];
102
- let _size_extraInitializers = [];
103
- let _private_hasHeader_decorators;
104
- let _private_hasHeader_initializers = [];
105
- let _private_hasHeader_extraInitializers = [];
106
- let _private_hasHeader_descriptor;
107
- let _private_hasFooter_decorators;
108
- let _private_hasFooter_initializers = [];
109
- let _private_hasFooter_extraInitializers = [];
110
- let _private_hasFooter_descriptor;
111
- return class DuiCard extends _classSuper {
112
- static {
113
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
114
- _size_decorators = [property({ reflect: true })];
115
- _private_hasHeader_decorators = [state()];
116
- _private_hasFooter_decorators = [state()];
117
- __esDecorate(this, null, _size_decorators, { kind: "accessor", name: "size", static: false, private: false, access: { has: obj => "size" in obj, get: obj => obj.size, set: (obj, value) => { obj.size = value; } }, metadata: _metadata }, _size_initializers, _size_extraInitializers);
118
- __esDecorate(this, _private_hasHeader_descriptor = { get: __setFunctionName(function () { return this.#hasHeader_accessor_storage; }, "#hasHeader", "get"), set: __setFunctionName(function (value) { this.#hasHeader_accessor_storage = value; }, "#hasHeader", "set") }, _private_hasHeader_decorators, { kind: "accessor", name: "#hasHeader", static: false, private: true, access: { has: obj => #hasHeader in obj, get: obj => obj.#hasHeader, set: (obj, value) => { obj.#hasHeader = value; } }, metadata: _metadata }, _private_hasHeader_initializers, _private_hasHeader_extraInitializers);
119
- __esDecorate(this, _private_hasFooter_descriptor = { get: __setFunctionName(function () { return this.#hasFooter_accessor_storage; }, "#hasFooter", "get"), set: __setFunctionName(function (value) { this.#hasFooter_accessor_storage = value; }, "#hasFooter", "set") }, _private_hasFooter_decorators, { kind: "accessor", name: "#hasFooter", static: false, private: true, access: { has: obj => #hasFooter in obj, get: obj => obj.#hasFooter, set: (obj, value) => { obj.#hasFooter = value; } }, metadata: _metadata }, _private_hasFooter_initializers, _private_hasFooter_extraInitializers);
120
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
121
- }
122
- static tagName = "dui-card";
123
- static styles = [base, styles];
124
- #size_accessor_storage = __runInitializers(this, _size_initializers, "");
125
- /** Card size — controls internal spacing via `--card-*` tokens. */
126
- get size() { return this.#size_accessor_storage; }
127
- set size(value) { this.#size_accessor_storage = value; }
128
- #hasHeader_accessor_storage = (__runInitializers(this, _size_extraInitializers), __runInitializers(this, _private_hasHeader_initializers, false));
129
- get #hasHeader() { return _private_hasHeader_descriptor.get.call(this); }
130
- set #hasHeader(value) { return _private_hasHeader_descriptor.set.call(this, value); }
131
- #hasFooter_accessor_storage = (__runInitializers(this, _private_hasHeader_extraInitializers), __runInitializers(this, _private_hasFooter_initializers, false));
132
- get #hasFooter() { return _private_hasFooter_descriptor.get.call(this); }
133
- set #hasFooter(value) { return _private_hasFooter_descriptor.set.call(this, value); }
134
- #titleFilled = (__runInitializers(this, _private_hasFooter_extraInitializers), false);
135
- #descFilled = false;
136
- #actionFilled = false;
137
- #onHeaderSlotChange = (e) => {
138
- const slot = e.target;
139
- const filled = slot.assignedElements().length > 0;
140
- if (slot.name === "title")
141
- this.#titleFilled = filled;
142
- else if (slot.name === "description")
143
- this.#descFilled = filled;
144
- else if (slot.name === "action")
145
- this.#actionFilled = filled;
146
- this.#hasHeader = this.#titleFilled || this.#descFilled ||
147
- this.#actionFilled;
148
- };
149
- #onFooterSlotChange = (e) => {
150
- const slot = e.target;
151
- this.#hasFooter = slot.assignedElements().length > 0;
152
- };
153
- render() {
154
- return html `
155
- <div part="root">
156
- <div part="header" ?hidden=${!this.#hasHeader}>
157
- <div part="header-text">
158
- <slot name="title" @slotchange=${this.#onHeaderSlotChange}></slot>
159
- <slot
160
- name="description"
161
- @slotchange=${this.#onHeaderSlotChange}
162
- ></slot>
163
- </div>
164
- <div part="action">
165
- <slot name="action" @slotchange=${this.#onHeaderSlotChange}></slot>
166
- </div>
167
- </div>
168
- <div part="content">
169
- <slot></slot>
170
- </div>
171
- <div part="footer" ?hidden=${!this.#hasFooter}>
172
- <slot name="footer" @slotchange=${this.#onFooterSlotChange}></slot>
173
- </div>
174
- </div>
175
- `;
176
- }
177
- };
178
- })();
179
- export { DuiCard };
93
+ export class DuiCard extends DuiCardPrimitive {
94
+ static styles = [...DuiCardPrimitive.styles, styles];
95
+ }
96
+ customElements.define(DuiCard.tagName, DuiCard);
package/card/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- import { DuiCard } from "./card.js";
2
- export { DuiCard };
3
- export declare const cardFamily: (typeof DuiCard)[];
1
+ import "./card.js";
2
+ export { DuiCard } from "./card.js";
package/card/index.js CHANGED
@@ -1,3 +1,2 @@
1
- import { DuiCard } from "./card.js";
2
- export { DuiCard };
3
- export const cardFamily = [DuiCard];
1
+ import "./card.js";
2
+ export { DuiCard } from "./card.js";
@@ -1,17 +1,5 @@
1
- import { LitElement, type TemplateResult } from "lit";
2
- /**
3
- * `<dui-card-grid>` A responsive grid layout for cards and panels.
4
- *
5
- * Distributes children into equal-width columns that collapse at narrow
6
- * container widths. Use `columns` to set the maximum column count.
7
- *
8
- * @slot - Grid children (cards, panels, or any block content).
9
- * @csspart root - The grid container element.
10
- */
11
- export declare class DuiCardGrid extends LitElement {
12
- static tagName: "dui-card-grid";
1
+ import { DuiCardGridPrimitive } from "@deepfuture/dui-primitives/card-grid";
2
+ import "../_install.js";
3
+ export declare class DuiCardGrid extends DuiCardGridPrimitive {
13
4
  static styles: import("lit").CSSResult[];
14
- /** Maximum number of columns (1–4). Responsive breakpoints reduce this automatically. */
15
- accessor columns: string;
16
- render(): TemplateResult;
17
5
  }
@@ -1,110 +1,12 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import { css, html, LitElement } from "lit";
36
- import { property } from "lit/decorators.js";
37
- import { base } from "@deepfuture/dui-core/base";
38
- /** Structural styles only — layout CSS. */
1
+ import { css } from "lit";
2
+ import { DuiCardGridPrimitive } from "@deepfuture/dui-primitives/card-grid";
3
+ import "../_install.js";
39
4
  const styles = css `
40
- :host {
41
- display: block;
42
- min-width: 100%;
43
- }
44
-
45
5
  [part="root"] {
46
- display: grid;
47
- grid-template-columns: repeat(var(--_columns, 3), 1fr);
48
- box-sizing: border-box;
49
- }
50
-
51
- :host([columns="1"]) { --_columns: 1; }
52
- :host([columns="2"]) { --_columns: 2; }
53
- :host([columns="3"]) { --_columns: 3; }
54
- :host([columns="4"]) { --_columns: 4; }
55
-
56
- /* Responsive collapse: narrow viewports reduce columns */
57
- @media (max-width: 768px) {
58
- :host([columns="3"]) { --_columns: 2; }
59
- :host([columns="4"]) { --_columns: 2; }
60
- }
61
-
62
- @media (max-width: 480px) {
63
- :host([columns="2"]),
64
- :host([columns="3"]),
65
- :host([columns="4"]) {
66
- --_columns: 1;
67
- }
6
+ gap: var(--space-4);
68
7
  }
69
8
  `;
70
- /**
71
- * `<dui-card-grid>` A responsive grid layout for cards and panels.
72
- *
73
- * Distributes children into equal-width columns that collapse at narrow
74
- * container widths. Use `columns` to set the maximum column count.
75
- *
76
- * @slot - Grid children (cards, panels, or any block content).
77
- * @csspart root - The grid container element.
78
- */
79
- let DuiCardGrid = (() => {
80
- let _classSuper = LitElement;
81
- let _columns_decorators;
82
- let _columns_initializers = [];
83
- let _columns_extraInitializers = [];
84
- return class DuiCardGrid extends _classSuper {
85
- static {
86
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
87
- _columns_decorators = [property({ reflect: true })];
88
- __esDecorate(this, null, _columns_decorators, { kind: "accessor", name: "columns", static: false, private: false, access: { has: obj => "columns" in obj, get: obj => obj.columns, set: (obj, value) => { obj.columns = value; } }, metadata: _metadata }, _columns_initializers, _columns_extraInitializers);
89
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
90
- }
91
- static tagName = "dui-card-grid";
92
- static styles = [base, styles];
93
- #columns_accessor_storage = __runInitializers(this, _columns_initializers, "3");
94
- /** Maximum number of columns (1–4). Responsive breakpoints reduce this automatically. */
95
- get columns() { return this.#columns_accessor_storage; }
96
- set columns(value) { this.#columns_accessor_storage = value; }
97
- render() {
98
- return html `
99
- <div part="root">
100
- <slot></slot>
101
- </div>
102
- `;
103
- }
104
- constructor() {
105
- super(...arguments);
106
- __runInitializers(this, _columns_extraInitializers);
107
- }
108
- };
109
- })();
110
- export { DuiCardGrid };
9
+ export class DuiCardGrid extends DuiCardGridPrimitive {
10
+ static styles = [...DuiCardGridPrimitive.styles, styles];
11
+ }
12
+ customElements.define(DuiCardGrid.tagName, DuiCardGrid);
@@ -1,3 +1,2 @@
1
- import { DuiCardGrid } from "./card-grid.js";
2
- export { DuiCardGrid };
3
- export declare const cardGridFamily: (typeof DuiCardGrid)[];
1
+ import "./card-grid.js";
2
+ export { DuiCardGrid } from "./card-grid.js";
@@ -1,3 +1,2 @@
1
- import { DuiCardGrid } from "./card-grid.js";
2
- export { DuiCardGrid };
3
- export const cardGridFamily = [DuiCardGrid];
1
+ import "./card-grid.js";
2
+ export { DuiCardGrid } from "./card-grid.js";
@@ -1,36 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/checkbox */
2
- import { LitElement, type TemplateResult } from "lit";
3
- import { type CheckboxGroupContext } from "./checkbox-group-context.js";
4
- export declare const valueChangeEvent: (detail: string[]) => CustomEvent<string[]>;
5
- /**
6
- * `<dui-checkbox-group>` — Groups multiple checkboxes with shared state.
7
- *
8
- * Manages a shared array of checked values. Supports controlled and
9
- * uncontrolled usage, and an `allValues` prop for parent checkbox
10
- * (select-all) patterns.
11
- *
12
- * @slot - Default slot for `<dui-checkbox>` children.
13
- * @csspart root - The group container element.
14
- *
15
- * @fires value-change - Fired when the set of checked values changes. Detail: string[]
16
- */
17
- export declare class DuiCheckboxGroup extends LitElement {
18
- #private;
19
- static tagName: "dui-checkbox-group";
1
+ import { DuiCheckboxGroupPrimitive } from "@deepfuture/dui-primitives/checkbox";
2
+ import "../_install.js";
3
+ export declare class DuiCheckboxGroup extends DuiCheckboxGroupPrimitive {
20
4
  static styles: import("lit").CSSResult[];
21
- /** Checked values (controlled). */
22
- accessor value: string[] | undefined;
23
- /** Initial checked values for uncontrolled usage. */
24
- accessor defaultValue: string[];
25
- /**
26
- * All possible checkbox values in the group.
27
- * Required when using a parent (select-all) checkbox.
28
- */
29
- accessor allValues: string[];
30
- /** Whether all checkboxes in the group are disabled. */
31
- accessor disabled: boolean;
32
- accessor _ctx: CheckboxGroupContext;
33
- connectedCallback(): void;
34
- willUpdate(): void;
35
- render(): TemplateResult;
36
5
  }