@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
@@ -9,11 +9,7 @@ export interface CalendarDay {
9
9
  export function parseDay(value: string): CalendarDay | null {
10
10
  const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value)
11
11
  if (!match) return null
12
- const [year, month, day] = [
13
- Number(match[1]),
14
- Number(match[2]),
15
- Number(match[3]),
16
- ]
12
+ const [year, month, day] = [Number(match[1]), Number(match[2]), Number(match[3])]
17
13
  const date = new Date(Date.UTC(year, month - 1, day))
18
14
  const real =
19
15
  date.getUTCFullYear() === year &&
@@ -22,24 +18,14 @@ export function parseDay(value: string): CalendarDay | null {
22
18
  return real ? { year, month, day } : null
23
19
  }
24
20
 
25
- export function formatDay({
26
- year,
27
- month,
28
- day,
29
- }: CalendarDay): string {
30
- const pad = (value: number, width: number) =>
31
- String(value).padStart(width, "0")
21
+ export function formatDay({ year, month, day }: CalendarDay): string {
22
+ const pad = (value: number, width: number) => String(value).padStart(width, "0")
32
23
  return `${pad(year, 4)}-${pad(month, 2)}-${pad(day, 2)}`
33
24
  }
34
25
 
35
26
  /** Moves by whole days, across months and years. */
36
- export function addDays(
37
- day: CalendarDay,
38
- count: number
39
- ): CalendarDay {
40
- const date = new Date(
41
- Date.UTC(day.year, day.month - 1, day.day + count)
42
- )
27
+ export function addDays(day: CalendarDay, count: number): CalendarDay {
28
+ const date = new Date(Date.UTC(day.year, day.month - 1, day.day + count))
43
29
  return {
44
30
  year: date.getUTCFullYear(),
45
31
  month: date.getUTCMonth() + 1,
@@ -48,18 +34,11 @@ export function addDays(
48
34
  }
49
35
 
50
36
  /** Moves by months, keeping the day where the month allows (31 Jan + 1 is 28 or 29 Feb). */
51
- export function addMonths(
52
- day: CalendarDay,
53
- count: number
54
- ): CalendarDay {
55
- const first = new Date(
56
- Date.UTC(day.year, day.month - 1 + count, 1)
57
- )
37
+ export function addMonths(day: CalendarDay, count: number): CalendarDay {
38
+ const first = new Date(Date.UTC(day.year, day.month - 1 + count, 1))
58
39
  const year = first.getUTCFullYear()
59
40
  const month = first.getUTCMonth() + 1
60
- const last = new Date(
61
- Date.UTC(year, month, 0)
62
- ).getUTCDate()
41
+ const last = new Date(Date.UTC(year, month, 0)).getUTCDate()
63
42
  return { year, month, day: Math.min(day.day, last) }
64
43
  }
65
44
 
@@ -70,31 +49,14 @@ export function addMonths(
70
49
  */
71
50
  export function firstWeekday(locale: string): number {
72
51
  try {
73
- const info = new Intl.Locale(
74
- locale
75
- ) as Intl.Locale & {
52
+ const info = new Intl.Locale(locale) as Intl.Locale & {
76
53
  getWeekInfo?: () => { firstDay: number }
77
54
  weekInfo?: { firstDay: number }
78
55
  }
79
- const first =
80
- info.getWeekInfo?.().firstDay ??
81
- info.weekInfo?.firstDay
56
+ const first = info.getWeekInfo?.().firstDay ?? info.weekInfo?.firstDay
82
57
  if (first) return first
83
58
  const region = info.maximize().region ?? ""
84
- return [
85
- "US",
86
- "CA",
87
- "JP",
88
- "KR",
89
- "TW",
90
- "BR",
91
- "MX",
92
- "IL",
93
- "PH",
94
- "IN",
95
- ].includes(region)
96
- ? 7
97
- : 1
59
+ return ["US", "CA", "JP", "KR", "TW", "BR", "MX", "IL", "PH", "IN"].includes(region) ? 7 : 1
98
60
  } catch {
99
61
  return 1
100
62
  }
@@ -107,9 +69,7 @@ export function monthGrid(
107
69
  firstDay: number
108
70
  ): Array<CalendarDay & { inMonth: boolean }> {
109
71
  // getUTCDay counts Sunday as 0; weeks here count it as 7.
110
- const weekday =
111
- new Date(Date.UTC(year, month - 1, 1)).getUTCDay() ||
112
- 7
72
+ const weekday = new Date(Date.UTC(year, month - 1, 1)).getUTCDay() || 7
113
73
  const lead = (weekday - firstDay + 7) % 7
114
74
  const start = addDays({ year, month, day: 1 }, -lead)
115
75
  return Array.from({ length: 42 }, (_, index) => {
@@ -122,10 +82,6 @@ export function monthGrid(
122
82
  }
123
83
 
124
84
  /** Whether `value` (`YYYY-MM-DD`) lies within the optional bounds. */
125
- export function withinBounds(
126
- value: string,
127
- min?: string,
128
- max?: string
129
- ): boolean {
85
+ export function withinBounds(value: string, min?: string, max?: string): boolean {
130
86
  return (!min || value >= min) && (!max || value <= max)
131
87
  }
@@ -1,8 +1,4 @@
1
- import {
2
- AnimatePresence,
3
- motion,
4
- useReducedMotion,
5
- } from "motion/react"
1
+ import { AnimatePresence, motion, useReducedMotion } from "motion/react"
6
2
  import {
7
3
  type KeyboardEvent,
8
4
  useEffect,
@@ -14,17 +10,15 @@ import {
14
10
  } from "react"
15
11
  import { createPortal } from "react-dom"
16
12
  import { FLOATING_LAYER } from "../../hooks/use-dismiss"
17
- import {
18
- CalendarIcon,
19
- ChevronLeftIcon,
20
- ChevronRightIcon,
21
- } from "../../icons/icons"
13
+ import { useFloatingDismiss } from "../../hooks/use-floating-dismiss"
14
+ import { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from "../../icons/icons"
22
15
  import { cn } from "../../lib/class-names"
23
16
  import { registerFloatingLayer } from "../../lib/floating-layers"
24
17
  import { haptic } from "../../lib/haptics"
25
18
  import { useAnchoredPlacement } from "../../hooks/use-anchored-placement"
26
- import { spring } from "../../motion/transitions"
19
+ import { floatingPanelMotion } from "../../motion/transitions"
27
20
  import { IconButton } from "../button/icon-button"
21
+ import { pickerTriggerStyle } from "../picker/picker-trigger"
28
22
  import {
29
23
  addDays,
30
24
  addMonths,
@@ -54,12 +48,13 @@ export interface CompactDatePickerProps {
54
48
  clear?: string
55
49
  }
56
50
  className?: string
51
+ /** Prevents opening the date panel. @default false */
52
+ disabled?: boolean
57
53
  }
58
54
 
59
55
  const WIDTH = 308
60
56
 
61
- const toDate = ({ year, month, day }: CalendarDay) =>
62
- new Date(Date.UTC(year, month - 1, day))
57
+ const toDate = ({ year, month, day }: CalendarDay) => new Date(Date.UTC(year, month - 1, day))
63
58
 
64
59
  function todayDay(): CalendarDay {
65
60
  const now = new Date()
@@ -85,6 +80,7 @@ export function CompactDatePicker({
85
80
  placeholder,
86
81
  labels,
87
82
  className,
83
+ disabled = false,
88
84
  }: CompactDatePickerProps) {
89
85
  const [open, setOpen] = useState(false)
90
86
  const trigger = useRef<HTMLButtonElement>(null)
@@ -97,9 +93,9 @@ export function CompactDatePicker({
97
93
  }).format(toDate(chosen))
98
94
  : (placeholder ?? "")
99
95
 
100
- const close = () => {
96
+ const close = (restoreFocus: boolean) => {
101
97
  setOpen(false)
102
- trigger.current?.focus()
98
+ if (restoreFocus) trigger.current?.focus({ preventScroll: true })
103
99
  }
104
100
 
105
101
  return (
@@ -107,17 +103,13 @@ export function CompactDatePicker({
107
103
  <button
108
104
  ref={trigger}
109
105
  type="button"
110
- aria-label={
111
- chosen ? `${label}, ${shown}` : label
112
- }
106
+ aria-label={chosen ? `${label}, ${shown}` : label}
113
107
  aria-haspopup="dialog"
114
- aria-expanded={open}
115
- aria-controls={open ? calendarId : undefined}
108
+ aria-expanded={open && !disabled}
109
+ aria-controls={open && !disabled ? calendarId : undefined}
110
+ disabled={disabled}
116
111
  onClick={() => setOpen((current) => !current)}
117
- className={cn(
118
- "flex w-full min-w-0 items-center gap-2 rounded-lg control-field px-3 py-2 text-start text-subheadline text-label",
119
- className
120
- )}
112
+ className={pickerTriggerStyle(className)}
121
113
  >
122
114
  <span
123
115
  className={cn(
@@ -127,15 +119,12 @@ export function CompactDatePicker({
127
119
  >
128
120
  {shown}
129
121
  </span>
130
- <CalendarIcon
131
- size={16}
132
- className="shrink-0 text-label-tertiary"
133
- />
122
+ <CalendarIcon size={16} className="shrink-0 text-label-tertiary" />
134
123
  </button>
135
124
  {typeof document !== "undefined" &&
136
125
  createPortal(
137
126
  <AnimatePresence>
138
- {open && trigger.current && (
127
+ {open && !disabled && trigger.current && (
139
128
  <MonthCalendar
140
129
  id={calendarId}
141
130
  anchor={trigger.current}
@@ -148,7 +137,7 @@ export function CompactDatePicker({
148
137
  onChoose={(next) => {
149
138
  haptic("selection")
150
139
  onChange(next)
151
- close()
140
+ close(true)
152
141
  }}
153
142
  onClose={close}
154
143
  />
@@ -181,24 +170,15 @@ function MonthCalendar({
181
170
  max?: string
182
171
  labels: CompactDatePickerProps["labels"]
183
172
  onChoose: (value: string) => void
184
- onClose: () => void
173
+ onClose: (restoreFocus: boolean) => void
185
174
  }) {
186
175
  const root = useRef<HTMLDivElement>(null)
187
176
  const reducedMotion = useReducedMotion()
188
177
  const placement = useAnchoredPlacement(anchor, WIDTH, 360)
189
178
  const today = todayDay()
190
- const [focused, setFocused] = useState<CalendarDay>(
191
- () => parseDay(value) ?? today
192
- )
193
- const firstDay = useMemo(
194
- () => firstWeekday(locale),
195
- [locale]
196
- )
197
- const days = monthGrid(
198
- focused.year,
199
- focused.month,
200
- firstDay
201
- )
179
+ const [focused, setFocused] = useState<CalendarDay>(() => parseDay(value) ?? today)
180
+ const firstDay = useMemo(() => firstWeekday(locale), [locale])
181
+ const days = monthGrid(focused.year, focused.month, firstDay)
202
182
  const title = new Intl.DateTimeFormat(locale, {
203
183
  month: "long",
204
184
  year: "numeric",
@@ -223,59 +203,24 @@ function MonthCalendar({
223
203
  // The focused day takes keyboard focus as it moves.
224
204
  useEffect(() => {
225
205
  root.current
226
- ?.querySelector<HTMLButtonElement>(
227
- `[data-day="${formatDay(focused)}"]`
228
- )
206
+ ?.querySelector<HTMLButtonElement>(`[data-day="${formatDay(focused)}"]`)
229
207
  ?.focus()
230
208
  }, [focused])
231
209
 
232
- useEffect(() => {
233
- const onPointer = (event: PointerEvent) => {
234
- const target = event.target as Node
235
- if (
236
- !root.current?.contains(target) &&
237
- !anchor.contains(target)
238
- )
239
- onClose()
240
- }
241
- document.addEventListener("pointerdown", onPointer)
242
- return () =>
243
- document.removeEventListener(
244
- "pointerdown",
245
- onPointer
246
- )
247
- }, [anchor, onClose])
210
+ useFloatingDismiss(root, anchor, onClose)
248
211
 
249
212
  const move = (next: CalendarDay) => setFocused(next)
250
213
 
251
- const onKeyDown = (
252
- event: KeyboardEvent<HTMLDivElement>
253
- ) => {
254
- const rtl =
255
- getComputedStyle(event.currentTarget)
256
- .direction === "rtl"
257
- ? -1
258
- : 1
214
+ const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {
215
+ const rtl = getComputedStyle(event.currentTarget).direction === "rtl" ? -1 : 1
259
216
  const keys: Record<string, () => void> = {
260
217
  ArrowLeft: () => move(addDays(focused, -rtl)),
261
218
  ArrowRight: () => move(addDays(focused, rtl)),
262
219
  ArrowUp: () => move(addDays(focused, -7)),
263
220
  ArrowDown: () => move(addDays(focused, 7)),
264
- PageUp: () =>
265
- move(
266
- addMonths(
267
- focused,
268
- event.shiftKey ? -12 : -1
269
- )
270
- ),
271
- PageDown: () =>
272
- move(
273
- addMonths(
274
- focused,
275
- event.shiftKey ? 12 : 1
276
- )
277
- ),
278
- Escape: onClose,
221
+ PageUp: () => move(addMonths(focused, event.shiftKey ? -12 : -1)),
222
+ PageDown: () => move(addMonths(focused, event.shiftKey ? 12 : 1)),
223
+ Escape: () => onClose(true),
279
224
  }
280
225
  const action = keys[event.key]
281
226
  if (!action) return
@@ -295,7 +240,7 @@ function MonthCalendar({
295
240
  ? { opacity: 0 }
296
241
  : {
297
242
  opacity: 0,
298
- scale: 0.96,
243
+ scale: 1,
299
244
  y: placement.above ? 6 : -6,
300
245
  }
301
246
  }
@@ -305,14 +250,14 @@ function MonthCalendar({
305
250
  ? { opacity: 0 }
306
251
  : {
307
252
  opacity: 0,
308
- scale: 0.98,
309
- transition: { duration: 0.1 },
253
+ scale: 1,
254
+ y: placement.above ? 4 : -4,
310
255
  }
311
256
  }
312
257
  transition={
313
258
  reducedMotion
314
259
  ? { duration: 0 }
315
- : spring.smooth
260
+ : floatingPanelMotion(placement.above ? "above" : "below").transition
316
261
  }
317
262
  style={{
318
263
  left: placement.left,
@@ -320,22 +265,15 @@ function MonthCalendar({
320
265
  top: placement.top,
321
266
  bottom: placement.bottom,
322
267
  maxHeight: placement.maxHeight,
323
- overflowY: placement.maxHeight
324
- ? "auto"
325
- : undefined,
326
- transformOrigin: placement.above
327
- ? "50% 100%"
328
- : "50% 0%",
268
+ overflowY: placement.maxHeight ? "auto" : undefined,
269
+ transformOrigin: placement.above ? "50% 100%" : "50% 0%",
329
270
  }}
330
271
  className="glass-menu fixed z-[80] flex flex-col gap-2 rounded-3xl p-3"
331
272
  {...{ [FLOATING_LAYER]: "" }}
332
273
  onKeyDown={onKeyDown}
333
274
  >
334
275
  <div className="flex items-center justify-between gap-2 ps-2">
335
- <p
336
- className="text-headline font-semibold"
337
- aria-live="polite"
338
- >
276
+ <p className="text-headline font-semibold" aria-live="polite">
339
277
  {title}
340
278
  </p>
341
279
  <div className="flex items-center rtl:flex-row-reverse">
@@ -343,9 +281,7 @@ function MonthCalendar({
343
281
  variant="ghost"
344
282
  size="icon-sm"
345
283
  label={labels.previousMonth}
346
- onClick={() =>
347
- move(addMonths(focused, -1))
348
- }
284
+ onClick={() => move(addMonths(focused, -1))}
349
285
  className="text-accent-text"
350
286
  >
351
287
  <ChevronLeftIcon size={20} />
@@ -354,20 +290,14 @@ function MonthCalendar({
354
290
  variant="ghost"
355
291
  size="icon-sm"
356
292
  label={labels.nextMonth}
357
- onClick={() =>
358
- move(addMonths(focused, 1))
359
- }
293
+ onClick={() => move(addMonths(focused, 1))}
360
294
  className="text-accent-text"
361
295
  >
362
296
  <ChevronRightIcon size={20} />
363
297
  </IconButton>
364
298
  </div>
365
299
  </div>
366
- <div
367
- role="grid"
368
- aria-label={title}
369
- className="grid grid-cols-7 gap-y-0.5"
370
- >
300
+ <div role="grid" aria-label={title} className="grid grid-cols-7 gap-y-0.5">
371
301
  <div role="row" className="contents">
372
302
  {weekdays.map((weekday, index) => (
373
303
  <span
@@ -383,13 +313,8 @@ function MonthCalendar({
383
313
  const key = formatDay(day)
384
314
  const selected = key === value
385
315
  const isToday = key === formatDay(today)
386
- const isFocused =
387
- key === formatDay(focused)
388
- const allowed = withinBounds(
389
- key,
390
- min,
391
- max
392
- )
316
+ const isFocused = key === formatDay(focused)
317
+ const allowed = withinBounds(key, min, max)
393
318
  return (
394
319
  <button
395
320
  key={key}
@@ -399,12 +324,8 @@ function MonthCalendar({
399
324
  tabIndex={isFocused ? 0 : -1}
400
325
  disabled={!allowed}
401
326
  aria-selected={selected}
402
- aria-current={
403
- isToday ? "date" : undefined
404
- }
405
- aria-label={fullDate.format(
406
- toDate(day)
407
- )}
327
+ aria-current={isToday ? "date" : undefined}
328
+ aria-label={fullDate.format(toDate(day))}
408
329
  onClick={() => onChoose(key)}
409
330
  className={cn(
410
331
  "mx-auto flex size-10 items-center justify-center rounded-full text-body tabular-nums transition-colors",