@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,310 @@
1
+ import {
2
+ cn,
3
+ createKeyboardHandler,
4
+ cva,
5
+ devWarn,
6
+ generateId
7
+ } from "./chunk-ZF3OHCGV.js";
8
+
9
+ // ../react-sheet/dist/index.js
10
+ import * as React from "react";
11
+ import * as ReactDOM from "react-dom";
12
+ var sheetOverlayStyles = "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
13
+ var sheetContentVariants = cva({
14
+ base: "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
15
+ variants: {
16
+ side: {
17
+ top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
18
+ right: "inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right",
19
+ bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
20
+ left: "inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ side: "right"
25
+ }
26
+ });
27
+ var SheetContext = React.createContext(null);
28
+ function useSheetContext() {
29
+ const ctx = React.useContext(SheetContext);
30
+ if (!ctx) {
31
+ devWarn(
32
+ "react-sheet/sheet-compound-outside-provider",
33
+ "A Sheet compound component was rendered outside of <Sheet>. Wrap it in <Sheet>."
34
+ );
35
+ throw new Error("Sheet compound components must be used within <Sheet>");
36
+ }
37
+ return ctx;
38
+ }
39
+ function Sheet({
40
+ open: controlledOpen,
41
+ defaultOpen = false,
42
+ onOpenChange,
43
+ modal = true,
44
+ side = "right",
45
+ children
46
+ }) {
47
+ const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);
48
+ const isControlled = controlledOpen !== void 0;
49
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
50
+ const handleOpenChange = React.useCallback(
51
+ (next) => {
52
+ if (!isControlled) {
53
+ setUncontrolledOpen(next);
54
+ }
55
+ onOpenChange?.(next);
56
+ },
57
+ [isControlled, onOpenChange]
58
+ );
59
+ const idsRef = React.useRef(
60
+ null
61
+ );
62
+ if (idsRef.current === null) {
63
+ idsRef.current = {
64
+ content: generateId("rfr-sheet"),
65
+ title: generateId("rfr-sheet-title"),
66
+ description: generateId("rfr-sheet-desc")
67
+ };
68
+ }
69
+ const triggerRef = React.useRef(null);
70
+ const ctx = React.useMemo(
71
+ () => ({
72
+ open,
73
+ onOpenChange: handleOpenChange,
74
+ modal,
75
+ side,
76
+ contentId: idsRef.current.content,
77
+ titleId: idsRef.current.title,
78
+ descriptionId: idsRef.current.description,
79
+ triggerRef
80
+ }),
81
+ [open, handleOpenChange, modal, side]
82
+ );
83
+ return React.createElement(SheetContext.Provider, { value: ctx }, children);
84
+ }
85
+ var SheetTrigger = React.forwardRef(
86
+ function SheetTrigger2({ onClick, children, ...props }, ref) {
87
+ const { open, onOpenChange, contentId, triggerRef } = useSheetContext();
88
+ const setRefs = React.useCallback(
89
+ (node) => {
90
+ triggerRef.current = node;
91
+ if (typeof ref === "function") {
92
+ ref(node);
93
+ } else if (ref) {
94
+ ref.current = node;
95
+ }
96
+ },
97
+ [ref, triggerRef]
98
+ );
99
+ const handleClick = (e) => {
100
+ onOpenChange(!open);
101
+ onClick?.(e);
102
+ };
103
+ return React.createElement(
104
+ "button",
105
+ {
106
+ ref: setRefs,
107
+ type: "button",
108
+ "aria-expanded": open,
109
+ "aria-controls": contentId,
110
+ "aria-haspopup": "dialog",
111
+ onClick: handleClick,
112
+ ...props
113
+ },
114
+ children
115
+ );
116
+ }
117
+ );
118
+ var SheetOverlay = React.forwardRef(
119
+ function SheetOverlay2({ className, onClick, ...props }, ref) {
120
+ const { open, onOpenChange } = useSheetContext();
121
+ if (!open) return null;
122
+ const handleClick = (e) => {
123
+ if (e.target === e.currentTarget) {
124
+ onOpenChange(false);
125
+ }
126
+ onClick?.(e);
127
+ };
128
+ return React.createElement("div", {
129
+ ref,
130
+ className: cn(sheetOverlayStyles, className),
131
+ "data-state": open ? "open" : "closed",
132
+ onClick: handleClick,
133
+ ...props
134
+ });
135
+ }
136
+ );
137
+ var SheetContent = React.forwardRef(
138
+ function SheetContent2({
139
+ className,
140
+ children,
141
+ onKeyDown,
142
+ side: sideProp,
143
+ withOverlay = true,
144
+ ...props
145
+ }, ref) {
146
+ const {
147
+ open,
148
+ onOpenChange,
149
+ modal,
150
+ side: ctxSide,
151
+ contentId,
152
+ titleId,
153
+ descriptionId,
154
+ triggerRef
155
+ } = useSheetContext();
156
+ const side = sideProp ?? ctxSide;
157
+ const contentRef = React.useRef(null);
158
+ const setRefs = React.useCallback(
159
+ (node) => {
160
+ contentRef.current = node;
161
+ if (typeof ref === "function") {
162
+ ref(node);
163
+ } else if (ref) {
164
+ ref.current = node;
165
+ }
166
+ },
167
+ [ref]
168
+ );
169
+ const wasOpenRef = React.useRef(false);
170
+ React.useEffect(() => {
171
+ if (open) {
172
+ wasOpenRef.current = true;
173
+ if (contentRef.current && typeof document !== "undefined") {
174
+ const active = document.activeElement;
175
+ if (!active || !contentRef.current.contains(active)) {
176
+ contentRef.current.focus({ preventScroll: true });
177
+ }
178
+ }
179
+ } else if (wasOpenRef.current) {
180
+ wasOpenRef.current = false;
181
+ const trigger = triggerRef.current;
182
+ if (trigger && typeof trigger.focus === "function") {
183
+ trigger.focus({ preventScroll: true });
184
+ }
185
+ }
186
+ }, [open, triggerRef]);
187
+ const handleKeyDown = (e) => {
188
+ const handler = createKeyboardHandler({
189
+ Escape: (ev) => {
190
+ ev.preventDefault();
191
+ onOpenChange(false);
192
+ }
193
+ });
194
+ handler(e.nativeEvent);
195
+ onKeyDown?.(e);
196
+ };
197
+ if (!open) return null;
198
+ const contentEl = React.createElement(
199
+ "div",
200
+ {
201
+ ref: setRefs,
202
+ role: "dialog",
203
+ "aria-modal": modal,
204
+ "aria-labelledby": titleId,
205
+ "aria-describedby": descriptionId,
206
+ id: contentId,
207
+ "data-state": open ? "open" : "closed",
208
+ "data-side": side,
209
+ className: cn(sheetContentVariants({ side }), className),
210
+ onKeyDown: handleKeyDown,
211
+ tabIndex: -1,
212
+ ...props
213
+ },
214
+ children
215
+ );
216
+ const tree = withOverlay ? React.createElement(
217
+ React.Fragment,
218
+ null,
219
+ React.createElement("div", {
220
+ key: "overlay",
221
+ className: sheetOverlayStyles,
222
+ "data-state": open ? "open" : "closed",
223
+ onClick: (e) => {
224
+ if (e.target === e.currentTarget) {
225
+ onOpenChange(false);
226
+ }
227
+ }
228
+ }),
229
+ contentEl
230
+ ) : contentEl;
231
+ if (typeof document !== "undefined") {
232
+ return ReactDOM.createPortal(tree, document.body);
233
+ }
234
+ return tree;
235
+ }
236
+ );
237
+ var SheetHeader = React.forwardRef(
238
+ function SheetHeader2({ className, ...props }, ref) {
239
+ return React.createElement("div", {
240
+ ref,
241
+ className: cn("flex flex-col space-y-2 text-center sm:text-left", className),
242
+ ...props
243
+ });
244
+ }
245
+ );
246
+ var SheetFooter = React.forwardRef(
247
+ function SheetFooter2({ className, ...props }, ref) {
248
+ return React.createElement("div", {
249
+ ref,
250
+ className: cn(
251
+ "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
252
+ className
253
+ ),
254
+ ...props
255
+ });
256
+ }
257
+ );
258
+ var SheetTitle = React.forwardRef(
259
+ function SheetTitle2({ className, ...props }, ref) {
260
+ const { titleId } = useSheetContext();
261
+ return React.createElement("h2", {
262
+ ref,
263
+ id: titleId,
264
+ className: cn("text-lg font-semibold text-foreground", className),
265
+ ...props
266
+ });
267
+ }
268
+ );
269
+ var SheetDescription = React.forwardRef(function SheetDescription2({ className, ...props }, ref) {
270
+ const { descriptionId } = useSheetContext();
271
+ return React.createElement("p", {
272
+ ref,
273
+ id: descriptionId,
274
+ className: cn("text-sm text-muted-foreground", className),
275
+ ...props
276
+ });
277
+ });
278
+ var SheetClose = React.forwardRef(
279
+ function SheetClose2({ onClick, children, ...props }, ref) {
280
+ const { onOpenChange } = useSheetContext();
281
+ const handleClick = (e) => {
282
+ onOpenChange(false);
283
+ onClick?.(e);
284
+ };
285
+ return React.createElement(
286
+ "button",
287
+ {
288
+ ref,
289
+ type: "button",
290
+ onClick: handleClick,
291
+ ...props
292
+ },
293
+ children
294
+ );
295
+ }
296
+ );
297
+ export {
298
+ Sheet,
299
+ SheetClose,
300
+ SheetContent,
301
+ SheetDescription,
302
+ SheetFooter,
303
+ SheetHeader,
304
+ SheetOverlay,
305
+ SheetTitle,
306
+ SheetTrigger,
307
+ sheetContentVariants,
308
+ sheetOverlayStyles
309
+ };
310
+ //# sourceMappingURL=react-sheet.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../react-sheet/src/sheet.tsx"],
4
+ "sourcesContent": ["import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport { cn, cva, createKeyboardHandler, generateId, devWarn } from '@refraction-ui/shared'\n\n// ---------------------------------------------------------------------------\n// Side\n// ---------------------------------------------------------------------------\n\nexport type SheetSide = 'top' | 'right' | 'bottom' | 'left'\n\n// ---------------------------------------------------------------------------\n// Styles\n// ---------------------------------------------------------------------------\n\nexport const sheetOverlayStyles =\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0'\n\nexport const sheetContentVariants = cva({\n base: 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n})\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ninterface SheetContextValue {\n open: boolean\n onOpenChange: (open: boolean) => void\n modal: boolean\n side: SheetSide\n contentId: string\n titleId: string\n descriptionId: string\n triggerRef: React.MutableRefObject<HTMLElement | null>\n}\n\nconst SheetContext = React.createContext<SheetContextValue | null>(null)\n\nfunction useSheetContext(): SheetContextValue {\n const ctx = React.useContext(SheetContext)\n if (!ctx) {\n devWarn(\n 'react-sheet/sheet-compound-outside-provider',\n 'A Sheet compound component was rendered outside of <Sheet>. Wrap it in <Sheet>.',\n )\n throw new Error('Sheet compound components must be used within <Sheet>')\n }\n return ctx\n}\n\n// ---------------------------------------------------------------------------\n// Sheet (root provider)\n// ---------------------------------------------------------------------------\n\nexport interface SheetProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n modal?: boolean\n side?: SheetSide\n children?: React.ReactNode\n}\n\nexport function Sheet({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n modal = true,\n side = 'right',\n children,\n}: SheetProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen)\n const isControlled = controlledOpen !== undefined\n const open = isControlled ? controlledOpen : uncontrolledOpen\n\n const handleOpenChange = React.useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next)\n }\n onOpenChange?.(next)\n },\n [isControlled, onOpenChange],\n )\n\n // Stable IDs for aria linking — generated once per Sheet instance.\n const idsRef = React.useRef<{ content: string; title: string; description: string } | null>(\n null,\n )\n if (idsRef.current === null) {\n idsRef.current = {\n content: generateId('rfr-sheet'),\n title: generateId('rfr-sheet-title'),\n description: generateId('rfr-sheet-desc'),\n }\n }\n\n const triggerRef = React.useRef<HTMLElement | null>(null)\n\n const ctx = React.useMemo<SheetContextValue>(\n () => ({\n open,\n onOpenChange: handleOpenChange,\n modal,\n side,\n contentId: idsRef.current!.content,\n titleId: idsRef.current!.title,\n descriptionId: idsRef.current!.description,\n triggerRef,\n }),\n [open, handleOpenChange, modal, side],\n )\n\n return React.createElement(SheetContext.Provider, { value: ctx }, children)\n}\n\n// ---------------------------------------------------------------------------\n// SheetTrigger\n// ---------------------------------------------------------------------------\n\nexport interface SheetTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const SheetTrigger = React.forwardRef<HTMLButtonElement, SheetTriggerProps>(\n function SheetTrigger({ onClick, children, ...props }, ref) {\n const { open, onOpenChange, contentId, triggerRef } = useSheetContext()\n\n const setRefs = React.useCallback(\n (node: HTMLButtonElement | null) => {\n triggerRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLButtonElement | null>).current = node\n }\n },\n [ref, triggerRef],\n )\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(!open)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref: setRefs,\n type: 'button',\n 'aria-expanded': open,\n 'aria-controls': contentId,\n 'aria-haspopup': 'dialog',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetOverlay\n// ---------------------------------------------------------------------------\n\nexport interface SheetOverlayProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetOverlay = React.forwardRef<HTMLDivElement, SheetOverlayProps>(\n function SheetOverlay({ className, onClick, ...props }, ref) {\n const { open, onOpenChange } = useSheetContext()\n\n if (!open) return null\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) {\n onOpenChange(false)\n }\n onClick?.(e)\n }\n\n return React.createElement('div', {\n ref,\n className: cn(sheetOverlayStyles, className),\n 'data-state': open ? 'open' : 'closed',\n onClick: handleClick,\n ...props,\n })\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetContent\n// ---------------------------------------------------------------------------\n\nexport interface SheetContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Side of the screen the sheet slides in from.\n * Overrides the `side` prop on the parent <Sheet> if provided.\n */\n side?: SheetSide\n /**\n * If true (default), an overlay is rendered behind the content and\n * clicks outside the content close the sheet.\n */\n withOverlay?: boolean\n}\n\nexport const SheetContent = React.forwardRef<HTMLDivElement, SheetContentProps>(\n function SheetContent(\n {\n className,\n children,\n onKeyDown,\n side: sideProp,\n withOverlay = true,\n ...props\n },\n ref,\n ) {\n const {\n open,\n onOpenChange,\n modal,\n side: ctxSide,\n contentId,\n titleId,\n descriptionId,\n triggerRef,\n } = useSheetContext()\n\n const side = sideProp ?? ctxSide\n\n const contentRef = React.useRef<HTMLDivElement | null>(null)\n const setRefs = React.useCallback(\n (node: HTMLDivElement | null) => {\n contentRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\n }\n },\n [ref],\n )\n\n // Restore focus to trigger when sheet closes.\n const wasOpenRef = React.useRef(false)\n React.useEffect(() => {\n if (open) {\n wasOpenRef.current = true\n // Move focus into the content for keyboard users / screen readers.\n if (contentRef.current && typeof document !== 'undefined') {\n const active = document.activeElement as HTMLElement | null\n if (!active || !contentRef.current.contains(active)) {\n contentRef.current.focus({ preventScroll: true })\n }\n }\n } else if (wasOpenRef.current) {\n wasOpenRef.current = false\n const trigger = triggerRef.current\n if (trigger && typeof trigger.focus === 'function') {\n trigger.focus({ preventScroll: true })\n }\n }\n }, [open, triggerRef])\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const handler = createKeyboardHandler({\n Escape: (ev: KeyboardEvent) => {\n ev.preventDefault()\n onOpenChange(false)\n },\n })\n handler(e.nativeEvent)\n onKeyDown?.(e)\n }\n\n if (!open) return null\n\n const contentEl = React.createElement(\n 'div',\n {\n ref: setRefs,\n role: 'dialog',\n 'aria-modal': modal,\n 'aria-labelledby': titleId,\n 'aria-describedby': descriptionId,\n id: contentId,\n 'data-state': open ? 'open' : 'closed',\n 'data-side': side,\n className: cn(sheetContentVariants({ side }), className),\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n ...props,\n },\n children,\n )\n\n const tree = withOverlay\n ? React.createElement(\n React.Fragment,\n null,\n React.createElement('div', {\n key: 'overlay',\n className: sheetOverlayStyles,\n 'data-state': open ? 'open' : 'closed',\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.target === e.currentTarget) {\n onOpenChange(false)\n }\n },\n }),\n contentEl,\n )\n : contentEl\n\n if (typeof document !== 'undefined') {\n return ReactDOM.createPortal(tree, document.body)\n }\n\n return tree\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetHeader\n// ---------------------------------------------------------------------------\n\nexport interface SheetHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetHeader = React.forwardRef<HTMLDivElement, SheetHeaderProps>(\n function SheetHeader({ className, ...props }, ref) {\n return React.createElement('div', {\n ref,\n className: cn('flex flex-col space-y-2 text-center sm:text-left', className),\n ...props,\n })\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetFooter\n// ---------------------------------------------------------------------------\n\nexport interface SheetFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetFooter = React.forwardRef<HTMLDivElement, SheetFooterProps>(\n function SheetFooter({ className, ...props }, ref) {\n return React.createElement('div', {\n ref,\n className: cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className,\n ),\n ...props,\n })\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetTitle\n// ---------------------------------------------------------------------------\n\nexport interface SheetTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport const SheetTitle = React.forwardRef<HTMLHeadingElement, SheetTitleProps>(\n function SheetTitle({ className, ...props }, ref) {\n const { titleId } = useSheetContext()\n return React.createElement('h2', {\n ref,\n id: titleId,\n className: cn('text-lg font-semibold text-foreground', className),\n ...props,\n })\n },\n)\n\n// ---------------------------------------------------------------------------\n// SheetDescription\n// ---------------------------------------------------------------------------\n\nexport interface SheetDescriptionProps\n extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nexport const SheetDescription = React.forwardRef<\n HTMLParagraphElement,\n SheetDescriptionProps\n>(function SheetDescription({ className, ...props }, ref) {\n const { descriptionId } = useSheetContext()\n return React.createElement('p', {\n ref,\n id: descriptionId,\n className: cn('text-sm text-muted-foreground', className),\n ...props,\n })\n})\n\n// ---------------------------------------------------------------------------\n// SheetClose\n// ---------------------------------------------------------------------------\n\nexport interface SheetCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const SheetClose = React.forwardRef<HTMLButtonElement, SheetCloseProps>(\n function SheetClose({ onClick, children, ...props }, ref) {\n const { onOpenChange } = useSheetContext()\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onOpenChange(false)\n onClick?.(e)\n }\n\n return React.createElement(\n 'button',\n {\n ref,\n type: 'button',\n onClick: handleClick,\n ...props,\n },\n children,\n )\n },\n)\n"],
5
+ "mappings": "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",
6
+ "names": ["SheetTrigger", "SheetOverlay", "SheetContent", "SheetHeader", "SheetFooter", "SheetTitle", "SheetDescription", "SheetClose"]
7
+ }
@@ -0,0 +1,100 @@
1
+ import {
2
+ cn,
3
+ cva
4
+ } from "./chunk-ZF3OHCGV.js";
5
+
6
+ // ../react-sidebar/dist/index.js
7
+ import * as React from "react";
8
+
9
+ // ../sidebar/dist/index.js
10
+ function createSidebar(props = {}) {
11
+ const { sections = [], currentPath = "/", userRoles = [] } = props;
12
+ function isActive(href) {
13
+ if (href === "/") return currentPath === "/";
14
+ return currentPath.startsWith(href);
15
+ }
16
+ function isVisible(item) {
17
+ if (!item.roles || item.roles.length === 0) return true;
18
+ return item.roles.some((role) => userRoles.includes(role));
19
+ }
20
+ const visibleSections = sections.map((section) => ({
21
+ ...section,
22
+ items: section.items.filter(isVisible)
23
+ })).filter((section) => section.items.length > 0);
24
+ return {
25
+ ariaProps: { role: "navigation", "aria-label": "Sidebar" },
26
+ isActive,
27
+ isVisible,
28
+ itemAriaProps: (href) => isActive(href) ? { "aria-current": "page" } : {},
29
+ visibleSections
30
+ };
31
+ }
32
+ var sidebarVariants = cva({
33
+ base: "hidden md:flex flex-col border-r bg-background",
34
+ variants: {
35
+ collapsed: {
36
+ true: "w-16",
37
+ false: "w-64"
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ collapsed: "false"
42
+ }
43
+ });
44
+ var sidebarItemVariants = cva({
45
+ base: "flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors",
46
+ variants: {
47
+ active: {
48
+ true: "bg-accent text-accent-foreground",
49
+ false: "text-muted-foreground hover:bg-muted hover:text-foreground"
50
+ }
51
+ },
52
+ defaultVariants: {
53
+ active: "false"
54
+ }
55
+ });
56
+
57
+ // ../react-sidebar/dist/index.js
58
+ import { jsx, jsxs } from "react/jsx-runtime";
59
+ var Sidebar = React.forwardRef(
60
+ function Sidebar2({
61
+ sections = [],
62
+ currentPath,
63
+ collapsed = false,
64
+ userRoles,
65
+ className,
66
+ ...props
67
+ }, ref) {
68
+ const api = createSidebar({ sections, currentPath, collapsed, userRoles });
69
+ const classes = cn(
70
+ sidebarVariants({ collapsed: collapsed ? "true" : "false" }),
71
+ className
72
+ );
73
+ return /* @__PURE__ */ jsx("aside", { ref, className: classes, ...api.ariaProps, ...props, children: /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4 p-4", children: api.visibleSections.map((section, sIdx) => /* @__PURE__ */ jsxs("div", { children: [
74
+ section.title && !collapsed && /* @__PURE__ */ jsx("h3", { className: "mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: section.title }),
75
+ /* @__PURE__ */ jsx("ul", { className: "space-y-1", children: section.items.map((item) => {
76
+ const active = api.isActive(item.href);
77
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
78
+ "a",
79
+ {
80
+ href: item.href,
81
+ className: sidebarItemVariants({
82
+ active: active ? "true" : "false"
83
+ }),
84
+ ...api.itemAriaProps(item.href),
85
+ children: [
86
+ item.icon && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: item.icon }),
87
+ !collapsed && /* @__PURE__ */ jsx("span", { children: item.label })
88
+ ]
89
+ }
90
+ ) }, item.href);
91
+ }) })
92
+ ] }, section.title ?? sIdx)) }) });
93
+ }
94
+ );
95
+ export {
96
+ Sidebar,
97
+ sidebarItemVariants,
98
+ sidebarVariants
99
+ };
100
+ //# sourceMappingURL=react-sidebar.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../sidebar/src/sidebar.ts", "../../sidebar/src/sidebar.styles.ts", "../../react-sidebar/src/sidebar.tsx"],
4
+ "sourcesContent": ["export interface SidebarItem {\n label: string\n href: string\n icon?: string\n /** Roles required to see this item */\n roles?: string[]\n /** Nested items */\n children?: SidebarItem[]\n}\n\nexport interface SidebarSection {\n title?: string\n items: SidebarItem[]\n}\n\nexport interface SidebarProps {\n sections?: SidebarSection[]\n currentPath?: string\n collapsed?: boolean\n userRoles?: string[]\n}\n\nexport interface SidebarAPI {\n ariaProps: Record<string, string>\n isActive: (href: string) => boolean\n isVisible: (item: SidebarItem) => boolean\n itemAriaProps: (href: string) => Record<string, string>\n visibleSections: SidebarSection[]\n}\n\nexport function createSidebar(props: SidebarProps = {}): SidebarAPI {\n const { sections = [], currentPath = '/', userRoles = [] } = props\n\n function isActive(href: string): boolean {\n if (href === '/') return currentPath === '/'\n return currentPath.startsWith(href)\n }\n\n function isVisible(item: SidebarItem): boolean {\n if (!item.roles || item.roles.length === 0) return true\n return item.roles.some((role) => userRoles.includes(role))\n }\n\n const visibleSections = sections\n .map((section) => ({\n ...section,\n items: section.items.filter(isVisible),\n }))\n .filter((section) => section.items.length > 0)\n\n return {\n ariaProps: { role: 'navigation', 'aria-label': 'Sidebar' },\n isActive,\n isVisible,\n itemAriaProps: (href: string): Record<string, string> =>\n isActive(href) ? { 'aria-current': 'page' } : {},\n visibleSections,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\nexport const sidebarVariants = cva({\n base: 'hidden md:flex flex-col border-r bg-background',\n variants: {\n collapsed: {\n true: 'w-16',\n false: 'w-64',\n },\n },\n defaultVariants: {\n collapsed: 'false',\n },\n})\n\nexport const sidebarItemVariants = cva({\n base: 'flex items-center gap-3 rounded-md px-3 py-2 text-sm font-medium transition-colors',\n variants: {\n active: {\n true: 'bg-accent text-accent-foreground',\n false: 'text-muted-foreground hover:bg-muted hover:text-foreground',\n },\n },\n defaultVariants: {\n active: 'false',\n },\n})\n", "import * as React from 'react'\nimport {\n createSidebar,\n sidebarVariants,\n sidebarItemVariants,\n type SidebarSection,\n type SidebarItem as SidebarItemType,\n} from '@refraction-ui/sidebar'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n /** Sidebar sections with items */\n sections?: SidebarSection[]\n /** Current pathname for active state */\n currentPath?: string\n /** Whether the sidebar is collapsed */\n collapsed?: boolean\n /** User roles for visibility filtering */\n userRoles?: string[]\n}\n\n/**\n * Sidebar component — renders a vertical navigation panel with sections and items.\n *\n * Uses the headless @refraction-ui/sidebar core for state, visibility, and ARIA attributes.\n * Hidden on mobile (hidden md:flex via styles).\n */\nexport const Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n function Sidebar(\n {\n sections = [],\n currentPath,\n collapsed = false,\n userRoles,\n className,\n ...props\n },\n ref,\n ) {\n const api = createSidebar({ sections, currentPath, collapsed, userRoles })\n const classes = cn(\n sidebarVariants({ collapsed: collapsed ? 'true' : 'false' }),\n className,\n )\n\n return (\n <aside ref={ref} className={classes} {...api.ariaProps} {...props}>\n <div className=\"flex flex-col gap-4 p-4\">\n {api.visibleSections.map((section, sIdx) => (\n <div key={section.title ?? sIdx}>\n {section.title && !collapsed && (\n <h3 className=\"mb-2 px-3 text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n {section.title}\n </h3>\n )}\n <ul className=\"space-y-1\">\n {section.items.map((item) => {\n const active = api.isActive(item.href)\n return (\n <li key={item.href}>\n <a\n href={item.href}\n className={sidebarItemVariants({\n active: active ? 'true' : 'false',\n })}\n {...api.itemAriaProps(item.href)}\n >\n {item.icon && <span aria-hidden=\"true\">{item.icon}</span>}\n {!collapsed && <span>{item.label}</span>}\n </a>\n </li>\n )\n })}\n </ul>\n </div>\n ))}\n </div>\n </aside>\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;AA8BO,SAAS,cAAc,QAAsB,CAAA,GAAgB;AAClE,QAAM,EAAE,WAAW,CAAA,GAAI,cAAc,KAAK,YAAY,CAAA,EAAC,IAAM;AAE7D,WAAS,SAAS,MAAuB;AACvC,QAAI,SAAS,IAAK,QAAO,gBAAgB;AACzC,WAAO,YAAY,WAAW,IAAI;EACpC;AAEA,WAAS,UAAU,MAA4B;AAC7C,QAAI,CAAC,KAAK,SAAS,KAAK,MAAM,WAAW,EAAG,QAAO;AACnD,WAAO,KAAK,MAAM,KAAK,CAAC,SAAS,UAAU,SAAS,IAAI,CAAC;EAC3D;AAEA,QAAM,kBAAkB,SACrB,IAAI,CAAC,aAAa;IACjB,GAAG;IACH,OAAO,QAAQ,MAAM,OAAO,SAAS;EAAA,EACrC,EACD,OAAO,CAAC,YAAY,QAAQ,MAAM,SAAS,CAAC;AAE/C,SAAO;IACL,WAAW,EAAE,MAAM,cAAc,cAAc,UAAA;IAC/C;IACA;IACA,eAAe,CAAC,SACd,SAAS,IAAI,IAAI,EAAE,gBAAgB,OAAA,IAAW,CAAA;IAChD;EAAA;AAEJ;ACxDO,IAAM,kBAAkB,IAAI;EACjC,MAAM;EACN,UAAU;IACR,WAAW;MACT,MAAM;MACN,OAAO;IAAA;EACT;EAEF,iBAAiB;IACf,WAAW;EAAA;AAEf,CAAC;AAEM,IAAM,sBAAsB,IAAI;EACrC,MAAM;EACN,UAAU;IACR,QAAQ;MACN,MAAM;MACN,OAAO;IAAA;EACT;EAEF,iBAAiB;IACf,QAAQ;EAAA;AAEZ,CAAC;;;;ACCM,IAAM,UAAgB;EAC3B,SAASA,SACP;IACE,WAAW,CAAA;IACX;IACA,YAAY;IACZ;IACA;IACA,GAAG;EAAA,GAEL,KACA;AACA,UAAM,MAAM,cAAc,EAAE,UAAU,aAAa,WAAW,UAAA,CAAW;AACzE,UAAM,UAAU;MACd,gBAAgB,EAAE,WAAW,YAAY,SAAS,QAAA,CAAS;MAC3D;IAAA;AAGF,WACE,oBAAC,SAAA,EAAM,KAAU,WAAW,SAAU,GAAG,IAAI,WAAY,GAAG,OAC1D,UAAA,oBAAC,OAAA,EAAI,WAAU,2BACZ,UAAA,IAAI,gBAAgB,IAAI,CAAC,SAAS,SACjC,qBAAC,OAAA,EACE,UAAA;MAAA,QAAQ,SAAS,CAAC,aACjB,oBAAC,MAAA,EAAG,WAAU,kFACX,UAAA,QAAQ,MAAA,CACX;MAEF,oBAAC,MAAA,EAAG,WAAU,aACX,UAAA,QAAQ,MAAM,IAAI,CAAC,SAAS;AAC3B,cAAM,SAAS,IAAI,SAAS,KAAK,IAAI;AACrC,eAAA,oBACG,MAAA,EACC,UAAA;UAAC;UAAA;YACC,MAAM,KAAK;YACX,WAAW,oBAAoB;cAC7B,QAAQ,SAAS,SAAS;YAAA,CAC3B;YACA,GAAG,IAAI,cAAc,KAAK,IAAI;YAE9B,UAAA;cAAA,KAAK,QAAQ,oBAAC,QAAA,EAAK,eAAY,QAAQ,UAAA,KAAK,KAAA,CAAK;cACjD,CAAC,aAAa,oBAAC,QAAA,EAAM,UAAA,KAAK,MAAA,CAAM;YAAA;UAAA;QAAA,EACnC,GAVO,KAAK,IAWd;MAEJ,CAAC,EAAA,CACH;IAAA,EAAA,GAxBQ,QAAQ,SAAS,IAyB3B,CACD,EAAA,CACH,EAAA,CACF;EAEJ;AACF;",
6
+ "names": ["Sidebar"]
7
+ }
@@ -0,0 +1,91 @@
1
+ import {
2
+ cn,
3
+ cva
4
+ } from "./chunk-ZF3OHCGV.js";
5
+
6
+ // ../react-skeleton/dist/index.js
7
+ import * as React from "react";
8
+
9
+ // ../skeleton/dist/index.js
10
+ function createSkeleton(props = {}) {
11
+ const { shape = "text", animate = true } = props;
12
+ const ariaProps = {
13
+ "aria-hidden": true,
14
+ role: "presentation"
15
+ };
16
+ const dataAttributes = {
17
+ "data-shape": shape,
18
+ "data-animate": String(animate)
19
+ };
20
+ return {
21
+ ariaProps,
22
+ dataAttributes
23
+ };
24
+ }
25
+ var skeletonVariants = cva({
26
+ base: "animate-pulse bg-muted",
27
+ variants: {
28
+ shape: {
29
+ text: "h-4 w-full rounded",
30
+ circular: "rounded-full",
31
+ rectangular: "rounded-none",
32
+ rounded: "rounded-md"
33
+ }
34
+ },
35
+ defaultVariants: {
36
+ shape: "text"
37
+ }
38
+ });
39
+
40
+ // ../react-skeleton/dist/index.js
41
+ var Skeleton = React.forwardRef(
42
+ function Skeleton2({ shape, width, height, animate, className, style, ...props }, ref) {
43
+ const api = createSkeleton({ shape, animate });
44
+ const classes = cn(skeletonVariants({ shape }), className);
45
+ const mergedStyle = {
46
+ ...style,
47
+ ...width !== void 0 ? { width } : {},
48
+ ...height !== void 0 ? { height } : {}
49
+ };
50
+ return React.createElement("div", {
51
+ ref,
52
+ className: classes,
53
+ style: Object.keys(mergedStyle).length > 0 ? mergedStyle : void 0,
54
+ ...api.ariaProps,
55
+ ...api.dataAttributes,
56
+ ...props
57
+ });
58
+ }
59
+ );
60
+ var lineWidths = ["100%", "92%", "85%", "96%", "78%", "88%", "94%", "82%"];
61
+ var SkeletonText = React.forwardRef(
62
+ function SkeletonText2({ lines = 3, animate, className, ...props }, ref) {
63
+ const children = [];
64
+ for (let i = 0; i < lines; i++) {
65
+ const width = lineWidths[i % lineWidths.length];
66
+ children.push(
67
+ React.createElement(Skeleton, {
68
+ key: i,
69
+ shape: "text",
70
+ width,
71
+ animate
72
+ })
73
+ );
74
+ }
75
+ return React.createElement(
76
+ "div",
77
+ {
78
+ ref,
79
+ className: cn("space-y-2", className),
80
+ ...props
81
+ },
82
+ ...children
83
+ );
84
+ }
85
+ );
86
+ export {
87
+ Skeleton,
88
+ SkeletonText,
89
+ skeletonVariants
90
+ };
91
+ //# sourceMappingURL=react-skeleton.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../skeleton/src/skeleton.ts", "../../skeleton/src/skeleton.styles.ts", "../../react-skeleton/src/skeleton.tsx"],
4
+ "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type SkeletonShape = 'text' | 'circular' | 'rectangular' | 'rounded'\n\nexport interface SkeletonProps {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Number of lines to render for the text shape variant */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\nexport interface SkeletonAPI {\n /** ARIA attributes to spread on the element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n}\n\nexport function createSkeleton(props: SkeletonProps = {}): SkeletonAPI {\n const { shape = 'text', animate = true } = props\n\n const ariaProps: Partial<AccessibilityProps> = {\n 'aria-hidden': true,\n role: 'presentation',\n }\n\n const dataAttributes: Record<string, string> = {\n 'data-shape': shape,\n 'data-animate': String(animate),\n }\n\n return {\n ariaProps,\n dataAttributes,\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\nexport const skeletonVariants = cva({\n base: 'animate-pulse bg-muted',\n variants: {\n shape: {\n text: 'h-4 w-full rounded',\n circular: 'rounded-full',\n rectangular: 'rounded-none',\n rounded: 'rounded-md',\n },\n },\n defaultVariants: {\n shape: 'text',\n },\n})\n", "import * as React from 'react'\nimport {\n createSkeleton,\n skeletonVariants,\n type SkeletonShape,\n} from '@refraction-ui/skeleton'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n shape?: SkeletonShape\n width?: string | number\n height?: string | number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/**\n * Skeleton component -- renders a placeholder loading element.\n *\n * Uses the headless @refraction-ui/skeleton core for ARIA attributes.\n * Styling via Tailwind utility classes (no external CSS-in-JS).\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n function Skeleton({ shape, width, height, animate, className, style, ...props }, ref) {\n const api = createSkeleton({ shape, animate })\n const classes = cn(skeletonVariants({ shape }), className)\n\n const mergedStyle: React.CSSProperties = {\n ...style,\n ...(width !== undefined ? { width } : {}),\n ...(height !== undefined ? { height } : {}),\n }\n\n return React.createElement('div', {\n ref,\n className: classes,\n style: Object.keys(mergedStyle).length > 0 ? mergedStyle : undefined,\n ...api.ariaProps,\n ...api.dataAttributes,\n ...props,\n })\n },\n)\n\n// ---------------------------------------------------------------------------\n// SkeletonText\n// ---------------------------------------------------------------------------\n\nexport interface SkeletonTextProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Number of text lines to render. Defaults to 3 */\n lines?: number\n /** Whether to animate the skeleton pulse. Defaults to true */\n animate?: boolean\n}\n\n/** Width percentages for each line to create a natural-looking text block */\nconst lineWidths = ['100%', '92%', '85%', '96%', '78%', '88%', '94%', '82%']\n\n/**\n * SkeletonText component -- renders N lines of text-shaped skeletons with\n * slight width variations for a natural loading appearance.\n */\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText({ lines = 3, animate, className, ...props }, ref) {\n const children: React.ReactElement[] = []\n\n for (let i = 0; i < lines; i++) {\n const width = lineWidths[i % lineWidths.length]\n children.push(\n React.createElement(Skeleton, {\n key: i,\n shape: 'text',\n width,\n animate,\n }),\n )\n }\n\n return React.createElement(\n 'div',\n {\n ref,\n className: cn('space-y-2', className),\n ...props,\n },\n ...children,\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;AAqBO,SAAS,eAAe,QAAuB,CAAA,GAAiB;AACrE,QAAM,EAAE,QAAQ,QAAQ,UAAU,KAAA,IAAS;AAE3C,QAAM,YAAyC;IAC7C,eAAe;IACf,MAAM;EAAA;AAGR,QAAM,iBAAyC;IAC7C,cAAc;IACd,gBAAgB,OAAO,OAAO;EAAA;AAGhC,SAAO;IACL;IACA;EAAA;AAEJ;ACpCO,IAAM,mBAAmB,IAAI;EAClC,MAAM;EACN,UAAU;IACR,OAAO;MACL,MAAM;MACN,UAAU;MACV,aAAa;MACb,SAAS;IAAA;EACX;EAEF,iBAAiB;IACf,OAAO;EAAA;AAEX,CAAC;;;ACOM,IAAM,WAAiB;EAC5B,SAASA,UAAS,EAAE,OAAO,OAAO,QAAQ,SAAS,WAAW,OAAO,GAAG,MAAA,GAAS,KAAK;AACpF,UAAM,MAAM,eAAe,EAAE,OAAO,QAAA,CAAS;AAC7C,UAAM,UAAU,GAAG,iBAAiB,EAAE,MAAA,CAAO,GAAG,SAAS;AAEzD,UAAM,cAAmC;MACvC,GAAG;MACH,GAAI,UAAU,SAAY,EAAE,MAAA,IAAU,CAAA;MACtC,GAAI,WAAW,SAAY,EAAE,OAAA,IAAW,CAAA;IAAC;AAG3C,WAAa,oBAAc,OAAO;MAChC;MACA,WAAW;MACX,OAAO,OAAO,KAAK,WAAW,EAAE,SAAS,IAAI,cAAc;MAC3D,GAAG,IAAI;MACP,GAAG,IAAI;MACP,GAAG;IAAA,CACJ;EACH;AACF;AAcA,IAAM,aAAa,CAAC,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAMpE,IAAM,eAAqB;EAChC,SAASC,cAAa,EAAE,QAAQ,GAAG,SAAS,WAAW,GAAG,MAAA,GAAS,KAAK;AACtE,UAAM,WAAiC,CAAA;AAEvC,aAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,YAAM,QAAQ,WAAW,IAAI,WAAW,MAAM;AAC9C,eAAS;QACD,oBAAc,UAAU;UAC5B,KAAK;UACL,OAAO;UACP;UACA;QAAA,CACD;MAAA;IAEL;AAEA,WAAa;MACX;MACA;QACE;QACA,WAAW,GAAG,aAAa,SAAS;QACpC,GAAG;MAAA;MAEL,GAAG;IAAA;EAEP;AACF;",
6
+ "names": ["Skeleton", "SkeletonText"]
7
+ }
@@ -0,0 +1,38 @@
1
+ import {
2
+ cn,
3
+ cva
4
+ } from "./chunk-ZF3OHCGV.js";
5
+
6
+ // ../react-skip-to-content/dist/index.js
7
+ import * as React from "react";
8
+
9
+ // ../skip-to-content/dist/index.js
10
+ function createSkipToContent() {
11
+ return { dataAttributes: { "data-slot": "skip-to-content" } };
12
+ }
13
+ var skipToContentVariants = cva({
14
+ base: "fixed left-4 top-4 z-[100] -translate-y-16 rounded-md border bg-background px-4 py-2 text-sm font-medium shadow-md transition-transform focus:translate-y-0 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2"
15
+ });
16
+
17
+ // ../react-skip-to-content/dist/index.js
18
+ import { jsx } from "react/jsx-runtime";
19
+ var SkipToContent = React.forwardRef(
20
+ function SkipToContent2({ className, targetId = "main-content", children = "Skip to content", ...props }, ref) {
21
+ const api = createSkipToContent();
22
+ return /* @__PURE__ */ jsx(
23
+ "a",
24
+ {
25
+ ref,
26
+ href: `#${targetId}`,
27
+ className: cn(skipToContentVariants(), className),
28
+ ...api.dataAttributes,
29
+ ...props,
30
+ children
31
+ }
32
+ );
33
+ }
34
+ );
35
+ export {
36
+ SkipToContent
37
+ };
38
+ //# sourceMappingURL=react-skip-to-content.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../skip-to-content/src/skip-to-content.ts", "../../react-skip-to-content/src/skip-to-content.tsx"],
4
+ "sourcesContent": ["import { cva } from '@refraction-ui/shared'\n\nexport interface SkipToContentAPI {\n dataAttributes: Record<string, string>\n}\n\nexport function createSkipToContent(): SkipToContentAPI {\n return { dataAttributes: { 'data-slot': 'skip-to-content' } }\n}\n\nexport const skipToContentVariants = cva({\n base: 'fixed left-4 top-4 z-[100] -translate-y-16 rounded-md border bg-background px-4 py-2 text-sm font-medium shadow-md transition-transform focus:translate-y-0 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n})\n", "import * as React from 'react'\nimport {\n createSkipToContent,\n skipToContentVariants,\n} from '@refraction-ui/skip-to-content'\nimport { cn } from '@refraction-ui/shared'\n\nexport interface SkipToContentProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** The target element ID to skip to (without the #) */\n targetId?: string\n}\n\nexport const SkipToContent = React.forwardRef<HTMLAnchorElement, SkipToContentProps>(\n function SkipToContent({ className, targetId = 'main-content', children = 'Skip to content', ...props }, ref) {\n const api = createSkipToContent()\n return (\n <a\n ref={ref}\n href={`#${targetId}`}\n className={cn(skipToContentVariants(), className)}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </a>\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;AAMO,SAAS,sBAAwC;AACtD,SAAO,EAAE,gBAAgB,EAAE,aAAa,kBAAA,EAAkB;AAC5D;AAEO,IAAM,wBAAwB,IAAI;EACvC,MAAM;AACR,CAAC;;;;ACAM,IAAM,gBAAsB;EACjC,SAASA,eAAc,EAAE,WAAW,WAAW,gBAAgB,WAAW,mBAAmB,GAAG,MAAA,GAAS,KAAK;AAC5G,UAAM,MAAM,oBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,MAAM,IAAI,QAAQ;QAClB,WAAW,GAAG,sBAAA,GAAyB,SAAS;QAC/C,GAAG,IAAI;QACP,GAAG;QAEH;MAAA;IAAA;EAGP;AACF;",
6
+ "names": ["SkipToContent"]
7
+ }