@passui/react 0.1.17 → 0.1.20

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 (408) hide show
  1. package/README.md +140 -1
  2. package/THIRD_PARTY_NOTICES.md +25 -0
  3. package/dist/types/src/appearance/index.d.ts +2 -0
  4. package/dist/types/src/appearance/platform.d.ts +9 -0
  5. package/dist/types/src/appearance/theme.d.ts +71 -0
  6. package/dist/types/src/components/accordion/accordion.d.ts +19 -0
  7. package/dist/types/src/components/ambient/ambient.d.ts +12 -0
  8. package/dist/types/src/components/ambient/index.d.ts +1 -0
  9. package/dist/types/src/components/aspect-ratio/aspect-ratio.d.ts +7 -0
  10. package/dist/types/src/components/breadcrumb/breadcrumb.d.ts +16 -0
  11. package/dist/types/src/components/button/button-styles.d.ts +12 -0
  12. package/dist/types/src/components/button/button.d.ts +32 -0
  13. package/dist/types/src/components/button/icon-button.d.ts +10 -0
  14. package/dist/types/src/components/button/pending-spinner.d.ts +5 -0
  15. package/dist/types/src/components/button/use-pending-indicator.d.ts +2 -0
  16. package/dist/types/src/components/chip/chip.d.ts +7 -0
  17. package/dist/types/src/components/code-block/code-block.d.ts +10 -0
  18. package/dist/types/src/components/combo-box/combo-box.d.ts +9 -0
  19. package/dist/types/src/components/command/command.d.ts +18 -0
  20. package/dist/types/src/components/compact-date-picker/calendar-month.d.ts +25 -0
  21. package/dist/types/src/components/compact-date-picker/compact-date-picker.d.ts +27 -0
  22. package/dist/types/src/components/compact-time-picker/compact-time-picker.d.ts +26 -0
  23. package/dist/types/src/components/compact-time-picker/time-value.d.ts +18 -0
  24. package/dist/types/src/components/content-unavailable-view/content-unavailable-view.d.ts +9 -0
  25. package/dist/types/src/components/content-view/content-view.d.ts +48 -0
  26. package/dist/types/src/components/content-view/index.d.ts +1 -0
  27. package/dist/types/src/components/context-menu/conceal-menu-source.d.ts +2 -0
  28. package/dist/types/src/components/context-menu/context-menu-host.d.ts +2 -0
  29. package/dist/types/src/components/context-menu/context-menu-store.d.ts +57 -0
  30. package/dist/types/src/components/context-menu/menu-navigation.d.ts +6 -0
  31. package/dist/types/src/components/context-menu/menu-position.d.ts +21 -0
  32. package/dist/types/src/components/context-menu/menu-reveal.d.ts +17 -0
  33. package/dist/types/src/components/context-menu/use-context-menu.d.ts +14 -0
  34. package/dist/types/src/components/conversation/conversation.d.ts +43 -0
  35. package/dist/types/src/components/conversation/index.d.ts +1 -0
  36. package/dist/types/src/components/date-picker/date-picker.d.ts +16 -0
  37. package/dist/types/src/components/date-picker/date-value.d.ts +2 -0
  38. package/dist/types/src/components/dialog/dialog-host.d.ts +6 -0
  39. package/dist/types/src/components/dialog/dialog-store.d.ts +23 -0
  40. package/dist/types/src/components/dialog/dialog.d.ts +30 -0
  41. package/dist/types/src/components/dialog/index.d.ts +1 -0
  42. package/dist/types/src/components/disclosure-group/disclosure-group.d.ts +15 -0
  43. package/dist/types/src/components/divider/divider.d.ts +9 -0
  44. package/dist/types/src/components/inline-disclosure/inline-disclosure.d.ts +15 -0
  45. package/dist/types/src/components/keyboard-shortcut/keyboard-shortcut.d.ts +5 -0
  46. package/dist/types/src/components/labeled-content/labeled-content.d.ts +19 -0
  47. package/dist/types/src/components/locale-switcher/index.d.ts +1 -0
  48. package/dist/types/src/components/locale-switcher/locale-switcher.d.ts +10 -0
  49. package/dist/types/src/components/menu/menu.d.ts +16 -0
  50. package/dist/types/src/components/one-time-code/one-time-code.d.ts +18 -0
  51. package/dist/types/src/components/picker/picker-trigger.d.ts +2 -0
  52. package/dist/types/src/components/picker/picker.d.ts +43 -0
  53. package/dist/types/src/components/popover/anchored-surface.d.ts +13 -0
  54. package/dist/types/src/components/popover/popover-fit.d.ts +21 -0
  55. package/dist/types/src/components/popover/popover.d.ts +18 -0
  56. package/dist/types/src/components/profile-image/profile-image.d.ts +4 -0
  57. package/dist/types/src/components/progress-view/progress-view.d.ts +13 -0
  58. package/dist/types/src/components/progress-view/use-liquid-progress.d.ts +3 -0
  59. package/dist/types/src/components/radio-group/radio-group.d.ts +17 -0
  60. package/dist/types/src/components/search-field/expanding-search-field.d.ts +5 -0
  61. package/dist/types/src/components/search-field/search-field.d.ts +6 -0
  62. package/dist/types/src/components/search-list/search-list.d.ts +19 -0
  63. package/dist/types/src/components/section/section.d.ts +15 -0
  64. package/dist/types/src/components/secure-field/secure-field.d.ts +4 -0
  65. package/dist/types/src/components/segmented-control/segmented-control.d.ts +20 -0
  66. package/dist/types/src/components/sheet/modal-environment.d.ts +2 -0
  67. package/dist/types/src/components/sheet/sheet-portal.d.ts +5 -0
  68. package/dist/types/src/components/sheet/sheet.d.ts +21 -0
  69. package/dist/types/src/components/sheet/use-sheet-focus.d.ts +3 -0
  70. package/dist/types/src/components/sidebar/sidebar.d.ts +19 -0
  71. package/dist/types/src/components/skeleton/skeleton.d.ts +6 -0
  72. package/dist/types/src/components/slider/slider.d.ts +14 -0
  73. package/dist/types/src/components/slosh-slider/liquid-step.d.ts +6 -0
  74. package/dist/types/src/components/slosh-slider/slosh-slider.d.ts +18 -0
  75. package/dist/types/src/components/stat-tile/index.d.ts +1 -0
  76. package/dist/types/src/components/stat-tile/stat-tile.d.ts +15 -0
  77. package/dist/types/src/components/status-indicator/status-indicator.d.ts +14 -0
  78. package/dist/types/src/components/stepper/rolling-digit.d.ts +11 -0
  79. package/dist/types/src/components/stepper/stepper.d.ts +19 -0
  80. package/dist/types/src/components/swatch-picker/swatch-picker.d.ts +17 -0
  81. package/dist/types/src/components/tab-bar/tab-bar.d.ts +40 -0
  82. package/dist/types/src/components/tab-view/tab-view.d.ts +24 -0
  83. package/dist/types/src/components/table/table.d.ts +10 -0
  84. package/dist/types/src/components/text-editor/text-editor.d.ts +2 -0
  85. package/dist/types/src/components/text-field/text-field.d.ts +20 -0
  86. package/dist/types/src/components/toast/toast-store.d.ts +47 -0
  87. package/dist/types/src/components/toast/toaster.d.ts +10 -0
  88. package/dist/types/src/components/toggle/toggle.d.ts +17 -0
  89. package/dist/types/src/components/tooltip/tooltip-host.d.ts +6 -0
  90. package/dist/types/src/components/view-controller/index.d.ts +1 -0
  91. package/dist/types/src/components/view-controller/view-controller.d.ts +21 -0
  92. package/dist/types/src/components/wake-slider/wake-slider.d.ts +12 -0
  93. package/dist/types/src/hooks/scroll/minimize-decision.d.ts +2 -0
  94. package/dist/types/src/hooks/use-anchored-disclosure.d.ts +9 -0
  95. package/dist/types/src/hooks/use-anchored-placement.d.ts +7 -0
  96. package/dist/types/src/hooks/use-dismiss.d.ts +9 -0
  97. package/dist/types/src/hooks/use-floating-dismiss.d.ts +3 -0
  98. package/dist/types/src/hooks/use-media-query.d.ts +21 -0
  99. package/dist/types/src/hooks/use-minimize-on-scroll.d.ts +6 -0
  100. package/dist/types/src/hooks/use-visual-viewport.d.ts +4 -0
  101. package/dist/types/src/hooks/viewport/types.d.ts +19 -0
  102. package/dist/types/src/hooks/viewport/viewport-metrics.d.ts +3 -0
  103. package/dist/types/src/icons/icons.d.ts +612 -0
  104. package/dist/types/src/index.d.ts +71 -0
  105. package/dist/types/src/lib/anchored-placement.d.ts +39 -0
  106. package/dist/types/src/lib/class-names.d.ts +2 -0
  107. package/dist/types/src/lib/clipboard.d.ts +6 -0
  108. package/dist/types/src/lib/date.d.ts +50 -0
  109. package/dist/types/src/lib/floating-layers.d.ts +8 -0
  110. package/dist/types/src/lib/haptics.d.ts +8 -0
  111. package/dist/types/src/lib/language.d.ts +4 -0
  112. package/dist/types/src/lib/range-value.d.ts +4 -0
  113. package/dist/types/src/lib/screen-edges.d.ts +12 -0
  114. package/dist/types/src/lib/shapes.d.ts +17 -0
  115. package/dist/types/src/motion/transitions.d.ts +97 -0
  116. package/dist/types/src/tokens.d.ts +1 -0
  117. package/package.json +248 -40
  118. package/src/appearance/platform.tsx +10 -47
  119. package/src/appearance/theme.tsx +42 -142
  120. package/src/components/accordion/accordion.tsx +48 -0
  121. package/src/components/ambient/ambient.tsx +2 -10
  122. package/src/components/aspect-ratio/aspect-ratio.tsx +22 -0
  123. package/src/components/breadcrumb/breadcrumb.tsx +53 -0
  124. package/src/components/button/button-styles.ts +13 -31
  125. package/src/components/button/button.tsx +24 -15
  126. package/src/components/button/icon-button.tsx +14 -56
  127. package/src/components/button/use-pending-indicator.ts +2 -7
  128. package/src/components/chip/chip.tsx +8 -13
  129. package/src/components/code-block/code-block.tsx +41 -0
  130. package/src/components/combo-box/combo-box.tsx +13 -0
  131. package/src/components/command/command.tsx +119 -0
  132. package/src/components/compact-date-picker/calendar-month.ts +13 -57
  133. package/src/components/compact-date-picker/compact-date-picker.tsx +72 -195
  134. package/src/components/compact-time-picker/compact-time-picker.tsx +74 -195
  135. package/src/components/compact-time-picker/time-value.ts +4 -16
  136. package/src/components/content-unavailable-view/content-unavailable-view.tsx +37 -0
  137. package/src/components/content-view/content-view.tsx +13 -56
  138. package/src/components/context-menu/conceal-menu-source.ts +1 -4
  139. package/src/components/context-menu/context-menu-host.tsx +132 -198
  140. package/src/components/context-menu/context-menu-store.ts +5 -14
  141. package/src/components/context-menu/menu-navigation.ts +29 -0
  142. package/src/components/context-menu/menu-position.ts +6 -27
  143. package/src/components/context-menu/menu-reveal.ts +14 -52
  144. package/src/components/context-menu/use-context-menu.ts +6 -30
  145. package/src/components/conversation/conversation.tsx +26 -72
  146. package/src/components/date-picker/date-picker.tsx +8 -37
  147. package/src/components/date-picker/date-value.ts +5 -30
  148. package/src/components/dialog/dialog-host.tsx +37 -76
  149. package/src/components/dialog/dialog-store.ts +16 -7
  150. package/src/components/dialog/dialog.tsx +23 -80
  151. package/src/components/disclosure-group/disclosure-group.tsx +79 -0
  152. package/src/components/divider/divider.tsx +31 -0
  153. package/src/components/inline-disclosure/inline-disclosure.tsx +49 -0
  154. package/src/components/keyboard-shortcut/keyboard-shortcut.tsx +17 -0
  155. package/src/components/labeled-content/labeled-content.tsx +24 -18
  156. package/src/components/locale-switcher/locale-switcher.tsx +20 -70
  157. package/src/components/menu/menu.tsx +68 -0
  158. package/src/components/one-time-code/one-time-code.tsx +168 -0
  159. package/src/components/picker/picker-trigger.ts +10 -0
  160. package/src/components/picker/picker.tsx +165 -283
  161. package/src/components/popover/anchored-surface.tsx +223 -0
  162. package/src/components/popover/popover-fit.ts +69 -0
  163. package/src/components/popover/popover.tsx +209 -63
  164. package/src/components/profile-image/profile-image.tsx +6 -28
  165. package/src/components/progress-view/progress-view.tsx +70 -0
  166. package/src/components/progress-view/use-liquid-progress.ts +43 -0
  167. package/src/components/radio-group/radio-group.tsx +63 -0
  168. package/src/components/search-field/expanding-search-field.tsx +183 -0
  169. package/src/components/search-field/search-field.tsx +25 -7
  170. package/src/components/search-list/search-list.tsx +58 -75
  171. package/src/components/section/section.tsx +18 -17
  172. package/src/components/secure-field/secure-field.tsx +5 -7
  173. package/src/components/segmented-control/segmented-control.tsx +20 -29
  174. package/src/components/sheet/modal-environment.ts +16 -54
  175. package/src/components/sheet/sheet-portal.tsx +10 -42
  176. package/src/components/sheet/sheet.tsx +17 -25
  177. package/src/components/sheet/use-sheet-focus.ts +15 -51
  178. package/src/components/sidebar/sidebar.tsx +44 -38
  179. package/src/components/skeleton/skeleton.tsx +19 -0
  180. package/src/components/slider/slider.tsx +76 -0
  181. package/src/components/slosh-slider/liquid-step.ts +42 -0
  182. package/src/components/slosh-slider/slosh-slider.tsx +251 -0
  183. package/src/components/stat-tile/stat-tile.tsx +9 -30
  184. package/src/components/status-indicator/status-indicator.tsx +12 -19
  185. package/src/components/stepper/rolling-digit.tsx +77 -0
  186. package/src/components/stepper/stepper.tsx +101 -0
  187. package/src/components/swatch-picker/swatch-picker.tsx +19 -15
  188. package/src/components/tab-bar/tab-bar.tsx +59 -59
  189. package/src/components/tab-view/tab-view.tsx +52 -57
  190. package/src/components/table/table.tsx +14 -62
  191. package/src/components/text-editor/text-editor.tsx +2 -12
  192. package/src/components/text-field/text-field.tsx +53 -44
  193. package/src/components/toast/toast-store.ts +9 -30
  194. package/src/components/toast/toaster.tsx +90 -104
  195. package/src/components/toggle/toggle.tsx +165 -44
  196. package/src/components/tooltip/tooltip-host.tsx +70 -67
  197. package/src/components/view-controller/view-controller.tsx +4 -21
  198. package/src/components/wake-slider/wake-slider.tsx +237 -0
  199. package/src/hooks/scroll/minimize-decision.ts +1 -5
  200. package/src/hooks/use-anchored-disclosure.ts +23 -0
  201. package/src/hooks/use-anchored-placement.ts +7 -14
  202. package/src/hooks/use-dismiss.ts +5 -23
  203. package/src/hooks/use-floating-dismiss.ts +28 -0
  204. package/src/hooks/use-media-query.ts +12 -31
  205. package/src/hooks/use-minimize-on-scroll.ts +10 -34
  206. package/src/hooks/use-visual-viewport.ts +5 -14
  207. package/src/hooks/viewport/viewport-metrics.ts +4 -16
  208. package/src/icons/icons.tsx +229 -183
  209. package/src/index.ts +27 -1
  210. package/src/lib/anchored-placement.ts +12 -18
  211. package/src/lib/class-names.ts +1 -2
  212. package/src/lib/clipboard.ts +14 -0
  213. package/src/lib/date.ts +4 -15
  214. package/src/lib/floating-layers.ts +18 -8
  215. package/src/lib/haptics.ts +1 -3
  216. package/src/lib/language.ts +2 -7
  217. package/src/lib/range-value.ts +32 -0
  218. package/src/lib/screen-edges.ts +2 -6
  219. package/src/lib/shapes.ts +5 -20
  220. package/src/motion/transitions.ts +18 -12
  221. package/src/styles/code-block.css +33 -0
  222. package/src/styles/motion-controls.css +189 -0
  223. package/src/styles/styles.css +3 -0
  224. package/src/components/ambient/ambient.docs.tsx +0 -68
  225. package/src/components/ambient/examples/ambient-images.tsx +0 -30
  226. package/src/components/ambient/examples/ambient-now-playing.tsx +0 -55
  227. package/src/components/ambient/examples/ambient-showcase.tsx +0 -33
  228. package/src/components/ambient/examples/ambient-usage.tsx +0 -19
  229. package/src/components/button/button.docs.tsx +0 -116
  230. package/src/components/button/examples/button-disabled.tsx +0 -19
  231. package/src/components/button/examples/button-icon.tsx +0 -39
  232. package/src/components/button/examples/button-link.tsx +0 -12
  233. package/src/components/button/examples/button-pending.tsx +0 -27
  234. package/src/components/button/examples/button-showcase.tsx +0 -115
  235. package/src/components/button/examples/button-sizes.tsx +0 -12
  236. package/src/components/button/examples/button-usage.tsx +0 -12
  237. package/src/components/button/examples/button-variants.tsx +0 -15
  238. package/src/components/button/examples/button-with-icon.tsx +0 -32
  239. package/src/components/button/examples/icon-button-player.tsx +0 -38
  240. package/src/components/button/examples/icon-button-showcase.tsx +0 -83
  241. package/src/components/button/examples/icon-button-usage.tsx +0 -11
  242. package/src/components/button/examples/icon-button-variants.tsx +0 -39
  243. package/src/components/button/icon-button.docs.tsx +0 -68
  244. package/src/components/chip/chip.docs.tsx +0 -37
  245. package/src/components/chip/examples/chip-in-rows.tsx +0 -19
  246. package/src/components/chip/examples/chip-showcase.tsx +0 -51
  247. package/src/components/chip/examples/chip-tones.tsx +0 -13
  248. package/src/components/chip/examples/chip-usage.tsx +0 -5
  249. package/src/components/compact-date-picker/compact-date-picker.docs.tsx +0 -81
  250. package/src/components/compact-date-picker/examples/compact-date-picker-showcase.tsx +0 -35
  251. package/src/components/compact-date-picker/examples/compact-date-picker-usage.tsx +0 -22
  252. package/src/components/compact-time-picker/compact-time-picker.docs.tsx +0 -80
  253. package/src/components/compact-time-picker/examples/compact-time-picker-showcase.tsx +0 -31
  254. package/src/components/compact-time-picker/examples/compact-time-picker-usage.tsx +0 -21
  255. package/src/components/content-view/content-view.docs.tsx +0 -61
  256. package/src/components/content-view/examples/content-view-header-action.tsx +0 -33
  257. package/src/components/content-view/examples/content-view-showcase.tsx +0 -65
  258. package/src/components/content-view/examples/content-view-stats.tsx +0 -35
  259. package/src/components/content-view/examples/content-view-usage.tsx +0 -14
  260. package/src/components/context-menu/context-menu.docs.tsx +0 -92
  261. package/src/components/context-menu/examples/context-menu-checked.tsx +0 -37
  262. package/src/components/context-menu/examples/context-menu-list.tsx +0 -85
  263. package/src/components/context-menu/examples/context-menu-showcase.tsx +0 -56
  264. package/src/components/context-menu/examples/context-menu-toolbar.tsx +0 -63
  265. package/src/components/context-menu/examples/context-menu-usage.tsx +0 -24
  266. package/src/components/conversation/conversation.docs.tsx +0 -88
  267. package/src/components/conversation/examples/conversation-composer.tsx +0 -36
  268. package/src/components/conversation/examples/conversation-days.tsx +0 -48
  269. package/src/components/conversation/examples/conversation-showcase.tsx +0 -71
  270. package/src/components/conversation/examples/conversation-usage.tsx +0 -28
  271. package/src/components/date-picker/date-picker.docs.tsx +0 -88
  272. package/src/components/date-picker/examples/date-picker-locales.tsx +0 -41
  273. package/src/components/date-picker/examples/date-picker-past-only.tsx +0 -29
  274. package/src/components/date-picker/examples/date-picker-showcase.tsx +0 -49
  275. package/src/components/date-picker/examples/date-picker-usage.tsx +0 -22
  276. package/src/components/dialog/dialog.docs.tsx +0 -114
  277. package/src/components/dialog/examples/dialog-confirm.tsx +0 -24
  278. package/src/components/dialog/examples/dialog-form.tsx +0 -46
  279. package/src/components/dialog/examples/dialog-inline.tsx +0 -48
  280. package/src/components/dialog/examples/dialog-showcase.tsx +0 -53
  281. package/src/components/dialog/examples/dialog-usage.tsx +0 -31
  282. package/src/components/labeled-content/examples/labeled-content-descriptions.tsx +0 -37
  283. package/src/components/labeled-content/examples/labeled-content-showcase.tsx +0 -54
  284. package/src/components/labeled-content/examples/labeled-content-usage.tsx +0 -22
  285. package/src/components/labeled-content/examples/labeled-content-values.tsx +0 -26
  286. package/src/components/labeled-content/examples/labeled-content-wide.tsx +0 -46
  287. package/src/components/labeled-content/labeled-content.docs.tsx +0 -69
  288. package/src/components/locale-switcher/examples/locale-switcher-native-names.tsx +0 -30
  289. package/src/components/locale-switcher/examples/locale-switcher-showcase.tsx +0 -46
  290. package/src/components/locale-switcher/examples/locale-switcher-translated-page.tsx +0 -35
  291. package/src/components/locale-switcher/examples/locale-switcher-usage.tsx +0 -20
  292. package/src/components/locale-switcher/locale-switcher.docs.tsx +0 -91
  293. package/src/components/picker/examples/picker-details.tsx +0 -44
  294. package/src/components/picker/examples/picker-searchable.tsx +0 -48
  295. package/src/components/picker/examples/picker-showcase.tsx +0 -66
  296. package/src/components/picker/examples/picker-usage.tsx +0 -20
  297. package/src/components/picker/picker.docs.tsx +0 -68
  298. package/src/components/popover/examples/popover-help.tsx +0 -57
  299. package/src/components/popover/examples/popover-menu.tsx +0 -51
  300. package/src/components/popover/examples/popover-showcase.tsx +0 -61
  301. package/src/components/popover/examples/popover-usage.tsx +0 -31
  302. package/src/components/popover/popover.docs.tsx +0 -84
  303. package/src/components/profile-image/examples/profile-image-fallbacks.tsx +0 -29
  304. package/src/components/profile-image/examples/profile-image-group.tsx +0 -34
  305. package/src/components/profile-image/examples/profile-image-showcase.tsx +0 -30
  306. package/src/components/profile-image/examples/profile-image-usage.tsx +0 -14
  307. package/src/components/profile-image/profile-image.docs.tsx +0 -81
  308. package/src/components/search-field/examples/search-field-filter.tsx +0 -53
  309. package/src/components/search-field/examples/search-field-showcase.tsx +0 -56
  310. package/src/components/search-field/examples/search-field-toolbar.tsx +0 -27
  311. package/src/components/search-field/examples/search-field-usage.tsx +0 -18
  312. package/src/components/search-field/search-field.docs.tsx +0 -58
  313. package/src/components/search-list/examples/search-list-dropdown.tsx +0 -53
  314. package/src/components/search-list/examples/search-list-groups.tsx +0 -64
  315. package/src/components/search-list/examples/search-list-showcase.tsx +0 -67
  316. package/src/components/search-list/examples/search-list-usage.tsx +0 -27
  317. package/src/components/search-list/search-list.docs.tsx +0 -87
  318. package/src/components/section/examples/section-actions.tsx +0 -35
  319. package/src/components/section/examples/section-groups.tsx +0 -41
  320. package/src/components/section/examples/section-showcase.tsx +0 -63
  321. package/src/components/section/examples/section-usage.tsx +0 -19
  322. package/src/components/section/section.docs.tsx +0 -51
  323. package/src/components/secure-field/examples/secure-field-new-password.tsx +0 -56
  324. package/src/components/secure-field/examples/secure-field-reveal.tsx +0 -20
  325. package/src/components/secure-field/examples/secure-field-showcase.tsx +0 -62
  326. package/src/components/secure-field/examples/secure-field-usage.tsx +0 -19
  327. package/src/components/secure-field/secure-field.docs.tsx +0 -72
  328. package/src/components/segmented-control/examples/segmented-control-overflow.tsx +0 -28
  329. package/src/components/segmented-control/examples/segmented-control-showcase.tsx +0 -59
  330. package/src/components/segmented-control/examples/segmented-control-usage.tsx +0 -20
  331. package/src/components/segmented-control/examples/segmented-control-views.tsx +0 -32
  332. package/src/components/segmented-control/segmented-control.docs.tsx +0 -61
  333. package/src/components/sheet/examples/sheet-choices.tsx +0 -58
  334. package/src/components/sheet/examples/sheet-share.tsx +0 -51
  335. package/src/components/sheet/examples/sheet-showcase.tsx +0 -74
  336. package/src/components/sheet/examples/sheet-usage.tsx +0 -32
  337. package/src/components/sheet/sheet.docs.tsx +0 -75
  338. package/src/components/sidebar/examples/sidebar-groups.tsx +0 -133
  339. package/src/components/sidebar/examples/sidebar-showcase.tsx +0 -123
  340. package/src/components/sidebar/examples/sidebar-unread.tsx +0 -66
  341. package/src/components/sidebar/examples/sidebar-usage.tsx +0 -52
  342. package/src/components/sidebar/sidebar.docs.tsx +0 -135
  343. package/src/components/stat-tile/examples/stat-tile-filters.tsx +0 -32
  344. package/src/components/stat-tile/examples/stat-tile-grid.tsx +0 -21
  345. package/src/components/stat-tile/examples/stat-tile-showcase.tsx +0 -52
  346. package/src/components/stat-tile/examples/stat-tile-usage.tsx +0 -13
  347. package/src/components/stat-tile/stat-tile.docs.tsx +0 -60
  348. package/src/components/status-indicator/examples/status-indicator-live.tsx +0 -34
  349. package/src/components/status-indicator/examples/status-indicator-showcase.tsx +0 -39
  350. package/src/components/status-indicator/examples/status-indicator-states.tsx +0 -17
  351. package/src/components/status-indicator/examples/status-indicator-usage.tsx +0 -9
  352. package/src/components/status-indicator/status-indicator.docs.tsx +0 -43
  353. package/src/components/swatch-picker/examples/swatch-picker-accents.tsx +0 -42
  354. package/src/components/swatch-picker/examples/swatch-picker-labels.tsx +0 -45
  355. package/src/components/swatch-picker/examples/swatch-picker-showcase.tsx +0 -70
  356. package/src/components/swatch-picker/examples/swatch-picker-usage.tsx +0 -39
  357. package/src/components/swatch-picker/swatch-picker.docs.tsx +0 -60
  358. package/src/components/tab-bar/examples/tab-bar-five-tabs.tsx +0 -66
  359. package/src/components/tab-bar/examples/tab-bar-minimize.tsx +0 -71
  360. package/src/components/tab-bar/examples/tab-bar-showcase.tsx +0 -82
  361. package/src/components/tab-bar/examples/tab-bar-usage.tsx +0 -54
  362. package/src/components/tab-bar/tab-bar.docs.tsx +0 -136
  363. package/src/components/tab-view/examples/tab-view-keyboard.tsx +0 -39
  364. package/src/components/tab-view/examples/tab-view-settings.tsx +0 -56
  365. package/src/components/tab-view/examples/tab-view-showcase.tsx +0 -53
  366. package/src/components/tab-view/examples/tab-view-usage.tsx +0 -23
  367. package/src/components/tab-view/tab-view.docs.tsx +0 -77
  368. package/src/components/table/examples/table-empty.tsx +0 -53
  369. package/src/components/table/examples/table-invoices.tsx +0 -102
  370. package/src/components/table/examples/table-selection.tsx +0 -150
  371. package/src/components/table/examples/table-showcase.tsx +0 -115
  372. package/src/components/table/examples/table-usage.tsx +0 -67
  373. package/src/components/table/examples/table-wide.tsx +0 -75
  374. package/src/components/table/table.docs.tsx +0 -131
  375. package/src/components/text-editor/examples/text-editor-comment.tsx +0 -48
  376. package/src/components/text-editor/examples/text-editor-count.tsx +0 -38
  377. package/src/components/text-editor/examples/text-editor-showcase.tsx +0 -58
  378. package/src/components/text-editor/examples/text-editor-usage.tsx +0 -25
  379. package/src/components/text-editor/text-editor.docs.tsx +0 -61
  380. package/src/components/text-field/examples/text-field-icons.tsx +0 -72
  381. package/src/components/text-field/examples/text-field-showcase.tsx +0 -50
  382. package/src/components/text-field/examples/text-field-usage.tsx +0 -18
  383. package/src/components/text-field/examples/text-field-validation.tsx +0 -27
  384. package/src/components/text-field/text-field.docs.tsx +0 -118
  385. package/src/components/toast/examples/toast-action.tsx +0 -32
  386. package/src/components/toast/examples/toast-promise.tsx +0 -45
  387. package/src/components/toast/examples/toast-showcase.tsx +0 -49
  388. package/src/components/toast/examples/toast-usage.tsx +0 -13
  389. package/src/components/toast/toast.docs.tsx +0 -79
  390. package/src/components/toggle/examples/toggle-checkboxes.tsx +0 -43
  391. package/src/components/toggle/examples/toggle-settings.tsx +0 -31
  392. package/src/components/toggle/examples/toggle-showcase.tsx +0 -59
  393. package/src/components/toggle/examples/toggle-usage.tsx +0 -13
  394. package/src/components/toggle/toggle.docs.tsx +0 -69
  395. package/src/components/tooltip/examples/tooltip-icon-buttons.tsx +0 -27
  396. package/src/components/tooltip/examples/tooltip-shortcuts.tsx +0 -38
  397. package/src/components/tooltip/examples/tooltip-showcase.tsx +0 -44
  398. package/src/components/tooltip/examples/tooltip-usage.tsx +0 -13
  399. package/src/components/tooltip/tooltip.docs.tsx +0 -56
  400. package/src/components/view-controller/examples/view-controller-action.tsx +0 -27
  401. package/src/components/view-controller/examples/view-controller-settings.tsx +0 -31
  402. package/src/components/view-controller/examples/view-controller-showcase.tsx +0 -45
  403. package/src/components/view-controller/examples/view-controller-usage.tsx +0 -19
  404. package/src/components/view-controller/view-controller.docs.tsx +0 -71
  405. package/src/docs/index.ts +0 -3
  406. package/src/docs/registry.ts +0 -113
  407. package/src/docs/snippet.ts +0 -17
  408. package/src/docs/types.ts +0 -180
package/README.md CHANGED
@@ -40,6 +40,105 @@ export function SaveButton() {
40
40
  }
41
41
  ```
42
42
 
43
+ ### Numeric controls and separators
44
+
45
+ `Slider`, `Stepper`, `ProgressView`, and `Divider` provide native foundations
46
+ for settings, quantity adjustments, task progress, and layout separation.
47
+ They have individual subpath exports and named TypeScript props.
48
+
49
+ ```tsx
50
+ import { useState } from "react"
51
+ import { Slider } from "@passui/react/slider"
52
+ import { Stepper } from "@passui/react/stepper"
53
+ import { ProgressView } from "@passui/react/progress-view"
54
+ import { Divider } from "@passui/react/divider"
55
+
56
+ export function DownloadSettings() {
57
+ const [volume, setVolume] = useState(50)
58
+ const [copies, setCopies] = useState(1)
59
+
60
+ return (
61
+ <section className="flex flex-col gap-4">
62
+ <Slider label="Volume" value={volume} onChange={setVolume} />
63
+ <Stepper
64
+ label="Copies"
65
+ labels={{ decrement: "Fewer copies", increment: "More copies" }}
66
+ value={copies}
67
+ onChange={setCopies}
68
+ min={1}
69
+ max={10}
70
+ />
71
+ <Divider />
72
+ <ProgressView label="Downloading" value={42} max={100} />
73
+ </section>
74
+ )
75
+ }
76
+ ```
77
+
78
+ Both numeric controls are controlled: the parent owns their value. Stepper
79
+ supports fractional steps and disables actions at its bounds. Slider keeps
80
+ native pointer and keyboard input. ProgressView omits `value` for indeterminate
81
+ progress and honors reduced motion. Divider is decorative by default; pass
82
+ `decorative={false}` to expose a semantic separator.
83
+
84
+ ### Menus and disclosure groups
85
+
86
+ `Menu` turns the existing `ContextMenuHost` into a declarative button. Mount
87
+ the host once at the app root, then supply menu items wherever an action
88
+ button belongs. Its placement and keyboard behavior are shared with context
89
+ menus. `DisclosureGroup` provides a controlled, accessible expansion row on
90
+ top of `InlineDisclosure`.
91
+
92
+ ```tsx
93
+ import { useState } from "react"
94
+ import { Menu } from "@passui/react/menu"
95
+ import { DisclosureGroup } from "@passui/react/disclosure-group"
96
+
97
+ export function Preferences() {
98
+ const [advanced, setAdvanced] = useState(false)
99
+ return (
100
+ <section>
101
+ <Menu label="More options" items={[{ label: "Refresh", onSelect: () => {} }]}>
102
+ More
103
+ </Menu>
104
+ <DisclosureGroup label="Advanced" open={advanced} onOpenChange={setAdvanced}>
105
+ <p>Additional preferences</p>
106
+ </DisclosureGroup>
107
+ </section>
108
+ )
109
+ }
110
+ ```
111
+
112
+ ### Icons and prop types
113
+
114
+ On this development branch, React icons have a dedicated entry point:
115
+
116
+ ```tsx
117
+ import { IconButton, type IconButtonProps } from "@passui/react/icon-button"
118
+ import { SettingsIcon } from "@passui/react/icons"
119
+
120
+ const settingsAction: IconButtonProps = {
121
+ label: "Settings",
122
+ variant: "ghost",
123
+ size: "icon-sm",
124
+ }
125
+
126
+ export function SettingsButton() {
127
+ return <IconButton {...settingsAction}><SettingsIcon /></IconButton>
128
+ }
129
+ ```
130
+
131
+ Hover a prop for its choices and defaults. Named props types are exported
132
+ beside their controls. For a fixed set of picker values, keep your state
133
+ as that literal union (for example, `useState<"personal" | "team">("personal")`)
134
+ so selection callbacks retain the same choices. Existing root icon imports
135
+ continue to work. These additions have not been published yet.
136
+
137
+ Clipboard actions can use `copyText` from `@passui/react/clipboard`. It
138
+ returns `true` only after a successful write and `false` if unavailable or
139
+ denied. Call it from a user action and show success only when it returns
140
+ `true`; offer manual copying otherwise. It adds no sound or haptic feedback.
141
+
43
142
  See [Installation](https://passui.pherus.org/docs/installation) for the
44
143
  root setup, and [Skills](https://passui.pherus.org/docs/skills) to give AI
45
144
  agents Passui's rules.
@@ -57,7 +156,9 @@ bun run test
57
156
  bun run publish:check
58
157
  ```
59
158
 
60
- The package exports TypeScript and TSX source. Your app's bundler must
159
+ The package exports explicit declaration types for editors and TypeScript/TSX
160
+ source for bundlers. `bun run build` generates the declarations before packing.
161
+ Your app's bundler must
61
162
  process those files and its stylesheet through Tailwind CSS 4.
62
163
 
63
164
  The GitHub Actions `publish.yml` workflow publishes from `main` using
@@ -82,3 +183,41 @@ your user npm configuration.
82
183
  ## License
83
184
 
84
185
  [MIT](./LICENSE)
186
+
187
+ ### Documentation and loading primitives
188
+
189
+ Import `Accordion`, `ComboBox`, `RadioGroup`, `Breadcrumb`, `Skeleton`,
190
+ `ContentUnavailableView`, `CodeBlock` and `KeyboardShortcut` from their kebab case
191
+ subpaths, such as `@passui/react/combo-box`. Each has a named props type and
192
+ interactive documentation. CodeBlock accepts plain source and optionally a
193
+ highlighter element, keeping syntax engines out of the library dependency graph.
194
+ Shared component styles come from the stylesheet import above.
195
+
196
+ Stepper places the spoken and rolling value beside its two action segments.
197
+ Its digit columns preserve carries and stop animating under Reduce Motion.
198
+ Compact desktop rows retain larger targets for coarse pointers. Import only
199
+ needed controls and icons through public entries; CSS is preserved while unused
200
+ JavaScript exports can be removed by the bundler.
201
+
202
+ ### Search, selection and motion
203
+
204
+ `ComboBox` is a searchable `Picker` with optional `onCreate` and a localized
205
+ `createLabel`. `Command` composes grouped search actions; `CommandDialog` adds
206
+ modal focus handling. Shortcut hints are display only; your application owns the
207
+ actual keyboard bindings. Picker, compact calendar and time panels share one
208
+ glass surface that expands from its trigger and restores it after dismissal.
209
+
210
+ `TextField` and `SecureField` accept `labelPlacement="floating"`. SearchField
211
+ supports `collapsible` for a single pill that expands around its search icon.
212
+ `OneTimeCode` draws cells around one native input, preserving paste and code
213
+ autofill. Your application owns verification and supplies status feedback.
214
+
215
+ `SloshSlider` and `WakeSlider` take `label`, optional `value` or `defaultValue`,
216
+ and `onChange`. Values run from 0 to 100. Their React-only motion stops at rest
217
+ and respects Reduce Motion. Slosh has `viscosity`, `momentum` and `tilt`; Wake
218
+ has `bars` and `wake`. Their source attribution and MIT notice are included in
219
+ [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md). ProgressView remains read only
220
+ and shares the liquid fill without acquiring slider behavior.
221
+
222
+ `AspectRatio` clips images and videos to `ratio` without distorting them. The
223
+ documentation demonstrates equal-area crops in a stable stage.
@@ -0,0 +1,25 @@
1
+ # Bencho interaction sources
2
+
3
+ SloshSlider and WakeSlider adapt sources supplied from [Bencho](https://bencho.dev/),
4
+ provided under the [MIT licence](https://bencho.dev/licence). Motion comments and
5
+ attribution are retained; Passui adds its own tokens, component API and accessibility.
6
+
7
+ ## MIT License — Bencho
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ export * from "./platform";
2
+ export * from "./theme";
@@ -0,0 +1,9 @@
1
+ import { type PropsWithChildren } from "react";
2
+ export type PlatformOS = "ios" | "android" | "macos" | "windows" | "linux" | "unknown";
3
+ export declare function detectPlatform(userAgent: string, platform: string, maxTouchPoints: number): PlatformOS;
4
+ export declare function resolvePlatform(override: string | null, userAgent: string, platform: string, maxTouchPoints: number): PlatformOS;
5
+ export declare function PlatformScript({ nonce }: {
6
+ nonce?: string;
7
+ }): import("react").JSX.Element;
8
+ export declare function PlatformProvider({ children }: PropsWithChildren): import("react").JSX.Element;
9
+ export declare function usePlatform(): PlatformOS;
@@ -0,0 +1,71 @@
1
+ import type { Dispatch, PropsWithChildren, ReactNode, SetStateAction } from "react";
2
+ type ValueObject = {
3
+ [themeName: string]: string;
4
+ };
5
+ /**
6
+ * Props for the useTheme hook
7
+ * @author la niina
8
+ */
9
+ export type UseThemeProps = {
10
+ /** List of all available theme names */
11
+ themes: Array<string>;
12
+ /** Forced theme name for the current page */
13
+ forcedTheme?: string | undefined;
14
+ /** Update the theme */
15
+ setTheme: Dispatch<SetStateAction<string>>;
16
+ /** Active theme name */
17
+ theme?: string | undefined;
18
+ /** If enableSystem is true, returns the System theme preference ("dark" or "light"), regardless what the active theme is */
19
+ systemTheme?: SystemTheme | undefined;
20
+ };
21
+ export type SystemTheme = "dark" | "light";
22
+ export type Attribute = `data-${string}` | "class";
23
+ export interface ThemeProviderProps extends PropsWithChildren {
24
+ /** List of all available theme names */
25
+ themes?: Array<string> | undefined;
26
+ /** Forced theme name for the current page */
27
+ forcedTheme?: string | undefined;
28
+ /** Whether to switch between dark and light themes based on prefers-color-scheme */
29
+ enableSystem?: boolean | undefined;
30
+ /** Disable all CSS transitions when switching themes */
31
+ disableTransitionOnChange?: boolean | undefined;
32
+ /** Whether to indicate to browsers which color scheme is used (dark or light) for built-in UI like inputs and buttons */
33
+ enableColorScheme?: boolean | undefined;
34
+ /** Key used to store theme setting in localStorage */
35
+ storageKey?: string | undefined;
36
+ /** Default theme name (for v0.0.12 and lower the default was light). If `enableSystem` is false, the default theme is light */
37
+ defaultTheme?: string | undefined;
38
+ /** HTML attribute modified based on the active theme. Accepts `class`, `data-*` (meaning any data attribute, `data-mode`, `data-color`, etc.), or an array which could include both */
39
+ attribute?: Attribute | Array<Attribute> | undefined;
40
+ /** Mapping of theme name to HTML attribute value. Object where key is the theme name and value is the attribute value */
41
+ value?: ValueObject | undefined;
42
+ /** Nonce string to pass to the inline script for CSP headers */
43
+ nonce?: string | undefined;
44
+ }
45
+ /**
46
+ * Hook to access the theme context
47
+ * @returns {UseThemeProps} theme context
48
+ * @example
49
+ * const { theme, setTheme } = useTheme()
50
+ */
51
+ export declare const useTheme: () => UseThemeProps;
52
+ /**
53
+ * Theme provider component is used to wrap your app &
54
+ * provide theme context to all components. It can be used to switch
55
+ * between themes.
56
+ * @author la niina
57
+ * @param {ThemeProviderProps} props
58
+ * @returns {ReactNode} children
59
+ * @example
60
+ * <ThemeProvider attribute="class" disableTransitionOnChange>
61
+ * <App />
62
+ * </ThemeProvider>
63
+ *
64
+ * @example
65
+ * <ThemeProvider themes={["light", "queer", "dark", "system"]} defaultTheme="light">
66
+ * <App />
67
+ * </ThemeProvider>
68
+ */
69
+ export declare const ThemeProvider: (props: ThemeProviderProps) => ReactNode;
70
+ export declare const script: (attribute: Attribute | Array<Attribute>, storageKey: string, defaultTheme: string, forcedTheme: string | undefined, themes: Array<string>, value: ValueObject | undefined, enableSystem: boolean, enableColorScheme: boolean) => void;
71
+ export {};
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from "react";
2
+ export interface AccordionItem {
3
+ /** Stable value used to identify the expanded item. */
4
+ value: string;
5
+ title: string;
6
+ content: ReactNode;
7
+ description?: string;
8
+ disabled?: boolean;
9
+ }
10
+ export interface AccordionProps {
11
+ items: readonly AccordionItem[];
12
+ /** The expanded item, or `null` when all items are closed. */
13
+ value: string | null;
14
+ /** Selecting the open item reports `null`, so every item can collapse. */
15
+ onValueChange: (value: string | null) => void;
16
+ className?: string;
17
+ }
18
+ /** A single-open, collapsible accordion with labelled animated content regions. */
19
+ export declare function Accordion({ items, value, onValueChange, className }: AccordionProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { ComponentPropsWithoutRef } from "react";
2
+ type AmbientProps = ComponentPropsWithoutRef<"section"> & {
3
+ /** The image whose colors glow behind the content. */
4
+ src?: string | null;
5
+ };
6
+ /**
7
+ * Content with its image's colors glowing softly behind it, no card or
8
+ * edge: a blown-up, blurred copy of the image masked into a circle that
9
+ * fades into the page, the way Apple lets a photo light its surroundings.
10
+ */
11
+ export declare function Ambient({ src, className, children, ...props }: AmbientProps): import("react").JSX.Element;
12
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./ambient";
@@ -0,0 +1,7 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** Width divided by height. @default 1.3333333333333333 */
4
+ ratio?: number;
5
+ }
6
+ /** A crop frame: size its geometry, while images cover without distortion. */
7
+ export declare function AspectRatio({ ratio, className, style, ...props }: AspectRatioProps): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import type { ReactNode } from "react";
2
+ export interface BreadcrumbItem {
3
+ label: string;
4
+ href?: string;
5
+ }
6
+ export interface BreadcrumbProps {
7
+ label: string;
8
+ items: readonly BreadcrumbItem[];
9
+ className?: string;
10
+ /** Integrate a client router without nesting interactive elements. */
11
+ renderLink?: (item: BreadcrumbItem & {
12
+ href: string;
13
+ }) => ReactNode;
14
+ }
15
+ /** Ancestors stay links; the final item identifies the current page. */
16
+ export declare function Breadcrumb({ label, items, className, renderLink }: BreadcrumbProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export type ButtonVariant = "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "accent";
2
+ /** Icon-only buttons use the same sizing contract as Button. */
3
+ export declare const iconButtonSizes: {
4
+ readonly icon: "size-11 p-0 rounded-full";
5
+ readonly "icon-xs": "size-8 p-0 rounded-full";
6
+ readonly "icon-sm": "size-9 p-0 rounded-full";
7
+ readonly "icon-lg": "size-12 p-0 rounded-full";
8
+ };
9
+ export type IconButtonSize = keyof typeof iconButtonSizes;
10
+ export type ButtonSize = "default" | "xs" | "sm" | "lg" | "icon-full" | IconButtonSize;
11
+ export declare const buttonVariants: Record<ButtonVariant, string>;
12
+ export declare const buttonSizes: Record<ButtonSize, string>;
@@ -0,0 +1,32 @@
1
+ import { type ButtonHTMLAttributes } from "react";
2
+ import { type ButtonSize, type ButtonVariant } from "./button-styles";
3
+ export type { ButtonSize, ButtonVariant };
4
+ /**
5
+ * Each variant has a little depth: a fine highlight along the top edge and
6
+ * a soft, layered shadow, like a well-made physical key.
7
+ */
8
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
9
+ /**
10
+ * Visual emphasis: `default` (solid), `accent` (main action),
11
+ * `secondary` (quiet fill), `outline`, `ghost`, `link`, or `destructive`.
12
+ * @default "default"
13
+ */
14
+ variant?: ButtonVariant;
15
+ /**
16
+ * Label sizes: `xs`, `sm`, `default`, `lg`.
17
+ * Icon sizes: `icon-xs`, `icon-sm`, `icon`, `icon-lg`, `icon-full`.
18
+ * Prefer IconButton for an icon with a built-in accessible label.
19
+ * @default "default"
20
+ */
21
+ size?: ButtonSize;
22
+ /** Shows a delayed spinner, keeps the button's width, and prevents repeat presses.
23
+ * @default false
24
+ */
25
+ isPending?: boolean;
26
+ /** Layout classes for the content wrapper, such as a full-width disclosure row. */
27
+ contentClassName?: string;
28
+ }
29
+ /** Shares native button appearance with semantic links without nesting a button. */
30
+ export declare function buttonStyle({ variant, size, className, }?: Pick<ButtonProps, "variant" | "size" | "className">): string;
31
+ /** A native button with Passui styling, pending feedback, and an HTMLButtonElement ref. */
32
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,10 @@
1
+ import { type ButtonProps } from "./button";
2
+ import type { ButtonVariant, IconButtonSize } from "./button-styles";
3
+ export type { ButtonVariant, IconButtonSize };
4
+ export interface IconButtonProps extends Omit<ButtonProps, "size"> {
5
+ /** Icon-only actions must have an accessible name. */
6
+ label: string;
7
+ size?: IconButtonSize;
8
+ }
9
+ /** An accessible icon-only presentation of Button, sharing its interaction behavior. */
10
+ export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Centred over the button while it is pending: fades in, spins, and is
3
+ * sized from the text so it suits every button size.
4
+ */
5
+ export declare function PendingSpinner(): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare function schedulePendingIndicator(onShow: () => void): () => void;
2
+ export declare function usePendingIndicator(isPending: boolean): boolean;
@@ -0,0 +1,7 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export type ChipTone = "neutral" | "accent" | "public" | "family" | "friends";
3
+ export interface ChipProps extends HTMLAttributes<HTMLSpanElement> {
4
+ /** `neutral`, `accent`, `public`, `family`, or `friends`. @default "neutral" */
5
+ tone?: ChipTone;
6
+ }
7
+ export declare function Chip({ tone, className, ...props }: ChipProps): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { type ComponentProps, type ReactNode } from "react";
2
+ export interface CodeBlockProps extends Omit<ComponentProps<"div">, "children"> {
3
+ code: string;
4
+ /** Supply a highlighter's rendered pre/code element; source remains the fallback. */
5
+ children?: ReactNode;
6
+ /** Show a nonselectable line gutter. @default true */
7
+ lineNumbers?: boolean;
8
+ }
9
+ /** Code presentation without shipping a highlighter or formatter to consumers. */
10
+ export declare function CodeBlock({ code, children, lineNumbers, className, ...props }: CodeBlockProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { type PickerOption, type PickerProps } from "../picker/picker";
2
+ export interface ComboBoxOption<T extends string> extends PickerOption<T> {
3
+ }
4
+ export interface ComboBoxProps<T extends string> extends Omit<PickerProps<T>, "searchable" | "options"> {
5
+ options: readonly ComboBoxOption<T>[];
6
+ emptyLabel: string;
7
+ }
8
+ /** A searchable Picker, with optional creation from the person's typed query. */
9
+ export declare function ComboBox<T extends string>(props: ComboBoxProps<T>): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { type ComponentProps } from "react";
2
+ import { KeyboardShortcut } from "../keyboard-shortcut/keyboard-shortcut";
3
+ import { SearchList, SearchListField, SearchListResults, SearchListEmpty, SearchListGroup, SearchListItem } from "../search-list/search-list";
4
+ import { type SheetProps } from "../sheet/sheet";
5
+ export interface CommandProps extends ComponentProps<typeof SearchList> {
6
+ }
7
+ export interface CommandDialogProps extends Omit<SheetProps, "placement"> {
8
+ }
9
+ /** An inline command palette. SearchList owns filtering and keyboard selection. */
10
+ export declare function Command({ className, ...props }: CommandProps): import("react").JSX.Element;
11
+ /** A modal command palette with Sheet's focus isolation and restoration. */
12
+ export declare function CommandDialog({ children, className, ...props }: CommandDialogProps): import("react").JSX.Element;
13
+ export declare function CommandInput({ className, autoFocus, ref: forwardedRef, ...props }: ComponentProps<typeof SearchListField>): import("react").JSX.Element;
14
+ export declare function CommandList({ className, ...props }: ComponentProps<typeof SearchListResults>): import("react").JSX.Element;
15
+ export declare function CommandEmpty({ className, ...props }: ComponentProps<typeof SearchListEmpty>): import("react").JSX.Element;
16
+ export declare function CommandShortcut({ className, ...props }: ComponentProps<typeof KeyboardShortcut>): import("react").JSX.Element;
17
+ export declare function CommandGroup({ className, ...props }: ComponentProps<typeof SearchListGroup>): import("react").JSX.Element;
18
+ export declare function CommandItem({ className, ...props }: ComponentProps<typeof SearchListItem>): import("react").JSX.Element;
@@ -0,0 +1,25 @@
1
+ /** A calendar day, with `month` counted from 1. */
2
+ export interface CalendarDay {
3
+ year: number;
4
+ month: number;
5
+ day: number;
6
+ }
7
+ /** Reads `YYYY-MM-DD`; null for anything else, or a date that doesn't exist. */
8
+ export declare function parseDay(value: string): CalendarDay | null;
9
+ export declare function formatDay({ year, month, day }: CalendarDay): string;
10
+ /** Moves by whole days, across months and years. */
11
+ export declare function addDays(day: CalendarDay, count: number): CalendarDay;
12
+ /** Moves by months, keeping the day where the month allows (31 Jan + 1 is 28 or 29 Feb). */
13
+ export declare function addMonths(day: CalendarDay, count: number): CalendarDay;
14
+ /**
15
+ * The first day of the week where `locale` is used, 1 (Monday) to 7
16
+ * (Sunday), from the browser where it knows, else Monday except in the
17
+ * places that start on Sunday.
18
+ */
19
+ export declare function firstWeekday(locale: string): number;
20
+ /** Six weeks covering `year`/`month`, starting on `firstDay` (1 to 7). */
21
+ export declare function monthGrid(year: number, month: number, firstDay: number): Array<CalendarDay & {
22
+ inMonth: boolean;
23
+ }>;
24
+ /** Whether `value` (`YYYY-MM-DD`) lies within the optional bounds. */
25
+ export declare function withinBounds(value: string, min?: string, max?: string): boolean;
@@ -0,0 +1,27 @@
1
+ export interface CompactDatePickerProps {
2
+ /** `YYYY-MM-DD`, or "" when no date is chosen. */
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ /** Names the button and the calendar for assistive technology. */
6
+ label: string;
7
+ locale: string;
8
+ min?: string;
9
+ max?: string;
10
+ /** Shown when no date is chosen. */
11
+ placeholder?: string;
12
+ labels: {
13
+ previousMonth: string;
14
+ nextMonth: string;
15
+ /** Offers to remove the date, for optional dates. */
16
+ clear?: string;
17
+ };
18
+ className?: string;
19
+ /** Prevents opening the date panel. @default false */
20
+ disabled?: boolean;
21
+ }
22
+ /**
23
+ * A date as a compact button that opens a month calendar, like SwiftUI's
24
+ * compact DatePicker: for dates on a calendar, such as an event or an
25
+ * invoice. For dates people know by heart, like a birthday, use DatePicker.
26
+ */
27
+ export declare function CompactDatePicker({ value, onChange, label, locale, min, max, placeholder, labels, className, disabled, }: CompactDatePickerProps): import("react").JSX.Element;
@@ -0,0 +1,26 @@
1
+ export interface CompactTimePickerProps {
2
+ /** `HH:MM` on a 24 hour clock, or "" when no time is chosen. */
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ /** Names the button and the panel for assistive technology. */
6
+ label: string;
7
+ locale: string;
8
+ /** Minutes offered, in steps; an exact time already chosen is kept. */
9
+ minuteStep?: number;
10
+ /** Shown when no time is chosen. */
11
+ placeholder?: string;
12
+ labels: {
13
+ hour: string;
14
+ minute: string;
15
+ period: string;
16
+ };
17
+ className?: string;
18
+ /** Prevents opening the time panel. @default false */
19
+ disabled?: boolean;
20
+ }
21
+ /**
22
+ * A time as a compact button that opens columns of hours and minutes,
23
+ * like SwiftUI's compact DatePicker for times, on the clock the locale
24
+ * reads (12 hours with AM and PM, or 24).
25
+ */
26
+ export declare function CompactTimePicker({ value, onChange, label, locale, minuteStep, placeholder, labels, className, disabled, }: CompactTimePickerProps): import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ /** A time of day on a 24 hour clock. */
2
+ export interface TimeOfDay {
3
+ hour: number;
4
+ minute: number;
5
+ }
6
+ /** Reads `HH:MM` (24 hour); null for anything else. */
7
+ export declare function parseTime(value: string): TimeOfDay | null;
8
+ export declare function formatTime({ hour, minute }: TimeOfDay): string;
9
+ /** Whether people where `locale` is used read time on a 12 hour clock. */
10
+ export declare function usesTwelveHours(locale: string): boolean;
11
+ /** The hour as shown on a 12 hour clock (12, 1 to 11) and whether it's after noon. */
12
+ export declare function toTwelveHours(hour: number): {
13
+ hour: number;
14
+ pm: boolean;
15
+ };
16
+ export declare function fromTwelveHours(hour: number, pm: boolean): number;
17
+ /** Minutes offered in steps of `step`, keeping `current` when it falls between them. */
18
+ export declare function minuteChoices(step: number, current?: number): number[];
@@ -0,0 +1,9 @@
1
+ import type { ReactNode, ComponentProps } from "react";
2
+ export interface ContentUnavailableViewProps extends Omit<ComponentProps<"div">, "title"> {
3
+ title: string;
4
+ description?: string;
5
+ icon?: ReactNode;
6
+ actions?: ReactNode;
7
+ }
8
+ /** A focused empty or unavailable state with an optional next action. */
9
+ export declare function ContentUnavailableView({ title, description, icon, actions, className, ...props }: ContentUnavailableViewProps): import("react").JSX.Element;
@@ -0,0 +1,48 @@
1
+ import type { ComponentPropsWithoutRef, PropsWithChildren, ReactNode } from "react";
2
+ export type ContentViewVariant = keyof typeof variants;
3
+ export type ContentViewHeadingLevel = "h1" | "h2" | "h3";
4
+ type ContentViewProps = ComponentPropsWithoutRef<"section"> & {
5
+ variant?: ContentViewVariant;
6
+ };
7
+ type RowProps = ComponentPropsWithoutRef<"div">;
8
+ type SectionProps = ComponentPropsWithoutRef<"section">;
9
+ type HeaderProps = PropsWithChildren<{
10
+ heading: string;
11
+ p?: string;
12
+ pClassName?: string;
13
+ icon?: ReactNode;
14
+ action?: ReactNode;
15
+ actionClassName?: string;
16
+ as?: ContentViewHeadingLevel;
17
+ className?: string;
18
+ }>;
19
+ type H1Props = ComponentPropsWithoutRef<"h1">;
20
+ type H2Props = ComponentPropsWithoutRef<"h2">;
21
+ type PProps = ComponentPropsWithoutRef<"p">;
22
+ type SpanProps = ComponentPropsWithoutRef<"span">;
23
+ type SubProps = ComponentPropsWithoutRef<"sub">;
24
+ declare const variants: {
25
+ readonly elevated: string;
26
+ };
27
+ export declare function ContentView({ variant, className, children, ...props }: ContentViewProps): import("react").JSX.Element;
28
+ export declare namespace ContentView {
29
+ export { Row };
30
+ export { Section };
31
+ export { Header };
32
+ export { Divider };
33
+ export { H1 };
34
+ export { H2 };
35
+ export { P };
36
+ export { Span };
37
+ export { Sub };
38
+ }
39
+ declare function Row({ className, children, ...props }: RowProps): import("react").JSX.Element;
40
+ declare function Section({ className, children, ...props }: SectionProps): import("react").JSX.Element;
41
+ declare function Header({ heading, p, pClassName, icon, action, actionClassName, as: Tag, className, children, }: HeaderProps): import("react").JSX.Element;
42
+ declare function Divider(): import("react").JSX.Element;
43
+ declare function H1({ className, children, ...props }: H1Props): import("react").JSX.Element;
44
+ declare function H2({ className, children, ...props }: H2Props): import("react").JSX.Element;
45
+ declare function P({ className, children, ...props }: PProps): import("react").JSX.Element;
46
+ declare function Span({ className, children, ...props }: SpanProps): import("react").JSX.Element;
47
+ declare function Sub({ className, children, ...props }: SubProps): import("react").JSX.Element;
48
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./content-view";
@@ -0,0 +1,2 @@
1
+ /** Follow-up menus share ownership until the last surface finishes closing. */
2
+ export declare function concealMenuSource(element: HTMLElement, inert: boolean): () => boolean;
@@ -0,0 +1,2 @@
1
+ /** Renders the open context menu. Mount once, near the app root. */
2
+ export declare function ContextMenuHost(): import("react").JSX.Element;