@datum-cloud/datum-ui 3.7.0 → 3.8.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/dist/{action-row-DTvs91_3.mjs → action-row-BEzE9x37.mjs} +2 -3
- package/dist/{adapter-context-h0jCVqGO.mjs → adapter-context-XT749tyT.mjs} +1 -2
- package/dist/alert/index.mjs +1 -2
- package/dist/{alert-SAPwee1h.mjs → alert-CVckvox4.mjs} +2 -3
- package/dist/app-navigation/index.mjs +2 -2
- package/dist/{app-navigation-BB_NLEWv.mjs → app-navigation-DyNZwlSG.mjs} +14 -20
- package/dist/assistant/index.mjs +57 -63
- package/dist/autocomplete/index.mjs +1 -2
- package/dist/{autocomplete-BxtzndxZ.mjs → autocomplete-D0zAcT78.mjs} +6 -8
- package/dist/autosearch/index.mjs +8 -10
- package/dist/avatar/index.mjs +2 -3
- package/dist/avatar-stack/index.mjs +1 -2
- package/dist/{avatar-stack-BUcsjhA6.mjs → avatar-stack-2ow672bR.mjs} +3 -4
- package/dist/badge/index.mjs +181 -1
- package/dist/breadcrumb/index.mjs +1 -2
- package/dist/{breadcrumb-DmdhC8bE.mjs → breadcrumb-D97jAZ2N.mjs} +2 -3
- package/dist/button/index.mjs +2 -2
- package/dist/{button-CsdF61EI.mjs → button-C57mkFkS.mjs} +2 -3
- package/dist/{button-DoMqfQLu.mjs → button-Cn4KagBO.mjs} +4 -6
- package/dist/{button-CDPui_Ov.mjs → button-IK-Lnu_9.mjs} +3 -4
- package/dist/button-group/index.mjs +1 -2
- package/dist/{button-group-DFrTH4L8.mjs → button-group-C3GKo-0p.mjs} +3 -4
- package/dist/calendar/index.mjs +4 -5
- package/dist/{calendar-date-picker-DPvVAW2I.mjs → calendar-date-picker-CknZM6a2.mjs} +3 -4
- package/dist/card/index.mjs +1 -2
- package/dist/{card-save-bar-BZzNnKYj.mjs → card-save-bar-Te8jf-ie.mjs} +5 -8
- package/dist/chart/index.mjs +1 -2
- package/dist/{chart-EgzTS28l.mjs → chart-BsGsx2jb.mjs} +2 -3
- package/dist/checkbox/index.mjs +1 -2
- package/dist/checkbox-BAo5sbHk.mjs +84 -0
- package/dist/{close.icon-DdXKQ4m0.mjs → close.icon-BCPmH4nN.mjs} +2 -3
- package/dist/code-editor/index.mjs +1 -2
- package/dist/{col-BYGWTB4j.mjs → col-CYHIfPJq.mjs} +5 -9
- package/dist/collapsible/index.mjs +1 -7
- package/dist/collapsible-B-KP3JZ-.mjs +104 -0
- package/dist/command/index.mjs +1 -2
- package/dist/{command-C0aGIYnQ.mjs → command-B0be-zU5.mjs} +3 -4
- package/dist/components/base/checkbox/checkbox.d.ts +11 -3
- package/dist/components/base/collapsible/collapsible.d.ts +28 -0
- package/dist/components/base/collapsible/index.d.ts +1 -1
- package/dist/components/base/radio-group/radio-group.d.ts +11 -5
- package/dist/components/base/spinner/index.d.ts +1 -1
- package/dist/components/base/spinner/spinner.d.ts +11 -0
- package/dist/components/base/switch/switch.d.ts +6 -1
- package/dist/components/base/typography/typography.d.ts +1 -1
- package/dist/components/features/_shared/copy-state-icon.d.ts +12 -0
- package/dist/components/features/_shared/index.d.ts +2 -0
- package/dist/components/features/_shared/motion-chip.d.ts +293 -0
- package/dist/components/features/assistant/components/message/plan-card.d.ts +1 -1
- package/dist/components/icons/spinner.icon.d.ts +17 -3
- package/dist/copy-state-icon-DMvXXsZm.mjs +61 -0
- package/dist/data-table/index.mjs +1 -2
- package/dist/{data-table-CJiQQ6TM.mjs → data-table-CpBwO8Ea.mjs} +39 -66
- package/dist/date-picker/index.mjs +3 -3
- package/dist/date-time/index.mjs +1 -2
- package/dist/{date-time-lZdefM4H.mjs → date-time-BBRVM9qb.mjs} +4 -6
- package/dist/date-time-picker/index.mjs +1 -2
- package/dist/{date-time-picker-CricsXgF.mjs → date-time-picker-Bc41Ixrs.mjs} +3 -4
- package/dist/{date-time-range-picker-DM4AIvQ1.mjs → date-time-range-picker-yy1Acntn.mjs} +36 -59
- package/dist/dialog/index.mjs +1 -2
- package/dist/{dialog-Gu70fban.mjs → dialog-C8RXIQYm.mjs} +4 -5
- package/dist/{dialog-CmkrpaYy.mjs → dialog-D6sDXaH6.mjs} +2 -3
- package/dist/dropdown/index.mjs +1 -2
- package/dist/{dropdown-Xvduih96.mjs → dropdown-DR9j3Ni_.mjs} +3 -4
- package/dist/{dropdown-menu-b8zY5Cs6.mjs → dropdown-menu-CjgTr8Ab.mjs} +2 -3
- package/dist/dropzone/index.mjs +1 -2
- package/dist/{dropzone-ihksfjN2.mjs → dropzone-qKYfSe7o.mjs} +6 -8
- package/dist/empty-content/index.mjs +1 -2
- package/dist/{empty-content-CmuVcU0P.mjs → empty-content-CTMHak36.mjs} +8 -13
- package/dist/form/adapters/conform/index.mjs +4 -6
- package/dist/form/adapters/rhf/index.mjs +6 -9
- package/dist/form/index.mjs +2 -2
- package/dist/form/stepper/index.mjs +11 -16
- package/dist/{form-D4R6C609.mjs → form-DTaVgDSV.mjs} +64 -89
- package/dist/{form-context-DzB2a-dw.mjs → form-context-BRzt53M5.mjs} +1 -2
- package/dist/grid/index.mjs +1 -2
- package/dist/grouped-table/index.mjs +1 -2
- package/dist/{grouped-table-fHguJz9W.mjs → grouped-table-Dl6DclbV.mjs} +17 -25
- package/dist/hooks/index.mjs +4 -4
- package/dist/{hooks-CwZ6hyI1.mjs → hooks-WVJbyhCz.mjs} +1 -2
- package/dist/hover-card/index.mjs +1 -2
- package/dist/{hover-card-BNOE5vT5.mjs → hover-card-DSt1lZGg.mjs} +3 -5
- package/dist/{icon-wrapper-DKfJlJd0.mjs → icon-wrapper-CIk2th6R.mjs} +1 -2
- package/dist/icons/index.mjs +3 -3
- package/dist/index.mjs +80 -80
- package/dist/input/index.mjs +1 -2
- package/dist/{input-j4tbmYYz.mjs → input-DsT5qkJn.mjs} +3 -4
- package/dist/{input-DR-XbgpD.mjs → input-Wl1K48ca.mjs} +2 -3
- package/dist/input-group/index.mjs +1 -2
- package/dist/{input-group-DieA8aBt.mjs → input-group-CCzvJIZM.mjs} +5 -6
- package/dist/input-number/index.mjs +1 -2
- package/dist/{input-number-TXmW-X9o.mjs → input-number-DF-bfIo8.mjs} +5 -6
- package/dist/input-with-addons/index.mjs +2 -3
- package/dist/label/index.mjs +1 -2
- package/dist/{label-Bk6FXsju.mjs → label-BR1V3Imy.mjs} +3 -5
- package/dist/{layers-DWYdrGmC.mjs → layers-DLUbkJtt.mjs} +26 -27
- package/dist/loader-overlay/index.mjs +1 -2
- package/dist/{loader-overlay-DD94azZX.mjs → loader-overlay-DP0pvHuG.mjs} +3 -4
- package/dist/logo/index.mjs +2 -2
- package/dist/logo/themed/index.mjs +3 -4
- package/dist/{logo-C3FxD7jb.mjs → logo-CkzKra6H.mjs} +2 -3
- package/dist/{logo-text-Dpm5O6Kg.mjs → logo-text-B54YiEte.mjs} +6 -11
- package/dist/logs/fixtures/index.mjs +2 -4
- package/dist/logs/index.mjs +68 -87
- package/dist/map/index.mjs +1 -2
- package/dist/{map-leaflet-imports-S3kx8Q-S.mjs → map-leaflet-imports-Xdz9Xiaf.mjs} +1 -2
- package/dist/mobile-sheet/index.mjs +1 -2
- package/dist/{mobile-sheet-9TootJGg.mjs → mobile-sheet-1995HYY_.mjs} +6 -9
- package/dist/more-actions/index.mjs +2 -2
- package/dist/{more-actions-C3DYWO0a.mjs → more-actions-BlSOVwa8.mjs} +6 -7
- package/dist/{motion-DvGRWdsm.mjs → motion-DOrRbLmy.mjs} +1 -2
- package/dist/motion-chip-BczV7spP.mjs +52 -0
- package/dist/multi-select/index.mjs +1 -2
- package/dist/{multi-select-CF0Yq5yf.mjs → multi-select-C2cBrqXl.mjs} +61 -57
- package/dist/nprogress/index.mjs +1 -2
- package/dist/page-title/index.mjs +1 -2
- package/dist/{page-title-ipRWEOeM.mjs → page-title-Djl3LvPT.mjs} +2 -3
- package/dist/picker/index.mjs +2 -2
- package/dist/{picker-BoKXW6_s.mjs → picker-DC3GErYg.mjs} +14 -25
- package/dist/popover/index.mjs +1 -2
- package/dist/{popover-X82NwhX9.mjs → popover-7YxyP_W0.mjs} +3 -5
- package/dist/radio-group/index.mjs +1 -2
- package/dist/radio-group-Boxi2hm0.mjs +83 -0
- package/dist/responsive-dropdown/index.mjs +1 -2
- package/dist/{responsive-dropdown-C_KKgLbH.mjs → responsive-dropdown-DsWgpE_i.mjs} +5 -6
- package/dist/responsive-popover/index.mjs +1 -2
- package/dist/{responsive-popover-8VcjBM2d.mjs → responsive-popover-DJYd8lOK.mjs} +5 -6
- package/dist/rich-text-content/index.mjs +1 -2
- package/dist/{rich-text-content-DNonBD39.mjs → rich-text-content-BiIIowBU.mjs} +2 -3
- package/dist/rich-text-editor/index.mjs +2 -2
- package/dist/{rich-text-editor-CP1YyxMR.mjs → rich-text-editor-BUz06s-b.mjs} +14 -22
- package/dist/select/index.mjs +1 -2
- package/dist/{select-D4pk9e2d.mjs → select-DemYhwnG.mjs} +3 -4
- package/dist/{select-daE2Nn0Z.mjs → select-jgK6wyXj.mjs} +2 -3
- package/dist/separator/index.mjs +1 -2
- package/dist/{separator-vbPD_WFQ.mjs → separator-DNiiN2BN.mjs} +2 -3
- package/dist/settings-nav/index.mjs +1 -2
- package/dist/{settings-nav-Hf3GrCGv.mjs → settings-nav-CCZdPD-x.mjs} +2 -3
- package/dist/sheet/index.mjs +2 -2
- package/dist/{sheet-DHn6C_rs.mjs → sheet-DEpEJ_Rk.mjs} +4 -5
- package/dist/{sheet-DXCZyMHI.mjs → sheet-DYPtVIb2.mjs} +2 -3
- package/dist/sidebar/index.mjs +1 -2
- package/dist/{sidebar-sbqOOFii.mjs → sidebar-DWnxQWQ8.mjs} +13 -18
- package/dist/skeleton/index.mjs +3 -4
- package/dist/{skeleton-DFExK4GX.mjs → skeleton-CDPoo7-M.mjs} +2 -3
- package/dist/spinner/index.mjs +1 -2
- package/dist/spinner-DSlDJdWl.mjs +23 -0
- package/dist/spinner.icon-BiUnMAxw.mjs +104 -0
- package/dist/stepper/index.mjs +1 -2
- package/dist/{stepper-dNvkipop.mjs → stepper-ZipxpzWY.mjs} +10 -11
- package/dist/switch/index.mjs +1 -2
- package/dist/switch-IduVwiPZ.mjs +114 -0
- package/dist/table/index.mjs +2 -3
- package/dist/tabs/index.mjs +3 -4
- package/dist/tag-input/index.mjs +1 -2
- package/dist/{tag-input-c9OvWTSe.mjs → tag-input-a3ktkGrH.mjs} +46 -43
- package/dist/task-queue/index.mjs +1 -2
- package/dist/{task-queue-dropdown-CHPP5WIm.mjs → task-queue-dropdown-DuCAAybs.mjs} +39 -59
- package/dist/textarea/index.mjs +1 -2
- package/dist/{textarea-DiSGxCBO.mjs → textarea-CvhdK6JY.mjs} +3 -4
- package/dist/{textarea-CCxpXJdh.mjs → textarea-D36SE4ki.mjs} +2 -3
- package/dist/theme/index.mjs +1 -2
- package/dist/{themes-Ba2bajuF.mjs → themes-BoxnQbbu.mjs} +8 -10
- package/dist/time-picker/index.mjs +1 -2
- package/dist/{time-picker-DQlc2gKW.mjs → time-picker-B_am4eAK.mjs} +3 -4
- package/dist/{to-api-format-QuJ81vQ9.mjs → to-api-format-DyImCzCn.mjs} +15 -23
- package/dist/toast/index.mjs +2 -2
- package/dist/{toast-BUPlDkN3.mjs → toast-CizxCEcK.mjs} +4 -6
- package/dist/tooltip/index.mjs +1 -2
- package/dist/{tooltip-DhbN1BDK.mjs → tooltip-OIySjJWW.mjs} +3 -5
- package/dist/transfer/index.mjs +1 -2
- package/dist/{transfer-DsshYgIk.mjs → transfer-DGUeAQUL.mjs} +8 -14
- package/dist/{types-agDpVXBG.mjs → types-ChINrR8H.mjs} +7 -11
- package/dist/typography/index.mjs +1 -2
- package/dist/{typography-B1bpHKmV.mjs → typography-XFfN6PGD.mjs} +2 -3
- package/dist/{use-breakpoint-CwiUJSmk.mjs → use-breakpoint-zY_JYINK.mjs} +1 -2
- package/dist/{use-controllable-state-Dna7u3r9.mjs → use-controllable-state-DLeVgbAb.mjs} +1 -2
- package/dist/{use-copy-to-clipboard-DZDq_85T.mjs → use-copy-to-clipboard-CWKWHLxI.mjs} +1 -2
- package/dist/{use-debounced-search-input-yu_F0QBt.mjs → use-debounced-search-input-B4u28iLx.mjs} +1 -2
- package/dist/{use-deprecation-warning-DXrGc0jX.mjs → use-deprecation-warning-BS1V4IS5.mjs} +1 -2
- package/dist/{use-display-touched-CMEEv7aT.mjs → use-display-touched-BSq0Ninl.mjs} +3 -5
- package/dist/{use-option-picker-s2bUYwXC.mjs → use-option-picker-DXY2SNnT.mjs} +6 -9
- package/dist/{use-toast-Bpq0yJIT.mjs → use-toast-CZAZeS95.mjs} +3 -5
- package/dist/utils/index.mjs +3 -3
- package/dist/{utils-CA4QEIJ8.mjs → utils-CPJ5MCfd.mjs} +1 -2
- package/dist/{utils-Bu32wN-x.mjs → utils-CTIuhCOs.mjs} +1 -2
- package/dist/visually-hidden/index.mjs +1 -2
- package/dist/{visuallyhidden-D7L_qs8b.mjs → visuallyhidden-Mg4OsZ-l.mjs} +1 -2
- package/dist/{zod-helpers-YEhVo2S-.mjs → zod-helpers-JcfFVJJd.mjs} +1 -2
- package/package.json +20 -23
- package/dist/badge-DOZUr5DV.mjs +0 -183
- package/dist/checkbox-C6P12fio.mjs +0 -30
- package/dist/radio-group-LduBVTnh.mjs +0 -45
- package/dist/spinner-C5Xv-i2C.mjs +0 -14
- package/dist/spinner.icon-BYUMQ8H-.mjs +0 -48
- package/dist/switch-BaR-Vna4.mjs +0 -34
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
1
|
+
import { t as cn } from "./utils-CTIuhCOs.mjs";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
// src/components/features/more-actions/action-row.tsx
|
|
4
4
|
function ActionRow({ action, data, onSelect }) {
|
|
5
5
|
const isDisabled = typeof action.disabled === "function" ? action.disabled(data) : action.disabled ?? false;
|
|
6
6
|
const IconComponent = typeof action.icon === "function" ? action.icon : null;
|
|
@@ -18,5 +18,4 @@ function ActionRow({ action, data, onSelect }) {
|
|
|
18
18
|
children: [iconNode, /* @__PURE__ */ jsx("span", { children: action.label })]
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
-
//#endregion
|
|
22
21
|
export { ActionRow as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
|
|
3
|
+
// src/components/features/form/adapter-context.tsx
|
|
4
4
|
const AdapterContext = React.createContext(null);
|
|
5
5
|
/**
|
|
6
6
|
* Read the current form adapter from context.
|
|
@@ -21,5 +21,4 @@ function FormAdapterProvider({ adapter, children }) {
|
|
|
21
21
|
children
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
//#endregion
|
|
25
24
|
export { useAdapter as n, FormAdapterProvider as t };
|
package/dist/alert/index.mjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { Alert, AlertDescription, AlertTitle };
|
|
1
|
+
export { t as Alert, n as AlertDescription, r as AlertTitle } from "../alert-CVckvox4.mjs";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
1
|
+
import { t as cn } from "./utils-CTIuhCOs.mjs";
|
|
2
2
|
import { cva } from "class-variance-authority";
|
|
3
3
|
import { CircleXIcon } from "lucide-react";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
-
|
|
6
|
+
// src/components/base/alert/alert.tsx
|
|
7
7
|
/**
|
|
8
8
|
* Datum Alert Component
|
|
9
9
|
* Extends shadcn Alert with Datum-specific variants: success, info, warning
|
|
@@ -89,5 +89,4 @@ function AlertDescription({ className, ...props }) {
|
|
|
89
89
|
...props
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
-
//#endregion
|
|
93
92
|
export { AlertDescription as n, AlertTitle as r, Alert as t };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { C as SidebarProvider, S as SidebarGroupLabel, _ as SidebarMenuSubButton, a as SidebarInput, b as SidebarGroupAction, c as SidebarSeparator, d as SidebarMenuAction, f as SidebarMenuBadge, g as SidebarMenuSub, h as SidebarMenuSkeleton, i as SidebarHeader, l as SidebarTrigger, m as SidebarMenuItem, n as SidebarContent, o as SidebarInset, p as SidebarMenuButton, r as SidebarFooter, s as SidebarRail, t as Sidebar, u as SidebarMenu, v as SidebarMenuSubItem, w as useSidebar, x as SidebarGroupContent, y as SidebarGroup } from "../sidebar-
|
|
2
|
-
import { a as hasActiveDescendant, i as findItemByHref, n as NavMenu, o as isNavItemActive, r as NavMenuItem, s as normalizePath, t as AppNavigation } from "../app-navigation-
|
|
1
|
+
import { C as SidebarProvider, S as SidebarGroupLabel, _ as SidebarMenuSubButton, a as SidebarInput, b as SidebarGroupAction, c as SidebarSeparator, d as SidebarMenuAction, f as SidebarMenuBadge, g as SidebarMenuSub, h as SidebarMenuSkeleton, i as SidebarHeader, l as SidebarTrigger, m as SidebarMenuItem, n as SidebarContent, o as SidebarInset, p as SidebarMenuButton, r as SidebarFooter, s as SidebarRail, t as Sidebar, u as SidebarMenu, v as SidebarMenuSubItem, w as useSidebar, x as SidebarGroupContent, y as SidebarGroup } from "../sidebar-DWnxQWQ8.mjs";
|
|
2
|
+
import { a as hasActiveDescendant, i as findItemByHref, n as NavMenu, o as isNavItemActive, r as NavMenuItem, s as normalizePath, t as AppNavigation } from "../app-navigation-DyNZwlSG.mjs";
|
|
3
3
|
export { AppNavigation, NavMenu, NavMenuItem, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, findItemByHref, hasActiveDescendant, isNavItemActive, normalizePath, useSidebar };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as EASE } from "./motion-DvGRWdsm.mjs";
|
|
1
|
+
import { c as SidebarSeparator, g as SidebarMenuSub, h as SidebarMenuSkeleton, i as SidebarHeader, l as SidebarTrigger, m as SidebarMenuItem, n as SidebarContent, p as SidebarMenuButton, r as SidebarFooter, t as Sidebar, u as SidebarMenu, w as useSidebar, x as SidebarGroupContent, y as SidebarGroup } from "./sidebar-DWnxQWQ8.mjs";
|
|
2
|
+
import { t as cn } from "./utils-CTIuhCOs.mjs";
|
|
3
|
+
import { n as EASE } from "./motion-DOrRbLmy.mjs";
|
|
4
|
+
import { t as Icon } from "./icon-wrapper-CIk2th6R.mjs";
|
|
6
5
|
import { ChevronRight, ExternalLinkIcon } from "lucide-react";
|
|
7
6
|
import { createContext, memo, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
8
|
import { motion } from "motion/react";
|
|
10
|
-
|
|
9
|
+
import { Content, Root, Trigger } from "@radix-ui/react-collapsible";
|
|
10
|
+
// src/components/features/app-navigation/nav-menu/active-path.ts
|
|
11
11
|
/**
|
|
12
12
|
* Pure active-path predicates for the nav menu.
|
|
13
13
|
*
|
|
@@ -85,8 +85,7 @@ function findItemByHref(items, href) {
|
|
|
85
85
|
}
|
|
86
86
|
return null;
|
|
87
87
|
}
|
|
88
|
-
|
|
89
|
-
//#region src/components/features/app-navigation/nav-menu/nav-menu-context.ts
|
|
88
|
+
// src/components/features/app-navigation/nav-menu/nav-menu-context.ts
|
|
90
89
|
const NavMenuContext = createContext(null);
|
|
91
90
|
const NavMenuProvider = NavMenuContext.Provider;
|
|
92
91
|
function useNavMenuContext() {
|
|
@@ -109,8 +108,7 @@ function childLevel(item, level) {
|
|
|
109
108
|
function getNavItemKey(item, level) {
|
|
110
109
|
return `${item.type}:${item.title}:${item.href ?? ""}:${level}`;
|
|
111
110
|
}
|
|
112
|
-
|
|
113
|
-
//#region src/components/features/app-navigation/nav-menu/parts.tsx
|
|
111
|
+
// src/components/features/app-navigation/nav-menu/parts.tsx
|
|
114
112
|
const NAV_STYLES = {
|
|
115
113
|
/**
|
|
116
114
|
* Side inset of every row. With the button's own px-2 it puts each icon 16px
|
|
@@ -158,8 +156,7 @@ function NavSidebarMenuButton({ ref, item, isActive, disableTooltip, className,
|
|
|
158
156
|
});
|
|
159
157
|
}
|
|
160
158
|
NavSidebarMenuButton.displayName = "NavSidebarMenuButton";
|
|
161
|
-
|
|
162
|
-
//#region src/components/features/app-navigation/nav-menu/nav-menu-item.tsx
|
|
159
|
+
// src/components/features/app-navigation/nav-menu/nav-menu-item.tsx
|
|
163
160
|
const COLLAPSIBLE_CONTAINER_VARIANTS = {
|
|
164
161
|
hidden: { opacity: 0 },
|
|
165
162
|
visible: {
|
|
@@ -287,7 +284,7 @@ function NavCollapsibleItem({ item, level }) {
|
|
|
287
284
|
item.showSeparatorAbove && /* @__PURE__ */ jsx(SidebarSeparator, { className: "my-2" }),
|
|
288
285
|
/* @__PURE__ */ jsx(SidebarMenu, {
|
|
289
286
|
className: rowInsetFor(level),
|
|
290
|
-
children: /* @__PURE__ */ jsx(
|
|
287
|
+
children: /* @__PURE__ */ jsx(Root, {
|
|
291
288
|
asChild: true,
|
|
292
289
|
open: panelOpen,
|
|
293
290
|
onOpenChange: (open) => {
|
|
@@ -307,7 +304,7 @@ function NavCollapsibleItem({ item, level }) {
|
|
|
307
304
|
className: "group/collapsible",
|
|
308
305
|
children: /* @__PURE__ */ jsxs(SidebarMenuItem, {
|
|
309
306
|
className: NAV_STYLES.menuItem,
|
|
310
|
-
children: [/* @__PURE__ */ jsx(
|
|
307
|
+
children: [/* @__PURE__ */ jsx(Trigger, {
|
|
311
308
|
asChild: true,
|
|
312
309
|
className: "w-full",
|
|
313
310
|
children: /* @__PURE__ */ jsxs(NavSidebarMenuButton, {
|
|
@@ -331,7 +328,7 @@ function NavCollapsibleItem({ item, level }) {
|
|
|
331
328
|
})
|
|
332
329
|
]
|
|
333
330
|
})
|
|
334
|
-
}), /* @__PURE__ */ jsx(
|
|
331
|
+
}), /* @__PURE__ */ jsx(Content, {
|
|
335
332
|
className: "data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up overflow-hidden group-data-[collapsible=icon]:hidden",
|
|
336
333
|
children: /* @__PURE__ */ jsx("div", {
|
|
337
334
|
style: {
|
|
@@ -428,8 +425,7 @@ function NavLeafItem({ item, level }) {
|
|
|
428
425
|
item.showSeparatorBelow && /* @__PURE__ */ jsx(SidebarSeparator, { className: "my-2" })
|
|
429
426
|
] });
|
|
430
427
|
}
|
|
431
|
-
|
|
432
|
-
//#region src/components/features/app-navigation/nav-menu/nav-menu.tsx
|
|
428
|
+
// src/components/features/app-navigation/nav-menu/nav-menu.tsx
|
|
433
429
|
function NavMenu({ ref, className, items, currentPath, linkComponent: LinkComp = "a", overrideState, itemClassName, activeItemClassName, disableTooltip, closeOnNavigation, ...props }) {
|
|
434
430
|
const pathname = currentPath;
|
|
435
431
|
const { state: sidebarState, isIconRail: sidebarIsIconRail, isMobile, closeForNavigation, setOpen } = useSidebar();
|
|
@@ -524,8 +520,7 @@ function NavMenu({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
524
520
|
});
|
|
525
521
|
}
|
|
526
522
|
NavMenu.displayName = "NavMenu";
|
|
527
|
-
|
|
528
|
-
//#region src/components/features/app-navigation/app-navigation.tsx
|
|
523
|
+
// src/components/features/app-navigation/app-navigation.tsx
|
|
529
524
|
/** Skeleton that mirrors the project nav layout: Home, separator, 6 items, separator, Project Settings */
|
|
530
525
|
function NavSkeleton() {
|
|
531
526
|
return /* @__PURE__ */ jsxs("ul", {
|
|
@@ -608,5 +603,4 @@ function AppNavigation({ navItems, title, closeOnNavigation, defaultOpen, curren
|
|
|
608
603
|
})]
|
|
609
604
|
});
|
|
610
605
|
}
|
|
611
|
-
//#endregion
|
|
612
606
|
export { hasActiveDescendant as a, findItemByHref as i, NavMenu as n, isNavItemActive as o, NavMenuItem as r, normalizePath as s, AppNavigation as t };
|
package/dist/assistant/index.mjs
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
7
|
-
import { n as EASE, t as DURATION } from "../motion-
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { t as Tooltip } from "../tooltip-OIySjJWW.mjs";
|
|
2
|
+
import { t as Icon } from "../icon-wrapper-CIk2th6R.mjs";
|
|
3
|
+
import { t as cn } from "../utils-CTIuhCOs.mjs";
|
|
4
|
+
import { a as DropdownMenuRadioGroup, c as DropdownMenuTrigger, i as DropdownMenuLabel, o as DropdownMenuRadioItem, r as DropdownMenuContent, s as DropdownMenuSeparator, t as DropdownMenu } from "../dropdown-menu-CjgTr8Ab.mjs";
|
|
5
|
+
import { t as CopyStateIcon } from "../copy-state-icon-DMvXXsZm.mjs";
|
|
6
|
+
import { t as Button } from "../button-Cn4KagBO.mjs";
|
|
7
|
+
import { n as EASE, t as DURATION } from "../motion-DOrRbLmy.mjs";
|
|
8
|
+
import { t as Dialog } from "../dialog-C8RXIQYm.mjs";
|
|
9
|
+
import { Archive, ArchiveRestore, ArrowDown, ArrowRight, ArrowUp, Box, Brain, Check, ChevronDown, ClipboardList, Clock, Code, Database, Download, Globe, Laptop, Link, MapPin, MessagesSquare, Mic, MicOff, Network, PanelLeft, Plus, RotateCw, Send, Server, Shield, Split, Square, SquarePen, Trash2, X } from "lucide-react";
|
|
10
|
+
import { Fragment, createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
10
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
12
|
import { AnimatePresence, motion } from "motion/react";
|
|
12
13
|
import { EditorContent } from "@tiptap/react";
|
|
@@ -14,7 +15,7 @@ import { DEFAULT_ASSISTANT_CONFIG as DEFAULT_ASSISTANT_CONFIG$1, activeToolPart,
|
|
|
14
15
|
import { code } from "@streamdown/code";
|
|
15
16
|
import { Streamdown } from "streamdown";
|
|
16
17
|
import "streamdown/styles.css";
|
|
17
|
-
|
|
18
|
+
// src/components/features/assistant/context/assistant-config.tsx
|
|
18
19
|
/**
|
|
19
20
|
* Framework-agnostic link renderer: internal routes (`/…`) render as a plain
|
|
20
21
|
* same-tab anchor, everything else opens in a new tab. Hosts override
|
|
@@ -57,8 +58,7 @@ function AssistantConfigProvider({ config, children }) {
|
|
|
57
58
|
function useAssistantConfig() {
|
|
58
59
|
return useContext(AssistantConfigContext);
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
-
//#region src/components/features/assistant/components/composer/equalizer.tsx
|
|
61
|
+
// src/components/features/assistant/components/composer/equalizer.tsx
|
|
62
62
|
function Equalizer({ frequencyData, className }) {
|
|
63
63
|
return /* @__PURE__ */ jsx("div", {
|
|
64
64
|
className: `flex h-4 items-center justify-center gap-[3px] ${className ?? ""}`,
|
|
@@ -74,8 +74,7 @@ function Equalizer({ frequencyData, className }) {
|
|
|
74
74
|
}, i))
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
//#region src/components/features/assistant/components/composer/model-selector.tsx
|
|
77
|
+
// src/components/features/assistant/components/composer/model-selector.tsx
|
|
79
78
|
function ModelSelector({ modelId, effortId, onModelChange, onEffortChange, disabled }) {
|
|
80
79
|
const { modelSelector } = useAssistantConfig();
|
|
81
80
|
if (!modelSelector) return null;
|
|
@@ -141,8 +140,7 @@ function ModelSelector({ modelId, effortId, onModelChange, onEffortChange, disab
|
|
|
141
140
|
]
|
|
142
141
|
})] });
|
|
143
142
|
}
|
|
144
|
-
|
|
145
|
-
//#region src/components/features/assistant/components/composer/prompt-card.tsx
|
|
143
|
+
// src/components/features/assistant/components/composer/prompt-card.tsx
|
|
146
144
|
function PromptCard({ editor, isReady, canRetry, onSend, onStop, onRetry, modelId, effortId, onModelChange, onEffortChange, speechSupported, isListening, frequencyData, onMicToggle, density = "default", className }) {
|
|
147
145
|
const { modelSelector } = useAssistantConfig();
|
|
148
146
|
const compact = density === "compact";
|
|
@@ -246,8 +244,7 @@ function PromptCard({ editor, isReady, canRetry, onSend, onStop, onRetry, modelI
|
|
|
246
244
|
})]
|
|
247
245
|
});
|
|
248
246
|
}
|
|
249
|
-
|
|
250
|
-
//#region src/components/features/assistant/hooks/use-turn-rail.ts
|
|
247
|
+
// src/components/features/assistant/hooks/use-turn-rail.ts
|
|
251
248
|
/**
|
|
252
249
|
* Tracks conversation "turns" (submitted prompts) for the right-edge rail:
|
|
253
250
|
* derives the turn list, follows which turn is in view as you scroll, and
|
|
@@ -309,14 +306,12 @@ function useTurnRail(messages, containerRef, userScrolledUpRef) {
|
|
|
309
306
|
scrollToTurn
|
|
310
307
|
};
|
|
311
308
|
}
|
|
312
|
-
|
|
313
|
-
//#region src/components/features/assistant/types.ts
|
|
309
|
+
// src/components/features/assistant/types.ts
|
|
314
310
|
/** The message part type that carries a pick-one question (see {@link AssistantChoicesData}). */
|
|
315
311
|
const CHOICES_PART_TYPE = "data-choices";
|
|
316
312
|
/** The message part type that carries a plan the person can approve (see {@link AssistantPlanData}). */
|
|
317
313
|
const PLAN_PART_TYPE = "data-plan";
|
|
318
|
-
|
|
319
|
-
//#region src/components/features/assistant/utils/sanitize-html.ts
|
|
314
|
+
// src/components/features/assistant/utils/sanitize-html.ts
|
|
320
315
|
const HTML_ESCAPE_MAP = {
|
|
321
316
|
"&": "&",
|
|
322
317
|
"<": "<",
|
|
@@ -350,8 +345,7 @@ function sanitizeUserHtml(raw) {
|
|
|
350
345
|
const result = Array.from(doc.body.childNodes).map(walk).join("");
|
|
351
346
|
return result.startsWith("<p>") ? result : `<p>${result}</p>`;
|
|
352
347
|
}
|
|
353
|
-
|
|
354
|
-
//#region src/components/features/assistant/components/message/choice-chips.tsx
|
|
348
|
+
// src/components/features/assistant/components/message/choice-chips.tsx
|
|
355
349
|
const CHOICE_ICONS = {
|
|
356
350
|
clock: Clock,
|
|
357
351
|
container: Box,
|
|
@@ -403,8 +397,7 @@ function AssistantChoiceChips({ data, onChoose, disabled = false }) {
|
|
|
403
397
|
})]
|
|
404
398
|
});
|
|
405
399
|
}
|
|
406
|
-
|
|
407
|
-
//#region src/components/features/assistant/components/message/loading-dots.tsx
|
|
400
|
+
// src/components/features/assistant/components/message/loading-dots.tsx
|
|
408
401
|
/** Three bouncing dots — the assistant's "thinking" indicator. */
|
|
409
402
|
function LoadingDots({ className }) {
|
|
410
403
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -416,8 +409,7 @@ function LoadingDots({ className }) {
|
|
|
416
409
|
]
|
|
417
410
|
});
|
|
418
411
|
}
|
|
419
|
-
|
|
420
|
-
//#region src/components/features/assistant/components/message/plan-card.tsx
|
|
412
|
+
// src/components/features/assistant/components/message/plan-card.tsx
|
|
421
413
|
/** How a few common kinds read to someone who doesn't know their API names. */
|
|
422
414
|
const KIND_LABELS = {
|
|
423
415
|
HTTPProxy: "Load balancer",
|
|
@@ -486,15 +478,29 @@ function timeOf(iso) {
|
|
|
486
478
|
minute: "2-digit"
|
|
487
479
|
});
|
|
488
480
|
}
|
|
481
|
+
/** The longest delay a browser timer honours; a longer one fires at once. */
|
|
482
|
+
const MAX_TIMER_MS = 2 ** 31 - 1;
|
|
489
483
|
/**
|
|
490
484
|
* A plan the assistant settled, as a card: one row per resource with what it
|
|
491
485
|
* does, the YAML and differences on request, and the person's two answers.
|
|
492
486
|
* Nothing is created until they click Approve, and the card then shows how it
|
|
493
487
|
* went.
|
|
494
488
|
*/
|
|
495
|
-
function AssistantPlanCard({ data, latest = true, canApprove = false, onApprove, onChange, now
|
|
489
|
+
function AssistantPlanCard({ data, latest = true, canApprove = false, onApprove, onChange, now }) {
|
|
496
490
|
const [showYaml, setShowYaml] = useState(false);
|
|
497
|
-
const
|
|
491
|
+
const [clock, setClock] = useState(() => Date.now());
|
|
492
|
+
const state = cardState(data, latest, now ?? clock);
|
|
493
|
+
useEffect(() => {
|
|
494
|
+
if (now !== void 0 || state !== "pending") return;
|
|
495
|
+
const wait = Date.parse(data.expiresAt) - Date.now();
|
|
496
|
+
if (Number.isNaN(wait) || wait > MAX_TIMER_MS) return;
|
|
497
|
+
const timer = setTimeout(() => setClock(Date.now()), Math.max(wait, 0) + 50);
|
|
498
|
+
return () => clearTimeout(timer);
|
|
499
|
+
}, [
|
|
500
|
+
now,
|
|
501
|
+
state,
|
|
502
|
+
data.expiresAt
|
|
503
|
+
]);
|
|
498
504
|
const badge = BADGES[state];
|
|
499
505
|
const approvedAt = timeOf(data.approvedAt);
|
|
500
506
|
const appliedNames = new Set((data.applied ?? []).map((a) => `${a.kind}/${a.name}`));
|
|
@@ -648,8 +654,7 @@ function AssistantPlanCard({ data, latest = true, canApprove = false, onApprove,
|
|
|
648
654
|
]
|
|
649
655
|
});
|
|
650
656
|
}
|
|
651
|
-
|
|
652
|
-
//#region src/components/features/assistant/components/message/thinking-block.tsx
|
|
657
|
+
// src/components/features/assistant/components/message/thinking-block.tsx
|
|
653
658
|
function ThinkingBlock({ text, isStreaming = false }) {
|
|
654
659
|
const [open, setOpen] = useState(false);
|
|
655
660
|
const startedAt = useRef(null);
|
|
@@ -686,8 +691,7 @@ function ThinkingBlock({ text, isStreaming = false }) {
|
|
|
686
691
|
})]
|
|
687
692
|
});
|
|
688
693
|
}
|
|
689
|
-
|
|
690
|
-
//#region src/components/features/assistant/components/message/assistant-message.tsx
|
|
694
|
+
// src/components/features/assistant/components/message/assistant-message.tsx
|
|
691
695
|
/** Streamdown overrides shared by both densities (code surfaces). */
|
|
692
696
|
const STREAMDOWN_BASE_CLASSES = "**:data-[streamdown='code-block-body']:bg-card **:data-[streamdown='inline-code']:bg-card dark:**:data-[streamdown='inline-code']:bg-accent **:data-[streamdown='inline-code']:border";
|
|
693
697
|
/**
|
|
@@ -756,13 +760,13 @@ function AssistantMessage({ msg, isLastMessage, status, density = "default", onC
|
|
|
756
760
|
}, i);
|
|
757
761
|
if (part.type === "data-plan") {
|
|
758
762
|
const { id, data } = part;
|
|
759
|
-
const latest = latestPlanId === void 0 || latestPlanId === id;
|
|
763
|
+
const latest = !id || latestPlanId === void 0 || latestPlanId === id;
|
|
760
764
|
return /* @__PURE__ */ jsx(AssistantPlanCard, {
|
|
761
765
|
data,
|
|
762
766
|
latest,
|
|
763
|
-
canApprove: canApprovePlan && latest && onApprovePlan !== void 0,
|
|
764
|
-
onApprove: () => onApprovePlan?.(id),
|
|
765
|
-
onChange: () => onChangePlan?.(id)
|
|
767
|
+
canApprove: canApprovePlan && latest && id !== void 0 && onApprovePlan !== void 0,
|
|
768
|
+
onApprove: () => id && onApprovePlan?.(id),
|
|
769
|
+
onChange: () => id && onChangePlan?.(id)
|
|
766
770
|
}, i);
|
|
767
771
|
}
|
|
768
772
|
if (isToolUIPart(part) && part.state === "output-available" && renderToolOutput) {
|
|
@@ -840,12 +844,12 @@ function MessageActions({ msg }) {
|
|
|
840
844
|
onClick: handleCopy,
|
|
841
845
|
"aria-label": "Copy message",
|
|
842
846
|
className: "hover:text-foreground rounded p-1 transition-colors",
|
|
843
|
-
children:
|
|
844
|
-
|
|
845
|
-
className: "size-3.5"
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
847
|
+
children: /* @__PURE__ */ jsx(CopyStateIcon, {
|
|
848
|
+
copied,
|
|
849
|
+
className: "size-3.5",
|
|
850
|
+
size: 16,
|
|
851
|
+
strokeWidth: 1,
|
|
852
|
+
absoluteStrokeWidth: true
|
|
849
853
|
})
|
|
850
854
|
})
|
|
851
855
|
}), /* @__PURE__ */ jsx(Tooltip, {
|
|
@@ -864,8 +868,7 @@ function MessageActions({ msg }) {
|
|
|
864
868
|
})]
|
|
865
869
|
});
|
|
866
870
|
}
|
|
867
|
-
|
|
868
|
-
//#region src/components/features/assistant/components/message/user-message.tsx
|
|
871
|
+
// src/components/features/assistant/components/message/user-message.tsx
|
|
869
872
|
/** A user's message — a right-aligned bubble rendering the sanitized input HTML. */
|
|
870
873
|
function UserMessage({ html, density = "default" }) {
|
|
871
874
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -879,8 +882,7 @@ function UserMessage({ html, density = "default" }) {
|
|
|
879
882
|
})
|
|
880
883
|
});
|
|
881
884
|
}
|
|
882
|
-
|
|
883
|
-
//#region src/components/features/assistant/components/conversation/scroll-to-bottom-button.tsx
|
|
885
|
+
// src/components/features/assistant/components/conversation/scroll-to-bottom-button.tsx
|
|
884
886
|
/** Floating chevron above the composer; jumps to the latest message. */
|
|
885
887
|
function ScrollToBottomButton({ show, onClick }) {
|
|
886
888
|
return /* @__PURE__ */ jsx(AnimatePresence, { children: show && /* @__PURE__ */ jsx(motion.button, {
|
|
@@ -910,8 +912,7 @@ function ScrollToBottomButton({ show, onClick }) {
|
|
|
910
912
|
})
|
|
911
913
|
}) });
|
|
912
914
|
}
|
|
913
|
-
|
|
914
|
-
//#region src/components/features/assistant/components/conversation/turn-rail.tsx
|
|
915
|
+
// src/components/features/assistant/components/conversation/turn-rail.tsx
|
|
915
916
|
/**
|
|
916
917
|
* Right-edge rail: ticks (one per submitted prompt) when idle; morphs into a
|
|
917
918
|
* compact, clickable prompt list on hover. The in-view turn is highlighted.
|
|
@@ -937,8 +938,7 @@ function TurnRail({ turns, activeId, onJump }) {
|
|
|
937
938
|
})
|
|
938
939
|
});
|
|
939
940
|
}
|
|
940
|
-
|
|
941
|
-
//#region src/components/features/assistant/components/conversation/conversation.tsx
|
|
941
|
+
// src/components/features/assistant/components/conversation/conversation.tsx
|
|
942
942
|
function Conversation({ messages, status, error, htmlByUserMsgIndex, containerRef, bottomRef, userScrolledUpRef, footer, density = "default", onChoose, onApprovePlan, onChangePlan }) {
|
|
943
943
|
const compact = density === "compact";
|
|
944
944
|
const [showScrollButton, setShowScrollButton] = useState(false);
|
|
@@ -1087,8 +1087,7 @@ function newestPlanId(messages) {
|
|
|
1087
1087
|
}
|
|
1088
1088
|
}
|
|
1089
1089
|
}
|
|
1090
|
-
|
|
1091
|
-
//#region src/components/features/assistant/components/brain-glyph.tsx
|
|
1090
|
+
// src/components/features/assistant/components/brain-glyph.tsx
|
|
1092
1091
|
/**
|
|
1093
1092
|
* Decorative brain/sunburst glyph for the assistant empty-state greeting (per
|
|
1094
1093
|
* Figma). Follows the Datum logo's theming: canyon-clay (#bf9595) in light,
|
|
@@ -1109,8 +1108,7 @@ function BrainGlyph({ className }) {
|
|
|
1109
1108
|
})
|
|
1110
1109
|
});
|
|
1111
1110
|
}
|
|
1112
|
-
|
|
1113
|
-
//#region src/components/features/assistant/components/empty-state.tsx
|
|
1111
|
+
// src/components/features/assistant/components/empty-state.tsx
|
|
1114
1112
|
function EmptyState({ name, isReady, onSuggestion, compact = false, children }) {
|
|
1115
1113
|
const { greeting, suggestions } = useAssistantConfig();
|
|
1116
1114
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -1180,8 +1178,7 @@ function EmptyState({ name, isReady, onSuggestion, compact = false, children })
|
|
|
1180
1178
|
]
|
|
1181
1179
|
});
|
|
1182
1180
|
}
|
|
1183
|
-
|
|
1184
|
-
//#region src/components/features/assistant/components/sidebar/chat-rail.tsx
|
|
1181
|
+
// src/components/features/assistant/components/sidebar/chat-rail.tsx
|
|
1185
1182
|
function ChatRail({ historyOpen, onNewChat, onToggleHistory }) {
|
|
1186
1183
|
const iconClass = "text-foreground hover:bg-card hover:text-primary flex size-9 items-center justify-center rounded-md border border-transparent transition-colors";
|
|
1187
1184
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -1216,8 +1213,7 @@ function ChatRail({ historyOpen, onNewChat, onToggleHistory }) {
|
|
|
1216
1213
|
})]
|
|
1217
1214
|
});
|
|
1218
1215
|
}
|
|
1219
|
-
|
|
1220
|
-
//#region src/components/features/assistant/components/sidebar/history-panel.tsx
|
|
1216
|
+
// src/components/features/assistant/components/sidebar/history-panel.tsx
|
|
1221
1217
|
function downloadChat(chat) {
|
|
1222
1218
|
const blob = new Blob([chatToMarkdown(chat)], { type: "text/markdown" });
|
|
1223
1219
|
const url = URL.createObjectURL(blob);
|
|
@@ -1403,8 +1399,7 @@ function HistoryPanel({ chatList, currentChatId, onLoadChat, onDeleteChat, onArc
|
|
|
1403
1399
|
]
|
|
1404
1400
|
});
|
|
1405
1401
|
}
|
|
1406
|
-
|
|
1407
|
-
//#region src/components/features/assistant/components/assistant-workspace.tsx
|
|
1402
|
+
// src/components/features/assistant/components/assistant-workspace.tsx
|
|
1408
1403
|
const HEADER_BUTTON_CLASS = "text-muted-foreground hover:text-foreground hover:bg-accent shrink-0 rounded-md p-1.5 transition-colors";
|
|
1409
1404
|
const PANEL_SPRING = {
|
|
1410
1405
|
type: "spring",
|
|
@@ -1590,5 +1585,4 @@ function AssistantWorkspace({ orientation = "horizontal", onClose, config, userN
|
|
|
1590
1585
|
})
|
|
1591
1586
|
});
|
|
1592
1587
|
}
|
|
1593
|
-
//#endregion
|
|
1594
1588
|
export { AssistantChoiceChips, AssistantConfigProvider, AssistantMessage, AssistantPlanCard, AssistantWorkspace, BrainGlyph, CHOICES_PART_TYPE, ChatRail, Conversation, DEFAULT_ASSISTANT_CONFIG, EmptyState, Equalizer, HistoryPanel, LoadingDots, ModelSelector, PLAN_PART_TYPE, PromptCard, ScrollToBottomButton, ThinkingBlock, TurnRail, UserMessage, defaultRenderLink, formatRelativeTime, sanitizeUserHtml, useAssistantConfig, useTurnRail };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { Autocomplete };
|
|
1
|
+
export { t as Autocomplete } from "../autocomplete-D0zAcT78.mjs";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import {
|
|
1
|
+
import { t as cn } from "./utils-CTIuhCOs.mjs";
|
|
2
|
+
import { n as OptionList, t as useOptionPicker } from "./use-option-picker-DXY2SNnT.mjs";
|
|
3
|
+
import { t as ResponsivePopover } from "./responsive-popover-DJYd8lOK.mjs";
|
|
4
|
+
import { t as LoaderOverlay } from "./loader-overlay-DP0pvHuG.mjs";
|
|
5
5
|
import { ChevronDown } from "lucide-react";
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
|
|
8
|
+
// src/components/features/autocomplete/trigger.tsx
|
|
9
9
|
function Trigger({ ref, selectedOption, createdValue, renderValue, placeholder, loading, disabled, open, id, className, ...rest }) {
|
|
10
10
|
let displayContent;
|
|
11
11
|
if (selectedOption) displayContent = renderValue ? renderValue(selectedOption) : /* @__PURE__ */ jsx("span", {
|
|
@@ -40,8 +40,7 @@ function Trigger({ ref, selectedOption, createdValue, renderValue, placeholder,
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
Trigger.displayName = "AutocompleteTrigger";
|
|
43
|
-
|
|
44
|
-
//#region src/components/features/autocomplete/autocomplete.tsx
|
|
43
|
+
// src/components/features/autocomplete/autocomplete.tsx
|
|
45
44
|
/**
|
|
46
45
|
* Autocomplete - A searchable select component
|
|
47
46
|
*
|
|
@@ -128,5 +127,4 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
|
|
|
128
127
|
});
|
|
129
128
|
}
|
|
130
129
|
Autocomplete.displayName = "Autocomplete";
|
|
131
|
-
//#endregion
|
|
132
130
|
export { Autocomplete as t };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as cn } from "../utils-
|
|
2
|
-
import { t as Button } from "../button-
|
|
3
|
-
import { t as Input } from "../input-
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
1
|
+
import { t as cn } from "../utils-CTIuhCOs.mjs";
|
|
2
|
+
import { t as Button } from "../button-Cn4KagBO.mjs";
|
|
3
|
+
import { t as Input } from "../input-DsT5qkJn.mjs";
|
|
4
|
+
import { n as OptionList, t as useOptionPicker } from "../use-option-picker-DXY2SNnT.mjs";
|
|
5
|
+
import { t as ResponsivePopover } from "../responsive-popover-DJYd8lOK.mjs";
|
|
6
|
+
import { t as Tooltip } from "../tooltip-OIySjJWW.mjs";
|
|
7
7
|
import { AlertCircle, Loader2, X } from "lucide-react";
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
-
|
|
10
|
+
// src/components/features/autosearch/autosearch.tsx
|
|
11
11
|
/**
|
|
12
12
|
* Autosearch - Search-first input with dropdown results
|
|
13
13
|
*
|
|
@@ -184,8 +184,7 @@ function Autosearch({ options = [], value, onValueChange, onSearch, searchDeboun
|
|
|
184
184
|
});
|
|
185
185
|
}
|
|
186
186
|
Autosearch.displayName = "Autosearch";
|
|
187
|
-
|
|
188
|
-
//#region src/components/features/autosearch/autosearch.types.ts
|
|
187
|
+
// src/components/features/autosearch/autosearch.types.ts
|
|
189
188
|
/**
|
|
190
189
|
* Default function to extract searchable text from an option.
|
|
191
190
|
* Combines label, description, and value for comprehensive searching.
|
|
@@ -197,5 +196,4 @@ function defaultAutosearchValue(option) {
|
|
|
197
196
|
option.value
|
|
198
197
|
].filter(Boolean).join(" ");
|
|
199
198
|
}
|
|
200
|
-
//#endregion
|
|
201
199
|
export { Autosearch, defaultAutosearchValue };
|
package/dist/avatar/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as cn } from "../utils-
|
|
1
|
+
import { t as cn } from "../utils-CTIuhCOs.mjs";
|
|
2
2
|
import "react";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
5
|
-
|
|
5
|
+
// ../shadcn/ui/avatar.tsx
|
|
6
6
|
function Avatar({ className, ...props }) {
|
|
7
7
|
return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
|
|
8
8
|
"data-slot": "avatar",
|
|
@@ -24,5 +24,4 @@ function AvatarFallback({ className, ...props }) {
|
|
|
24
24
|
...props
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
//#endregion
|
|
28
27
|
export { Avatar, AvatarFallback, AvatarImage };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { AvatarStack, avatarStackVariants };
|
|
1
|
+
export { t as AvatarStack, n as avatarStackVariants } from "../avatar-stack-2ow672bR.mjs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { t as cn } from "./utils-
|
|
1
|
+
import { t as cn } from "./utils-CTIuhCOs.mjs";
|
|
2
2
|
import { Avatar, AvatarFallback, AvatarImage } from "./avatar/index.mjs";
|
|
3
|
-
import { t as Tooltip } from "./tooltip-
|
|
3
|
+
import { t as Tooltip } from "./tooltip-OIySjJWW.mjs";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
5
|
import "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
|
|
7
|
+
// src/components/features/avatar-stack/avatar-stack.tsx
|
|
8
8
|
const avatarStackVariants = cva("flex", {
|
|
9
9
|
variants: {
|
|
10
10
|
orientation: {
|
|
@@ -49,5 +49,4 @@ function AvatarStack({ className, orientation, avatars, spacing, maxAvatarsAmoun
|
|
|
49
49
|
}) : null]
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
//#endregion
|
|
53
52
|
export { avatarStackVariants as n, AvatarStack as t };
|