@refraction-ui/react 0.23.0 → 0.23.2

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 (164) hide show
  1. package/dist/{chunk-V24GDHUX.js → chunk-4ACSHPCM.js} +2 -2
  2. package/dist/{chunk-SDAJVXD4.js → chunk-5P56PN3J.js} +2 -2
  3. package/dist/chunk-75BKRTPO.js +417 -0
  4. package/dist/{chunk-2Q6HHFAN.js.map → chunk-75BKRTPO.js.map} +1 -1
  5. package/dist/{chunk-QPCKJ2YR.js → chunk-GG6MZDGV.js} +2 -2
  6. package/dist/{chunk-QDMLIDYN.js → chunk-GU5MI7FX.js} +2 -2
  7. package/dist/{chunk-Z5IHYNQD.js → chunk-JZQ5ZL46.js} +3 -3
  8. package/dist/{chunk-RSWOLRIC.js → chunk-KIZD73DK.js} +2 -2
  9. package/dist/{chunk-XMFNBOPO.js → chunk-PY2TIFCT.js} +2 -2
  10. package/dist/{chunk-3I3DYDHR.js → chunk-WNLYPQOS.js} +2 -2
  11. package/dist/{chunk-63N4PZUJ.js → chunk-X6HEKRWE.js} +2 -2
  12. package/dist/{chunk-WYKPPK3W.js → chunk-XAJDSVZR.js} +2 -2
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/internal/react-data-table/index.d.cts +2 -1
  16. package/dist/internal/react-data-table/index.d.ts +2 -1
  17. package/dist/internal/react-stat-grid/index.d.ts +2 -1
  18. package/dist/internal/shared/index.d.cts +10 -1
  19. package/dist/internal/shared/index.d.ts +10 -1
  20. package/dist/react-accordion.js +1 -1
  21. package/dist/react-action-list.js +1 -1
  22. package/dist/react-ai.js +1 -1
  23. package/dist/react-analytics.js +1 -1
  24. package/dist/react-animated-text.js +1 -1
  25. package/dist/react-app-shell.js +1 -1
  26. package/dist/react-audience-feature-card.js +1 -1
  27. package/dist/react-audio-room.js +1 -1
  28. package/dist/react-auth.js +1 -1
  29. package/dist/react-avatar-group.js +1 -1
  30. package/dist/react-avatar.js +1 -1
  31. package/dist/react-badge.js +1 -1
  32. package/dist/react-bottom-nav.js +1 -1
  33. package/dist/react-brand-network-cell.js +1 -1
  34. package/dist/react-breadcrumbs.js +1 -1
  35. package/dist/react-browser-chrome-mock.js +1 -1
  36. package/dist/react-button.js +3 -3
  37. package/dist/react-calendar.js +1 -1
  38. package/dist/react-call-controls.js +1 -1
  39. package/dist/react-callout.js +1 -1
  40. package/dist/react-card-grid.js +1 -1
  41. package/dist/react-card.js +1 -1
  42. package/dist/react-carousel.js +1 -1
  43. package/dist/react-charts.js +1 -1
  44. package/dist/react-checkbox.js +1 -1
  45. package/dist/react-checklist.js +1 -1
  46. package/dist/react-code-block.js +1 -1
  47. package/dist/react-code-editor.js +1 -1
  48. package/dist/react-collapsible.js +1 -1
  49. package/dist/react-combobox.js +1 -1
  50. package/dist/react-command-input.js +1 -1
  51. package/dist/react-command.js +1 -1
  52. package/dist/react-composer.js +3 -3
  53. package/dist/react-content-protection.js +1 -1
  54. package/dist/react-conversation.js +5 -5
  55. package/dist/react-cookie-consent.js +1 -1
  56. package/dist/react-data-table.js +1 -1
  57. package/dist/react-data-table.js.map +2 -2
  58. package/dist/react-date-picker.js +1 -1
  59. package/dist/react-device-frame.js +1 -1
  60. package/dist/react-dialog.js +2 -2
  61. package/dist/react-diff-viewer.js +1 -1
  62. package/dist/react-dropdown-menu.js +1 -1
  63. package/dist/react-editor-status-bar.js +1 -1
  64. package/dist/react-editor-tabs.js +1 -1
  65. package/dist/react-emoji-picker.js +2 -2
  66. package/dist/react-empty-state.js +1 -1
  67. package/dist/react-feedback-dialog.js +2 -2
  68. package/dist/react-file-tree.js +1 -1
  69. package/dist/react-file-upload.js +1 -1
  70. package/dist/react-floating-reactions.js +1 -1
  71. package/dist/react-flow-editor.js +2 -2
  72. package/dist/react-footer.js +1 -1
  73. package/dist/react-funnel-chart.js +1 -1
  74. package/dist/react-graph-view.js +2 -2
  75. package/dist/react-infinite-canvas.js +2 -2
  76. package/dist/react-inline-editor.js +1 -1
  77. package/dist/react-input-group.js +1 -1
  78. package/dist/react-input.js +2 -2
  79. package/dist/react-install-prompt.js +1 -1
  80. package/dist/react-kanban-board.js +1 -1
  81. package/dist/react-keyboard-shortcut.js +2 -2
  82. package/dist/react-language-selector.js +1 -1
  83. package/dist/react-line-chart.js +1 -1
  84. package/dist/react-link-card.js +1 -1
  85. package/dist/react-live-captions.js +1 -1
  86. package/dist/react-live-cursors.js +1 -1
  87. package/dist/react-live-transcript.js +1 -1
  88. package/dist/react-location-selector.js +1 -1
  89. package/dist/react-logger.js +1 -1
  90. package/dist/react-markdown-renderer.js +2 -2
  91. package/dist/react-marquee-strip.js +1 -1
  92. package/dist/react-mascot.js +1 -1
  93. package/dist/react-mastery-bar.js +1 -1
  94. package/dist/react-mini-map.js +1 -1
  95. package/dist/react-mobile-nav.js +1 -1
  96. package/dist/react-native-select.js +1 -1
  97. package/dist/react-navbar.js +1 -1
  98. package/dist/react-numbered-steps.js +1 -1
  99. package/dist/react-otp-input.js +1 -1
  100. package/dist/react-page-header.js +1 -1
  101. package/dist/react-pagination.js +1 -1
  102. package/dist/react-password-input.js +2 -2
  103. package/dist/react-payment.js +1 -1
  104. package/dist/react-popover.js +1 -1
  105. package/dist/react-pre-call-lobby.js +1 -1
  106. package/dist/react-presence-indicator.js +1 -1
  107. package/dist/react-pricing-card.js +1 -1
  108. package/dist/react-progress-display.js +1 -1
  109. package/dist/react-radial-gauge.js +1 -1
  110. package/dist/react-radio.js +1 -1
  111. package/dist/react-rating-scale.js +1 -1
  112. package/dist/react-reaction-bar.js +1 -1
  113. package/dist/react-resizable-layout.js +1 -1
  114. package/dist/react-search-bar.js +1 -1
  115. package/dist/react-section-head.js +1 -1
  116. package/dist/react-segmented-control.js +1 -1
  117. package/dist/react-select.js +1 -1
  118. package/dist/react-separator.js +1 -1
  119. package/dist/react-sheet.js +1 -1
  120. package/dist/react-sidebar.js +1 -1
  121. package/dist/react-skeleton.js +1 -1
  122. package/dist/react-skip-to-content.js +1 -1
  123. package/dist/react-slide-viewer.js +1 -1
  124. package/dist/react-slider.js +1 -1
  125. package/dist/react-slot-picker.js +1 -1
  126. package/dist/react-social-auth-button.js +3 -3
  127. package/dist/react-sortable-list.js +1 -1
  128. package/dist/react-stat-grid.js +1 -1
  129. package/dist/react-stat-grid.js.map +1 -1
  130. package/dist/react-status-indicator.js +1 -1
  131. package/dist/react-steps.js +1 -1
  132. package/dist/react-sticky-note.js +1 -1
  133. package/dist/react-switch.js +1 -1
  134. package/dist/react-table-of-contents.js +1 -1
  135. package/dist/react-table.js +1 -1
  136. package/dist/react-tabs.js +1 -1
  137. package/dist/react-terminal.js +1 -1
  138. package/dist/react-test-results.js +1 -1
  139. package/dist/react-textarea.js +1 -1
  140. package/dist/react-thread-view.js +2 -2
  141. package/dist/react-timeline.js +1 -1
  142. package/dist/react-toast.js +1 -1
  143. package/dist/react-tooltip.js +1 -1
  144. package/dist/react-version-selector.js +1 -1
  145. package/dist/react-video-grid.js +2 -2
  146. package/dist/react-video-player.js +1 -1
  147. package/dist/react-video-tile.js +2 -2
  148. package/dist/react-voice-pill.js +1 -1
  149. package/dist/react-waveform.js +1 -1
  150. package/dist/react-wizard.js +1 -1
  151. package/dist/shared.js +53 -0
  152. package/dist/shared.js.map +7 -0
  153. package/package.json +1 -1
  154. package/dist/chunk-2Q6HHFAN.js +0 -164
  155. /package/dist/{chunk-V24GDHUX.js.map → chunk-4ACSHPCM.js.map} +0 -0
  156. /package/dist/{chunk-SDAJVXD4.js.map → chunk-5P56PN3J.js.map} +0 -0
  157. /package/dist/{chunk-QPCKJ2YR.js.map → chunk-GG6MZDGV.js.map} +0 -0
  158. /package/dist/{chunk-QDMLIDYN.js.map → chunk-GU5MI7FX.js.map} +0 -0
  159. /package/dist/{chunk-Z5IHYNQD.js.map → chunk-JZQ5ZL46.js.map} +0 -0
  160. /package/dist/{chunk-RSWOLRIC.js.map → chunk-KIZD73DK.js.map} +0 -0
  161. /package/dist/{chunk-XMFNBOPO.js.map → chunk-PY2TIFCT.js.map} +0 -0
  162. /package/dist/{chunk-3I3DYDHR.js.map → chunk-WNLYPQOS.js.map} +0 -0
  163. /package/dist/{chunk-63N4PZUJ.js.map → chunk-X6HEKRWE.js.map} +0 -0
  164. /package/dist/{chunk-WYKPPK3W.js.map → chunk-XAJDSVZR.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-pre-call-lobby/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-presence-indicator/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-pricing-card/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-progress-display/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-radial-gauge/dist/index.js
7
7
  import * as React from "react";
@@ -2,7 +2,7 @@ import {
2
2
  cn,
3
3
  cva,
4
4
  devWarn
5
- } from "./chunk-2Q6HHFAN.js";
5
+ } from "./chunk-75BKRTPO.js";
6
6
 
7
7
  // ../react-radio/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-rating-scale/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-2Q6HHFAN.js";
5
+ } from "./chunk-75BKRTPO.js";
6
6
 
7
7
  // ../react-reaction-bar/dist/index.js
8
8
  import * as React from "react";
@@ -2,7 +2,7 @@ import {
2
2
  cn,
3
3
  cva,
4
4
  devWarn
5
- } from "./chunk-2Q6HHFAN.js";
5
+ } from "./chunk-75BKRTPO.js";
6
6
 
7
7
  // ../react-resizable-layout/dist/index.js
8
8
  import * as React from "react";
@@ -5,7 +5,7 @@ import {
5
5
  cva,
6
6
  devWarn,
7
7
  generateId
8
- } from "./chunk-2Q6HHFAN.js";
8
+ } from "./chunk-75BKRTPO.js";
9
9
 
10
10
  // ../react-search-bar/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-section-head/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-segmented-control/dist/index.js
7
7
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  cva,
5
5
  devWarn,
6
6
  generateId
7
- } from "./chunk-2Q6HHFAN.js";
7
+ } from "./chunk-75BKRTPO.js";
8
8
 
9
9
  // ../react-select/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-separator/dist/index.js
7
7
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  cva,
5
5
  devWarn,
6
6
  generateId
7
- } from "./chunk-2Q6HHFAN.js";
7
+ } from "./chunk-75BKRTPO.js";
8
8
 
9
9
  // ../react-sheet/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-sidebar/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-skeleton/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-skip-to-content/dist/index.js
7
7
  import * as React from "react";
@@ -2,7 +2,7 @@ import {
2
2
  Keys,
3
3
  cn,
4
4
  cva
5
- } from "./chunk-2Q6HHFAN.js";
5
+ } from "./chunk-75BKRTPO.js";
6
6
 
7
7
  // ../react-slide-viewer/dist/index.js
8
8
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-2Q6HHFAN.js";
3
+ } from "./chunk-75BKRTPO.js";
4
4
 
5
5
  // ../react-slider/dist/index.js
6
6
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-slot-picker/dist/index.js
7
7
  import * as React from "react";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  Button
3
- } from "./chunk-Z5IHYNQD.js";
4
- import "./chunk-QDMLIDYN.js";
3
+ } from "./chunk-JZQ5ZL46.js";
4
+ import "./chunk-GU5MI7FX.js";
5
5
  import {
6
6
  cn,
7
7
  cva
8
- } from "./chunk-2Q6HHFAN.js";
8
+ } from "./chunk-75BKRTPO.js";
9
9
 
10
10
  // ../react-social-auth-button/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-sortable-list/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-stat-grid/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../stat-grid/src/stat-grid.ts", "../../stat-grid/src/stat-grid.styles.ts", "../../react-stat-grid/src/stat-grid.tsx"],
4
- "sourcesContent": ["/** Semantic colour of a stat's value. */\nexport type StatTone = 'default' | 'positive' | 'negative' | 'caution'\n/** `plain` = marketing callouts; `card` = bordered dashboard KPI cards. */\nexport type StatGridVariant = 'plain' | 'card'\n/** Whether the label sits under the value (callout) or above it (KPI). */\nexport type StatGridLayout = 'value-first' | 'label-first'\n/** Column count: a fixed maximum that reflows down on narrow screens, or `auto`. */\nexport type StatGridColumns = 1 | 2 | 3 | 4 | 'auto'\n\n/** A single stat callout displayed in the grid. */\nexport type StatItem = {\n /** The primary value displayed prominently (e.g. \"10k+\", \"$4.2M\"). */\n value: string\n /** The descriptive label. */\n label: string\n /** Stable key; defaults to the index. */\n id?: string\n /** Optional line explaining the figure (how it was computed, a delta). */\n description?: string\n /** Colour of the value. Defaults to `default`. */\n tone?: StatTone\n}\n\nexport interface StatGridAPI {\n /** ARIA attributes to spread on the grid container element (`role=\"list\"`). */\n ariaProps: { role: 'list' }\n /** Data attributes for styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/**\n * Compute the number of grid columns for a stat grid.\n *\n * - 1 item → 1 column\n * - 2 items → 2 columns\n * - 3 or more items → capped at `max` (default 3)\n */\nexport function statColumns(count: number, max = 3): 1 | 2 | 3 | 4 {\n if (count <= 1) return 1\n if (count === 2) return 2\n return Math.min(count, max, 4) as 3 | 4\n}\n\n/** The cva key for a column setting (clamped to the supported 1–4). */\nexport function statColumnsKey(columns: StatGridColumns): '1' | '2' | '3' | '4' | 'auto' {\n if (columns === 'auto') return 'auto'\n return String(Math.min(Math.max(Math.round(columns), 1), 4)) as '1' | '2' | '3' | '4'\n}\n\n/**\n * Build the framework-agnostic container props for a stat grid.\n *\n * Returns `role=\"list\"` and data attributes; adapters spread these onto their\n * container element and render the items themselves.\n */\nexport function createStatGrid(): StatGridAPI {\n return {\n ariaProps: { role: 'list' },\n dataAttributes: {},\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/**\n * Grid container. Column counts are responsive (one column on a phone, more\n * as the width allows) — never a fixed inline template that cannot reflow.\n * `auto` fits as many ~12rem items per row as the width allows.\n */\nexport const statGridVariants = cva({\n base: 'grid',\n variants: {\n columns: {\n '1': 'grid-cols-1',\n '2': 'grid-cols-1 sm:grid-cols-2',\n '3': 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n '4': 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n auto: 'grid-cols-[repeat(auto-fill,minmax(12rem,1fr))]',\n },\n variant: {\n plain: 'gap-8',\n card: 'gap-3',\n },\n },\n defaultVariants: {\n columns: '3',\n variant: 'plain',\n },\n})\n\n/** Individual stat item container (role=\"listitem\"). */\nexport const statItemVariants = cva({\n base: 'flex min-w-0 flex-col',\n variants: {\n variant: {\n plain: '',\n card: 'gap-1 rounded-lg border border-border bg-card p-4 text-card-foreground',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n})\n\n/** @deprecated Use `statItemVariants()`; kept for existing imports. */\nexport const statItemClass = 'flex flex-col'\n\n/** The value of a stat, by variant and tone. */\nexport const statValueVariants = cva({\n base: 'font-bold tabular-nums',\n variants: {\n variant: {\n plain: 'text-xl sm:text-2xl',\n card: 'text-2xl leading-tight',\n },\n tone: {\n default: '',\n positive: 'text-success',\n negative: 'text-destructive',\n caution: 'text-warning',\n },\n },\n compoundVariants: [\n { variant: 'plain', tone: 'default', class: 'text-primary' },\n { variant: 'card', tone: 'default', class: 'text-foreground' },\n ],\n defaultVariants: {\n variant: 'plain',\n tone: 'default',\n },\n})\n\n/** @deprecated Use `statValueVariants()`; kept for existing imports. */\nexport const statValueClass = 'text-xl sm:text-2xl font-bold text-primary'\n\n/** The descriptive label. Above the value it reads as a small caption. */\nexport const statLabelVariants = cva({\n base: 'text-muted-foreground',\n variants: {\n layout: {\n 'value-first': 'mt-1 text-sm leading-snug',\n 'label-first': 'text-xs uppercase tracking-wide',\n },\n },\n defaultVariants: {\n layout: 'value-first',\n },\n})\n\n/** @deprecated Use `statLabelVariants()`; kept for existing imports. */\nexport const statLabelClass = 'mt-1 text-sm text-muted-foreground leading-snug'\n\n/** Optional line under a stat explaining how it was computed. */\nexport const statDescriptionClass = 'text-xs leading-snug text-muted-foreground'\n", "import * as React from 'react'\nimport {\n createStatGrid,\n statColumns,\n statColumnsKey,\n statGridVariants,\n statItemVariants,\n statValueVariants,\n statLabelVariants,\n statDescriptionClass,\n type StatTone,\n type StatGridVariant,\n type StatGridLayout,\n type StatGridColumns,\n} from '@refraction-ui/stat-grid'\nimport { cn } from '@refraction-ui/shared'\n\nexport type { StatItem, StatTone, StatGridVariant, StatGridLayout, StatGridColumns } from '@refraction-ui/stat-grid'\n\nexport interface StatGridItem {\n /** The primary value displayed prominently. Allows rich content in React. */\n value: React.ReactNode\n /** The descriptive label. */\n label: React.ReactNode\n /** Stable key; defaults to the index. */\n id?: string\n /** Optional line explaining the figure (how it was computed, a delta). */\n description?: React.ReactNode\n /** Colour of the value. Defaults to `default`. */\n tone?: StatTone\n /** Extra attributes for this item's element (`data-*`, `aria-*`, `title`, className). */\n props?: React.HTMLAttributes<HTMLDivElement>\n}\n\nexport interface StatGridProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content'> {\n /** The stat items to display in the grid. */\n items: StatGridItem[]\n /**\n * Maximum columns (reflows to fewer on narrow screens), or `auto` to fit as\n * many ~12rem items as the width allows. Defaults to\n * `statColumns(items.length)`: 1 → 1, 2 → 2, 3+ → 3.\n */\n columns?: StatGridColumns\n /** `plain` marketing callouts (default) or bordered `card` KPIs. */\n variant?: StatGridVariant\n /** `value-first` (default) or `label-first` (dashboard KPI order). */\n layout?: StatGridLayout\n}\n\n/**\n * StatGrid — a responsive grid of stats: marketing callouts (`plain`) or\n * dashboard KPI cards (`card`), value- or label-first, with an optional\n * description and a tone per item. Uses `role=\"list\"` / `role=\"listitem\"`.\n */\nexport const StatGrid = React.forwardRef<HTMLDivElement, StatGridProps>(\n function StatGrid(\n { items, columns, variant = 'plain', layout = 'value-first', className, ...props },\n ref,\n ) {\n const cols = statColumnsKey(columns ?? statColumns(items.length))\n const { ariaProps, dataAttributes } = createStatGrid()\n\n return (\n <div\n ref={ref}\n className={cn(statGridVariants({ columns: cols, variant }), className)}\n data-variant={variant}\n data-layout={layout}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n >\n {items.map((item, index) => {\n const { className: itemClassName, ...itemProps } = item.props ?? {}\n const label = <span className={statLabelVariants({ layout })}>{item.label}</span>\n return (\n <div\n key={item.id ?? index}\n role=\"listitem\"\n className={cn(statItemVariants({ variant }), itemClassName)}\n data-tone={item.tone ?? 'default'}\n {...itemProps}\n >\n {layout === 'label-first' && label}\n <span className={statValueVariants({ variant, tone: item.tone ?? 'default' })}>{item.value}</span>\n {layout === 'value-first' && label}\n {item.description != null && <span className={statDescriptionClass}>{item.description}</span>}\n </div>\n )\n })}\n </div>\n )\n },\n)\n"],
4
+ "sourcesContent": ["/** Semantic colour of a stat's value. */\nexport type StatTone = 'default' | 'positive' | 'negative' | 'caution'\n/** `plain` = marketing callouts; `card` = bordered dashboard KPI cards. */\nexport type StatGridVariant = 'plain' | 'card'\n/** Whether the label sits under the value (callout) or above it (KPI). */\nexport type StatGridLayout = 'value-first' | 'label-first'\n/** Column count: a fixed maximum that reflows down on narrow screens, or `auto`. */\nexport type StatGridColumns = 1 | 2 | 3 | 4 | 'auto'\n\n/** A single stat callout displayed in the grid. */\nexport type StatItem = {\n /** The primary value displayed prominently (e.g. \"10k+\", \"$4.2M\"). */\n value: string\n /** The descriptive label. */\n label: string\n /** Stable key; defaults to the index. */\n id?: string\n /** Optional line explaining the figure (how it was computed, a delta). */\n description?: string\n /** Colour of the value. Defaults to `default`. */\n tone?: StatTone\n}\n\nexport interface StatGridAPI {\n /** ARIA attributes to spread on the grid container element (`role=\"list\"`). */\n ariaProps: { role: 'list' }\n /** Data attributes for styling hooks. */\n dataAttributes: Record<string, string>\n}\n\n/**\n * Compute the number of grid columns for a stat grid.\n *\n * - 1 item → 1 column\n * - 2 items → 2 columns\n * - 3 or more items → capped at `max` (default 3)\n */\nexport function statColumns(count: number, max = 3): 1 | 2 | 3 | 4 {\n if (count <= 1) return 1\n if (count === 2) return 2\n return Math.min(count, max, 4) as 3 | 4\n}\n\n/** The cva key for a column setting (clamped to the supported 1–4). */\nexport function statColumnsKey(columns: StatGridColumns): '1' | '2' | '3' | '4' | 'auto' {\n if (columns === 'auto') return 'auto'\n return String(Math.min(Math.max(Math.round(columns), 1), 4)) as '1' | '2' | '3' | '4'\n}\n\n/**\n * Build the framework-agnostic container props for a stat grid.\n *\n * Returns `role=\"list\"` and data attributes; adapters spread these onto their\n * container element and render the items themselves.\n */\nexport function createStatGrid(): StatGridAPI {\n return {\n ariaProps: { role: 'list' },\n dataAttributes: {},\n }\n}\n", "import { cva } from '@refraction-ui/shared'\n\n/**\n * Grid container. Column counts are responsive (one column on a phone, more\n * as the width allows) — never a fixed inline template that cannot reflow.\n * `auto` fits as many ~12rem items per row as the width allows.\n */\nexport const statGridVariants = cva({\n base: 'grid',\n variants: {\n columns: {\n '1': 'grid-cols-1',\n '2': 'grid-cols-1 sm:grid-cols-2',\n '3': 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n '4': 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n auto: 'grid-cols-[repeat(auto-fill,minmax(12rem,1fr))]',\n },\n variant: {\n plain: 'gap-8',\n card: 'gap-3',\n },\n },\n defaultVariants: {\n columns: '3',\n variant: 'plain',\n },\n})\n\n/** Individual stat item container (role=\"listitem\"). */\nexport const statItemVariants = cva({\n base: 'flex min-w-0 flex-col',\n variants: {\n variant: {\n plain: '',\n card: 'gap-1 rounded-lg border border-border bg-card p-4 text-card-foreground',\n },\n },\n defaultVariants: {\n variant: 'plain',\n },\n})\n\n/** @deprecated Use `statItemVariants()`; kept for existing imports. */\nexport const statItemClass = 'flex flex-col'\n\n/** The value of a stat, by variant and tone. */\nexport const statValueVariants = cva({\n base: 'font-bold tabular-nums',\n variants: {\n variant: {\n plain: 'text-xl sm:text-2xl',\n card: 'text-2xl leading-tight',\n },\n tone: {\n default: '',\n positive: 'text-success',\n negative: 'text-destructive',\n caution: 'text-warning',\n },\n },\n compoundVariants: [\n { variant: 'plain', tone: 'default', class: 'text-primary' },\n { variant: 'card', tone: 'default', class: 'text-foreground' },\n ],\n defaultVariants: {\n variant: 'plain',\n tone: 'default',\n },\n})\n\n/** @deprecated Use `statValueVariants()`; kept for existing imports. */\nexport const statValueClass = 'text-xl sm:text-2xl font-bold text-primary'\n\n/** The descriptive label. Above the value it reads as a small caption. */\nexport const statLabelVariants = cva({\n base: 'text-muted-foreground',\n variants: {\n layout: {\n 'value-first': 'mt-1 text-sm leading-snug',\n 'label-first': 'text-xs uppercase tracking-wide',\n },\n },\n defaultVariants: {\n layout: 'value-first',\n },\n})\n\n/** @deprecated Use `statLabelVariants()`; kept for existing imports. */\nexport const statLabelClass = 'mt-1 text-sm text-muted-foreground leading-snug'\n\n/** Optional line under a stat explaining how it was computed. */\nexport const statDescriptionClass = 'text-xs leading-snug text-muted-foreground'\n", "import * as React from 'react'\nimport {\n createStatGrid,\n statColumns,\n statColumnsKey,\n statGridVariants,\n statItemVariants,\n statValueVariants,\n statLabelVariants,\n statDescriptionClass,\n type StatTone,\n type StatGridVariant,\n type StatGridLayout,\n type StatGridColumns,\n} from '@refraction-ui/stat-grid'\nimport { cn, type DataAttributes } from '@refraction-ui/shared'\n\nexport type { StatItem, StatTone, StatGridVariant, StatGridLayout, StatGridColumns } from '@refraction-ui/stat-grid'\n\nexport interface StatGridItem {\n /** The primary value displayed prominently. Allows rich content in React. */\n value: React.ReactNode\n /** The descriptive label. */\n label: React.ReactNode\n /** Stable key; defaults to the index. */\n id?: string\n /** Optional line explaining the figure (how it was computed, a delta). */\n description?: React.ReactNode\n /** Colour of the value. Defaults to `default`. */\n tone?: StatTone\n /** Extra attributes for this item's element (`data-*`, `aria-*`, `title`, className). */\n props?: React.HTMLAttributes<HTMLDivElement> & DataAttributes\n}\n\nexport interface StatGridProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'content'> {\n /** The stat items to display in the grid. */\n items: StatGridItem[]\n /**\n * Maximum columns (reflows to fewer on narrow screens), or `auto` to fit as\n * many ~12rem items as the width allows. Defaults to\n * `statColumns(items.length)`: 1 → 1, 2 → 2, 3+ → 3.\n */\n columns?: StatGridColumns\n /** `plain` marketing callouts (default) or bordered `card` KPIs. */\n variant?: StatGridVariant\n /** `value-first` (default) or `label-first` (dashboard KPI order). */\n layout?: StatGridLayout\n}\n\n/**\n * StatGrid — a responsive grid of stats: marketing callouts (`plain`) or\n * dashboard KPI cards (`card`), value- or label-first, with an optional\n * description and a tone per item. Uses `role=\"list\"` / `role=\"listitem\"`.\n */\nexport const StatGrid = React.forwardRef<HTMLDivElement, StatGridProps>(\n function StatGrid(\n { items, columns, variant = 'plain', layout = 'value-first', className, ...props },\n ref,\n ) {\n const cols = statColumnsKey(columns ?? statColumns(items.length))\n const { ariaProps, dataAttributes } = createStatGrid()\n\n return (\n <div\n ref={ref}\n className={cn(statGridVariants({ columns: cols, variant }), className)}\n data-variant={variant}\n data-layout={layout}\n {...ariaProps}\n {...dataAttributes}\n {...props}\n >\n {items.map((item, index) => {\n const { className: itemClassName, ...itemProps } = item.props ?? {}\n const label = <span className={statLabelVariants({ layout })}>{item.label}</span>\n return (\n <div\n key={item.id ?? index}\n role=\"listitem\"\n className={cn(statItemVariants({ variant }), itemClassName)}\n data-tone={item.tone ?? 'default'}\n {...itemProps}\n >\n {layout === 'label-first' && label}\n <span className={statValueVariants({ variant, tone: item.tone ?? 'default' })}>{item.value}</span>\n {layout === 'value-first' && label}\n {item.description != null && <span className={statDescriptionClass}>{item.description}</span>}\n </div>\n )\n })}\n </div>\n )\n },\n)\n"],
5
5
  "mappings": ";;;;;;;;;AAqCO,SAAS,YAAY,OAAe,MAAM,GAAkB;AACjE,MAAI,SAAS,EAAG,QAAO;AACvB,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO,KAAK,IAAI,OAAO,KAAK,CAAC;AAC/B;AAGO,SAAS,eAAe,SAA0D;AACvF,MAAI,YAAY,OAAQ,QAAO;AAC/B,SAAO,OAAO,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7D;AAQO,SAAS,iBAA8B;AAC5C,SAAO;IACL,WAAW,EAAE,MAAM,OAAA;IACnB,gBAAgB,CAAA;EAAC;AAErB;ACrDO,IAAM,mBAAmB,IAAI;EAClC,MAAM;EACN,UAAU;IACR,SAAS;MACP,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,MAAM;IAAA;IAER,SAAS;MACP,OAAO;MACP,MAAM;IAAA;EACR;EAEF,iBAAiB;IACf,SAAS;IACT,SAAS;EAAA;AAEb,CAAC;AAGM,IAAM,mBAAmB,IAAI;EAClC,MAAM;EACN,UAAU;IACR,SAAS;MACP,OAAO;MACP,MAAM;IAAA;EACR;EAEF,iBAAiB;IACf,SAAS;EAAA;AAEb,CAAC;AAMM,IAAM,oBAAoB,IAAI;EACnC,MAAM;EACN,UAAU;IACR,SAAS;MACP,OAAO;MACP,MAAM;IAAA;IAER,MAAM;MACJ,SAAS;MACT,UAAU;MACV,UAAU;MACV,SAAS;IAAA;EACX;EAEF,kBAAkB;IAChB,EAAE,SAAS,SAAS,MAAM,WAAW,OAAO,eAAA;IAC5C,EAAE,SAAS,QAAQ,MAAM,WAAW,OAAO,kBAAA;EAAkB;EAE/D,iBAAiB;IACf,SAAS;IACT,MAAM;EAAA;AAEV,CAAC;AAMM,IAAM,oBAAoB,IAAI;EACnC,MAAM;EACN,UAAU;IACR,QAAQ;MACN,eAAe;MACf,eAAe;IAAA;EACjB;EAEF,iBAAiB;IACf,QAAQ;EAAA;AAEZ,CAAC;AAMM,IAAM,uBAAuB;;;;ACpC7B,IAAM,WAAiB;EAC5B,SAASA,UACP,EAAE,OAAO,SAAS,UAAU,SAAS,SAAS,eAAe,WAAW,GAAG,MAAA,GAC3E,KACA;AACA,UAAM,OAAO,eAAe,WAAW,YAAY,MAAM,MAAM,CAAC;AAChE,UAAM,EAAE,WAAW,eAAA,IAAmB,eAAA;AAEtC,WACE;MAAC;MAAA;QACC;QACA,WAAW,GAAG,iBAAiB,EAAE,SAAS,MAAM,QAAA,CAAS,GAAG,SAAS;QACrE,gBAAc;QACd,eAAa;QACZ,GAAG;QACH,GAAG;QACH,GAAG;QAEH,UAAA,MAAM,IAAI,CAAC,MAAM,UAAU;AAC1B,gBAAM,EAAE,WAAW,eAAe,GAAG,UAAA,IAAc,KAAK,SAAS,CAAA;AACjE,gBAAM,QAAQ,oBAAC,QAAA,EAAK,WAAW,kBAAkB,EAAE,OAAA,CAAQ,GAAI,UAAA,KAAK,MAAA,CAAM;AAC1E,iBACE;YAAC;YAAA;cAEC,MAAK;cACL,WAAW,GAAG,iBAAiB,EAAE,QAAA,CAAS,GAAG,aAAa;cAC1D,aAAW,KAAK,QAAQ;cACvB,GAAG;cAEH,UAAA;gBAAA,WAAW,iBAAiB;gBAC7B,oBAAC,QAAA,EAAK,WAAW,kBAAkB,EAAE,SAAS,MAAM,KAAK,QAAQ,UAAA,CAAW,GAAI,UAAA,KAAK,MAAA,CAAM;gBAC1F,WAAW,iBAAiB;gBAC5B,KAAK,eAAe,QAAQ,oBAAC,QAAA,EAAK,WAAW,sBAAuB,UAAA,KAAK,YAAA,CAAY;cAAA;YAAA;YATjF,KAAK,MAAM;UAAA;QAYtB,CAAC;MAAA;IAAA;EAGP;AACF;",
6
6
  "names": ["StatGrid"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-status-indicator/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-steps/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-sticky-note/dist/index.js
7
7
  import * as React from "react";
@@ -2,7 +2,7 @@ import {
2
2
  Keys,
3
3
  cn,
4
4
  cva
5
- } from "./chunk-2Q6HHFAN.js";
5
+ } from "./chunk-75BKRTPO.js";
6
6
 
7
7
  // ../react-switch/dist/index.js
8
8
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  cn
3
- } from "./chunk-2Q6HHFAN.js";
3
+ } from "./chunk-75BKRTPO.js";
4
4
 
5
5
  // ../react-table-of-contents/dist/index.js
6
6
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-table/dist/index.js
7
7
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  cva,
5
5
  devWarn,
6
6
  generateId
7
- } from "./chunk-2Q6HHFAN.js";
7
+ } from "./chunk-75BKRTPO.js";
8
8
 
9
9
  // ../react-tabs/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-terminal/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-test-results/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-textarea/dist/index.js
7
7
  import * as React from "react";
@@ -14,10 +14,10 @@ import {
14
14
  threadReactionsStyles,
15
15
  threadReplyIndicatorStyles,
16
16
  threadTimestampStyles
17
- } from "./chunk-XMFNBOPO.js";
17
+ } from "./chunk-PY2TIFCT.js";
18
18
  import {
19
19
  cn
20
- } from "./chunk-2Q6HHFAN.js";
20
+ } from "./chunk-75BKRTPO.js";
21
21
 
22
22
  // ../react-thread-view/dist/index.js
23
23
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-timeline/dist/index.js
7
7
  import * as React from "react";
@@ -3,7 +3,7 @@ import {
3
3
  cva,
4
4
  devWarn,
5
5
  generateId
6
- } from "./chunk-2Q6HHFAN.js";
6
+ } from "./chunk-75BKRTPO.js";
7
7
 
8
8
  // ../react-toast/dist/index.js
9
9
  import * as React from "react";
@@ -3,7 +3,7 @@ import {
3
3
  cva,
4
4
  devWarn,
5
5
  generateId
6
- } from "./chunk-2Q6HHFAN.js";
6
+ } from "./chunk-75BKRTPO.js";
7
7
 
8
8
  // ../react-tooltip/dist/index.js
9
9
  import * as React from "react";
@@ -4,7 +4,7 @@ import {
4
4
  createKeyboardHandler,
5
5
  cva,
6
6
  generateId
7
- } from "./chunk-2Q6HHFAN.js";
7
+ } from "./chunk-75BKRTPO.js";
8
8
 
9
9
  // ../react-version-selector/dist/index.js
10
10
  import * as React from "react";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  VideoTile
3
- } from "./chunk-63N4PZUJ.js";
3
+ } from "./chunk-X6HEKRWE.js";
4
4
  import {
5
5
  cn,
6
6
  cva
7
- } from "./chunk-2Q6HHFAN.js";
7
+ } from "./chunk-75BKRTPO.js";
8
8
 
9
9
  // ../react-video-grid/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-video-player/dist/index.js
7
7
  import * as React from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  VideoTile
3
- } from "./chunk-63N4PZUJ.js";
4
- import "./chunk-2Q6HHFAN.js";
3
+ } from "./chunk-X6HEKRWE.js";
4
+ import "./chunk-75BKRTPO.js";
5
5
  export {
6
6
  VideoTile
7
7
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cn,
3
3
  cva
4
- } from "./chunk-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-voice-pill/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-waveform/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-2Q6HHFAN.js";
4
+ } from "./chunk-75BKRTPO.js";
5
5
 
6
6
  // ../react-wizard/dist/index.js
7
7
  import * as React from "react";
package/dist/shared.js ADDED
@@ -0,0 +1,53 @@
1
+ import {
2
+ FOCUSABLE_SELECTOR,
3
+ Keys,
4
+ captureLibraryOriginError,
5
+ cn,
6
+ createFocusTrap,
7
+ createKeyboardHandler,
8
+ createLiveRegion,
9
+ createMachine,
10
+ createSkipLink,
11
+ cva,
12
+ devError,
13
+ devWarn,
14
+ generateId,
15
+ getAnimationDuration,
16
+ getFocusableElements,
17
+ isLibraryOriginError,
18
+ libraryOriginEnvelope,
19
+ libraryOriginError,
20
+ mergeAriaProps,
21
+ prefersReducedMotion,
22
+ resetDevFeedback,
23
+ resetIdCounter,
24
+ setDevFeedbackSink,
25
+ stackFingerprint
26
+ } from "./chunk-75BKRTPO.js";
27
+ export {
28
+ FOCUSABLE_SELECTOR,
29
+ Keys,
30
+ captureLibraryOriginError,
31
+ cn,
32
+ createFocusTrap,
33
+ createKeyboardHandler,
34
+ createLiveRegion,
35
+ createMachine,
36
+ createSkipLink,
37
+ cva,
38
+ devError,
39
+ devWarn,
40
+ generateId,
41
+ getAnimationDuration,
42
+ getFocusableElements,
43
+ isLibraryOriginError,
44
+ libraryOriginEnvelope,
45
+ libraryOriginError,
46
+ mergeAriaProps,
47
+ prefersReducedMotion,
48
+ resetDevFeedback,
49
+ resetIdCounter,
50
+ setDevFeedbackSink,
51
+ stackFingerprint
52
+ };
53
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refraction-ui/react",
3
- "version": "0.23.0",
3
+ "version": "0.23.2",
4
4
  "description": "All Refraction UI React components in one package — headless, accessible, zero-dependency",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",