powerpointproto slides.waow.tech
slides
at main 73 lines 1.5 kB view raw
1// collection names 2export const DECK = "tech.waow.slides.deck"; 3export const SLIDE = "tech.waow.slides.slide"; 4 5export type ShapeType = "rectangle" | "ellipse" | "triangle"; 6 7export type BlobRef = { 8 $type: "blob"; 9 ref: { $link: string }; 10 mimeType: string; 11 size: number; 12}; 13 14export type StrongRef = { 15 uri: string; 16 cid: string; 17}; 18 19export type SlideRef = { 20 subject: StrongRef; 21}; 22 23export type Element = { 24 type: "text" | "image" | "shape"; 25 x: number; 26 y: number; 27 width: number; 28 height: number; 29 content?: string; 30 blob?: BlobRef; 31 fontSize?: number; 32 fontFamily?: string; 33 color?: string; 34 shapeType?: ShapeType; 35}; 36 37// slide record as stored in ATProto 38export type SlideRecord = { 39 elements: Element[]; 40 notes?: string; 41 background?: string; 42 createdAt: string; 43}; 44 45// slide with resolved metadata for UI 46export type Slide = SlideRecord & { 47 uri?: string; 48 cid?: string; 49 rkey?: string; 50}; 51 52// deck record as stored in ATProto (references slides via strongRef) 53export type DeckRecord = { 54 name: string; 55 slides: SlideRef[]; 56 createdAt: string; 57 updatedAt?: string; 58 thumbnail?: BlobRef; 59}; 60 61// deck with resolved slides for UI 62export type Deck = { 63 uri?: string; 64 repo?: string; 65 rkey?: string; 66 name: string; 67 slides: Slide[]; 68 slideCount?: number; // for shallow decks before slides are resolved 69 createdAt: string; 70 updatedAt?: string; 71 thumbnail?: BlobRef; 72 thumbnailUrl?: string; // resolved blob URL for display 73};