@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/switch/switch.js CHANGED
@@ -1,243 +1,78 @@
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
- var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
36
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
37
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
38
- };
39
- import { css, html, LitElement, nothing } from "lit";
40
- import { property, state } from "lit/decorators.js";
41
- import { base } from "@deepfuture/dui-core/base";
42
- import { customEvent } from "@deepfuture/dui-core/event";
43
- export const checkedChangeEvent = customEvent("checked-change", { bubbles: true, composed: true });
44
- /** Structural styles only — layout and behavioral CSS. */
1
+ import { css } from "lit";
2
+ import { DuiSwitchPrimitive } from "@deepfuture/dui-primitives/switch";
3
+ import "../_install.js";
45
4
  const styles = css `
46
5
  :host {
47
- display: inline-flex;
48
- align-items: start;
49
- cursor: pointer;
50
- text-align: start;
6
+ --switch-width: var(--space-9);
7
+ --switch-height: var(--space-5);
8
+ --switch-thumb-size: var(--space-4);
9
+ --switch-thumb-offset: var(--space-0_5);
10
+ --track-inner: calc(var(--switch-width) - var(--switch-thumb-offset) * 2);
11
+ --switch-checked-offset: calc(var(--track-inner) - var(--switch-thumb-size));
12
+ gap: var(--space-2);
13
+ font-size: var(--text-sm);
51
14
  }
52
15
 
53
- :host([disabled]) {
16
+ [part="root"] {
17
+ width: var(--switch-width);
18
+ height: var(--switch-height);
19
+ margin-block-start: calc(
20
+ (var(--line-height-normal) * 1em - var(--switch-height)) / 2
21
+ );
22
+ border-radius: calc(var(--switch-height) / 2);
23
+ outline: var(--border-width-thin) solid oklch(from var(--foreground) l c h / 0.15);
24
+ background: oklch(from var(--foreground) l c h / 0.12);
25
+ transition-property: background, outline-color, box-shadow, filter, transform;
26
+ transition-duration: var(--duration-fast);
27
+ }
28
+
29
+ [part="root"][data-checked] {
30
+ background: var(--accent);
31
+ outline-color: var(--accent);
32
+ }
33
+
34
+ [part="root"][data-disabled] {
35
+ opacity: 0.4;
54
36
  cursor: not-allowed;
55
37
  }
56
38
 
57
- [part="root"] {
58
- position: relative;
59
- display: inline-flex;
60
- flex-shrink: 0;
61
- align-items: center;
62
- padding: 0;
63
- margin-block-end: 0;
64
- margin-inline: 0;
65
- border: none;
66
- cursor: pointer;
67
- user-select: none;
39
+ [part="root"][data-readonly] {
40
+ cursor: default;
41
+ }
42
+
43
+ [part="root"]:focus-visible {
44
+ outline: none;
45
+ box-shadow:
46
+ 0 0 0 var(--focus-ring-offset) var(--background),
47
+ 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color);
48
+ }
49
+
50
+ :host([aria-invalid="true"]) [part="root"] {
51
+ background: color-mix(in oklch, var(--destructive) 15%, transparent);
52
+ outline-color: color-mix(in oklch, var(--destructive) 70%, transparent);
53
+ }
54
+
55
+ :host([aria-invalid="true"]) [part="root"][data-checked] {
56
+ background: var(--destructive);
68
57
  }
69
58
 
70
59
  [part="thumb"] {
71
- position: absolute;
72
- left: var(--switch-thumb-offset, 0.125rem);
60
+ width: var(--switch-thumb-size);
61
+ height: var(--switch-thumb-size);
62
+ border-radius: 50%;
63
+ outline: var(--border-width-thin) solid oklch(from var(--foreground) l c h / 0.02);
64
+ box-shadow: 0 1px 3px oklch(from var(--foreground) l c h / 0.2);
65
+ background: white;
66
+ transition-property: transform, outline-color;
67
+ transition-duration: var(--duration-fast);
68
+ transition-timing-function: var(--ease-out-3);
73
69
  }
74
70
 
75
71
  [part="root"][data-checked] [part="thumb"] {
76
- transform: translateX(var(--switch-checked-offset, 0));
72
+ background: oklch(from var(--accent) 0.98 0.01 h);
77
73
  }
78
-
79
74
  `;
80
- /**
81
- * `<dui-switch>` A toggle switch for binary on/off settings.
82
- *
83
- * @csspart root - The switch track container.
84
- * @csspart thumb - The movable thumb indicator.
85
- * @fires checked-change - Fired when toggled. Detail: { checked: boolean }
86
- */
87
- let DuiSwitch = (() => {
88
- let _classSuper = LitElement;
89
- let _checked_decorators;
90
- let _checked_initializers = [];
91
- let _checked_extraInitializers = [];
92
- let _defaultChecked_decorators;
93
- let _defaultChecked_initializers = [];
94
- let _defaultChecked_extraInitializers = [];
95
- let _disabled_decorators;
96
- let _disabled_initializers = [];
97
- let _disabled_extraInitializers = [];
98
- let _readOnly_decorators;
99
- let _readOnly_initializers = [];
100
- let _readOnly_extraInitializers = [];
101
- let _required_decorators;
102
- let _required_initializers = [];
103
- let _required_extraInitializers = [];
104
- let _name_decorators;
105
- let _name_initializers = [];
106
- let _name_extraInitializers = [];
107
- let _value_decorators;
108
- let _value_initializers = [];
109
- let _value_extraInitializers = [];
110
- let _uncheckedValue_decorators;
111
- let _uncheckedValue_initializers = [];
112
- let _uncheckedValue_extraInitializers = [];
113
- let _private_internalChecked_decorators;
114
- let _private_internalChecked_initializers = [];
115
- let _private_internalChecked_extraInitializers = [];
116
- let _private_internalChecked_descriptor;
117
- return class DuiSwitch extends _classSuper {
118
- static {
119
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
120
- _checked_decorators = [property({ type: Boolean, reflect: true })];
121
- _defaultChecked_decorators = [property({ type: Boolean, attribute: "default-checked" })];
122
- _disabled_decorators = [property({ type: Boolean, reflect: true })];
123
- _readOnly_decorators = [property({ type: Boolean, reflect: true, attribute: "read-only" })];
124
- _required_decorators = [property({ type: Boolean, reflect: true })];
125
- _name_decorators = [property()];
126
- _value_decorators = [property()];
127
- _uncheckedValue_decorators = [property({ attribute: "unchecked-value" })];
128
- _private_internalChecked_decorators = [state()];
129
- __esDecorate(this, null, _checked_decorators, { kind: "accessor", name: "checked", static: false, private: false, access: { has: obj => "checked" in obj, get: obj => obj.checked, set: (obj, value) => { obj.checked = value; } }, metadata: _metadata }, _checked_initializers, _checked_extraInitializers);
130
- __esDecorate(this, null, _defaultChecked_decorators, { kind: "accessor", name: "defaultChecked", static: false, private: false, access: { has: obj => "defaultChecked" in obj, get: obj => obj.defaultChecked, set: (obj, value) => { obj.defaultChecked = value; } }, metadata: _metadata }, _defaultChecked_initializers, _defaultChecked_extraInitializers);
131
- __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);
132
- __esDecorate(this, null, _readOnly_decorators, { kind: "accessor", name: "readOnly", static: false, private: false, access: { has: obj => "readOnly" in obj, get: obj => obj.readOnly, set: (obj, value) => { obj.readOnly = value; } }, metadata: _metadata }, _readOnly_initializers, _readOnly_extraInitializers);
133
- __esDecorate(this, null, _required_decorators, { kind: "accessor", name: "required", static: false, private: false, access: { has: obj => "required" in obj, get: obj => obj.required, set: (obj, value) => { obj.required = value; } }, metadata: _metadata }, _required_initializers, _required_extraInitializers);
134
- __esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
135
- __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
136
- __esDecorate(this, null, _uncheckedValue_decorators, { kind: "accessor", name: "uncheckedValue", static: false, private: false, access: { has: obj => "uncheckedValue" in obj, get: obj => obj.uncheckedValue, set: (obj, value) => { obj.uncheckedValue = value; } }, metadata: _metadata }, _uncheckedValue_initializers, _uncheckedValue_extraInitializers);
137
- __esDecorate(this, _private_internalChecked_descriptor = { get: __setFunctionName(function () { return this.#internalChecked_accessor_storage; }, "#internalChecked", "get"), set: __setFunctionName(function (value) { this.#internalChecked_accessor_storage = value; }, "#internalChecked", "set") }, _private_internalChecked_decorators, { kind: "accessor", name: "#internalChecked", static: false, private: true, access: { has: obj => #internalChecked in obj, get: obj => obj.#internalChecked, set: (obj, value) => { obj.#internalChecked = value; } }, metadata: _metadata }, _private_internalChecked_initializers, _private_internalChecked_extraInitializers);
138
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
139
- }
140
- static tagName = "dui-switch";
141
- static formAssociated = true;
142
- static styles = [base, styles];
143
- #internals;
144
- constructor() {
145
- super();
146
- this.#internals = this.attachInternals();
147
- }
148
- #checked_accessor_storage = __runInitializers(this, _checked_initializers, undefined);
149
- get checked() { return this.#checked_accessor_storage; }
150
- set checked(value) { this.#checked_accessor_storage = value; }
151
- #defaultChecked_accessor_storage = (__runInitializers(this, _checked_extraInitializers), __runInitializers(this, _defaultChecked_initializers, false));
152
- get defaultChecked() { return this.#defaultChecked_accessor_storage; }
153
- set defaultChecked(value) { this.#defaultChecked_accessor_storage = value; }
154
- #disabled_accessor_storage = (__runInitializers(this, _defaultChecked_extraInitializers), __runInitializers(this, _disabled_initializers, false));
155
- get disabled() { return this.#disabled_accessor_storage; }
156
- set disabled(value) { this.#disabled_accessor_storage = value; }
157
- #readOnly_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _readOnly_initializers, false));
158
- get readOnly() { return this.#readOnly_accessor_storage; }
159
- set readOnly(value) { this.#readOnly_accessor_storage = value; }
160
- #required_accessor_storage = (__runInitializers(this, _readOnly_extraInitializers), __runInitializers(this, _required_initializers, false));
161
- get required() { return this.#required_accessor_storage; }
162
- set required(value) { this.#required_accessor_storage = value; }
163
- #name_accessor_storage = (__runInitializers(this, _required_extraInitializers), __runInitializers(this, _name_initializers, undefined));
164
- get name() { return this.#name_accessor_storage; }
165
- set name(value) { this.#name_accessor_storage = value; }
166
- #value_accessor_storage = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _value_initializers, "on"));
167
- get value() { return this.#value_accessor_storage; }
168
- set value(value) { this.#value_accessor_storage = value; }
169
- #uncheckedValue_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _uncheckedValue_initializers, ""));
170
- get uncheckedValue() { return this.#uncheckedValue_accessor_storage; }
171
- set uncheckedValue(value) { this.#uncheckedValue_accessor_storage = value; }
172
- #internalChecked_accessor_storage = (__runInitializers(this, _uncheckedValue_extraInitializers), __runInitializers(this, _private_internalChecked_initializers, false));
173
- get #internalChecked() { return _private_internalChecked_descriptor.get.call(this); }
174
- set #internalChecked(value) { return _private_internalChecked_descriptor.set.call(this, value); }
175
- get #isChecked() {
176
- return this.checked ?? this.#internalChecked;
177
- }
178
- get #isDisabled() {
179
- return this.disabled;
180
- }
181
- connectedCallback() {
182
- super.connectedCallback();
183
- if (this.checked === undefined && this.defaultChecked) {
184
- this.#internalChecked = true;
185
- }
186
- this.addEventListener("click", this.#handleHostClick);
187
- }
188
- willUpdate() {
189
- this.#syncFormValue();
190
- }
191
- #syncFormValue() {
192
- const formValue = this.#isChecked ? this.value : this.uncheckedValue;
193
- this.#internals.setFormValue(formValue || null);
194
- }
195
- disconnectedCallback() {
196
- super.disconnectedCallback();
197
- this.removeEventListener("click", this.#handleHostClick);
198
- }
199
- #handleHostClick = (__runInitializers(this, _private_internalChecked_extraInitializers), (_e) => {
200
- this.#handleClick();
201
- });
202
- #handleClick = () => {
203
- if (this.#isDisabled || this.readOnly)
204
- return;
205
- const newChecked = !this.#isChecked;
206
- if (this.checked === undefined) {
207
- this.#internalChecked = newChecked;
208
- }
209
- this.dispatchEvent(checkedChangeEvent({ checked: newChecked }));
210
- };
211
- #handleKeyDown = (e) => {
212
- if (e.key === " " || e.key === "Enter") {
213
- e.preventDefault();
214
- this.#handleClick();
215
- }
216
- };
217
- render() {
218
- const isChecked = this.#isChecked;
219
- const isDisabled = this.#isDisabled;
220
- return html `
221
- <span
222
- part="root"
223
- role="switch"
224
- aria-checked="${String(isChecked)}"
225
- aria-disabled="${isDisabled ? "true" : nothing}"
226
- aria-readonly="${this.readOnly ? "true" : nothing}"
227
- aria-required="${this.required ? "true" : nothing}"
228
- tabindex="${isDisabled ? nothing : "0"}"
229
- ?data-checked="${isChecked}"
230
- ?data-unchecked="${!isChecked}"
231
- ?data-disabled="${isDisabled}"
232
- ?data-readonly="${this.readOnly}"
233
- ?data-required="${this.required}"
234
- @keydown="${this.#handleKeyDown}"
235
- >
236
- <span part="thumb"></span>
237
- </span>
238
- <slot></slot>
239
- `;
240
- }
241
- };
242
- })();
243
- export { DuiSwitch };
75
+ export class DuiSwitch extends DuiSwitchPrimitive {
76
+ static styles = [...DuiSwitchPrimitive.styles, styles];
77
+ }
78
+ customElements.define(DuiSwitch.tagName, DuiSwitch);
package/tabs/index.d.ts CHANGED
@@ -1,12 +1,12 @@
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 type { TabsContext } from "./tabs-context.js";
12
- export declare const tabsFamily: (typeof DuiTabs | typeof DuiTabsList | typeof DuiTab | typeof DuiTabsPanel | typeof DuiTabsIndicator)[];
1
+ import "./tab.js";
2
+ import "./tabs.js";
3
+ import "./tabs-indicator.js";
4
+ import "./tabs-list.js";
5
+ import "./tabs-panel.js";
6
+ export { DuiTab } from "./tab.js";
7
+ export { DuiTabs } from "./tabs.js";
8
+ export { DuiTabsIndicator } from "./tabs-indicator.js";
9
+ export { DuiTabsList } from "./tabs-list.js";
10
+ export { DuiTabsPanel } from "./tabs-panel.js";
11
+ export type { TabsContext } from "@deepfuture/dui-primitives/tabs";
12
+ export { valueChangeEvent } from "@deepfuture/dui-primitives/tabs";
package/tabs/index.js CHANGED
@@ -1,11 +1,11 @@
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];
1
+ import "./tab.js";
2
+ import "./tabs.js";
3
+ import "./tabs-indicator.js";
4
+ import "./tabs-list.js";
5
+ import "./tabs-panel.js";
6
+ export { DuiTab } from "./tab.js";
7
+ export { DuiTabs } from "./tabs.js";
8
+ export { DuiTabsIndicator } from "./tabs-indicator.js";
9
+ export { DuiTabsList } from "./tabs-list.js";
10
+ export { DuiTabsPanel } from "./tabs-panel.js";
11
+ export { valueChangeEvent } from "@deepfuture/dui-primitives/tabs";
package/tabs/tab.d.ts CHANGED
@@ -1,16 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/tabs */
2
- import { LitElement, type TemplateResult } from "lit";
3
- import { type TabsContext } from "./tabs-context.js";
4
- /**
5
- * Individual tab trigger button.
6
- */
7
- export declare class DuiTab extends LitElement {
8
- #private;
9
- static tagName: "dui-tab";
1
+ import { DuiTabPrimitive } from "@deepfuture/dui-primitives/tabs";
2
+ import "../_install.js";
3
+ export declare class DuiTab extends DuiTabPrimitive {
10
4
  static styles: import("lit").CSSResult[];
11
- /** Tab value used to match with the corresponding panel. */
12
- accessor value: string;
13
- accessor disabled: boolean;
14
- accessor _ctx: TabsContext;
15
- render(): TemplateResult;
16
5
  }
package/tabs/tab.js CHANGED
@@ -1,139 +1,41 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/tabs */
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- import { css, html, LitElement } from "lit";
37
- import { property } from "lit/decorators.js";
38
- import { consume } from "@lit/context";
39
- import { base } from "@deepfuture/dui-core/base";
40
- import { tabsContext } from "./tabs-context.js";
1
+ import { css } from "lit";
2
+ import { DuiTabPrimitive } from "@deepfuture/dui-primitives/tabs";
3
+ import "../_install.js";
41
4
  const styles = css `
42
- :host {
43
- display: block;
5
+ [part="tab"] {
6
+ color: var(--text-2);
7
+ font-size: var(--text-sm); line-height: var(--line-height-snug);
8
+ font-weight: var(--font-weight-medium);
9
+ text-box: trim-both cap alphabetic;
10
+ padding-inline: var(--space-2);
11
+ height: var(--component-height-md);
12
+ transition-property: color, box-shadow, background, filter, transform;
13
+ transition-duration: var(--duration-fast);
44
14
  }
45
15
 
46
- [part="tab"] {
47
- display: flex;
48
- align-items: center;
49
- justify-content: center;
50
- border: 0;
51
- margin: 0;
52
- outline: 0;
53
- background: none;
54
- appearance: none;
55
- font-family: inherit;
56
- user-select: none;
57
- white-space: nowrap;
58
- word-break: keep-all;
59
- cursor: pointer;
16
+ [part="tab"][data-active] {
17
+ color: var(--text-1);
18
+ }
19
+
20
+ @media (hover: hover) {
21
+ [part="tab"]:hover:not([data-disabled]) {
22
+ color: var(--text-1);
23
+ }
24
+ }
25
+
26
+ [part="tab"]:focus-visible {
27
+ box-shadow:
28
+ 0 0 0 var(--focus-ring-offset) var(--background),
29
+ 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color);
30
+ border-radius: var(--radius-sm);
31
+ z-index: 1;
60
32
  }
61
33
 
62
34
  [part="tab"][data-disabled] {
63
- cursor: not-allowed;
35
+ opacity: 0.4;
64
36
  }
65
37
  `;
66
- /**
67
- * Individual tab trigger button.
68
- */
69
- let DuiTab = (() => {
70
- let _classSuper = LitElement;
71
- let _value_decorators;
72
- let _value_initializers = [];
73
- let _value_extraInitializers = [];
74
- let _disabled_decorators;
75
- let _disabled_initializers = [];
76
- let _disabled_extraInitializers = [];
77
- let __ctx_decorators;
78
- let __ctx_initializers = [];
79
- let __ctx_extraInitializers = [];
80
- return class DuiTab extends _classSuper {
81
- static {
82
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
83
- _value_decorators = [property()];
84
- _disabled_decorators = [property({ type: Boolean, reflect: true })];
85
- __ctx_decorators = [consume({ context: tabsContext, subscribe: true })];
86
- __esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
87
- __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);
88
- __esDecorate(this, null, __ctx_decorators, { kind: "accessor", name: "_ctx", static: false, private: false, access: { has: obj => "_ctx" in obj, get: obj => obj._ctx, set: (obj, value) => { obj._ctx = value; } }, metadata: _metadata }, __ctx_initializers, __ctx_extraInitializers);
89
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
90
- }
91
- static tagName = "dui-tab";
92
- static styles = [base, styles];
93
- #value_accessor_storage = __runInitializers(this, _value_initializers, "");
94
- /** Tab value used to match with the corresponding panel. */
95
- get value() { return this.#value_accessor_storage; }
96
- set value(value) { this.#value_accessor_storage = value; }
97
- #disabled_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _disabled_initializers, false));
98
- get disabled() { return this.#disabled_accessor_storage; }
99
- set disabled(value) { this.#disabled_accessor_storage = value; }
100
- #_ctx_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, __ctx_initializers, void 0));
101
- get _ctx() { return this.#_ctx_accessor_storage; }
102
- set _ctx(value) { this.#_ctx_accessor_storage = value; }
103
- get #isActive() {
104
- return this._ctx?.value === this.value;
105
- }
106
- #handleClick = (__runInitializers(this, __ctx_extraInitializers), () => {
107
- if (this.disabled)
108
- return;
109
- this._ctx?.select(this.value);
110
- });
111
- #handleKeyDown = (event) => {
112
- if (this.disabled)
113
- return;
114
- if (event.key === "Enter" || event.key === " ") {
115
- event.preventDefault();
116
- this._ctx?.select(this.value);
117
- }
118
- };
119
- render() {
120
- const isActive = this.#isActive;
121
- return html `
122
- <button
123
- part="tab"
124
- role="tab"
125
- aria-selected=${isActive}
126
- ?data-active=${isActive}
127
- ?data-disabled=${this.disabled}
128
- ?disabled=${this.disabled}
129
- tabindex=${isActive ? 0 : -1}
130
- @click=${this.#handleClick}
131
- @keydown=${this.#handleKeyDown}
132
- >
133
- <slot></slot>
134
- </button>
135
- `;
136
- }
137
- };
138
- })();
139
- export { DuiTab };
38
+ export class DuiTab extends DuiTabPrimitive {
39
+ static styles = [...DuiTabPrimitive.styles, styles];
40
+ }
41
+ customElements.define(DuiTab.tagName, DuiTab);
@@ -1,11 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/tabs */
2
- import { LitElement, type TemplateResult } from "lit";
3
- /**
4
- * Animated visual indicator that highlights the active tab.
5
- * Place inside dui-tabs-list.
6
- */
7
- export declare class DuiTabsIndicator extends LitElement {
8
- static tagName: "dui-tabs-indicator";
1
+ import { DuiTabsIndicatorPrimitive } from "@deepfuture/dui-primitives/tabs";
2
+ import "../_install.js";
3
+ export declare class DuiTabsIndicator extends DuiTabsIndicatorPrimitive {
9
4
  static styles: import("lit").CSSResult[];
10
- render(): TemplateResult;
11
5
  }
@@ -1,27 +1,22 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/tabs */
2
- import { css, html, LitElement } from "lit";
3
- import { base } from "@deepfuture/dui-core/base";
1
+ import { css } from "lit";
2
+ import { DuiTabsIndicatorPrimitive } from "@deepfuture/dui-primitives/tabs";
3
+ import "../_install.js";
4
4
  const styles = css `
5
5
  :host {
6
- display: block;
7
- position: absolute;
8
- z-index: -1;
9
- left: 0;
10
- top: 50%;
11
- translate: var(--active-tab-left, 0) -50%;
12
- width: var(--active-tab-width, 0);
13
- pointer-events: none;
14
- transition-property: translate, width;
6
+ --tabs-indicator-height: var(--component-height-xs);
7
+ --tabs-indicator-radius: var(--radius-sm);
8
+ --tabs-indicator-bg: oklch(from var(--foreground) l c h / 0.08);
9
+ --tabs-indicator-duration: var(--duration-normal);
10
+ --tabs-indicator-easing: var(--ease-in-out-3);
11
+
12
+ height: var(--tabs-indicator-height);
13
+ border-radius: var(--tabs-indicator-radius);
14
+ background: var(--tabs-indicator-bg);
15
+ transition-duration: var(--tabs-indicator-duration);
16
+ transition-timing-function: var(--tabs-indicator-easing);
15
17
  }
16
18
  `;
17
- /**
18
- * Animated visual indicator that highlights the active tab.
19
- * Place inside dui-tabs-list.
20
- */
21
- export class DuiTabsIndicator extends LitElement {
22
- static tagName = "dui-tabs-indicator";
23
- static styles = [base, styles];
24
- render() {
25
- return html `<span part="indicator"></span>`;
26
- }
19
+ export class DuiTabsIndicator extends DuiTabsIndicatorPrimitive {
20
+ static styles = [...DuiTabsIndicatorPrimitive.styles, styles];
27
21
  }
22
+ customElements.define(DuiTabsIndicator.tagName, DuiTabsIndicator);
@@ -1,17 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/tabs */
2
- import { LitElement, type TemplateResult } from "lit";
3
- import { type TabsContext } from "./tabs-context.js";
4
- /**
5
- * Container for tab triggers. Manages indicator positioning via CSS custom properties.
6
- */
7
- export declare class DuiTabsList extends LitElement {
8
- #private;
9
- static tagName: "dui-tabs-list";
1
+ import { DuiTabsListPrimitive } from "@deepfuture/dui-primitives/tabs";
2
+ import "../_install.js";
3
+ export declare class DuiTabsList extends DuiTabsListPrimitive {
10
4
  static styles: import("lit").CSSResult[];
11
- accessor _ctx: TabsContext;
12
- connectedCallback(): void;
13
- disconnectedCallback(): void;
14
- protected firstUpdated(): void;
15
- protected updated(): void;
16
- render(): TemplateResult;
17
5
  }