convex-cms 0.0.9-alpha.3 → 0.0.9-alpha.6
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/admin/src/embed/index.tsx +57 -67
- package/admin/src/embed/pages/Entry.tsx +4 -5
- package/admin/src/embed/pages/NewEntry.tsx +2 -1
- package/admin/src/embed/types.ts +0 -1
- package/admin-dist/nitro.json +1 -1
- package/admin-dist/public/assets/{CmsEmptyState-BM4e6N83.js → CmsEmptyState-la_kLGHv.js} +1 -1
- package/admin-dist/public/assets/{CmsPageHeader-uor3DPIk.js → CmsPageHeader-Cf0SafVG.js} +1 -1
- package/admin-dist/public/assets/{CmsStatusBadge-D8N18LJx.js → CmsStatusBadge-BovugIHH.js} +1 -1
- package/admin-dist/public/assets/{CmsSurface-BEcY-WpI.js → CmsSurface-Dp1TegU4.js} +1 -1
- package/admin-dist/public/assets/{CmsToolbar-DE-bu3W8.js → CmsToolbar-B1zdfMu0.js} +1 -1
- package/admin-dist/public/assets/{ContentEntryEditor-BdkIMCUk.js → ContentEntryEditor-CB--8SC3.js} +1 -1
- package/admin-dist/public/assets/{TaxonomyFilter-a1-O9DPs.js → TaxonomyFilter-fmZxxbdA.js} +1 -1
- package/admin-dist/public/assets/{_contentTypeId-XIkYOLyY.js → _contentTypeId-vT09P77i.js} +1 -1
- package/admin-dist/public/assets/{_entryId-DyP15QpI.js → _entryId-Dhq6ybYt.js} +1 -1
- package/admin-dist/public/assets/{alert-DHBQuuib.js → alert-DfdkD-ZZ.js} +1 -1
- package/admin-dist/public/assets/{badge-BOhWFWzb.js → badge-Cmc3T9vs.js} +1 -1
- package/admin-dist/public/assets/{circle-check-big-DjTNapen.js → circle-check-big-B8AJAcBi.js} +1 -1
- package/admin-dist/public/assets/{command-BIc5_8gL.js → command-BsmkQ6_j.js} +1 -1
- package/admin-dist/public/assets/{content-C3N8Ugra.js → content-DdQ1u7T4.js} +1 -1
- package/admin-dist/public/assets/{content-types-D0wh1eUF.js → content-types-QYcwm0Sy.js} +1 -1
- package/admin-dist/public/assets/{index-B-g3F_ri.js → index-kxLB3e43.js} +1 -1
- package/admin-dist/public/assets/main-BrFRroF1.js +107 -0
- package/admin-dist/public/assets/{media-8uh1MwDi.js → media-Cx9IyZvU.js} +1 -1
- package/admin-dist/public/assets/{new._contentTypeId-S96rFbgY.js → new._contentTypeId-2HsDwzy_.js} +1 -1
- package/admin-dist/public/assets/{pencil-DgaZav4e.js → pencil-PaJhpDeC.js} +1 -1
- package/admin-dist/public/assets/{refresh-cw-BBut4hAU.js → refresh-cw-D_KNzBUN.js} +1 -1
- package/admin-dist/public/assets/{rotate-ccw-DVCkojZZ.js → rotate-ccw-I3wzW1RQ.js} +1 -1
- package/admin-dist/public/assets/{scroll-area-DPC4uXzf.js → scroll-area-t72-FBB4.js} +1 -1
- package/admin-dist/public/assets/{search-CSyHHglh.js → search-BsuImjd-.js} +1 -1
- package/admin-dist/public/assets/{settings-cEqPsoJ0.js → settings-DB6TvceQ.js} +1 -1
- package/admin-dist/public/assets/{switch-O2BviO8Q.js → switch-DWN_fx2n.js} +1 -1
- package/admin-dist/public/assets/{tabs-p1MWhOqY.js → tabs-BG0vukFH.js} +1 -1
- package/admin-dist/public/assets/{tanstack-adapter-CDrxoPZD.js → tanstack-adapter-DHsy8Fjs.js} +1 -1
- package/admin-dist/public/assets/{taxonomies-DJ9UbjXW.js → taxonomies-WG8YV2pR.js} +1 -1
- package/admin-dist/public/assets/{trash-RnpP6lXF.js → trash-C3Lt5m9d.js} +1 -1
- package/admin-dist/public/assets/{useBreadcrumbLabel-zbIWXlkc.js → useBreadcrumbLabel-BC8wl3jQ.js} +1 -1
- package/admin-dist/public/assets/{usePermissions-4CTlK-vU.js → usePermissions-BM1Vv1YJ.js} +1 -1
- package/admin-dist/server/_libs/convex-helpers.mjs +37 -0
- package/admin-dist/server/_libs/convex.mjs +1357 -168
- package/admin-dist/server/_ssr/{CmsEmptyState-BA0Lc5xs.mjs → CmsEmptyState-NKmyUWD9.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsPageHeader-PMyecILZ.mjs → CmsPageHeader-CngxPIOg.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsStatusBadge-CInuN2bZ.mjs → CmsStatusBadge-D4fiHjJD.mjs} +2 -2
- package/admin-dist/server/_ssr/{CmsSurface-CH1PIfcS.mjs → CmsSurface-DN9I2iuX.mjs} +1 -1
- package/admin-dist/server/_ssr/{CmsToolbar-IuhSA7gR.mjs → CmsToolbar-ux-veU96.mjs} +1 -1
- package/admin-dist/server/_ssr/{ContentEntryEditor-Bzhir4fQ.mjs → ContentEntryEditor-BiY9bJr9.mjs} +9 -9
- package/admin-dist/server/_ssr/{TaxonomyFilter-r4izSMBh.mjs → TaxonomyFilter-BdtKJie2.mjs} +3 -3
- package/admin-dist/server/_ssr/{_contentTypeId-BWEbjqxY.mjs → _contentTypeId-CRo5WQVu.mjs} +12 -11
- package/admin-dist/server/_ssr/{_entryId-B5xoXoJf.mjs → _entryId-FnG3uc_Y.mjs} +12 -11
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-BbSNqRIw.mjs +4 -0
- package/admin-dist/server/_ssr/{badge-DXrjBRqZ.mjs → badge-D3SGS0Jp.mjs} +1 -1
- package/admin-dist/server/_ssr/{command-Cj90OdCX.mjs → command-2t7uTBKt.mjs} +1 -1
- package/admin-dist/server/_ssr/{content-DKRI-YqL.mjs → content-CCsSzXeb.mjs} +10 -9
- package/admin-dist/server/_ssr/{content-types-BzgRcS8K.mjs → content-types-CuVG3uSt.mjs} +7 -6
- package/admin-dist/server/_ssr/{index-BPf6_agY.mjs → index-CLwCLoco.mjs} +5 -4
- package/admin-dist/server/_ssr/index.mjs +2 -2
- package/admin-dist/server/_ssr/{media-MpjxOZL8.mjs → media-D3duVWkk.mjs} +11 -10
- package/admin-dist/server/_ssr/{new._contentTypeId-DSb4qR9j.mjs → new._contentTypeId-6uKYdgGO.mjs} +11 -10
- package/admin-dist/server/_ssr/router-D9Zk56-q.mjs +7979 -0
- package/admin-dist/server/_ssr/{scroll-area-JwVD_6MZ.mjs → scroll-area-vbjKsfFu.mjs} +1 -1
- package/admin-dist/server/_ssr/{settings-KVJNe0GM.mjs → settings-D7-vwjqD.mjs} +9 -8
- package/admin-dist/server/_ssr/{switch-DvREvRv4.mjs → switch-CbKuV4Qh.mjs} +1 -1
- package/admin-dist/server/_ssr/{tabs-B0h57pFf.mjs → tabs-C_IfqLiu.mjs} +2 -2
- package/admin-dist/server/_ssr/{tanstack-adapter-gmM64LnW.mjs → tanstack-adapter-yhyAcBi-.mjs} +1 -1
- package/admin-dist/server/_ssr/{taxonomies-BbBNx260.mjs → taxonomies-C15s_nvM.mjs} +9 -8
- package/admin-dist/server/_ssr/{trash-JAzYGh7A.mjs → trash-BPIjmAUh.mjs} +9 -8
- package/admin-dist/server/_ssr/{useBreadcrumbLabel-BWIujj97.mjs → useBreadcrumbLabel-BC7plG0L.mjs} +1 -1
- package/admin-dist/server/_ssr/{usePermissions-CcLDCSwa.mjs → usePermissions-DJ8a7bZU.mjs} +1 -1
- package/admin-dist/server/index.mjs +157 -157
- package/dist/client/index.d.ts +0 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +6 -15
- package/dist/client/index.js.map +1 -1
- package/package.json +6 -1
- package/admin-dist/public/assets/main-BapBJgQD.js +0 -102
- package/admin-dist/server/_ssr/_tanstack-start-manifest_v-CBTan6ii.mjs +0 -4
- package/admin-dist/server/_ssr/router-Dk9ikPNc.mjs +0 -3055
|
@@ -4,32 +4,38 @@
|
|
|
4
4
|
* Use this component to embed the CMS admin UI into your existing React app.
|
|
5
5
|
* Provides a fully functional admin interface with router-agnostic navigation.
|
|
6
6
|
*
|
|
7
|
+
* IMPORTANT: The CmsAdmin component must be rendered within a ConvexProvider.
|
|
8
|
+
* Your app should already have this if you're using Convex.
|
|
9
|
+
*
|
|
7
10
|
* @example
|
|
8
11
|
* ```tsx
|
|
9
|
-
* import { CmsAdmin } from "
|
|
12
|
+
* import { CmsAdmin } from "convex-cms/admin";
|
|
13
|
+
* import { api } from "./convex/_generated/api";
|
|
10
14
|
*
|
|
11
15
|
* function App() {
|
|
12
16
|
* return (
|
|
13
|
-
* <
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
17
|
+
* <ConvexProvider client={convex}>
|
|
18
|
+
* <CmsAdmin
|
|
19
|
+
* api={api.admin}
|
|
20
|
+
* auth={{
|
|
21
|
+
* getUser: () => currentUser,
|
|
22
|
+
* getUserRole: (userId) => userRoles[userId] ?? null,
|
|
23
|
+
* onLogout: () => signOut(),
|
|
24
|
+
* }}
|
|
25
|
+
* config={{
|
|
26
|
+
* branding: { appName: "My CMS" },
|
|
27
|
+
* navigation: { showTaxonomies: false },
|
|
28
|
+
* }}
|
|
29
|
+
* basePath="/admin"
|
|
30
|
+
* />
|
|
31
|
+
* </ConvexProvider>
|
|
26
32
|
* );
|
|
27
33
|
* }
|
|
28
34
|
* ```
|
|
29
35
|
*/
|
|
30
36
|
|
|
31
|
-
import {
|
|
32
|
-
import { useMemo
|
|
37
|
+
import { useConvex } from "convex/react";
|
|
38
|
+
import { useMemo } from "react";
|
|
33
39
|
import { SettingsConfigProvider } from "../contexts/SettingsConfigContext";
|
|
34
40
|
import {
|
|
35
41
|
AuthProvider,
|
|
@@ -73,36 +79,6 @@ function adaptAuthConfig(auth: CmsAdminAuthConfig): {
|
|
|
73
79
|
};
|
|
74
80
|
}
|
|
75
81
|
|
|
76
|
-
function ConvexProviderWrapper({
|
|
77
|
-
convexUrl,
|
|
78
|
-
children,
|
|
79
|
-
}: {
|
|
80
|
-
convexUrl: string;
|
|
81
|
-
children: ReactNode;
|
|
82
|
-
}) {
|
|
83
|
-
const convex = useMemo(() => {
|
|
84
|
-
if (!convexUrl) return null;
|
|
85
|
-
return new ConvexReactClient(convexUrl);
|
|
86
|
-
}, [convexUrl]);
|
|
87
|
-
|
|
88
|
-
if (!convex) {
|
|
89
|
-
return (
|
|
90
|
-
<div className="flex min-h-full items-center justify-center bg-background p-6">
|
|
91
|
-
<div className="diff-modified max-w-lg space-y-4 rounded-lg border p-6 text-center">
|
|
92
|
-
<h2 className="text-xl font-semibold text-diff-modified">
|
|
93
|
-
Convex Configuration Required
|
|
94
|
-
</h2>
|
|
95
|
-
<p className="text-sm text-diff-modified-foreground">
|
|
96
|
-
Please provide a valid convexUrl prop to the CmsAdmin component.
|
|
97
|
-
</p>
|
|
98
|
-
</div>
|
|
99
|
-
</div>
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return <ConvexProvider client={convex}>{children}</ConvexProvider>;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
82
|
function EmbedRouter() {
|
|
107
83
|
const { currentRoute } = useEmbedNavigation();
|
|
108
84
|
|
|
@@ -147,7 +123,6 @@ function EmbedRouter() {
|
|
|
147
123
|
|
|
148
124
|
export function CmsAdmin({
|
|
149
125
|
api,
|
|
150
|
-
convexUrl,
|
|
151
126
|
config,
|
|
152
127
|
auth,
|
|
153
128
|
basePath = "/admin",
|
|
@@ -158,6 +133,7 @@ export function CmsAdmin({
|
|
|
158
133
|
initialRoute?: EmbedRoute;
|
|
159
134
|
onNavigate?: (path: string, params: Record<string, string>) => void;
|
|
160
135
|
}) {
|
|
136
|
+
const convex = useConvex();
|
|
161
137
|
const adminConfig = useMemo(() => resolveAdminConfig(config), [config]);
|
|
162
138
|
const authConfig = useMemo(() => adaptAuthConfig(auth), [auth]);
|
|
163
139
|
const settingsApi = useMemo(
|
|
@@ -165,31 +141,45 @@ export function CmsAdmin({
|
|
|
165
141
|
[api]
|
|
166
142
|
);
|
|
167
143
|
|
|
144
|
+
if (!convex) {
|
|
145
|
+
return (
|
|
146
|
+
<div className="flex min-h-full items-center justify-center bg-background p-6">
|
|
147
|
+
<div className="diff-modified max-w-lg space-y-4 rounded-lg border p-6 text-center">
|
|
148
|
+
<h2 className="text-xl font-semibold text-diff-modified">
|
|
149
|
+
ConvexProvider Required
|
|
150
|
+
</h2>
|
|
151
|
+
<p className="text-sm text-diff-modified-foreground">
|
|
152
|
+
CmsAdmin must be rendered within a ConvexProvider. Wrap your app or
|
|
153
|
+
this component with ConvexProvider.
|
|
154
|
+
</p>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
|
|
168
160
|
return (
|
|
169
161
|
<div className={className}>
|
|
170
162
|
<ApiProvider api={api}>
|
|
171
163
|
<ThemeProvider>
|
|
172
|
-
<
|
|
173
|
-
<
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
164
|
+
<SettingsConfigProvider baseConfig={adminConfig} api={settingsApi}>
|
|
165
|
+
<AuthProvider
|
|
166
|
+
getUser={authConfig.getUser}
|
|
167
|
+
getUserRole={authConfig.getUserRole}
|
|
168
|
+
onLogout={authConfig.onLogout}
|
|
169
|
+
>
|
|
170
|
+
<EmbedNavigationProvider
|
|
171
|
+
initialRoute={initialRoute}
|
|
172
|
+
basePath={basePath}
|
|
173
|
+
onNavigate={onNavigate}
|
|
178
174
|
>
|
|
179
|
-
<
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
>
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
</div>
|
|
188
|
-
</RouteGuard>
|
|
189
|
-
</EmbedNavigationProvider>
|
|
190
|
-
</AuthProvider>
|
|
191
|
-
</SettingsConfigProvider>
|
|
192
|
-
</ConvexProviderWrapper>
|
|
175
|
+
<RouteGuard>
|
|
176
|
+
<div className="min-h-screen">
|
|
177
|
+
<EmbedRouter />
|
|
178
|
+
</div>
|
|
179
|
+
</RouteGuard>
|
|
180
|
+
</EmbedNavigationProvider>
|
|
181
|
+
</AuthProvider>
|
|
182
|
+
</SettingsConfigProvider>
|
|
193
183
|
</ThemeProvider>
|
|
194
184
|
</ApiProvider>
|
|
195
185
|
</div>
|
|
@@ -21,12 +21,11 @@ export function EmbedEntry() {
|
|
|
21
21
|
|
|
22
22
|
const entryId = params.entryId;
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const entryArgs = entryId ? { id: entryId } : ("skip" as const);
|
|
25
|
+
const entry = useQuery(api.getEntry, entryArgs);
|
|
25
26
|
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
entry ? { name: entry.contentTypeName } : "skip"
|
|
29
|
-
);
|
|
27
|
+
const contentTypeArgs = entry ? { name: entry.contentTypeName } : ("skip" as const);
|
|
28
|
+
const contentType = useQuery(api.getContentType, contentTypeArgs);
|
|
30
29
|
|
|
31
30
|
if (!entryId) {
|
|
32
31
|
return (
|
|
@@ -18,7 +18,8 @@ export function EmbedNewEntry() {
|
|
|
18
18
|
const { navigate, navigateToEntry, navigateToContentType } = useEmbedNavigation();
|
|
19
19
|
|
|
20
20
|
const contentTypeId = params.contentTypeId;
|
|
21
|
-
const
|
|
21
|
+
const contentTypeArgs = contentTypeId ? { id: contentTypeId } : ("skip" as const);
|
|
22
|
+
const contentType = useQuery(api.getContentType, contentTypeArgs);
|
|
22
23
|
|
|
23
24
|
if (!contentTypeId) {
|
|
24
25
|
return (
|
package/admin/src/embed/types.ts
CHANGED
package/admin-dist/nitro.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,C as n,h as x}from"./main-
|
|
1
|
+
import{j as e,C as n,h as x}from"./main-BrFRroF1.js";function d({icon:s,title:m,description:r,action:t,className:l,...a}){return e.jsxs("div",{className:x("flex flex-col items-center justify-center py-12 text-center",l),...a,children:[s&&e.jsx("div",{className:"mb-4 flex size-12 items-center justify-center rounded-full bg-muted text-muted-foreground",children:s}),e.jsx("h3",{className:"text-base font-semibold text-foreground",children:m}),r&&e.jsx("p",{className:"mt-1 max-w-sm text-sm text-muted-foreground",children:r}),t&&e.jsx(n,{variant:t.variant??"primary",onClick:t.onClick,className:"mt-4",children:t.label})]})}export{d as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,h as m}from"./main-
|
|
1
|
+
import{j as e,h as m}from"./main-BrFRroF1.js";function c({title:i,description:s,actions:t,breadcrumbs:a,className:l,...r}){return e.jsxs("div",{className:m("mb-6",l),...r,children:[a&&e.jsx("div",{className:"mb-2",children:a}),e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight text-foreground",children:i}),s&&e.jsx("p",{className:"text-sm text-muted-foreground",children:s})]}),t&&e.jsx("div",{className:"flex items-center gap-2",children:t})]})]})}export{c as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,h as t}from"./main-
|
|
1
|
+
import{j as e,h as t}from"./main-BrFRroF1.js";import{B as a}from"./badge-Cmc3T9vs.js";const c={draft:{label:"Draft",className:"status-draft",icon:e.jsx("svg",{className:"size-3",fill:"currentColor",viewBox:"0 0 8 8",children:e.jsx("circle",{cx:"4",cy:"4",r:"3"})})},published:{label:"Published",className:"status-published",icon:e.jsx("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})})},scheduled:{label:"Scheduled",className:"status-scheduled",icon:e.jsxs("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:[e.jsx("circle",{cx:"12",cy:"12",r:"10"}),e.jsx("path",{strokeLinecap:"round",d:"M12 6v6l4 2"})]})},archived:{label:"Archived",className:"status-archived",icon:e.jsx("svg",{className:"size-3",fill:"none",stroke:"currentColor",strokeWidth:"2",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"})})}},n={gray:"bg-muted text-muted-foreground",yellow:"bg-diff-modified-bg text-diff-modified-foreground",blue:"bg-info-bg text-info-foreground",green:"bg-diff-added-bg text-diff-added-foreground",red:"bg-diff-removed-bg text-diff-removed-foreground",purple:"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400",orange:"bg-diff-modified-bg text-diff-modified-foreground"};function l(){return e.jsx("svg",{className:"size-3",fill:"currentColor",viewBox:"0 0 8 8",children:e.jsx("circle",{cx:"4",cy:"4",r:"3"})})}function x({status:d,customConfig:s,className:o,...i}){if(s)return e.jsxs(a,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n[s.color],o),...i,children:[l(),s.displayName]});const r=c[d];return r?e.jsxs(a,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",r.className,o),...i,children:[r.icon,r.label]}):e.jsxs(a,{variant:"secondary",className:t("gap-1.5 px-2 py-0.5 text-xs font-medium",n.gray,o),...i,children:[l(),d]})}export{x as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r,h as t}from"./main-
|
|
1
|
+
import{j as r,h as t}from"./main-BrFRroF1.js";const l={base:"surface-base",elevated:"surface-elevated",floating:"surface-floating"},m={none:"",sm:"p-3",md:"p-4",lg:"p-6"},u={none:"rounded-none",sm:"rounded-sm",md:"rounded-md",lg:"rounded-lg"};function f({elevation:e="base",padding:s="md",rounded:n="lg",className:a,children:d,...o}){return r.jsx("div",{className:t(l[e],m[s],u[n],a),...o,children:d})}export{f as C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e,I as i,h as o}from"./main-
|
|
1
|
+
import{j as e,I as i,h as o}from"./main-BrFRroF1.js";import{S as p}from"./search-BsuImjd-.js";function u({left:t,right:s,search:a,filters:r,actions:l,className:n,children:x,...m}){return e.jsxs("div",{className:o("flex flex-wrap items-center justify-between gap-3 pb-4",n),...m,children:[e.jsxs("div",{className:"flex flex-1 flex-wrap items-center gap-2",children:[a&&e.jsxs("div",{className:"relative w-full max-w-xs",children:[e.jsx(p,{className:"absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(i,{type:"search",placeholder:a.placeholder??"Search...",value:a.value,onChange:c=>a.onChange(c.target.value),className:"pl-9"})]}),r,t,x]}),(s||l)&&e.jsx("div",{className:"flex items-center gap-2",children:s??l})]})}export{u as C};
|