@botiverse/raft-ui 0.29.0 → 0.31.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,36 @@
1
+ ## [0.31.0](https://github.com/botiverse/raft-design/compare/v0.30.0...v0.31.0) (2026-10-23)
2
+
3
+ ### Design System
4
+
5
+ - **A row swipe on a phone**: a swipe starts once the finger has gone 10px on the web (twice as far across as up or down), and swipes that start within 24px of the screen edge stay with the browser. A release applies the action past 40% of the row's width, or past 20% with a quick flick. The uncovered layer is soft until a release would apply, then solid `success` with ink, and ticks once on Android as it turns solid. It says "Done"; the menu keeps "Mark as Done". The row leaves at once, with an 8-second Undo. On a phone, Activity's Mark as Done stays in the row as a button only screen readers see. ([#775](https://github.com/botiverse/raft-design/pull/775), [#776](https://github.com/botiverse/raft-design/pull/776))
6
+ - Why: Activity on a phone moved Mark as Done to the swipe (stdrc); the swipe must be predictable, reversible, and reachable without swiping.
7
+ - Affects: a rule for products.
8
+ - Docs: https://raft-design.botiverse.build/patterns/responsive/#touch-screens
9
+
10
+ ### Added
11
+
12
+ - **ChoiceList** (wip): ([#774](https://github.com/botiverse/raft-design/pull/774))
13
+ - `groups` with headings. Each group is named by its heading, and the arrow keys cross groups.
14
+ - `searchValue` / `onSearchValueChange`, so the app can read and set the search text. It hears `""` when the box hides.
15
+ - `footer`, which stays in view while the rows scroll.
16
+ - `fill`, which fills its container's height.
17
+ - The frame now wraps a `choice-list-scroller`.
18
+ - Docs: https://raft-design.botiverse.build/components/choice-list/
19
+
20
+ ## [0.30.0](https://github.com/botiverse/raft-design/compare/v0.29.0...v0.30.0) (2026-10-23)
21
+
22
+ ### Design System
23
+
24
+ - **A dialog whose job is to choose keeps an open list**: when choosing is the dialog's main content (a computer to move an agent to, people to add), the choices stay open as a list at any count, not a select: a radio circle for one choice, a checkbox for several. A search field shows always when people look for something they know by name, and from 6 choices when they choose by comparing. Filtering never clears the choice; the chosen rows stay first. A row may have two description lines, and a details button at its end outside the row's label. ([#767](https://github.com/botiverse/raft-design/pull/767), [#772](https://github.com/botiverse/raft-design/pull/772))
25
+ - Why: a dropdown hides what people came to compare (stdrc, xxchan).
26
+ - Affects: a rule for products; raft-ui adds `ChoiceList` (wip).
27
+ - Docs: https://raft-design.botiverse.build/components/choice-list/
28
+
29
+ ### Added
30
+
31
+ - **ChoiceList** (wip, `@botiverse/raft-ui/wip`): an always-open list to choose one (`value: string | null`) or several (`multiple`, `string[]`), built on Base UI RadioGroup / CheckboxGroup. `items` take a label, search text, up to two description lines, media, a row-end action and disabled; `search="auto" | "always"`; `searchLabel` and `clearSearchLabel` are required. Rows are 36px with a mouse and 44px on a touch screen. ([#772](https://github.com/botiverse/raft-design/pull/772))
32
+ - Docs: https://raft-design.botiverse.build/components/choice-list/
33
+
1
34
  ## [0.29.0](https://github.com/botiverse/raft-design/compare/v0.28.0...v0.29.0) (2026-10-23)
2
35
 
3
36
  ### Design System
@@ -16,6 +16,9 @@ import { Menu } from "@base-ui/react/menu";
16
16
  import { Popover } from "@base-ui/react/popover";
17
17
  import { PointerSensor, TouchSensor, useSensor } from "@dnd-kit/core";
18
18
  import { PreviewCard } from "@base-ui/react/preview-card";
19
+ import { Input } from "@base-ui/react/input";
20
+ import { Radio } from "@base-ui/react/radio";
21
+ import { RadioGroup } from "@base-ui/react/radio-group";
19
22
  import { Toggle } from "@base-ui/react/toggle";
20
23
  import { Toolbar } from "@base-ui/react/toolbar";
21
24
  //#region src/lib/decision-width.ts
@@ -3499,6 +3502,232 @@ function useOverflowTitle(ref, title) {
3499
3502
  }, [own, ref]);
3500
3503
  }
3501
3504
  //#endregion
3505
+ //#region src/components/input-group/input-group.tsx
3506
+ const inputGroup = tv$1({
3507
+ slots: {
3508
+ root: [
3509
+ "group/input-group relative flex w-full min-w-0 items-center",
3510
+ "has-data-[input-group-trim=inline-end]:[--ig-control-pr:0]",
3511
+ "h-control overflow-hidden rounded-control border-[1.5px] border-line-field bg-layer-card text-foreground",
3512
+ "shadow-none transition-shadow duration-90 ease-out has-focus-visible:shadow-focus",
3513
+ "has-[[data-slot=input-group-control][data-invalid]]:border-danger-strong",
3514
+ "has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:border-line-hairline has-[[data-slot=input-group-control]:disabled]:bg-fill-muted",
3515
+ "has-[[data-slot=input-group-control]:disabled]:[--ig-addon-fg:var(--foreground-disabled)]",
3516
+ "has-[[data-slot=input-group-control]:disabled]:[--ig-text-fg:var(--foreground-disabled)]"
3517
+ ],
3518
+ addon: [
3519
+ "flex shrink-0 items-center justify-center gap-2 px-3",
3520
+ "select-none",
3521
+ "text-(--ig-addon-fg,var(--ig-addon-fg-default,var(--foreground-hint)))",
3522
+ "[&>svg:not([class*='size-'])]:size-4.5"
3523
+ ],
3524
+ text: [
3525
+ "flex min-w-0 max-w-1/2 shrink-0 items-center px-3",
3526
+ "select-none",
3527
+ "font-mono text-mono-code",
3528
+ "text-(--ig-text-fg,var(--ig-text-fg-default,var(--foreground-hint)))"
3529
+ ],
3530
+ textInner: ["min-w-0 truncate"],
3531
+ control: [
3532
+ "min-w-0 flex-1 bg-transparent pl-3 outline-none",
3533
+ "pr-(--ig-control-pr,0.75rem)",
3534
+ "h-full py-0 font-heading text-field font-field",
3535
+ "text-foreground placeholder:text-foreground-hint",
3536
+ "disabled:cursor-not-allowed disabled:text-foreground-disabled disabled:placeholder:text-foreground-disabled"
3537
+ ]
3538
+ },
3539
+ variants: {
3540
+ align: {
3541
+ "inline-start": {
3542
+ addon: "order-first",
3543
+ text: "order-first"
3544
+ },
3545
+ "inline-end": {
3546
+ addon: "order-last",
3547
+ text: "order-last"
3548
+ }
3549
+ },
3550
+ variant: {
3551
+ default: {},
3552
+ container: {
3553
+ addon: [
3554
+ "self-stretch",
3555
+ "[--ig-addon-fg-default:var(--foreground-hint)]",
3556
+ "border-line-hairline bg-fill-muted"
3557
+ ],
3558
+ text: [
3559
+ "self-stretch",
3560
+ "[--ig-text-fg-default:var(--foreground-hint)]",
3561
+ "border-line-hairline bg-fill-muted"
3562
+ ]
3563
+ }
3564
+ }
3565
+ },
3566
+ compoundVariants: [
3567
+ {
3568
+ variant: "default",
3569
+ align: "inline-start",
3570
+ class: {
3571
+ addon: "[&~[data-slot=input-group-control]]:pl-0",
3572
+ text: "[&~[data-slot=input-group-control]]:pl-0"
3573
+ }
3574
+ },
3575
+ {
3576
+ variant: "container",
3577
+ align: "inline-start",
3578
+ class: {
3579
+ addon: "border-r",
3580
+ text: "border-r"
3581
+ }
3582
+ },
3583
+ {
3584
+ variant: "container",
3585
+ align: "inline-end",
3586
+ class: {
3587
+ addon: "border-l",
3588
+ text: "border-l"
3589
+ }
3590
+ },
3591
+ {
3592
+ variant: "default",
3593
+ align: "inline-start",
3594
+ class: {
3595
+ addon: "pr-2",
3596
+ text: "pr-0.5"
3597
+ }
3598
+ },
3599
+ {
3600
+ variant: "default",
3601
+ align: "inline-end",
3602
+ class: {
3603
+ addon: [
3604
+ "pl-2",
3605
+ "*:data-[slot=button]:size-control-embedded *:data-[slot=button]:rounded-chip",
3606
+ "[&>[data-slot=button]_svg:not([class*='size-'])]:size-4",
3607
+ "[&>[data-slot=button]:last-child]:me-[calc(var(--control-embedded-inset)-0.75rem-1px)]"
3608
+ ],
3609
+ text: "pl-0.5"
3610
+ }
3611
+ }
3612
+ ],
3613
+ defaultVariants: {
3614
+ align: "inline-start",
3615
+ variant: "default"
3616
+ }
3617
+ });
3618
+ function InputGroup({ className, ...props }) {
3619
+ const { root } = inputGroup();
3620
+ return /* @__PURE__ */ jsx("div", {
3621
+ "data-slot": "input-group",
3622
+ className: root({ className }),
3623
+ ...props
3624
+ });
3625
+ }
3626
+ function InputGroupAddonRoot({ align = "inline-start", variant = "default", className, ...props }) {
3627
+ const { addon } = inputGroup({
3628
+ align,
3629
+ variant
3630
+ });
3631
+ return /* @__PURE__ */ jsx("div", {
3632
+ "data-slot": "input-group-addon",
3633
+ "data-align": align,
3634
+ "data-variant": variant,
3635
+ "data-input-group-trim": variant === "default" && align === "inline-end" ? align : void 0,
3636
+ className: addon({ className }),
3637
+ ...props
3638
+ });
3639
+ }
3640
+ function TextAddon({ align = "inline-start", variant = "default", className, ref, title, children, ...props }) {
3641
+ const { text, textInner } = inputGroup({
3642
+ align,
3643
+ variant
3644
+ });
3645
+ const overflowRef = useOverflowTitle(ref, title);
3646
+ return /* @__PURE__ */ jsx("span", {
3647
+ ref: overflowRef,
3648
+ title,
3649
+ "data-slot": "input-group-text",
3650
+ "data-align": align,
3651
+ "data-variant": variant,
3652
+ "data-input-group-trim": variant === "default" && align === "inline-end" ? align : void 0,
3653
+ className: text({ className }),
3654
+ ...props,
3655
+ children: /* @__PURE__ */ jsx("span", {
3656
+ "data-slot": "input-group-text-value",
3657
+ className: textInner(),
3658
+ children
3659
+ })
3660
+ });
3661
+ }
3662
+ const InputGroupAddon = Object.assign(InputGroupAddonRoot, { Text: TextAddon });
3663
+ function InputGroupInput({ className, suppressPasswordManager, "data-invalid": dataInvalid, ...props }) {
3664
+ const { control } = inputGroup();
3665
+ return /* @__PURE__ */ jsx(Input, {
3666
+ "data-slot": "input-group-control",
3667
+ className: control({ className: [suppressPasswordManager && "keeper-ignore", className] }),
3668
+ "data-1p-ignore": suppressPasswordManager ? "true" : void 0,
3669
+ "data-bwignore": suppressPasswordManager ? "true" : void 0,
3670
+ "data-form-type": suppressPasswordManager ? "other" : void 0,
3671
+ "data-lpignore": suppressPasswordManager ? "true" : void 0,
3672
+ ...props,
3673
+ "data-invalid": dataInvalid || void 0,
3674
+ "aria-invalid": dataInvalid ? "true" : void 0
3675
+ });
3676
+ }
3677
+ //#endregion
3678
+ //#region src/components/radio-group/radio-group.tsx
3679
+ const radioGroup = tv$1({ slots: {
3680
+ root: [
3681
+ "grid w-full gap-2",
3682
+ "data-disabled:[&>label]:cursor-not-allowed data-disabled:[&>label]:text-foreground-disabled",
3683
+ "data-disabled:[&>label_*]:text-foreground-disabled",
3684
+ "font-sans [&>label]:font-semibold"
3685
+ ],
3686
+ item: [
3687
+ "relative inline-flex shrink-0 touch-manipulation items-center justify-center rounded-full outline-none",
3688
+ "data-disabled:cursor-not-allowed",
3689
+ "after:absolute after:-inset-x-3 after:-inset-y-2 after:content-['']",
3690
+ "pointer-coarse:after:-inset-y-[calc(--spacing(3)+1.5px)]",
3691
+ "[label>&]:my-[max(0px,calc((1lh-1.25rem)/2))]",
3692
+ "[label>&]:after:-inset-y-[calc(max(0px,(1lh-1.25rem)/2)+5.5px)]",
3693
+ "size-5 border-[1.5px] border-line-strong bg-layer-card text-foreground",
3694
+ "focus-visible:shadow-focus",
3695
+ "data-disabled:border-foreground-disabled data-disabled:bg-fill-muted data-disabled:text-foreground-disabled"
3696
+ ],
3697
+ indicator: ["pointer-events-none flex size-full items-center justify-center"],
3698
+ dot: ["block rounded-full bg-current", "size-2"]
3699
+ } });
3700
+ function RadioGroup$1({ className, ...props }) {
3701
+ const { root } = radioGroup();
3702
+ return /* @__PURE__ */ jsx(RadioGroup, {
3703
+ "data-slot": "radio-group",
3704
+ className: root({ className }),
3705
+ ...props
3706
+ });
3707
+ }
3708
+ function RadioGroupIndicator({ className, children, ...props }) {
3709
+ const { indicator, dot } = radioGroup();
3710
+ return /* @__PURE__ */ jsx(Radio.Indicator, {
3711
+ "data-slot": "radio-group-indicator",
3712
+ className: indicator({ className }),
3713
+ ...props,
3714
+ children: children ?? /* @__PURE__ */ jsx("span", {
3715
+ "data-slot": "radio-group-dot",
3716
+ className: dot()
3717
+ })
3718
+ });
3719
+ }
3720
+ function RadioGroupItem({ appearance = "default", className, children, ...props }) {
3721
+ const { item } = radioGroup();
3722
+ const itemClassName = appearance === "none" ? cn("sr-only", "data-disabled:cursor-not-allowed", className) : item({ className });
3723
+ return /* @__PURE__ */ jsx(Radio.Root, {
3724
+ "data-slot": "radio-group-item",
3725
+ className: itemClassName,
3726
+ ...props,
3727
+ children: children ?? (appearance === "default" ? /* @__PURE__ */ jsx(RadioGroupIndicator, {}) : null)
3728
+ });
3729
+ }
3730
+ //#endregion
3502
3731
  //#region src/components/avatar/avatar.tsx
3503
3732
  const avatar = tv$1({
3504
3733
  slots: {
@@ -5996,4 +6225,4 @@ function InboxItemActions({ className, render, reveal, ...props }) {
5996
6225
  });
5997
6226
  }
5998
6227
  //#endregion
5999
- export { MessageTextSelectionToolbarSeparator as $, PopoverSeparator as $n, ListRowMeta as $r, MessageItemSearchMatch as $t, MessageList as A, TextLinkExternalIcon as Ai, PreviewCardTrigger as An, Panel as Ar, MessageItemBadgeSeparator as At, MessageQuotedPreviewHeader as B, useThemeScopeProps as Bi, MobileNavServerPopoverRowDescription as Bn, ScrollAreaScrollbar as Br, MessageItemInlineStatus as Bt, MessageListJumpPill as C, DialogSheetBack as Ci, PreviewCardFooter as Cn, DropdownMenuSeparator as Cr, MessageReactionTooltipContent as Ct, MessageListEndFade as D, PanelAction as Di, PreviewCardPortal as Dn, DropdownMenuTrigger as Dr, MessageReactionTooltipNames as Dt, MessageListDateDivider as E, DialogTrigger as Ei, PreviewCardPopup as En, DropdownMenuSubmenuTrigger as Er, MessageReactionTooltipNameText as Et, MessageQuotedPreviewAuthorDelegatedBy as F, Spinner as Fi, MobileNavServerPopoverDestinations as Fn, PanelScrollViewport as Fr, MessageItemDelegatedAvatar as Ft, MessageQuotedPreviewUnavailable as G, useStackedActions as Gi, PopoverBackdrop as Gn, Status as Gr, MessageItemSenderGroup as Gt, MessageQuotedPreviewText as H, ThemeStateContext as Hi, Popover$1 as Hn, ScrollAreaViewport as Hr, MessageItemSender as Ht, MessageQuotedPreviewAuthorMeta as I, defaultNativeButton as Ii, MobileNavServerPopoverGroup as In, PanelSection as Ir, MessageItemDelegatedBy as It, MessageEmbedFooter as J, headEdges as Ji, PopoverContent as Jn, ListRowBottom as Jr, MessageItemBody as Jt, MessageEmbed as K, controlIconInset as Ki, PopoverBody as Kn, ListRow as Kr, MessageItemTime as Kt, MessageQuotedPreviewAuthorName as L, OverlayLayerProvider as Li, MobileNavServerPopoverList as Ln, ScrollArea$1 as Lr, MessageItemDelegatedByButton as Lt, MessageQuotedPreviewAttachment as M, DialogSheetReset as Mi, MobileNavServerPopover as Mn, PanelFooter as Mr, MessageItemSavedIndicator as Mt, MessageQuotedPreviewAttachments as N, Button$1 as Ni, MobileNavServerPopoverContent as Nn, PanelHeaderRoot as Nr, MessageItemToolbar as Nt, MessageListHistoryLimited as O, panelToggleAction as Oi, PreviewCardSeparator as On, Kbd as Or, MessageReactionTooltipSeparator as Ot, MessageQuotedPreviewAuthor as P, buttonVariants as Pi, MobileNavServerPopoverDestination as Pn, PanelScrollContent as Pr, MessageItemToolbarButton as Pt, MessageTextSelectionToolbarButton as Q, PopoverPortal as Qn, ListRowIcon as Qr, MessageItemFooter as Qt, MessageQuotedPreviewChannel as R, useParentOverlayKind as Ri, MobileNavServerPopoverRow as Rn, ScrollAreaContent as Rr, MessageItemDelegatedByName as Rt, MessageListJumpControls as S, DialogPortal as Si, PreviewCardEyebrow as Sn, DropdownMenuRadioItemIndicator as Sr, MessageReactionQuickRow as St, MessageListJumpPillGroup as T, DialogTitle as Ti, PreviewCardMeta as Tn, DropdownMenuSubmenu as Tr, MessageReactionTooltipName as Tt, MessageQuotedPreviewThread as U, tv$1 as Ui, PopoverActions as Un, Checkbox$1 as Ur, MessageItemSenderBadges as Ut, MessageQuotedPreviewLoading as V, useTheme as Vi, MobileNavServerPopoverRowLabel as Vn, ScrollAreaThumb as Vr, MessageItemMeta as Vt, MessageQuotedPreviewTimestamp as W, stackedActions as Wi, PopoverArrow as Wn, CheckboxIndicator as Wr, MessageItemSenderButton as Wt, messageEmbed as X, PopoverHeader as Xn, ListRowDescription as Xr, MessageItemEdited as Xt, MessageEmbedHeader as Y, decisionWidth as Yi, PopoverDescription as Yn, ListRowChevron as Yr, MessageItemContent as Yt, MessageTextSelectionToolbar as Z, PopoverPopup as Zn, ListRowGroup as Zr, MessageItemEmbedded as Zt, InboxItemTrailing as _, DialogFooter as _i, PreviewCardActions as _n, DropdownMenuLinkItem as _r, MessageReactionErrorIndicator as _t, InboxItemContext as a, TooltipPortal as ai, Avatar$1 as an, MobileNavItem as ar, MessageReferenceIcon as at, useLatestRef as b, DialogNav as bi, PreviewCardContent as bn, DropdownMenuRadioGroup as br, MessageReactionPickerStatic as bt, InboxItemLeading as c, Badge as ci, AvatarGroup as cn, DropdownMenu as cr, MessageReferencePending as ct, InboxItemMetadata as d, useMobileViewport as di, useOverflowTitle as dn, DropdownMenuContent as dr, MessageReferenceText as dt, ListRowTitle as ei, MessageItemAvatarSlot as en, PopoverTitle as er, MessageMultiSelect as et, InboxItemSelection as f, Dialog$1 as fi, measureContent as fn, DropdownMenuFooter as fr, MessageReferenceUnavailable as ft, InboxItemTitle as g, DialogDescription as gi, PreviewCard$1 as gn, DropdownMenuLabel as gr, MessageReactionCount as gt, InboxItemTimestamp as h, DialogContent as hi, readNow as hn, DropdownMenuItemLabel as hr, MessageReactionChip as ht, InboxItemContent as i, TooltipContent as ii, searchHit as in, useMouseOnlyPointerSensor as ir, MessageReferenceChip as it, MessageQuotedPreview as j, textLinkVariants as ji, MobileNavServerItem as jn, PanelBody as jr, MessageItemReadReceipt as jt, MessageListNotice as k, TextLink as ki, PreviewCardTitle as kn, KbdGroup as kr, MessageItemBadge as kt, InboxItemMarks as l, DialogCommit as li, AvatarGroupCount as ln, DropdownMenuCheckboxItem as lr, MessageReferenceReadMark as lt, InboxItemSubtitle as m, DialogClose as mi, observeTruncation as mn, DropdownMenuItemCount as mr, MessageReactionAddButton as mt, InboxItemActions as n, ListRowValue as ni, MessageItemGutter as nn, PopoverViewport as nr, MessageMultiSelectToolbar as nt, InboxItemHeading as o, TooltipProvider as oi, AvatarBadge as on, MobileNavLabel as or, MessageReferenceIndicator as ot, InboxItemSender as p, DialogBody as pi, measureElement as pn, DropdownMenuItem as pr, inlineChip as pt, MessageEmbedContent as q, headEdgePull as qi, PopoverClose as qn, ListRowBody as qr, MessageItemAttachments as qt, InboxItemBody as r, Tooltip$1 as ri, MessageItem as rn, useHoldThenMoveTouchSensor as rr, MessageMultiSelectToolbarActions as rt, InboxItemHoverTarget as s, TooltipTrigger as si, AvatarFallback as sn, MobileNavRoot as sr, MessageReferenceLabel as st, InboxItem as t, ListRowTop as ti, MessageItemContinuationTime as tn, PopoverTrigger as tr, MessageMultiSelectCheckbox as tt, InboxItemMessage as u, DialogSheetContent as ui, AvatarImage as un, DropdownMenuCheckboxItemIndicator as ur, MessageReferenceSuffix as ut, InboxItemTrigger as v, DialogFooterNote as vi, PreviewCardArrow as vn, DropdownMenuPopup as vr, MessageReactionGlyph as vt, MessageListJumpPillDismiss as w, DialogSurface as wi, PreviewCardHeader as wn, DropdownMenuShortcut as wr, MessageReactionTooltipMeta as wt, Skeleton as x, DialogOverlay as xi, PreviewCardDescription as xn, DropdownMenuRadioItem as xr, MessageReactionQuickButton as xt, inboxItem as y, DialogHeader as yi, PreviewCardBody as yn, DropdownMenuPortal as yr, MessageReactionPickerContent as yt, MessageQuotedPreviewContent as z, withOverlayLayer as zi, MobileNavServerPopoverRowBody as zn, ScrollAreaCorner as zr, MessageItemHeader as zt };
6228
+ export { MessageTextSelectionToolbarSeparator as $, headEdgePull as $i, PopoverClose as $n, ListRowBody as $r, MessageItemSearchMatch as $t, MessageList as A, DialogSurface as Ai, PreviewCardHeader as An, DropdownMenuShortcut as Ar, MessageItemBadgeSeparator as At, MessageQuotedPreviewHeader as B, buttonVariants as Bi, MobileNavServerPopoverDestination as Bn, PanelScrollContent as Br, MessageItemInlineStatus as Bt, MessageListJumpPill as C, DialogFooter as Ci, PreviewCardActions as Cn, DropdownMenuLinkItem as Cr, MessageReactionTooltipContent as Ct, MessageListEndFade as D, DialogOverlay as Di, PreviewCardDescription as Dn, DropdownMenuRadioItem as Dr, MessageReactionTooltipNames as Dt, MessageListDateDivider as E, DialogNav as Ei, PreviewCardContent as En, DropdownMenuRadioGroup as Er, MessageReactionTooltipNameText as Et, MessageQuotedPreviewAuthorDelegatedBy as F, TextLink as Fi, PreviewCardTitle as Fn, KbdGroup as Fr, MessageItemDelegatedAvatar as Ft, MessageQuotedPreviewUnavailable as G, withOverlayLayer as Gi, MobileNavServerPopoverRowBody as Gn, ScrollAreaCorner as Gr, MessageItemSenderGroup as Gt, MessageQuotedPreviewText as H, defaultNativeButton as Hi, MobileNavServerPopoverGroup as Hn, PanelSection as Hr, MessageItemSender as Ht, MessageQuotedPreviewAuthorMeta as I, TextLinkExternalIcon as Ii, PreviewCardTrigger as In, Panel as Ir, MessageItemDelegatedBy as It, MessageEmbedFooter as J, ThemeStateContext as Ji, Popover$1 as Jn, ScrollAreaViewport as Jr, MessageItemBody as Jt, MessageEmbed as K, useThemeScopeProps as Ki, MobileNavServerPopoverRowDescription as Kn, ScrollAreaScrollbar as Kr, MessageItemTime as Kt, MessageQuotedPreviewAuthorName as L, textLinkVariants as Li, MobileNavServerItem as Ln, PanelBody as Lr, MessageItemDelegatedByButton as Lt, MessageQuotedPreviewAttachment as M, DialogTrigger as Mi, PreviewCardPopup as Mn, DropdownMenuSubmenuTrigger as Mr, MessageItemSavedIndicator as Mt, MessageQuotedPreviewAttachments as N, PanelAction as Ni, PreviewCardPortal as Nn, DropdownMenuTrigger as Nr, MessageItemToolbar as Nt, MessageListHistoryLimited as O, DialogPortal as Oi, PreviewCardEyebrow as On, DropdownMenuRadioItemIndicator as Or, MessageReactionTooltipSeparator as Ot, MessageQuotedPreviewAuthor as P, panelToggleAction as Pi, PreviewCardSeparator as Pn, Kbd as Pr, MessageItemToolbarButton as Pt, MessageTextSelectionToolbarButton as Q, controlIconInset as Qi, PopoverBody as Qn, ListRow as Qr, MessageItemFooter as Qt, MessageQuotedPreviewChannel as R, DialogSheetReset as Ri, MobileNavServerPopover as Rn, PanelFooter as Rr, MessageItemDelegatedByName as Rt, MessageListJumpControls as S, DialogDescription as Si, PreviewCard$1 as Sn, DropdownMenuLabel as Sr, MessageReactionQuickRow as St, MessageListJumpPillGroup as T, DialogHeader as Ti, PreviewCardBody as Tn, DropdownMenuPortal as Tr, MessageReactionTooltipName as Tt, MessageQuotedPreviewThread as U, OverlayLayerProvider as Ui, MobileNavServerPopoverList as Un, ScrollArea$1 as Ur, MessageItemSenderBadges as Ut, MessageQuotedPreviewLoading as V, Spinner as Vi, MobileNavServerPopoverDestinations as Vn, PanelScrollViewport as Vr, MessageItemMeta as Vt, MessageQuotedPreviewTimestamp as W, useParentOverlayKind as Wi, MobileNavServerPopoverRow as Wn, ScrollAreaContent as Wr, MessageItemSenderButton as Wt, messageEmbed as X, stackedActions as Xi, PopoverArrow as Xn, CheckboxIndicator as Xr, MessageItemEdited as Xt, MessageEmbedHeader as Y, tv$1 as Yi, PopoverActions as Yn, Checkbox$1 as Yr, MessageItemContent as Yt, MessageTextSelectionToolbar as Z, useStackedActions as Zi, PopoverBackdrop as Zn, Status as Zr, MessageItemEmbedded as Zt, InboxItemTrailing as _, useMobileViewport as _i, useOverflowTitle as _n, DropdownMenuContent as _r, MessageReactionErrorIndicator as _t, InboxItemContext as a, ListRowMeta as ai, Avatar$1 as an, PopoverSeparator as ar, MessageReferenceIcon as at, useLatestRef as b, DialogClose as bi, observeTruncation as bn, DropdownMenuItemCount as br, MessageReactionPickerStatic as bt, InboxItemLeading as c, ListRowValue as ci, AvatarGroup as cn, PopoverViewport as cr, MessageReferencePending as ct, InboxItemMetadata as d, TooltipPortal as di, RadioGroup$1 as dn, MobileNavItem as dr, MessageReferenceText as dt, headEdges as ea, ListRowBottom as ei, MessageItemAvatarSlot as en, PopoverContent as er, MessageMultiSelect as et, InboxItemSelection as f, TooltipProvider as fi, RadioGroupIndicator as fn, MobileNavLabel as fr, MessageReferenceUnavailable as ft, InboxItemTitle as g, DialogSheetContent as gi, InputGroupInput as gn, DropdownMenuCheckboxItemIndicator as gr, MessageReactionCount as gt, InboxItemTimestamp as h, DialogCommit as hi, InputGroupAddon as hn, DropdownMenuCheckboxItem as hr, MessageReactionChip as ht, InboxItemContent as i, ListRowIcon as ii, searchHit as in, PopoverPortal as ir, MessageReferenceChip as it, MessageQuotedPreview as j, DialogTitle as ji, PreviewCardMeta as jn, DropdownMenuSubmenu as jr, MessageItemReadReceipt as jt, MessageListNotice as k, DialogSheetBack as ki, PreviewCardFooter as kn, DropdownMenuSeparator as kr, MessageItemBadge as kt, InboxItemMarks as l, Tooltip$1 as li, AvatarGroupCount as ln, useHoldThenMoveTouchSensor as lr, MessageReferenceReadMark as lt, InboxItemSubtitle as m, Badge as mi, InputGroup as mn, DropdownMenu as mr, MessageReactionAddButton as mt, InboxItemActions as n, ListRowDescription as ni, MessageItemGutter as nn, PopoverHeader as nr, MessageMultiSelectToolbar as nt, InboxItemHeading as o, ListRowTitle as oi, AvatarBadge as on, PopoverTitle as or, MessageReferenceIndicator as ot, InboxItemSender as p, TooltipTrigger as pi, RadioGroupItem as pn, MobileNavRoot as pr, inlineChip as pt, MessageEmbedContent as q, useTheme as qi, MobileNavServerPopoverRowLabel as qn, ScrollAreaThumb as qr, MessageItemAttachments as qt, InboxItemBody as r, ListRowGroup as ri, MessageItem as rn, PopoverPopup as rr, MessageMultiSelectToolbarActions as rt, InboxItemHoverTarget as s, ListRowTop as si, AvatarFallback as sn, PopoverTrigger as sr, MessageReferenceLabel as st, InboxItem as t, decisionWidth as ta, ListRowChevron as ti, MessageItemContinuationTime as tn, PopoverDescription as tr, MessageMultiSelectCheckbox as tt, InboxItemMessage as u, TooltipContent as ui, AvatarImage as un, useMouseOnlyPointerSensor as ur, MessageReferenceSuffix as ut, InboxItemTrigger as v, Dialog$1 as vi, measureContent as vn, DropdownMenuFooter as vr, MessageReactionGlyph as vt, MessageListJumpPillDismiss as w, DialogFooterNote as wi, PreviewCardArrow as wn, DropdownMenuPopup as wr, MessageReactionTooltipMeta as wt, Skeleton as x, DialogContent as xi, readNow as xn, DropdownMenuItemLabel as xr, MessageReactionQuickButton as xt, inboxItem as y, DialogBody as yi, measureElement as yn, DropdownMenuItem as yr, MessageReactionPickerContent as yt, MessageQuotedPreviewContent as z, Button$1 as zi, MobileNavServerPopoverContent as zn, PanelHeaderRoot as zr, MessageItemHeader as zt };
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { cn } from "./cn.mjs";
2
- import { $ as MessageTextSelectionToolbarSeparator, $n as PopoverSeparator, $r as ListRowMeta, $t as MessageItemSearchMatch, A as MessageList, Ai as TextLinkExternalIcon, An as PreviewCardTrigger, Ar as Panel, At as MessageItemBadgeSeparator, B as MessageQuotedPreviewHeader, Bi as useThemeScopeProps, Br as ScrollAreaScrollbar, Bt as MessageItemInlineStatus, Cr as DropdownMenuSeparator, Ct as MessageReactionTooltipContent, D as MessageListEndFade, Di as PanelAction, Dn as PreviewCardPortal, Dr as DropdownMenuTrigger, Dt as MessageReactionTooltipNames, E as MessageListDateDivider, Ei as DialogTrigger, En as PreviewCardPopup, Er as DropdownMenuSubmenuTrigger, Et as MessageReactionTooltipNameText, Fi as Spinner, Fr as PanelScrollViewport, G as MessageQuotedPreviewUnavailable, Gi as useStackedActions, Gn as PopoverBackdrop, Gr as Status, Gt as MessageItemSenderGroup, H as MessageQuotedPreviewText, Hi as ThemeStateContext, Hn as Popover, Hr as ScrollAreaViewport, Ht as MessageItemSender, I as MessageQuotedPreviewAuthorMeta, Ii as defaultNativeButton, Ir as PanelSection, J as MessageEmbedFooter, Ji as headEdges, Jn as PopoverContent, Jr as ListRowBottom, Jt as MessageItemBody, K as MessageEmbed, Ki as controlIconInset, Kr as ListRow, Kt as MessageItemTime, L as MessageQuotedPreviewAuthorName, Lr as ScrollArea, M as MessageQuotedPreviewAttachment, Mi as DialogSheetReset, Mr as PanelFooter, Mt as MessageItemSavedIndicator, N as MessageQuotedPreviewAttachments, Ni as Button, Nr as PanelHeaderRoot, Nt as MessageItemToolbar, O as MessageListHistoryLimited, Oi as panelToggleAction, On as PreviewCardSeparator, Or as Kbd, Ot as MessageReactionTooltipSeparator, P as MessageQuotedPreviewAuthor, Pi as buttonVariants, Pr as PanelScrollContent, Pt as MessageItemToolbarButton, Q as MessageTextSelectionToolbarButton, Qn as PopoverPortal, Qr as ListRowIcon, Qt as MessageItemFooter, R as MessageQuotedPreviewChannel, Ri as useParentOverlayKind, Rr as ScrollAreaContent, Si as DialogPortal, Sr as DropdownMenuRadioItemIndicator, St as MessageReactionQuickRow, Ti as DialogTitle, Tr as DropdownMenuSubmenu, Tt as MessageReactionTooltipName, U as MessageQuotedPreviewThread, Ui as tv, Ur as Checkbox, Ut as MessageItemSenderBadges, V as MessageQuotedPreviewLoading, Vi as useTheme, Vr as ScrollAreaThumb, Vt as MessageItemMeta, W as MessageQuotedPreviewTimestamp, Wi as stackedActions, Wn as PopoverArrow, Wr as CheckboxIndicator, Wt as MessageItemSenderButton, X as messageEmbed, Xn as PopoverHeader, Xr as ListRowDescription, Xt as MessageItemEdited, Y as MessageEmbedHeader, Yi as decisionWidth, Yn as PopoverDescription, Yr as ListRowChevron, Yt as MessageItemContent, Z as MessageTextSelectionToolbar, Zn as PopoverPopup, Zr as ListRowGroup, Zt as MessageItemEmbedded, _ as InboxItemTrailing, _i as DialogFooter, _t as MessageReactionErrorIndicator, a as InboxItemContext, ai as TooltipPortal, an as Avatar, ar as MobileNavItem, b as useLatestRef, bi as DialogNav, bn as PreviewCardContent, br as DropdownMenuRadioGroup, bt as MessageReactionPickerStatic, c as InboxItemLeading, ci as Badge, cn as AvatarGroup, cr as DropdownMenu, ct as MessageReferencePending, d as InboxItemMetadata, di as useMobileViewport, dn as useOverflowTitle, dr as DropdownMenuContent, dt as MessageReferenceText, ei as ListRowTitle, en as MessageItemAvatarSlot, er as PopoverTitle, et as MessageMultiSelect, f as InboxItemSelection, fi as Dialog, fr as DropdownMenuFooter, ft as MessageReferenceUnavailable, g as InboxItemTitle, gi as DialogDescription, gn as PreviewCard, gr as DropdownMenuLabel, gt as MessageReactionCount, h as InboxItemTimestamp, hi as DialogContent, hr as DropdownMenuItemLabel, ht as MessageReactionChip, i as InboxItemContent, ii as TooltipContent, in as searchHit, ir as useMouseOnlyPointerSensor, it as MessageReferenceChip, j as MessageQuotedPreview, ji as textLinkVariants, jr as PanelBody, jt as MessageItemReadReceipt, k as MessageListNotice, ki as TextLink, kn as PreviewCardTitle, kr as KbdGroup, kt as MessageItemBadge, l as InboxItemMarks, ln as AvatarGroupCount, lr as DropdownMenuCheckboxItem, lt as MessageReferenceReadMark, m as InboxItemSubtitle, mi as DialogClose, mr as DropdownMenuItemCount, mt as MessageReactionAddButton, n as InboxItemActions, ni as ListRowValue, nn as MessageItemGutter, nr as PopoverViewport, nt as MessageMultiSelectToolbar, o as InboxItemHeading, oi as TooltipProvider, on as AvatarBadge, or as MobileNavLabel, ot as MessageReferenceIndicator, p as InboxItemSender, pi as DialogBody, pr as DropdownMenuItem, pt as inlineChip, q as MessageEmbedContent, qi as headEdgePull, qn as PopoverClose, qr as ListRowBody, qt as MessageItemAttachments, r as InboxItemBody, ri as Tooltip, rn as MessageItem, rr as useHoldThenMoveTouchSensor, rt as MessageMultiSelectToolbarActions, s as InboxItemHoverTarget, si as TooltipTrigger, sn as AvatarFallback, sr as MobileNavRoot, st as MessageReferenceLabel, t as InboxItem, ti as ListRowTop, tn as MessageItemContinuationTime, tr as PopoverTrigger, tt as MessageMultiSelectCheckbox, u as InboxItemMessage, un as AvatarImage, ur as DropdownMenuCheckboxItemIndicator, ut as MessageReferenceSuffix, v as InboxItemTrigger, vn as PreviewCardArrow, vr as DropdownMenuPopup, vt as MessageReactionGlyph, wi as DialogSurface, wn as PreviewCardHeader, wr as DropdownMenuShortcut, wt as MessageReactionTooltipMeta, x as Skeleton, xi as DialogOverlay, xn as PreviewCardDescription, xr as DropdownMenuRadioItem, xt as MessageReactionQuickButton, yi as DialogHeader, yr as DropdownMenuPortal, yt as MessageReactionPickerContent, z as MessageQuotedPreviewContent, zi as withOverlayLayer, zr as ScrollAreaCorner, zt as MessageItemHeader } from "./inbox-item-B-IdTaxl.mjs";
2
+ import { $ as MessageTextSelectionToolbarSeparator, $i as headEdgePull, $n as PopoverClose, $r as ListRowBody, $t as MessageItemSearchMatch, A as MessageList, Ai as DialogSurface, An as PreviewCardHeader, Ar as DropdownMenuShortcut, At as MessageItemBadgeSeparator, B as MessageQuotedPreviewHeader, Bi as buttonVariants, Br as PanelScrollContent, Bt as MessageItemInlineStatus, Ci as DialogFooter, Ct as MessageReactionTooltipContent, D as MessageListEndFade, Di as DialogOverlay, Dn as PreviewCardDescription, Dr as DropdownMenuRadioItem, Dt as MessageReactionTooltipNames, E as MessageListDateDivider, Ei as DialogNav, En as PreviewCardContent, Er as DropdownMenuRadioGroup, Et as MessageReactionTooltipNameText, Fi as TextLink, Fn as PreviewCardTitle, Fr as KbdGroup, G as MessageQuotedPreviewUnavailable, Gi as withOverlayLayer, Gr as ScrollAreaCorner, Gt as MessageItemSenderGroup, H as MessageQuotedPreviewText, Hi as defaultNativeButton, Hr as PanelSection, Ht as MessageItemSender, I as MessageQuotedPreviewAuthorMeta, Ii as TextLinkExternalIcon, In as PreviewCardTrigger, Ir as Panel, J as MessageEmbedFooter, Ji as ThemeStateContext, Jn as Popover, Jr as ScrollAreaViewport, Jt as MessageItemBody, K as MessageEmbed, Ki as useThemeScopeProps, Kr as ScrollAreaScrollbar, Kt as MessageItemTime, L as MessageQuotedPreviewAuthorName, Li as textLinkVariants, Lr as PanelBody, M as MessageQuotedPreviewAttachment, Mi as DialogTrigger, Mn as PreviewCardPopup, Mr as DropdownMenuSubmenuTrigger, Mt as MessageItemSavedIndicator, N as MessageQuotedPreviewAttachments, Ni as PanelAction, Nn as PreviewCardPortal, Nr as DropdownMenuTrigger, Nt as MessageItemToolbar, O as MessageListHistoryLimited, Oi as DialogPortal, Or as DropdownMenuRadioItemIndicator, Ot as MessageReactionTooltipSeparator, P as MessageQuotedPreviewAuthor, Pi as panelToggleAction, Pn as PreviewCardSeparator, Pr as Kbd, Pt as MessageItemToolbarButton, Q as MessageTextSelectionToolbarButton, Qi as controlIconInset, Qr as ListRow, Qt as MessageItemFooter, R as MessageQuotedPreviewChannel, Ri as DialogSheetReset, Rr as PanelFooter, Si as DialogDescription, Sn as PreviewCard, Sr as DropdownMenuLabel, St as MessageReactionQuickRow, Ti as DialogHeader, Tr as DropdownMenuPortal, Tt as MessageReactionTooltipName, U as MessageQuotedPreviewThread, Ur as ScrollArea, Ut as MessageItemSenderBadges, V as MessageQuotedPreviewLoading, Vi as Spinner, Vr as PanelScrollViewport, Vt as MessageItemMeta, W as MessageQuotedPreviewTimestamp, Wi as useParentOverlayKind, Wr as ScrollAreaContent, Wt as MessageItemSenderButton, X as messageEmbed, Xi as stackedActions, Xn as PopoverArrow, Xr as CheckboxIndicator, Xt as MessageItemEdited, Y as MessageEmbedHeader, Yi as tv, Yr as Checkbox, Yt as MessageItemContent, Z as MessageTextSelectionToolbar, Zi as useStackedActions, Zn as PopoverBackdrop, Zr as Status, Zt as MessageItemEmbedded, _ as InboxItemTrailing, _i as useMobileViewport, _n as useOverflowTitle, _r as DropdownMenuContent, _t as MessageReactionErrorIndicator, a as InboxItemContext, ai as ListRowMeta, an as Avatar, ar as PopoverSeparator, b as useLatestRef, bi as DialogClose, br as DropdownMenuItemCount, bt as MessageReactionPickerStatic, c as InboxItemLeading, ci as ListRowValue, cn as AvatarGroup, cr as PopoverViewport, ct as MessageReferencePending, d as InboxItemMetadata, di as TooltipPortal, dn as RadioGroup, dr as MobileNavItem, dt as MessageReferenceText, ea as headEdges, ei as ListRowBottom, en as MessageItemAvatarSlot, er as PopoverContent, et as MessageMultiSelect, f as InboxItemSelection, fi as TooltipProvider, fn as RadioGroupIndicator, fr as MobileNavLabel, ft as MessageReferenceUnavailable, g as InboxItemTitle, gn as InputGroupInput, gr as DropdownMenuCheckboxItemIndicator, gt as MessageReactionCount, h as InboxItemTimestamp, hn as InputGroupAddon, hr as DropdownMenuCheckboxItem, ht as MessageReactionChip, i as InboxItemContent, ii as ListRowIcon, in as searchHit, ir as PopoverPortal, it as MessageReferenceChip, j as MessageQuotedPreview, ji as DialogTitle, jr as DropdownMenuSubmenu, jt as MessageItemReadReceipt, k as MessageListNotice, kr as DropdownMenuSeparator, kt as MessageItemBadge, l as InboxItemMarks, li as Tooltip, ln as AvatarGroupCount, lr as useHoldThenMoveTouchSensor, lt as MessageReferenceReadMark, m as InboxItemSubtitle, mi as Badge, mn as InputGroup, mr as DropdownMenu, mt as MessageReactionAddButton, n as InboxItemActions, ni as ListRowDescription, nn as MessageItemGutter, nr as PopoverHeader, nt as MessageMultiSelectToolbar, o as InboxItemHeading, oi as ListRowTitle, on as AvatarBadge, or as PopoverTitle, ot as MessageReferenceIndicator, p as InboxItemSender, pi as TooltipTrigger, pn as RadioGroupItem, pr as MobileNavRoot, pt as inlineChip, q as MessageEmbedContent, qi as useTheme, qr as ScrollAreaThumb, qt as MessageItemAttachments, r as InboxItemBody, ri as ListRowGroup, rn as MessageItem, rr as PopoverPopup, rt as MessageMultiSelectToolbarActions, s as InboxItemHoverTarget, si as ListRowTop, sn as AvatarFallback, sr as PopoverTrigger, st as MessageReferenceLabel, t as InboxItem, ta as decisionWidth, ti as ListRowChevron, tn as MessageItemContinuationTime, tr as PopoverDescription, tt as MessageMultiSelectCheckbox, u as InboxItemMessage, ui as TooltipContent, un as AvatarImage, ur as useMouseOnlyPointerSensor, ut as MessageReferenceSuffix, v as InboxItemTrigger, vi as Dialog, vr as DropdownMenuFooter, vt as MessageReactionGlyph, wn as PreviewCardArrow, wr as DropdownMenuPopup, wt as MessageReactionTooltipMeta, x as Skeleton, xi as DialogContent, xr as DropdownMenuItemLabel, xt as MessageReactionQuickButton, yi as DialogBody, yr as DropdownMenuItem, yt as MessageReactionPickerContent, z as MessageQuotedPreviewContent, zi as Button, zr as PanelHeaderRoot, zt as MessageItemHeader } from "./inbox-item-69Tx19JG.mjs";
3
3
  import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
4
4
  import { AlertTriangle, Bell, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, CircleCheck, Copy, FileText, Image, Info, TriangleAlert, Upload, X, Zap } from "lucide-react";
5
5
  import { Children, cloneElement, createContext, createElement, isValidElement, use, useCallback, useContext, useEffect, useId, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -3174,179 +3174,6 @@ function FieldValidity(props) {
3174
3174
  return /* @__PURE__ */ jsx(Field$1.Validity, { ...props });
3175
3175
  }
3176
3176
  //#endregion
3177
- //#region src/components/input-group/input-group.tsx
3178
- const inputGroup = tv({
3179
- slots: {
3180
- root: [
3181
- "group/input-group relative flex w-full min-w-0 items-center",
3182
- "has-data-[input-group-trim=inline-end]:[--ig-control-pr:0]",
3183
- "h-control overflow-hidden rounded-control border-[1.5px] border-line-field bg-layer-card text-foreground",
3184
- "shadow-none transition-shadow duration-90 ease-out has-focus-visible:shadow-focus",
3185
- "has-[[data-slot=input-group-control][data-invalid]]:border-danger-strong",
3186
- "has-[[data-slot=input-group-control]:disabled]:cursor-not-allowed has-[[data-slot=input-group-control]:disabled]:border-line-hairline has-[[data-slot=input-group-control]:disabled]:bg-fill-muted",
3187
- "has-[[data-slot=input-group-control]:disabled]:[--ig-addon-fg:var(--foreground-disabled)]",
3188
- "has-[[data-slot=input-group-control]:disabled]:[--ig-text-fg:var(--foreground-disabled)]"
3189
- ],
3190
- addon: [
3191
- "flex shrink-0 items-center justify-center gap-2 px-3",
3192
- "select-none",
3193
- "text-(--ig-addon-fg,var(--ig-addon-fg-default,var(--foreground-hint)))",
3194
- "[&>svg:not([class*='size-'])]:size-4.5"
3195
- ],
3196
- text: [
3197
- "flex min-w-0 max-w-1/2 shrink-0 items-center px-3",
3198
- "select-none",
3199
- "font-mono text-mono-code",
3200
- "text-(--ig-text-fg,var(--ig-text-fg-default,var(--foreground-hint)))"
3201
- ],
3202
- textInner: ["min-w-0 truncate"],
3203
- control: [
3204
- "min-w-0 flex-1 bg-transparent pl-3 outline-none",
3205
- "pr-(--ig-control-pr,0.75rem)",
3206
- "h-full py-0 font-heading text-field font-field",
3207
- "text-foreground placeholder:text-foreground-hint",
3208
- "disabled:cursor-not-allowed disabled:text-foreground-disabled disabled:placeholder:text-foreground-disabled"
3209
- ]
3210
- },
3211
- variants: {
3212
- align: {
3213
- "inline-start": {
3214
- addon: "order-first",
3215
- text: "order-first"
3216
- },
3217
- "inline-end": {
3218
- addon: "order-last",
3219
- text: "order-last"
3220
- }
3221
- },
3222
- variant: {
3223
- default: {},
3224
- container: {
3225
- addon: [
3226
- "self-stretch",
3227
- "[--ig-addon-fg-default:var(--foreground-hint)]",
3228
- "border-line-hairline bg-fill-muted"
3229
- ],
3230
- text: [
3231
- "self-stretch",
3232
- "[--ig-text-fg-default:var(--foreground-hint)]",
3233
- "border-line-hairline bg-fill-muted"
3234
- ]
3235
- }
3236
- }
3237
- },
3238
- compoundVariants: [
3239
- {
3240
- variant: "default",
3241
- align: "inline-start",
3242
- class: {
3243
- addon: "[&~[data-slot=input-group-control]]:pl-0",
3244
- text: "[&~[data-slot=input-group-control]]:pl-0"
3245
- }
3246
- },
3247
- {
3248
- variant: "container",
3249
- align: "inline-start",
3250
- class: {
3251
- addon: "border-r",
3252
- text: "border-r"
3253
- }
3254
- },
3255
- {
3256
- variant: "container",
3257
- align: "inline-end",
3258
- class: {
3259
- addon: "border-l",
3260
- text: "border-l"
3261
- }
3262
- },
3263
- {
3264
- variant: "default",
3265
- align: "inline-start",
3266
- class: {
3267
- addon: "pr-2",
3268
- text: "pr-0.5"
3269
- }
3270
- },
3271
- {
3272
- variant: "default",
3273
- align: "inline-end",
3274
- class: {
3275
- addon: [
3276
- "pl-2",
3277
- "*:data-[slot=button]:size-control-embedded *:data-[slot=button]:rounded-chip",
3278
- "[&>[data-slot=button]_svg:not([class*='size-'])]:size-4",
3279
- "[&>[data-slot=button]:last-child]:me-[calc(var(--control-embedded-inset)-0.75rem-1px)]"
3280
- ],
3281
- text: "pl-0.5"
3282
- }
3283
- }
3284
- ],
3285
- defaultVariants: {
3286
- align: "inline-start",
3287
- variant: "default"
3288
- }
3289
- });
3290
- function InputGroup({ className, ...props }) {
3291
- const { root } = inputGroup();
3292
- return /* @__PURE__ */ jsx("div", {
3293
- "data-slot": "input-group",
3294
- className: root({ className }),
3295
- ...props
3296
- });
3297
- }
3298
- function InputGroupAddonRoot({ align = "inline-start", variant = "default", className, ...props }) {
3299
- const { addon } = inputGroup({
3300
- align,
3301
- variant
3302
- });
3303
- return /* @__PURE__ */ jsx("div", {
3304
- "data-slot": "input-group-addon",
3305
- "data-align": align,
3306
- "data-variant": variant,
3307
- "data-input-group-trim": variant === "default" && align === "inline-end" ? align : void 0,
3308
- className: addon({ className }),
3309
- ...props
3310
- });
3311
- }
3312
- function TextAddon({ align = "inline-start", variant = "default", className, ref, title, children, ...props }) {
3313
- const { text, textInner } = inputGroup({
3314
- align,
3315
- variant
3316
- });
3317
- const overflowRef = useOverflowTitle(ref, title);
3318
- return /* @__PURE__ */ jsx("span", {
3319
- ref: overflowRef,
3320
- title,
3321
- "data-slot": "input-group-text",
3322
- "data-align": align,
3323
- "data-variant": variant,
3324
- "data-input-group-trim": variant === "default" && align === "inline-end" ? align : void 0,
3325
- className: text({ className }),
3326
- ...props,
3327
- children: /* @__PURE__ */ jsx("span", {
3328
- "data-slot": "input-group-text-value",
3329
- className: textInner(),
3330
- children
3331
- })
3332
- });
3333
- }
3334
- const InputGroupAddon = Object.assign(InputGroupAddonRoot, { Text: TextAddon });
3335
- function InputGroupInput({ className, suppressPasswordManager, "data-invalid": dataInvalid, ...props }) {
3336
- const { control } = inputGroup();
3337
- return /* @__PURE__ */ jsx(Input$1, {
3338
- "data-slot": "input-group-control",
3339
- className: control({ className: [suppressPasswordManager && "keeper-ignore", className] }),
3340
- "data-1p-ignore": suppressPasswordManager ? "true" : void 0,
3341
- "data-bwignore": suppressPasswordManager ? "true" : void 0,
3342
- "data-form-type": suppressPasswordManager ? "other" : void 0,
3343
- "data-lpignore": suppressPasswordManager ? "true" : void 0,
3344
- ...props,
3345
- "data-invalid": dataInvalid || void 0,
3346
- "aria-invalid": dataInvalid ? "true" : void 0
3347
- });
3348
- }
3349
- //#endregion
3350
3177
  //#region src/components/combobox/combobox.tsx
3351
3178
  const combobox = tv({
3352
3179
  slots: {
@@ -4165,59 +3992,6 @@ function SelectArrow({ className, ...props }) {
4165
3992
  });
4166
3993
  }
4167
3994
  //#endregion
4168
- //#region src/components/radio-group/radio-group.tsx
4169
- const radioGroup = tv({ slots: {
4170
- root: [
4171
- "grid w-full gap-2",
4172
- "data-disabled:[&>label]:cursor-not-allowed data-disabled:[&>label]:text-foreground-disabled",
4173
- "data-disabled:[&>label_*]:text-foreground-disabled",
4174
- "font-sans [&>label]:font-semibold"
4175
- ],
4176
- item: [
4177
- "relative inline-flex shrink-0 touch-manipulation items-center justify-center rounded-full outline-none",
4178
- "data-disabled:cursor-not-allowed",
4179
- "after:absolute after:-inset-x-3 after:-inset-y-2 after:content-['']",
4180
- "pointer-coarse:after:-inset-y-[calc(--spacing(3)+1.5px)]",
4181
- "[label>&]:my-[max(0px,calc((1lh-1.25rem)/2))]",
4182
- "[label>&]:after:-inset-y-[calc(max(0px,(1lh-1.25rem)/2)+5.5px)]",
4183
- "size-5 border-[1.5px] border-line-strong bg-layer-card text-foreground",
4184
- "focus-visible:shadow-focus",
4185
- "data-disabled:border-foreground-disabled data-disabled:bg-fill-muted data-disabled:text-foreground-disabled"
4186
- ],
4187
- indicator: ["pointer-events-none flex size-full items-center justify-center"],
4188
- dot: ["block rounded-full bg-current", "size-2"]
4189
- } });
4190
- function RadioGroup({ className, ...props }) {
4191
- const { root } = radioGroup();
4192
- return /* @__PURE__ */ jsx(RadioGroup$1, {
4193
- "data-slot": "radio-group",
4194
- className: root({ className }),
4195
- ...props
4196
- });
4197
- }
4198
- function RadioGroupIndicator({ className, children, ...props }) {
4199
- const { indicator, dot } = radioGroup();
4200
- return /* @__PURE__ */ jsx(Radio.Indicator, {
4201
- "data-slot": "radio-group-indicator",
4202
- className: indicator({ className }),
4203
- ...props,
4204
- children: children ?? /* @__PURE__ */ jsx("span", {
4205
- "data-slot": "radio-group-dot",
4206
- className: dot()
4207
- })
4208
- });
4209
- }
4210
- function RadioGroupItem({ appearance = "default", className, children, ...props }) {
4211
- const { item } = radioGroup();
4212
- const itemClassName = appearance === "none" ? cn("sr-only", "data-disabled:cursor-not-allowed", className) : item({ className });
4213
- return /* @__PURE__ */ jsx(Radio.Root, {
4214
- "data-slot": "radio-group-item",
4215
- className: itemClassName,
4216
- ...props,
4217
- children: children ?? (appearance === "default" ? /* @__PURE__ */ jsx(RadioGroupIndicator, {}) : null)
4218
- });
4219
- }
4220
- //#endregion
4221
3995
  //#region src/components/switch/switch.tsx
4222
3996
  const switchRecipe = tv({ slots: {
4223
3997
  root: [
package/dist/wip.d.mts CHANGED
@@ -706,4 +706,99 @@ type PullToRefreshIndicatorProps = Omit<ComponentProps<"div">, "children"> & {
706
706
  */
707
707
  export declare function PullToRefreshIndicator({ pull, label, className, style, ...props }: PullToRefreshIndicatorProps): import("react").JSX.Element;
708
708
  //#endregion
709
- export { Dialog as AnnouncementDialog, DialogClose as AnnouncementDialogClose, DialogTrigger as AnnouncementDialogTrigger, type ComboboxSelectGroup, type ComboboxSelectMessages, type ComboboxSelectOption, type ComboboxSelectProps, type ComboboxSelectSelection, type ComboboxSelectValue, type CommentCardMetaProps, type CommentCardProps, type CommentCardQuoteProps, type CommentCardTriggerProps, type CommentEntryAuthorProps, type CommentEntryBodyProps, type CommentEntryHeaderProps, type CommentEntryProps, type CommentEntryTimeProps, type CommentMarginItemProps, type CommentMarginLayout, type CommentMarginLayoutItem, type CommentMarginLayoutOptions, type CommentMarginProps, type CommentMarkerProps, DialogCommit, type DialogCommitProps, DialogFooterNote, type DialogFooterNoteProps, DialogSheetBack, type DialogSheetBackProps, DialogSheetContent, type DialogSheetContentProps, DropdownMenuLinkItem, type DropdownMenuLinkItemProps, type EllipsisProps, type EllipsisState, type EllipsisToggleProps, type HoldThenMoveOptions, type InboxItemLeadingBadgeProps, type InboxItemSkeletonListProps, type InboxItemSkeletonProps, type ListRowSkeletonProps, 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, type MeterHeaderProps, type MeterIndicatorProps, type MeterLabelProps, type MeterProps, type MeterTrackProps, 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, type OverlayLayerKind, type OverlayLayerProviderProps, PopoverActions, type PopoverActionsProps, PopoverBody, type PopoverBodyProps, PreviewCardActions, type PreviewCardActionsProps, PreviewCardBody, type PreviewCardBodyProps, PreviewCardEyebrow, type PreviewCardEyebrowProps, PreviewCardFooter, type PreviewCardFooterProps, PreviewCardMeta, type PreviewCardMetaProps, type PullToRefresh, type PullToRefreshIndicatorProps, type PullToRefreshPlatform, type PullToRefreshState, type UseCommentMarginFitsOptions, type UsePullToRefreshOptions };
709
+ //#region src/components/choice-list/choice-list.d.ts
710
+ type ChoiceListItem = {
711
+ value: string;
712
+ /** The row's name. The radio or checkbox is named by this alone. */
713
+ label: ReactNode;
714
+ /** What the search matches, case-insensitively. Defaults to `label` when it is a string. */
715
+ searchText?: string;
716
+ /**
717
+ * Up to two lines under the name, each cut to one line. An empty line
718
+ * (null, false or "") is not drawn. Colour inside a line is the caller's.
719
+ */
720
+ description?: ReactNode | readonly ReactNode[];
721
+ /** Drawn before the radio's or checkbox's row text: an avatar, an icon. */
722
+ media?: ReactNode;
723
+ /**
724
+ * A button at the end of the row, such as one that opens details. It sits
725
+ * outside the row's label and the group: clicking it chooses nothing, and
726
+ * it is a Tab stop of its own after the group, in row order.
727
+ */
728
+ action?: ReactNode;
729
+ disabled?: boolean;
730
+ /** The `value` of the group in `groups` this item is listed under. */
731
+ group?: string;
732
+ };
733
+ type ChoiceListGroup = {
734
+ value: string;
735
+ /** The small heading over the group's rows, such as "Agents". */
736
+ label: ReactNode;
737
+ };
738
+ type ChoiceListCommonProps = {
739
+ items: readonly ChoiceListItem[];
740
+ /**
741
+ * When the search box shows. `"always"` when people look for an item they
742
+ * know by name, such as a person: the box shows at any count, and with a
743
+ * mouse or trackpad focus starts in it. `"auto"` when people choose by
744
+ * comparing the rows: the box shows only above 5 items.
745
+ */
746
+ search?: "auto" | "always";
747
+ "aria-label"?: string;
748
+ "aria-labelledby"?: string;
749
+ disabled?: boolean;
750
+ /**
751
+ * The search box's accessible name. Required: any list can come to search,
752
+ * since `"auto"` shows the box once the items, usually from data, pass 5.
753
+ */
754
+ searchLabel: string;
755
+ searchPlaceholder?: string;
756
+ /** The search box's text when the list first draws, such as a search carried over. */
757
+ defaultSearchValue?: string;
758
+ /**
759
+ * The search box's text, for a caller that uses it: a "Create “…”" row
760
+ * named after it, or a no-match line that quotes it. With it, the caller
761
+ * owns the text, and `onSearchValueChange` reports each change.
762
+ */
763
+ searchValue?: string;
764
+ onSearchValueChange?: (value: string) => void;
765
+ /** The clear button's accessible name. */
766
+ clearSearchLabel: string;
767
+ /** The line under the chosen rows when nothing else matches. */
768
+ noMatchLabel?: ReactNode;
769
+ /** The line drawn when there are no items at all. */
770
+ empty?: ReactNode;
771
+ /**
772
+ * Headings that split the rows by kind, in this order, such as Agents then
773
+ * People. Each item names its group; a group with no rows to show, or a
774
+ * search that leaves it empty, draws no heading.
775
+ */
776
+ groups?: readonly ChoiceListGroup[];
777
+ /**
778
+ * A row of the caller's under the list, inside its frame, that stays in
779
+ * view while the rows scroll: the way out when the item isn't there, such
780
+ * as "Create an agent".
781
+ */
782
+ footer?: ReactNode;
783
+ /**
784
+ * The list takes the height it is given and its rows scroll inside it, for
785
+ * a sheet or panel whose main content is the list. Otherwise a list with a
786
+ * search scrolls past 18rem.
787
+ */
788
+ fill?: boolean;
789
+ className?: string;
790
+ };
791
+ type ChoiceListSingleProps = ChoiceListCommonProps & {
792
+ multiple?: false;
793
+ value: string | null;
794
+ onValueChange: (value: string) => void;
795
+ };
796
+ type ChoiceListMultipleProps = ChoiceListCommonProps & {
797
+ multiple: true;
798
+ value: readonly string[];
799
+ onValueChange: (value: string[]) => void;
800
+ };
801
+ type ChoiceListProps = ChoiceListSingleProps | ChoiceListMultipleProps;
802
+ export declare function ChoiceList(props: ChoiceListProps): import("react").JSX.Element;
803
+ //#endregion
804
+ export { Dialog as AnnouncementDialog, DialogClose as AnnouncementDialogClose, DialogTrigger as AnnouncementDialogTrigger, type ChoiceListGroup, type ChoiceListItem, type ChoiceListMultipleProps, type ChoiceListProps, type ChoiceListSingleProps, type ComboboxSelectGroup, type ComboboxSelectMessages, type ComboboxSelectOption, type ComboboxSelectProps, type ComboboxSelectSelection, type ComboboxSelectValue, type CommentCardMetaProps, type CommentCardProps, type CommentCardQuoteProps, type CommentCardTriggerProps, type CommentEntryAuthorProps, type CommentEntryBodyProps, type CommentEntryHeaderProps, type CommentEntryProps, type CommentEntryTimeProps, type CommentMarginItemProps, type CommentMarginLayout, type CommentMarginLayoutItem, type CommentMarginLayoutOptions, type CommentMarginProps, type CommentMarkerProps, DialogCommit, type DialogCommitProps, DialogFooterNote, type DialogFooterNoteProps, DialogSheetBack, type DialogSheetBackProps, DialogSheetContent, type DialogSheetContentProps, DropdownMenuLinkItem, type DropdownMenuLinkItemProps, type EllipsisProps, type EllipsisState, type EllipsisToggleProps, type HoldThenMoveOptions, type InboxItemLeadingBadgeProps, type InboxItemSkeletonListProps, type InboxItemSkeletonProps, type ListRowSkeletonProps, 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, type MeterHeaderProps, type MeterIndicatorProps, type MeterLabelProps, type MeterProps, type MeterTrackProps, 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, type OverlayLayerKind, type OverlayLayerProviderProps, PopoverActions, type PopoverActionsProps, PopoverBody, type PopoverBodyProps, PreviewCardActions, type PreviewCardActionsProps, PreviewCardBody, type PreviewCardBodyProps, PreviewCardEyebrow, type PreviewCardEyebrowProps, PreviewCardFooter, type PreviewCardFooterProps, PreviewCardMeta, type PreviewCardMetaProps, type PullToRefresh, type PullToRefreshIndicatorProps, type PullToRefreshPlatform, type PullToRefreshState, type UseCommentMarginFitsOptions, type UsePullToRefreshOptions };
package/dist/wip.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { $r as ListRowMeta, Bi as useThemeScopeProps, Bn as MobileNavServerPopoverRowDescription, C as MessageListJumpPill, Ci as DialogSheetBack, Cn as PreviewCardFooter, Ei as DialogTrigger, F as MessageQuotedPreviewAuthorDelegatedBy, Fi as Spinner, Fn as MobileNavServerPopoverDestinations, Ft as MessageItemDelegatedAvatar, Ii as defaultNativeButton, In as MobileNavServerPopoverGroup, It as MessageItemDelegatedBy, Jr as ListRowBottom, Kn as PopoverBody, Kr as ListRow, Li as OverlayLayerProvider, Ln as MobileNavServerPopoverList, Lt as MessageItemDelegatedByButton, Mn as MobileNavServerPopover, Ni as Button$1, Nn as MobileNavServerPopoverContent, Pn as MobileNavServerPopoverDestination, Ri as useParentOverlayKind, Rn as MobileNavServerPopoverRow, Rt as MessageItemDelegatedByName, S as MessageListJumpControls, Sn as PreviewCardEyebrow, T as MessageListJumpPillGroup, Ti as DialogTitle, Tn as PreviewCardMeta, Ui as tv, Un as PopoverActions, Vi as useTheme, Vn as MobileNavServerPopoverRowLabel, Xr as ListRowDescription, _ as InboxItemTrailing, _n as PreviewCardActions, _r as DropdownMenuLinkItem, a as InboxItemContext, at as MessageReferenceIcon, b as useLatestRef, c as InboxItemLeading, dn as useOverflowTitle, ei as ListRowTitle, fi as Dialog, fn as measureContent, g as InboxItemTitle, h as InboxItemTimestamp, hi as DialogContent, hn as readNow, i as InboxItemContent, ii as TooltipContent, jn as MobileNavServerItem, ki as TextLink, li as DialogCommit, lt as MessageReferenceReadMark, mi as DialogClose, mn as observeTruncation, o as InboxItemHeading, pn as measureElement, qr as ListRowBody, r as InboxItemBody, ri as Tooltip, rr as useHoldThenMoveTouchSensor, si as TooltipTrigger, t as InboxItem, ti as ListRowTop, ui as DialogSheetContent, vi as DialogFooterNote, w as MessageListJumpPillDismiss, x as Skeleton, y as inboxItem, yn as PreviewCardBody, zn as MobileNavServerPopoverRowBody } from "./inbox-item-B-IdTaxl.mjs";
2
- import { Check, ChevronDown, LoaderCircle, Plus, X } from "lucide-react";
1
+ import { $r as ListRowBody, Bn as MobileNavServerPopoverDestination, C as MessageListJumpPill, Cn as PreviewCardActions, Cr as DropdownMenuLinkItem, F as MessageQuotedPreviewAuthorDelegatedBy, Fi as TextLink, Ft as MessageItemDelegatedAvatar, Gn as MobileNavServerPopoverRowBody, Hi as defaultNativeButton, Hn as MobileNavServerPopoverGroup, It as MessageItemDelegatedBy, Ki as useThemeScopeProps, Kn as MobileNavServerPopoverRowDescription, Ln as MobileNavServerItem, Lt as MessageItemDelegatedByButton, Mi as DialogTrigger, On as PreviewCardEyebrow, Qn as PopoverBody, Qr as ListRow, Rn as MobileNavServerPopover, Rt as MessageItemDelegatedByName, S as MessageListJumpControls, T as MessageListJumpPillGroup, Tn as PreviewCardBody, Ui as OverlayLayerProvider, Un as MobileNavServerPopoverList, Vi as Spinner, Vn as MobileNavServerPopoverDestinations, Wi as useParentOverlayKind, Wn as MobileNavServerPopoverRow, Yi as tv, Yn as PopoverActions, Yr as Checkbox, _ as InboxItemTrailing, _n as useOverflowTitle, a as InboxItemContext, ai as ListRowMeta, at as MessageReferenceIcon, b as useLatestRef, bi as DialogClose, bn as observeTruncation, c as InboxItemLeading, dn as RadioGroup, ei as ListRowBottom, g as InboxItemTitle, gi as DialogSheetContent, gn as InputGroupInput, h as InboxItemTimestamp, hi as DialogCommit, hn as InputGroupAddon, i as InboxItemContent, ji as DialogTitle, jn as PreviewCardMeta, ki as DialogSheetBack, kn as PreviewCardFooter, li as Tooltip, lr as useHoldThenMoveTouchSensor, lt as MessageReferenceReadMark, mn as InputGroup, ni as ListRowDescription, o as InboxItemHeading, oi as ListRowTitle, pi as TooltipTrigger, pn as RadioGroupItem, qi as useTheme, qn as MobileNavServerPopoverRowLabel, r as InboxItemBody, si as ListRowTop, t as InboxItem, ui as TooltipContent, vi as Dialog, vn as measureContent, w as MessageListJumpPillDismiss, wi as DialogFooterNote, x as Skeleton, xi as DialogContent, xn as readNow, y as inboxItem, yn as measureElement, zi as Button$1, zn as MobileNavServerPopoverContent } from "./inbox-item-69Tx19JG.mjs";
2
+ import { Check, ChevronDown, LoaderCircle, Plus, Search, X } from "lucide-react";
3
3
  import { createContext, use, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Button } from "@base-ui/react/button";
@@ -7,6 +7,7 @@ import { mergeProps } from "@base-ui/react/merge-props";
7
7
  import { useRender } from "@base-ui/react/use-render";
8
8
  import { Combobox } from "@base-ui/react/combobox";
9
9
  import { Meter as Meter$1 } from "@base-ui/react/meter";
10
+ import { CheckboxGroup } from "@base-ui/react/checkbox-group";
10
11
  //#region src/lib/phone-media.ts
11
12
  /**
12
13
  * A phone: a touch screen narrower than the desktop layout. The complement, on
@@ -2327,4 +2328,323 @@ function PullToRefreshIndicator({ pull, label, className, style, ...props }) {
2327
2328
  });
2328
2329
  }
2329
2330
  //#endregion
2330
- export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ComboboxSelect, CommentCard, CommentCardMeta, CommentCardQuote, CommentCardTrigger, CommentEntry, CommentEntryAuthor, CommentEntryBody, CommentEntryHeader, CommentEntryTime, CommentMargin, CommentMarginItem, CommentMarker, DialogCommit, DialogFooterNote, DialogSheetBack, DialogSheetContent, DropdownMenuLinkItem, Ellipsis, EllipsisToggle, InboxItemLeadingBadge, InboxItemSkeleton, InboxItemSkeletonList, ListRowSkeleton, 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, 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, PopoverActions, PopoverBody, PreviewCardActions, PreviewCardBody, PreviewCardEyebrow, PreviewCardFooter, PreviewCardMeta, PullToRefreshIndicator, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useHoldThenMoveTouchSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
2331
+ //#region src/components/choice-list/choice-list.recipe.ts
2332
+ const choiceList = tv({
2333
+ slots: {
2334
+ root: ["grid min-w-0 gap-2"],
2335
+ searchInput: ["[&::-webkit-search-cancel-button]:appearance-none"],
2336
+ frame: ["flex min-w-0 flex-col overflow-hidden", "rounded-container border border-line-hairline bg-layer-card"],
2337
+ scroller: ["min-h-0 min-w-0 p-1"],
2338
+ rows: ["grid grid-cols-[minmax(0,1fr)_auto] gap-x-0 gap-y-0.5"],
2339
+ group: ["col-span-2 col-start-1 grid grid-cols-subgrid grid-rows-subgrid gap-x-0 gap-y-0.5"],
2340
+ section: ["col-span-2 col-start-1 grid grid-cols-subgrid grid-rows-subgrid"],
2341
+ heading: ["col-span-2 px-2.5 pt-2 pb-1", "font-sans text-caption font-bold text-foreground-hint"],
2342
+ item: [
2343
+ "col-span-2 flex min-w-0 items-start gap-2.5 rounded-chip px-2.5",
2344
+ "min-h-option py-option-inset",
2345
+ "pointer-coarse:min-h-11 pointer-coarse:py-[calc((--spacing(11)-1lh)/2)]",
2346
+ "text-left font-sans text-subhead",
2347
+ "not-data-disabled:hover:bg-brand-soft not-data-disabled:active:overlay-medium",
2348
+ "data-disabled:cursor-not-allowed"
2349
+ ],
2350
+ media: ["flex h-lh shrink-0 items-center"],
2351
+ body: ["grid min-w-0 flex-1 gap-0.5"],
2352
+ label: ["truncate font-semibold text-foreground", "in-data-disabled:text-foreground-disabled"],
2353
+ description: ["block truncate font-sans text-footnote font-normal text-foreground-muted", "in-data-disabled:text-foreground-disabled"],
2354
+ action: [
2355
+ "relative z-10 col-start-2 flex h-lh items-center self-start pr-1",
2356
+ "mt-option-inset pointer-coarse:mt-[calc((--spacing(11)-1lh)/2)]",
2357
+ "font-sans text-subhead"
2358
+ ],
2359
+ note: ["px-2.5 py-2 font-sans text-callout text-foreground-hint"],
2360
+ footer: ["shrink-0 border-t border-line-seam p-1"]
2361
+ },
2362
+ variants: {
2363
+ scroll: { true: { scroller: ["max-h-72 overflow-y-auto overscroll-contain"] } },
2364
+ fill: { true: {
2365
+ root: ["flex min-h-0 flex-1 flex-col"],
2366
+ frame: ["min-h-0 flex-1"],
2367
+ scroller: ["flex-1 overflow-y-auto overscroll-contain"]
2368
+ } },
2369
+ hasAction: { true: { item: ["pr-11"] } }
2370
+ }
2371
+ });
2372
+ //#endregion
2373
+ //#region src/components/choice-list/choice-list.tsx
2374
+ const SEARCH_ABOVE = 5;
2375
+ const MAX_DESCRIPTION_LINES = 2;
2376
+ function isDrawn(line) {
2377
+ return line !== null && line !== void 0 && line !== false && line !== "";
2378
+ }
2379
+ function descriptionLines(description) {
2380
+ return (Array.isArray(description) ? description : [description]).filter(isDrawn);
2381
+ }
2382
+ const NOT_TEXT_INPUTS = /* @__PURE__ */ new Set([
2383
+ "button",
2384
+ "checkbox",
2385
+ "radio",
2386
+ "submit",
2387
+ "reset",
2388
+ "image",
2389
+ "file",
2390
+ "range",
2391
+ "color"
2392
+ ]);
2393
+ function isTextEntry(element) {
2394
+ if (!(element instanceof HTMLElement)) return false;
2395
+ if (element.isContentEditable || element instanceof HTMLTextAreaElement) return true;
2396
+ if (element instanceof HTMLSelectElement) return true;
2397
+ return element instanceof HTMLInputElement && !NOT_TEXT_INPUTS.has(element.type);
2398
+ }
2399
+ function searchTextOf(item) {
2400
+ if (item.searchText !== void 0) return item.searchText;
2401
+ return typeof item.label === "string" ? item.label : "";
2402
+ }
2403
+ function visibleItems(items, needle, pinned, chosen) {
2404
+ if (!needle) return {
2405
+ rows: items,
2406
+ noMatch: false
2407
+ };
2408
+ const matches = (item) => searchTextOf(item).toLowerCase().includes(needle);
2409
+ const isPinned = (item) => pinned.includes(item.value);
2410
+ const top = items.filter((item) => isPinned(item) || chosen.includes(item.value) && !matches(item));
2411
+ const rest = items.filter((item) => !top.includes(item) && matches(item));
2412
+ return {
2413
+ rows: [...top, ...rest],
2414
+ noMatch: !items.some(matches)
2415
+ };
2416
+ }
2417
+ function layoutSections(rows, groups) {
2418
+ const known = new Set(groups?.map((group) => group.value));
2419
+ const sections = groups ? groups.map((group) => ({
2420
+ group,
2421
+ rows: rows.filter((item) => item.group === group.value)
2422
+ })) : [];
2423
+ sections.push({
2424
+ group: null,
2425
+ rows: rows.filter((item) => !groups || item.group === void 0 || !known.has(item.group))
2426
+ });
2427
+ const drawn = sections.filter((section) => section.rows.length > 0);
2428
+ const gridRowOf = /* @__PURE__ */ new Map();
2429
+ let gridRows = 0;
2430
+ for (const section of drawn) {
2431
+ if (section.group) gridRows += 1;
2432
+ for (const item of section.rows) {
2433
+ gridRows += 1;
2434
+ gridRowOf.set(item.value, gridRows);
2435
+ }
2436
+ }
2437
+ return {
2438
+ sections: drawn,
2439
+ gridRowOf,
2440
+ gridRows
2441
+ };
2442
+ }
2443
+ function ChoiceList(props) {
2444
+ const { items, search = "auto", "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, disabled = false, searchLabel, searchPlaceholder, defaultSearchValue = "", searchValue, onSearchValueChange, clearSearchLabel, noMatchLabel, empty, groups, footer, fill = false, className } = props;
2445
+ const value = props.value;
2446
+ const chosen = useMemo(() => value === null ? [] : typeof value === "string" ? [value] : value, [value]);
2447
+ const [ownQuery, setOwnQuery] = useState(defaultSearchValue);
2448
+ const query = searchValue ?? ownQuery;
2449
+ const setQuery = useCallback((next) => {
2450
+ if (searchValue === void 0) setOwnQuery(next);
2451
+ onSearchValueChange?.(next);
2452
+ }, [searchValue, onSearchValueChange]);
2453
+ const [pinned, setPinned] = useState(chosen);
2454
+ const inputRef = useRef(null);
2455
+ const baseId = useId();
2456
+ const searchable = items.length > 0 && (search === "always" || items.length > SEARCH_ABOVE);
2457
+ const [wasSearchable, setWasSearchable] = useState(searchable);
2458
+ if (wasSearchable !== searchable) {
2459
+ setWasSearchable(searchable);
2460
+ if (!searchable) setOwnQuery("");
2461
+ }
2462
+ useEffect(() => {
2463
+ if (!searchable && searchValue) onSearchValueChange?.("");
2464
+ }, [
2465
+ searchable,
2466
+ searchValue,
2467
+ onSearchValueChange
2468
+ ]);
2469
+ const [pinnedFor, setPinnedFor] = useState(query);
2470
+ if (pinnedFor !== query) {
2471
+ setPinnedFor(query);
2472
+ setPinned(chosen);
2473
+ }
2474
+ const { rows, noMatch } = visibleItems(items, searchable ? query.trim().toLowerCase() : "", pinned, chosen);
2475
+ const hasAction = rows.some((item) => item.action !== void 0 && item.action !== null);
2476
+ const slots = choiceList({
2477
+ scroll: searchable && !fill,
2478
+ fill
2479
+ });
2480
+ useEffect(() => {
2481
+ if (process.env.NODE_ENV === "production") return;
2482
+ if (!ariaLabel && !ariaLabelledBy) console.warn("raft-ui: a ChoiceList has neither aria-label nor aria-labelledby.");
2483
+ if (items.some((item) => descriptionLines(item.description).length > MAX_DESCRIPTION_LINES)) console.warn(`raft-ui: a ChoiceList item has more than ${MAX_DESCRIPTION_LINES} description lines; only the first ${MAX_DESCRIPTION_LINES} are drawn.`);
2484
+ }, [
2485
+ ariaLabel,
2486
+ ariaLabelledBy,
2487
+ items
2488
+ ]);
2489
+ const focusSearch = search === "always" && searchable;
2490
+ const focusedSearch = useRef(false);
2491
+ useEffect(() => {
2492
+ if (!focusSearch || focusedSearch.current) return;
2493
+ focusedSearch.current = true;
2494
+ const input = inputRef.current;
2495
+ if (!input || typeof window.matchMedia !== "function") return;
2496
+ if (!window.matchMedia("(pointer: fine)").matches) return;
2497
+ if (isTextEntry(document.activeElement)) return;
2498
+ input.focus({ preventScroll: true });
2499
+ }, [focusSearch]);
2500
+ const changeQuery = useCallback((event) => {
2501
+ setQuery(event.currentTarget.value);
2502
+ }, [setQuery]);
2503
+ const clearQuery = useCallback(() => {
2504
+ setQuery("");
2505
+ inputRef.current?.focus();
2506
+ }, [setQuery]);
2507
+ const { sections, gridRowOf, gridRows } = layoutSections(rows, groups);
2508
+ const groupProps = {
2509
+ "aria-label": ariaLabel,
2510
+ "aria-labelledby": ariaLabelledBy,
2511
+ disabled,
2512
+ className: slots.group(),
2513
+ style: { gridRow: `1 / span ${gridRows}` }
2514
+ };
2515
+ const rowElement = (item) => {
2516
+ const id = `${baseId}-${items.indexOf(item)}`;
2517
+ const lines = descriptionLines(item.description).slice(0, MAX_DESCRIPTION_LINES);
2518
+ const rowDisabled = disabled || item.disabled === true;
2519
+ const markProps = {
2520
+ value: item.value,
2521
+ disabled: item.disabled,
2522
+ "aria-labelledby": `${id}-label`,
2523
+ "aria-describedby": lines.length > 0 ? `${id}-description` : void 0
2524
+ };
2525
+ return /* @__PURE__ */ jsxs("label", {
2526
+ "data-slot": "choice-list-item",
2527
+ "data-disabled": rowDisabled ? "" : void 0,
2528
+ className: slots.item({ hasAction }),
2529
+ children: [
2530
+ props.multiple ? /* @__PURE__ */ jsx(Checkbox, { ...markProps }) : /* @__PURE__ */ jsx(RadioGroupItem, { ...markProps }),
2531
+ item.media !== void 0 && item.media !== null ? /* @__PURE__ */ jsx("span", {
2532
+ "data-slot": "choice-list-media",
2533
+ className: slots.media(),
2534
+ children: item.media
2535
+ }) : null,
2536
+ /* @__PURE__ */ jsxs("span", {
2537
+ "data-slot": "choice-list-body",
2538
+ className: slots.body(),
2539
+ children: [/* @__PURE__ */ jsx("span", {
2540
+ id: `${id}-label`,
2541
+ "data-slot": "choice-list-label",
2542
+ className: slots.label(),
2543
+ children: item.label
2544
+ }), lines.length > 0 ? /* @__PURE__ */ jsx("span", {
2545
+ id: `${id}-description`,
2546
+ className: "contents",
2547
+ children: lines.map((line, index) => /* @__PURE__ */ jsx("span", {
2548
+ "data-slot": "choice-list-description",
2549
+ className: slots.description(),
2550
+ children: line
2551
+ }, index))
2552
+ }) : null]
2553
+ })
2554
+ ]
2555
+ }, item.value);
2556
+ };
2557
+ const rowElements = sections.map((section, index) => {
2558
+ if (!section.group) return section.rows.map(rowElement);
2559
+ const headingId = `${baseId}-group-${index}`;
2560
+ const start = (gridRowOf.get(section.rows[0].value) ?? 1) - 1;
2561
+ return /* @__PURE__ */ jsxs("div", {
2562
+ role: "group",
2563
+ "aria-labelledby": headingId,
2564
+ "data-slot": "choice-list-section",
2565
+ className: slots.section(),
2566
+ style: { gridRow: `${start} / span ${section.rows.length + 1}` },
2567
+ children: [/* @__PURE__ */ jsx("div", {
2568
+ id: headingId,
2569
+ "data-slot": "choice-list-heading",
2570
+ className: slots.heading(),
2571
+ children: section.group.label
2572
+ }), section.rows.map(rowElement)]
2573
+ }, section.group.value);
2574
+ });
2575
+ return /* @__PURE__ */ jsxs("div", {
2576
+ "data-slot": "choice-list",
2577
+ className: slots.root({ className }),
2578
+ children: [searchable ? /* @__PURE__ */ jsxs(InputGroup, {
2579
+ "data-slot": "choice-list-search",
2580
+ children: [
2581
+ /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(Search, { "aria-hidden": true }) }),
2582
+ /* @__PURE__ */ jsx(InputGroupInput, {
2583
+ ref: inputRef,
2584
+ type: "search",
2585
+ value: query,
2586
+ onChange: changeQuery,
2587
+ "aria-label": searchLabel,
2588
+ placeholder: searchPlaceholder,
2589
+ disabled,
2590
+ autoComplete: "off",
2591
+ className: slots.searchInput()
2592
+ }),
2593
+ query ? /* @__PURE__ */ jsx(InputGroupAddon, {
2594
+ align: "inline-end",
2595
+ children: /* @__PURE__ */ jsx(Button$1, {
2596
+ variant: "ghost",
2597
+ size: "icon-md",
2598
+ "aria-label": clearSearchLabel,
2599
+ onClick: clearQuery,
2600
+ children: /* @__PURE__ */ jsx(X, { "aria-hidden": true })
2601
+ })
2602
+ }) : null
2603
+ ]
2604
+ }) : null, /* @__PURE__ */ jsxs("div", {
2605
+ "data-slot": "choice-list-frame",
2606
+ className: slots.frame(),
2607
+ children: [/* @__PURE__ */ jsx("div", {
2608
+ "data-slot": "choice-list-scroller",
2609
+ className: slots.scroller(),
2610
+ children: items.length === 0 ? /* @__PURE__ */ jsx("p", {
2611
+ "data-slot": "choice-list-note",
2612
+ className: slots.note(),
2613
+ children: empty
2614
+ }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [rows.length > 0 ? /* @__PURE__ */ jsxs("div", {
2615
+ "data-slot": "choice-list-rows",
2616
+ className: slots.rows(),
2617
+ children: [props.multiple ? /* @__PURE__ */ jsx(CheckboxGroup, {
2618
+ "data-slot": "choice-list-group",
2619
+ value: props.value,
2620
+ onValueChange: props.onValueChange,
2621
+ ...groupProps,
2622
+ children: rowElements
2623
+ }) : /* @__PURE__ */ jsx(RadioGroup, {
2624
+ "data-slot": "choice-list-group",
2625
+ value: props.value,
2626
+ onValueChange: props.onValueChange,
2627
+ ...groupProps,
2628
+ children: rowElements
2629
+ }), sections.flatMap((section) => section.rows.map((item) => item.action !== void 0 && item.action !== null ? /* @__PURE__ */ jsx("div", {
2630
+ "data-slot": "choice-list-action",
2631
+ className: slots.action(),
2632
+ style: { gridRow: gridRowOf.get(item.value) },
2633
+ children: item.action
2634
+ }, item.value) : null))]
2635
+ }) : null, searchable ? /* @__PURE__ */ jsx("p", {
2636
+ role: "status",
2637
+ "data-slot": "choice-list-status",
2638
+ className: noMatch ? slots.note() : "sr-only",
2639
+ children: noMatch ? noMatchLabel : null
2640
+ }) : null] })
2641
+ }), footer !== void 0 && footer !== null ? /* @__PURE__ */ jsx("div", {
2642
+ "data-slot": "choice-list-footer",
2643
+ className: slots.footer(),
2644
+ children: footer
2645
+ }) : null]
2646
+ })]
2647
+ });
2648
+ }
2649
+ //#endregion
2650
+ export { Dialog as AnnouncementDialog, AnnouncementDialogAction, AnnouncementDialogBody, DialogClose as AnnouncementDialogClose, AnnouncementDialogContent, AnnouncementDialogFooter, AnnouncementDialogHeader, AnnouncementDialogLabel, AnnouncementDialogPicture, AnnouncementDialogSecondaryAction, AnnouncementDialogText, AnnouncementDialogTitle, DialogTrigger as AnnouncementDialogTrigger, COMMENT_HIGHLIGHT, COMMENT_HIGHLIGHT_ACTIVE, ChoiceList, ComboboxSelect, CommentCard, CommentCardMeta, CommentCardQuote, CommentCardTrigger, CommentEntry, CommentEntryAuthor, CommentEntryBody, CommentEntryHeader, CommentEntryTime, CommentMargin, CommentMarginItem, CommentMarker, DialogCommit, DialogFooterNote, DialogSheetBack, DialogSheetContent, DropdownMenuLinkItem, Ellipsis, EllipsisToggle, InboxItemLeadingBadge, InboxItemSkeleton, InboxItemSkeletonList, ListRowSkeleton, 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, 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, PopoverActions, PopoverBody, PreviewCardActions, PreviewCardBody, PreviewCardEyebrow, PreviewCardFooter, PreviewCardMeta, PullToRefreshIndicator, resolveCommentMarginLayout, setCommentHighlights, useCommentMarginFits, useHoldThenMoveTouchSensor, useParentOverlayKind, usePullToRefresh, useTruncated };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/raft-ui",
3
- "version": "0.29.0",
3
+ "version": "0.31.0",
4
4
  "description": "React components and CSS foundations for the Raft Design System.",
5
5
  "keywords": [
6
6
  "agent-skills",