@bysages/react 0.4.3 → 0.4.4

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.
@@ -9,7 +9,7 @@ import { Avatar as Avatar$1 } from "@ark-ui/react/avatar";
9
9
  export type AvatarSize = "sm" | "md" | "lg";
10
10
  export interface AvatarProps extends ComponentProps<typeof Avatar$1.Root> {
11
11
  /** Seal diameter: the small, medium, or large control rung. The
12
- * default (large) stands as tall as the biggest control so an avatar
12
+ * default (medium) stands as tall as the biggest control so an avatar
13
13
  * rides a row without stretching it. */
14
14
  size?: AvatarSize;
15
15
  /** The corner: round by default; square cuts it sharp, a stamp
@@ -17,7 +17,17 @@ export interface AvatarProps extends ComponentProps<typeof Avatar$1.Root> {
17
17
  shape?: "circle" | "square";
18
18
  }
19
19
  declare function AvatarRoot(props: AvatarProps): import("react").JSX.Element;
20
- export declare const Avatar: typeof AvatarRoot & typeof Avatar$1 & {
20
+ export interface AvatarFacadeProps extends AvatarProps {
21
+ /** The person's name; its first two initials wait beneath an image. */
22
+ name?: string;
23
+ /** The portrait to load over the name's initials. */
24
+ src?: string;
25
+ }
26
+ declare function AvatarFacade({ name, src, size, shape, children, ...rest }: AvatarFacadeProps): import("react").JSX.Element;
27
+ declare namespace AvatarFacade {
28
+ var displayName: string;
29
+ }
30
+ export declare const Avatar: typeof AvatarFacade & typeof Avatar$1 & {
21
31
  Root: typeof AvatarRoot;
22
32
  };
23
33
  //#endregion
@@ -1,11 +1,14 @@
1
1
  import { t as useElementId } from "../../id-C37UYLwJ.mjs";
2
2
  import { injectComponentStyle } from "@bysages/core/styling";
3
- import { jsx } from "react/jsx-runtime";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import { Avatar as Avatar$1 } from "@ark-ui/react/avatar";
5
5
  //#region src/components/avatar/index.tsx
6
+ function initials(name) {
7
+ return name?.trim().split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("") ?? "";
8
+ }
6
9
  function AvatarRoot(props) {
7
10
  const id = useElementId("avatar", props);
8
- const { size, shape = "circle", ...rest } = props;
11
+ const { size = "md", shape = "circle", ...rest } = props;
9
12
  return /* @__PURE__ */ jsx(Avatar$1.Root, {
10
13
  ...rest,
11
14
  id,
@@ -13,7 +16,19 @@ function AvatarRoot(props) {
13
16
  "data-shape": shape
14
17
  });
15
18
  }
16
- const Avatar = Object.assign(AvatarRoot, {
19
+ function AvatarFacade({ name, src, size = "md", shape, children, ...rest }) {
20
+ return /* @__PURE__ */ jsx(AvatarRoot, {
21
+ size,
22
+ shape,
23
+ ...rest,
24
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [src ? /* @__PURE__ */ jsx(Avatar$1.Image, {
25
+ src,
26
+ alt: name
27
+ }) : null, name ? /* @__PURE__ */ jsx(Avatar$1.Fallback, { children: initials(name) }) : null] })
28
+ });
29
+ }
30
+ AvatarFacade.displayName = "SAvatar";
31
+ const Avatar = Object.assign(AvatarFacade, {
17
32
  ...Avatar$1,
18
33
  Root: AvatarRoot
19
34
  });
@@ -1,10 +1,24 @@
1
- import { ButtonHTMLAttributes, HTMLAttributes } from "react";
1
+ import { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from "react";
2
2
  //#region src/components/banner/index.d.ts
3
3
  export type BannerStatus = "ink" | "info" | "success" | "warning" | "danger";
4
4
  export interface BannerRootProps extends HTMLAttributes<HTMLElement> {
5
5
  status?: BannerStatus;
6
6
  }
7
- export declare const Banner: (({ status, children, ...rest }: BannerRootProps) => import("react").JSX.Element) & {
7
+ export interface BannerFacadeProps extends Omit<BannerRootProps, "title"> {
8
+ /** The glance line, set in the serif. */
9
+ title?: string;
10
+ /** The supporting line beneath the title. */
11
+ message?: string;
12
+ /** Adds the close control and lets the facade own dismissal. */
13
+ dismissible?: boolean;
14
+ /** The reader's answers, laid beside the notice's prose. */
15
+ actions?: ReactNode;
16
+ }
17
+ declare function BannerFacade({ status, title, message, dismissible, actions, children, ...rest }: BannerFacadeProps): import("react").JSX.Element | null;
18
+ declare namespace BannerFacade {
19
+ var displayName: string;
20
+ }
21
+ export declare const Banner: typeof BannerFacade & {
8
22
  Root: ({ status, children, ...rest }: BannerRootProps) => import("react").JSX.Element;
9
23
  Icon: {
10
24
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
@@ -1,7 +1,8 @@
1
1
  import { r as iconNode } from "../../icon-Cri0-7-x.mjs";
2
2
  import { n as useComponentMessages } from "../../messages-1jJWtaYU.mjs";
3
3
  import { injectComponentStyle } from "@bysages/core/styling";
4
- import { jsx } from "react/jsx-runtime";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { useState } from "react";
5
6
  //#region src/components/banner/index.tsx
6
7
  /** A page-level notice, spoken across the full measure: a wash of the
7
8
  * status pigment, one heavier hairline on the leading edge, and room
@@ -44,7 +45,22 @@ const Close = (rest) => {
44
45
  children: iconNode("x")
45
46
  });
46
47
  };
47
- const Banner = Object.assign(Root, {
48
+ function BannerFacade({ status = "ink", title, message, dismissible = false, actions, children, ...rest }) {
49
+ const [open, setOpen] = useState(true);
50
+ if (!open) return null;
51
+ return /* @__PURE__ */ jsxs(Root, {
52
+ status,
53
+ ...rest,
54
+ children: [/* @__PURE__ */ jsxs(Body, { children: [
55
+ title ? /* @__PURE__ */ jsx(Title, { children: title }) : null,
56
+ message ? /* @__PURE__ */ jsx(Description, { children: message }) : null,
57
+ children,
58
+ actions ? /* @__PURE__ */ jsx(Actions, { children: actions }) : null
59
+ ] }), dismissible ? /* @__PURE__ */ jsx(Close, { onClick: () => setOpen(false) }) : null]
60
+ });
61
+ }
62
+ BannerFacade.displayName = "SBanner";
63
+ const Banner = Object.assign(BannerFacade, {
48
64
  Root,
49
65
  Icon,
50
66
  Body,
@@ -1,7 +1,21 @@
1
1
  import { AnchorHTMLAttributes, HTMLAttributes } from "react";
2
2
  //#region src/components/breadcrumb/index.d.ts
3
3
  declare function Root({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
4
- export declare const Breadcrumb: typeof Root & {
4
+ export type BreadcrumbItem = string | {
5
+ label: string;
6
+ href?: string;
7
+ };
8
+ export interface BreadcrumbFacadeProps extends Omit<HTMLAttributes<HTMLElement>, "children"> {
9
+ /** The trail, ordered from its origin to the current page. */
10
+ items: BreadcrumbItem[];
11
+ /** Replaces the shared accessible name for the trail. */
12
+ label?: string;
13
+ }
14
+ declare function BreadcrumbFacade({ items, label, className, ...rest }: BreadcrumbFacadeProps): import("react").JSX.Element;
15
+ declare namespace BreadcrumbFacade {
16
+ var displayName: string;
17
+ }
18
+ export declare const Breadcrumb: typeof BreadcrumbFacade & {
5
19
  Root: typeof Root;
6
20
  List: {
7
21
  ({ children, ...rest }: HTMLAttributes<HTMLElement>): import("react").JSX.Element;
@@ -1,6 +1,7 @@
1
1
  import { n as useComponentMessages } from "../../messages-1jJWtaYU.mjs";
2
2
  import { injectComponentStyle } from "@bysages/core/styling";
3
- import { jsx } from "react/jsx-runtime";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Fragment as Fragment$1 } from "react";
4
5
  //#region src/components/breadcrumb/index.tsx
5
6
  /** A trail of waymarks: Root wraps the nav, List the ordered trail, and
6
7
  * each Item carries a Link — or the Current page — parted by a quiet
@@ -32,7 +33,24 @@ const Item = part("Item", "li");
32
33
  const Link = part("Link", "a");
33
34
  const Current = part("Current", "span", { "aria-current": "page" });
34
35
  const Separator = part("Separator", "span", { "aria-hidden": "true" }, "/");
35
- const Breadcrumb = Object.assign(Root, {
36
+ function BreadcrumbFacade({ items, label, className, ...rest }) {
37
+ const last = items.length - 1;
38
+ return /* @__PURE__ */ jsx(Root, {
39
+ className,
40
+ ...rest,
41
+ "aria-label": rest["aria-label"] ?? label,
42
+ children: /* @__PURE__ */ jsx(List, { children: items.map((item, index) => {
43
+ const text = typeof item === "string" ? item : item.label;
44
+ const href = typeof item === "string" ? void 0 : item.href;
45
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Item, { children: index === last ? /* @__PURE__ */ jsx(Current, { children: text }) : /* @__PURE__ */ jsx(Link, {
46
+ href,
47
+ children: text
48
+ }) }), index < last ? /* @__PURE__ */ jsx(Separator, {}) : null] }, `${text}-${index}`);
49
+ }) })
50
+ });
51
+ }
52
+ BreadcrumbFacade.displayName = "SBreadcrumb";
53
+ const Breadcrumb = Object.assign(BreadcrumbFacade, {
36
54
  Root,
37
55
  List,
38
56
  Item,
@@ -21,6 +21,8 @@ type ColorPickerFacadeProps = {
21
21
  invalid?: boolean;
22
22
  required?: boolean;
23
23
  label?: string;
24
+ /** Saved colors rendered as a flat swatch row. */
25
+ swatches?: string[];
24
26
  size?: "sm" | "md" | "lg";
25
27
  className?: string;
26
28
  style?: CSSProperties;
@@ -4,6 +4,10 @@ import { injectComponentStyle } from "@bysages/core/styling";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { ColorPicker as ColorPicker$1, parseColor } from "@ark-ui/react/color-picker";
6
6
  //#region src/components/color-picker/index.tsx
7
+ const checkIcon = iconNode("check", {
8
+ width: 12,
9
+ height: 12
10
+ });
7
11
  function ColorPickerRoot(props) {
8
12
  injectComponentStyle("color-picker");
9
13
  const id = useElementId("color-picker", props);
@@ -18,7 +22,7 @@ function ColorPickerRoot(props) {
18
22
  * swatch trigger, while the popup carries the area and hue/alpha tracks.
19
23
  * Saved swatches and format switches remain anatomy work. */
20
24
  function ColorPickerFacade(props) {
21
- const { value, defaultValue, disabled, invalid, required, label, size = "md", className, style, onValueChange } = props;
25
+ const { value, defaultValue, disabled, invalid, required, label, swatches = [], size = "md", className, style, onValueChange } = props;
22
26
  const toColor = (color) => typeof color === "string" ? parseColor(color) : color;
23
27
  return /* @__PURE__ */ jsxs(ColorPickerRoot, {
24
28
  size,
@@ -33,28 +37,38 @@ function ColorPickerFacade(props) {
33
37
  children: [
34
38
  label ? /* @__PURE__ */ jsx(ColorPicker$1.Label, { children: label }) : null,
35
39
  /* @__PURE__ */ jsxs(ColorPicker$1.Control, { children: [/* @__PURE__ */ jsx(ColorPicker$1.ChannelInput, { channel: "hex" }), /* @__PURE__ */ jsxs(ColorPicker$1.Trigger, { children: [/* @__PURE__ */ jsx(ColorPicker$1.TransparencyGrid, {}), /* @__PURE__ */ jsx(ColorPicker$1.ValueSwatch, {})] })] }),
36
- /* @__PURE__ */ jsx(ColorPicker$1.Positioner, { children: /* @__PURE__ */ jsxs(ColorPicker$1.Content, { children: [/* @__PURE__ */ jsxs(ColorPicker$1.Area, { children: [/* @__PURE__ */ jsx(ColorPicker$1.AreaBackground, {}), /* @__PURE__ */ jsx(ColorPicker$1.AreaThumb, {})] }), /* @__PURE__ */ jsxs("div", {
37
- "data-scope": "color-picker",
38
- "data-part": "channel-controls",
39
- children: [/* @__PURE__ */ jsx(ColorPicker$1.EyeDropperTrigger, { children: iconNode("pipette", {
40
- width: 14,
41
- height: 14
42
- }) }), /* @__PURE__ */ jsxs("div", {
40
+ /* @__PURE__ */ jsx(ColorPicker$1.Positioner, { children: /* @__PURE__ */ jsxs(ColorPicker$1.Content, { children: [
41
+ /* @__PURE__ */ jsxs(ColorPicker$1.Area, { children: [/* @__PURE__ */ jsx(ColorPicker$1.AreaBackground, {}), /* @__PURE__ */ jsx(ColorPicker$1.AreaThumb, {})] }),
42
+ /* @__PURE__ */ jsxs("div", {
43
43
  "data-scope": "color-picker",
44
- "data-part": "channel-sliders",
45
- children: [/* @__PURE__ */ jsxs(ColorPicker$1.ChannelSlider, {
46
- channel: "hue",
47
- children: [/* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderTrack, {}), /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderThumb, {})]
48
- }), /* @__PURE__ */ jsxs(ColorPicker$1.ChannelSlider, {
49
- channel: "alpha",
50
- children: [
51
- /* @__PURE__ */ jsx(ColorPicker$1.TransparencyGrid, {}),
52
- /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderTrack, {}),
53
- /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderThumb, {})
54
- ]
44
+ "data-part": "channel-controls",
45
+ children: [/* @__PURE__ */ jsx(ColorPicker$1.EyeDropperTrigger, { children: iconNode("pipette", {
46
+ width: 14,
47
+ height: 14
48
+ }) }), /* @__PURE__ */ jsxs("div", {
49
+ "data-scope": "color-picker",
50
+ "data-part": "channel-sliders",
51
+ children: [/* @__PURE__ */ jsxs(ColorPicker$1.ChannelSlider, {
52
+ channel: "hue",
53
+ children: [/* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderTrack, {}), /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderThumb, {})]
54
+ }), /* @__PURE__ */ jsxs(ColorPicker$1.ChannelSlider, {
55
+ channel: "alpha",
56
+ children: [
57
+ /* @__PURE__ */ jsx(ColorPicker$1.TransparencyGrid, {}),
58
+ /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderTrack, {}),
59
+ /* @__PURE__ */ jsx(ColorPicker$1.ChannelSliderThumb, {})
60
+ ]
61
+ })]
55
62
  })]
56
- })]
57
- })] }) }),
63
+ }),
64
+ swatches.length > 0 ? /* @__PURE__ */ jsx(ColorPicker$1.SwatchGroup, { children: swatches.map((color) => /* @__PURE__ */ jsx(ColorPicker$1.SwatchTrigger, {
65
+ value: color,
66
+ children: /* @__PURE__ */ jsx(ColorPicker$1.Swatch, {
67
+ value: color,
68
+ children: /* @__PURE__ */ jsx(ColorPicker$1.SwatchIndicator, { children: checkIcon })
69
+ })
70
+ }, color)) }) : null
71
+ ] }) }),
58
72
  /* @__PURE__ */ jsx(ColorPicker$1.HiddenInput, {})
59
73
  ]
60
74
  });
@@ -35,10 +35,6 @@ const fileIcon = iconNode("file", {
35
35
  width: 16,
36
36
  height: 16
37
37
  });
38
- const uploadIcon = iconNode("upload", {
39
- width: 28,
40
- height: 28
41
- });
42
38
  const closeIcon = iconNode("x", {
43
39
  width: 14,
44
40
  height: 14
@@ -54,7 +50,7 @@ function FileUploadFacade({ label, placeholder, disabled = false, invalid = fals
54
50
  maxFiles,
55
51
  children: [
56
52
  label ? /* @__PURE__ */ jsx(FileUpload$1.Label, { children: label }) : null,
57
- /* @__PURE__ */ jsx(FileUpload$1.Dropzone, { children: /* @__PURE__ */ jsxs(FileUploadTrigger, { children: [uploadIcon, placeholder ?? "Choose files"] }) }),
53
+ /* @__PURE__ */ jsx(FileUpload$1.Dropzone, { children: /* @__PURE__ */ jsx(FileUploadTrigger, { children: placeholder ?? "Choose files" }) }),
58
54
  /* @__PURE__ */ jsx(FileUpload$1.ItemGroup, { children: /* @__PURE__ */ jsx(FileUpload$1.Context, { children: (api) => api.acceptedFiles.map((file) => /* @__PURE__ */ jsxs(FileUpload$1.Item, {
59
55
  file,
60
56
  children: [
@@ -51,7 +51,28 @@ interface FloatButtonItemProps {
51
51
  children?: ReactNode;
52
52
  }
53
53
  declare function Item({ label, disabled, onClick, children }: FloatButtonItemProps): import("react").JSX.Element;
54
- export declare const FloatButton: typeof Root & {
54
+ export interface FloatButtonAction {
55
+ /** The action's accessible name and its surfaced annotation. */
56
+ label: string;
57
+ /** A curated core icon; pencil is the fallback mark. */
58
+ icon?: string;
59
+ disabled?: boolean;
60
+ /** The action fires before the fan folds. */
61
+ onClick?: () => void;
62
+ }
63
+ export interface FloatButtonFacadeProps extends FloatButtonRootProps {
64
+ /** The trigger's accessible name. */
65
+ label?: string;
66
+ /** The fanned actions behind the trigger. */
67
+ actions?: FloatButtonAction[];
68
+ /** Starts the speed dial open before the reader touches it. */
69
+ defaultOpen?: boolean;
70
+ }
71
+ declare function FloatButtonFacade({ label, actions, placement, size, defaultOpen, children, open: openProp, onOpenChange, ...rest }: FloatButtonFacadeProps): import("react").JSX.Element;
72
+ declare namespace FloatButtonFacade {
73
+ var displayName: string;
74
+ }
75
+ export declare const FloatButton: typeof FloatButtonFacade & {
55
76
  Root: typeof Root;
56
77
  Trigger: typeof Trigger;
57
78
  Item: typeof Item;
@@ -1,7 +1,8 @@
1
+ import { r as iconNode } from "../../icon-Cri0-7-x.mjs";
1
2
  import { n as useComponentMessages } from "../../messages-1jJWtaYU.mjs";
2
3
  import { Button } from "../button/index.mjs";
3
4
  import { injectComponentStyle } from "@bysages/core/styling";
4
- import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
5
6
  import { createContext, useContext, useState } from "react";
6
7
  //#region src/components/float-button/index.tsx
7
8
  /** Context for {@link FloatButtonContextValue}, exported so a custom
@@ -82,7 +83,32 @@ function Item({ label, disabled = false, onClick, children }) {
82
83
  })]
83
84
  });
84
85
  }
85
- const FloatButton = Object.assign(Root, {
86
+ function FloatButtonFacade({ label, actions = [], placement, size, defaultOpen = false, children, open: openProp, onOpenChange, ...rest }) {
87
+ const [innerOpen, setInnerOpen] = useState(defaultOpen);
88
+ const open = openProp ?? innerOpen;
89
+ const setOpen = (value) => {
90
+ setInnerOpen(value);
91
+ onOpenChange?.(value);
92
+ };
93
+ return /* @__PURE__ */ jsx(Root, {
94
+ open,
95
+ onOpenChange: setOpen,
96
+ placement,
97
+ size,
98
+ ...rest,
99
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Trigger, {
100
+ label,
101
+ children: iconNode("plus")
102
+ }), actions.map((action) => /* @__PURE__ */ jsx(Item, {
103
+ label: action.label,
104
+ disabled: action.disabled,
105
+ onClick: action.onClick,
106
+ children: iconNode(action.icon ?? "pencil")
107
+ }, action.label))] })
108
+ });
109
+ }
110
+ FloatButtonFacade.displayName = "SFloatButton";
111
+ const FloatButton = Object.assign(FloatButtonFacade, {
86
112
  Root,
87
113
  Trigger,
88
114
  Item
@@ -42,6 +42,11 @@ function FloatingPanelFacade({ open, defaultOpen, trigger, content, label, descr
42
42
  stage: "maximized",
43
43
  children: iconNode("maximize-2")
44
44
  }),
45
+ /* @__PURE__ */ jsx(FloatingPanel$1.StageTrigger, {
46
+ stage: "default",
47
+ "aria-label": "Restore",
48
+ children: iconNode("minimize-2")
49
+ }),
45
50
  /* @__PURE__ */ jsx(FloatingPanel$1.CloseTrigger, {
46
51
  "aria-label": "Close",
47
52
  children: iconNode("x")
@@ -1,7 +1,8 @@
1
+ import { r as iconNode } from "../../icon-Cri0-7-x.mjs";
1
2
  import { t as useElementId } from "../../id-C37UYLwJ.mjs";
2
3
  import { t as withSelfRoot } from "../../family-DE_GQeeM.mjs";
3
4
  import { injectComponentStyle } from "@bysages/core/styling";
4
- import { jsx } from "react/jsx-runtime";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
5
6
  import { forwardRef } from "react";
6
7
  import { Toast as Toast$1, Toaster as Toaster$1, createToaster } from "@ark-ui/react/toast";
7
8
  //#region src/components/toast/index.tsx
@@ -22,9 +23,21 @@ const Toast = {
22
23
  Root: ToastRoot
23
24
  };
24
25
  const ToasterRoot = forwardRef(function ToasterRoot(props, ref) {
26
+ const { children, ...rest } = props;
25
27
  return /* @__PURE__ */ jsx(Toaster$1, {
26
28
  ref,
27
- ...props
29
+ ...rest,
30
+ children: children ?? ((toast) => /* @__PURE__ */ jsxs(Toast$1.Root, { children: [
31
+ /* @__PURE__ */ jsx(Toast$1.Title, { children: toast.title }),
32
+ toast.description ? /* @__PURE__ */ jsx(Toast$1.Description, { children: toast.description }) : null,
33
+ /* @__PURE__ */ jsx(Toast$1.CloseTrigger, {
34
+ "aria-label": "Close",
35
+ children: iconNode("x", {
36
+ width: 14,
37
+ height: 14
38
+ })
39
+ })
40
+ ] }, toast.id))
28
41
  });
29
42
  });
30
43
  const Toaster = withSelfRoot(ToasterRoot);
@@ -3,10 +3,13 @@ import { Button } from "../components/button/index.mjs";
3
3
  import { Alert } from "../components/alert/index.mjs";
4
4
  import { Avatar } from "../components/avatar/index.mjs";
5
5
  import { Badge } from "../components/badge/index.mjs";
6
+ import { Banner } from "../components/banner/index.mjs";
6
7
  import { Spinner } from "../components/spinner/index.mjs";
8
+ import { Breadcrumb } from "../components/breadcrumb/index.mjs";
7
9
  import { Card } from "../components/card/index.mjs";
8
10
  import { t as Input } from "../input-BDpQ0e6G.mjs";
9
11
  import { Checkbox } from "../components/checkbox/index.mjs";
12
+ import { FloatButton } from "../components/float-button/index.mjs";
10
13
  import { Progress } from "../components/progress/index.mjs";
11
14
  import { RadioGroup } from "../components/radio-group/index.mjs";
12
15
  import { t as Select } from "../select-D_soVdWK.mjs";
@@ -17,9 +20,8 @@ import { Stat } from "../components/stat/index.mjs";
17
20
  import { Switch } from "../components/switch/index.mjs";
18
21
  import { Textarea } from "../components/textarea/index.mjs";
19
22
  import { Typography } from "../components/typography/index.mjs";
20
- import { jsx, jsxs } from "react/jsx-runtime";
23
+ import { jsx } from "react/jsx-runtime";
21
24
  import { createElement } from "react";
22
- import { createListCollection } from "@ark-ui/react/collection";
23
25
  import { z } from "zod";
24
26
  import { defineRegistry, useBoundProp } from "@json-render/react";
25
27
  import { defineCatalog } from "@json-render/core";
@@ -52,9 +54,6 @@ const headingClass = {
52
54
  "5": "text-lg",
53
55
  "6": "text-base"
54
56
  };
55
- function initials(name) {
56
- return name.split(/\s+/).filter(Boolean).slice(0, 2).map((part) => part[0]?.toUpperCase() ?? "").join("");
57
- }
58
57
  function slug(value) {
59
58
  return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/(^-|-$)/g, "") || value;
60
59
  }
@@ -88,6 +87,25 @@ const faces$1 = defineFace({
88
87
  }),
89
88
  description: "A person's seal: image when given, initials as the fallback."
90
89
  },
90
+ Banner: {
91
+ props: z.object({
92
+ status: z.enum([
93
+ "ink",
94
+ "info",
95
+ "success",
96
+ "warning",
97
+ "danger"
98
+ ]).optional(),
99
+ title: z.string().optional(),
100
+ message: z.string().optional(),
101
+ dismissible: z.boolean().optional()
102
+ }),
103
+ description: "A full-width notice that speaks once across the page."
104
+ },
105
+ Breadcrumb: {
106
+ props: z.object({ items: z.array(z.string()).optional() }),
107
+ description: "A trail of waymarks from home to the current page."
108
+ },
91
109
  Badge: {
92
110
  props: z.object({
93
111
  text: z.string(),
@@ -152,6 +170,29 @@ const faces$1 = defineFace({
152
170
  }),
153
171
  description: "One independent box with its label."
154
172
  },
173
+ FloatButton: {
174
+ props: z.object({
175
+ label: z.string().optional(),
176
+ actions: z.array(z.object({
177
+ label: z.string(),
178
+ icon: z.string().optional(),
179
+ disabled: z.boolean().optional()
180
+ })).optional(),
181
+ placement: z.enum([
182
+ "bottom-end",
183
+ "bottom-start",
184
+ "top-end",
185
+ "top-start"
186
+ ]).optional(),
187
+ size: z.enum([
188
+ "sm",
189
+ "md",
190
+ "lg"
191
+ ]).optional(),
192
+ defaultOpen: z.boolean().optional()
193
+ }),
194
+ description: "A floating action and its fanned alternatives; actions use curated icon names."
195
+ },
155
196
  Heading: {
156
197
  props: z.object({
157
198
  text: z.string(),
@@ -328,44 +369,31 @@ const textVoices = {
328
369
  function useBound(value, path) {
329
370
  return useBoundProp(value, path);
330
371
  }
331
- const collectionCache = /* @__PURE__ */ new Map();
332
- function collectionFor(options) {
333
- const key = JSON.stringify(options);
334
- let collection = collectionCache.get(key);
335
- if (!collection) {
336
- collection = createListCollection({ items: options });
337
- collectionCache.set(key, collection);
338
- }
339
- return collection;
340
- }
341
372
  /** A labelled field: the label whispers above, the control answers. */
342
373
  function labelled(label, control) {
343
374
  return label ? createElement(Stack, { gap: "xs" }, createElement(Typography.Label, null, label), control) : control;
344
375
  }
345
376
  //#endregion
346
377
  //#region src/components/alert/generative.ts
347
- var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
378
+ var generative_exports$20 = /* @__PURE__ */ __exportAll({ default: () => generative_default$20 });
348
379
  /** A bordered notice; status picks the pigment. */
349
- var generative_default$17 = defineEntry({ Alert: {
380
+ var generative_default$20 = defineEntry({ Alert: {
350
381
  ...faces$1.Alert,
351
382
  component: ({ props }) => createElement(Alert.Root, { status: props.status ?? "ink" }, createElement(Alert.Icon), createElement(Alert.Body, null, createElement(Alert.Title, null, props.title), props.message != null ? createElement(Alert.Description, null, props.message) : null))
352
383
  } });
353
384
  //#endregion
354
385
  //#region src/components/avatar/generative.ts
355
- var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
386
+ var generative_exports$19 = /* @__PURE__ */ __exportAll({ default: () => generative_default$19 });
356
387
  /** A person's seal: image when given, initials as the fallback. */
357
- var generative_default$16 = defineEntry({ Avatar: {
388
+ var generative_default$19 = defineEntry({ Avatar: {
358
389
  ...faces$1.Avatar,
359
- component: ({ props }) => createElement(Avatar.Root, { size: props.size }, [props.src != null ? createElement(Avatar.Image, {
360
- src: props.src,
361
- alt: props.name
362
- }) : null, createElement(Avatar.Fallback, null, initials(props.name))])
390
+ component: ({ props }) => createElement(Avatar, { ...props })
363
391
  } });
364
392
  //#endregion
365
393
  //#region src/components/badge/generative.ts
366
- var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
394
+ var generative_exports$18 = /* @__PURE__ */ __exportAll({ default: () => generative_default$18 });
367
395
  /** A small status seal beside content; reads at a glance. */
368
- var generative_default$15 = defineEntry({ Badge: {
396
+ var generative_default$18 = defineEntry({ Badge: {
369
397
  ...faces$1.Badge,
370
398
  component: ({ props }) => createElement(Badge, {
371
399
  tone: props.tone,
@@ -373,10 +401,40 @@ var generative_default$15 = defineEntry({ Badge: {
373
401
  }, props.text)
374
402
  } });
375
403
  //#endregion
404
+ //#region src/components/banner/generative.ts
405
+ var generative_exports$17 = /* @__PURE__ */ __exportAll({ default: () => generative_default$17 });
406
+ /** A full-width notice that speaks once across the page. */
407
+ var generative_default$17 = defineEntry({ Banner: {
408
+ ...faces$1.Banner,
409
+ component: ({ props }) => createElement(Banner, {
410
+ ...props,
411
+ dismissible: true
412
+ })
413
+ } });
414
+ //#endregion
415
+ //#region src/components/breadcrumb/generative.ts
416
+ var generative_exports$16 = /* @__PURE__ */ __exportAll({ default: () => generative_default$16 });
417
+ /** A trail of waymarks from home to the current page. */
418
+ var generative_default$16 = defineEntry({ Breadcrumb: {
419
+ ...faces$1.Breadcrumb,
420
+ component: ({ props }) => {
421
+ const labels = props.items ?? [
422
+ "Home",
423
+ "Guides",
424
+ "Ink"
425
+ ];
426
+ const items = labels.map((label, index) => index === labels.length - 1 ? { label } : {
427
+ label,
428
+ href: `#${slug(label)}`
429
+ });
430
+ return createElement(Breadcrumb, { items });
431
+ }
432
+ } });
433
+ //#endregion
376
434
  //#region src/components/button/generative.ts
377
- var generative_exports$14 = /* @__PURE__ */ __exportAll({ default: () => generative_default$14 });
435
+ var generative_exports$15 = /* @__PURE__ */ __exportAll({ default: () => generative_default$15 });
378
436
  /** The primary action register: solid ink for the one main action, outline, ghost, or subtle for the rest. */
379
- var generative_default$14 = defineEntry({ Button: {
437
+ var generative_default$15 = defineEntry({ Button: {
380
438
  ...faces$1.Button,
381
439
  component: ({ props, emit }) => createElement(Button, {
382
440
  variant: props.variant ?? "solid",
@@ -388,9 +446,9 @@ var generative_default$14 = defineEntry({ Button: {
388
446
  } });
389
447
  //#endregion
390
448
  //#region src/components/card/generative.ts
391
- var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
449
+ var generative_exports$14 = /* @__PURE__ */ __exportAll({ default: () => generative_default$14 });
392
450
  /** Grouping vessel. Give title and description instead of hand-building a header; children render in the body; footer holds actions. */
393
- var generative_default$13 = defineEntry({ Card: {
451
+ var generative_default$14 = defineEntry({ Card: {
394
452
  ...faces$1.Card,
395
453
  component: ({ props, children, slots }) => {
396
454
  const header = slots?.header ?? null;
@@ -400,9 +458,9 @@ var generative_default$13 = defineEntry({ Card: {
400
458
  } });
401
459
  //#endregion
402
460
  //#region src/components/checkbox/generative.ts
403
- var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
461
+ var generative_exports$13 = /* @__PURE__ */ __exportAll({ default: () => generative_default$13 });
404
462
  /** One independent box with its label. */
405
- var generative_default$12 = defineEntry({ Checkbox: {
463
+ var generative_default$13 = defineEntry({ Checkbox: {
406
464
  ...faces$1.Checkbox,
407
465
  component: ({ props }) => {
408
466
  const mark = iconNode("check");
@@ -417,6 +475,24 @@ var generative_default$12 = defineEntry({ Checkbox: {
417
475
  }
418
476
  } });
419
477
  //#endregion
478
+ //#region src/components/float-button/generative.ts
479
+ var generative_exports$12 = /* @__PURE__ */ __exportAll({ default: () => generative_default$12 });
480
+ /** A floating action cluster; named actions fan out from one corner. */
481
+ var generative_default$12 = defineEntry({ FloatButton: {
482
+ ...faces$1.FloatButton,
483
+ component: ({ props }) => {
484
+ const actions = Array.isArray(props.actions) ? props.actions : [{ label: "Edit" }];
485
+ return createElement(FloatButton, {
486
+ ...props,
487
+ actions: actions.map((action) => ({
488
+ ...action,
489
+ icon: action.icon ?? "pencil"
490
+ })),
491
+ defaultOpen: true
492
+ });
493
+ }
494
+ } });
495
+ //#endregion
420
496
  //#region src/components/input/generative.ts
421
497
  var generative_exports$11 = /* @__PURE__ */ __exportAll({ default: () => generative_default$11 });
422
498
  /** A single-line field; rely on border, surface and the focus halo. */
@@ -470,29 +546,15 @@ var generative_default$8 = defineEntry({ Select: {
470
546
  ...faces$1.Select,
471
547
  component: ({ props, bindings }) => {
472
548
  const [value, setValue] = useBound(props.value, bindings?.value);
473
- const selectedValue = props.multiple ? Array.isArray(value) ? value : value ? [value] : void 0 : typeof value === "string" ? [value] : void 0;
474
- const collection = collectionFor(props.options);
475
- return labelled(props.label, /* @__PURE__ */ jsxs(Select.Root, {
476
- collection,
477
- value: selectedValue,
478
- disabled: props.disabled,
549
+ return /* @__PURE__ */ jsx(Select, {
550
+ label: props.label,
551
+ placeholder: props.placeholder,
552
+ options: props.options,
479
553
  multiple: props.multiple,
480
- onValueChange: (details) => setValue(props.multiple ? details.value : details.value[0] ?? ""),
481
- children: [
482
- /* @__PURE__ */ jsxs(Select.Control, { children: [/* @__PURE__ */ jsx(Select.Trigger, { children: /* @__PURE__ */ jsx(Select.ValueText, { placeholder: props.placeholder }) }), /* @__PURE__ */ jsx(Select.Indicator, { children: iconNode("chevrons-up-down", {
483
- width: 14,
484
- height: 14
485
- }) })] }),
486
- /* @__PURE__ */ jsx(Select.Positioner, { children: /* @__PURE__ */ jsx(Select.Content, { children: /* @__PURE__ */ jsx(Select.ItemGroup, { children: props.options.map((option) => /* @__PURE__ */ jsxs(Select.Item, {
487
- item: option,
488
- children: [/* @__PURE__ */ jsx(Select.ItemText, { children: option.label }), /* @__PURE__ */ jsx(Select.ItemIndicator, { children: iconNode("check", {
489
- width: 14,
490
- height: 14
491
- }) })]
492
- }, option.value)) }) }) }),
493
- /* @__PURE__ */ jsx(Select.HiddenSelect, {})
494
- ]
495
- }));
554
+ disabled: props.disabled,
555
+ value: props.multiple ? Array.isArray(value) ? value : value ? [value] : void 0 : Array.isArray(value) ? value.at(0) ?? "" : value,
556
+ onValueChange: setValue
557
+ });
496
558
  }
497
559
  } });
498
560
  //#endregion
@@ -619,12 +681,15 @@ var generative_default = defineEntry({
619
681
  * meet: one glob picks the faces up, so a family that lands in the
620
682
  * package is in the vocabulary without anyone editing this file. */
621
683
  const modules = /* #__PURE__ */ Object.assign({
622
- "../components/alert/generative.ts": generative_exports$17,
623
- "../components/avatar/generative.ts": generative_exports$16,
624
- "../components/badge/generative.ts": generative_exports$15,
625
- "../components/button/generative.ts": generative_exports$14,
626
- "../components/card/generative.ts": generative_exports$13,
627
- "../components/checkbox/generative.ts": generative_exports$12,
684
+ "../components/alert/generative.ts": generative_exports$20,
685
+ "../components/avatar/generative.ts": generative_exports$19,
686
+ "../components/badge/generative.ts": generative_exports$18,
687
+ "../components/banner/generative.ts": generative_exports$17,
688
+ "../components/breadcrumb/generative.ts": generative_exports$16,
689
+ "../components/button/generative.ts": generative_exports$15,
690
+ "../components/card/generative.ts": generative_exports$14,
691
+ "../components/checkbox/generative.ts": generative_exports$13,
692
+ "../components/float-button/generative.ts": generative_exports$12,
628
693
  "../components/input/generative.ts": generative_exports$11,
629
694
  "../components/progress/generative.ts": generative_exports$10,
630
695
  "../components/radio-group/generative.ts": generative_exports$9,
package/dist/index.d.mts CHANGED
@@ -18,13 +18,13 @@ import { AspectRatio, AspectRatioProps } from "./components/aspect-ratio/index.m
18
18
  import { Combobox } from "./components/combobox/index.mjs";
19
19
  import { AutoComplete, AutoCompleteProps } from "./components/autocomplete/index.mjs";
20
20
  import { AvatarGroup, AvatarGroupProps } from "./components/avatar-group/index.mjs";
21
- import { Avatar, AvatarProps, AvatarSize } from "./components/avatar/index.mjs";
21
+ import { Avatar, AvatarFacadeProps, AvatarProps, AvatarSize } from "./components/avatar/index.mjs";
22
22
  import { BackTop, BackTopProps } from "./components/back-top/index.mjs";
23
23
  import { Badge, BadgeProps } from "./components/badge/index.mjs";
24
- import { Banner, BannerRootProps, BannerStatus } from "./components/banner/index.mjs";
24
+ import { Banner, BannerFacadeProps, BannerRootProps, BannerStatus } from "./components/banner/index.mjs";
25
25
  import { Bento, BentoCell, BentoCellProps, BentoProps, BentoRoot } from "./components/bento/index.mjs";
26
26
  import { BlockUI, BlockUIProps } from "./components/block-ui/index.mjs";
27
- import { Breadcrumb } from "./components/breadcrumb/index.mjs";
27
+ import { Breadcrumb, BreadcrumbFacadeProps, BreadcrumbItem } from "./components/breadcrumb/index.mjs";
28
28
  import { Browser, BrowserBody, BrowserDots, BrowserPartProps, BrowserRoot, BrowserTitleBar, BrowserUrlBar } from "./components/browser/index.mjs";
29
29
  import { ButtonGroup, ButtonGroupProps } from "./components/button-group/index.mjs";
30
30
  import { Button, ButtonProps } from "./components/button/index.mjs";
@@ -60,7 +60,7 @@ import { Empty } from "./components/empty/index.mjs";
60
60
  import { Field } from "./components/field/index.mjs";
61
61
  import { Fieldset } from "./components/fieldset/index.mjs";
62
62
  import { FileUpload } from "./components/file-upload/index.mjs";
63
- import { FLOAT_BUTTON_CONTEXT, FloatButton, FloatButtonContextValue, FloatButtonPlacement, FloatButtonRootProps, FloatButtonSize } from "./components/float-button/index.mjs";
63
+ import { FLOAT_BUTTON_CONTEXT, FloatButton, FloatButtonAction, FloatButtonContextValue, FloatButtonFacadeProps, FloatButtonPlacement, FloatButtonRootProps, FloatButtonSize } from "./components/float-button/index.mjs";
64
64
  import { FloatingPanel, FloatingPanelFacadeProps } from "./components/floating-panel/index.mjs";
65
65
  import { FocusTrap, FocusTrapBaseProps, FocusTrapProps } from "./components/focus-trap/index.mjs";
66
66
  import { FieldApi, Form, FormApi, FormField, FormFieldProps, FormProps, useField, useForm } from "./components/form/index.mjs";
@@ -141,4 +141,4 @@ import { User, UserProps } from "./components/user/index.mjs";
141
141
  import { VirtualList, VirtualListProps } from "./components/virtual-list/index.mjs";
142
142
  import { Watermark, WatermarkProps } from "./components/watermark/index.mjs";
143
143
  export * from "@bysages/core";
144
- export { Accordion, AccordionFacadeProps, AccordionItem, Action, Action as AiAction, ActionProps, Affix, AffixProps, Ai, AiActions, Attachment as AiAttachment, Attachment, Attachments as AiAttachments, Attachments, AiContent, Message as AiMessage, Message, PromptInput as AiPromptInput, PromptInput, Reasoning as AiReasoning, Reasoning, Response as AiResponse, Response, Source as AiSource, Source, Sources as AiSources, Sources, Suggestion as AiSuggestion, Suggestion, Tool as AiTool, Tool, Alert, AlertProps, AlertStatus, AngleSlider, AngleSliderFacadeProps, AspectRatio, AspectRatioProps, AttachmentProps, Audio, AutoComplete, AutoCompleteProps, Avatar, AvatarGroup, AvatarGroupProps, AvatarProps, AvatarSize, BackTop, BackTopProps, Badge, BadgeProps, Banner, BannerRootProps, BannerStatus, Bento, BentoCell, BentoCellProps, BentoProps, BentoRoot, BlockUI, BlockUIProps, Breadcrumb, Browser, BrowserBody, BrowserDots, BrowserPartProps, BrowserRoot, BrowserTitleBar, BrowserUrlBar, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarProps, Card, Carousel, CascadeSelect, CascadeSelectNode, CascadeSelectProps, Checkbox, CheckboxFacadeProps, CheckboxGroup, CheckboxGroupProps, CheckboxOption, Chip, ChipProps, ClientOnly, type ClientOnlyProps, Clipboard, Collapsible, CollapsibleFacadeProps, type CollectionItem, type CollectionOptions, ColorPicker, type ColumnDef, Combobox, Command, CommandEntry, CommandProps, Comment, CommentProps, ConfigContext, ConfigDensity, ConfigProvider, ConfigProviderProps, ConfigScene, Container, ContainerProps, type CreateToasterReturn, DataTable, DataTableProps, type DataUIPart, DataView, DataViewProps, DateInput, type DateInputFocusChangeDetails, type DateInputValueChangeDetails, DatePicker, type DatePickerFocusChangeDetails, type DatePickerOpenChangeDetails, type DatePickerValueChangeDetails, type DatePickerViewChangeDetails, type DatePickerVisibleRangeChangeDetails, DeferredContent, DeferredContentProps, Descriptions, DescriptionsItemData, DescriptionsRoot, DescriptionsRootProps, Dialog, DialogFacadeProps, type DialogOpenChangeDetails, Dock, DockItem, DockItemProps, DockProps, DockRoot, DownloadTrigger, type DownloadTriggerBaseProps, type DownloadTriggerProps, type DownloadableData, Drawer, DrawerFacadeProps, DynamicInput, DynamicInputProps, Editable, Ellipsis, EllipsisProps, Empty, FLOAT_BUTTON_CONTEXT, Field, type FieldApi, Fieldset, type FilePathTreeNode, type FileUIPart, FileUpload, type FlatTreeNode, FlexRender, FloatButton, FloatButtonContextValue, FloatButtonPlacement, FloatButtonRootProps, FloatButtonSize, FloatingPanel, FloatingPanelFacadeProps, FocusTrap, type FocusTrapBaseProps, type FocusTrapProps, Form, type FormApi, FormField, FormFieldProps, FormProps, Format, Frame, Grid, type GridCollection, type GridCollectionOptions, GridProps, Highlight, HoverCard, HoverCardFacadeProps, Icon, IconProps, Image, ImageCropper, ImageCropperFacadeProps, ImageProps, ImageViewer, ImageViewerProps, Input, InputGroup, InputGroupPartProps, InputProps, JsonTreeView, Kbd, KbdProps, Layout, LayoutContextValue, LayoutResizeHandlers, LayoutRootProps, LayoutSiderProps, LayoutSiderState, Link, LinkProps, List, type ListCollection, ListContentProps, ListRootProps, Listbox, Marquee, Masonry, MasonryProps, type MediaPlayerProps, type MediaSourceOption, type MediaTextTrackOption, MentionEntry, Mentions, MentionsProps, MentionsVessel, MentionsVesselProps, Menu, MenuFacadeProps, MenuItemOption, Menubar, MenubarEntry, MenubarGroup, MenubarProps, MessageProps, Meter, MeterRootProps, NativeSelect, type NativeSelectOption, type NativeSelectProps, NavigationMenu, NavigationMenuFacadeProps, NavigationMenuLinkOption, NumberInput, OrderList, OrderListProps, OrderOption, PageHeader, Pagination, PasswordInput, PinInput, Popconfirm, PopconfirmProps, Popover, PopoverFacadeProps, Presence, type PresenceBaseProps, type PresenceProps, PresenceProvider, Progress, ProgressGroup, ProgressGroupProps, ProgressSegment, PromptInputProps, QrCode, RadioGroup, RadioGroupFacadeProps, RadioGroupItem, RatingGroup, RatingGroupFacadeProps, ReasoningProps, type ReasoningUIPart, ResponseProps, Result, ResultIcon, ResultRoot, ResultRootProps, ScrollArea, SegmentGroup, SegmentGroupFacadeProps, SegmentGroupItem, Select, SelectFacadeProps, Separator, SeparatorProps, SignaturePad, Skeleton, SkeletonProps, Slider, SliderFacadeProps, type SortingState, type SourceDocumentUIPart, SourceProps, type SourceUrlUIPart, SourcesProps, Spinner, SpinnerProps, SplitButton, SplitButtonEntry, SplitButtonProps, Splitter, SplitterFacadeProps, SplitterItem, Spotlight, SpotlightProps, Stack, StackProps, Stat, StatDeltaProps, type StepStartUIPart, Steps, StepsFacadeProps, StepsItem, SuggestionProps, Swap, Switch, SwitchFacadeProps, Tabs, TabsFacadeProps, TabsItem, Tag, TagProps, TagsInput, Terminal, TerminalProps, type TextUIPart, Textarea, TextareaProps, Timeline, Timer, Toast, Toaster, Toc, TocFacadeProps, Toggle, ToggleFacadeProps, ToggleGroup, ToggleGroupFacadeProps, ToggleGroupItem, ToolProps, ToolStatus, type ToolUIPart, Toolbar, ToolbarProps, Tooltip, TooltipFacadeProps, Tour, TourFacadeProps, type TourInteractOutsideEvent, type TourPointerDownOutsideEvent, type TourStepDetails, Transfer, TransferItem, TransferProps, type TreeCollection, type TreeCollectionOptions, type TreeNode, TreeSelect, TreeSelectNode, TreeSelectProps, TreeView, Typography, type UIMessage, type UIMessagePart, type UseAsyncListProps, type UseAsyncListReturn, type UseDownloadProps, type UseDownloadReturn, type UseListCollectionProps, type UseListCollectionReturn, type UseListSelectionProps, type UseListSelectionReturn, type UseMentionsHandlers, type UseMentionsOptions, type UsePresenceContext, type UsePresenceProps, type UsePresenceReturn, User, UserProps, Video, VirtualList, VirtualListProps, Watermark, WatermarkProps, createColumnHelper, createFileTreeCollection, createGridCollection, createToaster, createTreeCollection, formatMediaTime, useAsyncList, useConfig, useDownload, useField, useForm, useListCollection, useListSelection, useMentions, usePresence, usePresenceContext, useTour };
144
+ export { Accordion, AccordionFacadeProps, AccordionItem, Action, Action as AiAction, ActionProps, Affix, AffixProps, Ai, AiActions, Attachment as AiAttachment, Attachment, Attachments as AiAttachments, Attachments, AiContent, Message as AiMessage, Message, PromptInput as AiPromptInput, PromptInput, Reasoning as AiReasoning, Reasoning, Response as AiResponse, Response, Source as AiSource, Source, Sources as AiSources, Sources, Suggestion as AiSuggestion, Suggestion, Tool as AiTool, Tool, Alert, AlertProps, AlertStatus, AngleSlider, AngleSliderFacadeProps, AspectRatio, AspectRatioProps, AttachmentProps, Audio, AutoComplete, AutoCompleteProps, Avatar, AvatarFacadeProps, AvatarGroup, AvatarGroupProps, AvatarProps, AvatarSize, BackTop, BackTopProps, Badge, BadgeProps, Banner, BannerFacadeProps, BannerRootProps, BannerStatus, Bento, BentoCell, BentoCellProps, BentoProps, BentoRoot, BlockUI, BlockUIProps, Breadcrumb, BreadcrumbFacadeProps, BreadcrumbItem, Browser, BrowserBody, BrowserDots, BrowserPartProps, BrowserRoot, BrowserTitleBar, BrowserUrlBar, Button, ButtonGroup, ButtonGroupProps, ButtonProps, Calendar, CalendarProps, Card, Carousel, CascadeSelect, CascadeSelectNode, CascadeSelectProps, Checkbox, CheckboxFacadeProps, CheckboxGroup, CheckboxGroupProps, CheckboxOption, Chip, ChipProps, ClientOnly, type ClientOnlyProps, Clipboard, Collapsible, CollapsibleFacadeProps, type CollectionItem, type CollectionOptions, ColorPicker, type ColumnDef, Combobox, Command, CommandEntry, CommandProps, Comment, CommentProps, ConfigContext, ConfigDensity, ConfigProvider, ConfigProviderProps, ConfigScene, Container, ContainerProps, type CreateToasterReturn, DataTable, DataTableProps, type DataUIPart, DataView, DataViewProps, DateInput, type DateInputFocusChangeDetails, type DateInputValueChangeDetails, DatePicker, type DatePickerFocusChangeDetails, type DatePickerOpenChangeDetails, type DatePickerValueChangeDetails, type DatePickerViewChangeDetails, type DatePickerVisibleRangeChangeDetails, DeferredContent, DeferredContentProps, Descriptions, DescriptionsItemData, DescriptionsRoot, DescriptionsRootProps, Dialog, DialogFacadeProps, type DialogOpenChangeDetails, Dock, DockItem, DockItemProps, DockProps, DockRoot, DownloadTrigger, type DownloadTriggerBaseProps, type DownloadTriggerProps, type DownloadableData, Drawer, DrawerFacadeProps, DynamicInput, DynamicInputProps, Editable, Ellipsis, EllipsisProps, Empty, FLOAT_BUTTON_CONTEXT, Field, type FieldApi, Fieldset, type FilePathTreeNode, type FileUIPart, FileUpload, type FlatTreeNode, FlexRender, FloatButton, FloatButtonAction, FloatButtonContextValue, FloatButtonFacadeProps, FloatButtonPlacement, FloatButtonRootProps, FloatButtonSize, FloatingPanel, FloatingPanelFacadeProps, FocusTrap, type FocusTrapBaseProps, type FocusTrapProps, Form, type FormApi, FormField, FormFieldProps, FormProps, Format, Frame, Grid, type GridCollection, type GridCollectionOptions, GridProps, Highlight, HoverCard, HoverCardFacadeProps, Icon, IconProps, Image, ImageCropper, ImageCropperFacadeProps, ImageProps, ImageViewer, ImageViewerProps, Input, InputGroup, InputGroupPartProps, InputProps, JsonTreeView, Kbd, KbdProps, Layout, LayoutContextValue, LayoutResizeHandlers, LayoutRootProps, LayoutSiderProps, LayoutSiderState, Link, LinkProps, List, type ListCollection, ListContentProps, ListRootProps, Listbox, Marquee, Masonry, MasonryProps, type MediaPlayerProps, type MediaSourceOption, type MediaTextTrackOption, MentionEntry, Mentions, MentionsProps, MentionsVessel, MentionsVesselProps, Menu, MenuFacadeProps, MenuItemOption, Menubar, MenubarEntry, MenubarGroup, MenubarProps, MessageProps, Meter, MeterRootProps, NativeSelect, type NativeSelectOption, type NativeSelectProps, NavigationMenu, NavigationMenuFacadeProps, NavigationMenuLinkOption, NumberInput, OrderList, OrderListProps, OrderOption, PageHeader, Pagination, PasswordInput, PinInput, Popconfirm, PopconfirmProps, Popover, PopoverFacadeProps, Presence, type PresenceBaseProps, type PresenceProps, PresenceProvider, Progress, ProgressGroup, ProgressGroupProps, ProgressSegment, PromptInputProps, QrCode, RadioGroup, RadioGroupFacadeProps, RadioGroupItem, RatingGroup, RatingGroupFacadeProps, ReasoningProps, type ReasoningUIPart, ResponseProps, Result, ResultIcon, ResultRoot, ResultRootProps, ScrollArea, SegmentGroup, SegmentGroupFacadeProps, SegmentGroupItem, Select, SelectFacadeProps, Separator, SeparatorProps, SignaturePad, Skeleton, SkeletonProps, Slider, SliderFacadeProps, type SortingState, type SourceDocumentUIPart, SourceProps, type SourceUrlUIPart, SourcesProps, Spinner, SpinnerProps, SplitButton, SplitButtonEntry, SplitButtonProps, Splitter, SplitterFacadeProps, SplitterItem, Spotlight, SpotlightProps, Stack, StackProps, Stat, StatDeltaProps, type StepStartUIPart, Steps, StepsFacadeProps, StepsItem, SuggestionProps, Swap, Switch, SwitchFacadeProps, Tabs, TabsFacadeProps, TabsItem, Tag, TagProps, TagsInput, Terminal, TerminalProps, type TextUIPart, Textarea, TextareaProps, Timeline, Timer, Toast, Toaster, Toc, TocFacadeProps, Toggle, ToggleFacadeProps, ToggleGroup, ToggleGroupFacadeProps, ToggleGroupItem, ToolProps, ToolStatus, type ToolUIPart, Toolbar, ToolbarProps, Tooltip, TooltipFacadeProps, Tour, TourFacadeProps, type TourInteractOutsideEvent, type TourPointerDownOutsideEvent, type TourStepDetails, Transfer, TransferItem, TransferProps, type TreeCollection, type TreeCollectionOptions, type TreeNode, TreeSelect, TreeSelectNode, TreeSelectProps, TreeView, Typography, type UIMessage, type UIMessagePart, type UseAsyncListProps, type UseAsyncListReturn, type UseDownloadProps, type UseDownloadReturn, type UseListCollectionProps, type UseListCollectionReturn, type UseListSelectionProps, type UseListSelectionReturn, type UseMentionsHandlers, type UseMentionsOptions, type UsePresenceContext, type UsePresenceProps, type UsePresenceReturn, User, UserProps, Video, VirtualList, VirtualListProps, Watermark, WatermarkProps, createColumnHelper, createFileTreeCollection, createGridCollection, createToaster, createTreeCollection, formatMediaTime, useAsyncList, useConfig, useDownload, useField, useForm, useListCollection, useListSelection, useMentions, usePresence, usePresenceContext, useTour };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bysages/react",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "By Sages Elements components for React — styled by the paper-and-ink design tokens",
5
5
  "keywords": [
6
6
  "accessible",
@@ -53,7 +53,7 @@
53
53
  "@tanstack/react-virtual": "3.14.14",
54
54
  "@zag-js/cascade-select": "1.45.0",
55
55
  "@zag-js/react": "1.45.0",
56
- "@bysages/core": "0.4.3"
56
+ "@bysages/core": "0.4.4"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@json-render/core": "0.21.0",