From c4226bc63d74bce3215749c07fc6089b42dbf1bd Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 8 Mar 2026 22:24:24 -0700 Subject: [PATCH] Add board share management UI --- public/intl/messages/en-US.json | 2 +- src/app/(main)/boards/BoardProvider.tsx | 4 +- .../(main)/boards/[boardId]/BoardEditForm.tsx | 2 +- .../boards/[boardId]/BoardShareButton.tsx | 19 +++++ .../boards/[boardId]/BoardShareCreateForm.tsx | 57 +++++++++++++++ .../boards/[boardId]/BoardShareDialog.tsx | 62 ++++++++++++++++ .../boards/[boardId]/BoardSharesTable.tsx | 52 +++++++++++++ .../(main)/boards/[boardId]/BoardViewBody.tsx | 4 +- .../boards/[boardId]/BoardViewColumn.tsx | 12 ++- .../boards/[boardId]/BoardViewHeader.tsx | 24 ++++-- .../(main)/boards/[boardId]/BoardViewPage.tsx | 18 ++++- .../(main)/boards/[boardId]/BoardViewRow.tsx | 10 ++- .../(main)/boards/useBoardEntityBadgeProps.ts | 14 +++- .../[websiteId]/settings/SharesTable.tsx | 10 ++- src/app/api/boards/[boardId]/route.ts | 8 +- src/app/api/boards/[boardId]/shares/route.ts | 73 +++++++++++++++++++ src/app/api/boards/route.ts | 7 +- src/app/api/share/[slug]/route.ts | 30 +++++++- src/app/share/ShareProvider.tsx | 11 ++- .../share/[slug]/[[...path]]/SharePage.tsx | 17 ++++- src/components/common/CopyButton.tsx | 45 ++++++++++++ src/components/hooks/index.ts | 1 + .../hooks/queries/useBoardSharesQuery.ts | 17 +++++ src/components/input/DialogButton.tsx | 6 +- src/lib/boards.ts | 51 +++++++++++-- src/lib/entity.ts | 17 +++-- src/lib/types.ts | 4 +- src/permissions/board.ts | 30 +++++++- src/permissions/entity.ts | 12 +++ src/permissions/website.ts | 2 +- 30 files changed, 565 insertions(+), 56 deletions(-) create mode 100644 src/app/(main)/boards/[boardId]/BoardShareButton.tsx create mode 100644 src/app/(main)/boards/[boardId]/BoardShareCreateForm.tsx create mode 100644 src/app/(main)/boards/[boardId]/BoardShareDialog.tsx create mode 100644 src/app/(main)/boards/[boardId]/BoardSharesTable.tsx create mode 100644 src/app/api/boards/[boardId]/shares/route.ts create mode 100644 src/components/common/CopyButton.tsx create mode 100644 src/components/hooks/queries/useBoardSharesQuery.ts diff --git a/public/intl/messages/en-US.json b/public/intl/messages/en-US.json index d0957d11e..08a664e1e 100644 --- a/public/intl/messages/en-US.json +++ b/public/intl/messages/en-US.json @@ -202,7 +202,7 @@ "number-of-records": "{x} {x, plural, one {record} other {records}}", "ok": "OK", "online": "Online", - "open": "Open", + "open": "Mixed", "organic-search": "Organic search", "organic-shopping": "Organic shopping", "organic-social": "Organic social", diff --git a/src/app/(main)/boards/BoardProvider.tsx b/src/app/(main)/boards/BoardProvider.tsx index a196f8d5c..01b957a08 100644 --- a/src/app/(main)/boards/BoardProvider.tsx +++ b/src/app/(main)/boards/BoardProvider.tsx @@ -22,7 +22,7 @@ export interface BoardContextValue { export const BoardContext = createContext(null); const createDefaultBoard = (): Partial => ({ - type: BOARD_TYPES.open, + type: BOARD_TYPES.mixed, name: '', description: '', parameters: { @@ -93,7 +93,7 @@ export function BoardProvider({ } return post('/boards', { ...boardData, - type: boardData.type || BOARD_TYPES.open, + type: boardData.type || BOARD_TYPES.mixed, slug: '', teamId, }); diff --git a/src/app/(main)/boards/[boardId]/BoardEditForm.tsx b/src/app/(main)/boards/[boardId]/BoardEditForm.tsx index 8a9ce75db..b5843d615 100644 --- a/src/app/(main)/boards/[boardId]/BoardEditForm.tsx +++ b/src/app/(main)/boards/[boardId]/BoardEditForm.tsx @@ -125,7 +125,7 @@ export function BoardEditForm() { >