@pitchfork-ui/react 0.9.0 → 0.11.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 (63) hide show
  1. package/dist/components/Badge/Badge.css +4 -0
  2. package/dist/components/Button/Button.css +7 -0
  3. package/dist/components/Collapsible/Collapsible.css +86 -0
  4. package/dist/components/Collapsible/Collapsible2.js +65 -0
  5. package/dist/components/ContextMenu/ContextMenu.css +122 -0
  6. package/dist/components/ContextMenu/ContextMenu2.js +155 -0
  7. package/dist/components/Icon/Icon2.js +17 -0
  8. package/dist/components/InlineCTA/InlineCTA.css +4 -0
  9. package/dist/components/Modal/Modal.css +6 -1
  10. package/dist/components/Resizable/Resizable.css +79 -0
  11. package/dist/components/Resizable/Resizable2.js +101 -0
  12. package/dist/components/ScrollArea/ScrollArea.css +54 -0
  13. package/dist/components/ScrollArea/ScrollArea2.js +18 -0
  14. package/dist/components/Tag/Tag.css +4 -0
  15. package/dist/components/TagInput/TagInput.css +72 -0
  16. package/dist/components/TagInput/TagInput2.js +116 -0
  17. package/dist/components/TimePicker/TimePicker.css +179 -0
  18. package/dist/components/TimePicker/TimePicker2.js +239 -0
  19. package/dist/components/Timeline/Timeline.css +128 -0
  20. package/dist/components/Timeline/Timeline2.js +49 -0
  21. package/dist/components/Toolbar/Toolbar.css +37 -0
  22. package/dist/components/Toolbar/Toolbar2.js +71 -0
  23. package/dist/components/UtilityButton/UtilityButton.css +6 -6
  24. package/dist/components/VisuallyHidden/VisuallyHidden.css +26 -0
  25. package/dist/components/VisuallyHidden/VisuallyHidden2.js +21 -0
  26. package/dist/index.cjs +786 -7
  27. package/dist/index.js +10 -1
  28. package/dist/src/components/Badge/Badge.d.ts +1 -1
  29. package/dist/src/components/Button/Button.d.ts +1 -1
  30. package/dist/src/components/Collapsible/Collapsible.d.ts +11 -0
  31. package/dist/src/components/Collapsible/Collapsible.test.d.ts +1 -0
  32. package/dist/src/components/Collapsible/index.d.ts +1 -0
  33. package/dist/src/components/ContextMenu/ContextMenu.d.ts +20 -0
  34. package/dist/src/components/ContextMenu/ContextMenu.test.d.ts +1 -0
  35. package/dist/src/components/ContextMenu/index.d.ts +1 -0
  36. package/dist/src/components/InlineCTA/InlineCTA.d.ts +1 -1
  37. package/dist/src/components/Resizable/Resizable.d.ts +19 -0
  38. package/dist/src/components/Resizable/Resizable.test.d.ts +1 -0
  39. package/dist/src/components/Resizable/index.d.ts +1 -0
  40. package/dist/src/components/ScrollArea/ScrollArea.d.ts +12 -0
  41. package/dist/src/components/ScrollArea/ScrollArea.test.d.ts +1 -0
  42. package/dist/src/components/ScrollArea/index.d.ts +1 -0
  43. package/dist/src/components/Tag/Tag.d.ts +1 -1
  44. package/dist/src/components/TagInput/TagInput.d.ts +23 -0
  45. package/dist/src/components/TagInput/TagInput.test.d.ts +1 -0
  46. package/dist/src/components/TagInput/index.d.ts +1 -0
  47. package/dist/src/components/TimePicker/TimePicker.d.ts +18 -0
  48. package/dist/src/components/TimePicker/TimePicker.test.d.ts +1 -0
  49. package/dist/src/components/TimePicker/index.d.ts +1 -0
  50. package/dist/src/components/Timeline/Timeline.d.ts +16 -0
  51. package/dist/src/components/Timeline/Timeline.test.d.ts +1 -0
  52. package/dist/src/components/Timeline/index.d.ts +1 -0
  53. package/dist/src/components/Toolbar/Toolbar.d.ts +8 -0
  54. package/dist/src/components/Toolbar/Toolbar.test.d.ts +1 -0
  55. package/dist/src/components/Toolbar/index.d.ts +1 -0
  56. package/dist/src/components/UtilityButton/UtilityButton.d.ts +1 -1
  57. package/dist/src/components/VisuallyHidden/VisuallyHidden.d.ts +15 -0
  58. package/dist/src/components/VisuallyHidden/VisuallyHidden.test.d.ts +1 -0
  59. package/dist/src/components/VisuallyHidden/index.d.ts +1 -0
  60. package/dist/src/index.d.ts +9 -0
  61. package/dist/styles/theme.css +89 -4
  62. package/dist/styles.css +903 -11
  63. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ import { Avatar } from "./components/Avatar/Avatar2.js";
17
17
  import { AvatarGroup } from "./components/AvatarGroup/AvatarGroup2.js";
18
18
  import { Button } from "./components/Button/Button2.js";
19
19
  import { CommandPalette } from "./components/CommandPalette/CommandPalette2.js";
20
+ import { ContextMenu } from "./components/ContextMenu/ContextMenu2.js";
20
21
  import { BadgeGroup } from "./components/BadgeGroup/BadgeGroup2.js";
21
22
  import { ButtonGroup } from "./components/ButtonGroup/ButtonGroup2.js";
22
23
  import { Breadcrumbs } from "./components/Breadcrumbs/Breadcrumbs2.js";
@@ -29,6 +30,7 @@ import { Dropdown } from "./components/Dropdown/Dropdown2.js";
29
30
  import { Calendar } from "./components/Calendar/Calendar2.js";
30
31
  import { Carousel } from "./components/Carousel/Carousel2.js";
31
32
  import { CodeSnippet } from "./components/CodeSnippet/CodeSnippet2.js";
33
+ import { Collapsible } from "./components/Collapsible/Collapsible2.js";
32
34
  import { Combobox } from "./components/Combobox/Combobox2.js";
33
35
  import { ContentDivider } from "./components/ContentDivider/ContentDivider2.js";
34
36
  import { DatePicker } from "./components/DatePicker/DatePicker2.js";
@@ -57,7 +59,9 @@ import { RadarChart } from "./components/RadarChart/RadarChart2.js";
57
59
  import { RadioButton } from "./components/RadioButton/RadioButton2.js";
58
60
  import { RadioGroup } from "./components/RadioGroup/RadioGroup2.js";
59
61
  import { RatingBadge, RatingStars } from "./components/Rating/Rating2.js";
62
+ import { Resizable } from "./components/Resizable/Resizable2.js";
60
63
  import { RichTextEditor } from "./components/RichTextEditor/RichTextEditor2.js";
64
+ import { ScrollArea } from "./components/ScrollArea/ScrollArea2.js";
61
65
  import { SectionFooter } from "./components/SectionFooter/SectionFooter2.js";
62
66
  import { SectionHeader } from "./components/SectionHeader/SectionHeader2.js";
63
67
  import { SidebarNavigation } from "./components/SidebarNavigation/SidebarNavigation2.js";
@@ -67,12 +71,17 @@ import { Switch } from "./components/Switch/Switch2.js";
67
71
  import { Select } from "./components/Select/Select2.js";
68
72
  import { Slider } from "./components/Slider/Slider2.js";
69
73
  import { Tag } from "./components/Tag/Tag2.js";
74
+ import { TagInput } from "./components/TagInput/TagInput2.js";
70
75
  import { Table } from "./components/Table/Table2.js";
71
76
  import { Tabs } from "./components/Tabs/Tabs2.js";
72
77
  import { Textarea } from "./components/Textarea/Textarea2.js";
78
+ import { Timeline } from "./components/Timeline/Timeline2.js";
79
+ import { TimePicker } from "./components/TimePicker/TimePicker2.js";
73
80
  import { ToastProvider, toast, useToast } from "./components/Toast/Toast.js";
81
+ import { Toolbar, ToolbarSeparator } from "./components/Toolbar/Toolbar2.js";
74
82
  import { Tooltip } from "./components/Tooltip/Tooltip2.js";
75
83
  import { TreeView } from "./components/TreeView/TreeView2.js";
76
84
  import { UtilityButton } from "./components/UtilityButton/UtilityButton2.js";
77
85
  import { VideoPlayer } from "./components/VideoPlayer/VideoPlayer2.js";
78
- export { Accordion, Alert, AreaChart, Avatar, AvatarGroup, Badge, BadgeGroup, BarChart, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardFooter, CardHeader, Carousel, Checkbox, CodeSnippet, Combobox, CommandPalette, ContentDivider, CreditCard, DatePicker, DateRangePicker, Dropdown, EmptyState, FileUploader, GaugeChart, HeaderNavigation, Heatmap, Icon, InlineCTA, Input, Kbd, Keys, LineChart, LoadingDots, LoadingSkeleton, LoadingSpinner, MetricCard, MetricGrid, Modal, ModalBody, ModalFooter, ModalHeader, MultiSelect, Notification, NotificationStack, NumberInput, PageHeader, PageHeaderMeta, Pagination, PieChart, Popover, ProgressBar, ProgressCircle, ProgressSteps, RadarChart, RadioButton, RadioGroup, RatingBadge, RatingStars, RichTextEditor, SectionFooter, SectionHeader, Select, SidebarNavigation, SlideoutMenu, Slider, Sparkline, Switch, Table, Tabs, Tag, Textarea, ToastProvider, Tooltip, TreeView, UtilityButton, VideoPlayer, composeDescribedBy, getAvailableIconNames, getCustomIconNames, getFocusableElements, isActivationKey, toast, useAnchoredPosition, useComposedRefs, useControllableState, useDisclosure, useExitAnimation, useFocusTrap, useListNavigation, useOutsideInteraction, usePresence, useToast };
86
+ import { VisuallyHidden } from "./components/VisuallyHidden/VisuallyHidden2.js";
87
+ export { Accordion, Alert, AreaChart, Avatar, AvatarGroup, Badge, BadgeGroup, BarChart, Breadcrumbs, Button, ButtonGroup, Calendar, Card, CardContent, CardFooter, CardHeader, Carousel, Checkbox, CodeSnippet, Collapsible, Combobox, CommandPalette, ContentDivider, ContextMenu, CreditCard, DatePicker, DateRangePicker, Dropdown, EmptyState, FileUploader, GaugeChart, HeaderNavigation, Heatmap, Icon, InlineCTA, Input, Kbd, Keys, LineChart, LoadingDots, LoadingSkeleton, LoadingSpinner, MetricCard, MetricGrid, Modal, ModalBody, ModalFooter, ModalHeader, MultiSelect, Notification, NotificationStack, NumberInput, PageHeader, PageHeaderMeta, Pagination, PieChart, Popover, ProgressBar, ProgressCircle, ProgressSteps, RadarChart, RadioButton, RadioGroup, RatingBadge, RatingStars, Resizable, RichTextEditor, ScrollArea, SectionFooter, SectionHeader, Select, SidebarNavigation, SlideoutMenu, Slider, Sparkline, Switch, Table, Tabs, Tag, TagInput, Textarea, TimePicker, Timeline, ToastProvider, Toolbar, ToolbarSeparator, Tooltip, TreeView, UtilityButton, VideoPlayer, VisuallyHidden, composeDescribedBy, getAvailableIconNames, getCustomIconNames, getFocusableElements, isActivationKey, toast, useAnchoredPosition, useComposedRefs, useControllableState, useDisclosure, useExitAnimation, useFocusTrap, useListNavigation, useOutsideInteraction, usePresence, useToast };
@@ -1,4 +1,4 @@
1
- export type BadgeVariant = 'neutral' | 'brand' | 'success' | 'warning';
1
+ export type BadgeVariant = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
2
2
  export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
3
3
  variant?: BadgeVariant;
4
4
  }
@@ -1,4 +1,4 @@
1
- export type ButtonVariant = 'primary' | 'secondary' | 'ghost';
1
+ export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'destructive';
2
2
  export type ButtonSize = 'sm' | 'md' | 'lg';
3
3
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
4
  variant?: ButtonVariant;
@@ -0,0 +1,11 @@
1
+ export interface CollapsibleProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onToggle'> {
2
+ /** The clickable header content (text or rich nodes). */
3
+ trigger: React.ReactNode;
4
+ open?: boolean;
5
+ defaultOpen?: boolean;
6
+ onOpenChange?: (open: boolean) => void;
7
+ disabled?: boolean;
8
+ /** Show the rotating chevron on the trigger. Defaults to true. */
9
+ showChevron?: boolean;
10
+ }
11
+ export declare const Collapsible: import('react').ForwardRefExoticComponent<CollapsibleProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from './Collapsible';
@@ -0,0 +1,20 @@
1
+ export interface ContextMenuItem {
2
+ id?: string;
3
+ label: string;
4
+ onSelect?: () => void;
5
+ icon?: React.ReactNode;
6
+ shortcut?: string;
7
+ disabled?: boolean;
8
+ destructive?: boolean;
9
+ }
10
+ export interface ContextMenuSeparator {
11
+ separator: true;
12
+ }
13
+ export type ContextMenuEntry = ContextMenuItem | ContextMenuSeparator;
14
+ export interface ContextMenuProps extends React.HTMLAttributes<HTMLDivElement> {
15
+ items: ContextMenuEntry[];
16
+ /** Disable the menu entirely (right-click falls back to the native menu). */
17
+ disabled?: boolean;
18
+ onOpenChange?: (open: boolean) => void;
19
+ }
20
+ export declare const ContextMenu: import('react').ForwardRefExoticComponent<ContextMenuProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from './ContextMenu';
@@ -1,5 +1,5 @@
1
1
  import { IconName } from '../Icon';
2
- export type InlineCTATone = 'default' | 'info' | 'success' | 'warning';
2
+ export type InlineCTATone = 'default' | 'info' | 'success' | 'warning' | 'danger';
3
3
  export interface InlineCTAProps extends React.HTMLAttributes<HTMLDivElement> {
4
4
  heading?: React.ReactNode;
5
5
  description?: React.ReactNode;
@@ -0,0 +1,19 @@
1
+ export type ResizableOrientation = 'horizontal' | 'vertical';
2
+ export interface ResizableProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
3
+ /** `horizontal` = side-by-side panels (drag left/right). `vertical` = stacked (drag up/down). */
4
+ orientation?: ResizableOrientation;
5
+ /** Size of the first panel as a percentage (0–100). */
6
+ size?: number;
7
+ defaultSize?: number;
8
+ onSizeChange?: (size: number) => void;
9
+ /** Min/max size of the first panel, in percent. */
10
+ min?: number;
11
+ max?: number;
12
+ /** Keyboard resize increment, in percent. Defaults to 2. */
13
+ step?: number;
14
+ /** Accessible name for the resize handle. */
15
+ handleLabel?: string;
16
+ /** Exactly two children: the first and second panels. */
17
+ children: React.ReactNode;
18
+ }
19
+ export declare const Resizable: import('react').ForwardRefExoticComponent<ResizableProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Resizable';
@@ -0,0 +1,12 @@
1
+ export type ScrollAreaOrientation = 'vertical' | 'horizontal' | 'both';
2
+ export interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** Which axis scrolls. Defaults to `'vertical'`. */
4
+ orientation?: ScrollAreaOrientation;
5
+ /**
6
+ * Make the region keyboard-focusable so users can scroll it with the arrow
7
+ * keys (WCAG 2.1.1). Defaults to true. Set false if a focusable child already
8
+ * provides keyboard access.
9
+ */
10
+ focusable?: boolean;
11
+ }
12
+ export declare const ScrollArea: import('react').ForwardRefExoticComponent<ScrollAreaProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1 @@
1
+ export * from './ScrollArea';
@@ -1,4 +1,4 @@
1
- export type TagVariant = 'neutral' | 'brand' | 'success' | 'warning';
1
+ export type TagVariant = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
2
2
  export interface TagProps extends React.HTMLAttributes<HTMLSpanElement> {
3
3
  variant?: TagVariant;
4
4
  dismissible?: boolean;
@@ -0,0 +1,23 @@
1
+ import { TagVariant } from '../Tag';
2
+ export interface TagInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange'> {
3
+ value?: string[];
4
+ defaultValue?: string[];
5
+ onValueChange?: (tags: string[]) => void;
6
+ label?: string;
7
+ description?: string;
8
+ error?: string;
9
+ placeholder?: string;
10
+ /** Maximum number of tags. Adding is blocked once reached. */
11
+ max?: number;
12
+ /** Allow the same tag more than once. Defaults to false (deduped, case-insensitive). */
13
+ allowDuplicates?: boolean;
14
+ /** Keys that commit the current draft as a tag. Defaults to Enter and comma. */
15
+ delimiters?: string[];
16
+ /** Reject a candidate tag (return false to block). Trimmed value is passed. */
17
+ validate?: (tag: string) => boolean;
18
+ /** Visual variant for the rendered tags. */
19
+ tagVariant?: TagVariant;
20
+ name?: string;
21
+ required?: boolean;
22
+ }
23
+ export declare const TagInput: import('react').ForwardRefExoticComponent<TagInputProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './TagInput';
@@ -0,0 +1,18 @@
1
+ export type HourCycle = 12 | 24;
2
+ export interface TimePickerProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'value' | 'defaultValue' | 'onChange'> {
3
+ /** Canonical 24-hour value `"HH:mm"` (e.g. `"14:30"`), or `""` when unset. */
4
+ value?: string;
5
+ defaultValue?: string;
6
+ onValueChange?: (value: string) => void;
7
+ /** 12- or 24-hour display. Defaults to 24. The value is always canonical 24h. */
8
+ hourCycle?: HourCycle;
9
+ /** Granularity of the minutes column. Defaults to 1. */
10
+ minuteStep?: number;
11
+ label?: string;
12
+ description?: string;
13
+ error?: string;
14
+ placeholder?: string;
15
+ required?: boolean;
16
+ name?: string;
17
+ }
18
+ export declare const TimePicker: import('react').ForwardRefExoticComponent<TimePickerProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1 @@
1
+ export * from './TimePicker';
@@ -0,0 +1,16 @@
1
+ export type TimelineTone = 'default' | 'success' | 'warning' | 'danger';
2
+ export interface TimelineItem {
3
+ id?: string;
4
+ title: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ /** Short timestamp / meta text shown alongside the title. */
7
+ timestamp?: React.ReactNode;
8
+ /** Optional icon rendered inside the marker (replaces the default dot). */
9
+ icon?: React.ReactNode;
10
+ /** Marker colour. Defaults to `'default'` (brand). */
11
+ tone?: TimelineTone;
12
+ }
13
+ export interface TimelineProps extends React.HTMLAttributes<HTMLOListElement> {
14
+ items: TimelineItem[];
15
+ }
16
+ export declare const Timeline: import('react').ForwardRefExoticComponent<TimelineProps & import('react').RefAttributes<HTMLOListElement>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Timeline';
@@ -0,0 +1,8 @@
1
+ export type ToolbarOrientation = 'horizontal' | 'vertical';
2
+ export interface ToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** Layout + arrow-key axis. Defaults to `'horizontal'`. */
4
+ orientation?: ToolbarOrientation;
5
+ }
6
+ export declare const Toolbar: import('react').ForwardRefExoticComponent<ToolbarProps & import('react').RefAttributes<HTMLDivElement>>;
7
+ export type ToolbarSeparatorProps = React.HTMLAttributes<HTMLSpanElement>;
8
+ export declare const ToolbarSeparator: import('react').ForwardRefExoticComponent<ToolbarSeparatorProps & import('react').RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './Toolbar';
@@ -1,4 +1,4 @@
1
- export type UtilityButtonVariant = 'neutral' | 'brand' | 'danger';
1
+ export type UtilityButtonVariant = 'neutral' | 'brand' | 'destructive';
2
2
  export type UtilityButtonSize = 'sm' | 'md';
3
3
  export interface UtilityButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
4
4
  variant?: UtilityButtonVariant;
@@ -0,0 +1,15 @@
1
+ export interface VisuallyHiddenProps extends React.HTMLAttributes<HTMLElement> {
2
+ /** Element to render. Defaults to `span`. */
3
+ as?: 'span' | 'div' | 'p' | 'label' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
4
+ /**
5
+ * Reveal the content when it (or a descendant) receives keyboard focus —
6
+ * the classic "skip link" pattern. Defaults to false.
7
+ */
8
+ focusable?: boolean;
9
+ }
10
+ /**
11
+ * Hides content visually while keeping it available to screen readers and other
12
+ * assistive technology. Use for labels, instructions, and status text that are
13
+ * implied visually but need to be announced.
14
+ */
15
+ export declare const VisuallyHidden: import('react').ForwardRefExoticComponent<VisuallyHiddenProps & import('react').RefAttributes<HTMLElement>>;
@@ -0,0 +1 @@
1
+ export * from './VisuallyHidden';
@@ -5,6 +5,7 @@ export * from './components/Avatar';
5
5
  export * from './components/AvatarGroup';
6
6
  export * from './components/Button';
7
7
  export * from './components/CommandPalette';
8
+ export * from './components/ContextMenu';
8
9
  export * from './components/BadgeGroup';
9
10
  export * from './components/ButtonGroup';
10
11
  export * from './components/Breadcrumbs';
@@ -16,6 +17,7 @@ export * from './components/Checkbox';
16
17
  export * from './components/Calendar';
17
18
  export * from './components/Carousel';
18
19
  export * from './components/CodeSnippet';
20
+ export * from './components/Collapsible';
19
21
  export * from './components/Combobox';
20
22
  export * from './components/ContentDivider';
21
23
  export * from './components/DatePicker';
@@ -46,7 +48,9 @@ export * from './components/RadarChart';
46
48
  export * from './components/RadioButton';
47
49
  export * from './components/RadioGroup';
48
50
  export * from './components/Rating';
51
+ export * from './components/Resizable';
49
52
  export * from './components/RichTextEditor';
53
+ export * from './components/ScrollArea';
50
54
  export * from './components/SectionFooter';
51
55
  export * from './components/SectionHeader';
52
56
  export * from './components/SidebarNavigation';
@@ -56,12 +60,17 @@ export * from './components/Switch';
56
60
  export * from './components/Select';
57
61
  export * from './components/Slider';
58
62
  export * from './components/Tag';
63
+ export * from './components/TagInput';
59
64
  export * from './components/Table';
60
65
  export * from './components/Tabs';
61
66
  export * from './components/Textarea';
67
+ export * from './components/Timeline';
68
+ export * from './components/TimePicker';
62
69
  export * from './components/Toast';
70
+ export * from './components/Toolbar';
63
71
  export * from './components/Tooltip';
64
72
  export * from './components/TreeView';
65
73
  export * from './components/UtilityButton';
66
74
  export * from './components/VideoPlayer';
75
+ export * from './components/VisuallyHidden';
67
76
  export * from './hooks';
@@ -198,6 +198,10 @@
198
198
  --pf-button-secondary-text: var(--color-semantic-text-default);
199
199
  --pf-button-ghost-text: var(--color-semantic-text-default);
200
200
  --pf-button-ghost-bg-hover: var(--color-semantic-background-subtle);
201
+ /* Solid reds work on both themes; white text = 4.83:1 (bg) / 6.57:1 (hover) */
202
+ --pf-button-destructive-bg: var(--color-danger-600);
203
+ --pf-button-destructive-bg-hover: var(--color-danger-700);
204
+ --pf-button-destructive-text: var(--color-base-white);
201
205
 
202
206
  /* Field/input aliases */
203
207
  --pf-field-label: var(--color-semantic-text-default);
@@ -242,6 +246,46 @@
242
246
  --pf-command-item-active-bg: var(--color-semantic-action-primary);
243
247
  --pf-command-item-active-text: var(--color-semantic-action-primary-text);
244
248
 
249
+ /* Timeline aliases */
250
+ --pf-timeline-connector: var(--color-semantic-border-default);
251
+ --pf-timeline-title: var(--color-semantic-text-default);
252
+ --pf-timeline-timestamp: var(--color-semantic-text-muted);
253
+ --pf-timeline-description: var(--color-semantic-text-muted);
254
+ --pf-timeline-default-bg: var(--color-brand-100);
255
+ --pf-timeline-default-border: var(--color-semantic-action-primary);
256
+ --pf-timeline-default-icon: var(--color-semantic-action-primary);
257
+ --pf-timeline-success-bg: var(--color-semantic-status-success-background);
258
+ --pf-timeline-success-border: var(--color-semantic-status-success-foreground);
259
+ --pf-timeline-success-icon: var(--color-semantic-status-success-foreground);
260
+ --pf-timeline-warning-bg: var(--color-semantic-status-warning-background);
261
+ --pf-timeline-warning-border: var(--color-semantic-status-warning-foreground);
262
+ --pf-timeline-warning-icon: var(--color-semantic-status-warning-foreground);
263
+ --pf-timeline-danger-bg: var(--color-semantic-status-danger-background);
264
+ --pf-timeline-danger-border: var(--color-semantic-status-danger-foreground);
265
+ --pf-timeline-danger-icon: var(--color-semantic-status-danger-foreground);
266
+
267
+ /* Tag input aliases */
268
+ --pf-taginput-bg: var(--pf-input-bg);
269
+ --pf-taginput-border: var(--pf-input-border);
270
+ --pf-taginput-text: var(--pf-input-text);
271
+ --pf-taginput-placeholder: var(--pf-input-placeholder);
272
+ --pf-taginput-focus-border: var(--color-semantic-action-primary);
273
+ --pf-taginput-invalid-border: var(--color-semantic-status-danger-border);
274
+
275
+ /* Time picker aliases */
276
+ --pf-timepicker-bg: var(--pf-input-bg);
277
+ --pf-timepicker-border: var(--pf-input-border);
278
+ --pf-timepicker-text: var(--pf-input-text);
279
+ --pf-timepicker-text-muted: var(--pf-input-placeholder);
280
+ --pf-timepicker-placeholder: var(--pf-input-placeholder);
281
+ --pf-timepicker-focus-border: var(--color-semantic-action-primary);
282
+ --pf-timepicker-invalid-border: var(--color-semantic-status-danger-border);
283
+ --pf-timepicker-menu-bg: var(--pf-surface-bg);
284
+ --pf-timepicker-menu-border: var(--pf-surface-border-strong);
285
+ --pf-timepicker-option-hover-bg: var(--color-semantic-background-subtle);
286
+ --pf-timepicker-option-active-bg: var(--color-semantic-action-primary);
287
+ --pf-timepicker-option-active-text: var(--color-semantic-action-primary-text);
288
+
245
289
  /* Number input aliases */
246
290
  --pf-numberinput-bg: var(--pf-input-bg);
247
291
  --pf-numberinput-border: var(--pf-input-border);
@@ -400,10 +444,10 @@
400
444
  --pf-utility-btn-brand-border: var(--color-brand-300);
401
445
  --pf-utility-btn-brand-text: var(--color-brand-700);
402
446
  --pf-utility-btn-brand-bg-hover: var(--color-brand-200);
403
- --pf-utility-btn-danger-bg: var(--color-semantic-status-danger-background);
404
- --pf-utility-btn-danger-border: var(--color-semantic-status-danger-border);
405
- --pf-utility-btn-danger-text: var(--color-semantic-status-danger-foreground);
406
- --pf-utility-btn-danger-bg-hover: var(--color-danger-100);
447
+ --pf-utility-btn-destructive-bg: var(--color-semantic-status-danger-background);
448
+ --pf-utility-btn-destructive-border: var(--color-semantic-status-danger-border);
449
+ --pf-utility-btn-destructive-text: var(--color-semantic-status-danger-foreground);
450
+ --pf-utility-btn-destructive-bg-hover: var(--color-danger-100);
407
451
 
408
452
  /* Kbd aliases */
409
453
  --pf-kbd-bg: var(--color-semantic-background-subtle);
@@ -428,6 +472,40 @@
428
472
  --pf-accordion-icon: var(--color-semantic-text-muted);
429
473
  --pf-accordion-content-text: var(--color-semantic-text-muted);
430
474
 
475
+ /* Context menu aliases */
476
+ --pf-contextmenu-bg: var(--pf-surface-bg);
477
+ --pf-contextmenu-border: var(--pf-surface-border-strong);
478
+ --pf-contextmenu-text: var(--color-semantic-text-default);
479
+ --pf-contextmenu-text-muted: var(--color-semantic-text-muted);
480
+ --pf-contextmenu-text-danger: var(--color-semantic-status-danger-foreground);
481
+ --pf-contextmenu-separator: var(--color-semantic-border-default);
482
+ --pf-contextmenu-item-active-bg: var(--color-semantic-action-primary);
483
+ --pf-contextmenu-item-active-text: var(--color-semantic-action-primary-text);
484
+ /* Solid red works on both themes; white text = 4.83:1 */
485
+ --pf-contextmenu-danger-active-bg: var(--color-danger-600);
486
+ --pf-contextmenu-danger-active-text: var(--color-base-white);
487
+
488
+ /* Resizable aliases */
489
+ --pf-resizable-handle-bg: var(--color-semantic-border-default);
490
+ --pf-resizable-handle-active-bg: var(--color-semantic-action-primary);
491
+ --pf-resizable-grip: var(--color-semantic-text-muted);
492
+
493
+ /* Toolbar aliases */
494
+ --pf-toolbar-bg: var(--color-semantic-background-default);
495
+ --pf-toolbar-border: var(--color-semantic-border-default);
496
+ --pf-toolbar-separator: var(--color-semantic-border-default);
497
+
498
+ /* Scroll area aliases */
499
+ --pf-scrollarea-thumb: var(--color-semantic-border-strong);
500
+ --pf-scrollarea-thumb-hover: var(--color-semantic-text-muted);
501
+
502
+ /* Collapsible aliases */
503
+ --pf-collapsible-border: var(--color-semantic-border-default);
504
+ --pf-collapsible-trigger-text: var(--color-semantic-text-default);
505
+ --pf-collapsible-trigger-hover-bg: var(--color-semantic-background-subtle);
506
+ --pf-collapsible-icon: var(--color-semantic-text-muted);
507
+ --pf-collapsible-content-text: var(--color-semantic-text-muted);
508
+
431
509
  /* Heatmap aliases */
432
510
  --pf-heatmap-color: var(--color-semantic-action-primary);
433
511
  --pf-heatmap-empty: var(--color-semantic-background-subtle);
@@ -659,6 +737,8 @@
659
737
  --pf-inline-cta-success-border: var(--color-semantic-status-success-border);
660
738
  --pf-inline-cta-warning-bg: var(--color-semantic-status-warning-background);
661
739
  --pf-inline-cta-warning-border: var(--color-semantic-status-warning-border);
740
+ --pf-inline-cta-danger-bg: var(--color-semantic-status-danger-background);
741
+ --pf-inline-cta-danger-border: var(--color-semantic-status-danger-border);
662
742
 
663
743
  /* Select additions */
664
744
  --pf-select-focus-border: var(--color-semantic-action-primary);
@@ -719,6 +799,8 @@
719
799
  --pf-tag-success-text: var(--color-semantic-status-success-foreground);
720
800
  --pf-tag-warning-bg: var(--color-semantic-status-warning-background);
721
801
  --pf-tag-warning-text: var(--color-semantic-status-warning-foreground);
802
+ --pf-tag-danger-bg: var(--color-semantic-status-danger-background);
803
+ --pf-tag-danger-text: var(--color-semantic-status-danger-foreground);
722
804
 
723
805
  /* HeaderNavigation aliases */
724
806
  --pf-header-nav-bg: var(--color-semantic-background-default);
@@ -809,6 +891,9 @@
809
891
  --pf-badge-brand-background: var(--color-brand-900);
810
892
  --pf-badge-brand-foreground: var(--color-brand-300);
811
893
 
894
+ /* Timeline — brand-100 default marker fill is near-white; darken for dark mode */
895
+ --pf-timeline-default-bg: var(--color-brand-900);
896
+
812
897
  --pf-badgegroup-brand-100: var(--color-brand-900);
813
898
  --pf-badgegroup-brand-300: var(--color-brand-700);
814
899
  --pf-badgegroup-brand-700: var(--color-brand-300);