@botiverse/raft-ui 0.63.0 → 0.64.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 +29 -0
- package/dist/components/app-link-card/app-link-card.d.mts +56 -0
- package/dist/components/app-link-card/app-link-card.mjs +207 -0
- package/dist/components/app-link-card/index.d.mts +2 -0
- package/dist/components/button/button-split.d.mts +38 -0
- package/dist/components/button/button-split.mjs +119 -0
- package/dist/components/button/index.d.mts +2 -1
- package/dist/components/comment/comment-margin.mjs +2 -1
- package/dist/fonts.css +20 -17
- package/dist/wip.d.mts +5 -1
- package/dist/wip.mjs +3 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## [0.64.0](https://github.com/botiverse/raft-design/compare/v0.63.1...v0.64.0) (2026-11-05)
|
|
2
|
+
|
|
3
|
+
### Added
|
|
4
|
+
|
|
5
|
+
- **ButtonSplit**, **ButtonSplitMain** and **ButtonSplitMenu** (from `@botiverse/raft-ui/wip`): a `primary` or `default` Button with its ▾ menu, one shape in two parts. The parts touch and share one `radius-control` outline, the menu part's start border divides them, and each part hovers, presses, focuses and disables on its own; `disabled` on the group disables both. ([#1009](https://github.com/botiverse/raft-design/pull/1009))
|
|
6
|
+
- Why: Raft Chat's Members header needs Create agent with a ▾ for Take over a local session and Connect an external agent (cindyz, #triage:36bfa2f8; rule in [#1008](https://github.com/botiverse/raft-design/pull/1008)), and raft-ui only had `PanelSplitAction`, the frameless split of a panel header.
|
|
7
|
+
- Affects: nothing until used.
|
|
8
|
+
- Docs: https://raft-design.botiverse.build/components/button/#split-buttons
|
|
9
|
+
- **AppLinkCard** and its parts (from `@botiverse/raft-ui/wip`): an app link's card drawn in the message itself, after the link's paragraph, where the app's answer lists one (protocol version 3: a `card` item with `placement: "block"` in `items`). The link is never replaced: it stays a chip when the answer lists `inline`, and the author's plain link when it doesn't. `AppLinkCardHeader` (with `AppLinkCardIcon`, `AppLinkCardName` and `AppLinkCardHost`) is Raft's row naming the app; `AppLinkCardBody`, `AppLinkCardEyebrow`, `AppLinkCardTitle` and `AppLinkCardMeta` are the item, as on the hover card, and the title holds a link that opens the item; `AppLinkCardActions` holds at most two of the app's buttons and ⋯ for the rest, where an Open link goes; `AppLinkCardPlaceholder` is the card's size while a cached answer loads. 400px wide, the message's width in the phone layout. Navigation's App links now say what each item of an answer draws, in the list's order, with nothing inferred. ([#1010](https://github.com/botiverse/raft-design/pull/1010))
|
|
10
|
+
- Why: a card whose buttons matter, such as a Stamp approval, could be acted on only by hovering its chip on desktop, and not at all on a phone. The app lists every way its link is drawn, a chip, a hover card or a block card, as artin decided in #proj-raft-ui:d3528715 after the prototype (https://app.raft.build/artifacts/Q6r36on3znYNHnSbczSH3S); AppFather defined version 3 (#proj-raft-ui:46e9d07e and 8051e1a8). Tenny asked that Raft always draw the app's name and icon in its own frame.
|
|
11
|
+
- Affects: nothing until a product draws one. PreviewCard is untouched.
|
|
12
|
+
- Docs: https://raft-design.botiverse.build/components/app-link-card/ and https://raft-design.botiverse.build/patterns/navigation/#what-an-apps-answer-lists
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- **CommentMarginItem**: a `CommentMargin` renders its cards where the browser has no `ResizeObserver` (jsdom, some embedded webviews) instead of throwing. Each card keeps the height it had when placed. ([#1007](https://github.com/botiverse/raft-design/pull/1007))
|
|
17
|
+
- Why: the same gap #996 closed in `useCommentMarginFits`; slock's Artifact viewer works around it today by not drawing the margin there (Remy, slock #13062).
|
|
18
|
+
- Affects: only environments without `ResizeObserver`; there a card that grows after it is placed doesn't push the cards below it.
|
|
19
|
+
- Docs: https://raft-design.botiverse.build/components/comment/
|
|
20
|
+
|
|
21
|
+
## [0.63.1](https://github.com/botiverse/raft-design/compare/v0.63.0...v0.63.1) (2026-11-05)
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **Fonts**: Cyrillic text no longer shows with its letters spaced apart. The sans and heading stacks try Arial and Helvetica Neue before the CJK faces. ([#994](https://github.com/botiverse/raft-design/pull/994))
|
|
26
|
+
- Why: Space Grotesk has no Cyrillic, so Russian and Ukrainian fell through to the CJK faces, whose Cyrillic glyphs are fullwidth (Hands #155, artin, #triage:83068786).
|
|
27
|
+
- Affects: only characters Space Grotesk lacks (Cyrillic, Greek and a few symbols such as arrows), on every page language. Latin and CJK text keeps its faces.
|
|
28
|
+
- Docs: https://raft-design.botiverse.build/foundations/typography/
|
|
29
|
+
|
|
1
30
|
## [0.63.0](https://github.com/botiverse/raft-design/compare/v0.62.0...v0.63.0) (2026-11-05)
|
|
2
31
|
|
|
3
32
|
### Added
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ComponentPropsWithRef } from "react";
|
|
2
|
+
//#region src/components/app-link-card/app-link-card.d.ts
|
|
3
|
+
export type AppLinkCardProps = ComponentPropsWithRef<"div">;
|
|
4
|
+
/**
|
|
5
|
+
* An app link's card drawn in the message, after the link's paragraph, where
|
|
6
|
+
* the app's answer lists one (a `card` item with `placement: "block"`):
|
|
7
|
+
* Raft's header with the app's identity, the item, and buttons that work by
|
|
8
|
+
* keyboard and touch. It never replaces the link. A `group`: label it with
|
|
9
|
+
* `aria-labelledby` pointing at its `AppLinkCardTitle`, so someone who tabs
|
|
10
|
+
* to one of its buttons hears which item the button acts on.
|
|
11
|
+
*/
|
|
12
|
+
export declare function AppLinkCard({ className, ...props }: AppLinkCardProps): import("react").JSX.Element;
|
|
13
|
+
export type AppLinkCardPlaceholderProps = ComponentPropsWithRef<"div">;
|
|
14
|
+
/**
|
|
15
|
+
* The card's size while Raft fetches an answer it already knows lists a
|
|
16
|
+
* block card. Put the `AppLinkCardHeader` in it when the app is known; the item's
|
|
17
|
+
* lines and a button follow, as gray bars.
|
|
18
|
+
*/
|
|
19
|
+
export declare function AppLinkCardPlaceholder({ className, children, ...props }: AppLinkCardPlaceholderProps): import("react").JSX.Element;
|
|
20
|
+
export type AppLinkCardHeaderProps = ComponentPropsWithRef<"div">;
|
|
21
|
+
/** Raft's row at the top: `AppLinkCardIcon`, `AppLinkCardName`, then `AppLinkCardHost`. */
|
|
22
|
+
export declare function AppLinkCardHeader({ className, ...props }: AppLinkCardHeaderProps): import("react").JSX.Element;
|
|
23
|
+
export type AppLinkCardIconProps = ComponentPropsWithRef<"span">;
|
|
24
|
+
/** The app's registered icon, the image Raft stores and serves: one child at 16px. */
|
|
25
|
+
export declare function AppLinkCardIcon({ className, ...props }: AppLinkCardIconProps): import("react").JSX.Element;
|
|
26
|
+
export type AppLinkCardNameProps = ComponentPropsWithRef<"span">;
|
|
27
|
+
/** The app's name as Raft stores it. One line, truncated. */
|
|
28
|
+
export declare function AppLinkCardName({ className, ...props }: AppLinkCardNameProps): import("react").JSX.Element;
|
|
29
|
+
export type AppLinkCardHostProps = ComponentPropsWithRef<"span">;
|
|
30
|
+
/**
|
|
31
|
+
* The link's host, after a "·". When it doesn't fit it loses its start, so
|
|
32
|
+
* the end, which says where the link goes, stays.
|
|
33
|
+
*/
|
|
34
|
+
export declare function AppLinkCardHost({ className, children, ...props }: AppLinkCardHostProps): import("react").JSX.Element;
|
|
35
|
+
export type AppLinkCardBodyProps = ComponentPropsWithRef<"div">;
|
|
36
|
+
/** The item: `AppLinkCardEyebrow`, `AppLinkCardTitle`, `AppLinkCardMeta`, in that order. */
|
|
37
|
+
export declare function AppLinkCardBody({ className, ...props }: AppLinkCardBodyProps): import("react").JSX.Element;
|
|
38
|
+
export type AppLinkCardEyebrowProps = ComponentPropsWithRef<"p">;
|
|
39
|
+
/** The app's id for the item, above the title. One line, truncated. */
|
|
40
|
+
export declare function AppLinkCardEyebrow({ className, ...props }: AppLinkCardEyebrowProps): import("react").JSX.Element;
|
|
41
|
+
export type AppLinkCardTitleProps = ComponentPropsWithRef<"p">;
|
|
42
|
+
/**
|
|
43
|
+
* The app's title for the item, up to 2 lines, then an ellipsis. Put a link
|
|
44
|
+
* to the item in it: the title opens the item, in the title's ink.
|
|
45
|
+
*/
|
|
46
|
+
export declare function AppLinkCardTitle({ className, ...props }: AppLinkCardTitleProps): import("react").JSX.Element;
|
|
47
|
+
export type AppLinkCardMetaProps = ComponentPropsWithRef<"div">;
|
|
48
|
+
/** One state in a neutral Badge, then muted details. Wraps when it runs out of room. */
|
|
49
|
+
export declare function AppLinkCardMeta({ className, ...props }: AppLinkCardMetaProps): import("react").JSX.Element;
|
|
50
|
+
export type AppLinkCardActionsProps = ComponentPropsWithRef<"div">;
|
|
51
|
+
/**
|
|
52
|
+
* The app's buttons at the card's bottom end: at most two, the bordered one
|
|
53
|
+
* last, with a More menu (⋯) to their left for the rest.
|
|
54
|
+
*/
|
|
55
|
+
export declare function AppLinkCardActions({ className, ...props }: AppLinkCardActionsProps): import("react").JSX.Element;
|
|
56
|
+
//#endregion
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { tv } from "../../lib/tv.mjs";
|
|
2
|
+
import { messageEmbed } from "../message-embed/message-embed.recipe.mjs";
|
|
3
|
+
import { Skeleton } from "../skeleton/skeleton.mjs";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/app-link-card/app-link-card.tsx
|
|
6
|
+
const appLinkCard = tv({ slots: {
|
|
7
|
+
root: ["flex w-full max-w-[400px] min-w-0 flex-col max-md:max-w-none", "my-2 first:mt-0 last:mb-0"],
|
|
8
|
+
header: [
|
|
9
|
+
"flex min-w-0 items-center gap-1.5",
|
|
10
|
+
"border-b border-line-hairline px-4 py-2",
|
|
11
|
+
"font-sans text-caption text-foreground-muted"
|
|
12
|
+
],
|
|
13
|
+
icon: ["inline-flex size-4 shrink-0 items-center justify-center", "*:size-full *:shrink-0 [&>img]:rounded-[2px] [&>img]:object-cover"],
|
|
14
|
+
name: ["min-w-0 truncate", "font-semibold text-foreground"],
|
|
15
|
+
host: ["flex min-w-0 items-baseline", "before:shrink-0 before:pe-1.5 before:content-['·']"],
|
|
16
|
+
hostText: ["min-w-0 truncate"],
|
|
17
|
+
body: ["flex min-w-0 flex-col gap-1.5", "px-4 py-3 last:pb-4"],
|
|
18
|
+
eyebrow: ["m-0 truncate", "font-mono text-mono-meta text-foreground-muted"],
|
|
19
|
+
title: [
|
|
20
|
+
"m-0 line-clamp-2",
|
|
21
|
+
"font-sans text-headline font-bold text-foreground",
|
|
22
|
+
"[&_a]:rounded-[2px] [&_a]:decoration-[1.5px] [&_a]:underline-offset-[3px] [&_a]:hover:underline",
|
|
23
|
+
"[&_a]:outline-none [&_a]:focus-visible:shadow-focus"
|
|
24
|
+
],
|
|
25
|
+
meta: ["flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1", "m-0 font-sans text-callout text-foreground-muted"],
|
|
26
|
+
actions: ["flex flex-wrap items-center justify-end gap-2", "px-4 pb-3 last:pb-4"],
|
|
27
|
+
placeholderLine: ["flex h-lh items-center"],
|
|
28
|
+
placeholderButton: ["h-8 w-28 rounded-control"]
|
|
29
|
+
} });
|
|
30
|
+
function frame(className) {
|
|
31
|
+
const { root } = appLinkCard();
|
|
32
|
+
return messageEmbed().root({ className: root({ className }) });
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* An app link's card drawn in the message, after the link's paragraph, where
|
|
36
|
+
* the app's answer lists one (a `card` item with `placement: "block"`):
|
|
37
|
+
* Raft's header with the app's identity, the item, and buttons that work by
|
|
38
|
+
* keyboard and touch. It never replaces the link. A `group`: label it with
|
|
39
|
+
* `aria-labelledby` pointing at its `AppLinkCardTitle`, so someone who tabs
|
|
40
|
+
* to one of its buttons hears which item the button acts on.
|
|
41
|
+
*/
|
|
42
|
+
function AppLinkCard({ className, ...props }) {
|
|
43
|
+
return /* @__PURE__ */ jsx("div", {
|
|
44
|
+
role: "group",
|
|
45
|
+
"data-slot": "app-link-card",
|
|
46
|
+
className: frame(className),
|
|
47
|
+
...props
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The card's size while Raft fetches an answer it already knows lists a
|
|
52
|
+
* block card. Put the `AppLinkCardHeader` in it when the app is known; the item's
|
|
53
|
+
* lines and a button follow, as gray bars.
|
|
54
|
+
*/
|
|
55
|
+
function AppLinkCardPlaceholder({ className, children, ...props }) {
|
|
56
|
+
const { body, eyebrow, title, meta, actions, placeholderLine, placeholderButton } = appLinkCard();
|
|
57
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
58
|
+
"data-slot": "app-link-card-placeholder",
|
|
59
|
+
"aria-busy": "true",
|
|
60
|
+
className: frame(className),
|
|
61
|
+
...props,
|
|
62
|
+
children: [
|
|
63
|
+
children,
|
|
64
|
+
/* @__PURE__ */ jsxs("div", {
|
|
65
|
+
"aria-hidden": "true",
|
|
66
|
+
className: body(),
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ jsx("div", {
|
|
69
|
+
className: eyebrow({ className: placeholderLine() }),
|
|
70
|
+
children: /* @__PURE__ */ jsx(Skeleton, {
|
|
71
|
+
variant: "line",
|
|
72
|
+
className: "w-28"
|
|
73
|
+
})
|
|
74
|
+
}),
|
|
75
|
+
/* @__PURE__ */ jsxs("div", {
|
|
76
|
+
className: title({ className: "line-clamp-none" }),
|
|
77
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
78
|
+
className: placeholderLine(),
|
|
79
|
+
children: /* @__PURE__ */ jsx(Skeleton, {
|
|
80
|
+
variant: "line",
|
|
81
|
+
className: "w-full"
|
|
82
|
+
})
|
|
83
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
84
|
+
className: placeholderLine(),
|
|
85
|
+
children: /* @__PURE__ */ jsx(Skeleton, {
|
|
86
|
+
variant: "line",
|
|
87
|
+
className: "w-2/3"
|
|
88
|
+
})
|
|
89
|
+
})]
|
|
90
|
+
}),
|
|
91
|
+
/* @__PURE__ */ jsx("div", {
|
|
92
|
+
className: meta({ className: placeholderLine() }),
|
|
93
|
+
children: /* @__PURE__ */ jsx(Skeleton, {
|
|
94
|
+
variant: "line",
|
|
95
|
+
className: "w-40"
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
]
|
|
99
|
+
}),
|
|
100
|
+
/* @__PURE__ */ jsx("div", {
|
|
101
|
+
"aria-hidden": "true",
|
|
102
|
+
className: actions(),
|
|
103
|
+
children: /* @__PURE__ */ jsx(Skeleton, { className: placeholderButton() })
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** Raft's row at the top: `AppLinkCardIcon`, `AppLinkCardName`, then `AppLinkCardHost`. */
|
|
109
|
+
function AppLinkCardHeader({ className, ...props }) {
|
|
110
|
+
const { header } = appLinkCard();
|
|
111
|
+
return /* @__PURE__ */ jsx("div", {
|
|
112
|
+
"data-slot": "app-link-card-header",
|
|
113
|
+
className: header({ className }),
|
|
114
|
+
...props
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** The app's registered icon, the image Raft stores and serves: one child at 16px. */
|
|
118
|
+
function AppLinkCardIcon({ className, ...props }) {
|
|
119
|
+
const { icon } = appLinkCard();
|
|
120
|
+
return /* @__PURE__ */ jsx("span", {
|
|
121
|
+
"data-slot": "app-link-card-icon",
|
|
122
|
+
className: icon({ className }),
|
|
123
|
+
...props
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/** The app's name as Raft stores it. One line, truncated. */
|
|
127
|
+
function AppLinkCardName({ className, ...props }) {
|
|
128
|
+
const { name } = appLinkCard();
|
|
129
|
+
return /* @__PURE__ */ jsx("span", {
|
|
130
|
+
"data-slot": "app-link-card-name",
|
|
131
|
+
className: name({ className }),
|
|
132
|
+
...props
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The link's host, after a "·". When it doesn't fit it loses its start, so
|
|
137
|
+
* the end, which says where the link goes, stays.
|
|
138
|
+
*/
|
|
139
|
+
function AppLinkCardHost({ className, children, ...props }) {
|
|
140
|
+
const { host, hostText } = appLinkCard();
|
|
141
|
+
return /* @__PURE__ */ jsx("span", {
|
|
142
|
+
"data-slot": "app-link-card-host",
|
|
143
|
+
className: host({ className }),
|
|
144
|
+
...props,
|
|
145
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
146
|
+
dir: "rtl",
|
|
147
|
+
className: hostText(),
|
|
148
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
149
|
+
dir: "ltr",
|
|
150
|
+
children
|
|
151
|
+
})
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/** The item: `AppLinkCardEyebrow`, `AppLinkCardTitle`, `AppLinkCardMeta`, in that order. */
|
|
156
|
+
function AppLinkCardBody({ className, ...props }) {
|
|
157
|
+
const { body } = appLinkCard();
|
|
158
|
+
return /* @__PURE__ */ jsx("div", {
|
|
159
|
+
"data-slot": "app-link-card-body",
|
|
160
|
+
className: body({ className }),
|
|
161
|
+
...props
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/** The app's id for the item, above the title. One line, truncated. */
|
|
165
|
+
function AppLinkCardEyebrow({ className, ...props }) {
|
|
166
|
+
const { eyebrow } = appLinkCard();
|
|
167
|
+
return /* @__PURE__ */ jsx("p", {
|
|
168
|
+
"data-slot": "app-link-card-eyebrow",
|
|
169
|
+
className: eyebrow({ className }),
|
|
170
|
+
...props
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The app's title for the item, up to 2 lines, then an ellipsis. Put a link
|
|
175
|
+
* to the item in it: the title opens the item, in the title's ink.
|
|
176
|
+
*/
|
|
177
|
+
function AppLinkCardTitle({ className, ...props }) {
|
|
178
|
+
const { title } = appLinkCard();
|
|
179
|
+
return /* @__PURE__ */ jsx("p", {
|
|
180
|
+
"data-slot": "app-link-card-title",
|
|
181
|
+
className: title({ className }),
|
|
182
|
+
...props
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/** One state in a neutral Badge, then muted details. Wraps when it runs out of room. */
|
|
186
|
+
function AppLinkCardMeta({ className, ...props }) {
|
|
187
|
+
const { meta } = appLinkCard();
|
|
188
|
+
return /* @__PURE__ */ jsx("div", {
|
|
189
|
+
"data-slot": "app-link-card-meta",
|
|
190
|
+
className: meta({ className }),
|
|
191
|
+
...props
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* The app's buttons at the card's bottom end: at most two, the bordered one
|
|
196
|
+
* last, with a More menu (⋯) to their left for the rest.
|
|
197
|
+
*/
|
|
198
|
+
function AppLinkCardActions({ className, ...props }) {
|
|
199
|
+
const { actions } = appLinkCard();
|
|
200
|
+
return /* @__PURE__ */ jsx("div", {
|
|
201
|
+
"data-slot": "app-link-card-actions",
|
|
202
|
+
className: actions({ className }),
|
|
203
|
+
...props
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
//#endregion
|
|
207
|
+
export { AppLinkCard, AppLinkCardActions, AppLinkCardBody, AppLinkCardEyebrow, AppLinkCardHeader, AppLinkCardHost, AppLinkCardIcon, AppLinkCardMeta, AppLinkCardName, AppLinkCardPlaceholder, AppLinkCardTitle };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { AppLinkCard, AppLinkCardActions, AppLinkCardActionsProps, AppLinkCardBody, AppLinkCardBodyProps, AppLinkCardEyebrow, AppLinkCardEyebrowProps, AppLinkCardHeader, AppLinkCardHeaderProps, AppLinkCardHost, AppLinkCardHostProps, AppLinkCardIcon, AppLinkCardIconProps, AppLinkCardMeta, AppLinkCardMetaProps, AppLinkCardName, AppLinkCardNameProps, AppLinkCardPlaceholder, AppLinkCardPlaceholderProps, AppLinkCardTitle, AppLinkCardTitleProps } from "./app-link-card.mjs";
|
|
2
|
+
export { AppLinkCard, AppLinkCardActions, type AppLinkCardActionsProps, AppLinkCardBody, type AppLinkCardBodyProps, AppLinkCardEyebrow, type AppLinkCardEyebrowProps, AppLinkCardHeader, type AppLinkCardHeaderProps, AppLinkCardHost, type AppLinkCardHostProps, AppLinkCardIcon, type AppLinkCardIconProps, AppLinkCardMeta, type AppLinkCardMetaProps, AppLinkCardName, type AppLinkCardNameProps, AppLinkCardPlaceholder, type AppLinkCardPlaceholderProps, AppLinkCardTitle, type AppLinkCardTitleProps };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DataAttributes } from "../../lib/data-attributes.mjs";
|
|
2
|
+
import { ButtonProps } from "./button.mjs";
|
|
3
|
+
import { ComponentProps } from "react";
|
|
4
|
+
//#region src/components/button/button-split.d.ts
|
|
5
|
+
/** The Button variants a split button takes: the filled ones and the bordered one. */
|
|
6
|
+
export type ButtonSplitVariant = "primary" | "default" | "warning" | "danger";
|
|
7
|
+
/** The Button sizes a split button takes. */
|
|
8
|
+
export type ButtonSplitSize = "md" | "lg";
|
|
9
|
+
export type ButtonSplitProps = ComponentProps<"div"> & DataAttributes & {
|
|
10
|
+
/** Disables both parts. Either part can also be disabled on its own. */
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* A Button with a menu beside it, such as Create agent and its ▾: a
|
|
15
|
+
* `ButtonSplitMain`, then a `ButtonSplitMenu` as the trigger of a DropdownMenu.
|
|
16
|
+
* The two parts touch and read as one button. A `role="group"`: name it with
|
|
17
|
+
* `aria-label`, not with the main part's name. For a frameless split in a
|
|
18
|
+
* panel header, use `PanelSplitAction`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function ButtonSplit({ disabled, className, ...props }: ButtonSplitProps): import("react").JSX.Element;
|
|
21
|
+
type ButtonSplitPartProps = Omit<ButtonProps, "variant" | "size"> & {
|
|
22
|
+
/** The Button variant; give both parts the same one. */
|
|
23
|
+
variant?: ButtonSplitVariant;
|
|
24
|
+
/** The Button size; give both parts the same one. */
|
|
25
|
+
size?: ButtonSplitSize;
|
|
26
|
+
};
|
|
27
|
+
export type ButtonSplitMainProps = ButtonSplitPartProps;
|
|
28
|
+
/** The action of a split button: a Button, rounded only on its start side. */
|
|
29
|
+
export declare function ButtonSplitMain({ variant, size, disabled, className, ...props }: ButtonSplitMainProps): import("react").JSX.Element;
|
|
30
|
+
export type ButtonSplitMenuProps = ButtonSplitPartProps;
|
|
31
|
+
/**
|
|
32
|
+
* The narrow part of a split button that opens its menu, with a chevron by
|
|
33
|
+
* default; its start border is the divider. Render it as the trigger of a
|
|
34
|
+
* DropdownMenu:
|
|
35
|
+
* `<DropdownMenuTrigger render={<ButtonSplitMenu aria-label="More ways to create an agent" />} />`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function ButtonSplitMenu({ variant, size, disabled, className, children, ...props }: ButtonSplitMenuProps): import("react").JSX.Element;
|
|
38
|
+
//#endregion
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { tv } from "../../lib/tv.mjs";
|
|
2
|
+
import { Button } from "./button.mjs";
|
|
3
|
+
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import { createContext, useCallback, useContext, useLayoutEffect, useMemo, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/button/button-split.tsx
|
|
7
|
+
const buttonSplit = tv({ base: [
|
|
8
|
+
"relative isolate inline-flex shrink-0 items-stretch",
|
|
9
|
+
"rounded-control ring-sticker-edge",
|
|
10
|
+
"data-sticker-edge:ring-[1.5px]"
|
|
11
|
+
] });
|
|
12
|
+
const buttonSplitMain = tv({ base: ["rounded-e-none border-e-0", "ring-0 focus-visible:z-1"] });
|
|
13
|
+
const buttonSplitMenu = tv({
|
|
14
|
+
base: [
|
|
15
|
+
"min-w-0 rounded-s-none px-0",
|
|
16
|
+
"ring-0 focus-visible:z-1",
|
|
17
|
+
"after:inset-s-0"
|
|
18
|
+
],
|
|
19
|
+
variants: {
|
|
20
|
+
variant: {
|
|
21
|
+
primary: "data-popup-open:overlay-sticker-medium",
|
|
22
|
+
warning: "data-popup-open:overlay-sticker-medium",
|
|
23
|
+
danger: "data-popup-open:overlay-sticker-medium",
|
|
24
|
+
default: "data-popup-open:overlay-medium"
|
|
25
|
+
},
|
|
26
|
+
size: {
|
|
27
|
+
md: ["w-7", "after:-inset-e-[calc(--spacing(4)+1.5px)]"],
|
|
28
|
+
lg: ["w-9 md:pointer-fine:w-7", "after:-inset-e-[calc(--spacing(2)+1.5px)] md:pointer-fine:after:-inset-e-[calc(--spacing(4)+1.5px)]"]
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
variant: "default",
|
|
33
|
+
size: "md"
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
const STICKERS = /* @__PURE__ */ new Set([
|
|
37
|
+
"primary",
|
|
38
|
+
"warning",
|
|
39
|
+
"danger"
|
|
40
|
+
]);
|
|
41
|
+
const ButtonSplitContext = createContext({
|
|
42
|
+
disabled: false,
|
|
43
|
+
registerStickerPart: () => () => {}
|
|
44
|
+
});
|
|
45
|
+
/** An enabled sticker part asks its group to draw the die-cut edge while it is mounted. */
|
|
46
|
+
function useStickerEdge(active) {
|
|
47
|
+
const { registerStickerPart } = useContext(ButtonSplitContext);
|
|
48
|
+
useLayoutEffect(() => active ? registerStickerPart() : void 0, [active, registerStickerPart]);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* A Button with a menu beside it, such as Create agent and its ▾: a
|
|
52
|
+
* `ButtonSplitMain`, then a `ButtonSplitMenu` as the trigger of a DropdownMenu.
|
|
53
|
+
* The two parts touch and read as one button. A `role="group"`: name it with
|
|
54
|
+
* `aria-label`, not with the main part's name. For a frameless split in a
|
|
55
|
+
* panel header, use `PanelSplitAction`.
|
|
56
|
+
*/
|
|
57
|
+
function ButtonSplit({ disabled = false, className, ...props }) {
|
|
58
|
+
const [stickerParts, setStickerParts] = useState(0);
|
|
59
|
+
const registerStickerPart = useCallback(() => {
|
|
60
|
+
setStickerParts((count) => count + 1);
|
|
61
|
+
return () => setStickerParts((count) => count - 1);
|
|
62
|
+
}, []);
|
|
63
|
+
const context = useMemo(() => ({
|
|
64
|
+
disabled,
|
|
65
|
+
registerStickerPart
|
|
66
|
+
}), [disabled, registerStickerPart]);
|
|
67
|
+
return /* @__PURE__ */ jsx(ButtonSplitContext.Provider, {
|
|
68
|
+
value: context,
|
|
69
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
70
|
+
role: "group",
|
|
71
|
+
...props,
|
|
72
|
+
"data-slot": "button-split",
|
|
73
|
+
"data-sticker-edge": stickerParts > 0 ? "" : void 0,
|
|
74
|
+
className: buttonSplit({ className })
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/** The action of a split button: a Button, rounded only on its start side. */
|
|
79
|
+
function ButtonSplitMain({ variant = "default", size = "md", disabled, className, ...props }) {
|
|
80
|
+
const group = useContext(ButtonSplitContext);
|
|
81
|
+
const isDisabled = disabled || group.disabled;
|
|
82
|
+
useStickerEdge(STICKERS.has(variant) && !isDisabled && !props.loading);
|
|
83
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
84
|
+
...props,
|
|
85
|
+
variant,
|
|
86
|
+
size,
|
|
87
|
+
disabled: isDisabled,
|
|
88
|
+
"data-split-part": "main",
|
|
89
|
+
"data-split-sticker": STICKERS.has(variant) ? "" : void 0,
|
|
90
|
+
className: buttonSplitMain({ className })
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The narrow part of a split button that opens its menu, with a chevron by
|
|
95
|
+
* default; its start border is the divider. Render it as the trigger of a
|
|
96
|
+
* DropdownMenu:
|
|
97
|
+
* `<DropdownMenuTrigger render={<ButtonSplitMenu aria-label="More ways to create an agent" />} />`.
|
|
98
|
+
*/
|
|
99
|
+
function ButtonSplitMenu({ variant = "default", size = "md", disabled, className, children, ...props }) {
|
|
100
|
+
const group = useContext(ButtonSplitContext);
|
|
101
|
+
const isDisabled = disabled || group.disabled;
|
|
102
|
+
useStickerEdge(STICKERS.has(variant) && !isDisabled && !props.loading);
|
|
103
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
104
|
+
...props,
|
|
105
|
+
variant,
|
|
106
|
+
size,
|
|
107
|
+
disabled: isDisabled,
|
|
108
|
+
"data-split-part": "menu",
|
|
109
|
+
"data-split-sticker": STICKERS.has(variant) ? "" : void 0,
|
|
110
|
+
className: buttonSplitMenu({
|
|
111
|
+
variant,
|
|
112
|
+
size,
|
|
113
|
+
className
|
|
114
|
+
}),
|
|
115
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": true })
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
//#endregion
|
|
119
|
+
export { ButtonSplit, ButtonSplitMain, ButtonSplitMenu, buttonSplit, buttonSplitMain, buttonSplitMenu };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { Button, ButtonProps, ButtonSize, DeprecatedButtonSize, buttonVariants } from "./button.mjs";
|
|
2
|
-
|
|
2
|
+
import { ButtonSplit, ButtonSplitMain, ButtonSplitMainProps, ButtonSplitMenu, ButtonSplitMenuProps, ButtonSplitProps, ButtonSplitSize, ButtonSplitVariant } from "./button-split.mjs";
|
|
3
|
+
export { Button, type ButtonProps, type ButtonSize, ButtonSplit, ButtonSplitMain, type ButtonSplitMainProps, ButtonSplitMenu, type ButtonSplitMenuProps, type ButtonSplitProps, type ButtonSplitSize, type ButtonSplitVariant, type DeprecatedButtonSize, buttonVariants };
|
|
@@ -51,6 +51,8 @@ function CommentMargin({ className, render, style, gap = 8, ...props }) {
|
|
|
51
51
|
}, []);
|
|
52
52
|
const place = useCallback((id, placement) => patch(id, placement), [patch]);
|
|
53
53
|
const observe = useCallback((id, element) => {
|
|
54
|
+
patch(id, { height: heightOf(element) });
|
|
55
|
+
if (typeof ResizeObserver === "undefined") return () => {};
|
|
54
56
|
observer.current ??= new ResizeObserver((records) => {
|
|
55
57
|
for (const record of records) {
|
|
56
58
|
const target = observed.current.get(record.target);
|
|
@@ -58,7 +60,6 @@ function CommentMargin({ className, render, style, gap = 8, ...props }) {
|
|
|
58
60
|
}
|
|
59
61
|
});
|
|
60
62
|
observed.current.set(element, id);
|
|
61
|
-
patch(id, { height: heightOf(element) });
|
|
62
63
|
observer.current.observe(element);
|
|
63
64
|
return () => {
|
|
64
65
|
observer.current?.unobserve(element);
|
package/dist/fonts.css
CHANGED
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300..700&family=Space+Mono:wght@400;700&display=swap");
|
|
2
2
|
|
|
3
3
|
/* Raft Design System: Space Grotesk is what people say, Space Mono is what
|
|
4
|
-
machines write.
|
|
4
|
+
machines write. Arial / Helvetica Neue cover Cyrillic before the CJK faces,
|
|
5
|
+
whose Cyrillic glyphs can have wide advances. Keep system-ui after the CJK
|
|
6
|
+
families so it does not override their language-specific glyph shapes.
|
|
7
|
+
CJK falls back to PingFang / Source Han Sans; a Traditional
|
|
5
8
|
Chinese, Japanese or Korean page (<html lang="zh-TW|ja|ko">) falls back to its
|
|
6
9
|
own faces first, so characters keep Traditional or Japanese glyph shapes and
|
|
7
10
|
Hangul a Korean face. */
|
|
8
11
|
:where(:root) {
|
|
9
12
|
--heading-font:
|
|
10
|
-
"Space Grotesk", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
|
|
11
|
-
system-ui, sans-serif;
|
|
13
|
+
"Space Grotesk", Arial, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
|
|
14
|
+
"Noto Sans SC", system-ui, sans-serif;
|
|
12
15
|
--sans-font:
|
|
13
|
-
"Space Grotesk", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
|
|
14
|
-
system-ui, sans-serif;
|
|
16
|
+
"Space Grotesk", Arial, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
|
|
17
|
+
"Noto Sans SC", system-ui, sans-serif;
|
|
15
18
|
--mono-font: "Space Mono", ui-monospace, "SF Mono", Menlo, monospace;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
:where(:root:lang(zh-TW), :root:lang(zh-HK), :root:lang(zh-MO), :root:lang(zh-Hant)) {
|
|
19
22
|
--heading-font:
|
|
20
|
-
"Space Grotesk", "
|
|
21
|
-
"Noto Sans CJK TC", system-ui, sans-serif;
|
|
23
|
+
"Space Grotesk", Arial, "Helvetica Neue", "PingFang TC", "Microsoft JhengHei UI",
|
|
24
|
+
"Microsoft JhengHei", "Noto Sans TC", "Noto Sans CJK TC", system-ui, sans-serif;
|
|
22
25
|
--sans-font:
|
|
23
|
-
"Space Grotesk", "
|
|
24
|
-
"Noto Sans CJK TC", system-ui, sans-serif;
|
|
26
|
+
"Space Grotesk", Arial, "Helvetica Neue", "PingFang TC", "Microsoft JhengHei UI",
|
|
27
|
+
"Microsoft JhengHei", "Noto Sans TC", "Noto Sans CJK TC", system-ui, sans-serif;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
:where(:root:lang(ja)) {
|
|
28
31
|
--heading-font:
|
|
29
|
-
"Space Grotesk", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
|
30
|
-
"Noto Sans JP", "Noto Sans CJK JP", system-ui, sans-serif;
|
|
32
|
+
"Space Grotesk", Arial, "Helvetica Neue", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
|
33
|
+
"Yu Gothic UI", Meiryo, "Noto Sans JP", "Noto Sans CJK JP", system-ui, sans-serif;
|
|
31
34
|
--sans-font:
|
|
32
|
-
"Space Grotesk", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
|
33
|
-
"Noto Sans JP", "Noto Sans CJK JP", system-ui, sans-serif;
|
|
35
|
+
"Space Grotesk", Arial, "Helvetica Neue", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
|
|
36
|
+
"Yu Gothic UI", Meiryo, "Noto Sans JP", "Noto Sans CJK JP", system-ui, sans-serif;
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
:where(:root:lang(ko)) {
|
|
37
40
|
--heading-font:
|
|
38
|
-
"Space Grotesk", "Apple SD Gothic Neo", "Malgun Gothic",
|
|
39
|
-
system-ui, sans-serif;
|
|
41
|
+
"Space Grotesk", Arial, "Helvetica Neue", "Apple SD Gothic Neo", "Malgun Gothic",
|
|
42
|
+
"Noto Sans KR", "Noto Sans CJK KR", system-ui, sans-serif;
|
|
40
43
|
--sans-font:
|
|
41
|
-
"Space Grotesk", "Apple SD Gothic Neo", "Malgun Gothic",
|
|
42
|
-
system-ui, sans-serif;
|
|
44
|
+
"Space Grotesk", Arial, "Helvetica Neue", "Apple SD Gothic Neo", "Malgun Gothic",
|
|
45
|
+
"Noto Sans KR", "Noto Sans CJK KR", system-ui, sans-serif;
|
|
43
46
|
}
|
package/dist/wip.d.mts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { ButtonSplit, ButtonSplitMain, ButtonSplitMainProps, ButtonSplitMenu, ButtonSplitMenuProps, ButtonSplitProps, ButtonSplitSize, ButtonSplitVariant } from "./components/button/button-split.mjs";
|
|
2
|
+
import "./components/button/index.mjs";
|
|
1
3
|
import { Dialog, DialogClose, DialogFooterNote, DialogFooterNoteProps, DialogSheetBack, DialogSheetBackProps, DialogTrigger } from "./components/dialog/dialog.mjs";
|
|
2
4
|
import { DialogCommit, DialogCommitProps, DialogSheetContent, DialogSheetContentProps } from "./components/dialog/dialog-sheet.mjs";
|
|
3
5
|
import "./components/dialog/index.mjs";
|
|
@@ -59,6 +61,8 @@ import "./components/meter/index.mjs";
|
|
|
59
61
|
import { FilterChip, FilterChipLabel, FilterChipLabelProps, FilterChipProps, FilterChipRemove, FilterChipRemoveProps } from "./components/filter-chip/filter-chip.mjs";
|
|
60
62
|
import "./components/filter-chip/index.mjs";
|
|
61
63
|
import { OverlayLayerKind, OverlayLayerProvider, OverlayLayerProviderProps, useParentOverlayKind } from "./lib/overlay-depth.mjs";
|
|
64
|
+
import { AppLinkCard, AppLinkCardActions, AppLinkCardActionsProps, AppLinkCardBody, AppLinkCardBodyProps, AppLinkCardEyebrow, AppLinkCardEyebrowProps, AppLinkCardHeader, AppLinkCardHeaderProps, AppLinkCardHost, AppLinkCardHostProps, AppLinkCardIcon, AppLinkCardIconProps, AppLinkCardMeta, AppLinkCardMetaProps, AppLinkCardName, AppLinkCardNameProps, AppLinkCardPlaceholder, AppLinkCardPlaceholderProps, AppLinkCardTitle, AppLinkCardTitleProps } from "./components/app-link-card/app-link-card.mjs";
|
|
65
|
+
import "./components/app-link-card/index.mjs";
|
|
62
66
|
import { PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD, PullToRefreshState } from "./components/pull-to-refresh/pull-to-refresh-gesture.mjs";
|
|
63
67
|
import { PULL_TO_REFRESH_POINTER_QUERY, PullToRefresh, PullToRefreshPlatform, UsePullToRefreshOptions, usePullToRefresh } from "./components/pull-to-refresh/use-pull-to-refresh.mjs";
|
|
64
68
|
import { PullToRefreshIndicator, PullToRefreshIndicatorProps } from "./components/pull-to-refresh/pull-to-refresh-indicator.mjs";
|
|
@@ -69,4 +73,4 @@ import { SaveStatus, SaveStatusError, SaveStatusErrorProps, SaveStatusProps, Sav
|
|
|
69
73
|
import "./components/save-status/index.mjs";
|
|
70
74
|
import { TaskCompletionControl, TaskCompletionControlProps } from "./components/task-completion-control/task-completion-control.mjs";
|
|
71
75
|
import "./components/task-completion-control/index.mjs";
|
|
72
|
-
export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, AvatarGroupButton, type AvatarGroupButtonProps, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ChoiceList, type ChoiceListGroup, type ChoiceListItem, type ChoiceListMultipleProps, type ChoiceListProps, type ChoiceListSingleProps, ComboboxSelect, type ComboboxSelectGroup, type ComboboxSelectMessages, type ComboboxSelectOption, type ComboboxSelectProps, type ComboboxSelectSelection, type ComboboxSelectValue, CommentCard, CommentCardMeta, type CommentCardMetaProps, type CommentCardProps, CommentCardQuote, type CommentCardQuoteProps, CommentCardTrigger, type CommentCardTriggerProps, CommentEntry, CommentEntryAuthor, type CommentEntryAuthorProps, CommentEntryBody, type CommentEntryBodyProps, CommentEntryHeader, type CommentEntryHeaderProps, type CommentEntryProps, CommentEntryTime, type CommentEntryTimeProps, CommentMargin, CommentMarginItem, type CommentMarginItemProps, type CommentMarginLayout, type CommentMarginLayoutItem, type CommentMarginLayoutOptions, type CommentMarginProps, CommentMarker, type CommentMarkerProps, DEFAULT_DRAG_MESSAGES, DRAG_AUTO_SCROLL_ZONE_PX, DRAG_KEYBOARD_CODES, DRAG_KEYBOARD_OFFSET_PX, DRAG_LIFT_Z_INDEX, DRAG_SETTLE, DRAG_SIBLING_TRANSITION, DROP_GLIDE, DialogCommit, type DialogCommitProps, DialogFooterNote, type DialogFooterNoteProps, DialogSheetBack, type DialogSheetBackProps, DialogSheetContent, type DialogSheetContentProps, type DragAcrossLists, type DragAnnouncementSource, DragLift, type DragLiftProps, type DragListsItems, DragLiveRegion, type DragMessages, type DragNamed, type DragPlace, DragRefusalHint, type DragRefusalHintProps, DragRemeasure, type DragRemeasureProps, type DragSensorsOptions, DraggedSlot, type DraggedSlotProps, DropPlaceholder, type DropPlaceholderProps, DropdownMenuLinkItem, type DropdownMenuLinkItemProps, Ellipsis, type EllipsisProps, type EllipsisState, EllipsisToggle, type EllipsisToggleProps, FilterChip, FilterChipLabel, type FilterChipLabelProps, type FilterChipProps, FilterChipRemove, type FilterChipRemoveProps, type HoldThenMoveOptions, HoldThenMoveTouchSensor, InboxItemLeadingBadge, type InboxItemLeadingBadgeProps, InboxItemLine, type InboxItemLineProps, InboxItemListGroup, type InboxItemListGroupProps, InboxItemListHeading, type InboxItemListHeadingProps, InboxItemSkeleton, InboxItemSkeletonList, type InboxItemSkeletonListProps, type InboxItemSkeletonProps, InboxItemStatus, type InboxItemStatusProps, type KbdKeyName, KbdShortcut, type KbdShortcutProps, type KeyboardPlatform, LIFT_CLASS, ListRowSkeleton, type ListRowSkeletonProps, MOUSE_DRAG_DISTANCE_PX, MessageItemDelegatedAvatar, type MessageItemDelegatedAvatarProps, MessageItemDelegatedBy, MessageItemDelegatedByButton, type MessageItemDelegatedByButtonProps, MessageItemDelegatedByName, type MessageItemDelegatedByNameProps, type MessageItemDelegatedByProps, MessageListJumpControls, type MessageListJumpControlsProps, MessageListJumpPill, MessageListJumpPillDismiss, type MessageListJumpPillDismissProps, MessageListJumpPillGroup, type MessageListJumpPillGroupProps, type MessageListJumpPillProps, MessageQuotedPreviewAuthorDelegatedBy, type MessageQuotedPreviewAuthorDelegatedByProps, MessageReferenceIcon, type MessageReferenceIconProps, MessageReferenceReadMark, type MessageReferenceReadMarkProps, Meter, MeterHeader, type MeterHeaderProps, MeterIndicator, type MeterIndicatorProps, MeterLabel, type MeterLabelProps, type MeterProps, MeterTrack, type MeterTrackProps, MeterValue, type MeterValueProps, MobileNavServerItem, type MobileNavServerItemProps, MobileNavServerPopover, MobileNavServerPopoverContent, type MobileNavServerPopoverContentProps, MobileNavServerPopoverDestination, type MobileNavServerPopoverDestinationProps, MobileNavServerPopoverDestinations, type MobileNavServerPopoverDestinationsProps, MobileNavServerPopoverGroup, type MobileNavServerPopoverGroupProps, MobileNavServerPopoverList, type MobileNavServerPopoverListProps, type MobileNavServerPopoverProps, MobileNavServerPopoverRow, MobileNavServerPopoverRowBody, type MobileNavServerPopoverRowBodyProps, MobileNavServerPopoverRowDescription, type MobileNavServerPopoverRowDescriptionProps, MobileNavServerPopoverRowLabel, type MobileNavServerPopoverRowLabelProps, type MobileNavServerPopoverRowProps, ModeBar, ModeBarAction, type ModeBarActionProps, ModeBarContent, type ModeBarContentProps, ModeBarDescription, type ModeBarDescriptionProps, type ModeBarProps, ModeBarTitle, type ModeBarTitleProps, MouseOnlyPointerSensor, ORIGIN_OPACITY, type OverlayLayerKind, OverlayLayerProvider, type OverlayLayerProviderProps, PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_POINTER_QUERY, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD, PanelSplitAction, PanelSplitActionMain, type PanelSplitActionMainProps, PanelSplitActionMenu, type PanelSplitActionMenuProps, type PanelSplitActionProps, PanelSplitActionToggle, type PanelSplitActionToggleProps, PopoverActions, type PopoverActionsProps, PopoverBody, type PopoverBodyProps, PreviewCardActions, type PreviewCardActionsProps, PreviewCardBody, type PreviewCardBodyProps, PreviewCardEyebrow, type PreviewCardEyebrowProps, PreviewCardFooter, type PreviewCardFooterProps, PreviewCardMeta, type PreviewCardMetaProps, type PullToRefresh, PullToRefreshIndicator, type PullToRefreshIndicatorProps, type PullToRefreshPlatform, type PullToRefreshState, SaveStatus, SaveStatusError, type SaveStatusErrorProps, type SaveStatusProps, SaveStatusSaved, type SaveStatusSavedProps, TOUCH_DRAG_DISTANCE_PX, TOUCH_DRAG_HOLD_MS, TOUCH_DRAG_TOLERANCE_PX, type TableSort, TableSortButton, type TableSortButtonProps, TableSortableHead, type TableSortableHeadProps, TaskCompletionControl, type TaskCompletionControlProps, type UseCommentMarginFitsOptions, type UseDragListsOptions, type UsePullToRefreshOptions, cancelDrag, createDragAnnouncements, dragInstructions, dragListStrategy, dragMessages, keepGrabInside, listKeyboardCoordinates, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useDragAcrossLists, useDragAnnouncer, useDragLists, useDragSensors, useDragSiblingTransition, useHoldThenMoveTouchSensor, useKeyboardPlatform, useMouseOnlyPointerSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
|
|
76
|
+
export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, AppLinkCard, AppLinkCardActions, type AppLinkCardActionsProps, AppLinkCardBody, type AppLinkCardBodyProps, AppLinkCardEyebrow, type AppLinkCardEyebrowProps, AppLinkCardHeader, type AppLinkCardHeaderProps, AppLinkCardHost, type AppLinkCardHostProps, AppLinkCardIcon, type AppLinkCardIconProps, AppLinkCardMeta, type AppLinkCardMetaProps, AppLinkCardName, type AppLinkCardNameProps, AppLinkCardPlaceholder, type AppLinkCardPlaceholderProps, AppLinkCardTitle, type AppLinkCardTitleProps, AvatarGroupButton, type AvatarGroupButtonProps, ButtonSplit, ButtonSplitMain, type ButtonSplitMainProps, ButtonSplitMenu, type ButtonSplitMenuProps, type ButtonSplitProps, type ButtonSplitSize, type ButtonSplitVariant, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ChoiceList, type ChoiceListGroup, type ChoiceListItem, type ChoiceListMultipleProps, type ChoiceListProps, type ChoiceListSingleProps, ComboboxSelect, type ComboboxSelectGroup, type ComboboxSelectMessages, type ComboboxSelectOption, type ComboboxSelectProps, type ComboboxSelectSelection, type ComboboxSelectValue, CommentCard, CommentCardMeta, type CommentCardMetaProps, type CommentCardProps, CommentCardQuote, type CommentCardQuoteProps, CommentCardTrigger, type CommentCardTriggerProps, CommentEntry, CommentEntryAuthor, type CommentEntryAuthorProps, CommentEntryBody, type CommentEntryBodyProps, CommentEntryHeader, type CommentEntryHeaderProps, type CommentEntryProps, CommentEntryTime, type CommentEntryTimeProps, CommentMargin, CommentMarginItem, type CommentMarginItemProps, type CommentMarginLayout, type CommentMarginLayoutItem, type CommentMarginLayoutOptions, type CommentMarginProps, CommentMarker, type CommentMarkerProps, DEFAULT_DRAG_MESSAGES, DRAG_AUTO_SCROLL_ZONE_PX, DRAG_KEYBOARD_CODES, DRAG_KEYBOARD_OFFSET_PX, DRAG_LIFT_Z_INDEX, DRAG_SETTLE, DRAG_SIBLING_TRANSITION, DROP_GLIDE, DialogCommit, type DialogCommitProps, DialogFooterNote, type DialogFooterNoteProps, DialogSheetBack, type DialogSheetBackProps, DialogSheetContent, type DialogSheetContentProps, type DragAcrossLists, type DragAnnouncementSource, DragLift, type DragLiftProps, type DragListsItems, DragLiveRegion, type DragMessages, type DragNamed, type DragPlace, DragRefusalHint, type DragRefusalHintProps, DragRemeasure, type DragRemeasureProps, type DragSensorsOptions, DraggedSlot, type DraggedSlotProps, DropPlaceholder, type DropPlaceholderProps, DropdownMenuLinkItem, type DropdownMenuLinkItemProps, Ellipsis, type EllipsisProps, type EllipsisState, EllipsisToggle, type EllipsisToggleProps, FilterChip, FilterChipLabel, type FilterChipLabelProps, type FilterChipProps, FilterChipRemove, type FilterChipRemoveProps, type HoldThenMoveOptions, HoldThenMoveTouchSensor, InboxItemLeadingBadge, type InboxItemLeadingBadgeProps, InboxItemLine, type InboxItemLineProps, InboxItemListGroup, type InboxItemListGroupProps, InboxItemListHeading, type InboxItemListHeadingProps, InboxItemSkeleton, InboxItemSkeletonList, type InboxItemSkeletonListProps, type InboxItemSkeletonProps, InboxItemStatus, type InboxItemStatusProps, type KbdKeyName, KbdShortcut, type KbdShortcutProps, type KeyboardPlatform, LIFT_CLASS, ListRowSkeleton, type ListRowSkeletonProps, MOUSE_DRAG_DISTANCE_PX, MessageItemDelegatedAvatar, type MessageItemDelegatedAvatarProps, MessageItemDelegatedBy, MessageItemDelegatedByButton, type MessageItemDelegatedByButtonProps, MessageItemDelegatedByName, type MessageItemDelegatedByNameProps, type MessageItemDelegatedByProps, MessageListJumpControls, type MessageListJumpControlsProps, MessageListJumpPill, MessageListJumpPillDismiss, type MessageListJumpPillDismissProps, MessageListJumpPillGroup, type MessageListJumpPillGroupProps, type MessageListJumpPillProps, MessageQuotedPreviewAuthorDelegatedBy, type MessageQuotedPreviewAuthorDelegatedByProps, MessageReferenceIcon, type MessageReferenceIconProps, MessageReferenceReadMark, type MessageReferenceReadMarkProps, Meter, MeterHeader, type MeterHeaderProps, MeterIndicator, type MeterIndicatorProps, MeterLabel, type MeterLabelProps, type MeterProps, MeterTrack, type MeterTrackProps, MeterValue, type MeterValueProps, MobileNavServerItem, type MobileNavServerItemProps, MobileNavServerPopover, MobileNavServerPopoverContent, type MobileNavServerPopoverContentProps, MobileNavServerPopoverDestination, type MobileNavServerPopoverDestinationProps, MobileNavServerPopoverDestinations, type MobileNavServerPopoverDestinationsProps, MobileNavServerPopoverGroup, type MobileNavServerPopoverGroupProps, MobileNavServerPopoverList, type MobileNavServerPopoverListProps, type MobileNavServerPopoverProps, MobileNavServerPopoverRow, MobileNavServerPopoverRowBody, type MobileNavServerPopoverRowBodyProps, MobileNavServerPopoverRowDescription, type MobileNavServerPopoverRowDescriptionProps, MobileNavServerPopoverRowLabel, type MobileNavServerPopoverRowLabelProps, type MobileNavServerPopoverRowProps, ModeBar, ModeBarAction, type ModeBarActionProps, ModeBarContent, type ModeBarContentProps, ModeBarDescription, type ModeBarDescriptionProps, type ModeBarProps, ModeBarTitle, type ModeBarTitleProps, MouseOnlyPointerSensor, ORIGIN_OPACITY, type OverlayLayerKind, OverlayLayerProvider, type OverlayLayerProviderProps, PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_POINTER_QUERY, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD, PanelSplitAction, PanelSplitActionMain, type PanelSplitActionMainProps, PanelSplitActionMenu, type PanelSplitActionMenuProps, type PanelSplitActionProps, PanelSplitActionToggle, type PanelSplitActionToggleProps, PopoverActions, type PopoverActionsProps, PopoverBody, type PopoverBodyProps, PreviewCardActions, type PreviewCardActionsProps, PreviewCardBody, type PreviewCardBodyProps, PreviewCardEyebrow, type PreviewCardEyebrowProps, PreviewCardFooter, type PreviewCardFooterProps, PreviewCardMeta, type PreviewCardMetaProps, type PullToRefresh, PullToRefreshIndicator, type PullToRefreshIndicatorProps, type PullToRefreshPlatform, type PullToRefreshState, SaveStatus, SaveStatusError, type SaveStatusErrorProps, type SaveStatusProps, SaveStatusSaved, type SaveStatusSavedProps, TOUCH_DRAG_DISTANCE_PX, TOUCH_DRAG_HOLD_MS, TOUCH_DRAG_TOLERANCE_PX, type TableSort, TableSortButton, type TableSortButtonProps, TableSortableHead, type TableSortableHeadProps, TaskCompletionControl, type TaskCompletionControlProps, type UseCommentMarginFitsOptions, type UseDragListsOptions, type UsePullToRefreshOptions, cancelDrag, createDragAnnouncements, dragInstructions, dragListStrategy, dragMessages, keepGrabInside, listKeyboardCoordinates, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useDragAcrossLists, useDragAnnouncer, useDragLists, useDragSensors, useDragSiblingTransition, useHoldThenMoveTouchSensor, useKeyboardPlatform, useMouseOnlyPointerSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
|
package/dist/wip.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "./lib/drag-escape.mjs";
|
|
2
2
|
import { OverlayLayerProvider, useParentOverlayKind } from "./lib/overlay-depth.mjs";
|
|
3
|
+
import { ButtonSplit, ButtonSplitMain, ButtonSplitMenu } from "./components/button/button-split.mjs";
|
|
3
4
|
import { Dialog, DialogClose, DialogFooterNote, DialogSheetBack, DialogTrigger } from "./components/dialog/dialog.mjs";
|
|
4
5
|
import { DialogCommit, DialogSheetContent } from "./components/dialog/dialog-sheet.mjs";
|
|
5
6
|
import { useKeyboardPlatform } from "./lib/use-platform.mjs";
|
|
@@ -40,10 +41,11 @@ import { InboxItemSkeleton, InboxItemSkeletonList } from "./components/inbox-ite
|
|
|
40
41
|
import { ListRowSkeleton } from "./components/list-row/list-row-skeleton.mjs";
|
|
41
42
|
import { Meter, MeterHeader, MeterIndicator, MeterLabel, MeterTrack, MeterValue } from "./components/meter/meter.mjs";
|
|
42
43
|
import { FilterChip, FilterChipLabel, FilterChipRemove } from "./components/filter-chip/filter-chip.mjs";
|
|
44
|
+
import { AppLinkCard, AppLinkCardActions, AppLinkCardBody, AppLinkCardEyebrow, AppLinkCardHeader, AppLinkCardHost, AppLinkCardIcon, AppLinkCardMeta, AppLinkCardName, AppLinkCardPlaceholder, AppLinkCardTitle } from "./components/app-link-card/app-link-card.mjs";
|
|
43
45
|
import { PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD } from "./components/pull-to-refresh/pull-to-refresh-gesture.mjs";
|
|
44
46
|
import { PULL_TO_REFRESH_POINTER_QUERY, usePullToRefresh } from "./components/pull-to-refresh/use-pull-to-refresh.mjs";
|
|
45
47
|
import { PullToRefreshIndicator } from "./components/pull-to-refresh/pull-to-refresh-indicator.mjs";
|
|
46
48
|
import { ChoiceList } from "./components/choice-list/choice-list.mjs";
|
|
47
49
|
import { SaveStatus, SaveStatusError, SaveStatusSaved } from "./components/save-status/save-status.mjs";
|
|
48
50
|
import { TaskCompletionControl } from "./components/task-completion-control/task-completion-control.mjs";
|
|
49
|
-
export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, AvatarGroupButton, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ChoiceList, ComboboxSelect, CommentCard, CommentCardMeta, CommentCardQuote, CommentCardTrigger, CommentEntry, CommentEntryAuthor, CommentEntryBody, CommentEntryHeader, CommentEntryTime, CommentMargin, CommentMarginItem, CommentMarker, DEFAULT_DRAG_MESSAGES, DRAG_AUTO_SCROLL_ZONE_PX, DRAG_KEYBOARD_CODES, DRAG_KEYBOARD_OFFSET_PX, DRAG_LIFT_Z_INDEX, DRAG_SETTLE, DRAG_SIBLING_TRANSITION, DROP_GLIDE, DialogCommit, DialogFooterNote, DialogSheetBack, DialogSheetContent, DragLift, DragLiveRegion, DragRefusalHint, DragRemeasure, DraggedSlot, DropPlaceholder, DropdownMenuLinkItem, Ellipsis, EllipsisToggle, FilterChip, FilterChipLabel, FilterChipRemove, HoldThenMoveTouchSensor, InboxItemLeadingBadge, InboxItemLine, InboxItemListGroup, InboxItemListHeading, InboxItemSkeleton, InboxItemSkeletonList, InboxItemStatus, KbdShortcut, LIFT_CLASS, ListRowSkeleton, MOUSE_DRAG_DISTANCE_PX, MessageItemDelegatedAvatar, MessageItemDelegatedBy, MessageItemDelegatedByButton, MessageItemDelegatedByName, MessageListJumpControls, MessageListJumpPill, MessageListJumpPillDismiss, MessageListJumpPillGroup, MessageQuotedPreviewAuthorDelegatedBy, MessageReferenceIcon, MessageReferenceReadMark, Meter, MeterHeader, MeterIndicator, MeterLabel, MeterTrack, MeterValue, MobileNavServerItem, MobileNavServerPopover, MobileNavServerPopoverContent, MobileNavServerPopoverDestination, MobileNavServerPopoverDestinations, MobileNavServerPopoverGroup, MobileNavServerPopoverList, MobileNavServerPopoverRow, MobileNavServerPopoverRowBody, MobileNavServerPopoverRowDescription, MobileNavServerPopoverRowLabel, ModeBar, ModeBarAction, ModeBarContent, ModeBarDescription, ModeBarTitle, MouseOnlyPointerSensor, ORIGIN_OPACITY, OverlayLayerProvider, PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_POINTER_QUERY, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD, PanelSplitAction, PanelSplitActionMain, PanelSplitActionMenu, PanelSplitActionToggle, PopoverActions, PopoverBody, PreviewCardActions, PreviewCardBody, PreviewCardEyebrow, PreviewCardFooter, PreviewCardMeta, PullToRefreshIndicator, SaveStatus, SaveStatusError, SaveStatusSaved, TOUCH_DRAG_DISTANCE_PX, TOUCH_DRAG_HOLD_MS, TOUCH_DRAG_TOLERANCE_PX, TableSortButton, TableSortableHead, TaskCompletionControl, cancelDrag, createDragAnnouncements, dragInstructions, dragListStrategy, dragMessages, keepGrabInside, listKeyboardCoordinates, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useDragAcrossLists, useDragAnnouncer, useDragLists, useDragSensors, useDragSiblingTransition, useHoldThenMoveTouchSensor, useKeyboardPlatform, useMouseOnlyPointerSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
|
|
51
|
+
export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, AppLinkCard, AppLinkCardActions, AppLinkCardBody, AppLinkCardEyebrow, AppLinkCardHeader, AppLinkCardHost, AppLinkCardIcon, AppLinkCardMeta, AppLinkCardName, AppLinkCardPlaceholder, AppLinkCardTitle, AvatarGroupButton, ButtonSplit, ButtonSplitMain, ButtonSplitMenu, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ChoiceList, ComboboxSelect, CommentCard, CommentCardMeta, CommentCardQuote, CommentCardTrigger, CommentEntry, CommentEntryAuthor, CommentEntryBody, CommentEntryHeader, CommentEntryTime, CommentMargin, CommentMarginItem, CommentMarker, DEFAULT_DRAG_MESSAGES, DRAG_AUTO_SCROLL_ZONE_PX, DRAG_KEYBOARD_CODES, DRAG_KEYBOARD_OFFSET_PX, DRAG_LIFT_Z_INDEX, DRAG_SETTLE, DRAG_SIBLING_TRANSITION, DROP_GLIDE, DialogCommit, DialogFooterNote, DialogSheetBack, DialogSheetContent, DragLift, DragLiveRegion, DragRefusalHint, DragRemeasure, DraggedSlot, DropPlaceholder, DropdownMenuLinkItem, Ellipsis, EllipsisToggle, FilterChip, FilterChipLabel, FilterChipRemove, HoldThenMoveTouchSensor, InboxItemLeadingBadge, InboxItemLine, InboxItemListGroup, InboxItemListHeading, InboxItemSkeleton, InboxItemSkeletonList, InboxItemStatus, KbdShortcut, LIFT_CLASS, ListRowSkeleton, MOUSE_DRAG_DISTANCE_PX, MessageItemDelegatedAvatar, MessageItemDelegatedBy, MessageItemDelegatedByButton, MessageItemDelegatedByName, MessageListJumpControls, MessageListJumpPill, MessageListJumpPillDismiss, MessageListJumpPillGroup, MessageQuotedPreviewAuthorDelegatedBy, MessageReferenceIcon, MessageReferenceReadMark, Meter, MeterHeader, MeterIndicator, MeterLabel, MeterTrack, MeterValue, MobileNavServerItem, MobileNavServerPopover, MobileNavServerPopoverContent, MobileNavServerPopoverDestination, MobileNavServerPopoverDestinations, MobileNavServerPopoverGroup, MobileNavServerPopoverList, MobileNavServerPopoverRow, MobileNavServerPopoverRowBody, MobileNavServerPopoverRowDescription, MobileNavServerPopoverRowLabel, ModeBar, ModeBarAction, ModeBarContent, ModeBarDescription, ModeBarTitle, MouseOnlyPointerSensor, ORIGIN_OPACITY, OverlayLayerProvider, PULL_TO_REFRESH_DAMPING, PULL_TO_REFRESH_HOLD_DISTANCE, PULL_TO_REFRESH_MAX_DISTANCE, PULL_TO_REFRESH_POINTER_QUERY, PULL_TO_REFRESH_SNAP_BACK_MS, PULL_TO_REFRESH_THRESHOLD, PanelSplitAction, PanelSplitActionMain, PanelSplitActionMenu, PanelSplitActionToggle, PopoverActions, PopoverBody, PreviewCardActions, PreviewCardBody, PreviewCardEyebrow, PreviewCardFooter, PreviewCardMeta, PullToRefreshIndicator, SaveStatus, SaveStatusError, SaveStatusSaved, TOUCH_DRAG_DISTANCE_PX, TOUCH_DRAG_HOLD_MS, TOUCH_DRAG_TOLERANCE_PX, TableSortButton, TableSortableHead, TaskCompletionControl, cancelDrag, createDragAnnouncements, dragInstructions, dragListStrategy, dragMessages, keepGrabInside, listKeyboardCoordinates, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useDragAcrossLists, useDragAnnouncer, useDragLists, useDragSensors, useDragSiblingTransition, useHoldThenMoveTouchSensor, useKeyboardPlatform, useMouseOnlyPointerSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
|