@kanso-labs/kanso-ui 0.35.0 → 0.37.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 (220) hide show
  1. package/README.md +90 -9
  2. package/dist/button/context.js +7 -0
  3. package/dist/button/context.js.map +1 -0
  4. package/dist/button/group.js +25 -0
  5. package/dist/button/group.js.map +1 -0
  6. package/dist/button/hooks.js +81 -0
  7. package/dist/button/hooks.js.map +1 -0
  8. package/dist/button/index.d.ts +11 -0
  9. package/dist/button/index.js +273 -0
  10. package/dist/button/index.js.map +1 -0
  11. package/dist/button/styles.js +23 -0
  12. package/dist/button/styles.js.map +1 -0
  13. package/dist/calendar/index.js +473 -7
  14. package/dist/calendar/index.js.map +1 -1
  15. package/dist/calendar/styles.js +132 -4
  16. package/dist/calendar/styles.js.map +1 -1
  17. package/dist/chip/index.js +74 -9
  18. package/dist/chip/index.js.map +1 -1
  19. package/dist/chip/styles.js +78 -4
  20. package/dist/chip/styles.js.map +1 -1
  21. package/dist/collection/index.js +12 -9
  22. package/dist/collection/index.js.map +1 -1
  23. package/dist/collection/styles.js +21 -2
  24. package/dist/collection/styles.js.map +1 -1
  25. package/dist/color-scheme.d.ts +29 -0
  26. package/dist/color-scheme.js +32 -0
  27. package/dist/color-scheme.js.map +1 -0
  28. package/dist/components/avatar/index.js +35 -22
  29. package/dist/components/avatar/index.js.map +1 -1
  30. package/dist/components/badge/index.d.ts +40 -0
  31. package/dist/components/badge/index.js +102 -0
  32. package/dist/components/badge/index.js.map +1 -0
  33. package/dist/components/breadcrumbs/index.d.ts +1 -1
  34. package/dist/components/breadcrumbs/index.js +1 -1
  35. package/dist/components/breadcrumbs/index.js.map +1 -1
  36. package/dist/components/button/index.d.ts +58 -14
  37. package/dist/components/button/index.js +400 -147
  38. package/dist/components/button/index.js.map +1 -1
  39. package/dist/components/button-group/index.d.ts +54 -0
  40. package/dist/components/button-group/index.js +272 -0
  41. package/dist/components/button-group/index.js.map +1 -0
  42. package/dist/components/calendar/index.d.ts +9 -1
  43. package/dist/components/calendar/index.js +71 -44
  44. package/dist/components/calendar/index.js.map +1 -1
  45. package/dist/components/card/index.d.ts +1 -1
  46. package/dist/components/card/index.js +4 -4
  47. package/dist/components/card/index.js.map +1 -1
  48. package/dist/components/checkbox/index.js +15 -1
  49. package/dist/components/checkbox/index.js.map +1 -1
  50. package/dist/components/checkbox-group/index.js +1 -0
  51. package/dist/components/checkbox-group/index.js.map +1 -1
  52. package/dist/components/chip/index.d.ts +55 -8
  53. package/dist/components/chip/index.js +174 -63
  54. package/dist/components/chip/index.js.map +1 -1
  55. package/dist/components/chip-group/index.d.ts +16 -7
  56. package/dist/components/chip-group/index.js +58 -35
  57. package/dist/components/chip-group/index.js.map +1 -1
  58. package/dist/components/color-field/index.js +25 -23
  59. package/dist/components/color-field/index.js.map +1 -1
  60. package/dist/components/color-picker/index.js +42 -31
  61. package/dist/components/color-picker/index.js.map +1 -1
  62. package/dist/components/color-swatch-picker/index.d.ts +1 -1
  63. package/dist/components/color-swatch-picker/index.js +17 -13
  64. package/dist/components/color-swatch-picker/index.js.map +1 -1
  65. package/dist/components/combo-box/index.d.ts +5 -3
  66. package/dist/components/combo-box/index.js +63 -58
  67. package/dist/components/combo-box/index.js.map +1 -1
  68. package/dist/components/copy-field/index.d.ts +7 -6
  69. package/dist/components/copy-field/index.js +92 -90
  70. package/dist/components/copy-field/index.js.map +1 -1
  71. package/dist/components/currency/index.d.ts +8 -7
  72. package/dist/components/currency/index.js +43 -65
  73. package/dist/components/currency/index.js.map +1 -1
  74. package/dist/components/date-field/index.js +24 -22
  75. package/dist/components/date-field/index.js.map +1 -1
  76. package/dist/components/date-picker/index.d.ts +10 -2
  77. package/dist/components/date-picker/index.js +76 -69
  78. package/dist/components/date-picker/index.js.map +1 -1
  79. package/dist/components/date-range-picker/index.d.ts +10 -2
  80. package/dist/components/date-range-picker/index.js +93 -86
  81. package/dist/components/date-range-picker/index.js.map +1 -1
  82. package/dist/components/dialog/index.d.ts +1 -1
  83. package/dist/components/dialog/index.js +2 -2
  84. package/dist/components/dialog/index.js.map +1 -1
  85. package/dist/components/disclosure/index.d.ts +1 -1
  86. package/dist/components/disclosure/index.js +6 -6
  87. package/dist/components/disclosure/index.js.map +1 -1
  88. package/dist/components/fab/index.d.ts +72 -0
  89. package/dist/components/fab/index.js +89 -0
  90. package/dist/components/fab/index.js.map +1 -0
  91. package/dist/components/fab-menu/index.d.ts +90 -0
  92. package/dist/components/fab-menu/index.js +297 -0
  93. package/dist/components/fab-menu/index.js.map +1 -0
  94. package/dist/components/feed/index.d.ts +2 -1
  95. package/dist/components/feed/index.js +1 -1
  96. package/dist/components/feed/index.js.map +1 -1
  97. package/dist/components/icon-button/index.d.ts +11 -8
  98. package/dist/components/icon-button/index.js +244 -181
  99. package/dist/components/icon-button/index.js.map +1 -1
  100. package/dist/components/index.d.ts +30 -21
  101. package/dist/components/list/index.d.ts +15 -13
  102. package/dist/components/list/index.js +60 -61
  103. package/dist/components/list/index.js.map +1 -1
  104. package/dist/components/list-box/index.d.ts +3 -2
  105. package/dist/components/list-box/index.js +16 -16
  106. package/dist/components/list-box/index.js.map +1 -1
  107. package/dist/components/list-item/index.js +1 -1
  108. package/dist/components/list-item/index.js.map +1 -1
  109. package/dist/components/menu/index.d.ts +3 -2
  110. package/dist/components/menu/index.js +2 -2
  111. package/dist/components/menu/index.js.map +1 -1
  112. package/dist/components/navigation-bar/index.d.ts +50 -0
  113. package/dist/components/navigation-bar/index.js +129 -0
  114. package/dist/components/navigation-bar/index.js.map +1 -0
  115. package/dist/components/navigation-rail/index.d.ts +59 -0
  116. package/dist/components/navigation-rail/index.js +166 -0
  117. package/dist/components/navigation-rail/index.js.map +1 -0
  118. package/dist/components/navigation-tree/index.d.ts +1 -5
  119. package/dist/components/navigation-tree/index.js +3 -3
  120. package/dist/components/navigation-tree/index.js.map +1 -1
  121. package/dist/components/number-field/index.d.ts +6 -4
  122. package/dist/components/number-field/index.js +84 -84
  123. package/dist/components/number-field/index.js.map +1 -1
  124. package/dist/components/popover/index.d.ts +1 -1
  125. package/dist/components/popover/index.js +1 -1
  126. package/dist/components/popover/index.js.map +1 -1
  127. package/dist/components/radio-group/index.js +22 -11
  128. package/dist/components/radio-group/index.js.map +1 -1
  129. package/dist/components/range-calendar/index.d.ts +7 -1
  130. package/dist/components/range-calendar/index.js +71 -44
  131. package/dist/components/range-calendar/index.js.map +1 -1
  132. package/dist/components/search-field/index.d.ts +2 -1
  133. package/dist/components/search-field/index.js +24 -25
  134. package/dist/components/search-field/index.js.map +1 -1
  135. package/dist/components/search-view/index.d.ts +79 -0
  136. package/dist/components/search-view/index.js +255 -0
  137. package/dist/components/search-view/index.js.map +1 -0
  138. package/dist/components/segmented-button/index.d.ts +2 -2
  139. package/dist/components/segmented-button/index.js +60 -31
  140. package/dist/components/segmented-button/index.js.map +1 -1
  141. package/dist/components/select/index.js +1 -0
  142. package/dist/components/select/index.js.map +1 -1
  143. package/dist/components/sheet/index.d.ts +1 -1
  144. package/dist/components/sheet/index.js +2 -2
  145. package/dist/components/sheet/index.js.map +1 -1
  146. package/dist/components/slider/index.js +1 -1
  147. package/dist/components/slider/index.js.map +1 -1
  148. package/dist/components/snackbar/index.d.ts +2 -2
  149. package/dist/components/snackbar/index.js +28 -13
  150. package/dist/components/snackbar/index.js.map +1 -1
  151. package/dist/components/split-button/index.d.ts +83 -0
  152. package/dist/components/split-button/index.js +341 -0
  153. package/dist/components/split-button/index.js.map +1 -0
  154. package/dist/components/switch/index.js +11 -1
  155. package/dist/components/switch/index.js.map +1 -1
  156. package/dist/components/table/index.d.ts +11 -9
  157. package/dist/components/table/index.js +87 -31
  158. package/dist/components/table/index.js.map +1 -1
  159. package/dist/components/tabs/index.d.ts +35 -4
  160. package/dist/components/tabs/index.js +403 -93
  161. package/dist/components/tabs/index.js.map +1 -1
  162. package/dist/components/tag/index.d.ts +1 -1
  163. package/dist/components/tag/index.js.map +1 -1
  164. package/dist/components/text-area/index.d.ts +7 -5
  165. package/dist/components/text-area/index.js +28 -26
  166. package/dist/components/text-area/index.js.map +1 -1
  167. package/dist/components/text-field/index.d.ts +7 -5
  168. package/dist/components/text-field/index.js +28 -26
  169. package/dist/components/text-field/index.js.map +1 -1
  170. package/dist/components/time-field/index.js +24 -22
  171. package/dist/components/time-field/index.js.map +1 -1
  172. package/dist/components/tree/index.d.ts +7 -9
  173. package/dist/components/tree/index.js +15 -16
  174. package/dist/components/tree/index.js.map +1 -1
  175. package/dist/drag/index.js.map +1 -1
  176. package/dist/drag/styles.js +4 -1
  177. package/dist/drag/styles.js.map +1 -1
  178. package/dist/fab/styles.js +161 -0
  179. package/dist/fab/styles.js.map +1 -0
  180. package/dist/field/index.js +260 -214
  181. package/dist/field/index.js.map +1 -1
  182. package/dist/field/styles.js +10 -2
  183. package/dist/field/styles.js.map +1 -1
  184. package/dist/glyphs/index.js +55 -1
  185. package/dist/glyphs/index.js.map +1 -1
  186. package/dist/hooks/useRipple.js +199 -162
  187. package/dist/hooks/useRipple.js.map +1 -1
  188. package/dist/hooks/useToggleGroupDisabled.js +24 -0
  189. package/dist/hooks/useToggleGroupDisabled.js.map +1 -0
  190. package/dist/i18n/index.js +43 -0
  191. package/dist/i18n/index.js.map +1 -0
  192. package/dist/i18n/messages.js +387 -0
  193. package/dist/i18n/messages.js.map +1 -0
  194. package/dist/index.d.ts +31 -21
  195. package/dist/index.js +25 -16
  196. package/dist/navigation/context.js +7 -0
  197. package/dist/navigation/context.js.map +1 -0
  198. package/dist/navigation/index.d.ts +28 -0
  199. package/dist/navigation/index.js +96 -0
  200. package/dist/navigation/index.js.map +1 -0
  201. package/dist/navigation/styles.js +312 -0
  202. package/dist/navigation/styles.js.map +1 -0
  203. package/dist/react-aria.d.ts +2 -2
  204. package/dist/react-aria.js +2 -2
  205. package/dist/render/useRender.js +0 -1
  206. package/dist/render/useRender.js.map +1 -1
  207. package/dist/row/styles.js +33 -11
  208. package/dist/row/styles.js.map +1 -1
  209. package/dist/styles/focus.js.map +1 -1
  210. package/dist/styles/icon-button.js +9 -1
  211. package/dist/styles/icon-button.js.map +1 -1
  212. package/dist/styles/overlay.js +1 -0
  213. package/dist/styles/overlay.js.map +1 -1
  214. package/dist/styles/picker.js +1 -1
  215. package/dist/styles/picker.js.map +1 -1
  216. package/dist/styles.css +1104 -336
  217. package/dist/tokens/design.tokens.stylex.js +42 -1
  218. package/dist/tokens/design.tokens.stylex.js.map +1 -1
  219. package/dist/tokens.css +166 -53
  220. package/package.json +9 -5
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  import { props } from "../../node_modules/@stylexjs/stylex/lib/es/stylex.js";
3
- import { mergeStatefulStyles } from "../../styles/merge.js";
4
- import { ariaAttributesOf, buttonRenderer, linkRenderer } from "../../render/aria.js";
3
+ import { spacing } from "../../tokens/design.tokens.stylex.js";
5
4
  import { focus } from "../../styles/focus.js";
6
- import { useRipple } from "../../hooks/useRipple.js";
7
- import { refCallback } from "../../render/ref.js";
8
- import ProgressIndicator from "../progress-indicator/index.js";
5
+ import { ButtonBase, ToggleButtonBase } from "../../button/index.js";
6
+ import { ButtonGroupItemContext } from "../../button/context.js";
7
+ import { groupPressHandlers } from "../../button/group.js";
9
8
  import { c } from "react/compiler-runtime";
10
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
- import { Button, Link } from "react-aria-components";
9
+ import { useContext } from "react";
10
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
11
+ import { ToggleGroupStateContext } from "react-aria-components";
12
12
  //#region src/components/button/index.tsx
13
13
  const styles = {
14
14
  base: {
@@ -28,6 +28,9 @@ const styles = {
28
28
  kLWn49: "x1lz68p4",
29
29
  kVAEAm: "x1n2onr6",
30
30
  kybGjl: "x1hl2dhg",
31
+ kIyJzY: "x1qno0dh x12w9bfk",
32
+ k1ekBW: "x1hdt7lq",
33
+ kAMwcw: "x1seskgd",
31
34
  $$css: true
32
35
  },
33
36
  disabled: {
@@ -35,8 +38,8 @@ const styles = {
35
38
  $$css: true
36
39
  },
37
40
  elevated: {
38
- kWkggS: "x1k1wbbp x3k5p2v xf9j7ge x1vnz5z6",
39
- kGVxlE: "x1g60mc1 x1fzngjt x19efjv6",
41
+ kWkggS: "x1vnz5z6",
42
+ kGVxlE: "x19efjv6",
40
43
  kMwMTN: "x1mxwv8y",
41
44
  $$css: true
42
45
  },
@@ -47,9 +50,14 @@ const styles = {
47
50
  kMwMTN: "x1xj74d8 x1bhcspo",
48
51
  $$css: true
49
52
  },
53
+ elevatedToggleSelected: {
54
+ kWkggS: "xnety89 x1jzqe4",
55
+ kMwMTN: "xwjo7ld x1k5gbb1",
56
+ $$css: true
57
+ },
50
58
  filled: {
51
- kWkggS: "xpky1to x16z974x xyf7a0q xnety89",
52
- kGVxlE: "xpk4wdd x1955hzl x1gnnqk1",
59
+ kWkggS: "xnety89",
60
+ kGVxlE: "x1gnnqk1",
53
61
  kMwMTN: "xwjo7ld",
54
62
  $$css: true
55
63
  },
@@ -60,21 +68,31 @@ const styles = {
60
68
  kMwMTN: "x1xj74d8 x1bhcspo",
61
69
  $$css: true
62
70
  },
63
- label: {
64
- k1xSpc: "xjp7ctv",
71
+ filledToggle: {
72
+ kWkggS: "x1mjdul6",
73
+ kMwMTN: "x1w5n3ug",
65
74
  $$css: true
66
75
  },
67
- labelPending: {
68
- k33iCy: "xlshs6z",
76
+ filledToggleSelected: {
77
+ kWkggS: "xnety89 x1jzqe4",
78
+ kMwMTN: "xwjo7ld x1k5gbb1",
79
+ $$css: true
80
+ },
81
+ icon: {
82
+ kGNEyG: "x6s0dn4",
83
+ k1xSpc: "x3nfvp2",
84
+ kmuXW: "x2lah0s",
85
+ kjj79g: "xl56j7k",
69
86
  $$css: true
70
87
  },
71
88
  lg: {
72
- kZKoxP: "xs1ryiz",
73
89
  kMv6JI: "x46eyla",
74
90
  kGuDYH: "x5ehqhr",
75
91
  k63SB2: "xrf6cl6",
76
92
  kb6lSQ: "x1g135zh",
77
93
  kLWn49: "x1ggk5va",
94
+ kAzted: "xdovgog",
95
+ k8WAf4: "x1uvvd8r",
78
96
  kg3NbH: "xg0ps1x",
79
97
  $$css: true
80
98
  },
@@ -83,12 +101,13 @@ const styles = {
83
101
  kGOzcv: "x1gvacq5",
84
102
  kpsdNU: "xm4btww",
85
103
  kEoFBp: "x1hmns74",
86
- kZKoxP: "x1rv7mn0",
104
+ kAzted: "x1cio8j0",
105
+ k8WAf4: "x1cmllll",
87
106
  kg3NbH: "x790zyz",
88
107
  $$css: true
89
108
  },
90
109
  outlined: {
91
- kWkggS: "x1dg9itu x1yu1589 x1728qcm xjbqb8w",
110
+ kWkggS: "xjbqb8w",
92
111
  kVAM5u: "x133yhug",
93
112
  ksu8eU: "x1y0btm7",
94
113
  kMzoRj: "xmkeg23",
@@ -101,16 +120,18 @@ const styles = {
101
120
  kMwMTN: "x1xj74d8 x1bhcspo",
102
121
  $$css: true
103
122
  },
104
- pending: {
105
- kGNEyG: "x6s0dn4",
106
- k1xSpc: "x78zum5",
107
- kpwlN0: "x10a8y8t",
108
- kjj79g: "xl56j7k",
109
- kVAEAm: "x10l6tqk",
123
+ outlinedToggleSelected: {
124
+ kWkggS: "x1c5gpgi x1jzqe4",
125
+ kVAM5u: "x9r1u3d x1n2ykn",
126
+ kMwMTN: "x1girmi0 x1k5gbb1",
127
+ $$css: true
128
+ },
129
+ round: {
130
+ kaIpWk: "x1dkaolv",
110
131
  $$css: true
111
132
  },
112
133
  text: {
113
- kWkggS: "x12vej0r x598nmq x14dcer4 xjbqb8w",
134
+ kWkggS: "xjbqb8w",
114
135
  kMzoRj: "xc342km",
115
136
  kMwMTN: "x1mxwv8y",
116
137
  $$css: true
@@ -121,8 +142,8 @@ const styles = {
121
142
  $$css: true
122
143
  },
123
144
  tonal: {
124
- kWkggS: "xnqsvhv xc87fxa xlizrex x15dekr4",
125
- kGVxlE: "xpk4wdd x1955hzl x1gnnqk1",
145
+ kWkggS: "x15dekr4",
146
+ kGVxlE: "x1gnnqk1",
126
147
  kMwMTN: "x1sawysd",
127
148
  $$css: true
128
149
  },
@@ -133,14 +154,20 @@ const styles = {
133
154
  kMwMTN: "x1xj74d8 x1bhcspo",
134
155
  $$css: true
135
156
  },
157
+ tonalToggleSelected: {
158
+ kWkggS: "x167r6xl x1jzqe4",
159
+ kMwMTN: "x1lba3jz x1k5gbb1",
160
+ $$css: true
161
+ },
136
162
  xl: {
137
- kZKoxP: "x1xaimp3",
138
163
  kMv6JI: "x1fz0g89",
139
164
  kGuDYH: "xkb6epg",
140
165
  k63SB2: "x76yrz5",
141
166
  kOIVth: "x1gka490",
142
167
  kb6lSQ: "x1s1qhaa",
143
168
  kLWn49: "x1voeury",
169
+ kAzted: "x112cvos",
170
+ k8WAf4: "xny1cbh",
144
171
  kg3NbH: "x1sdxjpb",
145
172
  $$css: true
146
173
  },
@@ -149,18 +176,20 @@ const styles = {
149
176
  kGOzcv: "x1arwny6",
150
177
  kpsdNU: "xm4btww",
151
178
  kEoFBp: "x1hmns74",
152
- kZKoxP: "xig8zya",
179
+ kAzted: "xlzjxrf",
180
+ k8WAf4: "xmqoko8",
153
181
  kg3NbH: "x790zyz",
154
182
  $$css: true
155
183
  },
156
184
  xxl: {
157
- kZKoxP: "x173yhrv",
158
185
  kMv6JI: "x1vsmgmf",
159
186
  kGuDYH: "xh9c4x",
160
187
  k63SB2: "x1y15vu6",
161
188
  kOIVth: "xxj4525",
162
189
  kb6lSQ: "xoqu3bc",
163
190
  kLWn49: "x10x9d6x",
191
+ kAzted: "xldltni",
192
+ k8WAf4: "x1lrxzt4",
164
193
  kg3NbH: "x1dao9b2",
165
194
  $$css: true
166
195
  }
@@ -187,6 +216,215 @@ const outlineWidths = {
187
216
  $$css: true
188
217
  }
189
218
  };
219
+ const iconSizes = {
220
+ lg: {
221
+ kGuDYH: "x1pvqxga",
222
+ $$css: true
223
+ },
224
+ md: {
225
+ kGuDYH: "xwsyq91",
226
+ $$css: true
227
+ },
228
+ xl: {
229
+ kGuDYH: "x1s3cmhv",
230
+ $$css: true
231
+ },
232
+ xs: {
233
+ kGuDYH: "xwsyq91",
234
+ $$css: true
235
+ },
236
+ xxl: {
237
+ kGuDYH: "x1tgwohi",
238
+ $$css: true
239
+ }
240
+ };
241
+ const PADDINGS = {
242
+ lg: spacing.xl,
243
+ md: spacing.lg,
244
+ xl: "48px",
245
+ xs: spacing.lg,
246
+ xxl: "64px"
247
+ };
248
+ const shifted = { padding: (value) => [{
249
+ kg3NbH: value != null ? "x30g6up" : value,
250
+ $$css: true
251
+ }, { "--x-paddingInline": ((val) => typeof val === "number" ? val + "px" : val != null ? val : void 0)(value) }] };
252
+ const squareShapes = {
253
+ lg: {
254
+ kaIpWk: "xhpdng0",
255
+ $$css: true
256
+ },
257
+ md: {
258
+ kaIpWk: "x62ce2h",
259
+ $$css: true
260
+ },
261
+ xl: {
262
+ kaIpWk: "x19pkqky",
263
+ $$css: true
264
+ },
265
+ xs: {
266
+ kaIpWk: "x62ce2h",
267
+ $$css: true
268
+ },
269
+ xxl: {
270
+ kaIpWk: "x19pkqky",
271
+ $$css: true
272
+ }
273
+ };
274
+ const pressedShapes = {
275
+ lg: {
276
+ kaIpWk: "x62ce2h",
277
+ $$css: true
278
+ },
279
+ md: {
280
+ kaIpWk: "x1xdvaa9",
281
+ $$css: true
282
+ },
283
+ xl: {
284
+ kaIpWk: "xhpdng0",
285
+ $$css: true
286
+ },
287
+ xs: {
288
+ kaIpWk: "x1xdvaa9",
289
+ $$css: true
290
+ },
291
+ xxl: {
292
+ kaIpWk: "xhpdng0",
293
+ $$css: true
294
+ }
295
+ };
296
+ const hovered = {
297
+ elevated: {
298
+ kWkggS: "xltxkvm",
299
+ kGVxlE: "x1os83gw",
300
+ $$css: true
301
+ },
302
+ elevatedToggleSelected: {
303
+ kWkggS: "xo1ct44 x1jzqe4",
304
+ $$css: true
305
+ },
306
+ filled: {
307
+ kWkggS: "xo1ct44",
308
+ kGVxlE: "x19efjv6",
309
+ $$css: true
310
+ },
311
+ filledToggle: {
312
+ kWkggS: "xtxe0ya",
313
+ $$css: true
314
+ },
315
+ filledToggleSelected: {
316
+ kWkggS: "xo1ct44 x1jzqe4",
317
+ $$css: true
318
+ },
319
+ outlined: {
320
+ kWkggS: "x14noynh",
321
+ $$css: true
322
+ },
323
+ outlinedToggleSelected: {
324
+ kWkggS: "x1hxzsxp x1jzqe4",
325
+ $$css: true
326
+ },
327
+ text: {
328
+ kWkggS: "x659ado",
329
+ $$css: true
330
+ },
331
+ tonal: {
332
+ kWkggS: "x1fctxn6",
333
+ kGVxlE: "x19efjv6",
334
+ $$css: true
335
+ },
336
+ tonalToggleSelected: {
337
+ kWkggS: "x12r95rf x1jzqe4",
338
+ $$css: true
339
+ }
340
+ };
341
+ const focused = {
342
+ elevated: {
343
+ kWkggS: "xcn1wy9",
344
+ $$css: true
345
+ },
346
+ elevatedToggleSelected: {
347
+ kWkggS: "xhodiby x1jzqe4",
348
+ $$css: true
349
+ },
350
+ filled: {
351
+ kWkggS: "xhodiby",
352
+ $$css: true
353
+ },
354
+ filledToggle: {
355
+ kWkggS: "x1ppcb1",
356
+ $$css: true
357
+ },
358
+ filledToggleSelected: {
359
+ kWkggS: "xhodiby x1jzqe4",
360
+ $$css: true
361
+ },
362
+ outlined: {
363
+ kWkggS: "x19p5drm",
364
+ $$css: true
365
+ },
366
+ outlinedToggleSelected: {
367
+ kWkggS: "xn4e5mw x1jzqe4",
368
+ $$css: true
369
+ },
370
+ text: {
371
+ kWkggS: "x1sog3nf",
372
+ $$css: true
373
+ },
374
+ tonal: {
375
+ kWkggS: "x1s5x49g",
376
+ $$css: true
377
+ },
378
+ tonalToggleSelected: {
379
+ kWkggS: "x16tkg7c x1jzqe4",
380
+ $$css: true
381
+ }
382
+ };
383
+ const pressed = {
384
+ elevated: {
385
+ kWkggS: "x1d33wxb",
386
+ kGVxlE: "x19efjv6",
387
+ $$css: true
388
+ },
389
+ elevatedToggleSelected: {
390
+ kWkggS: "x7b25lv x1jzqe4",
391
+ $$css: true
392
+ },
393
+ filled: {
394
+ kWkggS: "x7b25lv",
395
+ kGVxlE: "x1gnnqk1",
396
+ $$css: true
397
+ },
398
+ filledToggle: {
399
+ kWkggS: "x1qdfkg1",
400
+ $$css: true
401
+ },
402
+ filledToggleSelected: {
403
+ kWkggS: "x7b25lv x1jzqe4",
404
+ $$css: true
405
+ },
406
+ outlined: {
407
+ kWkggS: "x123fei2",
408
+ $$css: true
409
+ },
410
+ outlinedToggleSelected: {
411
+ kWkggS: "x167cdfs x1jzqe4",
412
+ $$css: true
413
+ },
414
+ text: {
415
+ kWkggS: "x1dvjsmr",
416
+ $$css: true
417
+ },
418
+ tonal: {
419
+ kWkggS: "xzpauq9",
420
+ kGVxlE: "x1gnnqk1",
421
+ $$css: true
422
+ },
423
+ tonalToggleSelected: {
424
+ kWkggS: "x12o6fnv x1jzqe4",
425
+ $$css: true
426
+ }
427
+ };
190
428
  const disabledStyles = {
191
429
  elevated: styles.elevatedDisabled,
192
430
  filled: styles.filledDisabled,
@@ -194,129 +432,144 @@ const disabledStyles = {
194
432
  text: styles.textDisabled,
195
433
  tonal: styles.tonalDisabled
196
434
  };
435
+ const toggleContainers = {
436
+ elevated: {
437
+ selected: "elevatedToggleSelected",
438
+ unselected: "elevated"
439
+ },
440
+ filled: {
441
+ selected: "filledToggleSelected",
442
+ unselected: "filledToggle"
443
+ },
444
+ outlined: {
445
+ selected: "outlinedToggleSelected",
446
+ unselected: "outlined"
447
+ },
448
+ tonal: {
449
+ selected: "tonalToggleSelected",
450
+ unselected: "tonal"
451
+ }
452
+ };
197
453
  /**
198
- * The design's button, at five emphasis levels and five control heights.
199
- * Given `href` it is a link with the same appearance. Every `aria-*` prop is
200
- * forwarded to the element; React Aria alone would keep only the labelling
201
- * ones.
454
+ * The design's button, at five emphasis levels and five control heights,
455
+ * round or square. Given `href` it is a link with the same appearance. Every
456
+ * `aria-*` prop is forwarded to the element; React Aria alone would keep only
457
+ * the labelling ones.
458
+ *
459
+ * Given `isSelected`, `defaultSelected` or `onChange` it is a toggle, which
460
+ * reports its state through `aria-pressed` and draws the page's second pair
461
+ * of colour roles for its variant. A toggle takes neither `href` nor the
462
+ * pending props, and a `text` button never toggles.
463
+ *
464
+ * ```tsx
465
+ * <Button defaultSelected variant="tonal">
466
+ * Label
467
+ * </Button>
468
+ * ```
202
469
  */
203
470
  function Button$1(t0) {
204
- const $ = c(26);
205
- const { children, disableRipple: t1, href, isDisabled: t2, isPending: t3, onClick, onContextMenu, onKeyDown, onKeyUp, onPointerCancel, onPointerDown, onPointerLeave, onPointerUp, pendingLabel: t4, ref, rel, render, size: t5, target, variant: t6, ...props$1 } = t0;
206
- const disableRipple = t1 === void 0 ? false : t1;
207
- const isDisabled = t2 === void 0 ? false : t2;
208
- const isPending = t3 === void 0 ? false : t3;
209
- const pendingLabel = t4 === void 0 ? "Loading" : t4;
210
- const size = t5 === void 0 ? "md" : t5;
211
- const variant = t6 === void 0 ? "filled" : t6;
212
- let t7;
213
- if ($[0] !== onClick || $[1] !== onContextMenu || $[2] !== onPointerCancel || $[3] !== onPointerDown || $[4] !== onPointerLeave || $[5] !== onPointerUp) {
214
- t7 = {
215
- onClick,
216
- onContextMenu,
217
- onPointerCancel,
218
- onPointerDown,
219
- onPointerLeave,
220
- onPointerUp
221
- };
222
- $[0] = onClick;
223
- $[1] = onContextMenu;
224
- $[2] = onPointerCancel;
225
- $[3] = onPointerDown;
226
- $[4] = onPointerLeave;
227
- $[5] = onPointerUp;
228
- $[6] = t7;
229
- } else t7 = $[6];
230
- const ripple = useRipple(!disableRipple && !isDisabled && !isPending, t7);
231
- let t8;
232
- if ($[7] !== size || $[8] !== variant) {
233
- t8 = (state) => props(styles.base, focus.ring, styles[variant], styles[size], variant === "outlined" && outlineWidths[size], state.isDisabled && styles.disabled, state.isDisabled && disabledStyles[variant]);
234
- $[7] = size;
235
- $[8] = variant;
236
- $[9] = t8;
237
- } else t8 = $[9];
238
- const styleProps = mergeStatefulStyles(t8, props$1);
239
- const element = {
240
- aria: ariaAttributesOf(props$1),
241
- onKeyDown,
242
- onKeyUp
243
- };
244
- let t9;
245
- if ($[10] !== ref) {
246
- t9 = refCallback(ref);
247
- $[10] = ref;
248
- $[11] = t9;
249
- } else t9 = $[11];
250
- const forwarded = t9;
251
- if (href !== void 0) return /* @__PURE__ */ jsxs(Link, {
252
- href,
253
- isDisabled,
254
- ref: forwarded,
255
- rel,
256
- render: linkRenderer(element),
257
- target,
258
- ...ripple.handlers,
259
- ...props$1,
260
- ...styleProps,
261
- children: [children, ripple.surface]
262
- });
263
- const T0 = Button;
264
- const t10 = buttonRenderer(element, render);
265
- const t11 = ripple.handlers;
266
- let t12;
267
- if ($[12] !== children || $[13] !== pendingLabel || $[14] !== ripple) {
268
- t12 = buttonContent(children, pendingLabel, ripple);
269
- $[12] = children;
270
- $[13] = pendingLabel;
271
- $[14] = ripple;
272
- $[15] = t12;
273
- } else t12 = $[15];
274
- let t13;
275
- if ($[16] !== T0 || $[17] !== forwarded || $[18] !== isDisabled || $[19] !== isPending || $[20] !== props$1 || $[21] !== ripple.handlers || $[22] !== styleProps || $[23] !== t10 || $[24] !== t12) {
276
- t13 = /* @__PURE__ */ jsx(T0, {
277
- isDisabled,
278
- isPending,
279
- ref: forwarded,
280
- render: t10,
281
- ...t11,
471
+ const $ = c(33);
472
+ const { children, defaultSelected, href, icon, isPending, isSelected, onChange, pendingLabel, rel, shape: t1, size: ownSize, target, variant: t2, ...props$1 } = t0;
473
+ const shape = t1 === void 0 ? "round" : t1;
474
+ const variant = t2 === void 0 ? "filled" : t2;
475
+ const group = useContext(ButtonGroupItemContext);
476
+ const size = ownSize ?? group?.size ?? "md";
477
+ const inSelectingGroup = useContext(ToggleGroupStateContext) !== null;
478
+ const press = groupPressHandlers(group, props$1.onPressStart, props$1.onPressEnd);
479
+ let t3;
480
+ if ($[0] !== children || $[1] !== icon || $[2] !== size) {
481
+ t3 = icon === void 0 ? children : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
482
+ ...props(styles.icon, iconSizes[size]),
483
+ children: icon
484
+ }), children] });
485
+ $[0] = children;
486
+ $[1] = icon;
487
+ $[2] = size;
488
+ $[3] = t3;
489
+ } else t3 = $[3];
490
+ const content = t3;
491
+ if (inSelectingGroup || variant !== "text" && (defaultSelected !== void 0 || isSelected !== void 0 || onChange !== void 0)) {
492
+ let t4;
493
+ if ($[4] !== group || $[5] !== shape || $[6] !== size || $[7] !== variant) {
494
+ t4 = variant === "text" ? buttonClasses(shape, size, variant, group) : toggleClasses(shape, size, variant, group);
495
+ $[4] = group;
496
+ $[5] = shape;
497
+ $[6] = size;
498
+ $[7] = variant;
499
+ $[8] = t4;
500
+ } else t4 = $[8];
501
+ let t5;
502
+ if ($[9] !== content || $[10] !== defaultSelected || $[11] !== isPending || $[12] !== isSelected || $[13] !== onChange || $[14] !== press || $[15] !== props$1 || $[16] !== t4) {
503
+ t5 = /* @__PURE__ */ jsx(ToggleButtonBase, {
504
+ ...props$1,
505
+ ...press,
506
+ classes: t4,
507
+ defaultSelected,
508
+ isPending,
509
+ isSelected,
510
+ onChange,
511
+ children: content
512
+ });
513
+ $[9] = content;
514
+ $[10] = defaultSelected;
515
+ $[11] = isPending;
516
+ $[12] = isSelected;
517
+ $[13] = onChange;
518
+ $[14] = press;
519
+ $[15] = props$1;
520
+ $[16] = t4;
521
+ $[17] = t5;
522
+ } else t5 = $[17];
523
+ return t5;
524
+ }
525
+ let t4;
526
+ if ($[18] !== group || $[19] !== shape || $[20] !== size || $[21] !== variant) {
527
+ t4 = buttonClasses(shape, size, variant, group);
528
+ $[18] = group;
529
+ $[19] = shape;
530
+ $[20] = size;
531
+ $[21] = variant;
532
+ $[22] = t4;
533
+ } else t4 = $[22];
534
+ let t5;
535
+ if ($[23] !== content || $[24] !== href || $[25] !== isPending || $[26] !== pendingLabel || $[27] !== press || $[28] !== props$1 || $[29] !== rel || $[30] !== t4 || $[31] !== target) {
536
+ t5 = /* @__PURE__ */ jsx(ButtonBase, {
282
537
  ...props$1,
283
- ...styleProps,
284
- children: t12
538
+ ...press,
539
+ classes: t4,
540
+ href,
541
+ isPending,
542
+ pendingLabel,
543
+ rel,
544
+ target,
545
+ children: content
285
546
  });
286
- $[16] = T0;
287
- $[17] = forwarded;
288
- $[18] = isDisabled;
289
- $[19] = isPending;
290
- $[20] = props$1;
291
- $[21] = ripple.handlers;
292
- $[22] = styleProps;
293
- $[23] = t10;
294
- $[24] = t12;
295
- $[25] = t13;
296
- } else t13 = $[25];
297
- return t13;
547
+ $[23] = content;
548
+ $[24] = href;
549
+ $[25] = isPending;
550
+ $[26] = pendingLabel;
551
+ $[27] = press;
552
+ $[28] = props$1;
553
+ $[29] = rel;
554
+ $[30] = t4;
555
+ $[31] = target;
556
+ $[32] = t5;
557
+ } else t5 = $[32];
558
+ return t5;
559
+ }
560
+ function buttonClasses(shape, size, variant, group) {
561
+ return (state) => props(styles.base, focus.ring, styles[variant], styles[size], shape === "square" && squareShapes[size], variant === "outlined" && outlineWidths[size], state.isHovered && hovered[variant], state.isFocusVisible && focused[variant], state.isPressed && pressed[variant], state.isPressed && pressedShapes[size], groupStyles(group, size, state), state.isDisabled && styles.disabled, state.isDisabled && disabledStyles[variant]);
298
562
  }
299
- function buttonContent(children, pendingLabel, ripple) {
300
- return (state) => /* @__PURE__ */ jsxs(Fragment, { children: [
301
- /* @__PURE__ */ jsx("span", {
302
- ...{
303
- 0: { className: "xjp7ctv" },
304
- 1: { className: "xjp7ctv xlshs6z" }
305
- }[!!state.isPending << 0],
306
- children
307
- }),
308
- state.isPending ? /* @__PURE__ */ jsx("span", {
309
- className: "x6s0dn4 x78zum5 x10a8y8t xl56j7k x10l6tqk",
310
- children: /* @__PURE__ */ jsx(ProgressIndicator, {
311
- "aria-label": pendingLabel,
312
- isIndeterminate: true,
313
- size: "1em",
314
- tone: "inherit",
315
- variant: "circular"
316
- })
317
- }) : null,
318
- ripple.surface
319
- ] });
563
+ function groupStyles(group, size, state) {
564
+ if (group === null) return null;
565
+ return [group.styles?.(state), group.shift !== 0 && shifted.padding(`calc(${PADDINGS[size]} + ${group.shift / 2}px)`)];
566
+ }
567
+ function toggleClasses(shape, size, variant, group) {
568
+ return (state) => {
569
+ const isSelected = state.isSelected === true;
570
+ const container = toggleContainers[variant][isSelected ? "selected" : "unselected"];
571
+ return props(styles.base, focus.ring, styles[variant], styles[container], styles[size], shape === "square" && squareShapes[size], isSelected && (shape === "square" ? styles.round : squareShapes[size]), variant === "outlined" && outlineWidths[size], state.isHovered && hovered[variant], state.isHovered && hovered[container], state.isFocusVisible && focused[variant], state.isFocusVisible && focused[container], state.isPressed && pressed[variant], state.isPressed && pressed[container], state.isPressed && pressedShapes[size], groupStyles(group, size, state), state.isDisabled && styles.disabled, state.isDisabled && disabledStyles[variant]);
572
+ };
320
573
  }
321
574
  //#endregion
322
575
  export { Button$1 as default };