@crisp-ui-kit/crisp 0.57.0 → 0.57.2

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 (293) hide show
  1. package/dist/accentpicker.css +5 -0
  2. package/dist/accentpicker.d.ts +7 -0
  3. package/dist/accentpicker.layered.css +7 -0
  4. package/dist/authshell.css +9 -4
  5. package/dist/authshell.layered.css +9 -4
  6. package/dist/avatar.css +1 -1
  7. package/dist/avatar.layered.css +1 -1
  8. package/dist/badge.css +5 -5
  9. package/dist/badge.layered.css +5 -5
  10. package/dist/board.css +28 -8
  11. package/dist/board.layered.css +28 -8
  12. package/dist/bottomsheet.css +26 -0
  13. package/dist/bottomsheet.d.ts +7 -0
  14. package/dist/bottomsheet.layered.css +28 -0
  15. package/dist/button.css +9 -8
  16. package/dist/button.layered.css +9 -8
  17. package/dist/checkbox.css +7 -3
  18. package/dist/checkbox.layered.css +7 -3
  19. package/dist/chip.css +15 -0
  20. package/dist/chip.d.ts +3 -1
  21. package/dist/chip.layered.css +15 -0
  22. package/dist/chipgroup.css +5 -0
  23. package/dist/chipgroup.d.ts +7 -0
  24. package/dist/chipgroup.layered.css +7 -0
  25. package/dist/cjs/components/accentpicker/accentpicker.js +66 -0
  26. package/dist/cjs/components/accentpicker/accentpicker.recipe.js +25 -0
  27. package/dist/cjs/components/accentpicker/index.js +7 -0
  28. package/dist/cjs/components/avatar/avatar.recipe.js +4 -1
  29. package/dist/cjs/components/badge/badge.recipe.js +38 -10
  30. package/dist/cjs/components/bottomsheet/bottomsheet.js +90 -0
  31. package/dist/cjs/components/bottomsheet/bottomsheet.recipe.js +77 -0
  32. package/dist/cjs/components/bottomsheet/index.js +9 -0
  33. package/dist/cjs/components/button/button.recipe.js +55 -21
  34. package/dist/cjs/components/checkbox/checkbox.recipe.js +61 -9
  35. package/dist/cjs/components/chip/chip.js +14 -2
  36. package/dist/cjs/components/chip/chip.recipe.js +69 -1
  37. package/dist/cjs/components/chipgroup/chipgroup.js +51 -0
  38. package/dist/cjs/components/chipgroup/chipgroup.recipe.js +36 -0
  39. package/dist/cjs/components/chipgroup/index.js +7 -0
  40. package/dist/cjs/components/datatable/datatable.js +5 -1
  41. package/dist/cjs/components/datatable/datatable.recipe.js +11 -2
  42. package/dist/cjs/components/dialog/dialog.recipe.js +21 -10
  43. package/dist/cjs/components/emptystate/emptystate.recipe.js +7 -2
  44. package/dist/cjs/components/fileupload/fileupload.js +21 -4
  45. package/dist/cjs/components/input/index.js +2 -1
  46. package/dist/cjs/components/input/input.js +33 -3
  47. package/dist/cjs/components/input/input.recipe.js +22 -7
  48. package/dist/cjs/components/menu/menu.recipe.js +21 -7
  49. package/dist/cjs/components/menusheet/index.js +9 -0
  50. package/dist/cjs/components/menusheet/menusheet.js +133 -0
  51. package/dist/cjs/components/menusheet/menusheet.recipe.js +103 -0
  52. package/dist/cjs/components/multiselect/multiselect.js +2 -2
  53. package/dist/cjs/components/multiselect/multiselect.recipe.js +45 -12
  54. package/dist/cjs/components/progress/progress.js +21 -4
  55. package/dist/cjs/components/progress/progress.recipe.js +30 -0
  56. package/dist/cjs/components/select/select.js +3 -3
  57. package/dist/cjs/components/select/select.recipe.js +63 -10
  58. package/dist/cjs/components/snackbar/index.js +8 -0
  59. package/dist/cjs/components/snackbar/snackbar.js +121 -0
  60. package/dist/cjs/components/snackbar/snackbar.recipe.js +71 -0
  61. package/dist/cjs/components/tabletoolbar/tabletoolbar.chrome.js +7 -2
  62. package/dist/cjs/components/tabletoolbar/tabletoolbar.js +37 -12
  63. package/dist/cjs/components/tabs/tabs.js +10 -4
  64. package/dist/cjs/components/tabs/tabs.recipe.js +23 -6
  65. package/dist/cjs/components/text/text.recipe.js +8 -7
  66. package/dist/cjs/components/textarea/textarea.js +3 -2
  67. package/dist/cjs/components/textarea/textarea.recipe.js +13 -9
  68. package/dist/cjs/components/textlink/textlink.recipe.js +6 -3
  69. package/dist/cjs/index.js +8 -0
  70. package/dist/cjs/product/authshell/authshell.recipe.js +5 -1
  71. package/dist/cjs/product/command/command.recipe.js +4 -1
  72. package/dist/cjs/product/comments/comments.js +7 -2
  73. package/dist/cjs/product/comments/comments.recipe.js +25 -7
  74. package/dist/cjs/product/memberssettings/index.js +6 -0
  75. package/dist/cjs/product/memberssettings/memberssettings.js +99 -0
  76. package/dist/cjs/product/memberssettings/memberssettings.recipe.js +83 -0
  77. package/dist/cjs/product/notificationssettings/index.js +5 -0
  78. package/dist/cjs/product/notificationssettings/notificationssettings.js +19 -0
  79. package/dist/cjs/product/notificationssettings/notificationssettings.recipe.js +44 -0
  80. package/dist/cjs/product/recordpage/recordpage.js +101 -9
  81. package/dist/cjs/product/recordpage/recordpage.recipe.js +43 -6
  82. package/dist/cjs/product/workspacegeneralsettings/index.js +5 -0
  83. package/dist/cjs/product/workspacegeneralsettings/workspacegeneralsettings.js +21 -0
  84. package/dist/cjs/product/workspacegeneralsettings/workspacegeneralsettings.recipe.js +51 -0
  85. package/dist/cjs/tokens/contract.js +1 -0
  86. package/dist/cjs/tokens/elevation.js +8 -5
  87. package/dist/cjs/tokens/palette.js +107 -33
  88. package/dist/cjs/tokens/scale.js +45 -2
  89. package/dist/cjs/tokens/semantic.js +26 -0
  90. package/dist/columncalc.css +15 -7
  91. package/dist/columncalc.layered.css +15 -7
  92. package/dist/command.css +23 -19
  93. package/dist/command.layered.css +23 -19
  94. package/dist/comments.css +28 -19
  95. package/dist/comments.d.ts +2 -2
  96. package/dist/comments.layered.css +28 -19
  97. package/dist/datatable.css +161 -67
  98. package/dist/datatable.layered.css +161 -67
  99. package/dist/datepicker.css +13 -41
  100. package/dist/datepicker.layered.css +13 -41
  101. package/dist/datepickerfield.css +4 -1
  102. package/dist/datepickerfield.layered.css +4 -1
  103. package/dist/dialog.css +12 -7
  104. package/dist/dialog.layered.css +12 -7
  105. package/dist/emptystate.css +5 -3
  106. package/dist/emptystate.layered.css +5 -3
  107. package/dist/esm/components/accentpicker/accentpicker.js +30 -0
  108. package/dist/esm/components/accentpicker/accentpicker.recipe.js +22 -0
  109. package/dist/esm/components/accentpicker/index.js +2 -0
  110. package/dist/esm/components/avatar/avatar.recipe.js +4 -1
  111. package/dist/esm/components/badge/badge.recipe.js +38 -10
  112. package/dist/esm/components/bottomsheet/bottomsheet.js +52 -0
  113. package/dist/esm/components/bottomsheet/bottomsheet.recipe.js +74 -0
  114. package/dist/esm/components/bottomsheet/index.js +2 -0
  115. package/dist/esm/components/button/button.recipe.js +56 -22
  116. package/dist/esm/components/checkbox/checkbox.recipe.js +61 -9
  117. package/dist/esm/components/chip/chip.js +14 -2
  118. package/dist/esm/components/chip/chip.recipe.js +69 -1
  119. package/dist/esm/components/chipgroup/chipgroup.js +15 -0
  120. package/dist/esm/components/chipgroup/chipgroup.recipe.js +33 -0
  121. package/dist/esm/components/chipgroup/index.js +2 -0
  122. package/dist/esm/components/datatable/datatable.js +5 -1
  123. package/dist/esm/components/datatable/datatable.recipe.js +11 -2
  124. package/dist/esm/components/dialog/dialog.recipe.js +22 -11
  125. package/dist/esm/components/emptystate/emptystate.recipe.js +7 -2
  126. package/dist/esm/components/fileupload/fileupload.js +20 -5
  127. package/dist/esm/components/input/index.js +1 -1
  128. package/dist/esm/components/input/input.js +33 -3
  129. package/dist/esm/components/input/input.recipe.js +23 -8
  130. package/dist/esm/components/menu/menu.recipe.js +21 -7
  131. package/dist/esm/components/menusheet/index.js +2 -0
  132. package/dist/esm/components/menusheet/menusheet.js +95 -0
  133. package/dist/esm/components/menusheet/menusheet.recipe.js +100 -0
  134. package/dist/esm/components/multiselect/multiselect.js +2 -2
  135. package/dist/esm/components/multiselect/multiselect.recipe.js +45 -12
  136. package/dist/esm/components/progress/progress.js +22 -5
  137. package/dist/esm/components/progress/progress.recipe.js +30 -0
  138. package/dist/esm/components/select/select.js +3 -3
  139. package/dist/esm/components/select/select.recipe.js +63 -10
  140. package/dist/esm/components/snackbar/index.js +2 -0
  141. package/dist/esm/components/snackbar/snackbar.js +84 -0
  142. package/dist/esm/components/snackbar/snackbar.recipe.js +68 -0
  143. package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +7 -2
  144. package/dist/esm/components/tabletoolbar/tabletoolbar.js +37 -12
  145. package/dist/esm/components/tabs/tabs.js +10 -4
  146. package/dist/esm/components/tabs/tabs.recipe.js +23 -6
  147. package/dist/esm/components/text/text.recipe.js +8 -7
  148. package/dist/esm/components/textarea/textarea.js +3 -2
  149. package/dist/esm/components/textarea/textarea.recipe.js +14 -10
  150. package/dist/esm/components/textlink/textlink.recipe.js +6 -3
  151. package/dist/esm/index.js +8 -0
  152. package/dist/esm/product/authshell/authshell.recipe.js +5 -1
  153. package/dist/esm/product/command/command.recipe.js +4 -1
  154. package/dist/esm/product/comments/comments.js +7 -2
  155. package/dist/esm/product/comments/comments.recipe.js +25 -7
  156. package/dist/esm/product/memberssettings/index.js +1 -0
  157. package/dist/esm/product/memberssettings/memberssettings.js +62 -0
  158. package/dist/esm/product/memberssettings/memberssettings.recipe.js +80 -0
  159. package/dist/esm/product/notificationssettings/index.js +1 -0
  160. package/dist/esm/product/notificationssettings/notificationssettings.js +16 -0
  161. package/dist/esm/product/notificationssettings/notificationssettings.recipe.js +41 -0
  162. package/dist/esm/product/recordpage/recordpage.js +102 -10
  163. package/dist/esm/product/recordpage/recordpage.recipe.js +43 -6
  164. package/dist/esm/product/workspacegeneralsettings/index.js +1 -0
  165. package/dist/esm/product/workspacegeneralsettings/workspacegeneralsettings.js +18 -0
  166. package/dist/esm/product/workspacegeneralsettings/workspacegeneralsettings.recipe.js +48 -0
  167. package/dist/esm/tokens/contract.js +2 -1
  168. package/dist/esm/tokens/elevation.js +8 -5
  169. package/dist/esm/tokens/palette.js +107 -33
  170. package/dist/esm/tokens/scale.js +44 -1
  171. package/dist/esm/tokens/semantic.js +26 -0
  172. package/dist/fileupload.css +3 -1
  173. package/dist/fileupload.layered.css +3 -1
  174. package/dist/input.css +11 -2
  175. package/dist/input.layered.css +11 -2
  176. package/dist/listpage.css +3 -1
  177. package/dist/listpage.layered.css +3 -1
  178. package/dist/memberssettings.css +67 -0
  179. package/dist/memberssettings.d.ts +7 -0
  180. package/dist/memberssettings.layered.css +69 -0
  181. package/dist/menu.css +2 -2
  182. package/dist/menu.layered.css +2 -2
  183. package/dist/menusheet.css +36 -0
  184. package/dist/menusheet.d.ts +7 -0
  185. package/dist/menusheet.layered.css +38 -0
  186. package/dist/multiselect.css +17 -6
  187. package/dist/multiselect.d.ts +2 -2
  188. package/dist/multiselect.layered.css +17 -6
  189. package/dist/native/tokens.d.ts +2 -1
  190. package/dist/native/tokens.js +53 -25
  191. package/dist/notificationssettings.css +22 -0
  192. package/dist/notificationssettings.d.ts +7 -0
  193. package/dist/notificationssettings.layered.css +24 -0
  194. package/dist/objectsettings.css +4 -4
  195. package/dist/objectsettings.layered.css +4 -4
  196. package/dist/progress.css +3 -0
  197. package/dist/progress.layered.css +3 -0
  198. package/dist/recordpage.css +67 -23
  199. package/dist/recordpage.layered.css +67 -23
  200. package/dist/recordpanel.css +35 -16
  201. package/dist/recordpanel.layered.css +35 -16
  202. package/dist/resizablepanel.css +8 -5
  203. package/dist/resizablepanel.layered.css +8 -5
  204. package/dist/richtext.css +24 -8
  205. package/dist/richtext.layered.css +24 -8
  206. package/dist/savedviews.css +9 -2
  207. package/dist/savedviews.layered.css +9 -2
  208. package/dist/select.css +47 -7
  209. package/dist/select.d.ts +2 -2
  210. package/dist/select.layered.css +47 -7
  211. package/dist/settingsshell.css +2 -3
  212. package/dist/settingsshell.layered.css +2 -3
  213. package/dist/slider.css +6 -27
  214. package/dist/slider.layered.css +6 -27
  215. package/dist/snackbar.css +24 -0
  216. package/dist/snackbar.d.ts +7 -0
  217. package/dist/snackbar.layered.css +26 -0
  218. package/dist/statcard.css +3 -1
  219. package/dist/statcard.layered.css +3 -1
  220. package/dist/styles.css +927 -365
  221. package/dist/styles.layered.css +927 -365
  222. package/dist/table.css +28 -10
  223. package/dist/table.layered.css +28 -10
  224. package/dist/tabletoolbar.css +35 -24
  225. package/dist/tabletoolbar.layered.css +35 -24
  226. package/dist/tabs.css +18 -4
  227. package/dist/tabs.layered.css +18 -4
  228. package/dist/text.css +1 -1
  229. package/dist/text.layered.css +1 -1
  230. package/dist/textarea.css +4 -7
  231. package/dist/textarea.layered.css +4 -7
  232. package/dist/textlink.css +2 -2
  233. package/dist/textlink.layered.css +2 -2
  234. package/dist/themepicker.css +2 -1
  235. package/dist/themepicker.layered.css +2 -1
  236. package/dist/tokens.css +31 -13
  237. package/dist/tokens.json +53 -25
  238. package/dist/types/components/accentpicker/accentpicker.d.ts +23 -0
  239. package/dist/types/components/accentpicker/accentpicker.recipe.d.ts +3 -0
  240. package/dist/types/components/accentpicker/index.d.ts +2 -0
  241. package/dist/types/components/bottomsheet/bottomsheet.d.ts +35 -0
  242. package/dist/types/components/bottomsheet/bottomsheet.recipe.d.ts +3 -0
  243. package/dist/types/components/bottomsheet/index.d.ts +2 -0
  244. package/dist/types/components/button/button.recipe.d.ts +13 -8
  245. package/dist/types/components/checkbox/checkbox.recipe.d.ts +28 -5
  246. package/dist/types/components/chip/chip.d.ts +22 -0
  247. package/dist/types/components/chip/chip.recipe.d.ts +48 -0
  248. package/dist/types/components/chipgroup/chipgroup.d.ts +14 -0
  249. package/dist/types/components/chipgroup/chipgroup.recipe.d.ts +5 -0
  250. package/dist/types/components/chipgroup/index.d.ts +2 -0
  251. package/dist/types/components/datatable/datatable.d.ts +19 -0
  252. package/dist/types/components/fileupload/fileupload.d.ts +26 -0
  253. package/dist/types/components/input/index.d.ts +1 -1
  254. package/dist/types/components/input/input.d.ts +84 -0
  255. package/dist/types/components/menusheet/index.d.ts +2 -0
  256. package/dist/types/components/menusheet/menusheet.d.ts +42 -0
  257. package/dist/types/components/menusheet/menusheet.recipe.d.ts +3 -0
  258. package/dist/types/components/multiselect/multiselect.d.ts +4 -3
  259. package/dist/types/components/multiselect/multiselect.recipe.d.ts +3 -0
  260. package/dist/types/components/progress/progress.d.ts +16 -4
  261. package/dist/types/components/progress/progress.recipe.d.ts +22 -0
  262. package/dist/types/components/select/select.d.ts +6 -5
  263. package/dist/types/components/select/select.recipe.d.ts +3 -0
  264. package/dist/types/components/snackbar/index.d.ts +2 -0
  265. package/dist/types/components/snackbar/snackbar.d.ts +36 -0
  266. package/dist/types/components/snackbar/snackbar.recipe.d.ts +5 -0
  267. package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +28 -1
  268. package/dist/types/components/tabs/tabs.d.ts +11 -1
  269. package/dist/types/components/textarea/textarea.d.ts +16 -0
  270. package/dist/types/index.d.ts +8 -0
  271. package/dist/types/product/comments/comments.d.ts +9 -3
  272. package/dist/types/product/comments/comments.recipe.d.ts +12 -2
  273. package/dist/types/product/memberssettings/index.d.ts +1 -0
  274. package/dist/types/product/memberssettings/memberssettings.d.ts +85 -0
  275. package/dist/types/product/memberssettings/memberssettings.recipe.d.ts +3 -0
  276. package/dist/types/product/notificationssettings/index.d.ts +1 -0
  277. package/dist/types/product/notificationssettings/notificationssettings.d.ts +37 -0
  278. package/dist/types/product/notificationssettings/notificationssettings.recipe.d.ts +3 -0
  279. package/dist/types/product/recordpage/recordpage.d.ts +89 -2
  280. package/dist/types/product/workspacegeneralsettings/index.d.ts +1 -0
  281. package/dist/types/product/workspacegeneralsettings/workspacegeneralsettings.d.ts +48 -0
  282. package/dist/types/product/workspacegeneralsettings/workspacegeneralsettings.recipe.d.ts +3 -0
  283. package/dist/types/tokens/contract.d.ts +7 -1
  284. package/dist/types/tokens/elevation.d.ts +8 -5
  285. package/dist/types/tokens/palette.d.ts +28 -12
  286. package/dist/types/tokens/scale.d.ts +12 -1
  287. package/dist/types/tokens/semantic.d.ts +17 -0
  288. package/dist/wheelpicker.css +4 -2
  289. package/dist/wheelpicker.layered.css +4 -2
  290. package/dist/workspacegeneralsettings.css +30 -0
  291. package/dist/workspacegeneralsettings.d.ts +7 -0
  292. package/dist/workspacegeneralsettings.layered.css +32 -0
  293. package/package.json +41 -1
package/dist/tokens.css CHANGED
@@ -27,14 +27,16 @@
27
27
  font-display: swap;
28
28
  }
29
29
  :root {
30
- --crisp-bg-brand-solid: #266df0;
31
- --crisp-bg-brand-solid-pressed: #1f5fd6;
30
+ --crisp-bg-brand-solid: #0298d9;
31
+ --crisp-bg-brand-solid-pressed: #0283bb;
32
+ --crisp-bg-brand-contrast: #0278ac;
33
+ --crisp-fg-brand-contrast: #0278ac;
32
34
  --crisp-fg-on-brand: #ffffff;
33
35
  --crisp-fg-on-tone: #101112;
34
36
  --crisp-bg-surface: #ffffff;
35
- --crisp-bg-raised: #f4f4f5;
37
+ --crisp-bg-raised: #f7f8f9;
36
38
  --crisp-bg-surface-muted: #f6f7f7;
37
- --crisp-border-default: #e4e4e7;
39
+ --crisp-border-default: #dcdee3;
38
40
  --crisp-border-subtle: #eeeff1;
39
41
  --crisp-border-dropzone: #e6e7ea;
40
42
  --crisp-border-divider: #e6e7ea;
@@ -43,7 +45,9 @@
43
45
  --crisp-ring-switch: #d9dade;
44
46
  --crisp-bg-tile-active: #ffffff;
45
47
  --crisp-shadow-tile-active: rgba(0,0,0,0.04);
46
- --crisp-bg-scrim: rgba(0,0,0,0.25);
48
+ --crisp-bg-scrim: rgba(0,0,0,0.45);
49
+ --crisp-bg-overlay-strong: #00000074;
50
+ --crisp-stroke-group-divider: #00000010;
47
51
  --crisp-fg-alert-description: rgba(0,0,0,0.63);
48
52
  --crisp-bg-overlay-frost: #ffffff;
49
53
  --crisp-shadow-overlay1: rgba(28,40,64,0.12);
@@ -56,9 +60,9 @@
56
60
  --crisp-shadow-popover3: rgba(24,41,75,0.16);
57
61
  --crisp-fg-primary: #101112;
58
62
  --crisp-fg-muted: #71717a;
59
- --crisp-bg-danger: #e5484d;
60
- --crisp-bg-danger-solid: #ba2525;
61
- --crisp-fg-danger: #eb3b3b;
63
+ --crisp-bg-danger: #fa342c;
64
+ --crisp-bg-danger-solid: #ca1d13;
65
+ --crisp-fg-danger: #fa342c;
62
66
  --crisp-stroke-field-focus: #1a1c20;
63
67
  --crisp-fg-disabled: #d1d3d8;
64
68
  --crisp-bg-neutral-weak: #f3f4f5;
@@ -67,8 +71,9 @@
67
71
  --crisp-fg-neutral-subtle: #868b94;
68
72
  --crisp-fg-neutral-muted: #555d6d;
69
73
  --crisp-stroke-focus-ring: #1e82eb;
70
- --crisp-bg-success: #1f9d57;
71
- --crisp-bg-warning: #b5730f;
74
+ --crisp-bg-success: #079171;
75
+ --crisp-bg-warning: #9b7821;
76
+ --crisp-bg-warning-solid: #fbdc65;
72
77
  --crisp-bg-orange: #f97514;
73
78
  --crisp-bg-cyan: #00b9eb;
74
79
  --crisp-bg-purple: #9b69ff;
@@ -95,8 +100,10 @@
95
100
  }
96
101
 
97
102
  [data-theme="dark"] {
98
- --crisp-bg-brand-solid: #266df0;
99
- --crisp-bg-brand-solid-pressed: #1f5fd6;
103
+ --crisp-bg-brand-solid: #0298d9;
104
+ --crisp-bg-brand-solid-pressed: #0283bb;
105
+ --crisp-bg-brand-contrast: #0278ac;
106
+ --crisp-fg-brand-contrast: #0278ac;
100
107
  --crisp-fg-on-brand: #ffffff;
101
108
  --crisp-fg-on-tone: #101112;
102
109
  --crisp-bg-surface: #0a0a0a;
@@ -112,6 +119,8 @@
112
119
  --crisp-bg-tile-active: #101112;
113
120
  --crisp-shadow-tile-active: rgba(0,0,0,0);
114
121
  --crisp-bg-scrim: rgba(0,0,0,0.55);
122
+ --crisp-bg-overlay-strong: #00000074;
123
+ --crisp-stroke-group-divider: #ffffff17;
115
124
  --crisp-fg-alert-description: rgba(255,255,255,0.6);
116
125
  --crisp-bg-overlay-frost: #1c1d1f;
117
126
  --crisp-shadow-overlay1: rgba(0,0,0,0.48);
@@ -137,6 +146,7 @@
137
146
  --crisp-stroke-focus-ring: #5e98fe;
138
147
  --crisp-bg-success: #2ea968;
139
148
  --crisp-bg-warning: #e0982a;
149
+ --crisp-bg-warning-solid: #e0982a;
140
150
  --crisp-bg-orange: #f97514;
141
151
  --crisp-bg-cyan: #00b9eb;
142
152
  --crisp-bg-purple: #9b69ff;
@@ -175,13 +185,15 @@
175
185
  --crisp-space-1-5: 6px;
176
186
  --crisp-space-2-5: 10px;
177
187
  --crisp-space-3-5: 14px;
178
- --crisp-radius-chip: 7px;
188
+ --crisp-radius-xs: 4px;
189
+ --crisp-radius-chip: 999px;
179
190
  --crisp-radius-sm: 6px;
180
191
  --crisp-radius-md: 8px;
181
192
  --crisp-radius-lg: 9px;
182
193
  --crisp-radius-xl: 12px;
183
194
  --crisp-radius-2xl: 16px;
184
195
  --crisp-radius-3xl: 20px;
196
+ --crisp-radius-4xl: 24px;
185
197
  --crisp-radius-full: 999px;
186
198
  --crisp-size-icon: 16px;
187
199
  --crisp-size-chip: 22px;
@@ -205,4 +217,10 @@
205
217
  --crisp-weight-semibold: 600;
206
218
  --crisp-weight-bold: 700;
207
219
  --crisp-font-sans: "VK Sans Display", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
220
+ --crisp-tracking-18: -0.36px;
221
+ --crisp-tracking-20: -0.4px;
222
+ --crisp-tracking-24: -0.48px;
223
+ --crisp-tracking-26: -0.52px;
224
+ --crisp-tracking-28: -0.56px;
225
+ --crisp-tracking-32: -0.64px;
208
226
  }
package/dist/tokens.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "color": {
3
3
  "light": {
4
- "bgBrandSolid": "#266df0",
5
- "bgBrandSolidPressed": "#1f5fd6",
4
+ "bgBrandSolid": "#0298d9",
5
+ "bgBrandSolidPressed": "#0283bb",
6
+ "bgBrandContrast": "#0278ac",
7
+ "fgBrandContrast": "#0278ac",
6
8
  "fgOnBrand": "#ffffff",
7
9
  "fgOnTone": "#101112",
8
10
  "bgSurface": "#ffffff",
9
- "bgRaised": "#f4f4f5",
11
+ "bgRaised": "#f7f8f9",
10
12
  "bgSurfaceMuted": "#f6f7f7",
11
- "borderDefault": "#e4e4e7",
13
+ "borderDefault": "#dcdee3",
12
14
  "borderSubtle": "#eeeff1",
13
15
  "borderDropzone": "#e6e7ea",
14
16
  "borderDivider": "#e6e7ea",
@@ -17,7 +19,9 @@
17
19
  "ringSwitch": "#d9dade",
18
20
  "bgTileActive": "#ffffff",
19
21
  "shadowTileActive": "rgba(0,0,0,0.04)",
20
- "bgScrim": "rgba(0,0,0,0.25)",
22
+ "bgScrim": "rgba(0,0,0,0.45)",
23
+ "bgOverlayStrong": "#00000074",
24
+ "strokeGroupDivider": "#00000010",
21
25
  "fgAlertDescription": "rgba(0,0,0,0.63)",
22
26
  "bgOverlayFrost": "#ffffff",
23
27
  "shadowOverlay1": "rgba(28,40,64,0.12)",
@@ -30,9 +34,9 @@
30
34
  "shadowPopover3": "rgba(24,41,75,0.16)",
31
35
  "fgPrimary": "#101112",
32
36
  "fgMuted": "#71717a",
33
- "bgDanger": "#e5484d",
34
- "bgDangerSolid": "#ba2525",
35
- "fgDanger": "#eb3b3b",
37
+ "bgDanger": "#fa342c",
38
+ "bgDangerSolid": "#ca1d13",
39
+ "fgDanger": "#fa342c",
36
40
  "strokeFieldFocus": "#1a1c20",
37
41
  "fgDisabled": "#d1d3d8",
38
42
  "bgNeutralWeak": "#f3f4f5",
@@ -41,8 +45,9 @@
41
45
  "fgNeutralSubtle": "#868b94",
42
46
  "fgNeutralMuted": "#555d6d",
43
47
  "strokeFocusRing": "#1e82eb",
44
- "bgSuccess": "#1f9d57",
45
- "bgWarning": "#b5730f",
48
+ "bgSuccess": "#079171",
49
+ "bgWarning": "#9b7821",
50
+ "bgWarningSolid": "#fbdc65",
46
51
  "bgOrange": "#f97514",
47
52
  "bgCyan": "#00b9eb",
48
53
  "bgPurple": "#9b69ff",
@@ -68,8 +73,10 @@
68
73
  "shadowSelect": "#0000001f"
69
74
  },
70
75
  "dark": {
71
- "bgBrandSolid": "#266df0",
72
- "bgBrandSolidPressed": "#1f5fd6",
76
+ "bgBrandSolid": "#0298d9",
77
+ "bgBrandSolidPressed": "#0283bb",
78
+ "bgBrandContrast": "#0278ac",
79
+ "fgBrandContrast": "#0278ac",
73
80
  "fgOnBrand": "#ffffff",
74
81
  "fgOnTone": "#101112",
75
82
  "bgSurface": "#0a0a0a",
@@ -85,6 +92,8 @@
85
92
  "bgTileActive": "#101112",
86
93
  "shadowTileActive": "rgba(0,0,0,0)",
87
94
  "bgScrim": "rgba(0,0,0,0.55)",
95
+ "bgOverlayStrong": "#00000074",
96
+ "strokeGroupDivider": "#ffffff17",
88
97
  "fgAlertDescription": "rgba(255,255,255,0.6)",
89
98
  "bgOverlayFrost": "#1c1d1f",
90
99
  "shadowOverlay1": "rgba(0,0,0,0.48)",
@@ -110,6 +119,7 @@
110
119
  "strokeFocusRing": "#5e98fe",
111
120
  "bgSuccess": "#2ea968",
112
121
  "bgWarning": "#e0982a",
122
+ "bgWarningSolid": "#e0982a",
113
123
  "bgOrange": "#f97514",
114
124
  "bgCyan": "#00b9eb",
115
125
  "bgPurple": "#9b69ff",
@@ -140,9 +150,9 @@
140
150
  "gray00": "#ffffff",
141
151
  "white": "#ffffff",
142
152
  "ink": "#101112",
143
- "gray50": "#f4f4f5",
153
+ "gray50": "#f7f8f9",
144
154
  "gray900": "#101112",
145
- "line200": "#e4e4e7",
155
+ "line200": "#dcdee3",
146
156
  "line100": "#eeeff1",
147
157
  "line150": "#e6e7ea",
148
158
  "gray25": "#f6f7f7",
@@ -152,7 +162,9 @@
152
162
  "ringBrandSoft": "#d6e5ff",
153
163
  "tileActive": "#ffffff",
154
164
  "tileActiveShadow": "rgba(0,0,0,0.04)",
155
- "bgScrim": "rgba(0,0,0,0.25)",
165
+ "bgScrim": "rgba(0,0,0,0.45)",
166
+ "bgOverlayStrong": "#00000074",
167
+ "strokeGroupDivider": "#00000010",
156
168
  "fgAlertDescription": "rgba(0,0,0,0.63)",
157
169
  "overlayFrost": "#ffffff",
158
170
  "shadowOverlay1": "rgba(28,40,64,0.12)",
@@ -164,11 +176,12 @@
164
176
  "shadowPopover2": "rgba(28,40,64,0.12)",
165
177
  "shadowPopover3": "rgba(24,41,75,0.16)",
166
178
  "gray400": "#71717a",
167
- "brand600": "#266df0",
168
- "brand700": "#1f5fd6",
169
- "red600": "#e5484d",
170
- "red700": "#ba2525",
171
- "red500": "#eb3b3b",
179
+ "brand600": "#0298d9",
180
+ "brand700": "#0283bb",
181
+ "brandContrast": "#0278ac",
182
+ "red600": "#fa342c",
183
+ "red700": "#ca1d13",
184
+ "red500": "#fa342c",
172
185
  "fieldFocus": "#1a1c20",
173
186
  "disabledFg": "#d1d3d8",
174
187
  "neutralWeak": "#f3f4f5",
@@ -177,8 +190,9 @@
177
190
  "neutralSubtle": "#868b94",
178
191
  "neutralMuted": "#555d6d",
179
192
  "focusRing": "#1e82eb",
180
- "green600": "#1f9d57",
181
- "amber600": "#b5730f",
193
+ "green600": "#079171",
194
+ "amber600": "#9b7821",
195
+ "amberSolid": "#fbdc65",
182
196
  "orange600": "#f97514",
183
197
  "cyan600": "#00b9eb",
184
198
  "purple600": "#9b69ff",
@@ -217,6 +231,8 @@
217
231
  "tileActive": "#101112",
218
232
  "tileActiveShadow": "rgba(0,0,0,0)",
219
233
  "bgScrim": "rgba(0,0,0,0.55)",
234
+ "bgOverlayStrong": "#00000074",
235
+ "strokeGroupDivider": "#ffffff17",
220
236
  "fgAlertDescription": "rgba(255,255,255,0.6)",
221
237
  "overlayFrost": "#1c1d1f",
222
238
  "shadowOverlay1": "rgba(0,0,0,0.48)",
@@ -228,8 +244,9 @@
228
244
  "shadowPopover2": "rgba(0,0,0,0.24)",
229
245
  "shadowPopover3": "rgba(0,0,0,0.32)",
230
246
  "gray400": "#9a9aa2",
231
- "brand600": "#266df0",
232
- "brand700": "#1f5fd6",
247
+ "brand600": "#0298d9",
248
+ "brand700": "#0283bb",
249
+ "brandContrast": "#0278ac",
233
250
  "red600": "#ff5a5f",
234
251
  "red700": "#ba2525",
235
252
  "red500": "#ff5a5f",
@@ -243,6 +260,7 @@
243
260
  "focusRing": "#5e98fe",
244
261
  "green600": "#2ea968",
245
262
  "amber600": "#e0982a",
263
+ "amberSolid": "#e0982a",
246
264
  "orange600": "#f97514",
247
265
  "cyan600": "#00b9eb",
248
266
  "purple600": "#9b69ff",
@@ -280,13 +298,15 @@
280
298
  "3.5": 14
281
299
  },
282
300
  "radius": {
283
- "chip": 7,
301
+ "xs": 4,
302
+ "chip": 999,
284
303
  "sm": 6,
285
304
  "md": 8,
286
305
  "lg": 9,
287
306
  "xl": 12,
288
307
  "2xl": 16,
289
308
  "3xl": 20,
309
+ "4xl": 24,
290
310
  "full": 999
291
311
  },
292
312
  "size": {
@@ -310,6 +330,14 @@
310
330
  "lg": 14,
311
331
  "xl": 16
312
332
  },
333
+ "tracking": {
334
+ "18": -0.36,
335
+ "20": -0.4,
336
+ "24": -0.48,
337
+ "26": -0.52,
338
+ "28": -0.56,
339
+ "32": -0.64
340
+ },
313
341
  "font": {
314
342
  "sans": "\"VK Sans Display\", \"Inter\", system-ui, -apple-system, \"Segoe UI\", sans-serif"
315
343
  },
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ export type AccentPickerProps = Omit<React.ComponentPropsWithoutRef<"div">, "value" | "className"> & {
3
+ /** Hex (or any CSS) colours, in display order. */
4
+ colors: string[];
5
+ /** Controlled selected colour. Omit to let the picker manage it (see `defaultValue`). */
6
+ value?: string;
7
+ /** Initially selected colour, when uncontrolled. */
8
+ defaultValue?: string;
9
+ onValueChange?: (color: string) => void;
10
+ className?: string;
11
+ };
12
+ /**
13
+ * A row of selectable colour swatches — Attio's own accent-colour picker
14
+ * (Settings > Appearance). Not a fixed palette: pass the colours (and the
15
+ * accent isn't crisp's concern to theme the app with — this only picks one).
16
+ * Same roving-focus/arrow-key model every other crisp radio-like control
17
+ * shares (`useRadioGroupKeyboard`, also used by `RadioGroup` and
18
+ * `Segmented`).
19
+ */
20
+ export declare function AccentPicker({ colors, value, defaultValue, onValueChange, className, onKeyDown: onKeyDownProp, ...rest }: AccentPickerProps): React.JSX.Element;
21
+ export declare namespace AccentPicker {
22
+ var displayName: string;
23
+ }
@@ -0,0 +1,3 @@
1
+ declare const config: import("../..").RecipeConfig<import("../..").RecipeVariantRecord>;
2
+ export declare const accentpickerRecipe: import("../..").RecipeFn<import("../..").RecipeVariantRecord>;
3
+ export default config;
@@ -0,0 +1,2 @@
1
+ export { AccentPicker, type AccentPickerProps } from "./accentpicker";
2
+ export { accentpickerRecipe } from "./accentpicker.recipe";
@@ -0,0 +1,35 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Root props land on the SHEET SURFACE — the element carrying `role="dialog"`
4
+ * — same reasoning as Dialog/Drawer (#223).
5
+ */
6
+ export type BottomSheetProps = Omit<React.ComponentPropsWithoutRef<"div">, "title" | "children"> & {
7
+ open: boolean;
8
+ onOpenChange: (open: boolean) => void;
9
+ title?: React.ReactNode;
10
+ description?: React.ReactNode;
11
+ /** Title alignment (default "left"). seed's own two header layouts. */
12
+ headerAlign?: "left" | "center";
13
+ /** Show the corner close button (default true when `title` is set). */
14
+ showCloseButton?: boolean;
15
+ "aria-label"?: string;
16
+ /** aria-label on the close button (default "Close"). */
17
+ closeLabel?: string;
18
+ children?: React.ReactNode;
19
+ };
20
+ /**
21
+ * A mobile bottom sheet — composes Zag's dialog machine (focus trap, scroll
22
+ * lock, Escape / outside-click dismissal) with a panel that slides up from
23
+ * the bottom edge. Compose the body with `BottomSheetBody` and actions with
24
+ * `BottomSheetFooter`.
25
+ */
26
+ export declare function BottomSheet({ open, onOpenChange, title, description, headerAlign, showCloseButton, "aria-label": ariaLabel, closeLabel: closeLabelProp, children, className, "aria-describedby": describedBy, ...rest }: BottomSheetProps): React.JSX.Element | null;
27
+ export declare namespace BottomSheet {
28
+ var displayName: string;
29
+ }
30
+ export declare function BottomSheetBody({ children }: {
31
+ children?: React.ReactNode;
32
+ }): React.JSX.Element;
33
+ export declare function BottomSheetFooter({ children, }: {
34
+ children?: React.ReactNode;
35
+ }): React.JSX.Element;
@@ -0,0 +1,3 @@
1
+ declare const config: import("../..").RecipeConfig<{}>;
2
+ export declare const bottomsheetRecipe: import("../..").RecipeFn<{}>;
3
+ export default config;
@@ -0,0 +1,2 @@
1
+ export { BottomSheet, BottomSheetBody, BottomSheetFooter, type BottomSheetProps, } from "./bottomsheet";
2
+ export { bottomsheetRecipe } from "./bottomsheet.recipe";
@@ -20,6 +20,11 @@ declare const spec: {
20
20
  readonly opacity: 0.5;
21
21
  readonly cursor: "not-allowed";
22
22
  };
23
+ }, {
24
+ readonly selector: "&:active";
25
+ readonly decls: {
26
+ readonly transform: "scale(0.98)";
27
+ };
23
28
  }];
24
29
  readonly variants: {
25
30
  readonly intent: {
@@ -27,25 +32,25 @@ declare const spec: {
27
32
  readonly decls: {
28
33
  readonly background: `var(--${string})`;
29
34
  readonly color: `var(--${string})`;
30
- readonly boxShadow: "inset 0 0 0 1px rgba(0,0,0,0.06), 0 2px 4px -2px rgba(38,109,240,0.12), 0 3px 6px -2px rgba(38,109,240,0.08)";
35
+ readonly boxShadow: "none";
31
36
  };
32
37
  readonly parts: [{
33
38
  readonly selector: "&:hover";
34
39
  readonly decls: {
35
- background: `var(--${string})`;
40
+ readonly filter: "brightness(0.96)";
36
41
  };
37
42
  }, {
38
43
  readonly selector: "&:active";
39
44
  readonly decls: {
40
- background: `var(--${string})`;
45
+ readonly filter: "brightness(0.92)";
41
46
  };
42
47
  }];
43
48
  };
44
49
  readonly neutral: {
45
50
  readonly decls: {
46
- background: `var(--${string})`;
47
- color: `var(--${string})`;
48
- boxShadow: `inset 0 0 0 1px var(--${string}), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04)`;
51
+ readonly background: `var(--${string})`;
52
+ readonly color: `var(--${string})`;
53
+ readonly boxShadow: "none";
49
54
  };
50
55
  readonly parts: [{
51
56
  readonly selector: "&:hover";
@@ -58,7 +63,7 @@ declare const spec: {
58
63
  readonly decls: {
59
64
  readonly background: `var(--${string})`;
60
65
  readonly color: `var(--${string})`;
61
- readonly boxShadow: "inset 0 0 0 1px rgba(0,0,0,0.06), 0 2px 4px -2px rgba(186,37,37,0.20), 0 3px 6px -2px rgba(186,37,37,0.12)";
66
+ readonly boxShadow: "none";
62
67
  };
63
68
  readonly parts: [{
64
69
  readonly selector: "&:hover";
@@ -117,7 +122,7 @@ declare const spec: {
117
122
  readonly height: "40px";
118
123
  readonly paddingInline: "14px";
119
124
  readonly fontSize: `var(--${string})`;
120
- readonly borderRadius: "10px";
125
+ readonly borderRadius: `var(--${string})`;
121
126
  };
122
127
  };
123
128
  readonly shape: {
@@ -8,23 +8,22 @@ declare const spec: {
8
8
  readonly margin: 0;
9
9
  readonly width: "16px";
10
10
  readonly height: "16px";
11
- readonly border: "none";
11
+ readonly border: `1px solid var(--${string})`;
12
12
  readonly borderRadius: `var(--${string})`;
13
13
  readonly background: `var(--${string})`;
14
- readonly boxShadow: `inset 0 0 0 1px color-mix(in srgb, var(--${string}) 9%, transparent)`;
15
14
  readonly cursor: "pointer";
16
- readonly transition: "background-color .12s, box-shadow .12s";
15
+ readonly transition: "background-color .12s, border-color .12s";
17
16
  };
18
17
  readonly parts: [{
19
18
  readonly selector: "&:hover";
20
19
  readonly decls: {
21
- readonly boxShadow: `inset 0 0 0 1px color-mix(in srgb, var(--${string}) 30%, transparent)`;
20
+ readonly borderColor: `color-mix(in srgb, var(--${string}) 30%, transparent)`;
22
21
  };
23
22
  }, {
24
23
  readonly selector: "&:checked, &:indeterminate";
25
24
  readonly decls: {
26
25
  readonly background: `var(--${string}) center / 10px no-repeat`;
27
- readonly boxShadow: "none";
26
+ readonly borderColor: "transparent";
28
27
  };
29
28
  }, {
30
29
  readonly selector: "&:checked";
@@ -43,6 +42,30 @@ declare const spec: {
43
42
  readonly outline: `2px solid var(--${string})`;
44
43
  readonly outlineOffset: "1px";
45
44
  };
45
+ }, {
46
+ readonly selector: "&:disabled";
47
+ readonly decls: {
48
+ readonly background: `var(--${string})`;
49
+ readonly borderColor: `var(--${string})`;
50
+ readonly cursor: "not-allowed";
51
+ };
52
+ }, {
53
+ readonly selector: "&:checked:disabled, &:indeterminate:disabled";
54
+ readonly decls: {
55
+ readonly background: `var(--${string}) center / 10px no-repeat`;
56
+ readonly borderColor: `var(--${string})`;
57
+ };
58
+ }, {
59
+ readonly selector: "&:checked:disabled";
60
+ readonly decls: {
61
+ backgroundImage: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5 5 9l4.5-5'/%3E%3C/svg%3E\")";
62
+ };
63
+ }, {
64
+ readonly selector: "&:indeterminate:disabled";
65
+ readonly decls: {
66
+ readonly backgroundImage: `linear-gradient(var(--${string}), var(--${string}))`;
67
+ readonly backgroundSize: "8px 2px";
68
+ };
46
69
  }];
47
70
  };
48
71
  declare const config: import("../..").RecipeConfig<Record<string, Record<string, string>>>;
@@ -29,6 +29,12 @@ export type ChipProps = React.ComponentPropsWithoutRef<"span"> & VariantProps<ty
29
29
  * an inline ×) — so `Chip` has no `onRemove`/remove button yet. Add one once
30
30
  * that surface can be measured; don't guess the icon, its hit target, or its
31
31
  * spacing from the label.
32
+ *
33
+ * `appearance` (`"filled"` default | `"outline"`) and `selected` separate
34
+ * three visual roles crisp/#907's study found conflated: a filled chip reads
35
+ * as a status/value (not clickable), an outline chip reads as actionable (a
36
+ * tag or filter you can tap), and `selected` overrides either to a dark fill
37
+ * once tapped — see `chip.recipe.ts` for the structural reference.
32
38
  */
33
39
  export declare const Chip: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & VariantProps<import("../..").RecipeFn<{
34
40
  readonly truncate: {
@@ -45,6 +51,14 @@ export declare const Chip: React.ForwardRefExoticComponent<Omit<React.DetailedHT
45
51
  readonly cyan: string;
46
52
  readonly orange: string;
47
53
  };
54
+ readonly appearance: {
55
+ readonly filled: string;
56
+ readonly outline: string;
57
+ };
58
+ readonly selected: {
59
+ readonly true: string;
60
+ readonly false: string;
61
+ };
48
62
  }> & {
49
63
  config: import("../..").RecipeConfig<{
50
64
  readonly truncate: {
@@ -61,6 +75,14 @@ export declare const Chip: React.ForwardRefExoticComponent<Omit<React.DetailedHT
61
75
  readonly cyan: string;
62
76
  readonly orange: string;
63
77
  };
78
+ readonly appearance: {
79
+ readonly filled: string;
80
+ readonly outline: string;
81
+ };
82
+ readonly selected: {
83
+ readonly true: string;
84
+ readonly false: string;
85
+ };
64
86
  }>;
65
87
  }> & {
66
88
  asChild?: boolean;
@@ -73,10 +73,34 @@ declare const spec: {
73
73
  boxShadow: string;
74
74
  };
75
75
  };
76
+ readonly appearance: {
77
+ readonly filled: {};
78
+ readonly outline: {
79
+ readonly background: "transparent";
80
+ };
81
+ };
82
+ readonly selected: {
83
+ readonly true: {
84
+ readonly background: `var(--${string})`;
85
+ readonly color: `var(--${string})`;
86
+ readonly boxShadow: "none";
87
+ };
88
+ readonly false: {};
89
+ };
76
90
  };
91
+ readonly compoundVariants: [{
92
+ readonly tone: "neutral";
93
+ readonly appearance: "outline";
94
+ readonly selected: false;
95
+ readonly decls: {
96
+ readonly boxShadow: `inset 0 0 0 1px var(--${string})`;
97
+ };
98
+ }];
77
99
  readonly defaultVariants: {
78
100
  readonly tone: "neutral";
79
101
  readonly truncate: false;
102
+ readonly appearance: "filled";
103
+ readonly selected: false;
80
104
  };
81
105
  };
82
106
  declare const config: import("../..").RecipeConfig<{
@@ -94,6 +118,14 @@ declare const config: import("../..").RecipeConfig<{
94
118
  readonly cyan: string;
95
119
  readonly orange: string;
96
120
  };
121
+ readonly appearance: {
122
+ readonly filled: string;
123
+ readonly outline: string;
124
+ };
125
+ readonly selected: {
126
+ readonly true: string;
127
+ readonly false: string;
128
+ };
97
129
  }>;
98
130
  export declare const chipRecipe: import("../..").RecipeFn<{
99
131
  readonly truncate: {
@@ -110,6 +142,14 @@ export declare const chipRecipe: import("../..").RecipeFn<{
110
142
  readonly cyan: string;
111
143
  readonly orange: string;
112
144
  };
145
+ readonly appearance: {
146
+ readonly filled: string;
147
+ readonly outline: string;
148
+ };
149
+ readonly selected: {
150
+ readonly true: string;
151
+ readonly false: string;
152
+ };
113
153
  }> & {
114
154
  config: import("../..").RecipeConfig<{
115
155
  readonly truncate: {
@@ -126,6 +166,14 @@ export declare const chipRecipe: import("../..").RecipeFn<{
126
166
  readonly cyan: string;
127
167
  readonly orange: string;
128
168
  };
169
+ readonly appearance: {
170
+ readonly filled: string;
171
+ readonly outline: string;
172
+ };
173
+ readonly selected: {
174
+ readonly true: string;
175
+ readonly false: string;
176
+ };
129
177
  }>;
130
178
  };
131
179
  export { spec };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ export type ChipGroupProps = React.ComponentPropsWithoutRef<"div"> & {
3
+ asChild?: boolean;
4
+ };
5
+ /**
6
+ * A single-line, horizontally-scrolling row of `Chip`s (or anything else),
7
+ * with scroll-snap — for a filter/status row that would otherwise wrap onto
8
+ * a second line once it runs out of width (crisp#908). Every child snaps to
9
+ * the row's start edge and never shrinks, so scrolling always lands a chip
10
+ * flush against the left edge rather than mid-chip.
11
+ */
12
+ export declare const ChipGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
13
+ asChild?: boolean;
14
+ } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,5 @@
1
+ declare const config: import("../..").RecipeConfig<{}>;
2
+ export declare const chipgroupRecipe: import("../..").RecipeFn<{}> & {
3
+ config: import("../..").RecipeConfig<{}>;
4
+ };
5
+ export default config;
@@ -0,0 +1,2 @@
1
+ export { ChipGroup, type ChipGroupProps } from "./chipgroup";
2
+ export { chipgroupRecipe } from "./chipgroup.recipe";