@redvars/peacock 3.5.0 → 3.6.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 (314) hide show
  1. package/dist/BaseButton-BNFAYn-S.js +219 -0
  2. package/dist/BaseButton-BNFAYn-S.js.map +1 -0
  3. package/dist/BaseHyperlinkMixin-BNuwbiEf.js +65 -0
  4. package/dist/BaseHyperlinkMixin-BNuwbiEf.js.map +1 -0
  5. package/dist/BaseInput-14YmcfK7.js +27 -0
  6. package/dist/BaseInput-14YmcfK7.js.map +1 -0
  7. package/dist/assets/components.css +1 -1
  8. package/dist/assets/components.css.map +1 -1
  9. package/dist/assets/styles.css +1 -1
  10. package/dist/assets/styles.css.map +1 -1
  11. package/dist/banner.js +14 -30
  12. package/dist/banner.js.map +1 -1
  13. package/dist/{button-DMN1dPAg.js → button-colors-Ccys3hvS.js} +5 -468
  14. package/dist/button-colors-Ccys3hvS.js.map +1 -0
  15. package/dist/button-group.js +228 -8
  16. package/dist/button-group.js.map +1 -1
  17. package/dist/button.js +294 -8
  18. package/dist/button.js.map +1 -1
  19. package/dist/calendar-column-view.js +634 -0
  20. package/dist/calendar-column-view.js.map +1 -0
  21. package/dist/calendar-event-BrQ_SEKD.js +199 -0
  22. package/dist/calendar-event-BrQ_SEKD.js.map +1 -0
  23. package/dist/calendar-month-view.js +376 -0
  24. package/dist/calendar-month-view.js.map +1 -0
  25. package/dist/calendar.js +339 -0
  26. package/dist/calendar.js.map +1 -0
  27. package/dist/canvas.js +361 -0
  28. package/dist/canvas.js.map +1 -0
  29. package/dist/card.js +18 -73
  30. package/dist/card.js.map +1 -1
  31. package/dist/cb-compound-expression.js +125 -0
  32. package/dist/cb-compound-expression.js.map +1 -0
  33. package/dist/cb-divider.js +150 -0
  34. package/dist/cb-divider.js.map +1 -0
  35. package/dist/cb-expression.js +75 -0
  36. package/dist/cb-expression.js.map +1 -0
  37. package/dist/cb-predicate.js +137 -0
  38. package/dist/cb-predicate.js.map +1 -0
  39. package/dist/chart-bar.js.map +1 -1
  40. package/dist/chart-doughnut.js +2 -2
  41. package/dist/chart-doughnut.js.map +1 -1
  42. package/dist/chart-pie.js +2 -2
  43. package/dist/chart-pie.js.map +1 -1
  44. package/dist/chart-stacked-bar.js.map +1 -1
  45. package/dist/code-editor.js +2 -1
  46. package/dist/code-editor.js.map +1 -1
  47. package/dist/code-highlighter.js +2 -1
  48. package/dist/code-highlighter.js.map +1 -1
  49. package/dist/condition-builder.js +58 -0
  50. package/dist/condition-builder.js.map +1 -0
  51. package/dist/custom-elements-jsdocs.json +10860 -5567
  52. package/dist/custom-elements.json +16180 -7996
  53. package/dist/dropdown-button.js +216 -0
  54. package/dist/dropdown-button.js.map +1 -0
  55. package/dist/event-manager-D-QCmUgR.js +113 -0
  56. package/dist/event-manager-D-QCmUgR.js.map +1 -0
  57. package/dist/fab.js +421 -9
  58. package/dist/fab.js.map +1 -1
  59. package/dist/flow-designer-dZnLJOQT.js +1656 -0
  60. package/dist/flow-designer-dZnLJOQT.js.map +1 -0
  61. package/dist/flow-designer-node-XMe-jlKg.js +548 -0
  62. package/dist/flow-designer-node-XMe-jlKg.js.map +1 -0
  63. package/dist/flow-designer-node.js +4 -0
  64. package/dist/flow-designer-node.js.map +1 -0
  65. package/dist/flow-designer.js +16 -0
  66. package/dist/flow-designer.js.map +1 -0
  67. package/dist/html-editor.js +358 -0
  68. package/dist/html-editor.js.map +1 -0
  69. package/dist/icon-button-CK1ZuE-2.js +247 -0
  70. package/dist/icon-button-CK1ZuE-2.js.map +1 -0
  71. package/dist/index.js +31 -8
  72. package/dist/index.js.map +1 -1
  73. package/dist/{is-dark-mode-DicqGkCJ.js → is-dark-mode-DOcaw4Yq.js} +2 -27
  74. package/dist/is-dark-mode-DOcaw4Yq.js.map +1 -0
  75. package/dist/modal.js +418 -0
  76. package/dist/modal.js.map +1 -0
  77. package/dist/{select-4pl4XBj7.js → navigation-rail-DyO0oAZU.js} +2000 -2767
  78. package/dist/navigation-rail-DyO0oAZU.js.map +1 -0
  79. package/dist/notification-manager.js +268 -0
  80. package/dist/notification-manager.js.map +1 -0
  81. package/dist/notification.js +3 -2
  82. package/dist/notification.js.map +1 -1
  83. package/dist/peacock-loader.js +102 -14
  84. package/dist/peacock-loader.js.map +1 -1
  85. package/dist/popover-NC7b1lTq.js +1971 -0
  86. package/dist/popover-NC7b1lTq.js.map +1 -0
  87. package/dist/popover-content.js +125 -0
  88. package/dist/popover-content.js.map +1 -0
  89. package/dist/popover.js +4 -0
  90. package/dist/popover.js.map +1 -0
  91. package/dist/search.js +4 -0
  92. package/dist/search.js.map +1 -1
  93. package/dist/split-button.js +388 -0
  94. package/dist/split-button.js.map +1 -0
  95. package/dist/src/__controllers/floating-controller.d.ts +35 -0
  96. package/dist/src/__mixins/BaseButtonMixin.d.ts +20 -0
  97. package/dist/src/__mixins/BaseHyperlinkMixin.d.ts +18 -0
  98. package/dist/src/__mixins/MixinConstructor.d.ts +1 -0
  99. package/dist/src/banner/banner.d.ts +0 -4
  100. package/dist/src/button/BaseButton.d.ts +4 -47
  101. package/dist/src/button/button/button.d.ts +32 -3
  102. package/dist/src/button/button-group/button-group.d.ts +2 -2
  103. package/dist/src/button/icon-button/icon-button.d.ts +33 -8
  104. package/dist/src/calendar/base-event.d.ts +10 -0
  105. package/dist/src/calendar/calendar-column-view.d.ts +41 -0
  106. package/dist/src/calendar/calendar-event.d.ts +7 -0
  107. package/dist/src/calendar/calendar-month-view.d.ts +31 -0
  108. package/dist/src/calendar/calendar.d.ts +65 -0
  109. package/dist/src/calendar/event-manager.d.ts +17 -0
  110. package/dist/src/calendar/index.d.ts +4 -0
  111. package/dist/src/calendar/types.d.ts +13 -0
  112. package/dist/src/calendar/utils.d.ts +31 -0
  113. package/dist/src/canvas/canvas.d.ts +92 -0
  114. package/dist/src/canvas/index.d.ts +2 -0
  115. package/dist/src/card/card.d.ts +4 -15
  116. package/dist/src/condition-builder/cb-compound-expression.d.ts +31 -0
  117. package/dist/src/condition-builder/cb-divider.d.ts +26 -0
  118. package/dist/src/condition-builder/cb-expression.d.ts +31 -0
  119. package/dist/src/condition-builder/cb-predicate.d.ts +30 -0
  120. package/dist/src/condition-builder/condition-builder.d.ts +27 -0
  121. package/dist/src/condition-builder/index.d.ts +5 -0
  122. package/dist/src/dropdown-button/dropdown-button.d.ts +68 -0
  123. package/dist/src/dropdown-button/index.d.ts +1 -0
  124. package/dist/src/fab/fab.d.ts +4 -35
  125. package/dist/src/flow-designer/commands.d.ts +66 -0
  126. package/dist/src/flow-designer/flow-designer-node.d.ts +46 -0
  127. package/dist/src/flow-designer/flow-designer.d.ts +133 -0
  128. package/dist/src/flow-designer/index.d.ts +7 -0
  129. package/dist/src/flow-designer/layout.d.ts +30 -0
  130. package/dist/src/flow-designer/types.d.ts +142 -0
  131. package/dist/src/flow-designer/validation.d.ts +43 -0
  132. package/dist/src/flow-designer/workflow-utils.d.ts +40 -0
  133. package/dist/src/focus-ring/focus-ring.d.ts +11 -5
  134. package/dist/src/html-editor/html-editor.d.ts +56 -0
  135. package/dist/src/html-editor/index.d.ts +2 -0
  136. package/dist/src/index.d.ts +16 -1
  137. package/dist/src/link/link.d.ts +1 -1
  138. package/dist/src/menu/menu/menu.d.ts +5 -7
  139. package/dist/src/menu/menu-item/menu-item.d.ts +14 -13
  140. package/dist/src/modal/index.d.ts +1 -0
  141. package/dist/src/modal/modal.d.ts +63 -0
  142. package/dist/src/navigation-rail/index.d.ts +2 -0
  143. package/dist/src/navigation-rail/navigation-rail-item.d.ts +55 -0
  144. package/dist/src/navigation-rail/navigation-rail.d.ts +71 -0
  145. package/dist/src/notification-manager/index.d.ts +1 -0
  146. package/dist/src/notification-manager/notification-manager.d.ts +44 -0
  147. package/dist/src/popover/index.d.ts +2 -0
  148. package/dist/src/popover/popover-content.d.ts +29 -0
  149. package/dist/src/popover/popover.d.ts +62 -0
  150. package/dist/src/sidebar-menu/index.d.ts +3 -0
  151. package/dist/src/sidebar-menu/sidebar-menu-item.d.ts +58 -0
  152. package/dist/src/sidebar-menu/sidebar-menu.d.ts +38 -0
  153. package/dist/src/sidebar-menu/sidebar-sub-menu.d.ts +35 -0
  154. package/dist/src/split-button/index.d.ts +1 -0
  155. package/dist/src/split-button/split-button.d.ts +72 -0
  156. package/dist/src/toolbar/toolbar.d.ts +10 -10
  157. package/dist/src/tooltip/tooltip.d.ts +5 -15
  158. package/dist/src/url-field/index.d.ts +1 -0
  159. package/dist/src/url-field/url-field.d.ts +48 -0
  160. package/dist/test/flow-designer.test.d.ts +1 -0
  161. package/dist/test/sidebar-menu.test.d.ts +1 -0
  162. package/dist/toolbar.js +10 -10
  163. package/dist/toolbar.js.map +1 -1
  164. package/dist/tsconfig.tsbuildinfo +1 -1
  165. package/package.json +4 -2
  166. package/readme.md +73 -65
  167. package/scss/mixin.scss +16 -0
  168. package/src/__controllers/floating-controller.ts +237 -0
  169. package/src/__mixins/BaseButtonMixin.ts +83 -0
  170. package/src/__mixins/BaseHyperlinkMixin.ts +68 -0
  171. package/src/__mixins/MixinConstructor.ts +1 -0
  172. package/src/{__base_element → __mixins}/README.md +2 -2
  173. package/src/banner/banner.scss +20 -25
  174. package/src/banner/banner.ts +1 -7
  175. package/src/button/BaseButton.ts +11 -100
  176. package/src/button/button/button-sizes.scss +4 -2
  177. package/src/button/button/button.ts +77 -23
  178. package/src/button/button-group/button-group.ts +2 -2
  179. package/src/button/icon-button/icon-button.ts +75 -33
  180. package/src/calendar/base-event.ts +49 -0
  181. package/src/calendar/calendar-column-view.scss +326 -0
  182. package/src/calendar/calendar-column-view.ts +392 -0
  183. package/src/calendar/calendar-event.ts +20 -0
  184. package/src/calendar/calendar-month-view.scss +192 -0
  185. package/src/calendar/calendar-month-view.ts +244 -0
  186. package/src/calendar/calendar.scss +71 -0
  187. package/src/calendar/calendar.ts +298 -0
  188. package/src/calendar/event-manager.ts +117 -0
  189. package/src/calendar/index.ts +4 -0
  190. package/src/calendar/types.ts +14 -0
  191. package/src/calendar/utils.ts +180 -0
  192. package/src/canvas/canvas.scss +60 -0
  193. package/src/canvas/canvas.ts +391 -0
  194. package/src/canvas/index.ts +2 -0
  195. package/src/card/card.ts +11 -71
  196. package/src/chart-bar/chart-bar.ts +9 -14
  197. package/src/chart-bar/chart-stacked-bar.ts +12 -18
  198. package/src/chart-doughnut/chart-doughnut.ts +23 -27
  199. package/src/chart-pie/chart-pie.ts +19 -23
  200. package/src/checkbox/checkbox.scss +17 -34
  201. package/src/checkbox/checkbox.ts +3 -1
  202. package/src/code-highlighter/code-highlighter.scss +1 -0
  203. package/src/code-highlighter/code-highlighter.ts +1 -1
  204. package/src/condition-builder/cb-compound-expression.scss +37 -0
  205. package/src/condition-builder/cb-compound-expression.ts +80 -0
  206. package/src/condition-builder/cb-divider.scss +93 -0
  207. package/src/condition-builder/cb-divider.ts +56 -0
  208. package/src/condition-builder/cb-expression.scss +14 -0
  209. package/src/condition-builder/cb-expression.ts +49 -0
  210. package/src/condition-builder/cb-predicate.scss +35 -0
  211. package/src/condition-builder/cb-predicate.ts +102 -0
  212. package/src/condition-builder/condition-builder.scss +13 -0
  213. package/src/condition-builder/condition-builder.ts +38 -0
  214. package/src/condition-builder/index.ts +5 -0
  215. package/src/date-picker/date-picker.ts +1 -1
  216. package/src/dropdown-button/demo/index.html +110 -0
  217. package/src/dropdown-button/dropdown-button.scss +22 -0
  218. package/src/dropdown-button/dropdown-button.ts +206 -0
  219. package/src/dropdown-button/index.ts +1 -0
  220. package/src/elevation/elevation.scss +5 -5
  221. package/src/fab/fab.ts +29 -100
  222. package/src/flow-designer/DEMO.md +239 -0
  223. package/src/flow-designer/commands.ts +278 -0
  224. package/src/flow-designer/flow-designer-node.ts +172 -0
  225. package/src/flow-designer/flow-designer.scss +457 -0
  226. package/src/flow-designer/flow-designer.ts +611 -0
  227. package/src/flow-designer/index.ts +41 -0
  228. package/src/flow-designer/layout.ts +357 -0
  229. package/src/flow-designer/types.ts +166 -0
  230. package/src/flow-designer/validation.ts +284 -0
  231. package/src/flow-designer/workflow-utils.ts +282 -0
  232. package/src/focus-ring/focus-ring.ts +47 -40
  233. package/src/html-editor/html-editor.scss +146 -0
  234. package/src/html-editor/html-editor.ts +276 -0
  235. package/src/html-editor/index.ts +3 -0
  236. package/src/index.ts +28 -1
  237. package/src/input/input.ts +3 -1
  238. package/src/link/link.ts +2 -2
  239. package/src/menu/menu/menu.scss +2 -2
  240. package/src/menu/menu/menu.ts +91 -101
  241. package/src/menu/menu-item/menu-item.scss +4 -0
  242. package/src/menu/menu-item/menu-item.ts +85 -79
  243. package/src/modal/index.ts +1 -0
  244. package/src/modal/modal.scss +206 -0
  245. package/src/modal/modal.ts +201 -0
  246. package/src/navigation-rail/index.ts +2 -0
  247. package/src/navigation-rail/navigation-rail-item.scss +216 -0
  248. package/src/navigation-rail/navigation-rail-item.ts +223 -0
  249. package/src/navigation-rail/navigation-rail.scss +72 -0
  250. package/src/navigation-rail/navigation-rail.ts +149 -0
  251. package/src/notification/notification.ts +3 -2
  252. package/src/notification-manager/index.ts +1 -0
  253. package/src/notification-manager/notification-manager.scss +113 -0
  254. package/src/notification-manager/notification-manager.ts +199 -0
  255. package/src/number-field/number-field.ts +6 -4
  256. package/src/pagination/pagination.ts +6 -4
  257. package/src/peacock-loader.ts +93 -5
  258. package/src/popover/index.ts +2 -0
  259. package/src/popover/popover-content.scss +69 -0
  260. package/src/popover/popover-content.ts +51 -0
  261. package/src/popover/popover.scss +7 -0
  262. package/src/popover/popover.ts +170 -0
  263. package/src/search/search.ts +4 -0
  264. package/src/sidebar-menu/demo/index.html +68 -0
  265. package/src/sidebar-menu/index.ts +3 -0
  266. package/src/sidebar-menu/sidebar-menu-item.scss +102 -0
  267. package/src/sidebar-menu/sidebar-menu-item.ts +151 -0
  268. package/src/{tree-view/tree-view.scss → sidebar-menu/sidebar-menu.scss} +1 -1
  269. package/src/sidebar-menu/sidebar-menu.ts +182 -0
  270. package/src/sidebar-menu/sidebar-sub-menu.scss +130 -0
  271. package/src/sidebar-menu/sidebar-sub-menu.ts +160 -0
  272. package/src/skeleton/skeleton.scss +18 -24
  273. package/src/snackbar/snackbar.ts +1 -1
  274. package/src/split-button/index.ts +1 -0
  275. package/src/split-button/split-button-colors.scss +56 -0
  276. package/src/split-button/split-button-sizes.scss +28 -0
  277. package/src/split-button/split-button.scss +79 -0
  278. package/src/split-button/split-button.ts +236 -0
  279. package/src/table/table.ts +2 -2
  280. package/src/tabs/tab.ts +4 -3
  281. package/src/text/text.css-component.scss +7 -1
  282. package/src/time-picker/time-picker.ts +1 -1
  283. package/src/toolbar/toolbar.ts +10 -10
  284. package/src/tooltip/tooltip.scss +4 -3
  285. package/src/tooltip/tooltip.ts +64 -98
  286. package/src/url-field/index.ts +1 -0
  287. package/src/url-field/url-field.scss +50 -0
  288. package/src/url-field/url-field.ts +239 -0
  289. package/dist/button-DMN1dPAg.js.map +0 -1
  290. package/dist/button-group-CX9CUUXk.js +0 -435
  291. package/dist/button-group-CX9CUUXk.js.map +0 -1
  292. package/dist/fab-C5Nzxk0E.js +0 -497
  293. package/dist/fab-C5Nzxk0E.js.map +0 -1
  294. package/dist/is-dark-mode-DicqGkCJ.js.map +0 -1
  295. package/dist/select-4pl4XBj7.js.map +0 -1
  296. package/dist/spread-B5cgadZl.js +0 -32
  297. package/dist/spread-B5cgadZl.js.map +0 -1
  298. package/dist/src/__base_element/BaseHyperlink.d.ts +0 -20
  299. package/dist/src/menu/menu/MenuSurfaceController.d.ts +0 -18
  300. package/dist/src/tree-view/index.d.ts +0 -2
  301. package/dist/src/tree-view/tree-node.d.ts +0 -69
  302. package/dist/src/tree-view/tree-view.d.ts +0 -40
  303. package/dist/src/tree-view/wc-tree-view.d.ts +0 -6
  304. package/dist/test/tree-view.test.d.ts +0 -1
  305. package/dist/throttle-C7ZAPqtu.js +0 -24
  306. package/dist/throttle-C7ZAPqtu.js.map +0 -1
  307. package/src/__base_element/BaseHyperlink.ts +0 -42
  308. package/src/menu/menu/MenuSurfaceController.ts +0 -61
  309. package/src/tree-view/demo/index.html +0 -57
  310. package/src/tree-view/index.ts +0 -2
  311. package/src/tree-view/tree-node.scss +0 -101
  312. package/src/tree-view/tree-node.ts +0 -268
  313. package/src/tree-view/tree-view.ts +0 -182
  314. package/src/tree-view/wc-tree-view.ts +0 -9
@@ -0,0 +1,388 @@
1
+ import { a as i, _ as __decorate, I as IndividualComponent, i as i$1, b } from './IndividualComponent-DUINtMGK.js';
2
+ import { n } from './property-1psGvXOq.js';
3
+ import { r } from './state-DwbEjqVk.js';
4
+ import { e } from './query-QBcUV-L_.js';
5
+ import { e as e$1 } from './class-map-YU7g0o3B.js';
6
+ import './directive-ZPhl09Yt.js';
7
+
8
+ var css_248z$2 = i`@charset "UTF-8";
9
+ * {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ .screen-reader-only {
14
+ display: none !important;
15
+ }
16
+
17
+ :host {
18
+ display: inline-flex;
19
+ position: relative;
20
+ --split-button-container-shape: var(--shape-corner-medium);
21
+ --split-button-gap: 0.125rem;
22
+ --split-button-icon-size: 1.125rem;
23
+ }
24
+
25
+ .split-button {
26
+ display: inline-flex;
27
+ align-items: center;
28
+ gap: var(--split-button-gap);
29
+ }
30
+
31
+ .action-button {
32
+ --button-container-shape: var(--split-button-container-shape);
33
+ }
34
+
35
+ .dropdown-trigger {
36
+ --button-container-shape: var(--split-button-container-shape);
37
+ --button-icon-size: var(--split-button-icon-size);
38
+ }
39
+
40
+ .dropdown-icon {
41
+ transition: transform 200ms ease;
42
+ }
43
+
44
+ .dropdown-trigger.active .dropdown-icon {
45
+ transform: rotate(180deg);
46
+ }
47
+
48
+ /* ── Variant: Filled ────────────────────────────────────── */
49
+ .split-button.variant-filled .action-button,
50
+ .split-button.variant-filled .dropdown-trigger {
51
+ --filled-button-container-color: var(--filled-split-button-container-color);
52
+ --filled-button-label-text-color: var(--filled-split-button-label-text-color);
53
+ }
54
+
55
+ /* ── Variant: Tonal ─────────────────────────────────────── */
56
+ .split-button.variant-tonal .action-button,
57
+ .split-button.variant-tonal .dropdown-trigger {
58
+ --tonal-button-container-color: var(--tonal-split-button-container-color);
59
+ --tonal-button-label-text-color: var(--tonal-split-button-label-text-color);
60
+ }
61
+
62
+ /* ── Variant: Outlined ──────────────────────────────────── */
63
+ .split-button.variant-outlined .action-button,
64
+ .split-button.variant-outlined .dropdown-trigger {
65
+ --outlined-button-outline-color: var(--outlined-split-button-outline-color, var(--color-outline));
66
+ --outlined-button-label-text-color: var(--outlined-split-button-label-text-color);
67
+ }
68
+
69
+ :host([block]) {
70
+ width: 100%;
71
+ }
72
+ :host([block]) .split-button {
73
+ width: 100%;
74
+ }
75
+ :host([block]) .action-button {
76
+ flex: 1;
77
+ }`;
78
+
79
+ var css_248z$1 = i`:host([color=primary]) {
80
+ --filled-split-button-container-color: var(--color-primary);
81
+ --filled-split-button-label-text-color: var(--color-on-primary);
82
+ --tonal-split-button-container-color: var(--color-primary-container);
83
+ --tonal-split-button-label-text-color: var(--color-on-primary-container);
84
+ --outlined-split-button-outline-color: var(--color-primary);
85
+ --outlined-split-button-label-text-color: var(--color-primary);
86
+ }
87
+
88
+ :host([color=secondary]) {
89
+ --filled-split-button-container-color: var(--color-secondary);
90
+ --filled-split-button-label-text-color: var(--color-on-secondary);
91
+ --tonal-split-button-container-color: var(--color-secondary-container);
92
+ --tonal-split-button-label-text-color: var(--color-on-secondary-container);
93
+ --outlined-split-button-outline-color: var(--color-secondary);
94
+ --outlined-split-button-label-text-color: var(--color-secondary);
95
+ }
96
+
97
+ :host([color=tertiary]) {
98
+ --filled-split-button-container-color: var(--color-tertiary);
99
+ --filled-split-button-label-text-color: var(--color-on-tertiary);
100
+ --tonal-split-button-container-color: var(--color-tertiary-container);
101
+ --tonal-split-button-label-text-color: var(--color-on-tertiary-container);
102
+ --outlined-split-button-outline-color: var(--color-tertiary);
103
+ --outlined-split-button-label-text-color: var(--color-tertiary);
104
+ }
105
+
106
+ :host([color=success]) {
107
+ --filled-split-button-container-color: var(--color-success);
108
+ --filled-split-button-label-text-color: var(--color-on-success);
109
+ --tonal-split-button-container-color: var(--color-success-container);
110
+ --tonal-split-button-label-text-color: var(--color-on-success-container);
111
+ --outlined-split-button-outline-color: var(--color-success);
112
+ --outlined-split-button-label-text-color: var(--color-success);
113
+ }
114
+
115
+ :host([color=danger]) {
116
+ --filled-split-button-container-color: var(--color-error);
117
+ --filled-split-button-label-text-color: var(--color-on-error);
118
+ --tonal-split-button-container-color: var(--color-error-container);
119
+ --tonal-split-button-label-text-color: var(--color-on-error-container);
120
+ --outlined-split-button-outline-color: var(--color-error);
121
+ --outlined-split-button-label-text-color: var(--color-error);
122
+ }
123
+
124
+ :host([color=warning]) {
125
+ --filled-split-button-container-color: var(--color-warning);
126
+ --filled-split-button-label-text-color: var(--color-on-warning);
127
+ --tonal-split-button-container-color: var(--color-warning-container);
128
+ --tonal-split-button-label-text-color: var(--color-on-warning-container);
129
+ --outlined-split-button-outline-color: var(--color-warning);
130
+ --outlined-split-button-label-text-color: var(--color-warning);
131
+ }
132
+
133
+ :host([color=on-surface]) {
134
+ --filled-split-button-container-color: var(--color-on-surface);
135
+ --filled-split-button-label-text-color: var(--color-surface);
136
+ --tonal-split-button-container-color: var(--color-on-surface-container);
137
+ --tonal-split-button-label-text-color: var(--color-surface-container-high);
138
+ --outlined-split-button-outline-color: var(--color-on-surface);
139
+ --outlined-split-button-label-text-color: var(--color-on-surface);
140
+ }
141
+
142
+ :host([color=surface]) {
143
+ --filled-split-button-container-color: var(--color-surface-container-high);
144
+ --filled-split-button-label-text-color: var(--color-on-surface);
145
+ --tonal-split-button-container-color: var(--color-surface-container-high);
146
+ --tonal-split-button-label-text-color: var(--color-on-surface-container);
147
+ --outlined-split-button-outline-color: var(--color-on-surface);
148
+ --outlined-split-button-label-text-color: var(--color-on-surface);
149
+ }`;
150
+
151
+ var css_248z = i`:host([size=xs]),
152
+ :host([size=extra-small]) {
153
+ --split-button-icon-size: 1rem;
154
+ }
155
+
156
+ :host([size=sm]),
157
+ :host([size=small]) {
158
+ --split-button-icon-size: 1.125rem;
159
+ }
160
+
161
+ :host([size=md]),
162
+ :host([size=medium]) {
163
+ --split-button-icon-size: 1.25rem;
164
+ }
165
+
166
+ :host([size=lg]),
167
+ :host([size=large]) {
168
+ --split-button-icon-size: 1.5rem;
169
+ }
170
+
171
+ :host([size=xl]),
172
+ :host([size=extra-large]) {
173
+ --split-button-icon-size: 2rem;
174
+ }`;
175
+
176
+ /**
177
+ * @label Split Button
178
+ * @tag wc-split-button
179
+ * @rawTag split-button
180
+ *
181
+ * @summary A split button lets users perform a default action or choose from a set of related actions via a dropdown menu.
182
+ * @overview
183
+ * <p>A split button combines a primary action button with a dropdown arrow that opens a menu. Following M3 Material Design, the split button provides a default action alongside a set of secondary options, reducing clutter while keeping alternative actions accessible.</p>
184
+ *
185
+ * @cssprop --split-button-container-shape: Defines the border radius of the split button container shape.
186
+ *
187
+ * @cssprop --filled-split-button-container-color: Color of the filled split button container.
188
+ * @cssprop --filled-split-button-label-text-color: Text color of the filled split button label.
189
+ *
190
+ * @cssprop --outlined-split-button-container-color: Color of the outlined split button container.
191
+ * @cssprop --outlined-split-button-label-text-color: Text color of the outlined split button label.
192
+ *
193
+ * @cssprop --tonal-split-button-container-color: Color of the tonal split button container.
194
+ * @cssprop --tonal-split-button-label-text-color: Text color of the tonal split button label.
195
+ *
196
+ * @fires {MouseEvent} click - Dispatched when the primary action button is clicked.
197
+ * @fires {CustomEvent} toggle-menu - Dispatched when the dropdown menu is opened or closed.
198
+ *
199
+ * @example
200
+ * ```html
201
+ * <wc-split-button>
202
+ * Save
203
+ * <wc-menu-item slot="menu">Save as draft</wc-menu-item>
204
+ * <wc-menu-item slot="menu">Save and publish</wc-menu-item>
205
+ * </wc-split-button>
206
+ * ```
207
+ * @tags controls
208
+ */
209
+ let SplitButton = class SplitButton extends i$1 {
210
+ constructor() {
211
+ super(...arguments);
212
+ /**
213
+ * Button size.
214
+ * Possible values are `"xs"`, `"sm"`, `"md"`, `"lg"`, `"xl"`. Defaults to `"sm"`.
215
+ */
216
+ this.size = 'sm';
217
+ /**
218
+ * The visual style of the split button.
219
+ *
220
+ * Possible variant values:
221
+ * `"filled"` is a filled button.
222
+ * `"outlined"` is an outlined button.
223
+ * `"tonal"` is a light color button.
224
+ */
225
+ this.variant = 'filled';
226
+ /**
227
+ * Defines the primary color of the split button.
228
+ */
229
+ this.color = 'primary';
230
+ /**
231
+ * Whether the split button is disabled.
232
+ */
233
+ this.disabled = false;
234
+ this._menuOpen = false;
235
+ this._menuId = `split-menu-${Math.random().toString(36).slice(2, 9)}`;
236
+ this._onMenuOpened = () => {
237
+ this._menuOpen = true;
238
+ this.dispatchEvent(new CustomEvent('toggle-menu', {
239
+ detail: { open: true },
240
+ bubbles: true,
241
+ composed: true,
242
+ }));
243
+ };
244
+ this._onMenuClosed = () => {
245
+ this._menuOpen = false;
246
+ this.dispatchEvent(new CustomEvent('toggle-menu', {
247
+ detail: { open: false },
248
+ bubbles: true,
249
+ composed: true,
250
+ }));
251
+ };
252
+ this._onKeyDown = (event) => {
253
+ if (this.disabled)
254
+ return;
255
+ if (event.key === 'ArrowDown' &&
256
+ event.target === this._dropdownButton) {
257
+ event.preventDefault();
258
+ if (!this._menuOpen) {
259
+ this._menu.anchorElement = this;
260
+ this._menu?.show();
261
+ }
262
+ // Focus the menu so keyboard nav works
263
+ requestAnimationFrame(() => this._menu?.focus());
264
+ }
265
+ if (event.key === 'Escape' && this._menuOpen) {
266
+ this._menu?.close();
267
+ this._dropdownButton?.focus();
268
+ }
269
+ };
270
+ }
271
+ focus() {
272
+ const btn = this.shadowRoot?.querySelector('.action-button');
273
+ btn?.focus();
274
+ }
275
+ _onActionClick(event) {
276
+ if (this.disabled) {
277
+ event.stopImmediatePropagation();
278
+ event.preventDefault();
279
+ return;
280
+ }
281
+ // Close menu if open
282
+ if (this._menuOpen) {
283
+ this._menu?.close();
284
+ }
285
+ }
286
+ _onDropdownClick(event) {
287
+ event.stopPropagation();
288
+ if (this.disabled)
289
+ return;
290
+ if (this._menuOpen) {
291
+ this._menu?.close();
292
+ }
293
+ else {
294
+ this._menu.anchorElement = this;
295
+ this._menu?.show();
296
+ }
297
+ }
298
+ connectedCallback() {
299
+ super.connectedCallback();
300
+ this.addEventListener('keydown', this._onKeyDown);
301
+ }
302
+ disconnectedCallback() {
303
+ this.removeEventListener('keydown', this._onKeyDown);
304
+ super.disconnectedCallback();
305
+ }
306
+ render() {
307
+ const actionClasses = {
308
+ 'action-button': true,
309
+ disabled: this.disabled,
310
+ };
311
+ const dropdownClasses = {
312
+ 'dropdown-trigger': true,
313
+ active: this._menuOpen,
314
+ disabled: this.disabled,
315
+ };
316
+ const containerClasses = {
317
+ 'split-button': true,
318
+ [`variant-${this.variant}`]: true,
319
+ disabled: this.disabled,
320
+ };
321
+ return b `
322
+ <div class=${e$1(containerClasses)}>
323
+ <wc-button
324
+ class=${e$1(actionClasses)}
325
+ size=${this.size}
326
+ variant=${this.variant}
327
+ ?disabled=${this.disabled}
328
+ @click=${this._onActionClick}
329
+ >
330
+ <slot></slot>
331
+ </wc-button>
332
+
333
+ <wc-icon-button
334
+ class=${e$1(dropdownClasses)}
335
+ size=${this.size}
336
+ variant=${this.variant}
337
+ ?disabled=${this.disabled}
338
+ .configAria=${{
339
+ 'aria-haspopup': 'menu',
340
+ 'aria-expanded': String(this._menuOpen),
341
+ 'aria-controls': this._menuId,
342
+ 'aria-label': 'Open split button menu',
343
+ }}
344
+ @click=${this._onDropdownClick}
345
+ >
346
+ <wc-icon class="dropdown-icon" name="arrow_drop_down" aria-hidden="true"></wc-icon>
347
+ </wc-icon-button>
348
+ </div>
349
+
350
+ <wc-menu
351
+ id=${this._menuId}
352
+ placement="bottom-end"
353
+ @opened=${this._onMenuOpened}
354
+ @closed=${this._onMenuClosed}
355
+ >
356
+ <slot name="menu"></slot>
357
+ </wc-menu>
358
+ `;
359
+ }
360
+ };
361
+ SplitButton.styles = [css_248z$2, css_248z$1, css_248z];
362
+ __decorate([
363
+ n({ reflect: true })
364
+ ], SplitButton.prototype, "size", void 0);
365
+ __decorate([
366
+ n({ reflect: true })
367
+ ], SplitButton.prototype, "variant", void 0);
368
+ __decorate([
369
+ n({ reflect: true })
370
+ ], SplitButton.prototype, "color", void 0);
371
+ __decorate([
372
+ n({ type: Boolean, reflect: true })
373
+ ], SplitButton.prototype, "disabled", void 0);
374
+ __decorate([
375
+ r()
376
+ ], SplitButton.prototype, "_menuOpen", void 0);
377
+ __decorate([
378
+ e('.dropdown-trigger')
379
+ ], SplitButton.prototype, "_dropdownButton", void 0);
380
+ __decorate([
381
+ e('wc-menu')
382
+ ], SplitButton.prototype, "_menu", void 0);
383
+ SplitButton = __decorate([
384
+ IndividualComponent
385
+ ], SplitButton);
386
+
387
+ export { SplitButton };
388
+ //# sourceMappingURL=split-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-button.js","sources":["../../src/split-button/split-button.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './split-button.scss';\nimport colorStyles from './split-button-colors.scss';\nimport sizeStyles from './split-button-sizes.scss';\n\n/**\n * @label Split Button\n * @tag wc-split-button\n * @rawTag split-button\n *\n * @summary A split button lets users perform a default action or choose from a set of related actions via a dropdown menu.\n * @overview\n * <p>A split button combines a primary action button with a dropdown arrow that opens a menu. Following M3 Material Design, the split button provides a default action alongside a set of secondary options, reducing clutter while keeping alternative actions accessible.</p>\n *\n * @cssprop --split-button-container-shape: Defines the border radius of the split button container shape.\n *\n * @cssprop --filled-split-button-container-color: Color of the filled split button container.\n * @cssprop --filled-split-button-label-text-color: Text color of the filled split button label.\n *\n * @cssprop --outlined-split-button-container-color: Color of the outlined split button container.\n * @cssprop --outlined-split-button-label-text-color: Text color of the outlined split button label.\n *\n * @cssprop --tonal-split-button-container-color: Color of the tonal split button container.\n * @cssprop --tonal-split-button-label-text-color: Text color of the tonal split button label.\n *\n * @fires {MouseEvent} click - Dispatched when the primary action button is clicked.\n * @fires {CustomEvent} toggle-menu - Dispatched when the dropdown menu is opened or closed.\n *\n * @example\n * ```html\n * <wc-split-button>\n * Save\n * <wc-menu-item slot=\"menu\">Save as draft</wc-menu-item>\n * <wc-menu-item slot=\"menu\">Save and publish</wc-menu-item>\n * </wc-split-button>\n * ```\n * @tags controls\n */\n@IndividualComponent\nexport class SplitButton extends LitElement {\n static override styles = [styles, colorStyles, sizeStyles];\n\n /**\n * Button size.\n * Possible values are `\"xs\"`, `\"sm\"`, `\"md\"`, `\"lg\"`, `\"xl\"`. Defaults to `\"sm\"`.\n */\n @property({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * The visual style of the split button.\n *\n * Possible variant values:\n * `\"filled\"` is a filled button.\n * `\"outlined\"` is an outlined button.\n * `\"tonal\"` is a light color button.\n */\n @property({ reflect: true }) variant: 'filled' | 'tonal' | 'outlined' =\n 'filled';\n\n /**\n * Defines the primary color of the split button.\n */\n @property({ reflect: true }) color:\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'surface'\n | 'on-surface' = 'primary';\n\n /**\n * Whether the split button is disabled.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @state() private _menuOpen = false;\n\n @query('.dropdown-trigger') private readonly _dropdownButton!: HTMLElement;\n\n @query('wc-menu') private readonly _menu!: HTMLElement & {\n open: boolean;\n anchorElement: HTMLElement | null;\n show: () => void;\n close: () => void;\n };\n\n private _menuId = `split-menu-${Math.random().toString(36).slice(2, 9)}`;\n\n override focus() {\n const btn =\n this.shadowRoot?.querySelector<HTMLElement>('.action-button');\n btn?.focus();\n }\n\n private _onActionClick(event: MouseEvent) {\n if (this.disabled) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n\n // Close menu if open\n if (this._menuOpen) {\n this._menu?.close();\n }\n }\n\n private _onDropdownClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n\n if (this._menuOpen) {\n this._menu?.close();\n } else {\n this._menu.anchorElement = this;\n this._menu?.show();\n }\n }\n\n private _onMenuOpened = () => {\n this._menuOpen = true;\n this.dispatchEvent(\n new CustomEvent('toggle-menu', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onMenuClosed = () => {\n this._menuOpen = false;\n this.dispatchEvent(\n new CustomEvent('toggle-menu', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _onKeyDown = (event: KeyboardEvent) => {\n if (this.disabled) return;\n\n if (\n event.key === 'ArrowDown' &&\n event.target === this._dropdownButton\n ) {\n event.preventDefault();\n if (!this._menuOpen) {\n this._menu.anchorElement = this;\n this._menu?.show();\n }\n // Focus the menu so keyboard nav works\n requestAnimationFrame(() => this._menu?.focus());\n }\n\n if (event.key === 'Escape' && this._menuOpen) {\n this._menu?.close();\n this._dropdownButton?.focus();\n }\n };\n\n override connectedCallback() {\n super.connectedCallback();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n override disconnectedCallback() {\n this.removeEventListener('keydown', this._onKeyDown);\n super.disconnectedCallback();\n }\n\n override render() {\n const actionClasses = {\n 'action-button': true,\n disabled: this.disabled,\n };\n\n const dropdownClasses = {\n 'dropdown-trigger': true,\n active: this._menuOpen,\n disabled: this.disabled,\n };\n\n const containerClasses = {\n 'split-button': true,\n [`variant-${this.variant}`]: true,\n disabled: this.disabled,\n };\n\n return html`\n <div class=${classMap(containerClasses)}>\n <wc-button\n class=${classMap(actionClasses)}\n size=${this.size}\n variant=${this.variant}\n ?disabled=${this.disabled}\n @click=${this._onActionClick}\n >\n <slot></slot>\n </wc-button>\n\n <wc-icon-button\n class=${classMap(dropdownClasses)}\n size=${this.size}\n variant=${this.variant}\n ?disabled=${this.disabled}\n .configAria=${{\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(this._menuOpen),\n 'aria-controls': this._menuId,\n 'aria-label': 'Open split button menu',\n }}\n @click=${this._onDropdownClick}\n >\n <wc-icon class=\"dropdown-icon\" name=\"arrow_drop_down\" aria-hidden=\"true\"></wc-icon>\n </wc-icon-button>\n </div>\n\n <wc-menu\n id=${this._menuId}\n placement=\"bottom-end\"\n @opened=${this._onMenuOpened}\n @closed=${this._onMenuClosed}\n >\n <slot name=\"menu\"></slot>\n </wc-menu>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","styles","colorStyles","sizeStyles","property","state","query"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { Placement, Strategy } from '@floating-ui/dom';
2
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
3
+ export type TriggerType = 'hover' | 'click' | 'context-menu' | 'manual' | 'focus' | 'hover-focus';
4
+ export interface FloatingOptions {
5
+ placement?: Placement;
6
+ strategy?: Strategy;
7
+ offset?: number;
8
+ trigger?: TriggerType;
9
+ closeOnClickOutside?: boolean;
10
+ onOpenChange?: (isOpen: boolean) => void;
11
+ }
12
+ export declare class FloatingController implements ReactiveController {
13
+ private host;
14
+ private reference;
15
+ private floating;
16
+ private arrowElement;
17
+ private cleanup;
18
+ private options;
19
+ private isHostConnected;
20
+ isOpen: boolean;
21
+ constructor(host: ReactiveControllerHost, options?: FloatingOptions);
22
+ hostConnected(): void;
23
+ hostDisconnected(): void;
24
+ setElements(reference: HTMLElement, floating: HTMLElement, arrowElement?: HTMLElement): void;
25
+ setOptions(options: Partial<FloatingOptions>): void;
26
+ private setupEventListeners;
27
+ private removeEventListeners;
28
+ private toggle;
29
+ private handleContextMenu;
30
+ private handleFocusOut;
31
+ private handleOutsideClick;
32
+ open: () => void;
33
+ close: () => void;
34
+ private updatePosition;
35
+ }
@@ -0,0 +1,20 @@
1
+ import { LitElement } from 'lit';
2
+ import type { MixinConstructor } from './MixinConstructor.js';
3
+ /**
4
+ * 1. Define an interface for the members the mixin adds.
5
+ * This makes the type annotation much cleaner.
6
+ */
7
+ export interface BaseButtonInterface {
8
+ htmlType: 'button' | 'submit' | 'reset';
9
+ disabled: boolean;
10
+ softDisabled: boolean;
11
+ disabledReason: string;
12
+ form: string;
13
+ name: string;
14
+ value: string;
15
+ }
16
+ /**
17
+ * 2. Apply the type annotation to the variable.
18
+ */
19
+ declare const BaseButtonMixin: <T extends MixinConstructor<LitElement>>(superclass: T) => T & MixinConstructor<BaseButtonInterface>;
20
+ export default BaseButtonMixin;
@@ -0,0 +1,18 @@
1
+ import { LitElement } from 'lit';
2
+ import type { MixinConstructor } from './MixinConstructor.js';
3
+ /**
4
+ * 1. Define an interface for the members the mixin adds.
5
+ * This makes the type annotation much cleaner.
6
+ */
7
+ export interface BaseHyperlinkInterface {
8
+ href?: string;
9
+ target: '_self' | '_parent' | '_blank' | '_top' | string;
10
+ rel?: string;
11
+ download?: string;
12
+ __isLink(): boolean;
13
+ }
14
+ /**
15
+ * 2. Apply the type annotation to the variable.
16
+ */
17
+ declare const BaseHyperlinkMixin: <T extends MixinConstructor<LitElement>>(superclass: T) => T & MixinConstructor<BaseHyperlinkInterface>;
18
+ export default BaseHyperlinkMixin;
@@ -0,0 +1 @@
1
+ export type MixinConstructor<T = {}> = new (...args: any[]) => T;
@@ -36,10 +36,6 @@ export declare class Banner extends LitElement {
36
36
  * Optional description text when a default slot is not provided.
37
37
  */
38
38
  description: string;
39
- /**
40
- * When true, label and description are rendered on a single line.
41
- */
42
- inline: boolean;
43
39
  private get resolvedLabel();
44
40
  private get resolvedIcon();
45
41
  render(): import("lit-html").TemplateResult<1>;
@@ -1,49 +1,10 @@
1
1
  import { LitElement, nothing } from 'lit';
2
- declare const BaseButton_base: typeof LitElement & (new (...args: any[]) => import("@/__base_element/BaseHyperlink.js").BaseHyperlinkInterface);
2
+ declare const BaseButton_base: typeof LitElement & import("../__mixins/MixinConstructor.js").MixinConstructor<import("@/__mixins/BaseHyperlinkMixin.js").BaseHyperlinkInterface> & import("../__mixins/MixinConstructor.js").MixinConstructor<import("@/__mixins/BaseButtonMixin.js").BaseButtonInterface>;
3
3
  export declare class BaseButton extends BaseButton_base {
4
4
  protected static readonly DISABLED_REASON_ID = "disabled-reason";
5
- htmlType: 'button' | 'submit' | 'reset';
6
- /**
7
- * Type is preset of color and variant. Type will be only applied.
8
- *
9
- */
10
- type?: 'primary' | 'secondary' | 'tertiary';
11
- /**
12
- * The visual style of the button.
13
- *
14
- * Possible variant values:
15
- * `"filled"` is a filled button.
16
- * `"outlined"` is an outlined button.
17
- * `"text"` is a transparent button.
18
- * `"tonal"` is a light color button.
19
- * `"elevated"` is elevated button
20
- */
21
- variant: 'elevated' | 'filled' | 'tonal' | 'outlined' | 'text' | 'neo';
22
- /**
23
- * Defines the primary color of the button. This can be set to predefined color names to apply specific color themes.
24
- */
25
- color: 'primary' | 'success' | 'danger' | 'warning' | 'surface' | 'on-surface';
26
- /**
27
- * Button size.
28
- * Possible values are `"sm"`, `"md"`, `"lg"`. Defaults to `"md"`.
29
- */
30
- size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
31
- /**
32
- * If true, the user cannot interact with the button. Defaults to `false`.
33
- */
34
- disabled: boolean;
5
+ color?: string;
6
+ variant?: string;
35
7
  skeleton: boolean;
36
- /**
37
- * If true, the user cannot interact with the button and the button is visually styled as disabled. But the button is still focusable. Defaults to `false`.
38
- */
39
- softDisabled: boolean;
40
- /**
41
- * If button is disabled, the reason why it is disabled.
42
- */
43
- disabledReason: string;
44
- configAria?: {
45
- [key: string]: any;
46
- };
47
8
  toggle: boolean;
48
9
  selected: boolean;
49
10
  /**
@@ -56,16 +17,12 @@ export declare class BaseButton extends BaseButton_base {
56
17
  */
57
18
  isPressed: boolean;
58
19
  readonly buttonElement: HTMLElement | null;
59
- focus(): void;
60
- blur(): void;
61
20
  connectedCallback(): void;
62
21
  disconnectedCallback(): void;
63
22
  __handlePress: (event: KeyboardEvent | MouseEvent) => void;
64
23
  __dispatchClickWithThrottle: (event: MouseEvent | KeyboardEvent) => void;
65
24
  __dispatchClick: (event: MouseEvent | KeyboardEvent) => void;
66
- __convertTypeToVariantAndColor(): void;
67
- protected get __disabledReasonID(): string | undefined;
68
- __renderDisabledReason(): typeof nothing | import("lit-html").TemplateResult<1>;
25
+ __renderDisabledReason(softDisabled: boolean): typeof nothing | import("lit-html").TemplateResult<1>;
69
26
  __renderTooltip(): typeof nothing | import("lit-html").TemplateResult<1>;
70
27
  }
71
28
  export {};
@@ -42,19 +42,48 @@ import { BaseButton } from '../BaseButton.js';
42
42
  * @tags display
43
43
  */
44
44
  export declare class Button extends BaseButton {
45
- #private;
46
45
  static styles: import("lit").CSSResultGroup[];
47
46
  /**
48
47
  * Icon alignment.
49
48
  * Possible values are `"start"`, `"end"`. Defaults to `"end"`.
50
49
  */
51
50
  iconAlign: 'start' | 'end';
51
+ /**
52
+ * Button size.
53
+ * Possible values are `"xs"`, `"sm"`, `"md"`, `"lg"`, `"xl"`. Defaults to `"sm"`.
54
+ */
55
+ size: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
56
+ /**
57
+ * Type is preset of color and variant. Type will be only applied.
58
+ *
59
+ */
60
+ type?: 'primary' | 'secondary' | 'tertiary';
61
+ /**
62
+ * The visual style of the button.
63
+ *
64
+ * Possible variant values:
65
+ * `"filled"` is a filled button.
66
+ * `"outlined"` is an outlined button.
67
+ * `"text"` is a transparent button.
68
+ * `"tonal"` is a light color button.
69
+ * `"elevated"` is elevated button
70
+ */
71
+ variant: 'elevated' | 'filled' | 'tonal' | 'outlined' | 'text' | 'neo';
72
+ /**
73
+ * Defines the primary color of the button. This can be set to predefined color names to apply specific color themes.
74
+ */
75
+ color: 'primary' | 'success' | 'danger' | 'warning' | 'surface' | 'on-surface';
76
+ /**
77
+ * Additional ARIA attributes to pass to the inner button/anchor element.
78
+ */
79
+ configAria?: {
80
+ [key: string]: any;
81
+ };
52
82
  private slotHasContent;
53
83
  focus(): void;
54
84
  blur(): void;
55
- connectedCallback(): void;
56
- disconnectedCallback(): void;
57
85
  firstUpdated(): void;
86
+ __convertTypeToVariantAndColor(): void;
58
87
  render(): import("lit-html").TemplateResult<1>;
59
88
  renderButtonContent(): import("lit-html").TemplateResult<1>;
60
89
  }
@@ -11,8 +11,8 @@ import { IconButton } from '../icon-button/icon-button.js';
11
11
  * @example
12
12
  * ```html
13
13
  * <wc-button-group variant="connected">
14
- * <wc-icon-button name="home" toggle selected></wc-icon-button>
15
- * <wc-icon-button name="alarm" toggle></wc-icon-button>
14
+ * <wc-icon-button toggle selected><wc-icon name="home"></wc-icon></wc-icon-button>
15
+ * <wc-icon-button toggle><wc-icon name="alarm"></wc-icon></wc-icon-button>
16
16
  * </wc-button-group>
17
17
  * ```
18
18
  *