@refraction-ui/react 0.20.1 → 0.22.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 (208) hide show
  1. package/dist/{chunk-ZF3OHCGV.js → chunk-2Q6HHFAN.js} +1 -1
  2. package/dist/chunk-2Q6HHFAN.js.map +7 -0
  3. package/dist/{chunk-533MCMSU.js → chunk-3I3DYDHR.js} +2 -2
  4. package/dist/{chunk-F7B64KT3.js → chunk-3Y2T26QD.js} +13 -7
  5. package/dist/chunk-3Y2T26QD.js.map +7 -0
  6. package/dist/{chunk-H54FLNAF.js → chunk-63N4PZUJ.js} +2 -2
  7. package/dist/{chunk-Y2FNNAIL.js → chunk-EGVPAMQU.js} +2 -2
  8. package/dist/chunk-EGVPAMQU.js.map +1 -0
  9. package/dist/{chunk-WK2IIUFO.js → chunk-QDMLIDYN.js} +2 -2
  10. package/dist/{chunk-BOLFYVI6.js → chunk-QPCKJ2YR.js} +2 -2
  11. package/dist/{chunk-TOZBR4GL.js → chunk-RSWOLRIC.js} +4 -4
  12. package/dist/{chunk-TOZBR4GL.js.map → chunk-RSWOLRIC.js.map} +1 -1
  13. package/dist/{chunk-UNEM2TRI.js → chunk-SDAJVXD4.js} +2 -2
  14. package/dist/{chunk-VK3EQ34F.js → chunk-V24GDHUX.js} +2 -2
  15. package/dist/{chunk-AMK4VCBG.js → chunk-WYKPPK3W.js} +2 -2
  16. package/dist/{chunk-ONACRMG4.js → chunk-XMFNBOPO.js} +2 -2
  17. package/dist/form.cjs.map +1 -1
  18. package/dist/form.js +1 -1
  19. package/dist/index.cjs +632 -47
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +4 -0
  22. package/dist/index.d.ts +4 -0
  23. package/dist/index.js +4 -0
  24. package/dist/internal/action-list/index.d.ts +39 -0
  25. package/dist/internal/badge/index.d.cts +2 -2
  26. package/dist/internal/badge/index.d.ts +2 -2
  27. package/dist/internal/button/index.d.cts +4 -4
  28. package/dist/internal/button/index.d.ts +4 -4
  29. package/dist/internal/card/index.d.cts +14 -2
  30. package/dist/internal/card/index.d.ts +14 -2
  31. package/dist/internal/funnel-chart/index.d.ts +60 -0
  32. package/dist/internal/line-chart/index.d.ts +110 -0
  33. package/dist/internal/page-header/index.d.ts +35 -0
  34. package/dist/internal/react-action-list/index.d.ts +28 -0
  35. package/dist/internal/react-card/index.d.cts +12 -3
  36. package/dist/internal/react-card/index.d.ts +12 -3
  37. package/dist/internal/react-funnel-chart/index.d.ts +28 -0
  38. package/dist/internal/react-line-chart/index.d.ts +33 -0
  39. package/dist/internal/react-page-header/index.d.ts +23 -0
  40. package/dist/internal/react-select/index.d.cts +21 -3
  41. package/dist/internal/react-select/index.d.ts +21 -3
  42. package/dist/internal/react-separator/index.d.cts +6 -1
  43. package/dist/internal/react-separator/index.d.ts +6 -1
  44. package/dist/internal/select/index.d.cts +14 -1
  45. package/dist/internal/select/index.d.ts +14 -1
  46. package/dist/internal/separator/index.d.cts +6 -1
  47. package/dist/internal/separator/index.d.ts +6 -1
  48. package/dist/internal/shared/index.d.cts +6 -3
  49. package/dist/internal/shared/index.d.ts +6 -3
  50. package/dist/internal/tabs/index.d.cts +8 -1
  51. package/dist/internal/tabs/index.d.ts +8 -1
  52. package/dist/react-accordion.js +1 -1
  53. package/dist/react-action-list.js +74 -0
  54. package/dist/react-action-list.js.map +7 -0
  55. package/dist/react-ai.js +1 -1
  56. package/dist/react-analytics.js +1 -1
  57. package/dist/react-animated-text.js +1 -1
  58. package/dist/react-app-shell.js +1 -1
  59. package/dist/react-audience-feature-card.js +1 -1
  60. package/dist/react-audio-room.js +1 -1
  61. package/dist/react-auth.js +1 -1
  62. package/dist/react-avatar-group.js +1 -1
  63. package/dist/react-avatar.js +1 -1
  64. package/dist/react-badge.js +16 -4
  65. package/dist/react-badge.js.map +2 -2
  66. package/dist/react-bottom-nav.js +1 -1
  67. package/dist/react-brand-network-cell.js +1 -1
  68. package/dist/react-breadcrumbs.js +1 -1
  69. package/dist/react-browser-chrome-mock.js +1 -1
  70. package/dist/react-browser-chrome-mock.js.map +2 -2
  71. package/dist/react-button.js +3 -3
  72. package/dist/react-calendar.js +1 -1
  73. package/dist/react-call-controls.js +1 -1
  74. package/dist/react-callout.js +8 -3
  75. package/dist/react-callout.js.map +2 -2
  76. package/dist/react-card-grid.js +1 -1
  77. package/dist/react-card.js +15 -6
  78. package/dist/react-card.js.map +2 -2
  79. package/dist/react-carousel.js +1 -1
  80. package/dist/react-charts.js +1 -1
  81. package/dist/react-checkbox.js +1 -1
  82. package/dist/react-checklist.js +1 -1
  83. package/dist/react-code-block.js +1 -1
  84. package/dist/react-code-editor.js +1 -1
  85. package/dist/react-collapsible.js +1 -1
  86. package/dist/react-combobox.js +1 -1
  87. package/dist/react-command-input.js +1 -1
  88. package/dist/react-command.js +1 -1
  89. package/dist/react-composer.js +3 -3
  90. package/dist/react-content-protection.js +1 -1
  91. package/dist/react-conversation.js +5 -5
  92. package/dist/react-cookie-consent.js +1 -1
  93. package/dist/react-data-table.js +1 -1
  94. package/dist/react-date-picker.js +1 -1
  95. package/dist/react-device-frame.js +1 -1
  96. package/dist/react-dialog.js +2 -2
  97. package/dist/react-diff-viewer.js +4 -1
  98. package/dist/react-diff-viewer.js.map +2 -2
  99. package/dist/react-dropdown-menu.js +1 -1
  100. package/dist/react-editor-status-bar.js +1 -1
  101. package/dist/react-editor-tabs.js +1 -1
  102. package/dist/react-emoji-picker.js +2 -2
  103. package/dist/react-empty-state.js +1 -1
  104. package/dist/react-feedback-dialog.js +2 -2
  105. package/dist/react-file-tree.js +1 -1
  106. package/dist/react-file-upload.js +1 -1
  107. package/dist/react-floating-reactions.js +1 -1
  108. package/dist/react-flow-editor.js +2 -2
  109. package/dist/react-footer.js +1 -1
  110. package/dist/react-funnel-chart.js +105 -0
  111. package/dist/react-funnel-chart.js.map +7 -0
  112. package/dist/react-graph-view.js +2 -2
  113. package/dist/react-infinite-canvas.js +2 -2
  114. package/dist/react-inline-editor.js +1 -1
  115. package/dist/react-input-group.js +1 -1
  116. package/dist/react-input.js +2 -2
  117. package/dist/react-install-prompt.js +1 -1
  118. package/dist/react-kanban-board.js +1 -1
  119. package/dist/react-keyboard-shortcut.js +2 -2
  120. package/dist/react-language-selector.js +1 -1
  121. package/dist/react-line-chart.js +242 -0
  122. package/dist/react-line-chart.js.map +7 -0
  123. package/dist/react-link-card.js +1 -1
  124. package/dist/react-live-captions.js +1 -1
  125. package/dist/react-live-cursors.js +1 -1
  126. package/dist/react-live-transcript.js +1 -1
  127. package/dist/react-location-selector.js +1 -1
  128. package/dist/react-logger.js +1 -1
  129. package/dist/react-markdown-renderer.js +2 -2
  130. package/dist/react-marquee-strip.js +1 -1
  131. package/dist/react-mascot.js +1 -1
  132. package/dist/react-mastery-bar.js +1 -1
  133. package/dist/react-mini-map.js +1 -1
  134. package/dist/react-mobile-nav.js +1 -1
  135. package/dist/react-navbar.js +1 -1
  136. package/dist/react-numbered-steps.js +1 -1
  137. package/dist/react-otp-input.js +1 -1
  138. package/dist/react-page-header.js +40 -0
  139. package/dist/react-page-header.js.map +7 -0
  140. package/dist/react-pagination.js +1 -1
  141. package/dist/react-password-input.js +2 -2
  142. package/dist/react-payment.js +1 -1
  143. package/dist/react-popover.js +1 -1
  144. package/dist/react-pre-call-lobby.js +1 -1
  145. package/dist/react-presence-indicator.js +1 -1
  146. package/dist/react-pricing-card.js +1 -1
  147. package/dist/react-progress-display.js +2 -2
  148. package/dist/react-progress-display.js.map +1 -1
  149. package/dist/react-radial-gauge.js +1 -1
  150. package/dist/react-radio.js +1 -1
  151. package/dist/react-rating-scale.js +1 -1
  152. package/dist/react-reaction-bar.js +1 -1
  153. package/dist/react-resizable-layout.js +1 -1
  154. package/dist/react-search-bar.js +1 -1
  155. package/dist/react-section-head.js +1 -1
  156. package/dist/react-segmented-control.js +1 -1
  157. package/dist/react-select.js +94 -20
  158. package/dist/react-select.js.map +3 -3
  159. package/dist/react-separator.js +19 -7
  160. package/dist/react-separator.js.map +2 -2
  161. package/dist/react-sheet.js +1 -1
  162. package/dist/react-sidebar.js +1 -1
  163. package/dist/react-skeleton.js +1 -1
  164. package/dist/react-skip-to-content.js +1 -1
  165. package/dist/react-slide-viewer.js +3 -1
  166. package/dist/react-slide-viewer.js.map +2 -2
  167. package/dist/react-slider.js +1 -1
  168. package/dist/react-slot-picker.js +1 -1
  169. package/dist/react-social-auth-button.js +3 -3
  170. package/dist/react-sortable-list.js +1 -1
  171. package/dist/react-stat-grid.js +1 -1
  172. package/dist/react-status-indicator.js +1 -1
  173. package/dist/react-steps.js +1 -1
  174. package/dist/react-sticky-note.js +3 -1
  175. package/dist/react-sticky-note.js.map +2 -2
  176. package/dist/react-switch.js +1 -1
  177. package/dist/react-table-of-contents.js +1 -1
  178. package/dist/react-tabs.js +50 -2
  179. package/dist/react-tabs.js.map +2 -2
  180. package/dist/react-terminal.js +1 -1
  181. package/dist/react-test-results.js +1 -1
  182. package/dist/react-textarea.js +3 -3
  183. package/dist/react-textarea.js.map +1 -1
  184. package/dist/react-thread-view.js +2 -2
  185. package/dist/react-timeline.js +1 -1
  186. package/dist/react-toast.js +1 -1
  187. package/dist/react-tooltip.js +1 -1
  188. package/dist/react-version-selector.js +1 -1
  189. package/dist/react-video-grid.js +2 -2
  190. package/dist/react-video-player.js +1 -1
  191. package/dist/react-video-tile.js +2 -2
  192. package/dist/react-voice-pill.js +1 -1
  193. package/dist/react-waveform.js +1 -1
  194. package/dist/react-wizard.js +1 -1
  195. package/dist/styles.css +48 -0
  196. package/dist/theme.js +1 -1
  197. package/package.json +5 -1
  198. package/dist/chunk-F7B64KT3.js.map +0 -7
  199. package/dist/chunk-Y2FNNAIL.js.map +0 -1
  200. package/dist/chunk-ZF3OHCGV.js.map +0 -7
  201. /package/dist/{chunk-533MCMSU.js.map → chunk-3I3DYDHR.js.map} +0 -0
  202. /package/dist/{chunk-H54FLNAF.js.map → chunk-63N4PZUJ.js.map} +0 -0
  203. /package/dist/{chunk-WK2IIUFO.js.map → chunk-QDMLIDYN.js.map} +0 -0
  204. /package/dist/{chunk-BOLFYVI6.js.map → chunk-QPCKJ2YR.js.map} +0 -0
  205. /package/dist/{chunk-UNEM2TRI.js.map → chunk-SDAJVXD4.js.map} +0 -0
  206. /package/dist/{chunk-VK3EQ34F.js.map → chunk-V24GDHUX.js.map} +0 -0
  207. /package/dist/{chunk-AMK4VCBG.js.map → chunk-WYKPPK3W.js.map} +0 -0
  208. /package/dist/{chunk-ONACRMG4.js.map → chunk-XMFNBOPO.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../browser-chrome-mock/src/browser-chrome-mock.ts", "../../browser-chrome-mock/src/browser-chrome-mock.styles.ts", "../../react-browser-chrome-mock/src/browser-chrome-mock.tsx"],
4
- "sourcesContent": ["/** Recording or live stream status for the browser chrome mock. */\nexport type BrowserChromeStatus = 'live' | 'rec'\n\nexport interface BrowserChromeMockProps {\n /** URL to display in the address bar. */\n url: string\n /** Optional status badge shown in the chrome bar. */\n status?: BrowserChromeStatus\n}\n\nexport interface BrowserChromeMockAPI {\n /** ARIA attributes to spread on the group element. */\n ariaProps: { role: 'group'; 'aria-label': string }\n /** Data attributes for styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/** Split a URL into bold domain and normal path segments. */\nexport function splitUrl(url: string): { domain: string; path: string } {\n const slashIndex = url.indexOf('/')\n if (slashIndex === -1) {\n return { domain: url, path: '' }\n }\n return {\n domain: url.slice(0, slashIndex),\n path: url.slice(slashIndex),\n }\n}\n\n/**\n * Build the framework-agnostic props for a BrowserChromeMock.\n *\n * Returns a `role=\"group\"` aria label plus optional `data-status` so adapters\n * can hook CSS without duplicating logic.\n */\nexport function createBrowserChromeMock(\n props: Pick<BrowserChromeMockProps, 'status'> = {},\n): BrowserChromeMockAPI {\n const { status } = props\n\n const ariaProps = {\n role: 'group' as const,\n 'aria-label': 'Browser preview',\n }\n\n const dataAttributes: Record<string, string> = {}\n if (status !== undefined) {\n dataAttributes['data-status'] = status\n }\n\n return { ariaProps, dataAttributes }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/** Outer frame wrapping the chrome bar and content. */\nexport const browserChromeMockVariants = cva({\n base: 'rounded-xl border border-border overflow-hidden bg-card',\n variants: {},\n defaultVariants: {},\n})\n\n/** The chrome toolbar row containing dots, URL bar, and optional badge. */\nexport const chromeBarClass =\n 'flex items-center gap-2 bg-muted/40 border-b border-border px-3 py-2'\n\n/** A single traffic-light dot. */\nexport const trafficDotClass = 'size-2.5 rounded-full border border-border'\n\n/** Centered URL bar. */\nexport const urlBarClass = 'flex-1 text-center font-mono text-[11px] text-muted-foreground'\n\n/** Bold domain segment inside the URL bar. */\nexport const urlDomainClass = 'font-semibold text-foreground'\n\n/**\n * Status badge shown in the chrome bar.\n *\n * live → emerald tint (approved exception to semantic tokens)\n * rec → destructive tint with a pulsing dot\n */\nexport const statusBadgeVariants = cva({\n base: 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide',\n variants: {\n status: {\n live: 'text-emerald-500 bg-emerald-500/10',\n rec: 'text-destructive bg-destructive/10',\n },\n },\n defaultVariants: {\n status: 'live',\n },\n})\n\n/** Inner content area that receives slotted/children content. */\nexport const contentAreaClass = 'p-0'\n", "import * as React from 'react'\nimport {\n createBrowserChromeMock,\n splitUrl,\n browserChromeMockVariants,\n chromeBarClass,\n trafficDotClass,\n urlBarClass,\n urlDomainClass,\n statusBadgeVariants,\n contentAreaClass,\n type BrowserChromeStatus,\n} from '@refraction-ui/browser-chrome-mock'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { BrowserChromeStatus }\n\nexport interface BrowserChromeMockProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'content'> {\n /** URL to display in the address bar. Bold domain + normal path. */\n url: string\n /** Optional status badge shown in the chrome bar. */\n status?: BrowserChromeStatus\n}\n\n/** Three traffic-light dots rendered in the chrome bar. */\nconst TRAFFIC_DOTS = ['bg-red-400', 'bg-yellow-400', 'bg-green-400'] as const\n\n/**\n * BrowserChromeMock — a decorative browser window frame.\n *\n * Renders a mock browser chrome with traffic-light dots, a monospace URL bar\n * (bold domain + normal path), an optional live/rec status badge, and a\n * content area for arbitrary children. Logic and styles come from the headless\n * `@refraction-ui/browser-chrome-mock` core.\n */\nexport const BrowserChromeMock = React.forwardRef<\n HTMLDivElement,\n BrowserChromeMockProps\n>(function BrowserChromeMock({ url, status, className, children, ...props }, ref) {\n const { ariaProps, dataAttributes } = createBrowserChromeMock({ status })\n const { domain, path } = splitUrl(url)\n\n return (\n <div\n ref={ref}\n className={cn(browserChromeMockVariants(), className)}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n >\n {/* Chrome toolbar */}\n <div className={chromeBarClass}>\n {/* Traffic-light dots */}\n <div className=\"flex items-center gap-1.5 shrink-0\">\n {TRAFFIC_DOTS.map((color) => (\n <span key={color} className={cn(trafficDotClass, color)} />\n ))}\n </div>\n\n {/* URL bar */}\n <div className={urlBarClass}>\n <span className={urlDomainClass}>{domain}</span>\n {path && <span>{path}</span>}\n </div>\n\n {/* Status badge */}\n {status && (\n <div className={statusBadgeVariants({ status })}>\n {status === 'rec' && (\n <span className=\"size-1.5 rounded-full bg-destructive animate-pulse\" />\n )}\n {status}\n </div>\n )}\n </div>\n\n {/* Content area */}\n <div className={contentAreaClass}>{children}</div>\n </div>\n )\n})\n"],
5
- "mappings": ";;;;;;;;;AAkBO,SAAS,SAAS,KAA+C;AACtE,QAAM,aAAa,IAAI,QAAQ,GAAG;AAClC,MAAI,eAAe,IAAI;AACrB,WAAO,EAAE,QAAQ,KAAK,MAAM,GAAA;EAC9B;AACA,SAAO;IACL,QAAQ,IAAI,MAAM,GAAG,UAAU;IAC/B,MAAM,IAAI,MAAM,UAAU;EAAA;AAE9B;AAQO,SAAS,wBACd,QAAgD,CAAA,GAC1B;AACtB,QAAM,EAAE,OAAA,IAAW;AAEnB,QAAM,YAAY;IAChB,MAAM;IACN,cAAc;EAAA;AAGhB,QAAM,iBAAyC,CAAA;AAC/C,MAAI,WAAW,QAAW;AACxB,mBAAe,aAAa,IAAI;EAClC;AAEA,SAAO,EAAE,WAAW,eAAA;AACtB;AChDO,IAAM,4BAA4B,IAAI;EAC3C,MAAM;EACN,UAAU,CAAA;EACV,iBAAiB,CAAA;AACnB,CAAC;AAGM,IAAM,iBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,cAAc;AAGpB,IAAM,iBAAiB;AAQvB,IAAM,sBAAsB,IAAI;EACrC,MAAM;EACN,UAAU;IACR,QAAQ;MACN,MAAM;MACN,KAAK;IAAA;EACP;EAEF,iBAAiB;IACf,QAAQ;EAAA;AAEZ,CAAC;AAGM,IAAM,mBAAmB;;;;AChBhC,IAAM,eAAe,CAAC,cAAc,iBAAiB,cAAc;AAU5D,IAAM,oBAA0B,iBAGrC,SAASA,mBAAkB,EAAE,KAAK,QAAQ,WAAW,UAAU,GAAG,MAAA,GAAS,KAAK;AAChF,QAAM,EAAE,WAAW,eAAA,IAAmB,wBAAwB,EAAE,OAAA,CAAQ;AACxE,QAAM,EAAE,QAAQ,KAAA,IAAS,SAAS,GAAG;AAErC,SACE;IAAC;IAAA;MACC;MACA,WAAW,GAAG,0BAAA,GAA6B,SAAS;MACnD,GAAG;MACH,GAAG;MACH,GAAG;MAGJ,UAAA;QAAA,qBAAC,OAAA,EAAI,WAAW,gBAEd,UAAA;UAAA,oBAAC,OAAA,EAAI,WAAU,sCACZ,UAAA,aAAa,IAAI,CAAC,UACjB,oBAAC,QAAA,EAAiB,WAAW,GAAG,iBAAiB,KAAK,EAAA,GAA3C,KAA8C,CAC1D,EAAA,CACH;UAGA,qBAAC,OAAA,EAAI,WAAW,aACd,UAAA;YAAA,oBAAC,QAAA,EAAK,WAAW,gBAAiB,UAAA,OAAA,CAAO;YACxC,QAAQ,oBAAC,QAAA,EAAM,UAAA,KAAA,CAAK;UAAA,EAAA,CACvB;UAGC,UAAA,qBACE,OAAA,EAAI,WAAW,oBAAoB,EAAE,OAAA,CAAQ,GAC3C,UAAA;YAAA,WAAW,SACV,oBAAC,QAAA,EAAK,WAAU,qDAAA,CAAqD;YAEtE;UAAA,EAAA,CACH;QAAA,EAAA,CAEJ;QAGA,oBAAC,OAAA,EAAI,WAAW,kBAAmB,SAAA,CAAS;MAAA;IAAA;EAAA;AAGlD,CAAC;",
4
+ "sourcesContent": ["/** Recording or live stream status for the browser chrome mock. */\nexport type BrowserChromeStatus = 'live' | 'rec'\n\nexport interface BrowserChromeMockProps {\n /** URL to display in the address bar. */\n url: string\n /** Optional status badge shown in the chrome bar. */\n status?: BrowserChromeStatus\n}\n\nexport interface BrowserChromeMockAPI {\n /** ARIA attributes to spread on the group element. */\n ariaProps: { role: 'group'; 'aria-label': string }\n /** Data attributes for styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/** Split a URL into bold domain and normal path segments. */\nexport function splitUrl(url: string): { domain: string; path: string } {\n const slashIndex = url.indexOf('/')\n if (slashIndex === -1) {\n return { domain: url, path: '' }\n }\n return {\n domain: url.slice(0, slashIndex),\n path: url.slice(slashIndex),\n }\n}\n\n/**\n * Build the framework-agnostic props for a BrowserChromeMock.\n *\n * Returns a `role=\"group\"` aria label plus optional `data-status` so adapters\n * can hook CSS without duplicating logic.\n */\nexport function createBrowserChromeMock(\n props: Pick<BrowserChromeMockProps, 'status'> = {},\n): BrowserChromeMockAPI {\n const { status } = props\n\n const ariaProps = {\n role: 'group' as const,\n 'aria-label': 'Browser preview',\n }\n\n const dataAttributes: Record<string, string> = {}\n if (status !== undefined) {\n dataAttributes['data-status'] = status\n }\n\n return { ariaProps, dataAttributes }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/** Outer frame wrapping the chrome bar and content. */\nexport const browserChromeMockVariants = cva({\n base: 'rounded-xl border border-border overflow-hidden bg-card',\n variants: {},\n defaultVariants: {},\n})\n\n/** The chrome toolbar row containing dots, URL bar, and optional badge. */\nexport const chromeBarClass =\n 'flex items-center gap-2 bg-muted/40 border-b border-border px-3 py-2'\n\n/** A single traffic-light dot. */\nexport const trafficDotClass = 'size-2.5 rounded-full border border-border'\n\n/** Centered URL bar. */\nexport const urlBarClass = 'flex-1 text-center font-mono text-[11px] text-muted-foreground'\n\n/** Bold domain segment inside the URL bar. */\nexport const urlDomainClass = 'font-semibold text-foreground'\n\n/**\n * Status badge shown in the chrome bar.\n *\n * live → emerald tint (approved exception to semantic tokens)\n * rec → destructive tint with a pulsing dot\n */\nexport const statusBadgeVariants = cva({\n base: 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide',\n variants: {\n status: {\n live: 'text-emerald-500 bg-emerald-500/10',\n rec: 'text-destructive bg-destructive/10',\n },\n },\n defaultVariants: {\n status: 'live',\n },\n})\n\n/** Inner content area that receives slotted/children content. */\nexport const contentAreaClass = 'p-0'\n", "import * as React from 'react'\nimport {\n createBrowserChromeMock,\n splitUrl,\n browserChromeMockVariants,\n chromeBarClass,\n trafficDotClass,\n urlBarClass,\n urlDomainClass,\n statusBadgeVariants,\n contentAreaClass,\n type BrowserChromeStatus,\n} from '@refraction-ui/browser-chrome-mock'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { BrowserChromeStatus }\n\nexport interface BrowserChromeMockProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'color' | 'content'> {\n /** URL to display in the address bar. Bold domain + normal path. */\n url: string\n /** Optional status badge shown in the chrome bar. */\n status?: BrowserChromeStatus\n}\n\n/** Three traffic-light dots rendered in the chrome bar. */\n// macOS window-chrome realism, not status tones — deliberately not tokenized.\nconst TRAFFIC_DOTS = ['bg-red-400', 'bg-yellow-400', 'bg-green-400'] as const\n\n/**\n * BrowserChromeMock — a decorative browser window frame.\n *\n * Renders a mock browser chrome with traffic-light dots, a monospace URL bar\n * (bold domain + normal path), an optional live/rec status badge, and a\n * content area for arbitrary children. Logic and styles come from the headless\n * `@refraction-ui/browser-chrome-mock` core.\n */\nexport const BrowserChromeMock = React.forwardRef<\n HTMLDivElement,\n BrowserChromeMockProps\n>(function BrowserChromeMock({ url, status, className, children, ...props }, ref) {\n const { ariaProps, dataAttributes } = createBrowserChromeMock({ status })\n const { domain, path } = splitUrl(url)\n\n return (\n <div\n ref={ref}\n className={cn(browserChromeMockVariants(), className)}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n >\n {/* Chrome toolbar */}\n <div className={chromeBarClass}>\n {/* Traffic-light dots */}\n <div className=\"flex items-center gap-1.5 shrink-0\">\n {TRAFFIC_DOTS.map((color) => (\n <span key={color} className={cn(trafficDotClass, color)} />\n ))}\n </div>\n\n {/* URL bar */}\n <div className={urlBarClass}>\n <span className={urlDomainClass}>{domain}</span>\n {path && <span>{path}</span>}\n </div>\n\n {/* Status badge */}\n {status && (\n <div className={statusBadgeVariants({ status })}>\n {status === 'rec' && (\n <span className=\"size-1.5 rounded-full bg-destructive animate-pulse\" />\n )}\n {status}\n </div>\n )}\n </div>\n\n {/* Content area */}\n <div className={contentAreaClass}>{children}</div>\n </div>\n )\n})\n"],
5
+ "mappings": ";;;;;;;;;AAkBO,SAAS,SAAS,KAA+C;AACtE,QAAM,aAAa,IAAI,QAAQ,GAAG;AAClC,MAAI,eAAe,IAAI;AACrB,WAAO,EAAE,QAAQ,KAAK,MAAM,GAAA;EAC9B;AACA,SAAO;IACL,QAAQ,IAAI,MAAM,GAAG,UAAU;IAC/B,MAAM,IAAI,MAAM,UAAU;EAAA;AAE9B;AAQO,SAAS,wBACd,QAAgD,CAAA,GAC1B;AACtB,QAAM,EAAE,OAAA,IAAW;AAEnB,QAAM,YAAY;IAChB,MAAM;IACN,cAAc;EAAA;AAGhB,QAAM,iBAAyC,CAAA;AAC/C,MAAI,WAAW,QAAW;AACxB,mBAAe,aAAa,IAAI;EAClC;AAEA,SAAO,EAAE,WAAW,eAAA;AACtB;AChDO,IAAM,4BAA4B,IAAI;EAC3C,MAAM;EACN,UAAU,CAAA;EACV,iBAAiB,CAAA;AACnB,CAAC;AAGM,IAAM,iBACX;AAGK,IAAM,kBAAkB;AAGxB,IAAM,cAAc;AAGpB,IAAM,iBAAiB;AAQvB,IAAM,sBAAsB,IAAI;EACrC,MAAM;EACN,UAAU;IACR,QAAQ;MACN,MAAM;MACN,KAAK;IAAA;EACP;EAEF,iBAAiB;IACf,QAAQ;EAAA;AAEZ,CAAC;AAGM,IAAM,mBAAmB;;;;ACfhC,IAAM,eAAe,CAAC,cAAc,iBAAiB,cAAc;AAU5D,IAAM,oBAA0B,iBAGrC,SAASA,mBAAkB,EAAE,KAAK,QAAQ,WAAW,UAAU,GAAG,MAAA,GAAS,KAAK;AAChF,QAAM,EAAE,WAAW,eAAA,IAAmB,wBAAwB,EAAE,OAAA,CAAQ;AACxE,QAAM,EAAE,QAAQ,KAAA,IAAS,SAAS,GAAG;AAErC,SACE;IAAC;IAAA;MACC;MACA,WAAW,GAAG,0BAAA,GAA6B,SAAS;MACnD,GAAG;MACH,GAAG;MACH,GAAG;MAGJ,UAAA;QAAA,qBAAC,OAAA,EAAI,WAAW,gBAEd,UAAA;UAAA,oBAAC,OAAA,EAAI,WAAU,sCACZ,UAAA,aAAa,IAAI,CAAC,UACjB,oBAAC,QAAA,EAAiB,WAAW,GAAG,iBAAiB,KAAK,EAAA,GAA3C,KAA8C,CAC1D,EAAA,CACH;UAGA,qBAAC,OAAA,EAAI,WAAW,aACd,UAAA;YAAA,oBAAC,QAAA,EAAK,WAAW,gBAAiB,UAAA,OAAA,CAAO;YACxC,QAAQ,oBAAC,QAAA,EAAM,UAAA,KAAA,CAAK;UAAA,EAAA,CACvB;UAGC,UAAA,qBACE,OAAA,EAAI,WAAW,oBAAoB,EAAE,OAAA,CAAQ,GAC3C,UAAA;YAAA,WAAW,SACV,oBAAC,QAAA,EAAK,WAAU,qDAAA,CAAqD;YAEtE;UAAA,EAAA,CACH;QAAA,EAAA,CAEJ;QAGA,oBAAC,OAAA,EAAI,WAAW,kBAAmB,SAAA,CAAS;MAAA;IAAA;EAAA;AAGlD,CAAC;",
6
6
  "names": ["BrowserChromeMock"]
7
7
  }
@@ -2,9 +2,9 @@ import {
2
2
  Button,
3
3
  buttonTokens,
4
4
  buttonVariants
5
- } from "./chunk-F7B64KT3.js";
6
- import "./chunk-WK2IIUFO.js";
7
- import "./chunk-ZF3OHCGV.js";
5
+ } from "./chunk-3Y2T26QD.js";
6
+ import "./chunk-QDMLIDYN.js";
7
+ import "./chunk-2Q6HHFAN.js";
8
8
  export {
9
9
  Button,
10
10
  buttonTokens,
@@ -2,7 +2,7 @@ import {
2
2
  cn,
3
3
  cva,
4
4
  generateId
5
- } from "./chunk-ZF3OHCGV.js";
5
+ } from "./chunk-2Q6HHFAN.js";
6
6
 
7
7
  // ../react-calendar/dist/index.js
8
8
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-call-controls/dist/index.js
7
7
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  cn,
6
6
  cva
7
- } from "./chunk-ZF3OHCGV.js";
7
+ } from "./chunk-2Q6HHFAN.js";
8
8
 
9
9
  // ../react-callout/dist/index.js
10
10
  import * as React from "react";
@@ -14,7 +14,9 @@ function createCallout(props = {}) {
14
14
  const ariaProps = {};
15
15
  if (props.role) {
16
16
  ariaProps.role = props.role;
17
- } else {
17
+ } else if (props.destructive) {
18
+ ariaProps.role = "alert";
19
+ } else if (props.labelled) {
18
20
  ariaProps.role = "region";
19
21
  }
20
22
  return {
@@ -60,7 +62,10 @@ var calloutDescriptionVariants = cva({
60
62
  import { jsx } from "react/jsx-runtime";
61
63
  var Callout = React.forwardRef(
62
64
  function Callout2({ className, variant, asChild = false, ...props }, ref) {
63
- const api = createCallout({ role: variant === "destructive" ? "alert" : "region" });
65
+ const api = createCallout({
66
+ destructive: variant === "destructive",
67
+ labelled: Boolean(props["aria-label"] || props["aria-labelledby"])
68
+ });
64
69
  const classes = cn(calloutVariants({ variant }), className);
65
70
  if (asChild) {
66
71
  return /* @__PURE__ */ jsx(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../callout/src/callout.ts", "../../callout/src/callout.styles.ts", "../../react-callout/src/callout.tsx"],
4
- "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface CalloutProps {\n /** Optional accessible role override */\n role?: string\n}\n\nexport interface CalloutAPI {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n}\n\nexport function createCallout(props: CalloutProps = {}): CalloutAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n \n // Callouts are usually alert or region depending on severity\n if (props.role) {\n ariaProps.role = props.role\n } else {\n ariaProps.role = 'region'\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'callout' },\n }\n}\n\nexport function createCalloutIcon(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-icon' } }\n}\n\nexport function createCalloutContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-content' } }\n}\n\nexport function createCalloutTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-title' } }\n}\n\nexport function createCalloutDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-description' } }\n}", "import { cva } from '@refraction-ui/shared'\n\nexport const calloutVariants = cva({\n base: 'relative w-full rounded-lg border p-4 text-sm flex gap-3',\n variants: {\n variant: {\n default: 'bg-muted/50 border-border text-foreground',\n destructive: 'bg-destructive/10 border-destructive/20 text-destructive',\n success: 'bg-success/10 border-success/20 text-success',\n warning: 'bg-warning/10 border-warning/20 text-warning',\n info: 'bg-info/10 border-info/20 text-info',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nexport const calloutTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight mb-1',\n})\n\nexport const calloutDescriptionVariants = cva({\n base: 'text-sm opacity-90 leading-relaxed',\n})\n", "import * as React from 'react'\nimport {\n createCallout,\n createCalloutIcon,\n createCalloutContent,\n createCalloutTitle,\n createCalloutDescription,\n calloutVariants,\n calloutTitleVariants,\n calloutDescriptionVariants,\n} from '@refraction-ui/callout'\nimport { cn } from '@refraction-ui/shared'\nimport { Slot } from '@refraction-ui/react-slot'\n\nexport interface CalloutProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'destructive' | 'success' | 'warning' | 'info'\n /** Merge the callout's classes/props onto the single child element instead\n * of rendering a `<div>` (Radix-style `asChild`). Expects exactly one React\n * element child. */\n asChild?: boolean\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n function Callout({ className, variant, asChild = false, ...props }, ref) {\n const api = createCallout({ role: variant === 'destructive' ? 'alert' : 'region' })\n const classes = cn(calloutVariants({ variant }), className)\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutIcon = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutIcon({ className, ...props }, ref) {\n const api = createCalloutIcon()\n return (\n <div\n ref={ref}\n className={cn('flex-shrink-0 mt-0.5', className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutContent({ className, ...props }, ref) {\n const api = createCalloutContent()\n return (\n <div\n ref={ref}\n className={cn('flex-1', className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CalloutTitle({ className, ...props }, ref) {\n const api = createCalloutTitle()\n return (\n <h5\n ref={ref}\n className={cn(calloutTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutDescription({ className, ...props }, ref) {\n const api = createCalloutDescription()\n return (\n <div\n ref={ref}\n className={cn(calloutDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n"],
5
- "mappings": ";;;;;;;;;;;;AAYO,SAAS,cAAc,QAAsB,CAAA,GAAgB;AAClE,QAAM,YAAyC,CAAA;AAG/C,MAAI,MAAM,MAAM;AACd,cAAU,OAAO,MAAM;EACzB,OAAO;AACL,cAAU,OAAO;EACnB;AAEA,SAAO;IACL;IACA,gBAAgB,EAAE,aAAa,UAAA;EAAU;AAE7C;AAEO,SAAS,oBAAgE;AAC9E,SAAO,EAAE,gBAAgB,EAAE,aAAa,eAAA,EAAe;AACzD;AAEO,SAAS,uBAAmE;AACjF,SAAO,EAAE,gBAAgB,EAAE,aAAa,kBAAA,EAAkB;AAC5D;AAEO,SAAS,qBAAiE;AAC/E,SAAO,EAAE,gBAAgB,EAAE,aAAa,gBAAA,EAAgB;AAC1D;AAEO,SAAS,2BAAuE;AACrF,SAAO,EAAE,gBAAgB,EAAE,aAAa,sBAAA,EAAsB;AAChE;ACxCO,IAAM,kBAAkB,IAAI;EACjC,MAAM;EACN,UAAU;IACR,SAAS;MACP,SAAS;MACT,aAAa;MACb,SAAS;MACT,SAAS;MACT,MAAM;IAAA;EACR;EAEF,iBAAiB;IACf,SAAS;EAAA;AAEb,CAAC;AAEM,IAAM,uBAAuB,IAAI;EACtC,MAAM;AACR,CAAC;AAEM,IAAM,6BAA6B,IAAI;EAC5C,MAAM;AACR,CAAC;;;;ACFM,IAAM,UAAgB;EAC3B,SAASA,SAAQ,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,MAAA,GAAS,KAAK;AACvE,UAAM,MAAM,cAAc,EAAE,MAAM,YAAY,gBAAgB,UAAU,SAAA,CAAU;AAClF,UAAM,UAAU,GAAG,gBAAgB,EAAE,QAAA,CAAS,GAAG,SAAS;AAE1D,QAAI,SAAS;AACX,aACE;QAAC;QAAA;UACC;UACA,WAAW;UACV,GAAG,IAAI;UACP,GAAG,IAAI;UACP,GAAG;QAAA;MAAA;IAGV;AAEA,WACE;MAAC;MAAA;QACC;QACA,WAAW;QACV,GAAG,IAAI;QACP,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,cAAoB;EAC/B,SAASC,aAAY,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACjD,UAAM,MAAM,kBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,wBAAwB,SAAS;QAC9C,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,iBAAuB;EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACpD,UAAM,MAAM,qBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,UAAU,SAAS;QAChC,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,eAAqB;EAChC,SAASC,cAAa,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AAClD,UAAM,MAAM,mBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,qBAAA,GAAwB,SAAS;QAC9C,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,qBAA2B;EACtC,SAASC,oBAAmB,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACxD,UAAM,MAAM,yBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,2BAAA,GAA8B,SAAS;QACpD,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;",
4
+ "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface CalloutProps {\n /** Explicit role; always wins. */\n role?: string\n /** Destructive callouts are announced (`role=\"alert\"`). */\n destructive?: boolean\n /**\n * Whether the callout has an accessible name (`aria-label` /\n * `aria-labelledby`). Only a named callout becomes a `region` landmark — an\n * unnamed region is an axe violation and landmark noise.\n */\n labelled?: boolean\n}\n\nexport interface CalloutAPI {\n ariaProps: Partial<AccessibilityProps>\n dataAttributes: Record<string, string>\n}\n\nexport function createCallout(props: CalloutProps = {}): CalloutAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n \n if (props.role) {\n ariaProps.role = props.role\n } else if (props.destructive) {\n ariaProps.role = 'alert'\n } else if (props.labelled) {\n ariaProps.role = 'region'\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'callout' },\n }\n}\n\nexport function createCalloutIcon(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-icon' } }\n}\n\nexport function createCalloutContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-content' } }\n}\n\nexport function createCalloutTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-title' } }\n}\n\nexport function createCalloutDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'callout-description' } }\n}", "import { cva } from '@refraction-ui/shared'\n\nexport const calloutVariants = cva({\n base: 'relative w-full rounded-lg border p-4 text-sm flex gap-3',\n variants: {\n variant: {\n default: 'bg-muted/50 border-border text-foreground',\n destructive: 'bg-destructive/10 border-destructive/20 text-destructive',\n success: 'bg-success/10 border-success/20 text-success',\n warning: 'bg-warning/10 border-warning/20 text-warning',\n info: 'bg-info/10 border-info/20 text-info',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n})\n\nexport const calloutTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight mb-1',\n})\n\nexport const calloutDescriptionVariants = cva({\n base: 'text-sm opacity-90 leading-relaxed',\n})\n", "import * as React from 'react'\nimport {\n createCallout,\n createCalloutIcon,\n createCalloutContent,\n createCalloutTitle,\n createCalloutDescription,\n calloutVariants,\n calloutTitleVariants,\n calloutDescriptionVariants,\n} from '@refraction-ui/callout'\nimport { cn } from '@refraction-ui/shared'\nimport { Slot } from '@refraction-ui/react-slot'\n\nexport interface CalloutProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'destructive' | 'success' | 'warning' | 'info'\n /** Merge the callout's classes/props onto the single child element instead\n * of rendering a `<div>` (Radix-style `asChild`). Expects exactly one React\n * element child. */\n asChild?: boolean\n}\n\nexport const Callout = React.forwardRef<HTMLDivElement, CalloutProps>(\n function Callout({ className, variant, asChild = false, ...props }, ref) {\n const api = createCallout({\n destructive: variant === 'destructive',\n labelled: Boolean(props['aria-label'] || props['aria-labelledby']),\n })\n const classes = cn(calloutVariants({ variant }), className)\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutIcon = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutIcon({ className, ...props }, ref) {\n const api = createCalloutIcon()\n return (\n <div\n ref={ref}\n className={cn('flex-shrink-0 mt-0.5', className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutContent({ className, ...props }, ref) {\n const api = createCalloutContent()\n return (\n <div\n ref={ref}\n className={cn('flex-1', className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CalloutTitle({ className, ...props }, ref) {\n const api = createCalloutTitle()\n return (\n <h5\n ref={ref}\n className={cn(calloutTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\nexport const CalloutDescription = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CalloutDescription({ className, ...props }, ref) {\n const api = createCalloutDescription()\n return (\n <div\n ref={ref}\n className={cn(calloutDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n"],
5
+ "mappings": ";;;;;;;;;;;;AAoBO,SAAS,cAAc,QAAsB,CAAA,GAAgB;AAClE,QAAM,YAAyC,CAAA;AAE/C,MAAI,MAAM,MAAM;AACd,cAAU,OAAO,MAAM;EACzB,WAAW,MAAM,aAAa;AAC5B,cAAU,OAAO;EACnB,WAAW,MAAM,UAAU;AACzB,cAAU,OAAO;EACnB;AAEA,SAAO;IACL;IACA,gBAAgB,EAAE,aAAa,UAAA;EAAU;AAE7C;AAEO,SAAS,oBAAgE;AAC9E,SAAO,EAAE,gBAAgB,EAAE,aAAa,eAAA,EAAe;AACzD;AAEO,SAAS,uBAAmE;AACjF,SAAO,EAAE,gBAAgB,EAAE,aAAa,kBAAA,EAAkB;AAC5D;AAEO,SAAS,qBAAiE;AAC/E,SAAO,EAAE,gBAAgB,EAAE,aAAa,gBAAA,EAAgB;AAC1D;AAEO,SAAS,2BAAuE;AACrF,SAAO,EAAE,gBAAgB,EAAE,aAAa,sBAAA,EAAsB;AAChE;ACjDO,IAAM,kBAAkB,IAAI;EACjC,MAAM;EACN,UAAU;IACR,SAAS;MACP,SAAS;MACT,aAAa;MACb,SAAS;MACT,SAAS;MACT,MAAM;IAAA;EACR;EAEF,iBAAiB;IACf,SAAS;EAAA;AAEb,CAAC;AAEM,IAAM,uBAAuB,IAAI;EACtC,MAAM;AACR,CAAC;AAEM,IAAM,6BAA6B,IAAI;EAC5C,MAAM;AACR,CAAC;;;;ACFM,IAAM,UAAgB;EAC3B,SAASA,SAAQ,EAAE,WAAW,SAAS,UAAU,OAAO,GAAG,MAAA,GAAS,KAAK;AACvE,UAAM,MAAM,cAAc;MACxB,aAAa,YAAY;MACzB,UAAU,QAAQ,MAAM,YAAY,KAAK,MAAM,iBAAiB,CAAC;IAAA,CAClE;AACD,UAAM,UAAU,GAAG,gBAAgB,EAAE,QAAA,CAAS,GAAG,SAAS;AAE1D,QAAI,SAAS;AACX,aACE;QAAC;QAAA;UACC;UACA,WAAW;UACV,GAAG,IAAI;UACP,GAAG,IAAI;UACP,GAAG;QAAA;MAAA;IAGV;AAEA,WACE;MAAC;MAAA;QACC;QACA,WAAW;QACV,GAAG,IAAI;QACP,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,cAAoB;EAC/B,SAASC,aAAY,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACjD,UAAM,MAAM,kBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,wBAAwB,SAAS;QAC9C,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,iBAAuB;EAClC,SAASC,gBAAe,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACpD,UAAM,MAAM,qBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,UAAU,SAAS;QAChC,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,eAAqB;EAChC,SAASC,cAAa,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AAClD,UAAM,MAAM,mBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,qBAAA,GAAwB,SAAS;QAC9C,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;AAEO,IAAM,qBAA2B;EACtC,SAASC,oBAAmB,EAAE,WAAW,GAAG,MAAA,GAAS,KAAK;AACxD,UAAM,MAAM,yBAAA;AACZ,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,2BAAA,GAA8B,SAAS;QACpD,GAAG,IAAI;QACP,GAAG;MAAA;IAAA;EAGV;AACF;",
6
6
  "names": ["Callout", "CalloutIcon", "CalloutContent", "CalloutTitle", "CalloutDescription"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-ZF3OHCGV.js";
3
+ } from "./chunk-2Q6HHFAN.js";
4
4
 
5
5
  // ../react-card-grid/dist/index.js
6
6
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  cn,
6
6
  cva
7
- } from "./chunk-ZF3OHCGV.js";
7
+ } from "./chunk-2Q6HHFAN.js";
8
8
 
9
9
  // ../react-card/dist/index.js
10
10
  import * as React from "react";
@@ -44,8 +44,16 @@ var cardTokens = {
44
44
  }
45
45
  };
46
46
  var cardVariants = cva({
47
- base: "rounded-lg border bg-card text-card-foreground shadow",
47
+ base: "rounded-lg border shadow",
48
48
  variants: {
49
+ variant: {
50
+ // Default — unchanged surface (bg-card + border via the global token).
51
+ default: "bg-card text-card-foreground",
52
+ // Lower-emphasis container on the subtle surface token (issue #485).
53
+ subtle: "bg-surface-subtle text-card-foreground",
54
+ // Tinted second-accent card (issue #485).
55
+ tertiary: "border-transparent bg-tertiary-soft text-tertiary-soft-foreground"
56
+ },
49
57
  padding: {
50
58
  none: "",
51
59
  default: "p-6",
@@ -53,6 +61,7 @@ var cardVariants = cva({
53
61
  }
54
62
  },
55
63
  defaultVariants: {
64
+ variant: "default",
56
65
  padding: "none"
57
66
  }
58
67
  });
@@ -85,9 +94,9 @@ var cardFooterVariants = cva({
85
94
  // ../react-card/dist/index.js
86
95
  import { jsx } from "react/jsx-runtime";
87
96
  var Card = React.forwardRef(
88
- function Card2({ className, asChild = false, ...props }, ref) {
97
+ function Card2({ className, variant, padding, asChild = false, ...props }, ref) {
89
98
  const api = createCard();
90
- const classes = cn(cardVariants(), className);
99
+ const classes = cn(cardVariants({ variant, padding }), className);
91
100
  if (asChild) {
92
101
  return /* @__PURE__ */ jsx(
93
102
  Slot,
@@ -127,10 +136,10 @@ var CardHeader = React.forwardRef(
127
136
  }
128
137
  );
129
138
  var CardTitle = React.forwardRef(
130
- function CardTitle2({ className, ...props }, ref) {
139
+ function CardTitle2({ className, as: Heading = "h3", ...props }, ref) {
131
140
  const api = createCardTitle();
132
141
  return /* @__PURE__ */ jsx(
133
- "h3",
142
+ Heading,
134
143
  {
135
144
  ref,
136
145
  className: cn(cardTitleVariants(), className),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../card/src/card.ts", "../../card/src/card.styles.ts", "../../react-card/src/card.tsx"],
4
- "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport interface CardProps {\n /** Optional accessible role override */\n role?: string\n}\n\nexport interface CardAPI {\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 createCard(props: CardProps = {}): CardAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n if (props.role) {\n ariaProps.role = props.role\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'card' },\n }\n}\n\nexport function createCardHeader(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-header' } }\n}\n\nexport function createCardTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-title' } }\n}\n\nexport function createCardDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-description' } }\n}\n\nexport function createCardContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-content' } }\n}\n\nexport function createCardFooter(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-footer' } }\n}\n", "import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const cardTokens: TokenContract = {\n name: 'card',\n tokens: {\n bg: { variable: '--rfr-card-bg', fallback: 'hsl(var(--card))' },\n fg: { variable: '--rfr-card-fg', fallback: 'hsl(var(--card-foreground))' },\n border: { variable: '--rfr-card-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const cardVariants = cva({\n base: 'rounded-lg border bg-card text-card-foreground shadow',\n variants: {\n padding: {\n none: '',\n default: 'p-6',\n compact: 'p-4',\n },\n },\n defaultVariants: {\n padding: 'none',\n },\n})\n\nexport const cardHeaderVariants = cva({\n base: 'flex flex-col space-y-1.5 p-6',\n})\n\nexport const cardTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight',\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const cardDescriptionVariants = cva({\n base: 'text-sm text-muted-foreground',\n})\n\nexport const cardContentVariants = cva({\n base: 'p-6 pt-0',\n})\n\nexport const cardFooterVariants = cva({\n base: 'flex items-center p-6 pt-0',\n})\n", "import * as React from 'react'\nimport {\n createCard,\n createCardHeader,\n createCardTitle,\n createCardDescription,\n createCardContent,\n createCardFooter,\n cardVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardDescriptionVariants,\n cardContentVariants,\n cardFooterVariants,\n} from '@refraction-ui/card'\nimport { cn } from '@refraction-ui/shared'\nimport { Slot } from '@refraction-ui/react-slot'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Merge the card's classes/props onto the single child element instead of\n * rendering a `<div>` (Radix-style `asChild`) — e.g.\n * `<Card asChild><a href=\"/x\">…</a></Card>` for a clickable card. Expects\n * exactly one React element child. */\n asChild?: boolean\n}\n\n/**\n * Card -- a container with rounded corners, border, and shadow.\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n function Card({ className, asChild = false, ...props }, ref) {\n const api = createCard()\n const classes = cn(cardVariants(), className)\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardHeader -- top section of a card, typically contains title and description.\n */\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...props }, ref) {\n const api = createCardHeader()\n return (\n <div\n ref={ref}\n className={cn(cardHeaderVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardTitle -- heading within a card header.\n */\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, React.HTMLAttributes<HTMLHeadingElement>>(\n function CardTitle({ className, ...props }, ref) {\n const api = createCardTitle()\n return (\n <h3\n ref={ref}\n className={cn(cardTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardDescription -- subtext within a card header.\n */\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n function CardDescription({ className, ...props }, ref) {\n const api = createCardDescription()\n return (\n <p\n ref={ref}\n className={cn(cardDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardContent -- main body content area of a card.\n */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardContent({ className, ...props }, ref) {\n const api = createCardContent()\n return (\n <div\n ref={ref}\n className={cn(cardContentVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardFooter -- bottom section of a card, typically contains actions.\n */\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...props }, ref) {\n const api = createCardFooter()\n return (\n <div\n ref={ref}\n className={cn(cardFooterVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\n/**\n * Visual tone of a card (issue #485).\n * - `default` — the standard surface (activates the `--rfr-card-*` contract).\n * - `subtle` — a lower-emphasis container on the subtle surface token.\n * - `tertiary` — a tinted second-brand-accent card.\n */\nexport type CardVariant = 'default' | 'subtle' | 'tertiary'\n\n/** Built-in inner padding of the Card container. */\nexport type CardPadding = 'none' | 'default' | 'compact'\n\n/** Heading element for CardTitle. */\nexport type CardTitleLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\nexport interface CardProps {\n /** Optional accessible role override */\n role?: string\n}\n\nexport interface CardAPI {\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 createCard(props: CardProps = {}): CardAPI {\n const ariaProps: Partial<AccessibilityProps> = {}\n if (props.role) {\n ariaProps.role = props.role\n }\n\n return {\n ariaProps,\n dataAttributes: { 'data-slot': 'card' },\n }\n}\n\nexport function createCardHeader(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-header' } }\n}\n\nexport function createCardTitle(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-title' } }\n}\n\nexport function createCardDescription(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-description' } }\n}\n\nexport function createCardContent(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-content' } }\n}\n\nexport function createCardFooter(): { dataAttributes: Record<string, string> } {\n return { dataAttributes: { 'data-slot': 'card-footer' } }\n}\n", "import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const cardTokens: TokenContract = {\n name: 'card',\n tokens: {\n bg: { variable: '--rfr-card-bg', fallback: 'hsl(var(--card))' },\n fg: { variable: '--rfr-card-fg', fallback: 'hsl(var(--card-foreground))' },\n border: { variable: '--rfr-card-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const cardVariants = cva({\n base: 'rounded-lg border shadow',\n variants: {\n variant: {\n // Default — unchanged surface (bg-card + border via the global token).\n default: 'bg-card text-card-foreground',\n // Lower-emphasis container on the subtle surface token (issue #485).\n subtle: 'bg-surface-subtle text-card-foreground',\n // Tinted second-accent card (issue #485).\n tertiary: 'border-transparent bg-tertiary-soft text-tertiary-soft-foreground',\n },\n padding: {\n none: '',\n default: 'p-6',\n compact: 'p-4',\n },\n },\n defaultVariants: {\n variant: 'default',\n padding: 'none',\n },\n})\n\nexport const cardHeaderVariants = cva({\n base: 'flex flex-col space-y-1.5 p-6',\n})\n\nexport const cardTitleVariants = cva({\n base: 'font-semibold leading-none tracking-tight',\n variants: {\n size: {\n sm: 'text-lg',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n})\n\nexport const cardDescriptionVariants = cva({\n base: 'text-sm text-muted-foreground',\n})\n\nexport const cardContentVariants = cva({\n base: 'p-6 pt-0',\n})\n\nexport const cardFooterVariants = cva({\n base: 'flex items-center p-6 pt-0',\n})\n", "import * as React from 'react'\nimport {\n createCard,\n createCardHeader,\n createCardTitle,\n createCardDescription,\n createCardContent,\n createCardFooter,\n cardVariants,\n cardHeaderVariants,\n cardTitleVariants,\n cardDescriptionVariants,\n cardContentVariants,\n cardFooterVariants,\n type CardVariant,\n type CardPadding,\n type CardTitleLevel,\n} from '@refraction-ui/card'\nimport { cn } from '@refraction-ui/shared'\nimport { Slot } from '@refraction-ui/react-slot'\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Visual tone of the card. Defaults to `'default'` (issue #485). */\n variant?: CardVariant\n /** Built-in inner padding. Defaults to `'none'` (compose CardHeader/CardContent for spacing). */\n padding?: CardPadding\n /** Merge the card's classes/props onto the single child element instead of\n * rendering a `<div>` (Radix-style `asChild`) — e.g.\n * `<Card asChild><a href=\"/x\">…</a></Card>` for a clickable card. Expects\n * exactly one React element child. */\n asChild?: boolean\n}\n\n/**\n * Card -- a container with rounded corners, border, and shadow.\n */\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n function Card({ className, variant, padding, asChild = false, ...props }, ref) {\n const api = createCard()\n const classes = cn(cardVariants({ variant, padding }), className)\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n }\n\n return (\n <div\n ref={ref}\n className={classes}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardHeader -- top section of a card, typically contains title and description.\n */\nexport const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardHeader({ className, ...props }, ref) {\n const api = createCardHeader()\n return (\n <div\n ref={ref}\n className={cn(cardHeaderVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardTitle -- heading within a card header.\n */\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Heading element. Defaults to `h3`; pick the level that fits the page outline. */\n as?: CardTitleLevel\n}\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\n function CardTitle({ className, as: Heading = 'h3', ...props }, ref) {\n const api = createCardTitle()\n return (\n <Heading\n ref={ref}\n className={cn(cardTitleVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardDescription -- subtext within a card header.\n */\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, React.HTMLAttributes<HTMLParagraphElement>>(\n function CardDescription({ className, ...props }, ref) {\n const api = createCardDescription()\n return (\n <p\n ref={ref}\n className={cn(cardDescriptionVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardContent -- main body content area of a card.\n */\nexport const CardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardContent({ className, ...props }, ref) {\n const api = createCardContent()\n return (\n <div\n ref={ref}\n className={cn(cardContentVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n\n/**\n * CardFooter -- bottom section of a card, typically contains actions.\n */\nexport const CardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n function CardFooter({ className, ...props }, ref) {\n const api = createCardFooter()\n return (\n <div\n ref={ref}\n className={cn(cardFooterVariants(), className)}\n {...api.dataAttributes}\n {...props}\n />\n )\n },\n)\n"],
5
+ "mappings": "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",
6
6
  "names": ["Card", "CardHeader", "CardTitle", "CardDescription", "CardContent", "CardFooter"]
7
7
  }
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  cn,
7
7
  devWarn
8
- } from "./chunk-ZF3OHCGV.js";
8
+ } from "./chunk-2Q6HHFAN.js";
9
9
 
10
10
  // ../react-carousel/dist/index.js
11
11
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  devWarn
3
- } from "./chunk-ZF3OHCGV.js";
3
+ } from "./chunk-2Q6HHFAN.js";
4
4
 
5
5
  // ../charts/dist/index.js
6
6
  function createLinearScale(domain, range) {
@@ -2,7 +2,7 @@ import {
2
2
  Keys,
3
3
  cn,
4
4
  cva
5
- } from "./chunk-ZF3OHCGV.js";
5
+ } from "./chunk-2Q6HHFAN.js";
6
6
 
7
7
  // ../react-checkbox/dist/index.js
8
8
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-checklist/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-code-block/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-code-editor/dist/index.js
7
7
  import * as React from "react";
@@ -5,7 +5,7 @@ import {
5
5
  cva,
6
6
  devWarn,
7
7
  generateId
8
- } from "./chunk-ZF3OHCGV.js";
8
+ } from "./chunk-2Q6HHFAN.js";
9
9
 
10
10
  // ../react-collapsible/dist/index.js
11
11
  import * as React from "react";
@@ -3,7 +3,7 @@ import {
3
3
  cva,
4
4
  devWarn,
5
5
  generateId
6
- } from "./chunk-ZF3OHCGV.js";
6
+ } from "./chunk-2Q6HHFAN.js";
7
7
 
8
8
  // ../react-combobox/dist/index.js
9
9
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-ZF3OHCGV.js";
3
+ } from "./chunk-2Q6HHFAN.js";
4
4
 
5
5
  // ../react-command-input/dist/index.js
6
6
  import { useRef, useEffect, useState, forwardRef } from "react";
@@ -5,7 +5,7 @@ import {
5
5
  cva,
6
6
  devWarn,
7
7
  generateId
8
- } from "./chunk-ZF3OHCGV.js";
8
+ } from "./chunk-2Q6HHFAN.js";
9
9
 
10
10
  // ../react-command/dist/index.js
11
11
  import * as React from "react";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  detectEmojiShortcode,
3
3
  detectTriggerInText
4
- } from "./chunk-BOLFYVI6.js";
4
+ } from "./chunk-QPCKJ2YR.js";
5
5
  import {
6
6
  searchEmojis
7
- } from "./chunk-533MCMSU.js";
7
+ } from "./chunk-3I3DYDHR.js";
8
8
  import {
9
9
  cn,
10
10
  cva,
11
11
  generateId,
12
12
  prefersReducedMotion
13
- } from "./chunk-ZF3OHCGV.js";
13
+ } from "./chunk-2Q6HHFAN.js";
14
14
 
15
15
  // ../react-composer/dist/index.js
16
16
  import * as React2 from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-content-protection/dist/index.js
7
7
  import * as React from "react";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  formatRelativeTime,
3
3
  formatTimestamp
4
- } from "./chunk-ONACRMG4.js";
4
+ } from "./chunk-XMFNBOPO.js";
5
5
  import {
6
6
  MarkdownRenderer
7
- } from "./chunk-UNEM2TRI.js";
7
+ } from "./chunk-SDAJVXD4.js";
8
8
  import {
9
9
  detectTriggerInText
10
- } from "./chunk-BOLFYVI6.js";
11
- import "./chunk-533MCMSU.js";
10
+ } from "./chunk-QPCKJ2YR.js";
11
+ import "./chunk-3I3DYDHR.js";
12
12
  import {
13
13
  cn,
14
14
  generateId
15
- } from "./chunk-ZF3OHCGV.js";
15
+ } from "./chunk-2Q6HHFAN.js";
16
16
 
17
17
  // ../react-conversation/dist/index.js
18
18
  import * as React2 from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-ZF3OHCGV.js";
3
+ } from "./chunk-2Q6HHFAN.js";
4
4
 
5
5
  // ../react-cookie-consent/dist/index.js
6
6
  import * as React2 from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-data-table/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-date-picker/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-device-frame/dist/index.js
7
7
  import * as React from "react";
@@ -2,12 +2,12 @@ import {
2
2
  createDialog,
3
3
  dialogContentVariants,
4
4
  overlayStyles
5
- } from "./chunk-VK3EQ34F.js";
5
+ } from "./chunk-V24GDHUX.js";
6
6
  import {
7
7
  cn,
8
8
  createKeyboardHandler,
9
9
  devWarn
10
- } from "./chunk-ZF3OHCGV.js";
10
+ } from "./chunk-2Q6HHFAN.js";
11
11
 
12
12
  // ../react-dialog/dist/index.js
13
13
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-2Q6HHFAN.js";
5
5
 
6
6
  // ../react-diff-viewer/dist/index.js
7
7
  import * as React from "react";
@@ -156,6 +156,9 @@ var diffViewerTokens = {
156
156
  sidebarBg: { variable: "--rfr-diff-sidebar-bg", fallback: "hsl(var(--muted))" },
157
157
  headerBg: { variable: "--rfr-diff-header-bg", fallback: "hsl(var(--muted))" },
158
158
  border: { variable: "--rfr-diff-border", fallback: "hsl(var(--border))" },
159
+ // Diff add/del colors are syntax semantics (like code highlighting), not
160
+ // theme status tones — deliberately NOT routed through the success/
161
+ // destructive tokens. The --rfr-diff-* variables are the theming seam.
159
162
  addBg: { variable: "--rfr-diff-add-bg", fallback: "rgba(46, 160, 67, 0.15)" },
160
163
  delBg: { variable: "--rfr-diff-del-bg", fallback: "rgba(248, 81, 73, 0.15)" },
161
164
  addFg: { variable: "--rfr-diff-add-fg", fallback: "#3fb950" },