@uisatin/ui 0.2.0 → 0.4.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 +27 -0
- package/README.md +10 -1
- package/{chunk-P4O6TGDR.js → chunk-3VVO5MY5.js} +28 -26
- package/chunk-47DDBME3.js +87 -0
- package/{chunk-SHDFUXYV.js → chunk-5663JVE5.js} +16 -18
- package/chunk-67CBFB6Y.js +99 -0
- package/chunk-6DWLTGRQ.js +130 -0
- package/chunk-6GNMUJQ4.js +45 -0
- package/chunk-6JTSZAGO.js +177 -0
- package/chunk-6RLSRMB5.js +14 -0
- package/chunk-6Y6CY2DP.js +55 -0
- package/{chunk-O7F3CIDV.js → chunk-7NV53EL5.js} +10 -12
- package/{chunk-BNZVTLHV.js → chunk-7SVMERPH.js} +25 -21
- package/chunk-A52HUWVM.js +24 -0
- package/chunk-AKEZCWNW.js +29 -0
- package/{chunk-SH6NG6VN.js → chunk-APRVUOD6.js} +6 -8
- package/{chunk-QUF2IPOZ.js → chunk-C435UD7V.js} +14 -15
- package/{chunk-B2K45IUR.js → chunk-C6WRJ7DG.js} +5 -7
- package/{chunk-PF3YBUKT.js → chunk-CQFAMWZI.js} +16 -15
- package/chunk-DAKVTPYZ.js +86 -0
- package/{chunk-VAGIAREV.js → chunk-DMZW4LGU.js} +29 -26
- package/chunk-EBZHGRM5.js +46 -0
- package/chunk-EHEXE2UV.js +44 -0
- package/{chunk-72OCFAPT.js → chunk-EQAFDIPE.js} +26 -23
- package/{chunk-LLHTVIM3.js → chunk-EXKSKYG3.js} +7 -9
- package/chunk-FB6DG3LR.js +35 -0
- package/chunk-GH2DEOGO.js +67 -0
- package/{chunk-YG7JOOLJ.js → chunk-GKDMCY2S.js} +5 -7
- package/chunk-GTFUAA6H.js +42 -0
- package/{chunk-TX3H3QMA.js → chunk-HI6QIG55.js} +71 -70
- package/{chunk-6QMSWITQ.js → chunk-HZV7EXGU.js} +24 -26
- package/{chunk-A5XEM3GF.js → chunk-IKJIR6VL.js} +34 -36
- package/{chunk-DO3TBNSC.js → chunk-INJWE2LD.js} +15 -17
- package/chunk-J5UQPROI.js +56 -0
- package/{chunk-6YXUBP27.js → chunk-JCR5TWTF.js} +72 -67
- package/chunk-JKOBDLP3.js +25 -0
- package/chunk-JR3VVDV6.js +37 -0
- package/chunk-JYGCZWET.js +112 -0
- package/{chunk-UGRSWP6U.js → chunk-K5G5OEV5.js} +10 -12
- package/{chunk-B6V4VSGH.js → chunk-KDU7AT2T.js} +14 -15
- package/chunk-KITXKIYW.js +104 -0
- package/{chunk-NN6PKJWS.js → chunk-KQNA22D3.js} +7 -9
- package/{chunk-YPNKBE5X.js → chunk-L5PPN42A.js} +14 -9
- package/chunk-LAOE6Y57.js +95 -0
- package/chunk-LI5VYDLN.js +195 -0
- package/{chunk-7TXHCRAG.js → chunk-LKSFTNPF.js} +8 -10
- package/chunk-LLW3X4ZJ.js +39 -0
- package/{chunk-RTJ76X5U.js → chunk-LWRB4DED.js} +2 -4
- package/{chunk-NSRTTYQ4.js → chunk-M7RILZVW.js} +42 -35
- package/{chunk-LW3TRU5W.js → chunk-MOGWOUCN.js} +28 -16
- package/chunk-NCIRJ5V2.js +108 -0
- package/chunk-NQL6SIIB.js +168 -0
- package/chunk-NTSU44FY.js +81 -0
- package/{chunk-3DINAQLL.js → chunk-P36KBUYD.js} +33 -29
- package/chunk-P6RHT2VM.js +147 -0
- package/{chunk-CL2II6BX.js → chunk-PD2KD5OR.js} +11 -13
- package/{chunk-XL75JRUA.js → chunk-PP46SY7M.js} +42 -22
- package/{chunk-L6NCCSIP.js → chunk-PTK4QAOQ.js} +36 -29
- package/{chunk-HL42K2NH.js → chunk-Q7KVC5B4.js} +17 -17
- package/{chunk-H4NU7NPO.js → chunk-R3DTMBDT.js} +62 -61
- package/{chunk-KNUWZNFV.js → chunk-R4KPFBMK.js} +4 -6
- package/chunk-R5TQ3HNB.js +71 -0
- package/chunk-RFSPJECL.js +84 -0
- package/chunk-RPL6FRVX.js +88 -0
- package/{chunk-AN2RNJLR.js → chunk-STYOBAC7.js} +16 -16
- package/{chunk-X3PQANZO.js → chunk-SVUWR3HD.js} +47 -46
- package/chunk-T7P3OEBP.js +128 -0
- package/{chunk-QS4N4MNP.js → chunk-TB3ZRV3Y.js} +18 -20
- package/{chunk-MYEZXZZC.js → chunk-TOY6YPTG.js} +23 -25
- package/{chunk-XILQ7GXE.js → chunk-U6X6ODDJ.js} +11 -13
- package/{chunk-XZNHT6MO.js → chunk-UAJ6M34K.js} +115 -61
- package/chunk-W2EH6RY5.js +42 -0
- package/{chunk-FDKIX4DC.js → chunk-W2QQQWNE.js} +7 -9
- package/{chunk-LZMKSFCF.js → chunk-WALANB3V.js} +10 -12
- package/chunk-WCUR44O6.js +88 -0
- package/{chunk-BNTPPZCK.js → chunk-WJYJMX5S.js} +37 -39
- package/chunk-WZSLDYUU.js +131 -0
- package/{chunk-J3NSDRVH.js → chunk-XETMIETJ.js} +0 -2
- package/chunk-XU6JJDMZ.js +117 -0
- package/{chunk-BKZBWPUH.js → chunk-XWPH7C2W.js} +9 -11
- package/{chunk-GICKPMJU.js → chunk-YXWXSRXG.js} +31 -31
- package/{chunk-2HKBZFIK.js → chunk-YY236ZSJ.js} +31 -31
- package/{chunk-YX5VNRJX.js → chunk-YYFAZQ25.js} +0 -2
- package/{chunk-Y5AYU7PK.js → chunk-ZHFIWDGF.js} +0 -2
- package/components/accordion.js +2 -4
- package/components/action-button.d.ts +37 -0
- package/components/action-button.js +5 -0
- package/components/agent-loading.d.ts +2 -0
- package/components/agent-loading.js +2 -4
- package/components/agent-picker.js +5 -5
- package/components/agent-suggestion.js +5 -6
- package/components/alert.d.ts +37 -0
- package/components/alert.js +5 -0
- package/components/announcement-bar.js +7 -7
- package/components/attachment.js +5 -5
- package/components/avatar.js +4 -6
- package/components/badge.js +2 -4
- package/components/banner-mesh.js +1 -3
- package/components/banner.js +6 -6
- package/components/bar-chart.js +10 -11
- package/components/breadcrumb.js +5 -6
- package/components/button-group.d.ts +26 -0
- package/components/button-group.js +5 -0
- package/components/button.d.ts +13 -1
- package/components/button.js +4 -4
- package/components/card.js +5 -5
- package/components/channel-chart.js +10 -11
- package/components/chart.js +9 -10
- package/components/checkbox.js +2 -4
- package/components/chip.js +2 -4
- package/components/citations.d.ts +6 -4
- package/components/citations.js +4 -5
- package/components/code-block.js +5 -5
- package/components/combobox.d.ts +12 -3
- package/components/combobox.js +10 -10
- package/components/command-menu.d.ts +6 -2
- package/components/command-menu.js +5 -6
- package/components/context-menu.d.ts +12 -5
- package/components/context-menu.js +5 -6
- package/components/cookie-consent.js +5 -5
- package/components/date-picker.d.ts +26 -14
- package/components/date-picker.js +9 -9
- package/components/decision-card.js +7 -7
- package/components/dialog.d.ts +6 -8
- package/components/dialog.js +6 -5
- package/components/donut-chart.js +10 -11
- package/components/dot.js +2 -4
- package/components/dropdown.d.ts +6 -1
- package/components/dropdown.js +4 -5
- package/components/empty-state.js +2 -4
- package/components/field-group.d.ts +27 -0
- package/components/field-group.js +3 -0
- package/components/file-upload.js +7 -7
- package/components/floating.js +1 -3
- package/components/form-field.d.ts +38 -1
- package/components/form-field.js +2 -4
- package/components/form.d.ts +47 -0
- package/components/form.js +3 -0
- package/components/hover-card.d.ts +5 -2
- package/components/hover-card.js +2 -4
- package/components/input-group.d.ts +21 -0
- package/components/input-group.js +6 -0
- package/components/input-otp.d.ts +4 -2
- package/components/input-otp.js +7 -8
- package/components/input.d.ts +5 -1
- package/components/input.js +3 -5
- package/components/kbd.js +2 -4
- package/components/labels.d.ts +86 -0
- package/components/labels.js +1 -0
- package/components/line-chart.js +11 -12
- package/components/link.d.ts +20 -0
- package/components/link.js +3 -0
- package/components/list.d.ts +46 -0
- package/components/list.js +2 -0
- package/components/message-actions.js +5 -5
- package/components/message.js +8 -8
- package/components/number-input.d.ts +4 -2
- package/components/number-input.js +7 -8
- package/components/pagination.js +6 -6
- package/components/password-input.d.ts +16 -0
- package/components/password-input.js +7 -0
- package/components/popover.d.ts +11 -5
- package/components/popover.js +3 -4
- package/components/progress.js +2 -4
- package/components/prompt-bar.js +6 -6
- package/components/radio.js +2 -4
- package/components/search-bar.js +3 -5
- package/components/segmented-control.d.ts +4 -2
- package/components/segmented-control.js +3 -5
- package/components/select.d.ts +11 -2
- package/components/select.js +6 -7
- package/components/selectable-card.d.ts +37 -0
- package/components/selectable-card.js +2 -0
- package/components/selectable-checkbox.d.ts +14 -0
- package/components/selectable-checkbox.js +4 -0
- package/components/selectable-radio.d.ts +16 -0
- package/components/selectable-radio.js +3 -0
- package/components/separator.d.ts +18 -0
- package/components/separator.js +2 -0
- package/components/sheet.d.ts +4 -2
- package/components/sheet.js +7 -6
- package/components/sidebar.js +2 -4
- package/components/skeleton.js +2 -4
- package/components/slider.d.ts +6 -2
- package/components/slider.js +7 -8
- package/components/sliding-indicator.js +1 -3
- package/components/spinner.d.ts +18 -0
- package/components/spinner.js +3 -0
- package/components/split-button.d.ts +24 -0
- package/components/split-button.js +8 -0
- package/components/streaming-text.js +2 -4
- package/components/switch.js +2 -4
- package/components/table.d.ts +16 -5
- package/components/table.js +4 -5
- package/components/tabs.d.ts +4 -2
- package/components/tabs.js +3 -5
- package/components/textarea.js +3 -5
- package/components/thinking.js +3 -5
- package/components/toast.js +5 -5
- package/components/toggle.js +2 -4
- package/components/tooltip.d.ts +5 -2
- package/components/tooltip.js +3 -5
- package/index.d.ts +17 -2
- package/index.js +82 -231
- package/lib/utils.d.ts +8 -1
- package/lib/utils.js +1 -3
- package/package.json +11 -1
- package/styles.css +1 -1
- package/theme/create-theme.d.ts +6 -2
- package/theme/index.js +1 -0
- package/chunk-2HKBZFIK.js.map +0 -1
- package/chunk-3DINAQLL.js.map +0 -1
- package/chunk-3ERGAHKA.js +0 -179
- package/chunk-3ERGAHKA.js.map +0 -1
- package/chunk-6C7CGJX2.js +0 -86
- package/chunk-6C7CGJX2.js.map +0 -1
- package/chunk-6QMSWITQ.js.map +0 -1
- package/chunk-6YXUBP27.js.map +0 -1
- package/chunk-72OCFAPT.js.map +0 -1
- package/chunk-7TXHCRAG.js.map +0 -1
- package/chunk-A5XEM3GF.js.map +0 -1
- package/chunk-AN2RNJLR.js.map +0 -1
- package/chunk-B2K45IUR.js.map +0 -1
- package/chunk-B6V4VSGH.js.map +0 -1
- package/chunk-BKZBWPUH.js.map +0 -1
- package/chunk-BNTPPZCK.js.map +0 -1
- package/chunk-BNZVTLHV.js.map +0 -1
- package/chunk-CL2II6BX.js.map +0 -1
- package/chunk-D7RZNTFC.js +0 -95
- package/chunk-D7RZNTFC.js.map +0 -1
- package/chunk-DETGJAIC.js +0 -147
- package/chunk-DETGJAIC.js.map +0 -1
- package/chunk-DO3TBNSC.js.map +0 -1
- package/chunk-ESC5JCVQ.js +0 -90
- package/chunk-ESC5JCVQ.js.map +0 -1
- package/chunk-FDKIX4DC.js.map +0 -1
- package/chunk-GICKPMJU.js.map +0 -1
- package/chunk-GQA24FYG.js +0 -57
- package/chunk-GQA24FYG.js.map +0 -1
- package/chunk-H4NU7NPO.js.map +0 -1
- package/chunk-H63FYCMY.js +0 -11
- package/chunk-H63FYCMY.js.map +0 -1
- package/chunk-HL42K2NH.js.map +0 -1
- package/chunk-HNQUX43Z.js +0 -109
- package/chunk-HNQUX43Z.js.map +0 -1
- package/chunk-HRKPV66B.js +0 -32
- package/chunk-HRKPV66B.js.map +0 -1
- package/chunk-J3NSDRVH.js.map +0 -1
- package/chunk-JPNWHWAQ.js +0 -151
- package/chunk-JPNWHWAQ.js.map +0 -1
- package/chunk-KNUWZNFV.js.map +0 -1
- package/chunk-L6NCCSIP.js.map +0 -1
- package/chunk-LLHTVIM3.js.map +0 -1
- package/chunk-LW3TRU5W.js.map +0 -1
- package/chunk-LZMKSFCF.js.map +0 -1
- package/chunk-MR3JDI7E.js +0 -122
- package/chunk-MR3JDI7E.js.map +0 -1
- package/chunk-MYEZXZZC.js.map +0 -1
- package/chunk-NN6PKJWS.js.map +0 -1
- package/chunk-NSRTTYQ4.js.map +0 -1
- package/chunk-O7F3CIDV.js.map +0 -1
- package/chunk-P4O6TGDR.js.map +0 -1
- package/chunk-PF3YBUKT.js.map +0 -1
- package/chunk-PVOLDO4G.js +0 -47
- package/chunk-PVOLDO4G.js.map +0 -1
- package/chunk-QS4N4MNP.js.map +0 -1
- package/chunk-QUF2IPOZ.js.map +0 -1
- package/chunk-RTJ76X5U.js.map +0 -1
- package/chunk-SH6NG6VN.js.map +0 -1
- package/chunk-SHDFUXYV.js.map +0 -1
- package/chunk-TKO44NDI.js +0 -84
- package/chunk-TKO44NDI.js.map +0 -1
- package/chunk-TX3H3QMA.js.map +0 -1
- package/chunk-UBNHSZSE.js +0 -88
- package/chunk-UBNHSZSE.js.map +0 -1
- package/chunk-UC3ZJWOD.js +0 -73
- package/chunk-UC3ZJWOD.js.map +0 -1
- package/chunk-UGRSWP6U.js.map +0 -1
- package/chunk-VAGIAREV.js.map +0 -1
- package/chunk-WTMZT3IT.js +0 -105
- package/chunk-WTMZT3IT.js.map +0 -1
- package/chunk-WX6BP5ZP.js +0 -39
- package/chunk-WX6BP5ZP.js.map +0 -1
- package/chunk-X3PQANZO.js.map +0 -1
- package/chunk-XILQ7GXE.js.map +0 -1
- package/chunk-XL75JRUA.js.map +0 -1
- package/chunk-XZNHT6MO.js.map +0 -1
- package/chunk-Y5AYU7PK.js.map +0 -1
- package/chunk-YG7JOOLJ.js.map +0 -1
- package/chunk-YPJYW624.js +0 -195
- package/chunk-YPJYW624.js.map +0 -1
- package/chunk-YPNKBE5X.js.map +0 -1
- package/chunk-YX5VNRJX.js.map +0 -1
- package/components/accordion.js.map +0 -1
- package/components/agent-loading.js.map +0 -1
- package/components/agent-picker.js.map +0 -1
- package/components/agent-suggestion.js.map +0 -1
- package/components/announcement-bar.js.map +0 -1
- package/components/attachment.js.map +0 -1
- package/components/avatar.js.map +0 -1
- package/components/badge.js.map +0 -1
- package/components/banner-mesh.js.map +0 -1
- package/components/banner.js.map +0 -1
- package/components/bar-chart.js.map +0 -1
- package/components/breadcrumb.js.map +0 -1
- package/components/button.js.map +0 -1
- package/components/card.js.map +0 -1
- package/components/channel-chart.js.map +0 -1
- package/components/chart.js.map +0 -1
- package/components/checkbox.js.map +0 -1
- package/components/chip.js.map +0 -1
- package/components/citations.js.map +0 -1
- package/components/code-block.js.map +0 -1
- package/components/combobox.js.map +0 -1
- package/components/command-menu.js.map +0 -1
- package/components/context-menu.js.map +0 -1
- package/components/cookie-consent.js.map +0 -1
- package/components/date-picker.js.map +0 -1
- package/components/decision-card.js.map +0 -1
- package/components/dialog.js.map +0 -1
- package/components/donut-chart.js.map +0 -1
- package/components/dot.js.map +0 -1
- package/components/dropdown.js.map +0 -1
- package/components/empty-state.js.map +0 -1
- package/components/file-upload.js.map +0 -1
- package/components/floating.js.map +0 -1
- package/components/form-field.js.map +0 -1
- package/components/hover-card.js.map +0 -1
- package/components/input-otp.js.map +0 -1
- package/components/input.js.map +0 -1
- package/components/kbd.js.map +0 -1
- package/components/line-chart.js.map +0 -1
- package/components/message-actions.js.map +0 -1
- package/components/message.js.map +0 -1
- package/components/number-input.js.map +0 -1
- package/components/pagination.js.map +0 -1
- package/components/popover.js.map +0 -1
- package/components/progress.js.map +0 -1
- package/components/prompt-bar.js.map +0 -1
- package/components/radio.js.map +0 -1
- package/components/search-bar.js.map +0 -1
- package/components/segmented-control.js.map +0 -1
- package/components/select.js.map +0 -1
- package/components/sheet.js.map +0 -1
- package/components/sidebar.js.map +0 -1
- package/components/skeleton.js.map +0 -1
- package/components/slider.js.map +0 -1
- package/components/sliding-indicator.js.map +0 -1
- package/components/streaming-text.js.map +0 -1
- package/components/switch.js.map +0 -1
- package/components/table.js.map +0 -1
- package/components/tabs.js.map +0 -1
- package/components/textarea.js.map +0 -1
- package/components/thinking.js.map +0 -1
- package/components/toast.js.map +0 -1
- package/components/toggle.js.map +0 -1
- package/components/tooltip.js.map +0 -1
- package/index.js.map +0 -1
- package/lib/utils.js.map +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { KbdHint, KbdArrowUp, KbdArrowDown, KbdReturn } from './chunk-
|
|
2
|
-
import { Button } from './chunk-
|
|
3
|
-
import {
|
|
1
|
+
import { KbdHint, KbdArrowUp, KbdArrowDown, KbdReturn } from './chunk-XWPH7C2W.js';
|
|
2
|
+
import { Button } from './chunk-6DWLTGRQ.js';
|
|
3
|
+
import { useSatinLabels } from './chunk-NTSU44FY.js';
|
|
4
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { Popover, DropdownMenu } from 'radix-ui';
|
|
6
|
-
import { Attachment, Globe, Plus, ArrowUp, Search, Check, Microphone, Xmark, Page
|
|
7
|
+
import { Attachment, Globe, Plus, ArrowUp, Search, NavArrowDown, Check, Microphone, Xmark, Page } from 'iconoir-react';
|
|
7
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
10
|
var defaultActions = [
|
|
@@ -11,10 +12,10 @@ var defaultActions = [
|
|
|
11
12
|
{ id: "web", label: "Web search", description: "Research and find on the internet", icon: /* @__PURE__ */ jsx(Globe, {}) }
|
|
12
13
|
];
|
|
13
14
|
var menuCard = [
|
|
14
|
-
"overflow-clip rounded-xl border border-border-subtle bg-bg-popover",
|
|
15
|
-
"[box-shadow:0_1px_3px_0_var(--effect-shadow-sm),0_1px_2px_-1px_var(--effect-shadow-sm)]",
|
|
16
|
-
"origin-(--radix-popper-transform-origin) data-[state=open]:animate-[satin-enter_var(--duration-base)_var(--ease-out)]",
|
|
17
|
-
"focus-visible:outline-none"
|
|
15
|
+
"sa:overflow-clip sa:rounded-xl sa:border sa:border-border-subtle sa:bg-bg-popover",
|
|
16
|
+
"sa:[box-shadow:0_1px_3px_0_var(--effect-shadow-sm),0_1px_2px_-1px_var(--effect-shadow-sm)]",
|
|
17
|
+
"sa:origin-(--radix-popper-transform-origin) sa:data-[state=open]:animate-[satin-enter_var(--sa-duration-base)_var(--sa-ease-out)]",
|
|
18
|
+
"sa:focus-visible:outline-none"
|
|
18
19
|
];
|
|
19
20
|
function PromptBar({
|
|
20
21
|
shape = "pill",
|
|
@@ -36,6 +37,7 @@ function PromptBar({
|
|
|
36
37
|
className,
|
|
37
38
|
...props
|
|
38
39
|
}) {
|
|
40
|
+
const labels = useSatinLabels();
|
|
39
41
|
const [innerValue, setInnerValue] = React.useState(defaultValue);
|
|
40
42
|
const value = valueProp ?? innerValue;
|
|
41
43
|
const [files, setFiles] = React.useState(attachmentsProp ?? []);
|
|
@@ -94,11 +96,11 @@ function PromptBar({
|
|
|
94
96
|
submit();
|
|
95
97
|
},
|
|
96
98
|
className: cn(
|
|
97
|
-
"flex w-full flex-col gap-2 border border-border-default bg-bg-field p-2 [box-shadow:0_1px_2px_0_var(--effect-shadow-xs)]",
|
|
98
|
-
"transition-[border-color,border-radius] duration-(--duration-fast) ease-(--ease-out)",
|
|
99
|
-
"has-[textarea:focus]:border-border-strong data-filled:border-border-strong",
|
|
100
|
-
pill ? files.length > 0 || expanded ? "rounded-3xl" : "rounded-pill" : "rounded-xl",
|
|
101
|
-
disabled && "opacity-50",
|
|
99
|
+
"sa:flex sa:w-full sa:flex-col sa:gap-2 sa:border sa:border-border-default sa:bg-bg-field sa:p-2 sa:[box-shadow:0_1px_2px_0_var(--effect-shadow-xs)]",
|
|
100
|
+
"sa:transition-[border-color,border-radius] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
101
|
+
"sa:has-[textarea:focus]:border-border-strong sa:data-filled:border-border-strong",
|
|
102
|
+
pill ? files.length > 0 || expanded ? "sa:rounded-3xl" : "sa:rounded-pill" : "sa:rounded-xl",
|
|
103
|
+
disabled && "sa:opacity-50",
|
|
102
104
|
className
|
|
103
105
|
),
|
|
104
106
|
...props,
|
|
@@ -117,7 +119,7 @@ function PromptBar({
|
|
|
117
119
|
}
|
|
118
120
|
}
|
|
119
121
|
),
|
|
120
|
-
files.length > 0 && /* @__PURE__ */ jsx("ul", { "aria-label":
|
|
122
|
+
files.length > 0 && /* @__PURE__ */ jsx("ul", { "aria-label": labels.attachments, className: "sa:flex sa:flex-wrap sa:gap-1 sa:pb-1", children: files.map((file, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
121
123
|
AttachmentChip,
|
|
122
124
|
{
|
|
123
125
|
file,
|
|
@@ -126,7 +128,7 @@ function PromptBar({
|
|
|
126
128
|
onRemove: () => setAttachments(files.filter((_, j) => j !== i))
|
|
127
129
|
}
|
|
128
130
|
) }, `${file.name}-${i}`)) }),
|
|
129
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-wrap items-end gap-x-2 gap-y-2", expanded && "items-center"), children: [
|
|
131
|
+
/* @__PURE__ */ jsxs("div", { className: cn("sa:flex sa:flex-wrap sa:items-end sa:gap-x-2 sa:gap-y-2", expanded && "sa:items-center"), children: [
|
|
130
132
|
/* @__PURE__ */ jsx(Popover.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
131
133
|
Button,
|
|
132
134
|
{
|
|
@@ -135,8 +137,8 @@ function PromptBar({
|
|
|
135
137
|
shape: btnShape,
|
|
136
138
|
iconOnly: true,
|
|
137
139
|
disabled,
|
|
138
|
-
"aria-label":
|
|
139
|
-
className: "data-[state=open]:bg-border-input",
|
|
140
|
+
"aria-label": labels.addToConversation,
|
|
141
|
+
className: "sa:data-[state=open]:bg-border-input",
|
|
140
142
|
children: /* @__PURE__ */ jsx(Plus, {})
|
|
141
143
|
}
|
|
142
144
|
) }),
|
|
@@ -148,7 +150,7 @@ function PromptBar({
|
|
|
148
150
|
value,
|
|
149
151
|
disabled,
|
|
150
152
|
placeholder,
|
|
151
|
-
"aria-label":
|
|
153
|
+
"aria-label": labels.message,
|
|
152
154
|
onChange: (e) => setValue(e.target.value),
|
|
153
155
|
onKeyDown: (e) => {
|
|
154
156
|
if (e.key === "Enter" && !e.shiftKey && !e.nativeEvent.isComposing) {
|
|
@@ -157,13 +159,13 @@ function PromptBar({
|
|
|
157
159
|
}
|
|
158
160
|
},
|
|
159
161
|
className: cn(
|
|
160
|
-
"block h-7 min-w-0 flex-1 resize-none bg-transparent py-[3.5px] text-base leading-[21px] text-text-default",
|
|
161
|
-
expanded && "order-first basis-full px-1",
|
|
162
|
-
"outline-none placeholder:text-text-muted focus-visible:ring-0 disabled:cursor-not-allowed"
|
|
162
|
+
"sa:block sa:h-7 sa:min-w-0 sa:flex-1 sa:resize-none sa:bg-transparent sa:py-[3.5px] sa:text-base sa:leading-[21px] sa:text-text-default",
|
|
163
|
+
expanded && "sa:order-first sa:basis-full sa:px-1",
|
|
164
|
+
"sa:outline-none sa:placeholder:text-text-muted sa:focus-visible:ring-0 sa:disabled:cursor-not-allowed"
|
|
163
165
|
)
|
|
164
166
|
}
|
|
165
167
|
),
|
|
166
|
-
/* @__PURE__ */ jsxs("div", { className: cn("flex shrink-0 items-center gap-1", expanded && "contents"), children: [
|
|
168
|
+
/* @__PURE__ */ jsxs("div", { className: cn("sa:flex sa:shrink-0 sa:items-center sa:gap-1", expanded && "sa:contents"), children: [
|
|
167
169
|
/* @__PURE__ */ jsx(
|
|
168
170
|
ModelSelect,
|
|
169
171
|
{
|
|
@@ -179,7 +181,7 @@ function PromptBar({
|
|
|
179
181
|
}
|
|
180
182
|
}
|
|
181
183
|
),
|
|
182
|
-
expanded && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "flex-1" }),
|
|
184
|
+
expanded && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "sa:flex-1" }),
|
|
183
185
|
/* @__PURE__ */ jsx(
|
|
184
186
|
DictationButton,
|
|
185
187
|
{
|
|
@@ -192,7 +194,7 @@ function PromptBar({
|
|
|
192
194
|
}
|
|
193
195
|
}
|
|
194
196
|
),
|
|
195
|
-
/* @__PURE__ */ jsx(Button, { type: "submit", variant: "primary", size: "md", shape: btnShape, iconOnly: true, "aria-label":
|
|
197
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", variant: "primary", size: "md", shape: btnShape, iconOnly: true, "aria-label": labels.send, disabled: !canSend, children: /* @__PURE__ */ jsx(ArrowUp, {}) })
|
|
196
198
|
] })
|
|
197
199
|
] })
|
|
198
200
|
]
|
|
@@ -205,8 +207,8 @@ function PromptBar({
|
|
|
205
207
|
align: "start",
|
|
206
208
|
sideOffset: 8,
|
|
207
209
|
avoidCollisions: false,
|
|
208
|
-
"aria-label":
|
|
209
|
-
className: cn(menuCard, "z-50 flex w-(--radix-popper-anchor-width) flex-col"),
|
|
210
|
+
"aria-label": labels.addToConversation,
|
|
211
|
+
className: cn(menuCard, "sa:z-50 sa:flex sa:w-(--radix-popper-anchor-width) sa:flex-col"),
|
|
210
212
|
children: /* @__PURE__ */ jsx(AddMenu, { actions, onAction: runAction, onAddAgent })
|
|
211
213
|
}
|
|
212
214
|
) })
|
|
@@ -217,6 +219,7 @@ function AddMenu({
|
|
|
217
219
|
onAction,
|
|
218
220
|
onAddAgent
|
|
219
221
|
}) {
|
|
222
|
+
const labels = useSatinLabels();
|
|
220
223
|
const [query, setQuery] = React.useState("");
|
|
221
224
|
const [active, setActive] = React.useState(0);
|
|
222
225
|
const id = React.useId();
|
|
@@ -224,9 +227,9 @@ function AddMenu({
|
|
|
224
227
|
const shown = q ? actions.filter((a) => `${a.label} ${a.description ?? ""}`.toLowerCase().includes(q)) : actions;
|
|
225
228
|
const index = Math.min(active, Math.max(shown.length - 1, 0));
|
|
226
229
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
227
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 pr-1.5", children: [
|
|
228
|
-
/* @__PURE__ */ jsxs("label", { className: "flex flex-1 items-center gap-2 px-3 py-1.5", children: [
|
|
229
|
-
/* @__PURE__ */ jsx(Search, { "aria-hidden": true, className: "size-icon-size shrink-0 text-text-muted [stroke-width:1.875]" }),
|
|
230
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:items-center sa:gap-1 sa:pr-1.5", children: [
|
|
231
|
+
/* @__PURE__ */ jsxs("label", { className: "sa:flex sa:flex-1 sa:items-center sa:gap-2 sa:px-3 sa:py-1.5", children: [
|
|
232
|
+
/* @__PURE__ */ jsx(Search, { "aria-hidden": true, className: "sa:size-icon-size sa:shrink-0 sa:text-text-muted sa:[stroke-width:1.875]" }),
|
|
230
233
|
/* @__PURE__ */ jsx(
|
|
231
234
|
"input",
|
|
232
235
|
{
|
|
@@ -234,7 +237,7 @@ function AddMenu({
|
|
|
234
237
|
"aria-expanded": true,
|
|
235
238
|
"aria-controls": `${id}-list`,
|
|
236
239
|
"aria-activedescendant": shown.length ? `${id}-${index}` : void 0,
|
|
237
|
-
"aria-label":
|
|
240
|
+
"aria-label": labels.searchAgentsAndTools,
|
|
238
241
|
placeholder: "Search agents and tools",
|
|
239
242
|
value: query,
|
|
240
243
|
onChange: (e) => {
|
|
@@ -253,14 +256,14 @@ function AddMenu({
|
|
|
253
256
|
onAction(shown[index]);
|
|
254
257
|
}
|
|
255
258
|
},
|
|
256
|
-
className: "min-w-0 flex-1 bg-transparent text-sm text-text-default outline-none placeholder:text-text-muted focus-visible:ring-0"
|
|
259
|
+
className: "sa:min-w-0 sa:flex-1 sa:bg-transparent sa:text-sm sa:text-text-default sa:outline-none sa:placeholder:text-text-muted sa:focus-visible:ring-0"
|
|
257
260
|
}
|
|
258
261
|
)
|
|
259
262
|
] }),
|
|
260
|
-
/* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", iconOnly: true, "aria-label":
|
|
263
|
+
/* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", iconOnly: true, "aria-label": labels.addAgent, onClick: onAddAgent, children: /* @__PURE__ */ jsx(Plus, {}) })
|
|
261
264
|
] }),
|
|
262
|
-
/* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "h-px bg-border-subtle" }),
|
|
263
|
-
/* @__PURE__ */ jsxs("div", { id: `${id}-list`, role: "listbox", "aria-label":
|
|
265
|
+
/* @__PURE__ */ jsx("div", { "aria-hidden": true, className: "sa:h-px sa:bg-border-subtle" }),
|
|
266
|
+
/* @__PURE__ */ jsxs("div", { id: `${id}-list`, role: "listbox", "aria-label": labels.agentsAndTools, className: "sa:flex sa:flex-col sa:p-1", children: [
|
|
264
267
|
shown.map((a, i) => /* @__PURE__ */ jsxs(
|
|
265
268
|
"div",
|
|
266
269
|
{
|
|
@@ -271,21 +274,21 @@ function AddMenu({
|
|
|
271
274
|
onMouseDown: (e) => e.preventDefault(),
|
|
272
275
|
onClick: () => onAction(a),
|
|
273
276
|
className: cn(
|
|
274
|
-
"flex min-h-8 items-center gap-2 rounded-lg px-2 py-1.5",
|
|
275
|
-
"[&>svg]:size-icon-size [&>svg]:shrink-0 [&>svg]:text-text-muted [&>svg]:[stroke-width:1.875]",
|
|
276
|
-
i === index && "bg-bg-hover"
|
|
277
|
+
"sa:flex sa:min-h-8 sa:items-center sa:gap-2 sa:rounded-lg sa:px-2 sa:py-1.5",
|
|
278
|
+
"sa:[&>svg]:size-icon-size sa:[&>svg]:shrink-0 sa:[&>svg]:text-text-muted sa:[&>svg]:[stroke-width:1.875]",
|
|
279
|
+
i === index && "sa:bg-bg-hover"
|
|
277
280
|
),
|
|
278
281
|
children: [
|
|
279
282
|
a.icon,
|
|
280
|
-
/* @__PURE__ */ jsxs("span", { className: "flex min-w-0 flex-1 items-baseline gap-3", children: [
|
|
281
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-sm leading-[13px] font-medium whitespace-nowrap text-text-default", children: a.label }),
|
|
282
|
-
a.description && /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-text-muted", children: a.description })
|
|
283
|
+
/* @__PURE__ */ jsxs("span", { className: "sa:flex sa:min-w-0 sa:flex-1 sa:items-baseline sa:gap-3", children: [
|
|
284
|
+
/* @__PURE__ */ jsx("span", { className: "sa:shrink-0 sa:text-sm sa:leading-[13px] sa:font-medium sa:whitespace-nowrap sa:text-text-default", children: a.label }),
|
|
285
|
+
a.description && /* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:text-sm sa:text-text-muted", children: a.description })
|
|
283
286
|
] })
|
|
284
287
|
]
|
|
285
288
|
},
|
|
286
289
|
a.id
|
|
287
290
|
)),
|
|
288
|
-
shown.length === 0 && /* @__PURE__ */ jsx("p", { className: "px-2 py-1.5 text-sm text-text-muted", children: "No matches" })
|
|
291
|
+
shown.length === 0 && /* @__PURE__ */ jsx("p", { className: "sa:px-2 sa:py-1.5 sa:text-sm sa:text-text-muted", children: "No matches" })
|
|
289
292
|
] }),
|
|
290
293
|
/* @__PURE__ */ jsx(ShortcutHints, {})
|
|
291
294
|
] });
|
|
@@ -299,6 +302,7 @@ function ModelSelect({
|
|
|
299
302
|
disabled,
|
|
300
303
|
onChange
|
|
301
304
|
}) {
|
|
305
|
+
const labels = useSatinLabels();
|
|
302
306
|
if (!label) return null;
|
|
303
307
|
const trigger = /* @__PURE__ */ jsxs(
|
|
304
308
|
Button,
|
|
@@ -307,10 +311,13 @@ function ModelSelect({
|
|
|
307
311
|
size: "md",
|
|
308
312
|
shape,
|
|
309
313
|
disabled,
|
|
310
|
-
className: "data-[state=open]:bg-border-input",
|
|
314
|
+
className: "sa:data-[state=open]:bg-border-input",
|
|
311
315
|
children: [
|
|
312
|
-
icon && /* @__PURE__ */ jsx("span", { className: "flex size-4 shrink-0 items-center justify-center [&>*]:size-4", children: icon }),
|
|
313
|
-
/* @__PURE__ */
|
|
316
|
+
icon && /* @__PURE__ */ jsx("span", { className: "sa:flex sa:size-4 sa:shrink-0 sa:items-center sa:justify-center sa:[&>*]:size-4", children: icon }),
|
|
317
|
+
/* @__PURE__ */ jsxs("span", { className: "sa:sr-only", children: [
|
|
318
|
+
labels.model,
|
|
319
|
+
": "
|
|
320
|
+
] }),
|
|
314
321
|
label,
|
|
315
322
|
/* @__PURE__ */ jsx(NavArrowDown, { "aria-hidden": true, "data-chevron": true })
|
|
316
323
|
]
|
|
@@ -326,20 +333,20 @@ function ModelSelect({
|
|
|
326
333
|
align: "end",
|
|
327
334
|
sideOffset: 8,
|
|
328
335
|
avoidCollisions: false,
|
|
329
|
-
className: cn(menuCard, "z-50 w-[241px]"),
|
|
336
|
+
className: cn(menuCard, "sa:z-50 sa:w-[241px]"),
|
|
330
337
|
children: [
|
|
331
|
-
/* @__PURE__ */ jsx(DropdownMenu.RadioGroup, { value: model, onValueChange: onChange, className: "flex flex-col p-1", children: models.map((m) => /* @__PURE__ */ jsxs(
|
|
338
|
+
/* @__PURE__ */ jsx(DropdownMenu.RadioGroup, { value: model, onValueChange: onChange, className: "sa:flex sa:flex-col sa:p-1", children: models.map((m) => /* @__PURE__ */ jsxs(
|
|
332
339
|
DropdownMenu.RadioItem,
|
|
333
340
|
{
|
|
334
341
|
value: m.value,
|
|
335
342
|
className: cn(
|
|
336
|
-
"flex min-h-8 cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 outline-none select-none",
|
|
337
|
-
"data-highlighted:bg-bg-hover data-[state=checked]:bg-bg-selected"
|
|
343
|
+
"sa:flex sa:min-h-8 sa:cursor-pointer sa:items-center sa:gap-2 sa:rounded-lg sa:px-2 sa:py-1.5 sa:outline-none sa:select-none",
|
|
344
|
+
"sa:data-highlighted:bg-bg-hover sa:data-[state=checked]:bg-bg-selected"
|
|
338
345
|
),
|
|
339
346
|
children: [
|
|
340
|
-
/* @__PURE__ */ jsx("span", { className: "flex size-5 shrink-0 items-center justify-center [&>*]:size-5", children: m.icon }),
|
|
341
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate text-sm leading-[13px] font-medium text-text-default", children: m.label }),
|
|
342
|
-
/* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "size-icon-size text-status-green-fg [stroke-width:1.875]" }) })
|
|
347
|
+
/* @__PURE__ */ jsx("span", { className: "sa:flex sa:size-5 sa:shrink-0 sa:items-center sa:justify-center sa:[&>*]:size-5", children: m.icon }),
|
|
348
|
+
/* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:text-sm sa:leading-[13px] sa:font-medium sa:text-text-default", children: m.label }),
|
|
349
|
+
/* @__PURE__ */ jsx(DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "sa:size-icon-size sa:text-status-green-fg sa:[stroke-width:1.875]" }) })
|
|
343
350
|
]
|
|
344
351
|
},
|
|
345
352
|
m.value
|
|
@@ -351,7 +358,7 @@ function ModelSelect({
|
|
|
351
358
|
] });
|
|
352
359
|
}
|
|
353
360
|
function ShortcutHints() {
|
|
354
|
-
return /* @__PURE__ */ jsxs("div", { "aria-hidden": true, className: "flex items-center gap-3 border-t border-border-default bg-bg-popover px-3 py-1.5", children: [
|
|
361
|
+
return /* @__PURE__ */ jsxs("div", { "aria-hidden": true, className: "sa:flex sa:items-center sa:gap-3 sa:border-t sa:border-border-default sa:bg-bg-popover sa:px-3 sa:py-1.5", children: [
|
|
355
362
|
/* @__PURE__ */ jsx(KbdHint, { keys: [/* @__PURE__ */ jsx(KbdArrowUp, {}, "up"), /* @__PURE__ */ jsx(KbdArrowDown, {}, "down")], label: "Navigate" }),
|
|
356
363
|
/* @__PURE__ */ jsx(KbdHint, { keys: [/* @__PURE__ */ jsx(KbdReturn, {}, "return")], label: "Select" })
|
|
357
364
|
] });
|
|
@@ -406,15 +413,15 @@ function AttachmentChip({
|
|
|
406
413
|
{
|
|
407
414
|
"data-slot": "attachment",
|
|
408
415
|
className: cn(
|
|
409
|
-
"flex h-control-height items-center gap-1.5 border border-border-default bg-bg-popover pr-0.5 pl-2",
|
|
410
|
-
"[filter:drop-shadow(0_1px_1px_var(--effect-shadow-xs))]",
|
|
411
|
-
"transition-[background-color,border-color] duration-(--duration-fast) ease-(--ease-out)",
|
|
412
|
-
"hover:border-border-strong hover:bg-bg-canvas active:border-border-strong active:bg-bg-muted",
|
|
413
|
-
rounded ? "rounded-pill" : "rounded-md"
|
|
416
|
+
"sa:flex sa:h-control-height sa:items-center sa:gap-1.5 sa:border sa:border-border-default sa:bg-bg-popover sa:pr-0.5 sa:pl-2",
|
|
417
|
+
"sa:[filter:drop-shadow(0_1px_1px_var(--effect-shadow-xs))]",
|
|
418
|
+
"sa:transition-[background-color,border-color] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
419
|
+
"sa:hover:border-border-strong sa:hover:bg-bg-canvas sa:active:border-border-strong sa:active:bg-bg-muted",
|
|
420
|
+
rounded ? "sa:rounded-pill" : "sa:rounded-md"
|
|
414
421
|
),
|
|
415
422
|
children: [
|
|
416
423
|
/* @__PURE__ */ jsx(FileIcon, { name: file.name }),
|
|
417
|
-
/* @__PURE__ */ jsx("span", { className: "max-w-[200px] truncate text-sm font-medium text-text-default", children: file.name }),
|
|
424
|
+
/* @__PURE__ */ jsx("span", { className: "sa:max-w-[200px] sa:truncate sa:text-sm sa:font-medium sa:text-text-default", children: file.name }),
|
|
418
425
|
/* @__PURE__ */ jsx(
|
|
419
426
|
Button,
|
|
420
427
|
{
|
|
@@ -425,7 +432,7 @@ function AttachmentChip({
|
|
|
425
432
|
disabled,
|
|
426
433
|
"aria-label": `Remove ${file.name}`,
|
|
427
434
|
onClick: onRemove,
|
|
428
|
-
children: /* @__PURE__ */ jsx(Xmark, { className: "
|
|
435
|
+
children: /* @__PURE__ */ jsx(Xmark, { className: "sa:![stroke-width:1.64]" })
|
|
429
436
|
}
|
|
430
437
|
)
|
|
431
438
|
]
|
|
@@ -453,22 +460,20 @@ var LABELS = {
|
|
|
453
460
|
]
|
|
454
461
|
};
|
|
455
462
|
var FILE_COLORS = {
|
|
456
|
-
pdf: ["var(--color-red-500)", "var(--color-red-300)"],
|
|
457
|
-
doc: ["var(--color-sky-600)", "var(--color-sky-300)"],
|
|
458
|
-
xls: ["var(--color-green-700)", "var(--color-green-300)"]
|
|
463
|
+
pdf: ["var(--sa-color-red-500)", "var(--sa-color-red-300)"],
|
|
464
|
+
doc: ["var(--sa-color-sky-600)", "var(--sa-color-sky-300)"],
|
|
465
|
+
xls: ["var(--sa-color-green-700)", "var(--sa-color-green-300)"]
|
|
459
466
|
};
|
|
460
467
|
function FileIcon({ name }) {
|
|
461
468
|
const ext = name.split(".").pop()?.toLowerCase() ?? "";
|
|
462
469
|
const kind = ext === "pdf" ? "pdf" : ext === "doc" || ext === "docx" ? "doc" : ext === "xls" || ext === "xlsx" || ext === "csv" ? "xls" : null;
|
|
463
|
-
if (!kind) return /* @__PURE__ */ jsx(Page, { "aria-hidden": true, className: "size-4 shrink-0 text-text-muted [stroke-width:1.875]" });
|
|
470
|
+
if (!kind) return /* @__PURE__ */ jsx(Page, { "aria-hidden": true, className: "sa:size-4 sa:shrink-0 sa:text-text-muted sa:[stroke-width:1.875]" });
|
|
464
471
|
const [page, fold] = FILE_COLORS[kind];
|
|
465
|
-
return /* @__PURE__ */ jsxs("svg", { "aria-hidden": true, viewBox: "0 0 16 16", fill: "none", className: "size-4 shrink-0", children: [
|
|
472
|
+
return /* @__PURE__ */ jsxs("svg", { "aria-hidden": true, viewBox: "0 0 16 16", fill: "none", className: "sa:size-4 sa:shrink-0", children: [
|
|
466
473
|
/* @__PURE__ */ jsx("path", { d: PAGE, fill: page }),
|
|
467
474
|
/* @__PURE__ */ jsx("path", { d: FOLD, fill: fold }),
|
|
468
|
-
LABELS[kind].map((d, i) => /* @__PURE__ */ jsx("path", { d, fill: "var(--color-white)" }, i))
|
|
475
|
+
LABELS[kind].map((d, i) => /* @__PURE__ */ jsx("path", { d, fill: "var(--sa-color-white)" }, i))
|
|
469
476
|
] });
|
|
470
477
|
}
|
|
471
478
|
|
|
472
479
|
export { PromptBar, defaultActions };
|
|
473
|
-
//# sourceMappingURL=chunk-6YXUBP27.js.map
|
|
474
|
-
//# sourceMappingURL=chunk-6YXUBP27.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FieldSizeContext } from './chunk-KITXKIYW.js';
|
|
2
|
+
import { ButtonDefaultsContext } from './chunk-6DWLTGRQ.js';
|
|
3
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var buttonSize = { sm: "md", md: "lg", lg: "xl" };
|
|
8
|
+
function InputGroup({ size = "md", className, ...props }) {
|
|
9
|
+
const buttons = React.useMemo(() => ({ size: buttonSize[size], variant: "secondary" }), [size]);
|
|
10
|
+
return /* @__PURE__ */ jsx(FieldSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(ButtonDefaultsContext.Provider, { value: buttons, children: /* @__PURE__ */ jsx(
|
|
11
|
+
"div",
|
|
12
|
+
{
|
|
13
|
+
role: "group",
|
|
14
|
+
"data-slot": "input-group",
|
|
15
|
+
"data-size": size,
|
|
16
|
+
className: cn("sa:flex sa:w-full sa:items-stretch", className),
|
|
17
|
+
...props
|
|
18
|
+
}
|
|
19
|
+
) }) });
|
|
20
|
+
}
|
|
21
|
+
function InputGroupAddon({ className, ...props }) {
|
|
22
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "input-group-addon", className: cn("satin-input-addon", className), ...props });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export { InputGroup, InputGroupAddon };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var emptyStateVariants = cva(
|
|
7
|
+
"sa:flex sa:w-[350px] sa:max-w-[560px] sa:min-w-[min(320px,100%)] sa:flex-col sa:items-center sa:gap-4 sa:rounded-2xl sa:px-4 sa:pt-4 sa:pb-5 sa:text-center",
|
|
8
|
+
{
|
|
9
|
+
variants: {
|
|
10
|
+
border: {
|
|
11
|
+
ghost: "",
|
|
12
|
+
dashed: "sa:border sa:border-dashed sa:border-border-default",
|
|
13
|
+
outline: "sa:border sa:border-border-default"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: { border: "ghost" }
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
function EmptyState({ className, border, title, description, icon, actions, ...props }) {
|
|
20
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "empty-state", className: cn(emptyStateVariants({ border }), className), ...props, children: [
|
|
21
|
+
icon && /* @__PURE__ */ jsx(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
"aria-hidden": true,
|
|
25
|
+
className: "sa:flex sa:shrink-0 sa:items-center sa:justify-center sa:rounded-lg sa:bg-bg-muted sa:p-2.5 sa:text-text-default sa:[&_svg]:size-4 sa:[&_svg]:[stroke-width:1.875]",
|
|
26
|
+
children: icon
|
|
27
|
+
}
|
|
28
|
+
),
|
|
29
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:w-full sa:flex-col sa:items-center sa:gap-2", children: [
|
|
30
|
+
/* @__PURE__ */ jsx("p", { className: "sa:w-full sa:text-lg sa:font-medium sa:text-text-default", children: title }),
|
|
31
|
+
description && /* @__PURE__ */ jsx("p", { className: "sa:w-full sa:text-body-lg sa:text-text-muted", children: description })
|
|
32
|
+
] }),
|
|
33
|
+
actions && /* @__PURE__ */ jsx("div", { className: "sa:flex sa:flex-wrap sa:items-start sa:justify-center sa:gap-2", children: actions })
|
|
34
|
+
] });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { EmptyState, emptyStateVariants };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useSlidingIndicator } from './chunk-XETMIETJ.js';
|
|
2
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { ToggleGroup } from 'radix-ui';
|
|
5
|
+
import { cva } from 'class-variance-authority';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
var track = cva("sa:relative sa:isolate sa:inline-flex sa:items-center sa:gap-0.5 sa:bg-bg-muted sa:p-1", {
|
|
9
|
+
variants: {
|
|
10
|
+
shape: { default: "sa:rounded-lg", rounded: "sa:rounded-pill" },
|
|
11
|
+
border: { true: "sa:border sa:border-border-subtle", false: "" },
|
|
12
|
+
fullWidth: { true: "sa:flex sa:w-full", false: "" }
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
var segment = cva(
|
|
16
|
+
[
|
|
17
|
+
"sa:relative sa:z-10 sa:inline-flex sa:items-center sa:justify-center sa:font-medium sa:whitespace-nowrap sa:text-text-muted sa:select-none",
|
|
18
|
+
"sa:transition-[color,background-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
19
|
+
"sa:satin-hover:text-text-default sa:data-[state=on]:text-text-default",
|
|
20
|
+
"sa:satin-pressed:bg-component-segmented-pressed sa:satin-pressed:text-text-default",
|
|
21
|
+
"sa:focus-visible:outline-none sa:satin-focus:text-text-default sa:satin-focus:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
22
|
+
"sa:disabled:pointer-events-none sa:disabled:text-text-subtle",
|
|
23
|
+
"sa:[&_svg]:pointer-events-none sa:[&_svg]:shrink-0 sa:[&_svg]:[stroke-width:1.875]"
|
|
24
|
+
],
|
|
25
|
+
{
|
|
26
|
+
variants: {
|
|
27
|
+
size: {
|
|
28
|
+
xs: "sa:h-control-height-xs sa:gap-1 sa:px-2.5 sa:text-sm sa:[&_svg]:size-icon-size-sm",
|
|
29
|
+
md: "sa:h-control-height sa:gap-1.5 sa:px-3 sa:text-sm sa:[&_svg]:size-icon-size",
|
|
30
|
+
lg: "sa:h-control-height-lg sa:gap-1.5 sa:px-4 sa:text-base sa:[&_svg]:size-icon-size"
|
|
31
|
+
},
|
|
32
|
+
shape: { default: "sa:rounded-sm", rounded: "sa:rounded-pill" },
|
|
33
|
+
fullWidth: { true: "sa:flex-1", false: "" }
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
function SegmentedControl({
|
|
38
|
+
items,
|
|
39
|
+
value: valueProp,
|
|
40
|
+
defaultValue,
|
|
41
|
+
onValueChange,
|
|
42
|
+
size = "md",
|
|
43
|
+
shape = "default",
|
|
44
|
+
border = false,
|
|
45
|
+
fullWidth = false,
|
|
46
|
+
className,
|
|
47
|
+
ref,
|
|
48
|
+
...props
|
|
49
|
+
}) {
|
|
50
|
+
const [inner, setInner] = React.useState(defaultValue ?? items[0]?.value ?? "");
|
|
51
|
+
const value = valueProp ?? inner;
|
|
52
|
+
const trackRef = React.useRef(null);
|
|
53
|
+
const setTrack = React.useCallback(
|
|
54
|
+
(node) => {
|
|
55
|
+
trackRef.current = node;
|
|
56
|
+
if (typeof ref === "function") ref(node);
|
|
57
|
+
else if (ref) ref.current = node;
|
|
58
|
+
},
|
|
59
|
+
[ref]
|
|
60
|
+
);
|
|
61
|
+
const pill = useSlidingIndicator(trackRef, '[data-state="on"]', `${value}|${size}|${fullWidth}|${items.length}`);
|
|
62
|
+
return /* @__PURE__ */ jsxs(
|
|
63
|
+
ToggleGroup.Root,
|
|
64
|
+
{
|
|
65
|
+
...props,
|
|
66
|
+
ref: setTrack,
|
|
67
|
+
type: "single",
|
|
68
|
+
value,
|
|
69
|
+
onValueChange: (next) => {
|
|
70
|
+
if (!next) return;
|
|
71
|
+
setInner(next);
|
|
72
|
+
onValueChange?.(next);
|
|
73
|
+
},
|
|
74
|
+
"data-slot": "segmented-control",
|
|
75
|
+
className: cn(track({ shape, border, fullWidth }), className),
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ jsx(
|
|
78
|
+
"span",
|
|
79
|
+
{
|
|
80
|
+
ref: pill.ref,
|
|
81
|
+
"aria-hidden": true,
|
|
82
|
+
className: cn(
|
|
83
|
+
"sa:pointer-events-none sa:absolute sa:top-1 sa:bottom-1 sa:left-0 sa:z-0 sa:bg-component-segmented-selected sa:opacity-0 sa:[box-shadow:0_1px_3px_0_var(--effect-shadow-sm),0_1px_2px_-1px_var(--effect-shadow-sm)]",
|
|
84
|
+
shape === "sa:rounded" ? "sa:rounded-pill" : "sa:rounded-sm"
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
items.map((item) => /* @__PURE__ */ jsxs(
|
|
89
|
+
ToggleGroup.Item,
|
|
90
|
+
{
|
|
91
|
+
value: item.value,
|
|
92
|
+
disabled: item.disabled,
|
|
93
|
+
className: cn(
|
|
94
|
+
segment({ size, shape, fullWidth }),
|
|
95
|
+
// Unselected focus: bg/muted under the ring. Selected focus keeps the pill's fill.
|
|
96
|
+
"sa:data-[state=off]:satin-focus:bg-bg-muted",
|
|
97
|
+
// Before the pill is measured (server render), the selected segment paints its own fill.
|
|
98
|
+
!pill.ready && "sa:data-[state=on]:bg-component-segmented-selected sa:data-[state=on]:[box-shadow:0_1px_3px_0_var(--effect-shadow-sm),0_1px_2px_-1px_var(--effect-shadow-sm)]"
|
|
99
|
+
),
|
|
100
|
+
children: [
|
|
101
|
+
item.icon,
|
|
102
|
+
item.label
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
item.value
|
|
106
|
+
))
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { SegmentedControl };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Kbd } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { Kbd } from './chunk-XWPH7C2W.js';
|
|
2
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Search } from 'iconoir-react';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -24,14 +24,14 @@ var SearchBar = React.forwardRef(function SearchBar2({ shortcut = true, hotkey =
|
|
|
24
24
|
{
|
|
25
25
|
"data-slot": "search-bar",
|
|
26
26
|
className: cn(
|
|
27
|
-
"flex h-control-height-lg w-full cursor-text items-center gap-2 rounded-lg border border-border-default bg-bg-card px-2",
|
|
28
|
-
"[box-shadow:0_1px_1px_0_var(--effect-shadow-xs)] transition-[border-color,box-shadow] duration-(--duration-fast) ease-(--ease-out)",
|
|
29
|
-
"hover:border-border-strong",
|
|
30
|
-
"has-[input:focus-visible]:border-border-focus has-[input:focus-visible]:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
27
|
+
"sa:flex sa:h-control-height-lg sa:w-full sa:cursor-text sa:items-center sa:gap-2 sa:rounded-lg sa:border sa:border-border-default sa:bg-bg-card sa:px-2",
|
|
28
|
+
"sa:[box-shadow:0_1px_1px_0_var(--effect-shadow-xs)] sa:transition-[border-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
29
|
+
"sa:hover:border-border-strong",
|
|
30
|
+
"sa:has-[input:focus-visible]:border-border-focus sa:has-[input:focus-visible]:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
31
31
|
wrapperClassName
|
|
32
32
|
),
|
|
33
33
|
children: [
|
|
34
|
-
/* @__PURE__ */ jsx(Search, { "aria-hidden": true, className: "size-4 shrink-0 text-text-muted [stroke-width:1.875]" }),
|
|
34
|
+
/* @__PURE__ */ jsx(Search, { "aria-hidden": true, className: "sa:size-4 sa:shrink-0 sa:text-text-muted sa:[stroke-width:1.875]" }),
|
|
35
35
|
/* @__PURE__ */ jsx(
|
|
36
36
|
"input",
|
|
37
37
|
{
|
|
@@ -48,14 +48,14 @@ var SearchBar = React.forwardRef(function SearchBar2({ shortcut = true, hotkey =
|
|
|
48
48
|
onKeyDown?.(e);
|
|
49
49
|
},
|
|
50
50
|
className: cn(
|
|
51
|
-
"min-w-0 flex-1 bg-transparent text-sm text-text-default outline-none placeholder:text-text-muted focus-visible:ring-0",
|
|
52
|
-
"[&::-webkit-search-cancel-button]:appearance-none",
|
|
51
|
+
"sa:min-w-0 sa:flex-1 sa:bg-transparent sa:text-sm sa:text-text-default sa:outline-none sa:placeholder:text-text-muted sa:focus-visible:ring-0",
|
|
52
|
+
"sa:[&::-webkit-search-cancel-button]:appearance-none",
|
|
53
53
|
className
|
|
54
54
|
),
|
|
55
55
|
...props
|
|
56
56
|
}
|
|
57
57
|
),
|
|
58
|
-
shortcut && /* @__PURE__ */ jsxs("span", { "aria-hidden": true, className: "flex shrink-0 items-center gap-0.5", children: [
|
|
58
|
+
shortcut && /* @__PURE__ */ jsxs("span", { "aria-hidden": true, className: "sa:flex sa:shrink-0 sa:items-center sa:gap-0.5", children: [
|
|
59
59
|
/* @__PURE__ */ jsx(Kbd, { children: "\u2318" }),
|
|
60
60
|
/* @__PURE__ */ jsx(Kbd, { children: "K" })
|
|
61
61
|
] })
|
|
@@ -65,5 +65,3 @@ var SearchBar = React.forwardRef(function SearchBar2({ shortcut = true, hotkey =
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
export { SearchBar };
|
|
68
|
-
//# sourceMappingURL=chunk-UGRSWP6U.js.map
|
|
69
|
-
//# sourceMappingURL=chunk-UGRSWP6U.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { KbdGroup } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { KbdGroup } from './chunk-XWPH7C2W.js';
|
|
2
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Tooltip as Tooltip$1 } from 'radix-ui';
|
|
5
5
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -14,15 +14,15 @@ function TooltipBubble({
|
|
|
14
14
|
return /* @__PURE__ */ jsxs(
|
|
15
15
|
"div",
|
|
16
16
|
{
|
|
17
|
+
...props,
|
|
17
18
|
"data-slot": "tooltip",
|
|
18
19
|
className: cn(
|
|
19
|
-
"flex items-center gap-2 bg-text-default py-1 pl-2.5 text-sm leading-(--text-sm--line-height) font-medium whitespace-nowrap text-bg-canvas",
|
|
20
|
-
"[box-shadow:0_8px_12px_0_var(--effect-shadow-md),0_1px_1.5px_0_var(--effect-shadow-ambient),inset_0_1px_0_0_var(--effect-highlight-top)]",
|
|
21
|
-
shape === "rounded" ? "rounded-pill" : "rounded-lg",
|
|
22
|
-
shortcut ? "pr-1.5" : "pr-2.5",
|
|
20
|
+
"sa:flex sa:items-center sa:gap-2 sa:bg-text-default sa:py-1 sa:pl-2.5 sa:text-sm sa:leading-(--sa-text-sm--line-height) sa:font-medium sa:whitespace-nowrap sa:text-bg-canvas",
|
|
21
|
+
"sa:[box-shadow:0_8px_12px_0_var(--effect-shadow-md),0_1px_1.5px_0_var(--effect-shadow-ambient),inset_0_1px_0_0_var(--effect-highlight-top)]",
|
|
22
|
+
shape === "sa:rounded" ? "sa:rounded-pill" : "sa:rounded-lg",
|
|
23
|
+
shortcut ? "sa:pr-1.5" : "sa:pr-2.5",
|
|
23
24
|
className
|
|
24
25
|
),
|
|
25
|
-
...props,
|
|
26
26
|
children: [
|
|
27
27
|
/* @__PURE__ */ jsx("span", { children: label }),
|
|
28
28
|
shortcut && /* @__PURE__ */ jsx(KbdGroup, { keys: shortcut, tone: "inverse" })
|
|
@@ -42,7 +42,8 @@ function Tooltip({
|
|
|
42
42
|
defaultOpen = false,
|
|
43
43
|
onOpenChange,
|
|
44
44
|
container,
|
|
45
|
-
className
|
|
45
|
+
className,
|
|
46
|
+
...props
|
|
46
47
|
}) {
|
|
47
48
|
const [inner, setInner] = React.useState(defaultOpen);
|
|
48
49
|
const open = openProp ?? inner;
|
|
@@ -66,17 +67,15 @@ function Tooltip({
|
|
|
66
67
|
sideOffset: 8,
|
|
67
68
|
collisionPadding: 8,
|
|
68
69
|
className: cn(
|
|
69
|
-
"z-50 transition-[opacity,translate] duration-(--duration-fast) ease-(--ease-out)",
|
|
70
|
-
"starting:opacity-0",
|
|
71
|
-
"data-[side=top]:starting:translate-y-1 data-[side=bottom]:starting:-translate-y-1",
|
|
72
|
-
"data-[side=left]:starting:translate-x-1 data-[side=right]:starting:-translate-x-1"
|
|
70
|
+
"sa:z-50 sa:transition-[opacity,translate] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
71
|
+
"sa:starting:opacity-0",
|
|
72
|
+
"sa:data-[side=top]:starting:translate-y-1 sa:data-[side=bottom]:starting:-translate-y-1",
|
|
73
|
+
"sa:data-[side=left]:starting:translate-x-1 sa:data-[side=right]:starting:-translate-x-1"
|
|
73
74
|
),
|
|
74
|
-
children: /* @__PURE__ */ jsx(TooltipBubble, { label, shortcut, shape, className })
|
|
75
|
+
children: /* @__PURE__ */ jsx(TooltipBubble, { ...props, label, shortcut, shape, className })
|
|
75
76
|
}
|
|
76
77
|
) })
|
|
77
78
|
] }) });
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
export { Tooltip, TooltipBubble };
|
|
81
|
-
//# sourceMappingURL=chunk-B6V4VSGH.js.map
|
|
82
|
-
//# sourceMappingURL=chunk-B6V4VSGH.js.map
|