@deepfuture/dui-components 0.0.1 → 0.0.4

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 (210) hide show
  1. package/README.md +191 -0
  2. package/accordion/accordion-item.js +0 -2
  3. package/accordion/index.d.ts +5 -2
  4. package/accordion/index.js +5 -2
  5. package/alert-dialog/index.d.ts +9 -4
  6. package/alert-dialog/index.js +9 -4
  7. package/all.d.ts +60 -19
  8. package/all.js +140 -140
  9. package/avatar/index.d.ts +3 -1
  10. package/avatar/index.js +3 -1
  11. package/badge/badge.d.ts +0 -2
  12. package/badge/badge.js +0 -13
  13. package/badge/index.d.ts +3 -2
  14. package/badge/index.js +3 -1
  15. package/breadcrumb/index.d.ts +13 -6
  16. package/breadcrumb/index.js +13 -6
  17. package/button/button.d.ts +1 -5
  18. package/button/button.js +1 -14
  19. package/button/index.d.ts +3 -2
  20. package/button/index.js +3 -1
  21. package/calendar/index.d.ts +3 -1
  22. package/calendar/index.js +3 -1
  23. package/center/index.d.ts +3 -1
  24. package/center/index.js +3 -1
  25. package/checkbox/checkbox.js +0 -1
  26. package/checkbox/index.d.ts +5 -2
  27. package/checkbox/index.js +5 -2
  28. package/collapsible/collapsible.js +0 -2
  29. package/collapsible/index.d.ts +3 -1
  30. package/collapsible/index.js +3 -1
  31. package/combobox/combobox.js +2 -37
  32. package/combobox/index.d.ts +3 -1
  33. package/combobox/index.js +3 -1
  34. package/command/index.d.ts +17 -8
  35. package/command/index.js +17 -8
  36. package/data-table/data-table.js +0 -4
  37. package/data-table/index.d.ts +3 -1
  38. package/data-table/index.js +3 -1
  39. package/dialog/index.d.ts +9 -4
  40. package/dialog/index.js +9 -4
  41. package/dropzone/dropzone.js +0 -1
  42. package/dropzone/index.d.ts +3 -1
  43. package/dropzone/index.js +3 -1
  44. package/hstack/index.d.ts +3 -1
  45. package/hstack/index.js +3 -1
  46. package/icon/index.d.ts +3 -1
  47. package/icon/index.js +3 -1
  48. package/input/index.d.ts +3 -1
  49. package/input/index.js +3 -1
  50. package/input/input.js +0 -1
  51. package/link/index.d.ts +3 -1
  52. package/link/index.js +3 -1
  53. package/menu/index.d.ts +5 -2
  54. package/menu/index.js +5 -2
  55. package/menu/menu-item.d.ts +0 -2
  56. package/menu/menu-item.js +0 -8
  57. package/menu/menu.js +1 -12
  58. package/menubar/index.d.ts +3 -1
  59. package/menubar/index.js +3 -1
  60. package/number-field/index.d.ts +3 -1
  61. package/number-field/index.js +3 -1
  62. package/package.json +5 -4
  63. package/page-inset/index.d.ts +3 -1
  64. package/page-inset/index.js +3 -1
  65. package/popover/index.d.ts +9 -4
  66. package/popover/index.js +9 -4
  67. package/popover/popover-popup.js +1 -22
  68. package/portal/index.d.ts +3 -1
  69. package/portal/index.js +3 -1
  70. package/preview-card/index.d.ts +7 -3
  71. package/preview-card/index.js +7 -3
  72. package/preview-card/preview-card-popup.js +1 -23
  73. package/progress/index.d.ts +3 -1
  74. package/progress/index.js +3 -1
  75. package/radio/index.d.ts +5 -2
  76. package/radio/index.js +5 -2
  77. package/radio/radio.js +0 -1
  78. package/scroll-area/index.d.ts +3 -1
  79. package/scroll-area/index.js +3 -1
  80. package/scroll-area/scroll-area.js +7 -0
  81. package/select/index.d.ts +3 -1
  82. package/select/index.js +3 -1
  83. package/select/select.js +1 -35
  84. package/separator/index.d.ts +3 -1
  85. package/separator/index.js +3 -1
  86. package/sidebar/index.d.ts +27 -14
  87. package/sidebar/index.js +32 -13
  88. package/sidebar/sidebar-context.d.ts +1 -1
  89. package/sidebar/sidebar-menu-button.d.ts +0 -3
  90. package/sidebar/sidebar-menu-button.js +0 -7
  91. package/sidebar/sidebar-provider.d.ts +1 -1
  92. package/sidebar/sidebar-provider.js +1 -1
  93. package/sidebar/sidebar-trigger.js +1 -1
  94. package/slider/index.d.ts +3 -1
  95. package/slider/index.js +3 -1
  96. package/slider/slider.js +0 -1
  97. package/spinner/index.d.ts +3 -1
  98. package/spinner/index.js +3 -1
  99. package/spinner/spinner.d.ts +1 -6
  100. package/spinner/spinner.js +1 -8
  101. package/switch/index.d.ts +3 -1
  102. package/switch/index.js +3 -1
  103. package/switch/switch.js +0 -2
  104. package/tabs/index.d.ts +11 -5
  105. package/tabs/index.js +11 -5
  106. package/tabs/tab.js +0 -1
  107. package/tabs/tabs-panel.js +0 -1
  108. package/textarea/index.d.ts +4 -2
  109. package/textarea/index.js +3 -1
  110. package/textarea/textarea.d.ts +0 -3
  111. package/textarea/textarea.js +0 -8
  112. package/toggle/index.d.ts +5 -2
  113. package/toggle/index.js +5 -2
  114. package/toggle/toggle.d.ts +1 -0
  115. package/toggle/toggle.js +3 -0
  116. package/toolbar/index.d.ts +3 -1
  117. package/toolbar/index.js +3 -1
  118. package/toolbar/toolbar.d.ts +0 -2
  119. package/toolbar/toolbar.js +0 -7
  120. package/tooltip/index.d.ts +7 -3
  121. package/tooltip/index.js +7 -3
  122. package/tooltip/tooltip-popup.js +1 -26
  123. package/trunc/index.d.ts +3 -1
  124. package/trunc/index.js +3 -1
  125. package/vstack/index.d.ts +3 -1
  126. package/vstack/index.js +3 -1
  127. package/accordion/register.d.ts +0 -1
  128. package/accordion/register.js +0 -8
  129. package/alert-dialog/register.d.ts +0 -1
  130. package/alert-dialog/register.js +0 -16
  131. package/avatar/register.d.ts +0 -1
  132. package/avatar/register.js +0 -4
  133. package/badge/register.d.ts +0 -1
  134. package/badge/register.js +0 -4
  135. package/breadcrumb/register.d.ts +0 -1
  136. package/breadcrumb/register.js +0 -14
  137. package/button/register.d.ts +0 -1
  138. package/button/register.js +0 -4
  139. package/calendar/register.d.ts +0 -1
  140. package/calendar/register.js +0 -4
  141. package/center/register.d.ts +0 -1
  142. package/center/register.js +0 -4
  143. package/checkbox/register.d.ts +0 -1
  144. package/checkbox/register.js +0 -8
  145. package/collapsible/register.d.ts +0 -1
  146. package/collapsible/register.js +0 -4
  147. package/combobox/register.d.ts +0 -1
  148. package/combobox/register.js +0 -4
  149. package/command/register.d.ts +0 -1
  150. package/command/register.js +0 -22
  151. package/data-table/register.d.ts +0 -1
  152. package/data-table/register.js +0 -4
  153. package/dialog/register.d.ts +0 -1
  154. package/dialog/register.js +0 -16
  155. package/dropzone/register.d.ts +0 -1
  156. package/dropzone/register.js +0 -4
  157. package/hstack/register.d.ts +0 -1
  158. package/hstack/register.js +0 -4
  159. package/icon/register.d.ts +0 -1
  160. package/icon/register.js +0 -4
  161. package/input/register.d.ts +0 -1
  162. package/input/register.js +0 -4
  163. package/link/register.d.ts +0 -1
  164. package/link/register.js +0 -4
  165. package/menu/register.d.ts +0 -1
  166. package/menu/register.js +0 -8
  167. package/menubar/register.d.ts +0 -1
  168. package/menubar/register.js +0 -4
  169. package/number-field/register.d.ts +0 -1
  170. package/number-field/register.js +0 -4
  171. package/page-inset/register.d.ts +0 -1
  172. package/page-inset/register.js +0 -4
  173. package/popover/register.d.ts +0 -1
  174. package/popover/register.js +0 -16
  175. package/portal/register.d.ts +0 -1
  176. package/portal/register.js +0 -4
  177. package/preview-card/register.d.ts +0 -1
  178. package/preview-card/register.js +0 -12
  179. package/progress/register.d.ts +0 -1
  180. package/progress/register.js +0 -4
  181. package/radio/register.d.ts +0 -1
  182. package/radio/register.js +0 -8
  183. package/scroll-area/register.d.ts +0 -1
  184. package/scroll-area/register.js +0 -4
  185. package/select/register.d.ts +0 -1
  186. package/select/register.js +0 -4
  187. package/separator/register.d.ts +0 -1
  188. package/separator/register.js +0 -4
  189. package/sidebar/register.d.ts +0 -1
  190. package/sidebar/register.js +0 -52
  191. package/slider/register.d.ts +0 -1
  192. package/slider/register.js +0 -4
  193. package/spinner/register.d.ts +0 -1
  194. package/spinner/register.js +0 -4
  195. package/switch/register.d.ts +0 -1
  196. package/switch/register.js +0 -4
  197. package/tabs/register.d.ts +0 -1
  198. package/tabs/register.js +0 -10
  199. package/textarea/register.d.ts +0 -1
  200. package/textarea/register.js +0 -4
  201. package/toggle/register.d.ts +0 -1
  202. package/toggle/register.js +0 -8
  203. package/toolbar/register.d.ts +0 -1
  204. package/toolbar/register.js +0 -4
  205. package/tooltip/register.d.ts +0 -1
  206. package/tooltip/register.js +0 -12
  207. package/trunc/register.d.ts +0 -1
  208. package/trunc/register.js +0 -4
  209. package/vstack/register.d.ts +0 -1
  210. package/vstack/register.js +0 -4
package/radio/index.js CHANGED
@@ -1,2 +1,5 @@
1
- export { DuiRadio } from "./radio.js";
2
- export { DuiRadioGroup, valueChangeEvent } from "./radio-group.js";
1
+ import { DuiRadio } from "./radio.js";
2
+ export { DuiRadio };
3
+ import { DuiRadioGroup, valueChangeEvent } from "./radio-group.js";
4
+ export { DuiRadioGroup, valueChangeEvent };
5
+ export const radioFamily = [DuiRadio, DuiRadioGroup];
package/radio/radio.js CHANGED
@@ -32,7 +32,6 @@ const styles = css `
32
32
  padding: 0;
33
33
  margin: 0;
34
34
  border: none;
35
- transition-property: background, border-color, box-shadow, filter, transform;
36
35
  }
37
36
 
38
37
  [part="root"][data-disabled] {
@@ -1 +1,3 @@
1
- export { DuiScrollArea } from "./scroll-area.js";
1
+ import { DuiScrollArea } from "./scroll-area.js";
2
+ export { DuiScrollArea };
3
+ export declare const scrollAreaFamily: (typeof DuiScrollArea)[];
@@ -1 +1,3 @@
1
- export { DuiScrollArea } from "./scroll-area.js";
1
+ import { DuiScrollArea } from "./scroll-area.js";
2
+ export { DuiScrollArea };
3
+ export const scrollAreaFamily = [DuiScrollArea];
@@ -198,9 +198,16 @@ export class DuiScrollArea extends LitElement {
198
198
  this.#resizeObserver.observe(viewport);
199
199
  const slot = viewport.querySelector("slot");
200
200
  if (slot) {
201
+ const observe = () => {
202
+ for (const node of slot.assignedElements()) {
203
+ this.#resizeObserver.observe(node);
204
+ }
205
+ };
201
206
  slot.addEventListener("slotchange", () => {
207
+ observe();
202
208
  requestAnimationFrame(() => this.#measure());
203
209
  });
210
+ observe();
204
211
  }
205
212
  this.#measure();
206
213
  }
package/select/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- export { DuiSelect } from "./select.js";
1
+ import { DuiSelect } from "./select.js";
2
+ export { DuiSelect };
2
3
  export type { SelectOption } from "./select.js";
4
+ export declare const selectFamily: (typeof DuiSelect)[];
package/select/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiSelect } from "./select.js";
1
+ import { DuiSelect } from "./select.js";
2
+ export { DuiSelect };
3
+ export const selectFamily = [DuiSelect];
package/select/select.js CHANGED
@@ -27,7 +27,6 @@ const componentStyles = css `
27
27
  cursor: pointer;
28
28
  user-select: none;
29
29
  box-sizing: border-box;
30
- transition-property: border-color, box-shadow, background, filter, transform;
31
30
  }
32
31
 
33
32
  .Trigger[data-disabled] {
@@ -45,74 +44,41 @@ const componentStyles = css `
45
44
  flex-shrink: 0;
46
45
  }
47
46
  `;
48
- /** Styles injected into the portal positioner. */
47
+ /** Structural styles injected into the portal positioner. */
49
48
  const portalPopupStyles = [
50
49
  css `
51
50
  .Popup {
52
- background: var(--popover);
53
- border: var(--border-width-thin) solid var(--border);
54
- border-radius: var(--radius-md);
55
- box-shadow: var(--shadow-md);
56
51
  max-height: 240px;
57
52
  overflow-y: auto;
58
53
  overscroll-behavior: contain;
59
54
  opacity: 1;
60
55
  transform: translateY(0);
61
56
  transition-property: opacity, transform;
62
- transition-duration: var(--duration-fast);
63
- transition-timing-function: var(--ease-out-3);
64
57
  pointer-events: auto;
65
58
  }
66
59
 
67
60
  .Popup[data-starting-style],
68
61
  .Popup[data-ending-style] {
69
62
  opacity: 0;
70
- transform: translateY(calc(var(--space-1) * -1));
71
- }
72
-
73
- .Listbox {
74
- padding: var(--space-1);
75
63
  }
76
64
 
77
65
  .Item {
78
66
  display: flex;
79
67
  align-items: center;
80
- gap: var(--space-2);
81
- padding: var(--space-1_5) var(--space-2);
82
- border-radius: var(--radius-sm);
83
- font-size: var(--font-size-sm);
84
- font-family: var(--font-sans);
85
- color: var(--popover-foreground);
86
68
  cursor: pointer;
87
69
  }
88
70
 
89
- .Item:hover,
90
- .Item[data-highlighted] {
91
- background: var(--secondary);
92
- color: var(--foreground);
93
- }
94
-
95
- .Item[data-selected] {
96
- font-weight: var(--font-weight-medium);
97
- }
98
-
99
71
  .Item[data-disabled] {
100
- opacity: 0.5;
101
72
  cursor: not-allowed;
102
73
  }
103
74
 
104
75
  .ItemIndicator {
105
76
  flex-shrink: 0;
106
- width: var(--space-3_5);
107
77
  display: flex;
108
78
  align-items: center;
109
79
  justify-content: center;
110
80
  }
111
81
 
112
- .ItemIndicator dui-icon {
113
- --icon-size: var(--space-3_5);
114
- }
115
-
116
82
  .ItemText {
117
83
  flex: 1;
118
84
  }
@@ -1 +1,3 @@
1
- export { DuiSeparator } from "./separator.js";
1
+ import { DuiSeparator } from "./separator.js";
2
+ export { DuiSeparator };
3
+ export declare const separatorFamily: (typeof DuiSeparator)[];
@@ -1 +1,3 @@
1
- export { DuiSeparator } from "./separator.js";
1
+ import { DuiSeparator } from "./separator.js";
2
+ export { DuiSeparator };
3
+ export const separatorFamily = [DuiSeparator];
@@ -1,16 +1,29 @@
1
- export { DuiSidebarProvider, openChangeEvent } from "./sidebar-provider.js";
1
+ import { DuiSidebarProvider, openChangeEvent } from "./sidebar-provider.js";
2
+ export { DuiSidebarProvider, openChangeEvent };
2
3
  export type { SidebarOpenChangeDetail } from "./sidebar-provider.js";
3
- export { DuiSidebar } from "./sidebar.js";
4
- export { DuiSidebarTrigger } from "./sidebar-trigger.js";
5
- export { DuiSidebarContent } from "./sidebar-content.js";
6
- export { DuiSidebarHeader } from "./sidebar-header.js";
7
- export { DuiSidebarFooter } from "./sidebar-footer.js";
8
- export { DuiSidebarGroup } from "./sidebar-group.js";
9
- export { DuiSidebarGroupLabel } from "./sidebar-group-label.js";
10
- export { DuiSidebarMenu } from "./sidebar-menu.js";
11
- export { DuiSidebarMenuItem } from "./sidebar-menu-item.js";
12
- export { DuiSidebarMenuButton } from "./sidebar-menu-button.js";
13
- export type { SidebarMenuButtonSize } from "./sidebar-menu-button.js";
14
- export { DuiSidebarSeparator } from "./sidebar-separator.js";
15
- export { DuiSidebarInset } from "./sidebar-inset.js";
4
+ import { DuiSidebar } from "./sidebar.js";
5
+ export { DuiSidebar };
6
+ import { DuiSidebarTrigger } from "./sidebar-trigger.js";
7
+ export { DuiSidebarTrigger };
8
+ import { DuiSidebarContent } from "./sidebar-content.js";
9
+ export { DuiSidebarContent };
10
+ import { DuiSidebarHeader } from "./sidebar-header.js";
11
+ export { DuiSidebarHeader };
12
+ import { DuiSidebarFooter } from "./sidebar-footer.js";
13
+ export { DuiSidebarFooter };
14
+ import { DuiSidebarGroup } from "./sidebar-group.js";
15
+ export { DuiSidebarGroup };
16
+ import { DuiSidebarGroupLabel } from "./sidebar-group-label.js";
17
+ export { DuiSidebarGroupLabel };
18
+ import { DuiSidebarMenu } from "./sidebar-menu.js";
19
+ export { DuiSidebarMenu };
20
+ import { DuiSidebarMenuItem } from "./sidebar-menu-item.js";
21
+ export { DuiSidebarMenuItem };
22
+ import { DuiSidebarMenuButton } from "./sidebar-menu-button.js";
23
+ export { DuiSidebarMenuButton };
24
+ import { DuiSidebarSeparator } from "./sidebar-separator.js";
25
+ export { DuiSidebarSeparator };
26
+ import { DuiSidebarInset } from "./sidebar-inset.js";
27
+ export { DuiSidebarInset };
16
28
  export type { SidebarContext } from "./sidebar-context.js";
29
+ export declare const sidebarFamily: (typeof DuiSidebarProvider | typeof DuiSidebar | typeof DuiSidebarTrigger | typeof DuiSidebarContent | typeof DuiSidebarHeader | typeof DuiSidebarFooter | typeof DuiSidebarGroup | typeof DuiSidebarGroupLabel | typeof DuiSidebarMenu | typeof DuiSidebarMenuItem | typeof DuiSidebarMenuButton | typeof DuiSidebarSeparator | typeof DuiSidebarInset)[];
package/sidebar/index.js CHANGED
@@ -1,13 +1,32 @@
1
- export { DuiSidebarProvider, openChangeEvent } from "./sidebar-provider.js";
2
- export { DuiSidebar } from "./sidebar.js";
3
- export { DuiSidebarTrigger } from "./sidebar-trigger.js";
4
- export { DuiSidebarContent } from "./sidebar-content.js";
5
- export { DuiSidebarHeader } from "./sidebar-header.js";
6
- export { DuiSidebarFooter } from "./sidebar-footer.js";
7
- export { DuiSidebarGroup } from "./sidebar-group.js";
8
- export { DuiSidebarGroupLabel } from "./sidebar-group-label.js";
9
- export { DuiSidebarMenu } from "./sidebar-menu.js";
10
- export { DuiSidebarMenuItem } from "./sidebar-menu-item.js";
11
- export { DuiSidebarMenuButton } from "./sidebar-menu-button.js";
12
- export { DuiSidebarSeparator } from "./sidebar-separator.js";
13
- export { DuiSidebarInset } from "./sidebar-inset.js";
1
+ import { DuiSidebarProvider, openChangeEvent } from "./sidebar-provider.js";
2
+ export { DuiSidebarProvider, openChangeEvent };
3
+ import { DuiSidebar } from "./sidebar.js";
4
+ export { DuiSidebar };
5
+ import { DuiSidebarTrigger } from "./sidebar-trigger.js";
6
+ export { DuiSidebarTrigger };
7
+ import { DuiSidebarContent } from "./sidebar-content.js";
8
+ export { DuiSidebarContent };
9
+ import { DuiSidebarHeader } from "./sidebar-header.js";
10
+ export { DuiSidebarHeader };
11
+ import { DuiSidebarFooter } from "./sidebar-footer.js";
12
+ export { DuiSidebarFooter };
13
+ import { DuiSidebarGroup } from "./sidebar-group.js";
14
+ export { DuiSidebarGroup };
15
+ import { DuiSidebarGroupLabel } from "./sidebar-group-label.js";
16
+ export { DuiSidebarGroupLabel };
17
+ import { DuiSidebarMenu } from "./sidebar-menu.js";
18
+ export { DuiSidebarMenu };
19
+ import { DuiSidebarMenuItem } from "./sidebar-menu-item.js";
20
+ export { DuiSidebarMenuItem };
21
+ import { DuiSidebarMenuButton } from "./sidebar-menu-button.js";
22
+ export { DuiSidebarMenuButton };
23
+ import { DuiSidebarSeparator } from "./sidebar-separator.js";
24
+ export { DuiSidebarSeparator };
25
+ import { DuiSidebarInset } from "./sidebar-inset.js";
26
+ export { DuiSidebarInset };
27
+ export const sidebarFamily = [
28
+ DuiSidebarProvider, DuiSidebar, DuiSidebarTrigger, DuiSidebarContent,
29
+ DuiSidebarHeader, DuiSidebarFooter, DuiSidebarGroup, DuiSidebarGroupLabel,
30
+ DuiSidebarMenu, DuiSidebarMenuItem, DuiSidebarMenuButton,
31
+ DuiSidebarSeparator, DuiSidebarInset,
32
+ ];
@@ -5,7 +5,7 @@ export type SidebarContext = {
5
5
  readonly openMobile: boolean;
6
6
  readonly isMobile: boolean;
7
7
  readonly side: "left" | "right";
8
- readonly variant: "sidebar" | "floating" | "inset";
8
+ readonly variant: string;
9
9
  readonly collapsible: "offcanvas" | "icon" | "none";
10
10
  readonly setOpen: (open: boolean) => void;
11
11
  readonly toggleSidebar: () => void;
@@ -1,6 +1,5 @@
1
1
  /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
2
  import { LitElement, type TemplateResult } from "lit";
3
- export type SidebarMenuButtonSize = "default" | "sm" | "lg";
4
3
  /**
5
4
  * `<dui-sidebar-menu-button>` — Interactive button or link within a sidebar menu.
6
5
  *
@@ -17,8 +16,6 @@ export declare class DuiSidebarMenuButton extends LitElement {
17
16
  #private;
18
17
  static tagName: "dui-sidebar-menu-button";
19
18
  static styles: import("lit").CSSResult[];
20
- /** Size variant for the button. */
21
- accessor size: SidebarMenuButtonSize;
22
19
  /** Whether the button is in active/selected state. */
23
20
  accessor active: boolean;
24
21
  /** Whether the button is disabled. */
@@ -84,10 +84,6 @@ const styles = css `
84
84
  export class DuiSidebarMenuButton extends LitElement {
85
85
  static { this.tagName = "dui-sidebar-menu-button"; }
86
86
  static { this.styles = [base, styles]; }
87
- #size_accessor_storage = "default";
88
- /** Size variant for the button. */
89
- get size() { return this.#size_accessor_storage; }
90
- set size(value) { this.#size_accessor_storage = value; }
91
87
  #active_accessor_storage = false;
92
88
  /** Whether the button is in active/selected state. */
93
89
  get active() { return this.#active_accessor_storage; }
@@ -184,9 +180,6 @@ export class DuiSidebarMenuButton extends LitElement {
184
180
  return this.#renderContent();
185
181
  }
186
182
  }
187
- __decorate([
188
- property({ reflect: true })
189
- ], DuiSidebarMenuButton.prototype, "size", null);
190
183
  __decorate([
191
184
  property({ type: Boolean, reflect: true })
192
185
  ], DuiSidebarMenuButton.prototype, "active", null);
@@ -24,7 +24,7 @@ export declare class DuiSidebarProvider extends LitElement {
24
24
  /** Which side the sidebar appears on. */
25
25
  accessor side: "left" | "right";
26
26
  /** Visual variant of the sidebar. */
27
- accessor variant: "sidebar" | "floating" | "inset";
27
+ accessor variant: string;
28
28
  /** How the sidebar collapses. */
29
29
  accessor collapsible: "offcanvas" | "icon" | "none";
30
30
  connectedCallback(): void;
@@ -41,7 +41,7 @@ export class DuiSidebarProvider extends LitElement {
41
41
  /** Which side the sidebar appears on. */
42
42
  get side() { return this.#side_accessor_storage; }
43
43
  set side(value) { this.#side_accessor_storage = value; }
44
- #variant_accessor_storage = "sidebar";
44
+ #variant_accessor_storage = "";
45
45
  /** Visual variant of the sidebar. */
46
46
  get variant() { return this.#variant_accessor_storage; }
47
47
  set variant(value) { this.#variant_accessor_storage = value; }
@@ -40,7 +40,7 @@ export class DuiSidebarTrigger extends LitElement {
40
40
  };
41
41
  render() {
42
42
  return html `
43
- <dui-button variant="ghost" size="sm" @click=${this.#onClick}>
43
+ <dui-button appearance="ghost" size="sm" @click=${this.#onClick}>
44
44
  <slot>
45
45
  <dui-icon>${panelLeftSvg}</dui-icon>
46
46
  </slot>
package/slider/index.d.ts CHANGED
@@ -1 +1,3 @@
1
- export { DuiSlider, valueChangeEvent, valueCommittedEvent } from "./slider.js";
1
+ import { DuiSlider, valueChangeEvent, valueCommittedEvent } from "./slider.js";
2
+ export { DuiSlider, valueChangeEvent, valueCommittedEvent };
3
+ export declare const sliderFamily: (typeof DuiSlider)[];
package/slider/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiSlider, valueChangeEvent, valueCommittedEvent } from "./slider.js";
1
+ import { DuiSlider, valueChangeEvent, valueCommittedEvent } from "./slider.js";
2
+ export { DuiSlider, valueChangeEvent, valueCommittedEvent };
3
+ export const sliderFamily = [DuiSlider];
package/slider/slider.js CHANGED
@@ -49,7 +49,6 @@ const styles = css `
49
49
  transform: translateX(-50%);
50
50
  cursor: grab;
51
51
  outline: none;
52
- transition-property: left, box-shadow;
53
52
  }
54
53
 
55
54
  [part="root"][data-dragging] [part="thumb"] {
@@ -1 +1,3 @@
1
- export { DuiSpinner } from "./spinner.js";
1
+ import { DuiSpinner } from "./spinner.js";
2
+ export { DuiSpinner };
3
+ export declare const spinnerFamily: (typeof DuiSpinner)[];
package/spinner/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiSpinner } from "./spinner.js";
1
+ import { DuiSpinner } from "./spinner.js";
2
+ export { DuiSpinner };
3
+ export const spinnerFamily = [DuiSpinner];
@@ -1,7 +1,5 @@
1
1
  /** Ported from original DUI: deep-future-app/app/client/components/dui/spinner */
2
2
  import { LitElement, type TemplateResult } from "lit";
3
- type SpinnerSize = "sm" | "md" | "lg";
4
- type SpinnerVariant = "pulse" | "lucide-loader" | "lucide-loader-circle";
5
3
  /**
6
4
  * A loading indicator with multiple animation variants and sizes.
7
5
  */
@@ -9,10 +7,7 @@ export declare class DuiSpinner extends LitElement {
9
7
  #private;
10
8
  static tagName: "dui-spinner";
11
9
  static styles: import("lit").CSSResult[];
12
- /** Size variant: "sm" (24px), "md" (32px), "lg" (44px). */
13
- accessor size: SpinnerSize;
14
10
  /** Animation variant. */
15
- accessor variant: SpinnerVariant;
11
+ accessor variant: string;
16
12
  render(): TemplateResult;
17
13
  }
18
- export {};
@@ -108,11 +108,7 @@ const styles = css `
108
108
  export class DuiSpinner extends LitElement {
109
109
  static { this.tagName = "dui-spinner"; }
110
110
  static { this.styles = [base, styles]; }
111
- #size_accessor_storage = "sm";
112
- /** Size variant: "sm" (24px), "md" (32px), "lg" (44px). */
113
- get size() { return this.#size_accessor_storage; }
114
- set size(value) { this.#size_accessor_storage = value; }
115
- #variant_accessor_storage = "pulse";
111
+ #variant_accessor_storage = "";
116
112
  /** Animation variant. */
117
113
  get variant() { return this.#variant_accessor_storage; }
118
114
  set variant(value) { this.#variant_accessor_storage = value; }
@@ -130,9 +126,6 @@ export class DuiSpinner extends LitElement {
130
126
  return html `${this.#getSvg()}`;
131
127
  }
132
128
  }
133
- __decorate([
134
- property({ reflect: true })
135
- ], DuiSpinner.prototype, "size", null);
136
129
  __decorate([
137
130
  property({ reflect: true })
138
131
  ], DuiSpinner.prototype, "variant", null);
package/switch/index.d.ts CHANGED
@@ -1 +1,3 @@
1
- export { DuiSwitch, checkedChangeEvent } from "./switch.js";
1
+ import { DuiSwitch, checkedChangeEvent } from "./switch.js";
2
+ export { DuiSwitch, checkedChangeEvent };
3
+ export declare const switchFamily: (typeof DuiSwitch)[];
package/switch/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiSwitch, checkedChangeEvent } from "./switch.js";
1
+ import { DuiSwitch, checkedChangeEvent } from "./switch.js";
2
+ export { DuiSwitch, checkedChangeEvent };
3
+ export const switchFamily = [DuiSwitch];
package/switch/switch.js CHANGED
@@ -32,13 +32,11 @@ const styles = css `
32
32
  margin-inline: 0;
33
33
  border: none;
34
34
  cursor: pointer;
35
- transition-property: background, outline-color, box-shadow, filter, transform;
36
35
  }
37
36
 
38
37
  [part="thumb"] {
39
38
  position: absolute;
40
39
  left: var(--switch-thumb-offset, 0.125rem);
41
- transition-property: transform, outline-color;
42
40
  }
43
41
 
44
42
  [part="root"][data-checked] [part="thumb"] {
package/tabs/index.d.ts CHANGED
@@ -1,6 +1,12 @@
1
- export { DuiTabs, valueChangeEvent } from "./tabs.js";
2
- export { DuiTabsList } from "./tabs-list.js";
3
- export { DuiTab } from "./tab.js";
4
- export { DuiTabsPanel } from "./tabs-panel.js";
5
- export { DuiTabsIndicator } from "./tabs-indicator.js";
1
+ import { DuiTabs, valueChangeEvent } from "./tabs.js";
2
+ export { DuiTabs, valueChangeEvent };
3
+ import { DuiTabsList } from "./tabs-list.js";
4
+ export { DuiTabsList };
5
+ import { DuiTab } from "./tab.js";
6
+ export { DuiTab };
7
+ import { DuiTabsPanel } from "./tabs-panel.js";
8
+ export { DuiTabsPanel };
9
+ import { DuiTabsIndicator } from "./tabs-indicator.js";
10
+ export { DuiTabsIndicator };
6
11
  export type { TabsContext } from "./tabs-context.js";
12
+ export declare const tabsFamily: (typeof DuiTabs | typeof DuiTabsList | typeof DuiTab | typeof DuiTabsPanel | typeof DuiTabsIndicator)[];
package/tabs/index.js CHANGED
@@ -1,5 +1,11 @@
1
- export { DuiTabs, valueChangeEvent } from "./tabs.js";
2
- export { DuiTabsList } from "./tabs-list.js";
3
- export { DuiTab } from "./tab.js";
4
- export { DuiTabsPanel } from "./tabs-panel.js";
5
- export { DuiTabsIndicator } from "./tabs-indicator.js";
1
+ import { DuiTabs, valueChangeEvent } from "./tabs.js";
2
+ export { DuiTabs, valueChangeEvent };
3
+ import { DuiTabsList } from "./tabs-list.js";
4
+ export { DuiTabsList };
5
+ import { DuiTab } from "./tab.js";
6
+ export { DuiTab };
7
+ import { DuiTabsPanel } from "./tabs-panel.js";
8
+ export { DuiTabsPanel };
9
+ import { DuiTabsIndicator } from "./tabs-indicator.js";
10
+ export { DuiTabsIndicator };
11
+ export const tabsFamily = [DuiTabs, DuiTabsList, DuiTab, DuiTabsPanel, DuiTabsIndicator];
package/tabs/tab.js CHANGED
@@ -29,7 +29,6 @@ const styles = css `
29
29
  white-space: nowrap;
30
30
  word-break: keep-all;
31
31
  cursor: pointer;
32
- transition-property: color, box-shadow, background, filter, transform;
33
32
  }
34
33
 
35
34
  [part="tab"][data-disabled] {
@@ -22,7 +22,6 @@ const styles = css `
22
22
  [part="panel"] {
23
23
  position: relative;
24
24
  outline: 0;
25
- transition-property: box-shadow;
26
25
  }
27
26
 
28
27
  [part="panel"][hidden] {
@@ -1,2 +1,4 @@
1
- export { DuiTextarea, textareaChangeEvent } from "./textarea.js";
2
- export type { TextareaResize, TextareaVariant } from "./textarea.js";
1
+ import { DuiTextarea, textareaChangeEvent } from "./textarea.js";
2
+ export { DuiTextarea, textareaChangeEvent };
3
+ export type { TextareaResize } from "./textarea.js";
4
+ export declare const textareaFamily: (typeof DuiTextarea)[];
package/textarea/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiTextarea, textareaChangeEvent } from "./textarea.js";
1
+ import { DuiTextarea, textareaChangeEvent } from "./textarea.js";
2
+ export { DuiTextarea, textareaChangeEvent };
3
+ export const textareaFamily = [DuiTextarea];
@@ -1,7 +1,6 @@
1
1
  /** Ported from original DUI: deep-future-app/app/client/components/dui/textarea */
2
2
  import { LitElement, type TemplateResult } from "lit";
3
3
  export type TextareaResize = "none" | "vertical" | "horizontal" | "both" | "auto";
4
- export type TextareaVariant = "default" | "ghost";
5
4
  export declare const textareaChangeEvent: (detail: {
6
5
  value: string;
7
6
  }) => CustomEvent<{
@@ -27,8 +26,6 @@ export declare class DuiTextarea extends LitElement {
27
26
  accessor minLength: number | undefined;
28
27
  accessor maxLength: number | undefined;
29
28
  accessor name: string;
30
- /** Visual variant: "default" or "ghost" (no border/background). */
31
- accessor variant: TextareaVariant;
32
29
  /** Resize behavior: "none" | "vertical" | "horizontal" | "both" | "auto". */
33
30
  accessor resize: TextareaResize;
34
31
  /** Maximum height (CSS value). Textarea scrolls when content exceeds this. */
@@ -23,7 +23,6 @@ const styles = css `
23
23
  font-family: inherit;
24
24
  outline: none;
25
25
  resize: vertical;
26
- transition-property: border-color, box-shadow, background, filter, transform;
27
26
  }
28
27
 
29
28
  [part="textarea"][data-resize="none"] {
@@ -91,10 +90,6 @@ export class DuiTextarea extends LitElement {
91
90
  #name_accessor_storage = "";
92
91
  get name() { return this.#name_accessor_storage; }
93
92
  set name(value) { this.#name_accessor_storage = value; }
94
- #variant_accessor_storage = "default";
95
- /** Visual variant: "default" or "ghost" (no border/background). */
96
- get variant() { return this.#variant_accessor_storage; }
97
- set variant(value) { this.#variant_accessor_storage = value; }
98
93
  #resize_accessor_storage = "vertical";
99
94
  /** Resize behavior: "none" | "vertical" | "horizontal" | "both" | "auto". */
100
95
  get resize() { return this.#resize_accessor_storage; }
@@ -159,9 +154,6 @@ __decorate([
159
154
  __decorate([
160
155
  property()
161
156
  ], DuiTextarea.prototype, "name", null);
162
- __decorate([
163
- property({ reflect: true })
164
- ], DuiTextarea.prototype, "variant", null);
165
157
  __decorate([
166
158
  property()
167
159
  ], DuiTextarea.prototype, "resize", null);
package/toggle/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- export { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
- export { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
1
+ import { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
+ export { DuiToggle, pressedChangeEvent };
3
+ import { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
4
+ export { DuiToggleGroup, valueChangeEvent };
3
5
  export type { ToggleGroupContext } from "./toggle-group-context.js";
6
+ export declare const toggleFamily: (typeof DuiToggle | typeof DuiToggleGroup)[];
package/toggle/index.js CHANGED
@@ -1,2 +1,5 @@
1
- export { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
- export { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
1
+ import { DuiToggle, pressedChangeEvent } from "./toggle.js";
2
+ export { DuiToggle, pressedChangeEvent };
3
+ import { DuiToggleGroup, valueChangeEvent } from "./toggle-group.js";
4
+ export { DuiToggleGroup, valueChangeEvent };
5
+ export const toggleFamily = [DuiToggle, DuiToggleGroup];
@@ -8,6 +8,7 @@ export declare const pressedChangeEvent: (detail: {
8
8
  * `<dui-toggle>` — A two-state toggle button. Works standalone or inside a toggle group.
9
9
  *
10
10
  * @slot - Toggle content (text and/or icons).
11
+ * @slot icon - Optional leading icon.
11
12
  * @csspart root - The button element.
12
13
  * @fires pressed-change - Fired when toggled. Detail: { pressed: boolean }
13
14
  */
package/toggle/toggle.js CHANGED
@@ -19,6 +19,7 @@ const styles = css `
19
19
  display: inline-flex;
20
20
  align-items: center;
21
21
  justify-content: center;
22
+ gap: var(--toggle-gap, 0);
22
23
  border: none;
23
24
  background: none;
24
25
  cursor: pointer;
@@ -36,6 +37,7 @@ const styles = css `
36
37
  * `<dui-toggle>` — A two-state toggle button. Works standalone or inside a toggle group.
37
38
  *
38
39
  * @slot - Toggle content (text and/or icons).
40
+ * @slot icon - Optional leading icon.
39
41
  * @csspart root - The button element.
40
42
  * @fires pressed-change - Fired when toggled. Detail: { pressed: boolean }
41
43
  */
@@ -105,6 +107,7 @@ export class DuiToggle extends LitElement {
105
107
  ?data-disabled="${isDisabled}"
106
108
  @click="${this.#handleClick}"
107
109
  >
110
+ <slot name="icon"></slot>
108
111
  <slot></slot>
109
112
  </button>
110
113
  `;
@@ -1 +1,3 @@
1
- export { DuiToolbar } from "./toolbar.js";
1
+ import { DuiToolbar } from "./toolbar.js";
2
+ export { DuiToolbar };
3
+ export declare const toolbarFamily: (typeof DuiToolbar)[];
package/toolbar/index.js CHANGED
@@ -1 +1,3 @@
1
- export { DuiToolbar } from "./toolbar.js";
1
+ import { DuiToolbar } from "./toolbar.js";
2
+ export { DuiToolbar };
3
+ export const toolbarFamily = [DuiToolbar];
@@ -3,8 +3,6 @@ import { LitElement, type TemplateResult } from "lit";
3
3
  export declare class DuiToolbar extends LitElement {
4
4
  static tagName: "dui-toolbar";
5
5
  static styles: import("lit").CSSResult[];
6
- /** Sets a minimum height using the corresponding `--component-height-*` token. */
7
- accessor size: "sm" | "md" | "lg" | "xl" | undefined;
8
6
  /** Adds horizontal and vertical padding. */
9
7
  accessor inset: boolean;
10
8
  /** Reduces left inset padding when a button is the first item. */