@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,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { FileIcon, Attachment } from './chunk-R3DTMBDT.js';
|
|
2
|
+
import { Button } from './chunk-6DWLTGRQ.js';
|
|
3
|
+
import { Progress } from './chunk-LKSFTNPF.js';
|
|
4
|
+
import { useSatinLabels } from './chunk-NTSU44FY.js';
|
|
5
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
5
6
|
import * as React from 'react';
|
|
6
7
|
import { Page, WarningCircle, Xmark } from 'iconoir-react';
|
|
7
8
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -30,7 +31,7 @@ function fileIconFor(name) {
|
|
|
30
31
|
const e = ext(name);
|
|
31
32
|
if (e === "pdf") return /* @__PURE__ */ jsx(FileIcon, { type: "pdf" });
|
|
32
33
|
if (["xls", "xlsx", "csv", "numbers"].includes(e)) return /* @__PURE__ */ jsx(FileIcon, { type: "xlsx" });
|
|
33
|
-
return /* @__PURE__ */ jsx(Page, { "aria-hidden": true, className: "size-icon-size text-text-muted [stroke-width:1.875]" });
|
|
34
|
+
return /* @__PURE__ */ jsx(Page, { "aria-hidden": true, className: "sa:size-icon-size sa:text-text-muted sa:[stroke-width:1.875]" });
|
|
34
35
|
}
|
|
35
36
|
function FileUpload({
|
|
36
37
|
files = [],
|
|
@@ -51,6 +52,7 @@ function FileUpload({
|
|
|
51
52
|
className,
|
|
52
53
|
...props
|
|
53
54
|
}) {
|
|
55
|
+
const labels = useSatinLabels();
|
|
54
56
|
const inputRef = React.useRef(null);
|
|
55
57
|
const descriptionId = React.useId();
|
|
56
58
|
const [dragging, setDragging] = React.useState(false);
|
|
@@ -71,7 +73,7 @@ function FileUpload({
|
|
|
71
73
|
};
|
|
72
74
|
const rows = files.filter((f) => f.status !== "done");
|
|
73
75
|
const done = files.filter((f) => f.status === "done");
|
|
74
|
-
return /* @__PURE__ */ jsxs("div", { "data-slot": "file-upload", className: cn("flex w-full flex-col gap-2", className), ...props, children: [
|
|
76
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "file-upload", className: cn("sa:flex sa:w-full sa:flex-col sa:gap-2", className), ...props, children: [
|
|
75
77
|
/* @__PURE__ */ jsxs(
|
|
76
78
|
"div",
|
|
77
79
|
{
|
|
@@ -101,16 +103,16 @@ function FileUpload({
|
|
|
101
103
|
take(e.dataTransfer.files);
|
|
102
104
|
},
|
|
103
105
|
className: cn(
|
|
104
|
-
"flex flex-col items-center gap-4 rounded-2xl border border-dashed border-border-default px-6 py-8 text-center",
|
|
105
|
-
"transition-[background-color,border-color] duration-(--duration-fast) ease-(--ease-out)",
|
|
106
|
-
"data-[dragging]:border-status-brand-border data-[dragging]:bg-bg-hover",
|
|
107
|
-
"data-[disabled]:opacity-50"
|
|
106
|
+
"sa:flex sa:flex-col sa:items-center sa:gap-4 sa:rounded-2xl sa:border sa:border-dashed sa:border-border-default sa:px-6 sa:py-8 sa:text-center",
|
|
107
|
+
"sa:transition-[background-color,border-color] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
108
|
+
"sa:data-[dragging]:border-status-brand-border sa:data-[dragging]:bg-bg-hover",
|
|
109
|
+
"sa:data-[disabled]:opacity-50"
|
|
108
110
|
),
|
|
109
111
|
children: [
|
|
110
112
|
/* @__PURE__ */ jsx(UploadMark, { over }),
|
|
111
|
-
/* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col items-center gap-1", children: [
|
|
112
|
-
/* @__PURE__ */ jsx("p", { className: "text-base font-medium text-text-default", children: over ? dropTitle : title }),
|
|
113
|
-
description && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "text-sm text-text-muted", children: description })
|
|
113
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:w-full sa:flex-col sa:items-center sa:gap-1", children: [
|
|
114
|
+
/* @__PURE__ */ jsx("p", { className: "sa:text-base sa:font-medium sa:text-text-default", children: over ? dropTitle : title }),
|
|
115
|
+
description && /* @__PURE__ */ jsx("p", { id: descriptionId, className: "sa:text-sm sa:text-text-muted", children: description })
|
|
114
116
|
] }),
|
|
115
117
|
/* @__PURE__ */ jsx(
|
|
116
118
|
Button,
|
|
@@ -141,8 +143,8 @@ function FileUpload({
|
|
|
141
143
|
]
|
|
142
144
|
}
|
|
143
145
|
),
|
|
144
|
-
rows.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2", "aria-label":
|
|
145
|
-
done.length > 0 && /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-2", "aria-label":
|
|
146
|
+
rows.length > 0 && /* @__PURE__ */ jsx("ul", { className: "sa:flex sa:flex-col sa:gap-2", "aria-label": labels.files, children: rows.map((f) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(FileUploadItem, { file: f, onCancel, onRemove }) }, f.id)) }),
|
|
147
|
+
done.length > 0 && /* @__PURE__ */ jsx("ul", { className: "sa:flex sa:flex-col sa:gap-2", "aria-label": labels.attachedFiles, children: done.map((f) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
146
148
|
Attachment,
|
|
147
149
|
{
|
|
148
150
|
name: f.name,
|
|
@@ -150,7 +152,7 @@ function FileUpload({
|
|
|
150
152
|
icon: f.icon ?? fileIconFor(f.name),
|
|
151
153
|
onRemove: onRemove ? () => onRemove(f) : void 0,
|
|
152
154
|
onOpen: onOpen ? () => onOpen(f) : void 0,
|
|
153
|
-
className: "flex w-full [&_[data-attachment-main]]:flex-1 [&_[data-attachment-name]]:max-w-none"
|
|
155
|
+
className: "sa:flex sa:w-full sa:[&_[data-attachment-main]]:flex-1 sa:[&_[data-attachment-name]]:max-w-none"
|
|
154
156
|
}
|
|
155
157
|
) }, f.id)) })
|
|
156
158
|
] });
|
|
@@ -168,11 +170,11 @@ function FileUploadItem({
|
|
|
168
170
|
"data-slot": "file-upload-item",
|
|
169
171
|
"data-status": "error",
|
|
170
172
|
role: "alert",
|
|
171
|
-
className: cn("flex items-center gap-2 rounded-xl border border-status-red-border bg-status-red-bg py-2 pr-2 pl-3 text-sm", className),
|
|
173
|
+
className: cn("sa:flex sa:items-center sa:gap-2 sa:rounded-xl sa:border sa:border-status-red-border sa:bg-status-red-bg sa:py-2 sa:pr-2 sa:pl-3 sa:text-sm", className),
|
|
172
174
|
children: [
|
|
173
|
-
/* @__PURE__ */ jsx(WarningCircle, { "aria-hidden": true, className: "size-icon-size shrink-0 text-status-red-fg [stroke-width:1.875]" }),
|
|
174
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-medium text-text-default", children: file.name }),
|
|
175
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-status-red-fg", children: file.error ?? "Upload failed" }),
|
|
175
|
+
/* @__PURE__ */ jsx(WarningCircle, { "aria-hidden": true, className: "sa:size-icon-size sa:shrink-0 sa:text-status-red-fg sa:[stroke-width:1.875]" }),
|
|
176
|
+
/* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:font-medium sa:text-text-default", children: file.name }),
|
|
177
|
+
/* @__PURE__ */ jsx("span", { className: "sa:shrink-0 sa:text-status-red-fg", children: file.error ?? "Upload failed" }),
|
|
176
178
|
onRemove && /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", shape: "rounded", iconOnly: true, "aria-label": `Remove ${file.name}`, onClick: () => onRemove(file), children: /* @__PURE__ */ jsx(Xmark, { "aria-hidden": true }) })
|
|
177
179
|
]
|
|
178
180
|
}
|
|
@@ -186,13 +188,13 @@ function FileUploadItem({
|
|
|
186
188
|
{
|
|
187
189
|
"data-slot": "file-upload-item",
|
|
188
190
|
"data-status": "uploading",
|
|
189
|
-
className: cn("flex items-center gap-2 rounded-xl border border-border-default bg-bg-card p-2 text-sm", className),
|
|
191
|
+
className: cn("sa:flex sa:items-center sa:gap-2 sa:rounded-xl sa:border sa:border-border-default sa:bg-bg-card sa:p-2 sa:text-sm", className),
|
|
190
192
|
children: [
|
|
191
|
-
/* @__PURE__ */ jsx("span", { className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-bg-muted [&_svg]:size-icon-size", children: file.icon ?? fileIconFor(file.name) }),
|
|
192
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1.5", children: [
|
|
193
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
194
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-medium text-text-default", children: file.name }),
|
|
195
|
-
/* @__PURE__ */ jsx("span", { className: "shrink-0 text-text-muted tabular-nums", children: meta })
|
|
193
|
+
/* @__PURE__ */ jsx("span", { className: "sa:flex sa:size-9 sa:shrink-0 sa:items-center sa:justify-center sa:rounded-lg sa:bg-bg-muted sa:[&_svg]:size-icon-size", children: file.icon ?? fileIconFor(file.name) }),
|
|
194
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:min-w-0 sa:flex-1 sa:flex-col sa:gap-1.5", children: [
|
|
195
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:items-center sa:gap-2", children: [
|
|
196
|
+
/* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:font-medium sa:text-text-default", children: file.name }),
|
|
197
|
+
/* @__PURE__ */ jsx("span", { className: "sa:shrink-0 sa:text-text-muted sa:tabular-nums", children: meta })
|
|
196
198
|
] }),
|
|
197
199
|
/* @__PURE__ */ jsx(Progress, { value: known ? p : void 0, showValue: false, "aria-label": `Uploading ${file.name}` })
|
|
198
200
|
] }),
|
|
@@ -207,10 +209,10 @@ function UploadMark({ over }) {
|
|
|
207
209
|
{
|
|
208
210
|
"aria-hidden": true,
|
|
209
211
|
className: cn(
|
|
210
|
-
"flex size-10 shrink-0 items-center justify-center rounded-xl transition-[background-color] duration-(--duration-fast) ease-(--ease-out)",
|
|
211
|
-
over ? "bg-bg-card" : "bg-bg-muted"
|
|
212
|
+
"sa:flex sa:size-10 sa:shrink-0 sa:items-center sa:justify-center sa:rounded-xl sa:transition-[background-color] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
213
|
+
over ? "sa:bg-bg-card" : "sa:bg-bg-muted"
|
|
212
214
|
),
|
|
213
|
-
children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", className: "text-text-subtle", children: [
|
|
215
|
+
children: /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", className: "sa:text-text-subtle", children: [
|
|
214
216
|
/* @__PURE__ */ jsx(
|
|
215
217
|
"path",
|
|
216
218
|
{
|
|
@@ -235,5 +237,3 @@ function UploadMark({ over }) {
|
|
|
235
237
|
}
|
|
236
238
|
|
|
237
239
|
export { FileUpload, FileUploadItem, fileIconFor, formatBytes };
|
|
238
|
-
//# sourceMappingURL=chunk-GICKPMJU.js.map
|
|
239
|
-
//# sourceMappingURL=chunk-GICKPMJU.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
2
|
-
import {
|
|
1
|
+
import { Button } from './chunk-6DWLTGRQ.js';
|
|
2
|
+
import { useSatinLabels } from './chunk-NTSU44FY.js';
|
|
3
|
+
import { cn } from './chunk-EHEXE2UV.js';
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
import { Toast as Toast$1 } from 'radix-ui';
|
|
5
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -47,12 +48,12 @@ var toast = Object.assign((title, options) => show(title, options), {
|
|
|
47
48
|
}
|
|
48
49
|
});
|
|
49
50
|
var tile = {
|
|
50
|
-
neutral: "bg-status-neutral-bg text-text-default",
|
|
51
|
-
info: "bg-status-sky-bg text-status-sky-fg",
|
|
52
|
-
success: "bg-status-green-bg text-status-green-fg",
|
|
53
|
-
warning: "bg-status-amber-bg text-status-amber-fg",
|
|
51
|
+
neutral: "sa:bg-status-neutral-bg sa:text-text-default",
|
|
52
|
+
info: "sa:bg-status-sky-bg sa:text-status-sky-fg",
|
|
53
|
+
success: "sa:bg-status-green-bg sa:text-status-green-fg",
|
|
54
|
+
warning: "sa:bg-status-amber-bg sa:text-status-amber-fg",
|
|
54
55
|
// Figma draws the error glyph in action/destructive (#DC2626), not status-red-fg.
|
|
55
|
-
error: "bg-status-red-bg text-action-destructive-bg"
|
|
56
|
+
error: "sa:bg-status-red-bg sa:text-action-destructive-bg"
|
|
56
57
|
};
|
|
57
58
|
function IntentIcon({ intent }) {
|
|
58
59
|
if (intent === "neutral") {
|
|
@@ -73,10 +74,10 @@ function IntentIcon({ intent }) {
|
|
|
73
74
|
] }) }) });
|
|
74
75
|
}
|
|
75
76
|
var card = (intent) => cn(
|
|
76
|
-
"relative flex w-full items-center gap-2.5 overflow-clip pr-2 pl-2.5",
|
|
77
|
-
intent === "neutral" ? "py-2.5" : "pt-2.5 pb-3",
|
|
78
|
-
"rounded-xl border border-border-default bg-bg-popover",
|
|
79
|
-
"[box-shadow:0_4px_6px_-4px_var(--effect-shadow-sm),0_10px_15px_-3px_var(--effect-shadow-sm)]"
|
|
77
|
+
"sa:relative sa:flex sa:w-full sa:items-center sa:gap-2.5 sa:overflow-clip sa:pr-2 sa:pl-2.5",
|
|
78
|
+
intent === "neutral" ? "sa:py-2.5" : "sa:pt-2.5 sa:pb-3",
|
|
79
|
+
"sa:rounded-xl sa:border sa:border-border-default sa:bg-bg-popover",
|
|
80
|
+
"sa:[box-shadow:0_4px_6px_-4px_var(--effect-shadow-sm),0_10px_15px_-3px_var(--effect-shadow-sm)]"
|
|
80
81
|
);
|
|
81
82
|
function ToastContent({
|
|
82
83
|
title,
|
|
@@ -87,13 +88,14 @@ function ToastContent({
|
|
|
87
88
|
icon,
|
|
88
89
|
onAction
|
|
89
90
|
}) {
|
|
91
|
+
const labels = useSatinLabels();
|
|
90
92
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
91
|
-
icon && /* @__PURE__ */ jsx("div", { className: cn("grid size-9 shrink-0 place-items-center rounded-md", tile[intent]), children: /* @__PURE__ */ jsx(IntentIcon, { intent }) }),
|
|
92
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col text-sm", children: [
|
|
93
|
-
/* @__PURE__ */ jsx(Toast$1.Title, { className: "leading-5 font-medium text-text-default", children: title }),
|
|
94
|
-
description ? /* @__PURE__ */ jsx(Toast$1.Description, { className: "leading-4 text-text-muted", children: description }) : null
|
|
93
|
+
icon && /* @__PURE__ */ jsx("div", { className: cn("sa:grid sa:size-9 sa:shrink-0 sa:place-items-center sa:rounded-md", tile[intent]), children: /* @__PURE__ */ jsx(IntentIcon, { intent }) }),
|
|
94
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:flex sa:min-w-0 sa:flex-1 sa:flex-col sa:text-sm", children: [
|
|
95
|
+
/* @__PURE__ */ jsx(Toast$1.Title, { className: "sa:leading-5 sa:font-medium sa:text-text-default", children: title }),
|
|
96
|
+
description ? /* @__PURE__ */ jsx(Toast$1.Description, { className: "sa:leading-4 sa:text-text-muted", children: description }) : null
|
|
95
97
|
] }),
|
|
96
|
-
(action || closeButton) && /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
98
|
+
(action || closeButton) && /* @__PURE__ */ jsxs("div", { className: "sa:flex sa:shrink-0 sa:items-center sa:gap-1", children: [
|
|
97
99
|
action && /* @__PURE__ */ jsx(Toast$1.Action, { asChild: true, altText: action.label, children: /* @__PURE__ */ jsx(
|
|
98
100
|
Button,
|
|
99
101
|
{
|
|
@@ -105,7 +107,7 @@ function ToastContent({
|
|
|
105
107
|
children: action.label
|
|
106
108
|
}
|
|
107
109
|
) }),
|
|
108
|
-
closeButton && /* @__PURE__ */ jsx(Toast$1.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", iconOnly: true, "aria-label":
|
|
110
|
+
closeButton && /* @__PURE__ */ jsx(Toast$1.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xs", iconOnly: true, "aria-label": labels.close, className: "sa:rounded-md sa:text-text-muted", children: /* @__PURE__ */ jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": true, children: /* @__PURE__ */ jsx(
|
|
109
111
|
"path",
|
|
110
112
|
{
|
|
111
113
|
d: "M3.94232 10.0582L7.00053 7M7.00053 7L10.0587 3.94179M7.00053 7L3.94232 3.94179M7.00053 7L10.0587 10.0582",
|
|
@@ -138,10 +140,10 @@ function Toast({
|
|
|
138
140
|
duration,
|
|
139
141
|
type: radixType(intent),
|
|
140
142
|
className: cn(
|
|
141
|
-
"pointer-events-auto",
|
|
143
|
+
"sa:pointer-events-auto",
|
|
142
144
|
card(intent),
|
|
143
|
-
"focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)] focus-visible:outline-none",
|
|
144
|
-
"data-[state=open]:animate-[satin-enter_var(--duration-base)_var(--ease-out)]",
|
|
145
|
+
"sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)] sa:focus-visible:outline-none",
|
|
146
|
+
"sa:data-[state=open]:animate-[satin-enter_var(--sa-duration-base)_var(--sa-ease-out)]",
|
|
145
147
|
className
|
|
146
148
|
),
|
|
147
149
|
...props,
|
|
@@ -154,7 +156,7 @@ var SCALE_STEP = 0.05;
|
|
|
154
156
|
var GAP = 8;
|
|
155
157
|
var FALLBACK_HEIGHT = 58;
|
|
156
158
|
var OFFSCREEN = "150%";
|
|
157
|
-
var ease = "var(--ease-out)";
|
|
159
|
+
var ease = "var(--sa-ease-out)";
|
|
158
160
|
var cardMotion = `transform ${MOTION_MS}ms ${ease}, height 150ms ${ease}`;
|
|
159
161
|
var contentMotion = `opacity 250ms ${ease}`;
|
|
160
162
|
function StackedToast({ record, index, y, scale, height, beyond, contentVisible, onMeasure, onForget }) {
|
|
@@ -196,10 +198,10 @@ function StackedToast({ record, index, y, scale, height, beyond, contentVisible,
|
|
|
196
198
|
duration: duration ?? 5e3,
|
|
197
199
|
type: radixType(intent),
|
|
198
200
|
className: cn(
|
|
199
|
-
"absolute inset-x-0 bottom-0 origin-bottom outline-none",
|
|
200
|
-
"focus-visible:[&>div]:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
201
|
-
"data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x)",
|
|
202
|
-
"data-[swipe=cancel]:transition-[translate] data-[swipe=cancel]:duration-(--duration-base) data-[swipe=cancel]:ease-(--ease-out)"
|
|
201
|
+
"sa:absolute sa:inset-x-0 sa:bottom-0 sa:origin-bottom sa:outline-none",
|
|
202
|
+
"sa:focus-visible:[&>div]:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
203
|
+
"sa:data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) sa:data-[swipe=cancel]:translate-x-0 sa:data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x)",
|
|
204
|
+
"sa:data-[swipe=cancel]:transition-[translate] sa:data-[swipe=cancel]:duration-(--sa-duration-base) sa:data-[swipe=cancel]:ease-(--sa-ease-out)"
|
|
203
205
|
),
|
|
204
206
|
style: {
|
|
205
207
|
transform: `translate3d(0, ${y}px, 0) scale(${scale})`,
|
|
@@ -212,7 +214,7 @@ function StackedToast({ record, index, y, scale, height, beyond, contentVisible,
|
|
|
212
214
|
"div",
|
|
213
215
|
{
|
|
214
216
|
ref: cardRef,
|
|
215
|
-
className: cn("pointer-events-auto", card(intent), "items-start"),
|
|
217
|
+
className: cn("sa:pointer-events-auto", card(intent), "sa:items-start"),
|
|
216
218
|
style: {
|
|
217
219
|
transform: inPlace ? "translate3d(0, 0, 0)" : `translate3d(0, ${OFFSCREEN}, 0)`,
|
|
218
220
|
height,
|
|
@@ -223,7 +225,7 @@ function StackedToast({ record, index, y, scale, height, beyond, contentVisible,
|
|
|
223
225
|
"div",
|
|
224
226
|
{
|
|
225
227
|
ref: measured,
|
|
226
|
-
className: "flex w-full min-w-0 items-center gap-2.5",
|
|
228
|
+
className: "sa:flex sa:w-full sa:min-w-0 sa:items-center sa:gap-2.5",
|
|
227
229
|
style: { opacity: contentVisible ? 1 : 0, transition: contentMotion },
|
|
228
230
|
"aria-hidden": !contentVisible || void 0,
|
|
229
231
|
inert: !contentVisible || void 0,
|
|
@@ -324,9 +326,9 @@ function Toaster({ className, limit = 3, children }) {
|
|
|
324
326
|
Toast$1.Viewport,
|
|
325
327
|
{
|
|
326
328
|
ref: viewportRef,
|
|
327
|
-
style: { height, transition: `height ${MOTION_MS}ms var(--ease-out)` },
|
|
329
|
+
style: { height, transition: `height ${MOTION_MS}ms var(--sa-ease-out)` },
|
|
328
330
|
className: cn(
|
|
329
|
-
"fixed right-4 bottom-4 z-[100] m-0 w-[397px] max-w-[calc(100%-32px)] list-none p-0 outline-none",
|
|
331
|
+
"sa:fixed sa:right-4 sa:bottom-4 sa:z-[100] sa:m-0 sa:w-[397px] sa:max-w-[calc(100%-32px)] sa:list-none sa:p-0 sa:outline-none",
|
|
330
332
|
className
|
|
331
333
|
)
|
|
332
334
|
}
|
|
@@ -335,5 +337,3 @@ function Toaster({ className, limit = 3, children }) {
|
|
|
335
337
|
}
|
|
336
338
|
|
|
337
339
|
export { Toast, Toaster, toast };
|
|
338
|
-
//# sourceMappingURL=chunk-2HKBZFIK.js.map
|
|
339
|
-
//# sourceMappingURL=chunk-2HKBZFIK.js.map
|
package/components/accordion.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
'use client';export { Accordion, AccordionItem } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
//# sourceMappingURL=accordion.js.map
|
|
4
|
-
//# sourceMappingURL=accordion.js.map
|
|
1
|
+
'use client';export { Accordion, AccordionItem } from '../chunk-6Y6CY2DP.js';
|
|
2
|
+
import '../chunk-EHEXE2UV.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ButtonProps } from './button.js';
|
|
3
|
+
/**
|
|
4
|
+
* ActionButton: a Button that runs something and shows how it went, in place. Three states:
|
|
5
|
+
*
|
|
6
|
+
* 1. idle: the label ("Submit" by default) with an arrow on the right;
|
|
7
|
+
* 2. loading: from the click until `onAction`'s promise settles (at least `minLoading`, so a
|
|
8
|
+
* fast answer still reads as work), a Spinner in the arrow's place;
|
|
9
|
+
* 3. success: in the same place, a checkmark that draws itself in, held for `resetAfter` ms,
|
|
10
|
+
* then the arrow comes back.
|
|
11
|
+
*
|
|
12
|
+
* The label stays as it is; only the icon slot changes, its three layers stacked on one 16px
|
|
13
|
+
* cell and cross-fading (150ms), so the button never changes width. With `trailingIcon={null}`
|
|
14
|
+
* there is no slot: the spinner and checkmark take the middle and the label keeps its room. If the promise rejects, the button goes straight back to idle and the
|
|
15
|
+
* error is the app's to show (an Alert, a toast). While busy or done, clicks do nothing; focus
|
|
16
|
+
* stays on the button and screen readers hear `aria-busy`, then "Done" (`done` in SatinLabels).
|
|
17
|
+
*
|
|
18
|
+
* Pass `state` to drive it yourself (a form library's submitting flag, a server push) instead.
|
|
19
|
+
*/
|
|
20
|
+
export type ActionButtonState = 'idle' | 'loading' | 'success';
|
|
21
|
+
export interface ActionButtonProps extends Omit<ButtonProps, 'loading' | 'onClick' | 'iconOnly' | 'asChild'> {
|
|
22
|
+
/** Runs on click. The spinner stays until its promise settles. */
|
|
23
|
+
onAction?: (event: React.MouseEvent<HTMLButtonElement>) => Promise<unknown> | unknown;
|
|
24
|
+
/** Drive the state from outside instead. */
|
|
25
|
+
state?: ActionButtonState;
|
|
26
|
+
onStateChange?: (state: ActionButtonState) => void;
|
|
27
|
+
/** Shortest time the spinner shows, in ms. */
|
|
28
|
+
minLoading?: number;
|
|
29
|
+
/** How long the checkmark stays before the button is ready again, in ms; `null` keeps it. */
|
|
30
|
+
resetAfter?: number | null;
|
|
31
|
+
/** Called when `onAction` rejects; without it the error is rethrown. */
|
|
32
|
+
onError?: (error: unknown) => void;
|
|
33
|
+
/** The icon after the label; `null` for none. Defaults to an arrow. */
|
|
34
|
+
trailingIcon?: React.ReactNode;
|
|
35
|
+
onClick?: React.MouseEventHandler<HTMLButtonElement>;
|
|
36
|
+
}
|
|
37
|
+
export declare function ActionButton({ onAction, state: controlled, onStateChange, onError, minLoading, resetAfter, trailingIcon, onClick, children, className, ...props }: ActionButtonProps): React.JSX.Element;
|
|
@@ -22,6 +22,7 @@ import * as React from 'react';
|
|
|
22
22
|
*/
|
|
23
23
|
export type Glimmer = 'color' | 'neutral';
|
|
24
24
|
/** The tetris mark. Memoised: its 125 animated elements never re-render with their parent. */
|
|
25
|
+
/** @internal Shared by Satin's own components; not part of the public API and may change in any release. */
|
|
25
26
|
export declare const TetrisMark: React.MemoExoticComponent<({ glimmer, className }: {
|
|
26
27
|
glimmer?: Glimmer;
|
|
27
28
|
className?: string;
|
|
@@ -45,6 +46,7 @@ export declare function ShimmerLabel({ children, className }: {
|
|
|
45
46
|
className?: string;
|
|
46
47
|
}): React.JSX.Element;
|
|
47
48
|
/** The flappy bird fitted into a `size` square; `run` plays the run in place. */
|
|
49
|
+
/** @internal Shared by Satin's own components; not part of the public API and may change in any release. */
|
|
48
50
|
export declare function FlappySprite({ size, run, className }: {
|
|
49
51
|
size?: number;
|
|
50
52
|
run?: boolean;
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
'use client';export { AgentLoading, FlappySprite, ShimmerLabel, TetrisLabel, TetrisMark, TetrisStill } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
//# sourceMappingURL=agent-loading.js.map
|
|
4
|
-
//# sourceMappingURL=agent-loading.js.map
|
|
1
|
+
'use client';export { AgentLoading, FlappySprite, ShimmerLabel, TetrisLabel, TetrisMark, TetrisStill } from '../chunk-R4KPFBMK.js';
|
|
2
|
+
import '../chunk-EHEXE2UV.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use client';export { AgentAvatar, AgentMenuItem, AgentPicker, AgentPickerRow } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
'use client';export { AgentAvatar, AgentMenuItem, AgentPicker, AgentPickerRow } from '../chunk-DMZW4LGU.js';
|
|
2
|
+
import '../chunk-6DWLTGRQ.js';
|
|
3
|
+
import '../chunk-AKEZCWNW.js';
|
|
4
|
+
import '../chunk-NTSU44FY.js';
|
|
5
|
+
import '../chunk-EHEXE2UV.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
'use client';export { AgentSuggestion, AgentSuggestionChanges, AgentSuggestionDiff, AgentSuggestionMetric, AgentSuggestionQuote } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=agent-suggestion.js.map
|
|
1
|
+
'use client';export { AgentSuggestion, AgentSuggestionChanges, AgentSuggestionDiff, AgentSuggestionMetric, AgentSuggestionQuote } from '../chunk-T7P3OEBP.js';
|
|
2
|
+
import '../chunk-LKSFTNPF.js';
|
|
3
|
+
import '../chunk-7NV53EL5.js';
|
|
4
|
+
import '../chunk-NTSU44FY.js';
|
|
5
|
+
import '../chunk-EHEXE2UV.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Alert: a message that stays on the page until it's dealt with (a toast is for what just
|
|
4
|
+
* happened and goes away; a banner promotes). Built on the uiKit `Alert` (475:27871) that
|
|
5
|
+
* DialogAlert draws inside dialogs, for anywhere on a page: above a form, at the top of a
|
|
6
|
+
* settings section, in an empty table.
|
|
7
|
+
*
|
|
8
|
+
* - `intent`: neutral, info, success, warning or error, the status colours from the theme.
|
|
9
|
+
* - `variant`: `soft` (default) fills it with the status background; `outline` is a card
|
|
10
|
+
* surface with a border, for an alert among other cards, where only the icon carries colour.
|
|
11
|
+
* - A 16px status icon on the first line (`icon={false}` hides it, or pass your own), a 14px
|
|
12
|
+
* medium title and a 13px muted description; either can be left out.
|
|
13
|
+
* - `action` holds a Button or a Link: on the right when there's only a title, under the
|
|
14
|
+
* description when there is one. `onDismiss` adds the close button.
|
|
15
|
+
* - Errors and warnings are `role="alert"` (read out when they appear), the rest `role="status"`.
|
|
16
|
+
*/
|
|
17
|
+
export type AlertIntent = 'neutral' | 'info' | 'success' | 'warning' | 'error';
|
|
18
|
+
export interface AlertProps extends Omit<React.ComponentProps<'div'>, 'title'> {
|
|
19
|
+
intent?: AlertIntent;
|
|
20
|
+
variant?: 'soft' | 'outline';
|
|
21
|
+
title?: React.ReactNode;
|
|
22
|
+
description?: React.ReactNode;
|
|
23
|
+
/** `false` hides the status icon; a node replaces it. */
|
|
24
|
+
icon?: boolean | React.ReactNode;
|
|
25
|
+
/** A Button or Link, or a few in a fragment. */
|
|
26
|
+
action?: React.ReactNode;
|
|
27
|
+
/** Shows the close button; called when it is pressed. */
|
|
28
|
+
onDismiss?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export declare function Alert({ intent, variant, title, description, icon, action, onDismiss, className, children, ...props }: AlertProps): React.JSX.Element;
|
|
31
|
+
/** @internal The status glyphs from Figma (16px, 1.25 stroke), drawn in currentColor. Neutral uses the info glyph. */
|
|
32
|
+
export declare function StatusIcon({ intent }: {
|
|
33
|
+
intent: AlertIntent;
|
|
34
|
+
}): React.JSX.Element;
|
|
35
|
+
/** The X from Figma's close button (`icon` 16px, 1.25 stroke). */
|
|
36
|
+
/** @internal Shared by Satin's own components; not part of the public API and may change in any release. */
|
|
37
|
+
export declare function CloseIcon(): React.JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
'use client';export { AnnouncementBar } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
'use client';export { AnnouncementBar } from '../chunk-LAOE6Y57.js';
|
|
2
|
+
import '../chunk-HZV7EXGU.js';
|
|
3
|
+
import '../chunk-YYFAZQ25.js';
|
|
4
|
+
import '../chunk-6DWLTGRQ.js';
|
|
5
|
+
import '../chunk-AKEZCWNW.js';
|
|
6
|
+
import '../chunk-NTSU44FY.js';
|
|
7
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/attachment.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use client';export { Attachment, AttachmentGroup, AttachmentPreview, AttachmentPreviewPager, AttachmentPreviewSheets, FileIcon } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
'use client';export { Attachment, AttachmentGroup, AttachmentPreview, AttachmentPreviewPager, AttachmentPreviewSheets, FileIcon } from '../chunk-R3DTMBDT.js';
|
|
2
|
+
import '../chunk-6DWLTGRQ.js';
|
|
3
|
+
import '../chunk-AKEZCWNW.js';
|
|
4
|
+
import '../chunk-NTSU44FY.js';
|
|
5
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/avatar.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
'use client';export { AVATAR_TOOLTIP_DELAY, Avatar, AvatarGroup, avatarVariants } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
//# sourceMappingURL=avatar.js.map
|
|
6
|
-
//# sourceMappingURL=avatar.js.map
|
|
1
|
+
'use client';export { AVATAR_TOOLTIP_DELAY, Avatar, AvatarGroup, avatarVariants } from '../chunk-TOY6YPTG.js';
|
|
2
|
+
import '../chunk-KDU7AT2T.js';
|
|
3
|
+
import '../chunk-XWPH7C2W.js';
|
|
4
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/badge.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
'use client';export { Badge, badgeVariants } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
//# sourceMappingURL=badge.js.map
|
|
4
|
-
//# sourceMappingURL=badge.js.map
|
|
1
|
+
'use client';export { Badge, badgeVariants } from '../chunk-7NV53EL5.js';
|
|
2
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/banner.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
'use client';export { Banner, bannerVariants } from '../chunk-
|
|
2
|
-
export { bannerMesh } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
'use client';export { Banner, bannerVariants } from '../chunk-HZV7EXGU.js';
|
|
2
|
+
export { bannerMesh } from '../chunk-YYFAZQ25.js';
|
|
3
|
+
import '../chunk-6DWLTGRQ.js';
|
|
4
|
+
import '../chunk-AKEZCWNW.js';
|
|
5
|
+
import '../chunk-NTSU44FY.js';
|
|
6
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/bar-chart.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
'use client';export { BarCard, niceMax } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=bar-chart.js.map
|
|
1
|
+
'use client';export { BarCard, niceMax } from '../chunk-INJWE2LD.js';
|
|
2
|
+
import '../chunk-LI5VYDLN.js';
|
|
3
|
+
import '../chunk-ZHFIWDGF.js';
|
|
4
|
+
import '../chunk-EQAFDIPE.js';
|
|
5
|
+
import '../chunk-KITXKIYW.js';
|
|
6
|
+
import '../chunk-P36KBUYD.js';
|
|
7
|
+
import '../chunk-XWPH7C2W.js';
|
|
8
|
+
import '../chunk-7NV53EL5.js';
|
|
9
|
+
import '../chunk-NTSU44FY.js';
|
|
10
|
+
import '../chunk-EHEXE2UV.js';
|
package/components/breadcrumb.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
'use client';export { Breadcrumb } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
|
|
6
|
-
//# sourceMappingURL=breadcrumb.js.map
|
|
1
|
+
'use client';export { Breadcrumb } from '../chunk-Q7KVC5B4.js';
|
|
2
|
+
import '../chunk-P36KBUYD.js';
|
|
3
|
+
import '../chunk-XWPH7C2W.js';
|
|
4
|
+
import '../chunk-NTSU44FY.js';
|
|
5
|
+
import '../chunk-EHEXE2UV.js';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ButtonDefaults } from './button.js';
|
|
3
|
+
/**
|
|
4
|
+
* Buttons that belong together: a toolbar, Prev / Next, a set of views, the two halves of a
|
|
5
|
+
* SplitButton.
|
|
6
|
+
*
|
|
7
|
+
* `attached` (the default) joins them into one block: the inner corners go square, the buttons
|
|
8
|
+
* touch, and the only line between two of them is the later one's 1px leading border (the
|
|
9
|
+
* outline colour on secondary). Each button's outer ring and shadow are clipped on the sides it
|
|
10
|
+
* shares, so they run unbroken along the top and bottom of the block, with no notch at a seam. The button under the
|
|
11
|
+
* pointer or with focus comes to the front, so its ring and focus ring are never cut by a
|
|
12
|
+
* neighbour. `attached={false}` keeps every button whole, 8px apart (4px at xs), for a looser
|
|
13
|
+
* toolbar; put a `ButtonGroupSeparator` between sets there.
|
|
14
|
+
*
|
|
15
|
+
* `variant`, `size` and `shape` are defaults for every Button inside (a button's own prop wins),
|
|
16
|
+
* so a group is set once instead of on each button. The group is `role="group"`: give it an
|
|
17
|
+
* `aria-label` that says what the buttons are for ("Text alignment").
|
|
18
|
+
*/
|
|
19
|
+
export interface ButtonGroupProps extends React.ComponentProps<'div'>, ButtonDefaults {
|
|
20
|
+
orientation?: 'horizontal' | 'vertical';
|
|
21
|
+
/** Join the buttons into one block. */
|
|
22
|
+
attached?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function ButtonGroup({ orientation, attached, variant, size, shape, className, children, ...props }: ButtonGroupProps): React.JSX.Element;
|
|
25
|
+
/** A thin rule between sets of buttons in a loose (`attached={false}`) group or a toolbar. */
|
|
26
|
+
export declare function ButtonGroupSeparator({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
|
package/components/button.d.ts
CHANGED
|
@@ -27,6 +27,18 @@ declare const buttonVariants: (props?: ({
|
|
|
27
27
|
export interface ButtonProps extends React.ComponentProps<'button'>, VariantProps<typeof buttonVariants> {
|
|
28
28
|
/** Render the child element (a link, say) with the button's styles instead of a `<button>`. */
|
|
29
29
|
asChild?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Busy: a Spinner takes the middle and the label and icons turn invisible but keep their room,
|
|
32
|
+
* so the button doesn't change width. Clicks (and Enter in a form) do nothing; the button
|
|
33
|
+
* keeps its focus and looks, with `aria-busy` and `aria-disabled` for screen readers.
|
|
34
|
+
*/
|
|
35
|
+
loading?: boolean;
|
|
30
36
|
}
|
|
31
|
-
|
|
37
|
+
/**
|
|
38
|
+
* What a ButtonGroup hands its buttons: the variant, size and shape they take unless they set
|
|
39
|
+
* their own. Lives here so Button reads it without importing the group.
|
|
40
|
+
*/
|
|
41
|
+
export type ButtonDefaults = Pick<VariantProps<typeof buttonVariants>, 'variant' | 'size' | 'shape'>;
|
|
42
|
+
export declare const ButtonDefaultsContext: React.Context<ButtonDefaults | null>;
|
|
43
|
+
export declare function Button({ className, variant, size, shape, iconOnly, asChild, loading, type, onClick, children, 'aria-disabled': ariaDisabled, ...props }: ButtonProps): React.JSX.Element;
|
|
32
44
|
export { buttonVariants };
|