@passui/react 0.1.17 → 0.1.19

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 (366) hide show
  1. package/README.md +102 -1
  2. package/dist/types/src/appearance/index.d.ts +2 -0
  3. package/dist/types/src/appearance/platform.d.ts +9 -0
  4. package/dist/types/src/appearance/theme.d.ts +71 -0
  5. package/dist/types/src/components/ambient/ambient.d.ts +12 -0
  6. package/dist/types/src/components/ambient/index.d.ts +1 -0
  7. package/dist/types/src/components/button/button-styles.d.ts +12 -0
  8. package/dist/types/src/components/button/button.d.ts +30 -0
  9. package/dist/types/src/components/button/icon-button.d.ts +10 -0
  10. package/dist/types/src/components/button/pending-spinner.d.ts +5 -0
  11. package/dist/types/src/components/button/use-pending-indicator.d.ts +2 -0
  12. package/dist/types/src/components/chip/chip.d.ts +7 -0
  13. package/dist/types/src/components/compact-date-picker/calendar-month.d.ts +25 -0
  14. package/dist/types/src/components/compact-date-picker/compact-date-picker.d.ts +27 -0
  15. package/dist/types/src/components/compact-time-picker/compact-time-picker.d.ts +26 -0
  16. package/dist/types/src/components/compact-time-picker/time-value.d.ts +18 -0
  17. package/dist/types/src/components/content-view/content-view.d.ts +48 -0
  18. package/dist/types/src/components/content-view/index.d.ts +1 -0
  19. package/dist/types/src/components/context-menu/conceal-menu-source.d.ts +2 -0
  20. package/dist/types/src/components/context-menu/context-menu-host.d.ts +2 -0
  21. package/dist/types/src/components/context-menu/context-menu-store.d.ts +57 -0
  22. package/dist/types/src/components/context-menu/menu-navigation.d.ts +6 -0
  23. package/dist/types/src/components/context-menu/menu-position.d.ts +21 -0
  24. package/dist/types/src/components/context-menu/menu-reveal.d.ts +22 -0
  25. package/dist/types/src/components/context-menu/use-context-menu.d.ts +14 -0
  26. package/dist/types/src/components/conversation/conversation.d.ts +43 -0
  27. package/dist/types/src/components/conversation/index.d.ts +1 -0
  28. package/dist/types/src/components/date-picker/date-picker.d.ts +16 -0
  29. package/dist/types/src/components/date-picker/date-value.d.ts +2 -0
  30. package/dist/types/src/components/dialog/dialog-host.d.ts +6 -0
  31. package/dist/types/src/components/dialog/dialog-store.d.ts +21 -0
  32. package/dist/types/src/components/dialog/dialog.d.ts +30 -0
  33. package/dist/types/src/components/dialog/index.d.ts +1 -0
  34. package/dist/types/src/components/disclosure-group/disclosure-group.d.ts +13 -0
  35. package/dist/types/src/components/divider/divider.d.ts +9 -0
  36. package/dist/types/src/components/inline-disclosure/inline-disclosure.d.ts +15 -0
  37. package/dist/types/src/components/labeled-content/labeled-content.d.ts +19 -0
  38. package/dist/types/src/components/locale-switcher/index.d.ts +1 -0
  39. package/dist/types/src/components/locale-switcher/locale-switcher.d.ts +10 -0
  40. package/dist/types/src/components/menu/menu.d.ts +16 -0
  41. package/dist/types/src/components/picker/picker-trigger.d.ts +2 -0
  42. package/dist/types/src/components/picker/picker.d.ts +37 -0
  43. package/dist/types/src/components/popover/popover-fit.d.ts +21 -0
  44. package/dist/types/src/components/popover/popover.d.ts +14 -0
  45. package/dist/types/src/components/profile-image/profile-image.d.ts +4 -0
  46. package/dist/types/src/components/progress-view/progress-view.d.ts +13 -0
  47. package/dist/types/src/components/search-field/search-field.d.ts +2 -0
  48. package/dist/types/src/components/search-list/search-list.d.ts +19 -0
  49. package/dist/types/src/components/section/section.d.ts +15 -0
  50. package/dist/types/src/components/secure-field/secure-field.d.ts +4 -0
  51. package/dist/types/src/components/segmented-control/segmented-control.d.ts +20 -0
  52. package/dist/types/src/components/sheet/modal-environment.d.ts +2 -0
  53. package/dist/types/src/components/sheet/sheet-portal.d.ts +5 -0
  54. package/dist/types/src/components/sheet/sheet.d.ts +21 -0
  55. package/dist/types/src/components/sheet/use-sheet-focus.d.ts +3 -0
  56. package/dist/types/src/components/sidebar/sidebar.d.ts +18 -0
  57. package/dist/types/src/components/slider/slider.d.ts +14 -0
  58. package/dist/types/src/components/stat-tile/index.d.ts +1 -0
  59. package/dist/types/src/components/stat-tile/stat-tile.d.ts +15 -0
  60. package/dist/types/src/components/status-indicator/status-indicator.d.ts +14 -0
  61. package/dist/types/src/components/stepper/stepper.d.ts +19 -0
  62. package/dist/types/src/components/swatch-picker/swatch-picker.d.ts +17 -0
  63. package/dist/types/src/components/tab-bar/tab-bar.d.ts +40 -0
  64. package/dist/types/src/components/tab-view/tab-view.d.ts +24 -0
  65. package/dist/types/src/components/table/table.d.ts +10 -0
  66. package/dist/types/src/components/text-editor/text-editor.d.ts +2 -0
  67. package/dist/types/src/components/text-field/text-field.d.ts +18 -0
  68. package/dist/types/src/components/toast/toast-store.d.ts +47 -0
  69. package/dist/types/src/components/toast/toaster.d.ts +10 -0
  70. package/dist/types/src/components/toggle/toggle.d.ts +17 -0
  71. package/dist/types/src/components/tooltip/tooltip-host.d.ts +6 -0
  72. package/dist/types/src/components/view-controller/index.d.ts +1 -0
  73. package/dist/types/src/components/view-controller/view-controller.d.ts +21 -0
  74. package/dist/types/src/hooks/scroll/minimize-decision.d.ts +2 -0
  75. package/dist/types/src/hooks/use-anchored-placement.d.ts +7 -0
  76. package/dist/types/src/hooks/use-dismiss.d.ts +9 -0
  77. package/dist/types/src/hooks/use-floating-dismiss.d.ts +3 -0
  78. package/dist/types/src/hooks/use-media-query.d.ts +21 -0
  79. package/dist/types/src/hooks/use-minimize-on-scroll.d.ts +6 -0
  80. package/dist/types/src/hooks/use-visual-viewport.d.ts +4 -0
  81. package/dist/types/src/hooks/viewport/types.d.ts +19 -0
  82. package/dist/types/src/hooks/viewport/viewport-metrics.d.ts +3 -0
  83. package/dist/types/src/icons/icons.d.ts +612 -0
  84. package/dist/types/src/index.d.ts +58 -0
  85. package/dist/types/src/lib/anchored-placement.d.ts +39 -0
  86. package/dist/types/src/lib/class-names.d.ts +2 -0
  87. package/dist/types/src/lib/clipboard.d.ts +6 -0
  88. package/dist/types/src/lib/date.d.ts +50 -0
  89. package/dist/types/src/lib/floating-layers.d.ts +8 -0
  90. package/dist/types/src/lib/haptics.d.ts +8 -0
  91. package/dist/types/src/lib/language.d.ts +4 -0
  92. package/dist/types/src/lib/range-value.d.ts +4 -0
  93. package/dist/types/src/lib/screen-edges.d.ts +12 -0
  94. package/dist/types/src/lib/shapes.d.ts +17 -0
  95. package/dist/types/src/motion/transitions.d.ts +97 -0
  96. package/dist/types/src/tokens.d.ts +1 -0
  97. package/package.json +192 -40
  98. package/src/appearance/platform.tsx +10 -47
  99. package/src/appearance/theme.tsx +42 -142
  100. package/src/components/ambient/ambient.tsx +2 -10
  101. package/src/components/button/button-styles.ts +13 -31
  102. package/src/components/button/button.tsx +19 -14
  103. package/src/components/button/icon-button.tsx +14 -56
  104. package/src/components/button/use-pending-indicator.ts +2 -7
  105. package/src/components/chip/chip.tsx +8 -13
  106. package/src/components/compact-date-picker/calendar-month.ts +13 -57
  107. package/src/components/compact-date-picker/compact-date-picker.tsx +44 -123
  108. package/src/components/compact-time-picker/compact-time-picker.tsx +46 -130
  109. package/src/components/compact-time-picker/time-value.ts +4 -16
  110. package/src/components/content-view/content-view.tsx +13 -56
  111. package/src/components/context-menu/conceal-menu-source.ts +1 -4
  112. package/src/components/context-menu/context-menu-host.tsx +125 -195
  113. package/src/components/context-menu/context-menu-store.ts +3 -11
  114. package/src/components/context-menu/menu-navigation.ts +29 -0
  115. package/src/components/context-menu/menu-position.ts +6 -27
  116. package/src/components/context-menu/menu-reveal.ts +13 -54
  117. package/src/components/context-menu/use-context-menu.ts +6 -30
  118. package/src/components/conversation/conversation.tsx +26 -72
  119. package/src/components/date-picker/date-picker.tsx +8 -37
  120. package/src/components/date-picker/date-value.ts +5 -30
  121. package/src/components/dialog/dialog-host.tsx +31 -76
  122. package/src/components/dialog/dialog-store.ts +1 -3
  123. package/src/components/dialog/dialog.tsx +23 -80
  124. package/src/components/disclosure-group/disclosure-group.tsx +70 -0
  125. package/src/components/divider/divider.tsx +31 -0
  126. package/src/components/inline-disclosure/inline-disclosure.tsx +49 -0
  127. package/src/components/labeled-content/labeled-content.tsx +24 -18
  128. package/src/components/locale-switcher/locale-switcher.tsx +20 -70
  129. package/src/components/menu/menu.tsx +68 -0
  130. package/src/components/picker/picker-trigger.ts +10 -0
  131. package/src/components/picker/picker.tsx +72 -203
  132. package/src/components/popover/popover-fit.ts +69 -0
  133. package/src/components/popover/popover.tsx +94 -77
  134. package/src/components/profile-image/profile-image.tsx +6 -28
  135. package/src/components/progress-view/progress-view.tsx +65 -0
  136. package/src/components/search-field/search-field.tsx +27 -25
  137. package/src/components/search-list/search-list.tsx +43 -69
  138. package/src/components/section/section.tsx +18 -17
  139. package/src/components/secure-field/secure-field.tsx +5 -7
  140. package/src/components/segmented-control/segmented-control.tsx +20 -29
  141. package/src/components/sheet/modal-environment.ts +16 -54
  142. package/src/components/sheet/sheet-portal.tsx +10 -42
  143. package/src/components/sheet/sheet.tsx +17 -25
  144. package/src/components/sheet/use-sheet-focus.ts +15 -51
  145. package/src/components/sidebar/sidebar.tsx +27 -30
  146. package/src/components/slider/slider.tsx +76 -0
  147. package/src/components/stat-tile/stat-tile.tsx +9 -30
  148. package/src/components/status-indicator/status-indicator.tsx +12 -19
  149. package/src/components/stepper/stepper.tsx +80 -0
  150. package/src/components/swatch-picker/swatch-picker.tsx +19 -15
  151. package/src/components/tab-bar/tab-bar.tsx +59 -59
  152. package/src/components/tab-view/tab-view.tsx +52 -57
  153. package/src/components/table/table.tsx +14 -62
  154. package/src/components/text-editor/text-editor.tsx +2 -12
  155. package/src/components/text-field/text-field.tsx +11 -40
  156. package/src/components/toast/toast-store.ts +9 -30
  157. package/src/components/toast/toaster.tsx +90 -104
  158. package/src/components/toggle/toggle.tsx +28 -24
  159. package/src/components/tooltip/tooltip-host.tsx +70 -67
  160. package/src/components/view-controller/view-controller.tsx +4 -21
  161. package/src/hooks/scroll/minimize-decision.ts +1 -5
  162. package/src/hooks/use-anchored-placement.ts +4 -14
  163. package/src/hooks/use-dismiss.ts +5 -23
  164. package/src/hooks/use-floating-dismiss.ts +28 -0
  165. package/src/hooks/use-media-query.ts +12 -31
  166. package/src/hooks/use-minimize-on-scroll.ts +10 -34
  167. package/src/hooks/use-visual-viewport.ts +5 -14
  168. package/src/hooks/viewport/viewport-metrics.ts +4 -16
  169. package/src/icons/icons.tsx +167 -121
  170. package/src/index.ts +9 -1
  171. package/src/lib/anchored-placement.ts +5 -15
  172. package/src/lib/class-names.ts +1 -2
  173. package/src/lib/clipboard.ts +14 -0
  174. package/src/lib/date.ts +4 -15
  175. package/src/lib/floating-layers.ts +18 -8
  176. package/src/lib/haptics.ts +1 -3
  177. package/src/lib/language.ts +2 -7
  178. package/src/lib/range-value.ts +32 -0
  179. package/src/lib/screen-edges.ts +2 -6
  180. package/src/lib/shapes.ts +5 -20
  181. package/src/motion/transitions.ts +18 -12
  182. package/src/components/ambient/ambient.docs.tsx +0 -68
  183. package/src/components/ambient/examples/ambient-images.tsx +0 -30
  184. package/src/components/ambient/examples/ambient-now-playing.tsx +0 -55
  185. package/src/components/ambient/examples/ambient-showcase.tsx +0 -33
  186. package/src/components/ambient/examples/ambient-usage.tsx +0 -19
  187. package/src/components/button/button.docs.tsx +0 -116
  188. package/src/components/button/examples/button-disabled.tsx +0 -19
  189. package/src/components/button/examples/button-icon.tsx +0 -39
  190. package/src/components/button/examples/button-link.tsx +0 -12
  191. package/src/components/button/examples/button-pending.tsx +0 -27
  192. package/src/components/button/examples/button-showcase.tsx +0 -115
  193. package/src/components/button/examples/button-sizes.tsx +0 -12
  194. package/src/components/button/examples/button-usage.tsx +0 -12
  195. package/src/components/button/examples/button-variants.tsx +0 -15
  196. package/src/components/button/examples/button-with-icon.tsx +0 -32
  197. package/src/components/button/examples/icon-button-player.tsx +0 -38
  198. package/src/components/button/examples/icon-button-showcase.tsx +0 -83
  199. package/src/components/button/examples/icon-button-usage.tsx +0 -11
  200. package/src/components/button/examples/icon-button-variants.tsx +0 -39
  201. package/src/components/button/icon-button.docs.tsx +0 -68
  202. package/src/components/chip/chip.docs.tsx +0 -37
  203. package/src/components/chip/examples/chip-in-rows.tsx +0 -19
  204. package/src/components/chip/examples/chip-showcase.tsx +0 -51
  205. package/src/components/chip/examples/chip-tones.tsx +0 -13
  206. package/src/components/chip/examples/chip-usage.tsx +0 -5
  207. package/src/components/compact-date-picker/compact-date-picker.docs.tsx +0 -81
  208. package/src/components/compact-date-picker/examples/compact-date-picker-showcase.tsx +0 -35
  209. package/src/components/compact-date-picker/examples/compact-date-picker-usage.tsx +0 -22
  210. package/src/components/compact-time-picker/compact-time-picker.docs.tsx +0 -80
  211. package/src/components/compact-time-picker/examples/compact-time-picker-showcase.tsx +0 -31
  212. package/src/components/compact-time-picker/examples/compact-time-picker-usage.tsx +0 -21
  213. package/src/components/content-view/content-view.docs.tsx +0 -61
  214. package/src/components/content-view/examples/content-view-header-action.tsx +0 -33
  215. package/src/components/content-view/examples/content-view-showcase.tsx +0 -65
  216. package/src/components/content-view/examples/content-view-stats.tsx +0 -35
  217. package/src/components/content-view/examples/content-view-usage.tsx +0 -14
  218. package/src/components/context-menu/context-menu.docs.tsx +0 -92
  219. package/src/components/context-menu/examples/context-menu-checked.tsx +0 -37
  220. package/src/components/context-menu/examples/context-menu-list.tsx +0 -85
  221. package/src/components/context-menu/examples/context-menu-showcase.tsx +0 -56
  222. package/src/components/context-menu/examples/context-menu-toolbar.tsx +0 -63
  223. package/src/components/context-menu/examples/context-menu-usage.tsx +0 -24
  224. package/src/components/conversation/conversation.docs.tsx +0 -88
  225. package/src/components/conversation/examples/conversation-composer.tsx +0 -36
  226. package/src/components/conversation/examples/conversation-days.tsx +0 -48
  227. package/src/components/conversation/examples/conversation-showcase.tsx +0 -71
  228. package/src/components/conversation/examples/conversation-usage.tsx +0 -28
  229. package/src/components/date-picker/date-picker.docs.tsx +0 -88
  230. package/src/components/date-picker/examples/date-picker-locales.tsx +0 -41
  231. package/src/components/date-picker/examples/date-picker-past-only.tsx +0 -29
  232. package/src/components/date-picker/examples/date-picker-showcase.tsx +0 -49
  233. package/src/components/date-picker/examples/date-picker-usage.tsx +0 -22
  234. package/src/components/dialog/dialog.docs.tsx +0 -114
  235. package/src/components/dialog/examples/dialog-confirm.tsx +0 -24
  236. package/src/components/dialog/examples/dialog-form.tsx +0 -46
  237. package/src/components/dialog/examples/dialog-inline.tsx +0 -48
  238. package/src/components/dialog/examples/dialog-showcase.tsx +0 -53
  239. package/src/components/dialog/examples/dialog-usage.tsx +0 -31
  240. package/src/components/labeled-content/examples/labeled-content-descriptions.tsx +0 -37
  241. package/src/components/labeled-content/examples/labeled-content-showcase.tsx +0 -54
  242. package/src/components/labeled-content/examples/labeled-content-usage.tsx +0 -22
  243. package/src/components/labeled-content/examples/labeled-content-values.tsx +0 -26
  244. package/src/components/labeled-content/examples/labeled-content-wide.tsx +0 -46
  245. package/src/components/labeled-content/labeled-content.docs.tsx +0 -69
  246. package/src/components/locale-switcher/examples/locale-switcher-native-names.tsx +0 -30
  247. package/src/components/locale-switcher/examples/locale-switcher-showcase.tsx +0 -46
  248. package/src/components/locale-switcher/examples/locale-switcher-translated-page.tsx +0 -35
  249. package/src/components/locale-switcher/examples/locale-switcher-usage.tsx +0 -20
  250. package/src/components/locale-switcher/locale-switcher.docs.tsx +0 -91
  251. package/src/components/picker/examples/picker-details.tsx +0 -44
  252. package/src/components/picker/examples/picker-searchable.tsx +0 -48
  253. package/src/components/picker/examples/picker-showcase.tsx +0 -66
  254. package/src/components/picker/examples/picker-usage.tsx +0 -20
  255. package/src/components/picker/picker.docs.tsx +0 -68
  256. package/src/components/popover/examples/popover-help.tsx +0 -57
  257. package/src/components/popover/examples/popover-menu.tsx +0 -51
  258. package/src/components/popover/examples/popover-showcase.tsx +0 -61
  259. package/src/components/popover/examples/popover-usage.tsx +0 -31
  260. package/src/components/popover/popover.docs.tsx +0 -84
  261. package/src/components/profile-image/examples/profile-image-fallbacks.tsx +0 -29
  262. package/src/components/profile-image/examples/profile-image-group.tsx +0 -34
  263. package/src/components/profile-image/examples/profile-image-showcase.tsx +0 -30
  264. package/src/components/profile-image/examples/profile-image-usage.tsx +0 -14
  265. package/src/components/profile-image/profile-image.docs.tsx +0 -81
  266. package/src/components/search-field/examples/search-field-filter.tsx +0 -53
  267. package/src/components/search-field/examples/search-field-showcase.tsx +0 -56
  268. package/src/components/search-field/examples/search-field-toolbar.tsx +0 -27
  269. package/src/components/search-field/examples/search-field-usage.tsx +0 -18
  270. package/src/components/search-field/search-field.docs.tsx +0 -58
  271. package/src/components/search-list/examples/search-list-dropdown.tsx +0 -53
  272. package/src/components/search-list/examples/search-list-groups.tsx +0 -64
  273. package/src/components/search-list/examples/search-list-showcase.tsx +0 -67
  274. package/src/components/search-list/examples/search-list-usage.tsx +0 -27
  275. package/src/components/search-list/search-list.docs.tsx +0 -87
  276. package/src/components/section/examples/section-actions.tsx +0 -35
  277. package/src/components/section/examples/section-groups.tsx +0 -41
  278. package/src/components/section/examples/section-showcase.tsx +0 -63
  279. package/src/components/section/examples/section-usage.tsx +0 -19
  280. package/src/components/section/section.docs.tsx +0 -51
  281. package/src/components/secure-field/examples/secure-field-new-password.tsx +0 -56
  282. package/src/components/secure-field/examples/secure-field-reveal.tsx +0 -20
  283. package/src/components/secure-field/examples/secure-field-showcase.tsx +0 -62
  284. package/src/components/secure-field/examples/secure-field-usage.tsx +0 -19
  285. package/src/components/secure-field/secure-field.docs.tsx +0 -72
  286. package/src/components/segmented-control/examples/segmented-control-overflow.tsx +0 -28
  287. package/src/components/segmented-control/examples/segmented-control-showcase.tsx +0 -59
  288. package/src/components/segmented-control/examples/segmented-control-usage.tsx +0 -20
  289. package/src/components/segmented-control/examples/segmented-control-views.tsx +0 -32
  290. package/src/components/segmented-control/segmented-control.docs.tsx +0 -61
  291. package/src/components/sheet/examples/sheet-choices.tsx +0 -58
  292. package/src/components/sheet/examples/sheet-share.tsx +0 -51
  293. package/src/components/sheet/examples/sheet-showcase.tsx +0 -74
  294. package/src/components/sheet/examples/sheet-usage.tsx +0 -32
  295. package/src/components/sheet/sheet.docs.tsx +0 -75
  296. package/src/components/sidebar/examples/sidebar-groups.tsx +0 -133
  297. package/src/components/sidebar/examples/sidebar-showcase.tsx +0 -123
  298. package/src/components/sidebar/examples/sidebar-unread.tsx +0 -66
  299. package/src/components/sidebar/examples/sidebar-usage.tsx +0 -52
  300. package/src/components/sidebar/sidebar.docs.tsx +0 -135
  301. package/src/components/stat-tile/examples/stat-tile-filters.tsx +0 -32
  302. package/src/components/stat-tile/examples/stat-tile-grid.tsx +0 -21
  303. package/src/components/stat-tile/examples/stat-tile-showcase.tsx +0 -52
  304. package/src/components/stat-tile/examples/stat-tile-usage.tsx +0 -13
  305. package/src/components/stat-tile/stat-tile.docs.tsx +0 -60
  306. package/src/components/status-indicator/examples/status-indicator-live.tsx +0 -34
  307. package/src/components/status-indicator/examples/status-indicator-showcase.tsx +0 -39
  308. package/src/components/status-indicator/examples/status-indicator-states.tsx +0 -17
  309. package/src/components/status-indicator/examples/status-indicator-usage.tsx +0 -9
  310. package/src/components/status-indicator/status-indicator.docs.tsx +0 -43
  311. package/src/components/swatch-picker/examples/swatch-picker-accents.tsx +0 -42
  312. package/src/components/swatch-picker/examples/swatch-picker-labels.tsx +0 -45
  313. package/src/components/swatch-picker/examples/swatch-picker-showcase.tsx +0 -70
  314. package/src/components/swatch-picker/examples/swatch-picker-usage.tsx +0 -39
  315. package/src/components/swatch-picker/swatch-picker.docs.tsx +0 -60
  316. package/src/components/tab-bar/examples/tab-bar-five-tabs.tsx +0 -66
  317. package/src/components/tab-bar/examples/tab-bar-minimize.tsx +0 -71
  318. package/src/components/tab-bar/examples/tab-bar-showcase.tsx +0 -82
  319. package/src/components/tab-bar/examples/tab-bar-usage.tsx +0 -54
  320. package/src/components/tab-bar/tab-bar.docs.tsx +0 -136
  321. package/src/components/tab-view/examples/tab-view-keyboard.tsx +0 -39
  322. package/src/components/tab-view/examples/tab-view-settings.tsx +0 -56
  323. package/src/components/tab-view/examples/tab-view-showcase.tsx +0 -53
  324. package/src/components/tab-view/examples/tab-view-usage.tsx +0 -23
  325. package/src/components/tab-view/tab-view.docs.tsx +0 -77
  326. package/src/components/table/examples/table-empty.tsx +0 -53
  327. package/src/components/table/examples/table-invoices.tsx +0 -102
  328. package/src/components/table/examples/table-selection.tsx +0 -150
  329. package/src/components/table/examples/table-showcase.tsx +0 -115
  330. package/src/components/table/examples/table-usage.tsx +0 -67
  331. package/src/components/table/examples/table-wide.tsx +0 -75
  332. package/src/components/table/table.docs.tsx +0 -131
  333. package/src/components/text-editor/examples/text-editor-comment.tsx +0 -48
  334. package/src/components/text-editor/examples/text-editor-count.tsx +0 -38
  335. package/src/components/text-editor/examples/text-editor-showcase.tsx +0 -58
  336. package/src/components/text-editor/examples/text-editor-usage.tsx +0 -25
  337. package/src/components/text-editor/text-editor.docs.tsx +0 -61
  338. package/src/components/text-field/examples/text-field-icons.tsx +0 -72
  339. package/src/components/text-field/examples/text-field-showcase.tsx +0 -50
  340. package/src/components/text-field/examples/text-field-usage.tsx +0 -18
  341. package/src/components/text-field/examples/text-field-validation.tsx +0 -27
  342. package/src/components/text-field/text-field.docs.tsx +0 -118
  343. package/src/components/toast/examples/toast-action.tsx +0 -32
  344. package/src/components/toast/examples/toast-promise.tsx +0 -45
  345. package/src/components/toast/examples/toast-showcase.tsx +0 -49
  346. package/src/components/toast/examples/toast-usage.tsx +0 -13
  347. package/src/components/toast/toast.docs.tsx +0 -79
  348. package/src/components/toggle/examples/toggle-checkboxes.tsx +0 -43
  349. package/src/components/toggle/examples/toggle-settings.tsx +0 -31
  350. package/src/components/toggle/examples/toggle-showcase.tsx +0 -59
  351. package/src/components/toggle/examples/toggle-usage.tsx +0 -13
  352. package/src/components/toggle/toggle.docs.tsx +0 -69
  353. package/src/components/tooltip/examples/tooltip-icon-buttons.tsx +0 -27
  354. package/src/components/tooltip/examples/tooltip-shortcuts.tsx +0 -38
  355. package/src/components/tooltip/examples/tooltip-showcase.tsx +0 -44
  356. package/src/components/tooltip/examples/tooltip-usage.tsx +0 -13
  357. package/src/components/tooltip/tooltip.docs.tsx +0 -56
  358. package/src/components/view-controller/examples/view-controller-action.tsx +0 -27
  359. package/src/components/view-controller/examples/view-controller-settings.tsx +0 -31
  360. package/src/components/view-controller/examples/view-controller-showcase.tsx +0 -45
  361. package/src/components/view-controller/examples/view-controller-usage.tsx +0 -19
  362. package/src/components/view-controller/view-controller.docs.tsx +0 -71
  363. package/src/docs/index.ts +0 -3
  364. package/src/docs/registry.ts +0 -113
  365. package/src/docs/snippet.ts +0 -17
  366. package/src/docs/types.ts +0 -180
@@ -1,24 +1,15 @@
1
- import {
2
- AnimatePresence,
3
- motion,
4
- useReducedMotion,
5
- } from "motion/react"
6
- import {
7
- type KeyboardEvent,
8
- useEffect,
9
- useId,
10
- useLayoutEffect,
11
- useRef,
12
- useState,
13
- } from "react"
1
+ import { AnimatePresence, motion, useReducedMotion } from "motion/react"
2
+ import { type KeyboardEvent, useEffect, useId, useLayoutEffect, useRef, useState } from "react"
14
3
  import { createPortal } from "react-dom"
15
4
  import { FLOATING_LAYER } from "../../hooks/use-dismiss"
5
+ import { useFloatingDismiss } from "../../hooks/use-floating-dismiss"
16
6
  import { ClockIcon } from "../../icons/icons"
17
7
  import { useAnchoredPlacement } from "../../hooks/use-anchored-placement"
18
8
  import { cn } from "../../lib/class-names"
19
9
  import { registerFloatingLayer } from "../../lib/floating-layers"
20
10
  import { haptic } from "../../lib/haptics"
21
- import { spring } from "../../motion/transitions"
11
+ import { floatingPanelMotion } from "../../motion/transitions"
12
+ import { pickerTriggerStyle } from "../picker/picker-trigger"
22
13
  import {
23
14
  formatTime,
24
15
  fromTwelveHours,
@@ -42,6 +33,8 @@ export interface CompactTimePickerProps {
42
33
  placeholder?: string
43
34
  labels: { hour: string; minute: string; period: string }
44
35
  className?: string
36
+ /** Prevents opening the time panel. @default false */
37
+ disabled?: boolean
45
38
  }
46
39
 
47
40
  /**
@@ -58,6 +51,7 @@ export function CompactTimePicker({
58
51
  placeholder,
59
52
  labels,
60
53
  className,
54
+ disabled = false,
61
55
  }: CompactTimePickerProps) {
62
56
  const [open, setOpen] = useState(false)
63
57
  const trigger = useRef<HTMLButtonElement>(null)
@@ -68,17 +62,7 @@ export function CompactTimePicker({
68
62
  hour: "numeric",
69
63
  minute: "2-digit",
70
64
  timeZone: "UTC",
71
- }).format(
72
- new Date(
73
- Date.UTC(
74
- 2000,
75
- 0,
76
- 1,
77
- chosen.hour,
78
- chosen.minute
79
- )
80
- )
81
- )
65
+ }).format(new Date(Date.UTC(2000, 0, 1, chosen.hour, chosen.minute)))
82
66
  : (placeholder ?? "")
83
67
 
84
68
  return (
@@ -86,17 +70,13 @@ export function CompactTimePicker({
86
70
  <button
87
71
  ref={trigger}
88
72
  type="button"
89
- aria-label={
90
- chosen ? `${label}, ${shown}` : label
91
- }
73
+ aria-label={chosen ? `${label}, ${shown}` : label}
92
74
  aria-haspopup="dialog"
93
- aria-expanded={open}
94
- aria-controls={open ? panelId : undefined}
75
+ aria-expanded={open && !disabled}
76
+ aria-controls={open && !disabled ? panelId : undefined}
77
+ disabled={disabled}
95
78
  onClick={() => setOpen((current) => !current)}
96
- className={cn(
97
- "flex w-full min-w-0 items-center gap-2 rounded-lg control-field px-3 py-2 text-start text-subheadline text-label",
98
- className
99
- )}
79
+ className={pickerTriggerStyle(className)}
100
80
  >
101
81
  <span
102
82
  className={cn(
@@ -106,15 +86,12 @@ export function CompactTimePicker({
106
86
  >
107
87
  {shown}
108
88
  </span>
109
- <ClockIcon
110
- size={16}
111
- className="shrink-0 text-label-tertiary"
112
- />
89
+ <ClockIcon size={16} className="shrink-0 text-label-tertiary" />
113
90
  </button>
114
91
  {typeof document !== "undefined" &&
115
92
  createPortal(
116
93
  <AnimatePresence>
117
- {open && trigger.current && (
94
+ {open && !disabled && trigger.current && (
118
95
  <TimeColumns
119
96
  id={panelId}
120
97
  anchor={trigger.current}
@@ -132,9 +109,10 @@ export function CompactTimePicker({
132
109
  haptic("selection")
133
110
  onChange(formatTime(next))
134
111
  }}
135
- onClose={() => {
112
+ onClose={(restoreFocus) => {
136
113
  setOpen(false)
137
- trigger.current?.focus()
114
+ if (restoreFocus)
115
+ trigger.current?.focus({ preventScroll: true })
138
116
  }}
139
117
  />
140
118
  )}
@@ -169,16 +147,12 @@ function TimeColumns({
169
147
  minuteStep: number
170
148
  labels: CompactTimePickerProps["labels"]
171
149
  onChange: (time: TimeOfDay) => void
172
- onClose: () => void
150
+ onClose: (restoreFocus: boolean) => void
173
151
  }) {
174
152
  const root = useRef<HTMLDivElement>(null)
175
153
  const reducedMotion = useReducedMotion()
176
154
  const twelve = usesTwelveHours(locale)
177
- const placement = useAnchoredPlacement(
178
- anchor,
179
- twelve ? 240 : 180,
180
- 280
181
- )
155
+ const placement = useAnchoredPlacement(anchor, twelve ? 240 : 180, 280)
182
156
  const number = new Intl.NumberFormat(locale, {
183
157
  minimumIntegerDigits: 2,
184
158
  })
@@ -186,20 +160,15 @@ function TimeColumns({
186
160
  const clock = toTwelveHours(time.hour)
187
161
 
188
162
  const hours: ColumnItem[] = twelve
189
- ? [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(
190
- (hour) => ({
191
- key: hour,
192
- text: plain.format(hour),
193
- })
194
- )
163
+ ? [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((hour) => ({
164
+ key: hour,
165
+ text: plain.format(hour),
166
+ }))
195
167
  : Array.from({ length: 24 }, (_, hour) => ({
196
168
  key: hour,
197
169
  text: number.format(hour),
198
170
  }))
199
- const minutes = minuteChoices(
200
- minuteStep,
201
- time.minute
202
- ).map((minute) => ({
171
+ const minutes = minuteChoices(minuteStep, time.minute).map((minute) => ({
203
172
  key: minute,
204
173
  text: number.format(minute),
205
174
  }))
@@ -210,11 +179,8 @@ function TimeColumns({
210
179
  hour12: true,
211
180
  timeZone: "UTC",
212
181
  })
213
- .formatToParts(
214
- new Date(Date.UTC(2000, 0, 1, pm ? 13 : 1))
215
- )
216
- .find((part) => part.type === "dayPeriod")
217
- ?.value ?? (pm ? "PM" : "AM")
182
+ .formatToParts(new Date(Date.UTC(2000, 0, 1, pm ? 13 : 1)))
183
+ .find((part) => part.type === "dayPeriod")?.value ?? (pm ? "PM" : "AM")
218
184
  const periods = [
219
185
  { key: 0, text: periodName(false) },
220
186
  { key: 1, text: periodName(true) },
@@ -225,22 +191,7 @@ function TimeColumns({
225
191
  return registerFloatingLayer(root.current, anchor)
226
192
  }, [anchor])
227
193
 
228
- useEffect(() => {
229
- const onPointer = (event: PointerEvent) => {
230
- const target = event.target as Node
231
- if (
232
- !root.current?.contains(target) &&
233
- !anchor.contains(target)
234
- )
235
- onClose()
236
- }
237
- document.addEventListener("pointerdown", onPointer)
238
- return () =>
239
- document.removeEventListener(
240
- "pointerdown",
241
- onPointer
242
- )
243
- }, [anchor, onClose])
194
+ useFloatingDismiss(root, anchor, onClose)
244
195
 
245
196
  return (
246
197
  <motion.div
@@ -253,7 +204,7 @@ function TimeColumns({
253
204
  ? { opacity: 0 }
254
205
  : {
255
206
  opacity: 0,
256
- scale: 0.96,
207
+ scale: 1,
257
208
  y: placement.above ? 6 : -6,
258
209
  }
259
210
  }
@@ -263,14 +214,14 @@ function TimeColumns({
263
214
  ? { opacity: 0 }
264
215
  : {
265
216
  opacity: 0,
266
- scale: 0.98,
267
- transition: { duration: 0.1 },
217
+ scale: 1,
218
+ y: placement.above ? 4 : -4,
268
219
  }
269
220
  }
270
221
  transition={
271
222
  reducedMotion
272
223
  ? { duration: 0 }
273
- : spring.smooth
224
+ : floatingPanelMotion(placement.above ? "above" : "below").transition
274
225
  }
275
226
  style={{
276
227
  left: placement.left,
@@ -278,12 +229,8 @@ function TimeColumns({
278
229
  top: placement.top,
279
230
  bottom: placement.bottom,
280
231
  maxHeight: placement.maxHeight,
281
- overflowY: placement.maxHeight
282
- ? "auto"
283
- : undefined,
284
- transformOrigin: placement.above
285
- ? "50% 100%"
286
- : "50% 0%",
232
+ overflowY: placement.maxHeight ? "auto" : undefined,
233
+ transformOrigin: placement.above ? "50% 100%" : "50% 0%",
287
234
  }}
288
235
  className="glass-menu fixed z-[80] flex gap-1 rounded-3xl p-2"
289
236
  {...{ [FLOATING_LAYER]: "" }}
@@ -291,7 +238,7 @@ function TimeColumns({
291
238
  if (event.key !== "Escape") return
292
239
  event.preventDefault()
293
240
  event.stopPropagation()
294
- onClose()
241
+ onClose(true)
295
242
  }}
296
243
  >
297
244
  <Column
@@ -302,9 +249,7 @@ function TimeColumns({
302
249
  onSelect={(hour) =>
303
250
  onChange({
304
251
  ...time,
305
- hour: twelve
306
- ? fromTwelveHours(hour, clock.pm)
307
- : hour,
252
+ hour: twelve ? fromTwelveHours(hour, clock.pm) : hour,
308
253
  })
309
254
  }
310
255
  />
@@ -312,9 +257,7 @@ function TimeColumns({
312
257
  label={labels.minute}
313
258
  items={minutes}
314
259
  selected={time.minute}
315
- onSelect={(minute) =>
316
- onChange({ ...time, minute })
317
- }
260
+ onSelect={(minute) => onChange({ ...time, minute })}
318
261
  />
319
262
  {twelve && (
320
263
  <Column
@@ -324,10 +267,7 @@ function TimeColumns({
324
267
  onSelect={(period) =>
325
268
  onChange({
326
269
  ...time,
327
- hour: fromTwelveHours(
328
- clock.hour,
329
- period === 1
330
- ),
270
+ hour: fromTwelveHours(clock.hour, period === 1),
331
271
  })
332
272
  }
333
273
  />
@@ -354,45 +294,21 @@ function Column({
354
294
 
355
295
  // The chosen item starts in the middle of the column, then follows changes.
356
296
  useEffect(() => {
357
- const element =
358
- list.current?.querySelector<HTMLElement>(
359
- `[data-key="${selected}"]`
360
- )
297
+ const element = list.current?.querySelector<HTMLElement>(`[data-key="${selected}"]`)
361
298
  element?.scrollIntoView({ block: "center" })
362
- if (
363
- autoFocus &&
364
- list.current?.contains(document.activeElement) ===
365
- false
366
- )
367
- element?.focus()
299
+ if (autoFocus && list.current?.contains(document.activeElement) === false) element?.focus()
368
300
  }, [selected, autoFocus])
369
301
 
370
- const onKeyDown = (
371
- event: KeyboardEvent<HTMLDivElement>
372
- ) => {
373
- const step =
374
- event.key === "ArrowDown"
375
- ? 1
376
- : event.key === "ArrowUp"
377
- ? -1
378
- : 0
302
+ const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {
303
+ const step = event.key === "ArrowDown" ? 1 : event.key === "ArrowUp" ? -1 : 0
379
304
  if (!step) return
380
305
  event.preventDefault()
381
- const index = items.findIndex(
382
- (item) => item.key === selected
383
- )
384
- const next =
385
- items[
386
- (index + step + items.length) % items.length
387
- ]
306
+ const index = items.findIndex((item) => item.key === selected)
307
+ const next = items[(index + step + items.length) % items.length]
388
308
  if (!next) return
389
309
  onSelect(next.key)
390
310
  requestAnimationFrame(() =>
391
- list.current
392
- ?.querySelector<HTMLElement>(
393
- `[data-key="${next.key}"]`
394
- )
395
- ?.focus()
311
+ list.current?.querySelector<HTMLElement>(`[data-key="${next.key}"]`)?.focus()
396
312
  )
397
313
  }
398
314
 
@@ -13,10 +13,7 @@ export function parseTime(value: string): TimeOfDay | null {
13
13
  return hour < 24 && minute < 60 ? { hour, minute } : null
14
14
  }
15
15
 
16
- export function formatTime({
17
- hour,
18
- minute,
19
- }: TimeOfDay): string {
16
+ export function formatTime({ hour, minute }: TimeOfDay): string {
20
17
  return `${String(hour).padStart(2, "0")}:${String(minute).padStart(2, "0")}`
21
18
  }
22
19
 
@@ -43,22 +40,13 @@ export function toTwelveHours(hour: number): {
43
40
  }
44
41
  }
45
42
 
46
- export function fromTwelveHours(
47
- hour: number,
48
- pm: boolean
49
- ): number {
43
+ export function fromTwelveHours(hour: number, pm: boolean): number {
50
44
  return (hour % 12) + (pm ? 12 : 0)
51
45
  }
52
46
 
53
47
  /** Minutes offered in steps of `step`, keeping `current` when it falls between them. */
54
- export function minuteChoices(
55
- step: number,
56
- current?: number
57
- ): number[] {
58
- const choices = Array.from(
59
- { length: Math.ceil(60 / step) },
60
- (_, index) => index * step
61
- )
48
+ export function minuteChoices(step: number, current?: number): number[] {
49
+ const choices = Array.from({ length: Math.ceil(60 / step) }, (_, index) => index * step)
62
50
  if (current !== undefined && !choices.includes(current)) {
63
51
  choices.push(current)
64
52
  choices.sort((a, b) => a - b)
@@ -1,17 +1,12 @@
1
- import type {
2
- ComponentPropsWithoutRef,
3
- PropsWithChildren,
4
- ReactNode,
5
- } from "react"
1
+ import type { ComponentPropsWithoutRef, PropsWithChildren, ReactNode } from "react"
6
2
  import { cn } from "../../lib/class-names"
7
3
 
8
4
  export type ContentViewVariant = keyof typeof variants
9
5
  export type ContentViewHeadingLevel = "h1" | "h2" | "h3"
10
6
 
11
- type ContentViewProps =
12
- ComponentPropsWithoutRef<"section"> & {
13
- variant?: ContentViewVariant
14
- }
7
+ type ContentViewProps = ComponentPropsWithoutRef<"section"> & {
8
+ variant?: ContentViewVariant
9
+ }
15
10
 
16
11
  type RowProps = ComponentPropsWithoutRef<"div">
17
12
 
@@ -48,10 +43,7 @@ export function ContentView({
48
43
  ...props
49
44
  }: ContentViewProps) {
50
45
  return (
51
- <section
52
- className={cn(variants[variant], className)}
53
- {...props}
54
- >
46
+ <section className={cn(variants[variant], className)} {...props}>
55
47
  {children}
56
48
  </section>
57
49
  )
@@ -59,25 +51,15 @@ export function ContentView({
59
51
 
60
52
  function Row({ className, children, ...props }: RowProps) {
61
53
  return (
62
- <div
63
- className={cn("flex items-center", className)}
64
- {...props}
65
- >
54
+ <div className={cn("flex items-center", className)} {...props}>
66
55
  {children}
67
56
  </div>
68
57
  )
69
58
  }
70
59
 
71
- function Section({
72
- className,
73
- children,
74
- ...props
75
- }: SectionProps) {
60
+ function Section({ className, children, ...props }: SectionProps) {
76
61
  return (
77
- <section
78
- className={cn("flex flex-col gap-3", className)}
79
- {...props}
80
- >
62
+ <section className={cn("flex flex-col gap-3", className)} {...props}>
81
63
  {children}
82
64
  </section>
83
65
  )
@@ -95,9 +77,7 @@ function Header({
95
77
  children,
96
78
  }: HeaderProps) {
97
79
  const title = (
98
- <Tag
99
- className={cn(icon && "flex items-center gap-2")}
100
- >
80
+ <Tag className={cn(icon && "flex items-center gap-2")}>
101
81
  {icon}
102
82
  {heading}
103
83
  </Tag>
@@ -106,12 +86,7 @@ function Header({
106
86
  return (
107
87
  <div className={className}>
108
88
  {action ? (
109
- <div
110
- className={cn(
111
- "flex items-center gap-3",
112
- actionClassName
113
- )}
114
- >
89
+ <div className={cn("flex items-center gap-3", actionClassName)}>
115
90
  {title}
116
91
  {action}
117
92
  </div>
@@ -146,13 +121,7 @@ function H2({ className, children, ...props }: H2Props) {
146
121
 
147
122
  function P({ className, children, ...props }: PProps) {
148
123
  return (
149
- <p
150
- className={cn(
151
- "leading-tight font-medium",
152
- className
153
- )}
154
- {...props}
155
- >
124
+ <p className={cn("leading-tight font-medium", className)} {...props}>
156
125
  {children}
157
126
  </p>
158
127
  )
@@ -160,13 +129,7 @@ function P({ className, children, ...props }: PProps) {
160
129
 
161
130
  function Span({ className, children, ...props }: SpanProps) {
162
131
  return (
163
- <span
164
- className={cn(
165
- "text-callout tracking-tighter font-light",
166
- className
167
- )}
168
- {...props}
169
- >
132
+ <span className={cn("text-callout tracking-tighter font-light", className)} {...props}>
170
133
  {children}
171
134
  </span>
172
135
  )
@@ -174,13 +137,7 @@ function Span({ className, children, ...props }: SpanProps) {
174
137
 
175
138
  function Sub({ className, children, ...props }: SubProps) {
176
139
  return (
177
- <sub
178
- className={cn(
179
- "text-subheadline text-label",
180
- className
181
- )}
182
- {...props}
183
- >
140
+ <sub className={cn("text-subheadline text-label", className)} {...props}>
184
141
  {children}
185
142
  </sub>
186
143
  )
@@ -6,10 +6,7 @@ type ConcealedSource = {
6
6
  const sources = new WeakMap<HTMLElement, ConcealedSource>()
7
7
 
8
8
  /** Follow-up menus share ownership until the last surface finishes closing. */
9
- export function concealMenuSource(
10
- element: HTMLElement,
11
- inert: boolean
12
- ) {
9
+ export function concealMenuSource(element: HTMLElement, inert: boolean) {
13
10
  const state = sources.get(element) ?? {
14
11
  count: 0,
15
12
  opacity: element.style.opacity,