@epicbagel/saas-kit 1.4.0 → 1.6.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 +57 -0
- package/dist/{chunk-GFG2R5BZ.js → chunk-2V7AVB2U.js} +1 -1
- package/dist/{chunk-LI5EOSQG.js → chunk-43UMPZWD.js} +1 -1
- package/dist/{chunk-XABXUP6L.cjs → chunk-5VMKDVB6.cjs} +2 -2
- package/dist/{chunk-QNZYQLNP.js → chunk-6S6GD43V.js} +1 -1
- package/dist/{chunk-WQJKUKBL.cjs → chunk-6YXKFVZU.cjs} +4 -4
- package/dist/{chunk-RIWLAMME.cjs → chunk-7LDJAXRX.cjs} +2 -2
- package/dist/{chunk-FNDBM67K.cjs → chunk-7YCKII7G.cjs} +2 -2
- package/dist/{chunk-2TKLS73N.js → chunk-C3VZMTVB.js} +1 -1
- package/dist/{chunk-G54TQV2R.cjs → chunk-CLYAASFN.cjs} +2 -2
- package/dist/{chunk-SGW4FWBX.cjs → chunk-CRTH5GJ5.cjs} +13 -13
- package/dist/{chunk-EZCKWTH7.js → chunk-CYDICVH2.js} +1 -1
- package/dist/{chunk-J3GQXM37.js → chunk-EEHIMPD7.js} +1 -1
- package/dist/{chunk-4NN7EA3W.js → chunk-ET4THLFX.js} +1 -1
- package/dist/{chunk-PNWNU6JW.cjs → chunk-EUFV25KL.cjs} +4 -4
- package/dist/{chunk-HHV4G77I.js → chunk-F3B4M6DU.js} +1 -1
- package/dist/{chunk-32Q4XOTU.cjs → chunk-FYRQFEU4.cjs} +2 -2
- package/dist/{chunk-VLXPLKFR.cjs → chunk-GTVSRRE3.cjs} +2 -2
- package/dist/{chunk-RRRD5EUI.js → chunk-H2CCBRVG.js} +1 -1
- package/dist/{chunk-JZOBIPFC.js → chunk-H4XH2PPU.js} +61 -2
- package/dist/{chunk-M7FYGAGO.js → chunk-HBRVOGLA.js} +1 -1
- package/dist/{chunk-NW3OWKBN.js → chunk-HREEZUKL.js} +1 -1
- package/dist/{chunk-THWIJG5C.js → chunk-IJG2B3Y2.js} +1 -1
- package/dist/{chunk-L4DH72UF.cjs → chunk-JDEXZGIY.cjs} +2 -1
- package/dist/{chunk-HRLP4BHJ.js → chunk-JN6JOSZG.js} +4 -4
- package/dist/{chunk-NE3ZVJ6G.cjs → chunk-KM5FHCXU.cjs} +8 -8
- package/dist/{chunk-MLHNYRFX.js → chunk-KNKV25WS.js} +2 -2
- package/dist/{chunk-23UMHZ4S.cjs → chunk-LIUYHYFN.cjs} +3 -3
- package/dist/{chunk-EOUO3ORO.cjs → chunk-LKPM6DQP.cjs} +3 -3
- package/dist/{chunk-SUB4BAYE.cjs → chunk-M4V7OJNF.cjs} +2 -2
- package/dist/{chunk-VKIGJNJR.cjs → chunk-MU4F3DSW.cjs} +2 -2
- package/dist/{chunk-2AU7ZRGX.cjs → chunk-NWDPH2Z7.cjs} +61 -2
- package/dist/{chunk-MHYAVXOE.js → chunk-QTPPNK6F.js} +1 -1
- package/dist/{chunk-IH3COANJ.cjs → chunk-QTWJQQDH.cjs} +12 -12
- package/dist/chunk-QZBPZLAB.js +24 -0
- package/dist/{chunk-HAC32ALJ.js → chunk-TI57GAQP.js} +1 -1
- package/dist/{chunk-GRY77463.cjs → chunk-TP74SBRH.cjs} +3 -3
- package/dist/chunk-VMXKT67E.cjs +24 -0
- package/dist/{chunk-R5L4CM6V.cjs → chunk-VOTCYG3F.cjs} +4 -4
- package/dist/{chunk-HQRWRRZJ.js → chunk-W326GKML.js} +2 -1
- package/dist/{chunk-HYSWE75T.js → chunk-WL73DFE3.js} +1 -1
- package/dist/{chunk-KADJ56AH.cjs → chunk-Z3JJSNR5.cjs} +2 -2
- package/dist/{chunk-FLPYZNWZ.js → chunk-ZLU32SRP.js} +1 -1
- package/dist/primitives/activity-feed.cjs +3 -3
- package/dist/primitives/activity-feed.js +2 -2
- package/dist/primitives/activity-log.cjs +3 -3
- package/dist/primitives/activity-log.js +2 -2
- package/dist/primitives/alert-dialog.cjs +3 -3
- package/dist/primitives/alert-dialog.js +2 -2
- package/dist/primitives/alert.d.cts +1 -1
- package/dist/primitives/alert.d.ts +1 -1
- package/dist/primitives/archive-confirmation-dialog.cjs +4 -4
- package/dist/primitives/archive-confirmation-dialog.js +3 -3
- package/dist/primitives/attachment.cjs +3 -3
- package/dist/primitives/attachment.js +2 -2
- package/dist/primitives/badge.d.cts +1 -1
- package/dist/primitives/badge.d.ts +1 -1
- package/dist/primitives/board-view.cjs +7 -7
- package/dist/primitives/board-view.js +6 -6
- package/dist/primitives/bubble.d.cts +1 -1
- package/dist/primitives/bubble.d.ts +1 -1
- package/dist/primitives/button.cjs +2 -2
- package/dist/primitives/button.d.cts +3 -3
- package/dist/primitives/button.d.ts +3 -3
- package/dist/primitives/button.js +1 -1
- package/dist/primitives/calendar.cjs +3 -3
- package/dist/primitives/calendar.js +2 -2
- package/dist/primitives/chat.cjs +144 -64
- package/dist/primitives/chat.d.cts +59 -3
- package/dist/primitives/chat.d.ts +59 -3
- package/dist/primitives/chat.js +104 -24
- package/dist/primitives/code-block.cjs +4 -4
- package/dist/primitives/code-block.js +3 -3
- package/dist/primitives/confirm-bar.cjs +3 -3
- package/dist/primitives/confirm-bar.js +1 -1
- package/dist/primitives/connection-status-bar.cjs +4 -4
- package/dist/primitives/connection-status-bar.js +1 -1
- package/dist/primitives/connection.cjs +13 -13
- package/dist/primitives/connection.js +3 -3
- package/dist/primitives/copy-button.cjs +3 -3
- package/dist/primitives/copy-button.js +2 -2
- package/dist/primitives/decision-actions.cjs +2 -2
- package/dist/primitives/decision-actions.js +1 -1
- package/dist/primitives/delete-confirmation-dialog.cjs +4 -4
- package/dist/primitives/delete-confirmation-dialog.js +3 -3
- package/dist/primitives/document-preview.cjs +4 -4
- package/dist/primitives/document-preview.js +2 -2
- package/dist/primitives/editable-list.cjs +6 -6
- package/dist/primitives/editable-list.js +1 -1
- package/dist/primitives/empty-state.cjs +3 -3
- package/dist/primitives/empty-state.js +2 -2
- package/dist/primitives/file-dropzone.cjs +3 -3
- package/dist/primitives/file-dropzone.js +2 -2
- package/dist/primitives/file-preview-internals.cjs +3 -3
- package/dist/primitives/file-preview-internals.js +2 -2
- package/dist/primitives/file-preview.cjs +15 -15
- package/dist/primitives/file-preview.js +4 -4
- package/dist/primitives/filter-bar.cjs +4 -4
- package/dist/primitives/filter-bar.js +3 -3
- package/dist/primitives/input-group.cjs +3 -3
- package/dist/primitives/input-group.js +2 -2
- package/dist/primitives/load-more-button.cjs +3 -3
- package/dist/primitives/load-more-button.js +2 -2
- package/dist/primitives/message-scroller.cjs +3 -3
- package/dist/primitives/message-scroller.js +2 -2
- package/dist/primitives/message.cjs +8 -2
- package/dist/primitives/message.d.cts +35 -1
- package/dist/primitives/message.d.ts +35 -1
- package/dist/primitives/message.js +7 -1
- package/dist/primitives/page-header-actions.cjs +3 -3
- package/dist/primitives/page-header-actions.js +2 -2
- package/dist/primitives/quick-filters.cjs +3 -3
- package/dist/primitives/quick-filters.js +2 -2
- package/dist/primitives/resource-list.cjs +7 -7
- package/dist/primitives/resource-list.js +6 -6
- package/dist/primitives/search-input.cjs +101 -0
- package/dist/primitives/search-input.d.cts +23 -0
- package/dist/primitives/search-input.d.ts +23 -0
- package/dist/primitives/search-input.js +101 -0
- package/dist/primitives/spinner.cjs +3 -18
- package/dist/primitives/spinner.js +3 -18
- package/dist/primitives/split-action-button.cjs +3 -3
- package/dist/primitives/split-action-button.js +1 -1
- package/dist/primitives/suggestion.cjs +3 -3
- package/dist/primitives/suggestion.js +2 -2
- package/dist/primitives/tag-input.cjs +3 -3
- package/dist/primitives/tag-input.js +1 -1
- package/dist/primitives/voice-dictation-button.cjs +3 -3
- package/dist/primitives/voice-dictation-button.js +2 -2
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -70,6 +70,19 @@ CommonJS builds are included, each with type declarations.
|
|
|
70
70
|
built on `@shadcn/react`, which takes `ref` as a plain prop; on React 18 they
|
|
71
71
|
render, but a ref passed to them is dropped with a warning.
|
|
72
72
|
|
|
73
|
+
## Search input
|
|
74
|
+
|
|
75
|
+
`SearchInput` (`@epicbagel/saas-kit/primitives/search-input`) is a full-width,
|
|
76
|
+
rounded search field on a muted surface, composed from `InputGroup`. Supply
|
|
77
|
+
its controlled `value`, `onValueChange` and accessible `label`; the label is
|
|
78
|
+
also its default placeholder. `loading` replaces the search icon with a
|
|
79
|
+
spinner (`loadingLabel`). The inline clear button (`clearLabel`) and Escape
|
|
80
|
+
clear the query while keeping focus in the input. Disabled and read-only
|
|
81
|
+
fields cannot be cleared. `controlSize="default"` is 44px high and `"lg"`
|
|
82
|
+
is 48px, independent of root font size. Search timing and result fetching
|
|
83
|
+
belong to the caller. Pair it with `Button`'s `shape="pill"` for a matching
|
|
84
|
+
rounded action.
|
|
85
|
+
|
|
73
86
|
## Chat
|
|
74
87
|
|
|
75
88
|
`primitives/chat` composes the kit's lifts of the shadcn/ui AI Elements parts
|
|
@@ -89,6 +102,15 @@ public in 1.1.0, and these were the decisions about its props then:
|
|
|
89
102
|
- **Composer height.** `ChatInput` takes a `size` token (`sm`, `md`, `lg`)
|
|
90
103
|
for the textarea's starting height; there is no class-name or `rows` prop.
|
|
91
104
|
The textarea grows with its text (`field-sizing: content`).
|
|
105
|
+
- **Compact mobile replies.** Opt into `Chat.mobileCompactComposer` to fold
|
|
106
|
+
an active conversation's empty composer into one row below 768px. Focusing
|
|
107
|
+
its textarea expands it; leaving the composer folds it again only when
|
|
108
|
+
there is no draft or staged file. The same textarea stays mounted, and
|
|
109
|
+
its file menu and voice dialog keep an editing session open. New
|
|
110
|
+
conversations and desktop keep their normal size. `ChatInput` exposes
|
|
111
|
+
the underlying `compactOnBlur` behavior for other compositions. The
|
|
112
|
+
compact row keeps 44px controls and hides only its helper copy; any
|
|
113
|
+
privacy note remains visible.
|
|
92
114
|
- **Example prompts.** `examplePromptsVariant` is `chips` (the default: chips
|
|
93
115
|
that wrap onto as many lines as they need), `row` (one line that scrolls
|
|
94
116
|
sideways) or `cards` (a two-column grid).
|
|
@@ -160,6 +182,41 @@ public in 1.1.0, and these were the decisions about its props then:
|
|
|
160
182
|
scroller neither anchors it nor tracks it. It has no time marker, files or
|
|
161
183
|
rich `content`, and the turns either side of it keep their time grouping.
|
|
162
184
|
|
|
185
|
+
### A turn's actions (1.5.0)
|
|
186
|
+
|
|
187
|
+
- **Under a reply, a row of actions.** `messageActions(message)` returns the
|
|
188
|
+
actions under a turn, after prompt-kit's "Message with Actions": small
|
|
189
|
+
icon-only ghost buttons with tooltips, drawn in a `MessageActions` row at
|
|
190
|
+
the message's side. `ChatCopyAction` is the ready one: it copies the turn's
|
|
191
|
+
`text`, its Markdown source, and shows a check and "Copied" for a moment.
|
|
192
|
+
Add your own after it with `MessageAction` (an icon child, a `tooltip`, and
|
|
193
|
+
`label` when the tooltip isn't text).
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
<Chat
|
|
197
|
+
messages={messages}
|
|
198
|
+
onSend={send}
|
|
199
|
+
messageActions={(message) => (
|
|
200
|
+
<>
|
|
201
|
+
<ChatCopyAction message={message} onCopy={(ok) => ok && track("copy")} />
|
|
202
|
+
<MessageAction tooltip="Good reply" onClick={() => rate(message.id, "up")}>
|
|
203
|
+
<ThumbsUp />
|
|
204
|
+
</MessageAction>
|
|
205
|
+
</>
|
|
206
|
+
)}
|
|
207
|
+
/>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
- **Which turns.** Assistant turns, by default. `ChatMessage.actions: false`
|
|
211
|
+
drops them from a turn that isn't a reply (a progress line), `true` gives
|
|
212
|
+
them to a user turn. The running line, a running turn, a turn with
|
|
213
|
+
`status: "sending"` (the user's own turn shown optimistically, until its
|
|
214
|
+
stored copy replaces it) and the footer never have them.
|
|
215
|
+
- **Always there.** The row shows on every screen, a phone included, rather
|
|
216
|
+
than on hover, so nothing moves when a pointer reaches it, and the copied
|
|
217
|
+
state swaps one icon for another of the same size. A button is 2rem
|
|
218
|
+
square, 2.75rem on a touch screen, where the tooltip can't show.
|
|
219
|
+
|
|
163
220
|
## File preview (1.3.0)
|
|
164
221
|
|
|
165
222
|
`primitives/file-preview` shows a file in a dialog without leaving the page:
|
|
@@ -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 _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -109,7 +109,7 @@ function MessageScrollerButton({
|
|
|
109
109
|
"cn-message-scroller-button absolute inset-s-1/2 -translate-x-1/2 border-border bg-background text-foreground transition-[translate,scale,opacity] duration-200 hover:bg-muted hover:text-foreground data-[active=false]:pointer-events-none data-[active=false]:scale-95 data-[active=false]:opacity-0 data-[active=false]:duration-400 data-[active=false]:ease-[cubic-bezier(0.7,0,0.84,0)] data-[active=true]:translate-y-0 data-[active=true]:scale-100 data-[active=true]:opacity-100 data-[active=true]:ease-[cubic-bezier(0.23,1,0.32,1)] data-[direction=end]:bottom-4 data-[direction=end]:data-[active=false]:translate-y-full data-[direction=start]:top-4 data-[direction=start]:data-[active=false]:-translate-y-full rtl:translate-x-1/2 data-[direction=start]:[&_svg]:rotate-180",
|
|
110
110
|
className
|
|
111
111
|
),
|
|
112
|
-
render: _nullishCoalesce(render, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
112
|
+
render: _nullishCoalesce(render, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJDEXZGIYcjs.Button, { variant, size }))),
|
|
113
113
|
...props,
|
|
114
114
|
children: _nullishCoalesce(children, () => ( /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
115
115
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ArrowDown, { className: "h-4 w-4" }),
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
var _chunkZAITUDYDcjs = require('./chunk-ZAITUDYD.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -76,7 +76,7 @@ function PageHeaderActions({
|
|
|
76
76
|
children: desktopActions.map(
|
|
77
77
|
(action) => _optionalChain([action, 'access', _3 => _3.items, 'optionalAccess', _4 => _4.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkZAITUDYDcjs.DropdownMenu, { children: [
|
|
78
78
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZAITUDYDcjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
79
|
-
|
|
79
|
+
_chunkJDEXZGIYcjs.Button,
|
|
80
80
|
{
|
|
81
81
|
type: "button",
|
|
82
82
|
size: "sm",
|
|
@@ -92,7 +92,7 @@ function PageHeaderActions({
|
|
|
92
92
|
) }),
|
|
93
93
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZAITUDYDcjs.DropdownMenuContent, { align: "end", width: "compact", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenuActions, { actions: action.items }) })
|
|
94
94
|
] }, action.id) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
95
|
-
|
|
95
|
+
_chunkJDEXZGIYcjs.Button,
|
|
96
96
|
{
|
|
97
97
|
type: "button",
|
|
98
98
|
size: "sm",
|
|
@@ -111,7 +111,7 @@ function PageHeaderActions({
|
|
|
111
111
|
}
|
|
112
112
|
),
|
|
113
113
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "sm:hidden", "data-slot": "page-header-actions-mobile", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkZAITUDYDcjs.DropdownMenu, { children: [
|
|
114
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZAITUDYDcjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
114
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZAITUDYDcjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkJDEXZGIYcjs.Button, { type: "button", size: "sm", variant: "outline", "aria-label": mobileAriaLabel, children: [
|
|
115
115
|
mobileLabel,
|
|
116
116
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronDown, { "aria-hidden": "true" })
|
|
117
117
|
] }) }),
|
|
@@ -7,7 +7,7 @@ var _chunk2HV2KKOEcjs = require('./chunk-2HV2KKOE.cjs');
|
|
|
7
7
|
var _chunkPQUSJEXLcjs = require('./chunk-PQUSJEXL.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -91,7 +91,7 @@ function InputGroupButton({
|
|
|
91
91
|
...props
|
|
92
92
|
}) {
|
|
93
93
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
94
|
-
|
|
94
|
+
_chunkJDEXZGIYcjs.Button,
|
|
95
95
|
{
|
|
96
96
|
type,
|
|
97
97
|
size: "bare",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -43,7 +43,7 @@ function LoadMoreButton({
|
|
|
43
43
|
);
|
|
44
44
|
}
|
|
45
45
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "mt-4 flex justify-center", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
46
|
-
|
|
46
|
+
_chunkJDEXZGIYcjs.Button,
|
|
47
47
|
{
|
|
48
48
|
type: "button",
|
|
49
49
|
variant: "outline",
|
|
@@ -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 _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -189,7 +189,7 @@ function EmptyState({
|
|
|
189
189
|
}
|
|
190
190
|
),
|
|
191
191
|
action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
192
|
-
|
|
192
|
+
_chunkJDEXZGIYcjs.Button,
|
|
193
193
|
{
|
|
194
194
|
type: "button",
|
|
195
195
|
variant: action.variant || "outline",
|
|
@@ -15,7 +15,7 @@ var _chunkWNXVGUBFcjs = require('./chunk-WNXVGUBF.cjs');
|
|
|
15
15
|
var _chunkIQZLUT2Ycjs = require('./chunk-IQZLUT2Y.cjs');
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkVOTCYG3Fcjs = require('./chunk-VOTCYG3F.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
var _chunkJH4GAGOQcjs = require('./chunk-JH4GAGOQ.cjs');
|
|
@@ -37,7 +37,7 @@ var _chunkVGTINL5Qcjs = require('./chunk-VGTINL5Q.cjs');
|
|
|
37
37
|
var _chunkI6GUOEBOcjs = require('./chunk-I6GUOEBO.cjs');
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
var _chunkR35FT53Gcjs = require('./chunk-R35FT53G.cjs');
|
|
@@ -141,7 +141,7 @@ function FilterBar({
|
|
|
141
141
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkI6GUOEBOcjs.Badge, { variant: "secondary", className: "text-xs", children: [
|
|
142
142
|
_optionalChain([option, 'optionalAccess', _12 => _12.label]),
|
|
143
143
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
144
|
-
|
|
144
|
+
_chunkJDEXZGIYcjs.Button,
|
|
145
145
|
{
|
|
146
146
|
variant: "ghost",
|
|
147
147
|
size: "sm",
|
|
@@ -164,7 +164,7 @@ function FilterBar({
|
|
|
164
164
|
const calendarSelected = rangeFrom ? { from: toDate(rangeFrom), to: toDate(rangeTo) } : void 0;
|
|
165
165
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWNXVGUBFcjs.Popover, { children: [
|
|
166
166
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
167
|
-
|
|
167
|
+
_chunkJDEXZGIYcjs.Button,
|
|
168
168
|
{
|
|
169
169
|
variant: "outline",
|
|
170
170
|
className: "justify-start text-left font-normal w-full",
|
|
@@ -175,7 +175,7 @@ function FilterBar({
|
|
|
175
175
|
}
|
|
176
176
|
) }),
|
|
177
177
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
178
|
-
|
|
178
|
+
_chunkVOTCYG3Fcjs.Calendar,
|
|
179
179
|
{
|
|
180
180
|
mode: "range",
|
|
181
181
|
selected: calendarSelected,
|
|
@@ -190,7 +190,7 @@ function FilterBar({
|
|
|
190
190
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-2 gap-2", children: [
|
|
191
191
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWNXVGUBFcjs.Popover, { children: [
|
|
192
192
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
193
|
-
|
|
193
|
+
_chunkJDEXZGIYcjs.Button,
|
|
194
194
|
{
|
|
195
195
|
variant: "outline",
|
|
196
196
|
className: "justify-start text-left font-normal",
|
|
@@ -201,7 +201,7 @@ function FilterBar({
|
|
|
201
201
|
}
|
|
202
202
|
) }),
|
|
203
203
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
204
|
-
|
|
204
|
+
_chunkVOTCYG3Fcjs.Calendar,
|
|
205
205
|
{
|
|
206
206
|
mode: "single",
|
|
207
207
|
selected: _optionalChain([value, 'optionalAccess', _18 => _18.from]),
|
|
@@ -212,7 +212,7 @@ function FilterBar({
|
|
|
212
212
|
] }),
|
|
213
213
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWNXVGUBFcjs.Popover, { children: [
|
|
214
214
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
215
|
-
|
|
215
|
+
_chunkJDEXZGIYcjs.Button,
|
|
216
216
|
{
|
|
217
217
|
variant: "outline",
|
|
218
218
|
className: "justify-start text-left font-normal",
|
|
@@ -223,7 +223,7 @@ function FilterBar({
|
|
|
223
223
|
}
|
|
224
224
|
) }),
|
|
225
225
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWNXVGUBFcjs.PopoverContent, { className: "w-auto p-0", align: "start", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
226
|
-
|
|
226
|
+
_chunkVOTCYG3Fcjs.Calendar,
|
|
227
227
|
{
|
|
228
228
|
mode: "single",
|
|
229
229
|
selected: _optionalChain([value, 'optionalAccess', _20 => _20.to]),
|
|
@@ -287,7 +287,7 @@ function FilterBar({
|
|
|
287
287
|
};
|
|
288
288
|
const activeFilterCount = getActiveFilterCount();
|
|
289
289
|
const trigger = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
290
|
-
|
|
290
|
+
_chunkJDEXZGIYcjs.Button,
|
|
291
291
|
{
|
|
292
292
|
variant: "outline",
|
|
293
293
|
size: triggerSize === "lg" ? includeLabel || activeFilterCount > 0 ? "toolbar" : "icon-lg" : includeLabel || activeFilterCount > 0 ? "default" : "icon",
|
|
@@ -309,7 +309,7 @@ function FilterBar({
|
|
|
309
309
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 border-b p-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between", children: [
|
|
310
310
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h4", { className: "font-medium", children: "Filters" }),
|
|
311
311
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
312
|
-
|
|
312
|
+
_chunkJDEXZGIYcjs.Button,
|
|
313
313
|
{
|
|
314
314
|
variant: "ghost",
|
|
315
315
|
size: "sm",
|
|
@@ -364,8 +364,8 @@ function FilterBar({
|
|
|
364
364
|
"data-slot": "filter-bar-actions",
|
|
365
365
|
className: "z-10 shrink-0 border-t bg-popover p-4 pb-[max(1rem,env(safe-area-inset-bottom))]",
|
|
366
366
|
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-end space-x-2", children: [
|
|
367
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
368
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
367
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJDEXZGIYcjs.Button, { variant: "outline", onClick: () => setIsOpen(false), children: "Cancel" }),
|
|
368
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJDEXZGIYcjs.Button, { onClick: applyFilters, children: "Apply Filters" })
|
|
369
369
|
] })
|
|
370
370
|
}
|
|
371
371
|
)
|
|
@@ -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 _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -70,7 +70,7 @@ function QuickFilters({
|
|
|
70
70
|
const isActive2 = (qf) => areFiltersEqual(activeFilters, qf.filters);
|
|
71
71
|
const handleClick2 = (qf) => isActive2(qf) ? onFilterClick({}) : onFilterClick(qf.filters);
|
|
72
72
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Shell, { showLabel, appearance, className, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "flex items-center flex-wrap", appearance === "underline" ? "gap-6" : "gap-2"), children: quickFilters.map((filter) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
73
|
-
|
|
73
|
+
_chunkJDEXZGIYcjs.Button,
|
|
74
74
|
{
|
|
75
75
|
variant: appearance === "underline" ? "ghost" : isActive2(filter) ? "default" : "outline",
|
|
76
76
|
size: "sm",
|
|
@@ -121,7 +121,7 @@ function QuickFilters({
|
|
|
121
121
|
if (fs.length === 1) {
|
|
122
122
|
const filter = fs[0];
|
|
123
123
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
124
|
-
|
|
124
|
+
_chunkJDEXZGIYcjs.Button,
|
|
125
125
|
{
|
|
126
126
|
variant: appearance === "underline" ? "ghost" : isActive(filter) ? "default" : "outline",
|
|
127
127
|
size: "sm",
|
|
@@ -145,7 +145,7 @@ function QuickFilters({
|
|
|
145
145
|
appearance === "underline" ? "gap-6" : "gap-1 rounded-md border p-0.5"
|
|
146
146
|
),
|
|
147
147
|
children: fs.map((filter) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
148
|
-
|
|
148
|
+
_chunkJDEXZGIYcjs.Button,
|
|
149
149
|
{
|
|
150
150
|
variant: appearance === "underline" ? "ghost" : isActive(filter) ? "default" : "ghost",
|
|
151
151
|
size: "sm",
|
|
@@ -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 _chunkJDEXZGIYcjs = require('./chunk-JDEXZGIY.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -147,7 +147,7 @@ function AttachmentAction({
|
|
|
147
147
|
...props
|
|
148
148
|
}) {
|
|
149
149
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
150
|
-
|
|
150
|
+
_chunkJDEXZGIYcjs.Button,
|
|
151
151
|
{
|
|
152
152
|
"data-slot": "attachment-action",
|
|
153
153
|
variant: _nullishCoalesce(variant, () => ( "ghost")),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkMU4F3DSWcjs = require('./chunk-MU4F3DSW.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
|
|
@@ -38,7 +38,7 @@ function CodeBlock({
|
|
|
38
38
|
}
|
|
39
39
|
),
|
|
40
40
|
copy ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
41
|
-
|
|
41
|
+
_chunkMU4F3DSWcjs.CopyButton,
|
|
42
42
|
{
|
|
43
43
|
text: copyText,
|
|
44
44
|
label: copyLabel,
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
Tooltip,
|
|
4
|
+
TooltipContent,
|
|
5
|
+
TooltipProvider,
|
|
6
|
+
TooltipTrigger
|
|
7
|
+
} from "./chunk-ZRLUUZHK.js";
|
|
8
|
+
import {
|
|
9
|
+
Button
|
|
10
|
+
} from "./chunk-W326GKML.js";
|
|
2
11
|
import {
|
|
3
12
|
cn
|
|
4
13
|
} from "./chunk-G6SRSWXB.js";
|
|
5
14
|
|
|
6
15
|
// src/primitives/message.tsx
|
|
7
|
-
import
|
|
16
|
+
import * as React from "react";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
18
|
function MessageGroup({ className, ...props }) {
|
|
9
19
|
return /* @__PURE__ */ jsx(
|
|
10
20
|
"div",
|
|
@@ -85,6 +95,53 @@ function MessageFooter({ className, ...props }) {
|
|
|
85
95
|
}
|
|
86
96
|
);
|
|
87
97
|
}
|
|
98
|
+
function MessageActions({ className, ...props }) {
|
|
99
|
+
return /* @__PURE__ */ jsx(
|
|
100
|
+
"div",
|
|
101
|
+
{
|
|
102
|
+
"data-slot": "message-actions",
|
|
103
|
+
className: cn(
|
|
104
|
+
"cn-message-actions flex max-w-full min-w-0 items-center gap-0.5 text-muted-foreground empty:hidden group-data-[align=end]/message:justify-end",
|
|
105
|
+
className
|
|
106
|
+
),
|
|
107
|
+
...props
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
var MessageAction = React.forwardRef(
|
|
112
|
+
function MessageAction2({
|
|
113
|
+
tooltip,
|
|
114
|
+
label,
|
|
115
|
+
side = "bottom",
|
|
116
|
+
variant = "quiet",
|
|
117
|
+
type = "button",
|
|
118
|
+
className,
|
|
119
|
+
children,
|
|
120
|
+
...props
|
|
121
|
+
}, ref) {
|
|
122
|
+
const name = label ?? (typeof tooltip === "string" ? tooltip : void 0);
|
|
123
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
124
|
+
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
125
|
+
Button,
|
|
126
|
+
{
|
|
127
|
+
ref,
|
|
128
|
+
type,
|
|
129
|
+
variant,
|
|
130
|
+
size: "icon-compact",
|
|
131
|
+
"aria-label": name,
|
|
132
|
+
"data-slot": "message-action",
|
|
133
|
+
className: cn(
|
|
134
|
+
"cn-message-action size-8 shrink-0 rounded-full pointer-coarse:size-11",
|
|
135
|
+
className
|
|
136
|
+
),
|
|
137
|
+
...props,
|
|
138
|
+
children
|
|
139
|
+
}
|
|
140
|
+
) }),
|
|
141
|
+
/* @__PURE__ */ jsx(TooltipContent, { side, children: tooltip })
|
|
142
|
+
] }) });
|
|
143
|
+
}
|
|
144
|
+
);
|
|
88
145
|
|
|
89
146
|
export {
|
|
90
147
|
MessageGroup,
|
|
@@ -92,5 +149,7 @@ export {
|
|
|
92
149
|
MessageAvatar,
|
|
93
150
|
MessageContent,
|
|
94
151
|
MessageHeader,
|
|
95
|
-
MessageFooter
|
|
152
|
+
MessageFooter,
|
|
153
|
+
MessageActions,
|
|
154
|
+
MessageAction
|
|
96
155
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
QuickFilters
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-43UMPZWD.js";
|
|
5
5
|
import {
|
|
6
6
|
LoadMoreButton
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EEHIMPD7.js";
|
|
8
8
|
import {
|
|
9
9
|
FilterBar
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KNKV25WS.js";
|
|
11
11
|
import {
|
|
12
12
|
Heading
|
|
13
13
|
} from "./chunk-H2O6NMLZ.js";
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
} from "./chunk-QMA3WVB7.js";
|
|
30
30
|
import {
|
|
31
31
|
Button
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-W326GKML.js";
|
|
33
33
|
import {
|
|
34
34
|
useIsMobile
|
|
35
35
|
} from "./chunk-PIU5SSUV.js";
|