@gnome-ui/react 1.8.0 → 1.9.1

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 (147) hide show
  1. package/dist/components/ActionRow/ActionRow.d.ts +37 -0
  2. package/dist/components/ActionRow/index.d.ts +2 -0
  3. package/dist/components/Avatar/Avatar.d.ts +34 -0
  4. package/dist/components/Avatar/index.d.ts +2 -0
  5. package/dist/components/Badge/Badge.d.ts +31 -0
  6. package/dist/components/Badge/index.d.ts +2 -0
  7. package/dist/components/Banner/Banner.d.ts +38 -0
  8. package/dist/components/Banner/index.d.ts +2 -0
  9. package/dist/components/Bin/Bin.d.ts +18 -0
  10. package/dist/components/Bin/index.d.ts +2 -0
  11. package/dist/components/BottomSheet/BottomSheet.d.ts +27 -0
  12. package/dist/components/BottomSheet/index.d.ts +2 -0
  13. package/dist/components/BoxedList/BoxedList.d.ts +25 -0
  14. package/dist/components/BoxedList/index.d.ts +2 -0
  15. package/dist/components/BreakpointBin/BreakpointBin.d.ts +66 -0
  16. package/dist/components/BreakpointBin/index.d.ts +2 -0
  17. package/dist/components/Button/Button.d.ts +34 -0
  18. package/dist/components/Button/index.d.ts +2 -0
  19. package/dist/components/ButtonContent/ButtonContent.d.ts +30 -0
  20. package/dist/components/ButtonContent/index.d.ts +2 -0
  21. package/dist/components/ButtonRow/ButtonRow.d.ts +22 -0
  22. package/dist/components/ButtonRow/index.d.ts +2 -0
  23. package/dist/components/Card/Card.d.ts +24 -0
  24. package/dist/components/Card/index.d.ts +2 -0
  25. package/dist/components/Carousel/Carousel.d.ts +64 -0
  26. package/dist/components/Carousel/index.d.ts +2 -0
  27. package/dist/components/CheckRow/CheckRow.d.ts +28 -0
  28. package/dist/components/CheckRow/index.d.ts +2 -0
  29. package/dist/components/Checkbox/Checkbox.d.ts +22 -0
  30. package/dist/components/Checkbox/index.d.ts +2 -0
  31. package/dist/components/Chip/Chip.d.ts +38 -0
  32. package/dist/components/Chip/index.d.ts +2 -0
  33. package/dist/components/Clamp/Clamp.d.ts +32 -0
  34. package/dist/components/Clamp/index.d.ts +2 -0
  35. package/dist/components/ComboRow/ComboRow.d.ts +34 -0
  36. package/dist/components/ComboRow/index.d.ts +2 -0
  37. package/dist/components/Dialog/Dialog.d.ts +119 -0
  38. package/dist/components/Dialog/index.d.ts +2 -0
  39. package/dist/components/Dropdown/Dropdown.d.ts +36 -0
  40. package/dist/components/Dropdown/index.d.ts +2 -0
  41. package/dist/components/EntryRow/EntryRow.d.ts +24 -0
  42. package/dist/components/EntryRow/index.d.ts +2 -0
  43. package/dist/components/ExpanderRow/ExpanderRow.d.ts +35 -0
  44. package/dist/components/ExpanderRow/index.d.ts +2 -0
  45. package/dist/components/Frame/Frame.d.ts +14 -0
  46. package/dist/components/Frame/index.d.ts +2 -0
  47. package/dist/components/HeaderBar/HeaderBar.d.ts +25 -0
  48. package/dist/components/HeaderBar/index.d.ts +2 -0
  49. package/dist/components/Icon/Icon.d.ts +30 -0
  50. package/dist/components/Icon/index.d.ts +2 -0
  51. package/dist/components/InlineViewSwitcher/InlineViewSwitcher.d.ts +36 -0
  52. package/dist/components/InlineViewSwitcher/InlineViewSwitcherItem.d.ts +17 -0
  53. package/dist/components/InlineViewSwitcher/index.d.ts +4 -0
  54. package/dist/components/Link/Link.d.ts +18 -0
  55. package/dist/components/Link/index.d.ts +2 -0
  56. package/dist/components/LinkedGroup/LinkedGroup.d.ts +31 -0
  57. package/dist/components/LinkedGroup/index.d.ts +2 -0
  58. package/dist/components/NavigationSplitView/NavigationSplitView.d.ts +55 -0
  59. package/dist/components/NavigationSplitView/index.d.ts +2 -0
  60. package/dist/components/NavigationView/NavigationView.d.ts +55 -0
  61. package/dist/components/NavigationView/index.d.ts +2 -0
  62. package/dist/components/OverlaySplitView/OverlaySplitView.d.ts +59 -0
  63. package/dist/components/OverlaySplitView/index.d.ts +2 -0
  64. package/dist/components/PasswordEntryRow/PasswordEntryRow.d.ts +16 -0
  65. package/dist/components/PasswordEntryRow/index.d.ts +2 -0
  66. package/dist/components/Popover/Popover.d.ts +50 -0
  67. package/dist/components/Popover/index.d.ts +2 -0
  68. package/dist/components/PreferencesDialog/PreferencesDialog.d.ts +43 -0
  69. package/dist/components/PreferencesDialog/index.d.ts +2 -0
  70. package/dist/components/PreferencesGroup/PreferencesGroup.d.ts +23 -0
  71. package/dist/components/PreferencesGroup/index.d.ts +2 -0
  72. package/dist/components/PreferencesPage/PreferencesPage.d.ts +26 -0
  73. package/dist/components/PreferencesPage/index.d.ts +2 -0
  74. package/dist/components/ProgressBar/ProgressBar.d.ts +24 -0
  75. package/dist/components/ProgressBar/index.d.ts +2 -0
  76. package/dist/components/RadioButton/RadioButton.d.ts +15 -0
  77. package/dist/components/RadioButton/index.d.ts +2 -0
  78. package/dist/components/SearchBar/SearchBar.d.ts +34 -0
  79. package/dist/components/SearchBar/index.d.ts +2 -0
  80. package/dist/components/Separator/Separator.d.ts +15 -0
  81. package/dist/components/Separator/index.d.ts +2 -0
  82. package/dist/components/ShortcutLabel/ShortcutLabel.d.ts +38 -0
  83. package/dist/components/ShortcutLabel/index.d.ts +2 -0
  84. package/dist/components/ShortcutsDialog/ShortcutsDialog.d.ts +37 -0
  85. package/dist/components/ShortcutsDialog/index.d.ts +2 -0
  86. package/dist/components/Sidebar/Sidebar.d.ts +50 -0
  87. package/dist/components/Sidebar/SidebarItem.d.ts +58 -0
  88. package/dist/components/Sidebar/SidebarSection.d.ts +32 -0
  89. package/dist/components/Sidebar/index.d.ts +6 -0
  90. package/dist/components/Slider/Slider.d.ts +45 -0
  91. package/dist/components/Slider/index.d.ts +2 -0
  92. package/dist/components/SpinButton/SpinButton.d.ts +30 -0
  93. package/dist/components/SpinButton/index.d.ts +2 -0
  94. package/dist/components/SpinRow/SpinRow.d.ts +37 -0
  95. package/dist/components/SpinRow/index.d.ts +2 -0
  96. package/dist/components/Spinner/Spinner.d.ts +20 -0
  97. package/dist/components/Spinner/index.d.ts +2 -0
  98. package/dist/components/SplitButton/SplitButton.d.ts +25 -0
  99. package/dist/components/SplitButton/index.d.ts +2 -0
  100. package/dist/components/StatusPage/StatusPage.d.ts +40 -0
  101. package/dist/components/StatusPage/index.d.ts +2 -0
  102. package/dist/components/Switch/Switch.d.ts +14 -0
  103. package/dist/components/Switch/index.d.ts +2 -0
  104. package/dist/components/SwitchRow/SwitchRow.d.ts +29 -0
  105. package/dist/components/SwitchRow/index.d.ts +2 -0
  106. package/dist/components/Tabs/TabBar.d.ts +20 -0
  107. package/dist/components/Tabs/TabItem.d.ts +27 -0
  108. package/dist/components/Tabs/TabPanel.d.ts +13 -0
  109. package/dist/components/Tabs/index.d.ts +6 -0
  110. package/dist/components/Text/Text.d.ts +23 -0
  111. package/dist/components/Text/index.d.ts +2 -0
  112. package/dist/components/TextField/TextField.d.ts +22 -0
  113. package/dist/components/TextField/index.d.ts +2 -0
  114. package/dist/components/Toast/Toast.d.ts +29 -0
  115. package/dist/components/Toast/Toaster.d.ts +30 -0
  116. package/dist/components/Toast/index.d.ts +4 -0
  117. package/dist/components/ToggleGroup/ToggleGroup.d.ts +29 -0
  118. package/dist/components/ToggleGroup/ToggleGroupItem.d.ts +17 -0
  119. package/dist/components/ToggleGroup/index.d.ts +4 -0
  120. package/dist/components/Toolbar/Spacer.d.ts +19 -0
  121. package/dist/components/Toolbar/Toolbar.d.ts +18 -0
  122. package/dist/components/Toolbar/index.d.ts +4 -0
  123. package/dist/components/ToolbarView/ToolbarView.d.ts +27 -0
  124. package/dist/components/ToolbarView/index.d.ts +2 -0
  125. package/dist/components/Tooltip/Tooltip.d.ts +44 -0
  126. package/dist/components/Tooltip/index.d.ts +2 -0
  127. package/dist/components/ViewSwitcher/ViewSwitcher.d.ts +19 -0
  128. package/dist/components/ViewSwitcher/ViewSwitcherItem.d.ts +16 -0
  129. package/dist/components/ViewSwitcher/index.d.ts +4 -0
  130. package/dist/components/ViewSwitcherBar/ViewSwitcherBar.d.ts +38 -0
  131. package/dist/components/ViewSwitcherBar/index.d.ts +2 -0
  132. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebar.d.ts +37 -0
  133. package/dist/components/ViewSwitcherSidebar/ViewSwitcherSidebarItem.d.ts +27 -0
  134. package/dist/components/ViewSwitcherSidebar/index.d.ts +4 -0
  135. package/dist/components/WindowTitle/WindowTitle.d.ts +23 -0
  136. package/dist/components/WindowTitle/index.d.ts +2 -0
  137. package/dist/components/WrapBox/WrapBox.d.ts +29 -0
  138. package/dist/components/WrapBox/index.d.ts +2 -0
  139. package/dist/hooks/index.d.ts +2 -0
  140. package/dist/hooks/useBreakpoint.d.ts +42 -0
  141. package/dist/index.cjs +2 -0
  142. package/dist/index.cjs.map +1 -0
  143. package/dist/index.d.ts +130 -0
  144. package/dist/index.js +4076 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/style.css +2 -0
  147. package/package.json +1 -1
@@ -0,0 +1,59 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface OverlaySplitViewProps extends Omit<HTMLAttributes<HTMLDivElement>, "content"> {
3
+ /**
4
+ * The sidebar pane.
5
+ * On wide screens it sits beside the content.
6
+ * On narrow screens it slides over the content as an overlay.
7
+ */
8
+ sidebar: ReactNode;
9
+ /** The main content pane — always visible. */
10
+ content: ReactNode;
11
+ /**
12
+ * Whether the sidebar is shown.
13
+ * - Wide screens: always both visible; this prop is ignored.
14
+ * - Narrow screens (≤ 400 px): controls whether the overlay is open.
15
+ */
16
+ showSidebar?: boolean;
17
+ /**
18
+ * Called when the user clicks the backdrop (narrow screens only).
19
+ * Use this to set `showSidebar` to false.
20
+ */
21
+ onClose?: () => void;
22
+ /**
23
+ * Which side the sidebar appears on. Defaults to `"start"` (left in LTR).
24
+ */
25
+ sidebarPosition?: "start" | "end";
26
+ /**
27
+ * Minimum sidebar width in px. Defaults to `180`.
28
+ */
29
+ minSidebarWidth?: number;
30
+ /**
31
+ * Maximum sidebar width in px. Defaults to `280`.
32
+ */
33
+ maxSidebarWidth?: number;
34
+ /**
35
+ * Fraction of total width given to the sidebar. Defaults to `0.25`.
36
+ */
37
+ sidebarWidthFraction?: number;
38
+ }
39
+ /**
40
+ * Sidebar + content layout where the sidebar becomes a slide-over overlay
41
+ * on narrow screens, mirroring the Adwaita `AdwOverlaySplitView` pattern.
42
+ *
43
+ * On **wide** screens (> 400 px) sidebar and content are side-by-side.
44
+ * On **narrow** screens (≤ 400 px) the content fills the full width and
45
+ * the sidebar slides in as an overlay when `showSidebar` is true,
46
+ * with a translucent backdrop behind it.
47
+ *
48
+ * @example
49
+ * const [open, setOpen] = useState(false);
50
+ * <OverlaySplitView
51
+ * showSidebar={open}
52
+ * onClose={() => setOpen(false)}
53
+ * sidebar={<Nav />}
54
+ * content={<MainContent onMenuClick={() => setOpen(true)} />}
55
+ * />
56
+ *
57
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.OverlaySplitView.html
58
+ */
59
+ export declare function OverlaySplitView({ sidebar, content, showSidebar, onClose, sidebarPosition, minSidebarWidth, maxSidebarWidth, sidebarWidthFraction, className, style, ...props }: OverlaySplitViewProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { OverlaySplitView } from './OverlaySplitView';
2
+ export type { OverlaySplitViewProps } from './OverlaySplitView';
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ import { EntryRowProps } from '../EntryRow';
3
+ export interface PasswordEntryRowProps extends Omit<EntryRowProps, "type" | "trailing"> {
4
+ /** Additional trailing widgets placed before the reveal button. */
5
+ trailing?: ReactNode;
6
+ }
7
+ /**
8
+ * Password entry row with a built-in reveal/conceal toggle.
9
+ *
10
+ * Mirrors `AdwPasswordEntryRow` — an `EntryRow` variant that defaults to
11
+ * `type="password"` and provides a trailing icon button to reveal or conceal
12
+ * the entered text. Use inside a `BoxedList` for password settings fields.
13
+ *
14
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PasswordEntryRow.html
15
+ */
16
+ export declare function PasswordEntryRow({ trailing, disabled, ...props }: PasswordEntryRowProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { PasswordEntryRow } from './PasswordEntryRow';
2
+ export type { PasswordEntryRowProps } from './PasswordEntryRow';
@@ -0,0 +1,50 @@
1
+ import { ReactElement, HTMLAttributes, ReactNode } from 'react';
2
+ export type PopoverPlacement = "top" | "bottom" | "left" | "right";
3
+ export interface PopoverProps {
4
+ /**
5
+ * The rich content rendered inside the popover panel.
6
+ * Can include interactive elements (buttons, links, forms).
7
+ */
8
+ content: ReactNode;
9
+ /**
10
+ * Preferred placement relative to the trigger.
11
+ * Flips automatically when there is not enough viewport space.
12
+ * Defaults to `"bottom"`.
13
+ */
14
+ placement?: PopoverPlacement;
15
+ /**
16
+ * Whether the popover is open (controlled mode).
17
+ * Omit to use uncontrolled mode where the trigger toggles it.
18
+ */
19
+ open?: boolean;
20
+ /**
21
+ * Called when the popover requests to be closed
22
+ * (Escape key, outside click, or trigger click while open).
23
+ */
24
+ onClose?: () => void;
25
+ /**
26
+ * Called when open state should change (controlled mode).
27
+ */
28
+ onOpenChange?: (open: boolean) => void;
29
+ /**
30
+ * The trigger element. Must be a single React element that can
31
+ * receive `ref` and click/keyboard event props.
32
+ */
33
+ children: ReactElement<HTMLAttributes<HTMLElement>>;
34
+ }
35
+ /**
36
+ * Floating panel anchored to a trigger element.
37
+ *
38
+ * Unlike `Tooltip`, a Popover can contain rich interactive content
39
+ * (menus, forms, details). It follows the Adwaita `GtkPopover` pattern.
40
+ *
41
+ * - Supports both controlled (`open` + `onClose`) and uncontrolled modes.
42
+ * - Auto-positions with viewport-aware flip.
43
+ * - Closes on Escape, outside click, or trigger re-click.
44
+ * - Focus is moved into the panel on open; returns to the trigger on close.
45
+ * - `aria-haspopup="dialog"` + `aria-expanded` wired to the trigger.
46
+ * - `role="dialog"` on the panel with `aria-labelledby` when a heading is present.
47
+ *
48
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Popover.html
49
+ */
50
+ export declare function Popover({ content, placement: preferredPlacement, open: controlledOpen, onClose, onOpenChange, children, }: PopoverProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Popover } from './Popover';
2
+ export type { PopoverProps, PopoverPlacement } from './Popover';
@@ -0,0 +1,43 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface PreferencesDialogProps extends Omit<HTMLAttributes<HTMLDivElement>, "title"> {
3
+ /** Whether the dialog is open. */
4
+ open: boolean;
5
+ /** Called when the user requests to close the dialog. */
6
+ onClose: () => void;
7
+ /**
8
+ * `PreferencesPage` children. Each page appears as a sidebar entry.
9
+ * When only one page is provided the sidebar is hidden.
10
+ */
11
+ children?: ReactNode;
12
+ /**
13
+ * Whether to show a search bar in the header.
14
+ * When `true` the user can filter group/row content by typing.
15
+ * Defaults to `true`.
16
+ */
17
+ searchable?: boolean;
18
+ }
19
+ /**
20
+ * Multi-page settings dialog using `PreferencesPage` tabs.
21
+ *
22
+ * Renders a wide modal with an optional sidebar listing pages. Each
23
+ * `PreferencesPage` child becomes a navigation entry. Supports built-in
24
+ * search when `searchable` is `true` (the default).
25
+ *
26
+ * Mirrors `AdwPreferencesDialog`.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * <PreferencesDialog open={open} onClose={() => setOpen(false)}>
31
+ * <PreferencesPage title="General" iconName="preferences-system-symbolic">
32
+ * <PreferencesGroup title="Appearance">
33
+ * <BoxedList>
34
+ * <SwitchRow title="Dark mode" />
35
+ * </BoxedList>
36
+ * </PreferencesGroup>
37
+ * </PreferencesPage>
38
+ * </PreferencesDialog>
39
+ * ```
40
+ *
41
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesDialog.html
42
+ */
43
+ export declare function PreferencesDialog({ open, onClose, children, searchable, className, ...props }: PreferencesDialogProps): import('react').ReactPortal | null;
@@ -0,0 +1,2 @@
1
+ export { PreferencesDialog } from './PreferencesDialog';
2
+ export type { PreferencesDialogProps } from './PreferencesDialog';
@@ -0,0 +1,23 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface PreferencesGroupProps extends HTMLAttributes<HTMLDivElement> {
3
+ /** Group heading. */
4
+ title?: string;
5
+ /** Optional description rendered below the title. */
6
+ description?: string;
7
+ /** Widget placed at the trailing edge of the title row (e.g. a reset Button). */
8
+ headerSuffix?: ReactNode;
9
+ /** `BoxedList` rows or any row-shaped content. */
10
+ children?: ReactNode;
11
+ }
12
+ /**
13
+ * Titled section that wraps a `BoxedList` with an optional description.
14
+ *
15
+ * Use inside a `PreferencesPage` to group related settings under a named
16
+ * heading. The group is purely a layout and labelling wrapper — it does not
17
+ * render the `BoxedList` itself; pass it as `children`.
18
+ *
19
+ * Mirrors `AdwPreferencesGroup`.
20
+ *
21
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesGroup.html
22
+ */
23
+ export declare function PreferencesGroup({ title, description, headerSuffix, children, className, ...props }: PreferencesGroupProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { PreferencesGroup } from './PreferencesGroup';
2
+ export type { PreferencesGroupProps } from './PreferencesGroup';
@@ -0,0 +1,26 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface PreferencesPageProps extends HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * Page title shown in the sidebar / tab of a `PreferencesDialog`.
5
+ * Required — used as the navigation label.
6
+ */
7
+ title: string;
8
+ /**
9
+ * Name of a symbolic icon displayed next to the page title in the sidebar.
10
+ * Pass a valid icon name from the system icon theme (e.g. `"preferences-system-symbolic"`).
11
+ */
12
+ iconName?: string;
13
+ /** `PreferencesGroup` sections. */
14
+ children?: ReactNode;
15
+ }
16
+ /**
17
+ * Scrollable page composed of `PreferencesGroup` sections.
18
+ *
19
+ * Use as a child of `PreferencesDialog`. Each page appears as a labelled
20
+ * navigation entry in the dialog sidebar.
21
+ *
22
+ * Mirrors `AdwPreferencesPage`.
23
+ *
24
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.PreferencesPage.html
25
+ */
26
+ export declare function PreferencesPage({ title: _title, iconName: _iconName, children, className, ...props }: PreferencesPageProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { PreferencesPage } from './PreferencesPage';
2
+ export type { PreferencesPageProps } from './PreferencesPage';
@@ -0,0 +1,24 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * Current progress value between `0` and `1` (e.g. `0.6` = 60 %).
5
+ * Omit or set to `undefined` for the indeterminate (pulsing) state.
6
+ */
7
+ value?: number;
8
+ /** Accessible label describing what is loading. */
9
+ "aria-label"?: string;
10
+ /** Associates the bar with a visible element that labels it. */
11
+ "aria-labelledby"?: string;
12
+ }
13
+ /**
14
+ * Determinate and indeterminate progress bar following the Adwaita style.
15
+ *
16
+ * - **Determinate** — pass `value` (0–1) to show exact progress.
17
+ * - **Indeterminate** — omit `value` for an animated pulse when duration is unknown.
18
+ *
19
+ * Renders as `role="progressbar"` with `aria-valuenow` / `aria-valuemin` /
20
+ * `aria-valuemax` for screen readers.
21
+ *
22
+ * @see https://developer.gnome.org/hig/patterns/feedback/progress.html
23
+ */
24
+ export declare function ProgressBar({ value, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, ...props }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { ProgressBar } from './ProgressBar';
2
+ export type { ProgressBarProps } from './ProgressBar';
@@ -0,0 +1,15 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface RadioButtonProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ /** Accessible label. Required when no visible `<label>` is associated. */
4
+ "aria-label"?: string;
5
+ }
6
+ /**
7
+ * Single-selection radio button following the GNOME HIG and Adwaita style.
8
+ *
9
+ * Group radio buttons by giving them the same `name` attribute.
10
+ * Renders as `<input type="radio">` — natively keyboard-accessible
11
+ * (arrow keys cycle within the group) and compatible with standard form libraries.
12
+ *
13
+ * @see https://developer.gnome.org/hig/patterns/controls/radio-buttons.html
14
+ */
15
+ export declare function RadioButton({ className, ...props }: RadioButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { RadioButton } from './RadioButton';
2
+ export type { RadioButtonProps } from './RadioButton';
@@ -0,0 +1,34 @@
1
+ import { InputHTMLAttributes, ReactNode } from 'react';
2
+ export interface SearchBarProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
3
+ /**
4
+ * Whether the search bar is visible/expanded.
5
+ * When `false` the bar collapses to zero height and is hidden from AT.
6
+ */
7
+ open: boolean;
8
+ /** Called when the user presses Escape or clicks the clear button with empty value. */
9
+ onClose?: () => void;
10
+ /** Called when the clear (×) button is clicked. Also clears the input value. */
11
+ onClear?: () => void;
12
+ /**
13
+ * Content to render below the search bar (e.g. filter chips).
14
+ * Only visible while `open` is true.
15
+ */
16
+ children?: ReactNode;
17
+ /**
18
+ * Removes the header-bar background so the bar blends into any surface.
19
+ * Use inside cards, content areas, or custom containers.
20
+ * Mirrors the `.inline` style class.
21
+ */
22
+ inline?: boolean;
23
+ }
24
+ /**
25
+ * Collapsible search bar following the Adwaita `AdwSearchBar` pattern.
26
+ *
27
+ * - Slides in/out with a CSS height transition.
28
+ * - Auto-focuses the input when `open` becomes `true`.
29
+ * - Escape key calls `onClose`.
30
+ * - Shows a clear (×) button whenever the input has a value.
31
+ *
32
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.SearchBar.html
33
+ */
34
+ export declare function SearchBar({ open, onClose, onClear, children, value, onChange, placeholder, disabled, inline, className, ...props }: SearchBarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { SearchBar } from './SearchBar';
2
+ export type { SearchBarProps } from './SearchBar';
@@ -0,0 +1,15 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export type SeparatorOrientation = "horizontal" | "vertical";
3
+ export interface SeparatorProps extends HTMLAttributes<HTMLHRElement> {
4
+ /** Direction of the dividing line. Defaults to `"horizontal"`. */
5
+ orientation?: SeparatorOrientation;
6
+ }
7
+ /**
8
+ * Thin dividing line that separates groups of content.
9
+ *
10
+ * Renders as `<hr>` (horizontal) or a `<div role="separator">` (vertical).
11
+ * Color is driven entirely by design tokens and adapts to dark mode automatically.
12
+ *
13
+ * @see https://developer.gnome.org/hig/patterns/containers.html
14
+ */
15
+ export declare function Separator({ orientation, className, ...props }: SeparatorProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Separator } from './Separator';
2
+ export type { SeparatorProps, SeparatorOrientation } from './Separator';
@@ -0,0 +1,38 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface ShortcutLabelProps extends HTMLAttributes<HTMLSpanElement> {
3
+ /**
4
+ * Keyboard shortcut string.
5
+ *
6
+ * Tokens are separated by `+`. Each token is rendered as its own key cap.
7
+ * Common modifiers are normalised to their symbol:
8
+ * - `Ctrl` / `Control` → `⌃`
9
+ * - `Shift` → `⇧`
10
+ * - `Alt` / `Option` → `⌥`
11
+ * - `Super` / `Win` / `Cmd` / `Command` → `⊞`
12
+ * - `Up` → `↑` `Down` → `↓` `Left` → `←` `Right` → `→`
13
+ * - `Enter` / `Return` → `↵`
14
+ * - `Backspace` → `⌫`
15
+ * - `Delete` → `⌦`
16
+ * - `Escape` / `Esc` → `⎋`
17
+ * - `Tab` → `⇥`
18
+ * - `Space` → `␣`
19
+ *
20
+ * @example "Ctrl+S" → ⌃ S
21
+ * @example "Ctrl+Shift+Z" → ⌃ ⇧ Z
22
+ */
23
+ shortcut: string;
24
+ /** When true, modifier tokens are shown as symbols. Defaults to `true`. */
25
+ symbols?: boolean;
26
+ }
27
+ /**
28
+ * Read-only display of a keyboard shortcut with per-key key-cap styling.
29
+ *
30
+ * Each token in the `shortcut` string (split by `+`) is rendered as a
31
+ * separate `<kbd>` element. Modifier keys are normalised to their Unicode
32
+ * symbols by default.
33
+ *
34
+ * Mirrors `GtkShortcutLabel`.
35
+ *
36
+ * @see https://docs.gtk.org/gtk4/class.ShortcutLabel.html
37
+ */
38
+ export declare function ShortcutLabel({ shortcut, symbols, className, ...props }: ShortcutLabelProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { ShortcutLabel } from './ShortcutLabel';
2
+ export type { ShortcutLabelProps } from './ShortcutLabel';
@@ -0,0 +1,37 @@
1
+ export interface ShortcutEntry {
2
+ /**
3
+ * Key combination tokens, e.g. `["Ctrl", "S"]` or `["F5"]`.
4
+ * Each token is rendered as a styled `<kbd>` key cap.
5
+ */
6
+ keys: string[];
7
+ /** Human-readable description of what the shortcut does. */
8
+ description: string;
9
+ }
10
+ export interface ShortcutsSection {
11
+ /** Section heading, e.g. "File", "Edit". */
12
+ title: string;
13
+ shortcuts: ShortcutEntry[];
14
+ }
15
+ export interface ShortcutsDialogProps {
16
+ /** Whether the dialog is visible. */
17
+ open: boolean;
18
+ /** Called when the dialog is dismissed (Escape, close button). */
19
+ onClose: () => void;
20
+ /** Dialog heading. Defaults to `"Keyboard Shortcuts"`. */
21
+ title?: string;
22
+ /** Shortcut sections to display. */
23
+ sections: ShortcutsSection[];
24
+ }
25
+ /**
26
+ * Modal dialog listing keyboard shortcuts, grouped in sections, with
27
+ * integrated search to filter by description or key name.
28
+ *
29
+ * Mirrors `AdwShortcutsDialog` (libadwaita 1.8 / GNOME 49).
30
+ *
31
+ * - Renders into a portal (`document.body`).
32
+ * - Traps focus; Escape closes.
33
+ * - Search filters across all sections in real time.
34
+ *
35
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.ShortcutsDialog.html
36
+ */
37
+ export declare function ShortcutsDialog({ open, onClose, title, sections, }: ShortcutsDialogProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,2 @@
1
+ export { ShortcutsDialog } from './ShortcutsDialog';
2
+ export type { ShortcutsDialogProps, ShortcutsSection, ShortcutEntry } from './ShortcutsDialog';
@@ -0,0 +1,50 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ /** Provides the collapsed state to all descendant `SidebarItem` components. */
3
+ export declare const SidebarCollapsedContext: import('react').Context<boolean>;
4
+ /** Returns `true` when the nearest `Sidebar` is in collapsed (icon-only) mode. */
5
+ export declare function useSidebarCollapsed(): boolean;
6
+ /** Provides the active filter string to all descendant `SidebarItem` components. */
7
+ export declare const SidebarFilterContext: import('react').Context<string>;
8
+ export interface SidebarProps extends HTMLAttributes<HTMLElement> {
9
+ children?: ReactNode;
10
+ /**
11
+ * When `true`, collapses the sidebar to icon-only mode (rail/mini).
12
+ * Labels, suffixes, and section titles are hidden; tooltips appear on hover.
13
+ */
14
+ collapsed?: boolean;
15
+ /**
16
+ * Renders a built-in `SearchBar` inside the sidebar and manages the filter
17
+ * state internally (uncontrolled). Combine with `filter` + `onFilterChange`
18
+ * for controlled mode.
19
+ */
20
+ searchable?: boolean;
21
+ /**
22
+ * Controlled filter string. Items whose `label` does not match
23
+ * (case-insensitive substring) are hidden. Does not render a `SearchBar`
24
+ * on its own — use `searchable` for the built-in search input.
25
+ */
26
+ filter?: string;
27
+ /** Called when the built-in search value changes. */
28
+ onFilterChange?: (value: string) => void;
29
+ /**
30
+ * Layout mode:
31
+ * - `"sidebar"` — fixed-width panel with a border (default).
32
+ * - `"page"` — full-width boxed-list layout for narrow viewports.
33
+ *
34
+ * When omitted the sidebar auto-switches to `"page"` at ≤ 400 sp,
35
+ * mirroring `AdwSidebar` mobile behaviour.
36
+ */
37
+ mode?: "sidebar" | "page";
38
+ }
39
+ /**
40
+ * Lateral navigation panel following the Adwaita `.navigation-sidebar` style.
41
+ *
42
+ * **Tier 11 — libadwaita 1.9 completeness:**
43
+ * - `searchable` — built-in `SearchBar` with automatic item filtering.
44
+ * - `filter` / `onFilterChange` — controlled external filtering.
45
+ * - `mode` — `"sidebar"` (default) or `"page"` (boxed-list layout).
46
+ * Auto-switches to `"page"` at ≤ 400 sp when `mode` is unset.
47
+ *
48
+ * @see https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/class.Sidebar.html
49
+ */
50
+ export declare function Sidebar({ children, collapsed, searchable, filter: controlledFilter, onFilterChange, mode, className, ...props }: SidebarProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,58 @@
1
+ import { ButtonHTMLAttributes, DragEvent, ReactNode } from 'react';
2
+ import { IconDefinition } from '@gnome-ui/icons';
3
+ export interface SidebarMenuEntry {
4
+ /** Label shown in the context menu. */
5
+ label: string;
6
+ /** Called when the entry is clicked. */
7
+ onClick: () => void;
8
+ /** Renders the entry in red. Use for destructive actions. */
9
+ destructive?: boolean;
10
+ /** Disables the entry. */
11
+ disabled?: boolean;
12
+ }
13
+ export interface SidebarItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
14
+ /** Primary label. */
15
+ label: string;
16
+ /** Icon from `@gnome-ui/icons`. */
17
+ icon?: IconDefinition;
18
+ /** Marks this item as the currently active view. */
19
+ active?: boolean;
20
+ /**
21
+ * Trailing widget — any ReactNode (badge, button, icon…).
22
+ * Supersedes `badge` when both are provided.
23
+ */
24
+ suffix?: ReactNode;
25
+ /**
26
+ * @deprecated Use `suffix` instead.
27
+ */
28
+ badge?: ReactNode;
29
+ /**
30
+ * Short tooltip shown when hovering the item.
31
+ * Automatically shown when the sidebar is `collapsed`.
32
+ */
33
+ tooltip?: string;
34
+ /**
35
+ * Context-menu entries shown on right-click or the Menu key.
36
+ */
37
+ menuItems?: SidebarMenuEntry[];
38
+ /**
39
+ * Called when a dragged item is dropped onto this row.
40
+ * Mirrors `AdwSidebar` per-row drop target support (libadwaita 1.9).
41
+ */
42
+ onDrop?: (e: DragEvent<HTMLButtonElement>) => void;
43
+ /**
44
+ * MIME types this row accepts as drop targets (e.g. `["text/plain"]`).
45
+ * When provided, drops of other types are rejected via `e.preventDefault()`.
46
+ * When omitted, all types are accepted.
47
+ */
48
+ acceptTypes?: string[];
49
+ }
50
+ /**
51
+ * Individual navigation item inside a `Sidebar` or `SidebarSection`.
52
+ *
53
+ * **Tier 11 additions:**
54
+ * - Automatically hidden when `Sidebar`'s `filter` / `searchable` is active
55
+ * and the `label` does not match (case-insensitive substring).
56
+ * - `onDrop` / `acceptTypes` — HTML5 drag-and-drop target support.
57
+ */
58
+ export declare function SidebarItem({ label, icon, active, suffix, badge, tooltip, menuItems, onDrop, acceptTypes, className, ...props }: SidebarItemProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,32 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface SidebarSectionProps extends HTMLAttributes<HTMLElement> {
3
+ /**
4
+ * Section heading. Rendered in small caps above the items.
5
+ * Omit for an untitled section (e.g. the first group in a sidebar).
6
+ */
7
+ title?: string;
8
+ children?: ReactNode;
9
+ }
10
+ /**
11
+ * Named group of `SidebarItem` entries inside a `Sidebar`.
12
+ *
13
+ * Sections are separated by a thin divider. The title is optional —
14
+ * omit it for the primary section when the grouping is self-evident.
15
+ *
16
+ * Mirrors the `AdwSidebar` section model (libadwaita 1.9 / GNOME 50).
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <Sidebar>
21
+ * <SidebarSection title="Mailboxes">
22
+ * <SidebarItem label="Inbox" icon={GoHome} active />
23
+ * <SidebarItem label="Sent" icon={Share} />
24
+ * </SidebarSection>
25
+ * <SidebarSection title="Tags">
26
+ * <SidebarItem label="Work" icon={Star} />
27
+ * <SidebarItem label="Personal" icon={Star} />
28
+ * </SidebarSection>
29
+ * </Sidebar>
30
+ * ```
31
+ */
32
+ export declare function SidebarSection({ title, children, className, ...props }: SidebarSectionProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export { Sidebar, SidebarCollapsedContext, useSidebarCollapsed } from './Sidebar';
2
+ export type { SidebarProps } from './Sidebar';
3
+ export { SidebarSection } from './SidebarSection';
4
+ export type { SidebarSectionProps } from './SidebarSection';
5
+ export { SidebarItem } from './SidebarItem';
6
+ export type { SidebarItemProps, SidebarMenuEntry } from './SidebarItem';
@@ -0,0 +1,45 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export interface SliderProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
3
+ /** Current value. Must be between `min` and `max`. */
4
+ value: number;
5
+ /** Called when the value changes. */
6
+ onChange: (value: number) => void;
7
+ /** Minimum value. Defaults to `0`. */
8
+ min?: number;
9
+ /** Maximum value. Defaults to `100`. */
10
+ max?: number;
11
+ /**
12
+ * Granularity of each step.
13
+ * - Arrow keys move by one step.
14
+ * - Page Up/Down move by 10 steps.
15
+ * Defaults to `1`.
16
+ */
17
+ step?: number;
18
+ /** Disables the control. */
19
+ disabled?: boolean;
20
+ /**
21
+ * Marks to display along the track.
22
+ * Each mark can have an optional label rendered below the track.
23
+ */
24
+ marks?: Array<{
25
+ value: number;
26
+ label?: string;
27
+ }>;
28
+ /** Accessible label. Required when no visible `<label>` is present. */
29
+ "aria-label"?: string;
30
+ /** Associates the control with a visible label element. */
31
+ "aria-labelledby"?: string;
32
+ /** `id` of an element that describes the current value (e.g. a live region). */
33
+ "aria-describedby"?: string;
34
+ }
35
+ /**
36
+ * Draggable range slider following the Adwaita `GtkScale` pattern.
37
+ *
38
+ * - Pointer (mouse / touch / pen) drag to set value continuously.
39
+ * - Keyboard: ← / → move by one step; Page Up/Down by 10 steps; Home/End jump to bounds.
40
+ * - Optional tick marks with labels.
41
+ * - Fills the track from the left up to the thumb (accent colour).
42
+ *
43
+ * @see https://developer.gnome.org/hig/patterns/controls/sliders.html
44
+ */
45
+ export declare function Slider({ value, onChange, min, max, step, disabled, marks, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: SliderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { Slider } from './Slider';
2
+ export type { SliderProps } from './Slider';