@refraction-ui/react 0.19.1 → 0.20.0

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 (342) hide show
  1. package/dist/chunk-533MCMSU.js +2355 -0
  2. package/dist/chunk-533MCMSU.js.map +7 -0
  3. package/dist/chunk-AMK4VCBG.js +250 -0
  4. package/dist/chunk-AMK4VCBG.js.map +7 -0
  5. package/dist/chunk-BOLFYVI6.js +90 -0
  6. package/dist/chunk-BOLFYVI6.js.map +7 -0
  7. package/dist/chunk-F7B64KT3.js +187 -0
  8. package/dist/chunk-F7B64KT3.js.map +7 -0
  9. package/dist/chunk-FD37DFCC.js +77 -0
  10. package/dist/chunk-FD37DFCC.js.map +7 -0
  11. package/dist/chunk-H54FLNAF.js +132 -0
  12. package/dist/chunk-H54FLNAF.js.map +7 -0
  13. package/dist/chunk-INP46354.js +664 -0
  14. package/dist/chunk-INP46354.js.map +7 -0
  15. package/dist/chunk-ONACRMG4.js +116 -0
  16. package/dist/chunk-ONACRMG4.js.map +7 -0
  17. package/dist/chunk-SDZ3LROZ.js +7 -0
  18. package/dist/chunk-SDZ3LROZ.js.map +7 -0
  19. package/dist/chunk-TOZBR4GL.js +154 -0
  20. package/dist/chunk-TOZBR4GL.js.map +7 -0
  21. package/dist/chunk-UNEM2TRI.js +225 -0
  22. package/dist/chunk-UNEM2TRI.js.map +7 -0
  23. package/dist/chunk-VK3EQ34F.js +92 -0
  24. package/dist/chunk-VK3EQ34F.js.map +7 -0
  25. package/dist/chunk-WK2IIUFO.js +316 -0
  26. package/dist/chunk-WK2IIUFO.js.map +7 -0
  27. package/dist/chunk-WSPJTQAV.js +59 -0
  28. package/dist/chunk-WSPJTQAV.js.map +7 -0
  29. package/dist/chunk-XWP763SH.js +3 -2
  30. package/dist/chunk-XWP763SH.js.map +7 -1
  31. package/dist/chunk-Y2FNNAIL.js +80 -0
  32. package/dist/chunk-Y2FNNAIL.js.map +1 -0
  33. package/dist/{chunk-4A4BW3GR.js → chunk-ZF3OHCGV.js} +28 -5
  34. package/dist/chunk-ZF3OHCGV.js.map +7 -0
  35. package/dist/form.cjs +5 -11
  36. package/dist/form.cjs.map +1 -1
  37. package/dist/form.js +6 -12
  38. package/dist/form.js.map +1 -1
  39. package/dist/index.cjs +2879 -33936
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.cts +1 -0
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +126 -28780
  44. package/dist/internal/react-app-shell/index.d.cts +2 -22
  45. package/dist/internal/react-app-shell/index.d.ts +2 -22
  46. package/dist/internal/react-badge/index.d.cts +5 -0
  47. package/dist/internal/react-badge/index.d.ts +5 -0
  48. package/dist/internal/react-callout/index.d.cts +4 -0
  49. package/dist/internal/react-callout/index.d.ts +4 -0
  50. package/dist/internal/react-card/index.d.cts +8 -1
  51. package/dist/internal/react-card/index.d.ts +8 -1
  52. package/dist/internal/react-collapsible/index.d.cts +0 -3
  53. package/dist/internal/react-collapsible/index.d.ts +0 -3
  54. package/dist/internal/react-combobox/index.d.cts +0 -3
  55. package/dist/internal/react-combobox/index.d.ts +0 -3
  56. package/dist/internal/react-command/index.d.cts +0 -3
  57. package/dist/internal/react-command/index.d.ts +0 -3
  58. package/dist/internal/react-data-table/index.d.cts +0 -3
  59. package/dist/internal/react-data-table/index.d.ts +0 -3
  60. package/dist/internal/react-dialog/index.d.cts +0 -3
  61. package/dist/internal/react-dialog/index.d.ts +0 -3
  62. package/dist/internal/react-dropdown-menu/index.d.cts +0 -3
  63. package/dist/internal/react-dropdown-menu/index.d.ts +0 -3
  64. package/dist/internal/react-feedback-dialog/index.d.cts +0 -3
  65. package/dist/internal/react-feedback-dialog/index.d.ts +0 -3
  66. package/dist/internal/react-form/index.d.cts +2 -21
  67. package/dist/internal/react-form/index.d.ts +2 -21
  68. package/dist/internal/react-keyboard-shortcut/index.d.cts +0 -6
  69. package/dist/internal/react-keyboard-shortcut/index.d.ts +0 -6
  70. package/dist/internal/react-link-card/index.d.cts +8 -2
  71. package/dist/internal/react-link-card/index.d.ts +8 -2
  72. package/dist/internal/react-popover/index.d.cts +0 -3
  73. package/dist/internal/react-popover/index.d.ts +0 -3
  74. package/dist/internal/react-sheet/index.d.cts +0 -3
  75. package/dist/internal/react-sheet/index.d.ts +0 -3
  76. package/dist/internal/react-slot/index.d.cts +23 -0
  77. package/dist/internal/react-slot/index.d.ts +23 -0
  78. package/dist/internal/react-toast/index.d.cts +0 -3
  79. package/dist/internal/react-toast/index.d.ts +0 -3
  80. package/dist/internal/react-tooltip/index.d.cts +0 -3
  81. package/dist/internal/react-tooltip/index.d.ts +0 -3
  82. package/dist/react-accordion.js +125 -0
  83. package/dist/react-accordion.js.map +7 -0
  84. package/dist/react-ai.js +257 -0
  85. package/dist/react-ai.js.map +7 -0
  86. package/dist/react-analytics.js +1698 -0
  87. package/dist/react-analytics.js.map +7 -0
  88. package/dist/react-animated-text.js +164 -0
  89. package/dist/react-animated-text.js.map +7 -0
  90. package/dist/react-app-shell.js +631 -0
  91. package/dist/react-app-shell.js.map +7 -0
  92. package/dist/react-audience-feature-card.js +53 -0
  93. package/dist/react-audience-feature-card.js.map +7 -0
  94. package/dist/react-audio-room.js +166 -0
  95. package/dist/react-audio-room.js.map +7 -0
  96. package/dist/react-auth.js +211 -0
  97. package/dist/react-auth.js.map +7 -0
  98. package/dist/react-avatar-group.js +154 -0
  99. package/dist/react-avatar-group.js.map +7 -0
  100. package/dist/react-avatar.js +168 -0
  101. package/dist/react-avatar.js.map +7 -0
  102. package/dist/react-badge.js +86 -0
  103. package/dist/react-badge.js.map +7 -0
  104. package/dist/react-bottom-nav.js +67 -0
  105. package/dist/react-bottom-nav.js.map +7 -0
  106. package/dist/react-brand-network-cell.js +92 -0
  107. package/dist/react-brand-network-cell.js.map +7 -0
  108. package/dist/react-breadcrumbs.js +104 -0
  109. package/dist/react-breadcrumbs.js.map +7 -0
  110. package/dist/react-browser-chrome-mock.js +89 -0
  111. package/dist/react-browser-chrome-mock.js.map +7 -0
  112. package/dist/react-button.js +13 -0
  113. package/dist/react-button.js.map +7 -0
  114. package/dist/react-calendar.js +301 -0
  115. package/dist/react-calendar.js.map +7 -0
  116. package/dist/react-call-controls.js +113 -0
  117. package/dist/react-call-controls.js.map +7 -0
  118. package/dist/react-callout.js +152 -0
  119. package/dist/react-callout.js.map +7 -0
  120. package/dist/react-card-grid.js +34 -0
  121. package/dist/react-card-grid.js.map +7 -0
  122. package/dist/react-card.js +200 -0
  123. package/dist/react-card.js.map +7 -0
  124. package/dist/react-carousel.js +132 -0
  125. package/dist/react-carousel.js.map +7 -0
  126. package/dist/react-charts.js +509 -0
  127. package/dist/react-charts.js.map +7 -0
  128. package/dist/react-checkbox.js +156 -0
  129. package/dist/react-checkbox.js.map +7 -0
  130. package/dist/react-checklist.js +168 -0
  131. package/dist/react-checklist.js.map +7 -0
  132. package/dist/react-code-block.js +78 -0
  133. package/dist/react-code-block.js.map +7 -0
  134. package/dist/react-code-editor.js +184 -0
  135. package/dist/react-code-editor.js.map +7 -0
  136. package/dist/react-collapsible.js +192 -0
  137. package/dist/react-collapsible.js.map +7 -0
  138. package/dist/react-combobox.js +609 -0
  139. package/dist/react-combobox.js.map +7 -0
  140. package/dist/react-command-input.js +202 -0
  141. package/dist/react-command-input.js.map +7 -0
  142. package/dist/react-command.js +364 -0
  143. package/dist/react-command.js.map +7 -0
  144. package/dist/react-composer.js +2036 -0
  145. package/dist/react-composer.js.map +7 -0
  146. package/dist/react-content-protection.js +133 -0
  147. package/dist/react-content-protection.js.map +7 -0
  148. package/dist/react-conversation.js +1226 -0
  149. package/dist/react-conversation.js.map +7 -0
  150. package/dist/react-cookie-consent.js +291 -0
  151. package/dist/react-cookie-consent.js.map +7 -0
  152. package/dist/react-data-table.js +310 -0
  153. package/dist/react-data-table.js.map +7 -0
  154. package/dist/react-date-picker.js +95 -0
  155. package/dist/react-date-picker.js.map +7 -0
  156. package/dist/react-device-frame.js +137 -0
  157. package/dist/react-device-frame.js.map +7 -0
  158. package/dist/react-dialog.js +218 -0
  159. package/dist/react-dialog.js.map +7 -0
  160. package/dist/react-diff-viewer.js +460 -0
  161. package/dist/react-diff-viewer.js.map +7 -0
  162. package/dist/react-dropdown-menu.js +292 -0
  163. package/dist/react-dropdown-menu.js.map +7 -0
  164. package/dist/react-editor-status-bar.js +148 -0
  165. package/dist/react-editor-status-bar.js.map +7 -0
  166. package/dist/react-editor-tabs.js +159 -0
  167. package/dist/react-editor-tabs.js.map +7 -0
  168. package/dist/react-emoji-picker.js +238 -0
  169. package/dist/react-emoji-picker.js.map +7 -0
  170. package/dist/react-empty-state.js +90 -0
  171. package/dist/react-empty-state.js.map +7 -0
  172. package/dist/react-feedback-dialog.js +275 -0
  173. package/dist/react-feedback-dialog.js.map +7 -0
  174. package/dist/react-file-tree.js +376 -0
  175. package/dist/react-file-tree.js.map +7 -0
  176. package/dist/react-file-upload.js +360 -0
  177. package/dist/react-file-upload.js.map +7 -0
  178. package/dist/react-floating-reactions.js +124 -0
  179. package/dist/react-floating-reactions.js.map +7 -0
  180. package/dist/react-flow-editor.js +198 -0
  181. package/dist/react-flow-editor.js.map +7 -0
  182. package/dist/react-footer.js +67 -0
  183. package/dist/react-footer.js.map +7 -0
  184. package/dist/react-graph-view.js +197 -0
  185. package/dist/react-graph-view.js.map +7 -0
  186. package/dist/react-icon-system.js +9 -0
  187. package/dist/react-icon-system.js.map +7 -0
  188. package/dist/react-infinite-canvas.js +8 -0
  189. package/dist/react-infinite-canvas.js.map +7 -0
  190. package/dist/react-inline-editor.js +216 -0
  191. package/dist/react-inline-editor.js.map +7 -0
  192. package/dist/react-input-group.js +150 -0
  193. package/dist/react-input-group.js.map +7 -0
  194. package/dist/react-input.js +10 -0
  195. package/dist/react-input.js.map +7 -0
  196. package/dist/react-install-prompt.js +132 -0
  197. package/dist/react-install-prompt.js.map +7 -0
  198. package/dist/react-kanban-board.js +198 -0
  199. package/dist/react-kanban-board.js.map +7 -0
  200. package/dist/react-keyboard-shortcut.js +36 -0
  201. package/dist/react-keyboard-shortcut.js.map +7 -0
  202. package/dist/react-language-selector.js +311 -0
  203. package/dist/react-language-selector.js.map +7 -0
  204. package/dist/react-link-card.js +48 -0
  205. package/dist/react-link-card.js.map +7 -0
  206. package/dist/react-live-captions.js +92 -0
  207. package/dist/react-live-captions.js.map +7 -0
  208. package/dist/react-live-cursors.js +145 -0
  209. package/dist/react-live-cursors.js.map +7 -0
  210. package/dist/react-live-transcript.js +117 -0
  211. package/dist/react-live-transcript.js.map +7 -0
  212. package/dist/react-location-selector.js +252 -0
  213. package/dist/react-location-selector.js.map +7 -0
  214. package/dist/react-logger.js +415 -0
  215. package/dist/react-logger.js.map +7 -0
  216. package/dist/react-markdown-renderer.js +12 -0
  217. package/dist/react-markdown-renderer.js.map +7 -0
  218. package/dist/react-marquee-strip.js +62 -0
  219. package/dist/react-marquee-strip.js.map +7 -0
  220. package/dist/react-mascot.js +367 -0
  221. package/dist/react-mascot.js.map +7 -0
  222. package/dist/react-mastery-bar.js +97 -0
  223. package/dist/react-mastery-bar.js.map +7 -0
  224. package/dist/react-mini-map.js +207 -0
  225. package/dist/react-mini-map.js.map +7 -0
  226. package/dist/react-mobile-nav.js +216 -0
  227. package/dist/react-mobile-nav.js.map +7 -0
  228. package/dist/react-navbar.js +96 -0
  229. package/dist/react-navbar.js.map +7 -0
  230. package/dist/react-numbered-steps.js +67 -0
  231. package/dist/react-numbered-steps.js.map +7 -0
  232. package/dist/react-otp-input.js +318 -0
  233. package/dist/react-otp-input.js.map +7 -0
  234. package/dist/react-pagination.js +199 -0
  235. package/dist/react-pagination.js.map +7 -0
  236. package/dist/react-password-input.js +104 -0
  237. package/dist/react-password-input.js.map +7 -0
  238. package/dist/react-payment.js +81 -0
  239. package/dist/react-payment.js.map +7 -0
  240. package/dist/react-popover.js +176 -0
  241. package/dist/react-popover.js.map +7 -0
  242. package/dist/react-pre-call-lobby.js +309 -0
  243. package/dist/react-pre-call-lobby.js.map +7 -0
  244. package/dist/react-presence-indicator.js +86 -0
  245. package/dist/react-presence-indicator.js.map +7 -0
  246. package/dist/react-pricing-card.js +142 -0
  247. package/dist/react-pricing-card.js.map +7 -0
  248. package/dist/react-progress-display.js +188 -0
  249. package/dist/react-progress-display.js.map +7 -0
  250. package/dist/react-radial-gauge.js +193 -0
  251. package/dist/react-radial-gauge.js.map +7 -0
  252. package/dist/react-radio.js +169 -0
  253. package/dist/react-radio.js.map +7 -0
  254. package/dist/react-rating-scale.js +171 -0
  255. package/dist/react-rating-scale.js.map +7 -0
  256. package/dist/react-reaction-bar.js +111 -0
  257. package/dist/react-reaction-bar.js.map +7 -0
  258. package/dist/react-resizable-layout.js +298 -0
  259. package/dist/react-resizable-layout.js.map +7 -0
  260. package/dist/react-rich-editor.js +1 -0
  261. package/dist/react-rich-editor.js.map +7 -0
  262. package/dist/react-search-bar.js +285 -0
  263. package/dist/react-search-bar.js.map +7 -0
  264. package/dist/react-section-head.js +65 -0
  265. package/dist/react-section-head.js.map +7 -0
  266. package/dist/react-segmented-control.js +215 -0
  267. package/dist/react-segmented-control.js.map +7 -0
  268. package/dist/react-select.js +389 -0
  269. package/dist/react-select.js.map +7 -0
  270. package/dist/react-separator.js +86 -0
  271. package/dist/react-separator.js.map +7 -0
  272. package/dist/react-sheet.js +310 -0
  273. package/dist/react-sheet.js.map +7 -0
  274. package/dist/react-sidebar.js +100 -0
  275. package/dist/react-sidebar.js.map +7 -0
  276. package/dist/react-skeleton.js +91 -0
  277. package/dist/react-skeleton.js.map +7 -0
  278. package/dist/react-skip-to-content.js +38 -0
  279. package/dist/react-skip-to-content.js.map +7 -0
  280. package/dist/react-slide-viewer.js +264 -0
  281. package/dist/react-slide-viewer.js.map +7 -0
  282. package/dist/react-slider.js +105 -0
  283. package/dist/react-slider.js.map +7 -0
  284. package/dist/react-slot-picker.js +184 -0
  285. package/dist/react-slot-picker.js.map +7 -0
  286. package/dist/react-slot.js +7 -0
  287. package/dist/react-slot.js.map +7 -0
  288. package/dist/react-social-auth-button.js +169 -0
  289. package/dist/react-social-auth-button.js.map +7 -0
  290. package/dist/react-sortable-list.js +204 -0
  291. package/dist/react-sortable-list.js.map +7 -0
  292. package/dist/react-stat-grid.js +69 -0
  293. package/dist/react-stat-grid.js.map +7 -0
  294. package/dist/react-status-indicator.js +117 -0
  295. package/dist/react-status-indicator.js.map +7 -0
  296. package/dist/react-steps.js +167 -0
  297. package/dist/react-steps.js.map +7 -0
  298. package/dist/react-sticky-note.js +131 -0
  299. package/dist/react-sticky-note.js.map +7 -0
  300. package/dist/react-switch.js +139 -0
  301. package/dist/react-switch.js.map +7 -0
  302. package/dist/react-table-of-contents.js +80 -0
  303. package/dist/react-table-of-contents.js.map +7 -0
  304. package/dist/react-tabs.js +230 -0
  305. package/dist/react-tabs.js.map +7 -0
  306. package/dist/react-terminal.js +101 -0
  307. package/dist/react-terminal.js.map +7 -0
  308. package/dist/react-test-results.js +158 -0
  309. package/dist/react-test-results.js.map +7 -0
  310. package/dist/react-textarea.js +89 -0
  311. package/dist/react-textarea.js.map +7 -0
  312. package/dist/react-thread-view.js +139 -0
  313. package/dist/react-thread-view.js.map +7 -0
  314. package/dist/react-timeline.js +153 -0
  315. package/dist/react-timeline.js.map +7 -0
  316. package/dist/react-toast.js +253 -0
  317. package/dist/react-toast.js.map +7 -0
  318. package/dist/react-tooltip.js +221 -0
  319. package/dist/react-tooltip.js.map +7 -0
  320. package/dist/react-version-selector.js +270 -0
  321. package/dist/react-version-selector.js.map +7 -0
  322. package/dist/react-video-grid.js +129 -0
  323. package/dist/react-video-grid.js.map +7 -0
  324. package/dist/react-video-player.js +206 -0
  325. package/dist/react-video-player.js.map +7 -0
  326. package/dist/react-video-tile.js +8 -0
  327. package/dist/react-video-tile.js.map +7 -0
  328. package/dist/react-voice-pill.js +314 -0
  329. package/dist/react-voice-pill.js.map +7 -0
  330. package/dist/react-waveform.js +558 -0
  331. package/dist/react-waveform.js.map +7 -0
  332. package/dist/react-wizard.js +337 -0
  333. package/dist/react-wizard.js.map +7 -0
  334. package/dist/styles.css +7 -0
  335. package/dist/theme.js +1 -1
  336. package/package.json +3 -2
  337. package/dist/applicationinsights-web-H7OBLIVJ.js +0 -23393
  338. package/dist/applicationinsights-web-H7OBLIVJ.js.map +0 -1
  339. package/dist/chunk-4A4BW3GR.js.map +0 -1
  340. package/dist/index.js.map +0 -1
  341. package/dist/module-X3HTTRQK.js +0 -6438
  342. package/dist/module-X3HTTRQK.js.map +0 -1
@@ -0,0 +1,104 @@
1
+ import {
2
+ Input
3
+ } from "./chunk-TOZBR4GL.js";
4
+ import {
5
+ cn,
6
+ cva
7
+ } from "./chunk-ZF3OHCGV.js";
8
+
9
+ // ../react-password-input/dist/index.js
10
+ import * as React from "react";
11
+
12
+ // ../password-input/dist/index.js
13
+ var DEFAULT_REVEAL_LABEL = "Show password";
14
+ var DEFAULT_HIDE_LABEL = "Hide password";
15
+ function createPasswordInput(props = {}) {
16
+ const {
17
+ revealed = false,
18
+ revealLabel = DEFAULT_REVEAL_LABEL,
19
+ hideLabel = DEFAULT_HIDE_LABEL
20
+ } = props;
21
+ return {
22
+ inputType: revealed ? "text" : "password",
23
+ toggleLabel: revealed ? hideLabel : revealLabel,
24
+ togglePressed: revealed
25
+ };
26
+ }
27
+ var passwordToggleVariants = cva({
28
+ base: "absolute right-2 top-1/2 flex size-7 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
29
+ });
30
+
31
+ // ../react-password-input/dist/index.js
32
+ import { jsxs, jsx } from "react/jsx-runtime";
33
+ var EyeIcon = /* @__PURE__ */ jsxs(
34
+ "svg",
35
+ {
36
+ "aria-hidden": "true",
37
+ viewBox: "0 0 24 24",
38
+ fill: "none",
39
+ stroke: "currentColor",
40
+ strokeWidth: "2",
41
+ strokeLinecap: "round",
42
+ strokeLinejoin: "round",
43
+ className: "size-4",
44
+ children: [
45
+ /* @__PURE__ */ jsx("path", { d: "M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z" }),
46
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "3" })
47
+ ]
48
+ }
49
+ );
50
+ var EyeOffIcon = /* @__PURE__ */ jsxs(
51
+ "svg",
52
+ {
53
+ "aria-hidden": "true",
54
+ viewBox: "0 0 24 24",
55
+ fill: "none",
56
+ stroke: "currentColor",
57
+ strokeWidth: "2",
58
+ strokeLinecap: "round",
59
+ strokeLinejoin: "round",
60
+ className: "size-4",
61
+ children: [
62
+ /* @__PURE__ */ jsx("path", { d: "M9.88 9.88a3 3 0 1 0 4.24 4.24" }),
63
+ /* @__PURE__ */ jsx("path", { d: "M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68" }),
64
+ /* @__PURE__ */ jsx("path", { d: "M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61" }),
65
+ /* @__PURE__ */ jsx("line", { x1: "2", x2: "22", y1: "2", y2: "22" })
66
+ ]
67
+ }
68
+ );
69
+ var PasswordInput = React.forwardRef(
70
+ function PasswordInput2({ revealLabel = "Show password", hideLabel = "Hide password", className, ...props }, ref) {
71
+ const [revealed, setRevealed] = React.useState(false);
72
+ const { inputType, toggleLabel, togglePressed } = createPasswordInput({
73
+ revealed,
74
+ revealLabel,
75
+ hideLabel
76
+ });
77
+ return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
78
+ /* @__PURE__ */ jsx(
79
+ Input,
80
+ {
81
+ ref,
82
+ type: inputType,
83
+ className: cn("pr-10", className),
84
+ ...props
85
+ }
86
+ ),
87
+ /* @__PURE__ */ jsx(
88
+ "button",
89
+ {
90
+ type: "button",
91
+ "aria-label": toggleLabel,
92
+ "aria-pressed": togglePressed,
93
+ onClick: () => setRevealed((v) => !v),
94
+ className: passwordToggleVariants(),
95
+ children: revealed ? EyeOffIcon : EyeIcon
96
+ }
97
+ )
98
+ ] });
99
+ }
100
+ );
101
+ export {
102
+ PasswordInput
103
+ };
104
+ //# sourceMappingURL=react-password-input.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../password-input/src/password-input.ts", "../../password-input/src/password-input.styles.ts", "../../react-password-input/src/password-input.tsx"],
4
+ "sourcesContent": ["export interface PasswordInputProps {\n /** Whether the password is currently revealed (shown as plain text). */\n revealed?: boolean\n /**\n * Accessible label for the reveal (show password) action.\n * @default 'Show password'\n */\n revealLabel?: string\n /**\n * Accessible label for the hide action.\n * @default 'Hide password'\n */\n hideLabel?: string\n}\n\nexport interface PasswordInputAPI {\n /** The `type` attribute for the underlying input given the revealed state. */\n inputType: 'text' | 'password'\n /** The accessible label for the toggle button given the revealed state. */\n toggleLabel: string\n /** The `aria-pressed` value for the toggle button. */\n togglePressed: boolean\n}\n\nexport const DEFAULT_REVEAL_LABEL = 'Show password'\nexport const DEFAULT_HIDE_LABEL = 'Hide password'\n\n/**\n * State-free password-input helper. Given a `revealed` flag (owned by the\n * framework adapter), it returns the input `type`, the toggle button's\n * accessible label, and its `aria-pressed` value. It does not hold state.\n */\nexport function createPasswordInput(props: PasswordInputProps = {}): PasswordInputAPI {\n const {\n revealed = false,\n revealLabel = DEFAULT_REVEAL_LABEL,\n hideLabel = DEFAULT_HIDE_LABEL,\n } = props\n\n return {\n inputType: revealed ? 'text' : 'password',\n toggleLabel: revealed ? hideLabel : revealLabel,\n togglePressed: revealed,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/**\n * Positioning classes for the reveal/hide toggle button rendered inside a\n * password input's trailing padding. The wrapper must be `relative` and the\n * input must reserve trailing space (e.g. `pr-10`).\n */\nexport const passwordToggleVariants = cva({\n base: 'absolute right-2 top-1/2 flex size-7 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n})\n", "import * as React from 'react'\nimport { Input, type InputProps } from '@refraction-ui/react-input'\nimport { createPasswordInput, passwordToggleVariants } from '@refraction-ui/password-input'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface PasswordInputProps extends Omit<InputProps, 'type' | 'leadingIcon'> {\n /**\n * Accessible label for the reveal (show password) action.\n * @default 'Show password'\n */\n revealLabel?: string\n /**\n * Accessible label for the hide action.\n * @default 'Hide password'\n */\n hideLabel?: string\n}\n\nconst EyeIcon = (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"size-4\"\n >\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n)\n\nconst EyeOffIcon = (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"size-4\"\n >\n <path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" />\n <path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" />\n <path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" />\n <line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" />\n </svg>\n)\n\n/**\n * PasswordInput — a password field with a built-in reveal/hide toggle.\n *\n * Wraps the styled {@link Input} from `@refraction-ui/react-input`, toggling\n * the underlying input `type` between `'password'` and `'text'`. Forwards all\n * Input props (`value`, `onChange`, `validationState`, `minLength`, …) through\n * to the underlying element, including the `ref`.\n */\nexport const PasswordInput = React.forwardRef<HTMLInputElement, PasswordInputProps>(\n function PasswordInput({ revealLabel = 'Show password', hideLabel = 'Hide password', className, ...props }, ref) {\n const [revealed, setRevealed] = React.useState(false)\n\n // The core owns the type/label/pressed derivation; React owns the toggle state.\n const { inputType, toggleLabel, togglePressed } = createPasswordInput({\n revealed,\n revealLabel,\n hideLabel,\n })\n\n return (\n <div className=\"relative\">\n <Input\n ref={ref}\n type={inputType}\n className={cn('pr-10', className)}\n {...props}\n />\n <button\n type=\"button\"\n aria-label={toggleLabel}\n aria-pressed={togglePressed}\n onClick={() => setRevealed((v) => !v)}\n className={passwordToggleVariants()}\n >\n {revealed ? EyeOffIcon : EyeIcon}\n </button>\n </div>\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;;;;AAwBO,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAO3B,SAAS,oBAAoB,QAA4B,CAAA,GAAsB;AACpF,QAAM;IACJ,WAAW;IACX,cAAc;IACd,YAAY;EAAA,IACV;AAEJ,SAAO;IACL,WAAW,WAAW,SAAS;IAC/B,aAAa,WAAW,YAAY;IACpC,eAAe;EAAA;AAEnB;ACrCO,IAAM,yBAAyB,IAAI;EACxC,MAAM;AACR,CAAC;;;;ACSD,IAAM,UACJ;EAAC;EAAA;IACC,eAAY;IACZ,SAAQ;IACR,MAAK;IACL,QAAO;IACP,aAAY;IACZ,eAAc;IACd,gBAAe;IACf,WAAU;IAEV,UAAA;MAAA,oBAAC,QAAA,EAAK,GAAE,+CAAA,CAA+C;MAAA,oBACtD,UAAA,EAAO,IAAG,MAAK,IAAG,MAAK,GAAE,IAAA,CAAI;IAAA;EAAA;AAChC;AAGF,IAAM,aACJ;EAAC;EAAA;IACC,eAAY;IACZ,SAAQ;IACR,MAAK;IACL,QAAO;IACP,aAAY;IACZ,eAAc;IACd,gBAAe;IACf,WAAU;IAEV,UAAA;MAAA,oBAAC,QAAA,EAAK,GAAE,iCAAA,CAAiC;MACzC,oBAAC,QAAA,EAAK,GAAE,+EAAA,CAA+E;MACvF,oBAAC,QAAA,EAAK,GAAE,yEAAA,CAAyE;MACjF,oBAAC,QAAA,EAAK,IAAG,KAAI,IAAG,MAAK,IAAG,KAAI,IAAG,KAAA,CAAK;IAAA;EAAA;AACtC;AAWK,IAAM,gBAAsB;EACjC,SAASA,eAAc,EAAE,cAAc,iBAAiB,YAAY,iBAAiB,WAAW,GAAG,MAAA,GAAS,KAAK;AAC/G,UAAM,CAAC,UAAU,WAAW,IAAU,eAAS,KAAK;AAGpD,UAAM,EAAE,WAAW,aAAa,cAAA,IAAkB,oBAAoB;MACpE;MACA;MACA;IAAA,CACD;AAED,WACE,qBAAC,OAAA,EAAI,WAAU,YACb,UAAA;MAAA;QAAC;QAAA;UACC;UACA,MAAM;UACN,WAAW,GAAG,SAAS,SAAS;UAC/B,GAAG;QAAA;MAAA;MAEN;QAAC;QAAA;UACC,MAAK;UACL,cAAY;UACZ,gBAAc;UACd,SAAS,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;UACpC,WAAW,uBAAA;UAEV,UAAA,WAAW,aAAa;QAAA;MAAA;IAC3B,EAAA,CACF;EAEJ;AACF;",
6
+ "names": ["PasswordInput"]
7
+ }
@@ -0,0 +1,81 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-ZF3OHCGV.js";
4
+
5
+ // ../react-payment/dist/index.js
6
+ import * as React from "react";
7
+
8
+ // ../payment/dist/index.js
9
+ function createPayment(props = {}) {
10
+ return {
11
+ props: {
12
+ ...props,
13
+ "data-slot": "payment"
14
+ }
15
+ };
16
+ }
17
+
18
+ // ../react-payment/dist/index.js
19
+ import { jsx } from "react/jsx-runtime";
20
+ var Payment = React.forwardRef(
21
+ function Payment2({ className, disabled, ...props }, ref) {
22
+ const api = createPayment({ disabled });
23
+ return /* @__PURE__ */ jsx(
24
+ "div",
25
+ {
26
+ ref,
27
+ className: cn(
28
+ "w-full max-w-md mx-auto p-6 border border-border rounded-xl bg-card text-card-foreground shadow-sm",
29
+ disabled && "opacity-50 pointer-events-none",
30
+ className
31
+ ),
32
+ ...api.props,
33
+ ...props
34
+ }
35
+ );
36
+ }
37
+ );
38
+ React.forwardRef(
39
+ function PaymentHeader2({ className, ...props }, ref) {
40
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("mb-6 flex flex-col gap-1.5", className), ...props });
41
+ }
42
+ );
43
+ React.forwardRef(
44
+ function PaymentTitle2({ className, ...props }, ref) {
45
+ return /* @__PURE__ */ jsx("h3", { ref, className: cn("text-xl font-semibold leading-none tracking-tight", className), ...props });
46
+ }
47
+ );
48
+ React.forwardRef(
49
+ function PaymentDescription2({ className, ...props }, ref) {
50
+ return /* @__PURE__ */ jsx("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props });
51
+ }
52
+ );
53
+ React.forwardRef(
54
+ function PaymentContent2({ className, ...props }, ref) {
55
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col gap-4", className), ...props });
56
+ }
57
+ );
58
+ React.forwardRef(
59
+ function PaymentFooter2({ className, ...props }, ref) {
60
+ return /* @__PURE__ */ jsx("div", { ref, className: cn("mt-6 flex flex-col gap-3", className), ...props });
61
+ }
62
+ );
63
+ React.forwardRef(
64
+ function PaymentButton2({ className, ...props }, ref) {
65
+ return /* @__PURE__ */ jsx(
66
+ "button",
67
+ {
68
+ ref,
69
+ className: cn(
70
+ "inline-flex w-full items-center justify-center whitespace-nowrap rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
71
+ className
72
+ ),
73
+ ...props
74
+ }
75
+ );
76
+ }
77
+ );
78
+ export {
79
+ Payment
80
+ };
81
+ //# sourceMappingURL=react-payment.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../payment/src/payment.ts", "../../react-payment/src/payment.tsx"],
4
+ "sourcesContent": ["export interface PaymentProps {\n disabled?: boolean;\n}\n\nexport interface PaymentAPI {\n props: PaymentProps;\n}\n\nexport function createPayment(props: PaymentProps = {}): PaymentAPI {\n return {\n props: {\n ...props,\n 'data-slot': 'payment',\n } as PaymentProps & Record<string, unknown>,\n };\n}\n", "import * as React from 'react';\nimport { createPayment, type PaymentProps as CorePaymentProps } from '@refraction-ui/payment';\nimport { cn } from '@refraction-ui/shared';\n\nexport interface PaymentProps extends React.HTMLAttributes<HTMLDivElement>, CorePaymentProps {\n disabled?: boolean;\n}\n\nexport const Payment = React.forwardRef<HTMLDivElement, PaymentProps>(\n function Payment({ className, disabled, ...props }, ref) {\n const api = createPayment({ disabled });\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-md mx-auto p-6 border border-border rounded-xl bg-card text-card-foreground shadow-sm\",\n disabled && \"opacity-50 pointer-events-none\",\n className\n )}\n {...api.props}\n {...props}\n />\n );\n }\n);\n\nexport interface PaymentHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentHeader = React.forwardRef<HTMLDivElement, PaymentHeaderProps>(\n function PaymentHeader({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"mb-6 flex flex-col gap-1.5\", className)} {...props} />\n )\n }\n);\n\nexport interface PaymentTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const PaymentTitle = React.forwardRef<HTMLHeadingElement, PaymentTitleProps>(\n function PaymentTitle({ className, ...props }, ref) {\n return (\n <h3 ref={ref} className={cn(\"text-xl font-semibold leading-none tracking-tight\", className)} {...props} />\n )\n }\n);\n\nexport interface PaymentDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const PaymentDescription = React.forwardRef<HTMLParagraphElement, PaymentDescriptionProps>(\n function PaymentDescription({ className, ...props }, ref) {\n return (\n <p ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n )\n }\n);\n\nexport interface PaymentContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentContent = React.forwardRef<HTMLDivElement, PaymentContentProps>(\n function PaymentContent({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-4\", className)} {...props} />\n )\n }\n);\n\nexport interface PaymentFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const PaymentFooter = React.forwardRef<HTMLDivElement, PaymentFooterProps>(\n function PaymentFooter({ className, ...props }, ref) {\n return (\n <div ref={ref} className={cn(\"mt-6 flex flex-col gap-3\", className)} {...props} />\n )\n }\n);\n\nexport interface PaymentButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PaymentButton = React.forwardRef<HTMLButtonElement, PaymentButtonProps>(\n function PaymentButton({ className, ...props }, ref) {\n return (\n <button\n ref={ref}\n className={cn(\n \"inline-flex w-full items-center justify-center whitespace-nowrap rounded-md bg-primary px-4 py-2.5 text-sm font-medium text-primary-foreground shadow transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n }\n);\n"],
5
+ "mappings": ";;;;;;;;AAQO,SAAS,cAAc,QAAsB,CAAA,GAAgB;AAClE,SAAO;IACL,OAAO;MACL,GAAG;MACH,aAAa;IAAA;EACf;AAEJ;;;;ACPO,IAAM,UAAgB;EAC3B,SAASA,SAAQ,EAAE,WAAW,UAAU,GAAG,MAAA,GAAS,KAAK;AACvD,UAAM,MAAM,cAAc,EAAE,SAAA,CAAU;AAEtC,WACE;MAAC;MAAA;QACC;QACA,WAAW;UACT;UACA,YAAY;UACZ;QAAA;QAED,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAImC;EACjC,SAASC,eAAc,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACnD,WACE,oBAAC,OAAA,EAAI,KAAU,WAAW,GAAG,8BAA8B,SAAS,GAAI,GAAG,MAAA,CAAO;EAEtF;AACF;AAIkC;EAChC,SAASC,cAAa,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AAClD,WACE,oBAAC,MAAA,EAAG,KAAU,WAAW,GAAG,qDAAqD,SAAS,GAAI,GAAG,MAAA,CAAO;EAE5G;AACF;AAIwC;EACtC,SAASC,oBAAmB,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACxD,WACE,oBAAC,KAAA,EAAE,KAAU,WAAW,GAAG,iCAAiC,SAAS,GAAI,GAAG,MAAA,CAAO;EAEvF;AACF;AAIoC;EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACpD,WACE,oBAAC,OAAA,EAAI,KAAU,WAAW,GAAG,uBAAuB,SAAS,GAAI,GAAG,MAAA,CAAO;EAE/E;AACF;AAImC;EACjC,SAASC,eAAc,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACnD,WACE,oBAAC,OAAA,EAAI,KAAU,WAAW,GAAG,4BAA4B,SAAS,GAAI,GAAG,MAAA,CAAO;EAEpF;AACF;AAImC;EACjC,SAASC,eAAc,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACnD,WACE;MAAC;MAAA;QACC;QACA,WAAW;UACT;UACA;QAAA;QAED,GAAG;MAAA;IAAA;EAGV;AACF;",
6
+ "names": ["Payment", "PaymentHeader", "PaymentTitle", "PaymentDescription", "PaymentContent", "PaymentFooter", "PaymentButton"]
7
+ }
@@ -0,0 +1,176 @@
1
+ import {
2
+ Keys,
3
+ cn,
4
+ createKeyboardHandler,
5
+ cva,
6
+ devWarn,
7
+ generateId
8
+ } from "./chunk-ZF3OHCGV.js";
9
+
10
+ // ../react-popover/dist/index.js
11
+ import * as React from "react";
12
+ import { createPortal } from "react-dom";
13
+
14
+ // ../popover/dist/index.js
15
+ function createPopover(props = {}) {
16
+ const {
17
+ open: controlledOpen,
18
+ defaultOpen = false,
19
+ onOpenChange,
20
+ placement = "bottom"
21
+ } = props;
22
+ const contentId = generateId("rfr-popover");
23
+ let isOpen = controlledOpen ?? defaultOpen;
24
+ const state = { open: isOpen };
25
+ function setOpen(value) {
26
+ isOpen = value;
27
+ state.open = value;
28
+ onOpenChange?.(value);
29
+ }
30
+ const triggerProps = {
31
+ "aria-expanded": isOpen,
32
+ "aria-controls": contentId,
33
+ "aria-haspopup": "dialog"
34
+ };
35
+ const contentProps = {
36
+ role: "dialog",
37
+ id: contentId
38
+ };
39
+ const keyboardHandlers = {
40
+ [Keys.Escape]: () => {
41
+ setOpen(false);
42
+ }
43
+ };
44
+ const handleKeyDown = createKeyboardHandler(keyboardHandlers);
45
+ return {
46
+ state,
47
+ triggerProps,
48
+ contentProps,
49
+ placement,
50
+ open: () => setOpen(true),
51
+ close: () => setOpen(false),
52
+ toggle: () => setOpen(!isOpen),
53
+ keyboardHandlers,
54
+ handleKeyDown
55
+ };
56
+ }
57
+ var popoverContentVariants = cva({
58
+ base: "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none",
59
+ variants: {
60
+ side: {
61
+ top: "animate-slide-down-fade",
62
+ right: "animate-slide-left-fade",
63
+ bottom: "animate-slide-up-fade",
64
+ left: "animate-slide-right-fade"
65
+ }
66
+ },
67
+ defaultVariants: {
68
+ side: "bottom"
69
+ }
70
+ });
71
+
72
+ // ../react-popover/dist/index.js
73
+ import { jsx } from "react/jsx-runtime";
74
+ var PopoverContext = React.createContext(null);
75
+ function usePopoverContext() {
76
+ const ctx = React.useContext(PopoverContext);
77
+ if (!ctx) {
78
+ devWarn(
79
+ "react-popover/context-outside-provider",
80
+ "Popover compound components (PopoverTrigger/PopoverContent/etc.) must be rendered inside a <Popover>. The missing PopoverContext makes this throw."
81
+ );
82
+ throw new Error("Popover compound components must be used within <Popover>");
83
+ }
84
+ return ctx;
85
+ }
86
+ function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }) {
87
+ const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen);
88
+ const isControlled = controlledOpen !== void 0;
89
+ const isOpen = isControlled ? controlledOpen : internalOpen;
90
+ const handleOpenChange = React.useCallback(
91
+ (value) => {
92
+ if (!isControlled) {
93
+ setInternalOpen(value);
94
+ }
95
+ onOpenChange?.(value);
96
+ },
97
+ [isControlled, onOpenChange]
98
+ );
99
+ const api = React.useMemo(
100
+ () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),
101
+ [isOpen, handleOpenChange, placement]
102
+ );
103
+ const ctx = React.useMemo(
104
+ () => ({ api, open: isOpen, setOpen: handleOpenChange }),
105
+ [api, isOpen, handleOpenChange]
106
+ );
107
+ return React.createElement(PopoverContext.Provider, { value: ctx }, children);
108
+ }
109
+ var PopoverTrigger = React.forwardRef(
110
+ function PopoverTrigger2({ onClick, children, ...props }, ref) {
111
+ const { api, setOpen, open } = usePopoverContext();
112
+ const handleClick = (e) => {
113
+ setOpen(!open);
114
+ onClick?.(e);
115
+ };
116
+ return /* @__PURE__ */ jsx(
117
+ "button",
118
+ {
119
+ ref,
120
+ type: "button",
121
+ "aria-expanded": api.triggerProps["aria-expanded"],
122
+ "aria-controls": api.triggerProps["aria-controls"],
123
+ "aria-haspopup": api.triggerProps["aria-haspopup"],
124
+ onClick: handleClick,
125
+ ...props,
126
+ children
127
+ }
128
+ );
129
+ }
130
+ );
131
+ var PopoverContent = React.forwardRef(
132
+ function PopoverContent2({ side, className, children, onKeyDown, ...props }, ref) {
133
+ const { api, open, setOpen } = usePopoverContext();
134
+ const handleKeyDown = (e) => {
135
+ if (e.key === "Escape") {
136
+ setOpen(false);
137
+ }
138
+ onKeyDown?.(e);
139
+ };
140
+ if (!open) return null;
141
+ const content = /* @__PURE__ */ jsx(
142
+ "div",
143
+ {
144
+ ref,
145
+ role: api.contentProps.role,
146
+ id: api.contentProps.id,
147
+ className: cn(popoverContentVariants({ side: side ?? api.placement }), className),
148
+ onKeyDown: handleKeyDown,
149
+ ...props,
150
+ children
151
+ }
152
+ );
153
+ if (typeof document !== "undefined") {
154
+ return createPortal(content, document.body);
155
+ }
156
+ return content;
157
+ }
158
+ );
159
+ var PopoverClose = React.forwardRef(
160
+ function PopoverClose2({ onClick, children, ...props }, ref) {
161
+ const { setOpen } = usePopoverContext();
162
+ const handleClick = (e) => {
163
+ setOpen(false);
164
+ onClick?.(e);
165
+ };
166
+ return /* @__PURE__ */ jsx("button", { ref, type: "button", onClick: handleClick, ...props, children });
167
+ }
168
+ );
169
+ export {
170
+ Popover,
171
+ PopoverClose,
172
+ PopoverContent,
173
+ PopoverTrigger,
174
+ popoverContentVariants
175
+ };
176
+ //# sourceMappingURL=react-popover.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../popover/src/popover.ts", "../../popover/src/popover.styles.ts", "../../react-popover/src/popover.tsx"],
4
+ "sourcesContent": ["import type { AccessibilityProps, Side, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n}\n\nexport interface PopoverAPI {\n /** Current open state */\n state: { open: boolean }\n /** Props to spread on the trigger element */\n triggerProps: Partial<AccessibilityProps> & {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'dialog'\n }\n /** Props to spread on the content element */\n contentProps: {\n role: 'dialog'\n id: string\n }\n /** Resolved placement */\n placement: Side\n /** Open the popover */\n open: () => void\n /** Close the popover */\n close: () => void\n /** Toggle the popover */\n toggle: () => void\n /** Keyboard handler map (Escape to close) */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createPopover(props: PopoverProps = {}): PopoverAPI {\n const {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n } = props\n\n const contentId = generateId('rfr-popover')\n\n let isOpen = controlledOpen ?? defaultOpen\n\n const state = { open: isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.open = value\n onOpenChange?.(value)\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog' as const,\n }\n\n const contentProps = {\n role: 'dialog' as const,\n id: contentId,\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n placement,\n open: () => setOpen(true),\n close: () => setOpen(false),\n toggle: () => setOpen(!isOpen),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\nexport const popoverContentVariants = cva({\n base: 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n variants: {\n side: {\n top: 'animate-slide-down-fade',\n right: 'animate-slide-left-fade',\n bottom: 'animate-slide-up-fade',\n left: 'animate-slide-right-fade',\n },\n },\n defaultVariants: {\n side: 'bottom',\n },\n})\n", "import * as React from 'react'\nimport { createPortal } from 'react-dom'\nimport {\n createPopover,\n popoverContentVariants,\n type PopoverAPI,\n} from '@refraction-ui/popover'\nimport type { Side } from '@refraction-ui/shared'\nimport { cn, devWarn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface PopoverContextValue {\n api: PopoverAPI\n open: boolean\n setOpen: (value: boolean) => void\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | null>(null)\n\nfunction usePopoverContext(): PopoverContextValue {\n const ctx = React.useContext(PopoverContext)\n if (!ctx) {\n devWarn(\n 'react-popover/context-outside-provider',\n 'Popover compound components (PopoverTrigger/PopoverContent/etc.) must be rendered inside a <Popover>. The missing PopoverContext makes this throw.',\n )\n throw new Error('Popover compound components must be used within <Popover>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* Popover (root provider) */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n placement?: Side\n children: React.ReactNode\n}\n\nexport function Popover({ open: controlledOpen, defaultOpen = false, onOpenChange, placement, children }: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(controlledOpen ?? defaultOpen)\n const isControlled = controlledOpen !== undefined\n const isOpen = isControlled ? controlledOpen : internalOpen\n\n const handleOpenChange = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value)\n }\n onOpenChange?.(value)\n },\n [isControlled, onOpenChange],\n )\n\n const api = React.useMemo(\n () => createPopover({ open: isOpen, onOpenChange: handleOpenChange, placement }),\n [isOpen, handleOpenChange, placement],\n )\n\n const ctx = React.useMemo<PopoverContextValue>(\n () => ({ api, open: isOpen, setOpen: handleOpenChange }),\n [api, isOpen, handleOpenChange],\n )\n\n return React.createElement(PopoverContext.Provider, { value: ctx }, children)\n}\n\n/* ------------------------------------------------------------------ */\n/* PopoverTrigger */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ onClick, children, ...props }, ref) {\n const { api, setOpen, open } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(!open)\n onClick?.(e)\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-expanded={api.triggerProps['aria-expanded']}\n aria-controls={api.triggerProps['aria-controls']}\n aria-haspopup={api.triggerProps['aria-haspopup']}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n },\n)\n\n/* ------------------------------------------------------------------ */\n/* PopoverContent */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverContentProps extends React.HTMLAttributes<HTMLDivElement> {\n side?: Side\n}\n\nexport const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent({ side, className, children, onKeyDown, ...props }, ref) {\n const { api, open, setOpen } = usePopoverContext()\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape') {\n setOpen(false)\n }\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const content = (\n <div\n ref={ref}\n role={api.contentProps.role}\n id={api.contentProps.id}\n className={cn(popoverContentVariants({ side: side ?? api.placement }), className)}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n )\n\n if (typeof document !== 'undefined') {\n return createPortal(content, document.body)\n }\n\n return content\n },\n)\n\n/* ------------------------------------------------------------------ */\n/* PopoverClose */\n/* ------------------------------------------------------------------ */\n\nexport interface PopoverCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const PopoverClose = React.forwardRef<HTMLButtonElement, PopoverCloseProps>(\n function PopoverClose({ onClick, children, ...props }, ref) {\n const { setOpen } = usePopoverContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(false)\n onClick?.(e)\n }\n\n return (\n <button ref={ref} type=\"button\" onClick={handleClick} {...props}>\n {children}\n </button>\n )\n },\n)\n"],
5
+ "mappings": "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",
6
+ "names": ["PopoverTrigger", "PopoverContent", "PopoverClose"]
7
+ }