@uisatin/ui 0.1.1 → 0.3.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 +33 -0
- package/README.md +20 -3
- package/chunk-3DHJXU45.js +147 -0
- package/{chunk-6YXUBP27.js → chunk-5725MFGQ.js} +72 -67
- package/{chunk-BKZBWPUH.js → chunk-57QEOCDZ.js} +9 -11
- package/{chunk-RTJ76X5U.js → chunk-5KTBSMQU.js} +2 -4
- package/{chunk-B2K45IUR.js → chunk-5XTUFBZI.js} +5 -7
- package/{chunk-LW3TRU5W.js → chunk-674SRBZK.js} +28 -16
- package/{chunk-XZNHT6MO.js → chunk-6VKV36OK.js} +115 -61
- package/{chunk-GICKPMJU.js → chunk-73Z7NMQQ.js} +31 -31
- package/chunk-7Q76HLRQ.js +128 -0
- package/{chunk-JPNWHWAQ.js → chunk-AIMQNLPY.js} +38 -35
- package/chunk-BN7FDKCJ.js +164 -0
- package/{chunk-3DINAQLL.js → chunk-BR2B4OIT.js} +33 -29
- package/{chunk-2HKBZFIK.js → chunk-CGOH5IYX.js} +31 -31
- package/chunk-CVNRZ2YV.js +112 -0
- package/{chunk-QUF2IPOZ.js → chunk-DPYIBFQD.js} +12 -14
- package/chunk-EF5GT4OG.js +87 -0
- package/chunk-FAJ3OVL4.js +37 -0
- package/{chunk-L6NCCSIP.js → chunk-FB5HTCO2.js} +36 -29
- package/chunk-GI2SMFZL.js +55 -0
- package/{chunk-B6V4VSGH.js → chunk-GMETYACH.js} +14 -15
- package/chunk-HK6WINL6.js +95 -0
- package/{chunk-HL42K2NH.js → chunk-IKO3GQFE.js} +17 -17
- package/{chunk-DO3TBNSC.js → chunk-ISYKZCPJ.js} +15 -17
- package/{chunk-YG7JOOLJ.js → chunk-J7RMFN54.js} +5 -7
- package/{chunk-SHDFUXYV.js → chunk-JBKBRAC4.js} +16 -18
- package/{chunk-LZMKSFCF.js → chunk-JCXI7VQL.js} +10 -12
- package/{chunk-NN6PKJWS.js → chunk-JYOZUQNU.js} +7 -9
- package/{chunk-LLHTVIM3.js → chunk-LB37KTJH.js} +7 -9
- package/{chunk-NSRTTYQ4.js → chunk-LB7Z6BSK.js} +42 -35
- package/{chunk-BNZVTLHV.js → chunk-LFGUJHFF.js} +25 -21
- package/{chunk-7TXHCRAG.js → chunk-M2HEVFQ3.js} +8 -10
- package/{chunk-SH6NG6VN.js → chunk-NH3EHMIL.js} +6 -8
- package/chunk-NL574STL.js +88 -0
- package/chunk-NQL6SIIB.js +168 -0
- package/chunk-O46O6LFQ.js +25 -0
- package/{chunk-YPNKBE5X.js → chunk-OURZQM27.js} +5 -7
- package/{chunk-XL75JRUA.js → chunk-OVKPPXK5.js} +42 -22
- package/chunk-PD6YPFYN.js +42 -0
- package/{chunk-XILQ7GXE.js → chunk-PHNR6ZQ7.js} +11 -13
- package/{chunk-BNTPPZCK.js → chunk-PUWSL5XW.js} +37 -39
- package/{chunk-A5XEM3GF.js → chunk-RHQHDYTE.js} +34 -36
- package/chunk-S7QHBVPX.js +45 -0
- package/{chunk-TX3H3QMA.js → chunk-SAYNV7B3.js} +71 -70
- package/{chunk-6QMSWITQ.js → chunk-SDOTDMYG.js} +24 -26
- package/{chunk-UGRSWP6U.js → chunk-SPGUZMCC.js} +10 -12
- package/chunk-SSOFFQ5T.js +74 -0
- package/{chunk-AN2RNJLR.js → chunk-SZJIVBOD.js} +16 -16
- package/chunk-T6L32XXH.js +107 -0
- package/{chunk-QS4N4MNP.js → chunk-TT2N5752.js} +18 -20
- package/{chunk-72OCFAPT.js → chunk-UCCNXGLG.js} +22 -21
- package/{chunk-KNUWZNFV.js → chunk-UGIVCXGN.js} +4 -6
- package/{chunk-H4NU7NPO.js → chunk-UUCVRIVP.js} +62 -61
- package/{chunk-P4O6TGDR.js → chunk-UZ4DXU6W.js} +28 -26
- package/{chunk-UBNHSZSE.js → chunk-VUOAPWTF.js} +10 -12
- package/{chunk-VAGIAREV.js → chunk-W472DBMT.js} +29 -26
- package/{chunk-X3PQANZO.js → chunk-W4RDTP6W.js} +47 -46
- package/{chunk-CL2II6BX.js → chunk-WLQD5BN2.js} +11 -13
- package/{chunk-FDKIX4DC.js → chunk-X2GNMNZQ.js} +7 -9
- package/{chunk-PF3YBUKT.js → chunk-X66KTATQ.js} +16 -15
- package/{chunk-J3NSDRVH.js → chunk-XETMIETJ.js} +0 -2
- package/chunk-XH56JGYC.js +71 -0
- package/{chunk-O7F3CIDV.js → chunk-XUOSJMEJ.js} +10 -12
- package/chunk-YJK4MGSI.js +86 -0
- package/{chunk-YX5VNRJX.js → chunk-YYFAZQ25.js} +0 -2
- package/chunk-Z7S2KQZS.js +177 -0
- package/chunk-ZBZ3ZQRB.js +195 -0
- package/{chunk-Y5AYU7PK.js → chunk-ZHFIWDGF.js} +0 -2
- package/components/accordion.js +2 -4
- package/components/agent-loading.d.ts +2 -0
- package/components/agent-loading.js +2 -4
- package/components/agent-picker.js +4 -5
- package/components/agent-suggestion.js +5 -6
- package/components/announcement-bar.js +6 -7
- package/components/attachment.js +4 -5
- package/components/avatar.d.ts +16 -0
- package/components/avatar.js +4 -6
- package/components/badge.js +2 -4
- package/components/banner-mesh.js +1 -3
- package/components/banner.js +4 -6
- package/components/bar-chart.js +10 -11
- package/components/breadcrumb.js +5 -6
- package/components/button.js +2 -4
- package/components/card.js +3 -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 +3 -5
- package/components/combobox.d.ts +12 -3
- package/components/combobox.js +9 -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 +3 -5
- package/components/date-picker.d.ts +26 -14
- package/components/date-picker.js +8 -9
- package/components/decision-card.js +6 -7
- package/components/dialog.d.ts +5 -2
- package/components/dialog.js +4 -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/file-upload.js +6 -7
- package/components/floating.js +1 -3
- package/components/form-field.js +2 -4
- package/components/hover-card.d.ts +5 -2
- package/components/hover-card.js +2 -4
- package/components/input-otp.d.ts +4 -2
- package/components/input-otp.js +7 -8
- package/components/input.js +3 -5
- package/components/kbd.js +2 -4
- package/components/labels.d.ts +79 -0
- package/components/labels.js +1 -0
- package/components/line-chart.js +11 -12
- package/components/message-actions.js +4 -5
- package/components/message.js +7 -8
- package/components/number-input.d.ts +4 -2
- package/components/number-input.js +7 -8
- package/components/pagination.js +4 -6
- package/components/popover.d.ts +11 -5
- package/components/popover.js +3 -4
- package/components/progress.js +2 -4
- package/components/prompt-bar.js +5 -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 +10 -2
- package/components/select.js +6 -7
- package/components/sheet.d.ts +4 -2
- package/components/sheet.js +5 -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/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 +4 -5
- package/components/toggle.js +2 -4
- package/components/tooltip.d.ts +5 -2
- package/components/tooltip.js +3 -5
- package/index.d.ts +1 -0
- package/index.js +67 -231
- package/lib/utils.d.ts +8 -1
- package/lib/utils.js +1 -3
- package/package.json +22 -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.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-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-TVLGZGYN.js +0 -59
- package/chunk-TVLGZGYN.js.map +0 -1
- package/chunk-TX3H3QMA.js.map +0 -1
- 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,5 +1,6 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
2
|
-
import {
|
|
1
|
+
import { Button } from './chunk-T6L32XXH.js';
|
|
2
|
+
import { useSatinLabels } from './chunk-SSOFFQ5T.js';
|
|
3
|
+
import { cn } from './chunk-O46O6LFQ.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
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { useSlidingIndicator } from './chunk-XETMIETJ.js';
|
|
2
|
+
import { cn } from './chunk-O46O6LFQ.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 { useFormField } from './chunk-
|
|
2
|
-
import { cn } from './chunk-
|
|
1
|
+
import { useFormField } from './chunk-VUOAPWTF.js';
|
|
2
|
+
import { cn } from './chunk-O46O6LFQ.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -38,13 +38,13 @@ function Textarea({
|
|
|
38
38
|
{
|
|
39
39
|
"data-slot": "textarea-wrapper",
|
|
40
40
|
"data-disabled": isDisabled || void 0,
|
|
41
|
-
className: cn("satin-textarea-root grid w-full gap-2", wrapperClassName),
|
|
41
|
+
className: cn("satin-textarea-root sa:grid sa:w-full sa:gap-2", wrapperClassName),
|
|
42
42
|
children: [
|
|
43
|
-
label && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
|
|
44
|
-
/* @__PURE__ */ jsx("label", { htmlFor: textareaId, className: "text-sm leading-[18px] font-medium text-text-default", children: label }),
|
|
45
|
-
optional && /* @__PURE__ */ jsx("span", { className: "text-sm text-text-muted", children: "(Optional)" })
|
|
43
|
+
label && /* @__PURE__ */ jsxs("div", { className: "sa:flex sa:items-center sa:gap-1", children: [
|
|
44
|
+
/* @__PURE__ */ jsx("label", { htmlFor: textareaId, className: "sa:text-sm sa:leading-[18px] sa:font-medium sa:text-text-default", children: label }),
|
|
45
|
+
optional && /* @__PURE__ */ jsx("span", { className: "sa:text-sm sa:text-text-muted", children: "(Optional)" })
|
|
46
46
|
] }),
|
|
47
|
-
/* @__PURE__ */ jsxs("div", { className: "relative flex", children: [
|
|
47
|
+
/* @__PURE__ */ jsxs("div", { className: "sa:relative sa:flex", children: [
|
|
48
48
|
/* @__PURE__ */ jsx(
|
|
49
49
|
"textarea",
|
|
50
50
|
{
|
|
@@ -74,13 +74,13 @@ function Textarea({
|
|
|
74
74
|
"div",
|
|
75
75
|
{
|
|
76
76
|
className: cn(
|
|
77
|
-
"flex items-start gap-2 text-sm",
|
|
78
|
-
hasMessage ? "text-action-destructive-bg" : "text-text-muted"
|
|
77
|
+
"sa:flex sa:items-start sa:gap-2 sa:text-sm",
|
|
78
|
+
hasMessage ? "sa:text-action-destructive-bg" : "sa:text-text-muted"
|
|
79
79
|
),
|
|
80
80
|
children: [
|
|
81
|
-
/* @__PURE__ */ jsx("p", { id: messageId, className: "min-w-0 flex-1", children: message }),
|
|
82
|
-
maxLength != null && /* @__PURE__ */ jsxs("p", { id: counterId, className: cn("shrink-0 whitespace-nowrap", !hasMessage && "text-text-muted"), children: [
|
|
83
|
-
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Characters used: " }),
|
|
81
|
+
/* @__PURE__ */ jsx("p", { id: messageId, className: "sa:min-w-0 sa:flex-1", children: message }),
|
|
82
|
+
maxLength != null && /* @__PURE__ */ jsxs("p", { id: counterId, className: cn("sa:shrink-0 sa:whitespace-nowrap", !hasMessage && "sa:text-text-muted"), children: [
|
|
83
|
+
/* @__PURE__ */ jsx("span", { className: "sa:sr-only", children: "Characters used: " }),
|
|
84
84
|
text.length,
|
|
85
85
|
"/",
|
|
86
86
|
maxLength
|
|
@@ -94,5 +94,3 @@ function Textarea({
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
export { Textarea };
|
|
97
|
-
//# sourceMappingURL=chunk-QUF2IPOZ.js.map
|
|
98
|
-
//# sourceMappingURL=chunk-QUF2IPOZ.js.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { HoverCard } from './chunk-PD6YPFYN.js';
|
|
2
|
+
import { useSatinLabels } from './chunk-SSOFFQ5T.js';
|
|
3
|
+
import { cn } from './chunk-O46O6LFQ.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
function SourceIcon({ source }) {
|
|
8
|
+
if (source.icon) return /* @__PURE__ */ jsx("span", { className: "sa:grid sa:size-4 sa:shrink-0 sa:place-items-center sa:overflow-clip sa:rounded-xs sa:[&>*]:size-4", children: source.icon });
|
|
9
|
+
return /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "sa:grid sa:size-4 sa:shrink-0 sa:place-items-center sa:rounded-xs sa:bg-bg-muted sa:text-[10px] sa:leading-none sa:font-semibold sa:text-text-muted", children: source.title.charAt(0).toUpperCase() });
|
|
10
|
+
}
|
|
11
|
+
function Citation({ index, source, className, "aria-label": ariaLabel, ...props }) {
|
|
12
|
+
const labels = useSatinLabels();
|
|
13
|
+
const chip = /* @__PURE__ */ jsx(
|
|
14
|
+
"a",
|
|
15
|
+
{
|
|
16
|
+
...props,
|
|
17
|
+
"data-slot": "citation",
|
|
18
|
+
href: source.href,
|
|
19
|
+
target: source.href ? "_blank" : void 0,
|
|
20
|
+
rel: source.href ? "noreferrer" : void 0,
|
|
21
|
+
"aria-label": ariaLabel ?? `${labels.source} ${index}: ${source.title}`,
|
|
22
|
+
className: cn(
|
|
23
|
+
"sa:mx-0.5 sa:inline-grid sa:h-4 sa:min-w-4 sa:translate-y-[-1px] sa:place-items-center sa:rounded-sm sa:bg-bg-muted sa:px-1 sa:align-middle sa:text-xs sa:leading-none sa:font-medium sa:text-text-default sa:no-underline sa:tabular-nums sa:outline-none",
|
|
24
|
+
"sa:transition-[background-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
25
|
+
"sa:hover:bg-bg-hover sa:hover:[box-shadow:inset_0_0_0_1px_var(--border-strong)] sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
26
|
+
className
|
|
27
|
+
),
|
|
28
|
+
children: index
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
return /* @__PURE__ */ jsxs(HoverCard, { trigger: chip, side: "top", align: "center", className: "sa:w-[300px] sa:gap-2 sa:p-3", children: [
|
|
32
|
+
/* @__PURE__ */ jsxs("span", { className: "sa:flex sa:items-center sa:gap-2 sa:text-xs sa:text-text-muted", children: [
|
|
33
|
+
/* @__PURE__ */ jsx(SourceIcon, { source }),
|
|
34
|
+
/* @__PURE__ */ jsx("span", { className: "sa:truncate", children: source.origin })
|
|
35
|
+
] }),
|
|
36
|
+
/* @__PURE__ */ jsx("span", { className: "sa:text-sm sa:font-medium sa:text-text-default", children: source.title }),
|
|
37
|
+
source.quote && /* @__PURE__ */ jsxs("span", { className: "sa:text-body sa:text-text-muted", children: [
|
|
38
|
+
"\u201C",
|
|
39
|
+
source.quote,
|
|
40
|
+
"\u201D"
|
|
41
|
+
] })
|
|
42
|
+
] });
|
|
43
|
+
}
|
|
44
|
+
function Sources({ sources, defaultOpen = false, className, ...props }) {
|
|
45
|
+
const [open, setOpen] = React.useState(defaultOpen);
|
|
46
|
+
const listId = React.useId();
|
|
47
|
+
return /* @__PURE__ */ jsxs("div", { ...props, "data-slot": "sources", className: cn("sa:flex sa:flex-col sa:gap-2", className), children: [
|
|
48
|
+
/* @__PURE__ */ jsxs(
|
|
49
|
+
"button",
|
|
50
|
+
{
|
|
51
|
+
type: "button",
|
|
52
|
+
"aria-expanded": open,
|
|
53
|
+
"aria-controls": listId,
|
|
54
|
+
onClick: () => setOpen(!open),
|
|
55
|
+
className: cn(
|
|
56
|
+
"sa:inline-flex sa:h-8 sa:w-fit sa:items-center sa:gap-2 sa:rounded-pill sa:border sa:border-border-default sa:py-1 sa:pr-3 sa:pl-1.5 sa:text-sm sa:font-medium sa:text-text-default sa:outline-none",
|
|
57
|
+
"sa:transition-[border-color,background-color] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
58
|
+
"sa:hover:border-border-strong sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
59
|
+
open && "sa:bg-bg-hover"
|
|
60
|
+
),
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsx("span", { className: "sa:flex sa:items-center sa:gap-0.5", children: sources.slice(0, 3).map((s, i) => /* @__PURE__ */ jsx(SourceIcon, { source: s }, i)) }),
|
|
63
|
+
sources.length,
|
|
64
|
+
" ",
|
|
65
|
+
sources.length === 1 ? "source" : "sources"
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ jsx("div", { id: listId, "data-state": open ? "open" : "closed", className: "satin-expand", children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("ol", { className: "sa:flex sa:flex-col sa:gap-0.5", children: sources.map((s, i) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
70
|
+
"a",
|
|
71
|
+
{
|
|
72
|
+
href: s.href,
|
|
73
|
+
target: s.href ? "_blank" : void 0,
|
|
74
|
+
rel: s.href ? "noreferrer" : void 0,
|
|
75
|
+
className: "sa:flex sa:items-center sa:gap-3 sa:rounded-lg sa:p-2 sa:text-sm sa:no-underline sa:outline-none sa:transition-colors sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out) sa:hover:bg-bg-hover sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
76
|
+
children: [
|
|
77
|
+
/* @__PURE__ */ jsx("span", { className: "sa:grid sa:h-4 sa:min-w-4 sa:place-items-center sa:rounded-sm sa:bg-bg-muted sa:px-1 sa:text-xs sa:leading-none sa:font-medium sa:text-text-default sa:tabular-nums", children: i + 1 }),
|
|
78
|
+
/* @__PURE__ */ jsx(SourceIcon, { source: s }),
|
|
79
|
+
/* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:truncate sa:text-text-default", children: s.title }),
|
|
80
|
+
s.origin && /* @__PURE__ */ jsx("span", { className: "sa:shrink-0 sa:text-text-muted", children: s.origin })
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
) }, i)) }) }) })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { Citation, Sources };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { cn } from './chunk-O46O6LFQ.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 };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Input } from './chunk-
|
|
2
|
-
import { TooltipBubble } from './chunk-
|
|
3
|
-
import {
|
|
1
|
+
import { Input } from './chunk-OURZQM27.js';
|
|
2
|
+
import { TooltipBubble } from './chunk-GMETYACH.js';
|
|
3
|
+
import { useSatinLabels } from './chunk-SSOFFQ5T.js';
|
|
4
|
+
import { cn } from './chunk-O46O6LFQ.js';
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { Slider as Slider$1 } from 'radix-ui';
|
|
6
7
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
@@ -25,8 +26,12 @@ function Slider({
|
|
|
25
26
|
name,
|
|
26
27
|
id,
|
|
27
28
|
"aria-label": ariaLabel,
|
|
28
|
-
|
|
29
|
+
"aria-labelledby": labelledBy,
|
|
30
|
+
className,
|
|
31
|
+
onPointerDown,
|
|
32
|
+
...props
|
|
29
33
|
}) {
|
|
34
|
+
const labels = useSatinLabels();
|
|
30
35
|
const autoId = React.useId();
|
|
31
36
|
const sliderId = id ?? autoId;
|
|
32
37
|
const labelId = `${sliderId}-label`;
|
|
@@ -56,8 +61,8 @@ function Slider({
|
|
|
56
61
|
}, [dragging]);
|
|
57
62
|
React.useEffect(() => () => clearTimeout(keyTimer.current), []);
|
|
58
63
|
const readout = range ? `${formatValue(values[0])} \u2013 ${formatValue(values[1])}` : formatValue(values[0]);
|
|
59
|
-
const thumbLabel = (i) => range ? i === 0 ?
|
|
60
|
-
const fieldLabel = (i) => range ? i === 0 ?
|
|
64
|
+
const thumbLabel = (i) => range ? i === 0 ? labels.from : labels.to : void 0;
|
|
65
|
+
const fieldLabel = (i) => range ? i === 0 ? labels.from : labels.to : labels.value;
|
|
61
66
|
const commitTyped = (i, typed) => {
|
|
62
67
|
const places = decimals(step);
|
|
63
68
|
let v = Math.round((typed - min) / step) * step + min;
|
|
@@ -81,6 +86,7 @@ function Slider({
|
|
|
81
86
|
const slider = /* @__PURE__ */ jsxs(
|
|
82
87
|
Slider$1.Root,
|
|
83
88
|
{
|
|
89
|
+
...props,
|
|
84
90
|
id: sliderId,
|
|
85
91
|
"data-slot": "slider",
|
|
86
92
|
value: values,
|
|
@@ -93,18 +99,21 @@ function Slider({
|
|
|
93
99
|
orientation,
|
|
94
100
|
disabled,
|
|
95
101
|
name,
|
|
96
|
-
"aria-labelledby": label ? labelId :
|
|
97
|
-
onPointerDown: () =>
|
|
102
|
+
"aria-labelledby": label ? labelId : labelledBy,
|
|
103
|
+
onPointerDown: (e) => {
|
|
104
|
+
onPointerDown?.(e);
|
|
105
|
+
if (!disabled) setDragging(true);
|
|
106
|
+
},
|
|
98
107
|
className: cn(
|
|
99
|
-
"relative flex shrink-0 touch-none items-center select-none data-[disabled]:cursor-not-allowed",
|
|
100
|
-
vertical ? "h-40 w-5 flex-col" : "h-5 w-full min-w-0 flex-1"
|
|
108
|
+
"sa:relative sa:flex sa:shrink-0 sa:touch-none sa:items-center sa:select-none sa:data-[disabled]:cursor-not-allowed",
|
|
109
|
+
vertical ? "sa:h-40 sa:w-5 sa:flex-col" : "sa:h-5 sa:w-full sa:min-w-0 sa:flex-1"
|
|
101
110
|
),
|
|
102
111
|
children: [
|
|
103
112
|
/* @__PURE__ */ jsx(
|
|
104
113
|
Slider$1.Track,
|
|
105
114
|
{
|
|
106
|
-
className: cn("relative grow cursor-pointer overflow-hidden rounded-full bg-bg-muted", vertical ? "w-1" : "h-1"),
|
|
107
|
-
children: /* @__PURE__ */ jsx(Slider$1.Range, { className: cn("absolute rounded-full bg-action-primary-bg", vertical ? "w-full" : "h-full") })
|
|
115
|
+
className: cn("sa:relative sa:grow sa:cursor-pointer sa:overflow-hidden sa:rounded-full sa:bg-bg-muted", vertical ? "sa:w-1" : "sa:h-1"),
|
|
116
|
+
children: /* @__PURE__ */ jsx(Slider$1.Range, { className: cn("sa:absolute sa:rounded-full sa:bg-action-primary-bg", vertical ? "sa:w-full" : "sa:h-full") })
|
|
108
117
|
}
|
|
109
118
|
),
|
|
110
119
|
values.map((v, i) => /* @__PURE__ */ jsx(
|
|
@@ -125,11 +134,11 @@ function Slider({
|
|
|
125
134
|
keyTimer.current = setTimeout(() => setKeying(false), 1e3);
|
|
126
135
|
},
|
|
127
136
|
className: cn(
|
|
128
|
-
"relative block size-4 cursor-grab rounded-full border border-border-strong bg-bg-popover outline-none active:cursor-grabbing",
|
|
129
|
-
"[box-shadow:0_1px_3px_0_var(--effect-shadow-sm)]",
|
|
130
|
-
"transition-[border-color,box-shadow] duration-(--duration-fast) ease-(--ease-out)",
|
|
131
|
-
"hover:border-text-subtle focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
132
|
-
"data-[disabled]:cursor-not-allowed data-[disabled]:hover:border-border-strong"
|
|
137
|
+
"sa:relative sa:block sa:size-4 sa:cursor-grab sa:rounded-full sa:border sa:border-border-strong sa:bg-bg-popover sa:outline-none sa:active:cursor-grabbing",
|
|
138
|
+
"sa:[box-shadow:0_1px_3px_0_var(--effect-shadow-sm)]",
|
|
139
|
+
"sa:transition-[border-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
140
|
+
"sa:hover:border-text-subtle sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
141
|
+
"sa:data-[disabled]:cursor-not-allowed sa:data-[disabled]:hover:border-border-strong"
|
|
133
142
|
),
|
|
134
143
|
children: tooltip && /* @__PURE__ */ jsx(
|
|
135
144
|
TooltipBubble,
|
|
@@ -138,8 +147,8 @@ function Slider({
|
|
|
138
147
|
label: formatValue(v),
|
|
139
148
|
"data-visible": (dragging || keying) && focused === i ? "" : void 0,
|
|
140
149
|
className: cn(
|
|
141
|
-
"pointer-events-none absolute tabular-nums opacity-0 transition-[opacity,translate] duration-(--duration-fast) ease-(--ease-out) data-[visible]:opacity-100",
|
|
142
|
-
vertical ? "top-1/2 left-full ml-2
|
|
150
|
+
"sa:pointer-events-none sa:absolute sa:tabular-nums sa:opacity-0 sa:transition-[opacity,translate] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out) sa:data-[visible]:opacity-100",
|
|
151
|
+
vertical ? "sa:top-1/2 sa:left-full sa:ml-2 sa:-translate-x-0.5 sa:-translate-y-1/2 sa:data-[visible]:translate-x-0" : "sa:bottom-full sa:left-1/2 sa:mb-2 sa:-translate-x-1/2 sa:translate-y-0.5 sa:data-[visible]:translate-y-0"
|
|
143
152
|
)
|
|
144
153
|
}
|
|
145
154
|
)
|
|
@@ -149,9 +158,9 @@ function Slider({
|
|
|
149
158
|
]
|
|
150
159
|
}
|
|
151
160
|
);
|
|
152
|
-
const head = (label || showValue && !inputs) && /* @__PURE__ */ jsxs("div", { className: cn("flex h-[18px] items-center justify-between gap-3 whitespace-nowrap", vertical && "min-w-full"), children: [
|
|
153
|
-
label ? /* @__PURE__ */ jsx("span", { id: labelId, className: "text-sm leading-[18px] font-medium text-text-default", children: label }) : /* @__PURE__ */ jsx("span", {}),
|
|
154
|
-
showValue && !inputs && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-sm leading-[18px] text-text-muted tabular-nums", children: readout })
|
|
161
|
+
const head = (label || showValue && !inputs) && /* @__PURE__ */ jsxs("div", { className: cn("sa:flex sa:h-[18px] sa:items-center sa:justify-between sa:gap-3 sa:whitespace-nowrap", vertical && "sa:min-w-full"), children: [
|
|
162
|
+
label ? /* @__PURE__ */ jsx("span", { id: labelId, className: "sa:text-sm sa:leading-[18px] sa:font-medium sa:text-text-default", children: label }) : /* @__PURE__ */ jsx("span", {}),
|
|
163
|
+
showValue && !inputs && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "sa:text-sm sa:leading-[18px] sa:text-text-muted sa:tabular-nums", children: readout })
|
|
155
164
|
] });
|
|
156
165
|
return /* @__PURE__ */ jsxs(
|
|
157
166
|
"div",
|
|
@@ -159,14 +168,14 @@ function Slider({
|
|
|
159
168
|
"data-slot": "slider-field",
|
|
160
169
|
"data-orientation": orientation,
|
|
161
170
|
"data-disabled": disabled || void 0,
|
|
162
|
-
className: cn("flex flex-col gap-2", vertical ? "w-max items-center" : "w-full", className),
|
|
171
|
+
className: cn("sa:flex sa:flex-col sa:gap-2", vertical ? "sa:w-max sa:items-center" : "sa:w-full", className),
|
|
163
172
|
children: [
|
|
164
173
|
head,
|
|
165
|
-
vertical ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col items-center gap-2", disabled && "opacity-50"), children: [
|
|
174
|
+
vertical ? /* @__PURE__ */ jsxs("div", { className: cn("sa:flex sa:flex-col sa:items-center sa:gap-2", disabled && "sa:opacity-50"), children: [
|
|
166
175
|
inputs && range && field(1),
|
|
167
176
|
slider,
|
|
168
177
|
inputs && field(0)
|
|
169
|
-
] }) : /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-3", disabled && "opacity-50"), children: [
|
|
178
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: cn("sa:flex sa:items-center sa:gap-3", disabled && "sa:opacity-50"), children: [
|
|
170
179
|
inputs && range && field(0),
|
|
171
180
|
slider,
|
|
172
181
|
inputs && field(range ? 1 : 0)
|
|
@@ -202,12 +211,10 @@ function SliderInput({
|
|
|
202
211
|
if (e.key === "Enter") commit();
|
|
203
212
|
if (e.key === "Escape") setDraft(null);
|
|
204
213
|
},
|
|
205
|
-
wrapperClassName: "w-16 shrink-0",
|
|
206
|
-
className: "[&_input]:text-center [&_input]:tabular-nums"
|
|
214
|
+
wrapperClassName: "sa:w-16 sa:shrink-0",
|
|
215
|
+
className: "sa:[&_input]:text-center sa:[&_input]:tabular-nums"
|
|
207
216
|
}
|
|
208
217
|
);
|
|
209
218
|
}
|
|
210
219
|
|
|
211
220
|
export { Slider };
|
|
212
|
-
//# sourceMappingURL=chunk-L6NCCSIP.js.map
|
|
213
|
-
//# sourceMappingURL=chunk-L6NCCSIP.js.map
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { cn } from './chunk-O46O6LFQ.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { Accordion as Accordion$1 } from 'radix-ui';
|
|
4
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
function Accordion({ className, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(Accordion$1.Root, { "data-slot": "accordion", className: cn("sa:flex sa:w-full sa:flex-col", className), ...props });
|
|
8
|
+
}
|
|
9
|
+
function AccordionItem({ title, icon, children, className, "data-force": force, ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsxs(Accordion$1.Item, { "data-slot": "accordion-item", className: cn("sa:border-b sa:border-border-subtle sa:py-1", className), ...props, children: [
|
|
11
|
+
/* @__PURE__ */ jsx(Accordion$1.Header, { className: "sa:flex", children: /* @__PURE__ */ jsxs(
|
|
12
|
+
Accordion$1.Trigger,
|
|
13
|
+
{
|
|
14
|
+
"data-force": force,
|
|
15
|
+
className: cn(
|
|
16
|
+
"sa:group sa:flex sa:h-10 sa:w-full sa:cursor-pointer sa:items-center sa:gap-3 sa:rounded-lg sa:px-2 sa:text-left sa:outline-none",
|
|
17
|
+
"sa:transition-[background-color,box-shadow] sa:duration-(--sa-duration-fast) sa:ease-(--sa-ease-out)",
|
|
18
|
+
"sa:hover:bg-bg-hover sa:data-[force=hover]:bg-bg-hover",
|
|
19
|
+
"sa:focus-visible:bg-bg-hover sa:focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
20
|
+
"sa:data-[force=focus]:bg-bg-hover sa:data-[force=focus]:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
21
|
+
"sa:disabled:cursor-not-allowed sa:disabled:opacity-50"
|
|
22
|
+
),
|
|
23
|
+
children: [
|
|
24
|
+
icon && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "sa:grid sa:size-4 sa:shrink-0 sa:place-items-center sa:text-text-muted sa:[&_svg]:size-4 sa:[&_svg]:[stroke-width:1.875]", children: icon }),
|
|
25
|
+
/* @__PURE__ */ jsx("span", { className: "sa:min-w-0 sa:flex-1 sa:text-base sa:leading-[21px] sa:font-medium sa:text-text-default", children: title }),
|
|
26
|
+
/* @__PURE__ */ jsx(
|
|
27
|
+
"svg",
|
|
28
|
+
{
|
|
29
|
+
width: "16",
|
|
30
|
+
height: "16",
|
|
31
|
+
viewBox: "0 0 16 16",
|
|
32
|
+
fill: "none",
|
|
33
|
+
"aria-hidden": true,
|
|
34
|
+
className: "sa:shrink-0 sa:text-text-muted sa:transition-transform sa:duration-(--sa-duration-base) sa:ease-(--sa-ease-out) sa:group-data-[state=open]:rotate-180",
|
|
35
|
+
children: /* @__PURE__ */ jsx("path", { d: "M4 6L8 10L12 6", stroke: "currentColor", strokeWidth: "1.25", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
36
|
+
}
|
|
37
|
+
)
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
) }),
|
|
41
|
+
/* @__PURE__ */ jsx(Accordion$1.Content, { "data-slot": "accordion-content", className: "satin-accordion-content", children: /* @__PURE__ */ jsx(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: cn(
|
|
45
|
+
"sa:pt-1 sa:pr-2 sa:pb-3 sa:text-base sa:leading-[21px] sa:text-text-muted",
|
|
46
|
+
// Lined up with the title: past the icon and its gap when there is one.
|
|
47
|
+
icon ? "sa:pl-9" : "sa:pl-2"
|
|
48
|
+
),
|
|
49
|
+
children
|
|
50
|
+
}
|
|
51
|
+
) })
|
|
52
|
+
] });
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { Accordion, AccordionItem };
|