@epicbagel/saas-kit 1.26.0 → 1.28.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/README.md +26 -0
- package/dist/chunk-DHXKCMKY.cjs +198 -0
- package/dist/chunk-MP64UGRF.js +72 -0
- package/dist/chunk-PPYHNJMV.cjs +72 -0
- package/dist/chunk-SG4ZE2EN.js +198 -0
- package/dist/{chunk-NXFZULS3.js → chunk-T5AFBLP2.js} +4 -2
- package/dist/{chunk-U7XNNLVP.cjs → chunk-WP7CKIPE.cjs} +4 -2
- package/dist/primitives/activity-feed.cjs +2 -2
- package/dist/primitives/activity-feed.js +1 -1
- package/dist/primitives/chat.cjs +111 -2
- package/dist/primitives/chat.d.cts +35 -1
- package/dist/primitives/chat.d.ts +35 -1
- package/dist/primitives/chat.js +110 -1
- package/dist/primitives/chip-tabs.cjs +2 -2
- package/dist/primitives/chip-tabs.d.cts +13 -2
- package/dist/primitives/chip-tabs.d.ts +13 -2
- package/dist/primitives/chip-tabs.js +1 -1
- package/dist/primitives/item.cjs +24 -194
- package/dist/primitives/item.js +13 -183
- package/dist/primitives/person-avatar.cjs +2 -2
- package/dist/primitives/person-avatar.d.cts +6 -1
- package/dist/primitives/person-avatar.d.ts +6 -1
- package/dist/primitives/person-avatar.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-KGFL3VWY.cjs +0 -62
- package/dist/chunk-QD63LB2F.js +0 -62
package/README.md
CHANGED
|
@@ -567,6 +567,32 @@ turn. The thread draws the avatar and name above the first of each run of
|
|
|
567
567
|
turns by the same person on the same side, and again after a time marker, so
|
|
568
568
|
a conversation with several people in it says who said what.
|
|
569
569
|
|
|
570
|
+
### Next steps in the empty state (1.27.0)
|
|
571
|
+
|
|
572
|
+
`Chat` takes `emptyActions`, an array of `ChatEmptyAction`: what a returning
|
|
573
|
+
user can pick up, shown under the empty-state composer and before any
|
|
574
|
+
`examplePrompts`.
|
|
575
|
+
|
|
576
|
+
```tsx
|
|
577
|
+
<Chat
|
|
578
|
+
messages={[]}
|
|
579
|
+
onSend={send}
|
|
580
|
+
emptyActions={[
|
|
581
|
+
{ id: "review", icon: Users, label: "Review 3 new people", detail: "Head of Sales · Northwind", onSelect: openReview },
|
|
582
|
+
{ id: "answer", icon: MessageCircleQuestion, label: "London", detail: "Where is the role based? · VP Finance", onSelect: answer },
|
|
583
|
+
]}
|
|
584
|
+
/>
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
- **A row** is a button: the icon, the `label` and the muted `detail`, on one
|
|
588
|
+
line where there is room.
|
|
589
|
+
- **A pick** calls `onSelect` and sends nothing. Return a promise to show the
|
|
590
|
+
row's spinner and disable every row until it settles; a rejection
|
|
591
|
+
re-enables them and goes to `onSendError` (else `reportError`).
|
|
592
|
+
- **The heading** is `emptyActionsLabel`, default "Pick up where you left
|
|
593
|
+
off". `""` hides it and keeps the default as the list's accessible name.
|
|
594
|
+
- It hides while `pending` and once the conversation has started.
|
|
595
|
+
|
|
570
596
|
## Notes
|
|
571
597
|
|
|
572
598
|
`primitives/notes` provides a reusable `Notes` area and `NoteComposer` for any
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkNQK5ZWC7cjs = require('./chunk-NQK5ZWC7.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
8
|
+
|
|
9
|
+
// src/primitives/item.tsx
|
|
10
|
+
var _classvarianceauthority = require('class-variance-authority');
|
|
11
|
+
var _radixui = require('radix-ui');
|
|
12
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
13
|
+
function ItemGroup({ className, ...props }) {
|
|
14
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
role: "list",
|
|
18
|
+
"data-slot": "item-group",
|
|
19
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
20
|
+
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
21
|
+
className
|
|
22
|
+
),
|
|
23
|
+
...props
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
function ItemSeparator({
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}) {
|
|
31
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32
|
+
_chunkNQK5ZWC7cjs.Separator,
|
|
33
|
+
{
|
|
34
|
+
"data-slot": "item-separator",
|
|
35
|
+
orientation: "horizontal",
|
|
36
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0, "my-2", className),
|
|
37
|
+
...props
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
var itemVariants = _classvarianceauthority.cva.call(void 0,
|
|
42
|
+
"group/item flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
|
|
43
|
+
{
|
|
44
|
+
variants: {
|
|
45
|
+
variant: {
|
|
46
|
+
default: "border-transparent",
|
|
47
|
+
outline: "border-border",
|
|
48
|
+
muted: "border-transparent bg-muted/50"
|
|
49
|
+
},
|
|
50
|
+
size: {
|
|
51
|
+
default: "gap-3.5 px-4 py-3.5",
|
|
52
|
+
sm: "gap-2.5 px-3 py-2.5",
|
|
53
|
+
xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
defaultVariants: {
|
|
57
|
+
variant: "default",
|
|
58
|
+
size: "default"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
function Item({
|
|
63
|
+
className,
|
|
64
|
+
variant = "default",
|
|
65
|
+
size = "default",
|
|
66
|
+
asChild = false,
|
|
67
|
+
...props
|
|
68
|
+
}) {
|
|
69
|
+
const Comp = asChild ? _radixui.Slot.Root : "div";
|
|
70
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
71
|
+
Comp,
|
|
72
|
+
{
|
|
73
|
+
"data-slot": "item",
|
|
74
|
+
"data-variant": variant,
|
|
75
|
+
"data-size": size,
|
|
76
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0, itemVariants({ variant, size, className })),
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
var itemMediaVariants = _classvarianceauthority.cva.call(void 0,
|
|
82
|
+
"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none",
|
|
83
|
+
{
|
|
84
|
+
variants: {
|
|
85
|
+
variant: {
|
|
86
|
+
default: "bg-transparent",
|
|
87
|
+
icon: "[&_svg:not([class*='size-'])]:size-4",
|
|
88
|
+
image: "size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
defaultVariants: {
|
|
92
|
+
variant: "default"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
function ItemMedia({
|
|
97
|
+
className,
|
|
98
|
+
variant = "default",
|
|
99
|
+
...props
|
|
100
|
+
}) {
|
|
101
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
"data-slot": "item-media",
|
|
105
|
+
"data-variant": variant,
|
|
106
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0, itemMediaVariants({ variant, className })),
|
|
107
|
+
...props
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
function ItemContent({ className, ...props }) {
|
|
112
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
"data-slot": "item-content",
|
|
116
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
117
|
+
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
118
|
+
className
|
|
119
|
+
),
|
|
120
|
+
...props
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
function ItemTitle({ className, ...props }) {
|
|
125
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
126
|
+
"div",
|
|
127
|
+
{
|
|
128
|
+
"data-slot": "item-title",
|
|
129
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
130
|
+
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
131
|
+
className
|
|
132
|
+
),
|
|
133
|
+
...props
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
function ItemDescription({ className, ...props }) {
|
|
138
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
139
|
+
"p",
|
|
140
|
+
{
|
|
141
|
+
"data-slot": "item-description",
|
|
142
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
143
|
+
"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
144
|
+
className
|
|
145
|
+
),
|
|
146
|
+
...props
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
function ItemActions({ className, ...props }) {
|
|
151
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
152
|
+
"div",
|
|
153
|
+
{
|
|
154
|
+
"data-slot": "item-actions",
|
|
155
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex items-center gap-2", className),
|
|
156
|
+
...props
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
function ItemHeader({ className, ...props }) {
|
|
161
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
162
|
+
"div",
|
|
163
|
+
{
|
|
164
|
+
"data-slot": "item-header",
|
|
165
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
166
|
+
"flex basis-full items-center justify-between gap-2",
|
|
167
|
+
className
|
|
168
|
+
),
|
|
169
|
+
...props
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
function ItemFooter({ className, ...props }) {
|
|
174
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
175
|
+
"div",
|
|
176
|
+
{
|
|
177
|
+
"data-slot": "item-footer",
|
|
178
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
179
|
+
"flex basis-full items-center justify-between gap-2",
|
|
180
|
+
className
|
|
181
|
+
),
|
|
182
|
+
...props
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
exports.ItemGroup = ItemGroup; exports.ItemSeparator = ItemSeparator; exports.Item = Item; exports.ItemMedia = ItemMedia; exports.ItemContent = ItemContent; exports.ItemTitle = ItemTitle; exports.ItemDescription = ItemDescription; exports.ItemActions = ItemActions; exports.ItemHeader = ItemHeader; exports.ItemFooter = ItemFooter;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
CountBadge
|
|
4
|
+
} from "./chunk-H7TETFLB.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-G6SRSWXB.js";
|
|
8
|
+
|
|
9
|
+
// src/primitives/chip-tabs.tsx
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
function ChipTabs({
|
|
12
|
+
items,
|
|
13
|
+
value,
|
|
14
|
+
onChange,
|
|
15
|
+
size = "sm",
|
|
16
|
+
variant = "soft",
|
|
17
|
+
trailing,
|
|
18
|
+
className,
|
|
19
|
+
marginBottom = "none",
|
|
20
|
+
placement = "inline",
|
|
21
|
+
disabled = false,
|
|
22
|
+
guidedValue,
|
|
23
|
+
label,
|
|
24
|
+
labelledBy
|
|
25
|
+
}) {
|
|
26
|
+
const padClass = size === "xs" ? "px-1.5 py-0.5" : size === "md" ? "px-3.5 py-2" : "px-2 py-1";
|
|
27
|
+
const textClass = size === "xs" ? "text-[11px]" : size === "md" ? "text-sm" : "text-xs";
|
|
28
|
+
const gapClass = size === "md" ? "gap-2" : "gap-1";
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center", gapClass, marginBottom === "lg" && "mb-6", placement === "panel" && "border-b px-3 py-2", className), children: [
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: cn("flex min-w-0 flex-wrap", gapClass),
|
|
34
|
+
...label || labelledBy ? { role: "group", "aria-label": labelledBy ? void 0 : label, "aria-labelledby": labelledBy } : {},
|
|
35
|
+
children: items.map((item) => {
|
|
36
|
+
const active = item.id === value;
|
|
37
|
+
return /* @__PURE__ */ jsxs(
|
|
38
|
+
"button",
|
|
39
|
+
{
|
|
40
|
+
type: "button",
|
|
41
|
+
"aria-pressed": active,
|
|
42
|
+
disabled,
|
|
43
|
+
onClick: () => onChange(item.id),
|
|
44
|
+
className: cn(
|
|
45
|
+
"rounded-md transition-colors inline-flex items-center gap-1 disabled:pointer-events-none disabled:opacity-60",
|
|
46
|
+
textClass,
|
|
47
|
+
padClass,
|
|
48
|
+
variant === "outline" && "border",
|
|
49
|
+
item.id === guidedValue && "ring-2 ring-destructive/60 ring-offset-2 ring-offset-background animate-pulse-once motion-reduce:animate-none",
|
|
50
|
+
active && variant === "soft" && "bg-accent text-accent-foreground font-medium",
|
|
51
|
+
!active && variant === "soft" && "text-muted-foreground hover:bg-accent/50",
|
|
52
|
+
active && variant === "outline" && "border-primary bg-primary/10 text-foreground font-medium",
|
|
53
|
+
!active && variant === "outline" && "border-muted-foreground/50 bg-background text-muted-foreground hover:border-foreground/60 hover:text-foreground"
|
|
54
|
+
),
|
|
55
|
+
children: [
|
|
56
|
+
item.icon != null && /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "contents", children: item.icon }),
|
|
57
|
+
item.label,
|
|
58
|
+
item.count != null && item.count > 0 && /* @__PURE__ */ jsx(CountBadge, { value: item.count, variant: "secondary" })
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
item.id
|
|
62
|
+
);
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
trailing && /* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center gap-1", children: trailing })
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
ChipTabs
|
|
72
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkVGTINL5Qcjs = require('./chunk-VGTINL5Q.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
8
|
+
|
|
9
|
+
// src/primitives/chip-tabs.tsx
|
|
10
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
11
|
+
function ChipTabs({
|
|
12
|
+
items,
|
|
13
|
+
value,
|
|
14
|
+
onChange,
|
|
15
|
+
size = "sm",
|
|
16
|
+
variant = "soft",
|
|
17
|
+
trailing,
|
|
18
|
+
className,
|
|
19
|
+
marginBottom = "none",
|
|
20
|
+
placement = "inline",
|
|
21
|
+
disabled = false,
|
|
22
|
+
guidedValue,
|
|
23
|
+
label,
|
|
24
|
+
labelledBy
|
|
25
|
+
}) {
|
|
26
|
+
const padClass = size === "xs" ? "px-1.5 py-0.5" : size === "md" ? "px-3.5 py-2" : "px-2 py-1";
|
|
27
|
+
const textClass = size === "xs" ? "text-[11px]" : size === "md" ? "text-sm" : "text-xs";
|
|
28
|
+
const gapClass = size === "md" ? "gap-2" : "gap-1";
|
|
29
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex items-center", gapClass, marginBottom === "lg" && "mb-6", placement === "panel" && "border-b px-3 py-2", className), children: [
|
|
30
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex min-w-0 flex-wrap", gapClass),
|
|
34
|
+
...label || labelledBy ? { role: "group", "aria-label": labelledBy ? void 0 : label, "aria-labelledby": labelledBy } : {},
|
|
35
|
+
children: items.map((item) => {
|
|
36
|
+
const active = item.id === value;
|
|
37
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
38
|
+
"button",
|
|
39
|
+
{
|
|
40
|
+
type: "button",
|
|
41
|
+
"aria-pressed": active,
|
|
42
|
+
disabled,
|
|
43
|
+
onClick: () => onChange(item.id),
|
|
44
|
+
className: _chunkKWLSBTB2cjs.cn.call(void 0,
|
|
45
|
+
"rounded-md transition-colors inline-flex items-center gap-1 disabled:pointer-events-none disabled:opacity-60",
|
|
46
|
+
textClass,
|
|
47
|
+
padClass,
|
|
48
|
+
variant === "outline" && "border",
|
|
49
|
+
item.id === guidedValue && "ring-2 ring-destructive/60 ring-offset-2 ring-offset-background animate-pulse-once motion-reduce:animate-none",
|
|
50
|
+
active && variant === "soft" && "bg-accent text-accent-foreground font-medium",
|
|
51
|
+
!active && variant === "soft" && "text-muted-foreground hover:bg-accent/50",
|
|
52
|
+
active && variant === "outline" && "border-primary bg-primary/10 text-foreground font-medium",
|
|
53
|
+
!active && variant === "outline" && "border-muted-foreground/50 bg-background text-muted-foreground hover:border-foreground/60 hover:text-foreground"
|
|
54
|
+
),
|
|
55
|
+
children: [
|
|
56
|
+
item.icon != null && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "contents", children: item.icon }),
|
|
57
|
+
item.label,
|
|
58
|
+
item.count != null && item.count > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVGTINL5Qcjs.CountBadge, { value: item.count, variant: "secondary" })
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
item.id
|
|
62
|
+
);
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
trailing && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "ml-auto flex items-center gap-1", children: trailing })
|
|
67
|
+
] });
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
exports.ChipTabs = ChipTabs;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Separator
|
|
4
|
+
} from "./chunk-HYTILYE5.js";
|
|
5
|
+
import {
|
|
6
|
+
cn
|
|
7
|
+
} from "./chunk-G6SRSWXB.js";
|
|
8
|
+
|
|
9
|
+
// src/primitives/item.tsx
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
|
+
import { Slot } from "radix-ui";
|
|
12
|
+
import { jsx } from "react/jsx-runtime";
|
|
13
|
+
function ItemGroup({ className, ...props }) {
|
|
14
|
+
return /* @__PURE__ */ jsx(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
role: "list",
|
|
18
|
+
"data-slot": "item-group",
|
|
19
|
+
className: cn(
|
|
20
|
+
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
21
|
+
className
|
|
22
|
+
),
|
|
23
|
+
...props
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
function ItemSeparator({
|
|
28
|
+
className,
|
|
29
|
+
...props
|
|
30
|
+
}) {
|
|
31
|
+
return /* @__PURE__ */ jsx(
|
|
32
|
+
Separator,
|
|
33
|
+
{
|
|
34
|
+
"data-slot": "item-separator",
|
|
35
|
+
orientation: "horizontal",
|
|
36
|
+
className: cn("my-2", className),
|
|
37
|
+
...props
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
var itemVariants = cva(
|
|
42
|
+
"group/item flex w-full flex-wrap items-center rounded-md border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted",
|
|
43
|
+
{
|
|
44
|
+
variants: {
|
|
45
|
+
variant: {
|
|
46
|
+
default: "border-transparent",
|
|
47
|
+
outline: "border-border",
|
|
48
|
+
muted: "border-transparent bg-muted/50"
|
|
49
|
+
},
|
|
50
|
+
size: {
|
|
51
|
+
default: "gap-3.5 px-4 py-3.5",
|
|
52
|
+
sm: "gap-2.5 px-3 py-2.5",
|
|
53
|
+
xs: "gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
defaultVariants: {
|
|
57
|
+
variant: "default",
|
|
58
|
+
size: "default"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
function Item({
|
|
63
|
+
className,
|
|
64
|
+
variant = "default",
|
|
65
|
+
size = "default",
|
|
66
|
+
asChild = false,
|
|
67
|
+
...props
|
|
68
|
+
}) {
|
|
69
|
+
const Comp = asChild ? Slot.Root : "div";
|
|
70
|
+
return /* @__PURE__ */ jsx(
|
|
71
|
+
Comp,
|
|
72
|
+
{
|
|
73
|
+
"data-slot": "item",
|
|
74
|
+
"data-variant": variant,
|
|
75
|
+
"data-size": size,
|
|
76
|
+
className: cn(itemVariants({ variant, size, className })),
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
var itemMediaVariants = cva(
|
|
82
|
+
"flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none",
|
|
83
|
+
{
|
|
84
|
+
variants: {
|
|
85
|
+
variant: {
|
|
86
|
+
default: "bg-transparent",
|
|
87
|
+
icon: "[&_svg:not([class*='size-'])]:size-4",
|
|
88
|
+
image: "size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
defaultVariants: {
|
|
92
|
+
variant: "default"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
function ItemMedia({
|
|
97
|
+
className,
|
|
98
|
+
variant = "default",
|
|
99
|
+
...props
|
|
100
|
+
}) {
|
|
101
|
+
return /* @__PURE__ */ jsx(
|
|
102
|
+
"div",
|
|
103
|
+
{
|
|
104
|
+
"data-slot": "item-media",
|
|
105
|
+
"data-variant": variant,
|
|
106
|
+
className: cn(itemMediaVariants({ variant, className })),
|
|
107
|
+
...props
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
function ItemContent({ className, ...props }) {
|
|
112
|
+
return /* @__PURE__ */ jsx(
|
|
113
|
+
"div",
|
|
114
|
+
{
|
|
115
|
+
"data-slot": "item-content",
|
|
116
|
+
className: cn(
|
|
117
|
+
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
118
|
+
className
|
|
119
|
+
),
|
|
120
|
+
...props
|
|
121
|
+
}
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
function ItemTitle({ className, ...props }) {
|
|
125
|
+
return /* @__PURE__ */ jsx(
|
|
126
|
+
"div",
|
|
127
|
+
{
|
|
128
|
+
"data-slot": "item-title",
|
|
129
|
+
className: cn(
|
|
130
|
+
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
131
|
+
className
|
|
132
|
+
),
|
|
133
|
+
...props
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
function ItemDescription({ className, ...props }) {
|
|
138
|
+
return /* @__PURE__ */ jsx(
|
|
139
|
+
"p",
|
|
140
|
+
{
|
|
141
|
+
"data-slot": "item-description",
|
|
142
|
+
className: cn(
|
|
143
|
+
"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
144
|
+
className
|
|
145
|
+
),
|
|
146
|
+
...props
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
function ItemActions({ className, ...props }) {
|
|
151
|
+
return /* @__PURE__ */ jsx(
|
|
152
|
+
"div",
|
|
153
|
+
{
|
|
154
|
+
"data-slot": "item-actions",
|
|
155
|
+
className: cn("flex items-center gap-2", className),
|
|
156
|
+
...props
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
function ItemHeader({ className, ...props }) {
|
|
161
|
+
return /* @__PURE__ */ jsx(
|
|
162
|
+
"div",
|
|
163
|
+
{
|
|
164
|
+
"data-slot": "item-header",
|
|
165
|
+
className: cn(
|
|
166
|
+
"flex basis-full items-center justify-between gap-2",
|
|
167
|
+
className
|
|
168
|
+
),
|
|
169
|
+
...props
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
function ItemFooter({ className, ...props }) {
|
|
174
|
+
return /* @__PURE__ */ jsx(
|
|
175
|
+
"div",
|
|
176
|
+
{
|
|
177
|
+
"data-slot": "item-footer",
|
|
178
|
+
className: cn(
|
|
179
|
+
"flex basis-full items-center justify-between gap-2",
|
|
180
|
+
className
|
|
181
|
+
),
|
|
182
|
+
...props
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export {
|
|
188
|
+
ItemGroup,
|
|
189
|
+
ItemSeparator,
|
|
190
|
+
Item,
|
|
191
|
+
ItemMedia,
|
|
192
|
+
ItemContent,
|
|
193
|
+
ItemTitle,
|
|
194
|
+
ItemDescription,
|
|
195
|
+
ItemActions,
|
|
196
|
+
ItemHeader,
|
|
197
|
+
ItemFooter
|
|
198
|
+
};
|
|
@@ -24,19 +24,21 @@ function PersonAvatar({
|
|
|
24
24
|
size,
|
|
25
25
|
className,
|
|
26
26
|
fallbackClassName,
|
|
27
|
-
fallbackSize = "default"
|
|
27
|
+
fallbackSize = "default",
|
|
28
|
+
decorative = false
|
|
28
29
|
}) {
|
|
29
30
|
return /* @__PURE__ */ jsxs(
|
|
30
31
|
Avatar,
|
|
31
32
|
{
|
|
32
33
|
className: cn("shrink-0 overflow-hidden rounded-full bg-muted", className),
|
|
33
34
|
style: size != null ? { width: size, height: size } : void 0,
|
|
35
|
+
...decorative ? { "aria-hidden": true } : {},
|
|
34
36
|
children: [
|
|
35
37
|
photoUrl ? /* @__PURE__ */ jsx(
|
|
36
38
|
AvatarImage,
|
|
37
39
|
{
|
|
38
40
|
src: photoUrl,
|
|
39
|
-
alt: name,
|
|
41
|
+
alt: decorative ? "" : name,
|
|
40
42
|
className: "h-full w-full object-cover"
|
|
41
43
|
}
|
|
42
44
|
) : null,
|
|
@@ -24,19 +24,21 @@ function PersonAvatar({
|
|
|
24
24
|
size,
|
|
25
25
|
className,
|
|
26
26
|
fallbackClassName,
|
|
27
|
-
fallbackSize = "default"
|
|
27
|
+
fallbackSize = "default",
|
|
28
|
+
decorative = false
|
|
28
29
|
}) {
|
|
29
30
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
30
31
|
_chunkWABCLRBRcjs.Avatar,
|
|
31
32
|
{
|
|
32
33
|
className: _chunkKWLSBTB2cjs.cn.call(void 0, "shrink-0 overflow-hidden rounded-full bg-muted", className),
|
|
33
34
|
style: size != null ? { width: size, height: size } : void 0,
|
|
35
|
+
...decorative ? { "aria-hidden": true } : {},
|
|
34
36
|
children: [
|
|
35
37
|
photoUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
36
38
|
_chunkWABCLRBRcjs.AvatarImage,
|
|
37
39
|
{
|
|
38
40
|
src: photoUrl,
|
|
39
|
-
alt: name,
|
|
41
|
+
alt: decorative ? "" : name,
|
|
40
42
|
className: "h-full w-full object-cover"
|
|
41
43
|
}
|
|
42
44
|
) : null,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkPPYHNJMVcjs = require('../chunk-PPYHNJMV.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkPQUSJEXLcjs = require('../chunk-PQUSJEXL.cjs');
|
|
@@ -40,7 +40,7 @@ function ActivityFeedToolbar({
|
|
|
40
40
|
}) {
|
|
41
41
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex flex-col gap-2 rounded-lg border bg-card p-2 lg:flex-row lg:items-center", className), children: [
|
|
42
42
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
43
|
-
|
|
43
|
+
_chunkPPYHNJMVcjs.ChipTabs,
|
|
44
44
|
{
|
|
45
45
|
items: categories,
|
|
46
46
|
value: category,
|