@botiverse/raft-ui 0.72.0 → 0.74.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.
- package/CHANGELOG.md +39 -0
- package/dist/components/activity-inbox/activity-inbox-shell.d.mts +6 -3
- package/dist/components/activity-inbox/activity-inbox-shell.mjs +33 -14
- package/dist/components/activity-inbox/activity-inbox-shell.recipe.mjs +6 -1
- package/dist/components/announcement-dialog/announcement-dialog.d.mts +2 -1
- package/dist/components/announcement-dialog/announcement-dialog.mjs +5 -4
- package/dist/components/choice-list/choice-list.mjs +4 -1
- package/dist/components/choice-list/choice-list.recipe.mjs +2 -2
- package/dist/components/combobox-select/combobox-select.css +2 -0
- package/dist/components/composer/composer-suggestion-list.d.mts +5 -2
- package/dist/components/composer/composer-suggestion-list.mjs +10 -8
- package/dist/components/composer/composer.recipe.mjs +1 -1
- package/dist/components/dialog/dialog.d.mts +5 -3
- package/dist/components/dialog/dialog.mjs +16 -10
- package/dist/components/files/files.d.mts +5 -2
- package/dist/components/files/files.mjs +11 -2
- package/dist/components/files/files.recipe.mjs +1 -1
- package/dist/components/filter-chip/filter-chip.mjs +2 -1
- package/dist/components/markdown/markdown-parts.d.mts +1 -1
- package/dist/components/markdown/markdown-parts.mjs +1 -1
- package/dist/components/message-action-card/message-action-card-content.recipe.mjs +2 -1
- package/dist/components/message-action-card/message-action-card.d.mts +6 -4
- package/dist/components/message-action-card/message-action-card.mjs +14 -27
- package/dist/components/message-list/message-list.mjs +3 -3
- package/dist/components/mobile-nav/mobile-nav-server.d.mts +4 -2
- package/dist/components/mobile-nav/mobile-nav-server.mjs +9 -5
- package/dist/components/notification-center/notification-center.d.mts +5 -2
- package/dist/components/notification-center/notification-center.mjs +10 -8
- package/dist/components/panel/panel-action.mjs +1 -1
- package/dist/components/panel/panel.d.mts +10 -2
- package/dist/components/panel/panel.mjs +26 -3
- package/dist/components/panel/panel.recipe.mjs +2 -1
- package/dist/components/scroll-area/scroll-area.css +27 -10
- package/dist/components/scroll-area/types.d.mts +3 -1
- package/dist/components/scroll-area/use-scroll-area-container.d.mts +2 -1
- package/dist/components/search/search.d.mts +5 -3
- package/dist/components/search/search.mjs +9 -10
- package/dist/components/search/search.recipe.mjs +1 -1
- package/dist/components/segmented-control/segmented-control.mjs +1 -1
- package/dist/components/sidebar/sidebar.mjs +1 -1
- package/dist/components/tabs/tabs.mjs +1 -1
- package/dist/components/tasks/tasks-panel.d.mts +6 -2
- package/dist/components/tasks/tasks-panel.mjs +10 -7
- package/dist/components/tasks/tasks-panel.recipe.mjs +1 -1
- package/dist/components/toggle-group/toggle-group.mjs +1 -1
- package/dist/components/virtual-list/styles/virtual-list.css +3 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +4 -4
- package/dist/lib/use-scrollbar-size.d.mts +3 -0
- package/dist/lib/use-scrollbar-size.mjs +3 -0
- package/dist/lint/prefer-scroll-area.d.mts +75 -0
- package/dist/lint/prefer-scroll-area.mjs +157 -0
- package/dist/lint/recommended.json +6 -0
- package/dist/lint.d.mts +22 -0
- package/dist/lint.mjs +29 -0
- package/dist/styles.css +3 -2
- package/package.json +6 -1
- package/skills/raft-ui-guide/SKILL.md +1 -0
- package/skills/raft-ui-guide/rules/technical-overview.md +1 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tv } from "../../lib/tv.mjs";
|
|
2
|
+
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
2
3
|
import { MobileNavItem } from "./mobile-nav.mjs";
|
|
3
4
|
import "../../lib/touch-drag.mjs";
|
|
4
5
|
import { PopoverContent } from "../popover/popover.mjs";
|
|
@@ -17,7 +18,7 @@ const mobileNavServer = tv({ slots: {
|
|
|
17
18
|
"w-[calc(var(--anchor-width)-16px)] min-w-0",
|
|
18
19
|
"max-h-[min(60dvh,calc(var(--available-height)-env(safe-area-inset-top,0px)))]"
|
|
19
20
|
],
|
|
20
|
-
list: ["flex min-h-0 flex-1 flex-col
|
|
21
|
+
list: ["flex min-h-0 flex-1 flex-col p-1"],
|
|
21
22
|
group: ["flex shrink-0 flex-col p-1"],
|
|
22
23
|
row: [
|
|
23
24
|
"flex w-full shrink-0 cursor-default select-none items-center",
|
|
@@ -187,13 +188,16 @@ function MobileNavServerPopoverContent({ anchor, side = "top", align = "center",
|
|
|
187
188
|
...props
|
|
188
189
|
});
|
|
189
190
|
}
|
|
190
|
-
/** The server list: takes the room left in the popover and scrolls inside it
|
|
191
|
+
/** The server list: takes the room left in the popover and scrolls inside it,
|
|
192
|
+
* a ScrollArea (a column with no gap, so its gutters move nothing). */
|
|
191
193
|
function MobileNavServerPopoverList({ className, ...props }) {
|
|
192
194
|
const { list } = mobileNavServer();
|
|
193
|
-
return /* @__PURE__ */ jsx(
|
|
195
|
+
return /* @__PURE__ */ jsx(ScrollArea, {
|
|
194
196
|
"data-slot": "mobile-nav-server-popover-list",
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
overscroll: "contain",
|
|
198
|
+
tabIndex: -1,
|
|
199
|
+
...props,
|
|
200
|
+
className: list({ className })
|
|
197
201
|
});
|
|
198
202
|
}
|
|
199
203
|
/** Rows that always stay in view, such as the footer actions. */
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { StyledProps } from "../../lib/styled-props.mjs";
|
|
2
2
|
import { VariantProps } from "../../lib/tv.mjs";
|
|
3
3
|
import { ButtonProps } from "../button/button.mjs";
|
|
4
|
+
import { ScrollAreaProps } from "../scroll-area/types.mjs";
|
|
4
5
|
import { EmptyStateProps } from "../empty-state/empty-state.mjs";
|
|
5
6
|
import { useRender } from "@base-ui/react/use-render";
|
|
6
7
|
import { Popover } from "@base-ui/react/popover";
|
|
@@ -198,8 +199,10 @@ export type NotificationCenterTitleProps = useRender.ComponentProps<"span">;
|
|
|
198
199
|
export declare function NotificationCenterTitle({ render, className, ...props }: NotificationCenterTitleProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
199
200
|
export type NotificationCenterCountProps = useRender.ComponentProps<"span">;
|
|
200
201
|
export declare function NotificationCenterCount({ render, className, ...props }: NotificationCenterCountProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
201
|
-
export type NotificationCenterScrollerProps =
|
|
202
|
-
|
|
202
|
+
export type NotificationCenterScrollerProps = ScrollAreaProps;
|
|
203
|
+
/** The notices' scroller, a ScrollArea: `ref`, `className`, `render` and the
|
|
204
|
+
* native props are the scrolling element's. */
|
|
205
|
+
export declare function NotificationCenterScroller({ className, ...props }: NotificationCenterScrollerProps): import("react").JSX.Element;
|
|
203
206
|
export type NotificationCenterListProps = useRender.ComponentProps<"ul">;
|
|
204
207
|
export declare function NotificationCenterList({ render, className, ...props }: NotificationCenterListProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
205
208
|
export type NotificationCenterItemProps = useRender.ComponentProps<"li"> & Pick<VariantProps<typeof notificationCenter>, "read">;
|
|
@@ -2,6 +2,7 @@ import { headEdgePull } from "../../lib/head-edges.mjs";
|
|
|
2
2
|
import { tv } from "../../lib/tv.mjs";
|
|
3
3
|
import { useThemeScopeProps } from "../../lib/theme/theme-scope.mjs";
|
|
4
4
|
import { Button } from "../button/button.mjs";
|
|
5
|
+
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
5
6
|
import { Status } from "../status/status.mjs";
|
|
6
7
|
import { usePopupCollision } from "../../lib/frame-insets.mjs";
|
|
7
8
|
import { EmptyState } from "../empty-state/empty-state.mjs";
|
|
@@ -36,7 +37,7 @@ const notificationCenter = tv({
|
|
|
36
37
|
],
|
|
37
38
|
title: ["font-sans text-headline text-foreground"],
|
|
38
39
|
count: ["ml-auto", "font-mono text-mono-meta text-foreground-hint"],
|
|
39
|
-
scroller: ["min-h-0 flex-1
|
|
40
|
+
scroller: ["min-h-0 flex-1"],
|
|
40
41
|
list: [],
|
|
41
42
|
item: [
|
|
42
43
|
"group/notification-center-item relative px-4 py-3",
|
|
@@ -204,14 +205,15 @@ function NotificationCenterCount({ render, className, ...props }) {
|
|
|
204
205
|
state: { slot: "notification-center-count" }
|
|
205
206
|
});
|
|
206
207
|
}
|
|
207
|
-
|
|
208
|
+
/** The notices' scroller, a ScrollArea: `ref`, `className`, `render` and the
|
|
209
|
+
* native props are the scrolling element's. */
|
|
210
|
+
function NotificationCenterScroller({ className, ...props }) {
|
|
208
211
|
const { scroller } = notificationCenter();
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
state: { slot: "notification-center-scroller" }
|
|
212
|
+
return /* @__PURE__ */ jsx(ScrollArea, {
|
|
213
|
+
"data-slot": "notification-center-scroller",
|
|
214
|
+
overscroll: "contain",
|
|
215
|
+
...props,
|
|
216
|
+
className: scroller({ className })
|
|
215
217
|
});
|
|
216
218
|
}
|
|
217
219
|
function NotificationCenterList({ render, className, ...props }) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defaultNativeButton } from "../../lib/default-native-button.mjs";
|
|
2
|
-
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
3
2
|
import { useMergedRef } from "../../lib/use-merged-ref.mjs";
|
|
3
|
+
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
4
4
|
import { panelAction } from "./panel-action.recipe.mjs";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
import { Button } from "@base-ui/react/button";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ScrollAreaProps } from "../scroll-area/types.mjs";
|
|
1
2
|
import { useRender } from "@base-ui/react/use-render";
|
|
2
3
|
//#region src/components/panel/panel.d.ts
|
|
3
4
|
export type PanelEdge = "attached" | "inset";
|
|
@@ -14,8 +15,15 @@ export type PanelHeaderRootProps = useRender.ComponentProps<"div">;
|
|
|
14
15
|
export declare function PanelHeaderRoot({ className, render, ...props }: PanelHeaderRootProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
15
16
|
export type PanelBodyProps = useRender.ComponentProps<"div">;
|
|
16
17
|
export declare function PanelBody({ className, render, ...props }: PanelBodyProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
17
|
-
export type PanelScrollViewportProps =
|
|
18
|
-
|
|
18
|
+
export type PanelScrollViewportProps = ScrollAreaProps;
|
|
19
|
+
/**
|
|
20
|
+
* The panel's one scroll container, a ScrollArea: its overlay scrollbar takes
|
|
21
|
+
* no room and looks the same on every platform, and a scroll that reaches the
|
|
22
|
+
* end stops there (`overscroll="contain"`). `ref`, `className`, `render` and
|
|
23
|
+
* the native props are the scrolling element's; ScrollArea's options pass
|
|
24
|
+
* through.
|
|
25
|
+
*/
|
|
26
|
+
export declare function PanelScrollViewport({ className, ...props }: PanelScrollViewportProps): import("react").JSX.Element;
|
|
19
27
|
export type PanelScrollContentProps = useRender.ComponentProps<"div">;
|
|
20
28
|
export declare function PanelScrollContent({ className, render, ...props }: PanelScrollContentProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
21
29
|
export type PanelSectionProps = useRender.ComponentProps<"section">;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
1
2
|
import { panel } from "./panel.recipe.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
4
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
5
|
import { useRender } from "@base-ui/react/use-render";
|
|
4
6
|
//#region src/components/panel/panel.tsx
|
|
@@ -44,11 +46,32 @@ function PanelBody({ className, render, ...props }) {
|
|
|
44
46
|
props: mergeProps(defaultProps, props)
|
|
45
47
|
});
|
|
46
48
|
}
|
|
47
|
-
|
|
49
|
+
/**
|
|
50
|
+
* The panel's one scroll container, a ScrollArea: its overlay scrollbar takes
|
|
51
|
+
* no room and looks the same on every platform, and a scroll that reaches the
|
|
52
|
+
* end stops there (`overscroll="contain"`). `ref`, `className`, `render` and
|
|
53
|
+
* the native props are the scrolling element's; ScrollArea's options pass
|
|
54
|
+
* through.
|
|
55
|
+
*/
|
|
56
|
+
function PanelScrollViewport({ className, ...props }) {
|
|
48
57
|
const { scrollViewport } = panel();
|
|
49
|
-
|
|
58
|
+
return /* @__PURE__ */ jsx(ScrollArea, {
|
|
50
59
|
"data-slot": "panel-scroll-viewport",
|
|
60
|
+
overscroll: "contain",
|
|
61
|
+
...props,
|
|
51
62
|
className: scrollViewport({ className })
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* The panel's native scroller, for MessageList's phone path only, which
|
|
67
|
+
* scrolls natively below 768px (message-list.md#behavior). Not exported from
|
|
68
|
+
* the package.
|
|
69
|
+
*/
|
|
70
|
+
function PanelNativeScrollViewport({ className, render, ...props }) {
|
|
71
|
+
const { nativeScrollViewport } = panel();
|
|
72
|
+
const defaultProps = {
|
|
73
|
+
"data-slot": "panel-scroll-viewport",
|
|
74
|
+
className: nativeScrollViewport({ className })
|
|
52
75
|
};
|
|
53
76
|
return useRender({
|
|
54
77
|
defaultTagName: "div",
|
|
@@ -93,4 +116,4 @@ function PanelFooter({ className, render, ...props }) {
|
|
|
93
116
|
});
|
|
94
117
|
}
|
|
95
118
|
//#endregion
|
|
96
|
-
export { Panel, PanelBody, PanelFooter, PanelHeaderRoot, PanelScrollContent, PanelScrollViewport, PanelSection };
|
|
119
|
+
export { Panel, PanelBody, PanelFooter, PanelHeaderRoot, PanelNativeScrollViewport, PanelScrollContent, PanelScrollViewport, PanelSection };
|
|
@@ -5,7 +5,8 @@ const panel = tv({
|
|
|
5
5
|
root: ["[--panel-footer-clearance:10rem]", "bg-layer-canvas text-foreground"],
|
|
6
6
|
header: ["[@media(max-height:600px)]:h-(--header-height-short)"],
|
|
7
7
|
body: ["relative min-h-0 flex-1 overflow-hidden"],
|
|
8
|
-
scrollViewport: ["h-full min-h-0
|
|
8
|
+
scrollViewport: ["h-full min-h-0", "[overflow-anchor:auto]"],
|
|
9
|
+
nativeScrollViewport: ["h-full min-h-0 overflow-y-auto overscroll-contain", "[overflow-anchor:auto] [-webkit-overflow-scrolling:touch]"],
|
|
9
10
|
scrollContent: ["min-h-full"],
|
|
10
11
|
section: ["border-t px-(--surface-inset) py-4", "border-line-hairline"],
|
|
11
12
|
footer: [
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
* `--overflow-{y,x}-{start,end}` (more content past that edge; `x` is
|
|
25
25
|
* inline; these and `--rtl` are set by the script with `classList`, never
|
|
26
26
|
* rendered) and `--textarea`; `__container` (with absolute gutters, the
|
|
27
|
-
* container), `__viewport` (ScrollArea's own `<div>` container
|
|
28
|
-
*
|
|
27
|
+
* container), `__viewport` (ScrollArea's own `<div>` container),
|
|
28
|
+
* `__content`, `__textarea`, `__gutters` (with `--scrolling`,
|
|
29
29
|
* from the first scroll until `hideDelay` after the last, and `--dragging`,
|
|
30
30
|
* both set by the script: on the layer, so toggling them restyles only the
|
|
31
31
|
* gutters, not the content under the root), `__gutter` (`--vertical`,
|
|
@@ -216,9 +216,9 @@
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/*
|
|
219
|
-
* The container. Its
|
|
220
|
-
*
|
|
221
|
-
* gutters it is the root.
|
|
219
|
+
* The container. Its layout and focus are its own (a list, a textarea);
|
|
220
|
+
* its overflow is the orientation's (below), and the overlay scrollbars
|
|
221
|
+
* replace its native ones. With sticky gutters it is the root.
|
|
222
222
|
*/
|
|
223
223
|
.r-scroll-area.r-scroll-area--sticky-gutters,
|
|
224
224
|
.r-scroll-area.r-scroll-area--absolute-gutters > .r-scroll-area__container {
|
|
@@ -242,17 +242,34 @@
|
|
|
242
242
|
position: relative;
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
/*
|
|
246
|
-
|
|
245
|
+
/*
|
|
246
|
+
* Every container scrolls in the orientation: ScrollArea's own `<div>` and
|
|
247
|
+
* a `useScrollAreaContainer` element alike, so a caller never writes the
|
|
248
|
+
* overflow. With no specificity (`:where`), so a component's own rule for
|
|
249
|
+
* its scroller (VirtualList's) or an overflow in the caller's `className`
|
|
250
|
+
* still wins over it.
|
|
251
|
+
*/
|
|
252
|
+
:where(.r-scroll-area.r-scroll-area--sticky-gutters),
|
|
253
|
+
:where(.r-scroll-area.r-scroll-area--absolute-gutters > .r-scroll-area__container) {
|
|
247
254
|
overflow: hidden auto;
|
|
248
|
-
position: relative;
|
|
249
255
|
}
|
|
250
|
-
.r-scroll-area.r-scroll-area--sticky-gutters.r-scroll-area--horizontal-orientation
|
|
256
|
+
:where(.r-scroll-area.r-scroll-area--sticky-gutters.r-scroll-area--horizontal-orientation),
|
|
257
|
+
:where(
|
|
258
|
+
.r-scroll-area.r-scroll-area--absolute-gutters.r-scroll-area--horizontal-orientation
|
|
259
|
+
> .r-scroll-area__container
|
|
260
|
+
) {
|
|
251
261
|
overflow: auto hidden;
|
|
252
262
|
}
|
|
253
|
-
.r-scroll-area.r-scroll-area--sticky-gutters.r-scroll-area--both-orientation
|
|
263
|
+
:where(.r-scroll-area.r-scroll-area--sticky-gutters.r-scroll-area--both-orientation),
|
|
264
|
+
:where(
|
|
265
|
+
.r-scroll-area.r-scroll-area--absolute-gutters.r-scroll-area--both-orientation
|
|
266
|
+
> .r-scroll-area__container
|
|
267
|
+
) {
|
|
254
268
|
overflow: auto;
|
|
255
269
|
}
|
|
270
|
+
.r-scroll-area.r-scroll-area--sticky-gutters.r-scroll-area__viewport {
|
|
271
|
+
position: relative;
|
|
272
|
+
}
|
|
256
273
|
|
|
257
274
|
/*
|
|
258
275
|
* A scroll that reaches the end stops there instead of scrolling the page:
|
|
@@ -116,7 +116,9 @@ export type ScrollAreaContainerProps<E extends HTMLElement = HTMLElement> = {
|
|
|
116
116
|
ref: RefCallback<E>;
|
|
117
117
|
/**
|
|
118
118
|
* Before your own classes. With sticky gutters the container is the root, so these are the
|
|
119
|
-
* root's classes and modifiers; with absolute gutters, `r-scroll-area__container`.
|
|
119
|
+
* root's classes and modifiers; with absolute gutters, `r-scroll-area__container`. They give the
|
|
120
|
+
* element the orientation's overflow (vertical: `overflow-y: auto`, `overflow-x: hidden`), so
|
|
121
|
+
* it needs no overflow class of its own; one of yours still wins over it.
|
|
120
122
|
*/
|
|
121
123
|
className: string;
|
|
122
124
|
/** With sticky gutters, the root's variables (`railInset`, the timelines); merge your style after it. */
|
|
@@ -6,7 +6,8 @@ import { ScrollAreaContainer, ScrollAreaContainerOptions, ScrollAreaFrameProps }
|
|
|
6
6
|
* its scroll, and keeps the state; you render the elements.
|
|
7
7
|
*
|
|
8
8
|
* Spread `containerProps` on the element that scrolls (a `<ul>`, a `<textarea>`, VirtualList's
|
|
9
|
-
* scroller through `domRef`), merging your own `className` and `style` with them
|
|
9
|
+
* scroller through `domRef`), merging your own `className` and `style` with them; its classes give
|
|
10
|
+
* the element the orientation's overflow, so it needs no overflow class (pass your own
|
|
10
11
|
* refs as `containerRef` and `frameRef`: the returned `ref`s already forward to them), and render
|
|
11
12
|
* `<ScrollAreaGutters {...guttersProps} />` where `guttersPosition` says:
|
|
12
13
|
*
|
|
@@ -9,9 +9,11 @@ export declare function SearchShellRoot({ className, edge, render, ...props }: S
|
|
|
9
9
|
export type SearchShellFiltersProps = ComponentPropsWithRef<"div">;
|
|
10
10
|
export declare function SearchShellFilters({ className, ...props }: SearchShellFiltersProps): import("react").JSX.Element;
|
|
11
11
|
export type SearchShellViewportProps = ComponentPropsWithRef<"div">;
|
|
12
|
-
/** The results' scroller
|
|
13
|
-
*
|
|
14
|
-
|
|
12
|
+
/** The results' scroller, a ScrollArea: its overlay scrollbar takes no room,
|
|
13
|
+
* so the result cells' fills sit 8px from both edges with or without it
|
|
14
|
+
* (design/patterns/lists.md). `ref`, `className` and the native props are the
|
|
15
|
+
* scrolling element's. */
|
|
16
|
+
export declare function SearchShellViewport({ className, ...props }: SearchShellViewportProps): import("react").JSX.Element;
|
|
15
17
|
export type SearchResultsSummaryProps = useRender.ComponentProps<"span">;
|
|
16
18
|
export declare function SearchResultsSummary({ className, render, ...props }: SearchResultsSummaryProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
17
19
|
export type SearchResultsSectionProps = useRender.ComponentProps<"div">;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
2
2
|
import { Panel } from "../panel/panel.mjs";
|
|
3
|
-
import { useScrollbarSize } from "../../lib/use-scrollbar-size.mjs";
|
|
4
3
|
import { search } from "./search.recipe.mjs";
|
|
5
4
|
import { jsx } from "react/jsx-runtime";
|
|
6
5
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
@@ -23,17 +22,17 @@ function SearchShellFilters({ className, ...props }) {
|
|
|
23
22
|
...props
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
|
-
/** The results' scroller
|
|
27
|
-
*
|
|
28
|
-
|
|
25
|
+
/** The results' scroller, a ScrollArea: its overlay scrollbar takes no room,
|
|
26
|
+
* so the result cells' fills sit 8px from both edges with or without it
|
|
27
|
+
* (design/patterns/lists.md). `ref`, `className` and the native props are the
|
|
28
|
+
* scrolling element's. */
|
|
29
|
+
function SearchShellViewport({ className, ...props }) {
|
|
29
30
|
const { viewport } = search();
|
|
30
|
-
|
|
31
|
-
const [setRef] = useMergedRef(ref, scrollbarRef);
|
|
32
|
-
return /* @__PURE__ */ jsx("div", {
|
|
31
|
+
return /* @__PURE__ */ jsx(ScrollArea, {
|
|
33
32
|
"data-slot": "search-shell-viewport",
|
|
34
|
-
|
|
33
|
+
overscroll: "contain",
|
|
35
34
|
...props,
|
|
36
|
-
|
|
35
|
+
className: viewport({ className })
|
|
37
36
|
});
|
|
38
37
|
}
|
|
39
38
|
function SearchResultsSummary({ className, render, ...props }) {
|
|
@@ -12,7 +12,7 @@ const search = tv({ slots: {
|
|
|
12
12
|
"border-b border-line-seam bg-layer-canvas px-(--column-margin) py-3",
|
|
13
13
|
"md:pointer-fine:py-[calc((var(--header-height)-1px-var(--control-height))/2)]"
|
|
14
14
|
],
|
|
15
|
-
viewport: ["min-h-0 flex-1
|
|
15
|
+
viewport: ["min-h-0 flex-1 p-4", "bg-layer-canvas px-0 pt-0 pb-4"],
|
|
16
16
|
summary: ["block", "mb-0 px-(--surface-inset) pt-2 font-sans text-footnote text-foreground-hint"],
|
|
17
17
|
section: ["mb-0"],
|
|
18
18
|
sectionHeading: [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tv } from "../../lib/tv.mjs";
|
|
2
|
-
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
3
2
|
import { useMergedRef } from "../../lib/use-merged-ref.mjs";
|
|
3
|
+
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
4
4
|
import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip/tooltip.mjs";
|
|
5
5
|
import { createContext, use, useCallback, useLayoutEffect, useRef, useState } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useMobileViewport } from "../../lib/use-mobile-viewport.mjs";
|
|
2
1
|
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
2
|
+
import { useMobileViewport } from "../../lib/use-mobile-viewport.mjs";
|
|
3
3
|
import { sidebarRecipe } from "./sidebar.recipe.mjs";
|
|
4
4
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tv } from "../../lib/tv.mjs";
|
|
2
|
-
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
3
2
|
import { useMergedRef } from "../../lib/use-merged-ref.mjs";
|
|
3
|
+
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
4
4
|
import { createDragAnnouncements, dragInstructions } from "../drag/drag-announcements.mjs";
|
|
5
5
|
import { DragLift, useDragSiblingTransition, useLiftContainer } from "../drag/drag-lift.mjs";
|
|
6
6
|
import { useDragSensors } from "../drag/drag-sensors.mjs";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ScrollAreaProps } from "../scroll-area/types.mjs";
|
|
1
2
|
import { useRender } from "@base-ui/react/use-render";
|
|
2
3
|
//#region src/components/tasks/tasks-panel.d.ts
|
|
3
4
|
export type TasksPanelRootProps = useRender.ComponentProps<"section">;
|
|
@@ -15,8 +16,11 @@ export type TasksPanelToolbarViewProps = useRender.ComponentProps<"div">;
|
|
|
15
16
|
export declare function TasksPanelToolbarView({ className, render, ...props }: TasksPanelToolbarViewProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
16
17
|
export type TasksPanelToolbarLabelProps = useRender.ComponentProps<"span">;
|
|
17
18
|
export declare function TasksPanelToolbarLabel({ className, render, ...props }: TasksPanelToolbarLabelProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
18
|
-
export type TasksPanelViewportProps =
|
|
19
|
-
|
|
19
|
+
export type TasksPanelViewportProps = ScrollAreaProps;
|
|
20
|
+
/** The tasks' scroller, a ScrollArea in both directions (a board is wider
|
|
21
|
+
* than the panel): `ref`, `className`, `render` and the native props are the
|
|
22
|
+
* scrolling element's. */
|
|
23
|
+
export declare function TasksPanelViewport({ className, ...props }: TasksPanelViewportProps): import("react").JSX.Element;
|
|
20
24
|
export type TasksPanelEmptyProps = useRender.ComponentProps<"div">;
|
|
21
25
|
export declare function TasksPanelEmpty({ className, render, ...props }: TasksPanelEmptyProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
22
26
|
//#endregion
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { ScrollArea } from "../scroll-area/scroll-area.mjs";
|
|
1
2
|
import { tasksPanel } from "./tasks-panel.recipe.mjs";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
4
|
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
5
|
import { useRender } from "@base-ui/react/use-render";
|
|
4
6
|
//#region src/components/tasks/tasks-panel.tsx
|
|
@@ -86,16 +88,17 @@ function TasksPanelToolbarLabel({ className, render, ...props }) {
|
|
|
86
88
|
props: mergeProps(defaultProps, props)
|
|
87
89
|
});
|
|
88
90
|
}
|
|
89
|
-
|
|
91
|
+
/** The tasks' scroller, a ScrollArea in both directions (a board is wider
|
|
92
|
+
* than the panel): `ref`, `className`, `render` and the native props are the
|
|
93
|
+
* scrolling element's. */
|
|
94
|
+
function TasksPanelViewport({ className, ...props }) {
|
|
90
95
|
const { viewport } = tasksPanel();
|
|
91
|
-
|
|
96
|
+
return /* @__PURE__ */ jsx(ScrollArea, {
|
|
92
97
|
"data-slot": "tasks-panel-viewport",
|
|
98
|
+
orientation: "both",
|
|
99
|
+
overscroll: "contain",
|
|
100
|
+
...props,
|
|
93
101
|
className: viewport({ className })
|
|
94
|
-
};
|
|
95
|
-
return useRender({
|
|
96
|
-
defaultTagName: "div",
|
|
97
|
-
render,
|
|
98
|
-
props: mergeProps(defaultProps, props)
|
|
99
102
|
});
|
|
100
103
|
}
|
|
101
104
|
function TasksPanelEmpty({ className, render, ...props }) {
|
|
@@ -26,7 +26,7 @@ const tasksPanel = tv({ slots: {
|
|
|
26
26
|
"font-sans text-footnote font-semibold text-foreground-muted whitespace-nowrap"
|
|
27
27
|
],
|
|
28
28
|
viewport: [
|
|
29
|
-
"min-h-0 flex-1
|
|
29
|
+
"min-h-0 flex-1 p-4",
|
|
30
30
|
"pb-[calc(1rem+env(safe-area-inset-bottom,0px))]",
|
|
31
31
|
"bg-layer-canvas px-(--surface-inset)",
|
|
32
32
|
"@max-md/tasks:px-4"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { tv } from "../../lib/tv.mjs";
|
|
2
2
|
import { defaultNativeButton } from "../../lib/default-native-button.mjs";
|
|
3
|
-
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
4
3
|
import { useMergedRef } from "../../lib/use-merged-ref.mjs";
|
|
4
|
+
import { useTapActivation } from "../../lib/tap-activation.mjs";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
import { Toggle } from "@base-ui/react/toggle";
|
|
7
7
|
import { ToggleGroup } from "@base-ui/react/toggle-group";
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
* scroll would restyle every row. Content that must follow the rows' offset uses `onTransformChange`.
|
|
19
19
|
*/
|
|
20
20
|
@layer components {
|
|
21
|
+
/* VirtualList renders its own scroller (scroll-area.md#native-scrolling): it
|
|
22
|
+
hides its scrollbar unless asked, and takes ScrollArea's through
|
|
23
|
+
useScrollAreaContainer. */
|
|
21
24
|
.r-virtual-list {
|
|
22
25
|
max-height: inherit;
|
|
23
26
|
overflow-anchor: none;
|
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,7 @@ import { Button, ButtonProps, ButtonSize, DeprecatedButtonSize, buttonVariants }
|
|
|
2
2
|
import "./components/button/index.mjs";
|
|
3
3
|
import { AlertDialog, AlertDialogAction, AlertDialogActionProps, AlertDialogBody, AlertDialogBodyProps, AlertDialogCancel, AlertDialogCancelProps, AlertDialogClose, AlertDialogCloseProps, AlertDialogContent, AlertDialogContentProps, AlertDialogDescription, AlertDialogDescriptionProps, AlertDialogFooter, AlertDialogFooterProps, AlertDialogHeader, AlertDialogHeaderProps, AlertDialogOverlay, AlertDialogOverlayProps, AlertDialogPortal, AlertDialogPortalProps, AlertDialogProps, AlertDialogTitle, AlertDialogTitleProps, AlertDialogTrigger, AlertDialogTriggerProps } from "./components/alert-dialog/alert-dialog.mjs";
|
|
4
4
|
import "./components/alert-dialog/index.mjs";
|
|
5
|
+
import { ScrollAreaActions, ScrollAreaContainer, ScrollAreaContainerOptions, ScrollAreaContainerProps, ScrollAreaContentProps, ScrollAreaEdges, ScrollAreaFrameProps, ScrollAreaGuttersBinding, ScrollAreaGuttersPosition, ScrollAreaGuttersProps, ScrollAreaOptions, ScrollAreaOrientation, ScrollAreaOverscroll, ScrollAreaOwnProps, ScrollAreaProps, ScrollAreaRailInset, ScrollAreaScrollToElementOptions, ScrollAreaSize, ScrollAreaTextareaOwnProps, ScrollAreaTextareaProps, ScrollAreaTrigger } from "./components/scroll-area/types.mjs";
|
|
5
6
|
import { PanelAction, PanelActionProps } from "./components/panel/panel-action.mjs";
|
|
6
7
|
import { Dialog, DialogBody, DialogBodyProps, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogNav, DialogNavProps, DialogOverlay, DialogOverlayProps, DialogPortal, DialogPortalProps, DialogProps, DialogSurface, DialogSurfaceProps, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps } from "./components/dialog/dialog.mjs";
|
|
7
8
|
import "./components/dialog/index.mjs";
|
|
@@ -92,7 +93,6 @@ import { CodeBlock, CodeBlockAction, CodeBlockActionProps, CodeBlockActions, Cod
|
|
|
92
93
|
import "./components/code-block/index.mjs";
|
|
93
94
|
import { InlineCode, InlineCodeProps } from "./components/inline-code/inline-code.mjs";
|
|
94
95
|
import "./components/inline-code/index.mjs";
|
|
95
|
-
import { ScrollAreaActions, ScrollAreaContainer, ScrollAreaContainerOptions, ScrollAreaContainerProps, ScrollAreaContentProps, ScrollAreaEdges, ScrollAreaFrameProps, ScrollAreaGuttersBinding, ScrollAreaGuttersPosition, ScrollAreaGuttersProps, ScrollAreaOptions, ScrollAreaOrientation, ScrollAreaOverscroll, ScrollAreaOwnProps, ScrollAreaProps, ScrollAreaRailInset, ScrollAreaScrollToElementOptions, ScrollAreaSize, ScrollAreaTextareaOwnProps, ScrollAreaTextareaProps, ScrollAreaTrigger } from "./components/scroll-area/types.mjs";
|
|
96
96
|
import { MarkdownBlockquote, MarkdownBlockquoteProps, MarkdownCell, MarkdownCellProps, MarkdownCheckbox, MarkdownCheckboxProps, MarkdownHeaderCell, MarkdownHeaderCellProps, MarkdownHeading, MarkdownHeadingLevel, MarkdownHeadingProps, MarkdownImage, MarkdownImageProps, MarkdownInlineCode, MarkdownInlineCodeProps, MarkdownLink, MarkdownLinkProps, MarkdownList, MarkdownListItem, MarkdownListItemProps, MarkdownListProps, MarkdownMark, MarkdownMarkProps, MarkdownOrderedList, MarkdownOrderedListProps, MarkdownParagraph, MarkdownParagraphProps, MarkdownRule, MarkdownRuleProps, MarkdownTable, MarkdownTableProps, MarkdownTableRow, MarkdownTableRowProps, MarkdownTableScroll, MarkdownTableScrollProps } from "./components/markdown/markdown-parts.mjs";
|
|
97
97
|
import "./components/markdown/index.mjs";
|
|
98
98
|
import { MessageItem, MessageItemProps } from "./components/message-item/message-item-root.mjs";
|
package/dist/index.mjs
CHANGED
|
@@ -4,6 +4,9 @@ import { useTheme } from "./lib/theme/use-theme.mjs";
|
|
|
4
4
|
import { Spinner } from "./components/spinner/spinner.mjs";
|
|
5
5
|
import { Button, buttonVariants } from "./components/button/button.mjs";
|
|
6
6
|
import { AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger } from "./components/alert-dialog/alert-dialog.mjs";
|
|
7
|
+
import { ScrollAreaGutters } from "./components/scroll-area/scroll-area-gutters.mjs";
|
|
8
|
+
import { useScrollAreaContainer } from "./components/scroll-area/use-scroll-area-container.mjs";
|
|
9
|
+
import { ScrollArea, ScrollAreaContent } from "./components/scroll-area/scroll-area.mjs";
|
|
7
10
|
import { TextLink, TextLinkExternalIcon, textLinkVariants } from "./components/text-link/text-link.mjs";
|
|
8
11
|
import { PanelAction } from "./components/panel/panel-action.mjs";
|
|
9
12
|
import { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogNav, DialogOverlay, DialogPortal, DialogSurface, DialogTitle, DialogTrigger } from "./components/dialog/dialog.mjs";
|
|
@@ -19,9 +22,6 @@ import { AppRailFooter, AppRailHeader, AppRailItem, AppRailItemAttention, AppRai
|
|
|
19
22
|
import { CopyableCode, CopyableCodeAction, CopyableCodeRoot } from "./components/copyable-code/copyable-code.mjs";
|
|
20
23
|
import { CheckboxIndicator } from "./components/checkbox/checkbox-indicator.mjs";
|
|
21
24
|
import { Checkbox } from "./components/checkbox/checkbox.mjs";
|
|
22
|
-
import { ScrollAreaGutters } from "./components/scroll-area/scroll-area-gutters.mjs";
|
|
23
|
-
import { useScrollAreaContainer } from "./components/scroll-area/use-scroll-area-container.mjs";
|
|
24
|
-
import { ScrollArea, ScrollAreaContent } from "./components/scroll-area/scroll-area.mjs";
|
|
25
25
|
import { ScrollAreaTextarea } from "./components/scroll-area/scroll-area-textarea.mjs";
|
|
26
26
|
import { SidebarBody, SidebarContent, SidebarGroupLabel, SidebarHeader, SidebarHeaderTitle, SidebarRoot } from "./components/sidebar/sidebar.mjs";
|
|
27
27
|
import { SidebarMenu, SidebarMenuAside, SidebarMenuCount, SidebarMenuIcon, SidebarMenuTitle } from "./components/sidebar/sidebar-menu.mjs";
|
|
@@ -125,7 +125,6 @@ import { TasksPanelEmpty, TasksPanelRoot, TasksPanelToolbar, TasksPanelToolbarFi
|
|
|
125
125
|
import { TaskLoadingList, TaskLoadingRow } from "./components/tasks/task-loading.mjs";
|
|
126
126
|
import { TaskChip } from "./components/tasks/task-chip.mjs";
|
|
127
127
|
import { TaskStatusBadge } from "./components/tasks/task-status-badge.mjs";
|
|
128
|
-
import { useScrollbarSize } from "./lib/use-scrollbar-size.mjs";
|
|
129
128
|
import { ActivityInboxLoadingMore, ActivityInboxPanel, ActivityInboxViewport } from "./components/activity-inbox/activity-inbox-shell.mjs";
|
|
130
129
|
import { ActivityInboxSidebar } from "./components/activity-inbox/activity-inbox-sidebar.mjs";
|
|
131
130
|
import { ActivityInboxControls, ActivityInboxSelectionCount, ActivityInboxSelectionToolbar } from "./components/activity-inbox/activity-inbox-toolbar.mjs";
|
|
@@ -136,6 +135,7 @@ import { SearchMessageResult, SearchMessageResultBody, SearchMessageResultHeader
|
|
|
136
135
|
import { SearchThreadResult, SearchThreadResultHeader, SearchThreadResultMessages, SearchThreadResultMeta, SearchThreadResultTimestamp, SearchThreadResultTitle } from "./components/search/search-thread.mjs";
|
|
137
136
|
import { SearchTrigger, SearchTriggerLabel, SearchTriggerShortcut } from "./components/search/search-trigger.mjs";
|
|
138
137
|
import { LOCATED_MS, useLocated } from "./lib/located.mjs";
|
|
138
|
+
import { useScrollbarSize } from "./lib/use-scrollbar-size.mjs";
|
|
139
139
|
import { installInputModality } from "./lib/input-modality.mjs";
|
|
140
140
|
import { ThemeProvider } from "./lib/theme/theme-provider.mjs";
|
|
141
141
|
export { ActivityInboxControls, ActivityInboxLoadingMore, ActivityInboxPanel, ActivityInboxSelectionCount, ActivityInboxSelectionToolbar, ActivityInboxSidebar, ActivityInboxViewport, AddCommentIcon, AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppRailFooter, AppRailHeader, AppRailItem, AppRailItemAttention, AppRailItemBadge, AppRailItemIcon, AppRailItemIndicator, AppRailItemLabel, AppRailNav, AppRailRoot, AppShellMainSlot, AppShellOverlaySlot, AppShellPanelSlot, AppShellRailSlot, AppShellRoot, AppShellSidebarSlot, AppShellSidebarTrigger, ArtifactIcon, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Banner, BannerAction, BannerClose, BannerDescription, BannerTitle, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardLeading, CardTitle, CardTrailing, ChatIcon, Checkbox, CheckboxIndicator, CodeBlock, CodeBlockAction, CodeBlockActions, CodeBlockBody, CodeBlockHeader, CodeBlockPre, CodeBlockTitle, Combobox, ComboboxChip, ComboboxChipRemove, ComboboxChips, ComboboxClear, ComboboxCollection, ComboboxContent, ComboboxControl, ComboboxEmpty, ComboboxGroup, ComboboxGroupLabel, ComboboxHeader, ComboboxInput, ComboboxInputGroup, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxList, ComboboxPopup, ComboboxPortal, ComboboxRow, ComboboxSeparator, ComboboxTrigger, ComboboxTriggerCount, ComboboxTriggerIndicator, ComboboxValue, CommentIcon, Composer, ComposerActions, ComposerAttachment, ComposerAttachmentBody, ComposerAttachmentFailedOverlay, ComposerAttachmentFile, ComposerAttachmentImage, ComposerAttachmentMeta, ComposerAttachmentRemove, ComposerAttachmentTitle, ComposerAttachmentUploadProgressBar, ComposerAttachmentUploadingOverlay, ComposerAttachments, ComposerAttachmentsScrollArea, ComposerDropOverlay, ComposerDropOverlayLabel, ComposerDropOverlayPrompt, ComposerIconButton, ComposerInput, ComposerMeta, ComposerRoot, ComposerSubmit, ComposerSuggestionAside, ComposerSuggestionContent, ComposerSuggestionGroup, ComposerSuggestionGroupLabel, ComposerSuggestionIcon, ComposerSuggestionList, ComposerSuggestionMeta, ComposerSuggestionOption, ComposerSuggestionTitle, ComposerToolbar, ComposerToolbarLabel, ContextMenu, ContextMenuCheckboxItem, ContextMenuCheckboxItemIndicator, ContextMenuContent, ContextMenuFooter, ContextMenuItem, ContextMenuItemLabel, ContextMenuLabel, ContextMenuPopup, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuRadioItemIndicator, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSubmenu, ContextMenuSubmenuTrigger, ContextMenuTrigger, ConversationPanelBody, ConversationPanelContent, ConversationPanelEmptyState, ConversationPanelEmptyStateBrand, ConversationPanelEmptyStateBrandMark, ConversationPanelFooter, ConversationPanelRoot, ConversationPanelTabs, CopyableCode, CopyableCodeAction, CopyableCodeRoot, DescriptionDetails, DescriptionItem, DescriptionList, DescriptionTerm, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogNav, DialogOverlay, DialogPortal, DialogSurface, DialogTitle, DialogTrigger, DirectMessageIcon, Drawer, DrawerActions, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuCheckboxItemIndicator, DropdownMenuContent, DropdownMenuFooter, DropdownMenuItem, DropdownMenuItemCount, DropdownMenuItemLabel, DropdownMenuLabel, DropdownMenuPopup, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRadioItemIndicator, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSubmenu, DropdownMenuSubmenuTrigger, DropdownMenuTrigger, EmptyState, EmptyStateActions, EmptyStateContent, EmptyStateDescription, EmptyStateIcon, EmptyStateTitle, FeedbackIcon, Field, FieldControl, FieldDescription, FieldError, FieldItem, FieldLabel, FieldValidity, FileAction, FileActions, FileContent, FileImage, FileMeta, FileMetaItem, FileName, FilePreview, FilePreviewBadge, FilePreviewCode, FilePreviewDocument, FilePreviewFile, FilePreviewMedia, FileRow, FileRowOpen, FileThumbnail, FilesList, FilesPanel, FilesViewport, FollowArtifactIcon, FollowThreadIcon, FormSection, IconTile, InboxItem, InboxItemActions, InboxItemBody, InboxItemContent, InboxItemContext, InboxItemHeading, InboxItemHoverTarget, InboxItemLeading, InboxItemMarks, InboxItemMessage, InboxItemMetadata, InboxItemSelection, InboxItemSender, InboxItemSubtitle, InboxItemTimestamp, InboxItemTitle, InboxItemTrailing, InboxItemTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupInput, JoinChannelIcon, JoinJointChannelIcon, JoinPrivateChannelIcon, Kbd, KbdGroup, LOCATED_MS, Label, LabelAsterisk, LabelOptional, LabelSub, LeaveChannelIcon, LeaveJointChannelIcon, LeavePrivateChannelIcon, Lightbox, LightboxActions, LightboxClose, LightboxContent, LightboxHeader, LightboxHeaderLabel, LightboxHeaderMeta, LightboxInfoActions, LightboxInfoBar, LightboxInfoDock, LightboxInfoTitle, LightboxMedia, LightboxNavigationButton, LightboxPortal, LightboxStage, LightboxThumbnail, LightboxThumbnailStrip, LightboxTitle, LightboxToolbar, LightboxTrigger, ListRow, ListRowBody, ListRowBottom, ListRowChevron, ListRowDescription, ListRowGroup, ListRowIcon, ListRowMeta, ListRowTitle, ListRowTop, ListRowValue, MarkdownBlockquote, MarkdownCell, MarkdownCheckbox, MarkdownHeaderCell, MarkdownHeading, MarkdownImage, MarkdownInlineCode, MarkdownLink, MarkdownList, MarkdownListItem, MarkdownMark, MarkdownOrderedList, MarkdownParagraph, MarkdownRule, MarkdownTable, MarkdownTableRow, MarkdownTableScroll, MessageActionCard, MessageActionCardActions, MessageActionCardActionsNote, MessageActionCardCollapseTrigger, MessageActionCardCompletion, MessageActionCardContent, MessageActionCardHeader, MessageActionCardHeaderDescription, MessageActionCardHeaderIcon, MessageActionCardHeaderStatus, MessageActionCardHeaderTitle, MessageActionCardHint, MessageActionCardHintLabel, MessageActionCardNotice, MessageActionCardProperties, MessageActionCardProperty, MessageActionCardPropertyLabel, MessageActionCardPropertyValue, MessageActionCardScope, MessageActionCardScopeDescription, MessageActionCardScopeList, MessageActionCardScopeListLabel, MessageActionCardScopeListViewport, MessageActionCardScopeName, MessageActionCardStatus, MessageAttachmentAction, MessageAttachmentCard, MessageAttachmentCommentSummary, MessageAttachmentDiffAddition, MessageAttachmentDiffDeletion, MessageAttachmentDiffSummary, MessageAttachmentGroup, MessageAttachmentMeta, MessageAttachmentMetaEnd, MessageAttachmentMetaStart, MessageAttachmentSummary, MessageAttachmentTitle, MessageEmbed, MessageEmbedContent, MessageEmbedFooter, MessageEmbedHeader, MessageForwardedBundle, MessageForwardedBundleAttachment, MessageForwardedBundleAttachmentMeta, MessageForwardedBundleAttachmentName, MessageForwardedBundleAttachments, MessageForwardedBundleFooter, MessageForwardedBundleFooterAction, MessageForwardedBundleGallery, MessageForwardedBundleGalleryTile, MessageForwardedBundleHeader, MessageForwardedBundleHeaderContent, MessageForwardedBundleHeaderCount, MessageForwardedBundleHeaderLabel, MessageForwardedBundleItem, MessageForwardedBundleItemAuthor, MessageForwardedBundleItemContent, MessageForwardedBundleItemMeta, MessageForwardedBundleItems, MessageForwardedBundleSource, MessageForwardedBundleSourceLabel, MessageIcon, MessageImageGallery, MessageImageGalleryAction, MessageImageGalleryItem, MessageImageGalleryMedia, MessageImageGalleryOverlay, MessageImageGalleryPreview, MessageImageGalleryRow, MessageItem, MessageItemAttachments, MessageItemAvatarSlot, MessageItemBadge, MessageItemBadgeSeparator, MessageItemBody, MessageItemContent, MessageItemContinuationTime, MessageItemEdited, MessageItemEmbedded, MessageItemFooter, MessageItemGutter, MessageItemHeader, MessageItemInlineStatus, MessageItemMeta, MessageItemReadReceipt, MessageItemSavedIndicator, MessageItemSearchMatch, MessageItemSender, MessageItemSenderBadges, MessageItemSenderButton, MessageItemSenderGroup, MessageItemTime, MessageItemToolbar, MessageItemToolbarButton, MessageItemTranslationAction, MessageItemTranslationFailedStatus, MessageItemTranslationOriginal, MessageItemTranslationOriginalLabel, MessageItemTranslationProgressTrack, MessageItemTranslationRetryAction, MessageItemTranslationStatus, MessageList, MessageListDateDivider, MessageListEndFade, MessageListHistoryLimited, MessageListNotice, MessageMultiSelect, MessageMultiSelectCheckbox, MessageMultiSelectToolbar, MessageMultiSelectToolbarActions, MessageQuotedPreview, MessageQuotedPreviewAttachment, MessageQuotedPreviewAttachments, MessageQuotedPreviewAuthor, MessageQuotedPreviewAuthorMeta, MessageQuotedPreviewAuthorName, MessageQuotedPreviewChannel, MessageQuotedPreviewContent, MessageQuotedPreviewHeader, MessageQuotedPreviewLoading, MessageQuotedPreviewText, MessageQuotedPreviewThread, MessageQuotedPreviewTimestamp, MessageQuotedPreviewUnavailable, MessageReactionAddButton, MessageReactionChip, MessageReactionCount, MessageReactionErrorIndicator, MessageReactionGlyph, MessageReactionPickerContent, MessageReactionPickerStatic, MessageReactionQuickButton, MessageReactionQuickRow, MessageReactionTooltipContent, MessageReactionTooltipMeta, MessageReactionTooltipName, MessageReactionTooltipNameText, MessageReactionTooltipNames, MessageReactionTooltipSeparator, MessageReferenceChip, MessageReferenceIndicator, MessageReferenceLabel, MessageReferencePending, MessageReferenceReadMark, MessageReferenceSuffix, MessageReferenceText, MessageReferenceUnavailable, MessageReplies, MessageRepliesItem, MessageRepliesItemContent, MessageRepliesItemSender, MessageRepliesItemTime, MessageRepliesSummary, MessageRepliesSummaryItem, MessageVideoPreview, MessageVideoPreviewAction, MessageVideoPreviewFailureAction, MessageVideoPreviewFailureContent, MessageVideoPreviewFailureIcon, MessageVideoPreviewFailureTitle, MessageVideoPreviewFallback, MessageVideoPreviewMedia, MobileNavItem, MobileNavLabel, MobileNavRoot, NotificationCenter, NotificationCenterActionButton, NotificationCenterCount, NotificationCenterEmptyState, NotificationCenterHeader, NotificationCenterItem, NotificationCenterItemActions, NotificationCenterItemBody, NotificationCenterItemContent, NotificationCenterItemIcon, NotificationCenterItemRow, NotificationCenterItemTitle, NotificationCenterList, NotificationCenterPopup, NotificationCenterScroller, NotificationCenterTitle, NotificationCenterTrigger, OtterIndicator, Panel, PanelAction, PanelActions, PanelActivity, PanelBody, PanelFooter, PanelHeader, PanelHeaderContent, PanelHeaderIcon, PanelHeaderRoot, PanelHeading, PanelMeta, PanelNotice, PanelNoticeActions, PanelNoticeContent, PanelScrollContent, PanelScrollViewport, PanelSection, PanelSectionHeader, PanelStatus, PanelTitle, PanelToggleAction, PickerTriggerButton, Popover, PopoverArrow, PopoverBackdrop, PopoverClose, PopoverContent, PopoverDescription, PopoverHeader, PopoverPopup, PopoverPortal, PopoverSeparator, PopoverTitle, PopoverTrigger, PopoverViewport, PreviewCard, PreviewCardArrow, PreviewCardContent, PreviewCardDescription, PreviewCardHeader, PreviewCardPopup, PreviewCardPortal, PreviewCardSeparator, PreviewCardTitle, PreviewCardTrigger, ProfilePanel, ProfilePanelBody, ProfilePanelHeader, ProfilePanelHeaderContent, ProfilePanelSection, Progress, ProgressHeader, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, RadioGroup, RadioGroupIndicator, RadioGroupItem, RaftLogo, RaftLogoLockup, RaftWordmark, ReopenTaskIcon, ResizableGroup, ResizableHandle, ResizablePanel, SINGLE_IMAGE_MAX_HEIGHT, SINGLE_IMAGE_MAX_WIDTH, ScrollArea, ScrollAreaContent, ScrollAreaGutters, ScrollAreaTextarea, SearchEntityResult, SearchEntityResultActivity, SearchEntityResultContent, SearchEntityResultDescription, SearchEntityResultHeader, SearchEntityResultIcon, SearchEntityResultLeading, SearchEntityResultTitle, SearchMessageResult, SearchMessageResultBody, SearchMessageResultHeader, SearchMessageResultMatch, SearchMessageResultMeta, SearchMessageResultSender, SearchMessageResultThreadMeta, SearchMessageResultTimestamp, SearchResultsList, SearchResultsSection, SearchResultsSectionHeading, SearchResultsSummary, SearchShellFilters, SearchShellRoot, SearchShellViewport, SearchThreadMessageResult, SearchThreadResult, SearchThreadResultHeader, SearchThreadResultMessages, SearchThreadResultMeta, SearchThreadResultTimestamp, SearchThreadResultTitle, SearchTrigger, SearchTriggerLabel, SearchTriggerShortcut, SegmentedControl, SegmentedControlCount, SegmentedControlItem, SegmentedControlLabel, Select, SelectActionItem, SelectArrow, SelectContent, SelectGroup, SelectGroupLabel, SelectIcon, SelectItem, SelectItemDescription, SelectItemIndicator, SelectItemLeading, SelectItemText, SelectLabel, SelectList, SelectPopup, SelectPortal, SelectScrollDownArrow, SelectScrollUpArrow, SelectSeparator, SelectTrigger, SelectValue, Separator, SidebarBody, SidebarContent, SidebarControl, SidebarGroupLabel, SidebarHeader, SidebarHeaderTitle, SidebarItem, SidebarItemAside, SidebarItemChannelIcon, SidebarItemContent, SidebarItemCount, SidebarItemCountSeparator, SidebarItemIcon, SidebarItemIndicator, SidebarItemMeta, SidebarItemMetaIcon, SidebarItemStatus, SidebarItemSubtitle, SidebarItemThreadCount, SidebarItemTitle, SidebarList, SidebarMenu, SidebarMenuAside, SidebarMenuCount, SidebarMenuIcon, SidebarMenuTitle, SidebarRoot, SidebarSection, SidebarSectionAttention, SidebarSectionChevron, SidebarSectionControl, SidebarSectionControls, SidebarSectionCount, SidebarSectionDisclosure, SidebarSectionEmpty, SidebarSectionEndChevron, SidebarSectionHeader, SidebarSectionTitle, SidebarSectionTrailing, Skeleton, SortableComposerAttachment, SortableComposerAttachments, SortableComposerAttachmentsScroll, SortableTabsList, SortableTabsTab, Spinner, Status, Step, Steps, Switch, SwitchThumb, SystemMessage, SystemMessageContent, SystemMessageGroup, SystemMessageGroupChevron, SystemMessageGroupDisclosure, SystemMessageGroupHeader, SystemMessageGroupPanel, SystemMessageGroupSummary, SystemMessageTime, TASK_STATUS_IDS, Table, TableBody, TableCaption, TableCell, TableColgroup, TableColumn, TableHead, TableHeader, TableRow, Tabs, TabsLabel, TabsList, TabsPanel, TabsTab, TaskBacklogIcon, TaskBoardColumn, TaskBoardColumnBadge, TaskBoardColumnChevron, TaskBoardColumnCount, TaskBoardColumnEmpty, TaskBoardColumnEmptyAllowed, TaskBoardColumnEmptyBlocked, TaskBoardColumnEmptyIdle, TaskBoardColumnHeading, TaskBoardColumnItems, TaskBoardColumnPanel, TaskBoardColumnTrigger, TaskBoardRoot, TaskCard, TaskCardBody, TaskCardChannel, TaskCardDescription, TaskCardLegacy, TaskCardMeta, TaskCardNumber, TaskCardRow, TaskCardStatus, TaskCardTitle, TaskChip, TaskClosedIcon, TaskDndProvider, TaskDoneIcon, TaskDragOverlay, TaskDraggable, TaskDropPlaceholder, TaskDropZone, TaskInProgressIcon, TaskInReviewIcon, TaskListRoot, TaskLoadingList, TaskLoadingRow, TaskSection, TaskSectionBadge, TaskSectionChevron, TaskSectionCount, TaskSectionEmpty, TaskSectionHeading, TaskSectionItems, TaskSectionPanel, TaskSectionTrigger, TaskStatusBadge, TaskStatusIcon, TaskTodoIcon, TasksPanelEmpty, TasksPanelRoot, TasksPanelToolbar, TasksPanelToolbarFilters, TasksPanelToolbarGroup, TasksPanelToolbarLabel, TasksPanelToolbarNewTask, TasksPanelToolbarView, TasksPanelViewport, Text, TextHeading, TextLink, TextLinkExternalIcon, TextMono, TextSans, TextSelectionToolbar, TextSelectionToolbarButton, TextSelectionToolbarSeparator, Textarea, TextareaCounter, TextareaGroup, ThemeProvider, ThreadIcon, ThreadPanelActions, ThreadPanelBody, ThreadPanelContent, ThreadPanelFooter, ThreadPanelHeader, ThreadPanelOriginalMessage, ThreadPanelReplyCount, ThreadPanelReplySummary, ThreadPanelRoot, ThreadPanelSearch, ThreadPanelSearchCount, ThreadPanelSearchTrailing, ThreadPanelTitle, ThreadPanelTitleMeta, Timeline, TimelineContent, TimelineItem, TimelineTime, TimelineTitle, ToastAction, ToastActions, ToastArrow, ToastBody, ToastClose, ToastContent, ToastDescription, ToastIcon, ToastPortal, ToastPositioner, ToastProgress, ToastProvider, ToastRoot, ToastTitle, ToastViewport, ToggleGroup, ToggleGroupItem, ToggleGroupLabel, Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger, UnfollowArtifactIcon, UnfollowThreadIcon, VirtualList, WorkspaceButton, WorkspaceButtonName, buildMessageImageGalleryRows, buttonVariants, classifyMessageImageAspect, cn, createTextSelectionAnchor, createToastManager, getTextSelectionFocusRect, installInputModality, taskStatusSoft, taskStatusStrong, textLinkVariants, toast, useComposerSuggestions, useLocated, useOrderedTabs, useScrollAreaContainer, useScrollbarSize, useTheme, useToastManager };
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
* deeper down that grows also grows the child that holds it. A child whose
|
|
11
11
|
* box keeps its size while its content overflows it would not be seen.
|
|
12
12
|
*
|
|
13
|
+
* For a native scroller that can't be a ScrollArea: a ScrollArea hides the
|
|
14
|
+
* native scrollbar and its own takes no room, so it needs none of this.
|
|
15
|
+
*
|
|
13
16
|
* Returns a ref callback for the scroller.
|
|
14
17
|
*/
|
|
15
18
|
export declare function useScrollbarSize<E extends HTMLElement>(): (el: E | null) => void;
|
|
@@ -11,6 +11,9 @@ import { useCallback, useRef } from "react";
|
|
|
11
11
|
* deeper down that grows also grows the child that holds it. A child whose
|
|
12
12
|
* box keeps its size while its content overflows it would not be seen.
|
|
13
13
|
*
|
|
14
|
+
* For a native scroller that can't be a ScrollArea: a ScrollArea hides the
|
|
15
|
+
* native scrollbar and its own takes no room, so it needs none of this.
|
|
16
|
+
*
|
|
14
17
|
* Returns a ref callback for the scroller.
|
|
15
18
|
*/
|
|
16
19
|
function useScrollbarSize() {
|