@kushagradhawan/kookie-ui 0.1.28 → 0.1.30

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 (538) hide show
  1. package/components.css +4742 -2680
  2. package/dist/cjs/components/_internal/base-button.d.ts +36 -0
  3. package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
  4. package/dist/cjs/components/_internal/base-button.js +1 -1
  5. package/dist/cjs/components/_internal/base-button.js.map +3 -3
  6. package/dist/cjs/components/_internal/base-button.props.d.ts +61 -0
  7. package/dist/cjs/components/_internal/base-button.props.d.ts.map +1 -1
  8. package/dist/cjs/components/_internal/base-button.props.js +1 -1
  9. package/dist/cjs/components/_internal/base-button.props.js.map +3 -3
  10. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +6 -1
  11. package/dist/cjs/components/_internal/base-checkbox.props.d.ts.map +1 -1
  12. package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
  13. package/dist/cjs/components/_internal/base-checkbox.props.js.map +3 -3
  14. package/dist/cjs/components/_internal/base-menu.props.d.ts +8 -0
  15. package/dist/cjs/components/_internal/base-menu.props.d.ts.map +1 -1
  16. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  17. package/dist/cjs/components/_internal/base-menu.props.js.map +3 -3
  18. package/dist/cjs/components/_internal/base-radio.props.d.ts +6 -1
  19. package/dist/cjs/components/_internal/base-radio.props.d.ts.map +1 -1
  20. package/dist/cjs/components/_internal/base-radio.props.js +1 -1
  21. package/dist/cjs/components/_internal/base-radio.props.js.map +3 -3
  22. package/dist/cjs/components/accordion.d.ts +22 -0
  23. package/dist/cjs/components/accordion.d.ts.map +1 -0
  24. package/dist/cjs/components/accordion.js +2 -0
  25. package/dist/cjs/components/accordion.js.map +7 -0
  26. package/dist/cjs/components/accordion.props.d.ts +97 -0
  27. package/dist/cjs/components/accordion.props.d.ts.map +1 -0
  28. package/dist/cjs/components/accordion.props.js +2 -0
  29. package/dist/cjs/components/accordion.props.js.map +7 -0
  30. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  31. package/dist/cjs/components/alert-dialog.js +1 -1
  32. package/dist/cjs/components/alert-dialog.js.map +3 -3
  33. package/dist/cjs/components/alert-dialog.props.d.ts +69 -2
  34. package/dist/cjs/components/alert-dialog.props.d.ts.map +1 -1
  35. package/dist/cjs/components/alert-dialog.props.js +1 -1
  36. package/dist/cjs/components/alert-dialog.props.js.map +3 -3
  37. package/dist/cjs/components/avatar.d.ts.map +1 -1
  38. package/dist/cjs/components/avatar.js +1 -1
  39. package/dist/cjs/components/avatar.js.map +3 -3
  40. package/dist/cjs/components/avatar.props.d.ts +9 -1
  41. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  42. package/dist/cjs/components/avatar.props.js +1 -1
  43. package/dist/cjs/components/avatar.props.js.map +3 -3
  44. package/dist/cjs/components/badge.d.ts +8 -1
  45. package/dist/cjs/components/badge.d.ts.map +1 -1
  46. package/dist/cjs/components/badge.js +1 -1
  47. package/dist/cjs/components/badge.js.map +3 -3
  48. package/dist/cjs/components/badge.props.d.ts +14 -6
  49. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  50. package/dist/cjs/components/badge.props.js +1 -1
  51. package/dist/cjs/components/badge.props.js.map +3 -3
  52. package/dist/cjs/components/blockquote.props.d.ts +1 -1
  53. package/dist/cjs/components/button.d.ts +53 -1
  54. package/dist/cjs/components/button.d.ts.map +1 -1
  55. package/dist/cjs/components/button.js +1 -1
  56. package/dist/cjs/components/button.js.map +3 -3
  57. package/dist/cjs/components/button.props.d.ts +17 -0
  58. package/dist/cjs/components/button.props.d.ts.map +1 -1
  59. package/dist/cjs/components/button.props.js.map +2 -2
  60. package/dist/cjs/components/callout.d.ts +4 -0
  61. package/dist/cjs/components/callout.d.ts.map +1 -1
  62. package/dist/cjs/components/callout.js +1 -1
  63. package/dist/cjs/components/callout.js.map +3 -3
  64. package/dist/cjs/components/callout.props.d.ts +9 -1
  65. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  66. package/dist/cjs/components/callout.props.js +1 -1
  67. package/dist/cjs/components/callout.props.js.map +3 -3
  68. package/dist/cjs/components/card.d.ts.map +1 -1
  69. package/dist/cjs/components/card.js +1 -1
  70. package/dist/cjs/components/card.js.map +3 -3
  71. package/dist/cjs/components/card.props.d.ts +5 -0
  72. package/dist/cjs/components/card.props.d.ts.map +1 -1
  73. package/dist/cjs/components/card.props.js +1 -1
  74. package/dist/cjs/components/card.props.js.map +3 -3
  75. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
  76. package/dist/cjs/components/checkbox-cards.js +1 -1
  77. package/dist/cjs/components/checkbox-cards.js.map +3 -3
  78. package/dist/cjs/components/checkbox-cards.props.d.ts +2 -2
  79. package/dist/cjs/components/checkbox-cards.props.js +1 -1
  80. package/dist/cjs/components/checkbox-cards.props.js.map +2 -2
  81. package/dist/cjs/components/checkbox-group.props.d.ts +6 -1
  82. package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
  83. package/dist/cjs/components/checkbox.d.ts.map +1 -1
  84. package/dist/cjs/components/checkbox.js +1 -1
  85. package/dist/cjs/components/checkbox.js.map +3 -3
  86. package/dist/cjs/components/code.js.map +1 -1
  87. package/dist/cjs/components/code.props.d.ts +1 -1
  88. package/dist/cjs/components/context-menu.d.ts +1 -1
  89. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  90. package/dist/cjs/components/context-menu.js +1 -1
  91. package/dist/cjs/components/context-menu.js.map +3 -3
  92. package/dist/cjs/components/dialog.d.ts.map +1 -1
  93. package/dist/cjs/components/dialog.js +1 -1
  94. package/dist/cjs/components/dialog.js.map +3 -3
  95. package/dist/cjs/components/dialog.props.d.ts +6 -1
  96. package/dist/cjs/components/dialog.props.d.ts.map +1 -1
  97. package/dist/cjs/components/dialog.props.js +1 -1
  98. package/dist/cjs/components/dialog.props.js.map +3 -3
  99. package/dist/cjs/components/dropdown-menu.d.ts +1 -1
  100. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  101. package/dist/cjs/components/dropdown-menu.js +1 -1
  102. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  103. package/dist/cjs/components/heading.props.d.ts +1 -1
  104. package/dist/cjs/components/icon-button.d.ts +79 -1
  105. package/dist/cjs/components/icon-button.d.ts.map +1 -1
  106. package/dist/cjs/components/icon-button.js +4 -1
  107. package/dist/cjs/components/icon-button.js.map +3 -3
  108. package/dist/cjs/components/image.d.ts +131 -12
  109. package/dist/cjs/components/image.d.ts.map +1 -1
  110. package/dist/cjs/components/image.js +1 -1
  111. package/dist/cjs/components/image.js.map +3 -3
  112. package/dist/cjs/components/image.props.d.ts +136 -21
  113. package/dist/cjs/components/image.props.d.ts.map +1 -1
  114. package/dist/cjs/components/image.props.js +1 -1
  115. package/dist/cjs/components/image.props.js.map +3 -3
  116. package/dist/cjs/components/index.d.ts +1 -0
  117. package/dist/cjs/components/index.d.ts.map +1 -1
  118. package/dist/cjs/components/index.js +1 -1
  119. package/dist/cjs/components/index.js.map +3 -3
  120. package/dist/cjs/components/link.props.d.ts +1 -1
  121. package/dist/cjs/components/progress.props.d.ts +2 -2
  122. package/dist/cjs/components/progress.props.js +1 -1
  123. package/dist/cjs/components/progress.props.js.map +2 -2
  124. package/dist/cjs/components/radio-cards.d.ts.map +1 -1
  125. package/dist/cjs/components/radio-cards.js +1 -1
  126. package/dist/cjs/components/radio-cards.js.map +3 -3
  127. package/dist/cjs/components/radio-cards.props.d.ts +2 -2
  128. package/dist/cjs/components/radio-cards.props.js +1 -1
  129. package/dist/cjs/components/radio-cards.props.js.map +2 -2
  130. package/dist/cjs/components/radio.d.ts.map +1 -1
  131. package/dist/cjs/components/radio.js +1 -1
  132. package/dist/cjs/components/radio.js.map +3 -3
  133. package/dist/cjs/components/segmented-control.props.d.ts +3 -3
  134. package/dist/cjs/components/segmented-control.props.js +1 -1
  135. package/dist/cjs/components/segmented-control.props.js.map +2 -2
  136. package/dist/cjs/components/select.d.ts.map +1 -1
  137. package/dist/cjs/components/select.js +1 -1
  138. package/dist/cjs/components/select.js.map +3 -3
  139. package/dist/cjs/components/select.props.d.ts +12 -0
  140. package/dist/cjs/components/select.props.d.ts.map +1 -1
  141. package/dist/cjs/components/select.props.js +1 -1
  142. package/dist/cjs/components/select.props.js.map +2 -2
  143. package/dist/cjs/components/sidebar.d.ts +5 -0
  144. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  145. package/dist/cjs/components/sidebar.js +1 -1
  146. package/dist/cjs/components/sidebar.js.map +3 -3
  147. package/dist/cjs/components/slider.d.ts +5 -0
  148. package/dist/cjs/components/slider.d.ts.map +1 -1
  149. package/dist/cjs/components/slider.js +1 -1
  150. package/dist/cjs/components/slider.js.map +3 -3
  151. package/dist/cjs/components/slider.props.d.ts +10 -2
  152. package/dist/cjs/components/slider.props.d.ts.map +1 -1
  153. package/dist/cjs/components/slider.props.js +1 -1
  154. package/dist/cjs/components/slider.props.js.map +2 -2
  155. package/dist/cjs/components/switch.d.ts.map +1 -1
  156. package/dist/cjs/components/switch.js +1 -1
  157. package/dist/cjs/components/switch.js.map +3 -3
  158. package/dist/cjs/components/switch.props.d.ts +17 -4
  159. package/dist/cjs/components/switch.props.d.ts.map +1 -1
  160. package/dist/cjs/components/switch.props.js +1 -1
  161. package/dist/cjs/components/switch.props.js.map +3 -3
  162. package/dist/cjs/components/tab-nav.d.ts.map +1 -1
  163. package/dist/cjs/components/tab-nav.js +1 -1
  164. package/dist/cjs/components/tab-nav.js.map +3 -3
  165. package/dist/cjs/components/tabs.d.ts.map +1 -1
  166. package/dist/cjs/components/tabs.js +1 -1
  167. package/dist/cjs/components/tabs.js.map +2 -2
  168. package/dist/cjs/components/text-area.d.ts.map +1 -1
  169. package/dist/cjs/components/text-area.js +1 -1
  170. package/dist/cjs/components/text-area.js.map +3 -3
  171. package/dist/cjs/components/text-area.props.d.ts +29 -0
  172. package/dist/cjs/components/text-area.props.d.ts.map +1 -1
  173. package/dist/cjs/components/text-area.props.js +1 -1
  174. package/dist/cjs/components/text-area.props.js.map +3 -3
  175. package/dist/cjs/components/text-field.d.ts.map +1 -1
  176. package/dist/cjs/components/text-field.js +4 -4
  177. package/dist/cjs/components/text-field.js.map +3 -3
  178. package/dist/cjs/components/text-field.props.d.ts +29 -0
  179. package/dist/cjs/components/text-field.props.d.ts.map +1 -1
  180. package/dist/cjs/components/text-field.props.js +1 -1
  181. package/dist/cjs/components/text-field.props.js.map +3 -3
  182. package/dist/cjs/components/text.props.d.ts +1 -1
  183. package/dist/cjs/components/theme.d.ts +3 -0
  184. package/dist/cjs/components/theme.d.ts.map +1 -1
  185. package/dist/cjs/components/theme.js +1 -1
  186. package/dist/cjs/components/theme.js.map +3 -3
  187. package/dist/cjs/components/theme.props.d.ts +14 -0
  188. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  189. package/dist/cjs/components/theme.props.js +1 -1
  190. package/dist/cjs/components/theme.props.js.map +3 -3
  191. package/dist/cjs/components/toggle-button.d.ts +52 -0
  192. package/dist/cjs/components/toggle-button.d.ts.map +1 -1
  193. package/dist/cjs/components/toggle-button.js +1 -1
  194. package/dist/cjs/components/toggle-button.js.map +3 -3
  195. package/dist/cjs/components/toggle-icon-button.d.ts +84 -2
  196. package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
  197. package/dist/cjs/components/toggle-icon-button.js +1 -1
  198. package/dist/cjs/components/toggle-icon-button.js.map +3 -3
  199. package/dist/cjs/helpers/extract-margin-props.d.ts +7 -7
  200. package/dist/cjs/hooks/index.d.ts +2 -0
  201. package/dist/cjs/hooks/index.d.ts.map +1 -0
  202. package/dist/cjs/hooks/index.js +2 -0
  203. package/dist/cjs/hooks/index.js.map +7 -0
  204. package/dist/cjs/hooks/use-live-announcer.d.ts +6 -0
  205. package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -0
  206. package/dist/cjs/hooks/use-live-announcer.js +10 -0
  207. package/dist/cjs/hooks/use-live-announcer.js.map +7 -0
  208. package/dist/cjs/index.d.ts +1 -0
  209. package/dist/cjs/index.d.ts.map +1 -1
  210. package/dist/cjs/index.js +1 -1
  211. package/dist/cjs/index.js.map +2 -2
  212. package/dist/cjs/props/weight.prop.d.ts +1 -1
  213. package/dist/cjs/props/weight.prop.js +1 -1
  214. package/dist/cjs/props/weight.prop.js.map +2 -2
  215. package/dist/esm/components/_internal/base-button.d.ts +36 -0
  216. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  217. package/dist/esm/components/_internal/base-button.js +1 -1
  218. package/dist/esm/components/_internal/base-button.js.map +3 -3
  219. package/dist/esm/components/_internal/base-button.props.d.ts +61 -0
  220. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  221. package/dist/esm/components/_internal/base-button.props.js +1 -1
  222. package/dist/esm/components/_internal/base-button.props.js.map +3 -3
  223. package/dist/esm/components/_internal/base-checkbox.props.d.ts +6 -1
  224. package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
  225. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  226. package/dist/esm/components/_internal/base-checkbox.props.js.map +3 -3
  227. package/dist/esm/components/_internal/base-menu.props.d.ts +8 -0
  228. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  229. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  230. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  231. package/dist/esm/components/_internal/base-radio.props.d.ts +6 -1
  232. package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
  233. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  234. package/dist/esm/components/_internal/base-radio.props.js.map +3 -3
  235. package/dist/esm/components/accordion.d.ts +22 -0
  236. package/dist/esm/components/accordion.d.ts.map +1 -0
  237. package/dist/esm/components/accordion.js +2 -0
  238. package/dist/esm/components/accordion.js.map +7 -0
  239. package/dist/esm/components/accordion.props.d.ts +97 -0
  240. package/dist/esm/components/accordion.props.d.ts.map +1 -0
  241. package/dist/esm/components/accordion.props.js +2 -0
  242. package/dist/esm/components/accordion.props.js.map +7 -0
  243. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  244. package/dist/esm/components/alert-dialog.js +1 -1
  245. package/dist/esm/components/alert-dialog.js.map +3 -3
  246. package/dist/esm/components/alert-dialog.props.d.ts +69 -2
  247. package/dist/esm/components/alert-dialog.props.d.ts.map +1 -1
  248. package/dist/esm/components/alert-dialog.props.js +1 -1
  249. package/dist/esm/components/alert-dialog.props.js.map +3 -3
  250. package/dist/esm/components/avatar.d.ts.map +1 -1
  251. package/dist/esm/components/avatar.js +1 -1
  252. package/dist/esm/components/avatar.js.map +3 -3
  253. package/dist/esm/components/avatar.props.d.ts +9 -1
  254. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  255. package/dist/esm/components/avatar.props.js +1 -1
  256. package/dist/esm/components/avatar.props.js.map +3 -3
  257. package/dist/esm/components/badge.d.ts +8 -1
  258. package/dist/esm/components/badge.d.ts.map +1 -1
  259. package/dist/esm/components/badge.js +1 -1
  260. package/dist/esm/components/badge.js.map +3 -3
  261. package/dist/esm/components/badge.props.d.ts +14 -6
  262. package/dist/esm/components/badge.props.d.ts.map +1 -1
  263. package/dist/esm/components/badge.props.js +1 -1
  264. package/dist/esm/components/badge.props.js.map +3 -3
  265. package/dist/esm/components/blockquote.props.d.ts +1 -1
  266. package/dist/esm/components/button.d.ts +53 -1
  267. package/dist/esm/components/button.d.ts.map +1 -1
  268. package/dist/esm/components/button.js +1 -1
  269. package/dist/esm/components/button.js.map +3 -3
  270. package/dist/esm/components/button.props.d.ts +17 -0
  271. package/dist/esm/components/button.props.d.ts.map +1 -1
  272. package/dist/esm/components/button.props.js.map +2 -2
  273. package/dist/esm/components/callout.d.ts +4 -0
  274. package/dist/esm/components/callout.d.ts.map +1 -1
  275. package/dist/esm/components/callout.js +1 -1
  276. package/dist/esm/components/callout.js.map +3 -3
  277. package/dist/esm/components/callout.props.d.ts +9 -1
  278. package/dist/esm/components/callout.props.d.ts.map +1 -1
  279. package/dist/esm/components/callout.props.js +1 -1
  280. package/dist/esm/components/callout.props.js.map +3 -3
  281. package/dist/esm/components/card.d.ts.map +1 -1
  282. package/dist/esm/components/card.js +1 -1
  283. package/dist/esm/components/card.js.map +3 -3
  284. package/dist/esm/components/card.props.d.ts +5 -0
  285. package/dist/esm/components/card.props.d.ts.map +1 -1
  286. package/dist/esm/components/card.props.js +1 -1
  287. package/dist/esm/components/card.props.js.map +3 -3
  288. package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
  289. package/dist/esm/components/checkbox-cards.js +1 -1
  290. package/dist/esm/components/checkbox-cards.js.map +3 -3
  291. package/dist/esm/components/checkbox-cards.props.d.ts +2 -2
  292. package/dist/esm/components/checkbox-cards.props.js +1 -1
  293. package/dist/esm/components/checkbox-cards.props.js.map +2 -2
  294. package/dist/esm/components/checkbox-group.props.d.ts +6 -1
  295. package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
  296. package/dist/esm/components/checkbox.d.ts.map +1 -1
  297. package/dist/esm/components/checkbox.js +1 -1
  298. package/dist/esm/components/checkbox.js.map +3 -3
  299. package/dist/esm/components/code.js.map +1 -1
  300. package/dist/esm/components/code.props.d.ts +1 -1
  301. package/dist/esm/components/context-menu.d.ts +1 -1
  302. package/dist/esm/components/context-menu.d.ts.map +1 -1
  303. package/dist/esm/components/context-menu.js +1 -1
  304. package/dist/esm/components/context-menu.js.map +3 -3
  305. package/dist/esm/components/dialog.d.ts.map +1 -1
  306. package/dist/esm/components/dialog.js +1 -1
  307. package/dist/esm/components/dialog.js.map +3 -3
  308. package/dist/esm/components/dialog.props.d.ts +6 -1
  309. package/dist/esm/components/dialog.props.d.ts.map +1 -1
  310. package/dist/esm/components/dialog.props.js +1 -1
  311. package/dist/esm/components/dialog.props.js.map +3 -3
  312. package/dist/esm/components/dropdown-menu.d.ts +1 -1
  313. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  314. package/dist/esm/components/dropdown-menu.js +1 -1
  315. package/dist/esm/components/dropdown-menu.js.map +3 -3
  316. package/dist/esm/components/heading.props.d.ts +1 -1
  317. package/dist/esm/components/icon-button.d.ts +79 -1
  318. package/dist/esm/components/icon-button.d.ts.map +1 -1
  319. package/dist/esm/components/icon-button.js +4 -1
  320. package/dist/esm/components/icon-button.js.map +3 -3
  321. package/dist/esm/components/image.d.ts +131 -12
  322. package/dist/esm/components/image.d.ts.map +1 -1
  323. package/dist/esm/components/image.js +1 -1
  324. package/dist/esm/components/image.js.map +3 -3
  325. package/dist/esm/components/image.props.d.ts +136 -21
  326. package/dist/esm/components/image.props.d.ts.map +1 -1
  327. package/dist/esm/components/image.props.js +1 -1
  328. package/dist/esm/components/image.props.js.map +3 -3
  329. package/dist/esm/components/index.d.ts +1 -0
  330. package/dist/esm/components/index.d.ts.map +1 -1
  331. package/dist/esm/components/index.js +1 -1
  332. package/dist/esm/components/index.js.map +3 -3
  333. package/dist/esm/components/link.props.d.ts +1 -1
  334. package/dist/esm/components/progress.props.d.ts +2 -2
  335. package/dist/esm/components/progress.props.js +1 -1
  336. package/dist/esm/components/progress.props.js.map +2 -2
  337. package/dist/esm/components/radio-cards.d.ts.map +1 -1
  338. package/dist/esm/components/radio-cards.js +1 -1
  339. package/dist/esm/components/radio-cards.js.map +3 -3
  340. package/dist/esm/components/radio-cards.props.d.ts +2 -2
  341. package/dist/esm/components/radio-cards.props.js +1 -1
  342. package/dist/esm/components/radio-cards.props.js.map +2 -2
  343. package/dist/esm/components/radio.d.ts.map +1 -1
  344. package/dist/esm/components/radio.js +1 -1
  345. package/dist/esm/components/radio.js.map +3 -3
  346. package/dist/esm/components/segmented-control.props.d.ts +3 -3
  347. package/dist/esm/components/segmented-control.props.js +1 -1
  348. package/dist/esm/components/segmented-control.props.js.map +2 -2
  349. package/dist/esm/components/select.d.ts.map +1 -1
  350. package/dist/esm/components/select.js +1 -1
  351. package/dist/esm/components/select.js.map +3 -3
  352. package/dist/esm/components/select.props.d.ts +12 -0
  353. package/dist/esm/components/select.props.d.ts.map +1 -1
  354. package/dist/esm/components/select.props.js +1 -1
  355. package/dist/esm/components/select.props.js.map +2 -2
  356. package/dist/esm/components/sidebar.d.ts +5 -0
  357. package/dist/esm/components/sidebar.d.ts.map +1 -1
  358. package/dist/esm/components/sidebar.js +1 -1
  359. package/dist/esm/components/sidebar.js.map +3 -3
  360. package/dist/esm/components/slider.d.ts +5 -0
  361. package/dist/esm/components/slider.d.ts.map +1 -1
  362. package/dist/esm/components/slider.js +1 -1
  363. package/dist/esm/components/slider.js.map +3 -3
  364. package/dist/esm/components/slider.props.d.ts +10 -2
  365. package/dist/esm/components/slider.props.d.ts.map +1 -1
  366. package/dist/esm/components/slider.props.js +1 -1
  367. package/dist/esm/components/slider.props.js.map +2 -2
  368. package/dist/esm/components/switch.d.ts.map +1 -1
  369. package/dist/esm/components/switch.js +1 -1
  370. package/dist/esm/components/switch.js.map +3 -3
  371. package/dist/esm/components/switch.props.d.ts +17 -4
  372. package/dist/esm/components/switch.props.d.ts.map +1 -1
  373. package/dist/esm/components/switch.props.js +1 -1
  374. package/dist/esm/components/switch.props.js.map +3 -3
  375. package/dist/esm/components/tab-nav.d.ts.map +1 -1
  376. package/dist/esm/components/tab-nav.js +1 -1
  377. package/dist/esm/components/tab-nav.js.map +3 -3
  378. package/dist/esm/components/tabs.d.ts.map +1 -1
  379. package/dist/esm/components/tabs.js +1 -1
  380. package/dist/esm/components/tabs.js.map +2 -2
  381. package/dist/esm/components/text-area.d.ts.map +1 -1
  382. package/dist/esm/components/text-area.js +1 -1
  383. package/dist/esm/components/text-area.js.map +3 -3
  384. package/dist/esm/components/text-area.props.d.ts +29 -0
  385. package/dist/esm/components/text-area.props.d.ts.map +1 -1
  386. package/dist/esm/components/text-area.props.js +1 -1
  387. package/dist/esm/components/text-area.props.js.map +3 -3
  388. package/dist/esm/components/text-field.d.ts.map +1 -1
  389. package/dist/esm/components/text-field.js +4 -4
  390. package/dist/esm/components/text-field.js.map +3 -3
  391. package/dist/esm/components/text-field.props.d.ts +29 -0
  392. package/dist/esm/components/text-field.props.d.ts.map +1 -1
  393. package/dist/esm/components/text-field.props.js +1 -1
  394. package/dist/esm/components/text-field.props.js.map +3 -3
  395. package/dist/esm/components/text.props.d.ts +1 -1
  396. package/dist/esm/components/theme.d.ts +3 -0
  397. package/dist/esm/components/theme.d.ts.map +1 -1
  398. package/dist/esm/components/theme.js +1 -1
  399. package/dist/esm/components/theme.js.map +3 -3
  400. package/dist/esm/components/theme.props.d.ts +14 -0
  401. package/dist/esm/components/theme.props.d.ts.map +1 -1
  402. package/dist/esm/components/theme.props.js +1 -1
  403. package/dist/esm/components/theme.props.js.map +3 -3
  404. package/dist/esm/components/toggle-button.d.ts +52 -0
  405. package/dist/esm/components/toggle-button.d.ts.map +1 -1
  406. package/dist/esm/components/toggle-button.js +1 -1
  407. package/dist/esm/components/toggle-button.js.map +3 -3
  408. package/dist/esm/components/toggle-icon-button.d.ts +84 -2
  409. package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
  410. package/dist/esm/components/toggle-icon-button.js +1 -1
  411. package/dist/esm/components/toggle-icon-button.js.map +3 -3
  412. package/dist/esm/helpers/extract-margin-props.d.ts +7 -7
  413. package/dist/esm/hooks/index.d.ts +2 -0
  414. package/dist/esm/hooks/index.d.ts.map +1 -0
  415. package/dist/esm/hooks/index.js +2 -0
  416. package/dist/esm/hooks/index.js.map +7 -0
  417. package/dist/esm/hooks/use-live-announcer.d.ts +6 -0
  418. package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -0
  419. package/dist/esm/hooks/use-live-announcer.js +10 -0
  420. package/dist/esm/hooks/use-live-announcer.js.map +7 -0
  421. package/dist/esm/index.d.ts +1 -0
  422. package/dist/esm/index.d.ts.map +1 -1
  423. package/dist/esm/index.js +1 -1
  424. package/dist/esm/index.js.map +2 -2
  425. package/dist/esm/props/weight.prop.d.ts +1 -1
  426. package/dist/esm/props/weight.prop.js +1 -1
  427. package/dist/esm/props/weight.prop.js.map +2 -2
  428. package/layout/components.css +1 -0
  429. package/layout.css +1 -0
  430. package/package.json +2 -1
  431. package/src/components/_internal/base-button.css +483 -284
  432. package/src/components/_internal/base-button.props.ts +87 -0
  433. package/src/components/_internal/base-button.tsx +127 -10
  434. package/src/components/_internal/base-card.css +866 -83
  435. package/src/components/_internal/base-checkbox.css +252 -52
  436. package/src/components/_internal/base-checkbox.props.ts +4 -1
  437. package/src/components/_internal/base-dialog.css +39 -8
  438. package/src/components/_internal/base-menu.css +55 -32
  439. package/src/components/_internal/base-menu.props.ts +10 -0
  440. package/src/components/_internal/base-radio.css +222 -52
  441. package/src/components/_internal/base-radio.props.ts +4 -1
  442. package/src/components/_internal/base-sidebar-menu.css +223 -0
  443. package/src/components/_internal/base-sidebar.css +141 -0
  444. package/src/components/_internal/base-tab-list.css +16 -0
  445. package/src/components/accordion.css +657 -0
  446. package/src/components/accordion.props.tsx +90 -0
  447. package/src/components/accordion.tsx +209 -0
  448. package/src/components/alert-dialog.props.tsx +22 -2
  449. package/src/components/alert-dialog.tsx +94 -3
  450. package/src/components/avatar.css +294 -152
  451. package/src/components/avatar.props.tsx +7 -1
  452. package/src/components/avatar.tsx +12 -2
  453. package/src/components/badge.css +160 -138
  454. package/src/components/badge.props.tsx +10 -3
  455. package/src/components/badge.tsx +71 -9
  456. package/src/components/button.css +88 -0
  457. package/src/components/button.props.tsx +17 -0
  458. package/src/components/button.tsx +107 -5
  459. package/src/components/callout.css +122 -35
  460. package/src/components/callout.props.tsx +7 -1
  461. package/src/components/callout.tsx +32 -9
  462. package/src/components/card.css +0 -597
  463. package/src/components/card.props.tsx +3 -0
  464. package/src/components/card.tsx +4 -2
  465. package/src/components/checkbox-cards.css +27 -104
  466. package/src/components/checkbox-cards.props.tsx +2 -2
  467. package/src/components/checkbox-cards.tsx +21 -3
  468. package/src/components/checkbox.tsx +2 -0
  469. package/src/components/code.css +1 -1
  470. package/src/components/code.tsx +1 -1
  471. package/src/components/container.css +1 -0
  472. package/src/components/context-menu.tsx +54 -12
  473. package/src/components/dialog.props.tsx +3 -0
  474. package/src/components/dialog.tsx +93 -3
  475. package/src/components/dropdown-menu.tsx +49 -12
  476. package/src/components/icon-button.css +73 -4
  477. package/src/components/icon-button.tsx +125 -19
  478. package/src/components/image.css +160 -91
  479. package/src/components/image.props.ts +152 -15
  480. package/src/components/image.tsx +290 -247
  481. package/src/components/index.css +1 -0
  482. package/src/components/index.tsx +1 -0
  483. package/src/components/kbd.css +23 -44
  484. package/src/components/progress.css +130 -149
  485. package/src/components/progress.props.tsx +2 -2
  486. package/src/components/radio-cards.css +23 -113
  487. package/src/components/radio-cards.props.tsx +2 -2
  488. package/src/components/radio-cards.tsx +45 -18
  489. package/src/components/radio.tsx +4 -3
  490. package/src/components/scroll-area.css +1 -1
  491. package/src/components/segmented-control.css +83 -64
  492. package/src/components/segmented-control.props.tsx +3 -3
  493. package/src/components/select.css +502 -224
  494. package/src/components/select.props.tsx +8 -0
  495. package/src/components/select.tsx +45 -2
  496. package/src/components/sidebar.css +186 -630
  497. package/src/components/sidebar.tsx +61 -5
  498. package/src/components/slider.css +228 -88
  499. package/src/components/slider.props.tsx +6 -2
  500. package/src/components/slider.tsx +201 -24
  501. package/src/components/spinner.css +12 -0
  502. package/src/components/switch.css +135 -216
  503. package/src/components/switch.props.tsx +16 -4
  504. package/src/components/switch.tsx +5 -3
  505. package/src/components/tab-nav.tsx +6 -3
  506. package/src/components/tabs.tsx +2 -0
  507. package/src/components/text-area.css +222 -140
  508. package/src/components/text-area.props.tsx +18 -1
  509. package/src/components/text-area.tsx +58 -7
  510. package/src/components/text-field.css +214 -131
  511. package/src/components/text-field.props.tsx +17 -0
  512. package/src/components/text-field.tsx +79 -28
  513. package/src/components/theme.props.tsx +12 -0
  514. package/src/components/theme.tsx +31 -1
  515. package/src/components/toggle-button.tsx +102 -3
  516. package/src/components/toggle-icon-button.tsx +150 -7
  517. package/src/components/tooltip.css +3 -3
  518. package/src/hooks/index.ts +1 -0
  519. package/src/hooks/use-live-announcer.ts +52 -0
  520. package/src/index.ts +1 -0
  521. package/src/props/weight.prop.ts +1 -1
  522. package/src/styles/fonts.css +27 -13
  523. package/src/styles/index.css +1 -1
  524. package/src/styles/tokens/base.css +2 -0
  525. package/src/styles/tokens/blur.css +32 -0
  526. package/src/styles/tokens/color.css +9 -9
  527. package/src/styles/tokens/constants.css +88 -140
  528. package/src/styles/tokens/index.css +2 -0
  529. package/src/styles/tokens/opacity.css +32 -0
  530. package/src/styles/tokens/radius.css +6 -10
  531. package/src/styles/tokens/shadow.css +25 -25
  532. package/src/styles/tokens/transition.css +49 -13
  533. package/src/styles/tokens/typography.css +7 -3
  534. package/src/styles/utilities/font-weight.css +16 -0
  535. package/styles.css +11129 -8945
  536. package/tokens/base.css +127 -49
  537. package/tokens.css +158 -114
  538. package/utilities.css +72 -0
@@ -12,6 +12,26 @@
12
12
  /* Allows the `resize` property to work on the div */
13
13
  overflow: hidden;
14
14
 
15
+ /* Theme-level translucent override */
16
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
17
+ backdrop-filter: var(--backdrop-filter-components);
18
+ --backdrop-filter-components: blur(var(--backdrop-blur-components));
19
+ }
20
+
21
+ /* Prevent backdrop-filter stacking with parents */
22
+ isolation: isolate;
23
+
24
+ /* Component-level overrides */
25
+ &:where([data-panel-background='solid'], [data-material='solid']) {
26
+ backdrop-filter: none;
27
+ --backdrop-filter-components: none;
28
+ }
29
+
30
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
31
+ backdrop-filter: var(--backdrop-filter-components);
32
+ --backdrop-filter-components: blur(var(--backdrop-blur-components));
33
+ }
34
+
15
35
  &:where(:focus-within) {
16
36
  outline: 2px solid var(--text-area-focus-color, var(--focus-8));
17
37
  outline-offset: -1px;
@@ -95,12 +115,12 @@
95
115
  .rt-TextAreaRoot {
96
116
  &:where(.rt-r-size-1) {
97
117
  min-height: var(--space-8);
98
- border-radius: var(--radius-2);
118
+ border-radius: var(--radius-3);
99
119
 
100
120
  & :where(.rt-TextAreaInput) {
101
121
  /* Clip text to border */
102
- --text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));
103
- --text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));
122
+ --text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));
123
+ --text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));
104
124
  font-size: var(--font-size-1);
105
125
  line-height: var(--line-height-1);
106
126
  letter-spacing: var(--letter-spacing-1);
@@ -108,12 +128,12 @@
108
128
  }
109
129
  &:where(.rt-r-size-2) {
110
130
  min-height: var(--space-9);
111
- border-radius: var(--radius-2);
131
+ border-radius: var(--radius-4);
112
132
 
113
133
  & :where(.rt-TextAreaInput) {
114
134
  /* Clip text to border */
115
- --text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));
116
- --text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));
135
+ --text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));
136
+ --text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));
117
137
  font-size: var(--font-size-2);
118
138
  line-height: var(--line-height-2);
119
139
  letter-spacing: var(--letter-spacing-2);
@@ -121,12 +141,12 @@
121
141
  }
122
142
  &:where(.rt-r-size-3) {
123
143
  min-height: 80px;
124
- border-radius: var(--radius-3);
144
+ border-radius: var(--radius-5);
125
145
 
126
146
  & :where(.rt-TextAreaInput) {
127
147
  /* Clip text to border */
128
- --text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));
129
- --text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));
148
+ --text-area-padding-y: calc(var(--space-3) - var(--text-area-border-width));
149
+ --text-area-padding-x: calc(var(--space-4) - var(--text-area-border-width));
130
150
  font-size: var(--font-size-3);
131
151
  line-height: var(--line-height-3);
132
152
  letter-spacing: var(--letter-spacing-3);
@@ -147,32 +167,46 @@
147
167
  --text-area-focus-color: var(--focus-8);
148
168
  --text-area-border-width: 1px;
149
169
 
150
- /* Blend inner shadow with page background */
151
- background-clip: content-box;
152
- background-color: var(--color-surface);
153
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--gray-a6);
154
- color: var(--gray-12);
170
+ /* Base state: solid colors for solid panels */
171
+ box-shadow: inset 0 0 0 1px var(--accent-6);
172
+ transition: var(--transition-background-blur);
155
173
 
156
174
  /* Theme-level translucent override */
157
- :where([data-panel-background='translucent']) & {
158
- backdrop-filter: var(--backdrop-filter-components);
175
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
176
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
159
177
  }
160
178
 
161
- /* Component-level overrides for surface variant */
162
- &:where([data-panel-background='solid']) {
163
- --color-surface: var(--color-surface-solid);
164
- backdrop-filter: none;
179
+ /* Component-level overrides (higher specificity) */
180
+ &:where([data-panel-background='solid'], [data-material='solid']) {
181
+ box-shadow: inset 0 0 0 1px var(--accent-6);
165
182
  }
166
183
 
167
- &:where([data-panel-background='translucent']) {
168
- --color-surface: var(--color-surface-translucent);
169
- backdrop-filter: var(--backdrop-filter-components);
184
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
185
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
170
186
  }
171
187
 
172
188
  /* Hover effects */
173
189
  @media (hover: hover) {
174
190
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
175
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--gray-a8);
191
+ background-color: var(--accent-2);
192
+ box-shadow: inset 0 0 0 1px var(--accent-7);
193
+
194
+ /* Theme-level translucent override for hover */
195
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
196
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
197
+ box-shadow: inset 0 0 0 1px var(--accent-a7);
198
+ }
199
+
200
+ /* Component-level overrides for hover */
201
+ &:where([data-panel-background='solid'], [data-material='solid']) {
202
+ background-color: var(--accent-2);
203
+ box-shadow: inset 0 0 0 1px var(--accent-7);
204
+ }
205
+
206
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
207
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
208
+ box-shadow: inset 0 0 0 1px var(--accent-a7);
209
+ }
176
210
  }
177
211
  }
178
212
 
@@ -202,53 +236,50 @@
202
236
  --text-area-focus-color: var(--focus-8);
203
237
  --text-area-border-width: 0px;
204
238
 
205
- position: relative;
206
- top: calc(var(--classic-elevation-offset) / 3); /* More pronounced than before */
207
- background-color: var(--color-surface);
208
- color: var(--gray-12);
209
-
210
- /* 3D inset effect - same as TextField */
211
- /* prettier-ignore */
212
- box-shadow:
213
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a4),
214
- inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a2),
215
- inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a3),
216
- 0 0 0 var(--classic-border-width) var(--gray-a5);
239
+ /* Base state: solid surface for solid panels */
240
+ background-color: var(--color-surface-solid);
241
+ box-shadow: var(--shadow-2);
242
+ transition: var(--transition-text-field);
217
243
 
218
244
  /* Theme-level translucent override */
219
- :where([data-panel-background='translucent']) & {
220
- backdrop-filter: var(--backdrop-filter-components);
245
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
246
+ background-color: var(--color-surface-translucent);
221
247
  }
222
248
 
223
- /* Component-level overrides for surface variant */
224
- &:where([data-panel-background='solid']) {
225
- --color-surface: var(--color-surface-solid);
226
- backdrop-filter: none;
249
+ /* Component-level overrides (higher specificity) */
250
+ &:where([data-panel-background='solid'], [data-material='solid']) {
251
+ background-color: var(--color-surface-solid);
227
252
  }
228
253
 
229
- &:where([data-panel-background='translucent']) {
230
- --color-surface: var(--color-surface-translucent);
231
- backdrop-filter: var(--backdrop-filter-components);
254
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
255
+ background-color: var(--color-surface-translucent);
232
256
  }
233
257
 
234
- /* Hover effects - slightly reduced inset */
258
+ /* Hover effects */
235
259
  @media (hover: hover) {
236
260
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
237
- /* prettier-ignore */
238
- box-shadow:
239
- inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a3),
240
- inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a2),
241
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a3),
242
- 0 0 0 var(--classic-border-width) var(--gray-a6);
261
+ background-color: var(--accent-2);
262
+ box-shadow: var(--shadow-2);
263
+
264
+ /* Theme-level translucent override for hover */
265
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
266
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
267
+ }
268
+
269
+ /* Component-level overrides for hover */
270
+ &:where([data-panel-background='solid'], [data-material='solid']) {
271
+ background-color: var(--accent-2);
272
+ }
273
+
274
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
275
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
276
+ }
243
277
  }
244
278
  }
245
279
 
246
280
  /* Focus state - accent ring with minimal inset */
247
281
  &:where(:has(.rt-TextAreaInput:focus)) {
248
- /* prettier-ignore */
249
- box-shadow:
250
- inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a2),
251
- 0 0 0 2px var(--focus-8);
282
+ box-shadow: var(--shadow-2), 0 0 0 2px var(--focus-8);
252
283
  }
253
284
 
254
285
  & :where(.rt-TextAreaInput) {
@@ -277,51 +308,41 @@
277
308
  --text-area-focus-color: var(--accent-8);
278
309
  --text-area-border-width: 0px;
279
310
 
280
- /* Base state: solid accent for solid panels */
311
+ /* Base state: solid color for solid panels */
281
312
  background-color: var(--accent-3);
282
- color: var(--accent-12);
313
+ transition: var(--transition-background-blur);
283
314
 
284
315
  /* Theme-level translucent override */
285
- :where([data-panel-background='translucent']) & {
286
- background-color: var(--accent-a3);
287
- backdrop-filter: var(--backdrop-filter-components);
316
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
317
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
288
318
  }
289
319
 
290
320
  /* Component-level overrides (higher specificity) */
291
- &:where([data-panel-background='solid']) {
321
+ &:where([data-panel-background='solid'], [data-material='solid']) {
292
322
  background-color: var(--accent-3);
293
- backdrop-filter: none;
294
- --backdrop-filter-components: none;
295
323
  }
296
324
 
297
- &:where([data-panel-background='translucent']) {
298
- background-color: var(--accent-a3);
299
- backdrop-filter: var(--backdrop-filter-components);
300
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
325
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
326
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
301
327
  }
302
328
 
303
329
  /* Hover effects */
304
330
  @media (hover: hover) {
305
331
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
306
- /* Base state: solid accent for solid panels */
307
332
  background-color: var(--accent-4);
308
-
333
+
309
334
  /* Theme-level translucent override for hover */
310
- :where([data-panel-background='translucent']) & {
311
- background-color: var(--accent-a4);
335
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
336
+ background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
312
337
  }
313
338
 
314
339
  /* Component-level overrides for hover */
315
- &:where([data-panel-background='solid']) {
340
+ &:where([data-panel-background='solid'], [data-material='solid']) {
316
341
  background-color: var(--accent-4);
317
- backdrop-filter: none;
318
- --backdrop-filter-components: none;
319
342
  }
320
343
 
321
- &:where([data-panel-background='translucent']) {
322
- background-color: var(--accent-a4);
323
- backdrop-filter: var(--backdrop-filter-components);
324
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
344
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
345
+ background-color: color-mix(in srgb, var(--accent-a4), var(--accent-4) 60%);
325
346
  }
326
347
  }
327
348
  }
@@ -363,31 +384,26 @@
363
384
  @media (hover: hover) {
364
385
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
365
386
  /* Base state: solid accent for solid panels */
366
- background-color: var(--accent-2);
367
-
387
+ background-color: var(--accent-3);
388
+
368
389
  /* Theme-level translucent override for hover */
369
- :where([data-panel-background='translucent']) & {
370
- background-color: var(--accent-a2);
371
- backdrop-filter: var(--backdrop-filter-components);
390
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
391
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
372
392
  }
373
393
 
374
394
  /* Component-level overrides for hover */
375
- &:where([data-panel-background='solid']) {
376
- background-color: var(--accent-2);
377
- backdrop-filter: none;
378
- --backdrop-filter-components: none;
395
+ &:where([data-panel-background='solid'], [data-material='solid']) {
396
+ background-color: var(--accent-3);
379
397
  }
380
398
 
381
- &:where([data-panel-background='translucent']) {
382
- background-color: var(--accent-a2);
383
- backdrop-filter: var(--backdrop-filter-components);
384
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
399
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
400
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
385
401
  }
386
402
 
387
403
  /* Disable backdrop-filter when inside elements that already have backdrop-filter */
388
- :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
404
+ /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
389
405
  backdrop-filter: none !important;
390
- }
406
+ } */
391
407
  }
392
408
  }
393
409
 
@@ -397,26 +413,23 @@
397
413
  background-color: var(--accent-2);
398
414
 
399
415
  /* Theme-level translucent override */
400
- :where([data-panel-background='translucent']) & {
416
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
401
417
  background-color: var(--accent-a2);
402
- backdrop-filter: var(--backdrop-filter-components);
403
418
  }
404
419
 
405
420
  /* Component-level overrides */
406
- &:where([data-panel-background='solid']) {
421
+ &:where([data-panel-background='solid'], [data-material='solid']) {
407
422
  background-color: var(--accent-2);
408
- backdrop-filter: none;
409
423
  }
410
424
 
411
- &:where([data-panel-background='translucent']) {
425
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
412
426
  background-color: var(--accent-a2);
413
- backdrop-filter: var(--backdrop-filter-components);
414
427
  }
415
428
 
416
429
  /* Disable backdrop-filter when inside elements that already have backdrop-filter */
417
- :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
430
+ /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
418
431
  backdrop-filter: none !important;
419
- }
432
+ } */
420
433
  }
421
434
 
422
435
  /* prettier-ignore */
@@ -437,23 +450,26 @@
437
450
  --text-area-focus-color: var(--accent-8);
438
451
  --text-area-border-width: 1px;
439
452
 
440
- background-color: transparent;
441
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-7);
442
- color: var(--gray-12);
453
+ /* Base state: solid accent for solid panels */
454
+ background-color: var(--accent-2);
455
+ box-shadow: inset 0 0 0 1px var(--accent-6);
443
456
  transition: var(--transition-background-blur);
444
457
 
445
- /* Theme-level panel awareness (NO backdrop filter for true transparency) */
446
- :where([data-panel-background='translucent']) & {
447
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-a7);
458
+ /* Theme-level translucent override */
459
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
460
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
461
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
448
462
  }
449
463
 
450
- /* Component-level overrides */
451
- &:where([data-panel-background='solid']) {
452
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-7);
464
+ /* Component-level overrides (higher specificity) */
465
+ &:where([data-panel-background='solid'], [data-material='solid']) {
466
+ background-color: var(--accent-2);
467
+ box-shadow: inset 0 0 0 1px var(--accent-6);
453
468
  }
454
469
 
455
- &:where([data-panel-background='translucent']) {
456
- box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-a7);
470
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
471
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
472
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
457
473
  }
458
474
 
459
475
  & :where(.rt-TextAreaInput) {
@@ -465,31 +481,24 @@
465
481
  /* Hover effects */
466
482
  @media (hover: hover) {
467
483
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
468
- /* Base state: solid accent for solid panels */
469
- background-color: var(--accent-2);
470
-
484
+ background-color: var(--accent-3);
485
+ box-shadow: inset 0 0 0 1px var(--accent-7);
486
+
471
487
  /* Theme-level translucent override for hover */
472
- :where([data-panel-background='translucent']) & {
473
- background-color: var(--accent-a2);
474
- backdrop-filter: var(--backdrop-filter-components);
488
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
489
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
490
+ box-shadow: inset 0 0 0 1px var(--accent-a7);
475
491
  }
476
492
 
477
493
  /* Component-level overrides for hover */
478
- &:where([data-panel-background='solid']) {
479
- background-color: var(--accent-2);
480
- backdrop-filter: none;
481
- --backdrop-filter-components: none;
494
+ &:where([data-panel-background='solid'], [data-material='solid']) {
495
+ background-color: var(--accent-3);
496
+ box-shadow: inset 0 0 0 1px var(--accent-7);
482
497
  }
483
498
 
484
- &:where([data-panel-background='translucent']) {
485
- background-color: var(--accent-a2);
486
- backdrop-filter: var(--backdrop-filter-components);
487
- --backdrop-filter-components: blur(var(--backdrop-blur-components));
488
- }
489
-
490
- /* Disable backdrop-filter when inside elements that already have backdrop-filter */
491
- :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
492
- backdrop-filter: none !important;
499
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
500
+ background-color: color-mix(in srgb, var(--accent-a3), var(--accent-3) 60%);
501
+ box-shadow: inset 0 0 0 1px var(--accent-a7);
493
502
  }
494
503
  }
495
504
  }
@@ -501,29 +510,26 @@
501
510
  box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-8);
502
511
 
503
512
  /* Theme-level translucent override */
504
- :where([data-panel-background='translucent']) & {
513
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
505
514
  background-color: var(--accent-a2);
506
515
  box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-a8);
507
- backdrop-filter: var(--backdrop-filter-components);
508
516
  }
509
517
 
510
518
  /* Component-level overrides */
511
- &:where([data-panel-background='solid']) {
519
+ &:where([data-panel-background='solid'], [data-material='solid']) {
512
520
  background-color: var(--accent-2);
513
521
  box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-8);
514
- backdrop-filter: none;
515
522
  }
516
523
 
517
- &:where([data-panel-background='translucent']) {
524
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
518
525
  background-color: var(--accent-a2);
519
526
  box-shadow: inset 0 0 0 var(--text-area-border-width) var(--accent-a8);
520
- backdrop-filter: var(--backdrop-filter-components);
521
527
  }
522
528
 
523
529
  /* Disable backdrop-filter when inside elements that already have backdrop-filter */
524
- :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
530
+ /* :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
525
531
  backdrop-filter: none !important;
526
- }
532
+ } */
527
533
  }
528
534
 
529
535
  /* prettier-ignore */
@@ -560,3 +566,79 @@
560
566
  }
561
567
  }
562
568
  }
569
+
570
+ /* Error state styling */
571
+ .rt-TextAreaRoot:where(.rt-error) {
572
+ --text-area-selection-color: var(--red-a5);
573
+ --text-area-focus-color: var(--red-8);
574
+ }
575
+
576
+ .rt-TextAreaRoot:where(.rt-error.rt-variant-outline) {
577
+ box-shadow: inset 0 0 0 1px var(--red-6);
578
+
579
+ @media (hover: hover) {
580
+ &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
581
+ box-shadow: inset 0 0 0 1px var(--red-7);
582
+ }
583
+ }
584
+ }
585
+
586
+ .rt-TextAreaRoot:where(.rt-error.rt-variant-surface) {
587
+ box-shadow: inset 0 0 0 1px var(--red-6);
588
+
589
+ @media (hover: hover) {
590
+ &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
591
+ box-shadow: inset 0 0 0 1px var(--red-7);
592
+ }
593
+ }
594
+ }
595
+
596
+ .rt-TextAreaRoot:where(.rt-error.rt-variant-classic) {
597
+ box-shadow: var(--shadow-2), inset 0 0 0 1px var(--red-6);
598
+
599
+ @media (hover: hover) {
600
+ &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
601
+ box-shadow: var(--shadow-3), inset 0 0 0 1px var(--red-7);
602
+ }
603
+ }
604
+ }
605
+
606
+ .rt-TextAreaRoot:where(.rt-error.rt-variant-soft) {
607
+ background-color: var(--red-2);
608
+
609
+ @media (hover: hover) {
610
+ &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
611
+ background-color: var(--red-4);
612
+ }
613
+ }
614
+ }
615
+
616
+ .rt-TextAreaRoot:where(.rt-error.rt-variant-ghost) {
617
+ @media (hover: hover) {
618
+ &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
619
+ background-color: var(--red-3);
620
+ }
621
+ }
622
+
623
+ &:where(:focus-within) {
624
+ background-color: var(--red-2);
625
+ }
626
+ }
627
+
628
+ /* Error message styling */
629
+ .rt-TextAreaErrorMessage {
630
+ color: var(--red-11);
631
+ font-size: var(--font-size-1);
632
+ line-height: var(--line-height-1);
633
+ margin-top: var(--space-1);
634
+ display: flex;
635
+ align-items: center;
636
+ gap: var(--space-1);
637
+ }
638
+
639
+ .rt-TextAreaErrorMessage::before {
640
+ content: "⚠";
641
+ color: var(--red-9);
642
+ font-size: var(--font-size-1);
643
+ line-height: 1;
644
+ }
@@ -7,6 +7,7 @@ const sizes = ['1', '2', '3'] as const;
7
7
  const variants = ['classic', 'surface', 'soft', 'outline', 'ghost'] as const;
8
8
  const resizeValues = ['none', 'vertical', 'horizontal', 'both'] as const;
9
9
  const panelBackgrounds = ['solid', 'translucent'] as const;
10
+ const materials = ['solid', 'translucent'] as const;
10
11
 
11
12
  // prettier-ignore
12
13
  const textAreaPropDefs = {
@@ -14,6 +15,15 @@ const textAreaPropDefs = {
14
15
  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },
15
16
  resize: { type: 'enum', className: 'rt-r-resize', values: resizeValues, responsive: true },
16
17
  panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },
18
+ material: { type: 'enum', values: materials, default: undefined },
19
+ // Error and validation props
20
+ error: { type: 'boolean', default: false },
21
+ errorMessage: { type: 'string', default: undefined },
22
+ isInvalid: { type: 'boolean', default: false },
23
+ required: { type: 'boolean', default: false },
24
+ // Accessibility props
25
+ 'aria-describedby': { type: 'string', default: undefined },
26
+ 'aria-labelledby': { type: 'string', default: undefined },
17
27
  ...colorPropDef,
18
28
  ...radiusPropDef,
19
29
  } satisfies {
@@ -21,6 +31,13 @@ const textAreaPropDefs = {
21
31
  variant: PropDef<(typeof variants)[number]>;
22
32
  resize: PropDef<(typeof resizeValues)[number]>;
23
33
  panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;
24
- };
34
+ material: PropDef<(typeof materials)[number] | undefined>;
35
+ error: PropDef<boolean>;
36
+ errorMessage: PropDef<string | undefined>;
37
+ isInvalid: PropDef<boolean>;
38
+ required: PropDef<boolean>;
39
+ 'aria-describedby': PropDef<string | undefined>;
40
+ 'aria-labelledby': PropDef<string | undefined>;
41
+ };
25
42
 
26
43
  export { textAreaPropDefs };
@@ -18,24 +18,75 @@ interface TextAreaProps
18
18
  extends ComponentPropsWithout<'textarea', RemovedProps | 'size' | 'value'>,
19
19
  MarginProps,
20
20
  TextAreaOwnProps {}
21
+
21
22
  const TextArea = React.forwardRef<TextAreaElement, TextAreaProps>((props, forwardedRef) => {
22
- const { className, color, radius, panelBackground, style, ...textAreaProps } = extractProps(
23
- props,
24
- textAreaPropDefs,
25
- marginPropDefs,
23
+ const { className, color, radius, panelBackground, material, style, ...textAreaProps } =
24
+ extractProps(props, textAreaPropDefs, marginPropDefs);
25
+ const effectiveMaterial = material || panelBackground;
26
+
27
+ // Generate unique IDs for accessibility
28
+ const errorId = React.useId();
29
+
30
+ const { 'aria-describedby': ariaDescribedby, 'aria-labelledby': ariaLabelledby } = textAreaProps;
31
+
32
+ // Determine invalid state
33
+ const isInvalid = textAreaProps.error || textAreaProps.isInvalid;
34
+
35
+ // Build aria-describedby string
36
+ const describedBy = React.useMemo(() => {
37
+ const parts = [];
38
+ if (textAreaProps.errorMessage) parts.push(errorId);
39
+ if (ariaDescribedby) parts.push(ariaDescribedby);
40
+ return parts.length > 0 ? parts.join(' ') : undefined;
41
+ }, [textAreaProps.errorMessage, ariaDescribedby, errorId]);
42
+
43
+ // Build aria attributes
44
+ const ariaProps = React.useMemo(
45
+ () => ({
46
+ 'aria-invalid': isInvalid,
47
+ 'aria-describedby': describedBy,
48
+ 'aria-labelledby': ariaLabelledby,
49
+ }),
50
+ [isInvalid, describedBy, ariaLabelledby],
26
51
  );
52
+
53
+ // Filter out our custom props to avoid DOM warnings
54
+ const {
55
+ error,
56
+ errorMessage,
57
+ isInvalid: _isInvalid,
58
+ required,
59
+ 'aria-describedby': _ariaDescribedby,
60
+ 'aria-labelledby': _ariaLabelledby,
61
+ ...nativeTextAreaProps
62
+ } = textAreaProps;
63
+
27
64
  return (
28
65
  <div
29
66
  data-accent-color={color}
30
67
  data-radius={radius}
31
- data-panel-background={panelBackground}
32
- className={classNames('rt-TextAreaRoot', className)}
68
+ data-panel-background={effectiveMaterial}
69
+ data-material={effectiveMaterial}
70
+ className={classNames('rt-TextAreaRoot', className, {
71
+ 'rt-error': isInvalid,
72
+ })}
33
73
  style={style}
34
74
  >
35
- <textarea className="rt-reset rt-TextAreaInput" ref={forwardedRef} {...textAreaProps} />
75
+ <textarea
76
+ className="rt-reset rt-TextAreaInput"
77
+ ref={forwardedRef}
78
+ {...nativeTextAreaProps}
79
+ {...ariaProps}
80
+ />
81
+ {textAreaProps.errorMessage && (
82
+ <div id={errorId} className="rt-TextAreaErrorMessage" role="alert" aria-live="polite">
83
+ {textAreaProps.errorMessage}
84
+ </div>
85
+ )}
36
86
  </div>
37
87
  );
38
88
  });
89
+
39
90
  TextArea.displayName = 'TextArea';
40
91
 
41
92
  export { TextArea };