@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,631 @@
1
+ import {
2
+ cn,
3
+ devWarn,
4
+ generateId
5
+ } from "./chunk-ZF3OHCGV.js";
6
+
7
+ // ../react-app-shell/dist/index.js
8
+ import * as React from "react";
9
+
10
+ // ../app-shell/dist/index.js
11
+ var DEFAULTS = {
12
+ sidebarWidth: "16rem",
13
+ sidebarCollapsedWidth: "4rem",
14
+ headerHeight: "3.5rem",
15
+ mobileBreakpoint: 768,
16
+ tabletBreakpoint: 1024,
17
+ sidebarPosition: "left",
18
+ sidebarCollapsible: true,
19
+ sidebarDefaultCollapsed: false,
20
+ mobileNavPosition: "bottom"
21
+ };
22
+ function resolveBreakpoint(width, mobileBp, tabletBp) {
23
+ if (width < mobileBp) return "mobile";
24
+ if (width < tabletBp) return "tablet";
25
+ return "desktop";
26
+ }
27
+ function makeState(sidebarOpen, sidebarCollapsed, breakpoint) {
28
+ return {
29
+ sidebarOpen,
30
+ sidebarCollapsed,
31
+ breakpoint,
32
+ isMobile: breakpoint === "mobile",
33
+ isTablet: breakpoint === "tablet",
34
+ isDesktop: breakpoint === "desktop"
35
+ };
36
+ }
37
+ function createAppShell(config) {
38
+ const resolved = {
39
+ ...DEFAULTS,
40
+ ...config ? Object.fromEntries(Object.entries(config).filter(([_, v]) => v !== void 0)) : {}
41
+ };
42
+ let sidebarOpen = false;
43
+ let sidebarCollapsed = resolved.sidebarDefaultCollapsed;
44
+ let breakpoint = "desktop";
45
+ const subscribers = /* @__PURE__ */ new Set();
46
+ const sidebarId = generateId("rfr-shell-sidebar");
47
+ function getState() {
48
+ return makeState(sidebarOpen, sidebarCollapsed, breakpoint);
49
+ }
50
+ function notify() {
51
+ const s = getState();
52
+ for (const fn of subscribers) {
53
+ fn(s);
54
+ }
55
+ }
56
+ function toggleSidebar() {
57
+ if (breakpoint === "mobile") {
58
+ sidebarOpen = !sidebarOpen;
59
+ } else if (resolved.sidebarCollapsible) {
60
+ sidebarCollapsed = !sidebarCollapsed;
61
+ }
62
+ notify();
63
+ }
64
+ function openSidebar() {
65
+ sidebarOpen = true;
66
+ notify();
67
+ }
68
+ function closeSidebar() {
69
+ sidebarOpen = false;
70
+ notify();
71
+ }
72
+ function collapseSidebar() {
73
+ sidebarCollapsed = true;
74
+ notify();
75
+ }
76
+ function expandSidebar() {
77
+ sidebarCollapsed = false;
78
+ notify();
79
+ }
80
+ function setBreakpoint(bp) {
81
+ if (bp === breakpoint) return;
82
+ breakpoint = bp;
83
+ if (bp !== "mobile") {
84
+ sidebarOpen = false;
85
+ }
86
+ notify();
87
+ }
88
+ function getCSSVariables() {
89
+ const currentWidth = sidebarCollapsed ? resolved.sidebarCollapsedWidth : resolved.sidebarWidth;
90
+ return {
91
+ "--shell-sidebar-width": currentWidth,
92
+ "--shell-sidebar-full-width": resolved.sidebarWidth,
93
+ "--shell-sidebar-collapsed-width": resolved.sidebarCollapsedWidth,
94
+ "--shell-header-height": resolved.headerHeight
95
+ };
96
+ }
97
+ function subscribe(fn) {
98
+ subscribers.add(fn);
99
+ return () => {
100
+ subscribers.delete(fn);
101
+ };
102
+ }
103
+ return {
104
+ get state() {
105
+ return getState();
106
+ },
107
+ config: resolved,
108
+ toggleSidebar,
109
+ openSidebar,
110
+ closeSidebar,
111
+ collapseSidebar,
112
+ expandSidebar,
113
+ setBreakpoint,
114
+ getCSSVariables,
115
+ sidebarAriaProps: {
116
+ role: "navigation",
117
+ "aria-label": "Sidebar",
118
+ id: sidebarId
119
+ },
120
+ mainAriaProps: {
121
+ role: "main"
122
+ },
123
+ headerAriaProps: {
124
+ role: "banner"
125
+ },
126
+ mobileNavAriaProps: {
127
+ role: "navigation",
128
+ "aria-label": "Mobile navigation"
129
+ },
130
+ overlayAriaProps: {
131
+ "aria-hidden": "true"
132
+ },
133
+ subscribe
134
+ };
135
+ }
136
+ var DEFAULTS2 = {
137
+ maxWidth: "80rem",
138
+ navHeight: "4rem",
139
+ navTransparent: false,
140
+ navSticky: true,
141
+ footerColumns: 4
142
+ };
143
+ var BACKGROUND_CLASSES = {
144
+ default: "",
145
+ muted: "bg-muted",
146
+ primary: "bg-primary text-primary-foreground",
147
+ none: ""
148
+ };
149
+ function createPageShell(config) {
150
+ const resolved = {
151
+ ...DEFAULTS2,
152
+ ...config ? Object.fromEntries(Object.entries(config).filter(([_, v]) => v !== void 0)) : {}
153
+ };
154
+ function getSectionClasses(sectionConfig) {
155
+ const {
156
+ fullWidth = false,
157
+ maxWidth,
158
+ padding = true,
159
+ background = "default"
160
+ } = sectionConfig ?? {};
161
+ const classes = [];
162
+ if (!fullWidth) {
163
+ classes.push("mx-auto");
164
+ classes.push("w-full");
165
+ if (maxWidth) {
166
+ classes.push(`max-w-${maxWidth}`);
167
+ } else {
168
+ classes.push("max-w-[var(--page-max-width)]");
169
+ }
170
+ }
171
+ if (padding) {
172
+ classes.push("px-4 sm:px-6 lg:px-8");
173
+ }
174
+ const bg = BACKGROUND_CLASSES[background];
175
+ if (bg) {
176
+ classes.push(bg);
177
+ }
178
+ return classes.join(" ");
179
+ }
180
+ function getCSSVariables() {
181
+ return {
182
+ "--page-max-width": resolved.maxWidth,
183
+ "--page-nav-height": resolved.navHeight,
184
+ "--page-footer-columns": String(resolved.footerColumns)
185
+ };
186
+ }
187
+ return {
188
+ config: resolved,
189
+ navAriaProps: {
190
+ role: "navigation",
191
+ "aria-label": "Main navigation"
192
+ },
193
+ footerAriaProps: {
194
+ role: "contentinfo"
195
+ },
196
+ getSectionClasses,
197
+ getCSSVariables
198
+ };
199
+ }
200
+ var DEFAULTS3 = {
201
+ maxWidth: "sm",
202
+ position: "center",
203
+ showBackground: true
204
+ };
205
+ var MAX_WIDTH_CLASSES = {
206
+ xs: "max-w-xs",
207
+ sm: "max-w-sm",
208
+ md: "max-w-md"
209
+ };
210
+ function createAuthShell(config) {
211
+ const resolved = {
212
+ ...DEFAULTS3,
213
+ ...config ? Object.fromEntries(Object.entries(config).filter(([_, v]) => v !== void 0)) : {}
214
+ };
215
+ const containerParts = ["min-h-screen", "flex", "w-full"];
216
+ if (resolved.position === "center") {
217
+ containerParts.push("items-center", "justify-center");
218
+ } else {
219
+ containerParts.push("items-center", "justify-start", "pl-8 sm:pl-16 lg:pl-24");
220
+ }
221
+ if (resolved.showBackground) {
222
+ containerParts.push("bg-muted");
223
+ }
224
+ const cardParts = [
225
+ "w-full",
226
+ MAX_WIDTH_CLASSES[resolved.maxWidth],
227
+ "rounded-lg",
228
+ "border",
229
+ "bg-card",
230
+ "p-6",
231
+ "shadow-sm"
232
+ ];
233
+ return {
234
+ config: resolved,
235
+ containerClasses: containerParts.join(" "),
236
+ cardClasses: cardParts.join(" "),
237
+ ariaProps: {
238
+ role: "main",
239
+ "aria-label": "Authentication"
240
+ }
241
+ };
242
+ }
243
+
244
+ // ../react-app-shell/dist/index.js
245
+ var AppShellContext = React.createContext(null);
246
+ function useAppShell() {
247
+ const ctx = React.useContext(AppShellContext);
248
+ if (!ctx) {
249
+ devWarn(
250
+ "react-app-shell/use-app-shell-outside-provider",
251
+ "useAppShell() was called outside of <AppShell>. Wrap the consuming component tree in <AppShell>."
252
+ );
253
+ throw new Error("useAppShell must be used within <AppShell>");
254
+ }
255
+ return ctx;
256
+ }
257
+ var AppShellRoot = React.forwardRef(
258
+ function AppShell({ config, children, className }, ref) {
259
+ const apiRef = React.useRef(null);
260
+ if (apiRef.current === null) {
261
+ apiRef.current = createAppShell(config);
262
+ }
263
+ const api = apiRef.current;
264
+ const [state, setState] = React.useState(() => api.state);
265
+ React.useEffect(() => {
266
+ setState(api.state);
267
+ return api.subscribe((s) => setState(s));
268
+ }, [api]);
269
+ React.useEffect(() => {
270
+ if (typeof window === "undefined") return;
271
+ const { mobileBreakpoint, tabletBreakpoint } = api.config;
272
+ const mobileQuery = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);
273
+ const tabletQuery = window.matchMedia(
274
+ `(min-width: ${mobileBreakpoint}px) and (max-width: ${tabletBreakpoint - 1}px)`
275
+ );
276
+ function update() {
277
+ const width = window.innerWidth;
278
+ const bp = resolveBreakpoint(width, mobileBreakpoint, tabletBreakpoint);
279
+ api.setBreakpoint(bp);
280
+ }
281
+ update();
282
+ mobileQuery.addEventListener("change", update);
283
+ tabletQuery.addEventListener("change", update);
284
+ return () => {
285
+ mobileQuery.removeEventListener("change", update);
286
+ tabletQuery.removeEventListener("change", update);
287
+ };
288
+ }, [api]);
289
+ const cssVars = api.getCSSVariables();
290
+ const ctxValue = React.useMemo(
291
+ () => ({ api, state }),
292
+ [api, state]
293
+ );
294
+ return React.createElement(
295
+ AppShellContext.Provider,
296
+ { value: ctxValue },
297
+ React.createElement(
298
+ "div",
299
+ {
300
+ ref,
301
+ className: cn("flex h-screen w-full overflow-hidden", className),
302
+ style: cssVars,
303
+ "data-shell": ""
304
+ },
305
+ children
306
+ )
307
+ );
308
+ }
309
+ );
310
+ var Sidebar = React.forwardRef(
311
+ function Sidebar2({ children, className }, ref) {
312
+ const { api, state } = useAppShell();
313
+ const isRight = api.config.sidebarPosition === "right";
314
+ const baseClasses = [
315
+ "flex flex-col shrink-0 overflow-y-auto overflow-x-hidden",
316
+ "bg-background border-r",
317
+ "transition-[width,transform] duration-200 ease-in-out",
318
+ "h-full"
319
+ ];
320
+ if (isRight) {
321
+ baseClasses[1] = "flex flex-col shrink-0 overflow-y-auto overflow-x-hidden bg-background border-l";
322
+ }
323
+ const mobileClasses = state.isMobile ? [
324
+ "fixed top-0 z-40",
325
+ isRight ? "right-0" : "left-0",
326
+ "w-[var(--shell-sidebar-full-width)]",
327
+ state.sidebarOpen ? "translate-x-0" : isRight ? "translate-x-full" : "-translate-x-full"
328
+ ] : ["relative", "w-[var(--shell-sidebar-width)]"];
329
+ return React.createElement(
330
+ "aside",
331
+ {
332
+ ref,
333
+ ...api.sidebarAriaProps,
334
+ className: cn(baseClasses.join(" "), mobileClasses.join(" "), className),
335
+ "data-collapsed": state.sidebarCollapsed ? "" : void 0,
336
+ "data-open": state.sidebarOpen ? "" : void 0
337
+ },
338
+ children
339
+ );
340
+ }
341
+ );
342
+ var Main = React.forwardRef(
343
+ function Main2({ children, className }, ref) {
344
+ return React.createElement(
345
+ "div",
346
+ {
347
+ ref,
348
+ className: cn("flex flex-1 flex-col min-w-0 h-full", className)
349
+ },
350
+ children
351
+ );
352
+ }
353
+ );
354
+ var Header = React.forwardRef(
355
+ function Header2({ children, className }, ref) {
356
+ const { api, state } = useAppShell();
357
+ const hamburger = state.isMobile ? React.createElement(
358
+ "button",
359
+ {
360
+ type: "button",
361
+ "aria-label": "Toggle sidebar",
362
+ "aria-expanded": state.sidebarOpen,
363
+ "aria-controls": api.sidebarAriaProps.id,
364
+ onClick: () => api.toggleSidebar(),
365
+ className: "inline-flex items-center justify-center p-2 mr-2"
366
+ },
367
+ React.createElement(
368
+ "svg",
369
+ {
370
+ xmlns: "http://www.w3.org/2000/svg",
371
+ width: 24,
372
+ height: 24,
373
+ viewBox: "0 0 24 24",
374
+ fill: "none",
375
+ stroke: "currentColor",
376
+ strokeWidth: 2,
377
+ strokeLinecap: "round",
378
+ strokeLinejoin: "round",
379
+ "aria-hidden": "true"
380
+ },
381
+ React.createElement("line", { x1: 3, y1: 6, x2: 21, y2: 6 }),
382
+ React.createElement("line", { x1: 3, y1: 12, x2: 21, y2: 12 }),
383
+ React.createElement("line", { x1: 3, y1: 18, x2: 21, y2: 18 })
384
+ )
385
+ ) : null;
386
+ return React.createElement(
387
+ "header",
388
+ {
389
+ ref,
390
+ ...api.headerAriaProps,
391
+ className: cn(
392
+ "sticky top-0 z-30 flex items-center shrink-0",
393
+ "h-[var(--shell-header-height)]",
394
+ "border-b bg-background px-4",
395
+ className
396
+ )
397
+ },
398
+ hamburger,
399
+ children
400
+ );
401
+ }
402
+ );
403
+ var Content = React.forwardRef(
404
+ function Content2({ children, className, maxWidth }, ref) {
405
+ const { api } = useAppShell();
406
+ const mwClass = maxWidth ? `max-w-${maxWidth}` : "";
407
+ return React.createElement(
408
+ "main",
409
+ {
410
+ ref,
411
+ ...api.mainAriaProps,
412
+ className: cn(
413
+ "flex-1 overflow-y-auto",
414
+ mwClass ? `${mwClass} mx-auto w-full` : "",
415
+ "px-4 sm:px-6 lg:px-8 py-6",
416
+ className
417
+ )
418
+ },
419
+ children
420
+ );
421
+ }
422
+ );
423
+ var MobileNav = React.forwardRef(
424
+ function MobileNav2({ children, className }, ref) {
425
+ const { api, state } = useAppShell();
426
+ if (!state.isMobile) return null;
427
+ if (api.config.mobileNavPosition === "none") return null;
428
+ return React.createElement(
429
+ "nav",
430
+ {
431
+ ref,
432
+ ...api.mobileNavAriaProps,
433
+ className: cn(
434
+ "fixed bottom-0 left-0 right-0 z-30",
435
+ "flex items-center justify-around",
436
+ "border-t bg-background",
437
+ "h-14",
438
+ className
439
+ )
440
+ },
441
+ children
442
+ );
443
+ }
444
+ );
445
+ var Overlay = React.forwardRef(
446
+ function Overlay2({ className }, ref) {
447
+ const { api, state } = useAppShell();
448
+ if (!state.isMobile || !state.sidebarOpen) return null;
449
+ return React.createElement("div", {
450
+ ref,
451
+ ...api.overlayAriaProps,
452
+ className: cn(
453
+ "fixed inset-0 z-30 bg-black/50 transition-opacity",
454
+ className
455
+ ),
456
+ onClick: () => api.closeSidebar(),
457
+ "data-shell-overlay": ""
458
+ });
459
+ }
460
+ );
461
+ var AppShell2 = Object.assign(AppShellRoot, {
462
+ Sidebar,
463
+ Main,
464
+ Header,
465
+ Content,
466
+ MobileNav,
467
+ Overlay
468
+ });
469
+ var PageShellContext = React.createContext(null);
470
+ function usePageShell() {
471
+ const ctx = React.useContext(PageShellContext);
472
+ if (!ctx) {
473
+ devWarn(
474
+ "react-app-shell/page-shell-compound-outside-provider",
475
+ "A PageShell compound component was rendered outside of <PageShell>. Wrap it in <PageShell>."
476
+ );
477
+ throw new Error("PageShell compound components must be used within <PageShell>");
478
+ }
479
+ return ctx;
480
+ }
481
+ var PageShellRoot = function PageShell({ config, children, className }) {
482
+ const apiRef = React.useRef(null);
483
+ if (apiRef.current === null) {
484
+ apiRef.current = createPageShell(config);
485
+ }
486
+ const api = apiRef.current;
487
+ const cssVars = api.getCSSVariables();
488
+ const ctxValue = React.useMemo(
489
+ () => ({ api }),
490
+ [api]
491
+ );
492
+ return React.createElement(
493
+ PageShellContext.Provider,
494
+ { value: ctxValue },
495
+ React.createElement(
496
+ "div",
497
+ {
498
+ className: cn("flex min-h-screen flex-col", className),
499
+ style: cssVars,
500
+ "data-page-shell": ""
501
+ },
502
+ children
503
+ )
504
+ );
505
+ };
506
+ function Nav({ children, className }) {
507
+ const { api } = usePageShell();
508
+ const stickyClass = api.config.navSticky ? "sticky top-0 z-40" : "";
509
+ const transparentClass = api.config.navTransparent ? "bg-transparent" : "bg-background border-b";
510
+ return React.createElement(
511
+ "nav",
512
+ {
513
+ ...api.navAriaProps,
514
+ className: cn(
515
+ "flex items-center h-[var(--page-nav-height)] px-4 sm:px-6 lg:px-8",
516
+ stickyClass,
517
+ transparentClass,
518
+ className
519
+ )
520
+ },
521
+ children
522
+ );
523
+ }
524
+ function Section({
525
+ children,
526
+ className,
527
+ fullWidth,
528
+ maxWidth,
529
+ padding,
530
+ background
531
+ }) {
532
+ const { api } = usePageShell();
533
+ const sectionClasses = api.getSectionClasses({ fullWidth, maxWidth, padding, background });
534
+ return React.createElement(
535
+ "section",
536
+ {
537
+ className: cn("py-12", sectionClasses, className)
538
+ },
539
+ children
540
+ );
541
+ }
542
+ function Footer({ children, className, columns }) {
543
+ const { api } = usePageShell();
544
+ const cols = columns ?? api.config.footerColumns;
545
+ return React.createElement(
546
+ "footer",
547
+ {
548
+ ...api.footerAriaProps,
549
+ className: cn(
550
+ "border-t bg-muted py-12 px-4 sm:px-6 lg:px-8",
551
+ className
552
+ )
553
+ },
554
+ React.createElement(
555
+ "div",
556
+ {
557
+ className: `mx-auto max-w-[var(--page-max-width)] grid gap-8`,
558
+ style: {
559
+ gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`
560
+ }
561
+ },
562
+ children
563
+ )
564
+ );
565
+ }
566
+ var PageShell2 = Object.assign(PageShellRoot, {
567
+ Nav,
568
+ Section,
569
+ Footer
570
+ });
571
+ var AuthShellContext = React.createContext(null);
572
+ function useAuthShell() {
573
+ const ctx = React.useContext(AuthShellContext);
574
+ if (!ctx) {
575
+ devWarn(
576
+ "react-app-shell/auth-shell-compound-outside-provider",
577
+ "An AuthShell compound component was rendered outside of <AuthShell>. Wrap it in <AuthShell>."
578
+ );
579
+ throw new Error("AuthShell compound components must be used within <AuthShell>");
580
+ }
581
+ return ctx;
582
+ }
583
+ var AuthShellRoot = function AuthShell({ config, children, className }) {
584
+ const apiRef = React.useRef(null);
585
+ if (apiRef.current === null) {
586
+ apiRef.current = createAuthShell(config);
587
+ }
588
+ const api = apiRef.current;
589
+ const ctxValue = React.useMemo(
590
+ () => ({ api }),
591
+ [api]
592
+ );
593
+ return React.createElement(
594
+ AuthShellContext.Provider,
595
+ { value: ctxValue },
596
+ React.createElement(
597
+ "div",
598
+ {
599
+ ...api.ariaProps,
600
+ className: cn(api.containerClasses, className),
601
+ "data-auth-shell": ""
602
+ },
603
+ children
604
+ )
605
+ );
606
+ };
607
+ function AuthShellCard({ children, className }) {
608
+ const { api } = useAuthShell();
609
+ return React.createElement(
610
+ "div",
611
+ {
612
+ className: cn(api.cardClasses, className),
613
+ "data-auth-card": ""
614
+ },
615
+ children
616
+ );
617
+ }
618
+ var AuthShell2 = Object.assign(AuthShellRoot, {
619
+ Card: AuthShellCard
620
+ });
621
+ export {
622
+ AppShell2 as AppShell,
623
+ AuthShell2 as AuthShell,
624
+ PageShell2 as PageShell,
625
+ createAppShell,
626
+ createAuthShell,
627
+ createPageShell,
628
+ resolveBreakpoint,
629
+ useAppShell
630
+ };
631
+ //# sourceMappingURL=react-app-shell.js.map