@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,198 @@
1
+ import {
2
+ cn,
3
+ cva
4
+ } from "./chunk-ZF3OHCGV.js";
5
+
6
+ // ../react-kanban-board/dist/index.js
7
+ import * as React from "react";
8
+
9
+ // ../kanban-board/dist/index.js
10
+ function createKanbanBoard() {
11
+ return {
12
+ ariaProps: {
13
+ role: "group",
14
+ "aria-label": "Board"
15
+ },
16
+ dataAttributes: {
17
+ "data-component": "kanban-board"
18
+ }
19
+ };
20
+ }
21
+ function cardsByColumn(cards, getColumnId, columns) {
22
+ const map = /* @__PURE__ */ new Map();
23
+ for (const col of columns) {
24
+ map.set(col.id, []);
25
+ }
26
+ for (const card of cards) {
27
+ const colId = getColumnId(card);
28
+ const bucket = map.get(colId);
29
+ if (bucket !== void 0) {
30
+ bucket.push(card);
31
+ }
32
+ }
33
+ return map;
34
+ }
35
+ function visibleAndOverflow(cards, cap = 5) {
36
+ if (cards.length <= cap) {
37
+ return { visible: cards, overflow: 0 };
38
+ }
39
+ return { visible: cards.slice(0, cap), overflow: cards.length - cap };
40
+ }
41
+ var kanbanBoardVariants = cva({
42
+ base: "flex flex-row gap-4 overflow-x-auto pb-4",
43
+ variants: {},
44
+ defaultVariants: {}
45
+ });
46
+ var kanbanColumnVariants = cva({
47
+ base: "flex flex-col min-w-[260px] max-w-[300px] flex-shrink-0 rounded-xl bg-muted/40",
48
+ variants: {},
49
+ defaultVariants: {}
50
+ });
51
+ var kanbanColumnHeaderClass = "flex items-center gap-2 px-4 pt-4 pb-2";
52
+ var kanbanColumnTitleClass = "flex-1 text-sm font-semibold text-foreground truncate";
53
+ var kanbanColumnCountClass = "ml-auto inline-flex items-center justify-center rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground";
54
+ var kanbanAccentBarClass = "h-0.5 w-full";
55
+ var kanbanNoteBarClass = "mx-4 mb-2 rounded-md bg-muted px-3 py-1.5 text-xs text-muted-foreground";
56
+ var kanbanColumnBodyClass = "flex flex-col gap-2 px-3 pb-3";
57
+ var kanbanOverflowButtonClass = [
58
+ "mt-1 w-full rounded-lg border border-dashed border-border",
59
+ "py-1.5 text-center text-xs text-muted-foreground",
60
+ "transition-colors hover:bg-muted hover:text-foreground",
61
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
62
+ ].join(" ");
63
+ var kanbanCardVariants = cva({
64
+ base: "rounded-lg border border-border bg-card p-3 text-sm text-foreground",
65
+ variants: {
66
+ clickable: {
67
+ true: "cursor-pointer transition-colors hover:bg-muted/60",
68
+ false: ""
69
+ }
70
+ },
71
+ defaultVariants: {
72
+ clickable: "false"
73
+ }
74
+ });
75
+
76
+ // ../react-kanban-board/dist/index.js
77
+ import { jsx, jsxs } from "react/jsx-runtime";
78
+ var KanbanCard = React.forwardRef(
79
+ function KanbanCard2({ accent, clickable = false, className, style, children, ...props }, ref) {
80
+ const accentStyle = accent ? { borderTopColor: accent, borderTopWidth: "2px", ...style } : style ?? {};
81
+ return /* @__PURE__ */ jsx(
82
+ "div",
83
+ {
84
+ ref,
85
+ className: cn(
86
+ kanbanCardVariants({ clickable: clickable ? "true" : "false" }),
87
+ className
88
+ ),
89
+ style: accentStyle,
90
+ ...props,
91
+ children
92
+ }
93
+ );
94
+ }
95
+ );
96
+ var KanbanColumn = React.forwardRef(
97
+ function KanbanColumn2({ def, count, className, children, style, ...props }, ref) {
98
+ const derivedCount = count !== void 0 ? count : React.Children.count(children);
99
+ const colStyle = def.accent ? { "--kanban-accent": def.accent, ...style } : style ?? {};
100
+ return /* @__PURE__ */ jsxs(
101
+ "div",
102
+ {
103
+ ref,
104
+ className: cn(kanbanColumnVariants(), className),
105
+ style: colStyle,
106
+ ...props,
107
+ children: [
108
+ /* @__PURE__ */ jsxs("div", { className: kanbanColumnHeaderClass, children: [
109
+ /* @__PURE__ */ jsx("span", { className: kanbanColumnTitleClass, children: def.title }),
110
+ /* @__PURE__ */ jsx("span", { className: kanbanColumnCountClass, children: derivedCount })
111
+ ] }),
112
+ /* @__PURE__ */ jsx(
113
+ "div",
114
+ {
115
+ className: kanbanAccentBarClass,
116
+ style: def.accent ? { backgroundColor: "var(--kanban-accent)" } : { backgroundColor: "transparent" },
117
+ "aria-hidden": "true"
118
+ }
119
+ ),
120
+ def.note && /* @__PURE__ */ jsx("p", { className: kanbanNoteBarClass, children: def.note }),
121
+ /* @__PURE__ */ jsx("div", { className: kanbanColumnBodyClass, children })
122
+ ]
123
+ }
124
+ );
125
+ }
126
+ );
127
+ function KanbanBoard({
128
+ columns,
129
+ cards,
130
+ getCardColumnId,
131
+ getCardKey,
132
+ renderCard,
133
+ cardCap = 5,
134
+ onCardClick: _onCardClick,
135
+ columnHeader,
136
+ onShowMore,
137
+ className,
138
+ ...props
139
+ }) {
140
+ const { ariaProps, dataAttributes } = createKanbanBoard();
141
+ const buckets = cardsByColumn(cards, getCardColumnId, columns);
142
+ return /* @__PURE__ */ jsx(
143
+ "div",
144
+ {
145
+ className: cn(kanbanBoardVariants(), className),
146
+ ...ariaProps,
147
+ ...dataAttributes,
148
+ ...props,
149
+ children: columns.map((def) => {
150
+ const colCards = buckets.get(def.id) ?? [];
151
+ const { visible, overflow } = visibleAndOverflow(colCards, cardCap);
152
+ const count = colCards.length;
153
+ const header = columnHeader ? columnHeader(def, count) : null;
154
+ return /* @__PURE__ */ jsxs(
155
+ "div",
156
+ {
157
+ className: kanbanColumnVariants(),
158
+ style: def.accent ? { "--kanban-accent": def.accent } : void 0,
159
+ children: [
160
+ header ?? /* @__PURE__ */ jsxs("div", { className: kanbanColumnHeaderClass, children: [
161
+ /* @__PURE__ */ jsx("span", { className: kanbanColumnTitleClass, children: def.title }),
162
+ /* @__PURE__ */ jsx("span", { className: kanbanColumnCountClass, children: count })
163
+ ] }),
164
+ /* @__PURE__ */ jsx(
165
+ "div",
166
+ {
167
+ className: kanbanAccentBarClass,
168
+ style: def.accent ? { backgroundColor: "var(--kanban-accent)" } : { backgroundColor: "transparent" },
169
+ "aria-hidden": "true"
170
+ }
171
+ ),
172
+ def.note && /* @__PURE__ */ jsx("p", { className: kanbanNoteBarClass, children: def.note }),
173
+ /* @__PURE__ */ jsxs("div", { className: kanbanColumnBodyClass, children: [
174
+ visible.map((card) => /* @__PURE__ */ jsx(React.Fragment, { children: renderCard(card, def) }, getCardKey(card))),
175
+ overflow > 0 && /* @__PURE__ */ jsx(
176
+ "button",
177
+ {
178
+ type: "button",
179
+ className: kanbanOverflowButtonClass,
180
+ onClick: () => onShowMore?.(def.id),
181
+ children: `+${overflow} more`
182
+ }
183
+ )
184
+ ] })
185
+ ]
186
+ },
187
+ def.id
188
+ );
189
+ })
190
+ }
191
+ );
192
+ }
193
+ export {
194
+ KanbanBoard,
195
+ KanbanCard,
196
+ KanbanColumn
197
+ };
198
+ //# sourceMappingURL=react-kanban-board.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../kanban-board/src/kanban-board.ts", "../../kanban-board/src/kanban-board.styles.ts", "../../react-kanban-board/src/kanban-board.tsx"],
4
+ "sourcesContent": ["/** A single column definition for the Kanban board. */\nexport type KanbanColumnDef = {\n /** Unique identifier for this column (matches cards' column id). */\n id: string\n /** Display title of the column (e.g. stage name). */\n title: string\n /** Optional accent color applied via CSS var `--kanban-accent`. */\n accent?: string\n /** Optional note or gate description shown below the column header. */\n note?: string\n}\n\nexport interface KanbanBoardAPI {\n /** ARIA attributes to spread on the board container. */\n ariaProps: { role: 'group'; 'aria-label': string }\n /** Data attributes for styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/**\n * Build the framework-agnostic board props.\n *\n * Returns `role=\"group\"` with a fixed accessible label and data attributes\n * so adapters can style based on state without inlining logic.\n */\nexport function createKanbanBoard(): KanbanBoardAPI {\n return {\n ariaProps: {\n role: 'group',\n 'aria-label': 'Board',\n },\n dataAttributes: {\n 'data-component': 'kanban-board',\n },\n }\n}\n\n/**\n * Bucket cards into a Map keyed by column id, preserving column order.\n * Columns that have no cards get an empty array entry so callers can always\n * iterate `columns` and look up their bucket safely.\n *\n * @param cards - All cards to distribute.\n * @param getColumnId - Selector that reads the column id from a card.\n * @param columns - Column definitions (determines output order).\n */\nexport function cardsByColumn<T>(\n cards: T[],\n getColumnId: (c: T) => string,\n columns: KanbanColumnDef[],\n): Map<string, T[]> {\n const map = new Map<string, T[]>()\n // Pre-populate every column so empty columns are present.\n for (const col of columns) {\n map.set(col.id, [])\n }\n for (const card of cards) {\n const colId = getColumnId(card)\n const bucket = map.get(colId)\n if (bucket !== undefined) {\n bucket.push(card)\n }\n // Cards referencing unknown columns are silently dropped.\n }\n return map\n}\n\n/**\n * Split a card list into a visible slice and an overflow count.\n *\n * @param cards - Full list of cards in the column.\n * @param cap - Maximum visible cards. Defaults to 5.\n */\nexport function visibleAndOverflow<T>(\n cards: T[],\n cap = 5,\n): { visible: T[]; overflow: number } {\n if (cards.length <= cap) {\n return { visible: cards, overflow: 0 }\n }\n return { visible: cards.slice(0, cap), overflow: cards.length - cap }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/** The outer board: horizontal scroll, flex row, gap between columns. */\nexport const kanbanBoardVariants = cva({\n base: 'flex flex-row gap-4 overflow-x-auto pb-4',\n variants: {},\n defaultVariants: {},\n})\n\n/** A single column: muted background, rounded, fixed minimum width. */\nexport const kanbanColumnVariants = cva({\n base: 'flex flex-col min-w-[260px] max-w-[300px] flex-shrink-0 rounded-xl bg-muted/40',\n variants: {},\n defaultVariants: {},\n})\n\n/** Column header row: icon slot + title + count badge. */\nexport const kanbanColumnHeaderClass =\n 'flex items-center gap-2 px-4 pt-4 pb-2'\n\n/** Column title text. */\nexport const kanbanColumnTitleClass = 'flex-1 text-sm font-semibold text-foreground truncate'\n\n/**\n * Column count badge: a compact pill to the right of the title.\n * Uses muted tokens so it sits quietly against any column accent.\n */\nexport const kanbanColumnCountClass =\n 'ml-auto inline-flex items-center justify-center rounded-full bg-muted px-2 py-0.5 text-xs font-medium text-muted-foreground'\n\n/**\n * Thin accent bar directly below the header.\n * Callers apply `style={{ '--kanban-accent': def.accent }}` on the column\n * element; this bar reads `var(--kanban-accent)` via an inline style.\n * When no accent is supplied the bar is invisible (transparent).\n */\nexport const kanbanAccentBarClass = 'h-0.5 w-full'\n\n/**\n * Note/gate bar shown beneath the accent bar.\n * Displays brief stage notes (e.g. \"Technical screen required\").\n */\nexport const kanbanNoteBarClass =\n 'mx-4 mb-2 rounded-md bg-muted px-3 py-1.5 text-xs text-muted-foreground'\n\n/** Column body: card stack with gap, padded sides and bottom. */\nexport const kanbanColumnBodyClass = 'flex flex-col gap-2 px-3 pb-3'\n\n/**\n * \"+N more\" overflow button.\n * Styled as a subtle full-width ghost button inside the column.\n */\nexport const kanbanOverflowButtonClass = [\n 'mt-1 w-full rounded-lg border border-dashed border-border',\n 'py-1.5 text-center text-xs text-muted-foreground',\n 'transition-colors hover:bg-muted hover:text-foreground',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n].join(' ')\n\n/**\n * Default card surface.\n *\n * Variants:\n * - `clickable: 'true'` — adds hover treatment for interactive cards.\n * - `clickable: 'false'` — static (default).\n */\nexport const kanbanCardVariants = cva({\n base: 'rounded-lg border border-border bg-card p-3 text-sm text-foreground',\n variants: {\n clickable: {\n true: 'cursor-pointer transition-colors hover:bg-muted/60',\n false: '',\n },\n },\n defaultVariants: {\n clickable: 'false',\n },\n})\n", "import * as React from 'react'\nimport {\n createKanbanBoard,\n cardsByColumn,\n visibleAndOverflow,\n kanbanBoardVariants,\n kanbanColumnVariants,\n kanbanColumnHeaderClass,\n kanbanColumnTitleClass,\n kanbanColumnCountClass,\n kanbanAccentBarClass,\n kanbanNoteBarClass,\n kanbanColumnBodyClass,\n kanbanOverflowButtonClass,\n kanbanCardVariants,\n type KanbanColumnDef,\n} from '@refraction-ui/kanban-board'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { KanbanColumnDef }\n\n// ---------------------------------------------------------------------------\n// KanbanCard\n// ---------------------------------------------------------------------------\n\nexport interface KanbanCardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'content'> {\n /** Optional accent color for a top border treatment (CSS color value). */\n accent?: string\n /** Whether the card should show hover/click affordance. */\n clickable?: boolean\n}\n\n/**\n * KanbanCard — the card surface inside a column.\n *\n * Renders a bordered `bg-card` block. Pass `clickable` for hover treatment and\n * an `onClick` handler for interaction. Children define the card content.\n */\nexport const KanbanCard = React.forwardRef<HTMLDivElement, KanbanCardProps>(\n function KanbanCard({ accent, clickable = false, className, style, children, ...props }, ref) {\n const accentStyle: React.CSSProperties = accent\n ? { borderTopColor: accent, borderTopWidth: '2px', ...style }\n : (style ?? {})\n\n return (\n <div\n ref={ref}\n className={cn(\n kanbanCardVariants({ clickable: clickable ? 'true' : 'false' }),\n className,\n )}\n style={accentStyle}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\n// ---------------------------------------------------------------------------\n// KanbanColumn\n// ---------------------------------------------------------------------------\n\nexport interface KanbanColumnProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'content'> {\n /** Column definition (id, title, accent, note). */\n def: KanbanColumnDef\n /** Card count shown in the header badge. If omitted, derived from children. */\n count?: number\n}\n\n/**\n * KanbanColumn — a single stage column with a header and optional note bar.\n *\n * Place `<KanbanCard>` elements as children. The count badge is derived from\n * `React.Children.count(children)` when `count` is not provided.\n */\nexport const KanbanColumn = React.forwardRef<HTMLDivElement, KanbanColumnProps>(\n function KanbanColumn({ def, count, className, children, style, ...props }, ref) {\n const derivedCount =\n count !== undefined ? count : React.Children.count(children)\n\n const colStyle: React.CSSProperties = def.accent\n ? ({ '--kanban-accent': def.accent, ...style } as React.CSSProperties)\n : (style ?? {})\n\n return (\n <div\n ref={ref}\n className={cn(kanbanColumnVariants(), className)}\n style={colStyle}\n {...props}\n >\n {/* Header */}\n <div className={kanbanColumnHeaderClass}>\n <span className={kanbanColumnTitleClass}>{def.title}</span>\n <span className={kanbanColumnCountClass}>{derivedCount}</span>\n </div>\n\n {/* Accent bar */}\n <div\n className={kanbanAccentBarClass}\n style={\n def.accent\n ? { backgroundColor: 'var(--kanban-accent)' }\n : { backgroundColor: 'transparent' }\n }\n aria-hidden=\"true\"\n />\n\n {/* Optional note/gate bar */}\n {def.note && (\n <p className={kanbanNoteBarClass}>{def.note}</p>\n )}\n\n {/* Card body */}\n <div className={kanbanColumnBodyClass}>{children}</div>\n </div>\n )\n },\n)\n\n// ---------------------------------------------------------------------------\n// KanbanBoard\n// ---------------------------------------------------------------------------\n\nexport interface KanbanBoardProps<T>\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'content' | 'onSelect' | 'results'> {\n /** Column definitions (order determines left-to-right render order). */\n columns: KanbanColumnDef[]\n /** All cards to distribute into columns. */\n cards: T[]\n /** Selector returning the column id for a card. */\n getCardColumnId: (card: T) => string\n /** Selector returning a unique React key for a card. */\n getCardKey: (card: T) => string\n /** Render a single card inside a column. */\n renderCard: (card: T, columnDef: KanbanColumnDef) => React.ReactNode\n /** Max visible cards per column before showing \"+N more\". Defaults to 5. */\n cardCap?: number\n /** Called when the user clicks a card (passed through to renderCard context). */\n onCardClick?: (card: T) => void\n /** Override the column header render. Receives the def and card count. */\n columnHeader?: (def: KanbanColumnDef, count: number) => React.ReactNode\n /** Called when the user taps \"+N more\" for a column. */\n onShowMore?: (columnId: string) => void\n}\n\n/**\n * KanbanBoard — a generic multi-column stage board.\n *\n * Distributes `cards` into columns defined by `columns` using `getCardColumnId`.\n * Each column caps at `cardCap` (default 5) visible cards and shows a\n * \"+N more\" button for the overflow.\n *\n * @example\n * ```tsx\n * <KanbanBoard\n * columns={stages}\n * cards={candidates}\n * getCardColumnId={(c) => c.stageId}\n * getCardKey={(c) => c.id}\n * renderCard={(c) => <KanbanCard clickable>{c.name}</KanbanCard>}\n * />\n * ```\n */\nexport function KanbanBoard<T>({\n columns,\n cards,\n getCardColumnId,\n getCardKey,\n renderCard,\n cardCap = 5,\n onCardClick: _onCardClick,\n columnHeader,\n onShowMore,\n className,\n ...props\n}: KanbanBoardProps<T>): React.ReactElement {\n const { ariaProps, dataAttributes } = createKanbanBoard()\n const buckets = cardsByColumn(cards, getCardColumnId, columns)\n\n return (\n <div\n className={cn(kanbanBoardVariants(), className)}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n >\n {columns.map((def) => {\n const colCards = buckets.get(def.id) ?? []\n const { visible, overflow } = visibleAndOverflow(colCards, cardCap)\n const count = colCards.length\n\n const header = columnHeader ? columnHeader(def, count) : null\n\n return (\n <div\n key={def.id}\n className={kanbanColumnVariants()}\n style={\n def.accent\n ? ({ '--kanban-accent': def.accent } as React.CSSProperties)\n : undefined\n }\n >\n {/* Custom or default header */}\n {header ?? (\n <div className={kanbanColumnHeaderClass}>\n <span className={kanbanColumnTitleClass}>{def.title}</span>\n <span className={kanbanColumnCountClass}>{count}</span>\n </div>\n )}\n\n {/* Accent bar */}\n <div\n className={kanbanAccentBarClass}\n style={\n def.accent\n ? { backgroundColor: 'var(--kanban-accent)' }\n : { backgroundColor: 'transparent' }\n }\n aria-hidden=\"true\"\n />\n\n {/* Note bar */}\n {def.note && <p className={kanbanNoteBarClass}>{def.note}</p>}\n\n {/* Cards */}\n <div className={kanbanColumnBodyClass}>\n {visible.map((card) => (\n <React.Fragment key={getCardKey(card)}>\n {renderCard(card, def)}\n </React.Fragment>\n ))}\n\n {overflow > 0 && (\n <button\n type=\"button\"\n className={kanbanOverflowButtonClass}\n onClick={() => onShowMore?.(def.id)}\n >\n {`+${overflow} more`}\n </button>\n )}\n </div>\n </div>\n )\n })}\n </div>\n )\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["KanbanCard", "KanbanColumn"]
7
+ }
@@ -0,0 +1,36 @@
1
+ import {
2
+ AltHintState,
3
+ KeyboardShortcut,
4
+ SANE_DEFAULTS,
5
+ ShortcutBadge,
6
+ ShortcutContext,
7
+ ShortcutHint,
8
+ ShortcutProvider,
9
+ ShortcutRegistry,
10
+ altHintState,
11
+ formatShortcut,
12
+ globalShortcutRegistry,
13
+ shortcutBadgeStyles,
14
+ shortcutKeyStyles,
15
+ shortcutSeparatorStyles,
16
+ useShortcut
17
+ } from "./chunk-WK2IIUFO.js";
18
+ import "./chunk-ZF3OHCGV.js";
19
+ export {
20
+ AltHintState,
21
+ KeyboardShortcut,
22
+ SANE_DEFAULTS,
23
+ ShortcutBadge,
24
+ ShortcutContext,
25
+ ShortcutHint,
26
+ ShortcutProvider,
27
+ ShortcutRegistry,
28
+ altHintState,
29
+ formatShortcut,
30
+ globalShortcutRegistry,
31
+ shortcutBadgeStyles,
32
+ shortcutKeyStyles,
33
+ shortcutSeparatorStyles,
34
+ useShortcut
35
+ };
36
+ //# sourceMappingURL=react-keyboard-shortcut.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,311 @@
1
+ import {
2
+ Keys,
3
+ cn,
4
+ createKeyboardHandler,
5
+ cva,
6
+ generateId
7
+ } from "./chunk-ZF3OHCGV.js";
8
+
9
+ // ../react-language-selector/dist/index.js
10
+ import * as React from "react";
11
+
12
+ // ../language-selector/dist/index.js
13
+ function createLanguageSelector(props) {
14
+ const {
15
+ value: initialValue,
16
+ onValueChange,
17
+ options: _options,
18
+ multiple = false
19
+ } = props;
20
+ const contentId = generateId("rfr-lang-sel");
21
+ let selectedValues = Array.isArray(initialValue) ? [...initialValue] : initialValue ? [initialValue] : [];
22
+ let isOpen = false;
23
+ const state = { selectedValues: [...selectedValues], isOpen };
24
+ function setOpen(value) {
25
+ isOpen = value;
26
+ state.isOpen = value;
27
+ }
28
+ function toggle(value) {
29
+ if (multiple) {
30
+ const index = selectedValues.indexOf(value);
31
+ if (index >= 0) {
32
+ selectedValues.splice(index, 1);
33
+ } else {
34
+ selectedValues.push(value);
35
+ }
36
+ state.selectedValues = [...selectedValues];
37
+ onValueChange?.([...selectedValues]);
38
+ } else {
39
+ selectedValues = [value];
40
+ state.selectedValues = [value];
41
+ onValueChange?.(value);
42
+ setOpen(false);
43
+ }
44
+ }
45
+ const triggerProps = {
46
+ "aria-expanded": isOpen,
47
+ "aria-controls": contentId,
48
+ "aria-haspopup": "listbox",
49
+ role: "combobox"
50
+ };
51
+ const contentProps = {
52
+ role: "listbox",
53
+ id: contentId,
54
+ ...multiple ? { "aria-multiselectable": true } : {}
55
+ };
56
+ function getOptionProps(value) {
57
+ return {
58
+ role: "option",
59
+ "aria-selected": selectedValues.includes(value),
60
+ "data-value": value
61
+ };
62
+ }
63
+ const keyboardHandlers = {
64
+ [Keys.Escape]: () => {
65
+ setOpen(false);
66
+ },
67
+ [Keys.Enter]: () => {
68
+ setOpen(!isOpen);
69
+ },
70
+ [Keys.Space]: () => {
71
+ setOpen(!isOpen);
72
+ },
73
+ [Keys.ArrowDown]: () => {
74
+ if (!isOpen) {
75
+ setOpen(true);
76
+ }
77
+ },
78
+ [Keys.ArrowUp]: () => {
79
+ if (!isOpen) {
80
+ setOpen(true);
81
+ }
82
+ }
83
+ };
84
+ const handleKeyDown = createKeyboardHandler(keyboardHandlers);
85
+ return {
86
+ state,
87
+ triggerProps,
88
+ contentProps,
89
+ getOptionProps,
90
+ toggle,
91
+ open: () => setOpen(true),
92
+ close: () => setOpen(false),
93
+ keyboardHandlers,
94
+ handleKeyDown
95
+ };
96
+ }
97
+ var selectorVariants = cva({
98
+ base: "relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer",
99
+ variants: {
100
+ size: {
101
+ sm: "h-8 text-sm px-2 min-w-[120px]",
102
+ md: "h-10 text-base px-3 min-w-[160px]",
103
+ lg: "h-12 text-lg px-4 min-w-[200px]"
104
+ }
105
+ },
106
+ defaultVariants: {
107
+ size: "md"
108
+ }
109
+ });
110
+ var optionVariants = cva({
111
+ base: "flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent",
112
+ variants: {
113
+ selected: {
114
+ true: "bg-accent/50 font-medium",
115
+ false: ""
116
+ }
117
+ },
118
+ defaultVariants: {
119
+ selected: "false"
120
+ }
121
+ });
122
+
123
+ // ../react-language-selector/dist/index.js
124
+ var LanguageSelectorContext = React.createContext(null);
125
+ var LanguageSelector = React.forwardRef(
126
+ function LanguageSelector2({ value: controlledValue, onValueChange, options, multiple = false, placeholder = "Select language...", className }, ref) {
127
+ const initialValues = Array.isArray(controlledValue) ? controlledValue : controlledValue ? [controlledValue] : [];
128
+ const [selectedValues, setSelectedValues] = React.useState(initialValues);
129
+ const [isOpen, setIsOpen] = React.useState(false);
130
+ const containerRef = React.useRef(null);
131
+ const mergedRef = React.useCallback(
132
+ (node) => {
133
+ containerRef.current = node;
134
+ if (typeof ref === "function") ref(node);
135
+ else if (ref) ref.current = node;
136
+ },
137
+ [ref]
138
+ );
139
+ const handleValueChange = React.useCallback(
140
+ (val) => {
141
+ const arr = Array.isArray(val) ? val : [val];
142
+ setSelectedValues(arr);
143
+ onValueChange?.(val);
144
+ },
145
+ [onValueChange]
146
+ );
147
+ const api = React.useMemo(
148
+ () => createLanguageSelector({
149
+ value: multiple ? selectedValues : selectedValues[0],
150
+ onValueChange: handleValueChange,
151
+ options,
152
+ multiple
153
+ }),
154
+ [selectedValues, handleValueChange, options, multiple]
155
+ );
156
+ const handleToggle = React.useCallback(
157
+ (val) => {
158
+ if (multiple) {
159
+ const index = selectedValues.indexOf(val);
160
+ const next = index >= 0 ? selectedValues.filter((v) => v !== val) : [...selectedValues, val];
161
+ setSelectedValues(next);
162
+ onValueChange?.(next);
163
+ } else {
164
+ setSelectedValues([val]);
165
+ onValueChange?.(val);
166
+ setIsOpen(false);
167
+ }
168
+ },
169
+ [multiple, selectedValues, onValueChange]
170
+ );
171
+ const handleTriggerClick = React.useCallback(() => {
172
+ setIsOpen((prev) => !prev);
173
+ }, []);
174
+ const handleKeyDown = React.useCallback(
175
+ (e) => {
176
+ if (e.key === "Escape") {
177
+ setIsOpen(false);
178
+ } else if (e.key === "Enter" || e.key === " ") {
179
+ e.preventDefault();
180
+ setIsOpen((prev) => !prev);
181
+ } else if (e.key === "ArrowDown" || e.key === "ArrowUp") {
182
+ if (!isOpen) {
183
+ setIsOpen(true);
184
+ }
185
+ }
186
+ },
187
+ [isOpen]
188
+ );
189
+ React.useEffect(() => {
190
+ if (!isOpen) return;
191
+ function handleClickOutside(e) {
192
+ if (containerRef.current && !containerRef.current.contains(e.target)) {
193
+ setIsOpen(false);
194
+ }
195
+ }
196
+ document.addEventListener("mousedown", handleClickOutside);
197
+ return () => document.removeEventListener("mousedown", handleClickOutside);
198
+ }, [isOpen]);
199
+ const ctx = React.useMemo(
200
+ () => ({
201
+ api,
202
+ isOpen,
203
+ setOpen: setIsOpen,
204
+ toggle: handleToggle,
205
+ options,
206
+ multiple
207
+ }),
208
+ [api, isOpen, handleToggle, options, multiple]
209
+ );
210
+ const grouped = React.useMemo(() => {
211
+ const groups = /* @__PURE__ */ new Map();
212
+ const ungrouped = [];
213
+ for (const opt of options) {
214
+ if (opt.group) {
215
+ const list = groups.get(opt.group) ?? [];
216
+ list.push(opt);
217
+ groups.set(opt.group, list);
218
+ } else {
219
+ ungrouped.push(opt);
220
+ }
221
+ }
222
+ return { groups, ungrouped };
223
+ }, [options]);
224
+ const displayLabel = selectedValues.length > 0 ? options.filter((o) => selectedValues.includes(o.value)).map((o) => o.label).join(", ") : placeholder;
225
+ return React.createElement(
226
+ LanguageSelectorContext.Provider,
227
+ { value: ctx },
228
+ React.createElement(
229
+ "div",
230
+ { ref: mergedRef, className: cn("rfr-language-selector relative inline-block", className) },
231
+ // Trigger
232
+ React.createElement(
233
+ "button",
234
+ {
235
+ type: "button",
236
+ role: api.triggerProps.role,
237
+ "aria-expanded": isOpen,
238
+ "aria-controls": api.triggerProps["aria-controls"],
239
+ "aria-haspopup": api.triggerProps["aria-haspopup"],
240
+ className: selectorVariants(),
241
+ onClick: handleTriggerClick,
242
+ onKeyDown: handleKeyDown
243
+ },
244
+ React.createElement("span", null, displayLabel),
245
+ React.createElement("span", { "aria-hidden": "true", className: "ml-2" }, "\u25BE")
246
+ ),
247
+ // Dropdown
248
+ isOpen && React.createElement(
249
+ "ul",
250
+ {
251
+ role: api.contentProps.role,
252
+ id: api.contentProps.id,
253
+ ...multiple ? { "aria-multiselectable": true } : {},
254
+ className: "absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60"
255
+ },
256
+ ...[...grouped.groups.entries()].map(
257
+ ([group, opts]) => React.createElement(
258
+ "li",
259
+ { key: group, role: "presentation" },
260
+ React.createElement(
261
+ "div",
262
+ { className: "px-3 py-1 text-xs font-semibold text-muted-foreground uppercase" },
263
+ group
264
+ ),
265
+ React.createElement(
266
+ "ul",
267
+ { role: "group", "aria-label": group },
268
+ ...opts.map((opt) => {
269
+ const optProps = api.getOptionProps(opt.value);
270
+ const isSelected = selectedValues.includes(opt.value);
271
+ return React.createElement(
272
+ "li",
273
+ {
274
+ key: opt.value,
275
+ ...optProps,
276
+ className: optionVariants({ selected: isSelected ? "true" : "false" }),
277
+ onClick: () => handleToggle(opt.value)
278
+ },
279
+ isSelected && React.createElement("span", { "aria-hidden": "true" }, "\u2713"),
280
+ React.createElement("span", null, opt.label)
281
+ );
282
+ })
283
+ )
284
+ )
285
+ ),
286
+ ...grouped.ungrouped.map((opt) => {
287
+ const optProps = api.getOptionProps(opt.value);
288
+ const isSelected = selectedValues.includes(opt.value);
289
+ return React.createElement(
290
+ "li",
291
+ {
292
+ key: opt.value,
293
+ ...optProps,
294
+ className: optionVariants({ selected: isSelected ? "true" : "false" }),
295
+ onClick: () => handleToggle(opt.value)
296
+ },
297
+ isSelected && React.createElement("span", { "aria-hidden": "true" }, "\u2713"),
298
+ React.createElement("span", null, opt.label)
299
+ );
300
+ })
301
+ )
302
+ )
303
+ );
304
+ }
305
+ );
306
+ export {
307
+ LanguageSelector,
308
+ optionVariants,
309
+ selectorVariants
310
+ };
311
+ //# sourceMappingURL=react-language-selector.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../language-selector/src/language-selector.ts", "../../language-selector/src/language-selector.styles.ts", "../../react-language-selector/src/language-selector.tsx"],
4
+ "sourcesContent": ["import type { KeyboardHandlerMap } from '@refraction-ui/shared'\nimport { generateId, Keys, createKeyboardHandler } from '@refraction-ui/shared'\n\nexport interface LanguageOption {\n value: string\n label: string\n group?: string\n}\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n}\n\nexport interface LanguageSelectorAPI {\n /** Current state */\n state: { selectedValues: string[]; isOpen: boolean }\n /** Props to spread on the trigger element */\n triggerProps: {\n 'aria-expanded': boolean\n 'aria-controls': string\n 'aria-haspopup': 'listbox'\n role: 'combobox'\n }\n /** Props to spread on the content/dropdown element */\n contentProps: {\n role: 'listbox'\n id: string\n 'aria-multiselectable'?: boolean\n }\n /** Get props for an individual option */\n getOptionProps: (value: string) => {\n role: 'option'\n 'aria-selected': boolean\n 'data-value': string\n }\n /** Toggle an option's selection */\n toggle: (value: string) => void\n /** Open the dropdown */\n open: () => void\n /** Close the dropdown */\n close: () => void\n /** Keyboard handler map */\n keyboardHandlers: KeyboardHandlerMap\n /** Pre-built keyboard event handler */\n handleKeyDown: (event: KeyboardEvent) => void\n}\n\nexport function createLanguageSelector(props: LanguageSelectorProps): LanguageSelectorAPI {\n const {\n value: initialValue,\n onValueChange,\n options: _options,\n multiple = false,\n } = props\n\n const contentId = generateId('rfr-lang-sel')\n\n let selectedValues: string[] = Array.isArray(initialValue)\n ? [...initialValue]\n : initialValue\n ? [initialValue]\n : []\n let isOpen = false\n\n const state = { selectedValues: [...selectedValues], isOpen }\n\n function setOpen(value: boolean) {\n isOpen = value\n state.isOpen = value\n }\n\n function toggle(value: string) {\n if (multiple) {\n const index = selectedValues.indexOf(value)\n if (index >= 0) {\n selectedValues.splice(index, 1)\n } else {\n selectedValues.push(value)\n }\n state.selectedValues = [...selectedValues]\n onValueChange?.([...selectedValues])\n } else {\n selectedValues = [value]\n state.selectedValues = [value]\n onValueChange?.(value)\n setOpen(false)\n }\n }\n\n const triggerProps = {\n 'aria-expanded': isOpen,\n 'aria-controls': contentId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox' as const,\n }\n\n const contentProps: LanguageSelectorAPI['contentProps'] = {\n role: 'listbox' as const,\n id: contentId,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n }\n\n function getOptionProps(value: string) {\n return {\n role: 'option' as const,\n 'aria-selected': selectedValues.includes(value),\n 'data-value': value,\n }\n }\n\n const keyboardHandlers: KeyboardHandlerMap = {\n [Keys.Escape]: () => {\n setOpen(false)\n },\n [Keys.Enter]: () => {\n setOpen(!isOpen)\n },\n [Keys.Space]: () => {\n setOpen(!isOpen)\n },\n [Keys.ArrowDown]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n [Keys.ArrowUp]: () => {\n if (!isOpen) {\n setOpen(true)\n }\n },\n }\n\n const handleKeyDown = createKeyboardHandler(keyboardHandlers)\n\n return {\n state,\n triggerProps,\n contentProps,\n getOptionProps,\n toggle,\n open: () => setOpen(true),\n close: () => setOpen(false),\n keyboardHandlers,\n handleKeyDown,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\nexport const selectorVariants = cva({\n base: 'relative inline-flex items-center justify-between rounded-md border bg-background text-foreground cursor-pointer',\n variants: {\n size: {\n sm: 'h-8 text-sm px-2 min-w-[120px]',\n md: 'h-10 text-base px-3 min-w-[160px]',\n lg: 'h-12 text-lg px-4 min-w-[200px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n\nexport const optionVariants = cva({\n base: 'flex items-center gap-2 px-3 py-2 cursor-pointer hover:bg-accent',\n variants: {\n selected: {\n true: 'bg-accent/50 font-medium',\n false: '',\n },\n },\n defaultVariants: {\n selected: 'false',\n },\n})\n", "import * as React from 'react'\nimport {\n createLanguageSelector,\n selectorVariants,\n optionVariants,\n type LanguageSelectorAPI,\n type LanguageOption,\n} from '@refraction-ui/language-selector'\nimport { cn, devWarn } from '@refraction-ui/shared'\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ninterface LanguageSelectorContextValue {\n api: LanguageSelectorAPI\n isOpen: boolean\n setOpen: (value: boolean) => void\n toggle: (value: string) => void\n options: LanguageOption[]\n multiple: boolean\n}\n\nconst LanguageSelectorContext = React.createContext<LanguageSelectorContextValue | null>(null)\n\nfunction useLanguageSelectorContext(): LanguageSelectorContextValue {\n const ctx = React.useContext(LanguageSelectorContext)\n if (!ctx) {\n devWarn(\n 'react-language-selector/compound-outside-provider',\n 'A LanguageSelector compound component was rendered outside of <LanguageSelector>. Wrap it in <LanguageSelector>.',\n )\n throw new Error('LanguageSelector compound components must be used within <LanguageSelector>')\n }\n return ctx\n}\n\n/* ------------------------------------------------------------------ */\n/* LanguageSelector (root component) */\n/* ------------------------------------------------------------------ */\n\nexport interface LanguageSelectorProps {\n value?: string | string[]\n onValueChange?: (value: string | string[]) => void\n options: LanguageOption[]\n multiple?: boolean\n placeholder?: string\n className?: string\n}\n\nexport const LanguageSelector = React.forwardRef<HTMLDivElement, LanguageSelectorProps>(\n function LanguageSelector({ value: controlledValue, onValueChange, options, multiple = false, placeholder = 'Select language...', className }: LanguageSelectorProps, ref) {\n const initialValues = Array.isArray(controlledValue)\n ? controlledValue\n : controlledValue\n ? [controlledValue]\n : []\n\n const [selectedValues, setSelectedValues] = React.useState<string[]>(initialValues)\n const [isOpen, setIsOpen] = React.useState(false)\n const containerRef = React.useRef<HTMLDivElement>(null)\n const mergedRef = React.useCallback(\n (node: HTMLDivElement | null) => {\n containerRef.current = node\n if (typeof ref === 'function') ref(node)\n else if (ref) ref.current = node\n },\n [ref],\n )\n\n const handleValueChange = React.useCallback(\n (val: string | string[]) => {\n const arr = Array.isArray(val) ? val : [val]\n setSelectedValues(arr)\n onValueChange?.(val)\n },\n [onValueChange],\n )\n\n const api = React.useMemo(\n () =>\n createLanguageSelector({\n value: multiple ? selectedValues : selectedValues[0],\n onValueChange: handleValueChange,\n options,\n multiple,\n }),\n [selectedValues, handleValueChange, options, multiple],\n )\n\n const handleToggle = React.useCallback(\n (val: string) => {\n if (multiple) {\n const index = selectedValues.indexOf(val)\n const next = index >= 0\n ? selectedValues.filter((v) => v !== val)\n : [...selectedValues, val]\n setSelectedValues(next)\n onValueChange?.(next)\n } else {\n setSelectedValues([val])\n onValueChange?.(val)\n setIsOpen(false)\n }\n },\n [multiple, selectedValues, onValueChange],\n )\n\n const handleTriggerClick = React.useCallback(() => {\n setIsOpen((prev) => !prev)\n }, [])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false)\n } else if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setIsOpen((prev) => !prev)\n } else if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n if (!isOpen) {\n setIsOpen(true)\n }\n }\n },\n [isOpen],\n )\n\n // Click outside to close\n React.useEffect(() => {\n if (!isOpen) return\n function handleClickOutside(e: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [isOpen])\n\n const ctx = React.useMemo<LanguageSelectorContextValue>(\n () => ({\n api,\n isOpen,\n setOpen: setIsOpen,\n toggle: handleToggle,\n options,\n multiple,\n }),\n [api, isOpen, handleToggle, options, multiple],\n )\n\n // Group options\n const grouped = React.useMemo(() => {\n const groups = new Map<string, LanguageOption[]>()\n const ungrouped: LanguageOption[] = []\n for (const opt of options) {\n if (opt.group) {\n const list = groups.get(opt.group) ?? []\n list.push(opt)\n groups.set(opt.group, list)\n } else {\n ungrouped.push(opt)\n }\n }\n return { groups, ungrouped }\n }, [options])\n\n const displayLabel = selectedValues.length > 0\n ? options\n .filter((o) => selectedValues.includes(o.value))\n .map((o) => o.label)\n .join(', ')\n : placeholder\n\n return React.createElement(\n LanguageSelectorContext.Provider,\n { value: ctx },\n React.createElement(\n 'div',\n { ref: mergedRef, className: cn('rfr-language-selector relative inline-block', className) },\n // Trigger\n React.createElement(\n 'button',\n {\n type: 'button',\n role: api.triggerProps.role,\n 'aria-expanded': isOpen,\n 'aria-controls': api.triggerProps['aria-controls'],\n 'aria-haspopup': api.triggerProps['aria-haspopup'],\n className: selectorVariants(),\n onClick: handleTriggerClick,\n onKeyDown: handleKeyDown,\n },\n React.createElement('span', null, displayLabel),\n React.createElement('span', { 'aria-hidden': 'true', className: 'ml-2' }, '\\u25BE'),\n ),\n // Dropdown\n isOpen &&\n React.createElement(\n 'ul',\n {\n role: api.contentProps.role,\n id: api.contentProps.id,\n ...(multiple ? { 'aria-multiselectable': true } : {}),\n className:\n 'absolute top-full left-0 w-full mt-1 rounded-md border bg-popover text-popover-foreground shadow-md z-50 overflow-auto max-h-60',\n },\n // Render grouped options\n ...[...grouped.groups.entries()].map(([group, opts]) =>\n React.createElement(\n 'li',\n { key: group, role: 'presentation' },\n React.createElement(\n 'div',\n { className: 'px-3 py-1 text-xs font-semibold text-muted-foreground uppercase' },\n group,\n ),\n React.createElement(\n 'ul',\n { role: 'group', 'aria-label': group },\n ...opts.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n ),\n // Ungrouped options\n ...grouped.ungrouped.map((opt) => {\n const optProps = api.getOptionProps(opt.value)\n const isSelected = selectedValues.includes(opt.value)\n return React.createElement(\n 'li',\n {\n key: opt.value,\n ...optProps,\n className: optionVariants({ selected: isSelected ? 'true' : 'false' }),\n onClick: () => handleToggle(opt.value),\n },\n isSelected && React.createElement('span', { 'aria-hidden': 'true' }, '\\u2713'),\n React.createElement('span', null, opt.label),\n )\n }),\n ),\n ),\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;;;;AAkDO,SAAS,uBAAuB,OAAmD;AACxF,QAAM;IACJ,OAAO;IACP;IACA,SAAS;IACT,WAAW;EAAA,IACT;AAEJ,QAAM,YAAY,WAAW,cAAc;AAE3C,MAAI,iBAA2B,MAAM,QAAQ,YAAY,IACrD,CAAC,GAAG,YAAY,IAChB,eACE,CAAC,YAAY,IACb,CAAA;AACN,MAAI,SAAS;AAEb,QAAM,QAAQ,EAAE,gBAAgB,CAAC,GAAG,cAAc,GAAG,OAAA;AAErD,WAAS,QAAQ,OAAgB;AAC/B,aAAS;AACT,UAAM,SAAS;EACjB;AAEA,WAAS,OAAO,OAAe;AAC7B,QAAI,UAAU;AACZ,YAAM,QAAQ,eAAe,QAAQ,KAAK;AAC1C,UAAI,SAAS,GAAG;AACd,uBAAe,OAAO,OAAO,CAAC;MAChC,OAAO;AACL,uBAAe,KAAK,KAAK;MAC3B;AACA,YAAM,iBAAiB,CAAC,GAAG,cAAc;AACzC,sBAAgB,CAAC,GAAG,cAAc,CAAC;IACrC,OAAO;AACL,uBAAiB,CAAC,KAAK;AACvB,YAAM,iBAAiB,CAAC,KAAK;AAC7B,sBAAgB,KAAK;AACrB,cAAQ,KAAK;IACf;EACF;AAEA,QAAM,eAAe;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,MAAM;EAAA;AAGR,QAAM,eAAoD;IACxD,MAAM;IACN,IAAI;IACJ,GAAI,WAAW,EAAE,wBAAwB,KAAA,IAAS,CAAA;EAAC;AAGrD,WAAS,eAAe,OAAe;AACrC,WAAO;MACL,MAAM;MACN,iBAAiB,eAAe,SAAS,KAAK;MAC9C,cAAc;IAAA;EAElB;AAEA,QAAM,mBAAuC;IAC3C,CAAC,KAAK,MAAM,GAAG,MAAM;AACnB,cAAQ,KAAK;IACf;IACA,CAAC,KAAK,KAAK,GAAG,MAAM;AAClB,cAAQ,CAAC,MAAM;IACjB;IACA,CAAC,KAAK,KAAK,GAAG,MAAM;AAClB,cAAQ,CAAC,MAAM;IACjB;IACA,CAAC,KAAK,SAAS,GAAG,MAAM;AACtB,UAAI,CAAC,QAAQ;AACX,gBAAQ,IAAI;MACd;IACF;IACA,CAAC,KAAK,OAAO,GAAG,MAAM;AACpB,UAAI,CAAC,QAAQ;AACX,gBAAQ,IAAI;MACd;IACF;EAAA;AAGF,QAAM,gBAAgB,sBAAsB,gBAAgB;AAE5D,SAAO;IACL;IACA;IACA;IACA;IACA;IACA,MAAM,MAAM,QAAQ,IAAI;IACxB,OAAO,MAAM,QAAQ,KAAK;IAC1B;IACA;EAAA;AAEJ;AClJO,IAAM,mBAAmB,IAAI;EAClC,MAAM;EACN,UAAU;IACR,MAAM;MACJ,IAAI;MACJ,IAAI;MACJ,IAAI;IAAA;EACN;EAEF,iBAAiB;IACf,MAAM;EAAA;AAEV,CAAC;AAEM,IAAM,iBAAiB,IAAI;EAChC,MAAM;EACN,UAAU;IACR,UAAU;MACR,MAAM;MACN,OAAO;IAAA;EACT;EAEF,iBAAiB;IACf,UAAU;EAAA;AAEd,CAAC;;;ACJD,IAAM,0BAAgC,oBAAmD,IAAI;AA2BtF,IAAM,mBAAyB;EACpC,SAASA,kBAAiB,EAAE,OAAO,iBAAiB,eAAe,SAAS,WAAW,OAAO,cAAc,sBAAsB,UAAA,GAAoC,KAAK;AAC3K,UAAM,gBAAgB,MAAM,QAAQ,eAAe,IAC/C,kBACA,kBACE,CAAC,eAAe,IAChB,CAAA;AAEN,UAAM,CAAC,gBAAgB,iBAAiB,IAAU,eAAmB,aAAa;AAClF,UAAM,CAAC,QAAQ,SAAS,IAAU,eAAS,KAAK;AAChD,UAAM,eAAqB,aAAuB,IAAI;AACtD,UAAM,YAAkB;MACtB,CAAC,SAAgC;AAC/B,qBAAa,UAAU;AACvB,YAAI,OAAO,QAAQ,WAAY,KAAI,IAAI;iBAC9B,IAAA,KAAS,UAAU;MAC9B;MACA,CAAC,GAAG;IAAA;AAGN,UAAM,oBAA0B;MAC9B,CAAC,QAA2B;AAC1B,cAAM,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;AAC3C,0BAAkB,GAAG;AACrB,wBAAgB,GAAG;MACrB;MACA,CAAC,aAAa;IAAA;AAGhB,UAAM,MAAY;MAChB,MACE,uBAAuB;QACrB,OAAO,WAAW,iBAAiB,eAAe,CAAC;QACnD,eAAe;QACf;QACA;MAAA,CACD;MACH,CAAC,gBAAgB,mBAAmB,SAAS,QAAQ;IAAA;AAGvD,UAAM,eAAqB;MACzB,CAAC,QAAgB;AACf,YAAI,UAAU;AACZ,gBAAM,QAAQ,eAAe,QAAQ,GAAG;AACxC,gBAAM,OAAO,SAAS,IAClB,eAAe,OAAO,CAAC,MAAM,MAAM,GAAG,IACtC,CAAC,GAAG,gBAAgB,GAAG;AAC3B,4BAAkB,IAAI;AACtB,0BAAgB,IAAI;QACtB,OAAO;AACL,4BAAkB,CAAC,GAAG,CAAC;AACvB,0BAAgB,GAAG;AACnB,oBAAU,KAAK;QACjB;MACF;MACA,CAAC,UAAU,gBAAgB,aAAa;IAAA;AAG1C,UAAM,qBAA2B,kBAAY,MAAM;AACjD,gBAAU,CAAC,SAAS,CAAC,IAAI;IAC3B,GAAG,CAAA,CAAE;AAEL,UAAM,gBAAsB;MAC1B,CAAC,MAA2B;AAC1B,YAAI,EAAE,QAAQ,UAAU;AACtB,oBAAU,KAAK;QACjB,WAAW,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AAC7C,YAAE,eAAA;AACF,oBAAU,CAAC,SAAS,CAAC,IAAI;QAC3B,WAAW,EAAE,QAAQ,eAAe,EAAE,QAAQ,WAAW;AACvD,cAAI,CAAC,QAAQ;AACX,sBAAU,IAAI;UAChB;QACF;MACF;MACA,CAAC,MAAM;IAAA;AAIH,IAAA,gBAAU,MAAM;AACpB,UAAI,CAAC,OAAQ;AACb,eAAS,mBAAmB,GAAe;AACzC,YAAI,aAAa,WAAW,CAAC,aAAa,QAAQ,SAAS,EAAE,MAAc,GAAG;AAC5E,oBAAU,KAAK;QACjB;MACF;AACA,eAAS,iBAAiB,aAAa,kBAAkB;AACzD,aAAO,MAAM,SAAS,oBAAoB,aAAa,kBAAkB;IAC3E,GAAG,CAAC,MAAM,CAAC;AAEX,UAAM,MAAY;MAChB,OAAO;QACL;QACA;QACA,SAAS;QACT,QAAQ;QACR;QACA;MAAA;MAEF,CAAC,KAAK,QAAQ,cAAc,SAAS,QAAQ;IAAA;AAI/C,UAAM,UAAgB,cAAQ,MAAM;AAClC,YAAM,SAAA,oBAAa,IAAA;AACnB,YAAM,YAA8B,CAAA;AACpC,iBAAW,OAAO,SAAS;AACzB,YAAI,IAAI,OAAO;AACb,gBAAM,OAAO,OAAO,IAAI,IAAI,KAAK,KAAK,CAAA;AACtC,eAAK,KAAK,GAAG;AACb,iBAAO,IAAI,IAAI,OAAO,IAAI;QAC5B,OAAO;AACL,oBAAU,KAAK,GAAG;QACpB;MACF;AACA,aAAO,EAAE,QAAQ,UAAA;IACnB,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAM,eAAe,eAAe,SAAS,IACzC,QACG,OAAO,CAAC,MAAM,eAAe,SAAS,EAAE,KAAK,CAAC,EAC9C,IAAI,CAAC,MAAM,EAAE,KAAK,EAClB,KAAK,IAAI,IACZ;AAEJ,WAAa;MACX,wBAAwB;MACxB,EAAE,OAAO,IAAA;MACH;QACJ;QACA,EAAE,KAAK,WAAW,WAAW,GAAG,+CAA+C,SAAS,EAAA;;QAElF;UACJ;UACA;YACE,MAAM;YACN,MAAM,IAAI,aAAa;YACvB,iBAAiB;YACjB,iBAAiB,IAAI,aAAa,eAAe;YACjD,iBAAiB,IAAI,aAAa,eAAe;YACjD,WAAW,iBAAA;YACX,SAAS;YACT,WAAW;UAAA;UAEP,oBAAc,QAAQ,MAAM,YAAY;UACxC,oBAAc,QAAQ,EAAE,eAAe,QAAQ,WAAW,OAAA,GAAU,QAAQ;QAAA;;QAGpF,UACQ;UACJ;UACA;YACE,MAAM,IAAI,aAAa;YACvB,IAAI,IAAI,aAAa;YACrB,GAAI,WAAW,EAAE,wBAAwB,KAAA,IAAS,CAAA;YAClD,WACE;UAAA;UAGJ,GAAG,CAAC,GAAG,QAAQ,OAAO,QAAA,CAAS,EAAE;YAAI,CAAC,CAAC,OAAO,IAAI,MAC1C;cACJ;cACA,EAAE,KAAK,OAAO,MAAM,eAAA;cACd;gBACJ;gBACA,EAAE,WAAW,kEAAA;gBACb;cAAA;cAEI;gBACJ;gBACA,EAAE,MAAM,SAAS,cAAc,MAAA;gBAC/B,GAAG,KAAK,IAAI,CAAC,QAAQ;AACnB,wBAAM,WAAW,IAAI,eAAe,IAAI,KAAK;AAC7C,wBAAM,aAAa,eAAe,SAAS,IAAI,KAAK;AACpD,yBAAa;oBACX;oBACA;sBACE,KAAK,IAAI;sBACT,GAAG;sBACH,WAAW,eAAe,EAAE,UAAU,aAAa,SAAS,QAAA,CAAS;sBACrE,SAAS,MAAM,aAAa,IAAI,KAAK;oBAAA;oBAEvC,cAAoB,oBAAc,QAAQ,EAAE,eAAe,OAAA,GAAU,QAAQ;oBACvE,oBAAc,QAAQ,MAAM,IAAI,KAAK;kBAAA;gBAE/C,CAAC;cAAA;YACH;UACF;UAGF,GAAG,QAAQ,UAAU,IAAI,CAAC,QAAQ;AAChC,kBAAM,WAAW,IAAI,eAAe,IAAI,KAAK;AAC7C,kBAAM,aAAa,eAAe,SAAS,IAAI,KAAK;AACpD,mBAAa;cACX;cACA;gBACE,KAAK,IAAI;gBACT,GAAG;gBACH,WAAW,eAAe,EAAE,UAAU,aAAa,SAAS,QAAA,CAAS;gBACrE,SAAS,MAAM,aAAa,IAAI,KAAK;cAAA;cAEvC,cAAoB,oBAAc,QAAQ,EAAE,eAAe,OAAA,GAAU,QAAQ;cACvE,oBAAc,QAAQ,MAAM,IAAI,KAAK;YAAA;UAE/C,CAAC;QAAA;MACH;IACJ;EAEF;AACF;",
6
+ "names": ["LanguageSelector"]
7
+ }