@jfrader/ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/README.md +18 -1
  2. package/dist/accordion-D6myONB9.js +206 -0
  3. package/dist/accordion.js +1 -1
  4. package/dist/activity-rings-Uszvwqdl.js +528 -0
  5. package/dist/activity-rings.js +2 -0
  6. package/dist/{alert-DS_einpy.js → alert-Bhj-qSMs.js} +15 -14
  7. package/dist/alert.js +1 -1
  8. package/dist/{announcement-bar-B58xempt.js → announcement-bar-B5J33QUh.js} +132 -131
  9. package/dist/announcement-bar.js +1 -1
  10. package/dist/avatar-B6idYC59.js +146 -0
  11. package/dist/{avatar-group-DOQQuV51.js → avatar-group-DvP8mAE-.js} +10 -9
  12. package/dist/avatar-group.js +1 -1
  13. package/dist/avatar.js +1 -1
  14. package/dist/badge-CfhTcA-Z.js +120 -0
  15. package/dist/badge.js +1 -1
  16. package/dist/billing-toggle-CgC7yxxo.js +349 -0
  17. package/dist/billing-toggle.js +2 -0
  18. package/dist/{bottom-sheet-DPJBFkie.js → bottom-sheet-BFQKO0Wo.js} +287 -268
  19. package/dist/bottom-sheet.js +1 -1
  20. package/dist/{breadcrumbs-Cfw_hgt2.js → breadcrumbs-CG3akw-b.js} +28 -20
  21. package/dist/breadcrumbs.js +1 -1
  22. package/dist/{button-C92uYFJW.js → button-C6OV0C7J.js} +21 -20
  23. package/dist/button-group-B9wP2ddS.js +611 -0
  24. package/dist/button-group.js +2 -0
  25. package/dist/button.js +1 -1
  26. package/dist/calendar-Bg6D2sul.js +377 -0
  27. package/dist/calendar.js +1 -1
  28. package/dist/calendar.utils-azmB4Ej7.js +79 -0
  29. package/dist/card-C008OQCp.js +164 -0
  30. package/dist/card.js +1 -1
  31. package/dist/carousel-lTH4Foke.js +475 -0
  32. package/dist/carousel.js +1 -1
  33. package/dist/chat-thread-DVa17BRC.js +864 -0
  34. package/dist/chat-thread.js +2 -0
  35. package/dist/{checkbox-cFquiSdy.js → checkbox-CClE61GV.js} +23 -21
  36. package/dist/checkbox.js +1 -1
  37. package/dist/{chip-group-DTQd_M-G.js → chip-group-BZUX9KPF.js} +19 -17
  38. package/dist/chip-group.js +1 -1
  39. package/dist/{choice-control-5kJkLXgv.js → choice-control-BsWOZPc9.js} +1 -1
  40. package/dist/{code-block-ahnRi-g8.js → code-block-CYP89_6h.js} +99 -97
  41. package/dist/code-block.js +1 -1
  42. package/dist/{combobox-Bhzvu9ma.js → combobox-D2Oc-co7.js} +131 -125
  43. package/dist/combobox.js +1 -1
  44. package/dist/command-palette-BrT1n9bb.js +394 -0
  45. package/dist/command-palette.js +1 -1
  46. package/dist/comment-thread-BnUHxviq.js +772 -0
  47. package/dist/comment-thread.js +2 -0
  48. package/dist/{container-BOaSptJa.js → container-BxtwJSSD.js} +3 -2
  49. package/dist/container.js +1 -1
  50. package/dist/context-menu-I4i0LRpm.js +371 -0
  51. package/dist/context-menu.js +2 -0
  52. package/dist/{copy-button-ByiA6D3R.js → copy-button-C0p_qrgf.js} +4 -4
  53. package/dist/copy-button.js +1 -1
  54. package/dist/{countdown-Dp_TD1VP.js → countdown-EcpV6rXy.js} +18 -17
  55. package/dist/countdown.js +1 -1
  56. package/dist/css-BYJhdGh-.js +2 -0
  57. package/dist/{date-picker-5zKSSuFF.js → date-picker-D-bn-iHs.js} +15 -14
  58. package/dist/date-picker.js +1 -1
  59. package/dist/date-range-picker-rXcZsI1Y.js +589 -0
  60. package/dist/date-range-picker.js +1 -1
  61. package/dist/dialog-CR1xdkrC.js +222 -0
  62. package/dist/dialog.js +1 -1
  63. package/dist/{divider-DYoJf0I_.js → divider-zOJzkcHh.js} +23 -21
  64. package/dist/divider.js +1 -1
  65. package/dist/drawer-CceaEhCr.js +590 -0
  66. package/dist/drawer.js +1 -1
  67. package/dist/{empty-state-CDgrjPPf.js → empty-state-DO0ApylK.js} +2 -1
  68. package/dist/empty-state.js +1 -1
  69. package/dist/{expandable-card-C-qJcZ14.js → expandable-card-W97vjix9.js} +59 -51
  70. package/dist/expandable-card.js +1 -1
  71. package/dist/expanding-search-Bb2_YfNx.js +239 -0
  72. package/dist/expanding-search.js +2 -0
  73. package/dist/{field-anatomy-COVdNpf5.js → field-anatomy-BDIP42MI.js} +2 -1
  74. package/dist/file-dropzone-Bi5ikRIz.js +458 -0
  75. package/dist/file-dropzone.js +1 -1
  76. package/dist/{filter-toolbar-D5KEKTSe.js → filter-toolbar-QRnC4S_H.js} +36 -33
  77. package/dist/filter-toolbar.js +1 -1
  78. package/dist/{flex-Dh-_J5-U.js → flex-CS7eMRcK.js} +2 -2
  79. package/dist/flex.js +1 -1
  80. package/dist/{hold-to-confirm-DjB2EVjM.js → hold-to-confirm-CVBA0wNT.js} +18 -17
  81. package/dist/hold-to-confirm.js +1 -1
  82. package/dist/{hover-card-B-nrCIy2.js → hover-card-DN1EAlQA.js} +26 -25
  83. package/dist/hover-card.js +1 -1
  84. package/dist/{icon-wrapper-stN8sD7R.js → icon-wrapper-C-zMD0uL.js} +1 -1
  85. package/dist/{image-compare-ciuhPtQZ.js → image-compare-Ln2UUqTU.js} +20 -19
  86. package/dist/image-compare.js +1 -1
  87. package/dist/index.js +98 -78
  88. package/dist/{inline-edit-C0eeml65.js → inline-edit-D-pR2RPC.js} +22 -21
  89. package/dist/inline-edit.js +1 -1
  90. package/dist/{input-control-DmMuAuPS.js → input-control-B6HVBgwl.js} +1 -1
  91. package/dist/{json-viewer-BcySQfjZ.js → json-viewer-Dro3WrjS.js} +34 -29
  92. package/dist/json-viewer.js +1 -1
  93. package/dist/{kbd-C3ACoMoE.js → kbd-BI_9qzYr.js} +2 -1
  94. package/dist/kbd.js +1 -1
  95. package/dist/keycap-keyboard-Cdx-OAS1.js +311 -0
  96. package/dist/keycap-keyboard.js +2 -0
  97. package/dist/{layout-style-Cbd1Vilw.js → layout-style-BE0gSqrH.js} +1 -1
  98. package/dist/lightbox-gallery-D0YaSTut.js +777 -0
  99. package/dist/lightbox-gallery.js +2 -0
  100. package/dist/link-unfurl-CReyIjyy.js +695 -0
  101. package/dist/link-unfurl.js +2 -0
  102. package/dist/{listbox-style-WX-RASp1.js → listbox-style-DNOxAulu.js} +1 -1
  103. package/dist/{loading-ring-B8-30Dl1.js → loading-ring-D0lGrK8z.js} +1 -1
  104. package/dist/locale-switcher-CZF7XNYG.js +295 -0
  105. package/dist/locale-switcher.js +2 -0
  106. package/dist/mention-input-BjjAbJCf.js +600 -0
  107. package/dist/mention-input.js +1 -1
  108. package/dist/menu-CVzpsyXn.js +312 -0
  109. package/dist/menu.js +1 -1
  110. package/dist/{metric-card-Bh9K4fZs.js → metric-card-BnFssTXj.js} +12 -11
  111. package/dist/metric-card.js +1 -1
  112. package/dist/{multi-select-Pce_IYnz.js → multi-select-B3puEVo0.js} +78 -69
  113. package/dist/multi-select.js +1 -1
  114. package/dist/{navigation-sP5fiuQS.js → navigation-C_JD43gA.js} +56 -49
  115. package/dist/navigation.js +1 -1
  116. package/dist/next.js +65 -0
  117. package/dist/now-playing-DjVm1Phm.js +439 -0
  118. package/dist/now-playing.js +2 -0
  119. package/dist/{overlay-layer-SeUyyEPD.js → overlay-layer-qEbpEtb8.js} +16 -2
  120. package/dist/overlay-motion-Cr77ihn2.js +90 -0
  121. package/dist/{overlay-portal-C4JZFq2M.js → overlay-portal-C9igMHnC.js} +1 -1
  122. package/dist/{pagination-DmXZ8E85.js → pagination-Dkh4bJQh.js} +31 -29
  123. package/dist/pagination.js +1 -1
  124. package/dist/{password-field-03pWRkuY.js → password-field-Da58GP1g.js} +4 -4
  125. package/dist/password-field.js +1 -1
  126. package/dist/photo-grid-Dtl17D74.js +830 -0
  127. package/dist/photo-grid.js +2 -0
  128. package/dist/pill-Dd7pog19.js +59 -0
  129. package/dist/pill.js +1 -1
  130. package/dist/popover-CUMOcMtj.js +126 -0
  131. package/dist/popover.js +1 -1
  132. package/dist/presence-spring-4zwtUDQN.js +12 -0
  133. package/dist/{progress-CbOWBUdA.js → progress-Bcuz3Ob4.js} +12 -11
  134. package/dist/progress.js +1 -1
  135. package/dist/{radio-cards-D2QZENI_.js → radio-cards-FkAhESb5.js} +65 -63
  136. package/dist/radio-cards.js +1 -1
  137. package/dist/{radio-group-E6mMRgo7.js → radio-group-DItMf2YM.js} +32 -28
  138. package/dist/radio-group.js +1 -1
  139. package/dist/{resizable-panels-BhjUVXZZ.js → resizable-panels-61h9hA3B.js} +16 -14
  140. package/dist/resizable-panels.js +1 -1
  141. package/dist/{scroll-area-CcZyiSOQ.js → scroll-area-B8KkCPOM.js} +16 -15
  142. package/dist/scroll-area.js +1 -1
  143. package/dist/{search-field-IxF0IJXm.js → search-field-CbsajaZb.js} +94 -93
  144. package/dist/search-field.js +1 -1
  145. package/dist/{segmented-control-yO1K1nbi.js → segmented-control-DCh-4ca-.js} +28 -26
  146. package/dist/segmented-control.js +1 -1
  147. package/dist/{select-n_H52W1Z.js → select-SrcQqZjo.js} +29 -27
  148. package/dist/select.js +1 -1
  149. package/dist/sheet-stack-DYX1SGSB.js +820 -0
  150. package/dist/sheet-stack.js +2 -0
  151. package/dist/shortcut-recorder-VgTQdjjn.js +688 -0
  152. package/dist/shortcut-recorder.js +2 -0
  153. package/dist/signature-pad-khL2yhQI.js +646 -0
  154. package/dist/signature-pad.js +1 -1
  155. package/dist/{skeleton-XQQDkCHd.js → skeleton-LJsQsveI.js} +9 -8
  156. package/dist/skeleton.js +1 -1
  157. package/dist/slider-DjAnGmlC.js +535 -0
  158. package/dist/slider.js +1 -1
  159. package/dist/{sortable-data-table-tirqlLY2.js → sortable-data-table-Bpitup_d.js} +29 -28
  160. package/dist/sortable-data-table.js +1 -1
  161. package/dist/{spinner-DtxvDPdM.js → spinner-CvzajSg9.js} +11 -10
  162. package/dist/spinner.js +1 -1
  163. package/dist/{split-button-Cb3EHs64.js → split-button-Bu41f2AY.js} +88 -93
  164. package/dist/split-button.js +1 -1
  165. package/dist/{stack-DC3IbtWk.js → stack-Bac4sJeI.js} +2 -2
  166. package/dist/stack.js +1 -1
  167. package/dist/{stepper-CruHbXxX.js → stepper-C8Ncavbr.js} +22 -21
  168. package/dist/stepper.js +1 -1
  169. package/dist/stretch-refresh-OrnTEj7P.js +349 -0
  170. package/dist/stretch-refresh.js +2 -0
  171. package/dist/{surface-DZ4d-2aL.js → surface-C69kwSuk.js} +13 -3
  172. package/dist/{swipe-actions-DiZC57-3.js → swipe-actions-1H5UOZKE.js} +29 -26
  173. package/dist/swipe-actions.js +1 -1
  174. package/dist/switch-79-hkQqg.js +146 -0
  175. package/dist/switch.js +1 -1
  176. package/dist/sx-BJXJ2xJK.js +23 -0
  177. package/dist/tabs-Bb5-noYE.js +211 -0
  178. package/dist/tabs.js +1 -1
  179. package/dist/{tag-input-DSRCyrX2.js → tag-input-BQaueKEb.js} +5 -5
  180. package/dist/tag-input.js +1 -1
  181. package/dist/{text-field-C8TWG-tY.js → text-field-D0VP7b4P.js} +18 -16
  182. package/dist/text-field.js +1 -1
  183. package/dist/{textarea-BrW0XcG_.js → textarea-D1YwEPmn.js} +21 -19
  184. package/dist/textarea.js +1 -1
  185. package/dist/theme-provider-BvcY-iJu.js +20 -0
  186. package/dist/theme-root-BrYVcTzt.js +163 -0
  187. package/dist/theme-root.js +1 -1
  188. package/dist/theme-scope-DGWy4H0C.js +62 -0
  189. package/dist/theme-switch-CP42mVDb.js +167 -0
  190. package/dist/theme-switch.js +2 -0
  191. package/dist/thread-parts-DfZNz70v.js +683 -0
  192. package/dist/{time-picker-Db8D49cP.js → time-picker-Tnd-JBLC.js} +39 -32
  193. package/dist/time-picker.js +1 -1
  194. package/dist/{timeline-k3nURuCP.js → timeline-DaldDMX7.js} +28 -21
  195. package/dist/timeline.js +1 -1
  196. package/dist/{toast-BHxI32ZA.js → toast-CSAbl5yK.js} +107 -87
  197. package/dist/{toast-stack-DqrAzdg5.js → toast-stack-BCR4Cu7V.js} +25 -10
  198. package/dist/toast-stack.js +1 -1
  199. package/dist/toast.js +1 -1
  200. package/dist/{toggle-group-fcjzpifI.js → toggle-group-C7ye1v4s.js} +24 -23
  201. package/dist/toggle-group.js +1 -1
  202. package/dist/tooltip-IajLwdUb.js +129 -0
  203. package/dist/tooltip.js +1 -1
  204. package/dist/{tree-view-C2liIxqy.js → tree-view-CoW4oJIZ.js} +18 -13
  205. package/dist/tree-view.js +1 -1
  206. package/dist/{trigger-style-B1KVC8O1.js → trigger-style-CtOrdPk4.js} +1 -1
  207. package/dist/types/components/activity-rings/activity-rings.d.ts +115 -0
  208. package/dist/types/components/activity-rings/index.d.ts +2 -0
  209. package/dist/types/components/billing-toggle/billing-toggle.d.ts +57 -0
  210. package/dist/types/components/billing-toggle/index.d.ts +2 -0
  211. package/dist/types/components/button-group/button-group.d.ts +72 -0
  212. package/dist/types/components/button-group/index.d.ts +2 -0
  213. package/dist/types/components/card/card.d.ts +4 -1
  214. package/dist/types/components/chat-thread/chat-thread.d.ts +130 -0
  215. package/dist/types/components/chat-thread/index.d.ts +2 -0
  216. package/dist/types/components/checkbox/checkbox.d.ts +1 -1
  217. package/dist/types/components/command-palette/command-palette.d.ts +1 -1
  218. package/dist/types/components/comment-thread/comment-thread.d.ts +118 -0
  219. package/dist/types/components/comment-thread/index.d.ts +1 -0
  220. package/dist/types/components/context-menu/context-menu.d.ts +55 -0
  221. package/dist/types/components/context-menu/index.d.ts +2 -0
  222. package/dist/types/components/date-range-picker/date-range-picker.d.ts +1 -1
  223. package/dist/types/components/drawer/drawer.d.ts +7 -1
  224. package/dist/types/components/expanding-search/expanding-search.d.ts +22 -0
  225. package/dist/types/components/expanding-search/index.d.ts +1 -0
  226. package/dist/types/components/keycap-keyboard/index.d.ts +2 -0
  227. package/dist/types/components/keycap-keyboard/keycap-keyboard.d.ts +32 -0
  228. package/dist/types/components/lightbox-gallery/index.d.ts +2 -0
  229. package/dist/types/components/lightbox-gallery/lightbox-gallery.d.ts +74 -0
  230. package/dist/types/components/link-unfurl/index.d.ts +2 -0
  231. package/dist/types/components/link-unfurl/link-unfurl.d.ts +94 -0
  232. package/dist/types/components/locale-switcher/index.d.ts +2 -0
  233. package/dist/types/components/locale-switcher/locale-switcher.d.ts +58 -0
  234. package/dist/types/components/menu/menu.d.ts +74 -7
  235. package/dist/types/components/next/emotion-registry.d.ts +16 -0
  236. package/dist/types/components/next/index.d.ts +2 -0
  237. package/dist/types/components/next/registry.d.ts +21 -0
  238. package/dist/types/components/now-playing/index.d.ts +1 -0
  239. package/dist/types/components/now-playing/now-playing.d.ts +88 -0
  240. package/dist/types/components/pagination/pagination.d.ts +1 -1
  241. package/dist/types/components/photo-grid/index.d.ts +2 -0
  242. package/dist/types/components/photo-grid/photo-grid.d.ts +82 -0
  243. package/dist/types/components/radio-cards/radio-cards.d.ts +1 -1
  244. package/dist/types/components/radio-group/radio-group.d.ts +1 -1
  245. package/dist/types/components/sheet-stack/index.d.ts +2 -0
  246. package/dist/types/components/sheet-stack/sheet-stack.d.ts +78 -0
  247. package/dist/types/components/shortcut-recorder/index.d.ts +2 -0
  248. package/dist/types/components/shortcut-recorder/shortcut-recorder.d.ts +117 -0
  249. package/dist/types/components/slider/slider-style.d.ts +14 -0
  250. package/dist/types/components/slider/slider.d.ts +2 -10
  251. package/dist/types/components/slider/use-slider-interaction.d.ts +79 -0
  252. package/dist/types/components/split-button/split-button.d.ts +2 -2
  253. package/dist/types/components/stretch-refresh/index.d.ts +1 -0
  254. package/dist/types/components/stretch-refresh/stretch-refresh.d.ts +49 -0
  255. package/dist/types/components/tabs/tabs.d.ts +1 -1
  256. package/dist/types/components/text-field/text-field.d.ts +1 -1
  257. package/dist/types/components/textarea/textarea.d.ts +1 -1
  258. package/dist/types/components/theme-root/index.d.ts +1 -0
  259. package/dist/types/components/theme-root/theme-root.d.ts +9 -1
  260. package/dist/types/components/theme-switch/index.d.ts +1 -0
  261. package/dist/types/components/theme-switch/theme-switch.d.ts +33 -0
  262. package/dist/types/components/thread/thread-core.d.ts +96 -0
  263. package/dist/types/components/thread/thread-parts.d.ts +119 -0
  264. package/dist/types/components/tooltip/tooltip.d.ts +9 -2
  265. package/dist/types/components/usage-meter/usage-meter.d.ts +2 -12
  266. package/dist/types/components/usage-meter/usage-model.d.ts +30 -0
  267. package/dist/types/components/user-menu/index.d.ts +2 -0
  268. package/dist/types/components/user-menu/user-menu.d.ts +119 -0
  269. package/dist/types/index.d.ts +18 -0
  270. package/dist/types/overlay/exit-motion.d.ts +24 -0
  271. package/dist/types/overlay/overlay-layer.d.ts +20 -0
  272. package/dist/types/overlay/presence-spring.d.ts +12 -0
  273. package/dist/types/overlay/use-native-dialog.d.ts +10 -1
  274. package/dist/types/overlay/use-overlay-floating.d.ts +9 -2
  275. package/dist/types/styling/create-theme.d.ts +24 -0
  276. package/dist/types/styling/css.d.ts +1 -1
  277. package/dist/types/styling/overlay-motion.d.ts +95 -0
  278. package/dist/types/styling/surface.d.ts +7 -0
  279. package/dist/types/styling/theme-scope.d.ts +29 -3
  280. package/dist/types/styling/theme.d.ts +5 -0
  281. package/dist/{usage-meter-qyQ3rYVv.js → usage-meter-CYvlB6l3.js} +165 -175
  282. package/dist/usage-meter.js +1 -1
  283. package/dist/usage-model-C0fS47w4.js +32 -0
  284. package/dist/use-native-dialog-FB0p7lkg.js +93 -0
  285. package/dist/{use-overlay-floating-DvJifLpF.js → use-overlay-floating-Bx2jBKAA.js} +8 -6
  286. package/dist/use-scroll-lock-40gXwwAy.js +23 -0
  287. package/dist/user-menu-DzELTg1x.js +757 -0
  288. package/dist/user-menu.js +2 -0
  289. package/dist/{visually-hidden-BJdvqqvn.js → visually-hidden-DgVO3NaB.js} +1 -1
  290. package/package.json +88 -2
  291. package/dist/accordion-xCI_u0BV.js +0 -198
  292. package/dist/avatar-BahDVO9t.js +0 -132
  293. package/dist/badge-B_sLygxU.js +0 -108
  294. package/dist/calendar-B3Svu0X2.js +0 -447
  295. package/dist/card-D-aI2QHx.js +0 -158
  296. package/dist/carousel-IvPqN-oM.js +0 -472
  297. package/dist/command-palette-BQ5LleGb.js +0 -384
  298. package/dist/date-range-picker-B5uFWsm-.js +0 -562
  299. package/dist/dialog-ciiv9H2b.js +0 -218
  300. package/dist/drawer-DsASTiP-.js +0 -553
  301. package/dist/file-dropzone-pR4v7owg.js +0 -457
  302. package/dist/mention-input-BcQKX2EJ.js +0 -599
  303. package/dist/menu-xwOOUtWP.js +0 -275
  304. package/dist/pill-DO2gHzMb.js +0 -56
  305. package/dist/popover-QHcEvf9c.js +0 -119
  306. package/dist/signature-pad-q2SAsrdD.js +0 -640
  307. package/dist/slider-t0B5cecO.js +0 -477
  308. package/dist/switch-qwv8jQnR.js +0 -142
  309. package/dist/sx-Dx9JUKp5.js +0 -23
  310. package/dist/tabs-CAVJndX1.js +0 -203
  311. package/dist/theme-root-BbTBuLMQ.js +0 -46
  312. package/dist/theme-scope-t7nAKc2c.js +0 -27
  313. package/dist/tooltip-CkeiW9C1.js +0 -113
  314. package/dist/use-native-dialog-DWpIUVO1.js +0 -84
@@ -0,0 +1,129 @@
1
+ 'use client';
2
+ import { i as e } from "./css-BYJhdGh-.js";
3
+ import { t } from "./sx-BJXJ2xJK.js";
4
+ import { t as n } from "./use-controlled-state-DpeVQZNR.js";
5
+ import { t as r } from "./trigger-style-CtOrdPk4.js";
6
+ import { t as i } from "./overlay-layer-qEbpEtb8.js";
7
+ import { t as a } from "./overlay-portal-C9igMHnC.js";
8
+ import { t as o } from "./use-overlay-floating-Bx2jBKAA.js";
9
+ import { createContext as s, useContext as c, useMemo as l, useState as u } from "react";
10
+ import { vars as d } from "@jfrader/tokens/vars";
11
+ import { jsx as f } from "@emotion/react/jsx-runtime";
12
+ import { useDismiss as p, useFocus as m, useHover as h, useInteractions as g, useMergeRefs as _, useRole as v } from "@floating-ui/react";
13
+ //#region src/components/tooltip/tooltip.tsx
14
+ var y = 300, b = 100, x = s(null);
15
+ function S(e) {
16
+ let t = c(x);
17
+ if (!t) throw Error(`Tooltip.${e} must be rendered inside <Tooltip>.`);
18
+ return t;
19
+ }
20
+ var C = e({
21
+ boxSizing: "border-box",
22
+ backgroundColor: d.color.bgSoft,
23
+ border: `1px solid ${d.color.border}`,
24
+ borderRadius: d.radius.sm,
25
+ boxShadow: d.shadow.raised,
26
+ padding: `${d.space[1]} ${d.space[2]}`,
27
+ maxInlineSize: `min(260px, calc(100vw - 2 * ${d.space[4]}))`,
28
+ overflowWrap: "anywhere",
29
+ color: d.color.text,
30
+ fontFamily: d.font.sans,
31
+ fontSize: d.textSize.sm,
32
+ lineHeight: d.lineHeight.base
33
+ });
34
+ function w(e, { enabled: t = !0, openDelay: n = y, closeDelay: r = b } = {}) {
35
+ let i = h(e, {
36
+ enabled: t,
37
+ delay: {
38
+ open: n,
39
+ close: r
40
+ },
41
+ move: !1
42
+ }), a = m(e, { enabled: t }), o = p(e, { escapeKey: !0 }), s = v(e, { role: "tooltip" });
43
+ return g([
44
+ i,
45
+ a,
46
+ o,
47
+ s
48
+ ]);
49
+ }
50
+ function T({ open: e, defaultOpen: t = !1, onOpenChange: r, placement: i = "top", openDelay: a = y, closeDelay: s = b, children: c }) {
51
+ let [u = !1, d] = n(e, t, r), { refs: p, floatingStyles: m, context: h } = o({
52
+ open: u,
53
+ placement: i,
54
+ onOpenChange: d
55
+ }), { getReferenceProps: g, getFloatingProps: _ } = w(h, {
56
+ openDelay: a,
57
+ closeDelay: s
58
+ }), v = l(() => ({
59
+ open: u,
60
+ refs: p,
61
+ floatingStyles: m,
62
+ getReferenceProps: g,
63
+ getFloatingProps: _
64
+ }), [
65
+ u,
66
+ p,
67
+ m,
68
+ g,
69
+ _
70
+ ]);
71
+ return /* @__PURE__ */ f(x.Provider, {
72
+ value: v,
73
+ children: c
74
+ });
75
+ }
76
+ function E(e) {
77
+ return /* @__PURE__ */ f(i, { children: /* @__PURE__ */ f(T, { ...e }) });
78
+ }
79
+ E.displayName = "Tooltip";
80
+ function D({ ref: e, "aria-describedby": n, className: i, sx: a, ...o }) {
81
+ let { refs: s, getReferenceProps: c } = S("Trigger"), l = _([s.setReference, e]), u = c(o), d = [n, u["aria-describedby"]].filter(Boolean).join(" ") || void 0;
82
+ return /* @__PURE__ */ f(t, {
83
+ className: i,
84
+ styles: r,
85
+ sx: a,
86
+ children: (e) => /* @__PURE__ */ f("button", {
87
+ type: "button",
88
+ ...u,
89
+ ref: l,
90
+ "aria-describedby": d,
91
+ "data-ui": "tooltip-trigger",
92
+ className: e
93
+ })
94
+ });
95
+ }
96
+ D.displayName = "Tooltip.Trigger";
97
+ function O({ ref: e, style: n, className: r, sx: i, dir: a, ...o }) {
98
+ let { refs: s, floatingStyles: c, getFloatingProps: l } = S("Content"), d = _([s.setFloating, e]), [p] = u(() => {
99
+ let e = s.domReference.current;
100
+ return e?.ownerDocument.defaultView?.getComputedStyle(e).direction;
101
+ }), { tabIndex: m, ...h } = l(o);
102
+ return /* @__PURE__ */ f(t, {
103
+ className: r,
104
+ styles: C,
105
+ sx: i,
106
+ children: (e) => /* @__PURE__ */ f("div", {
107
+ ...h,
108
+ ref: d,
109
+ dir: a ?? p,
110
+ "data-ui": "tooltip",
111
+ style: {
112
+ ...n,
113
+ ...c
114
+ },
115
+ className: e
116
+ })
117
+ });
118
+ }
119
+ function k(e) {
120
+ let { open: t } = S("Content");
121
+ return t ? /* @__PURE__ */ f(a, { children: /* @__PURE__ */ f(O, { ...e }) }) : null;
122
+ }
123
+ k.displayName = "Tooltip.Content";
124
+ var A = Object.assign(E, {
125
+ Trigger: D,
126
+ Content: k
127
+ });
128
+ //#endregion
129
+ export { C as n, w as r, A as t };
package/dist/tooltip.js CHANGED
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- export { t as Tooltip } from "./tooltip-CkeiW9C1.js";
2
+ export { t as Tooltip } from "./tooltip-IajLwdUb.js";
@@ -1,8 +1,9 @@
1
1
  'use client';
2
- import { r as e, t } from "./sx-Dx9JUKp5.js";
3
- import { t as n } from "./disclosure-caret-C5T3fcl6.js";
4
- import { t as r } from "./focus-ring-BK5W5_NY.js";
5
- import { n as i, r as a } from "./media-8yrN85VT.js";
2
+ import { i as e } from "./css-BYJhdGh-.js";
3
+ import { t } from "./disclosure-caret-C5T3fcl6.js";
4
+ import { t as n } from "./focus-ring-BK5W5_NY.js";
5
+ import { n as r, r as i } from "./media-8yrN85VT.js";
6
+ import { t as a } from "./sx-BJXJ2xJK.js";
6
7
  import { t as o } from "./use-controlled-state-DpeVQZNR.js";
7
8
  import { t as s } from "./renderable-DzcIj1Lo.js";
8
9
  import { useEffect as c, useId as ee, useLayoutEffect as te, useMemo as ne, useRef as l, useState as u } from "react";
@@ -26,7 +27,7 @@ var re = 500, ie = {
26
27
  margin: 0,
27
28
  padding: d.space[1],
28
29
  overflowX: "auto",
29
- "&:focus-visible": r
30
+ "&:focus-visible": n
30
31
  }), se = e({
31
32
  outline: "none",
32
33
  display: "flex",
@@ -56,9 +57,9 @@ var re = 500, ie = {
56
57
  color: d.color.textMuted,
57
58
  cursor: "default"
58
59
  },
59
- "&:has(> [role=\"treeitem\"]:focus-visible)": r,
60
- [a]: { transitionDuration: "0s" },
61
- [i]: {
60
+ "&:has(> [role=\"treeitem\"]:focus-visible)": n,
61
+ [i]: { transitionDuration: "0s" },
62
+ [r]: {
62
63
  borderInlineStartColor: "Canvas",
63
64
  "&:has(> [aria-selected=\"true\"])": { borderInlineStartColor: "Highlight" }
64
65
  }
@@ -79,12 +80,16 @@ var re = 500, ie = {
79
80
  justifyContent: "center",
80
81
  color: "currentColor",
81
82
  "&[data-branch=\"true\"]::after": {
82
- ...n,
83
+ ...t,
83
84
  transitionDuration: d.motion.duration.fast
84
85
  },
85
86
  "&[data-open=\"true\"]::after": { transform: "rotate(90deg)" },
86
87
  "&:dir(rtl)[data-open=\"true\"]::after": { transform: "rotate(-90deg)" },
87
- [a]: { "&[data-branch=\"true\"]::after": { transitionDuration: "0s" } }
88
+ [i]: { "&[data-branch=\"true\"]::after": { transitionDuration: "0s" } },
89
+ [r]: { "&[data-branch=\"true\"]::after": {
90
+ forcedColorAdjust: "none",
91
+ color: "CanvasText"
92
+ } }
88
93
  }), fe = e({
89
94
  listStyle: "none",
90
95
  margin: 0,
@@ -103,8 +108,8 @@ var re = 500, ie = {
103
108
  paddingInline: d.space[2],
104
109
  "&:empty": { padding: 0 }
105
110
  });
106
- function h({ nodes: e, value: n, defaultValue: r = null, onValueChange: i, open: a, defaultOpen: d = [], onOpenChange: h, loadChildren: g, onLoadError: pe, label: me = "Tree", messages: he, empty: _, treeRef: v, locale: y, slotProps: b, ref: ge, className: _e, sx: ve, onKeyDown: ye, onClick: be, onBlur: xe, "aria-label": Se, "aria-labelledby": x, "aria-describedby": Ce, ...we }) {
107
- let S = ee(), C = l(null), w = l(/* @__PURE__ */ new Map()), T = l(null), E = l(/* @__PURE__ */ new Map()), D = l(/* @__PURE__ */ new Map()), [Te, Ee] = u(/* @__PURE__ */ new Map()), [O, k] = u(/* @__PURE__ */ new Set()), [A, j] = u(/* @__PURE__ */ new Set()), [M, De] = o(n, r, i), [N = [], P] = o(a, d, h), [F, I] = u(n ?? r), L = l({
111
+ function h({ nodes: e, value: t, defaultValue: n = null, onValueChange: r, open: i, defaultOpen: d = [], onOpenChange: h, loadChildren: g, onLoadError: pe, label: me = "Tree", messages: he, empty: _, treeRef: v, locale: y, slotProps: b, ref: ge, className: _e, sx: ve, onKeyDown: ye, onClick: be, onBlur: xe, "aria-label": Se, "aria-labelledby": x, "aria-describedby": Ce, ...we }) {
112
+ let S = ee(), C = l(null), w = l(/* @__PURE__ */ new Map()), T = l(null), E = l(/* @__PURE__ */ new Map()), D = l(/* @__PURE__ */ new Map()), [Te, Ee] = u(/* @__PURE__ */ new Map()), [O, k] = u(/* @__PURE__ */ new Set()), [A, j] = u(/* @__PURE__ */ new Set()), [M, De] = o(t, n, r), [N = [], P] = o(i, d, h), [F, I] = u(t ?? n), L = l({
108
113
  text: "",
109
114
  time: 0
110
115
  }), R = ne(() => new Intl.Collator(y, {
@@ -296,7 +301,7 @@ function h({ nodes: e, value: n, defaultValue: r = null, onValueChange: i, open:
296
301
  })]
297
302
  }, e.id);
298
303
  }), $ = _ === void 0 ? z.empty : _;
299
- return /* @__PURE__ */ f(t, {
304
+ return /* @__PURE__ */ f(a, {
300
305
  className: _e,
301
306
  styles: [ae],
302
307
  sx: ve,
package/dist/tree-view.js CHANGED
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- export { t as TreeView } from "./tree-view-C2liIxqy.js";
2
+ export { t as TreeView } from "./tree-view-CoW4oJIZ.js";
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { r as e } from "./sx-Dx9JUKp5.js";
2
+ import { i as e } from "./css-BYJhdGh-.js";
3
3
  import { vars as t } from "@jfrader/tokens/vars";
4
4
  //#region src/styling/trigger-style.ts
5
5
  var n = e({
@@ -0,0 +1,115 @@
1
+ import { type ComponentPropsWithoutRef, type ComponentPropsWithRef } from 'react';
2
+ import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SxProps } from '../../styling/sx';
4
+ export type ActivityTone = 'accent' | 'warning' | 'success' | 'info';
5
+ export type ActivityRingsSize = 'sm' | 'md' | 'lg';
6
+ export type ActivityValues = Readonly<Record<string, number | null>>;
7
+ export interface ActivityMetric {
8
+ /** Stable, nonempty, unique identity. */
9
+ id: string;
10
+ label: string;
11
+ /** Positive target; nonpositive or nonfinite goals render the metric as unavailable. */
12
+ goal: number;
13
+ /** Sanctioned `Intl.NumberFormat` unit (`'kilometer'`, `'minute'`, `'hour'`, …); otherwise use `formatValue`. */
14
+ unit?: string;
15
+ tone?: ActivityTone;
16
+ /** Formats amounts for units Intl does not sanction; implement it with Intl. */
17
+ formatValue?: (value: number, locale: string | undefined) => string;
18
+ }
19
+ export interface ActivityDay {
20
+ id: string;
21
+ /** Civil date, `YYYY-MM-DD`. */
22
+ date: string;
23
+ values: ActivityValues;
24
+ }
25
+ /** `open` is below goal, `closed` at or above it; `unknown` has no finite value. */
26
+ export type ActivityRingStatus = 'unknown' | 'unavailable' | 'open' | 'closed';
27
+ export interface ActivityRingsLabels {
28
+ /** Region name when no consumer name is given. */
29
+ root: string;
30
+ /** Day picker group label. */
31
+ days: string;
32
+ legend: string;
33
+ unknown: string;
34
+ unavailable: string;
35
+ goalMet: string;
36
+ noSelection: string;
37
+ empty: string;
38
+ amount: (value: string, goal: string) => string;
39
+ summary: (met: string, total: string) => string;
40
+ }
41
+ type PartElement = 'svg' | 'ul' | 'button' | 'div' | 'fieldset' | 'label' | 'p';
42
+ export type ActivityRingsPartProps<T extends PartElement> = Omit<ComponentPropsWithoutRef<T>, 'children'> & {
43
+ css?: Interpolation<Theme>;
44
+ };
45
+ type DataSource = {
46
+ /** Standalone values when there is no day picker. */
47
+ values?: ActivityValues;
48
+ days?: never;
49
+ } | {
50
+ /** Days win over standalone values; supplying both is a type error. */
51
+ days: readonly ActivityDay[];
52
+ values?: never;
53
+ };
54
+ interface ActivityRingsSlotProps {
55
+ rings?: ActivityRingsPartProps<'svg'>;
56
+ legend?: ActivityRingsPartProps<'ul'>;
57
+ dayPicker?: ActivityRingsPartProps<'fieldset'>;
58
+ dayLabel?: ActivityRingsPartProps<'label'>;
59
+ summary?: ActivityRingsPartProps<'p'>;
60
+ }
61
+ /** Metric slot props shared by the toggle-button and plain-row legend elements. */
62
+ export type ActivityRingsMetricProps = Pick<ActivityRingsPartProps<'button'> & ActivityRingsPartProps<'div'>, keyof ActivityRingsPartProps<'button'> & keyof ActivityRingsPartProps<'div'>>;
63
+ /**
64
+ * The metric slot targets the element each legend row renders: a toggle button when
65
+ * `interactiveLegend` is `true`, a plain row when it is `false` or omitted, and only props shared by
66
+ * both when the flag is a runtime boolean.
67
+ */
68
+ type LegendMode = {
69
+ /** Legend rows become toggle buttons that isolate one ring. */
70
+ interactiveLegend: true;
71
+ slotProps?: ActivityRingsSlotProps & {
72
+ metric?: ActivityRingsPartProps<'button'>;
73
+ };
74
+ } | {
75
+ interactiveLegend?: false;
76
+ slotProps?: ActivityRingsSlotProps & {
77
+ metric?: ActivityRingsPartProps<'div'>;
78
+ };
79
+ } | {
80
+ interactiveLegend?: boolean;
81
+ slotProps?: ActivityRingsSlotProps & {
82
+ metric?: ActivityRingsMetricProps;
83
+ };
84
+ };
85
+ export type ActivityRingsProps = Omit<ComponentPropsWithRef<'section'>, 'children' | 'defaultValue' | 'onChange'> & SxProps & DataSource & LegendMode & {
86
+ /** Rendered outside → inside. */
87
+ metrics: readonly ActivityMetric[];
88
+ /** Selected day id. A missing id renders the no-selection summary. */
89
+ value?: string | null;
90
+ /** Seeds the selected day once; defaults to the last day. */
91
+ defaultValue?: string | null;
92
+ onValueChange?: (dayId: string) => void;
93
+ focusedMetric?: string | null;
94
+ defaultFocusedMetric?: string | null;
95
+ onFocusedMetricChange?: (metricId: string | null) => void;
96
+ /** Fires once when a same-day value observed below its goal reaches it. */
97
+ onRingClose?: (metricId: string, dayId: string | null) => void;
98
+ size?: ActivityRingsSize;
99
+ locale?: string;
100
+ /** English defaults. */
101
+ labels?: Partial<ActivityRingsLabels>;
102
+ /** Keeps the legend for assistive tech while removing it visually. */
103
+ hideLegend?: boolean;
104
+ };
105
+ /**
106
+ * Concentric goal rings over the UsageMeter model: each ring is one metric's value against its
107
+ * goal. The SVG is decoration; the legend carries exact amounts, goals and percentages. Optional
108
+ * native radio day picker (arrows native, Home/End added) and opt-in toggle-button legend
109
+ * (Enter/Space isolate one ring).
110
+ */
111
+ export declare function ActivityRings({ ref, metrics, values: valuesProp, days: daysProp, value, defaultValue, onValueChange, focusedMetric, defaultFocusedMetric, onFocusedMetricChange, interactiveLegend, onRingClose, size, locale, labels: labelsProp, hideLegend, slotProps, className, sx, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, ...rest }: ActivityRingsProps): import("@emotion/react/jsx-runtime").JSX.Element;
112
+ export declare namespace ActivityRings {
113
+ var displayName: string;
114
+ }
115
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ActivityRings } from './activity-rings';
2
+ export type { ActivityDay, ActivityMetric, ActivityRingStatus, ActivityRingsLabels, ActivityRingsMetricProps, ActivityRingsPartProps, ActivityRingsProps, ActivityRingsSize, ActivityTone, ActivityValues, } from './activity-rings';
@@ -0,0 +1,57 @@
1
+ import { type ComponentPropsWithRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
+ import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SxProps } from '../../styling/sx';
4
+ import { type SegmentedControlItemProps } from '../segmented-control';
5
+ export type BillingToggleSize = 'md' | 'lg';
6
+ export type BillingToggleTone = 'neutral' | 'accent' | 'success';
7
+ type SlotProps<Element extends 'span' | 'del'> = ComponentPropsWithoutRef<Element> & {
8
+ css?: Interpolation<Theme>;
9
+ };
10
+ export interface BillingToggleProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue' | 'onChange'>, SxProps {
11
+ value?: string;
12
+ defaultValue?: string;
13
+ onValueChange?: (value: string) => void;
14
+ disabled?: boolean;
15
+ size?: BillingToggleSize;
16
+ tone?: BillingToggleTone;
17
+ locale?: Intl.LocalesArgument;
18
+ }
19
+ export interface BillingToggleListProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue' | 'onChange'>, SxProps {
20
+ }
21
+ export interface BillingToggleLabelProps extends ComponentPropsWithRef<'span'>, SxProps {
22
+ }
23
+ export interface BillingToggleItemProps extends Omit<SegmentedControlItemProps, 'accessory'> {
24
+ badge?: ReactNode;
25
+ activeBadge?: ReactNode;
26
+ slotProps?: {
27
+ label?: SlotProps<'span'>;
28
+ badge?: SlotProps<'span'>;
29
+ selection?: SlotProps<'span'>;
30
+ };
31
+ }
32
+ export interface BillingTogglePriceProps extends Omit<ComponentPropsWithRef<'span'>, 'children'>, SxProps {
33
+ amount: number;
34
+ currency: string;
35
+ locale?: Intl.LocalesArgument;
36
+ formatOptions?: Omit<Intl.NumberFormatOptions, 'style' | 'currency'>;
37
+ was?: number;
38
+ period?: ReactNode;
39
+ previousLabel?: string;
40
+ slotProps?: {
41
+ amount?: SlotProps<'span'>;
42
+ previous?: SlotProps<'del'>;
43
+ period?: SlotProps<'span'>;
44
+ };
45
+ }
46
+ declare function BillingToggleRoot({ ref, value: valueProp, defaultValue, onValueChange, disabled, size, tone, locale, className, sx, children, ...rest }: BillingToggleProps): import("@emotion/react/jsx-runtime").JSX.Element;
47
+ declare function BillingToggleLabel({ ref, id: idProp, className, sx, children, ...rest }: BillingToggleLabelProps): import("@emotion/react/jsx-runtime").JSX.Element | null;
48
+ declare function BillingToggleList({ ref, className, sx, children, ...rest }: BillingToggleListProps): import("@emotion/react/jsx-runtime").JSX.Element;
49
+ declare function BillingToggleItem({ badge, activeBadge, slotProps, children, className, sx, ...rest }: BillingToggleItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
50
+ declare function BillingTogglePrice({ ref, amount, currency, locale: localeProp, formatOptions, was, period, previousLabel, slotProps, className, sx, ...rest }: BillingTogglePriceProps): import("@emotion/react/jsx-runtime").JSX.Element;
51
+ export declare const BillingToggle: typeof BillingToggleRoot & {
52
+ List: typeof BillingToggleList;
53
+ Item: typeof BillingToggleItem;
54
+ Label: typeof BillingToggleLabel;
55
+ Price: typeof BillingTogglePrice;
56
+ };
57
+ export {};
@@ -0,0 +1,2 @@
1
+ export { BillingToggle } from './billing-toggle';
2
+ export type { BillingToggleProps, BillingToggleListProps, BillingToggleItemProps, BillingToggleLabelProps, BillingTogglePriceProps, BillingToggleSize, BillingToggleTone, } from './billing-toggle';
@@ -0,0 +1,72 @@
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
+ import { type Placement } from '@floating-ui/react';
3
+ import { type Interpolation, type Theme } from '../../styling/css';
4
+ import { type SxProps } from '../../styling/sx';
5
+ import { type ButtonProps, type ButtonSize, type ButtonTone, type ButtonVariant } from '../button';
6
+ import { type MenuContentProps, type MenuItemProps, type MenuSeparatorProps, type MenuItemTone } from '../menu/menu';
7
+ export type ButtonGroupOrientation = 'horizontal' | 'vertical';
8
+ export interface ButtonGroupProps extends Omit<ComponentPropsWithRef<'div'>, 'role'>, SxProps {
9
+ variant?: ButtonVariant;
10
+ tone?: ButtonTone;
11
+ size?: ButtonSize;
12
+ orientation?: ButtonGroupOrientation;
13
+ collapseLabels?: boolean;
14
+ disabled?: boolean;
15
+ open?: boolean;
16
+ defaultOpen?: boolean;
17
+ onOpenChange?: (open: boolean) => void;
18
+ placement?: Placement;
19
+ }
20
+ export interface ButtonGroupItemProps extends Omit<ButtonProps, 'render'> {
21
+ iconOnly?: boolean;
22
+ label?: string;
23
+ reserveLabels?: readonly string[];
24
+ }
25
+ export interface ButtonGroupLinkProps extends Omit<ComponentPropsWithRef<'a'>, 'color'>, SxProps {
26
+ href: string;
27
+ css?: Interpolation<Theme>;
28
+ disabled?: boolean;
29
+ variant?: ButtonVariant;
30
+ tone?: ButtonTone;
31
+ size?: ButtonSize;
32
+ iconOnly?: boolean;
33
+ label?: string;
34
+ startIcon?: ReactNode;
35
+ reserveLabels?: readonly string[];
36
+ }
37
+ export interface ButtonGroupLabelProps extends Omit<ComponentPropsWithRef<'span'>, 'role' | 'tabIndex'>, SxProps {
38
+ css?: Interpolation<Theme>;
39
+ }
40
+ export type ButtonGroupTriggerProps = Omit<ButtonGroupItemProps, 'loading' | 'reserveLabels' | 'iconOnly'> & ({
41
+ 'aria-label': string;
42
+ } | {
43
+ 'aria-labelledby': string;
44
+ });
45
+ export interface ButtonGroupContentProps extends Omit<MenuContentProps, 'role'> {
46
+ css?: Interpolation<Theme>;
47
+ }
48
+ export interface ButtonGroupMenuItemProps extends MenuItemProps {
49
+ tone?: MenuItemTone;
50
+ css?: Interpolation<Theme>;
51
+ }
52
+ export interface ButtonGroupSeparatorProps extends MenuSeparatorProps {
53
+ css?: Interpolation<Theme>;
54
+ }
55
+ declare function ButtonGroupRoot({ ref, variant, tone, size, orientation, collapseLabels, disabled, open, defaultOpen, onOpenChange, placement, children, className, sx, onKeyDown, onPointerOver, onPointerLeave, onPointerCancel, onFocus, onBlur, ...rest }: ButtonGroupProps): import("@emotion/react/jsx-runtime").JSX.Element;
56
+ declare function ButtonGroupItem({ ref, variant, tone, size, disabled, iconOnly, label, reserveLabels, children, startIcon, endIcon, css: cssProp, sx, ...rest }: ButtonGroupItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
57
+ declare function ButtonGroupLink({ ref, href, disabled, variant, tone, size, iconOnly, label, startIcon, reserveLabels, children, className, css: cssProp, sx, onClick, onAuxClick, onKeyDown, ...rest }: ButtonGroupLinkProps): import("@emotion/react/jsx-runtime").JSX.Element;
58
+ declare function ButtonGroupLabel({ className, sx, ...props }: ButtonGroupLabelProps): import("@emotion/react/jsx-runtime").JSX.Element;
59
+ declare function ButtonGroupTrigger({ ref, variant, tone, size, disabled, children, startIcon, endIcon, css: cssProp, sx, ...rest }: ButtonGroupTriggerProps): import("@emotion/react/jsx-runtime").JSX.Element;
60
+ declare function ButtonGroupContent({ dir, 'aria-labelledby': labelledBy, ...props }: ButtonGroupContentProps): import("@emotion/react/jsx-runtime").JSX.Element;
61
+ declare function ButtonGroupMenuItem({ tone, disabled, onClick, onSelect, ...props }: ButtonGroupMenuItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
62
+ declare function ButtonGroupSeparator(props: ButtonGroupSeparatorProps): import("@emotion/react/jsx-runtime").JSX.Element;
63
+ export declare const ButtonGroup: typeof ButtonGroupRoot & {
64
+ Item: typeof ButtonGroupItem;
65
+ Link: typeof ButtonGroupLink;
66
+ Label: typeof ButtonGroupLabel;
67
+ Trigger: typeof ButtonGroupTrigger;
68
+ Content: typeof ButtonGroupContent;
69
+ MenuItem: typeof ButtonGroupMenuItem;
70
+ Separator: typeof ButtonGroupSeparator;
71
+ };
72
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ButtonGroup } from './button-group';
2
+ export type { ButtonGroupProps, ButtonGroupOrientation, ButtonGroupItemProps, ButtonGroupLinkProps, ButtonGroupLabelProps, ButtonGroupTriggerProps, ButtonGroupContentProps, ButtonGroupMenuItemProps, ButtonGroupSeparatorProps, } from './button-group';
@@ -1,5 +1,6 @@
1
1
  import { type ComponentPropsWithRef } from 'react';
2
2
  import { type Interpolation, type Theme } from '../../styling/css';
3
+ import { type SurfaceAppearance } from '../../styling/surface';
3
4
  import { type SxProps } from '../../styling/sx';
4
5
  export type CardVariant = 'flat' | 'raised';
5
6
  export type CardHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
@@ -17,6 +18,8 @@ export interface CardSlotProps {
17
18
  }
18
19
  export interface CardProps extends ComponentPropsWithRef<'div'>, SxProps {
19
20
  variant?: CardVariant;
21
+ /** `contrast` paints the dark theme's own palette for this card on any page theme. */
22
+ appearance?: SurfaceAppearance;
20
23
  slotProps?: CardSlotProps;
21
24
  }
22
25
  export type CardHeaderProps = ComponentPropsWithRef<'div'> & SxProps;
@@ -26,7 +29,7 @@ export interface CardTitleProps extends ComponentPropsWithRef<'h3'>, SxProps {
26
29
  export type CardDescriptionProps = ComponentPropsWithRef<'p'> & SxProps;
27
30
  export type CardContentProps = ComponentPropsWithRef<'div'> & SxProps;
28
31
  export type CardFooterProps = ComponentPropsWithRef<'div'> & SxProps;
29
- declare function CardRoot({ ref, variant, slotProps, className, sx, ...rest }: CardProps): import("@emotion/react/jsx-runtime").JSX.Element;
32
+ declare function CardRoot({ ref, variant, appearance, slotProps, className, style, sx, ...rest }: CardProps): import("@emotion/react/jsx-runtime").JSX.Element;
30
33
  declare function CardHeader({ ref, className, sx, ...rest }: CardHeaderProps): import("@emotion/react/jsx-runtime").JSX.Element;
31
34
  declare function CardTitle({ ref, level, className, sx, ...rest }: CardTitleProps): import("@emotion/react/jsx-runtime").JSX.Element;
32
35
  declare function CardDescription({ ref, className, sx, ...rest }: CardDescriptionProps): import("@emotion/react/jsx-runtime").JSX.Element;
@@ -0,0 +1,130 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import { type SxProps } from '../../styling/sx';
3
+ import { type ThreadAuthor, type ThreadTimestamp } from '../thread/thread-core';
4
+ import { type ThreadButtonProps, type ThreadPartProps, type ThreadReactionLabels, type ThreadSize, type ThreadTextareaProps } from '../thread/thread-parts';
5
+ export type ChatParticipant = ThreadAuthor;
6
+ export type ChatThreadSize = ThreadSize;
7
+ export type ChatMessageStatus = 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
8
+ export interface ChatAttachment {
9
+ id: string;
10
+ name: string;
11
+ kind: 'image' | 'file';
12
+ url?: string;
13
+ size?: number;
14
+ width?: number;
15
+ height?: number;
16
+ alt?: string;
17
+ }
18
+ export interface ChatReaction {
19
+ emoji: string;
20
+ count: number;
21
+ mine?: boolean;
22
+ }
23
+ export interface ChatMessage {
24
+ id: string;
25
+ authorId: string;
26
+ text?: string;
27
+ createdAt: ThreadTimestamp;
28
+ attachments?: readonly ChatAttachment[];
29
+ reactions?: readonly ChatReaction[];
30
+ status?: ChatMessageStatus;
31
+ }
32
+ export interface ChatDraft {
33
+ text: string;
34
+ files: File[];
35
+ }
36
+ export type ChatThreadEvent = {
37
+ type: 'send';
38
+ message: ChatMessage;
39
+ draft: ChatDraft;
40
+ } | {
41
+ type: 'react';
42
+ id: string;
43
+ emoji: string;
44
+ added: boolean;
45
+ };
46
+ export interface ChatThreadLabels extends ThreadReactionLabels {
47
+ conversation: string;
48
+ transcript: string;
49
+ composer: string;
50
+ placeholder: string;
51
+ send: string;
52
+ attach: string;
53
+ attachments: string;
54
+ sending: string;
55
+ sent: string;
56
+ delivered: string;
57
+ read: string;
58
+ failed: string;
59
+ retry: string;
60
+ jumpToLatest: string;
61
+ unknownAuthor: string;
62
+ empty: string;
63
+ invalidTime: string;
64
+ sendFailed: string;
65
+ removeFile: (name: string) => string;
66
+ readBy: (names: string) => string;
67
+ typing: (names: string) => string;
68
+ newMessages: (count: number) => string;
69
+ showAttachments: (count: number) => string;
70
+ fileRejected: (reason: 'type' | 'size' | 'count', name: string) => string;
71
+ }
72
+ type ChatThreadPart = 'viewport' | 'scroller' | 'log' | 'list' | 'message' | 'bubble' | 'time' | 'attachments' | 'receipt' | 'reaction';
73
+ export type ChatThreadSlotProps = Partial<Record<ChatThreadPart, ThreadPartProps>> & {
74
+ jumpButton?: ThreadButtonProps;
75
+ };
76
+ export type ChatThreadComposerSlotProps = Partial<Record<'tray' | 'file' | 'error', ThreadPartProps>> & {
77
+ form?: ComponentPropsWithRef<'form'>;
78
+ textarea?: ThreadTextareaProps;
79
+ attachButton?: ThreadButtonProps;
80
+ fileInput?: Omit<ComponentPropsWithRef<'input'>, 'type' | 'multiple' | 'accept' | 'disabled'>;
81
+ removeButton?: ThreadButtonProps;
82
+ sendButton?: ThreadButtonProps;
83
+ };
84
+ export interface ChatThreadComposerProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue' | 'onChange' | 'children'>, SxProps {
85
+ value?: ChatDraft;
86
+ defaultValue?: ChatDraft;
87
+ onValueChange?: (draft: ChatDraft) => void;
88
+ onSend: (draft: ChatDraft) => void | Promise<void>;
89
+ allowAttachments?: boolean;
90
+ accept?: string;
91
+ maxFiles?: number;
92
+ maxFileSize?: number;
93
+ disabled?: boolean;
94
+ placeholder?: string;
95
+ label?: string;
96
+ locale?: Intl.LocalesArgument;
97
+ size?: ChatThreadSize;
98
+ labels?: Partial<ChatThreadLabels>;
99
+ slotProps?: ChatThreadComposerSlotProps;
100
+ }
101
+ export interface ChatThreadProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue' | 'onChange' | 'children'>, SxProps {
102
+ participants: readonly ChatParticipant[];
103
+ currentUserId: string;
104
+ value?: readonly ChatMessage[];
105
+ defaultValue?: readonly ChatMessage[];
106
+ onValueChange?: (next: ChatMessage[], event: ChatThreadEvent) => void;
107
+ now: number;
108
+ locale?: Intl.LocalesArgument;
109
+ timeZone?: string;
110
+ typing?: readonly string[];
111
+ readBy?: Readonly<Record<string, string>>;
112
+ onSend?: (draft: ChatDraft) => void | Promise<void>;
113
+ onReact?: (id: string, emoji: string) => void;
114
+ onRetry?: (id: string) => void | Promise<void>;
115
+ reactions?: readonly string[];
116
+ groupWindow?: number;
117
+ composer?: boolean;
118
+ disabled?: boolean;
119
+ composerProps?: Omit<ChatThreadComposerProps, 'onSend'>;
120
+ getNewId?: () => string;
121
+ size?: ChatThreadSize;
122
+ labels?: Partial<ChatThreadLabels>;
123
+ slotProps?: ChatThreadSlotProps;
124
+ }
125
+ declare function Composer(props: ChatThreadComposerProps): import("@emotion/react/jsx-runtime").JSX.Element;
126
+ declare function ChatThreadRoot({ ref, participants, currentUserId, value, defaultValue, onValueChange, now, locale, timeZone, typing, readBy, onSend, onReact, onRetry, reactions, groupWindow, composer, disabled, composerProps, getNewId, size, labels: labelProps, slotProps, className, sx, ...rest }: ChatThreadProps): import("@emotion/react/jsx-runtime").JSX.Element;
127
+ export declare const ChatThread: typeof ChatThreadRoot & {
128
+ Composer: typeof Composer;
129
+ };
130
+ export {};
@@ -0,0 +1,2 @@
1
+ export { ChatThread } from './chat-thread';
2
+ export type { ChatAttachment, ChatDraft, ChatMessage, ChatMessageStatus, ChatParticipant, ChatReaction, ChatThreadComposerProps, ChatThreadComposerSlotProps, ChatThreadEvent, ChatThreadLabels, ChatThreadProps, ChatThreadSize, ChatThreadSlotProps, } from './chat-thread';
@@ -19,7 +19,7 @@ export interface CheckboxProps extends Omit<ComponentPropsWithRef<'input'>, 'siz
19
19
  description?: CheckboxPartProps;
20
20
  };
21
21
  }
22
- export declare function Checkbox({ ref, label, description, indeterminate, size, onChange, onCheckedChange, slotProps, className, sx, 'aria-labelledby': ariaLabelledByProp, 'aria-describedby': ariaDescribedByProp, ...rest }: CheckboxProps): import("@emotion/react/jsx-runtime").JSX.Element;
22
+ export declare function Checkbox({ ref, label, description, indeterminate, size, onChange, onCheckedChange, slotProps, className, sx, dir, 'aria-labelledby': ariaLabelledByProp, 'aria-describedby': ariaDescribedByProp, ...rest }: CheckboxProps): import("@emotion/react/jsx-runtime").JSX.Element;
23
23
  export declare namespace Checkbox {
24
24
  var displayName: string;
25
25
  }
@@ -42,7 +42,7 @@ declare function CommandPaletteInput({ ref, onChange, onKeyDown, className, sx,
42
42
  declare function CommandPaletteList({ ref, onMouseDown, children, className, sx, ...rest }: CommandPaletteListProps): import("@emotion/react/jsx-runtime").JSX.Element;
43
43
  declare function CommandPaletteEmpty({ ref, children, className, sx, ...rest }: CommandPaletteEmptyProps): import("@emotion/react/jsx-runtime").JSX.Element | null;
44
44
  declare function CommandPaletteGroup({ ref, label, children, 'aria-labelledby': externalLabelledBy, className, sx, ...rest }: CommandPaletteGroupProps): import("@emotion/react/jsx-runtime").JSX.Element;
45
- declare function CommandPaletteItem({ ref, value, onSelect, keywords, onClick, children, className, sx, ...rest }: CommandPaletteItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
45
+ declare function CommandPaletteItem({ ref, value, onSelect, keywords, 'aria-disabled': ariaDisabled, onClick, children, className, sx, ...rest }: CommandPaletteItemProps): import("@emotion/react/jsx-runtime").JSX.Element;
46
46
  export declare const CommandPalette: typeof CommandPaletteRoot & {
47
47
  Trigger: typeof CommandPaletteTrigger;
48
48
  Content: typeof CommandPaletteContent;