@uisatin/ui 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +67 -2
- package/chunk-2HKBZFIK.js +339 -0
- package/chunk-2HKBZFIK.js.map +1 -0
- package/chunk-3DINAQLL.js +153 -0
- package/chunk-3DINAQLL.js.map +1 -0
- package/chunk-3ERGAHKA.js +179 -0
- package/chunk-3ERGAHKA.js.map +1 -0
- package/chunk-6C7CGJX2.js +86 -0
- package/chunk-6C7CGJX2.js.map +1 -0
- package/chunk-6QMSWITQ.js +140 -0
- package/chunk-6QMSWITQ.js.map +1 -0
- package/chunk-6YXUBP27.js +474 -0
- package/chunk-6YXUBP27.js.map +1 -0
- package/chunk-72OCFAPT.js +175 -0
- package/chunk-72OCFAPT.js.map +1 -0
- package/chunk-7TXHCRAG.js +51 -0
- package/chunk-7TXHCRAG.js.map +1 -0
- package/chunk-A5XEM3GF.js +260 -0
- package/chunk-A5XEM3GF.js.map +1 -0
- package/chunk-AN2RNJLR.js +79 -0
- package/chunk-AN2RNJLR.js.map +1 -0
- package/chunk-B2K45IUR.js +36 -0
- package/chunk-B2K45IUR.js.map +1 -0
- package/chunk-B6V4VSGH.js +82 -0
- package/chunk-B6V4VSGH.js.map +1 -0
- package/chunk-BKZBWPUH.js +59 -0
- package/chunk-BKZBWPUH.js.map +1 -0
- package/chunk-BNTPPZCK.js +220 -0
- package/chunk-BNTPPZCK.js.map +1 -0
- package/chunk-BNZVTLHV.js +98 -0
- package/chunk-BNZVTLHV.js.map +1 -0
- package/chunk-CL2II6BX.js +89 -0
- package/chunk-CL2II6BX.js.map +1 -0
- package/chunk-D7RZNTFC.js +95 -0
- package/chunk-D7RZNTFC.js.map +1 -0
- package/chunk-DETGJAIC.js +147 -0
- package/chunk-DETGJAIC.js.map +1 -0
- package/chunk-DO3TBNSC.js +130 -0
- package/chunk-DO3TBNSC.js.map +1 -0
- package/chunk-ESC5JCVQ.js +90 -0
- package/chunk-ESC5JCVQ.js.map +1 -0
- package/chunk-FDKIX4DC.js +55 -0
- package/chunk-FDKIX4DC.js.map +1 -0
- package/chunk-GICKPMJU.js +239 -0
- package/chunk-GICKPMJU.js.map +1 -0
- package/chunk-GQA24FYG.js +57 -0
- package/chunk-GQA24FYG.js.map +1 -0
- package/chunk-H4NU7NPO.js +264 -0
- package/chunk-H4NU7NPO.js.map +1 -0
- package/chunk-H63FYCMY.js +11 -0
- package/chunk-H63FYCMY.js.map +1 -0
- package/chunk-HL42K2NH.js +76 -0
- package/chunk-HL42K2NH.js.map +1 -0
- package/chunk-HNQUX43Z.js +109 -0
- package/chunk-HNQUX43Z.js.map +1 -0
- package/chunk-HRKPV66B.js +32 -0
- package/chunk-HRKPV66B.js.map +1 -0
- package/chunk-J3NSDRVH.js +83 -0
- package/chunk-J3NSDRVH.js.map +1 -0
- package/chunk-JPNWHWAQ.js +151 -0
- package/chunk-JPNWHWAQ.js.map +1 -0
- package/chunk-KNUWZNFV.js +240 -0
- package/chunk-KNUWZNFV.js.map +1 -0
- package/chunk-L6NCCSIP.js +213 -0
- package/chunk-L6NCCSIP.js.map +1 -0
- package/chunk-LLHTVIM3.js +50 -0
- package/chunk-LLHTVIM3.js.map +1 -0
- package/chunk-LW3TRU5W.js +131 -0
- package/chunk-LW3TRU5W.js.map +1 -0
- package/chunk-LZMKSFCF.js +79 -0
- package/chunk-LZMKSFCF.js.map +1 -0
- package/chunk-MR3JDI7E.js +122 -0
- package/chunk-MR3JDI7E.js.map +1 -0
- package/chunk-NN6PKJWS.js +44 -0
- package/chunk-NN6PKJWS.js.map +1 -0
- package/chunk-NSRTTYQ4.js +252 -0
- package/chunk-NSRTTYQ4.js.map +1 -0
- package/chunk-O7F3CIDV.js +45 -0
- package/chunk-O7F3CIDV.js.map +1 -0
- package/chunk-P4O6TGDR.js +166 -0
- package/chunk-P4O6TGDR.js.map +1 -0
- package/chunk-PF3YBUKT.js +81 -0
- package/chunk-PF3YBUKT.js.map +1 -0
- package/chunk-PVOLDO4G.js +47 -0
- package/chunk-PVOLDO4G.js.map +1 -0
- package/chunk-QS4N4MNP.js +215 -0
- package/chunk-QS4N4MNP.js.map +1 -0
- package/chunk-QUF2IPOZ.js +98 -0
- package/chunk-QUF2IPOZ.js.map +1 -0
- package/chunk-RTJ76X5U.js +126 -0
- package/chunk-RTJ76X5U.js.map +1 -0
- package/chunk-SH6NG6VN.js +40 -0
- package/chunk-SH6NG6VN.js.map +1 -0
- package/chunk-SHDFUXYV.js +195 -0
- package/chunk-SHDFUXYV.js.map +1 -0
- package/chunk-TKO44NDI.js +84 -0
- package/chunk-TKO44NDI.js.map +1 -0
- package/chunk-TVLGZGYN.js +59 -0
- package/chunk-TVLGZGYN.js.map +1 -0
- package/chunk-TX3H3QMA.js +520 -0
- package/chunk-TX3H3QMA.js.map +1 -0
- package/chunk-UBNHSZSE.js +88 -0
- package/chunk-UBNHSZSE.js.map +1 -0
- package/chunk-UC3ZJWOD.js +73 -0
- package/chunk-UC3ZJWOD.js.map +1 -0
- package/chunk-UGRSWP6U.js +69 -0
- package/chunk-UGRSWP6U.js.map +1 -0
- package/chunk-VAGIAREV.js +214 -0
- package/chunk-VAGIAREV.js.map +1 -0
- package/chunk-WTMZT3IT.js +105 -0
- package/chunk-WTMZT3IT.js.map +1 -0
- package/chunk-WX6BP5ZP.js +39 -0
- package/chunk-WX6BP5ZP.js.map +1 -0
- package/chunk-X3PQANZO.js +255 -0
- package/chunk-X3PQANZO.js.map +1 -0
- package/chunk-XILQ7GXE.js +66 -0
- package/chunk-XILQ7GXE.js.map +1 -0
- package/chunk-XL75JRUA.js +130 -0
- package/chunk-XL75JRUA.js.map +1 -0
- package/chunk-XZNHT6MO.js +348 -0
- package/chunk-XZNHT6MO.js.map +1 -0
- package/chunk-Y5AYU7PK.js +44 -0
- package/chunk-Y5AYU7PK.js.map +1 -0
- package/chunk-YG7JOOLJ.js +28 -0
- package/chunk-YG7JOOLJ.js.map +1 -0
- package/chunk-YPJYW624.js +195 -0
- package/chunk-YPJYW624.js.map +1 -0
- package/chunk-YPNKBE5X.js +104 -0
- package/chunk-YPNKBE5X.js.map +1 -0
- package/chunk-YX5VNRJX.js +24 -0
- package/chunk-YX5VNRJX.js.map +1 -0
- package/components/accordion.d.ts +27 -0
- package/components/accordion.js +4 -0
- package/components/accordion.js.map +1 -0
- package/components/agent-loading.d.ts +65 -0
- package/components/agent-loading.js +4 -0
- package/components/agent-loading.js.map +1 -0
- package/components/agent-picker.d.ts +82 -0
- package/components/agent-picker.js +5 -0
- package/components/agent-picker.js.map +1 -0
- package/components/agent-suggestion.d.ts +69 -0
- package/components/agent-suggestion.js +6 -0
- package/components/agent-suggestion.js.map +1 -0
- package/components/announcement-bar.d.ts +39 -0
- package/components/announcement-bar.js +7 -0
- package/components/announcement-bar.js.map +1 -0
- package/components/attachment.d.ts +73 -0
- package/components/attachment.js +5 -0
- package/components/attachment.js.map +1 -0
- package/components/avatar.d.ts +34 -0
- package/components/avatar.js +6 -0
- package/components/avatar.js.map +1 -0
- package/components/badge.d.ts +19 -0
- package/components/badge.js +4 -0
- package/components/badge.js.map +1 -0
- package/components/banner-mesh.d.ts +11 -0
- package/components/banner-mesh.js +3 -0
- package/components/banner-mesh.js.map +1 -0
- package/components/banner.d.ts +50 -0
- package/components/banner.js +6 -0
- package/components/banner.js.map +1 -0
- package/components/bar-chart.d.ts +32 -0
- package/components/bar-chart.js +11 -0
- package/components/bar-chart.js.map +1 -0
- package/components/breadcrumb.d.ts +32 -0
- package/components/breadcrumb.js +6 -0
- package/components/breadcrumb.js.map +1 -0
- package/components/button.d.ts +32 -0
- package/components/button.js +4 -0
- package/components/button.js.map +1 -0
- package/components/card.d.ts +28 -0
- package/components/card.js +5 -0
- package/components/card.js.map +1 -0
- package/components/channel-chart.d.ts +14 -0
- package/components/channel-chart.js +11 -0
- package/components/channel-chart.js.map +1 -0
- package/components/chart.d.ts +88 -0
- package/components/chart.js +10 -0
- package/components/chart.js.map +1 -0
- package/components/checkbox.d.ts +17 -0
- package/components/checkbox.js +4 -0
- package/components/checkbox.js.map +1 -0
- package/components/chip.d.ts +54 -0
- package/components/chip.js +4 -0
- package/components/chip.js.map +1 -0
- package/components/citations.d.ts +37 -0
- package/components/citations.js +5 -0
- package/components/citations.js.map +1 -0
- package/components/code-block.d.ts +13 -0
- package/components/code-block.js +5 -0
- package/components/code-block.js.map +1 -0
- package/components/combobox.d.ts +58 -0
- package/components/combobox.js +10 -0
- package/components/combobox.js.map +1 -0
- package/components/command-menu.d.ts +54 -0
- package/components/command-menu.js +6 -0
- package/components/command-menu.js.map +1 -0
- package/components/context-menu.d.ts +46 -0
- package/components/context-menu.js +6 -0
- package/components/context-menu.js.map +1 -0
- package/components/cookie-consent.d.ts +26 -0
- package/components/cookie-consent.js +5 -0
- package/components/cookie-consent.js.map +1 -0
- package/components/date-picker.d.ts +112 -0
- package/components/date-picker.js +9 -0
- package/components/date-picker.js.map +1 -0
- package/components/decision-card.d.ts +65 -0
- package/components/decision-card.js +7 -0
- package/components/decision-card.js.map +1 -0
- package/components/dialog.d.ts +68 -0
- package/components/dialog.js +5 -0
- package/components/dialog.js.map +1 -0
- package/components/donut-chart.d.ts +20 -0
- package/components/donut-chart.js +11 -0
- package/components/donut-chart.js.map +1 -0
- package/components/dot.d.ts +21 -0
- package/components/dot.js +4 -0
- package/components/dot.js.map +1 -0
- package/components/dropdown.d.ts +74 -0
- package/components/dropdown.js +5 -0
- package/components/dropdown.js.map +1 -0
- package/components/empty-state.d.ts +25 -0
- package/components/empty-state.js +4 -0
- package/components/empty-state.js.map +1 -0
- package/components/file-upload.d.ts +78 -0
- package/components/file-upload.js +7 -0
- package/components/file-upload.js.map +1 -0
- package/components/floating.d.ts +30 -0
- package/components/floating.js +3 -0
- package/components/floating.js.map +1 -0
- package/components/form-field.d.ts +35 -0
- package/components/form-field.js +4 -0
- package/components/form-field.js.map +1 -0
- package/components/hover-card.d.ts +30 -0
- package/components/hover-card.js +4 -0
- package/components/hover-card.js.map +1 -0
- package/components/input-otp.d.ts +49 -0
- package/components/input-otp.js +8 -0
- package/components/input-otp.js.map +1 -0
- package/components/input.d.ts +28 -0
- package/components/input.js +5 -0
- package/components/input.js.map +1 -0
- package/components/kbd.d.ts +37 -0
- package/components/kbd.js +4 -0
- package/components/kbd.js.map +1 -0
- package/components/line-chart.d.ts +29 -0
- package/components/line-chart.js +12 -0
- package/components/line-chart.js.map +1 -0
- package/components/message-actions.d.ts +24 -0
- package/components/message-actions.js +5 -0
- package/components/message-actions.js.map +1 -0
- package/components/message.d.ts +40 -0
- package/components/message.js +8 -0
- package/components/message.js.map +1 -0
- package/components/number-input.d.ts +33 -0
- package/components/number-input.js +8 -0
- package/components/number-input.js.map +1 -0
- package/components/pagination.d.ts +45 -0
- package/components/pagination.js +6 -0
- package/components/pagination.js.map +1 -0
- package/components/popover.d.ts +44 -0
- package/components/popover.js +4 -0
- package/components/popover.js.map +1 -0
- package/components/progress.d.ts +24 -0
- package/components/progress.js +4 -0
- package/components/progress.js.map +1 -0
- package/components/prompt-bar.d.ts +63 -0
- package/components/prompt-bar.js +6 -0
- package/components/prompt-bar.js.map +1 -0
- package/components/radio.d.ts +27 -0
- package/components/radio.js +4 -0
- package/components/radio.js.map +1 -0
- package/components/search-bar.d.ts +20 -0
- package/components/search-bar.js +5 -0
- package/components/search-bar.js.map +1 -0
- package/components/segmented-control.d.ts +32 -0
- package/components/segmented-control.js +5 -0
- package/components/segmented-control.js.map +1 -0
- package/components/select.d.ts +97 -0
- package/components/select.js +7 -0
- package/components/select.js.map +1 -0
- package/components/sheet.d.ts +37 -0
- package/components/sheet.js +6 -0
- package/components/sheet.js.map +1 -0
- package/components/sidebar.d.ts +52 -0
- package/components/sidebar.js +4 -0
- package/components/sidebar.js.map +1 -0
- package/components/skeleton.d.ts +18 -0
- package/components/skeleton.js +4 -0
- package/components/skeleton.js.map +1 -0
- package/components/slider.d.ts +57 -0
- package/components/slider.js +8 -0
- package/components/slider.js.map +1 -0
- package/components/sliding-indicator.d.ts +23 -0
- package/components/sliding-indicator.js +3 -0
- package/components/sliding-indicator.js.map +1 -0
- package/components/streaming-text.d.ts +33 -0
- package/components/streaming-text.js +4 -0
- package/components/streaming-text.js.map +1 -0
- package/components/switch.d.ts +15 -0
- package/components/switch.js +4 -0
- package/components/switch.js.map +1 -0
- package/components/table.d.ts +57 -0
- package/components/table.js +5 -0
- package/components/table.js.map +1 -0
- package/components/tabs.d.ts +45 -0
- package/components/tabs.js +5 -0
- package/components/tabs.js.map +1 -0
- package/components/textarea.d.ts +30 -0
- package/components/textarea.js +5 -0
- package/components/textarea.js.map +1 -0
- package/components/thinking.d.ts +64 -0
- package/components/thinking.js +5 -0
- package/components/thinking.js.map +1 -0
- package/components/toast.d.ts +71 -0
- package/components/toast.js +5 -0
- package/components/toast.js.map +1 -0
- package/components/toggle.d.ts +30 -0
- package/components/toggle.js +4 -0
- package/components/toggle.js.map +1 -0
- package/components/tooltip.d.ts +35 -0
- package/components/tooltip.js +5 -0
- package/components/tooltip.js.map +1 -0
- package/index.d.ts +64 -0
- package/index.js +231 -0
- package/index.js.map +1 -0
- package/lib/utils.d.ts +3 -0
- package/lib/utils.js +3 -0
- package/lib/utils.js.map +1 -0
- package/package.json +54 -4
- package/styles.css +2 -0
- package/theme/create-theme.d.ts +44 -0
- package/theme/index.d.ts +1 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { CloseIcon } from './chunk-JPNWHWAQ.js';
|
|
2
|
+
import { Button } from './chunk-HNQUX43Z.js';
|
|
3
|
+
import { cn } from './chunk-H63FYCMY.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
import { Dialog } from 'radix-ui';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function Sheet({
|
|
9
|
+
open,
|
|
10
|
+
defaultOpen,
|
|
11
|
+
onOpenChange,
|
|
12
|
+
trigger,
|
|
13
|
+
side = "right",
|
|
14
|
+
title,
|
|
15
|
+
description,
|
|
16
|
+
footer,
|
|
17
|
+
children,
|
|
18
|
+
modal = true,
|
|
19
|
+
container,
|
|
20
|
+
onOpenAutoFocus,
|
|
21
|
+
className
|
|
22
|
+
}) {
|
|
23
|
+
const position = container ? "absolute" : "fixed";
|
|
24
|
+
return /* @__PURE__ */ jsxs(Dialog.Root, { open, defaultOpen, onOpenChange, modal, children: [
|
|
25
|
+
trigger && /* @__PURE__ */ jsx(Dialog.Trigger, { asChild: true, children: trigger }),
|
|
26
|
+
/* @__PURE__ */ jsxs(Dialog.Portal, { container, children: [
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
Dialog.Overlay,
|
|
29
|
+
{
|
|
30
|
+
className: cn(
|
|
31
|
+
position,
|
|
32
|
+
"inset-0 z-50 bg-black-a40",
|
|
33
|
+
"data-[state=open]:animate-[satin-fade-in_var(--duration-slow)_var(--ease-out)]",
|
|
34
|
+
"data-[state=closed]:animate-[satin-fade-out_var(--duration-base)_var(--ease-out)]"
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
),
|
|
38
|
+
/* @__PURE__ */ jsxs(
|
|
39
|
+
Dialog.Content,
|
|
40
|
+
{
|
|
41
|
+
"data-slot": "sheet",
|
|
42
|
+
"data-side": side,
|
|
43
|
+
onOpenAutoFocus,
|
|
44
|
+
...description ? {} : { "aria-describedby": void 0 },
|
|
45
|
+
className: cn(
|
|
46
|
+
position,
|
|
47
|
+
"z-50 flex flex-col gap-4 bg-bg-card p-4 outline-none",
|
|
48
|
+
"[box-shadow:0_4px_6px_-4px_var(--effect-shadow-sm),0_10px_15px_-3px_var(--effect-shadow-sm)]",
|
|
49
|
+
// Flush with its edge: no radius and no border on the side that touches it.
|
|
50
|
+
side === "bottom" && "inset-x-0 bottom-0 max-h-[85%] rounded-t-2xl border-t border-border-subtle pt-6",
|
|
51
|
+
side === "right" && "inset-y-0 right-0 w-[400px] max-w-[calc(100%-32px)] rounded-l-2xl border-l border-border-subtle",
|
|
52
|
+
side === "left" && "inset-y-0 left-0 w-[400px] max-w-[calc(100%-32px)] rounded-r-2xl border-r border-border-subtle",
|
|
53
|
+
side === "bottom" && "data-[state=open]:animate-[satin-sheet-up_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-down_var(--duration-base)_var(--ease-out)]",
|
|
54
|
+
side === "right" && "data-[state=open]:animate-[satin-sheet-left_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-right_var(--duration-base)_var(--ease-out)]",
|
|
55
|
+
side === "left" && "data-[state=open]:animate-[satin-sheet-from-left_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-to-left_var(--duration-base)_var(--ease-out)]",
|
|
56
|
+
className
|
|
57
|
+
),
|
|
58
|
+
children: [
|
|
59
|
+
side === "bottom" && /* @__PURE__ */ jsx(
|
|
60
|
+
Dialog.Close,
|
|
61
|
+
{
|
|
62
|
+
"aria-label": "Close",
|
|
63
|
+
className: "absolute inset-x-4 top-0 flex h-6 cursor-pointer items-center justify-center rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-action-focus-ring",
|
|
64
|
+
children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "h-1 w-9 rounded-full bg-border-strong" })
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-0.5", side !== "bottom" && "pr-8"), children: [
|
|
68
|
+
/* @__PURE__ */ jsx(Dialog.Title, { className: "text-base leading-[21px] font-medium text-text-default", children: title }),
|
|
69
|
+
description ? /* @__PURE__ */ jsx(Dialog.Description, { className: "text-sm text-text-muted", children: description }) : null
|
|
70
|
+
] }),
|
|
71
|
+
children != null && /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-y-auto", children }),
|
|
72
|
+
footer && /* @__PURE__ */ jsx("div", { className: cn("flex shrink-0 items-center justify-end gap-2", side === "bottom" && "*:flex-1"), children: footer }),
|
|
73
|
+
side !== "bottom" && /* @__PURE__ */ jsx(Dialog.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", size: "xl", iconOnly: true, "aria-label": "Close", className: "absolute top-[7px] right-[7px] rounded-lg", children: /* @__PURE__ */ jsx(CloseIcon, {}) }) })
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] })
|
|
78
|
+
] });
|
|
79
|
+
}
|
|
80
|
+
var SheetClose = Dialog.Close;
|
|
81
|
+
|
|
82
|
+
export { Sheet, SheetClose };
|
|
83
|
+
//# sourceMappingURL=chunk-TKO44NDI.js.map
|
|
84
|
+
//# sourceMappingURL=chunk-TKO44NDI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/sheet.tsx"],"names":["DialogPrimitive"],"mappings":"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","file":"chunk-TKO44NDI.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { Dialog as DialogPrimitive } from 'radix-ui'\nimport { cn } from '../lib/utils'\nimport { Button } from './button'\nimport { CloseIcon } from './dialog'\n\n/**\n * Sheet, 1:1 with the uiKit `Sheet` set (4025:3504): a panel that slides in from an edge and sits\n * flush with it, square and borderless on that side. bottom for phones (full width, radius-2xl\n * on the top corners, a 24px handle band with a 36 × 4 border/strong grip); right or left for\n * wider screens (400px, full height, radius-2xl on the inner corners, the Dialog's 36px close\n * button 7px from the top-right corner). Both are bg/card with a\n * border/subtle edge on the open side and the shadcn `lg` shadow, 16px in and 16px between a\n * header (14px medium title over a 13px muted description, 2px apart), the content and a\n * right-aligned footer of buttons 8px apart (on the bottom sheet they share the width).\n *\n * Built on the Radix Dialog: focus moves in on open and back to the trigger on close; Escape,\n * the backdrop or the handle closes it. It slides in over 250 ms on ease-out and out over 200.\n */\nexport interface SheetProps {\n open?: boolean\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Optional element that opens the sheet (rendered with `asChild`, so pass a Button). */\n trigger?: React.ReactNode\n side?: 'bottom' | 'right' | 'left'\n title: React.ReactNode\n description?: React.ReactNode\n /** The buttons at the bottom. Wrap one in `SheetClose` to make it close the sheet. */\n footer?: React.ReactNode\n children?: React.ReactNode\n /** Modal blocks the page and shows the overlay; turn it off for inline previews. */\n modal?: boolean\n /** Portal target. Defaults to `document.body`. */\n container?: HTMLElement | null\n onOpenAutoFocus?: (event: Event) => void\n className?: string\n}\n\nexport function Sheet({\n open,\n defaultOpen,\n onOpenChange,\n trigger,\n side = 'right',\n title,\n description,\n footer,\n children,\n modal = true,\n container,\n onOpenAutoFocus,\n className,\n}: SheetProps) {\n const position = container ? 'absolute' : 'fixed'\n return (\n <DialogPrimitive.Root open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange} modal={modal}>\n {trigger && <DialogPrimitive.Trigger asChild>{trigger}</DialogPrimitive.Trigger>}\n <DialogPrimitive.Portal container={container}>\n <DialogPrimitive.Overlay\n className={cn(\n position,\n 'inset-0 z-50 bg-black-a40',\n 'data-[state=open]:animate-[satin-fade-in_var(--duration-slow)_var(--ease-out)]',\n 'data-[state=closed]:animate-[satin-fade-out_var(--duration-base)_var(--ease-out)]',\n )}\n />\n <DialogPrimitive.Content\n data-slot=\"sheet\"\n data-side={side}\n onOpenAutoFocus={onOpenAutoFocus}\n {...(description ? {} : { 'aria-describedby': undefined })}\n className={cn(\n position,\n 'z-50 flex flex-col gap-4 bg-bg-card p-4 outline-none',\n '[box-shadow:0_4px_6px_-4px_var(--effect-shadow-sm),0_10px_15px_-3px_var(--effect-shadow-sm)]',\n // Flush with its edge: no radius and no border on the side that touches it.\n side === 'bottom' && 'inset-x-0 bottom-0 max-h-[85%] rounded-t-2xl border-t border-border-subtle pt-6',\n side === 'right' && 'inset-y-0 right-0 w-[400px] max-w-[calc(100%-32px)] rounded-l-2xl border-l border-border-subtle',\n side === 'left' && 'inset-y-0 left-0 w-[400px] max-w-[calc(100%-32px)] rounded-r-2xl border-r border-border-subtle',\n side === 'bottom' &&\n 'data-[state=open]:animate-[satin-sheet-up_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-down_var(--duration-base)_var(--ease-out)]',\n side === 'right' &&\n 'data-[state=open]:animate-[satin-sheet-left_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-right_var(--duration-base)_var(--ease-out)]',\n side === 'left' &&\n 'data-[state=open]:animate-[satin-sheet-from-left_var(--duration-slow)_var(--ease-out)] data-[state=closed]:animate-[satin-sheet-to-left_var(--duration-base)_var(--ease-out)]',\n className,\n )}\n >\n {side === 'bottom' && (\n <DialogPrimitive.Close\n aria-label=\"Close\"\n className=\"absolute inset-x-4 top-0 flex h-6 cursor-pointer items-center justify-center rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-action-focus-ring\"\n >\n <span aria-hidden className=\"h-1 w-9 rounded-full bg-border-strong\" />\n </DialogPrimitive.Close>\n )}\n\n <div className={cn('flex flex-col gap-0.5', side !== 'bottom' && 'pr-8')}>\n <DialogPrimitive.Title className=\"text-base leading-[21px] font-medium text-text-default\">{title}</DialogPrimitive.Title>\n {description ? (\n <DialogPrimitive.Description className=\"text-sm text-text-muted\">{description}</DialogPrimitive.Description>\n ) : null}\n </div>\n\n {children != null && <div className=\"flex min-h-0 flex-1 flex-col overflow-y-auto\">{children}</div>}\n\n {footer && (\n <div className={cn('flex shrink-0 items-center justify-end gap-2', side === 'bottom' && '*:flex-1')}>{footer}</div>\n )}\n\n {side !== 'bottom' && (\n <DialogPrimitive.Close asChild>\n <Button variant=\"tertiary\" size=\"xl\" iconOnly aria-label=\"Close\" className=\"absolute top-[7px] right-[7px] rounded-lg\">\n <CloseIcon />\n </Button>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\n/** Wrap a footer button in this to make it close the sheet: `<SheetClose asChild><Button…/></SheetClose>`. */\nexport const SheetClose = DialogPrimitive.Close\n"]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Tooltip } from './chunk-B6V4VSGH.js';
|
|
2
|
+
import { cn } from './chunk-H63FYCMY.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
|
|
7
|
+
var avatarVariants = cva(
|
|
8
|
+
"inline-flex shrink-0 items-center justify-center overflow-clip bg-tone-bg text-center whitespace-nowrap text-tone-fg select-none",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
size: {
|
|
12
|
+
16: "size-4 text-[7px] leading-[8px] font-semibold tracking-normal",
|
|
13
|
+
20: "size-5 text-[9px] leading-[10px] font-semibold tracking-normal",
|
|
14
|
+
24: "size-6 text-2xs font-semibold",
|
|
15
|
+
32: "size-8 text-sm leading-4 font-medium tracking-normal",
|
|
16
|
+
40: "size-10 text-base leading-[14px] font-medium tracking-normal",
|
|
17
|
+
48: "size-12 text-lg font-medium"
|
|
18
|
+
},
|
|
19
|
+
shape: {
|
|
20
|
+
circle: "rounded-full",
|
|
21
|
+
rounded: ""
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
compoundVariants: [
|
|
25
|
+
{ shape: "rounded", size: 16, className: "rounded-xs" },
|
|
26
|
+
{ shape: "rounded", size: 20, className: "rounded-xs" },
|
|
27
|
+
{ shape: "rounded", size: 24, className: "rounded-sm" },
|
|
28
|
+
{ shape: "rounded", size: 32, className: "rounded-md" },
|
|
29
|
+
{ shape: "rounded", size: 40, className: "rounded-lg" },
|
|
30
|
+
{ shape: "rounded", size: 48, className: "rounded-xl" }
|
|
31
|
+
],
|
|
32
|
+
defaultVariants: { size: 32, shape: "circle" }
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
var AVATAR_TOOLTIP_DELAY = 400;
|
|
36
|
+
var AVATAR_TOOLTIP_CLOSE = 150;
|
|
37
|
+
function Avatar({ className, initials, tone = "neutral", size = 32, shape, name, ...props }) {
|
|
38
|
+
const avatar = /* @__PURE__ */ jsx(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
"data-slot": "avatar",
|
|
42
|
+
"data-tone": tone,
|
|
43
|
+
...name ? { role: "img", "aria-label": name, tabIndex: 0 } : {},
|
|
44
|
+
className: cn(
|
|
45
|
+
avatarVariants({ size, shape }),
|
|
46
|
+
name && "outline-none focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]",
|
|
47
|
+
className
|
|
48
|
+
),
|
|
49
|
+
...props,
|
|
50
|
+
children: /* @__PURE__ */ jsx("span", { "aria-hidden": name ? true : void 0, children: initials })
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
if (!name) return avatar;
|
|
54
|
+
return /* @__PURE__ */ jsx(Tooltip, { label: name, delay: AVATAR_TOOLTIP_DELAY, closeDelay: AVATAR_TOOLTIP_CLOSE, children: avatar });
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export { AVATAR_TOOLTIP_DELAY, Avatar, avatarVariants };
|
|
58
|
+
//# sourceMappingURL=chunk-TVLGZGYN.js.map
|
|
59
|
+
//# sourceMappingURL=chunk-TVLGZGYN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/avatar.tsx"],"names":[],"mappings":";;;;;;AAwBA,IAAM,cAAA,GAAiB,GAAA;AAAA,EACrB,kIAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,+DAAA;AAAA,QACJ,EAAA,EAAI,gEAAA;AAAA,QACJ,EAAA,EAAI,+BAAA;AAAA,QACJ,EAAA,EAAI,sDAAA;AAAA,QACJ,EAAA,EAAI,8DAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO;AAAA,QACL,MAAA,EAAQ,cAAA;AAAA,QACR,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA,EAAa;AAAA,MACtD,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA,EAAa;AAAA,MACtD,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA,EAAa;AAAA,MACtD,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA,EAAa;AAAA,MACtD,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA,EAAa;AAAA,MACtD,EAAE,KAAA,EAAO,SAAA,EAAW,IAAA,EAAM,EAAA,EAAI,WAAW,YAAA;AAAa,KACxD;AAAA,IACA,eAAA,EAAiB,EAAE,IAAA,EAAM,EAAA,EAAI,OAAO,QAAA;AAAS;AAEjD;AAcO,IAAM,oBAAA,GAAuB;AACpC,IAAM,oBAAA,GAAuB,GAAA;AAEtB,SAAS,MAAA,CAAO,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,SAAA,EAAW,IAAA,GAAO,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,GAAG,KAAA,EAAM,EAAgB;AAC/G,EAAA,MAAM,MAAA,mBACJ,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,QAAA;AAAA,MACV,WAAA,EAAW,IAAA;AAAA,MACV,GAAI,IAAA,GAAO,EAAE,IAAA,EAAM,KAAA,EAAO,cAAc,IAAA,EAAM,QAAA,EAAU,CAAA,EAAE,GAAI,EAAC;AAAA,MAChE,SAAA,EAAW,EAAA;AAAA,QACT,cAAA,CAAe,EAAE,IAAA,EAAM,KAAA,EAAO,CAAA;AAAA,QAC9B,IAAA,IAAQ,4EAAA;AAAA,QACR;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,8BAAC,MAAA,EAAA,EAAK,aAAA,EAAa,IAAA,GAAO,IAAA,GAAO,QAAY,QAAA,EAAA,QAAA,EAAS;AAAA;AAAA,GACxD;AAEF,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,uBACE,GAAA,CAAC,WAAQ,KAAA,EAAO,IAAA,EAAM,OAAO,oBAAA,EAAsB,UAAA,EAAY,sBAC5D,QAAA,EAAA,MAAA,EACH,CAAA;AAEJ","file":"chunk-TVLGZGYN.js","sourcesContent":["'use client'\n\nimport * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../lib/utils'\nimport { Tooltip } from './tooltip'\n\nexport type AvatarTone = 'neutral' | 'brand' | 'sky' | 'green' | 'amber' | 'red' | 'fuchsia' | 'plum'\nexport type AvatarSize = 16 | 20 | 24 | 32 | 40 | 48\n\n/**\n * Avatar, 1:1 with the uiKit `Avatar` set (992:20199): initials on a tone fill, the same eight\n * hue pairs as Badge (`tone/bg` fill, `tone/fg` text, no border), six px sizes and a Circle or\n * Rounded shape. Rounded steps the radius with the size: 4 / 4 / 6 / 8 / 10 / 12.\n *\n * Type per size, from Figma: 16 → SemiBold 7/8, 20 → SemiBold 9/10 (no kit token for either),\n * 24 → text/2xs SemiBold, 32 → Label/sm 13/16, 40 → Label/lg 14/14, 48 → text/lg Medium.\n * Groups (docs example 3889:7365) overlap with -8px and stack the first on top.\n *\n * With `name` the avatar says who it is: it becomes an image named after the person, takes\n * keyboard focus, and shows the name in a Tooltip. On hover the tooltip waits 400 ms — the middle\n * of the 0.3–0.5 s NN/g recommends, so a pointer passing over a row of faces doesn't flash names —\n * and stays 150 ms after the pointer leaves. Keyboard focus shows it at once.\n */\nconst avatarVariants = cva(\n 'inline-flex shrink-0 items-center justify-center overflow-clip bg-tone-bg text-center whitespace-nowrap text-tone-fg select-none',\n {\n variants: {\n size: {\n 16: 'size-4 text-[7px] leading-[8px] font-semibold tracking-normal',\n 20: 'size-5 text-[9px] leading-[10px] font-semibold tracking-normal',\n 24: 'size-6 text-2xs font-semibold',\n 32: 'size-8 text-sm leading-4 font-medium tracking-normal',\n 40: 'size-10 text-base leading-[14px] font-medium tracking-normal',\n 48: 'size-12 text-lg font-medium',\n },\n shape: {\n circle: 'rounded-full',\n rounded: '',\n },\n },\n compoundVariants: [\n { shape: 'rounded', size: 16, className: 'rounded-xs' },\n { shape: 'rounded', size: 20, className: 'rounded-xs' },\n { shape: 'rounded', size: 24, className: 'rounded-sm' },\n { shape: 'rounded', size: 32, className: 'rounded-md' },\n { shape: 'rounded', size: 40, className: 'rounded-lg' },\n { shape: 'rounded', size: 48, className: 'rounded-xl' },\n ],\n defaultVariants: { size: 32, shape: 'circle' },\n },\n)\n\nexport interface AvatarProps\n extends Omit<React.ComponentProps<'span'>, 'children'>,\n Omit<VariantProps<typeof avatarVariants>, 'size'> {\n /** One or two letters, or a count like \"+3\" at the end of a group. */\n initials: string\n tone?: AvatarTone\n size?: AvatarSize\n /** The person's name: shown in a tooltip on hover and focus, and read by screen readers. */\n name?: string\n}\n\n/** NN/g: wait 0.3–0.5 s before showing hidden content on hover; we take the middle. */\nexport const AVATAR_TOOLTIP_DELAY = 400\nconst AVATAR_TOOLTIP_CLOSE = 150\n\nexport function Avatar({ className, initials, tone = 'neutral', size = 32, shape, name, ...props }: AvatarProps) {\n const avatar = (\n <span\n data-slot=\"avatar\"\n data-tone={tone}\n {...(name ? { role: 'img', 'aria-label': name, tabIndex: 0 } : {})}\n className={cn(\n avatarVariants({ size, shape }),\n name && 'outline-none focus-visible:[box-shadow:0_0_0_2px_var(--action-focus-ring)]',\n className,\n )}\n {...props}\n >\n <span aria-hidden={name ? true : undefined}>{initials}</span>\n </span>\n )\n if (!name) return avatar\n return (\n <Tooltip label={name} delay={AVATAR_TOOLTIP_DELAY} closeDelay={AVATAR_TOOLTIP_CLOSE}>\n {avatar}\n </Tooltip>\n )\n}\n\nexport { avatarVariants }\n"]}
|