@passui/react 0.1.17 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +102 -1
  2. package/dist/types/src/appearance/index.d.ts +2 -0
  3. package/dist/types/src/appearance/platform.d.ts +9 -0
  4. package/dist/types/src/appearance/theme.d.ts +71 -0
  5. package/dist/types/src/components/ambient/ambient.d.ts +12 -0
  6. package/dist/types/src/components/ambient/index.d.ts +1 -0
  7. package/dist/types/src/components/button/button-styles.d.ts +12 -0
  8. package/dist/types/src/components/button/button.d.ts +30 -0
  9. package/dist/types/src/components/button/icon-button.d.ts +10 -0
  10. package/dist/types/src/components/button/pending-spinner.d.ts +5 -0
  11. package/dist/types/src/components/button/use-pending-indicator.d.ts +2 -0
  12. package/dist/types/src/components/chip/chip.d.ts +7 -0
  13. package/dist/types/src/components/compact-date-picker/calendar-month.d.ts +25 -0
  14. package/dist/types/src/components/compact-date-picker/compact-date-picker.d.ts +27 -0
  15. package/dist/types/src/components/compact-time-picker/compact-time-picker.d.ts +26 -0
  16. package/dist/types/src/components/compact-time-picker/time-value.d.ts +18 -0
  17. package/dist/types/src/components/content-view/content-view.d.ts +48 -0
  18. package/dist/types/src/components/content-view/index.d.ts +1 -0
  19. package/dist/types/src/components/context-menu/conceal-menu-source.d.ts +2 -0
  20. package/dist/types/src/components/context-menu/context-menu-host.d.ts +2 -0
  21. package/dist/types/src/components/context-menu/context-menu-store.d.ts +57 -0
  22. package/dist/types/src/components/context-menu/menu-navigation.d.ts +6 -0
  23. package/dist/types/src/components/context-menu/menu-position.d.ts +21 -0
  24. package/dist/types/src/components/context-menu/menu-reveal.d.ts +22 -0
  25. package/dist/types/src/components/context-menu/use-context-menu.d.ts +14 -0
  26. package/dist/types/src/components/conversation/conversation.d.ts +43 -0
  27. package/dist/types/src/components/conversation/index.d.ts +1 -0
  28. package/dist/types/src/components/date-picker/date-picker.d.ts +16 -0
  29. package/dist/types/src/components/date-picker/date-value.d.ts +2 -0
  30. package/dist/types/src/components/dialog/dialog-host.d.ts +6 -0
  31. package/dist/types/src/components/dialog/dialog-store.d.ts +21 -0
  32. package/dist/types/src/components/dialog/dialog.d.ts +30 -0
  33. package/dist/types/src/components/dialog/index.d.ts +1 -0
  34. package/dist/types/src/components/disclosure-group/disclosure-group.d.ts +13 -0
  35. package/dist/types/src/components/divider/divider.d.ts +9 -0
  36. package/dist/types/src/components/inline-disclosure/inline-disclosure.d.ts +15 -0
  37. package/dist/types/src/components/labeled-content/labeled-content.d.ts +19 -0
  38. package/dist/types/src/components/locale-switcher/index.d.ts +1 -0
  39. package/dist/types/src/components/locale-switcher/locale-switcher.d.ts +10 -0
  40. package/dist/types/src/components/menu/menu.d.ts +16 -0
  41. package/dist/types/src/components/picker/picker-trigger.d.ts +2 -0
  42. package/dist/types/src/components/picker/picker.d.ts +37 -0
  43. package/dist/types/src/components/popover/popover-fit.d.ts +21 -0
  44. package/dist/types/src/components/popover/popover.d.ts +14 -0
  45. package/dist/types/src/components/profile-image/profile-image.d.ts +4 -0
  46. package/dist/types/src/components/progress-view/progress-view.d.ts +13 -0
  47. package/dist/types/src/components/search-field/search-field.d.ts +2 -0
  48. package/dist/types/src/components/search-list/search-list.d.ts +19 -0
  49. package/dist/types/src/components/section/section.d.ts +15 -0
  50. package/dist/types/src/components/secure-field/secure-field.d.ts +4 -0
  51. package/dist/types/src/components/segmented-control/segmented-control.d.ts +20 -0
  52. package/dist/types/src/components/sheet/modal-environment.d.ts +2 -0
  53. package/dist/types/src/components/sheet/sheet-portal.d.ts +5 -0
  54. package/dist/types/src/components/sheet/sheet.d.ts +21 -0
  55. package/dist/types/src/components/sheet/use-sheet-focus.d.ts +3 -0
  56. package/dist/types/src/components/sidebar/sidebar.d.ts +18 -0
  57. package/dist/types/src/components/slider/slider.d.ts +14 -0
  58. package/dist/types/src/components/stat-tile/index.d.ts +1 -0
  59. package/dist/types/src/components/stat-tile/stat-tile.d.ts +15 -0
  60. package/dist/types/src/components/status-indicator/status-indicator.d.ts +14 -0
  61. package/dist/types/src/components/stepper/stepper.d.ts +19 -0
  62. package/dist/types/src/components/swatch-picker/swatch-picker.d.ts +17 -0
  63. package/dist/types/src/components/tab-bar/tab-bar.d.ts +40 -0
  64. package/dist/types/src/components/tab-view/tab-view.d.ts +24 -0
  65. package/dist/types/src/components/table/table.d.ts +10 -0
  66. package/dist/types/src/components/text-editor/text-editor.d.ts +2 -0
  67. package/dist/types/src/components/text-field/text-field.d.ts +18 -0
  68. package/dist/types/src/components/toast/toast-store.d.ts +47 -0
  69. package/dist/types/src/components/toast/toaster.d.ts +10 -0
  70. package/dist/types/src/components/toggle/toggle.d.ts +17 -0
  71. package/dist/types/src/components/tooltip/tooltip-host.d.ts +6 -0
  72. package/dist/types/src/components/view-controller/index.d.ts +1 -0
  73. package/dist/types/src/components/view-controller/view-controller.d.ts +21 -0
  74. package/dist/types/src/hooks/scroll/minimize-decision.d.ts +2 -0
  75. package/dist/types/src/hooks/use-anchored-placement.d.ts +7 -0
  76. package/dist/types/src/hooks/use-dismiss.d.ts +9 -0
  77. package/dist/types/src/hooks/use-floating-dismiss.d.ts +3 -0
  78. package/dist/types/src/hooks/use-media-query.d.ts +21 -0
  79. package/dist/types/src/hooks/use-minimize-on-scroll.d.ts +6 -0
  80. package/dist/types/src/hooks/use-visual-viewport.d.ts +4 -0
  81. package/dist/types/src/hooks/viewport/types.d.ts +19 -0
  82. package/dist/types/src/hooks/viewport/viewport-metrics.d.ts +3 -0
  83. package/dist/types/src/icons/icons.d.ts +612 -0
  84. package/dist/types/src/index.d.ts +58 -0
  85. package/dist/types/src/lib/anchored-placement.d.ts +39 -0
  86. package/dist/types/src/lib/class-names.d.ts +2 -0
  87. package/dist/types/src/lib/clipboard.d.ts +6 -0
  88. package/dist/types/src/lib/date.d.ts +50 -0
  89. package/dist/types/src/lib/floating-layers.d.ts +8 -0
  90. package/dist/types/src/lib/haptics.d.ts +8 -0
  91. package/dist/types/src/lib/language.d.ts +4 -0
  92. package/dist/types/src/lib/range-value.d.ts +4 -0
  93. package/dist/types/src/lib/screen-edges.d.ts +12 -0
  94. package/dist/types/src/lib/shapes.d.ts +17 -0
  95. package/dist/types/src/motion/transitions.d.ts +97 -0
  96. package/dist/types/src/tokens.d.ts +1 -0
  97. package/package.json +192 -40
  98. package/src/appearance/platform.tsx +10 -47
  99. package/src/appearance/theme.tsx +42 -142
  100. package/src/components/ambient/ambient.tsx +2 -10
  101. package/src/components/button/button-styles.ts +13 -31
  102. package/src/components/button/button.tsx +19 -14
  103. package/src/components/button/icon-button.tsx +14 -56
  104. package/src/components/button/use-pending-indicator.ts +2 -7
  105. package/src/components/chip/chip.tsx +8 -13
  106. package/src/components/compact-date-picker/calendar-month.ts +13 -57
  107. package/src/components/compact-date-picker/compact-date-picker.tsx +44 -123
  108. package/src/components/compact-time-picker/compact-time-picker.tsx +46 -130
  109. package/src/components/compact-time-picker/time-value.ts +4 -16
  110. package/src/components/content-view/content-view.tsx +13 -56
  111. package/src/components/context-menu/conceal-menu-source.ts +1 -4
  112. package/src/components/context-menu/context-menu-host.tsx +125 -195
  113. package/src/components/context-menu/context-menu-store.ts +3 -11
  114. package/src/components/context-menu/menu-navigation.ts +29 -0
  115. package/src/components/context-menu/menu-position.ts +6 -27
  116. package/src/components/context-menu/menu-reveal.ts +13 -54
  117. package/src/components/context-menu/use-context-menu.ts +6 -30
  118. package/src/components/conversation/conversation.tsx +26 -72
  119. package/src/components/date-picker/date-picker.tsx +8 -37
  120. package/src/components/date-picker/date-value.ts +5 -30
  121. package/src/components/dialog/dialog-host.tsx +31 -76
  122. package/src/components/dialog/dialog-store.ts +1 -3
  123. package/src/components/dialog/dialog.tsx +23 -80
  124. package/src/components/disclosure-group/disclosure-group.tsx +70 -0
  125. package/src/components/divider/divider.tsx +31 -0
  126. package/src/components/inline-disclosure/inline-disclosure.tsx +49 -0
  127. package/src/components/labeled-content/labeled-content.tsx +24 -18
  128. package/src/components/locale-switcher/locale-switcher.tsx +20 -70
  129. package/src/components/menu/menu.tsx +68 -0
  130. package/src/components/picker/picker-trigger.ts +10 -0
  131. package/src/components/picker/picker.tsx +72 -203
  132. package/src/components/popover/popover-fit.ts +69 -0
  133. package/src/components/popover/popover.tsx +94 -77
  134. package/src/components/profile-image/profile-image.tsx +6 -28
  135. package/src/components/progress-view/progress-view.tsx +65 -0
  136. package/src/components/search-field/search-field.tsx +27 -25
  137. package/src/components/search-list/search-list.tsx +43 -69
  138. package/src/components/section/section.tsx +18 -17
  139. package/src/components/secure-field/secure-field.tsx +5 -7
  140. package/src/components/segmented-control/segmented-control.tsx +20 -29
  141. package/src/components/sheet/modal-environment.ts +16 -54
  142. package/src/components/sheet/sheet-portal.tsx +10 -42
  143. package/src/components/sheet/sheet.tsx +17 -25
  144. package/src/components/sheet/use-sheet-focus.ts +15 -51
  145. package/src/components/sidebar/sidebar.tsx +27 -30
  146. package/src/components/slider/slider.tsx +76 -0
  147. package/src/components/stat-tile/stat-tile.tsx +9 -30
  148. package/src/components/status-indicator/status-indicator.tsx +12 -19
  149. package/src/components/stepper/stepper.tsx +80 -0
  150. package/src/components/swatch-picker/swatch-picker.tsx +19 -15
  151. package/src/components/tab-bar/tab-bar.tsx +59 -59
  152. package/src/components/tab-view/tab-view.tsx +52 -57
  153. package/src/components/table/table.tsx +14 -62
  154. package/src/components/text-editor/text-editor.tsx +2 -12
  155. package/src/components/text-field/text-field.tsx +11 -40
  156. package/src/components/toast/toast-store.ts +9 -30
  157. package/src/components/toast/toaster.tsx +90 -104
  158. package/src/components/toggle/toggle.tsx +28 -24
  159. package/src/components/tooltip/tooltip-host.tsx +70 -67
  160. package/src/components/view-controller/view-controller.tsx +4 -21
  161. package/src/hooks/scroll/minimize-decision.ts +1 -5
  162. package/src/hooks/use-anchored-placement.ts +4 -14
  163. package/src/hooks/use-dismiss.ts +5 -23
  164. package/src/hooks/use-floating-dismiss.ts +28 -0
  165. package/src/hooks/use-media-query.ts +12 -31
  166. package/src/hooks/use-minimize-on-scroll.ts +10 -34
  167. package/src/hooks/use-visual-viewport.ts +5 -14
  168. package/src/hooks/viewport/viewport-metrics.ts +4 -16
  169. package/src/icons/icons.tsx +167 -121
  170. package/src/index.ts +9 -1
  171. package/src/lib/anchored-placement.ts +5 -15
  172. package/src/lib/class-names.ts +1 -2
  173. package/src/lib/clipboard.ts +14 -0
  174. package/src/lib/date.ts +4 -15
  175. package/src/lib/floating-layers.ts +18 -8
  176. package/src/lib/haptics.ts +1 -3
  177. package/src/lib/language.ts +2 -7
  178. package/src/lib/range-value.ts +32 -0
  179. package/src/lib/screen-edges.ts +2 -6
  180. package/src/lib/shapes.ts +5 -20
  181. package/src/motion/transitions.ts +18 -12
  182. package/src/components/ambient/ambient.docs.tsx +0 -68
  183. package/src/components/ambient/examples/ambient-images.tsx +0 -30
  184. package/src/components/ambient/examples/ambient-now-playing.tsx +0 -55
  185. package/src/components/ambient/examples/ambient-showcase.tsx +0 -33
  186. package/src/components/ambient/examples/ambient-usage.tsx +0 -19
  187. package/src/components/button/button.docs.tsx +0 -116
  188. package/src/components/button/examples/button-disabled.tsx +0 -19
  189. package/src/components/button/examples/button-icon.tsx +0 -39
  190. package/src/components/button/examples/button-link.tsx +0 -12
  191. package/src/components/button/examples/button-pending.tsx +0 -27
  192. package/src/components/button/examples/button-showcase.tsx +0 -115
  193. package/src/components/button/examples/button-sizes.tsx +0 -12
  194. package/src/components/button/examples/button-usage.tsx +0 -12
  195. package/src/components/button/examples/button-variants.tsx +0 -15
  196. package/src/components/button/examples/button-with-icon.tsx +0 -32
  197. package/src/components/button/examples/icon-button-player.tsx +0 -38
  198. package/src/components/button/examples/icon-button-showcase.tsx +0 -83
  199. package/src/components/button/examples/icon-button-usage.tsx +0 -11
  200. package/src/components/button/examples/icon-button-variants.tsx +0 -39
  201. package/src/components/button/icon-button.docs.tsx +0 -68
  202. package/src/components/chip/chip.docs.tsx +0 -37
  203. package/src/components/chip/examples/chip-in-rows.tsx +0 -19
  204. package/src/components/chip/examples/chip-showcase.tsx +0 -51
  205. package/src/components/chip/examples/chip-tones.tsx +0 -13
  206. package/src/components/chip/examples/chip-usage.tsx +0 -5
  207. package/src/components/compact-date-picker/compact-date-picker.docs.tsx +0 -81
  208. package/src/components/compact-date-picker/examples/compact-date-picker-showcase.tsx +0 -35
  209. package/src/components/compact-date-picker/examples/compact-date-picker-usage.tsx +0 -22
  210. package/src/components/compact-time-picker/compact-time-picker.docs.tsx +0 -80
  211. package/src/components/compact-time-picker/examples/compact-time-picker-showcase.tsx +0 -31
  212. package/src/components/compact-time-picker/examples/compact-time-picker-usage.tsx +0 -21
  213. package/src/components/content-view/content-view.docs.tsx +0 -61
  214. package/src/components/content-view/examples/content-view-header-action.tsx +0 -33
  215. package/src/components/content-view/examples/content-view-showcase.tsx +0 -65
  216. package/src/components/content-view/examples/content-view-stats.tsx +0 -35
  217. package/src/components/content-view/examples/content-view-usage.tsx +0 -14
  218. package/src/components/context-menu/context-menu.docs.tsx +0 -92
  219. package/src/components/context-menu/examples/context-menu-checked.tsx +0 -37
  220. package/src/components/context-menu/examples/context-menu-list.tsx +0 -85
  221. package/src/components/context-menu/examples/context-menu-showcase.tsx +0 -56
  222. package/src/components/context-menu/examples/context-menu-toolbar.tsx +0 -63
  223. package/src/components/context-menu/examples/context-menu-usage.tsx +0 -24
  224. package/src/components/conversation/conversation.docs.tsx +0 -88
  225. package/src/components/conversation/examples/conversation-composer.tsx +0 -36
  226. package/src/components/conversation/examples/conversation-days.tsx +0 -48
  227. package/src/components/conversation/examples/conversation-showcase.tsx +0 -71
  228. package/src/components/conversation/examples/conversation-usage.tsx +0 -28
  229. package/src/components/date-picker/date-picker.docs.tsx +0 -88
  230. package/src/components/date-picker/examples/date-picker-locales.tsx +0 -41
  231. package/src/components/date-picker/examples/date-picker-past-only.tsx +0 -29
  232. package/src/components/date-picker/examples/date-picker-showcase.tsx +0 -49
  233. package/src/components/date-picker/examples/date-picker-usage.tsx +0 -22
  234. package/src/components/dialog/dialog.docs.tsx +0 -114
  235. package/src/components/dialog/examples/dialog-confirm.tsx +0 -24
  236. package/src/components/dialog/examples/dialog-form.tsx +0 -46
  237. package/src/components/dialog/examples/dialog-inline.tsx +0 -48
  238. package/src/components/dialog/examples/dialog-showcase.tsx +0 -53
  239. package/src/components/dialog/examples/dialog-usage.tsx +0 -31
  240. package/src/components/labeled-content/examples/labeled-content-descriptions.tsx +0 -37
  241. package/src/components/labeled-content/examples/labeled-content-showcase.tsx +0 -54
  242. package/src/components/labeled-content/examples/labeled-content-usage.tsx +0 -22
  243. package/src/components/labeled-content/examples/labeled-content-values.tsx +0 -26
  244. package/src/components/labeled-content/examples/labeled-content-wide.tsx +0 -46
  245. package/src/components/labeled-content/labeled-content.docs.tsx +0 -69
  246. package/src/components/locale-switcher/examples/locale-switcher-native-names.tsx +0 -30
  247. package/src/components/locale-switcher/examples/locale-switcher-showcase.tsx +0 -46
  248. package/src/components/locale-switcher/examples/locale-switcher-translated-page.tsx +0 -35
  249. package/src/components/locale-switcher/examples/locale-switcher-usage.tsx +0 -20
  250. package/src/components/locale-switcher/locale-switcher.docs.tsx +0 -91
  251. package/src/components/picker/examples/picker-details.tsx +0 -44
  252. package/src/components/picker/examples/picker-searchable.tsx +0 -48
  253. package/src/components/picker/examples/picker-showcase.tsx +0 -66
  254. package/src/components/picker/examples/picker-usage.tsx +0 -20
  255. package/src/components/picker/picker.docs.tsx +0 -68
  256. package/src/components/popover/examples/popover-help.tsx +0 -57
  257. package/src/components/popover/examples/popover-menu.tsx +0 -51
  258. package/src/components/popover/examples/popover-showcase.tsx +0 -61
  259. package/src/components/popover/examples/popover-usage.tsx +0 -31
  260. package/src/components/popover/popover.docs.tsx +0 -84
  261. package/src/components/profile-image/examples/profile-image-fallbacks.tsx +0 -29
  262. package/src/components/profile-image/examples/profile-image-group.tsx +0 -34
  263. package/src/components/profile-image/examples/profile-image-showcase.tsx +0 -30
  264. package/src/components/profile-image/examples/profile-image-usage.tsx +0 -14
  265. package/src/components/profile-image/profile-image.docs.tsx +0 -81
  266. package/src/components/search-field/examples/search-field-filter.tsx +0 -53
  267. package/src/components/search-field/examples/search-field-showcase.tsx +0 -56
  268. package/src/components/search-field/examples/search-field-toolbar.tsx +0 -27
  269. package/src/components/search-field/examples/search-field-usage.tsx +0 -18
  270. package/src/components/search-field/search-field.docs.tsx +0 -58
  271. package/src/components/search-list/examples/search-list-dropdown.tsx +0 -53
  272. package/src/components/search-list/examples/search-list-groups.tsx +0 -64
  273. package/src/components/search-list/examples/search-list-showcase.tsx +0 -67
  274. package/src/components/search-list/examples/search-list-usage.tsx +0 -27
  275. package/src/components/search-list/search-list.docs.tsx +0 -87
  276. package/src/components/section/examples/section-actions.tsx +0 -35
  277. package/src/components/section/examples/section-groups.tsx +0 -41
  278. package/src/components/section/examples/section-showcase.tsx +0 -63
  279. package/src/components/section/examples/section-usage.tsx +0 -19
  280. package/src/components/section/section.docs.tsx +0 -51
  281. package/src/components/secure-field/examples/secure-field-new-password.tsx +0 -56
  282. package/src/components/secure-field/examples/secure-field-reveal.tsx +0 -20
  283. package/src/components/secure-field/examples/secure-field-showcase.tsx +0 -62
  284. package/src/components/secure-field/examples/secure-field-usage.tsx +0 -19
  285. package/src/components/secure-field/secure-field.docs.tsx +0 -72
  286. package/src/components/segmented-control/examples/segmented-control-overflow.tsx +0 -28
  287. package/src/components/segmented-control/examples/segmented-control-showcase.tsx +0 -59
  288. package/src/components/segmented-control/examples/segmented-control-usage.tsx +0 -20
  289. package/src/components/segmented-control/examples/segmented-control-views.tsx +0 -32
  290. package/src/components/segmented-control/segmented-control.docs.tsx +0 -61
  291. package/src/components/sheet/examples/sheet-choices.tsx +0 -58
  292. package/src/components/sheet/examples/sheet-share.tsx +0 -51
  293. package/src/components/sheet/examples/sheet-showcase.tsx +0 -74
  294. package/src/components/sheet/examples/sheet-usage.tsx +0 -32
  295. package/src/components/sheet/sheet.docs.tsx +0 -75
  296. package/src/components/sidebar/examples/sidebar-groups.tsx +0 -133
  297. package/src/components/sidebar/examples/sidebar-showcase.tsx +0 -123
  298. package/src/components/sidebar/examples/sidebar-unread.tsx +0 -66
  299. package/src/components/sidebar/examples/sidebar-usage.tsx +0 -52
  300. package/src/components/sidebar/sidebar.docs.tsx +0 -135
  301. package/src/components/stat-tile/examples/stat-tile-filters.tsx +0 -32
  302. package/src/components/stat-tile/examples/stat-tile-grid.tsx +0 -21
  303. package/src/components/stat-tile/examples/stat-tile-showcase.tsx +0 -52
  304. package/src/components/stat-tile/examples/stat-tile-usage.tsx +0 -13
  305. package/src/components/stat-tile/stat-tile.docs.tsx +0 -60
  306. package/src/components/status-indicator/examples/status-indicator-live.tsx +0 -34
  307. package/src/components/status-indicator/examples/status-indicator-showcase.tsx +0 -39
  308. package/src/components/status-indicator/examples/status-indicator-states.tsx +0 -17
  309. package/src/components/status-indicator/examples/status-indicator-usage.tsx +0 -9
  310. package/src/components/status-indicator/status-indicator.docs.tsx +0 -43
  311. package/src/components/swatch-picker/examples/swatch-picker-accents.tsx +0 -42
  312. package/src/components/swatch-picker/examples/swatch-picker-labels.tsx +0 -45
  313. package/src/components/swatch-picker/examples/swatch-picker-showcase.tsx +0 -70
  314. package/src/components/swatch-picker/examples/swatch-picker-usage.tsx +0 -39
  315. package/src/components/swatch-picker/swatch-picker.docs.tsx +0 -60
  316. package/src/components/tab-bar/examples/tab-bar-five-tabs.tsx +0 -66
  317. package/src/components/tab-bar/examples/tab-bar-minimize.tsx +0 -71
  318. package/src/components/tab-bar/examples/tab-bar-showcase.tsx +0 -82
  319. package/src/components/tab-bar/examples/tab-bar-usage.tsx +0 -54
  320. package/src/components/tab-bar/tab-bar.docs.tsx +0 -136
  321. package/src/components/tab-view/examples/tab-view-keyboard.tsx +0 -39
  322. package/src/components/tab-view/examples/tab-view-settings.tsx +0 -56
  323. package/src/components/tab-view/examples/tab-view-showcase.tsx +0 -53
  324. package/src/components/tab-view/examples/tab-view-usage.tsx +0 -23
  325. package/src/components/tab-view/tab-view.docs.tsx +0 -77
  326. package/src/components/table/examples/table-empty.tsx +0 -53
  327. package/src/components/table/examples/table-invoices.tsx +0 -102
  328. package/src/components/table/examples/table-selection.tsx +0 -150
  329. package/src/components/table/examples/table-showcase.tsx +0 -115
  330. package/src/components/table/examples/table-usage.tsx +0 -67
  331. package/src/components/table/examples/table-wide.tsx +0 -75
  332. package/src/components/table/table.docs.tsx +0 -131
  333. package/src/components/text-editor/examples/text-editor-comment.tsx +0 -48
  334. package/src/components/text-editor/examples/text-editor-count.tsx +0 -38
  335. package/src/components/text-editor/examples/text-editor-showcase.tsx +0 -58
  336. package/src/components/text-editor/examples/text-editor-usage.tsx +0 -25
  337. package/src/components/text-editor/text-editor.docs.tsx +0 -61
  338. package/src/components/text-field/examples/text-field-icons.tsx +0 -72
  339. package/src/components/text-field/examples/text-field-showcase.tsx +0 -50
  340. package/src/components/text-field/examples/text-field-usage.tsx +0 -18
  341. package/src/components/text-field/examples/text-field-validation.tsx +0 -27
  342. package/src/components/text-field/text-field.docs.tsx +0 -118
  343. package/src/components/toast/examples/toast-action.tsx +0 -32
  344. package/src/components/toast/examples/toast-promise.tsx +0 -45
  345. package/src/components/toast/examples/toast-showcase.tsx +0 -49
  346. package/src/components/toast/examples/toast-usage.tsx +0 -13
  347. package/src/components/toast/toast.docs.tsx +0 -79
  348. package/src/components/toggle/examples/toggle-checkboxes.tsx +0 -43
  349. package/src/components/toggle/examples/toggle-settings.tsx +0 -31
  350. package/src/components/toggle/examples/toggle-showcase.tsx +0 -59
  351. package/src/components/toggle/examples/toggle-usage.tsx +0 -13
  352. package/src/components/toggle/toggle.docs.tsx +0 -69
  353. package/src/components/tooltip/examples/tooltip-icon-buttons.tsx +0 -27
  354. package/src/components/tooltip/examples/tooltip-shortcuts.tsx +0 -38
  355. package/src/components/tooltip/examples/tooltip-showcase.tsx +0 -44
  356. package/src/components/tooltip/examples/tooltip-usage.tsx +0 -13
  357. package/src/components/tooltip/tooltip.docs.tsx +0 -56
  358. package/src/components/view-controller/examples/view-controller-action.tsx +0 -27
  359. package/src/components/view-controller/examples/view-controller-settings.tsx +0 -31
  360. package/src/components/view-controller/examples/view-controller-showcase.tsx +0 -45
  361. package/src/components/view-controller/examples/view-controller-usage.tsx +0 -19
  362. package/src/components/view-controller/view-controller.docs.tsx +0 -71
  363. package/src/docs/index.ts +0 -3
  364. package/src/docs/registry.ts +0 -113
  365. package/src/docs/snippet.ts +0 -17
  366. package/src/docs/types.ts +0 -180
@@ -14,10 +14,7 @@ let probe: HTMLDivElement | undefined
14
14
  */
15
15
  export function screenEdges(): ScreenEdges {
16
16
  const margin =
17
- typeof window !== "undefined" &&
18
- window.matchMedia("(pointer: coarse)").matches
19
- ? 12
20
- : 8
17
+ typeof window !== "undefined" && window.matchMedia("(pointer: coarse)").matches ? 12 : 8
21
18
  if (typeof document === "undefined") {
22
19
  return {
23
20
  top: margin,
@@ -38,8 +35,7 @@ export function screenEdges(): ScreenEdges {
38
35
  return {
39
36
  top: Number.parseFloat(style.paddingTop) + margin,
40
37
  right: Number.parseFloat(style.paddingRight) + margin,
41
- bottom:
42
- Number.parseFloat(style.paddingBottom) + margin,
38
+ bottom: Number.parseFloat(style.paddingBottom) + margin,
43
39
  left: Number.parseFloat(style.paddingLeft) + margin,
44
40
  }
45
41
  }
package/src/lib/shapes.ts CHANGED
@@ -13,10 +13,7 @@ export const shapes = [
13
13
  export type Shape = (typeof shapes)[number]
14
14
 
15
15
  /** Lobe count and wave depth (as a fraction of the radius) for each wavy shape. */
16
- const waves: Record<
17
- Exclude<Shape, "circle">,
18
- { lobes: number; depth: number }
19
- > = {
16
+ const waves: Record<Exclude<Shape, "circle">, { lobes: number; depth: number }> = {
20
17
  cookie4: { lobes: 4, depth: 0.08 },
21
18
  cookie6: { lobes: 6, depth: 0.07 },
22
19
  cookie9: { lobes: 9, depth: 0.055 },
@@ -33,12 +30,7 @@ const STEPS = 144
33
30
  * "clover", and "sunny" outlines. The wave is normalised so every shape fills
34
31
  * the same `r`, keeping icons optically the same size.
35
32
  */
36
- export function shapePath(
37
- shape: Shape,
38
- cx: number,
39
- cy: number,
40
- r: number
41
- ) {
33
+ export function shapePath(shape: Shape, cx: number, cy: number, r: number) {
42
34
  if (shape === "circle") {
43
35
  return `M ${cx - r} ${cy} a ${r} ${r} 0 1 0 ${r * 2} 0 a ${r} ${r} 0 1 0 ${-r * 2} 0 Z`
44
36
  }
@@ -48,16 +40,10 @@ export function shapePath(
48
40
  const points: string[] = []
49
41
  for (let i = 0; i < STEPS; i++) {
50
42
  const theta = (i / STEPS) * Math.PI * 2 - Math.PI / 2
51
- const radius =
52
- base *
53
- (1 +
54
- depth *
55
- Math.cos(lobes * (theta + Math.PI / 2)))
43
+ const radius = base * (1 + depth * Math.cos(lobes * (theta + Math.PI / 2)))
56
44
  const x = cx + radius * Math.cos(theta)
57
45
  const y = cy + radius * Math.sin(theta)
58
- points.push(
59
- `${i === 0 ? "M" : "L"} ${x.toFixed(2)} ${y.toFixed(2)}`
60
- )
46
+ points.push(`${i === 0 ? "M" : "L"} ${x.toFixed(2)} ${y.toFixed(2)}`)
61
47
  }
62
48
  return `${points.join(" ")} Z`
63
49
  }
@@ -66,5 +52,4 @@ export function shapePath(
66
52
  * The app wide `dualTone` rule dims every svg path for two tone icons; a
67
53
  * drawn shape or illustration opts out with this so its colors stay true.
68
54
  */
69
- export const plainSvg =
70
- "cursor-[inherit] [&_path]:opacity-100 [&_path]:transform-none"
55
+ export const plainSvg = "cursor-[inherit] [&_path]:opacity-100 [&_path]:transform-none"
@@ -8,18 +8,24 @@ export const spring = {
8
8
  bouncy: { type: "spring", ...springs.bouncy },
9
9
  } as const satisfies Record<keyof typeof springs, Transition>
10
10
 
11
- /** Menus, popovers and floating toolbars: grow from their anchor. */
12
- export const popoverMotion = {
13
- initial: { opacity: 0, scale: 0.94, y: -6 },
14
- animate: { opacity: 1, scale: 1, y: 0 },
15
- exit: {
16
- opacity: 0,
17
- scale: 0.97,
18
- y: -4,
19
- transition: spring.snappy,
20
- },
21
- transition: spring.snappy,
22
- } as const
11
+ export type FloatingPanelSide = "above" | "below"
12
+
13
+ /** Anchored panels settle toward their source without shrinking their text. */
14
+ export function floatingPanelMotion(side: FloatingPanelSide = "below") {
15
+ const direction = side === "above" ? 1 : -1
16
+ return {
17
+ initial: { opacity: 0, scale: 1, y: direction * 6 },
18
+ animate: { opacity: 1, scale: 1, y: 0 },
19
+ exit: { opacity: 0, scale: 1, y: direction * 4 },
20
+ transition: {
21
+ ...spring.smooth,
22
+ opacity: { duration: 0.16 },
23
+ },
24
+ } as const
25
+ }
26
+
27
+ /** Default below-anchor presentation, retained for existing consumers. */
28
+ export const popoverMotion = floatingPanelMotion()
23
29
 
24
30
  /** Floating bars that rise from the bottom edge. */
25
31
  export const riseMotion = {
@@ -1,68 +0,0 @@
1
- import { AmbientNowPlaying } from "./examples/ambient-now-playing"
2
- import { Ambient } from "./ambient"
3
- import { defineDocs } from "../../docs/types"
4
- import { AmbientImages } from "./examples/ambient-images"
5
- import { AmbientShowcase } from "./examples/ambient-showcase"
6
- import { AmbientUsage } from "./examples/ambient-usage"
7
-
8
- // src is any image URL; the playground offers the three sample images.
9
- type DemoProps = {
10
- image: "aiko" | "kenji" | "mira" | "none"
11
- }
12
-
13
- export const ambientDocs = defineDocs<DemoProps>()({
14
- slug: "ambient",
15
- name: "Ambient",
16
- importPath: "@passui/react/ambient",
17
- controls: {
18
- image: {
19
- kind: "select",
20
- options: {
21
- aiko: true,
22
- kenji: true,
23
- mira: true,
24
- none: true,
25
- },
26
- default: "aiko",
27
- },
28
- },
29
- render: ({ image }) => (
30
- <Ambient
31
- key={image}
32
- src={
33
- image === "none"
34
- ? undefined
35
- : `/avatars/${image}.svg`
36
- }
37
- className="flex w-72 flex-col items-center gap-3 py-12 text-center"
38
- >
39
- <img
40
- src={
41
- image === "none"
42
- ? "/avatars/aiko.svg"
43
- : `/avatars/${image}.svg`
44
- }
45
- alt=""
46
- className="size-24 rounded-3xl shadow-sm"
47
- />
48
- <p className="text-headline font-semibold text-label">
49
- Now playing
50
- </p>
51
- </Ambient>
52
- ),
53
- childrenSnippet: ({ image }) => ({
54
- imports: [],
55
- omit: ["image"],
56
- extraProps:
57
- image === "none"
58
- ? undefined
59
- : { src: `/avatars/${image}.svg` },
60
- children: `\n <img src="/avatars/${image === "none" ? "aiko" : image}.svg" alt="" />\n`,
61
- }),
62
- usage: AmbientUsage,
63
- showcase: AmbientShowcase,
64
- examples: [
65
- { id: "images", component: AmbientImages },
66
- { id: "now-playing", component: AmbientNowPlaying },
67
- ],
68
- })
@@ -1,30 +0,0 @@
1
- import { Ambient } from "@passui/react/ambient"
2
-
3
- const people = [
4
- { name: "Aiko", src: "/avatars/aiko.svg" },
5
- { name: "Kenji", src: "/avatars/kenji.svg" },
6
- { name: "Mira", src: "/avatars/mira.svg" },
7
- ]
8
-
9
- export function AmbientImages() {
10
- return (
11
- <div className="grid w-full max-w-xl grid-cols-3 gap-2">
12
- {people.map((person) => (
13
- <Ambient
14
- key={person.name}
15
- src={person.src}
16
- className="flex flex-col items-center gap-2 py-8"
17
- >
18
- <img
19
- src={person.src}
20
- alt=""
21
- className="size-14 rounded-full"
22
- />
23
- <span className="text-subheadline font-medium text-label">
24
- {person.name}
25
- </span>
26
- </Ambient>
27
- ))}
28
- </div>
29
- )
30
- }
@@ -1,55 +0,0 @@
1
- import {
2
- PauseIcon,
3
- NextIcon,
4
- PreviousIcon,
5
- } from "@hugeicons/core-free-icons"
6
- import { HugeiconsIcon } from "@hugeicons/react"
7
- import { Ambient } from "@passui/react/ambient"
8
- import { IconButton } from "@passui/react/icon-button"
9
-
10
- export function AmbientNowPlaying() {
11
- return (
12
- <Ambient
13
- src="/avatars/kenji.svg"
14
- className="flex w-full max-w-xs flex-col items-center gap-4 py-10 text-center"
15
- >
16
- <img
17
- src="/avatars/kenji.svg"
18
- alt=""
19
- className="size-40 rounded-4xl shadow-sm"
20
- />
21
- <div className="flex flex-col">
22
- <span className="text-headline font-semibold text-label">
23
- Morning Light
24
- </span>
25
- <span className="text-footnote text-label-secondary">
26
- Kenji Mori
27
- </span>
28
- </div>
29
- <div className="flex items-center gap-2">
30
- <IconButton label="Previous" variant="ghost">
31
- <HugeiconsIcon
32
- icon={PreviousIcon}
33
- size={22}
34
- />
35
- </IconButton>
36
- <IconButton
37
- label="Pause"
38
- variant="secondary"
39
- size="icon-lg"
40
- >
41
- <HugeiconsIcon
42
- icon={PauseIcon}
43
- size={24}
44
- />
45
- </IconButton>
46
- <IconButton label="Next" variant="ghost">
47
- <HugeiconsIcon
48
- icon={NextIcon}
49
- size={22}
50
- />
51
- </IconButton>
52
- </div>
53
- </Ambient>
54
- )
55
- }
@@ -1,33 +0,0 @@
1
- import { Ambient } from "@passui/react/ambient"
2
- import { Button } from "@passui/react/button"
3
-
4
- export function AmbientShowcase() {
5
- return (
6
- <Ambient
7
- src="/avatars/mira.svg"
8
- className="flex w-full max-w-sm flex-col items-center gap-4 py-12 text-center"
9
- >
10
- <img
11
- src="/avatars/mira.svg"
12
- alt=""
13
- className="size-28 rounded-full shadow-sm"
14
- />
15
- <div className="flex flex-col gap-1">
16
- <h2 className="text-title2 font-bold text-label">
17
- Mira Patel
18
- </h2>
19
- <p className="text-callout text-label-secondary">
20
- Support lead, Lisbon
21
- </p>
22
- </div>
23
- <div className="flex gap-2">
24
- <Button variant="accent" size="sm">
25
- Message
26
- </Button>
27
- <Button variant="secondary" size="sm">
28
- View profile
29
- </Button>
30
- </div>
31
- </Ambient>
32
- )
33
- }
@@ -1,19 +0,0 @@
1
- import { Ambient } from "@passui/react/ambient"
2
-
3
- export function AmbientUsage() {
4
- return (
5
- <Ambient
6
- src="/avatars/aiko.svg"
7
- className="flex flex-col items-center gap-3 py-10"
8
- >
9
- <img
10
- src="/avatars/aiko.svg"
11
- alt=""
12
- className="size-20 rounded-full"
13
- />
14
- <p className="text-headline font-semibold text-label">
15
- Aiko Kamado
16
- </p>
17
- </Ambient>
18
- )
19
- }
@@ -1,116 +0,0 @@
1
- import { ArrowRight01Icon } from "@hugeicons/core-free-icons"
2
- import { HugeiconsIcon } from "@hugeicons/react"
3
- import { jsxText } from "../../docs/snippet"
4
- import { defineDocs } from "../../docs/types"
5
- import { Button, type ButtonProps } from "./button"
6
- import type { ButtonSize } from "./button-styles"
7
- import { ButtonDisabled } from "./examples/button-disabled"
8
- import { ButtonIcon } from "./examples/button-icon"
9
- import { ButtonLink } from "./examples/button-link"
10
- import { ButtonPending } from "./examples/button-pending"
11
- import { ButtonShowcase } from "./examples/button-showcase"
12
- import { ButtonSizes } from "./examples/button-sizes"
13
- import { ButtonUsage } from "./examples/button-usage"
14
- import { ButtonVariants } from "./examples/button-variants"
15
- import { ButtonWithIcon } from "./examples/button-with-icon"
16
-
17
- // Sample values only: the site writes all of the docs' prose.
18
- const sampleLabel = "Continue"
19
-
20
- const iconSizes = new Set<ButtonSize>([
21
- "icon",
22
- "icon-xs",
23
- "icon-sm",
24
- "icon-lg",
25
- "icon-full",
26
- ])
27
-
28
- export const buttonDocs = defineDocs<ButtonProps>()({
29
- slug: "button",
30
- name: "Button",
31
- importPath: "@passui/react/button",
32
- controls: {
33
- variant: {
34
- kind: "select",
35
- options: {
36
- default: true,
37
- secondary: true,
38
- outline: true,
39
- ghost: true,
40
- link: true,
41
- accent: true,
42
- destructive: true,
43
- },
44
- default: "default",
45
- },
46
- size: {
47
- kind: "select",
48
- options: {
49
- default: true,
50
- xs: true,
51
- sm: true,
52
- lg: true,
53
- icon: true,
54
- "icon-xs": true,
55
- "icon-sm": true,
56
- "icon-lg": true,
57
- "icon-full": true,
58
- },
59
- default: "default",
60
- },
61
- isPending: { kind: "boolean", default: false },
62
- disabled: { kind: "boolean", default: false },
63
- children: { kind: "text", default: sampleLabel },
64
- },
65
- render: ({ children, size, ...props }) =>
66
- iconSizes.has(size) ? (
67
- <Button
68
- {...props}
69
- size={size}
70
- aria-label={children}
71
- >
72
- <HugeiconsIcon
73
- icon={ArrowRight01Icon}
74
- size={20}
75
- />
76
- </Button>
77
- ) : (
78
- <Button {...props} size={size}>
79
- {children}
80
- </Button>
81
- ),
82
- childrenSnippet: ({ children, size }) =>
83
- iconSizes.has(size)
84
- ? {
85
- imports: [
86
- 'import { ArrowRight01Icon } from "@hugeicons/core-free-icons"',
87
- 'import { HugeiconsIcon } from "@hugeicons/react"',
88
- ],
89
- children:
90
- "<HugeiconsIcon icon={ArrowRight01Icon} size={20} />",
91
- extraProps: { "aria-label": children },
92
- }
93
- : { imports: [], children: jsxText(children) },
94
- usage: ButtonUsage,
95
- showcase: ButtonShowcase,
96
- examples: [
97
- { id: "variants", component: ButtonVariants },
98
- { id: "sizes", component: ButtonSizes },
99
- { id: "with-icon", component: ButtonWithIcon },
100
- { id: "icon", component: ButtonIcon },
101
- {
102
- id: "pending",
103
- component: ButtonPending,
104
- playground: {
105
- variant: "accent",
106
- isPending: true,
107
- },
108
- },
109
- {
110
- id: "disabled",
111
- component: ButtonDisabled,
112
- playground: { disabled: true },
113
- },
114
- { id: "link", component: ButtonLink },
115
- ],
116
- })
@@ -1,19 +0,0 @@
1
- import { Toggle } from "@passui/react"
2
- import { Button } from "@passui/react/button"
3
- import { useState } from "react"
4
-
5
- export function ButtonDisabled() {
6
- const [agreed, setAgreed] = useState(false)
7
-
8
- return (
9
- <div className="flex w-full max-w-xs flex-col gap-4">
10
- <Toggle
11
- style="checkbox"
12
- label="I agree to the terms"
13
- checked={agreed}
14
- onChange={setAgreed}
15
- />
16
- <Button disabled={!agreed}>Create account</Button>
17
- </div>
18
- )
19
- }
@@ -1,39 +0,0 @@
1
- import {
2
- TextAlignCenterIcon,
3
- TextAlignLeftIcon,
4
- TextBoldIcon,
5
- TextItalicIcon,
6
- } from "@hugeicons/core-free-icons"
7
- import { HugeiconsIcon } from "@hugeicons/react"
8
- import { Button } from "@passui/react/button"
9
-
10
- const tools = [
11
- { label: "Bold", icon: TextBoldIcon },
12
- { label: "Italic", icon: TextItalicIcon },
13
- { label: "Align left", icon: TextAlignLeftIcon },
14
- { label: "Align centre", icon: TextAlignCenterIcon },
15
- ]
16
-
17
- export function ButtonIcon() {
18
- return (
19
- <div
20
- role="toolbar"
21
- aria-label="Formatting"
22
- className="flex items-center gap-1 rounded-full bg-fill/60 p-1"
23
- >
24
- {tools.map((tool) => (
25
- <Button
26
- key={tool.label}
27
- size="icon-sm"
28
- variant="ghost"
29
- aria-label={tool.label}
30
- >
31
- <HugeiconsIcon
32
- icon={tool.icon}
33
- size={18}
34
- />
35
- </Button>
36
- ))}
37
- </div>
38
- )
39
- }
@@ -1,12 +0,0 @@
1
- import { buttonStyle } from "@passui/react/button"
2
-
3
- export function ButtonLink() {
4
- return (
5
- <a
6
- href="#guide"
7
- className={buttonStyle({ variant: "secondary" })}
8
- >
9
- Read the guide
10
- </a>
11
- )
12
- }
@@ -1,27 +0,0 @@
1
- import { toast } from "@passui/react"
2
- import { Button } from "@passui/react/button"
3
- import { useState } from "react"
4
-
5
- export function ButtonPending() {
6
- const [saving, setSaving] = useState(false)
7
-
8
- async function save() {
9
- setSaving(true)
10
- // stands in for a real request
11
- await new Promise((resolve) =>
12
- setTimeout(resolve, 1600)
13
- )
14
- setSaving(false)
15
- toast.success("Profile saved")
16
- }
17
-
18
- return (
19
- <Button
20
- variant="accent"
21
- isPending={saving}
22
- onClick={save}
23
- >
24
- Save profile
25
- </Button>
26
- )
27
- }
@@ -1,115 +0,0 @@
1
- import {
2
- Delete02Icon,
3
- Link01Icon,
4
- Share08Icon,
5
- StarIcon,
6
- } from "@hugeicons/core-free-icons"
7
- import { HugeiconsIcon } from "@hugeicons/react"
8
- import { TextField, toast } from "@passui/react"
9
- import { Button } from "@passui/react/button"
10
- import { useState } from "react"
11
-
12
- export function ButtonShowcase() {
13
- const [name, setName] = useState("Passui launch")
14
- const [saving, setSaving] = useState(false)
15
-
16
- async function save() {
17
- setSaving(true)
18
- await new Promise((resolve) =>
19
- setTimeout(resolve, 1400)
20
- )
21
- setSaving(false)
22
- toast.success("Project saved")
23
- }
24
-
25
- return (
26
- <div className="flex w-full max-w-md flex-col gap-4">
27
- <section className="flex flex-col gap-5 rounded-4xl bg-elevated p-6 shadow-sm ring-1 ring-separator/60">
28
- <header className="flex items-start justify-between gap-4">
29
- <div className="flex flex-col gap-1">
30
- <h2 className="text-headline font-semibold text-label">
31
- Project settings
32
- </h2>
33
- <p className="text-footnote text-label-secondary">
34
- Changes apply to everyone on the
35
- team.
36
- </p>
37
- </div>
38
- <div className="flex gap-1">
39
- <Button
40
- size="icon-sm"
41
- variant="ghost"
42
- aria-label="Star"
43
- >
44
- <HugeiconsIcon
45
- icon={StarIcon}
46
- size={18}
47
- />
48
- </Button>
49
- <Button
50
- size="icon-sm"
51
- variant="ghost"
52
- aria-label="Copy link"
53
- >
54
- <HugeiconsIcon
55
- icon={Link01Icon}
56
- size={18}
57
- />
58
- </Button>
59
- <Button
60
- size="icon-sm"
61
- variant="ghost"
62
- aria-label="Share"
63
- >
64
- <HugeiconsIcon
65
- icon={Share08Icon}
66
- size={18}
67
- />
68
- </Button>
69
- </div>
70
- </header>
71
- <TextField
72
- label="Project name"
73
- value={name}
74
- onChange={(event) =>
75
- setName(event.target.value)
76
- }
77
- />
78
- <footer className="flex justify-end gap-2">
79
- <Button
80
- variant="ghost"
81
- onClick={() =>
82
- setName("Passui launch")
83
- }
84
- >
85
- Cancel
86
- </Button>
87
- <Button
88
- variant="accent"
89
- isPending={saving}
90
- onClick={save}
91
- >
92
- Save changes
93
- </Button>
94
- </footer>
95
- </section>
96
- <section className="flex items-center justify-between gap-4 rounded-4xl bg-elevated p-5 ring-1 ring-danger/25">
97
- <div className="flex flex-col gap-1">
98
- <span className="text-subheadline font-semibold text-label">
99
- Delete project
100
- </span>
101
- <span className="text-footnote text-label-secondary">
102
- This removes every file for good.
103
- </span>
104
- </div>
105
- <Button variant="destructive" size="sm">
106
- <HugeiconsIcon
107
- icon={Delete02Icon}
108
- size={16}
109
- />
110
- Delete
111
- </Button>
112
- </section>
113
- </div>
114
- )
115
- }
@@ -1,12 +0,0 @@
1
- import { Button } from "@passui/react/button"
2
-
3
- export function ButtonSizes() {
4
- return (
5
- <div className="flex flex-wrap items-center justify-center gap-3">
6
- <Button size="xs">Extra small</Button>
7
- <Button size="sm">Small</Button>
8
- <Button>Default</Button>
9
- <Button size="lg">Large</Button>
10
- </div>
11
- )
12
- }