@refraction-ui/react 0.21.0 → 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 (196) 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-NKCWOPNX.js → chunk-3Y2T26QD.js} +9 -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 +579 -38
  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/button/index.d.cts +2 -2
  26. package/dist/internal/button/index.d.ts +2 -2
  27. package/dist/internal/card/index.d.cts +5 -1
  28. package/dist/internal/card/index.d.ts +5 -1
  29. package/dist/internal/funnel-chart/index.d.ts +60 -0
  30. package/dist/internal/line-chart/index.d.ts +110 -0
  31. package/dist/internal/page-header/index.d.ts +35 -0
  32. package/dist/internal/react-action-list/index.d.ts +28 -0
  33. package/dist/internal/react-card/index.d.cts +10 -4
  34. package/dist/internal/react-card/index.d.ts +10 -4
  35. package/dist/internal/react-funnel-chart/index.d.ts +28 -0
  36. package/dist/internal/react-line-chart/index.d.ts +33 -0
  37. package/dist/internal/react-page-header/index.d.ts +23 -0
  38. package/dist/internal/react-select/index.d.cts +21 -3
  39. package/dist/internal/react-select/index.d.ts +21 -3
  40. package/dist/internal/select/index.d.cts +14 -1
  41. package/dist/internal/select/index.d.ts +14 -1
  42. package/dist/internal/shared/index.d.cts +6 -3
  43. package/dist/internal/shared/index.d.ts +6 -3
  44. package/dist/internal/tabs/index.d.cts +8 -1
  45. package/dist/internal/tabs/index.d.ts +8 -1
  46. package/dist/react-accordion.js +1 -1
  47. package/dist/react-action-list.js +74 -0
  48. package/dist/react-action-list.js.map +7 -0
  49. package/dist/react-ai.js +1 -1
  50. package/dist/react-analytics.js +1 -1
  51. package/dist/react-animated-text.js +1 -1
  52. package/dist/react-app-shell.js +1 -1
  53. package/dist/react-audience-feature-card.js +1 -1
  54. package/dist/react-audio-room.js +1 -1
  55. package/dist/react-auth.js +1 -1
  56. package/dist/react-avatar-group.js +1 -1
  57. package/dist/react-avatar.js +1 -1
  58. package/dist/react-badge.js +2 -2
  59. package/dist/react-badge.js.map +1 -1
  60. package/dist/react-bottom-nav.js +1 -1
  61. package/dist/react-brand-network-cell.js +1 -1
  62. package/dist/react-breadcrumbs.js +1 -1
  63. package/dist/react-browser-chrome-mock.js +1 -1
  64. package/dist/react-button.js +3 -3
  65. package/dist/react-calendar.js +1 -1
  66. package/dist/react-call-controls.js +1 -1
  67. package/dist/react-callout.js +8 -3
  68. package/dist/react-callout.js.map +2 -2
  69. package/dist/react-card-grid.js +1 -1
  70. package/dist/react-card.js +5 -5
  71. package/dist/react-card.js.map +2 -2
  72. package/dist/react-carousel.js +1 -1
  73. package/dist/react-charts.js +1 -1
  74. package/dist/react-checkbox.js +1 -1
  75. package/dist/react-checklist.js +1 -1
  76. package/dist/react-code-block.js +1 -1
  77. package/dist/react-code-editor.js +1 -1
  78. package/dist/react-collapsible.js +1 -1
  79. package/dist/react-combobox.js +1 -1
  80. package/dist/react-command-input.js +1 -1
  81. package/dist/react-command.js +1 -1
  82. package/dist/react-composer.js +3 -3
  83. package/dist/react-content-protection.js +1 -1
  84. package/dist/react-conversation.js +5 -5
  85. package/dist/react-cookie-consent.js +1 -1
  86. package/dist/react-data-table.js +1 -1
  87. package/dist/react-date-picker.js +1 -1
  88. package/dist/react-device-frame.js +1 -1
  89. package/dist/react-dialog.js +2 -2
  90. package/dist/react-diff-viewer.js +1 -1
  91. package/dist/react-dropdown-menu.js +1 -1
  92. package/dist/react-editor-status-bar.js +1 -1
  93. package/dist/react-editor-tabs.js +1 -1
  94. package/dist/react-emoji-picker.js +2 -2
  95. package/dist/react-empty-state.js +1 -1
  96. package/dist/react-feedback-dialog.js +2 -2
  97. package/dist/react-file-tree.js +1 -1
  98. package/dist/react-file-upload.js +1 -1
  99. package/dist/react-floating-reactions.js +1 -1
  100. package/dist/react-flow-editor.js +2 -2
  101. package/dist/react-footer.js +1 -1
  102. package/dist/react-funnel-chart.js +105 -0
  103. package/dist/react-funnel-chart.js.map +7 -0
  104. package/dist/react-graph-view.js +2 -2
  105. package/dist/react-infinite-canvas.js +2 -2
  106. package/dist/react-inline-editor.js +1 -1
  107. package/dist/react-input-group.js +1 -1
  108. package/dist/react-input.js +2 -2
  109. package/dist/react-install-prompt.js +1 -1
  110. package/dist/react-kanban-board.js +1 -1
  111. package/dist/react-keyboard-shortcut.js +2 -2
  112. package/dist/react-language-selector.js +1 -1
  113. package/dist/react-line-chart.js +242 -0
  114. package/dist/react-line-chart.js.map +7 -0
  115. package/dist/react-link-card.js +1 -1
  116. package/dist/react-live-captions.js +1 -1
  117. package/dist/react-live-cursors.js +1 -1
  118. package/dist/react-live-transcript.js +1 -1
  119. package/dist/react-location-selector.js +1 -1
  120. package/dist/react-logger.js +1 -1
  121. package/dist/react-markdown-renderer.js +2 -2
  122. package/dist/react-marquee-strip.js +1 -1
  123. package/dist/react-mascot.js +1 -1
  124. package/dist/react-mastery-bar.js +1 -1
  125. package/dist/react-mini-map.js +1 -1
  126. package/dist/react-mobile-nav.js +1 -1
  127. package/dist/react-navbar.js +1 -1
  128. package/dist/react-numbered-steps.js +1 -1
  129. package/dist/react-otp-input.js +1 -1
  130. package/dist/react-page-header.js +40 -0
  131. package/dist/react-page-header.js.map +7 -0
  132. package/dist/react-pagination.js +1 -1
  133. package/dist/react-password-input.js +2 -2
  134. package/dist/react-payment.js +1 -1
  135. package/dist/react-popover.js +1 -1
  136. package/dist/react-pre-call-lobby.js +1 -1
  137. package/dist/react-presence-indicator.js +1 -1
  138. package/dist/react-pricing-card.js +1 -1
  139. package/dist/react-progress-display.js +2 -2
  140. package/dist/react-progress-display.js.map +1 -1
  141. package/dist/react-radial-gauge.js +1 -1
  142. package/dist/react-radio.js +1 -1
  143. package/dist/react-rating-scale.js +1 -1
  144. package/dist/react-reaction-bar.js +1 -1
  145. package/dist/react-resizable-layout.js +1 -1
  146. package/dist/react-search-bar.js +1 -1
  147. package/dist/react-section-head.js +1 -1
  148. package/dist/react-segmented-control.js +1 -1
  149. package/dist/react-select.js +94 -20
  150. package/dist/react-select.js.map +3 -3
  151. package/dist/react-separator.js +1 -1
  152. package/dist/react-sheet.js +1 -1
  153. package/dist/react-sidebar.js +1 -1
  154. package/dist/react-skeleton.js +1 -1
  155. package/dist/react-skip-to-content.js +1 -1
  156. package/dist/react-slide-viewer.js +1 -1
  157. package/dist/react-slider.js +1 -1
  158. package/dist/react-slot-picker.js +1 -1
  159. package/dist/react-social-auth-button.js +3 -3
  160. package/dist/react-sortable-list.js +1 -1
  161. package/dist/react-stat-grid.js +1 -1
  162. package/dist/react-status-indicator.js +1 -1
  163. package/dist/react-steps.js +1 -1
  164. package/dist/react-sticky-note.js +1 -1
  165. package/dist/react-switch.js +1 -1
  166. package/dist/react-table-of-contents.js +1 -1
  167. package/dist/react-tabs.js +50 -2
  168. package/dist/react-tabs.js.map +2 -2
  169. package/dist/react-terminal.js +1 -1
  170. package/dist/react-test-results.js +1 -1
  171. package/dist/react-textarea.js +3 -3
  172. package/dist/react-textarea.js.map +1 -1
  173. package/dist/react-thread-view.js +2 -2
  174. package/dist/react-timeline.js +1 -1
  175. package/dist/react-toast.js +1 -1
  176. package/dist/react-tooltip.js +1 -1
  177. package/dist/react-version-selector.js +1 -1
  178. package/dist/react-video-grid.js +2 -2
  179. package/dist/react-video-player.js +1 -1
  180. package/dist/react-video-tile.js +2 -2
  181. package/dist/react-voice-pill.js +1 -1
  182. package/dist/react-waveform.js +1 -1
  183. package/dist/react-wizard.js +1 -1
  184. package/dist/theme.js +1 -1
  185. package/package.json +5 -1
  186. package/dist/chunk-NKCWOPNX.js.map +0 -7
  187. package/dist/chunk-Y2FNNAIL.js.map +0 -1
  188. package/dist/chunk-ZF3OHCGV.js.map +0 -7
  189. /package/dist/{chunk-533MCMSU.js.map → chunk-3I3DYDHR.js.map} +0 -0
  190. /package/dist/{chunk-H54FLNAF.js.map → chunk-63N4PZUJ.js.map} +0 -0
  191. /package/dist/{chunk-WK2IIUFO.js.map → chunk-QDMLIDYN.js.map} +0 -0
  192. /package/dist/{chunk-BOLFYVI6.js.map → chunk-QPCKJ2YR.js.map} +0 -0
  193. /package/dist/{chunk-UNEM2TRI.js.map → chunk-SDAJVXD4.js.map} +0 -0
  194. /package/dist/{chunk-VK3EQ34F.js.map → chunk-V24GDHUX.js.map} +0 -0
  195. /package/dist/{chunk-AMK4VCBG.js.map → chunk-WYKPPK3W.js.map} +0 -0
  196. /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": ["../../card/src/card.ts", "../../card/src/card.styles.ts", "../../react-card/src/card.tsx"],
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\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} 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 /** 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, asChild = false, ...props }, ref) {\n const api = createCard()\n const classes = cn(cardVariants({ 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\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";
@@ -6,7 +6,7 @@ import {
6
6
  cva,
7
7
  devWarn,
8
8
  generateId
9
- } from "./chunk-ZF3OHCGV.js";
9
+ } from "./chunk-2Q6HHFAN.js";
10
10
 
11
11
  // ../react-dropdown-menu/dist/index.js
12
12
  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-editor-status-bar/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-editor-tabs/dist/index.js
7
7
  import * as React from "react";
@@ -22,10 +22,10 @@ import {
22
22
  searchEmojis,
23
23
  twemojiAssetUrl,
24
24
  twemojiFilename
25
- } from "./chunk-533MCMSU.js";
25
+ } from "./chunk-3I3DYDHR.js";
26
26
  import {
27
27
  cn
28
- } from "./chunk-ZF3OHCGV.js";
28
+ } from "./chunk-2Q6HHFAN.js";
29
29
 
30
30
  // ../react-emoji-picker/dist/index.js
31
31
  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-empty-state/dist/index.js
7
7
  import * as React from "react";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createDialog
3
- } from "./chunk-VK3EQ34F.js";
3
+ } from "./chunk-V24GDHUX.js";
4
4
  import {
5
5
  cn,
6
6
  cva,
7
7
  generateId
8
- } from "./chunk-ZF3OHCGV.js";
8
+ } from "./chunk-2Q6HHFAN.js";
9
9
 
10
10
  // ../react-feedback-dialog/dist/index.js
11
11
  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-file-tree/dist/index.js
7
7
  import * as React from "react";
@@ -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-file-upload/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-floating-reactions/dist/index.js
7
7
  import * as React from "react";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  InfiniteCanvas
3
- } from "./chunk-AMK4VCBG.js";
3
+ } from "./chunk-WYKPPK3W.js";
4
4
  import {
5
5
  cn,
6
6
  cva
7
- } from "./chunk-ZF3OHCGV.js";
7
+ } from "./chunk-2Q6HHFAN.js";
8
8
 
9
9
  // ../react-flow-editor/dist/index.js
10
10
  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-footer/dist/index.js
7
7
  import * as React from "react";
@@ -0,0 +1,105 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-2Q6HHFAN.js";
4
+
5
+ // ../react-funnel-chart/dist/index.js
6
+ import * as React from "react";
7
+
8
+ // ../funnel-chart/dist/index.js
9
+ var DEFAULT_FUNNEL_MIN_BAR_PERCENT = 6;
10
+ var percentOf = (part, whole) => whole ? part / whole * 100 : 0;
11
+ function computeFunnel(steps, minBarPercent = DEFAULT_FUNNEL_MIN_BAR_PERCENT) {
12
+ const top = steps.length ? steps[0].value : 0;
13
+ return steps.map((step, i) => {
14
+ const shareOfTop = percentOf(step.value, top);
15
+ const following = steps[i + 1];
16
+ return {
17
+ step,
18
+ shareOfTop,
19
+ barPercent: Math.min(100, Math.max(shareOfTop, minBarPercent)),
20
+ next: following ? {
21
+ conversion: percentOf(following.value, step.value),
22
+ dropped: step.value - following.value
23
+ } : void 0
24
+ };
25
+ });
26
+ }
27
+ var funnelChartDefaults = {
28
+ formatValue: (value) => value.toLocaleString("en-US"),
29
+ formatPercent: (percent) => `${percent.toFixed(1)}%`,
30
+ shareLabel: (share) => `${share} of top`,
31
+ conversionLabel: (percent) => `${percent} continue`,
32
+ droppedLabel: (count) => `\u2212${count} dropped`
33
+ };
34
+ var funnelChartClasses = {
35
+ root: "m-0 grid list-none p-0",
36
+ bar: "relative flex items-center gap-3 overflow-hidden rounded-lg border border-border bg-background px-3.5 py-3",
37
+ fill: "absolute inset-y-0 left-0 border-r-2 border-primary bg-accent",
38
+ chevron: "relative shrink-0 text-primary",
39
+ text: "relative grid min-w-0 flex-1",
40
+ label: "text-[13px] font-bold text-foreground",
41
+ description: "text-[11px] text-muted-foreground",
42
+ figure: "relative grid text-right",
43
+ value: "text-[15px] font-bold tabular-nums text-foreground",
44
+ share: "text-[10.5px] text-muted-foreground",
45
+ transition: "flex items-center gap-2 py-1.5 pl-[18px] text-[11px] text-muted-foreground",
46
+ conversion: "font-semibold text-success",
47
+ dropped: "font-semibold text-destructive"
48
+ };
49
+
50
+ // ../react-funnel-chart/dist/index.js
51
+ import { jsx, jsxs } from "react/jsx-runtime";
52
+ function Chevron() {
53
+ return /* @__PURE__ */ jsx(
54
+ "svg",
55
+ {
56
+ className: funnelChartClasses.chevron,
57
+ width: "15",
58
+ height: "15",
59
+ viewBox: "0 0 24 24",
60
+ fill: "none",
61
+ stroke: "currentColor",
62
+ strokeWidth: "2",
63
+ strokeLinecap: "round",
64
+ strokeLinejoin: "round",
65
+ "aria-hidden": "true",
66
+ children: /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" })
67
+ }
68
+ );
69
+ }
70
+ var FunnelChart = React.forwardRef(function FunnelChart2({
71
+ steps,
72
+ formatValue = funnelChartDefaults.formatValue,
73
+ formatPercent = funnelChartDefaults.formatPercent,
74
+ minBarPercent = DEFAULT_FUNNEL_MIN_BAR_PERCENT,
75
+ shareLabel = funnelChartDefaults.shareLabel,
76
+ conversionLabel = funnelChartDefaults.conversionLabel,
77
+ droppedLabel = funnelChartDefaults.droppedLabel,
78
+ className,
79
+ ...rest
80
+ }, ref) {
81
+ const rows = React.useMemo(() => computeFunnel(steps, minBarPercent), [steps, minBarPercent]);
82
+ return /* @__PURE__ */ jsx("ol", { ref, className: cn(funnelChartClasses.root, className), "data-slot": "funnel-chart", ...rest, children: rows.map((row) => /* @__PURE__ */ jsxs("li", { children: [
83
+ /* @__PURE__ */ jsxs("div", { className: funnelChartClasses.bar, children: [
84
+ /* @__PURE__ */ jsx("div", { className: funnelChartClasses.fill, style: { width: `${row.barPercent}%` }, "aria-hidden": "true" }),
85
+ /* @__PURE__ */ jsx(Chevron, {}),
86
+ /* @__PURE__ */ jsxs("div", { className: funnelChartClasses.text, children: [
87
+ /* @__PURE__ */ jsx("b", { className: funnelChartClasses.label, children: row.step.label }),
88
+ row.step.description && /* @__PURE__ */ jsx("span", { className: funnelChartClasses.description, children: row.step.description })
89
+ ] }),
90
+ /* @__PURE__ */ jsxs("div", { className: funnelChartClasses.figure, children: [
91
+ /* @__PURE__ */ jsx("b", { className: funnelChartClasses.value, children: formatValue(row.step.value) }),
92
+ /* @__PURE__ */ jsx("span", { className: funnelChartClasses.share, children: shareLabel(formatPercent(row.shareOfTop)) })
93
+ ] })
94
+ ] }),
95
+ row.next && /* @__PURE__ */ jsxs("div", { className: funnelChartClasses.transition, children: [
96
+ /* @__PURE__ */ jsx("span", { className: funnelChartClasses.conversion, children: conversionLabel(formatPercent(row.next.conversion)) }),
97
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }),
98
+ /* @__PURE__ */ jsx("span", { className: funnelChartClasses.dropped, children: droppedLabel(formatValue(row.next.dropped)) })
99
+ ] })
100
+ ] }, row.step.id)) });
101
+ });
102
+ export {
103
+ FunnelChart
104
+ };
105
+ //# sourceMappingURL=react-funnel-chart.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../funnel-chart/src/funnel-chart.ts", "../../funnel-chart/src/funnel-chart.styles.ts", "../../react-funnel-chart/src/funnel-chart.tsx"],
4
+ "sourcesContent": ["export interface FunnelChartStep {\n /** Stable key. */\n id: string\n /** Step name. */\n label: string\n /** Secondary line under the label. */\n description?: string\n /** Count at this step. */\n value: number\n}\n\nexport interface FunnelChartTransition {\n /** Percent (0–100) of this step that reached the next one. */\n conversion: number\n /** Absolute count lost between this step and the next. */\n dropped: number\n}\n\nexport interface FunnelChartRow {\n step: FunnelChartStep\n /** Percent (0–100) of the first step's value. */\n shareOfTop: number\n /** Width the bar draws at, in percent — never below `minBarPercent`. */\n barPercent: number\n /** Transition to the following step; absent on the last step. */\n next?: FunnelChartTransition\n}\n\n/** Smallest bar width in percent, so a tiny step stays visible. */\nexport const DEFAULT_FUNNEL_MIN_BAR_PERCENT = 6\n\nconst percentOf = (part: number, whole: number) => (whole ? (part / whole) * 100 : 0)\n\n/**\n * Derive every row of a stepped conversion funnel: each step's share of the top\n * step, the bar width it draws at, and between two steps the continue-rate and\n * how many were lost. Pure and deterministic.\n */\nexport function computeFunnel(\n steps: FunnelChartStep[],\n minBarPercent: number = DEFAULT_FUNNEL_MIN_BAR_PERCENT,\n): FunnelChartRow[] {\n const top = steps.length ? steps[0].value : 0\n return steps.map((step, i) => {\n const shareOfTop = percentOf(step.value, top)\n const following = steps[i + 1]\n return {\n step,\n shareOfTop,\n barPercent: Math.min(100, Math.max(shareOfTop, minBarPercent)),\n next: following\n ? {\n conversion: percentOf(following.value, step.value),\n dropped: step.value - following.value,\n }\n : undefined,\n }\n })\n}\n\n/** Default copy + number formatting; every one is overridable by a prop. */\nexport const funnelChartDefaults = {\n formatValue: (value: number) => value.toLocaleString('en-US'),\n formatPercent: (percent: number) => `${percent.toFixed(1)}%`,\n shareLabel: (share: string) => `${share} of top`,\n conversionLabel: (percent: string) => `${percent} continue`,\n droppedLabel: (count: string) => `−${count} dropped`,\n}\n", "/** Token-class styles for FunnelChart; no colour literals. */\nexport const funnelChartClasses = {\n root: 'm-0 grid list-none p-0',\n bar: 'relative flex items-center gap-3 overflow-hidden rounded-lg border border-border bg-background px-3.5 py-3',\n fill: 'absolute inset-y-0 left-0 border-r-2 border-primary bg-accent',\n chevron: 'relative shrink-0 text-primary',\n text: 'relative grid min-w-0 flex-1',\n label: 'text-[13px] font-bold text-foreground',\n description: 'text-[11px] text-muted-foreground',\n figure: 'relative grid text-right',\n value: 'text-[15px] font-bold tabular-nums text-foreground',\n share: 'text-[10.5px] text-muted-foreground',\n transition: 'flex items-center gap-2 py-1.5 pl-[18px] text-[11px] text-muted-foreground',\n conversion: 'font-semibold text-success',\n dropped: 'font-semibold text-destructive',\n} as const\n", "import * as React from 'react'\nimport {\n computeFunnel,\n funnelChartClasses as c,\n funnelChartDefaults,\n DEFAULT_FUNNEL_MIN_BAR_PERCENT,\n type FunnelChartStep,\n} from '@refraction-ui/funnel-chart'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { FunnelChartStep }\n\nexport interface FunnelChartProps extends Omit<React.HTMLAttributes<HTMLOListElement>, 'children'> {\n /** The funnel steps, top first. */\n steps: FunnelChartStep[]\n /** Formats a count. */\n formatValue?: (value: number) => string\n /** Formats a percent (already 0–100). */\n formatPercent?: (percent: number) => string\n /** Smallest bar width in percent, so a tiny step stays visible. Defaults to 6. */\n minBarPercent?: number\n /** Copy — a step's share of the top step. */\n shareLabel?: (share: string) => string\n /** Copy — continue-rate between two steps. */\n conversionLabel?: (percent: string) => string\n /** Copy — count lost between two steps. */\n droppedLabel?: (count: string) => string\n}\n\nfunction Chevron() {\n return (\n <svg\n className={c.chevron}\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n )\n}\n\n/**\n * FunnelChart — a vertical conversion funnel: one bar per step, filled to its\n * share of the first step, with the continue-rate and drop-off between steps.\n * Renders an ordered list, so the figures are real text for assistive tech.\n */\nexport const FunnelChart = React.forwardRef<HTMLOListElement, FunnelChartProps>(function FunnelChart(\n {\n steps,\n formatValue = funnelChartDefaults.formatValue,\n formatPercent = funnelChartDefaults.formatPercent,\n minBarPercent = DEFAULT_FUNNEL_MIN_BAR_PERCENT,\n shareLabel = funnelChartDefaults.shareLabel,\n conversionLabel = funnelChartDefaults.conversionLabel,\n droppedLabel = funnelChartDefaults.droppedLabel,\n className,\n ...rest\n },\n ref,\n) {\n const rows = React.useMemo(() => computeFunnel(steps, minBarPercent), [steps, minBarPercent])\n return (\n <ol ref={ref} className={cn(c.root, className)} data-slot=\"funnel-chart\" {...rest}>\n {rows.map((row) => (\n <li key={row.step.id}>\n <div className={c.bar}>\n <div className={c.fill} style={{ width: `${row.barPercent}%` }} aria-hidden=\"true\" />\n <Chevron />\n <div className={c.text}>\n <b className={c.label}>{row.step.label}</b>\n {row.step.description && <span className={c.description}>{row.step.description}</span>}\n </div>\n <div className={c.figure}>\n <b className={c.value}>{formatValue(row.step.value)}</b>\n <span className={c.share}>{shareLabel(formatPercent(row.shareOfTop))}</span>\n </div>\n </div>\n {row.next && (\n <div className={c.transition}>\n <span className={c.conversion}>{conversionLabel(formatPercent(row.next.conversion))}</span>\n <span aria-hidden=\"true\">·</span>\n <span className={c.dropped}>{droppedLabel(formatValue(row.next.dropped))}</span>\n </div>\n )}\n </li>\n ))}\n </ol>\n )\n})\n"],
5
+ "mappings": "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",
6
+ "names": ["c", "FunnelChart"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  InfiniteCanvas
3
- } from "./chunk-AMK4VCBG.js";
3
+ } from "./chunk-WYKPPK3W.js";
4
4
  import {
5
5
  cn,
6
6
  cva
7
- } from "./chunk-ZF3OHCGV.js";
7
+ } from "./chunk-2Q6HHFAN.js";
8
8
 
9
9
  // ../react-graph-view/dist/index.js
10
10
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  InfiniteCanvas
3
- } from "./chunk-AMK4VCBG.js";
4
- import "./chunk-ZF3OHCGV.js";
3
+ } from "./chunk-WYKPPK3W.js";
4
+ import "./chunk-2Q6HHFAN.js";
5
5
  export {
6
6
  InfiniteCanvas
7
7
  };
@@ -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-inline-editor/dist/index.js
7
7
  import * as React from "react";
@@ -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-input-group/dist/index.js
8
8
  import * as React from "react";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  Input,
3
3
  inputVariants
4
- } from "./chunk-TOZBR4GL.js";
5
- import "./chunk-ZF3OHCGV.js";
4
+ } from "./chunk-RSWOLRIC.js";
5
+ import "./chunk-2Q6HHFAN.js";
6
6
  export {
7
7
  Input,
8
8
  inputVariants
@@ -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-install-prompt/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-kanban-board/dist/index.js
7
7
  import * as React from "react";
@@ -14,8 +14,8 @@ import {
14
14
  shortcutKeyStyles,
15
15
  shortcutSeparatorStyles,
16
16
  useShortcut
17
- } from "./chunk-WK2IIUFO.js";
18
- import "./chunk-ZF3OHCGV.js";
17
+ } from "./chunk-QDMLIDYN.js";
18
+ import "./chunk-2Q6HHFAN.js";
19
19
  export {
20
20
  AltHintState,
21
21
  KeyboardShortcut,
@@ -4,7 +4,7 @@ import {
4
4
  createKeyboardHandler,
5
5
  cva,
6
6
  generateId
7
- } from "./chunk-ZF3OHCGV.js";
7
+ } from "./chunk-2Q6HHFAN.js";
8
8
 
9
9
  // ../react-language-selector/dist/index.js
10
10
  import * as React from "react";