@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,320 +0,0 @@
1
- import { CheckIcon } from "../../icons/icons";
2
- import {
3
- animate,
4
- motion,
5
- useMotionValue,
6
- useSpring,
7
- useTransform,
8
- useReducedMotion,
9
- } from "motion/react";
10
- import { useEffect, useId, useRef } from "react";
11
- import { cn } from "../../lib/class-names";
12
- import { haptic } from "../../lib/haptics";
13
- import { spring } from "../../motion/transitions";
14
-
15
- export type ToggleStyle = "switch" | "checkbox";
16
- export type ToggleSize = "sm" | "md" | "lg";
17
-
18
- const labelText: Record<ToggleSize, string> = {
19
- sm: "text-footnote",
20
- md: "text-subheadline",
21
- lg: "text-body",
22
- };
23
- const labelGap: Record<ToggleSize, string> = {
24
- sm: "gap-2",
25
- md: "gap-3",
26
- lg: "gap-3.5",
27
- };
28
- const checkboxBox: Record<ToggleSize, string> = {
29
- sm: "size-4 rounded-sm",
30
- md: "size-5 rounded-sm",
31
- lg: "size-6 rounded-md",
32
- };
33
- const checkIconSize: Record<ToggleSize, number> = {
34
- sm: 12,
35
- md: 14,
36
- lg: 16,
37
- };
38
- const mixedBar: Record<ToggleSize, string> = {
39
- sm: "h-0.5 w-2",
40
- md: "h-0.5 w-2.5",
41
- lg: "h-0.5 w-3",
42
- };
43
-
44
- // Switch physics: travel = track_width - thumb_width - 2*inset.
45
- // md: 50 - 26 - 2 = 22 ✓ sm: 44 - 22 - 2 = 20 ✓ lg: 56 - 30 - 2 = 24 ✓
46
- type SwitchGeo = {
47
- travel: number;
48
- inset: number;
49
- dropOffset: number;
50
- track: string;
51
- thumb: string;
52
- drop: string;
53
- dropTop: string;
54
- };
55
- const switchGeo: Record<ToggleSize, SwitchGeo> = {
56
- sm: {
57
- travel: 20,
58
- inset: 2,
59
- dropOffset: 4,
60
- track: "h-[26px] w-[44px]",
61
- thumb: "size-[22px]",
62
- drop: "size-3.5",
63
- dropTop: "top-[6px]",
64
- },
65
- md: {
66
- travel: 22,
67
- inset: 2,
68
- dropOffset: 5,
69
- track: "h-[30px] w-[50px]",
70
- thumb: "size-[26px]",
71
- drop: "size-4",
72
- dropTop: "top-[7px]",
73
- },
74
- lg: {
75
- travel: 24,
76
- inset: 2,
77
- dropOffset: 6,
78
- track: "h-[34px] w-[56px]",
79
- thumb: "size-[30px]",
80
- drop: "size-5",
81
- dropTop: "top-[8px]",
82
- },
83
- };
84
-
85
- export interface ToggleProps {
86
- /** Current on or off state. */
87
- checked: boolean;
88
- /** Called with the next checked state. */
89
- onChange: (checked: boolean) => void;
90
- /** Accessible name, including when the visible label is hidden. */
91
- label: string;
92
- disabled?: boolean;
93
- /** `switch` for a setting, `checkbox` for a selection. @default "switch" */
94
- style?: ToggleStyle;
95
- /** Reports a mixed selection to assistive technology. @default false */
96
- mixed?: boolean;
97
- /** Keeps the accessible name while hiding the visible label. @default false */
98
- labelHidden?: boolean;
99
- /** Switch track size, thumb travel, checkbox box and label text scale. @default "md" */
100
- size?: ToggleSize;
101
- /** Custom classes for the toggle container. */
102
- className?: string;
103
- }
104
-
105
- export function Toggle({
106
- checked,
107
- onChange,
108
- label,
109
- disabled,
110
- style = "switch",
111
- mixed = false,
112
- labelHidden = false,
113
- size = "md",
114
- className,
115
- }: ToggleProps) {
116
- const input = useRef<HTMLInputElement>(null);
117
- useEffect(() => {
118
- if (input.current) input.current.indeterminate = mixed;
119
- }, [mixed]);
120
- if (style === "checkbox") {
121
- return (
122
- <label
123
- className={cn(
124
- "flex cursor-pointer items-center",
125
- labelGap[size],
126
- labelText[size],
127
- disabled && "cursor-not-allowed opacity-40",
128
- className,
129
- )}
130
- >
131
- <span
132
- className={cn("relative inline-flex shrink-0", checkboxBox[size])}
133
- >
134
- <input
135
- ref={input}
136
- type="checkbox"
137
- aria-checked={mixed ? "mixed" : checked}
138
- checked={checked}
139
- disabled={disabled}
140
- onChange={(event) => onChange(event.target.checked)}
141
- className={cn(
142
- "peer cursor-inherit border-separator/80 bg-elevated checked:bg-accent indeterminate:bg-accent appearance-none border transition-colors checked:border-transparent indeterminate:border-transparent motion-reduce:transition-none",
143
- checkboxBox[size],
144
- "focus-visible:outline-accent-text focus-visible:outline-2 focus-visible:outline-offset-2",
145
- )}
146
- />
147
- {mixed ? (
148
- <span
149
- aria-hidden="true"
150
- className={cn(
151
- "bg-on-accent pointer-events-none absolute inset-0 m-auto rounded-full",
152
- mixedBar[size],
153
- )}
154
- />
155
- ) : (
156
- <CheckIcon
157
- aria-hidden="true"
158
- size={checkIconSize[size]}
159
- strokeWidth={2.5}
160
- className="text-on-accent pointer-events-none absolute inset-0 m-auto opacity-0 peer-checked:opacity-100"
161
- />
162
- )}
163
- </span>
164
- <span className={labelHidden ? "sr-only" : undefined}>{label}</span>
165
- </label>
166
- );
167
- }
168
- return (
169
- <SwitchToggle
170
- checked={checked}
171
- onChange={onChange}
172
- label={label}
173
- disabled={disabled}
174
- size={size}
175
- className={className}
176
- />
177
- );
178
- }
179
-
180
- function SwitchToggle({
181
- checked,
182
- onChange,
183
- label,
184
- disabled,
185
- size = "md",
186
- className,
187
- }: Pick<
188
- ToggleProps,
189
- "checked" | "onChange" | "label" | "disabled" | "size" | "className"
190
- >) {
191
- const reducedMotion = useReducedMotion();
192
- const id = `toggle-goo-${useId().replace(/:/g, "")}`;
193
- const geo = switchGeo[size];
194
- const on = geo.travel;
195
- const off = geo.inset;
196
- const x = useMotionValue(checked ? on : off);
197
- const chase = useSpring(x, spring.snappy);
198
- const dropX = useTransform(chase, (value) => value + geo.dropOffset);
199
- const gesture = useRef({
200
- start: 0,
201
- x: 0,
202
- moved: false,
203
- skipClick: false,
204
- held: false,
205
- });
206
- useEffect(() => {
207
- if (reducedMotion) {
208
- x.set(checked ? on : off);
209
- return;
210
- }
211
- const animation = animate(x, checked ? on : off, spring.snappy);
212
- return () => animation.stop();
213
- }, [checked, reducedMotion, x, on, off]);
214
- const choose = (next: boolean) => {
215
- if (disabled) return;
216
- haptic("selection");
217
- if (next !== checked) onChange(next);
218
- if (reducedMotion) x.set(next ? on : off);
219
- else animate(x, next ? on : off, spring.snappy);
220
- };
221
- return (
222
- <button
223
- type="button"
224
- role="switch"
225
- aria-checked={checked}
226
- aria-label={label}
227
- disabled={disabled}
228
- onClick={() => {
229
- if (gesture.current.skipClick) {
230
- gesture.current.skipClick = false;
231
- return;
232
- }
233
- choose(!checked);
234
- }}
235
- onPointerDown={(event) => {
236
- if (event.button !== 0 || disabled) return;
237
- event.currentTarget.setPointerCapture(event.pointerId);
238
- gesture.current = {
239
- start: event.clientX,
240
- x: x.get(),
241
- moved: false,
242
- skipClick: false,
243
- held: true,
244
- };
245
- }}
246
- onPointerMove={(event) => {
247
- const drag = gesture.current;
248
- if (!drag.held || disabled) return;
249
- const direction =
250
- getComputedStyle(event.currentTarget).direction === "rtl" ? -1 : 1;
251
- const delta = (event.clientX - drag.start) * direction;
252
- if (Math.abs(delta) > 3) drag.moved = true;
253
- if (drag.moved) x.set(Math.max(off, Math.min(on, drag.x + delta)));
254
- }}
255
- onPointerUp={() => {
256
- const drag = gesture.current;
257
- if (!drag.held) return;
258
- drag.held = false;
259
- if (!drag.moved) return;
260
- drag.skipClick = true;
261
- choose(x.get() >= (on + off) / 2);
262
- }}
263
- onPointerCancel={() => {
264
- gesture.current.held = false;
265
- gesture.current.skipClick = false;
266
- choose(checked);
267
- }}
268
- className={cn(
269
- "duration-normal relative shrink-0 touch-pan-y rounded-full transition-colors motion-reduce:transition-none",
270
- geo.track,
271
- "focus-visible:ring-accent/70 focus-visible:ring-offset-background shadow-[inset_0_1px_2px_rgb(0_0_0/0.10)] focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:outline-none disabled:opacity-45",
272
- checked ? "bg-accent" : "bg-separator/80",
273
- className,
274
- )}
275
- >
276
- <svg aria-hidden="true" width="0" height="0" className="absolute">
277
- <defs>
278
- <filter
279
- id={id}
280
- x="-50%"
281
- y="-100%"
282
- width="200%"
283
- height="300%"
284
- colorInterpolationFilters="sRGB"
285
- >
286
- <feGaussianBlur stdDeviation="2.5" result="smear" />
287
- <feColorMatrix
288
- in="smear"
289
- type="matrix"
290
- values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 19 -9"
291
- />
292
- </filter>
293
- </defs>
294
- </svg>
295
- <span
296
- aria-hidden="true"
297
- className="pointer-events-none absolute inset-0 rtl:-scale-x-100"
298
- style={{ filter: reducedMotion ? undefined : `url(#${id})` }}
299
- >
300
- {!reducedMotion && (
301
- <motion.span
302
- className={cn(
303
- "absolute left-0 rounded-full bg-white",
304
- geo.dropTop,
305
- geo.drop,
306
- )}
307
- style={{ x: dropX }}
308
- />
309
- )}
310
- <motion.span
311
- className={cn(
312
- "absolute top-0.5 left-0 rounded-full bg-white",
313
- geo.thumb,
314
- )}
315
- style={{ x }}
316
- />
317
- </span>
318
- </button>
319
- );
320
- }
@@ -1,178 +0,0 @@
1
- import { AnimatePresence, motion, useReducedMotion } from "motion/react";
2
- import { spring } from "../../motion/transitions";
3
- import { useEffect, useId, useState } from "react";
4
- import { cn } from "../../lib/class-names";
5
-
6
- export type TooltipSize = "sm" | "md" | "lg";
7
-
8
- const tooltipClasses: Record<TooltipSize, string> = {
9
- sm: "pointer-events-none fixed z-[80] max-w-[200px] rounded-md bg-inverse px-2 py-1 text-center text-caption2 leading-tight font-medium text-on-inverse shadow-lg",
10
- md: "pointer-events-none fixed z-[80] max-w-[240px] rounded-md bg-inverse px-2.5 py-1.5 text-center text-caption leading-tight font-medium text-on-inverse shadow-lg",
11
- lg: "pointer-events-none fixed z-[80] max-w-[280px] rounded-md bg-inverse px-3 py-2 text-center text-footnote leading-tight font-medium text-on-inverse shadow-lg",
12
- };
13
-
14
- interface Tip {
15
- text: string;
16
- x: number;
17
- y: number;
18
- /** Shown above the element when there's no room below. */
19
- above: boolean;
20
- size: TooltipSize;
21
- }
22
-
23
- const DELAY = 450;
24
- /** Moving from one control to the next within this window shows at once. */
25
- const WARM_WINDOW = 600;
26
- const MARGIN = 8;
27
-
28
- /**
29
- * Tooltips for any element with `data-tooltip`, on devices that can hover.
30
- * One listener for the whole app: a short delay before the first, then
31
- * instant while moving between controls, as on macOS.
32
- */
33
- export function TooltipHost() {
34
- const [tip, setTip] = useState<Tip | null>(null);
35
- const tooltipId = useId();
36
- const reducedMotion = useReducedMotion();
37
-
38
- useEffect(() => {
39
- const canHover = window.matchMedia(
40
- "(hover: hover) and (pointer: fine)",
41
- ).matches;
42
- let timer: ReturnType<typeof setTimeout> | undefined;
43
- let current: Element | null = null;
44
- let lastShown = 0;
45
- let described: Element | null = null;
46
- let previousDescription: string | null = null;
47
-
48
- const restoreDescription = () => {
49
- if (!described) return;
50
- if (previousDescription === null)
51
- described.removeAttribute("aria-describedby");
52
- else described.setAttribute("aria-describedby", previousDescription);
53
- described = null;
54
- };
55
-
56
- const show = (element: Element) => {
57
- const text = element.getAttribute("data-tooltip");
58
- if (!text) return;
59
- const rect = element.getBoundingClientRect();
60
- const above = rect.bottom + 40 > window.innerHeight;
61
- const sizeAttr = element.getAttribute("data-tooltip-size");
62
- const size: TooltipSize =
63
- sizeAttr === "sm" || sizeAttr === "lg" ? sizeAttr : "md";
64
- setTip({
65
- text,
66
- x: rect.left + rect.width / 2,
67
- y: above ? rect.top - MARGIN : rect.bottom + MARGIN,
68
- above,
69
- size,
70
- });
71
- lastShown = Date.now();
72
- };
73
- const hide = () => {
74
- clearTimeout(timer);
75
- if (current) lastShown = Date.now();
76
- current = null;
77
- restoreDescription();
78
- setTip(null);
79
- };
80
- const onOver = (event: PointerEvent) => {
81
- if (!canHover) return;
82
- const element =
83
- (event.target as Element | null)?.closest?.("[data-tooltip]") ?? null;
84
- if (element === current) return;
85
- clearTimeout(timer);
86
- current = element;
87
- if (!element) {
88
- setTip(null);
89
- return;
90
- }
91
- const warm = Date.now() - lastShown < WARM_WINDOW;
92
- if (warm) show(element);
93
- else {
94
- setTip(null);
95
- timer = setTimeout(() => current === element && show(element), DELAY);
96
- }
97
- };
98
- const onFocus = (event: FocusEvent) => {
99
- const element =
100
- (event.target as Element | null)?.closest?.("[data-tooltip]") ?? null;
101
- if (!element) return;
102
- hide();
103
- current = element;
104
- described = element;
105
- previousDescription = element.getAttribute("aria-describedby");
106
- element.setAttribute(
107
- "aria-describedby",
108
- [previousDescription, tooltipId].filter(Boolean).join(" "),
109
- );
110
- show(element);
111
- };
112
- const onBlur = (event: FocusEvent) => {
113
- if (described && !described.contains(event.relatedTarget as Node | null))
114
- hide();
115
- };
116
-
117
- window.document.addEventListener("pointerover", onOver);
118
- window.document.addEventListener("focusin", onFocus);
119
- window.document.addEventListener("focusout", onBlur);
120
- window.document.addEventListener("pointerdown", hide, true);
121
- window.document.addEventListener("keydown", hide, true);
122
- window.addEventListener("scroll", hide, true);
123
- window.addEventListener("blur", hide);
124
- return () => {
125
- clearTimeout(timer);
126
- restoreDescription();
127
- window.document.removeEventListener("pointerover", onOver);
128
- window.document.removeEventListener("focusin", onFocus);
129
- window.document.removeEventListener("focusout", onBlur);
130
- window.document.removeEventListener("pointerdown", hide, true);
131
- window.document.removeEventListener("keydown", hide, true);
132
- window.removeEventListener("scroll", hide, true);
133
- window.removeEventListener("blur", hide);
134
- };
135
- }, [tooltipId]);
136
-
137
- return (
138
- <AnimatePresence>
139
- {tip && (
140
- <motion.div
141
- id={tooltipId}
142
- key={tip.text + tip.x}
143
- role="tooltip"
144
- className={cn(tooltipClasses[tip.size])}
145
- style={{
146
- left: Math.min(Math.max(tip.x, 128), window.innerWidth - 128),
147
- top: tip.y,
148
- translateX: "-50%",
149
- translateY: tip.above ? "-100%" : 0,
150
- }}
151
- initial={
152
- reducedMotion
153
- ? false
154
- : {
155
- opacity: 0,
156
- scale: 0.92,
157
- y: tip.above ? 4 : -4,
158
- }
159
- }
160
- animate={{ opacity: 1, scale: 1, y: 0 }}
161
- exit={
162
- reducedMotion
163
- ? { opacity: 0 }
164
- : {
165
- opacity: 0,
166
- scale: 0.96,
167
- y: tip.above ? 2 : -2,
168
- transition: spring.snappy,
169
- }
170
- }
171
- transition={reducedMotion ? { duration: 0 } : spring.snappy}
172
- >
173
- {tip.text}
174
- </motion.div>
175
- )}
176
- </AnimatePresence>
177
- );
178
- }
@@ -1 +0,0 @@
1
- export * from "./view-controller";
@@ -1,75 +0,0 @@
1
- import type { PropsWithChildren, ReactNode } from "react";
2
- import { cn } from "../../lib/class-names";
3
-
4
- type ViewControllerProps = PropsWithChildren<{
5
- heading: ReactNode;
6
- className?: string;
7
- }>;
8
-
9
- type HeadingProps = {
10
- title: ReactNode;
11
- description?: ReactNode;
12
- action?: ReactNode;
13
- size?: keyof typeof titleSizes;
14
- };
15
-
16
- const titleSizes = {
17
- default: "text-large-title leading-large-title",
18
- // sign in style screens: centered, tighter, like a system sheet
19
- compact: "text-title leading-title font-semibold tracking-tight",
20
- } as const;
21
-
22
- export function ViewController({
23
- heading,
24
- className,
25
- children,
26
- }: ViewControllerProps) {
27
- return (
28
- <article
29
- className={cn(
30
- "container mx-auto flex flex-col",
31
- "w-full gap-0 py-12 md:max-w-3xl",
32
- className,
33
- )}
34
- >
35
- {heading}
36
- <div className="mt-8 flex flex-col gap-6">{children}</div>
37
- </article>
38
- );
39
- }
40
-
41
- function Heading({
42
- title,
43
- description,
44
- action,
45
- size = "default",
46
- }: HeadingProps) {
47
- const centered = size === "compact";
48
- return (
49
- <>
50
- <div
51
- className={cn(
52
- "flex flex-wrap items-center gap-3",
53
- centered && "justify-center text-center",
54
- )}
55
- >
56
- <h1 className={cn("min-w-0 wrap-anywhere", titleSizes[size])}>
57
- {title}
58
- </h1>
59
- {action}
60
- </div>
61
- {description && (
62
- <p
63
- className={cn(
64
- "text-subheadline text-label-secondary mt-0 max-w-prose leading-relaxed",
65
- centered && "text-center",
66
- )}
67
- >
68
- {description}
69
- </p>
70
- )}
71
- </>
72
- );
73
- }
74
-
75
- ViewController.Heading = Heading;