@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
@@ -1,238 +1,81 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- import { css, html, LitElement, nothing } from "lit";
37
- import { property } from "lit/decorators.js";
38
- import { ContextConsumer } from "@lit/context";
39
- import { base } from "@deepfuture/dui-core/base";
40
- import { sidebarContext } from "./sidebar-context.js";
1
+ import { css } from "lit";
2
+ import { DuiSidebarMenuButtonPrimitive } from "@deepfuture/dui-primitives/sidebar";
3
+ import "../_install.js";
41
4
  const styles = css `
42
5
  :host {
43
- display: block;
6
+ --smb-height: var(--component-height-md);
7
+ --smb-padding-x: var(--sidebar-button-inset);
8
+ --smb-gap: var(--space-2);
9
+ --smb-icon-size: var(--space-4);
10
+ --smb-font-size: var(--text-sm);
11
+ --smb-radius: var(--radius-md);
44
12
  }
45
13
 
46
- .Row {
47
- display: flex;
48
- align-items: center;
49
- overflow: hidden;
14
+ :host([size="sm"]) {
15
+ --smb-height: var(--component-height-sm);
16
+ --smb-font-size: var(--text-xs);
50
17
  }
51
18
 
52
- .Button {
53
- box-sizing: border-box;
54
- display: flex;
55
- flex: 1;
56
- min-width: 0;
57
- align-items: center;
58
- height: 100%;
59
- border: none;
60
- border-radius: 0;
61
- background: transparent;
62
- text-align: left;
63
- text-decoration: none;
64
- white-space: nowrap;
65
- overflow: hidden;
66
- cursor: pointer;
67
- user-select: none;
68
- font: inherit;
69
- color: inherit;
70
- padding: 0;
19
+ :host([size="lg"]) {
20
+ --smb-height: var(--component-height-lg);
21
+ --smb-font-size: var(--text-sm);
22
+ --smb-gap: var(--space-2_5);
71
23
  }
72
24
 
73
- .Button:focus-visible {
74
- outline: none;
25
+ .Row {
26
+ height: var(--smb-height);
27
+ border-radius: var(--smb-radius);
28
+ margin: 0 var(--space-2);
29
+ transition-property: background;
30
+ transition-duration: var(--duration-faster);
31
+ transition-timing-function: var(--ease-out-3);
75
32
  }
76
33
 
77
- .Label {
78
- flex: 1;
79
- overflow: hidden;
80
- text-overflow: ellipsis;
34
+ .Row:hover {
35
+ background: oklch(from var(--foreground) l c h / 0.05);
81
36
  }
82
37
 
83
- .Suffix {
84
- flex-shrink: 0;
38
+ .Row[data-active] {
39
+ background: oklch(from var(--foreground) l c h / 0.10);
85
40
  }
86
41
 
87
42
  .Row[data-icon-collapsed] {
88
- justify-content: center;
43
+ width: var(--sidebar-width-icon);
44
+ margin: 0 auto;
45
+ }
46
+
47
+ .Button {
48
+ gap: var(--smb-gap);
49
+ padding: 0 var(--smb-padding-x);
50
+ color: var(--sidebar-button-fg);
51
+ font-family: var(--font-sans);
52
+ font-size: var(--smb-font-size);
53
+ font-weight: var(--font-weight-regular);
54
+ letter-spacing: var(--letter-spacing-tight);
55
+ line-height: var(--line-height-snug);
56
+ text-box: trim-both cap alphabetic;
57
+ --icon-size: var(--smb-icon-size);
58
+ --icon-color: var(--sidebar-muted-fg);
59
+ }
60
+
61
+ .Button:focus-visible {
62
+ box-shadow:
63
+ 0 0 0 var(--focus-ring-offset) var(--background),
64
+ 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--sidebar-ring);
65
+ border-radius: var(--smb-radius);
89
66
  }
90
67
 
91
- .Row[data-icon-collapsed] .Label,
92
- .Row[data-icon-collapsed] .Suffix {
93
- display: none;
68
+ :host([disabled]) .Row {
69
+ opacity: 0.4;
94
70
  }
95
71
 
96
- :host([disabled]) .Button {
97
- pointer-events: none;
72
+ :host([active]) .Button {
73
+ color: var(--sidebar-fg);
74
+ font-weight: var(--font-weight-medium);
75
+ --icon-color: var(--sidebar-fg);
98
76
  }
99
77
  `;
100
- /**
101
- * `<dui-sidebar-menu-button>` Interactive button or link within a sidebar menu.
102
- *
103
- * Renders as a `<button>` by default, or an `<a>` when `href` is set.
104
- * Supports icon-collapsed mode where only the icon is visible, with an
105
- * optional tooltip.
106
- *
107
- * @slot icon - Icon slot, shown before the label.
108
- * @slot - Default slot for label text.
109
- * @slot suffix - Suffix slot, shown after the label.
110
- * @fires spa-navigate - Fired on normal link clicks. Detail: { href: string }
111
- */
112
- let DuiSidebarMenuButton = (() => {
113
- let _classSuper = LitElement;
114
- let _active_decorators;
115
- let _active_initializers = [];
116
- let _active_extraInitializers = [];
117
- let _disabled_decorators;
118
- let _disabled_initializers = [];
119
- let _disabled_extraInitializers = [];
120
- let _tooltip_decorators;
121
- let _tooltip_initializers = [];
122
- let _tooltip_extraInitializers = [];
123
- let _href_decorators;
124
- let _href_initializers = [];
125
- let _href_extraInitializers = [];
126
- return class DuiSidebarMenuButton extends _classSuper {
127
- static {
128
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
129
- _active_decorators = [property({ type: Boolean, reflect: true })];
130
- _disabled_decorators = [property({ type: Boolean, reflect: true })];
131
- _tooltip_decorators = [property()];
132
- _href_decorators = [property()];
133
- __esDecorate(this, null, _active_decorators, { kind: "accessor", name: "active", static: false, private: false, access: { has: obj => "active" in obj, get: obj => obj.active, set: (obj, value) => { obj.active = value; } }, metadata: _metadata }, _active_initializers, _active_extraInitializers);
134
- __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);
135
- __esDecorate(this, null, _tooltip_decorators, { kind: "accessor", name: "tooltip", static: false, private: false, access: { has: obj => "tooltip" in obj, get: obj => obj.tooltip, set: (obj, value) => { obj.tooltip = value; } }, metadata: _metadata }, _tooltip_initializers, _tooltip_extraInitializers);
136
- __esDecorate(this, null, _href_decorators, { kind: "accessor", name: "href", static: false, private: false, access: { has: obj => "href" in obj, get: obj => obj.href, set: (obj, value) => { obj.href = value; } }, metadata: _metadata }, _href_initializers, _href_extraInitializers);
137
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
138
- }
139
- static tagName = "dui-sidebar-menu-button";
140
- static styles = [base, styles];
141
- #active_accessor_storage = __runInitializers(this, _active_initializers, false);
142
- /** Whether the button is in active/selected state. */
143
- get active() { return this.#active_accessor_storage; }
144
- set active(value) { this.#active_accessor_storage = value; }
145
- #disabled_accessor_storage = (__runInitializers(this, _active_extraInitializers), __runInitializers(this, _disabled_initializers, false));
146
- /** Whether the button is disabled. */
147
- get disabled() { return this.#disabled_accessor_storage; }
148
- set disabled(value) { this.#disabled_accessor_storage = value; }
149
- #tooltip_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _tooltip_initializers, ""));
150
- /** Tooltip text shown when sidebar is icon-collapsed. */
151
- get tooltip() { return this.#tooltip_accessor_storage; }
152
- set tooltip(value) { this.#tooltip_accessor_storage = value; }
153
- #href_accessor_storage = (__runInitializers(this, _tooltip_extraInitializers), __runInitializers(this, _href_initializers, undefined));
154
- /** When set, renders as an anchor tag instead of a button. */
155
- get href() { return this.#href_accessor_storage; }
156
- set href(value) { this.#href_accessor_storage = value; }
157
- #ctx = (__runInitializers(this, _href_extraInitializers), new ContextConsumer(this, {
158
- context: sidebarContext,
159
- subscribe: true,
160
- }));
161
- get #isIconCollapsed() {
162
- const ctx = this.#ctx.value;
163
- return ctx?.collapsible === "icon" && ctx?.state === "collapsed";
164
- }
165
- #onLinkClick = (event) => {
166
- if (this.disabled) {
167
- event.preventDefault();
168
- return;
169
- }
170
- if (this.href &&
171
- !(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) {
172
- event.preventDefault();
173
- this.dispatchEvent(new CustomEvent("spa-navigate", {
174
- detail: { href: this.href },
175
- bubbles: true,
176
- composed: true,
177
- }));
178
- }
179
- };
180
- #renderButton() {
181
- return html `
182
- <button
183
- class="Button"
184
- ?disabled=${this.disabled}
185
- ?data-active=${this.active}
186
- >
187
- <slot name="icon"></slot>
188
- <span class="Label"><slot></slot></span>
189
- <span class="Suffix"><slot name="suffix"></slot></span>
190
- </button>
191
- `;
192
- }
193
- #renderLink() {
194
- return html `
195
- <a
196
- class="Button"
197
- href=${this.href ?? nothing}
198
- aria-disabled=${this.disabled || nothing}
199
- ?data-active=${this.active}
200
- @click=${this.#onLinkClick}
201
- >
202
- <slot name="icon"></slot>
203
- <span class="Label"><slot></slot></span>
204
- <span class="Suffix"><slot name="suffix"></slot></span>
205
- </a>
206
- `;
207
- }
208
- #renderContent() {
209
- const iconCollapsed = this.#isIconCollapsed;
210
- return html `
211
- <div
212
- class="Row"
213
- ?data-icon-collapsed=${iconCollapsed}
214
- ?data-active=${this.active}
215
- >
216
- ${this.href !== undefined ? this.#renderLink() : this.#renderButton()}
217
- </div>
218
- `;
219
- }
220
- render() {
221
- const iconCollapsed = this.#isIconCollapsed;
222
- if (iconCollapsed && this.tooltip) {
223
- return html `
224
- <dui-tooltip>
225
- <dui-tooltip-trigger>
226
- ${this.#renderContent()}
227
- </dui-tooltip-trigger>
228
- <dui-tooltip-popup side="right">
229
- ${this.tooltip}
230
- </dui-tooltip-popup>
231
- </dui-tooltip>
232
- `;
233
- }
234
- return this.#renderContent();
235
- }
236
- };
237
- })();
238
- export { DuiSidebarMenuButton };
78
+ export class DuiSidebarMenuButton extends DuiSidebarMenuButtonPrimitive {
79
+ static styles = [...DuiSidebarMenuButtonPrimitive.styles, styles];
80
+ }
81
+ customElements.define(DuiSidebarMenuButton.tagName, DuiSidebarMenuButton);
@@ -1,12 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * `<dui-sidebar-menu-item>` — Individual navigation item in a sidebar menu.
5
- *
6
- * @slot - Default slot for a `<dui-sidebar-menu-button>` or other content.
7
- */
8
- export declare class DuiSidebarMenuItem extends LitElement {
9
- static tagName: "dui-sidebar-menu-item";
1
+ import { DuiSidebarMenuItemPrimitive } from "@deepfuture/dui-primitives/sidebar";
2
+ import "../_install.js";
3
+ export declare class DuiSidebarMenuItem extends DuiSidebarMenuItemPrimitive {
10
4
  static styles: import("lit").CSSResult[];
11
- render(): TemplateResult;
12
5
  }
@@ -1,20 +1,8 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- import { css, html, LitElement } from "lit";
3
- import { base } from "@deepfuture/dui-core/base";
4
- const styles = css `
5
- :host {
6
- display: list-item;
7
- }
8
- `;
9
- /**
10
- * `<dui-sidebar-menu-item>` — Individual navigation item in a sidebar menu.
11
- *
12
- * @slot - Default slot for a `<dui-sidebar-menu-button>` or other content.
13
- */
14
- export class DuiSidebarMenuItem extends LitElement {
15
- static tagName = "dui-sidebar-menu-item";
16
- static styles = [base, styles];
17
- render() {
18
- return html `<slot></slot>`;
19
- }
1
+ import { css } from "lit";
2
+ import { DuiSidebarMenuItemPrimitive } from "@deepfuture/dui-primitives/sidebar";
3
+ import "../_install.js";
4
+ const styles = css ``;
5
+ export class DuiSidebarMenuItem extends DuiSidebarMenuItemPrimitive {
6
+ static styles = [...DuiSidebarMenuItemPrimitive.styles, styles];
20
7
  }
8
+ customElements.define(DuiSidebarMenuItem.tagName, DuiSidebarMenuItem);
@@ -1,14 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * `<dui-sidebar-menu>` — Navigation list within a sidebar group.
5
- *
6
- * Renders a semantic `<ul>` for menu items.
7
- *
8
- * @slot - Default slot for `<dui-sidebar-menu-item>` elements.
9
- */
10
- export declare class DuiSidebarMenu extends LitElement {
11
- static tagName: "dui-sidebar-menu";
1
+ import { DuiSidebarMenuPrimitive } from "@deepfuture/dui-primitives/sidebar";
2
+ import "../_install.js";
3
+ export declare class DuiSidebarMenu extends DuiSidebarMenuPrimitive {
12
4
  static styles: import("lit").CSSResult[];
13
- render(): TemplateResult;
14
5
  }
@@ -1,30 +1,12 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- import { css, html, LitElement } from "lit";
3
- import { base } from "@deepfuture/dui-core/base";
1
+ import { css } from "lit";
2
+ import { DuiSidebarMenuPrimitive } from "@deepfuture/dui-primitives/sidebar";
3
+ import "../_install.js";
4
4
  const styles = css `
5
5
  .Menu {
6
- display: flex;
7
- flex-direction: column;
8
- list-style: none;
9
- margin: 0;
10
- padding: 0;
6
+ gap: var(--space-px);
11
7
  }
12
8
  `;
13
- /**
14
- * `<dui-sidebar-menu>` Navigation list within a sidebar group.
15
- *
16
- * Renders a semantic `<ul>` for menu items.
17
- *
18
- * @slot - Default slot for `<dui-sidebar-menu-item>` elements.
19
- */
20
- export class DuiSidebarMenu extends LitElement {
21
- static tagName = "dui-sidebar-menu";
22
- static styles = [base, styles];
23
- render() {
24
- return html `
25
- <ul class="Menu" role="list">
26
- <slot></slot>
27
- </ul>
28
- `;
29
- }
9
+ export class DuiSidebarMenu extends DuiSidebarMenuPrimitive {
10
+ static styles = [...DuiSidebarMenuPrimitive.styles, styles];
30
11
  }
12
+ customElements.define(DuiSidebarMenu.tagName, DuiSidebarMenu);
@@ -1,36 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/sidebar */
2
- import { LitElement, type TemplateResult } from "lit";
3
- import { type SidebarContext } from "./sidebar-context.js";
4
- export type SidebarOpenChangeDetail = {
5
- open: boolean;
6
- };
7
- export declare const openChangeEvent: (detail: SidebarOpenChangeDetail) => CustomEvent<SidebarOpenChangeDetail>;
8
- /**
9
- * `<dui-sidebar-provider>` — Root state manager for the sidebar compound component.
10
- *
11
- * Manages open/close state, mobile detection, and provides context to all
12
- * sidebar sub-components. Wraps the entire layout (sidebar + main content).
13
- *
14
- * @slot - Default slot for sidebar and content areas.
15
- * @fires open-change - Fired when the sidebar opens or closes. Detail: { open: boolean }
16
- */
17
- export declare class DuiSidebarProvider extends LitElement {
18
- #private;
19
- static tagName: "dui-sidebar-provider";
1
+ import { DuiSidebarProviderPrimitive } from "@deepfuture/dui-primitives/sidebar";
2
+ import "../_install.js";
3
+ export declare class DuiSidebarProvider extends DuiSidebarProviderPrimitive {
20
4
  static styles: import("lit").CSSResult[];
21
- /** Controls the sidebar open state (controlled mode). */
22
- accessor open: boolean | undefined;
23
- /** Initial open state for uncontrolled mode. Defaults to true. */
24
- accessor defaultOpen: boolean;
25
- /** Which side the sidebar appears on. */
26
- accessor side: "left" | "right";
27
- /** Visual variant of the sidebar. */
28
- accessor variant: string;
29
- /** How the sidebar collapses. */
30
- accessor collapsible: "offcanvas" | "icon" | "none";
31
- accessor _ctx: SidebarContext;
32
- connectedCallback(): void;
33
- disconnectedCallback(): void;
34
- willUpdate(): void;
35
- render(): TemplateResult;
36
5
  }