@deepfuture/dui-components 0.0.21 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/README.md +56 -65
  2. package/_install.js +11 -0
  3. package/accordion/accordion-item.d.ts +3 -20
  4. package/accordion/accordion-item.js +92 -292
  5. package/accordion/accordion.d.ts +3 -18
  6. package/accordion/accordion.js +9 -247
  7. package/accordion/index.d.ts +6 -6
  8. package/accordion/index.js +5 -5
  9. package/alert-dialog/alert-dialog-close.d.ts +3 -14
  10. package/alert-dialog/alert-dialog-close.js +4 -34
  11. package/alert-dialog/alert-dialog-popup.d.ts +3 -32
  12. package/alert-dialog/alert-dialog-popup.js +68 -317
  13. package/alert-dialog/alert-dialog-trigger.d.ts +3 -14
  14. package/alert-dialog/alert-dialog-trigger.js +4 -51
  15. package/alert-dialog/alert-dialog.d.ts +3 -30
  16. package/alert-dialog/alert-dialog.js +8 -158
  17. package/alert-dialog/index.d.ts +11 -11
  18. package/alert-dialog/index.js +9 -9
  19. package/all.d.ts +159 -123
  20. package/all.js +134 -231
  21. package/avatar/avatar.d.ts +3 -39
  22. package/avatar/avatar.js +18 -238
  23. package/avatar/index.d.ts +4 -4
  24. package/avatar/index.js +3 -3
  25. package/badge/badge.d.ts +3 -10
  26. package/badge/badge.js +87 -22
  27. package/badge/index.d.ts +2 -3
  28. package/badge/index.js +2 -3
  29. package/breadcrumb/breadcrumb-ellipsis.d.ts +3 -12
  30. package/breadcrumb/breadcrumb-ellipsis.js +8 -34
  31. package/breadcrumb/breadcrumb-item.d.ts +3 -11
  32. package/breadcrumb/breadcrumb-item.js +7 -26
  33. package/breadcrumb/breadcrumb-link.d.ts +3 -12
  34. package/breadcrumb/breadcrumb-link.js +16 -26
  35. package/breadcrumb/breadcrumb-page.d.ts +3 -11
  36. package/breadcrumb/breadcrumb-page.js +8 -31
  37. package/breadcrumb/breadcrumb-separator.d.ts +3 -12
  38. package/breadcrumb/breadcrumb-separator.js +8 -31
  39. package/breadcrumb/breadcrumb.d.ts +3 -12
  40. package/breadcrumb/breadcrumb.js +10 -33
  41. package/breadcrumb/index.d.ts +12 -13
  42. package/breadcrumb/index.js +12 -13
  43. package/button/button.d.ts +3 -32
  44. package/button/button.js +220 -165
  45. package/button/index.d.ts +3 -3
  46. package/button/index.js +3 -3
  47. package/calendar/calendar.d.ts +3 -31
  48. package/calendar/calendar.js +71 -481
  49. package/calendar/index.d.ts +3 -3
  50. package/calendar/index.js +3 -3
  51. package/card/card.d.ts +3 -27
  52. package/card/card.js +80 -163
  53. package/card/index.d.ts +2 -3
  54. package/card/index.js +2 -3
  55. package/card-grid/card-grid.d.ts +3 -15
  56. package/card-grid/card-grid.js +8 -106
  57. package/card-grid/index.d.ts +2 -3
  58. package/card-grid/index.js +2 -3
  59. package/checkbox/checkbox-group.d.ts +3 -34
  60. package/checkbox/checkbox-group.js +11 -188
  61. package/checkbox/checkbox.d.ts +3 -47
  62. package/checkbox/checkbox.js +43 -341
  63. package/checkbox/index.d.ts +6 -6
  64. package/checkbox/index.js +5 -5
  65. package/collapsible/collapsible.d.ts +3 -20
  66. package/collapsible/collapsible.js +82 -277
  67. package/collapsible/index.d.ts +3 -3
  68. package/collapsible/index.js +3 -3
  69. package/combobox/combobox.d.ts +3 -47
  70. package/combobox/combobox.js +136 -538
  71. package/combobox/index.d.ts +4 -4
  72. package/combobox/index.js +3 -3
  73. package/command/command-empty.d.ts +3 -8
  74. package/command/command-empty.js +10 -88
  75. package/command/command-group.d.ts +3 -13
  76. package/command/command-group.js +14 -114
  77. package/command/command-input.d.ts +3 -11
  78. package/command/command-input.js +20 -136
  79. package/command/command-item.d.ts +3 -18
  80. package/command/command-item.js +23 -212
  81. package/command/command-list.d.ts +3 -7
  82. package/command/command-list.js +11 -79
  83. package/command/command-separator.d.ts +3 -5
  84. package/command/command-separator.js +10 -11
  85. package/command/command-shortcut.d.ts +3 -5
  86. package/command/command-shortcut.js +9 -12
  87. package/command/command.d.ts +3 -23
  88. package/command/command.js +10 -339
  89. package/command/index.d.ts +17 -19
  90. package/command/index.js +16 -18
  91. package/data-table/data-table.d.ts +3 -57
  92. package/data-table/data-table.js +85 -449
  93. package/data-table/index.d.ts +3 -4
  94. package/data-table/index.js +2 -3
  95. package/dialog/dialog-close.d.ts +3 -14
  96. package/dialog/dialog-close.js +4 -34
  97. package/dialog/dialog-popup.d.ts +3 -34
  98. package/dialog/dialog-popup.js +70 -336
  99. package/dialog/dialog-trigger.d.ts +3 -14
  100. package/dialog/dialog-trigger.js +4 -51
  101. package/dialog/dialog.d.ts +3 -30
  102. package/dialog/dialog.js +8 -158
  103. package/dialog/index.d.ts +11 -11
  104. package/dialog/index.js +9 -9
  105. package/dropzone/dropzone.d.ts +3 -72
  106. package/dropzone/dropzone.js +29 -407
  107. package/dropzone/index.d.ts +4 -4
  108. package/dropzone/index.js +3 -3
  109. package/field/field.d.ts +3 -30
  110. package/field/field.js +34 -353
  111. package/field/index.d.ts +1 -0
  112. package/field/index.js +1 -0
  113. package/fieldset/fieldset.d.ts +3 -18
  114. package/fieldset/fieldset.js +21 -110
  115. package/fieldset/index.d.ts +1 -0
  116. package/fieldset/index.js +1 -0
  117. package/icon/icon.d.ts +3 -15
  118. package/icon/icon.js +4 -33
  119. package/icon/index.d.ts +2 -3
  120. package/icon/index.js +2 -3
  121. package/input/index.d.ts +3 -3
  122. package/input/index.js +3 -3
  123. package/input/input.d.ts +3 -49
  124. package/input/input.js +57 -238
  125. package/menu/index.d.ts +4 -5
  126. package/menu/index.js +4 -5
  127. package/menu/menu-item.d.ts +3 -13
  128. package/menu/menu-item.js +40 -91
  129. package/menu/menu.d.ts +3 -15
  130. package/menu/menu.js +27 -277
  131. package/menubar/index.d.ts +3 -4
  132. package/menubar/index.js +2 -3
  133. package/menubar/menubar.d.ts +3 -19
  134. package/menubar/menubar.js +12 -183
  135. package/number-field/index.d.ts +3 -3
  136. package/number-field/index.js +3 -3
  137. package/number-field/number-field.d.ts +3 -55
  138. package/number-field/number-field.js +205 -698
  139. package/package.json +125 -113
  140. package/popover/index.d.ts +11 -11
  141. package/popover/index.js +9 -9
  142. package/popover/popover-close.d.ts +3 -12
  143. package/popover/popover-close.js +4 -32
  144. package/popover/popover-popup.d.ts +3 -18
  145. package/popover/popover-popup.js +28 -205
  146. package/popover/popover-trigger.d.ts +3 -13
  147. package/popover/popover-trigger.js +4 -73
  148. package/popover/popover.d.ts +3 -29
  149. package/popover/popover.js +8 -207
  150. package/portal/index.d.ts +3 -4
  151. package/portal/index.js +2 -3
  152. package/portal/portal.d.ts +3 -27
  153. package/portal/portal.js +8 -157
  154. package/preview-card/index.d.ts +9 -9
  155. package/preview-card/index.js +7 -7
  156. package/preview-card/preview-card-popup.d.ts +3 -14
  157. package/preview-card/preview-card-popup.js +29 -194
  158. package/preview-card/preview-card-trigger.d.ts +3 -12
  159. package/preview-card/preview-card-trigger.js +4 -74
  160. package/preview-card/preview-card.d.ts +3 -33
  161. package/preview-card/preview-card.js +8 -239
  162. package/progress/index.d.ts +2 -3
  163. package/progress/index.js +2 -3
  164. package/progress/progress.d.ts +3 -17
  165. package/progress/progress.js +28 -130
  166. package/radio/index.d.ts +6 -6
  167. package/radio/index.js +5 -5
  168. package/radio/radio-group.d.ts +3 -37
  169. package/radio/radio-group.js +8 -200
  170. package/radio/radio.d.ts +3 -28
  171. package/radio/radio.js +38 -213
  172. package/scroll-area/index.d.ts +2 -3
  173. package/scroll-area/index.js +2 -3
  174. package/scroll-area/scroll-area.d.ts +3 -36
  175. package/scroll-area/scroll-area.js +25 -535
  176. package/select/index.d.ts +3 -4
  177. package/select/index.js +2 -3
  178. package/select/select.d.ts +3 -39
  179. package/select/select.js +115 -425
  180. package/separator/index.d.ts +2 -3
  181. package/separator/index.js +2 -3
  182. package/separator/separator.d.ts +3 -10
  183. package/separator/separator.js +23 -85
  184. package/sidebar/index.d.ts +29 -29
  185. package/sidebar/index.js +27 -32
  186. package/sidebar/sidebar-content.d.ts +3 -12
  187. package/sidebar/sidebar-content.js +7 -29
  188. package/sidebar/sidebar-footer.d.ts +3 -10
  189. package/sidebar/sidebar-footer.js +7 -20
  190. package/sidebar/sidebar-group-label.d.ts +3 -15
  191. package/sidebar/sidebar-group-label.js +16 -41
  192. package/sidebar/sidebar-group.d.ts +3 -13
  193. package/sidebar/sidebar-group.js +7 -24
  194. package/sidebar/sidebar-header.d.ts +3 -10
  195. package/sidebar/sidebar-header.js +7 -16
  196. package/sidebar/sidebar-inset.d.ts +3 -13
  197. package/sidebar/sidebar-inset.js +7 -28
  198. package/sidebar/sidebar-menu-button.d.ts +3 -26
  199. package/sidebar/sidebar-menu-button.js +59 -217
  200. package/sidebar/sidebar-menu-item.d.ts +3 -10
  201. package/sidebar/sidebar-menu-item.js +7 -19
  202. package/sidebar/sidebar-menu.d.ts +3 -12
  203. package/sidebar/sidebar-menu.js +7 -25
  204. package/sidebar/sidebar-provider.d.ts +3 -34
  205. package/sidebar/sidebar-provider.js +22 -232
  206. package/sidebar/sidebar-separator.d.ts +3 -10
  207. package/sidebar/sidebar-separator.js +9 -19
  208. package/sidebar/sidebar-trigger.d.ts +3 -14
  209. package/sidebar/sidebar-trigger.js +10 -46
  210. package/sidebar/sidebar.d.ts +3 -19
  211. package/sidebar/sidebar.js +65 -262
  212. package/slider/index.d.ts +3 -3
  213. package/slider/index.js +3 -3
  214. package/slider/slider.d.ts +3 -45
  215. package/slider/slider.js +97 -382
  216. package/spinner/index.d.ts +2 -3
  217. package/spinner/index.js +2 -3
  218. package/spinner/spinner.d.ts +3 -11
  219. package/spinner/spinner.js +20 -163
  220. package/split-button/index.d.ts +3 -1
  221. package/split-button/index.js +3 -1
  222. package/split-button/split-button.d.ts +3 -33
  223. package/split-button/split-button.js +306 -394
  224. package/stepper/index.d.ts +3 -3
  225. package/stepper/index.js +3 -3
  226. package/stepper/stepper.d.ts +3 -41
  227. package/stepper/stepper.js +57 -381
  228. package/switch/index.d.ts +3 -3
  229. package/switch/index.js +3 -3
  230. package/switch/switch.d.ts +3 -30
  231. package/switch/switch.js +63 -228
  232. package/tabs/index.d.ts +12 -12
  233. package/tabs/index.js +11 -11
  234. package/tabs/tab.d.ts +3 -14
  235. package/tabs/tab.js +32 -131
  236. package/tabs/tabs-indicator.d.ts +3 -9
  237. package/tabs/tabs-indicator.js +17 -22
  238. package/tabs/tabs-list.d.ts +3 -15
  239. package/tabs/tabs-list.js +14 -113
  240. package/tabs/tabs-panel.d.ts +3 -16
  241. package/tabs/tabs-panel.js +32 -114
  242. package/tabs/tabs.d.ts +3 -22
  243. package/tabs/tabs.js +8 -170
  244. package/textarea/index.d.ts +4 -4
  245. package/textarea/index.js +3 -3
  246. package/textarea/textarea.d.ts +3 -36
  247. package/textarea/textarea.js +63 -220
  248. package/toggle/index.d.ts +6 -6
  249. package/toggle/index.js +5 -5
  250. package/toggle/toggle-group.d.ts +3 -27
  251. package/toggle/toggle-group.js +9 -224
  252. package/toggle/toggle.d.ts +3 -26
  253. package/toggle/toggle.js +93 -178
  254. package/tokens/properties.css +361 -0
  255. package/tokens/prose.css +250 -0
  256. package/tokens/prose.d.ts +2 -0
  257. package/tokens/prose.js +4 -0
  258. package/tokens/tokens-raw.d.ts +2 -0
  259. package/tokens/tokens-raw.js +2 -0
  260. package/tokens/tokens.css +409 -0
  261. package/tokens/tokens.d.ts +2 -0
  262. package/tokens/tokens.js +5 -0
  263. package/toolbar/index.d.ts +2 -3
  264. package/toolbar/index.js +2 -3
  265. package/toolbar/toolbar.d.ts +3 -11
  266. package/toolbar/toolbar.js +25 -116
  267. package/tooltip/index.d.ts +9 -9
  268. package/tooltip/index.js +7 -7
  269. package/tooltip/tooltip-popup.d.ts +3 -14
  270. package/tooltip/tooltip-popup.js +31 -185
  271. package/tooltip/tooltip-trigger.d.ts +3 -14
  272. package/tooltip/tooltip-trigger.js +5 -148
  273. package/tooltip/tooltip.d.ts +3 -35
  274. package/tooltip/tooltip.js +8 -253
  275. package/trunc/index.d.ts +2 -3
  276. package/trunc/index.js +2 -3
  277. package/trunc/trunc.d.ts +3 -17
  278. package/trunc/trunc.js +10 -108
  279. package/_deprecated/center/center.d.ts +0 -14
  280. package/_deprecated/center/center.js +0 -37
  281. package/_deprecated/center/index.d.ts +0 -3
  282. package/_deprecated/center/index.js +0 -3
  283. package/_deprecated/center/register.js +0 -4
  284. package/_deprecated/hstack/hstack.d.ts +0 -25
  285. package/_deprecated/hstack/hstack.js +0 -187
  286. package/_deprecated/hstack/index.d.ts +0 -4
  287. package/_deprecated/hstack/index.js +0 -3
  288. package/_deprecated/hstack/register.d.ts +0 -1
  289. package/_deprecated/hstack/register.js +0 -4
  290. package/_deprecated/page-inset/index.d.ts +0 -3
  291. package/_deprecated/page-inset/index.js +0 -3
  292. package/_deprecated/page-inset/page-inset.d.ts +0 -28
  293. package/_deprecated/page-inset/page-inset.js +0 -151
  294. package/_deprecated/page-inset/register.d.ts +0 -1
  295. package/_deprecated/page-inset/register.js +0 -4
  296. package/_deprecated/vstack/index.d.ts +0 -3
  297. package/_deprecated/vstack/index.js +0 -3
  298. package/_deprecated/vstack/register.d.ts +0 -1
  299. package/_deprecated/vstack/register.js +0 -4
  300. package/_deprecated/vstack/vstack.d.ts +0 -17
  301. package/_deprecated/vstack/vstack.js +0 -125
  302. package/accordion/accordion-context.d.ts +0 -15
  303. package/accordion/accordion-context.js +0 -3
  304. package/alert-dialog/alert-dialog-context.d.ts +0 -13
  305. package/alert-dialog/alert-dialog-context.js +0 -3
  306. package/checkbox/checkbox-group-context.d.ts +0 -11
  307. package/checkbox/checkbox-group-context.js +0 -3
  308. package/command/command-context.d.ts +0 -30
  309. package/command/command-context.js +0 -3
  310. package/command/command-score.d.ts +0 -6
  311. package/command/command-score.js +0 -31
  312. package/dialog/dialog-context.d.ts +0 -13
  313. package/dialog/dialog-context.js +0 -3
  314. package/global.d.ts +0 -179
  315. package/menubar/menubar-context.d.ts +0 -9
  316. package/menubar/menubar-context.js +0 -2
  317. package/popover/popover-context.d.ts +0 -17
  318. package/popover/popover-context.js +0 -3
  319. package/preview-card/preview-card-context.d.ts +0 -16
  320. package/preview-card/preview-card-context.js +0 -3
  321. package/radio/radio-group-context.d.ts +0 -11
  322. package/radio/radio-group-context.js +0 -2
  323. package/sidebar/sidebar-context.d.ts +0 -15
  324. package/sidebar/sidebar-context.js +0 -3
  325. package/split-button/register.d.ts +0 -1
  326. package/split-button/register.js +0 -4
  327. package/tabs/tabs-context.d.ts +0 -8
  328. package/tabs/tabs-context.js +0 -2
  329. package/toggle/toggle-group-context.d.ts +0 -9
  330. package/toggle/toggle-group-context.js +0 -2
  331. package/tooltip/tooltip-context.d.ts +0 -17
  332. package/tooltip/tooltip-context.js +0 -3
  333. /package/{_deprecated/center/register.d.ts → _install.d.ts} +0 -0
package/toggle/toggle.js CHANGED
@@ -1,188 +1,103 @@
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 } from "lit";
40
- import { property, state } from "lit/decorators.js";
41
- import { consume } from "@lit/context";
42
- import { base } from "@deepfuture/dui-core/base";
43
- import { customEvent } from "@deepfuture/dui-core/event";
44
- import { toggleGroupContext, } from "./toggle-group-context.js";
45
- export const pressedChangeEvent = customEvent("pressed-change", { bubbles: true, composed: true });
46
- /** Structural styles only — layout CSS. */
1
+ import { css } from "lit";
2
+ import { DuiTogglePrimitive } from "@deepfuture/dui-primitives/toggle";
3
+ import "../_install.js";
47
4
  const styles = css `
5
+ /* ---------------------------------------------------------------
6
+ * Sizes (swap dimensions)
7
+ * --------------------------------------------------------------- */
8
+
48
9
  :host {
49
- display: inline-block;
10
+ --toggle-height: var(--component-height-md);
11
+ --toggle-padding-y: var(--space-2);
12
+ --toggle-padding-x: var(--space-2_5);
13
+ --toggle-gap: var(--space-1_5);
14
+ --toggle-radius: var(--radius-md);
15
+ --toggle-font-size: var(--text-sm);
16
+ --toggle-icon-size: var(--space-4_5);
17
+ }
18
+
19
+ :host([size="xs"]) {
20
+ --toggle-height: var(--component-height-xs);
21
+ --toggle-padding-y: var(--space-1);
22
+ --toggle-padding-x: var(--space-1_5);
23
+ --toggle-gap: var(--space-1);
24
+ --toggle-font-size: var(--text-xs);
25
+ --toggle-icon-size: var(--space-3_5);
50
26
  }
51
27
 
28
+ :host([size="sm"]) {
29
+ --toggle-height: var(--component-height-sm);
30
+ --toggle-padding-y: var(--space-1_5);
31
+ --toggle-padding-x: var(--space-2);
32
+ --toggle-gap: var(--space-1);
33
+ --toggle-font-size: var(--text-xs);
34
+ --toggle-icon-size: var(--space-4);
35
+ }
36
+
37
+ :host([size="lg"]) {
38
+ --toggle-height: var(--component-height-lg);
39
+ --toggle-padding-y: var(--space-2_5);
40
+ --toggle-padding-x: var(--space-3);
41
+ --toggle-gap: var(--space-1_5);
42
+ --toggle-font-size: var(--text-sm);
43
+ --toggle-icon-size: var(--space-4_5);
44
+ }
45
+
46
+ /* ---------------------------------------------------------------
47
+ * Base appearance — --_select / --_interact alpha overlay pattern
48
+ * --------------------------------------------------------------- */
49
+
52
50
  [part="root"] {
53
- display: inline-flex;
54
- align-items: center;
55
- justify-content: center;
56
- gap: var(--toggle-gap, 0);
57
- border: none;
58
- background: none;
59
- cursor: pointer;
60
- padding: 0;
61
- margin: 0;
62
- font: inherit;
63
- color: inherit;
51
+ --_select: 0;
52
+ --_interact: 0;
53
+ --icon-size: var(--toggle-icon-size);
54
+ --icon-color: currentColor;
55
+ gap: var(--toggle-gap);
56
+ padding: var(--toggle-padding-y) var(--toggle-padding-x);
57
+ height: var(--toggle-height);
58
+ border-radius: var(--toggle-radius);
59
+ border: var(--border-width-thin) solid var(--border);
60
+ font-family: var(--font-sans);
61
+ font-weight: var(--font-weight-medium);
62
+ font-size: var(--toggle-font-size);
63
+ letter-spacing: var(--letter-spacing-tight);
64
+ line-height: var(--line-height-snug);
65
+ white-space: nowrap;
66
+ color: var(--text-2);
67
+ background: oklch(from var(--foreground) l c h / calc(var(--_select) + var(--_interact)));
68
+ transition-property: background, color, box-shadow;
69
+ transition-duration: var(--duration-fast);
70
+ min-width: var(--toggle-height);
71
+ }
72
+
73
+ @media (hover: hover) {
74
+ [part="root"]:hover:not(:disabled):not([data-pressed]) {
75
+ --_interact: 0.05;
76
+ color: var(--text-1);
77
+ }
78
+ }
79
+
80
+ [part="root"][data-pressed] {
81
+ --_select: 0.10;
82
+ color: var(--text-1);
83
+ }
84
+
85
+ [part="root"]:active:not(:disabled) {
86
+ --_interact: 0.10;
87
+ }
88
+
89
+ [part="root"]:focus-visible {
90
+ outline: none;
91
+ box-shadow:
92
+ 0 0 0 var(--focus-ring-offset) var(--background),
93
+ 0 0 0 calc(var(--focus-ring-offset) + var(--focus-ring-width)) var(--focus-ring-color);
64
94
  }
65
95
 
66
96
  [part="root"]:disabled {
67
- cursor: not-allowed;
97
+ opacity: 0.4;
68
98
  }
69
99
  `;
70
- /**
71
- * `<dui-toggle>` — A two-state toggle button. Works standalone or inside a toggle group.
72
- *
73
- * @slot - Toggle content (text and/or icons).
74
- * @slot icon - Optional leading icon.
75
- * @csspart root - The button element.
76
- * @fires pressed-change - Fired when toggled. Detail: { pressed: boolean }
77
- */
78
- let DuiToggle = (() => {
79
- let _classSuper = LitElement;
80
- let _pressed_decorators;
81
- let _pressed_initializers = [];
82
- let _pressed_extraInitializers = [];
83
- let _defaultPressed_decorators;
84
- let _defaultPressed_initializers = [];
85
- let _defaultPressed_extraInitializers = [];
86
- let _disabled_decorators;
87
- let _disabled_initializers = [];
88
- let _disabled_extraInitializers = [];
89
- let _value_decorators;
90
- let _value_initializers = [];
91
- let _value_extraInitializers = [];
92
- let _private_internalPressed_decorators;
93
- let _private_internalPressed_initializers = [];
94
- let _private_internalPressed_extraInitializers = [];
95
- let _private_internalPressed_descriptor;
96
- let __groupCtx_decorators;
97
- let __groupCtx_initializers = [];
98
- let __groupCtx_extraInitializers = [];
99
- return class DuiToggle extends _classSuper {
100
- static {
101
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
102
- _pressed_decorators = [property({ type: Boolean })];
103
- _defaultPressed_decorators = [property({ type: Boolean, attribute: "default-pressed" })];
104
- _disabled_decorators = [property({ type: Boolean, reflect: true })];
105
- _value_decorators = [property()];
106
- _private_internalPressed_decorators = [state()];
107
- __groupCtx_decorators = [consume({ context: toggleGroupContext, subscribe: true }), state()];
108
- __esDecorate(this, null, _pressed_decorators, { kind: "accessor", name: "pressed", static: false, private: false, access: { has: obj => "pressed" in obj, get: obj => obj.pressed, set: (obj, value) => { obj.pressed = value; } }, metadata: _metadata }, _pressed_initializers, _pressed_extraInitializers);
109
- __esDecorate(this, null, _defaultPressed_decorators, { kind: "accessor", name: "defaultPressed", static: false, private: false, access: { has: obj => "defaultPressed" in obj, get: obj => obj.defaultPressed, set: (obj, value) => { obj.defaultPressed = value; } }, metadata: _metadata }, _defaultPressed_initializers, _defaultPressed_extraInitializers);
110
- __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);
111
- __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);
112
- __esDecorate(this, _private_internalPressed_descriptor = { get: __setFunctionName(function () { return this.#internalPressed_accessor_storage; }, "#internalPressed", "get"), set: __setFunctionName(function (value) { this.#internalPressed_accessor_storage = value; }, "#internalPressed", "set") }, _private_internalPressed_decorators, { kind: "accessor", name: "#internalPressed", static: false, private: true, access: { has: obj => #internalPressed in obj, get: obj => obj.#internalPressed, set: (obj, value) => { obj.#internalPressed = value; } }, metadata: _metadata }, _private_internalPressed_initializers, _private_internalPressed_extraInitializers);
113
- __esDecorate(this, null, __groupCtx_decorators, { kind: "accessor", name: "_groupCtx", static: false, private: false, access: { has: obj => "_groupCtx" in obj, get: obj => obj._groupCtx, set: (obj, value) => { obj._groupCtx = value; } }, metadata: _metadata }, __groupCtx_initializers, __groupCtx_extraInitializers);
114
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
115
- }
116
- static tagName = "dui-toggle";
117
- static shadowRootOptions = {
118
- ...LitElement.shadowRootOptions,
119
- delegatesFocus: true,
120
- };
121
- static styles = [base, styles];
122
- #pressed_accessor_storage = __runInitializers(this, _pressed_initializers, undefined);
123
- get pressed() { return this.#pressed_accessor_storage; }
124
- set pressed(value) { this.#pressed_accessor_storage = value; }
125
- #defaultPressed_accessor_storage = (__runInitializers(this, _pressed_extraInitializers), __runInitializers(this, _defaultPressed_initializers, false));
126
- get defaultPressed() { return this.#defaultPressed_accessor_storage; }
127
- set defaultPressed(value) { this.#defaultPressed_accessor_storage = value; }
128
- #disabled_accessor_storage = (__runInitializers(this, _defaultPressed_extraInitializers), __runInitializers(this, _disabled_initializers, false));
129
- get disabled() { return this.#disabled_accessor_storage; }
130
- set disabled(value) { this.#disabled_accessor_storage = value; }
131
- #value_accessor_storage = (__runInitializers(this, _disabled_extraInitializers), __runInitializers(this, _value_initializers, undefined));
132
- get value() { return this.#value_accessor_storage; }
133
- set value(value) { this.#value_accessor_storage = value; }
134
- #internalPressed_accessor_storage = (__runInitializers(this, _value_extraInitializers), __runInitializers(this, _private_internalPressed_initializers, false));
135
- get #internalPressed() { return _private_internalPressed_descriptor.get.call(this); }
136
- set #internalPressed(value) { return _private_internalPressed_descriptor.set.call(this, value); }
137
- #_groupCtx_accessor_storage = (__runInitializers(this, _private_internalPressed_extraInitializers), __runInitializers(this, __groupCtx_initializers, void 0));
138
- get _groupCtx() { return this.#_groupCtx_accessor_storage; }
139
- set _groupCtx(value) { this.#_groupCtx_accessor_storage = value; }
140
- get #isPressed() {
141
- if (this._groupCtx && this.value !== undefined) {
142
- return this._groupCtx.value.includes(this.value);
143
- }
144
- return this.pressed ?? this.#internalPressed;
145
- }
146
- get #isDisabled() {
147
- return this.disabled || (this._groupCtx?.disabled ?? false);
148
- }
149
- connectedCallback() {
150
- super.connectedCallback();
151
- if (this.pressed === undefined && this.defaultPressed) {
152
- this.#internalPressed = true;
153
- }
154
- }
155
- #handleClick = (__runInitializers(this, __groupCtx_extraInitializers), () => {
156
- if (this.#isDisabled)
157
- return;
158
- if (this._groupCtx && this.value !== undefined) {
159
- this._groupCtx.toggle(this.value);
160
- return;
161
- }
162
- const newPressed = !this.#isPressed;
163
- if (this.pressed === undefined) {
164
- this.#internalPressed = newPressed;
165
- }
166
- this.dispatchEvent(pressedChangeEvent({ pressed: newPressed }));
167
- });
168
- render() {
169
- const isPressed = this.#isPressed;
170
- const isDisabled = this.#isDisabled;
171
- return html `
172
- <button
173
- part="root"
174
- type="button"
175
- aria-pressed="${String(isPressed)}"
176
- ?disabled="${isDisabled}"
177
- ?data-pressed="${isPressed}"
178
- ?data-disabled="${isDisabled}"
179
- @click="${this.#handleClick}"
180
- >
181
- <slot name="icon"></slot>
182
- <slot></slot>
183
- </button>
184
- `;
185
- }
186
- };
187
- })();
188
- export { DuiToggle };
100
+ export class DuiToggle extends DuiTogglePrimitive {
101
+ static styles = [...DuiTogglePrimitive.styles, styles];
102
+ }
103
+ customElements.define(DuiToggle.tagName, DuiToggle);
@@ -0,0 +1,361 @@
1
+ /* =================================================================
2
+ * CSS @property Declarations
3
+ * =================================================================
4
+ * Typed API surface for theme-default's component-level CSS custom
5
+ * properties. These provide:
6
+ *
7
+ * 1. Type safety — browser rejects invalid values, falls back to
8
+ * initial-value rather than inheriting garbage.
9
+ * 2. Smooth transitions — registered properties with known syntax
10
+ * can be interpolated, enabling animated variant changes.
11
+ * 3. Self-documenting API — @property blocks are the machine-
12
+ * readable schema and human-readable reference.
13
+ * 4. DevTools integration — Chrome shows registered properties
14
+ * with syntax and initial-value in computed styles.
15
+ *
16
+ * Only consumer-facing properties are declared here. Internal tokens
17
+ * (--space-*, --primary, etc.) are implementation details.
18
+ *
19
+ * initial-value uses resolved values (no var() allowed). These match
20
+ * the light-theme defaults and serve as the ultimate fallback when
21
+ * no theme is applied.
22
+ *
23
+ * CONSTRAINT: @property registrations are global — two themes on
24
+ * the same page could conflict. This is acceptable for DUI's model
25
+ * where one theme is active at a time.
26
+ * ================================================================= */
27
+
28
+ /* -----------------------------------------------------------
29
+ * Button
30
+ * ----------------------------------------------------------- */
31
+ @property --button-bg {
32
+ syntax: "*";
33
+ inherits: true;
34
+ }
35
+
36
+ @property --button-fg {
37
+ syntax: "<color>";
38
+ inherits: true;
39
+ initial-value: oklch(0.97 0 0);
40
+ }
41
+
42
+ @property --button-border {
43
+ syntax: "<color>";
44
+ inherits: true;
45
+ initial-value: transparent;
46
+ }
47
+
48
+ @property --button-height {
49
+ syntax: "<length>";
50
+ inherits: true;
51
+ initial-value: 2rem;
52
+ }
53
+
54
+ @property --button-width {
55
+ syntax: "<length-percentage> | auto";
56
+ inherits: true;
57
+ initial-value: auto;
58
+ }
59
+
60
+ @property --button-padding-y {
61
+ syntax: "<length>";
62
+ inherits: true;
63
+ initial-value: 0.5rem;
64
+ }
65
+
66
+ @property --button-padding-x {
67
+ syntax: "<length>";
68
+ inherits: true;
69
+ initial-value: 0.625rem;
70
+ }
71
+
72
+ @property --button-gap {
73
+ syntax: "<length>";
74
+ inherits: true;
75
+ initial-value: 0.375rem;
76
+ }
77
+
78
+ @property --button-radius {
79
+ syntax: "<length>";
80
+ inherits: true;
81
+ initial-value: 0.5rem;
82
+ }
83
+
84
+ @property --button-font-size {
85
+ syntax: "<length>";
86
+ inherits: true;
87
+ initial-value: 0.875rem;
88
+ }
89
+
90
+ @property --button-icon-size {
91
+ syntax: "<length>";
92
+ inherits: true;
93
+ initial-value: 1.125rem;
94
+ }
95
+
96
+ /* -----------------------------------------------------------
97
+ * Badge
98
+ * ----------------------------------------------------------- */
99
+ @property --badge-bg {
100
+ syntax: "<color>";
101
+ inherits: true;
102
+ initial-value: oklch(0.24 0.005 265);
103
+ }
104
+
105
+ @property --badge-fg {
106
+ syntax: "<color>";
107
+ inherits: true;
108
+ initial-value: oklch(0.985 0 0);
109
+ }
110
+
111
+ @property --badge-border {
112
+ syntax: "<color>";
113
+ inherits: true;
114
+ initial-value: transparent;
115
+ }
116
+
117
+ @property --badge-icon-size {
118
+ syntax: "<length>";
119
+ inherits: true;
120
+ initial-value: 0.75rem;
121
+ }
122
+
123
+ /* -----------------------------------------------------------
124
+ * Spinner
125
+ * ----------------------------------------------------------- */
126
+ @property --spinner-size {
127
+ syntax: "<length>";
128
+ inherits: true;
129
+ initial-value: 1.25rem;
130
+ }
131
+
132
+ @property --spinner-color {
133
+ syntax: "<color>";
134
+ inherits: true;
135
+ initial-value: currentColor;
136
+ }
137
+
138
+ /* -----------------------------------------------------------
139
+ * Checkbox
140
+ * ----------------------------------------------------------- */
141
+ @property --checkbox-size {
142
+ syntax: "<length>";
143
+ inherits: true;
144
+ initial-value: 1.125rem;
145
+ }
146
+
147
+ /* -----------------------------------------------------------
148
+ * Radio
149
+ * ----------------------------------------------------------- */
150
+ @property --radio-size {
151
+ syntax: "<length>";
152
+ inherits: true;
153
+ initial-value: 1.125rem;
154
+ }
155
+
156
+ /* -----------------------------------------------------------
157
+ * Slider
158
+ * ----------------------------------------------------------- */
159
+ @property --slider-track-height {
160
+ syntax: "<length>";
161
+ inherits: true;
162
+ initial-value: 0.375rem;
163
+ }
164
+
165
+ @property --slider-thumb-size {
166
+ syntax: "<length>";
167
+ inherits: true;
168
+ initial-value: 1.125rem;
169
+ }
170
+
171
+ /* -----------------------------------------------------------
172
+ * Switch
173
+ * ----------------------------------------------------------- */
174
+ @property --switch-width {
175
+ syntax: "<length>";
176
+ inherits: true;
177
+ initial-value: 2.25rem;
178
+ }
179
+
180
+ @property --switch-height {
181
+ syntax: "<length>";
182
+ inherits: true;
183
+ initial-value: 1.25rem;
184
+ }
185
+
186
+ @property --switch-thumb-size {
187
+ syntax: "<length>";
188
+ inherits: true;
189
+ initial-value: 1rem;
190
+ }
191
+
192
+ @property --switch-thumb-offset {
193
+ syntax: "<length>";
194
+ inherits: true;
195
+ initial-value: 0.125rem;
196
+ }
197
+
198
+ /* -----------------------------------------------------------
199
+ * Toggle
200
+ * ----------------------------------------------------------- */
201
+ @property --toggle-gap {
202
+ syntax: "<length>";
203
+ inherits: true;
204
+ initial-value: 0.375rem;
205
+ }
206
+
207
+ /* -----------------------------------------------------------
208
+ * Progress
209
+ * ----------------------------------------------------------- */
210
+ @property --progress-height {
211
+ syntax: "<length>";
212
+ inherits: true;
213
+ initial-value: 0.5rem;
214
+ }
215
+
216
+ /* -----------------------------------------------------------
217
+ * Avatar
218
+ * ----------------------------------------------------------- */
219
+ @property --avatar-bg {
220
+ syntax: "<color>";
221
+ inherits: true;
222
+ initial-value: oklch(0.99 0 0);
223
+ }
224
+
225
+ @property --avatar-fg {
226
+ syntax: "<color>";
227
+ inherits: true;
228
+ initial-value: oklch(0.15 0 0 / 0.63);
229
+ }
230
+
231
+ /* -----------------------------------------------------------
232
+ * Sidebar
233
+ * ----------------------------------------------------------- */
234
+ @property --sidebar-width {
235
+ syntax: "<length>";
236
+ inherits: true;
237
+ initial-value: 16rem;
238
+ }
239
+
240
+ @property --sidebar-width-mobile {
241
+ syntax: "<length>";
242
+ inherits: true;
243
+ initial-value: 18rem;
244
+ }
245
+
246
+ @property --sidebar-width-icon {
247
+ syntax: "<length>";
248
+ inherits: true;
249
+ initial-value: 3rem;
250
+ }
251
+
252
+ @property --sidebar-bg {
253
+ syntax: "<color>";
254
+ inherits: true;
255
+ initial-value: oklch(0.99 0 0);
256
+ }
257
+
258
+ @property --sidebar-fg {
259
+ syntax: "<color>";
260
+ inherits: true;
261
+ initial-value: oklch(0.15 0 0 / 0.90);
262
+ }
263
+
264
+ @property --sidebar-border {
265
+ syntax: "<color>";
266
+ inherits: true;
267
+ initial-value: oklch(0.15 0 0 / 0.15);
268
+ }
269
+
270
+ @property --sidebar-button-bg {
271
+ syntax: "<color>";
272
+ inherits: true;
273
+ initial-value: oklch(0 0 0 / 0);
274
+ }
275
+
276
+ @property --sidebar-button-fg {
277
+ syntax: "<color>";
278
+ inherits: true;
279
+ initial-value: oklch(0.15 0 0 / 0.90);
280
+ }
281
+
282
+ @property --sidebar-muted-fg {
283
+ syntax: "<color>";
284
+ inherits: true;
285
+ initial-value: oklch(0.15 0 0 / 0.63);
286
+ }
287
+
288
+ @property --sidebar-ring {
289
+ syntax: "<color>";
290
+ inherits: true;
291
+ initial-value: oklch(0.55 0.25 260);
292
+ }
293
+
294
+ @property --sidebar-separator {
295
+ syntax: "<color>";
296
+ inherits: true;
297
+ initial-value: oklch(0.15 0 0 / 0.15);
298
+ }
299
+
300
+ @property --sidebar-group-padding-y {
301
+ syntax: "<length>";
302
+ inherits: true;
303
+ initial-value: 1rem;
304
+ }
305
+
306
+ @property --sidebar-group-label-inset {
307
+ syntax: "<length>";
308
+ inherits: true;
309
+ initial-value: 1.5rem;
310
+ }
311
+
312
+ @property --sidebar-button-inset {
313
+ syntax: "<length>";
314
+ inherits: true;
315
+ initial-value: 1rem;
316
+ }
317
+
318
+ @property --sidebar-header-content-gap {
319
+ syntax: "<length>";
320
+ inherits: true;
321
+ initial-value: 1rem;
322
+ }
323
+
324
+ /* -----------------------------------------------------------
325
+ * Sidebar Menu Button
326
+ * ----------------------------------------------------------- */
327
+ @property --smb-height {
328
+ syntax: "<length>";
329
+ inherits: true;
330
+ initial-value: 2rem;
331
+ }
332
+
333
+ @property --smb-padding-x {
334
+ syntax: "<length>";
335
+ inherits: true;
336
+ initial-value: 1rem;
337
+ }
338
+
339
+ @property --smb-gap {
340
+ syntax: "<length>";
341
+ inherits: true;
342
+ initial-value: 0.5rem;
343
+ }
344
+
345
+ @property --smb-icon-size {
346
+ syntax: "<length>";
347
+ inherits: true;
348
+ initial-value: 1rem;
349
+ }
350
+
351
+ @property --smb-font-size {
352
+ syntax: "<length>";
353
+ inherits: true;
354
+ initial-value: 0.875rem;
355
+ }
356
+
357
+ @property --smb-radius {
358
+ syntax: "<length>";
359
+ inherits: true;
360
+ initial-value: 0.5rem;
361
+ }