@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,389 @@
1
+ import {
2
+ Keys,
3
+ cn,
4
+ cva,
5
+ devWarn,
6
+ generateId
7
+ } from "./chunk-ZF3OHCGV.js";
8
+
9
+ // ../react-select/dist/index.js
10
+ import * as React from "react";
11
+
12
+ // ../select/dist/index.js
13
+ function createSelect(props = {}) {
14
+ const {
15
+ value,
16
+ options = [],
17
+ placeholder = "Select an option",
18
+ disabled = false,
19
+ open = false
20
+ } = props;
21
+ const isInteractive = !disabled;
22
+ const selectedOption = options.find((o) => o.value === value);
23
+ const triggerId = generateId("select-trigger");
24
+ const contentId = generateId("select-content");
25
+ const triggerAriaProps = {
26
+ role: "combobox",
27
+ "aria-expanded": open,
28
+ "aria-controls": contentId,
29
+ "aria-labelledby": triggerId
30
+ };
31
+ if (disabled) {
32
+ triggerAriaProps["aria-disabled"] = true;
33
+ }
34
+ const triggerKeyboardHandlers = {};
35
+ if (!isInteractive) {
36
+ triggerKeyboardHandlers[Keys.Enter] = (e) => e.preventDefault();
37
+ triggerKeyboardHandlers[Keys.Space] = (e) => e.preventDefault();
38
+ triggerKeyboardHandlers[Keys.ArrowDown] = (e) => e.preventDefault();
39
+ triggerKeyboardHandlers[Keys.ArrowUp] = (e) => e.preventDefault();
40
+ }
41
+ const triggerDataAttributes = {
42
+ "data-state": open ? "open" : "closed"
43
+ };
44
+ if (disabled) {
45
+ triggerDataAttributes["data-disabled"] = "";
46
+ }
47
+ const contentAriaProps = {
48
+ role: "listbox",
49
+ "aria-labelledby": triggerId
50
+ };
51
+ const contentDataAttributes = {
52
+ "data-state": open ? "open" : "closed"
53
+ };
54
+ function getOptionProps(option) {
55
+ const isSelected = option.value === value;
56
+ const optionAriaProps = {
57
+ role: "option",
58
+ "aria-selected": isSelected
59
+ };
60
+ if (option.disabled) {
61
+ optionAriaProps["aria-disabled"] = true;
62
+ }
63
+ const optionDataAttributes = {};
64
+ if (isSelected) {
65
+ optionDataAttributes["data-state"] = "checked";
66
+ }
67
+ if (option.disabled) {
68
+ optionDataAttributes["data-disabled"] = "";
69
+ }
70
+ return {
71
+ ariaProps: optionAriaProps,
72
+ dataAttributes: optionDataAttributes,
73
+ isSelected
74
+ };
75
+ }
76
+ return {
77
+ triggerProps: {
78
+ ariaProps: triggerAriaProps,
79
+ keyboardHandlers: triggerKeyboardHandlers,
80
+ dataAttributes: triggerDataAttributes
81
+ },
82
+ contentProps: {
83
+ ariaProps: contentAriaProps,
84
+ dataAttributes: contentDataAttributes
85
+ },
86
+ getOptionProps,
87
+ isInteractive,
88
+ state: {
89
+ open,
90
+ selectedValue: selectedOption?.value,
91
+ selectedLabel: selectedOption?.label,
92
+ disabled,
93
+ placeholder
94
+ },
95
+ ids: {
96
+ trigger: triggerId,
97
+ content: contentId
98
+ }
99
+ };
100
+ }
101
+ var selectTokens = {
102
+ name: "select",
103
+ tokens: {
104
+ bg: { variable: "--rfr-select-bg", fallback: "hsl(var(--background))" },
105
+ fg: { variable: "--rfr-select-fg", fallback: "hsl(var(--foreground))" },
106
+ border: { variable: "--rfr-select-border", fallback: "hsl(var(--border))" },
107
+ ring: { variable: "--rfr-select-ring", fallback: "hsl(var(--ring))" }
108
+ }
109
+ };
110
+ var selectTriggerVariants = cva({
111
+ base: "flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
112
+ variants: {
113
+ size: {
114
+ sm: "h-8 text-xs",
115
+ default: "h-9 text-sm",
116
+ lg: "h-10 text-base"
117
+ }
118
+ },
119
+ defaultVariants: {
120
+ size: "default"
121
+ }
122
+ });
123
+ var selectContentVariants = cva({
124
+ base: "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95",
125
+ variants: {
126
+ position: {
127
+ popper: "translate-y-1",
128
+ "item-aligned": ""
129
+ }
130
+ },
131
+ defaultVariants: {
132
+ position: "popper"
133
+ }
134
+ });
135
+ var selectItemVariants = cva({
136
+ base: "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
137
+ variants: {
138
+ selected: {
139
+ true: "bg-accent/50",
140
+ false: ""
141
+ }
142
+ },
143
+ defaultVariants: {
144
+ selected: "false"
145
+ }
146
+ });
147
+
148
+ // ../react-select/dist/index.js
149
+ import { jsxs, jsx } from "react/jsx-runtime";
150
+ var SelectContext = React.createContext({
151
+ __isDefault: true,
152
+ value: void 0,
153
+ onValueChange: () => {
154
+ },
155
+ open: false,
156
+ setOpen: () => {
157
+ },
158
+ options: [],
159
+ disabled: false,
160
+ placeholder: "Select an option",
161
+ triggerId: "",
162
+ contentId: ""
163
+ });
164
+ function useSelectContext(part) {
165
+ const ctx = React.useContext(SelectContext);
166
+ if (ctx.__isDefault) {
167
+ devWarn(
168
+ "react-select/no-select-provider",
169
+ `<${part}> was rendered without a <Select> ancestor. It is silently reading inert context defaults (clicks/keyboard do nothing, it never opens). Wrap it in <Select>\u2026</Select>.`
170
+ );
171
+ }
172
+ return ctx;
173
+ }
174
+ function Select({
175
+ value,
176
+ onValueChange,
177
+ disabled = false,
178
+ children,
179
+ placeholder = "Select an option"
180
+ }) {
181
+ const [open, setOpen] = React.useState(false);
182
+ const api = createSelect({ value, disabled, open, placeholder });
183
+ return /* @__PURE__ */ jsx(
184
+ SelectContext.Provider,
185
+ {
186
+ value: {
187
+ value,
188
+ onValueChange: onValueChange ?? (() => {
189
+ }),
190
+ open,
191
+ setOpen: (v) => {
192
+ if (!disabled) setOpen(v);
193
+ },
194
+ options: [],
195
+ disabled,
196
+ placeholder,
197
+ triggerId: api.ids.trigger,
198
+ contentId: api.ids.content
199
+ },
200
+ children
201
+ }
202
+ );
203
+ }
204
+ var SelectTrigger = React.forwardRef(
205
+ function SelectTrigger2({ className, children, size = "default", ...props }, ref) {
206
+ const { open, setOpen, disabled, triggerId, contentId } = useSelectContext("SelectTrigger");
207
+ const api = createSelect({ disabled, open });
208
+ const handleClick = () => {
209
+ if (!disabled) {
210
+ setOpen(!open);
211
+ }
212
+ };
213
+ const handleKeyDown = (e) => {
214
+ if (e.key === "Enter" || e.key === " ") {
215
+ e.preventDefault();
216
+ if (!disabled) setOpen(!open);
217
+ }
218
+ if (e.key === "Escape") {
219
+ setOpen(false);
220
+ }
221
+ if ((e.key === "ArrowDown" || e.key === "ArrowUp") && !open) {
222
+ e.preventDefault();
223
+ if (!disabled) setOpen(true);
224
+ }
225
+ };
226
+ return /* @__PURE__ */ jsxs(
227
+ "button",
228
+ {
229
+ ref,
230
+ type: "button",
231
+ id: triggerId,
232
+ className: cn(selectTriggerVariants({ size }), className),
233
+ onClick: handleClick,
234
+ onKeyDown: handleKeyDown,
235
+ disabled,
236
+ ...api.triggerProps.ariaProps,
237
+ ...api.triggerProps.dataAttributes,
238
+ "aria-controls": contentId,
239
+ ...props,
240
+ children: [
241
+ children,
242
+ /* @__PURE__ */ jsx(
243
+ "svg",
244
+ {
245
+ className: "h-4 w-4 opacity-50 shrink-0",
246
+ xmlns: "http://www.w3.org/2000/svg",
247
+ viewBox: "0 0 24 24",
248
+ fill: "none",
249
+ stroke: "currentColor",
250
+ strokeWidth: "2",
251
+ strokeLinecap: "round",
252
+ strokeLinejoin: "round",
253
+ "aria-hidden": "true",
254
+ children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
255
+ }
256
+ )
257
+ ]
258
+ }
259
+ );
260
+ }
261
+ );
262
+ var SelectContent = React.forwardRef(
263
+ function SelectContent2({ className, children, ...props }, forwardedRef) {
264
+ const { open, contentId, triggerId, setOpen } = useSelectContext("SelectContent");
265
+ const containerRef = React.useRef(null);
266
+ const ref = React.useCallback(
267
+ (node) => {
268
+ containerRef.current = node;
269
+ if (typeof forwardedRef === "function") forwardedRef(node);
270
+ else if (forwardedRef) forwardedRef.current = node;
271
+ },
272
+ [forwardedRef]
273
+ );
274
+ React.useEffect(() => {
275
+ if (open && containerRef.current) {
276
+ const firstOption = containerRef.current.querySelector('[role="option"]:not([aria-disabled="true"])');
277
+ if (firstOption) {
278
+ setTimeout(() => firstOption.focus(), 0);
279
+ }
280
+ }
281
+ }, [open]);
282
+ const handleKeyDown = (e) => {
283
+ if (!containerRef.current) return;
284
+ const options = Array.from(
285
+ containerRef.current.querySelectorAll('[role="option"]:not([aria-disabled="true"])')
286
+ );
287
+ if (!options.length) return;
288
+ const currentIndex = options.indexOf(document.activeElement);
289
+ if (e.key === "ArrowDown") {
290
+ e.preventDefault();
291
+ const nextIndex = currentIndex < options.length - 1 ? currentIndex + 1 : 0;
292
+ options[nextIndex]?.focus();
293
+ } else if (e.key === "ArrowUp") {
294
+ e.preventDefault();
295
+ const prevIndex = currentIndex > 0 ? currentIndex - 1 : options.length - 1;
296
+ options[prevIndex]?.focus();
297
+ } else if (e.key === "Escape") {
298
+ e.preventDefault();
299
+ setOpen(false);
300
+ const trigger = document.getElementById(triggerId);
301
+ if (trigger) trigger.focus();
302
+ }
303
+ };
304
+ if (!open) return null;
305
+ return /* @__PURE__ */ jsx(
306
+ "div",
307
+ {
308
+ ref,
309
+ id: contentId,
310
+ className: cn(selectContentVariants(), className),
311
+ role: "listbox",
312
+ "aria-labelledby": triggerId,
313
+ "data-state": open ? "open" : "closed",
314
+ onKeyDown: handleKeyDown,
315
+ tabIndex: -1,
316
+ ...props,
317
+ children
318
+ }
319
+ );
320
+ }
321
+ );
322
+ var SelectItem = React.forwardRef(
323
+ function SelectItem2({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) {
324
+ const { value, onValueChange, setOpen, triggerId } = useSelectContext("SelectItem");
325
+ const isSelected = value === itemValue;
326
+ const handleClick = () => {
327
+ if (!itemDisabled) {
328
+ onValueChange(itemValue);
329
+ setOpen(false);
330
+ const trigger = document.getElementById(triggerId);
331
+ if (trigger) setTimeout(() => trigger.focus(), 0);
332
+ }
333
+ };
334
+ const handleKeyDown = (e) => {
335
+ if ((e.key === "Enter" || e.key === " ") && !itemDisabled) {
336
+ e.preventDefault();
337
+ onValueChange(itemValue);
338
+ setOpen(false);
339
+ const trigger = document.getElementById(triggerId);
340
+ if (trigger) setTimeout(() => trigger.focus(), 0);
341
+ }
342
+ };
343
+ return /* @__PURE__ */ jsxs(
344
+ "div",
345
+ {
346
+ ref,
347
+ className: cn(selectItemVariants({ selected: isSelected ? "true" : "false" }), className),
348
+ role: "option",
349
+ "aria-selected": isSelected,
350
+ "aria-disabled": itemDisabled || void 0,
351
+ "data-state": isSelected ? "checked" : void 0,
352
+ "data-disabled": itemDisabled ? "" : void 0,
353
+ tabIndex: itemDisabled ? void 0 : 0,
354
+ onClick: handleClick,
355
+ onKeyDown: handleKeyDown,
356
+ ...props,
357
+ children: [
358
+ isSelected && /* @__PURE__ */ jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(
359
+ "svg",
360
+ {
361
+ className: "h-4 w-4",
362
+ xmlns: "http://www.w3.org/2000/svg",
363
+ viewBox: "0 0 24 24",
364
+ fill: "none",
365
+ stroke: "currentColor",
366
+ strokeWidth: "2",
367
+ strokeLinecap: "round",
368
+ strokeLinejoin: "round",
369
+ "aria-hidden": "true",
370
+ children: /* @__PURE__ */ jsx("path", { d: "M20 6L9 17l-5-5" })
371
+ }
372
+ ) }),
373
+ children
374
+ ]
375
+ }
376
+ );
377
+ }
378
+ );
379
+ export {
380
+ Select,
381
+ SelectContent,
382
+ SelectItem,
383
+ SelectTrigger,
384
+ selectContentVariants,
385
+ selectItemVariants,
386
+ selectTokens,
387
+ selectTriggerVariants
388
+ };
389
+ //# sourceMappingURL=react-select.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../select/src/select.ts", "../../select/src/select.styles.ts", "../../react-select/src/select.tsx"],
4
+ "sourcesContent": ["import type { AccessibilityProps, KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { Keys, generateId } from '@refraction-ui/shared'\n\nexport interface SelectOption {\n value: string\n label: string\n disabled?: boolean\n}\n\nexport interface SelectProps {\n value?: string\n options?: SelectOption[]\n placeholder?: string\n disabled?: boolean\n open?: boolean\n name?: string\n}\n\nexport interface SelectAPI {\n /** Trigger element ARIA + keyboard props */\n triggerProps: {\n ariaProps: Partial<AccessibilityProps>\n keyboardHandlers: KeyboardHandlerMap\n dataAttributes: Record<string, string>\n }\n /** Content (dropdown) props */\n contentProps: {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n }\n /** Get props for a single option */\n getOptionProps: (option: SelectOption) => {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n isSelected: boolean\n }\n /** Whether interaction should be blocked */\n isInteractive: boolean\n /** Current state */\n state: {\n open: boolean\n selectedValue: string | undefined\n selectedLabel: string | undefined\n disabled: boolean\n placeholder: string\n }\n /** Generated IDs for trigger/content association */\n ids: {\n trigger: string\n content: string\n }\n}\n\nexport function createSelect(props: SelectProps = {}): SelectAPI {\n const {\n value,\n options = [],\n placeholder = 'Select an option',\n disabled = false,\n open = false,\n } = props\n\n const isInteractive = !disabled\n const selectedOption = options.find((o) => o.value === value)\n\n const triggerId = generateId('select-trigger')\n const contentId = generateId('select-content')\n\n const triggerAriaProps: Partial<AccessibilityProps> = {\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-labelledby': triggerId,\n }\n if (disabled) {\n triggerAriaProps['aria-disabled'] = true\n }\n\n const triggerKeyboardHandlers: KeyboardHandlerMap = {}\n if (!isInteractive) {\n triggerKeyboardHandlers[Keys.Enter] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.Space] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowDown] = (e) => e.preventDefault()\n triggerKeyboardHandlers[Keys.ArrowUp] = (e) => e.preventDefault()\n }\n\n const triggerDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n if (disabled) {\n triggerDataAttributes['data-disabled'] = ''\n }\n\n const contentAriaProps: Partial<AccessibilityProps> = {\n role: 'listbox',\n 'aria-labelledby': triggerId,\n }\n\n const contentDataAttributes: Record<string, string> = {\n 'data-state': open ? 'open' : 'closed',\n }\n\n function getOptionProps(option: SelectOption) {\n const isSelected = option.value === value\n const optionAriaProps: Partial<AccessibilityProps> = {\n role: 'option',\n 'aria-selected': isSelected,\n }\n if (option.disabled) {\n optionAriaProps['aria-disabled'] = true\n }\n\n const optionDataAttributes: Record<string, string> = {}\n if (isSelected) {\n optionDataAttributes['data-state'] = 'checked'\n }\n if (option.disabled) {\n optionDataAttributes['data-disabled'] = ''\n }\n\n return {\n ariaProps: optionAriaProps,\n dataAttributes: optionDataAttributes,\n isSelected,\n }\n }\n\n return {\n triggerProps: {\n ariaProps: triggerAriaProps,\n keyboardHandlers: triggerKeyboardHandlers,\n dataAttributes: triggerDataAttributes,\n },\n contentProps: {\n ariaProps: contentAriaProps,\n dataAttributes: contentDataAttributes,\n },\n getOptionProps,\n isInteractive,\n state: {\n open,\n selectedValue: selectedOption?.value,\n selectedLabel: selectedOption?.label,\n disabled,\n placeholder,\n },\n ids: {\n trigger: triggerId,\n content: contentId,\n },\n }\n}\n", "import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const selectTokens: TokenContract = {\n name: 'select',\n tokens: {\n bg: { variable: '--rfr-select-bg', fallback: 'hsl(var(--background))' },\n fg: { variable: '--rfr-select-fg', fallback: 'hsl(var(--foreground))' },\n border: { variable: '--rfr-select-border', fallback: 'hsl(var(--border))' },\n ring: { variable: '--rfr-select-ring', fallback: 'hsl(var(--ring))' },\n },\n}\n\nexport const selectTriggerVariants = cva({\n base: 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n variants: {\n size: {\n sm: 'h-8 text-xs',\n default: 'h-9 text-sm',\n lg: 'h-10 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const selectContentVariants = cva({\n base: 'relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95',\n variants: {\n position: {\n popper: 'translate-y-1',\n 'item-aligned': '',\n },\n },\n defaultVariants: {\n position: 'popper',\n },\n})\n\nexport const selectItemVariants = cva({\n base: 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n variants: {\n selected: {\n true: 'bg-accent/50',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n", "import * as React from 'react'\nimport {\n createSelect,\n selectTriggerVariants,\n selectContentVariants,\n selectItemVariants,\n type SelectOption,\n} from '@refraction-ui/select'\nimport { cn, devWarn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface SelectContextValue {\n value: string | undefined\n onValueChange: (value: string) => void\n open: boolean\n setOpen: (open: boolean) => void\n options: SelectOption[]\n disabled: boolean\n placeholder: string\n triggerId: string\n contentId: string\n /**\n * Internal marker: `true` only on the context *default* (i.e. no `<Select>`\n * provider above this part). `<Select>` always supplies a value without\n * this flag. Used purely to detect the silent-default footgun — never read\n * for rendering.\n *\n * @internal\n */\n __isDefault?: boolean\n}\n\nconst SelectContext = React.createContext<SelectContextValue>({\n __isDefault: true,\n value: undefined,\n onValueChange: () => {},\n open: false,\n setOpen: () => {},\n options: [],\n disabled: false,\n placeholder: 'Select an option',\n triggerId: '',\n contentId: '',\n})\n\n/**\n * Read the select context for a compound part (`SelectTrigger`,\n * `SelectContent`, `SelectItem`).\n *\n * Footgun seam (epic #254 / #256, policy: `silent-default-context`): when a\n * part is rendered without a `<Select>` ancestor it silently reads inert\n * context defaults (no-op handlers, empty ids, never-open) and renders a dead\n * control with no error. There is no throw today and adding one would be a\n * breaking change, so per `docs/instrumentation/policy.md` a dev-only\n * `devWarn` is the *only* signal. Stripped in production, warn-once.\n *\n * Behaviour is unchanged: the default context value is still returned.\n */\nfunction useSelectContext(part: string): SelectContextValue {\n const ctx = React.useContext(SelectContext)\n if (ctx.__isDefault) {\n devWarn(\n 'react-select/no-select-provider',\n `<${part}> was rendered without a <Select> ancestor. It is silently ` +\n 'reading inert context defaults (clicks/keyboard do nothing, it never ' +\n 'opens). Wrap it in <Select>…</Select>.',\n )\n }\n return ctx\n}\n\n/* ─── Select (root) ────────────────────────────────────────────── */\nexport interface SelectProps {\n value?: string\n onValueChange?: (value: string) => void\n disabled?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\n/**\n * Select -- dropdown select with accessible keyboard and ARIA support.\n * Compound component: Select > SelectTrigger + SelectContent > SelectItem.\n */\nexport function Select({\n value,\n onValueChange,\n disabled = false,\n children,\n placeholder = 'Select an option',\n}: SelectProps) {\n const [open, setOpen] = React.useState(false)\n\n const api = createSelect({ value, disabled, open, placeholder })\n\n return (\n <SelectContext.Provider\n value={{\n value,\n onValueChange: onValueChange ?? (() => {}),\n open,\n setOpen: (v) => {\n if (!disabled) setOpen(v)\n },\n options: [],\n disabled,\n placeholder,\n triggerId: api.ids.trigger,\n contentId: api.ids.content,\n }}\n >\n {children}\n </SelectContext.Provider>\n )\n}\n\n/* ─── SelectTrigger ────────────────────────────────────────────── */\nexport interface SelectTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n size?: 'sm' | 'default' | 'lg'\n}\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger({ className, children, size = 'default', ...props }, ref) {\n const { open, setOpen, disabled, triggerId, contentId } = useSelectContext('SelectTrigger')\n\n const api = createSelect({ disabled, open })\n\n const handleClick = () => {\n if (!disabled) {\n setOpen(!open)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n if (!disabled) setOpen(!open)\n }\n if (e.key === 'Escape') {\n setOpen(false)\n }\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && !open) {\n e.preventDefault()\n if (!disabled) setOpen(true)\n }\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n id={triggerId}\n className={cn(selectTriggerVariants({ size }), className)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n {...api.triggerProps.ariaProps}\n {...api.triggerProps.dataAttributes}\n aria-controls={contentId}\n {...props}\n >\n {children}\n <svg\n className=\"h-4 w-4 opacity-50 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n )\n },\n)\n\n/* ─── SelectContent ────────────────────────────────────────────── */\nexport interface SelectContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n function SelectContent({ className, children, ...props }, forwardedRef) {\n const { open, contentId, triggerId, setOpen } = useSelectContext('SelectContent')\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n // Merge refs\n const ref = React.useCallback(\n (node: HTMLDivElement) => {\n containerRef.current = node\n if (typeof forwardedRef === 'function') forwardedRef(node)\n else if (forwardedRef) forwardedRef.current = node\n },\n [forwardedRef]\n )\n\n React.useEffect(() => {\n if (open && containerRef.current) {\n const firstOption = containerRef.current.querySelector('[role=\"option\"]:not([aria-disabled=\"true\"])') as HTMLElement\n if (firstOption) {\n // Delay focus slightly to ensure DOM is ready\n setTimeout(() => firstOption.focus(), 0)\n }\n }\n }, [open])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!containerRef.current) return\n\n const options = Array.from(\n containerRef.current.querySelectorAll('[role=\"option\"]:not([aria-disabled=\"true\"])')\n ) as HTMLElement[]\n\n if (!options.length) return\n\n const currentIndex = options.indexOf(document.activeElement as HTMLElement)\n\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n const nextIndex = currentIndex < options.length - 1 ? currentIndex + 1 : 0\n options[nextIndex]?.focus()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : options.length - 1\n options[prevIndex]?.focus()\n } else if (e.key === 'Escape') {\n e.preventDefault()\n setOpen(false)\n // Focus back to trigger\n const trigger = document.getElementById(triggerId)\n if (trigger) trigger.focus()\n }\n }\n\n if (!open) return null\n\n return (\n <div\n ref={ref}\n id={contentId}\n className={cn(selectContentVariants(), className)}\n role=\"listbox\"\n aria-labelledby={triggerId}\n data-state={open ? 'open' : 'closed'}\n onKeyDown={handleKeyDown}\n tabIndex={-1}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\n/* ─── SelectItem ───────────────────────────────────────────────── */\nexport interface SelectItemProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n disabled?: boolean\n}\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n function SelectItem({ className, children, value: itemValue, disabled: itemDisabled = false, ...props }, ref) {\n const { value, onValueChange, setOpen, triggerId } = useSelectContext('SelectItem')\n const isSelected = value === itemValue\n\n const handleClick = () => {\n if (!itemDisabled) {\n onValueChange(itemValue)\n setOpen(false)\n const trigger = document.getElementById(triggerId)\n if (trigger) setTimeout(() => trigger.focus(), 0)\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if ((e.key === 'Enter' || e.key === ' ') && !itemDisabled) {\n e.preventDefault()\n onValueChange(itemValue)\n setOpen(false)\n const trigger = document.getElementById(triggerId)\n if (trigger) setTimeout(() => trigger.focus(), 0)\n }\n }\n\n return (\n <div\n ref={ref}\n className={cn(selectItemVariants({ selected: isSelected ? 'true' : 'false' }), className)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={itemDisabled || undefined}\n data-state={isSelected ? 'checked' : undefined}\n data-disabled={itemDisabled ? '' : undefined}\n tabIndex={itemDisabled ? undefined : 0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {isSelected && (\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <svg\n className=\"h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n </span>\n )}\n {children}\n </div>\n )\n },\n)\n"],
5
+ "mappings": "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",
6
+ "names": ["SelectTrigger", "SelectContent", "SelectItem"]
7
+ }
@@ -0,0 +1,86 @@
1
+ import {
2
+ cn,
3
+ cva
4
+ } from "./chunk-ZF3OHCGV.js";
5
+
6
+ // ../react-separator/dist/index.js
7
+ import * as React from "react";
8
+
9
+ // ../separator/dist/index.js
10
+ function createSeparator(props = {}) {
11
+ const { orientation = "horizontal", decorative = true } = props;
12
+ const ariaProps = decorative ? { role: "none" } : { role: "separator", "aria-orientation": orientation };
13
+ const dataAttributes = {
14
+ "data-orientation": orientation
15
+ };
16
+ return {
17
+ ariaProps,
18
+ dataAttributes
19
+ };
20
+ }
21
+ var separatorVariants = cva({
22
+ base: "",
23
+ variants: {
24
+ orientation: {
25
+ horizontal: "h-px w-full bg-border",
26
+ vertical: "w-px h-full bg-border"
27
+ },
28
+ labeled: {
29
+ true: "flex items-center",
30
+ false: ""
31
+ }
32
+ },
33
+ defaultVariants: {
34
+ orientation: "horizontal",
35
+ labeled: "false"
36
+ }
37
+ });
38
+ var separatorLineClass = "h-px flex-1 bg-border";
39
+ var separatorLabelClass = "px-3 text-xs uppercase tracking-wide text-muted-foreground";
40
+
41
+ // ../react-separator/dist/index.js
42
+ import { jsxs, jsx } from "react/jsx-runtime";
43
+ var Separator = React.forwardRef(
44
+ function Separator2({
45
+ orientation = "horizontal",
46
+ label,
47
+ decorative = true,
48
+ className,
49
+ ...props
50
+ }, ref) {
51
+ if (orientation === "horizontal" && label != null) {
52
+ return /* @__PURE__ */ jsxs(
53
+ "div",
54
+ {
55
+ ref,
56
+ role: "none",
57
+ className: cn(separatorVariants({ labeled: "true" }), className),
58
+ ...props,
59
+ children: [
60
+ /* @__PURE__ */ jsx("span", { className: separatorLineClass }),
61
+ /* @__PURE__ */ jsx("span", { className: separatorLabelClass, children: label }),
62
+ /* @__PURE__ */ jsx("span", { className: separatorLineClass })
63
+ ]
64
+ }
65
+ );
66
+ }
67
+ const { ariaProps, dataAttributes } = createSeparator({
68
+ orientation,
69
+ decorative
70
+ });
71
+ return /* @__PURE__ */ jsx(
72
+ "div",
73
+ {
74
+ ref,
75
+ className: cn(separatorVariants({ orientation }), className),
76
+ ...ariaProps,
77
+ ...dataAttributes,
78
+ ...props
79
+ }
80
+ );
81
+ }
82
+ );
83
+ export {
84
+ Separator
85
+ };
86
+ //# sourceMappingURL=react-separator.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../separator/src/separator.ts", "../../separator/src/separator.styles.ts", "../../react-separator/src/separator.tsx"],
4
+ "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type SeparatorOrientation = 'horizontal' | 'vertical'\n\nexport interface SeparatorProps {\n /** Orientation of the separator. Defaults to `'horizontal'`. */\n orientation?: SeparatorOrientation\n /**\n * When `true` (the default) the separator is purely visual and is hidden\n * from assistive tech (`role=\"none\"`). When `false` it is exposed as a\n * semantic `role=\"separator\"` with the appropriate `aria-orientation`.\n */\n decorative?: boolean\n}\n\n/**\n * ARIA attributes for a separator. Extends the shared base with\n * `aria-orientation`, which is specific to the `separator` role.\n */\nexport interface SeparatorAriaProps extends Partial<AccessibilityProps> {\n 'aria-orientation'?: SeparatorOrientation\n}\n\nexport interface SeparatorAPI {\n /** ARIA attributes to spread on the element. */\n ariaProps: SeparatorAriaProps\n /** Data attributes for CSS styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/**\n * Headless separator core — computes ARIA semantics and data attributes for\n * a separator rule. JSX-free so it can be shared across framework adapters.\n *\n * Per ARIA, a decorative separator must not be announced (`role=\"none\"`),\n * while a semantic one exposes `role=\"separator\"` and `aria-orientation`.\n */\nexport function createSeparator(props: SeparatorProps = {}): SeparatorAPI {\n const { orientation = 'horizontal', decorative = true } = props\n\n const ariaProps: SeparatorAriaProps = decorative\n ? { role: 'none' }\n : { role: 'separator', 'aria-orientation': orientation }\n\n const dataAttributes: Record<string, string> = {\n 'data-orientation': orientation,\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/**\n * Visual variants for the separator rule.\n *\n * - `orientation: horizontal` → a full-width 1px line.\n * - `orientation: vertical` → a full-height 1px line.\n * - `labeled` → flex layout used by the labeled-divider variant, which\n * arranges a centered label between two flanking lines.\n */\nexport const separatorVariants = cva({\n base: '',\n variants: {\n orientation: {\n horizontal: 'h-px w-full bg-border',\n vertical: 'w-px h-full bg-border',\n },\n labeled: {\n true: 'flex items-center',\n false: '',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n labeled: 'false',\n },\n})\n\n/** Class for each flanking line in the labeled-divider variant. */\nexport const separatorLineClass = 'h-px flex-1 bg-border'\n\n/** Class for the centered label in the labeled-divider variant. */\nexport const separatorLabelClass =\n 'px-3 text-xs uppercase tracking-wide text-muted-foreground'\n", "import * as React from 'react'\nimport {\n createSeparator,\n separatorVariants,\n separatorLineClass,\n separatorLabelClass,\n type SeparatorOrientation,\n} from '@refraction-ui/separator'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Orientation of the separator. Defaults to `'horizontal'`. */\n orientation?: SeparatorOrientation\n /**\n * Optional centered label. Only meaningful for horizontal separators —\n * renders a line on each side of the label (a \"labeled divider\").\n */\n label?: React.ReactNode\n /**\n * When `true` (the default) the separator is purely visual and is hidden\n * from assistive tech (`role=\"none\"`). When `false` it is exposed as a\n * semantic `role=\"separator\"` with the appropriate `aria-orientation`.\n */\n decorative?: boolean\n}\n\n/**\n * Separator / LabeledDivider — a thin rule that visually divides content.\n *\n * Supports horizontal and vertical orientations and an optional centered\n * label (the \"labeled divider\" variant, horizontal only). State and ARIA\n * semantics come from the headless @refraction-ui/separator core; styling\n * via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n function Separator(\n {\n orientation = 'horizontal',\n label,\n decorative = true,\n className,\n ...props\n },\n ref,\n ) {\n // Labeled divider — decorative chrome wrapping a centered label.\n if (orientation === 'horizontal' && label != null) {\n return (\n <div\n ref={ref}\n role=\"none\"\n className={cn(separatorVariants({ labeled: 'true' }), className)}\n {...props}\n >\n <span className={separatorLineClass} />\n <span className={separatorLabelClass}>{label}</span>\n <span className={separatorLineClass} />\n </div>\n )\n }\n\n const { ariaProps, dataAttributes } = createSeparator({\n orientation,\n decorative,\n })\n\n return (\n <div\n ref={ref}\n className={cn(separatorVariants({ orientation }), className)}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n />\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;AAqCO,SAAS,gBAAgB,QAAwB,CAAA,GAAkB;AACxE,QAAM,EAAE,cAAc,cAAc,aAAa,KAAA,IAAS;AAE1D,QAAM,YAAgC,aAClC,EAAE,MAAM,OAAA,IACR,EAAE,MAAM,aAAa,oBAAoB,YAAA;AAE7C,QAAM,iBAAyC;IAC7C,oBAAoB;EAAA;AAGtB,SAAO;IACL;IACA;EAAA;AAEJ;AC1CO,IAAM,oBAAoB,IAAI;EACnC,MAAM;EACN,UAAU;IACR,aAAa;MACX,YAAY;MACZ,UAAU;IAAA;IAEZ,SAAS;MACP,MAAM;MACN,OAAO;IAAA;EACT;EAEF,iBAAiB;IACf,aAAa;IACb,SAAS;EAAA;AAEb,CAAC;AAGM,IAAM,qBAAqB;AAG3B,IAAM,sBACX;;;;ACCK,IAAM,YAAkB;EAC7B,SAASA,WACP;IACE,cAAc;IACd;IACA,aAAa;IACb;IACA,GAAG;EAAA,GAEL,KACA;AAEA,QAAI,gBAAgB,gBAAgB,SAAS,MAAM;AACjD,aACE;QAAC;QAAA;UACC;UACA,MAAK;UACL,WAAW,GAAG,kBAAkB,EAAE,SAAS,OAAA,CAAQ,GAAG,SAAS;UAC9D,GAAG;UAEJ,UAAA;YAAA,oBAAC,QAAA,EAAK,WAAW,mBAAA,CAAoB;YACrC,oBAAC,QAAA,EAAK,WAAW,qBAAsB,UAAA,MAAA,CAAM;YAC7C,oBAAC,QAAA,EAAK,WAAW,mBAAA,CAAoB;UAAA;QAAA;MAAA;IAG3C;AAEA,UAAM,EAAE,WAAW,eAAA,IAAmB,gBAAgB;MACpD;MACA;IAAA,CACD;AAED,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,kBAAkB,EAAE,YAAA,CAAa,GAAG,SAAS;QAC1D,GAAG;QACH,GAAG;QACH,GAAG;MAAA;IAAA;EAGV;AACF;",
6
+ "names": ["Separator"]
7
+ }