@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
@@ -0,0 +1,57 @@
1
+ import type { ReactNode } from "react";
2
+ import type { MenuRect } from "./menu-reveal";
3
+ export type ContextMenuAlignX = "start" | "end";
4
+ export type ContextMenuAlignY = "top" | "bottom";
5
+ export type ContextMenuEdge = "leading" | "trailing";
6
+ /** One row of a context menu, or a divider between groups of rows. */
7
+ export type ContextMenuItem = {
8
+ label: string;
9
+ icon?: ReactNode;
10
+ onSelect: () => void;
11
+ destructive?: boolean;
12
+ disabled?: boolean;
13
+ /** Marks the current choice, e.g. a note's kind. */
14
+ checked?: boolean;
15
+ } | {
16
+ heading: string;
17
+ } | "divider";
18
+ export interface OpenMenu {
19
+ id: number;
20
+ anchor: Element | null;
21
+ x: number;
22
+ y: number;
23
+ items: ContextMenuItem[];
24
+ /** Opened by long-press: bigger rows for fingers. */
25
+ touch: boolean;
26
+ /** Which edge of the menu sits at `x`: its left (`start`) or its right (`end`). */
27
+ alignX: ContextMenuAlignX;
28
+ /** Which edge of the menu sits at `y`: its top (`top`) or its bottom (`bottom`). */
29
+ alignY: ContextMenuAlignY;
30
+ source?: MenuRect;
31
+ toolbar?: HTMLElement;
32
+ toolbarRect?: MenuRect;
33
+ restoreFocus?: boolean;
34
+ }
35
+ /** Opens a menu at a point, such as where a pointer was pressed. */
36
+ export declare function openContextMenu(x: number, y: number, items: ContextMenuItem[], touch?: boolean, anchor?: Element | null): void;
37
+ /**
38
+ * Opens a second menu where the last one stood, the way an iOS menu swaps
39
+ * in a submenu: a long list (a note's fonts, its kinds) stays one row in the
40
+ * first menu instead of making it tall.
41
+ */
42
+ export declare function openFollowUpMenu(items: ContextMenuItem[]): void;
43
+ /**
44
+ * Expands a control into a menu, lined up with its leading or trailing
45
+ * edge and growing down (or up) from the control's bounds. Leading and
46
+ * trailing follow the text direction, so right-to-left languages mirror.
47
+ * The menu's real size decides where it goes; nothing is guessed.
48
+ */
49
+ export declare function openMenu(anchor: Element, items: ContextMenuItem[], { edge, above, toolbar, }?: {
50
+ edge?: ContextMenuEdge;
51
+ above?: boolean;
52
+ /** Replace this action group with a horizontally expanding menu surface. */
53
+ toolbar?: HTMLElement;
54
+ }): void;
55
+ export declare function closeContextMenu(restoreFocus?: boolean): void;
56
+ export declare function subscribeContextMenu(listener: () => void): () => void;
57
+ export declare function getContextMenu(): OpenMenu | null;
@@ -0,0 +1,6 @@
1
+ export type MenuNavigationKey = "ArrowDown" | "ArrowUp" | "Home" | "End";
2
+ export declare function isMenuNavigationKey(key: string): key is MenuNavigationKey;
3
+ /** Index of the next enabled action in a menu, with wrapping arrow navigation. */
4
+ export declare function nextMenuIndex(key: MenuNavigationKey, current: number, count: number): number;
5
+ /** Finds a matching label after the current action, wrapping at the end. */
6
+ export declare function findMenuTypeaheadIndex(labels: ReadonlyArray<string>, query: string, current: number): number;
@@ -0,0 +1,21 @@
1
+ import type { OpenMenu } from "./context-menu-store";
2
+ import type { MenuRect } from "./menu-reveal";
3
+ type MenuAnchor = Pick<OpenMenu, "x" | "y" | "alignX" | "alignY">;
4
+ type MenuSize = Pick<MenuRect, "width" | "height">;
5
+ type MenuBounds = {
6
+ left: number;
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ };
11
+ /** Fit within the current visible viewport, including a keyboard or Safari pan. */
12
+ export declare function menuPosition(menu: MenuAnchor, size: MenuSize, bounds: MenuBounds): {
13
+ left: number;
14
+ top: number;
15
+ originX: number;
16
+ originY: number;
17
+ maxHeight: number;
18
+ width: number;
19
+ height: number;
20
+ };
21
+ export {};
@@ -0,0 +1,17 @@
1
+ export type MenuRect = {
2
+ left: number;
3
+ top: number;
4
+ width: number;
5
+ height: number;
6
+ };
7
+ /** Animate the material's bounds independently so menu text never stretches. */
8
+ export declare function menuSurfaceReveal(source: MenuRect | undefined, target: MenuRect & {
9
+ radius?: number;
10
+ }): {
11
+ x: number;
12
+ y: number;
13
+ width: number;
14
+ height: number;
15
+ opacity: number;
16
+ borderRadius: number;
17
+ };
@@ -0,0 +1,14 @@
1
+ import { type MouseEvent, type PointerEvent } from "react";
2
+ import { type ContextMenuItem } from "./context-menu-store";
3
+ /**
4
+ * Right-click on desktop, long-press on touch screens: both open the same
5
+ * menu of actions. Spread the returned handlers onto the element.
6
+ */
7
+ export declare function useContextMenu(items: () => ContextMenuItem[]): {
8
+ onContextMenu(event: MouseEvent): void;
9
+ onPointerDown(event: PointerEvent): void;
10
+ onPointerMove(event: PointerEvent): void;
11
+ onPointerUp: () => void;
12
+ onPointerCancel: () => void;
13
+ onClickCapture(event: MouseEvent): void;
14
+ };
@@ -0,0 +1,43 @@
1
+ import type { ReactNode } from "react";
2
+ export type ConversationMessage = {
3
+ id: string;
4
+ body: string;
5
+ /** Written by whoever is looking: drawn on the right. */
6
+ mine: boolean;
7
+ author?: string;
8
+ /** Shown beside the other side's messages, like their avatar. */
9
+ avatar?: ReactNode;
10
+ createdAt: string;
11
+ };
12
+ /**
13
+ * A thread of plain-text messages like Messages on iPhone: a day line when
14
+ * the date changes, back-to-back messages from one side grouped under one
15
+ * name, theirs on the left with an avatar, yours on the right.
16
+ */
17
+ declare function Messages({ messages, locale, }: {
18
+ messages: ConversationMessage[];
19
+ /** For day names and times; the reader's own by default. */
20
+ locale?: string;
21
+ }): import("react").JSX.Element;
22
+ type ComposerProps = {
23
+ onSend: (body: string) => Promise<unknown>;
24
+ pending?: boolean;
25
+ maxLength: number;
26
+ placeholder: string;
27
+ /** Extra controls under the field, like a status picker. */
28
+ actions?: ReactNode;
29
+ /** Names the round Send button for screen readers. */
30
+ sendLabel: string;
31
+ /**
32
+ * Words for the characters left, shown near the limit, such as
33
+ * (count) => `${count} left`. Without it, just the number shows.
34
+ */
35
+ remaining?: (count: number) => string;
36
+ };
37
+ /** A reply field with a round send button; Ctrl/Cmd+Enter sends, and it clears only once the send worked. */
38
+ declare function Composer({ onSend, pending, maxLength, placeholder, actions, sendLabel, remaining, }: ComposerProps): import("react").JSX.Element;
39
+ export declare const Conversation: {
40
+ Messages: typeof Messages;
41
+ Composer: typeof Composer;
42
+ };
43
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./conversation";
@@ -0,0 +1,16 @@
1
+ type DatePickerProps = {
2
+ value: string;
3
+ onChange: (value: string) => void;
4
+ label: string;
5
+ labels: {
6
+ day: string;
7
+ month: string;
8
+ year: string;
9
+ invalid: string;
10
+ };
11
+ locale: string;
12
+ max?: string;
13
+ };
14
+ /** Segmented date entry suited to birthdays, without a native calendar dialog. */
15
+ export declare function DatePicker({ value, onChange, label, labels, locale, max }: DatePickerProps): import("react").JSX.Element;
16
+ export {};
@@ -0,0 +1,2 @@
1
+ /** Returns a date-only value without timezone conversion or date rollover. */
2
+ export declare function dateValue(year: string, month: string, day: string, max?: string): string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Renders confirmation dialogs: a glass card that springs up over blurred
3
+ * content. Escape or a click outside cancels; Enter confirms unless the
4
+ * action is destructive, where the safe choice has focus.
5
+ */
6
+ export declare function DialogHost(): import("react").JSX.Element;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * App-wide confirmation dialogs, replacing the browser's `confirm`.
3
+ * `await confirmDialog({...})` resolves true when confirmed. Render one
4
+ * `<DialogHost />`.
5
+ */
6
+ export interface ConfirmOptions {
7
+ title: string;
8
+ message?: string;
9
+ confirmLabel?: string;
10
+ cancelLabel?: string;
11
+ /** Destructive actions are shown in red and are not the default button. */
12
+ destructive?: boolean;
13
+ }
14
+ export interface PendingDialog extends ConfirmOptions {
15
+ id: number;
16
+ resolve: (confirmed: boolean) => void;
17
+ }
18
+ export declare function confirmDialog(options: ConfirmOptions): Promise<boolean>;
19
+ export declare function settleDialog(confirmed: boolean, id?: number): void;
20
+ /** Advance queued confirmations only after the dismissed card has exited. */
21
+ export declare function advanceDialogQueue(): void;
22
+ export declare function subscribeDialogs(listener: () => void): () => void;
23
+ export declare function getDialog(): PendingDialog | null;
@@ -0,0 +1,30 @@
1
+ import { type FormEvent, type ReactNode } from "react";
2
+ export type DialogPresentation = "drawer" | "center" | "inline";
3
+ export type DialogTone = "default" | "destructive";
4
+ export type DialogProps = {
5
+ open: boolean;
6
+ onOpenChange: (open: boolean) => void;
7
+ title: ReactNode;
8
+ description?: ReactNode;
9
+ children?: ReactNode;
10
+ footer?: ReactNode;
11
+ /** `drawer` (responsive sheet), `center` (floating panel), or `inline`. @default "drawer" */
12
+ presentation?: DialogPresentation;
13
+ className?: string;
14
+ onSubmit?: (event: FormEvent<HTMLFormElement>) => void;
15
+ };
16
+ type ActionsProps = {
17
+ submitLabel: ReactNode;
18
+ cancelLabel: ReactNode;
19
+ pending?: boolean;
20
+ disabled?: boolean;
21
+ tone?: DialogTone;
22
+ onConfirm?: () => void;
23
+ };
24
+ export declare function Dialog({ open, onOpenChange, title, description, children, footer, presentation, className, onSubmit, }: DialogProps): import("react").JSX.Element;
25
+ export declare namespace Dialog {
26
+ export { Actions };
27
+ }
28
+ /** The standard footer: a primary action and a cancel that closes the dialog. */
29
+ declare function Actions({ submitLabel, cancelLabel, pending, disabled, tone, onConfirm, }: ActionsProps): import("react").JSX.Element;
30
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./dialog";
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from "react";
2
+ export interface DisclosureGroupProps {
3
+ label: string;
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ children: ReactNode;
7
+ disabled?: boolean;
8
+ className?: string;
9
+ /** Trigger layout when composed inside a shared surface such as Accordion. */
10
+ triggerClassName?: string;
11
+ /** Supporting text beneath the title. */
12
+ description?: string;
13
+ }
14
+ /** A controlled, accessible disclosure row with the shared inline reveal. */
15
+ export declare function DisclosureGroup({ label, open, onOpenChange, children, disabled, className, triggerClassName, description, }: DisclosureGroupProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export type DividerOrientation = "horizontal" | "vertical";
3
+ export interface DividerProps extends HTMLAttributes<HTMLHRElement> {
4
+ orientation?: DividerOrientation;
5
+ /** Decorative separators are omitted from the accessibility tree. @default true */
6
+ decorative?: boolean;
7
+ }
8
+ /** A semantic separator using the shared surface color. */
9
+ export declare function Divider({ orientation, decorative, className, ...props }: DividerProps): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import type { ReactNode } from "react";
2
+ export interface InlineDisclosureProps {
3
+ /** Whether the content is expanded. */
4
+ open: boolean;
5
+ children: ReactNode;
6
+ className?: string;
7
+ }
8
+ /**
9
+ * An inline, spring-driven reveal for settings editors and small details.
10
+ *
11
+ * Height and opacity animate together so following rows move continuously
12
+ * instead of jumping. Motion is disabled when the user requests less motion.
13
+ * The content unmounts after its exit animation completes.
14
+ */
15
+ export declare function InlineDisclosure({ open, children, className }: InlineDisclosureProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { ComponentProps } from "react";
2
+ export interface KeyboardShortcutProps extends ComponentProps<"kbd"> {
3
+ }
4
+ /** A quiet keycap for a shortcut supplied and localized by the application. */
5
+ export declare function KeyboardShortcut({ className, ...props }: KeyboardShortcutProps): import("react").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface LabeledContentProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** The visible name of the row. */
4
+ label: string;
5
+ /** Supporting text below the label. */
6
+ description?: string;
7
+ /** The row's control or value. */
8
+ children: ReactNode;
9
+ /** Places the control below the label at every width. @default false */
10
+ stacked?: boolean;
11
+ /** Places a wide control below its label on phones. @default false */
12
+ wide?: boolean;
13
+ }
14
+ /**
15
+ * A row: a label, an optional description, and its control at the trailing
16
+ * end, as SwiftUI's `LabeledContent`. Wide controls move under the label
17
+ * when there is no room beside it, rather than squeezing.
18
+ */
19
+ export declare function LabeledContent({ label, description, children, stacked, wide, className, ...props }: LabeledContentProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./locale-switcher";
@@ -0,0 +1,10 @@
1
+ export type LocaleSwitcherProps<L extends string> = {
2
+ locales: readonly L[];
3
+ locale: L;
4
+ onSelect: (locale: L) => void;
5
+ /** localStorage key for where the person dragged it. */
6
+ storageKey: string;
7
+ label: string;
8
+ };
9
+ /** A draggable floating language picker that snaps to the nearest corner. */
10
+ export declare function LocaleSwitcher<L extends string>({ locales, locale, onSelect, storageKey, label, }: LocaleSwitcherProps<L>): import("react").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ButtonProps } from "../button/button";
3
+ import { type ContextMenuEdge, type ContextMenuItem } from "../context-menu/context-menu-store";
4
+ export interface MenuProps extends Omit<ButtonProps, "onClick" | "children"> {
5
+ /** Accessible name for the menu trigger. */
6
+ label: string;
7
+ /** Items are rendered by the app's existing ContextMenuHost. */
8
+ items: readonly ContextMenuItem[];
9
+ children: ReactNode;
10
+ /** Logical edge used to align the menu, including RTL. @default "leading" */
11
+ edge?: ContextMenuEdge;
12
+ /** Expand upward from the trigger instead of downward. @default false */
13
+ above?: boolean;
14
+ }
15
+ /** A declarative menu button using the same native host as context menus. */
16
+ export declare const Menu: import("react").ForwardRefExoticComponent<MenuProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,18 @@
1
+ import { type InputHTMLAttributes } from "react";
2
+ export type OneTimeCodeStatus = "idle" | "verifying" | "success" | "error";
3
+ export interface OneTimeCodeProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "type" | "maxLength" | "size"> {
4
+ label: string;
5
+ value: string;
6
+ onChange: (value: string) => void;
7
+ /** Called when a complete code is entered, including paste and autofill. */
8
+ onComplete?: (value: string) => void;
9
+ /** Number of digits, 3–8. @default 6 */
10
+ length?: number;
11
+ status?: OneTimeCodeStatus;
12
+ /** Localized verification feedback announced without reading decorative cells. */
13
+ statusLabel?: string;
14
+ }
15
+ /** Normalize common numeric keyboards without splitting the browser's input into cells. */
16
+ export declare function normalizeCode(value: string, length: number): string;
17
+ /** Six cells, one field: paste, autofill, selection and Backspace stay native. */
18
+ export declare function OneTimeCode({ label, value, onChange, onComplete, length, status, statusLabel, className, disabled, id: suppliedId, ...props }: OneTimeCodeProps): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ /** Shared field treatment for the popup-based Picker, date and time controls. */
2
+ export declare function pickerTriggerStyle(className?: string): string;
@@ -0,0 +1,43 @@
1
+ export interface PickerOption<T extends string> {
2
+ value: T;
3
+ label: string;
4
+ /** A quieter second line or trailing note, such as "Free" or a region. */
5
+ disabled?: boolean;
6
+ keywords?: string[];
7
+ detail?: string;
8
+ /** The option's own language, so it is spoken and shaped right. */
9
+ lang?: string;
10
+ }
11
+ /** Values and callbacks share the option value type, including literal unions. */
12
+ export interface PickerProps<T extends string> {
13
+ /** The selected option's value. */
14
+ value: T;
15
+ /** Available choices. Use a literal union for a fixed set of values. */
16
+ options: ReadonlyArray<PickerOption<T>>;
17
+ /** Called with the selected option value. */
18
+ onChange: (value: NoInfer<T>) => void;
19
+ /** Accessible name for the trigger. */
20
+ label: string;
21
+ /** Shown when the selected value has no matching option. */
22
+ placeholder?: string;
23
+ /** Defaults to on for lists of ten or more options. */
24
+ searchable?: boolean;
25
+ /** Label for the filter field. @default "Search" */
26
+ searchPlaceholder?: string;
27
+ /** Shown when the filter matches nothing. @default "No matches" */
28
+ emptyLabel?: string;
29
+ /** Offers a new value when no option has the same label or value. */
30
+ onCreate?: (query: string) => void;
31
+ /** Localized creation action; receives the trimmed query. */
32
+ createLabel?: (query: string) => string;
33
+ className?: string;
34
+ /** Prevents opening or choosing an option. @default false */
35
+ disabled?: boolean;
36
+ }
37
+ /**
38
+ * A pop-up button: shows the chosen value and opens a list that floats
39
+ * above everything, flips upward near the bottom edge and filters long
40
+ * lists. Replaces the browser's own select, which looks foreign on every
41
+ * platform.
42
+ */
43
+ export declare function Picker<T extends string>({ value, options, onChange, label, placeholder, searchable, searchPlaceholder, emptyLabel, className, onCreate, createLabel, disabled, }: PickerProps<T>): import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { type HTMLAttributes } from "react";
2
+ interface AnchoredSurfaceProps extends HTMLAttributes<HTMLDivElement> {
3
+ open: boolean;
4
+ onExited: () => void;
5
+ anchor: HTMLElement;
6
+ width: number;
7
+ needed: number;
8
+ onClose: (restoreFocus: boolean) => void;
9
+ contentClassName?: string;
10
+ }
11
+ /** Shared material and lifetime for portaled pickers; their content owns selection. */
12
+ export declare const AnchoredSurface: import("react").ForwardRefExoticComponent<AnchoredSurfaceProps & import("react").RefAttributes<HTMLDivElement>>;
13
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type PlacementFrame } from "../../lib/anchored-placement";
2
+ interface PanelRect {
3
+ left: number;
4
+ top: number;
5
+ width: number;
6
+ height: number;
7
+ }
8
+ interface AnchorRect {
9
+ top: number;
10
+ bottom: number;
11
+ }
12
+ export interface PopoverFit {
13
+ shiftX: number;
14
+ shiftY: number;
15
+ maxWidth: number;
16
+ maxHeight?: number;
17
+ above: boolean;
18
+ }
19
+ /** Keep an absolutely positioned popover visible without scaling its contents. */
20
+ export declare function fitPopover(panel: PanelRect, anchor: AnchorRect | undefined, frame: Pick<PlacementFrame, "viewport" | "edges">, gap?: number, origin?: "top-left" | "top-right"): PopoverFit;
21
+ export {};
@@ -0,0 +1,18 @@
1
+ import { type HTMLMotionProps } from "motion/react";
2
+ import { type ReactNode, type RefObject } from "react";
3
+ export type PopoverOrigin = "top-left" | "top-right";
4
+ export interface PopoverProps extends Omit<HTMLMotionProps<"div">, "children"> {
5
+ open: boolean;
6
+ children?: ReactNode;
7
+ /** Which corner the popover grows from. */
8
+ origin?: PopoverOrigin;
9
+ /** Trigger whose shape the popover uses during its opening and closing motion. */
10
+ anchorRef?: RefObject<HTMLElement | null>;
11
+ }
12
+ /**
13
+ * A glass surface that springs open from its anchor. Position it with
14
+ * `className` (it is absolutely positioned within a relative parent); it
15
+ * flips above its relative parent when the bottom edge is short, and
16
+ * stays inside the visible viewport as it resizes or scrolls.
17
+ */
18
+ export declare function Popover({ open, ...props }: PopoverProps): import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { type ComponentProps } from "react";
2
+ export declare function ProfileImage({ className, ...props }: ComponentProps<"span">): import("react").JSX.Element;
3
+ export declare function ProfileImageContent({ src, className, onLoad, onError, ...props }: ComponentProps<"img">): import("react").JSX.Element | null;
4
+ export declare function ProfileImageFallback({ className, ...props }: ComponentProps<"span">): import("react").JSX.Element | null;
@@ -0,0 +1,13 @@
1
+ import { type HTMLAttributes } from "react";
2
+ export type ProgressViewSize = "sm" | "md" | "lg";
3
+ export interface ProgressViewProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
4
+ label: string;
5
+ /** Omit for an indeterminate operation. */
6
+ value?: number;
7
+ max?: number;
8
+ size?: ProgressViewSize;
9
+ /** Secondary text, such as bytes uploaded. */
10
+ detail?: string;
11
+ }
12
+ /** A determinate or indeterminate progress track respecting reduced motion. */
13
+ export declare function ProgressView({ label, value, max, size, detail, className, ...props }: ProgressViewProps): import("react").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { type RefObject } from "react";
2
+ /** Read-only progress shares the liquid fill without acquiring slider semantics. */
3
+ export declare function useLiquidProgress(ref: RefObject<HTMLDivElement | null>, target: number | undefined): void;
@@ -0,0 +1,17 @@
1
+ export interface RadioGroupOption<T extends string> {
2
+ value: T;
3
+ label: string;
4
+ description?: string;
5
+ disabled?: boolean;
6
+ }
7
+ export interface RadioGroupProps<T extends string> {
8
+ value: T;
9
+ onChange: (value: NoInfer<T>) => void;
10
+ label: string;
11
+ options: readonly RadioGroupOption<T>[];
12
+ disabled?: boolean;
13
+ name?: string;
14
+ className?: string;
15
+ }
16
+ /** A labelled choice group using the browser's native radio keyboard behavior. */
17
+ export declare function RadioGroup<T extends string>({ value, onChange, label, options, disabled, name, className, }: RadioGroupProps<T>): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { type InputHTMLAttributes, type Ref } from "react";
2
+ /** One object: the field stays inside the pill, and the lens never moves within it. */
3
+ export declare function ExpandingSearchField({ inputRef, className, placeholder, ...props }: InputHTMLAttributes<HTMLInputElement> & {
4
+ inputRef: Ref<HTMLInputElement>;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { type InputHTMLAttributes } from "react";
2
+ export interface SearchFieldProps extends InputHTMLAttributes<HTMLInputElement> {
3
+ /** Expand a single pill from its search icon on focus. @default false */
4
+ collapsible?: boolean;
5
+ }
6
+ export declare const SearchField: import("react").ForwardRefExoticComponent<SearchFieldProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,19 @@
1
+ import { type ComponentProps } from "react";
2
+ export declare function SearchList({ loop, open, onKeyDown, className, ...props }: ComponentProps<"div"> & {
3
+ loop?: boolean;
4
+ open?: boolean;
5
+ }): import("react").JSX.Element;
6
+ export declare function SearchListField({ value, onValueChange, className, ...props }: Omit<ComponentProps<"input">, "value" | "onChange"> & {
7
+ value?: string;
8
+ onValueChange?: (value: string) => void;
9
+ }): import("react").JSX.Element;
10
+ export declare function SearchListResults({ className, ...props }: ComponentProps<"div">): import("react").JSX.Element;
11
+ export declare function SearchListEmpty(props: ComponentProps<"div">): import("react").JSX.Element | null;
12
+ export declare function SearchListGroup({ heading, children, className, ...props }: ComponentProps<"div"> & {
13
+ heading?: React.ReactNode;
14
+ }): import("react").JSX.Element;
15
+ export declare function SearchListItem({ value, keywords, onSelect, className, ...props }: Omit<ComponentProps<"button">, "value" | "onSelect"> & {
16
+ value: string;
17
+ keywords?: string[];
18
+ onSelect?: (value: string) => void;
19
+ }): import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { type HTMLAttributes, type ReactNode } from "react";
2
+ export interface SectionProps extends HTMLAttributes<HTMLElement> {
3
+ /** Optional group heading and accessible name. */
4
+ title?: string;
5
+ /** Supporting text below the grouped rows. */
6
+ footer?: ReactNode;
7
+ /** Rows, typically LabeledContent. */
8
+ children?: ReactNode;
9
+ }
10
+ /**
11
+ * A titled, inset group of rows with an optional footer, as in iOS Settings
12
+ * and SwiftUI's grouped `List` with `Section(header:footer:)`. Rows are
13
+ * usually `LabeledContent`; dividers between them come for free.
14
+ */
15
+ export declare function Section({ title, footer, children, className, ...props }: SectionProps): import("react").JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { type TextFieldProps } from "../text-field/text-field";
2
+ /** TextField's native input props, with the password type managed by SecureField. */
3
+ export type SecureFieldProps = Omit<TextFieldProps, "type">;
4
+ export declare function SecureField(props: SecureFieldProps): import("react").JSX.Element;
@@ -0,0 +1,20 @@
1
+ export interface SegmentedControlProps<T extends string> {
2
+ /** Value of the selected segment. */
3
+ value: T;
4
+ /** The choices, in display order. */
5
+ options: ReadonlyArray<{
6
+ value: T;
7
+ label: string;
8
+ }>;
9
+ /** Called with the selected segment's value. */
10
+ onChange: (value: NoInfer<T>) => void;
11
+ /** Accessible name for the group and its compact picker. */
12
+ label: string;
13
+ }
14
+ /**
15
+ * Mutually exclusive choices with a sliding selection, as on Apple
16
+ * platforms. When the labels can't all fit the space it is given (a long
17
+ * translation, a narrow pane) it becomes a pop-up button instead of
18
+ * squeezing or spilling its text.
19
+ */
20
+ export declare function SegmentedControl<T extends string>({ value, options, onChange, label, }: SegmentedControlProps<T>): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ /** Keeps nested sheets and their portaled controls above an inactive background. */
2
+ export declare function enterModalEnvironment(surface: HTMLElement): () => void;
@@ -0,0 +1,5 @@
1
+ import { type ReactNode } from "react";
2
+ /** Escape transformed page layers while retaining the source's scoped appearance. */
3
+ export declare function SheetPortal({ children }: {
4
+ children: ReactNode;
5
+ }): import("react").JSX.Element;