@passui/react 0.1.16 → 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 +71 -69
  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,13 +1,6 @@
1
- import {
2
- type MouseEvent,
3
- type PointerEvent,
4
- useRef,
5
- } from "react"
1
+ import { type MouseEvent, type PointerEvent, useRef } from "react"
6
2
  import { haptic } from "../../lib/haptics"
7
- import {
8
- type ContextMenuItem,
9
- openContextMenu,
10
- } from "./context-menu-store"
3
+ import { type ContextMenuItem, openContextMenu } from "./context-menu-store"
11
4
 
12
5
  const LONG_PRESS_MS = 480
13
6
  const MOVE_TOLERANCE = 10
@@ -16,9 +9,7 @@ const MOVE_TOLERANCE = 10
16
9
  * Right-click on desktop, long-press on touch screens: both open the same
17
10
  * menu of actions. Spread the returned handlers onto the element.
18
11
  */
19
- export function useContextMenu(
20
- items: () => ContextMenuItem[]
21
- ) {
12
+ export function useContextMenu(items: () => ContextMenuItem[]) {
22
13
  const press = useRef<{
23
14
  x: number
24
15
  y: number
@@ -35,13 +26,7 @@ export function useContextMenu(
35
26
  onContextMenu(event: MouseEvent) {
36
27
  event.preventDefault()
37
28
  cancel()
38
- openContextMenu(
39
- event.clientX,
40
- event.clientY,
41
- items(),
42
- false,
43
- event.currentTarget
44
- )
29
+ openContextMenu(event.clientX, event.clientY, items(), false, event.currentTarget)
45
30
  },
46
31
  onPointerDown(event: PointerEvent) {
47
32
  if (event.pointerType !== "touch") return
@@ -55,13 +40,7 @@ export function useContextMenu(
55
40
  press.current = null
56
41
  suppressClick.current = true
57
42
  haptic("medium")
58
- openContextMenu(
59
- x,
60
- y,
61
- items(),
62
- true,
63
- anchor
64
- )
43
+ openContextMenu(x, y, items(), true, anchor)
65
44
  }, LONG_PRESS_MS),
66
45
  }
67
46
  },
@@ -69,10 +48,7 @@ export function useContextMenu(
69
48
  const start = press.current
70
49
  if (
71
50
  start &&
72
- Math.hypot(
73
- event.clientX - start.x,
74
- event.clientY - start.y
75
- ) > MOVE_TOLERANCE
51
+ Math.hypot(event.clientX - start.x, event.clientY - start.y) > MOVE_TOLERANCE
76
52
  ) {
77
53
  cancel()
78
54
  }
@@ -1,6 +1,5 @@
1
- import { IconButton } from "@passui/react/icon-button"
2
- import { ArrowUp02Icon } from "@hugeicons/core-free-icons"
3
- import { HugeiconsIcon } from "@hugeicons/react"
1
+ import { IconButton } from "../button/icon-button"
2
+ import { SendIcon } from "../../icons/icons"
4
3
  import type { ReactNode } from "react"
5
4
  import { useState } from "react"
6
5
  import { formatTime } from "../../lib/date"
@@ -43,10 +42,7 @@ function dayLabel(iso: string, locale?: string) {
43
42
  const word = new Intl.RelativeTimeFormat(locale, {
44
43
  numeric: "auto",
45
44
  }).format(offset, "day")
46
- return (
47
- word.charAt(0).toLocaleUpperCase(locale) +
48
- word.slice(1)
49
- )
45
+ return word.charAt(0).toLocaleUpperCase(locale) + word.slice(1)
50
46
  }
51
47
 
52
48
  const clock = (iso: string, locale?: string) =>
@@ -75,90 +71,64 @@ function Messages({
75
71
  const next = messages[index + 1]
76
72
  const newDay =
77
73
  !prev ||
78
- new Date(
79
- prev.createdAt
80
- ).toDateString() !==
81
- new Date(
82
- message.createdAt
83
- ).toDateString()
74
+ new Date(prev.createdAt).toDateString() !==
75
+ new Date(message.createdAt).toDateString()
84
76
  const startsGroup =
85
77
  newDay ||
86
78
  prev.mine !== message.mine ||
87
- new Date(message.createdAt).getTime() -
88
- new Date(prev.createdAt).getTime() >
79
+ new Date(message.createdAt).getTime() - new Date(prev.createdAt).getTime() >
89
80
  GROUP_GAP_MS
90
81
  const endsGroup =
91
82
  !next ||
92
83
  next.mine !== message.mine ||
93
- new Date(next.createdAt).getTime() -
94
- new Date(
95
- message.createdAt
96
- ).getTime() >
84
+ new Date(next.createdAt).getTime() - new Date(message.createdAt).getTime() >
97
85
  GROUP_GAP_MS
98
86
 
99
87
  return (
100
- <li
101
- key={message.id}
102
- className="flex flex-col"
103
- >
88
+ <li key={message.id} className="flex flex-col">
104
89
  {newDay && (
105
90
  // the reader's own day and clock, which a server can't know
106
91
  <span
107
92
  suppressHydrationWarning
108
93
  className="my-4 text-center text-caption2 font-medium text-label-secondary"
109
94
  >
110
- {dayLabel(
111
- message.createdAt,
112
- locale
113
- )}
95
+ {dayLabel(message.createdAt, locale)}
114
96
  </span>
115
97
  )}
116
98
  <div
117
99
  className={cn(
118
100
  "flex items-end gap-2",
119
- message.mine
120
- ? "justify-end"
121
- : "justify-start",
122
- startsGroup
123
- ? "mt-3"
124
- : "mt-0.5"
101
+ message.mine ? "justify-end" : "justify-start",
102
+ startsGroup ? "mt-3" : "mt-0.5"
125
103
  )}
126
104
  >
127
105
  {!message.mine && (
128
106
  <span className="flex size-7 shrink-0 items-center justify-center">
129
- {endsGroup &&
130
- message.avatar}
107
+ {endsGroup && message.avatar}
131
108
  </span>
132
109
  )}
133
110
  <div
134
111
  className={cn(
135
112
  "flex max-w-[78%] flex-col gap-1",
136
- message.mine
137
- ? "items-end"
138
- : "items-start"
113
+ message.mine ? "items-end" : "items-start"
139
114
  )}
140
115
  >
141
- {startsGroup &&
142
- message.author && (
143
- <span className="px-3 text-caption2 text-label-secondary">
144
- {message.author}
145
- </span>
146
- )}
116
+ {startsGroup && message.author && (
117
+ <span className="px-3 text-caption2 text-label-secondary">
118
+ {message.author}
119
+ </span>
120
+ )}
147
121
  {/* text only: a message can never become markup */}
148
122
  <p
149
123
  suppressHydrationWarning
150
- title={formatTime(
151
- message.createdAt
152
- )}
124
+ title={formatTime(message.createdAt)}
153
125
  className={cn(
154
126
  "rounded-4xl px-3.5 py-2 text-subheadline leading-snug whitespace-pre-wrap wrap-break-word",
155
127
  message.mine
156
128
  ? "bg-inverse text-on-inverse"
157
129
  : "bg-fill text-label",
158
130
  endsGroup &&
159
- (message.mine
160
- ? "rounded-br-md"
161
- : "rounded-bl-md")
131
+ (message.mine ? "rounded-br-md" : "rounded-bl-md")
162
132
  )}
163
133
  >
164
134
  {message.body}
@@ -166,15 +136,10 @@ function Messages({
166
136
  {endsGroup && (
167
137
  <time
168
138
  suppressHydrationWarning
169
- dateTime={
170
- message.createdAt
171
- }
139
+ dateTime={message.createdAt}
172
140
  className="px-3 text-caption2 text-label-secondary tabular-nums"
173
141
  >
174
- {clock(
175
- message.createdAt,
176
- locale
177
- )}
142
+ {clock(message.createdAt, locale)}
178
143
  </time>
179
144
  )}
180
145
  </div>
@@ -232,14 +197,9 @@ function Composer({
232
197
  <div className="flex items-end gap-2 rounded-5xl border border-separator bg-elevated py-1.5 pr-1.5 pl-4 transition-colors focus-within:border-accent-text/60">
233
198
  <textarea
234
199
  value={body}
235
- onChange={(event) =>
236
- setBody(event.target.value)
237
- }
200
+ onChange={(event) => setBody(event.target.value)}
238
201
  onKeyDown={(event) => {
239
- if (
240
- event.key === "Enter" &&
241
- (event.metaKey || event.ctrlKey)
242
- ) {
202
+ if (event.key === "Enter" && (event.metaKey || event.ctrlKey)) {
243
203
  event.preventDefault()
244
204
  void send()
245
205
  }
@@ -256,20 +216,14 @@ function Composer({
256
216
  label={sendLabel}
257
217
  className="size-8 shrink-0 rounded-full"
258
218
  >
259
- <HugeiconsIcon
260
- icon={ArrowUp02Icon}
261
- strokeWidth={2.5}
262
- />
219
+ <SendIcon size={18} strokeWidth={2.5} />
263
220
  </IconButton>
264
221
  </div>
265
222
  <div className="flex min-h-6 items-center gap-2 px-1">
266
223
  {actions}
267
224
  <span className="ml-auto text-caption2 text-label-secondary tabular-nums">
268
225
  {body.length > maxLength * 0.8 &&
269
- (remaining?.(
270
- maxLength - body.length
271
- ) ??
272
- maxLength - body.length)}
226
+ (remaining?.(maxLength - body.length) ?? maxLength - body.length)}
273
227
  </span>
274
228
  </div>
275
229
  </form>
@@ -17,26 +17,15 @@ type DatePickerProps = {
17
17
  }
18
18
 
19
19
  /** Segmented date entry suited to birthdays, without a native calendar dialog. */
20
- export function DatePicker({
21
- value,
22
- onChange,
23
- label,
24
- labels,
25
- locale,
26
- max,
27
- }: DatePickerProps) {
20
+ export function DatePicker({ value, onChange, label, labels, locale, max }: DatePickerProps) {
28
21
  const [year, month, day] = value.split("-")
29
22
  const [parts, setParts] = useState({
30
23
  year: year ?? "",
31
24
  month: month ?? "",
32
25
  day: day ?? "",
33
26
  })
34
- const complete =
35
- parts.year.length === 4 &&
36
- Boolean(parts.month && parts.day)
37
- const invalid =
38
- complete &&
39
- !dateValue(parts.year, parts.month, parts.day, max)
27
+ const complete = parts.year.length === 4 && Boolean(parts.month && parts.day)
28
+ const invalid = complete && !dateValue(parts.year, parts.month, parts.day, max)
40
29
  const order = new Intl.DateTimeFormat(locale, {
41
30
  year: "numeric",
42
31
  month: "2-digit",
@@ -49,16 +38,11 @@ export function DatePicker({
49
38
  part
50
39
  ): part is Intl.DateTimeFormatPart & {
51
40
  type: "year" | "month" | "day"
52
- } =>
53
- part.type === "year" ||
54
- part.type === "month" ||
55
- part.type === "day"
41
+ } => part.type === "year" || part.type === "month" || part.type === "day"
56
42
  )
57
43
  return (
58
44
  <fieldset className="flex min-w-0 flex-col gap-3">
59
- <legend className="mb-3 text-subheadline font-medium">
60
- {label}
61
- </legend>
45
+ <legend className="mb-3 text-subheadline font-medium">{label}</legend>
62
46
  <div className="grid grid-cols-3 gap-3">
63
47
  {order.map(({ type }) => (
64
48
  <TextField
@@ -72,29 +56,16 @@ export function DatePicker({
72
56
  onChange={(event) => {
73
57
  const next = {
74
58
  ...parts,
75
- [type]: event.target.value.replace(
76
- /\D/g,
77
- ""
78
- ),
59
+ [type]: event.target.value.replace(/\D/g, ""),
79
60
  }
80
61
  setParts(next)
81
- onChange(
82
- dateValue(
83
- next.year,
84
- next.month,
85
- next.day,
86
- max
87
- )
88
- )
62
+ onChange(dateValue(next.year, next.month, next.day, max))
89
63
  }}
90
64
  />
91
65
  ))}
92
66
  </div>
93
67
  {invalid && (
94
- <p
95
- role="status"
96
- className="text-footnote text-danger"
97
- >
68
+ <p role="status" className="text-footnote text-danger">
98
69
  {labels.invalid}
99
70
  </p>
100
71
  )}
@@ -1,37 +1,12 @@
1
1
  /** Returns a date-only value without timezone conversion or date rollover. */
2
- export function dateValue(
3
- year: string,
4
- month: string,
5
- day: string,
6
- max?: string
7
- ) {
8
- if (
9
- !/^\d{4}$/.test(year) ||
10
- !/^\d{1,2}$/.test(month) ||
11
- !/^\d{1,2}$/.test(day)
12
- )
13
- return ""
2
+ export function dateValue(year: string, month: string, day: string, max?: string) {
3
+ if (!/^\d{4}$/.test(year) || !/^\d{1,2}$/.test(month) || !/^\d{1,2}$/.test(day)) return ""
14
4
  const y = Number(year)
15
5
  const m = Number(month)
16
6
  const d = Number(day)
17
- const leap =
18
- y % 4 === 0 && (y % 100 !== 0 || y % 400 === 0)
19
- const days = [
20
- 31,
21
- leap ? 29 : 28,
22
- 31,
23
- 30,
24
- 31,
25
- 30,
26
- 31,
27
- 31,
28
- 30,
29
- 31,
30
- 30,
31
- 31,
32
- ]
33
- if (y < 1 || m < 1 || m > 12 || d < 1 || d > days[m - 1]!)
34
- return ""
7
+ const leap = y % 4 === 0 && (y % 100 !== 0 || y % 400 === 0)
8
+ const days = [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
9
+ if (y < 1 || m < 1 || m > 12 || d < 1 || d > days[m - 1]!) return ""
35
10
  const value = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`
36
11
  return max && value > max ? "" : value
37
12
  }
@@ -1,17 +1,8 @@
1
- import { AnimatePresence, motion } from "motion/react"
2
- import {
3
- useEffect,
4
- useRef,
5
- useSyncExternalStore,
6
- } from "react"
7
- import { cn } from "../../lib/class-names"
1
+ import { AnimatePresence, motion, useReducedMotion } from "motion/react"
2
+ import { useEffect, useRef, useSyncExternalStore } from "react"
3
+ import { Button } from "../button/button"
8
4
  import { spring } from "../../motion/transitions"
9
- import {
10
- getDialog,
11
- type PendingDialog,
12
- settleDialog,
13
- subscribeDialogs,
14
- } from "./dialog-store"
5
+ import { getDialog, type PendingDialog, settleDialog, subscribeDialogs } from "./dialog-store"
15
6
 
16
7
  /**
17
8
  * Renders confirmation dialogs: a glass card that springs up over blurred
@@ -19,36 +10,24 @@ import {
19
10
  * action is destructive, where the safe choice has focus.
20
11
  */
21
12
  export function DialogHost() {
22
- const dialog = useSyncExternalStore(
23
- subscribeDialogs,
24
- getDialog,
25
- () => null
26
- )
13
+ const dialog = useSyncExternalStore(subscribeDialogs, getDialog, () => null)
27
14
  return (
28
15
  <AnimatePresence>
29
- {dialog && (
30
- <ConfirmCard
31
- key={dialog.id}
32
- dialog={dialog}
33
- />
34
- )}
16
+ {dialog && <ConfirmCard key={dialog.id} dialog={dialog} />}
35
17
  </AnimatePresence>
36
18
  )
37
19
  }
38
20
 
39
21
  function ConfirmCard({ dialog }: { dialog: PendingDialog }) {
22
+ const reducedMotion = useReducedMotion()
40
23
  const confirmRef = useRef<HTMLButtonElement>(null)
41
24
  const cancelRef = useRef<HTMLButtonElement>(null)
42
25
  const titleId = `dialog-title-${dialog.id}`
43
26
  const messageId = `dialog-message-${dialog.id}`
44
27
 
45
28
  useEffect(() => {
46
- const previous = window.document
47
- .activeElement as HTMLElement | null
48
- ;(dialog.destructive
49
- ? cancelRef
50
- : confirmRef
51
- ).current?.focus()
29
+ const previous = window.document.activeElement as HTMLElement | null
30
+ ;(dialog.destructive ? cancelRef : confirmRef).current?.focus()
52
31
  const onKey = (event: KeyboardEvent) => {
53
32
  if (event.key === "Escape") {
54
33
  event.preventDefault()
@@ -56,21 +35,12 @@ function ConfirmCard({ dialog }: { dialog: PendingDialog }) {
56
35
  }
57
36
  // Keep focus inside the dialog.
58
37
  if (event.key === "Tab") {
59
- const order = [
60
- cancelRef.current,
61
- confirmRef.current,
62
- ].filter(Boolean) as HTMLElement[]
63
- const at = order.indexOf(
64
- window.document
65
- .activeElement as HTMLElement
66
- )
38
+ const order = [cancelRef.current, confirmRef.current].filter(
39
+ Boolean
40
+ ) as HTMLElement[]
41
+ const at = order.indexOf(window.document.activeElement as HTMLElement)
67
42
  event.preventDefault()
68
- order[
69
- (at +
70
- (event.shiftKey ? -1 : 1) +
71
- order.length) %
72
- order.length
73
- ]?.focus()
43
+ order[(at + (event.shiftKey ? -1 : 1) + order.length) % order.length]?.focus()
74
44
  }
75
45
  }
76
46
  window.addEventListener("keydown", onKey)
@@ -82,40 +52,28 @@ function ConfirmCard({ dialog }: { dialog: PendingDialog }) {
82
52
 
83
53
  return (
84
54
  <div className="fixed inset-0 z-[70] flex items-center justify-center p-5">
85
- <motion.button
86
- type="button"
87
- tabIndex={-1}
88
- aria-label="Cancel"
55
+ <motion.div
56
+ aria-hidden="true"
89
57
  className="absolute inset-0 bg-black/25 backdrop-blur-md"
90
58
  initial={{ opacity: 0 }}
91
59
  animate={{ opacity: 1 }}
92
60
  exit={{ opacity: 0 }}
93
- transition={spring.smooth}
61
+ transition={reducedMotion ? { duration: 0 } : spring.smooth}
94
62
  onClick={() => settleDialog(false)}
95
63
  />
96
64
  <motion.div
97
65
  role="alertdialog"
98
66
  aria-modal="true"
99
67
  aria-labelledby={titleId}
100
- aria-describedby={
101
- dialog.message ? messageId : undefined
102
- }
68
+ aria-describedby={dialog.message ? messageId : undefined}
103
69
  className="glass-menu relative flex w-full max-w-[340px] flex-col gap-4 rounded-5xl p-5 text-center"
104
- initial={{ opacity: 0, scale: 0.86, y: 12 }}
105
- animate={{ opacity: 1, scale: 1, y: 0 }}
106
- exit={{
107
- opacity: 0,
108
- scale: 0.94,
109
- y: 6,
110
- transition: spring.snappy,
111
- }}
112
- transition={spring.bouncy}
70
+ initial={reducedMotion ? { opacity: 0 } : { opacity: 0, y: 12 }}
71
+ animate={{ opacity: 1, y: 0 }}
72
+ exit={reducedMotion ? { opacity: 0 } : { opacity: 0, y: 6 }}
73
+ transition={reducedMotion ? { duration: 0 } : spring.smooth}
113
74
  >
114
75
  <div className="flex flex-col gap-1.5 px-1 pt-1">
115
- <h2
116
- id={titleId}
117
- className="text-body font-semibold text-label"
118
- >
76
+ <h2 id={titleId} className="text-body font-semibold text-label">
119
77
  {dialog.title}
120
78
  </h2>
121
79
  {dialog.message && (
@@ -128,27 +86,24 @@ function ConfirmCard({ dialog }: { dialog: PendingDialog }) {
128
86
  )}
129
87
  </div>
130
88
  <div className="flex gap-2.5">
131
- <button
89
+ <Button
132
90
  ref={cancelRef}
133
91
  type="button"
92
+ variant="secondary"
134
93
  onClick={() => settleDialog(false)}
135
- className="h-11 grow rounded-2xl bg-fill text-subheadline font-semibold text-label transition-[background-color,transform] hover:bg-separator/70 active:scale-[0.97] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/70"
94
+ className="min-w-0 grow rounded-2xl"
136
95
  >
137
96
  {dialog.cancelLabel ?? "Cancel"}
138
- </button>
139
- <button
97
+ </Button>
98
+ <Button
140
99
  ref={confirmRef}
141
100
  type="button"
101
+ variant={dialog.destructive ? "destructive" : "default"}
142
102
  onClick={() => settleDialog(true)}
143
- className={cn(
144
- "h-11 grow rounded-2xl text-subheadline font-semibold transition-[filter,transform] hover:brightness-105 active:scale-[0.97] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/70",
145
- dialog.destructive
146
- ? "bg-danger text-white"
147
- : "bg-inverse text-on-inverse"
148
- )}
103
+ className="min-w-0 grow rounded-2xl"
149
104
  >
150
105
  {dialog.confirmLabel ?? "OK"}
151
- </button>
106
+ </Button>
152
107
  </div>
153
108
  </motion.div>
154
109
  </div>
@@ -26,9 +26,7 @@ const emit = () => {
26
26
  for (const listener of listeners) listener()
27
27
  }
28
28
 
29
- export function confirmDialog(
30
- options: ConfirmOptions
31
- ): Promise<boolean> {
29
+ export function confirmDialog(options: ConfirmOptions): Promise<boolean> {
32
30
  return new Promise((resolve) => {
33
31
  const dialog = { ...options, id: nextId++, resolve }
34
32
  if (current) queue.push(dialog)