Merge branch 'dev' into promptless/document-developer-tools

This commit is contained in:
promptless[bot] 2026-04-15 02:40:04 +00:00
commit 6a8b3e13ea
5 changed files with 85 additions and 19 deletions

View File

@ -49,9 +49,75 @@ const AVAILABLE_TABLES = new Map([
defaultOrderBy: "event_at",
defaultOrderDir: "DESC" as const,
}],
["users", {
displayName: "Users",
baseQuery: "SELECT * FROM default.users",
defaultOrderBy: "signed_up_at",
defaultOrderDir: "DESC" as const,
}],
["contact_channels", {
displayName: "Contact Channels",
baseQuery: "SELECT * FROM default.contact_channels",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["teams", {
displayName: "Teams",
baseQuery: "SELECT * FROM default.teams",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["team_member_profiles", {
displayName: "Team Member Profiles",
baseQuery: "SELECT * FROM default.team_member_profiles",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["team_permissions", {
displayName: "Team Permissions",
baseQuery: "SELECT * FROM default.team_permissions",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["team_invitations", {
displayName: "Team Invitations",
baseQuery: "SELECT * FROM default.team_invitations",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["email_outboxes", {
displayName: "Email Outboxes",
baseQuery: "SELECT * FROM default.email_outboxes",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["project_permissions", {
displayName: "Project Permissions",
baseQuery: "SELECT * FROM default.project_permissions",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["notification_preferences", {
displayName: "Notification Preferences",
baseQuery: "SELECT * FROM default.notification_preferences",
defaultOrderBy: "user_id",
defaultOrderDir: "DESC" as const,
}],
["refresh_tokens", {
displayName: "Refresh Tokens",
baseQuery: "SELECT * FROM default.refresh_tokens",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
["connected_accounts", {
displayName: "Connected Accounts",
baseQuery: "SELECT * FROM default.connected_accounts",
defaultOrderBy: "created_at",
defaultOrderDir: "DESC" as const,
}],
]);
type TableId = "events";
type TableId = string;
type SortDir = "ASC" | "DESC";
const PAGE_SIZE = 50;

View File

@ -482,6 +482,9 @@ export default function PageClient() {
mockProject={{
config: {
...project.config,
credentialEnabled: passwordEnabled,
magicLinkEnabled: otpEnabled,
passkeyEnabled: passkeyEnabled,
oauthProviders: enabledProviders
.map(([, provider]) => provider)
.filter((provider): provider is AdminOAuthProviderConfig => !!provider),

View File

@ -457,12 +457,10 @@ function NewDraftDropdown({
</button>
</DropdownMenuTrigger>
<DropdownMenuContent align="center">
<DropdownMenuItem onClick={onCreateFromScratch} className="gap-2">
<FileText className="h-4 w-4" />
<DropdownMenuItem onClick={onCreateFromScratch} icon={<FileText className="h-4 w-4" />}>
Create from scratch
</DropdownMenuItem>
<DropdownMenuItem onClick={onCreateFromTemplate} className="gap-2">
<Copy className="h-4 w-4" />
<DropdownMenuItem onClick={onCreateFromTemplate} icon={<Copy className="h-4 w-4" />}>
Create from template
</DropdownMenuItem>
</DropdownMenuContent>
@ -480,12 +478,10 @@ function NewDraftDropdown({
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end">
<DropdownMenuItem onClick={onCreateFromScratch} className="gap-2">
<FileText className="h-4 w-4" />
<DropdownMenuItem onClick={onCreateFromScratch} icon={<FileText className="h-4 w-4" />}>
Create from scratch
</DropdownMenuItem>
<DropdownMenuItem onClick={onCreateFromTemplate} className="gap-2">
<Copy className="h-4 w-4" />
<DropdownMenuItem onClick={onCreateFromTemplate} icon={<Copy className="h-4 w-4" />}>
Create from template
</DropdownMenuItem>
</DropdownMenuContent>

View File

@ -1,6 +1,6 @@
'use client';
import { InternalApiKey } from '@stackframe/stack';
import { DesignDataTable } from "@/components/design-components";
import { DesignCard, DesignDataTable } from "@/components/design-components";
import { ActionCell, ActionDialog, BadgeCell, DataTableColumnHeader, DataTableFacetedFilter, DateCell, SearchToolbarItem, TextCell, standardFilterFn } from "@/components/ui";
import { ColumnDef, Row, Table } from "@tanstack/react-table";
import { useMemo, useState } from "react";
@ -144,12 +144,13 @@ export function InternalApiKeyTable(props: { apiKeys: InternalApiKey[], showPubl
});
}, [props.apiKeys]);
return <DesignDataTable
data={extendedApiKeys}
columns={columns}
toolbarRender={toolbarRender}
defaultColumnFilters={[{ id: 'status', value: ['valid'] }]}
defaultSorting={[]}
glassmorphic
/>;
return <DesignCard glassmorphic>
<DesignDataTable
data={extendedApiKeys}
columns={columns}
toolbarRender={toolbarRender}
defaultColumnFilters={[{ id: 'status', value: ['valid'] }]}
defaultSorting={[]}
/>
</DesignCard>;
}

View File

@ -166,7 +166,7 @@ export function RepeatingInput({
disabled={disabled || readOnly}
className={cn(
"rounded-r-none border-0 focus-visible:ring-0 focus-visible:ring-offset-0",
prefix && "pl-7",
prefix && "!pl-7",
inputClassName
)}
/>