@kushagradhawan/kookie-ui 0.1.29 → 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 (522) hide show
  1. package/components.css +4083 -2224
  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.map +1 -1
  23. package/dist/cjs/components/accordion.js +1 -1
  24. package/dist/cjs/components/accordion.js.map +3 -3
  25. package/dist/cjs/components/accordion.props.d.ts +9 -0
  26. package/dist/cjs/components/accordion.props.d.ts.map +1 -1
  27. package/dist/cjs/components/accordion.props.js +1 -1
  28. package/dist/cjs/components/accordion.props.js.map +2 -2
  29. package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
  30. package/dist/cjs/components/alert-dialog.js +1 -1
  31. package/dist/cjs/components/alert-dialog.js.map +3 -3
  32. package/dist/cjs/components/alert-dialog.props.d.ts +69 -2
  33. package/dist/cjs/components/alert-dialog.props.d.ts.map +1 -1
  34. package/dist/cjs/components/alert-dialog.props.js +1 -1
  35. package/dist/cjs/components/alert-dialog.props.js.map +3 -3
  36. package/dist/cjs/components/avatar.d.ts.map +1 -1
  37. package/dist/cjs/components/avatar.js +1 -1
  38. package/dist/cjs/components/avatar.js.map +3 -3
  39. package/dist/cjs/components/avatar.props.d.ts +9 -1
  40. package/dist/cjs/components/avatar.props.d.ts.map +1 -1
  41. package/dist/cjs/components/avatar.props.js +1 -1
  42. package/dist/cjs/components/avatar.props.js.map +3 -3
  43. package/dist/cjs/components/badge.d.ts +8 -1
  44. package/dist/cjs/components/badge.d.ts.map +1 -1
  45. package/dist/cjs/components/badge.js +1 -1
  46. package/dist/cjs/components/badge.js.map +3 -3
  47. package/dist/cjs/components/badge.props.d.ts +14 -6
  48. package/dist/cjs/components/badge.props.d.ts.map +1 -1
  49. package/dist/cjs/components/badge.props.js +1 -1
  50. package/dist/cjs/components/badge.props.js.map +3 -3
  51. package/dist/cjs/components/blockquote.props.d.ts +1 -1
  52. package/dist/cjs/components/button.d.ts +53 -1
  53. package/dist/cjs/components/button.d.ts.map +1 -1
  54. package/dist/cjs/components/button.js +1 -1
  55. package/dist/cjs/components/button.js.map +3 -3
  56. package/dist/cjs/components/button.props.d.ts +17 -0
  57. package/dist/cjs/components/button.props.d.ts.map +1 -1
  58. package/dist/cjs/components/button.props.js.map +2 -2
  59. package/dist/cjs/components/callout.d.ts +4 -0
  60. package/dist/cjs/components/callout.d.ts.map +1 -1
  61. package/dist/cjs/components/callout.js +1 -1
  62. package/dist/cjs/components/callout.js.map +3 -3
  63. package/dist/cjs/components/callout.props.d.ts +9 -1
  64. package/dist/cjs/components/callout.props.d.ts.map +1 -1
  65. package/dist/cjs/components/callout.props.js +1 -1
  66. package/dist/cjs/components/callout.props.js.map +3 -3
  67. package/dist/cjs/components/card.d.ts.map +1 -1
  68. package/dist/cjs/components/card.js +1 -1
  69. package/dist/cjs/components/card.js.map +3 -3
  70. package/dist/cjs/components/card.props.d.ts +5 -0
  71. package/dist/cjs/components/card.props.d.ts.map +1 -1
  72. package/dist/cjs/components/card.props.js +1 -1
  73. package/dist/cjs/components/card.props.js.map +3 -3
  74. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
  75. package/dist/cjs/components/checkbox-cards.js +1 -1
  76. package/dist/cjs/components/checkbox-cards.js.map +3 -3
  77. package/dist/cjs/components/checkbox-cards.props.d.ts +2 -2
  78. package/dist/cjs/components/checkbox-cards.props.js +1 -1
  79. package/dist/cjs/components/checkbox-cards.props.js.map +2 -2
  80. package/dist/cjs/components/checkbox-group.props.d.ts +6 -1
  81. package/dist/cjs/components/checkbox-group.props.d.ts.map +1 -1
  82. package/dist/cjs/components/checkbox.d.ts.map +1 -1
  83. package/dist/cjs/components/checkbox.js +1 -1
  84. package/dist/cjs/components/checkbox.js.map +3 -3
  85. package/dist/cjs/components/code.js.map +1 -1
  86. package/dist/cjs/components/code.props.d.ts +1 -1
  87. package/dist/cjs/components/context-menu.d.ts +1 -1
  88. package/dist/cjs/components/context-menu.d.ts.map +1 -1
  89. package/dist/cjs/components/context-menu.js +1 -1
  90. package/dist/cjs/components/context-menu.js.map +3 -3
  91. package/dist/cjs/components/dialog.d.ts.map +1 -1
  92. package/dist/cjs/components/dialog.js +1 -1
  93. package/dist/cjs/components/dialog.js.map +3 -3
  94. package/dist/cjs/components/dialog.props.d.ts +5 -0
  95. package/dist/cjs/components/dialog.props.d.ts.map +1 -1
  96. package/dist/cjs/components/dialog.props.js +1 -1
  97. package/dist/cjs/components/dialog.props.js.map +3 -3
  98. package/dist/cjs/components/dropdown-menu.d.ts +1 -1
  99. package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
  100. package/dist/cjs/components/dropdown-menu.js +1 -1
  101. package/dist/cjs/components/dropdown-menu.js.map +3 -3
  102. package/dist/cjs/components/heading.props.d.ts +1 -1
  103. package/dist/cjs/components/icon-button.d.ts +79 -1
  104. package/dist/cjs/components/icon-button.d.ts.map +1 -1
  105. package/dist/cjs/components/icon-button.js +4 -1
  106. package/dist/cjs/components/icon-button.js.map +3 -3
  107. package/dist/cjs/components/image.d.ts +131 -12
  108. package/dist/cjs/components/image.d.ts.map +1 -1
  109. package/dist/cjs/components/image.js +1 -1
  110. package/dist/cjs/components/image.js.map +3 -3
  111. package/dist/cjs/components/image.props.d.ts +136 -21
  112. package/dist/cjs/components/image.props.d.ts.map +1 -1
  113. package/dist/cjs/components/image.props.js +1 -1
  114. package/dist/cjs/components/image.props.js.map +3 -3
  115. package/dist/cjs/components/link.props.d.ts +1 -1
  116. package/dist/cjs/components/progress.props.d.ts +2 -2
  117. package/dist/cjs/components/progress.props.js +1 -1
  118. package/dist/cjs/components/progress.props.js.map +2 -2
  119. package/dist/cjs/components/radio-cards.d.ts.map +1 -1
  120. package/dist/cjs/components/radio-cards.js +1 -1
  121. package/dist/cjs/components/radio-cards.js.map +3 -3
  122. package/dist/cjs/components/radio-cards.props.d.ts +2 -2
  123. package/dist/cjs/components/radio-cards.props.js +1 -1
  124. package/dist/cjs/components/radio-cards.props.js.map +2 -2
  125. package/dist/cjs/components/radio.d.ts.map +1 -1
  126. package/dist/cjs/components/radio.js +1 -1
  127. package/dist/cjs/components/radio.js.map +3 -3
  128. package/dist/cjs/components/segmented-control.props.d.ts +3 -3
  129. package/dist/cjs/components/segmented-control.props.js +1 -1
  130. package/dist/cjs/components/segmented-control.props.js.map +2 -2
  131. package/dist/cjs/components/select.d.ts.map +1 -1
  132. package/dist/cjs/components/select.js +1 -1
  133. package/dist/cjs/components/select.js.map +3 -3
  134. package/dist/cjs/components/select.props.d.ts +12 -0
  135. package/dist/cjs/components/select.props.d.ts.map +1 -1
  136. package/dist/cjs/components/select.props.js +1 -1
  137. package/dist/cjs/components/select.props.js.map +2 -2
  138. package/dist/cjs/components/sidebar.d.ts +5 -0
  139. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  140. package/dist/cjs/components/sidebar.js +1 -1
  141. package/dist/cjs/components/sidebar.js.map +3 -3
  142. package/dist/cjs/components/slider.d.ts +5 -0
  143. package/dist/cjs/components/slider.d.ts.map +1 -1
  144. package/dist/cjs/components/slider.js +1 -1
  145. package/dist/cjs/components/slider.js.map +3 -3
  146. package/dist/cjs/components/slider.props.d.ts +10 -2
  147. package/dist/cjs/components/slider.props.d.ts.map +1 -1
  148. package/dist/cjs/components/slider.props.js +1 -1
  149. package/dist/cjs/components/slider.props.js.map +2 -2
  150. package/dist/cjs/components/switch.d.ts.map +1 -1
  151. package/dist/cjs/components/switch.js +1 -1
  152. package/dist/cjs/components/switch.js.map +3 -3
  153. package/dist/cjs/components/switch.props.d.ts +17 -4
  154. package/dist/cjs/components/switch.props.d.ts.map +1 -1
  155. package/dist/cjs/components/switch.props.js +1 -1
  156. package/dist/cjs/components/switch.props.js.map +3 -3
  157. package/dist/cjs/components/tab-nav.d.ts.map +1 -1
  158. package/dist/cjs/components/tab-nav.js +1 -1
  159. package/dist/cjs/components/tab-nav.js.map +3 -3
  160. package/dist/cjs/components/tabs.d.ts.map +1 -1
  161. package/dist/cjs/components/tabs.js +1 -1
  162. package/dist/cjs/components/tabs.js.map +2 -2
  163. package/dist/cjs/components/text-area.d.ts.map +1 -1
  164. package/dist/cjs/components/text-area.js +1 -1
  165. package/dist/cjs/components/text-area.js.map +3 -3
  166. package/dist/cjs/components/text-area.props.d.ts +29 -0
  167. package/dist/cjs/components/text-area.props.d.ts.map +1 -1
  168. package/dist/cjs/components/text-area.props.js +1 -1
  169. package/dist/cjs/components/text-area.props.js.map +3 -3
  170. package/dist/cjs/components/text-field.d.ts.map +1 -1
  171. package/dist/cjs/components/text-field.js +4 -4
  172. package/dist/cjs/components/text-field.js.map +3 -3
  173. package/dist/cjs/components/text-field.props.d.ts +29 -0
  174. package/dist/cjs/components/text-field.props.d.ts.map +1 -1
  175. package/dist/cjs/components/text-field.props.js +1 -1
  176. package/dist/cjs/components/text-field.props.js.map +3 -3
  177. package/dist/cjs/components/text.props.d.ts +1 -1
  178. package/dist/cjs/components/theme.d.ts +3 -0
  179. package/dist/cjs/components/theme.d.ts.map +1 -1
  180. package/dist/cjs/components/theme.js +1 -1
  181. package/dist/cjs/components/theme.js.map +3 -3
  182. package/dist/cjs/components/theme.props.d.ts +14 -0
  183. package/dist/cjs/components/theme.props.d.ts.map +1 -1
  184. package/dist/cjs/components/theme.props.js +1 -1
  185. package/dist/cjs/components/theme.props.js.map +3 -3
  186. package/dist/cjs/components/toggle-button.d.ts +52 -0
  187. package/dist/cjs/components/toggle-button.d.ts.map +1 -1
  188. package/dist/cjs/components/toggle-button.js +1 -1
  189. package/dist/cjs/components/toggle-button.js.map +3 -3
  190. package/dist/cjs/components/toggle-icon-button.d.ts +84 -2
  191. package/dist/cjs/components/toggle-icon-button.d.ts.map +1 -1
  192. package/dist/cjs/components/toggle-icon-button.js +1 -1
  193. package/dist/cjs/components/toggle-icon-button.js.map +3 -3
  194. package/dist/cjs/hooks/index.d.ts +2 -0
  195. package/dist/cjs/hooks/index.d.ts.map +1 -0
  196. package/dist/cjs/hooks/index.js +2 -0
  197. package/dist/cjs/hooks/index.js.map +7 -0
  198. package/dist/cjs/hooks/use-live-announcer.d.ts +6 -0
  199. package/dist/cjs/hooks/use-live-announcer.d.ts.map +1 -0
  200. package/dist/cjs/hooks/use-live-announcer.js +10 -0
  201. package/dist/cjs/hooks/use-live-announcer.js.map +7 -0
  202. package/dist/cjs/index.d.ts +1 -0
  203. package/dist/cjs/index.d.ts.map +1 -1
  204. package/dist/cjs/index.js +1 -1
  205. package/dist/cjs/index.js.map +2 -2
  206. package/dist/cjs/props/weight.prop.d.ts +1 -1
  207. package/dist/cjs/props/weight.prop.js +1 -1
  208. package/dist/cjs/props/weight.prop.js.map +2 -2
  209. package/dist/esm/components/_internal/base-button.d.ts +36 -0
  210. package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
  211. package/dist/esm/components/_internal/base-button.js +1 -1
  212. package/dist/esm/components/_internal/base-button.js.map +3 -3
  213. package/dist/esm/components/_internal/base-button.props.d.ts +61 -0
  214. package/dist/esm/components/_internal/base-button.props.d.ts.map +1 -1
  215. package/dist/esm/components/_internal/base-button.props.js +1 -1
  216. package/dist/esm/components/_internal/base-button.props.js.map +3 -3
  217. package/dist/esm/components/_internal/base-checkbox.props.d.ts +6 -1
  218. package/dist/esm/components/_internal/base-checkbox.props.d.ts.map +1 -1
  219. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  220. package/dist/esm/components/_internal/base-checkbox.props.js.map +3 -3
  221. package/dist/esm/components/_internal/base-menu.props.d.ts +8 -0
  222. package/dist/esm/components/_internal/base-menu.props.d.ts.map +1 -1
  223. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  224. package/dist/esm/components/_internal/base-menu.props.js.map +3 -3
  225. package/dist/esm/components/_internal/base-radio.props.d.ts +6 -1
  226. package/dist/esm/components/_internal/base-radio.props.d.ts.map +1 -1
  227. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  228. package/dist/esm/components/_internal/base-radio.props.js.map +3 -3
  229. package/dist/esm/components/accordion.d.ts.map +1 -1
  230. package/dist/esm/components/accordion.js +1 -1
  231. package/dist/esm/components/accordion.js.map +3 -3
  232. package/dist/esm/components/accordion.props.d.ts +9 -0
  233. package/dist/esm/components/accordion.props.d.ts.map +1 -1
  234. package/dist/esm/components/accordion.props.js +1 -1
  235. package/dist/esm/components/accordion.props.js.map +2 -2
  236. package/dist/esm/components/alert-dialog.d.ts.map +1 -1
  237. package/dist/esm/components/alert-dialog.js +1 -1
  238. package/dist/esm/components/alert-dialog.js.map +3 -3
  239. package/dist/esm/components/alert-dialog.props.d.ts +69 -2
  240. package/dist/esm/components/alert-dialog.props.d.ts.map +1 -1
  241. package/dist/esm/components/alert-dialog.props.js +1 -1
  242. package/dist/esm/components/alert-dialog.props.js.map +3 -3
  243. package/dist/esm/components/avatar.d.ts.map +1 -1
  244. package/dist/esm/components/avatar.js +1 -1
  245. package/dist/esm/components/avatar.js.map +3 -3
  246. package/dist/esm/components/avatar.props.d.ts +9 -1
  247. package/dist/esm/components/avatar.props.d.ts.map +1 -1
  248. package/dist/esm/components/avatar.props.js +1 -1
  249. package/dist/esm/components/avatar.props.js.map +3 -3
  250. package/dist/esm/components/badge.d.ts +8 -1
  251. package/dist/esm/components/badge.d.ts.map +1 -1
  252. package/dist/esm/components/badge.js +1 -1
  253. package/dist/esm/components/badge.js.map +3 -3
  254. package/dist/esm/components/badge.props.d.ts +14 -6
  255. package/dist/esm/components/badge.props.d.ts.map +1 -1
  256. package/dist/esm/components/badge.props.js +1 -1
  257. package/dist/esm/components/badge.props.js.map +3 -3
  258. package/dist/esm/components/blockquote.props.d.ts +1 -1
  259. package/dist/esm/components/button.d.ts +53 -1
  260. package/dist/esm/components/button.d.ts.map +1 -1
  261. package/dist/esm/components/button.js +1 -1
  262. package/dist/esm/components/button.js.map +3 -3
  263. package/dist/esm/components/button.props.d.ts +17 -0
  264. package/dist/esm/components/button.props.d.ts.map +1 -1
  265. package/dist/esm/components/button.props.js.map +2 -2
  266. package/dist/esm/components/callout.d.ts +4 -0
  267. package/dist/esm/components/callout.d.ts.map +1 -1
  268. package/dist/esm/components/callout.js +1 -1
  269. package/dist/esm/components/callout.js.map +3 -3
  270. package/dist/esm/components/callout.props.d.ts +9 -1
  271. package/dist/esm/components/callout.props.d.ts.map +1 -1
  272. package/dist/esm/components/callout.props.js +1 -1
  273. package/dist/esm/components/callout.props.js.map +3 -3
  274. package/dist/esm/components/card.d.ts.map +1 -1
  275. package/dist/esm/components/card.js +1 -1
  276. package/dist/esm/components/card.js.map +3 -3
  277. package/dist/esm/components/card.props.d.ts +5 -0
  278. package/dist/esm/components/card.props.d.ts.map +1 -1
  279. package/dist/esm/components/card.props.js +1 -1
  280. package/dist/esm/components/card.props.js.map +3 -3
  281. package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
  282. package/dist/esm/components/checkbox-cards.js +1 -1
  283. package/dist/esm/components/checkbox-cards.js.map +3 -3
  284. package/dist/esm/components/checkbox-cards.props.d.ts +2 -2
  285. package/dist/esm/components/checkbox-cards.props.js +1 -1
  286. package/dist/esm/components/checkbox-cards.props.js.map +2 -2
  287. package/dist/esm/components/checkbox-group.props.d.ts +6 -1
  288. package/dist/esm/components/checkbox-group.props.d.ts.map +1 -1
  289. package/dist/esm/components/checkbox.d.ts.map +1 -1
  290. package/dist/esm/components/checkbox.js +1 -1
  291. package/dist/esm/components/checkbox.js.map +3 -3
  292. package/dist/esm/components/code.js.map +1 -1
  293. package/dist/esm/components/code.props.d.ts +1 -1
  294. package/dist/esm/components/context-menu.d.ts +1 -1
  295. package/dist/esm/components/context-menu.d.ts.map +1 -1
  296. package/dist/esm/components/context-menu.js +1 -1
  297. package/dist/esm/components/context-menu.js.map +3 -3
  298. package/dist/esm/components/dialog.d.ts.map +1 -1
  299. package/dist/esm/components/dialog.js +1 -1
  300. package/dist/esm/components/dialog.js.map +3 -3
  301. package/dist/esm/components/dialog.props.d.ts +5 -0
  302. package/dist/esm/components/dialog.props.d.ts.map +1 -1
  303. package/dist/esm/components/dialog.props.js +1 -1
  304. package/dist/esm/components/dialog.props.js.map +3 -3
  305. package/dist/esm/components/dropdown-menu.d.ts +1 -1
  306. package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
  307. package/dist/esm/components/dropdown-menu.js +1 -1
  308. package/dist/esm/components/dropdown-menu.js.map +3 -3
  309. package/dist/esm/components/heading.props.d.ts +1 -1
  310. package/dist/esm/components/icon-button.d.ts +79 -1
  311. package/dist/esm/components/icon-button.d.ts.map +1 -1
  312. package/dist/esm/components/icon-button.js +4 -1
  313. package/dist/esm/components/icon-button.js.map +3 -3
  314. package/dist/esm/components/image.d.ts +131 -12
  315. package/dist/esm/components/image.d.ts.map +1 -1
  316. package/dist/esm/components/image.js +1 -1
  317. package/dist/esm/components/image.js.map +3 -3
  318. package/dist/esm/components/image.props.d.ts +136 -21
  319. package/dist/esm/components/image.props.d.ts.map +1 -1
  320. package/dist/esm/components/image.props.js +1 -1
  321. package/dist/esm/components/image.props.js.map +3 -3
  322. package/dist/esm/components/link.props.d.ts +1 -1
  323. package/dist/esm/components/progress.props.d.ts +2 -2
  324. package/dist/esm/components/progress.props.js +1 -1
  325. package/dist/esm/components/progress.props.js.map +2 -2
  326. package/dist/esm/components/radio-cards.d.ts.map +1 -1
  327. package/dist/esm/components/radio-cards.js +1 -1
  328. package/dist/esm/components/radio-cards.js.map +3 -3
  329. package/dist/esm/components/radio-cards.props.d.ts +2 -2
  330. package/dist/esm/components/radio-cards.props.js +1 -1
  331. package/dist/esm/components/radio-cards.props.js.map +2 -2
  332. package/dist/esm/components/radio.d.ts.map +1 -1
  333. package/dist/esm/components/radio.js +1 -1
  334. package/dist/esm/components/radio.js.map +3 -3
  335. package/dist/esm/components/segmented-control.props.d.ts +3 -3
  336. package/dist/esm/components/segmented-control.props.js +1 -1
  337. package/dist/esm/components/segmented-control.props.js.map +2 -2
  338. package/dist/esm/components/select.d.ts.map +1 -1
  339. package/dist/esm/components/select.js +1 -1
  340. package/dist/esm/components/select.js.map +3 -3
  341. package/dist/esm/components/select.props.d.ts +12 -0
  342. package/dist/esm/components/select.props.d.ts.map +1 -1
  343. package/dist/esm/components/select.props.js +1 -1
  344. package/dist/esm/components/select.props.js.map +2 -2
  345. package/dist/esm/components/sidebar.d.ts +5 -0
  346. package/dist/esm/components/sidebar.d.ts.map +1 -1
  347. package/dist/esm/components/sidebar.js +1 -1
  348. package/dist/esm/components/sidebar.js.map +3 -3
  349. package/dist/esm/components/slider.d.ts +5 -0
  350. package/dist/esm/components/slider.d.ts.map +1 -1
  351. package/dist/esm/components/slider.js +1 -1
  352. package/dist/esm/components/slider.js.map +3 -3
  353. package/dist/esm/components/slider.props.d.ts +10 -2
  354. package/dist/esm/components/slider.props.d.ts.map +1 -1
  355. package/dist/esm/components/slider.props.js +1 -1
  356. package/dist/esm/components/slider.props.js.map +2 -2
  357. package/dist/esm/components/switch.d.ts.map +1 -1
  358. package/dist/esm/components/switch.js +1 -1
  359. package/dist/esm/components/switch.js.map +3 -3
  360. package/dist/esm/components/switch.props.d.ts +17 -4
  361. package/dist/esm/components/switch.props.d.ts.map +1 -1
  362. package/dist/esm/components/switch.props.js +1 -1
  363. package/dist/esm/components/switch.props.js.map +3 -3
  364. package/dist/esm/components/tab-nav.d.ts.map +1 -1
  365. package/dist/esm/components/tab-nav.js +1 -1
  366. package/dist/esm/components/tab-nav.js.map +3 -3
  367. package/dist/esm/components/tabs.d.ts.map +1 -1
  368. package/dist/esm/components/tabs.js +1 -1
  369. package/dist/esm/components/tabs.js.map +2 -2
  370. package/dist/esm/components/text-area.d.ts.map +1 -1
  371. package/dist/esm/components/text-area.js +1 -1
  372. package/dist/esm/components/text-area.js.map +3 -3
  373. package/dist/esm/components/text-area.props.d.ts +29 -0
  374. package/dist/esm/components/text-area.props.d.ts.map +1 -1
  375. package/dist/esm/components/text-area.props.js +1 -1
  376. package/dist/esm/components/text-area.props.js.map +3 -3
  377. package/dist/esm/components/text-field.d.ts.map +1 -1
  378. package/dist/esm/components/text-field.js +4 -4
  379. package/dist/esm/components/text-field.js.map +3 -3
  380. package/dist/esm/components/text-field.props.d.ts +29 -0
  381. package/dist/esm/components/text-field.props.d.ts.map +1 -1
  382. package/dist/esm/components/text-field.props.js +1 -1
  383. package/dist/esm/components/text-field.props.js.map +3 -3
  384. package/dist/esm/components/text.props.d.ts +1 -1
  385. package/dist/esm/components/theme.d.ts +3 -0
  386. package/dist/esm/components/theme.d.ts.map +1 -1
  387. package/dist/esm/components/theme.js +1 -1
  388. package/dist/esm/components/theme.js.map +3 -3
  389. package/dist/esm/components/theme.props.d.ts +14 -0
  390. package/dist/esm/components/theme.props.d.ts.map +1 -1
  391. package/dist/esm/components/theme.props.js +1 -1
  392. package/dist/esm/components/theme.props.js.map +3 -3
  393. package/dist/esm/components/toggle-button.d.ts +52 -0
  394. package/dist/esm/components/toggle-button.d.ts.map +1 -1
  395. package/dist/esm/components/toggle-button.js +1 -1
  396. package/dist/esm/components/toggle-button.js.map +3 -3
  397. package/dist/esm/components/toggle-icon-button.d.ts +84 -2
  398. package/dist/esm/components/toggle-icon-button.d.ts.map +1 -1
  399. package/dist/esm/components/toggle-icon-button.js +1 -1
  400. package/dist/esm/components/toggle-icon-button.js.map +3 -3
  401. package/dist/esm/hooks/index.d.ts +2 -0
  402. package/dist/esm/hooks/index.d.ts.map +1 -0
  403. package/dist/esm/hooks/index.js +2 -0
  404. package/dist/esm/hooks/index.js.map +7 -0
  405. package/dist/esm/hooks/use-live-announcer.d.ts +6 -0
  406. package/dist/esm/hooks/use-live-announcer.d.ts.map +1 -0
  407. package/dist/esm/hooks/use-live-announcer.js +10 -0
  408. package/dist/esm/hooks/use-live-announcer.js.map +7 -0
  409. package/dist/esm/index.d.ts +1 -0
  410. package/dist/esm/index.d.ts.map +1 -1
  411. package/dist/esm/index.js +1 -1
  412. package/dist/esm/index.js.map +2 -2
  413. package/dist/esm/props/weight.prop.d.ts +1 -1
  414. package/dist/esm/props/weight.prop.js +1 -1
  415. package/dist/esm/props/weight.prop.js.map +2 -2
  416. package/layout/components.css +1 -0
  417. package/layout.css +1 -0
  418. package/package.json +2 -1
  419. package/src/components/_internal/base-button.css +483 -284
  420. package/src/components/_internal/base-button.props.ts +87 -0
  421. package/src/components/_internal/base-button.tsx +127 -10
  422. package/src/components/_internal/base-card.css +866 -83
  423. package/src/components/_internal/base-checkbox.css +252 -52
  424. package/src/components/_internal/base-checkbox.props.ts +4 -1
  425. package/src/components/_internal/base-dialog.css +39 -8
  426. package/src/components/_internal/base-menu.css +55 -32
  427. package/src/components/_internal/base-menu.props.ts +10 -0
  428. package/src/components/_internal/base-radio.css +222 -52
  429. package/src/components/_internal/base-radio.props.ts +4 -1
  430. package/src/components/_internal/base-tab-list.css +16 -0
  431. package/src/components/accordion.css +465 -62
  432. package/src/components/accordion.props.tsx +6 -0
  433. package/src/components/accordion.tsx +54 -7
  434. package/src/components/alert-dialog.props.tsx +22 -2
  435. package/src/components/alert-dialog.tsx +94 -3
  436. package/src/components/avatar.css +294 -152
  437. package/src/components/avatar.props.tsx +7 -1
  438. package/src/components/avatar.tsx +12 -2
  439. package/src/components/badge.css +160 -138
  440. package/src/components/badge.props.tsx +10 -3
  441. package/src/components/badge.tsx +71 -9
  442. package/src/components/button.css +88 -0
  443. package/src/components/button.props.tsx +17 -0
  444. package/src/components/button.tsx +107 -5
  445. package/src/components/callout.css +122 -35
  446. package/src/components/callout.props.tsx +7 -1
  447. package/src/components/callout.tsx +32 -9
  448. package/src/components/card.css +0 -597
  449. package/src/components/card.props.tsx +3 -0
  450. package/src/components/card.tsx +4 -2
  451. package/src/components/checkbox-cards.css +27 -104
  452. package/src/components/checkbox-cards.props.tsx +2 -2
  453. package/src/components/checkbox-cards.tsx +21 -3
  454. package/src/components/checkbox.tsx +2 -0
  455. package/src/components/code.css +1 -1
  456. package/src/components/code.tsx +1 -1
  457. package/src/components/container.css +1 -0
  458. package/src/components/context-menu.tsx +54 -12
  459. package/src/components/dialog.props.tsx +3 -0
  460. package/src/components/dialog.tsx +93 -3
  461. package/src/components/dropdown-menu.tsx +49 -12
  462. package/src/components/icon-button.css +73 -4
  463. package/src/components/icon-button.tsx +125 -19
  464. package/src/components/image.css +160 -91
  465. package/src/components/image.props.ts +152 -15
  466. package/src/components/image.tsx +290 -247
  467. package/src/components/kbd.css +23 -44
  468. package/src/components/progress.css +130 -149
  469. package/src/components/progress.props.tsx +2 -2
  470. package/src/components/radio-cards.css +23 -113
  471. package/src/components/radio-cards.props.tsx +2 -2
  472. package/src/components/radio-cards.tsx +45 -18
  473. package/src/components/radio.tsx +4 -3
  474. package/src/components/scroll-area.css +1 -1
  475. package/src/components/segmented-control.css +83 -64
  476. package/src/components/segmented-control.props.tsx +3 -3
  477. package/src/components/select.css +502 -224
  478. package/src/components/select.props.tsx +8 -0
  479. package/src/components/select.tsx +45 -2
  480. package/src/components/sidebar.css +17 -6
  481. package/src/components/sidebar.tsx +61 -5
  482. package/src/components/slider.css +228 -88
  483. package/src/components/slider.props.tsx +6 -2
  484. package/src/components/slider.tsx +201 -24
  485. package/src/components/spinner.css +12 -0
  486. package/src/components/switch.css +135 -216
  487. package/src/components/switch.props.tsx +16 -4
  488. package/src/components/switch.tsx +5 -3
  489. package/src/components/tab-nav.tsx +6 -3
  490. package/src/components/tabs.tsx +2 -0
  491. package/src/components/text-area.css +222 -140
  492. package/src/components/text-area.props.tsx +18 -1
  493. package/src/components/text-area.tsx +58 -7
  494. package/src/components/text-field.css +214 -131
  495. package/src/components/text-field.props.tsx +17 -0
  496. package/src/components/text-field.tsx +79 -28
  497. package/src/components/theme.props.tsx +12 -0
  498. package/src/components/theme.tsx +31 -1
  499. package/src/components/toggle-button.tsx +102 -3
  500. package/src/components/toggle-icon-button.tsx +150 -7
  501. package/src/components/tooltip.css +3 -3
  502. package/src/hooks/index.ts +1 -0
  503. package/src/hooks/use-live-announcer.ts +52 -0
  504. package/src/index.ts +1 -0
  505. package/src/props/weight.prop.ts +1 -1
  506. package/src/styles/fonts.css +27 -13
  507. package/src/styles/index.css +1 -1
  508. package/src/styles/tokens/base.css +2 -0
  509. package/src/styles/tokens/blur.css +32 -0
  510. package/src/styles/tokens/color.css +9 -9
  511. package/src/styles/tokens/constants.css +88 -140
  512. package/src/styles/tokens/index.css +2 -0
  513. package/src/styles/tokens/opacity.css +32 -0
  514. package/src/styles/tokens/radius.css +6 -10
  515. package/src/styles/tokens/shadow.css +25 -25
  516. package/src/styles/tokens/transition.css +49 -13
  517. package/src/styles/tokens/typography.css +7 -3
  518. package/src/styles/utilities/font-weight.css +16 -0
  519. package/styles.css +10689 -8708
  520. package/tokens/base.css +127 -49
  521. package/tokens.css +158 -114
  522. package/utilities.css +72 -0
@@ -1,7 +1,29 @@
1
+ /**
2
+ * Button Component Styles
3
+ *
4
+ * This file contains the core styling for the Button component, including
5
+ * size variants, icon handling, and responsive design patterns. The styles
6
+ * are built on top of the base button styles imported from _internal.
7
+ *
8
+ * Key features:
9
+ * - Responsive sizing with mobile-first approach
10
+ * - Automatic icon sizing based on button size
11
+ * - Ghost variant with specialized padding
12
+ * - Consistent typography and spacing
13
+ */
14
+
1
15
  @import './_internal/base-button.css';
2
16
 
17
+ /*
18
+ * Button-specific styles that extend the base button
19
+ * These styles handle icon opacity and specialized behaviors
20
+ */
3
21
  .rt-Button {
4
22
  &:where(:not(.rt-variant-ghost)) {
23
+ /*
24
+ * Reduce icon opacity slightly for better visual hierarchy
25
+ * This creates a subtle distinction between icons and text
26
+ */
5
27
  /* stylelint-disable-next-line selector-max-type */
6
28
  & :where(svg) {
7
29
  opacity: 0.9;
@@ -13,8 +35,18 @@
13
35
  * *
14
36
  * SIZES *
15
37
  * *
38
+ * Button sizes are designed for different interface densities and contexts:
39
+ * - Size 1 (24px): Compact for toolbars and dense interfaces
40
+ * - Size 2 (32px): Standard for most interface contexts
41
+ * - Size 3 (40px): Large for important actions and mobile touch targets
42
+ * - Size 4 (48px): Extra large for hero sections and maximum impact
43
+ * *
16
44
  ***************************************************************************************************/
17
45
 
46
+ /*
47
+ * Ghost variant has specialized padding that differs from other variants
48
+ * This creates a more subtle, text-like appearance
49
+ */
18
50
  .rt-Button {
19
51
  &:where(.rt-variant-ghost) {
20
52
  padding: var(--button-ghost-padding-y) var(--button-ghost-padding-x);
@@ -23,88 +55,132 @@
23
55
 
24
56
  @breakpoints {
25
57
  .rt-Button {
58
+ /*
59
+ * Size 1: Compact (24px height)
60
+ * Designed for toolbars, dense interfaces, and space-constrained contexts
61
+ */
26
62
  &:where(.rt-r-size-1) {
27
63
  gap: var(--component-gap-1);
28
64
  font-size: var(--font-size-1);
29
65
  line-height: var(--line-height-1);
30
66
  letter-spacing: var(--letter-spacing-1);
31
67
 
68
+ /*
69
+ * Icon sizing for size 1
70
+ * Icons are automatically sized to match the button's scale
71
+ */
32
72
  /* stylelint-disable-next-line selector-max-type */
33
73
  & :where(svg) {
34
74
  width: var(--content-icon-size-1);
35
75
  height: var(--content-icon-size-1);
36
76
  }
37
77
 
78
+ /*
79
+ * Standard padding for non-ghost variants
80
+ * Provides adequate touch targets while maintaining compact appearance
81
+ */
38
82
  &:where(:not(.rt-variant-ghost)) {
39
83
  padding-left: var(--space-2);
40
84
  padding-right: var(--space-2);
41
85
  }
86
+
87
+ /*
88
+ * Ghost variant padding for size 1
89
+ * Reduced padding creates seamless text integration
90
+ */
42
91
  &:where(.rt-variant-ghost) {
43
92
  gap: var(--component-gap-ghost-1);
44
93
  --button-ghost-padding-x: var(--space-2);
45
94
  --button-ghost-padding-y: var(--space-1);
46
95
  }
47
96
  }
97
+
98
+ /*
99
+ * Size 2: Standard (32px height)
100
+ * Default size for most interface contexts and general use
101
+ */
48
102
  &:where(.rt-r-size-2) {
49
103
  gap: var(--component-gap-2);
50
104
  font-size: var(--font-size-2);
51
105
  line-height: var(--line-height-2);
52
106
  letter-spacing: var(--letter-spacing-2);
53
107
 
108
+ /* Icon sizing for size 2 */
54
109
  /* stylelint-disable-next-line selector-max-type */
55
110
  & :where(svg) {
56
111
  width: var(--content-icon-size-2);
57
112
  height: var(--content-icon-size-2);
58
113
  }
59
114
 
115
+ /* Standard padding for non-ghost variants */
60
116
  &:where(:not(.rt-variant-ghost)) {
61
117
  padding-left: var(--space-3);
62
118
  padding-right: var(--space-3);
63
119
  }
120
+
121
+ /* Ghost variant padding for size 2 */
64
122
  &:where(.rt-variant-ghost) {
65
123
  gap: var(--component-gap-ghost-2);
66
124
  --button-ghost-padding-x: var(--space-2);
67
125
  --button-ghost-padding-y: var(--space-1);
68
126
  }
69
127
  }
128
+
129
+ /*
130
+ * Size 3: Large (40px height)
131
+ * Recommended for important actions and mobile touch targets
132
+ */
70
133
  &:where(.rt-r-size-3) {
71
134
  gap: var(--component-gap-3);
72
135
  font-size: var(--font-size-3);
73
136
  line-height: var(--line-height-3);
74
137
  letter-spacing: var(--letter-spacing-3);
75
138
 
139
+ /* Icon sizing for size 3 */
76
140
  /* stylelint-disable-next-line selector-max-type */
77
141
  & :where(svg) {
78
142
  width: var(--content-icon-size-3);
79
143
  height: var(--content-icon-size-3);
80
144
  }
81
145
 
146
+ /* Standard padding for non-ghost variants */
82
147
  &:where(:not(.rt-variant-ghost)) {
83
148
  padding-left: var(--space-4);
84
149
  padding-right: var(--space-4);
85
150
  }
151
+
152
+ /* Ghost variant padding for size 3 */
86
153
  &:where(.rt-variant-ghost) {
87
154
  gap: var(--component-gap-ghost-3);
88
155
  --button-ghost-padding-x: var(--space-3);
89
156
  --button-ghost-padding-y: calc(var(--space-1) * 1.5);
90
157
  }
91
158
  }
159
+
160
+ /*
161
+ * Size 4: Extra Large (48px height)
162
+ * Designed for hero sections and maximum visual impact
163
+ */
92
164
  &:where(.rt-r-size-4) {
93
165
  gap: var(--component-gap-4);
94
166
  font-size: var(--font-size-4);
95
167
  line-height: var(--line-height-4);
96
168
  letter-spacing: var(--letter-spacing-4);
97
169
 
170
+ /* Icon sizing for size 4 */
98
171
  /* stylelint-disable-next-line selector-max-type */
99
172
  & :where(svg) {
100
173
  width: var(--content-icon-size-4);
101
174
  height: var(--content-icon-size-4);
102
175
  }
103
176
 
177
+ /* Standard padding for non-ghost variants */
104
178
  &:where(:not(.rt-variant-ghost)) {
105
179
  padding-left: var(--space-5);
106
180
  padding-right: var(--space-5);
107
181
  }
182
+
183
+ /* Ghost variant padding for size 4 */
108
184
  &:where(.rt-variant-ghost) {
109
185
  gap: var(--component-gap-ghost-4);
110
186
  --button-ghost-padding-x: var(--space-4);
@@ -118,8 +194,20 @@
118
194
  * *
119
195
  * VARIANTS *
120
196
  * *
197
+ * Button variants provide different visual contexts and hierarchies:
198
+ * - classic: Premium, sophisticated appearance
199
+ * - solid: Primary actions that should be noticed first
200
+ * - soft: Content-heavy interfaces, natural integration
201
+ * - surface: Elevated appearance with subtle depth
202
+ * - outline: Secondary actions that support primary actions
203
+ * - ghost: Utility functions that don't compete for attention
204
+ * *
121
205
  ***************************************************************************************************/
122
206
 
207
+ /*
208
+ * Typography styling for all button variants
209
+ * Ensures consistent font weight across all button types
210
+ */
123
211
  .rt-Button {
124
212
  font-weight: var(--font-weight-medium);
125
213
  }
@@ -1 +1,18 @@
1
+ /**
2
+ * Button prop definitions exported for external use
3
+ *
4
+ * This file re-exports the base button prop definitions to provide
5
+ * a clean API for the Button component. The base button props are
6
+ * defined in the _internal directory and used by all button variants
7
+ * to ensure consistency across the design system.
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * import { buttonPropDefs } from '@kushagradhawan/kookie-ui';
12
+ *
13
+ * // Access button prop definitions for type checking or validation
14
+ * type ButtonSize = typeof buttonPropDefs.size.values[number];
15
+ * type ButtonVariant = typeof buttonPropDefs.variant.values[number];
16
+ * ```
17
+ */
1
18
  export { baseButtonPropDefs as buttonPropDefs } from './_internal/base-button.props.js';
@@ -2,25 +2,127 @@ import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
 
4
4
  import { BaseButton } from './_internal/base-button.js';
5
+ import { Tooltip } from './tooltip.js';
5
6
  import type { BaseButtonProps } from './_internal/base-button.js';
6
7
 
7
8
  type ButtonElement = React.ElementRef<typeof BaseButton>;
8
9
 
9
- // Polymorphic Button props
10
- type ButtonOwnProps = Omit<BaseButtonProps, 'as'>;
10
+ /**
11
+ * Tooltip configuration props that can be passed to Button
12
+ * These props are forwarded to the underlying Tooltip component
13
+ */
14
+ interface ButtonTooltipProps {
15
+ /** Content to display in the tooltip on hover/focus */
16
+ tooltip?: React.ReactNode;
17
+ /** Side of the button where the tooltip should appear */
18
+ tooltipSide?: 'top' | 'right' | 'bottom' | 'left';
19
+ /** Alignment of the tooltip relative to the button */
20
+ tooltipAlign?: 'start' | 'center' | 'end';
21
+ /** Delay before showing the tooltip (in milliseconds) */
22
+ tooltipDelayDuration?: number;
23
+ /** Whether to disable hoverable content behavior */
24
+ tooltipDisableHoverableContent?: boolean;
25
+ }
11
26
 
27
+ /**
28
+ * Core Button props excluding the 'as' prop for polymorphic behavior
29
+ * Combines BaseButton props with tooltip functionality
30
+ */
31
+ type ButtonOwnProps = Omit<BaseButtonProps, 'as'> & ButtonTooltipProps;
32
+
33
+ /**
34
+ * Polymorphic Button props that support rendering as different HTML elements
35
+ * @template C - The element type to render as (defaults to 'button')
36
+ */
12
37
  type ButtonProps<C extends React.ElementType = 'button'> = ButtonOwnProps & {
38
+ /** Element type to render as (e.g., 'a', 'span', etc.) */
13
39
  as?: C;
14
40
  } & Omit<React.ComponentPropsWithoutRef<C>, keyof ButtonOwnProps>;
15
41
 
42
+ /**
43
+ * Button component type that supports polymorphic rendering
44
+ * @template C - The element type to render as
45
+ */
16
46
  type ButtonComponent = <C extends React.ElementType = 'button'>(
17
47
  props: ButtonProps<C> & { ref?: React.ForwardedRef<ButtonElement> },
18
48
  ) => React.ReactElement | null;
19
49
 
50
+ /**
51
+ * Button component for triggering actions throughout your interface
52
+ *
53
+ * The Button component is the primary interactive element in the Kookie User Interface.
54
+ * It provides six visual variants, four sizes, comprehensive color options, and built-in
55
+ * tooltip support. The component automatically handles icon sizing, supports responsive
56
+ * layouts, and provides accessibility compliance out of the box.
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * // Basic button
61
+ * <Button>Click me</Button>
62
+ *
63
+ * // Button with variant and size
64
+ * <Button variant="solid" size="3">Primary Action</Button>
65
+ *
66
+ * // Button with tooltip
67
+ * <Button tooltip="Save your progress">Save</Button>
68
+ *
69
+ * // Polymorphic button as link
70
+ * <Button as="a" href="/dashboard">Go to Dashboard</Button>
71
+ * ```
72
+ */
20
73
  const Button = React.forwardRef(
21
- ({ className, ...props }: ButtonProps, forwardedRef: React.ForwardedRef<ButtonElement>) => (
22
- <BaseButton {...props} ref={forwardedRef} className={classNames('rt-Button', className)} />
23
- ),
74
+ (
75
+ {
76
+ className,
77
+ tooltip,
78
+ tooltipSide = 'top',
79
+ tooltipAlign = 'center',
80
+ tooltipDelayDuration,
81
+ tooltipDisableHoverableContent,
82
+ ...props
83
+ }: ButtonProps,
84
+ forwardedRef: React.ForwardedRef<ButtonElement>,
85
+ ) => {
86
+ // Generate unique ID for tooltip accessibility
87
+ const tooltipId = React.useId();
88
+ const hasTooltip = Boolean(tooltip);
89
+
90
+ // Prepare accessibility props for tooltip integration
91
+ const tooltipAccessibilityProps = React.useMemo(
92
+ () => (hasTooltip ? { 'aria-describedby': tooltipId } : {}),
93
+ [hasTooltip, tooltipId],
94
+ );
95
+
96
+ // Create the base button element with tooltip accessibility props
97
+ const button = (
98
+ <BaseButton
99
+ {...props}
100
+ {...tooltipAccessibilityProps}
101
+ ref={forwardedRef}
102
+ className={classNames('rt-Button', className)}
103
+ />
104
+ );
105
+
106
+ // If no tooltip is provided, return the button as-is for better performance
107
+ if (!tooltip) {
108
+ return button;
109
+ }
110
+
111
+ // Wrap with Tooltip when tooltip content is provided
112
+ // This creates a compound component that handles both button and tooltip functionality
113
+ return (
114
+ <Tooltip
115
+ content={tooltip}
116
+ side={tooltipSide}
117
+ align={tooltipAlign}
118
+ delayDuration={tooltipDelayDuration}
119
+ disableHoverableContent={tooltipDisableHoverableContent}
120
+ id={tooltipId}
121
+ >
122
+ {button}
123
+ </Tooltip>
124
+ );
125
+ },
24
126
  ) as ButtonComponent & { displayName?: string };
25
127
 
26
128
  Button.displayName = 'Button';
@@ -7,9 +7,45 @@
7
7
  color: var(--accent-a11);
8
8
  transition: var(--transition-card);
9
9
 
10
+ /* Theme-level translucent override */
11
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
12
+ backdrop-filter: var(--backdrop-filter-components);
13
+ --backdrop-filter-components: blur(var(--backdrop-blur-components));
14
+ }
15
+
16
+ /* Prevent backdrop-filter stacking with parents */
17
+ isolation: isolate;
18
+
19
+ /* Component-level overrides */
20
+ &:where([data-panel-background='solid'], [data-material='solid']) {
21
+ backdrop-filter: none;
22
+ --backdrop-filter-components: none;
23
+ }
24
+
25
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
26
+ backdrop-filter: var(--backdrop-filter-components);
27
+ --backdrop-filter-components: blur(var(--backdrop-blur-components));
28
+ }
29
+
10
30
  &:where(.rt-high-contrast) {
11
31
  color: var(--accent-12);
12
32
  }
33
+
34
+ /* Focus styles for accessibility */
35
+ &:where(:focus-visible) {
36
+ outline: 2px solid var(--accent-8);
37
+ outline-offset: 2px;
38
+ }
39
+
40
+ /* Reduced motion support */
41
+ @media (prefers-reduced-motion: reduce) {
42
+ transition: none;
43
+ }
44
+
45
+ /* Forced colors support */
46
+ @media (forced-colors: active) {
47
+ border: 1px solid CanvasText;
48
+ }
13
49
  }
14
50
 
15
51
  .rt-CalloutIcon {
@@ -75,56 +111,56 @@
75
111
  /* soft */
76
112
 
77
113
  .rt-CalloutRoot:where(.rt-variant-soft) {
78
- /* Base state: solid colors for solid panels */
79
- background-color: var(--accent-3);
114
+ /* Base state: solid color for solid panels */
115
+ background-color: var(--accent-2);
116
+ color: var(--accent-a11);
80
117
 
81
118
  /* Theme-level translucent override */
82
- :where([data-panel-background='translucent']) & {
83
- background-color: var(--accent-a3);
84
- backdrop-filter: var(--backdrop-filter-panel);
119
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
120
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
85
121
  }
86
122
 
87
123
  /* Component-level overrides (higher specificity) */
88
- &:where([data-panel-background='solid']) {
89
- background-color: var(--accent-3);
90
- backdrop-filter: none;
91
- --backdrop-filter-panel: none;
124
+ &:where([data-panel-background='solid'], [data-material='solid']) {
125
+ background-color: var(--accent-2);
126
+ }
127
+
128
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
129
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
92
130
  }
93
131
 
94
- &:where([data-panel-background='translucent']) {
95
- background-color: var(--accent-a3);
96
- backdrop-filter: var(--backdrop-filter-panel);
97
- --backdrop-filter-panel: blur(var(--backdrop-blur-panel));
132
+ &:where(.rt-high-contrast) {
133
+ color: var(--accent-12);
98
134
  }
99
135
  }
100
136
 
101
137
  /* surface */
102
138
 
103
139
  .rt-CalloutRoot:where(.rt-variant-surface) {
104
- /* Base state: solid colors for solid panels */
140
+ /* Base state: solid accent for solid panels */
105
141
  background-color: var(--accent-2);
106
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-6);
142
+ box-shadow: inset 0 0 0 1px var(--accent-6);
143
+ color: var(--accent-a11);
107
144
 
108
145
  /* Theme-level translucent override */
109
- :where([data-panel-background='translucent']) & {
110
- background-color: var(--accent-a2);
111
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a6);
112
- backdrop-filter: var(--backdrop-filter-panel);
146
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
147
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
148
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
113
149
  }
114
150
 
115
151
  /* Component-level overrides (higher specificity) */
116
- &:where([data-panel-background='solid']) {
152
+ &:where([data-panel-background='solid'], [data-material='solid']) {
117
153
  background-color: var(--accent-2);
118
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-6);
119
- backdrop-filter: none;
120
- --backdrop-filter-panel: none;
154
+ box-shadow: inset 0 0 0 1px var(--accent-6);
121
155
  }
122
156
 
123
- &:where([data-panel-background='translucent']) {
124
- background-color: var(--accent-a2);
125
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a6);
126
- backdrop-filter: var(--backdrop-filter-panel);
127
- --backdrop-filter-panel: blur(var(--backdrop-blur-panel));
157
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
158
+ background-color: color-mix(in srgb, var(--accent-a2), var(--accent-2) 60%);
159
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
160
+ }
161
+
162
+ &:where(.rt-high-contrast) {
163
+ color: var(--accent-12);
128
164
  }
129
165
  }
130
166
 
@@ -132,19 +168,70 @@
132
168
 
133
169
  .rt-CalloutRoot:where(.rt-variant-outline) {
134
170
  /* Base state: solid colors for solid panels */
135
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-7);
171
+ box-shadow: inset 0 0 0 1px var(--accent-6);
172
+ color: var(--accent-11);
136
173
 
137
174
  /* Theme-level translucent override */
138
- :where([data-panel-background='translucent']) & {
139
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a7);
175
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
176
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
177
+ color: var(--accent-a11);
140
178
  }
141
179
 
142
180
  /* Component-level overrides (higher specificity) */
143
- &:where([data-panel-background='solid']) {
144
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-7);
181
+ &:where([data-panel-background='solid'], [data-material='solid']) {
182
+ box-shadow: inset 0 0 0 1px var(--accent-6);
183
+ color: var(--accent-11);
145
184
  }
146
185
 
147
- &:where([data-panel-background='translucent']) {
148
- box-shadow: inset 0 0 0 var(--border-width-standard) var(--accent-a7);
186
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
187
+ box-shadow: inset 0 0 0 1px var(--accent-a6);
188
+ color: var(--accent-a11);
189
+ }
190
+
191
+ &:where(.rt-high-contrast) {
192
+ color: var(--accent-12);
149
193
  }
150
194
  }
195
+
196
+ /* classic */
197
+
198
+ .rt-CalloutRoot:where(.rt-variant-classic) {
199
+ /* Base state: solid surface for solid panels */
200
+ background-color: var(--color-surface-solid);
201
+ box-shadow: var(--shadow-2);
202
+ color: var(--accent-a11);
203
+ transition: var(--transition-text-field);
204
+
205
+ /* Theme-level translucent override */
206
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
207
+ background-color: var(--color-surface-translucent);
208
+ }
209
+
210
+ /* Component-level overrides (higher specificity) */
211
+ &:where([data-panel-background='solid'], [data-material='solid']) {
212
+ background-color: var(--color-surface-solid);
213
+ }
214
+
215
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
216
+ background-color: var(--color-surface-translucent);
217
+ }
218
+
219
+ &:where(.rt-high-contrast) {
220
+ color: var(--accent-12);
221
+ background-color: var(--color-surface-solid);
222
+
223
+ /* Theme-level translucent override for high contrast */
224
+ :where([data-panel-background='translucent'], [data-material='translucent']) & {
225
+ background-color: var(--color-surface-translucent);
226
+ }
227
+
228
+ /* Component-level overrides for high contrast */
229
+ &:where([data-panel-background='solid'], [data-material='solid']) {
230
+ background-color: var(--color-surface-solid);
231
+ }
232
+
233
+ &:where([data-panel-background='translucent'], [data-material='translucent']) {
234
+ background-color: var(--color-surface-translucent);
235
+ }
236
+ }
237
+ }
@@ -5,8 +5,9 @@ import { highContrastPropDef } from '../props/high-contrast.prop.js';
5
5
  import type { PropDef } from '../props/prop-def.js';
6
6
 
7
7
  const sizes = ['1', '2', '3'] as const;
8
- const variants = ['soft', 'surface', 'outline'] as const;
8
+ const variants = ['soft', 'surface', 'outline', 'classic'] as const;
9
9
  const panelBackgrounds = ['solid', 'translucent'] as const;
10
+ const materials = ['solid', 'translucent'] as const;
10
11
 
11
12
  const calloutRootPropDefs = {
12
13
  ...asChildPropDef,
@@ -14,10 +15,15 @@ const calloutRootPropDefs = {
14
15
  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },
15
16
  ...accentColorPropDef,
16
17
  ...highContrastPropDef,
18
+ material: { type: 'enum', values: materials, default: undefined },
19
+ /**
20
+ * @deprecated Use `material` prop instead. This prop will be removed in a future version.
21
+ */
17
22
  panelBackground: { type: 'enum', values: panelBackgrounds, default: undefined },
18
23
  } satisfies {
19
24
  size: PropDef<(typeof sizes)[number]>;
20
25
  variant: PropDef<(typeof variants)[number]>;
26
+ material: PropDef<(typeof materials)[number] | undefined>;
21
27
  panelBackground: PropDef<(typeof panelBackgrounds)[number] | undefined>;
22
28
  };
23
29
 
@@ -20,32 +20,55 @@ import type { GetPropDefTypes } from '../props/prop-def.js';
20
20
 
21
21
  type CalloutRootOwnProps = GetPropDefTypes<typeof calloutRootPropDefs>;
22
22
 
23
- type CalloutContextValue = { size?: CalloutRootOwnProps['size'] };
23
+ type CalloutContextValue = {
24
+ size?: CalloutRootOwnProps['size'];
25
+ variant?: CalloutRootOwnProps['variant'];
26
+ color?: CalloutRootOwnProps['color'];
27
+ };
24
28
  const CalloutContext = React.createContext<CalloutContextValue>({});
25
29
 
26
30
  type CalloutRootElement = React.ElementRef<'div'>;
27
31
  interface CalloutRootProps
28
32
  extends ComponentPropsWithout<'div', RemovedProps>,
29
33
  MarginProps,
30
- CalloutRootOwnProps {}
34
+ CalloutRootOwnProps {
35
+ /** Controls the ARIA live region behavior for screen readers */
36
+ live?: 'off' | 'polite' | 'assertive';
37
+ /** Semantic role for the callout */
38
+ role?: 'alert' | 'status' | 'note';
39
+ }
31
40
  const CalloutRoot = React.forwardRef<CalloutRootElement, CalloutRootProps>(
32
41
  (props, forwardedRef) => {
33
- const { size = calloutRootPropDefs.size.default } = props;
34
- const { asChild, children, className, color, panelBackground, ...rootProps } = extractProps(
35
- props,
36
- calloutRootPropDefs,
37
- marginPropDefs,
38
- );
42
+ const {
43
+ size = calloutRootPropDefs.size.default,
44
+ live = 'polite',
45
+ role = 'status',
46
+ variant,
47
+ } = props;
48
+ const { asChild, children, className, color, panelBackground, material, ...rootProps } =
49
+ extractProps(props, calloutRootPropDefs, marginPropDefs);
39
50
  const Comp = asChild ? Slot.Root : 'div';
51
+
52
+ // Determine appropriate ARIA attributes based on role and live
53
+ const ariaProps = {
54
+ role,
55
+ 'aria-live': live,
56
+ 'aria-atomic': true,
57
+ };
58
+
40
59
  return (
41
60
  <Comp
42
61
  data-accent-color={color}
43
62
  data-panel-background={panelBackground}
63
+ data-material={material}
44
64
  {...rootProps}
65
+ {...ariaProps}
45
66
  className={classNames('rt-CalloutRoot', className)}
46
67
  ref={forwardedRef}
47
68
  >
48
- <CalloutContext.Provider value={React.useMemo(() => ({ size }), [size])}>
69
+ <CalloutContext.Provider
70
+ value={React.useMemo(() => ({ size, variant, color }), [size, variant, color])}
71
+ >
49
72
  {children}
50
73
  </CalloutContext.Provider>
51
74
  </Comp>