@passui/react 0.1.46 → 0.2.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 (429) hide show
  1. package/README.md +29 -109
  2. package/THIRD_PARTY_NOTICES.md +29 -0
  3. package/dist/accordion.d.ts +15 -0
  4. package/dist/accordion.js +93 -0
  5. package/dist/alert-dialog.d.ts +26 -0
  6. package/dist/alert-dialog.js +142 -0
  7. package/dist/alert.d.ts +10 -0
  8. package/dist/alert.js +28 -0
  9. package/dist/{types/src/components/ambient/ambient.d.ts → ambient.d.ts} +4 -4
  10. package/dist/ambient.js +22 -0
  11. package/dist/{types/src/appearance → appearance}/platform.d.ts +3 -3
  12. package/dist/appearance/platform.js +43 -0
  13. package/dist/appearance/theme.d.ts +71 -0
  14. package/dist/appearance/theme.js +236 -0
  15. package/dist/appearance.d.ts +3 -0
  16. package/dist/appearance.js +3 -0
  17. package/dist/{types/src/components/aspect-ratio/aspect-ratio.d.ts → aspect-ratio.d.ts} +4 -4
  18. package/dist/aspect-ratio.js +17 -0
  19. package/dist/avatar.d.ts +5 -0
  20. package/dist/avatar.js +43 -0
  21. package/dist/badge.d.ts +8 -0
  22. package/dist/badge.js +21 -0
  23. package/dist/breadcrumb.d.ts +13 -0
  24. package/dist/breadcrumb.js +63 -0
  25. package/dist/button-group.d.ts +5 -0
  26. package/dist/button-group.js +14 -0
  27. package/dist/button.d.ts +21 -0
  28. package/dist/button.js +58 -0
  29. package/dist/calendar.d.ts +35 -0
  30. package/dist/calendar.js +225 -0
  31. package/dist/card.d.ts +9 -0
  32. package/dist/card.js +54 -0
  33. package/dist/chart.d.ts +30 -0
  34. package/dist/chart.js +226 -0
  35. package/dist/checkbox.d.ts +13 -0
  36. package/dist/checkbox.js +53 -0
  37. package/dist/{types/src/lib/clipboard.d.ts → clipboard.d.ts} +1 -1
  38. package/dist/clipboard.js +16 -0
  39. package/dist/cn.d.ts +2 -0
  40. package/dist/cn.js +10 -0
  41. package/dist/code-block.d.ts +34 -0
  42. package/dist/code-block.js +87 -0
  43. package/dist/collapsible.d.ts +13 -0
  44. package/dist/collapsible.js +49 -0
  45. package/dist/combobox.d.ts +25 -0
  46. package/dist/combobox.js +112 -0
  47. package/dist/command.d.ts +22 -0
  48. package/dist/command.js +129 -0
  49. package/dist/components/toast/toast-store.d.ts +60 -0
  50. package/dist/components/toast/toast-store.js +96 -0
  51. package/dist/{types/src/components → components}/toast/toaster.d.ts +4 -4
  52. package/dist/components/toast/toaster.js +345 -0
  53. package/dist/context-menu.d.ts +2 -0
  54. package/dist/context-menu.js +2 -0
  55. package/dist/conversation.d.ts +48 -0
  56. package/dist/conversation.js +202 -0
  57. package/dist/date-time-picker.d.ts +50 -0
  58. package/dist/date-time-picker.js +235 -0
  59. package/dist/date.d.ts +50 -0
  60. package/dist/date.js +77 -0
  61. package/dist/dialog.d.ts +21 -0
  62. package/dist/dialog.js +113 -0
  63. package/dist/drawer.d.ts +30 -0
  64. package/dist/drawer.js +140 -0
  65. package/dist/dropdown-menu.d.ts +56 -0
  66. package/dist/dropdown-menu.js +295 -0
  67. package/dist/empty.d.ts +11 -0
  68. package/dist/empty.js +51 -0
  69. package/dist/field.d.ts +16 -0
  70. package/dist/field.js +47 -0
  71. package/{src/hooks/scroll/minimize-decision.ts → dist/hooks/scroll/minimize-decision.js} +3 -5
  72. package/dist/{types/src/hooks → hooks}/use-anchored-placement.d.ts +2 -2
  73. package/dist/hooks/use-anchored-placement.js +33 -0
  74. package/dist/{types/src/hooks → hooks}/use-minimize-on-scroll.d.ts +1 -1
  75. package/dist/hooks/use-minimize-on-scroll.js +59 -0
  76. package/dist/{types/src/hooks → hooks}/use-visual-viewport.d.ts +2 -2
  77. package/{src/hooks/use-visual-viewport.ts → dist/hooks/use-visual-viewport.js} +20 -35
  78. package/dist/hooks/viewport/types.d.ts +7 -0
  79. package/dist/hooks/viewport/viewport-metrics.js +13 -0
  80. package/dist/index.d.ts +84 -0
  81. package/dist/index.js +80 -0
  82. package/dist/input-group.d.ts +17 -0
  83. package/dist/input-group.js +55 -0
  84. package/dist/input-otp.d.ts +13 -0
  85. package/dist/input-otp.js +36 -0
  86. package/dist/input.d.ts +4 -0
  87. package/dist/input.js +14 -0
  88. package/dist/item.d.ts +49 -0
  89. package/dist/item.js +142 -0
  90. package/dist/kbd.d.ts +4 -0
  91. package/dist/kbd.js +86 -0
  92. package/dist/label.d.ts +3 -0
  93. package/dist/label.js +12 -0
  94. package/dist/labeled-content.d.ts +24 -0
  95. package/dist/labeled-content.js +41 -0
  96. package/dist/{types/src/lib/language.d.ts → language.d.ts} +1 -1
  97. package/dist/language.js +11 -0
  98. package/dist/layout.d.ts +24 -0
  99. package/dist/layout.js +36 -0
  100. package/dist/{types/src/lib → lib}/anchored-placement.d.ts +27 -27
  101. package/dist/lib/anchored-placement.js +42 -0
  102. package/dist/lib/calendar-month.js +90 -0
  103. package/dist/lib/cx.js +6 -0
  104. package/dist/lib/drawer.math.js +29 -0
  105. package/dist/lib/floating-layers.d.ts +3 -0
  106. package/dist/lib/floating-layers.js +25 -0
  107. package/dist/{types/src/lib → lib}/haptics.d.ts +1 -1
  108. package/dist/lib/haptics.js +13 -0
  109. package/dist/lib/liquid-step.js +33 -0
  110. package/dist/lib/page-scale.js +58 -0
  111. package/dist/lib/portal.js +12 -0
  112. package/dist/lib/presence.js +53 -0
  113. package/dist/lib/range-value.js +25 -0
  114. package/dist/lib/render.d.ts +8 -0
  115. package/dist/lib/render.js +42 -0
  116. package/dist/lib/rolling-digit.js +83 -0
  117. package/dist/{types/src/lib → lib}/screen-edges.d.ts +5 -5
  118. package/dist/lib/screen-edges.js +30 -0
  119. package/dist/lib/swipe-touch-action.js +34 -0
  120. package/dist/lib/visual-viewport.js +27 -0
  121. package/dist/lib/water-drop.js +412 -0
  122. package/dist/lib/wheel.js +125 -0
  123. package/dist/list.d.ts +26 -0
  124. package/dist/list.js +80 -0
  125. package/dist/locales.d.ts +18 -0
  126. package/dist/locales.js +36 -0
  127. package/dist/marker.d.ts +13 -0
  128. package/dist/marker.js +33 -0
  129. package/dist/motion/transitions.d.ts +170 -0
  130. package/dist/motion/transitions.js +156 -0
  131. package/dist/pagination.d.ts +30 -0
  132. package/dist/pagination.js +117 -0
  133. package/dist/popover.d.ts +26 -0
  134. package/dist/popover.js +101 -0
  135. package/dist/progress.d.ts +9 -0
  136. package/dist/progress.js +24 -0
  137. package/dist/questionnaire.d.ts +46 -0
  138. package/dist/questionnaire.js +133 -0
  139. package/dist/radio-group.d.ts +21 -0
  140. package/dist/radio-group.js +67 -0
  141. package/dist/search-field.d.ts +18 -0
  142. package/dist/search-field.js +45 -0
  143. package/dist/segmented-control.d.ts +16 -0
  144. package/dist/segmented-control.js +25 -0
  145. package/dist/select.d.ts +24 -0
  146. package/dist/select.js +107 -0
  147. package/dist/separator.d.ts +9 -0
  148. package/dist/separator.js +17 -0
  149. package/dist/{types/src/lib/shapes.d.ts → shapes.d.ts} +2 -2
  150. package/dist/shapes.js +65 -0
  151. package/dist/sheet.d.ts +24 -0
  152. package/dist/sheet.js +141 -0
  153. package/dist/sidebar.d.ts +32 -0
  154. package/dist/sidebar.js +85 -0
  155. package/dist/skeleton.d.ts +3 -0
  156. package/dist/skeleton.js +13 -0
  157. package/dist/slider.d.ts +9 -0
  158. package/dist/slider.js +42 -0
  159. package/dist/slosh-slider.d.ts +21 -0
  160. package/dist/slosh-slider.js +205 -0
  161. package/dist/spinner.d.ts +3 -0
  162. package/dist/spinner.js +20 -0
  163. package/dist/stat-tile.d.ts +20 -0
  164. package/dist/stat-tile.js +53 -0
  165. package/dist/stepper.d.ts +22 -0
  166. package/dist/stepper.js +98 -0
  167. package/dist/swatch-picker.d.ts +22 -0
  168. package/dist/swatch-picker.js +70 -0
  169. package/dist/switch.d.ts +10 -0
  170. package/dist/switch.js +44 -0
  171. package/dist/tab-bar.d.ts +15 -0
  172. package/dist/tab-bar.js +34 -0
  173. package/dist/{types/src/components/table/table.d.ts → table.d.ts} +3 -3
  174. package/dist/table.js +93 -0
  175. package/dist/tabs.d.ts +32 -0
  176. package/dist/tabs.js +131 -0
  177. package/dist/text.d.ts +25 -0
  178. package/dist/text.js +44 -0
  179. package/dist/textarea.d.ts +3 -0
  180. package/dist/textarea.js +13 -0
  181. package/dist/toast.d.ts +3 -0
  182. package/dist/toast.js +3 -0
  183. package/dist/toggle-group.d.ts +20 -0
  184. package/dist/toggle-group.js +68 -0
  185. package/dist/toggle.d.ts +24 -0
  186. package/dist/toggle.js +37 -0
  187. package/dist/tokens.d.ts +1 -0
  188. package/dist/tooltip.d.ts +21 -0
  189. package/dist/tooltip.js +61 -0
  190. package/dist/trace.d.ts +14 -0
  191. package/dist/trace.js +54 -0
  192. package/dist/{types/src/hooks/use-dismiss.d.ts → use-dismiss.d.ts} +3 -3
  193. package/dist/use-dismiss.js +38 -0
  194. package/dist/{types/src/hooks/use-media-query.d.ts → use-media-query.d.ts} +12 -12
  195. package/dist/use-media-query.js +56 -0
  196. package/dist/use-os.d.ts +12 -0
  197. package/dist/use-os.js +17 -0
  198. package/dist/wake-slider.d.ts +15 -0
  199. package/dist/wake-slider.js +174 -0
  200. package/package.json +122 -253
  201. package/src/styles/code-block.css +4 -0
  202. package/src/styles/globals.css +5 -0
  203. package/src/styles/motion-controls.css +10 -0
  204. package/src/styles/page-scale.css +27 -0
  205. package/src/styles/styles.css +4 -2
  206. package/dist/types/src/appearance/index.d.ts +0 -2
  207. package/dist/types/src/appearance/theme.d.ts +0 -71
  208. package/dist/types/src/components/accordion/accordion.d.ts +0 -23
  209. package/dist/types/src/components/ambient/index.d.ts +0 -1
  210. package/dist/types/src/components/breadcrumb/breadcrumb.d.ts +0 -19
  211. package/dist/types/src/components/button/button-styles.d.ts +0 -12
  212. package/dist/types/src/components/button/button.d.ts +0 -32
  213. package/dist/types/src/components/button/icon-button.d.ts +0 -10
  214. package/dist/types/src/components/button/pending-spinner.d.ts +0 -5
  215. package/dist/types/src/components/button/use-pending-indicator.d.ts +0 -2
  216. package/dist/types/src/components/chip/chip.d.ts +0 -10
  217. package/dist/types/src/components/code-block/code-block.d.ts +0 -13
  218. package/dist/types/src/components/combo-box/combo-box.d.ts +0 -9
  219. package/dist/types/src/components/command/command.d.ts +0 -18
  220. package/dist/types/src/components/compact-date-picker/calendar-month.d.ts +0 -25
  221. package/dist/types/src/components/compact-date-picker/compact-date-picker.d.ts +0 -30
  222. package/dist/types/src/components/compact-time-picker/compact-time-picker.d.ts +0 -29
  223. package/dist/types/src/components/compact-time-picker/time-value.d.ts +0 -18
  224. package/dist/types/src/components/content-unavailable-view/content-unavailable-view.d.ts +0 -12
  225. package/dist/types/src/components/content-view/content-view.d.ts +0 -51
  226. package/dist/types/src/components/content-view/index.d.ts +0 -1
  227. package/dist/types/src/components/context-menu/conceal-menu-source.d.ts +0 -2
  228. package/dist/types/src/components/context-menu/context-menu-host.d.ts +0 -2
  229. package/dist/types/src/components/context-menu/context-menu-store.d.ts +0 -62
  230. package/dist/types/src/components/context-menu/menu-navigation.d.ts +0 -6
  231. package/dist/types/src/components/context-menu/menu-position.d.ts +0 -21
  232. package/dist/types/src/components/context-menu/menu-reveal.d.ts +0 -26
  233. package/dist/types/src/components/context-menu/use-context-menu.d.ts +0 -14
  234. package/dist/types/src/components/conversation/conversation.d.ts +0 -48
  235. package/dist/types/src/components/conversation/index.d.ts +0 -1
  236. package/dist/types/src/components/date-picker/date-picker.d.ts +0 -19
  237. package/dist/types/src/components/date-picker/date-value.d.ts +0 -2
  238. package/dist/types/src/components/dialog/dialog-host.d.ts +0 -6
  239. package/dist/types/src/components/dialog/dialog-store.d.ts +0 -23
  240. package/dist/types/src/components/dialog/dialog.d.ts +0 -33
  241. package/dist/types/src/components/dialog/index.d.ts +0 -1
  242. package/dist/types/src/components/disclosure-group/disclosure-group.d.ts +0 -18
  243. package/dist/types/src/components/divider/divider.d.ts +0 -9
  244. package/dist/types/src/components/inline-disclosure/inline-disclosure.d.ts +0 -15
  245. package/dist/types/src/components/keyboard-shortcut/keyboard-shortcut.d.ts +0 -8
  246. package/dist/types/src/components/labeled-content/labeled-content.d.ts +0 -22
  247. package/dist/types/src/components/locale-switcher/index.d.ts +0 -1
  248. package/dist/types/src/components/locale-switcher/locale-switcher.d.ts +0 -13
  249. package/dist/types/src/components/menu/menu.d.ts +0 -16
  250. package/dist/types/src/components/morph/index.d.ts +0 -2
  251. package/dist/types/src/components/morph/morph.d.ts +0 -32
  252. package/dist/types/src/components/morph/use-morph-disclosure.d.ts +0 -13
  253. package/dist/types/src/components/one-time-code/one-time-code.d.ts +0 -26
  254. package/dist/types/src/components/picker/picker-trigger.d.ts +0 -3
  255. package/dist/types/src/components/picker/picker.d.ts +0 -46
  256. package/dist/types/src/components/popover/anchored-surface.d.ts +0 -17
  257. package/dist/types/src/components/popover/index.d.ts +0 -41
  258. package/dist/types/src/components/popover/popover-content.d.ts +0 -32
  259. package/dist/types/src/components/popover/popover-fit.d.ts +0 -21
  260. package/dist/types/src/components/popover/popover-root.d.ts +0 -22
  261. package/dist/types/src/components/popover/popover-trigger.d.ts +0 -23
  262. package/dist/types/src/components/profile-image/profile-image.d.ts +0 -9
  263. package/dist/types/src/components/progress-view/progress-view.d.ts +0 -13
  264. package/dist/types/src/components/progress-view/use-liquid-progress.d.ts +0 -3
  265. package/dist/types/src/components/radio-group/radio-group.d.ts +0 -20
  266. package/dist/types/src/components/search-field/expanding-search-field.d.ts +0 -5
  267. package/dist/types/src/components/search-field/search-field.d.ts +0 -9
  268. package/dist/types/src/components/search-list/search-list.d.ts +0 -22
  269. package/dist/types/src/components/section/section.d.ts +0 -18
  270. package/dist/types/src/components/secure-field/secure-field.d.ts +0 -4
  271. package/dist/types/src/components/segmented-control/segmented-control.d.ts +0 -25
  272. package/dist/types/src/components/sheet/modal-environment.d.ts +0 -2
  273. package/dist/types/src/components/sheet/sheet-portal.d.ts +0 -5
  274. package/dist/types/src/components/sheet/sheet.d.ts +0 -26
  275. package/dist/types/src/components/sheet/use-sheet-focus.d.ts +0 -3
  276. package/dist/types/src/components/sidebar/sidebar.d.ts +0 -24
  277. package/dist/types/src/components/skeleton/skeleton.d.ts +0 -9
  278. package/dist/types/src/components/slider/slider.d.ts +0 -17
  279. package/dist/types/src/components/slosh-slider/liquid-step.d.ts +0 -6
  280. package/dist/types/src/components/slosh-slider/slosh-slider.d.ts +0 -21
  281. package/dist/types/src/components/stat-tile/index.d.ts +0 -1
  282. package/dist/types/src/components/stat-tile/stat-tile.d.ts +0 -20
  283. package/dist/types/src/components/status-indicator/status-indicator.d.ts +0 -17
  284. package/dist/types/src/components/stepper/rolling-digit.d.ts +0 -11
  285. package/dist/types/src/components/stepper/stepper.d.ts +0 -22
  286. package/dist/types/src/components/swatch-picker/swatch-picker.d.ts +0 -22
  287. package/dist/types/src/components/tab-bar/tab-bar.d.ts +0 -43
  288. package/dist/types/src/components/tab-view/tab-view.d.ts +0 -27
  289. package/dist/types/src/components/text-editor/text-editor.d.ts +0 -9
  290. package/dist/types/src/components/text-field/text-field.d.ts +0 -33
  291. package/dist/types/src/components/toast/toast-store.d.ts +0 -52
  292. package/dist/types/src/components/toggle/toggle.d.ts +0 -22
  293. package/dist/types/src/components/tooltip/tooltip-host.d.ts +0 -7
  294. package/dist/types/src/components/view-controller/index.d.ts +0 -1
  295. package/dist/types/src/components/view-controller/view-controller.d.ts +0 -21
  296. package/dist/types/src/components/wake-slider/wake-slider.d.ts +0 -15
  297. package/dist/types/src/hooks/scroll/minimize-decision.d.ts +0 -2
  298. package/dist/types/src/hooks/use-anchored-disclosure.d.ts +0 -9
  299. package/dist/types/src/hooks/use-floating-dismiss.d.ts +0 -3
  300. package/dist/types/src/hooks/viewport/types.d.ts +0 -19
  301. package/dist/types/src/hooks/viewport/viewport-metrics.d.ts +0 -3
  302. package/dist/types/src/icons/icons.d.ts +0 -616
  303. package/dist/types/src/index.d.ts +0 -73
  304. package/dist/types/src/lib/class-names.d.ts +0 -2
  305. package/dist/types/src/lib/date.d.ts +0 -50
  306. package/dist/types/src/lib/floating-layers.d.ts +0 -8
  307. package/dist/types/src/lib/range-value.d.ts +0 -4
  308. package/dist/types/src/machines/popover.machine.d.ts +0 -30
  309. package/dist/types/src/motion/transitions.d.ts +0 -170
  310. package/src/appearance/index.ts +0 -2
  311. package/src/appearance/platform.tsx +0 -102
  312. package/src/appearance/theme.tsx +0 -467
  313. package/src/components/accordion/accordion.tsx +0 -70
  314. package/src/components/ambient/ambient.tsx +0 -35
  315. package/src/components/ambient/index.ts +0 -1
  316. package/src/components/aspect-ratio/aspect-ratio.tsx +0 -27
  317. package/src/components/breadcrumb/breadcrumb.tsx +0 -73
  318. package/src/components/button/button-styles.ts +0 -49
  319. package/src/components/button/button.tsx +0 -107
  320. package/src/components/button/icon-button.tsx +0 -33
  321. package/src/components/button/pending-spinner.tsx +0 -14
  322. package/src/components/button/use-pending-indicator.ts +0 -22
  323. package/src/components/chip/chip.tsx +0 -45
  324. package/src/components/code-block/code-block.tsx +0 -48
  325. package/src/components/combo-box/combo-box.tsx +0 -13
  326. package/src/components/command/command.tsx +0 -149
  327. package/src/components/compact-date-picker/calendar-month.ts +0 -109
  328. package/src/components/compact-date-picker/compact-date-picker.tsx +0 -337
  329. package/src/components/compact-time-picker/compact-time-picker.tsx +0 -321
  330. package/src/components/compact-time-picker/time-value.ts +0 -58
  331. package/src/components/content-unavailable-view/content-unavailable-view.tsx +0 -78
  332. package/src/components/content-view/content-view.tsx +0 -215
  333. package/src/components/content-view/index.ts +0 -1
  334. package/src/components/context-menu/conceal-menu-source.ts +0 -30
  335. package/src/components/context-menu/context-menu-host.tsx +0 -459
  336. package/src/components/context-menu/context-menu-store.ts +0 -167
  337. package/src/components/context-menu/menu-navigation.ts +0 -36
  338. package/src/components/context-menu/menu-position.ts +0 -38
  339. package/src/components/context-menu/menu-reveal.ts +0 -42
  340. package/src/components/context-menu/use-context-menu.ts +0 -73
  341. package/src/components/conversation/conversation.tsx +0 -309
  342. package/src/components/conversation/index.ts +0 -1
  343. package/src/components/date-picker/date-picker.tsx +0 -106
  344. package/src/components/date-picker/date-value.ts +0 -22
  345. package/src/components/dialog/dialog-host.tsx +0 -119
  346. package/src/components/dialog/dialog-store.ts +0 -66
  347. package/src/components/dialog/dialog.tsx +0 -211
  348. package/src/components/dialog/index.ts +0 -1
  349. package/src/components/disclosure-group/disclosure-group.tsx +0 -108
  350. package/src/components/divider/divider.tsx +0 -33
  351. package/src/components/inline-disclosure/inline-disclosure.tsx +0 -53
  352. package/src/components/keyboard-shortcut/keyboard-shortcut.tsx +0 -32
  353. package/src/components/labeled-content/labeled-content.tsx +0 -84
  354. package/src/components/locale-switcher/index.ts +0 -1
  355. package/src/components/locale-switcher/locale-switcher.tsx +0 -311
  356. package/src/components/menu/menu.tsx +0 -85
  357. package/src/components/morph/index.ts +0 -2
  358. package/src/components/morph/morph.tsx +0 -258
  359. package/src/components/morph/use-morph-disclosure.ts +0 -27
  360. package/src/components/one-time-code/one-time-code.tsx +0 -234
  361. package/src/components/picker/picker-trigger.ts +0 -22
  362. package/src/components/picker/picker.tsx +0 -404
  363. package/src/components/popover/anchored-surface.tsx +0 -264
  364. package/src/components/popover/index.ts +0 -50
  365. package/src/components/popover/popover-content.tsx +0 -334
  366. package/src/components/popover/popover-fit.ts +0 -74
  367. package/src/components/popover/popover-root.tsx +0 -97
  368. package/src/components/popover/popover-trigger.tsx +0 -71
  369. package/src/components/profile-image/profile-image.tsx +0 -96
  370. package/src/components/progress-view/progress-view.tsx +0 -72
  371. package/src/components/progress-view/use-liquid-progress.ts +0 -43
  372. package/src/components/radio-group/radio-group.tsx +0 -86
  373. package/src/components/search-field/expanding-search-field.tsx +0 -197
  374. package/src/components/search-field/search-field.tsx +0 -66
  375. package/src/components/search-list/search-list.tsx +0 -276
  376. package/src/components/section/section.tsx +0 -75
  377. package/src/components/secure-field/secure-field.tsx +0 -8
  378. package/src/components/segmented-control/segmented-control.tsx +0 -157
  379. package/src/components/sheet/modal-environment.ts +0 -82
  380. package/src/components/sheet/sheet-portal.tsx +0 -62
  381. package/src/components/sheet/sheet.tsx +0 -165
  382. package/src/components/sheet/use-sheet-focus.ts +0 -109
  383. package/src/components/sidebar/sidebar.tsx +0 -102
  384. package/src/components/skeleton/skeleton.tsx +0 -38
  385. package/src/components/slider/slider.tsx +0 -134
  386. package/src/components/slosh-slider/liquid-step.ts +0 -43
  387. package/src/components/slosh-slider/slosh-slider.tsx +0 -294
  388. package/src/components/stat-tile/index.ts +0 -1
  389. package/src/components/stat-tile/stat-tile.tsx +0 -90
  390. package/src/components/status-indicator/status-indicator.tsx +0 -54
  391. package/src/components/stepper/rolling-digit.tsx +0 -91
  392. package/src/components/stepper/stepper.tsx +0 -136
  393. package/src/components/swatch-picker/swatch-picker.tsx +0 -138
  394. package/src/components/tab-bar/tab-bar.tsx +0 -182
  395. package/src/components/tab-view/tab-view.tsx +0 -155
  396. package/src/components/table/table.tsx +0 -151
  397. package/src/components/text-editor/text-editor.tsx +0 -42
  398. package/src/components/text-field/text-field.tsx +0 -200
  399. package/src/components/toast/toast-store.ts +0 -164
  400. package/src/components/toast/toaster.tsx +0 -407
  401. package/src/components/toggle/toggle.tsx +0 -320
  402. package/src/components/tooltip/tooltip-host.tsx +0 -178
  403. package/src/components/view-controller/index.ts +0 -1
  404. package/src/components/view-controller/view-controller.tsx +0 -75
  405. package/src/components/wake-slider/wake-slider.tsx +0 -260
  406. package/src/hooks/use-anchored-disclosure.ts +0 -23
  407. package/src/hooks/use-anchored-placement.ts +0 -40
  408. package/src/hooks/use-dismiss.ts +0 -44
  409. package/src/hooks/use-floating-dismiss.ts +0 -30
  410. package/src/hooks/use-media-query.ts +0 -94
  411. package/src/hooks/use-minimize-on-scroll.ts +0 -77
  412. package/src/hooks/viewport/types.ts +0 -19
  413. package/src/hooks/viewport/viewport-metrics.ts +0 -19
  414. package/src/icons/icons.tsx +0 -458
  415. package/src/index.ts +0 -107
  416. package/src/lib/anchored-placement.ts +0 -91
  417. package/src/lib/class-names.ts +0 -21
  418. package/src/lib/clipboard.ts +0 -15
  419. package/src/lib/date.ts +0 -86
  420. package/src/lib/floating-layers.ts +0 -53
  421. package/src/lib/haptics.ts +0 -23
  422. package/src/lib/language.ts +0 -16
  423. package/src/lib/range-value.ts +0 -38
  424. package/src/lib/screen-edges.ts +0 -44
  425. package/src/lib/shapes.ts +0 -59
  426. package/src/machines/popover.machine.ts +0 -51
  427. package/src/motion/transitions.ts +0 -97
  428. package/src/tokens.ts +0 -1
  429. /package/dist/{types/src/tokens.d.ts → tokens.js} +0 -0
@@ -1,74 +0,0 @@
1
- import {
2
- type PlacementFrame,
3
- placeInViewport,
4
- } from "../../lib/anchored-placement";
5
-
6
- interface PanelRect {
7
- left: number;
8
- top: number;
9
- width: number;
10
- height: number;
11
- }
12
-
13
- interface AnchorRect {
14
- top: number;
15
- bottom: number;
16
- }
17
-
18
- export interface PopoverFit {
19
- shiftX: number;
20
- shiftY: number;
21
- maxWidth: number;
22
- maxHeight?: number;
23
- above: boolean;
24
- }
25
-
26
- /** Keep an absolutely positioned popover visible without scaling its contents. */
27
- export function fitPopover(
28
- panel: PanelRect,
29
- anchor: AnchorRect | undefined,
30
- frame: Pick<PlacementFrame, "viewport" | "edges">,
31
- gap = 6,
32
- origin: "top-left" | "top-right" = "top-left",
33
- ): PopoverFit {
34
- const { viewport, edges } = frame;
35
- const topEdge = edges.top;
36
- const bottomEdge = viewport.height - edges.bottom;
37
- const availableHeight = Math.max(0, bottomEdge - topEdge);
38
- const placement = placeInViewport(
39
- {
40
- ...frame,
41
- anchor: {
42
- left: panel.left,
43
- top: anchor?.top ?? panel.top,
44
- bottom: anchor?.bottom ?? panel.top,
45
- },
46
- },
47
- panel.width,
48
- panel.height,
49
- gap,
50
- );
51
-
52
- const above = Boolean(
53
- anchor && panel.top + panel.height > bottomEdge && placement.above,
54
- );
55
- const aboveHeight = anchor ? Math.max(0, anchor.top - topEdge - gap) : 0;
56
- const visibleHeight = above
57
- ? Math.min(panel.height, aboveHeight)
58
- : Math.min(panel.height, availableHeight);
59
- const desiredTop = above
60
- ? (anchor?.top ?? panel.top) - gap - visibleHeight
61
- : Math.max(topEdge, Math.min(panel.top, bottomEdge - visibleHeight));
62
- const heightRoom = above ? aboveHeight : Math.max(0, bottomEdge - desiredTop);
63
-
64
- return {
65
- shiftX:
66
- placement.left -
67
- panel.left -
68
- (origin === "top-right" ? panel.width - placement.width : 0),
69
- shiftY: desiredTop - panel.top,
70
- maxWidth: Math.max(0, viewport.width - edges.left - edges.right),
71
- maxHeight: panel.height > heightRoom ? heightRoom : undefined,
72
- above,
73
- };
74
- }
@@ -1,97 +0,0 @@
1
- import {
2
- type ReactNode,
3
- useEffect,
4
- useId,
5
- useReducer,
6
- useRef,
7
- type RefObject,
8
- } from "react";
9
- import { createContext, useContext } from "react";
10
- import {
11
- popoverMachine,
12
- type PopoverContextValue,
13
- type PopoverEvent,
14
- type PopoverState,
15
- } from "../../machines/popover.machine";
16
-
17
- const PopoverContext = createContext<PopoverContextValue | null>(null);
18
-
19
- export function usePopover(): PopoverContextValue {
20
- const ctx = useContext(PopoverContext);
21
- if (!ctx) throw new Error("Popover parts need a <Popover.Root> parent");
22
- return ctx;
23
- }
24
-
25
- export interface PopoverRootProps {
26
- children: ReactNode;
27
- /**
28
- * Start open (uncontrolled) or set the initial state.
29
- * Ignored when `open` is provided.
30
- */
31
- defaultOpen?: boolean;
32
- /**
33
- * Controlled open state. When provided, the popover is driven by this
34
- * prop: setting it to true opens, false closes. The internal machine
35
- * still runs the open/close transitions so the morph can play.
36
- */
37
- open?: boolean;
38
- /** Called when the popover finishes opening or closing. */
39
- onOpenChange?: (open: boolean) => void;
40
- }
41
-
42
- export function PopoverRoot({
43
- children,
44
- defaultOpen = false,
45
- open,
46
- onOpenChange,
47
- }: PopoverRootProps) {
48
- const [state, dispatch] = useReducer(
49
- popoverMachine,
50
- defaultOpen ? "opening" : ("closed" satisfies PopoverState),
51
- );
52
- const triggerRef = useRef<HTMLElement | null>(null);
53
- const contentId = useId();
54
- const surfaceId = useId();
55
- const onOpenChangeRef = useRef(onOpenChange);
56
-
57
- // Keep the latest callback without re-rendering the tree.
58
- // eslint-disable-next-line react-hooks/exhaustive-deps
59
- onOpenChangeRef.current = onOpenChange;
60
-
61
- const send = (event: PopoverEvent) => {
62
- const next = popoverMachine(state, event);
63
- if (next !== state) {
64
- dispatch(event);
65
- // Fire onOpenChange only when fully open or fully closed — not
66
- // during transitions. This lets the consumer close the popover
67
- // (set open=false) and have it animate out, rather than unmounting.
68
- if (next === "open") onOpenChangeRef.current?.(true);
69
- if (next === "closed") onOpenChangeRef.current?.(false);
70
- }
71
- };
72
-
73
- // Controlled mode: drive OPEN/CLOSE from the `open` prop. The machine
74
- // still runs the morph transitions; we only nudge it when the desired
75
- // presence differs from the current presence.
76
- const present = state !== "closed";
77
- useEffect(() => {
78
- if (open === undefined) return;
79
- if (open && !present) send("OPEN");
80
- if (!open && present) send("CLOSE");
81
- // eslint-disable-next-line react-hooks/exhaustive-deps
82
- }, [open]);
83
-
84
- const isPresent = present;
85
-
86
- return (
87
- <PopoverContext
88
- value={{ state, send, triggerRef, contentId, surfaceId, isPresent }}
89
- >
90
- {children}
91
- </PopoverContext>
92
- );
93
- }
94
-
95
- // Re-export the context type for consumers that need it.
96
- export type { PopoverContextValue };
97
- export type { RefObject };
@@ -1,71 +0,0 @@
1
- import { type ReactNode, cloneElement, isValidElement } from "react";
2
- import { usePopover } from "./popover-root";
3
-
4
- export type PopoverTriggerRenderProps = {
5
- ref: (node: HTMLElement | null) => void;
6
- "aria-haspopup": "dialog";
7
- "aria-expanded": boolean;
8
- "aria-controls": string | undefined;
9
- onClick: () => void;
10
- onKeyDown: (event: React.KeyboardEvent) => void;
11
- };
12
-
13
- export interface PopoverTriggerProps {
14
- /** The trigger content when using render prop. */
15
- children?: ReactNode;
16
- /**
17
- * Render prop: receives the trigger props (ref, aria, onClick) and
18
- * returns the trigger element. This prevents ref-passing conflicts
19
- * when multiple triggers exist — borrowed from Base UI.
20
- *
21
- * If you pass a single element as children instead, it will be
22
- * cloned with the trigger props merged in.
23
- */
24
- render?: (props: PopoverTriggerRenderProps) => ReactNode;
25
- }
26
-
27
- export function PopoverTrigger({ children, render }: PopoverTriggerProps) {
28
- const { state, send, triggerRef, contentId } = usePopover();
29
-
30
- const triggerProps: PopoverTriggerRenderProps = {
31
- ref: (node) => {
32
- triggerRef.current = node;
33
- },
34
- "aria-haspopup": "dialog",
35
- "aria-expanded": state === "open" || state === "opening",
36
- "aria-controls": state !== "closed" ? contentId : undefined,
37
- onClick: () => send("TOGGLE"),
38
- onKeyDown: (event) => {
39
- if (event.key === "Enter" || event.key === " ") {
40
- event.preventDefault();
41
- send("TOGGLE");
42
- }
43
- },
44
- };
45
-
46
- if (render) {
47
- return render(triggerProps);
48
- }
49
-
50
- // Clone a single child element with the trigger props merged.
51
- if (isValidElement(children)) {
52
- const child = children as React.ReactElement<Record<string, unknown>>;
53
- return cloneElement(child, {
54
- ref: (node: HTMLElement | null) => {
55
- triggerRef.current = node;
56
- },
57
- "aria-haspopup": "dialog",
58
- "aria-expanded": state === "open" || state === "opening",
59
- "aria-controls": state !== "closed" ? contentId : undefined,
60
- onClick: () => send("TOGGLE"),
61
- onKeyDown: (event: React.KeyboardEvent) => {
62
- if (event.key === "Enter" || event.key === " ") {
63
- event.preventDefault();
64
- send("TOGGLE");
65
- }
66
- },
67
- });
68
- }
69
-
70
- return null;
71
- }
@@ -1,96 +0,0 @@
1
- import {
2
- createContext,
3
- useContext,
4
- useEffect,
5
- useState,
6
- type ComponentProps,
7
- } from "react";
8
- import { cn } from "../../lib/class-names";
9
-
10
- export type ProfileImageSize = "sm" | "md" | "lg";
11
-
12
- const diameters: Record<ProfileImageSize, string> = {
13
- sm: "size-7",
14
- md: "size-9",
15
- lg: "size-12",
16
- };
17
-
18
- const fallbackTextSizes: Record<ProfileImageSize, string> = {
19
- sm: "text-caption",
20
- md: "text-footnote",
21
- lg: "text-subheadline",
22
- };
23
-
24
- const ImageContext = createContext<{
25
- loaded: boolean;
26
- setLoaded: (loaded: boolean) => void;
27
- size: ProfileImageSize;
28
- }>({ loaded: false, setLoaded: () => {}, size: "md" });
29
-
30
- export interface ProfileImageProps extends ComponentProps<"span"> {
31
- /** Avatar diameter; fallback initials scale with it. @default "md" */
32
- size?: ProfileImageSize;
33
- }
34
-
35
- export function ProfileImage({
36
- size = "md",
37
- className,
38
- ...props
39
- }: ProfileImageProps) {
40
- const [loaded, setLoaded] = useState(false);
41
- return (
42
- <ImageContext value={{ loaded, setLoaded, size }}>
43
- <span
44
- {...props}
45
- className={cn(
46
- "bg-fill text-label-secondary relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-full",
47
- diameters[size],
48
- className,
49
- )}
50
- />
51
- </ImageContext>
52
- );
53
- }
54
- export function ProfileImageContent({
55
- src,
56
- className,
57
- onLoad,
58
- onError,
59
- ...props
60
- }: ComponentProps<"img">) {
61
- const { setLoaded } = useContext(ImageContext);
62
- useEffect(() => {
63
- if (src) setLoaded(false);
64
- }, [src, setLoaded]);
65
- if (!src) return null;
66
- return (
67
- <img
68
- key={src}
69
- alt=""
70
- {...props}
71
- src={src}
72
- className={cn("absolute inset-0 size-full object-cover", className)}
73
- onLoad={(event) => {
74
- setLoaded(true);
75
- onLoad?.(event);
76
- }}
77
- onError={(event) => {
78
- setLoaded(false);
79
- onError?.(event);
80
- event.currentTarget.style.visibility = "hidden";
81
- }}
82
- />
83
- );
84
- }
85
- export function ProfileImageFallback({
86
- className,
87
- ...props
88
- }: ComponentProps<"span">) {
89
- const { loaded, size } = useContext(ImageContext);
90
- return loaded ? null : (
91
- <span
92
- {...props}
93
- className={cn(fallbackTextSizes[size], "font-medium", className)}
94
- />
95
- );
96
- }
@@ -1,72 +0,0 @@
1
- import { type HTMLAttributes, useRef } from "react";
2
- import { useLiquidProgress } from "./use-liquid-progress";
3
- import { cn } from "../../lib/class-names";
4
- import { clampRange } from "../../lib/range-value";
5
-
6
- export type ProgressViewSize = "sm" | "md" | "lg";
7
-
8
- export interface ProgressViewProps
9
- extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
10
- label: string;
11
- /** Omit for an indeterminate operation. */
12
- value?: number;
13
- max?: number;
14
- size?: ProgressViewSize;
15
- /** Secondary text, such as bytes uploaded. */
16
- detail?: string;
17
- }
18
-
19
- const trackHeight: Record<ProgressViewSize, string> = {
20
- sm: "h-1",
21
- md: "h-2",
22
- lg: "h-3",
23
- };
24
-
25
- /** A determinate or indeterminate progress track respecting reduced motion. */
26
- export function ProgressView({
27
- label,
28
- value,
29
- max = 100,
30
- size = "md",
31
- detail,
32
- className,
33
- ...props
34
- }: ProgressViewProps) {
35
- const limit = Number.isFinite(max) && max > 0 ? max : 100;
36
- const current = value === undefined ? undefined : clampRange(value, 0, limit);
37
- const progress = current === undefined ? undefined : (current / limit) * 100;
38
- const fill = useRef<HTMLDivElement>(null);
39
- useLiquidProgress(fill, progress);
40
-
41
- return (
42
- <div {...props} className={cn("flex min-w-0 flex-col gap-2", className)}>
43
- <div className="text-footnote flex items-center justify-between gap-3">
44
- <span className="text-label font-semibold">{label}</span>
45
- {detail && <span className="text-label-secondary">{detail}</span>}
46
- </div>
47
- <div
48
- role="progressbar"
49
- aria-label={label}
50
- aria-valuemin={current === undefined ? undefined : 0}
51
- aria-valuemax={current === undefined ? undefined : limit}
52
- aria-valuenow={current}
53
- className={cn(
54
- "bg-separator/70 relative w-full overflow-hidden rounded-full",
55
- trackHeight[size],
56
- )}
57
- >
58
- <div
59
- ref={fill}
60
- aria-hidden="true"
61
- className={cn(
62
- "bg-accent h-full rounded-full",
63
- current !== undefined && "passui-progress-fill",
64
- current === undefined &&
65
- "w-1/3 animate-pulse motion-reduce:animate-none",
66
- )}
67
- style={progress === undefined ? undefined : { width: `${progress}%` }}
68
- />
69
- </div>
70
- </div>
71
- );
72
- }
@@ -1,43 +0,0 @@
1
- import { type RefObject, useLayoutEffect, useRef } from "react";
2
- import { useMediaQuery } from "../../hooks/use-media-query";
3
- import { clampRange } from "../../lib/range-value";
4
- import { stepLiquid } from "../slosh-slider/liquid-step";
5
-
6
- /** Read-only progress shares the liquid fill without acquiring slider semantics. */
7
- export function useLiquidProgress(
8
- ref: RefObject<HTMLDivElement | null>,
9
- target: number | undefined,
10
- ) {
11
- const reduced = useMediaQuery("(prefers-reduced-motion: reduce)");
12
- const state = useRef({ fill: target ?? 0, velocity: 0 });
13
- useLayoutEffect(() => {
14
- const element = ref.current;
15
- if (!element || target === undefined) return;
16
- let frame = 0;
17
- let previous = 0;
18
- const paint = () => {
19
- element.style.width = `${state.current.fill}%`;
20
- element.style.setProperty(
21
- "--progress-lean",
22
- `${reduced ? 0 : clampRange(state.current.velocity * 0.4, -4, 4)}px`,
23
- );
24
- };
25
- if (reduced) {
26
- state.current = { fill: target, velocity: 0 };
27
- paint();
28
- return;
29
- }
30
- const tick = (now: number) => {
31
- const dt = previous ? Math.min(2.5, (now - previous) / 16.67) : 1;
32
- previous = now;
33
- state.current = stepLiquid(state.current, target, 15, dt);
34
- paint();
35
- if (state.current.fill !== target || state.current.velocity)
36
- frame = requestAnimationFrame(tick);
37
- };
38
- paint();
39
- if (state.current.fill !== target || state.current.velocity)
40
- frame = requestAnimationFrame(tick);
41
- return () => cancelAnimationFrame(frame);
42
- }, [ref, target, reduced]);
43
- }
@@ -1,86 +0,0 @@
1
- import { useId } from "react";
2
- import { cn } from "../../lib/class-names";
3
-
4
- export type RadioGroupSize = "sm" | "md" | "lg";
5
-
6
- const legendSizes: Record<RadioGroupSize, string> = {
7
- sm: "mb-1.5 text-caption2 font-medium text-label-secondary",
8
- md: "mb-2 text-footnote font-medium text-label-secondary",
9
- lg: "mb-2.5 text-subheadline font-medium text-label-secondary",
10
- };
11
- const rowSizes: Record<RadioGroupSize, string> = {
12
- sm: "flex min-h-7 items-start gap-1.5 text-footnote text-label has-disabled:opacity-40 [@media(pointer:coarse)]:min-h-10",
13
- md: "flex min-h-8 items-start gap-2 text-subheadline text-label has-disabled:opacity-40 [@media(pointer:coarse)]:min-h-11",
14
- lg: "flex min-h-10 items-start gap-2.5 text-body text-label has-disabled:opacity-40 [@media(pointer:coarse)]:min-h-12",
15
- };
16
- const radioSizes: Record<RadioGroupSize, string> = {
17
- sm: "mt-0.5 size-3.5 shrink-0 accent-accent-text focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-text",
18
- md: "mt-1 size-4 shrink-0 accent-accent-text focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-text",
19
- lg: "mt-1 size-5 shrink-0 accent-accent-text focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent-text",
20
- };
21
- const descriptionSizes: Record<RadioGroupSize, string> = {
22
- sm: "block text-caption2 text-label-secondary",
23
- md: "block text-footnote text-label-secondary",
24
- lg: "block text-subheadline text-label-secondary",
25
- };
26
-
27
- export interface RadioGroupOption<T extends string> {
28
- value: T;
29
- label: string;
30
- description?: string;
31
- disabled?: boolean;
32
- }
33
- export interface RadioGroupProps<T extends string> {
34
- value: T;
35
- onChange: (value: NoInfer<T>) => void;
36
- label: string;
37
- options: readonly RadioGroupOption<T>[];
38
- disabled?: boolean;
39
- name?: string;
40
- className?: string;
41
- /** Legend, row, radio glyph and description density. @default "md" */
42
- size?: RadioGroupSize;
43
- }
44
- /** A labelled choice group using the browser's native radio keyboard behavior. */
45
- export function RadioGroup<T extends string>({
46
- value,
47
- onChange,
48
- label,
49
- options,
50
- disabled,
51
- name,
52
- className,
53
- size = "md",
54
- }: RadioGroupProps<T>) {
55
- const id = useId();
56
- return (
57
- <fieldset
58
- disabled={disabled}
59
- className={cn("flex min-w-0 flex-col gap-2", className)}
60
- >
61
- <legend className={legendSizes[size]}>{label}</legend>
62
- {options.map((option, index) => (
63
- <label key={option.value} className={rowSizes[size]}>
64
- <input
65
- type="radio"
66
- name={name ?? id}
67
- value={option.value}
68
- checked={value === option.value}
69
- disabled={option.disabled}
70
- onChange={() => onChange(option.value)}
71
- aria-describedby={option.description ? `${id}-${index}` : undefined}
72
- className={radioSizes[size]}
73
- />
74
- <span>
75
- {option.label}
76
- {option.description && (
77
- <span id={`${id}-${index}`} className={descriptionSizes[size]}>
78
- {option.description}
79
- </span>
80
- )}
81
- </span>
82
- </label>
83
- ))}
84
- </fieldset>
85
- );
86
- }