Compare commits

..

20 Commits

Author SHA1 Message Date
Henry
a7062f8cfb chore: update translations 2025-07-23 22:43:26 +01:00
Henry
40f40a0329 chore: update hero images for docs 2025-07-23 22:29:58 +01:00
Henry
4bc1cc1eda chore: update hero images 2025-07-23 22:28:19 +01:00
Henry
3743fcd88d fix: hide side nav right border on desktop 2025-07-23 22:27:51 +01:00
Henry
8fb1da8224 feat: extend list max height 2025-07-23 22:06:20 +01:00
Henry
a6946094f3 feat: tweak skeleton loaders for board list 2025-07-23 22:00:46 +01:00
Henry
e3b25abccb feat: tweak nav styling for light mode 2025-07-23 21:57:55 +01:00
Henry
74a0dc2fc0 fix: hide pro badge when collapsed 2025-07-22 23:08:00 +01:00
Henry
6c6fd4bd32 feat: extend mobile layout support 2025-07-22 22:55:42 +01:00
Henry
09066fa47d feat: adjust page max width 2025-07-20 10:38:04 +01:00
Henry
089723d748 feat: add feedback button and modal 2025-07-18 23:11:46 +01:00
Henry
18c7faac19 feat: reduce max width for settings and members pages 2025-07-18 16:49:26 +01:00
Henry
076fe1d922 fix: use getLayout to persist layout state across pages 2025-07-18 16:48:45 +01:00
Henry
c58c8c753c fix: use correct colour for description placeholder 2025-07-17 22:15:42 +01:00
Henry
789b48b715 feat: adjust dashboard border colour scheme and radius 2025-07-17 22:15:01 +01:00
Henry
9feb2d3d07 feat: adjust colour scheme for card view 2025-07-17 22:12:07 +01:00
Henry
54479764f6 feat: set max width for main card view 2025-07-17 21:29:29 +01:00
Henry
5c12221f09 fix: prevent patterned background from overlaying buttons 2025-07-17 21:27:57 +01:00
Henry
b9c3ffe7ab feat: setup dashboard 2.0 2025-07-16 22:55:04 +01:00
Henry
63d948cc06 feat: add patterned background to boards 2025-07-16 22:46:08 +01:00
3 changed files with 8 additions and 32 deletions

View File

@@ -97,7 +97,7 @@ export default function MembersPage() {
</td>
<td
className={twMerge(
"w-auto min-w-[120px] overflow-visible sm:w-[35%] sm:min-w-[150px]",
"w-auto min-w-[120px] sm:w-[35%] sm:min-w-[150px]",
isLastRow && "rounded-br-lg",
)}
>
@@ -121,7 +121,7 @@ export default function MembersPage() {
</div>
<div
className={twMerge(
"relative z-50",
"relative",
(workspace.role !== "admin" || showSkeleton) && "hidden",
)}
>
@@ -172,10 +172,10 @@ export default function MembersPage() {
</div>
<div className="mt-8 flow-root">
<div className="-mx-4 -my-2 sm:-mx-6 lg:-mx-8">
<div className="inline-block min-w-full overflow-x-auto px-4 py-2 pb-16 align-middle sm:px-6 lg:px-8">
<div className="-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
<div className="inline-block min-w-full px-4 py-2 align-middle sm:px-6 lg:px-8">
<div className="h-full shadow ring-1 ring-black ring-opacity-5 sm:rounded-lg">
<table className="min-w-full divide-y divide-light-600 overflow-visible dark:divide-dark-600">
<table className="min-w-full divide-y divide-light-600 dark:divide-dark-600">
<thead className="rounded-t-lg bg-light-300 dark:bg-dark-200">
<tr>
<th
@@ -192,7 +192,7 @@ export default function MembersPage() {
</th>
</tr>
</thead>
<tbody className="divide-y divide-light-600 overflow-visible bg-light-50 dark:divide-dark-600 dark:bg-dark-100">
<tbody className="divide-y divide-light-600 bg-light-50 dark:divide-dark-600 dark:bg-dark-100">
{!isLoading &&
data?.members.map((member, index) => (
<TableRow

View File

@@ -166,19 +166,9 @@ export const initAuth = (db: dbClient) => {
databaseHooks: {
user: {
create: {
async before(user) {
before() {
if (env("NEXT_PUBLIC_DISABLE_SIGN_UP")?.toLowerCase() === "true") {
const pendingInvitation = await memberRepo.getByEmailAndStatus(
db,
user.email,
"invited",
);
if (!pendingInvitation) {
return Promise.resolve(false);
}
return Promise.resolve(true);
return Promise.resolve(false);
}
return Promise.resolve(true);
},

View File

@@ -41,20 +41,6 @@ export const getByPublicId = async (db: dbClient, publicId: string) => {
});
};
export const getByEmailAndStatus = async (
db: dbClient,
email: string,
status: MemberStatus,
) => {
return db.query.workspaceMembers.findFirst({
where: and(
eq(workspaceMembers.email, email),
eq(workspaceMembers.status, status),
isNull(workspaceMembers.deletedAt),
),
});
};
export const acceptInvite = async (
db: dbClient,
args: { memberId: number; userId: string },