@botiverse/raft-ui 0.71.0 → 0.72.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 CHANGED
@@ -1,3 +1,17 @@
1
+ ## [0.72.0](https://github.com/botiverse/raft-design/compare/v0.71.0...v0.72.0) (2026-11-07)
2
+
3
+ ### Changed
4
+
5
+ - **ArtifactIcon** is Lucide's `file-code`, a page with a folded corner and `< >`: the same icon as an HTML Artifact's link chip in messages, so the rail and the chips use one icon. **FollowArtifactIcon** and **UnfollowArtifactIcon** draw that page with the plus or minus at the bottom-right, at least 1.6 units clear of the page. ([#1052](https://github.com/botiverse/raft-design/pull/1052))
6
+ - Why: xxchan found the old page-with-lines icon plain and hard to tell apart, and after several rounds of proposals chose the chip's icon (#proj-workspace:#222).
7
+ - Affects: every place that shows these three icons (the Artifacts rail item, Artifact menus, the mobile server popover). Names, props and the small heavier minus are unchanged.
8
+ - Docs: https://raft-design.botiverse.build/components/icons/
9
+
10
+ ### Design System
11
+
12
+ - **A toast holds its page height while it shows**, so content above it moves up only; the keyboard isn't held. ([#1051](https://github.com/botiverse/raft-design/pull/1051))
13
+ - Docs: https://raft-design.botiverse.build/components/toast/
14
+
1
15
  ## [0.71.0](https://github.com/botiverse/raft-design/compare/v0.70.0...v0.71.0) (2026-11-06)
2
16
 
3
17
  ### Design System
@@ -17,12 +17,16 @@ export declare function LeavePrivateChannelIcon(props: ActionIconProps): import(
17
17
  export declare function JoinJointChannelIcon(props: ActionIconProps): import("react").JSX.Element;
18
18
  /** Leave a joint channel: Lucide's git-branch, with a minus. */
19
19
  export declare function LeaveJointChannelIcon(props: ActionIconProps): import("react").JSX.Element;
20
- /** Follow an Artifact: a plus inside ArtifactIcon's page, where its two lines of text were. */
20
+ /**
21
+ * Follow an Artifact: ArtifactIcon's page with a plus in the bottom-right corner. The page's
22
+ * right and bottom edges stop 1.6 short of the plus, and the `< >` sits 1.5 higher so its
23
+ * point clears it by as much.
24
+ */
21
25
  export declare function FollowArtifactIcon(props: ActionIconProps): import("react").JSX.Element;
22
26
  /**
23
- * Unfollow an Artifact: a minus inside ArtifactIcon's page. Below 18px the minus is drawn
24
- * heavier and a little longer (stroke 3, 6 long, on whole pixels at 16px), so it reads as a
25
- * mark rather than one more line of the page's text; at 20 and 24 it is the plain minus.
27
+ * Unfollow an Artifact: the same cut page, with a minus. Below 18px the minus is drawn
28
+ * heavier (stroke 3, on whole pixels at 16px), so it reads as a mark beside the page's cut
29
+ * edges rather than one more piece of the outline; at 20 and 24 it is the plain minus.
26
30
  */
27
31
  export declare function UnfollowArtifactIcon(props: ActionIconProps): import("react").JSX.Element;
28
32
  /** Add a comment: CommentIcon at 24, its bubble cut short of a plus in the bottom-right corner. */
@@ -242,7 +242,11 @@ function LeaveJointChannelIcon(props) {
242
242
  ]
243
243
  });
244
244
  }
245
- /** Follow an Artifact: a plus inside ArtifactIcon's page, where its two lines of text were. */
245
+ /**
246
+ * Follow an Artifact: ArtifactIcon's page with a plus in the bottom-right corner. The page's
247
+ * right and bottom edges stop 1.6 short of the plus, and the `< >` sits 1.5 higher so its
248
+ * point clears it by as much.
249
+ */
246
250
  function FollowArtifactIcon(props) {
247
251
  return /* @__PURE__ */ jsxs("svg", {
248
252
  xmlns: "http://www.w3.org/2000/svg",
@@ -258,17 +262,19 @@ function FollowArtifactIcon(props) {
258
262
  strokeWidth: 2,
259
263
  ...props,
260
264
  children: [
261
- /* @__PURE__ */ jsx("path", { d: "M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z" }),
262
- /* @__PURE__ */ jsx("path", { d: "M9 6h6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z" }),
263
- /* @__PURE__ */ jsx("path", { d: "M12 13.5v5" }),
264
- /* @__PURE__ */ jsx("path", { d: "M9.5 16h5" })
265
+ /* @__PURE__ */ jsx("path", { d: "M20 12.5V8a2.4 2.4 0 0 0-.706-1.704l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8" }),
266
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5a1 1 0 0 0 1 1h5" }),
267
+ /* @__PURE__ */ jsx("path", { d: "M10 11 8 13.5l2 2.5" }),
268
+ /* @__PURE__ */ jsx("path", { d: "m14 11 2 2.5-2 2.5" }),
269
+ /* @__PURE__ */ jsx("path", { d: "M19 16v6" }),
270
+ /* @__PURE__ */ jsx("path", { d: "M16 19h6" })
265
271
  ]
266
272
  });
267
273
  }
268
274
  /**
269
- * Unfollow an Artifact: a minus inside ArtifactIcon's page. Below 18px the minus is drawn
270
- * heavier and a little longer (stroke 3, 6 long, on whole pixels at 16px), so it reads as a
271
- * mark rather than one more line of the page's text; at 20 and 24 it is the plain minus.
275
+ * Unfollow an Artifact: the same cut page, with a minus. Below 18px the minus is drawn
276
+ * heavier (stroke 3, on whole pixels at 16px), so it reads as a mark beside the page's cut
277
+ * edges rather than one more piece of the outline; at 20 and 24 it is the plain minus.
272
278
  */
273
279
  function UnfollowArtifactIcon(props) {
274
280
  return /* @__PURE__ */ jsxs("svg", {
@@ -286,17 +292,19 @@ function UnfollowArtifactIcon(props) {
286
292
  strokeWidth: 2,
287
293
  ...props,
288
294
  children: [
289
- /* @__PURE__ */ jsx("path", { d: "M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z" }),
290
- /* @__PURE__ */ jsx("path", { d: "M9 6h6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z" }),
295
+ /* @__PURE__ */ jsx("path", { d: "M20 12.5V8a2.4 2.4 0 0 0-.706-1.704l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8" }),
296
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5a1 1 0 0 0 1 1h5" }),
297
+ /* @__PURE__ */ jsx("path", { d: "M10 11 8 13.5l2 2.5" }),
298
+ /* @__PURE__ */ jsx("path", { d: "m14 11 2 2.5-2 2.5" }),
291
299
  /* @__PURE__ */ jsx("path", {
292
300
  "data-icon-mark": "default",
293
- d: "M9.5 16h5"
301
+ d: "M16 19h6"
294
302
  }),
295
303
  /* @__PURE__ */ jsx("path", {
296
304
  "data-icon-mark": "small",
297
305
  display: "none",
298
306
  strokeWidth: 3,
299
- d: "M9 16.5h6"
307
+ d: "M17.5 19.5h4"
300
308
  })
301
309
  ]
302
310
  });
@@ -1,6 +1,9 @@
1
1
  import { SVGProps } from "react";
2
2
  //#region src/components/icons/object-icons.d.ts
3
3
  export type ObjectIconProps = SVGProps<SVGSVGElement>;
4
- /** An Artifact, a page someone made: a page with no dog-ear, a header block and two lines of text. */
4
+ /**
5
+ * An Artifact: Lucide's file-code, drawn here unchanged, so the icon for Artifacts is the
6
+ * one an HTML Artifact's chip shows in a message (a page with a folded corner and a `< >`).
7
+ */
5
8
  export declare function ArtifactIcon(props: ObjectIconProps): import("react").JSX.Element;
6
9
  //#endregion
@@ -1,6 +1,9 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  //#region src/components/icons/object-icons.tsx
3
- /** An Artifact, a page someone made: a page with no dog-ear, a header block and two lines of text. */
3
+ /**
4
+ * An Artifact: Lucide's file-code, drawn here unchanged, so the icon for Artifacts is the
5
+ * one an HTML Artifact's chip shows in a message (a page with a folded corner and a `< >`).
6
+ */
4
7
  function ArtifactIcon(props) {
5
8
  return /* @__PURE__ */ jsxs("svg", {
6
9
  xmlns: "http://www.w3.org/2000/svg",
@@ -16,10 +19,10 @@ function ArtifactIcon(props) {
16
19
  strokeWidth: 2,
17
20
  ...props,
18
21
  children: [
19
- /* @__PURE__ */ jsx("path", { d: "M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z" }),
20
- /* @__PURE__ */ jsx("path", { d: "M9 6h6a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z" }),
21
- /* @__PURE__ */ jsx("path", { d: "M8 14h8" }),
22
- /* @__PURE__ */ jsx("path", { d: "M8 18h4" })
22
+ /* @__PURE__ */ jsx("path", { d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z" }),
23
+ /* @__PURE__ */ jsx("path", { d: "M14 2v5a1 1 0 0 0 1 1h5" }),
24
+ /* @__PURE__ */ jsx("path", { d: "M10 12.5 8 15l2 2.5" }),
25
+ /* @__PURE__ */ jsx("path", { d: "m14 12.5 2 2.5-2 2.5" })
23
26
  ]
24
27
  });
25
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-ui",
3
- "version": "0.71.0",
3
+ "version": "0.72.0",
4
4
  "description": "React components and CSS foundations for the Raft Design System.",
5
5
  "keywords": [
6
6
  "agent-skills",