feat(beta): public spaces (#2473)

This commit is contained in:
Philip Okugbe
2026-09-05 11:52:10 +01:00
committed by GitHub
parent f4796c982e
commit 876f3da1b2
117 changed files with 7592 additions and 715 deletions
@@ -0,0 +1,79 @@
import {
IsBoolean,
IsNotEmpty,
IsOptional,
IsString,
IsUUID,
Matches,
ValidateNested,
} from 'class-validator';
import { Type } from 'class-transformer';
import { LookupDto } from '../../page/transclusion/dto/lookup.dto';
export const APPEARANCE_HEX_REGEX = /^#[0-9a-fA-F]{6}$/;
export class PublicSpaceSlugDto {
@IsString()
@IsNotEmpty()
spaceSlug: string;
}
export class PublicSpacePageDto extends PublicSpaceSlugDto {
@IsString()
@IsOptional()
pageSlugId?: string;
@IsOptional()
@IsBoolean()
contentless?: boolean;
}
export class PublicSpaceTransclusionLookupDto extends LookupDto {
@IsString()
@IsNotEmpty()
spaceSlug!: string;
}
export class PublicSpaceAppearanceDto {
@IsOptional()
@Matches(APPEARANCE_HEX_REGEX)
primaryColorLight?: string | null;
@IsOptional()
@Matches(APPEARANCE_HEX_REGEX)
primaryColorDark?: string | null;
}
export class PublishSpaceDto {
@IsUUID()
spaceId: string;
@IsBoolean()
enabled: boolean;
@IsOptional()
@IsBoolean()
searchIndexing?: boolean;
@IsOptional()
@ValidateNested()
@Type(() => PublicSpaceAppearanceDto)
appearance?: PublicSpaceAppearanceDto;
@IsOptional()
@IsBoolean()
bylineAuthor?: boolean;
@IsOptional()
@IsBoolean()
bylineUpdatedAt?: boolean;
@IsOptional()
@IsBoolean()
directory?: boolean;
}
export class PublicSpaceForSpaceDto {
@IsUUID()
spaceId: string;
}