@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
package/dist/index.d.cts CHANGED
@@ -124,3 +124,7 @@ export * from './internal/react-audience-feature-card/index.cjs';
124
124
  export * from './internal/react-sortable-list/index.cjs';
125
125
  export * from './internal/react-kanban-board/index.cjs';
126
126
  export * from './internal/react-slot-picker/index.cjs';
127
+ export * from './internal/react-action-list/index.cjs';
128
+ export * from './internal/react-funnel-chart/index.cjs';
129
+ export * from './internal/react-line-chart/index.cjs';
130
+ export * from './internal/react-page-header/index.cjs';
package/dist/index.d.ts CHANGED
@@ -124,3 +124,7 @@ export * from './internal/react-audience-feature-card/index.js';
124
124
  export * from './internal/react-sortable-list/index.js';
125
125
  export * from './internal/react-kanban-board/index.js';
126
126
  export * from './internal/react-slot-picker/index.js';
127
+ export * from './internal/react-action-list/index.js';
128
+ export * from './internal/react-funnel-chart/index.js';
129
+ export * from './internal/react-line-chart/index.js';
130
+ export * from './internal/react-page-header/index.js';
package/dist/index.js CHANGED
@@ -125,3 +125,7 @@ export * from './react-audience-feature-card.js';
125
125
  export * from './react-sortable-list.js';
126
126
  export * from './react-kanban-board.js';
127
127
  export * from './react-slot-picker.js';
128
+ export * from './react-action-list.js';
129
+ export * from './react-funnel-chart.js';
130
+ export * from './react-line-chart.js';
131
+ export * from './react-page-header.js';
@@ -0,0 +1,39 @@
1
+ /** Row padding. */
2
+ type ActionListDensity = 'default' | 'compact';
3
+ interface ActionListItemProps {
4
+ disabled?: boolean;
5
+ density?: ActionListDensity;
6
+ }
7
+ interface ActionListItemAPI {
8
+ /** ARIA attributes for the row button. */
9
+ ariaProps: Record<string, string | number | boolean>;
10
+ /** Data attributes for styling hooks. */
11
+ dataAttributes: Record<string, string>;
12
+ }
13
+ /**
14
+ * Build the framework-agnostic props for one ActionList row. Each row is ONE
15
+ * action (open, select, go to) rendered as a native button, so it is reachable
16
+ * by Tab and activated by Enter / Space — unlike a clickable table row.
17
+ */
18
+ declare function createActionListItem(props?: ActionListItemProps): ActionListItemAPI;
19
+
20
+ /** The list: rows separated by hairlines, no bullets. */
21
+ declare const actionListClass = "m-0 flex list-none flex-col divide-y divide-border-subtle p-0";
22
+ /** A row button: full width, whole row is the hit target. */
23
+ declare const actionListItemVariants: (props?: ({
24
+ density?: "default" | "compact" | undefined;
25
+ } & {
26
+ className?: string;
27
+ }) | undefined) => string;
28
+ /** Leading text column (title, description, meta). */
29
+ declare const actionListItemBodyClass = "flex min-w-0 flex-1 flex-col gap-0.5";
30
+ /** Primary line. */
31
+ declare const actionListItemTitleClass = "break-words font-semibold text-foreground";
32
+ /** Supporting line under the title. */
33
+ declare const actionListItemDescriptionClass = "break-words text-xs text-muted-foreground";
34
+ /** Tertiary line (owner, tags, ids). */
35
+ declare const actionListItemMetaClass = "break-words text-xs text-muted-foreground";
36
+ /** Trailing column (dates, sizes, counts). */
37
+ declare const actionListItemTrailingClass = "flex flex-none items-center gap-4 text-xs tabular-nums text-muted-foreground";
38
+
39
+ export { type ActionListDensity, type ActionListItemAPI, type ActionListItemProps, actionListClass, actionListItemBodyClass, actionListItemDescriptionClass, actionListItemMetaClass, actionListItemTitleClass, actionListItemTrailingClass, actionListItemVariants, createActionListItem };
@@ -1,6 +1,6 @@
1
1
  import { AccessibilityProps } from '../shared/index.cjs';
2
2
 
3
- type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';
3
+ type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'tertiary' | 'positive' | 'caution' | 'done';
4
4
  type BadgeSize = 'sm' | 'md';
5
5
  interface BadgeProps {
6
6
  variant?: BadgeVariant;
@@ -17,7 +17,7 @@ declare function getBadgeIcon(variant: BadgeVariant): string | undefined;
17
17
  declare function createBadge(props?: BadgeProps): BadgeAPI;
18
18
 
19
19
  declare const badgeVariants: (props?: ({
20
- variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | undefined;
20
+ variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | "tertiary" | "positive" | "caution" | "done" | undefined;
21
21
  size?: "sm" | "md" | undefined;
22
22
  } & {
23
23
  className?: string;
@@ -1,6 +1,6 @@
1
1
  import { AccessibilityProps } from '../shared/index.js';
2
2
 
3
- type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning';
3
+ type BadgeVariant = 'default' | 'primary' | 'secondary' | 'destructive' | 'outline' | 'success' | 'warning' | 'tertiary' | 'positive' | 'caution' | 'done';
4
4
  type BadgeSize = 'sm' | 'md';
5
5
  interface BadgeProps {
6
6
  variant?: BadgeVariant;
@@ -17,7 +17,7 @@ declare function getBadgeIcon(variant: BadgeVariant): string | undefined;
17
17
  declare function createBadge(props?: BadgeProps): BadgeAPI;
18
18
 
19
19
  declare const badgeVariants: (props?: ({
20
- variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | undefined;
20
+ variant?: "default" | "primary" | "secondary" | "destructive" | "outline" | "success" | "warning" | "tertiary" | "positive" | "caution" | "done" | undefined;
21
21
  size?: "sm" | "md" | undefined;
22
22
  } & {
23
23
  className?: string;
@@ -5,12 +5,12 @@ import { AccessibilityProps, KeyboardHandlerMap, TokenContract } from '../shared
5
5
  * muscle-memory (`<Button variant="primary">`) renders as the most-emphasized
6
6
  * button instead of falling through to the unstyled base. See issue #201.
7
7
  */
8
- type ButtonVariant = 'default' | 'primary' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
8
+ type ButtonVariant = 'default' | 'primary' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | 'soft' | 'tertiary';
9
9
  /** Variants that map to the same visual style as `default`. */
10
10
  declare const BUTTON_VARIANT_ALIASES: Partial<Record<ButtonVariant, ButtonVariant>>;
11
11
  /** Resolve an alias to its canonical variant. Pass-through for unknown/undefined. */
12
12
  declare function resolveButtonVariant(variant: ButtonVariant | undefined): ButtonVariant | undefined;
13
- type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon';
13
+ type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon' | 'icon-sm' | 'icon-xs';
14
14
  interface ButtonProps {
15
15
  variant?: ButtonVariant;
16
16
  size?: ButtonSize;
@@ -34,8 +34,8 @@ declare function getButtonType(props: ButtonProps): string;
34
34
 
35
35
  declare const buttonTokens: TokenContract;
36
36
  declare const buttonVariants: (props?: ({
37
- variant?: "default" | "primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | undefined;
38
- size?: "default" | "xs" | "sm" | "lg" | "icon" | undefined;
37
+ variant?: "default" | "primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "soft" | "tertiary" | undefined;
38
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-sm" | "icon-xs" | undefined;
39
39
  } & {
40
40
  className?: string;
41
41
  }) | undefined) => string;
@@ -5,12 +5,12 @@ import { AccessibilityProps, KeyboardHandlerMap, TokenContract } from '../shared
5
5
  * muscle-memory (`<Button variant="primary">`) renders as the most-emphasized
6
6
  * button instead of falling through to the unstyled base. See issue #201.
7
7
  */
8
- type ButtonVariant = 'default' | 'primary' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
8
+ type ButtonVariant = 'default' | 'primary' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | 'soft' | 'tertiary';
9
9
  /** Variants that map to the same visual style as `default`. */
10
10
  declare const BUTTON_VARIANT_ALIASES: Partial<Record<ButtonVariant, ButtonVariant>>;
11
11
  /** Resolve an alias to its canonical variant. Pass-through for unknown/undefined. */
12
12
  declare function resolveButtonVariant(variant: ButtonVariant | undefined): ButtonVariant | undefined;
13
- type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon';
13
+ type ButtonSize = 'xs' | 'sm' | 'default' | 'lg' | 'icon' | 'icon-sm' | 'icon-xs';
14
14
  interface ButtonProps {
15
15
  variant?: ButtonVariant;
16
16
  size?: ButtonSize;
@@ -34,8 +34,8 @@ declare function getButtonType(props: ButtonProps): string;
34
34
 
35
35
  declare const buttonTokens: TokenContract;
36
36
  declare const buttonVariants: (props?: ({
37
- variant?: "default" | "primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | undefined;
38
- size?: "default" | "xs" | "sm" | "lg" | "icon" | undefined;
37
+ variant?: "default" | "primary" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "soft" | "tertiary" | undefined;
38
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-sm" | "icon-xs" | undefined;
39
39
  } & {
40
40
  className?: string;
41
41
  }) | undefined) => string;
@@ -1,5 +1,16 @@
1
1
  import { AccessibilityProps, TokenContract } from '../shared/index.cjs';
2
2
 
3
+ /**
4
+ * Visual tone of a card (issue #485).
5
+ * - `default` — the standard surface (activates the `--rfr-card-*` contract).
6
+ * - `subtle` — a lower-emphasis container on the subtle surface token.
7
+ * - `tertiary` — a tinted second-brand-accent card.
8
+ */
9
+ type CardVariant = 'default' | 'subtle' | 'tertiary';
10
+ /** Built-in inner padding of the Card container. */
11
+ type CardPadding = 'none' | 'default' | 'compact';
12
+ /** Heading element for CardTitle. */
13
+ type CardTitleLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
3
14
  interface CardProps {
4
15
  /** Optional accessible role override */
5
16
  role?: string;
@@ -29,7 +40,8 @@ declare function createCardFooter(): {
29
40
 
30
41
  declare const cardTokens: TokenContract;
31
42
  declare const cardVariants: (props?: ({
32
- padding?: "none" | "default" | "compact" | undefined;
43
+ variant?: "default" | "subtle" | "tertiary" | undefined;
44
+ padding?: "default" | "none" | "compact" | undefined;
33
45
  } & {
34
46
  className?: string;
35
47
  }) | undefined) => string;
@@ -59,4 +71,4 @@ declare const cardFooterVariants: (props?: ({
59
71
  className?: string;
60
72
  }) | undefined) => string;
61
73
 
62
- export { type CardAPI, type CardProps, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, createCard, createCardContent, createCardDescription, createCardFooter, createCardHeader, createCardTitle };
74
+ export { type CardAPI, type CardPadding, type CardProps, type CardTitleLevel, type CardVariant, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, createCard, createCardContent, createCardDescription, createCardFooter, createCardHeader, createCardTitle };
@@ -1,5 +1,16 @@
1
1
  import { AccessibilityProps, TokenContract } from '../shared/index.js';
2
2
 
3
+ /**
4
+ * Visual tone of a card (issue #485).
5
+ * - `default` — the standard surface (activates the `--rfr-card-*` contract).
6
+ * - `subtle` — a lower-emphasis container on the subtle surface token.
7
+ * - `tertiary` — a tinted second-brand-accent card.
8
+ */
9
+ type CardVariant = 'default' | 'subtle' | 'tertiary';
10
+ /** Built-in inner padding of the Card container. */
11
+ type CardPadding = 'none' | 'default' | 'compact';
12
+ /** Heading element for CardTitle. */
13
+ type CardTitleLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
3
14
  interface CardProps {
4
15
  /** Optional accessible role override */
5
16
  role?: string;
@@ -29,7 +40,8 @@ declare function createCardFooter(): {
29
40
 
30
41
  declare const cardTokens: TokenContract;
31
42
  declare const cardVariants: (props?: ({
32
- padding?: "none" | "default" | "compact" | undefined;
43
+ variant?: "default" | "subtle" | "tertiary" | undefined;
44
+ padding?: "default" | "none" | "compact" | undefined;
33
45
  } & {
34
46
  className?: string;
35
47
  }) | undefined) => string;
@@ -59,4 +71,4 @@ declare const cardFooterVariants: (props?: ({
59
71
  className?: string;
60
72
  }) | undefined) => string;
61
73
 
62
- export { type CardAPI, type CardProps, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, createCard, createCardContent, createCardDescription, createCardFooter, createCardHeader, createCardTitle };
74
+ export { type CardAPI, type CardPadding, type CardProps, type CardTitleLevel, type CardVariant, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants, createCard, createCardContent, createCardDescription, createCardFooter, createCardHeader, createCardTitle };
@@ -0,0 +1,60 @@
1
+ interface FunnelChartStep {
2
+ /** Stable key. */
3
+ id: string;
4
+ /** Step name. */
5
+ label: string;
6
+ /** Secondary line under the label. */
7
+ description?: string;
8
+ /** Count at this step. */
9
+ value: number;
10
+ }
11
+ interface FunnelChartTransition {
12
+ /** Percent (0–100) of this step that reached the next one. */
13
+ conversion: number;
14
+ /** Absolute count lost between this step and the next. */
15
+ dropped: number;
16
+ }
17
+ interface FunnelChartRow {
18
+ step: FunnelChartStep;
19
+ /** Percent (0–100) of the first step's value. */
20
+ shareOfTop: number;
21
+ /** Width the bar draws at, in percent — never below `minBarPercent`. */
22
+ barPercent: number;
23
+ /** Transition to the following step; absent on the last step. */
24
+ next?: FunnelChartTransition;
25
+ }
26
+ /** Smallest bar width in percent, so a tiny step stays visible. */
27
+ declare const DEFAULT_FUNNEL_MIN_BAR_PERCENT = 6;
28
+ /**
29
+ * Derive every row of a stepped conversion funnel: each step's share of the top
30
+ * step, the bar width it draws at, and between two steps the continue-rate and
31
+ * how many were lost. Pure and deterministic.
32
+ */
33
+ declare function computeFunnel(steps: FunnelChartStep[], minBarPercent?: number): FunnelChartRow[];
34
+ /** Default copy + number formatting; every one is overridable by a prop. */
35
+ declare const funnelChartDefaults: {
36
+ formatValue: (value: number) => string;
37
+ formatPercent: (percent: number) => string;
38
+ shareLabel: (share: string) => string;
39
+ conversionLabel: (percent: string) => string;
40
+ droppedLabel: (count: string) => string;
41
+ };
42
+
43
+ /** Token-class styles for FunnelChart; no colour literals. */
44
+ declare const funnelChartClasses: {
45
+ readonly root: "m-0 grid list-none p-0";
46
+ readonly bar: "relative flex items-center gap-3 overflow-hidden rounded-lg border border-border bg-background px-3.5 py-3";
47
+ readonly fill: "absolute inset-y-0 left-0 border-r-2 border-primary bg-accent";
48
+ readonly chevron: "relative shrink-0 text-primary";
49
+ readonly text: "relative grid min-w-0 flex-1";
50
+ readonly label: "text-[13px] font-bold text-foreground";
51
+ readonly description: "text-[11px] text-muted-foreground";
52
+ readonly figure: "relative grid text-right";
53
+ readonly value: "text-[15px] font-bold tabular-nums text-foreground";
54
+ readonly share: "text-[10.5px] text-muted-foreground";
55
+ readonly transition: "flex items-center gap-2 py-1.5 pl-[18px] text-[11px] text-muted-foreground";
56
+ readonly conversion: "font-semibold text-success";
57
+ readonly dropped: "font-semibold text-destructive";
58
+ };
59
+
60
+ export { DEFAULT_FUNNEL_MIN_BAR_PERCENT, type FunnelChartRow, type FunnelChartStep, type FunnelChartTransition, computeFunnel, funnelChartClasses, funnelChartDefaults };
@@ -0,0 +1,110 @@
1
+ interface LineChartSeries {
2
+ /** Stable key for the series. */
3
+ id: string;
4
+ /** Legend / tooltip name. */
5
+ name: string;
6
+ /**
7
+ * Any CSS colour (a token `hsl(var(--…))` or a data colour). Defaults to the
8
+ * theme's chart palette (`--chart-1` … `--chart-5`) by series position.
9
+ */
10
+ color?: string;
11
+ /** One value per label, in label order. */
12
+ data: number[];
13
+ }
14
+ interface LineChartPadding {
15
+ top: number;
16
+ right: number;
17
+ bottom: number;
18
+ left: number;
19
+ }
20
+ interface LineChartOptions {
21
+ series: LineChartSeries[];
22
+ labels: string[];
23
+ /** viewBox width — the SVG scales to its container's width. */
24
+ width: number;
25
+ /** viewBox height. */
26
+ height: number;
27
+ padding?: Partial<LineChartPadding>;
28
+ /** Number of gridline intervals on the y-axis. */
29
+ tickCount?: number;
30
+ /** Headroom multiplier above the largest value. */
31
+ headroom?: number;
32
+ /** Show every n-th x label (the last label is always shown). */
33
+ labelEvery?: number;
34
+ }
35
+ interface LineChartTick {
36
+ value: number;
37
+ y: number;
38
+ }
39
+ interface LineChartXLabel {
40
+ index: number;
41
+ label: string;
42
+ x: number;
43
+ }
44
+ interface LineChartPath {
45
+ id: string;
46
+ /** Resolved stroke colour. */
47
+ color: string;
48
+ /** The stroke path. */
49
+ line: string;
50
+ /** The line closed down to the zero baseline, for an area fill. */
51
+ area: string;
52
+ }
53
+ interface LineChartColumn {
54
+ index: number;
55
+ x: number;
56
+ width: number;
57
+ }
58
+ interface LineChartGeometry {
59
+ width: number;
60
+ height: number;
61
+ padding: LineChartPadding;
62
+ /** Top of the shared y-scale. */
63
+ max: number;
64
+ ticks: LineChartTick[];
65
+ xLabels: LineChartXLabel[];
66
+ paths: LineChartPath[];
67
+ /** One hover/focus column per category. */
68
+ columns: LineChartColumn[];
69
+ x: (index: number) => number;
70
+ y: (value: number) => number;
71
+ /** Top and bottom of the plot area, for a crosshair. */
72
+ plotTop: number;
73
+ plotBottom: number;
74
+ }
75
+ declare const DEFAULT_LINE_CHART_PADDING: LineChartPadding;
76
+ declare const DEFAULT_LINE_CHART_WIDTH = 760;
77
+ declare const DEFAULT_LINE_CHART_HEIGHT = 230;
78
+ /** The theme chart colour for the series at `index` (wraps around). */
79
+ declare function lineChartColor(index: number): string;
80
+ /**
81
+ * Pure geometry for a responsive multi-series line chart. Every series shares
82
+ * ONE y-scale (zero baseline to the largest value plus headroom), so series are
83
+ * comparable. Coordinates are in viewBox units; the SVG scales to its container.
84
+ */
85
+ declare function computeLineChart(options: LineChartOptions): LineChartGeometry;
86
+ /** Where a tooltip for `index` sits horizontally, as a percent of the chart width. */
87
+ declare function tooltipLeftPercent(geometry: LineChartGeometry, index: number): number;
88
+ /**
89
+ * The category index a keyboard key moves to from `current` (null = nothing
90
+ * active yet). Returns `current` unchanged for keys the chart doesn't handle.
91
+ */
92
+ declare function nextLineChartIndex(current: number | null, key: string, count: number): number | null;
93
+
94
+ /** Token-class styles for LineChart; no colour literals. */
95
+ declare const lineChartClasses: {
96
+ readonly root: "relative";
97
+ readonly svg: "block w-full rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring";
98
+ readonly gridline: "stroke-border";
99
+ readonly axis: "fill-muted-foreground text-[9px]";
100
+ readonly crosshair: "stroke-border";
101
+ readonly marker: "stroke-card";
102
+ readonly tooltip: "pointer-events-none absolute z-10 -translate-x-1/2 whitespace-nowrap rounded-md bg-tertiary px-2.5 py-2 text-[11px] text-tertiary-foreground shadow-lg";
103
+ readonly tooltipLabel: "mb-1 opacity-60";
104
+ readonly tooltipRow: "flex justify-between gap-2";
105
+ readonly legend: "mt-2.5 flex flex-wrap gap-3.5";
106
+ readonly legendItem: "inline-flex items-center gap-1.5 text-[11px] text-muted-foreground";
107
+ readonly legendSwatch: "h-[3px] w-2.5 rounded-sm";
108
+ };
109
+
110
+ export { DEFAULT_LINE_CHART_HEIGHT, DEFAULT_LINE_CHART_PADDING, DEFAULT_LINE_CHART_WIDTH, type LineChartColumn, type LineChartGeometry, type LineChartOptions, type LineChartPadding, type LineChartPath, type LineChartSeries, type LineChartTick, type LineChartXLabel, computeLineChart, lineChartClasses, lineChartColor, nextLineChartIndex, tooltipLeftPercent };
@@ -0,0 +1,35 @@
1
+ /** Heading element used for the page title. */
2
+ type PageHeaderTitleLevel = 'h1' | 'h2' | 'h3';
3
+ interface PageHeaderProps {
4
+ /** Whether an actions slot will be rendered. */
5
+ hasActions?: boolean;
6
+ }
7
+ interface PageHeaderAPI {
8
+ /** Data attributes for styling hooks. */
9
+ dataAttributes: Record<string, string>;
10
+ }
11
+ /**
12
+ * Build the framework-agnostic data attributes for a PageHeader — the heading
13
+ * cluster at the top of an application page (kicker, title, description and a
14
+ * trailing actions row). Unlike SectionHead (a centred marketing heading) it is
15
+ * sized for dense app chrome and never centres.
16
+ */
17
+ declare function createPageHeader(props?: PageHeaderProps): PageHeaderAPI;
18
+
19
+ /**
20
+ * Root: text cluster on the leading edge, actions on the trailing edge; wraps
21
+ * on narrow screens. Carries no outer margin — the page layout spaces it.
22
+ */
23
+ declare const pageHeaderClass = "flex flex-wrap items-start justify-between gap-4";
24
+ /** Text cluster (kicker, title, description). */
25
+ declare const pageHeaderTextClass = "flex min-w-0 flex-1 flex-col gap-1";
26
+ /** Small uppercase eyebrow above the title. */
27
+ declare const pageHeaderKickerClass = "break-words text-[11px] uppercase tracking-wider text-muted-foreground";
28
+ /** Title — app-sized, not a marketing display size. */
29
+ declare const pageHeaderTitleClass = "break-words text-xl font-semibold text-foreground";
30
+ /** Supporting copy under the title, capped at a readable measure. */
31
+ declare const pageHeaderDescriptionClass = "max-w-prose text-sm text-muted-foreground";
32
+ /** Trailing actions row. */
33
+ declare const pageHeaderActionsClass = "flex flex-none flex-wrap items-center gap-2";
34
+
35
+ export { type PageHeaderAPI, type PageHeaderProps, type PageHeaderTitleLevel, createPageHeader, pageHeaderActionsClass, pageHeaderClass, pageHeaderDescriptionClass, pageHeaderKickerClass, pageHeaderTextClass, pageHeaderTitleClass };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { ActionListDensity } from '../action-list/index.js';
3
+ export { ActionListDensity } from '../action-list/index.js';
4
+
5
+ interface ActionListProps extends React.HTMLAttributes<HTMLUListElement> {
6
+ }
7
+ /** ActionList — a vertical list whose rows are each one action. Renders a `<ul>`. */
8
+ declare const ActionList: React.ForwardRefExoticComponent<ActionListProps & React.RefAttributes<HTMLUListElement>>;
9
+ interface ActionListItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'title' | 'type'> {
10
+ /** Primary line (required). */
11
+ title: React.ReactNode;
12
+ /** Optional supporting line under the title. */
13
+ description?: React.ReactNode;
14
+ /** Optional tertiary line (owner, tags, ids). */
15
+ meta?: React.ReactNode;
16
+ /** Optional trailing column (dates, sizes, counts). */
17
+ trailing?: React.ReactNode;
18
+ /** Row padding. Defaults to `default`. */
19
+ density?: ActionListDensity;
20
+ }
21
+ /**
22
+ * ActionListItem — one row: an `<li>` holding a full-width native button with
23
+ * a title, optional supporting lines and a trailing column. The ref and all
24
+ * button props go to the button.
25
+ */
26
+ declare const ActionListItem: React.ForwardRefExoticComponent<ActionListItemProps & React.RefAttributes<HTMLButtonElement>>;
27
+
28
+ export { ActionList, ActionListItem, type ActionListItemProps, type ActionListProps };
@@ -1,7 +1,12 @@
1
1
  import * as React from 'react';
2
- export { CardAPI, CardProps, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants } from '../card/index.cjs';
2
+ import { CardVariant, CardPadding, CardTitleLevel } from '../card/index.cjs';
3
+ export { CardAPI, CardPadding, CardProps, CardTitleLevel, CardVariant, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants } from '../card/index.cjs';
3
4
 
4
5
  interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ /** Visual tone of the card. Defaults to `'default'` (issue #485). */
7
+ variant?: CardVariant;
8
+ /** Built-in inner padding. Defaults to `'none'` (compose CardHeader/CardContent for spacing). */
9
+ padding?: CardPadding;
5
10
  /** Merge the card's classes/props onto the single child element instead of
6
11
  * rendering a `<div>` (Radix-style `asChild`) — e.g.
7
12
  * `<Card asChild><a href="/x">…</a></Card>` for a clickable card. Expects
@@ -19,7 +24,11 @@ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<H
19
24
  /**
20
25
  * CardTitle -- heading within a card header.
21
26
  */
22
- declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
27
+ interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
28
+ /** Heading element. Defaults to `h3`; pick the level that fits the page outline. */
29
+ as?: CardTitleLevel;
30
+ }
31
+ declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLHeadingElement>>;
23
32
  /**
24
33
  * CardDescription -- subtext within a card header.
25
34
  */
@@ -33,4 +42,4 @@ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<
33
42
  */
34
43
  declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
35
44
 
36
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
45
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps };
@@ -1,7 +1,12 @@
1
1
  import * as React from 'react';
2
- export { CardAPI, CardProps, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants } from '../card/index.js';
2
+ import { CardVariant, CardPadding, CardTitleLevel } from '../card/index.js';
3
+ export { CardAPI, CardPadding, CardProps, CardTitleLevel, CardVariant, cardContentVariants, cardDescriptionVariants, cardFooterVariants, cardHeaderVariants, cardTitleVariants, cardTokens, cardVariants } from '../card/index.js';
3
4
 
4
5
  interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
6
+ /** Visual tone of the card. Defaults to `'default'` (issue #485). */
7
+ variant?: CardVariant;
8
+ /** Built-in inner padding. Defaults to `'none'` (compose CardHeader/CardContent for spacing). */
9
+ padding?: CardPadding;
5
10
  /** Merge the card's classes/props onto the single child element instead of
6
11
  * rendering a `<div>` (Radix-style `asChild`) — e.g.
7
12
  * `<Card asChild><a href="/x">…</a></Card>` for a clickable card. Expects
@@ -19,7 +24,11 @@ declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<H
19
24
  /**
20
25
  * CardTitle -- heading within a card header.
21
26
  */
22
- declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & React.RefAttributes<HTMLHeadingElement>>;
27
+ interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
28
+ /** Heading element. Defaults to `h3`; pick the level that fits the page outline. */
29
+ as?: CardTitleLevel;
30
+ }
31
+ declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLHeadingElement>>;
23
32
  /**
24
33
  * CardDescription -- subtext within a card header.
25
34
  */
@@ -33,4 +42,4 @@ declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<
33
42
  */
34
43
  declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
35
44
 
36
- export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
45
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type CardTitleProps };
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { FunnelChartStep } from '../funnel-chart/index.js';
3
+ export { FunnelChartStep } from '../funnel-chart/index.js';
4
+
5
+ interface FunnelChartProps extends Omit<React.HTMLAttributes<HTMLOListElement>, 'children'> {
6
+ /** The funnel steps, top first. */
7
+ steps: FunnelChartStep[];
8
+ /** Formats a count. */
9
+ formatValue?: (value: number) => string;
10
+ /** Formats a percent (already 0–100). */
11
+ formatPercent?: (percent: number) => string;
12
+ /** Smallest bar width in percent, so a tiny step stays visible. Defaults to 6. */
13
+ minBarPercent?: number;
14
+ /** Copy — a step's share of the top step. */
15
+ shareLabel?: (share: string) => string;
16
+ /** Copy — continue-rate between two steps. */
17
+ conversionLabel?: (percent: string) => string;
18
+ /** Copy — count lost between two steps. */
19
+ droppedLabel?: (count: string) => string;
20
+ }
21
+ /**
22
+ * FunnelChart — a vertical conversion funnel: one bar per step, filled to its
23
+ * share of the first step, with the continue-rate and drop-off between steps.
24
+ * Renders an ordered list, so the figures are real text for assistive tech.
25
+ */
26
+ declare const FunnelChart: React.ForwardRefExoticComponent<FunnelChartProps & React.RefAttributes<HTMLOListElement>>;
27
+
28
+ export { FunnelChart, type FunnelChartProps };
@@ -0,0 +1,33 @@
1
+ import * as React from 'react';
2
+ import { LineChartSeries } from '../line-chart/index.js';
3
+ export { LineChartSeries } from '../line-chart/index.js';
4
+
5
+ interface LineChartProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
6
+ /** The series to plot, all on one shared y-scale. */
7
+ series: LineChartSeries[];
8
+ /** One category label per data point. */
9
+ labels: string[];
10
+ /** Accessible name of the chart image (required). */
11
+ ariaLabel: string;
12
+ /** Rendered height in px (also the viewBox height). Defaults to 230. */
13
+ height?: number;
14
+ /** viewBox width; the chart always stretches to its container. Defaults to 760. */
15
+ width?: number;
16
+ /** Formats a value in the tooltip. */
17
+ formatValue?: (value: number) => string;
18
+ /** Formats a y-axis tick. Defaults to `formatValue`. */
19
+ formatTick?: (value: number) => string;
20
+ /** Fill the area under each line. Defaults to on for a single series only. */
21
+ area?: boolean;
22
+ /** Show the series legend under the chart. Defaults to true. */
23
+ showLegend?: boolean;
24
+ }
25
+ /**
26
+ * LineChart — a responsive multi-series line chart on one shared y-scale, with
27
+ * gridlines, category x-labels, a hover/keyboard crosshair + tooltip and a
28
+ * legend. The SVG uses a viewBox, so it stretches to its container's width.
29
+ * Keyboard: focus the chart, then ←/→/Home/End move between categories.
30
+ */
31
+ declare const LineChart: React.ForwardRefExoticComponent<LineChartProps & React.RefAttributes<HTMLDivElement>>;
32
+
33
+ export { LineChart, type LineChartProps };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { PageHeaderTitleLevel } from '../page-header/index.js';
3
+ export { PageHeaderTitleLevel } from '../page-header/index.js';
4
+
5
+ interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
6
+ /** Optional eyebrow rendered above the title. */
7
+ kicker?: React.ReactNode;
8
+ /** The page title (required). */
9
+ title: React.ReactNode;
10
+ /** Optional supporting copy under the title. */
11
+ description?: React.ReactNode;
12
+ /** Optional actions (buttons, menus) on the trailing edge. */
13
+ actions?: React.ReactNode;
14
+ /** Heading element for the title. Defaults to `h1`. */
15
+ as?: PageHeaderTitleLevel;
16
+ }
17
+ /**
18
+ * PageHeader — the heading cluster at the top of an application page: kicker,
19
+ * title, description and a trailing actions row. Renders a `<header>`.
20
+ */
21
+ declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLElement>>;
22
+
23
+ export { PageHeader, type PageHeaderProps };