@botiverse/raft-ui 0.57.0 → 0.57.2
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 +22 -0
- package/dist/components/drawer/drawer.mjs +1 -1
- package/dist/components/drawer/drawer.recipe.mjs +0 -1
- package/dist/components/lightbox/lightbox.mjs +1 -1
- package/dist/components/sidebar/sidebar-section.recipe.mjs +2 -16
- package/dist/lib/head-edges.mjs +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
## [0.57.2](https://github.com/botiverse/raft-design/compare/v0.57.1...v0.57.2) (2026-11-02)
|
|
2
|
+
|
|
3
|
+
### Fixed
|
|
4
|
+
|
|
5
|
+
- **DrawerContent**: every bottom sheet (`swipeDirection="down"`, the default) draws the grab handle, not only one with `snapPoints`. ([#944](https://github.com/botiverse/raft-design/pull/944))
|
|
6
|
+
- Why: the rule is a grab handle on every bottom sheet; a content-sized sheet had none.
|
|
7
|
+
- Affects: content-sized bottom sheets gain the handle and are 8px taller (the header's `pt-2` under the handle); drawers from other edges without snap points are unchanged. The handle stays `aria-hidden`.
|
|
8
|
+
- Docs: https://raft-design.botiverse.build/components/drawer/
|
|
9
|
+
|
|
10
|
+
## [0.57.1](https://github.com/botiverse/raft-design/compare/v0.57.0...v0.57.1) (2026-11-02)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **SidebarSectionControls**: a section's controls are always shown, with a mouse as on a touch screen. ([#942](https://github.com/botiverse/raft-design/pull/942))
|
|
15
|
+
- Why: shown only on hover, they hid what the header can do, and a long title's room changed as the pointer passed (stdrc).
|
|
16
|
+
- Affects: the controls are no longer hidden at rest with a mouse; a collapsed section's attention mark sits before them in the row and hides only while the section is open.
|
|
17
|
+
- Docs: https://raft-design.botiverse.build/components/sidebar/
|
|
18
|
+
- **Edge pull of a header's first and last control** (sidebar section controls, panel and dialog heads, Lightbox actions): it holds while that control's menu is open. ([#942](https://github.com/botiverse/raft-design/pull/942))
|
|
19
|
+
- Why: an open menu puts Base UI focus guards and a hidden portal span beside its trigger, so the trigger stopped being the last child, lost its 5px pull and moved left.
|
|
20
|
+
- Affects: the pull now skips `[data-base-ui-focus-guard]` and `[aria-owns]` siblings.
|
|
21
|
+
- Docs: https://raft-design.botiverse.build/foundations/alignment/
|
|
22
|
+
|
|
1
23
|
## [0.57.0](https://github.com/botiverse/raft-design/compare/v0.56.1...v0.57.0) (2026-11-01)
|
|
2
24
|
|
|
3
25
|
### Breaking Changes
|
|
@@ -97,7 +97,7 @@ function DrawerContent({ className, children, portalProps, ...props }) {
|
|
|
97
97
|
"data-slot": "drawer-popup",
|
|
98
98
|
className: popup({ className }),
|
|
99
99
|
...props,
|
|
100
|
-
children: [hasSnapPoints ? /* @__PURE__ */ jsx(DrawerSwipeHandle, {}) : null, /* @__PURE__ */ jsx(Drawer.Content, {
|
|
100
|
+
children: [hasSnapPoints || swipeDirection === "down" ? /* @__PURE__ */ jsx(DrawerSwipeHandle, {}) : null, /* @__PURE__ */ jsx(Drawer.Content, {
|
|
101
101
|
"data-slot": "drawer-content",
|
|
102
102
|
className: content(),
|
|
103
103
|
children: /* @__PURE__ */ jsx(DialogSheetReset, { children })
|
|
@@ -45,7 +45,7 @@ const lightbox = tv({ slots: {
|
|
|
45
45
|
actions: [
|
|
46
46
|
"flex shrink-0 items-center",
|
|
47
47
|
"gap-1",
|
|
48
|
-
"[&>[data-icon-inset]:last-child]:-mr-icon-inset"
|
|
48
|
+
"[&>[data-icon-inset]:nth-last-child(1_of_:not([data-base-ui-focus-guard],[aria-owns]))]:-mr-icon-inset"
|
|
49
49
|
],
|
|
50
50
|
stage: ["pointer-events-none relative flex min-h-0 flex-1 items-center justify-center overflow-hidden"],
|
|
51
51
|
media: ["pointer-events-auto max-h-[80vh] max-w-[86vw] border-0 bg-transparent shadow-none"],
|
|
@@ -26,23 +26,9 @@ const sidebarSectionRecipe = tv({ slots: {
|
|
|
26
26
|
],
|
|
27
27
|
sidebarSectionTitle: ["min-w-0 truncate"],
|
|
28
28
|
sidebarSectionCount: ["font-mono text-mono-meta font-normal tabular-nums text-foreground-hint"],
|
|
29
|
-
sidebarSectionAttention: [
|
|
30
|
-
"inline-flex min-w-4.5 shrink-0 items-center justify-center",
|
|
31
|
-
"pointer-fine:absolute pointer-fine:top-1/2 pointer-fine:right-0 pointer-fine:-translate-y-1/2",
|
|
32
|
-
"group-data-open/section:hidden",
|
|
33
|
-
"group-data-popup-open/section-header:hidden",
|
|
34
|
-
"group-hover/section-header:hidden"
|
|
35
|
-
],
|
|
29
|
+
sidebarSectionAttention: ["inline-flex min-w-4.5 shrink-0 items-center justify-center", "group-data-open/section:hidden"],
|
|
36
30
|
sidebarSectionTrailing: ["relative flex min-w-4.5 shrink-0 items-center justify-end"],
|
|
37
|
-
sidebarSectionControls: [
|
|
38
|
-
"flex shrink-0 items-center gap-1",
|
|
39
|
-
"pointer-events-none opacity-0",
|
|
40
|
-
"not-pointer-fine:pointer-events-auto not-pointer-fine:opacity-100",
|
|
41
|
-
"pointer-fine:group-hover/section-header:pointer-events-auto pointer-fine:group-hover/section-header:opacity-100",
|
|
42
|
-
"pointer-fine:focus-within:pointer-events-auto pointer-fine:focus-within:opacity-100",
|
|
43
|
-
"pointer-fine:has-data-popup-open:pointer-events-auto pointer-fine:has-data-popup-open:opacity-100",
|
|
44
|
-
"[&>[data-icon-inset]:last-child]:-mr-icon-inset"
|
|
45
|
-
],
|
|
31
|
+
sidebarSectionControls: ["flex shrink-0 items-center gap-1", "[&>[data-icon-inset]:nth-last-child(1_of_:not([data-base-ui-focus-guard],[aria-owns]))]:-mr-icon-inset"],
|
|
46
32
|
sidebarSectionControl: [
|
|
47
33
|
"relative flex h-6 w-auto min-w-6 shrink-0 items-center justify-center p-0 -my-1",
|
|
48
34
|
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3.5",
|
package/dist/lib/head-edges.mjs
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* the pull holds when its last action is hidden at some width.
|
|
20
20
|
*/
|
|
21
21
|
/** The pull alone, for a head whose padding is already its margin (a dialog's 20px). */
|
|
22
|
-
const headEdgePull = ["[&>[data-icon-inset]:
|
|
22
|
+
const headEdgePull = ["[&>[data-icon-inset]:nth-child(1_of_:not([data-base-ui-focus-guard],[aria-owns]))]:-ml-icon-inset", "[&>[data-icon-inset]:nth-last-child(1_of_:not([data-base-ui-focus-guard],[aria-owns]))]:-mr-icon-inset"];
|
|
23
23
|
/**
|
|
24
24
|
* A panel's head: its column's margin, and the pull. The margin is
|
|
25
25
|
* `--column-margin` (styles.css): 20px on a desktop and 16px on a phone,
|