@adminide-stack/yantra-mobile 12.0.131 → 12.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/lib/components/CustomDrawer.js +2 -2
  2. package/lib/components/CustomDrawer.js.map +1 -1
  3. package/lib/features/apps/AppsCatalog.js +7 -1
  4. package/lib/features/apps/AppsCatalog.js.map +1 -1
  5. package/lib/features/apps/nativeSurfaceTwin.js +35 -0
  6. package/lib/features/apps/nativeSurfaceTwin.js.map +1 -0
  7. package/lib/features/canvas/CanvasBoardsGrid.js +49 -49
  8. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
  9. package/lib/features/canvas/CanvasExperience.js +69 -28
  10. package/lib/features/canvas/CanvasExperience.js.map +1 -1
  11. package/lib/features/canvas/audioEditor/AudioWaveform.js +1 -1
  12. package/lib/features/canvas/designCatalog.js +63 -39
  13. package/lib/features/canvas/designCatalog.js.map +1 -1
  14. package/lib/features/canvas/designCategories.js +56 -0
  15. package/lib/features/canvas/designCategories.js.map +1 -1
  16. package/lib/features/canvas/generator/DirectorSheet.js +3 -2
  17. package/lib/features/canvas/generator/DirectorSheet.js.map +1 -1
  18. package/lib/features/canvas/home/HeroComposer.js +165 -76
  19. package/lib/features/canvas/home/HeroComposer.js.map +1 -1
  20. package/lib/features/canvas/home/HeroMonitor.js +75 -46
  21. package/lib/features/canvas/home/HeroMonitor.js.map +1 -1
  22. package/lib/features/canvas/home/TemplatesGallery.js +273 -138
  23. package/lib/features/canvas/home/TemplatesGallery.js.map +1 -1
  24. package/lib/features/canvas/home/templatesGallerySources.js +221 -0
  25. package/lib/features/canvas/home/templatesGallerySources.js.map +1 -0
  26. package/lib/features/canvas/homeWork.js +12 -11
  27. package/lib/features/canvas/homeWork.js.map +1 -1
  28. package/lib/features/canvas/lazyEditors.js +51 -0
  29. package/lib/features/canvas/lazyEditors.js.map +1 -0
  30. package/lib/features/canvas/rankedCatalogSearch.js +33 -23
  31. package/lib/features/canvas/rankedCatalogSearch.js.map +1 -1
  32. package/lib/features/canvas/set/SetViewportWebView.js +1 -1
  33. package/lib/features/canvas/set/agent/tools.js +1 -1
  34. package/lib/features/canvas/studioCatalog.js +2 -2
  35. package/lib/features/canvas/studioCatalog.js.map +1 -1
  36. package/lib/features/canvas/templateSearch.js +8 -1
  37. package/lib/features/canvas/templateSearch.js.map +1 -1
  38. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js +1 -1
  39. package/lib/features/design/DesignEditorExperience.js +103 -29
  40. package/lib/features/design/DesignEditorExperience.js.map +1 -1
  41. package/lib/features/design/DesignExperience.js +4 -3
  42. package/lib/features/design/DesignExperience.js.map +1 -1
  43. package/lib/features/design/doc/aiDesign.js +1 -1
  44. package/lib/features/design/doc/aiDesign.js.map +1 -1
  45. package/lib/features/design/doc/artifacts.js +40 -13
  46. package/lib/features/design/doc/artifacts.js.map +1 -1
  47. package/lib/features/design/doc/chart.js +387 -13
  48. package/lib/features/design/doc/chart.js.map +1 -1
  49. package/lib/features/design/doc/copyStyle.js +47 -0
  50. package/lib/features/design/doc/copyStyle.js.map +1 -0
  51. package/lib/features/design/doc/docOps.js +22 -4
  52. package/lib/features/design/doc/docOps.js.map +1 -1
  53. package/lib/features/design/doc/geometry.js +32 -18
  54. package/lib/features/design/doc/geometry.js.map +1 -1
  55. package/lib/features/design/doc/newDoc.js +5 -1
  56. package/lib/features/design/doc/newDoc.js.map +1 -1
  57. package/lib/features/design/doc/resize.js +101 -0
  58. package/lib/features/design/doc/resize.js.map +1 -0
  59. package/lib/features/design/doc/sizes.js +15 -2
  60. package/lib/features/design/doc/sizes.js.map +1 -1
  61. package/lib/features/design/editor/ChartDataPanel.js +49 -9
  62. package/lib/features/design/editor/ChartDataPanel.js.map +1 -1
  63. package/lib/features/design/editor/CropOverlay.js +1 -1
  64. package/lib/features/design/editor/DesignCanvas.js +14 -13
  65. package/lib/features/design/editor/DesignCanvas.js.map +1 -1
  66. package/lib/features/design/editor/ExportSheet.js +8 -4
  67. package/lib/features/design/editor/ExportSheet.js.map +1 -1
  68. package/lib/features/design/editor/LayerTools.js +37 -5
  69. package/lib/features/design/editor/LayerTools.js.map +1 -1
  70. package/lib/features/design/editor/Slideshow.js +30 -5
  71. package/lib/features/design/editor/Slideshow.js.map +1 -1
  72. package/lib/features/design/editor/useDesignSave.js +21 -36
  73. package/lib/features/design/editor/useDesignSave.js.map +1 -1
  74. package/lib/features/design/export/exportDesign.js +3 -1
  75. package/lib/features/design/export/exportDesign.js.map +1 -1
  76. package/lib/features/design/home/DesignHome.js +7 -2
  77. package/lib/features/design/home/DesignHome.js.map +1 -1
  78. package/lib/features/design/render/DesignPageView.js +1 -1
  79. package/lib/features/design/render/DesignPageView.js.map +1 -1
  80. package/lib/features/design/render/PageCapture.js +11 -10
  81. package/lib/features/design/render/PageCapture.js.map +1 -1
  82. package/lib/features/design/render/fontRegistry.js +27 -3
  83. package/lib/features/design/render/fontRegistry.js.map +1 -1
  84. package/lib/features/design/render/svgParts.js +27 -74
  85. package/lib/features/design/render/svgParts.js.map +1 -1
  86. package/lib/features/devices/brands/qnScale.js +7 -2
  87. package/lib/features/devices/brands/qnScale.js.map +1 -1
  88. package/lib/features/devices/brands/uuids.js +2 -1
  89. package/lib/features/devices/brands/uuids.js.map +1 -1
  90. package/lib/features/devices/devices.js +2 -1
  91. package/lib/features/devices/devices.js.map +1 -1
  92. package/lib/features/docs/DocBlockRow.js +1 -1
  93. package/lib/features/docs/docArtifacts.js +2 -2
  94. package/lib/features/docs/docArtifacts.js.map +1 -1
  95. package/lib/features/health/healthSync.js +3 -1
  96. package/lib/features/health/healthSync.js.map +1 -1
  97. package/lib/features/health/nativeHealth.js +8 -0
  98. package/lib/features/health/nativeHealth.js.map +1 -0
  99. package/lib/features/links/openInApp.js +11 -1
  100. package/lib/features/links/openInApp.js.map +1 -1
  101. package/lib/features/webbuilder/WebBuilderExperience.js +135 -28
  102. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  103. package/lib/features/webbuilder/buildFragments.js +14 -6
  104. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  105. package/lib/features/webbuilder/components/PreviewFrame.js +28 -3
  106. package/lib/features/webbuilder/components/PreviewFrame.js.map +1 -1
  107. package/lib/features/webbuilder/components/PreviewScreen.js +1 -1
  108. package/lib/features/webbuilder/components/PreviewScreen.js.map +1 -1
  109. package/lib/features/webbuilder/components/ProjectChat.js +24 -5
  110. package/lib/features/webbuilder/components/ProjectChat.js.map +1 -1
  111. package/lib/features/webbuilder/components/ProjectsScreen.js +18 -2
  112. package/lib/features/webbuilder/components/ProjectsScreen.js.map +1 -1
  113. package/lib/features/webbuilder/components/ui.js +20 -6
  114. package/lib/features/webbuilder/components/ui.js.map +1 -1
  115. package/lib/features/webbuilder/exportCode.js +52 -0
  116. package/lib/features/webbuilder/exportCode.js.map +1 -0
  117. package/lib/features/webbuilder/siteAddress.js +71 -0
  118. package/lib/features/webbuilder/siteAddress.js.map +1 -0
  119. package/lib/features/webbuilder/widgetBlocks.js +30 -0
  120. package/lib/features/webbuilder/widgetBlocks.js.map +1 -0
  121. package/lib/screens/Chat/index.js +5 -6
  122. package/lib/screens/Chat/index.js.map +1 -1
  123. package/lib/screens/ChatHistory/index.js +3 -2
  124. package/lib/screens/ChatHistory/index.js.map +1 -1
  125. package/lib/screens/Home/HomeScreen.js +20 -4
  126. package/lib/screens/Home/HomeScreen.js.map +1 -1
  127. package/lib/screens/Home/components/WebBuilderCodePrewarm.js +18 -0
  128. package/lib/screens/Home/components/WebBuilderCodePrewarm.js.map +1 -0
  129. package/lib/screens/WebBuilderNative/index.js +1 -1
  130. package/lib/screens/WebBuilderNative/index.js.map +1 -1
  131. package/lib/screens/WebBuilderNative/keepAlive.js +112 -0
  132. package/lib/screens/WebBuilderNative/keepAlive.js.map +1 -0
  133. package/lib/screens/WebBuilderNative/runningBuilds.js +40 -0
  134. package/lib/screens/WebBuilderNative/runningBuilds.js.map +1 -0
  135. package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js +57 -0
  136. package/lib/screens/WebBuilderNative/useSandboxKeepAlive.js.map +1 -0
  137. package/lib/screens/WebBuilderNative/useWebBuilderGallery.js +73 -14
  138. package/lib/screens/WebBuilderNative/useWebBuilderGallery.js.map +1 -1
  139. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +143 -34
  140. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  141. package/lib/screens/WebBuilderNative/useWebBuilderJobs.js +17 -5
  142. package/lib/screens/WebBuilderNative/useWebBuilderJobs.js.map +1 -1
  143. package/lib/screens/WebBuilderNative/versionUndo.js +144 -0
  144. package/lib/screens/WebBuilderNative/versionUndo.js.map +1 -0
  145. package/lib/screens/WebBuilderNative/webbuilderSnapshotKey.js +1 -0
  146. package/lib/screens/WebBuilderNative/webbuilderSnapshotKey.js.map +1 -0
  147. package/lib/screens/WebBuilderNative/webbuilderTransport.js +90 -6
  148. package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
  149. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasBoardsGrid.js","sources":["../../../src/features/canvas/CanvasBoardsGrid.tsx"],"sourcesContent":["/**\n * Canvas home - native twin of canvas-surface screen one (`CreateStrip` + `YourWork`),\n * laid out for a phone: start something in one tap, then get back to recent work.\n *\n * Create title + theme toggle, the prompt bar (opens AI Chat)\n * Hero \"Direct the shot\": the looping monitor and the shot composer\n * Generate the AI lanes as a 3-up grid of tinted tiles\n * Design formats drawn at their own proportions\n * Tools editors and studios as one scrolling row of pills\n * Looks featured studio looks, cover-first\n * Templates \"Templates for you\": flyers and slides interleaved over two rows, at their own shapes\n * Seedance \"Made with Seedance 2.0\": community clips (credited), their prompt one tap away\n * Your work boards and designs merged newest first, filtered by kind\n *\n * Web puts Templates and Seedance after Your work; here Your work is the long\n * paged list, so both sit above it, still in the list header.\n *\n * Your work shows three rows, then \"Show all N\" (web YourWork); expanded, it\n * renders 10 tiles at a time and scrolling to the bottom appends the next 10.\n *\n * One clip plays at a time: the hero monitor or the centred Seedance tile,\n * whichever is nearer the middle of the screen (`pickPlayingRegion`).\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatList,\n Linking,\n ScrollView,\n StyleSheet,\n Text,\n useWindowDimensions,\n View,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n} from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Image } from 'expo-image';\nimport type { CanvasBoardSummary } from './surfaceIndex';\nimport type { DesignDocSummary } from '../design/designIndex';\nimport type { DesignLayer, PersistedDesignDoc } from '../design/designCore';\nimport type { DesignArtifact } from '../design/doc/artifacts';\nimport type { DocArtifact } from '../docs/docArtifacts';\nimport { DesignPageView } from '../design/render/DesignPageView';\nimport { isUnsetBoardTitle, type CanvasItem } from './canvasCore';\nimport { CANVAS_BOARD_PAGE_SIZE } from './canvasBoardsCatalog';\nimport type { StudioLook } from './studioLooks';\nimport type { CreateAction, visibleCreateGroups } from './createTiles';\nimport type { DesignCatalogCard } from './designCatalog';\nimport type { ShowcaseClip } from './seedanceShowcase';\nimport {\n WORK_ARTIFACTS,\n WORK_FILTERS,\n availableFilters,\n boardCover,\n collapsedWorkCount,\n designNoun,\n docPreviewLines,\n matchesFilter,\n mergeWork,\n pageCount,\n showAllLabel,\n studioNoun,\n videoCoverFrame,\n type WorkFilter,\n type WorkItem,\n} from './homeWork';\nimport { HeroComposer } from './home/HeroComposer';\nimport { LookDetail } from './home/LookDetail';\nimport { LoopingVideo } from './home/LoopingVideo';\nimport { centredIndex, pickPlayingRegion, type HeroSettings } from './home/heroShots';\nimport { resultUrl, type RunMediaAction } from './videoEditor/mediaActions';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { renewMediaUrl, useMediaSource } from './useMediaSource';\nimport { CanvasThemeToggle, useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport {\n CoverPlaceholder,\n Pressable,\n RADIUS,\n SPACE,\n SectionHeader,\n Segmented,\n Skeleton,\n TYPE,\n pressedStyle,\n} from './canvasUi';\n\ntype IconName = React.ComponentProps<typeof MaterialCommunityIcons>['name'];\ntype VisibleGroup = ReturnType<typeof visibleCreateGroups>[number];\ntype VisibleTile = VisibleGroup['tiles'][number];\n\nconst MINUTE = 60_000;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst GUTTER = SPACE.lg;\n/** How long a cover may load before the skeleton gives way to its tinted placeholder (the image keeps loading). */\nconst COVER_STALL_MS = 12_000;\n\nfunction relativeTime(ts: number): string {\n const diff = Date.now() - ts;\n if (diff < HOUR) return `${Math.max(1, Math.round(diff / MINUTE))}m ago`;\n if (diff < DAY) return `${Math.round(diff / HOUR)}h ago`;\n if (diff < 30 * DAY) return `${Math.round(diff / DAY)}d ago`;\n return new Date(ts).toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n}\n\n/**\n * Each AI lane keeps one hue so it is found by colour as well as by name.\n * Light: a pale wash with the 700 step as ink; dark: a low-alpha wash with the 300 step.\n */\nconst LANE_HUES: Record<string, { light: [string, string]; dark: [string, string] }> = {\n image: { light: ['#fef3c7', '#b45309'], dark: ['rgba(251,191,36,0.14)', '#fcd34d'] },\n video: { light: ['#ffe4e6', '#be123c'], dark: ['rgba(251,113,133,0.14)', '#fda4af'] },\n audio: { light: ['#e0f2fe', '#0369a1'], dark: ['rgba(56,189,248,0.14)', '#7dd3fc'] },\n slides: { light: ['#ede9fe', '#6d28d9'], dark: ['rgba(167,139,250,0.16)', '#c4b5fd'] },\n clips: { light: ['#d1fae5', '#047857'], dark: ['rgba(52,211,153,0.14)', '#6ee7b7'] },\n promo: { light: ['#ffedd5', '#c2410c'], dark: ['rgba(251,146,60,0.14)', '#fdba74'] },\n};\n\n/** Design formats drawn at their real proportions (w:h), so the row reads as \"what shape\". */\nconst FORMAT_SHAPE: Record<string, { w: number; h: number; stack?: boolean; round?: boolean }> = {\n presentation: { w: 16, h: 9, stack: true },\n social: { w: 1, h: 1 },\n carousel: { w: 4, h: 5, stack: true },\n flyer: { w: 3, h: 4 },\n 'business-card': { w: 7, h: 4, stack: true },\n logo: { w: 1, h: 1, round: true },\n banner: { w: 3, h: 1 },\n brochure: { w: 11, h: 8.5, stack: true },\n branding: { w: 8.5, h: 11 },\n doc: { w: 8.5, h: 11 },\n custom: { w: 5, h: 4 },\n tshirt: { w: 5, h: 6 },\n};\n\n/** Phone height of a \"Templates for you\" cover (web TemplateRails `compact`). */\nconst TEMPLATE_HEIGHT = 176;\n/** Loading stand-ins: an A4 sheet and a 16:9 slide, alternating, like web. */\nconst TEMPLATE_SKELETON_RATIOS = [210 / 297, 16 / 9];\nconst SHOWCASE_WIDTH = 248;\n\n/** \"Templates for you\", already split into its two rows. */\nexport type TemplateRailsState =\n | { status: 'loading'; rows: [DesignCatalogCard[], DesignCatalogCard[]] }\n | { status: 'ready'; rows: [DesignCatalogCard[], DesignCatalogCard[]] }\n | { status: 'failed'; rows: [DesignCatalogCard[], DesignCatalogCard[]] };\n\ntype GridItem =\n | { kind: 'new'; id: string }\n | { kind: 'start'; id: string; sessionId: string }\n | { kind: 'work'; id: string; work: WorkItem };\n\n/** Regions the playback governor weighs, measured inside the list header. */\ntype PlayRegion = 'hero' | 'showcase';\n\nexport function CanvasBoardsGrid({\n boards,\n onOpen,\n onNewCanvas,\n designs = [],\n onOpenDesign,\n studioDesigns = [],\n onOpenStudioDesign,\n docs = [],\n onOpenDoc,\n onAskAgent,\n createGroups = [],\n onCreate,\n featuredLooks = [],\n onRecreateLook,\n onOpenCategory,\n templateRails,\n onOpenTemplate,\n onSeeAllTemplates,\n onRetryTemplates,\n showcase = [],\n onUseShowcasePrompt,\n runAction,\n onStartWithPrompt,\n onPickReference,\n onBrowseTemplates,\n studioMore = false,\n studioError = null,\n onRetryStudioDesigns,\n onExpandWork,\n currentSessionId,\n onOpenSession,\n}: {\n boards: CanvasBoardSummary[];\n onOpen: (channelId: string) => void;\n onNewCanvas: () => void;\n designs?: DesignDocSummary[];\n onOpenDesign?: (channelId: string) => void;\n /** Design studio designs (phone and web alike), drawn from their first page. */\n studioDesigns?: DesignArtifact[];\n onOpenStudioDesign?: (artifactId: string) => void;\n /** Rich-text docs (`doc:` rows, phone and web alike), drawn as a sheet of paper. */\n docs?: DocArtifact[];\n onOpenDoc?: (docId: string) => void;\n onAskAgent?: () => void;\n /** Screen one's Create rows (web CreateStrip), already narrowed to what this host runs. */\n createGroups?: ReturnType<typeof visibleCreateGroups>;\n onCreate?: (action: CreateAction, tileId: string) => void;\n /** Web Featured Looks rail on home. */\n featuredLooks?: StudioLook[];\n onRecreateLook?: (look: StudioLook) => void;\n /**\n * A Design & write tile with a category gallery (flyer, business card...):\n * answers true when it opened one, else the tile runs its own action.\n */\n onOpenCategory?: (tileId: string) => boolean;\n /** Web \"Templates for you\". Absent: templates cannot open on this host, the section hides. */\n templateRails?: TemplateRailsState;\n onOpenTemplate?: (templateId: string) => void;\n onSeeAllTemplates?: () => void;\n onRetryTemplates?: () => void;\n /** Web \"Made with Seedance 2.0\" (CC-BY clips, credited on the tile). */\n showcase?: readonly ShowcaseClip[];\n onUseShowcasePrompt?: (clip: ShowcaseClip) => void;\n /** Connector runner - renews dead cover links and fetches a real frame for a video-only board. */\n runAction?: RunMediaAction;\n /** Web hero \"Direct the shot\": a fresh canvas, the generator seeded. Absent: no hero. */\n onStartWithPrompt?: (prompt: string, settings: HeroSettings) => void;\n /** Hero Product chip: pick a device image, answer its uploaded URL. */\n onPickReference?: () => Promise<string | null>;\n /** Hero \"Start from a template\": the templates gallery on its Video source. */\n onBrowseTemplates?: () => void;\n /** The design index had rows past the read limit (web `listing.more`). */\n studioMore?: boolean;\n /** The design index read failed; Your work offers Retry. */\n studioError?: string | null;\n onRetryStudioDesigns?: () => void;\n /** \"Show all\" / \"Show less\": the host re-reads 96 designs while expanded. */\n onExpandWork?: (expanded: boolean) => void;\n /** The chat this canvas is scoped to; a \"This chat's canvas\" card while it has no board. */\n currentSessionId?: string;\n onOpenSession?: (sessionId: string) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const { width } = useWindowDimensions();\n const tileWidth = Math.max(140, (width - GUTTER * 3) / 2);\n const laneWidth = (width - GUTTER * 2 - SPACE.sm * 2) / 3;\n const [visible, setVisible] = useState(CANVAS_BOARD_PAGE_SIZE);\n const [expanded, setExpanded] = useState(false);\n const [filter, setFilter] = useState<WorkFilter>('all');\n const [lookIndex, setLookIndex] = useState(-1);\n const renew = useMemo(() => renewMediaUrl(runAction), [runAction]);\n\n const work = useMemo(() => mergeWork(boards, designs, studioDesigns, docs), [boards, designs, studioDesigns, docs]);\n const filters = useMemo(() => availableFilters(work), [work]);\n // A chosen kind that is gone (its last design deleted) falls back to everything.\n const active = filters.includes(filter) ? filter : 'all';\n const shown = useMemo(() => work.filter((item) => matchesFilter(item, active)), [work, active]);\n\n useEffect(() => {\n setVisible(CANVAS_BOARD_PAGE_SIZE);\n }, [boards, designs, studioDesigns, docs, active]);\n\n // Web: only a real chat session gets a \"this chat\" card, and only while it has no board.\n const startSession =\n currentSessionId &&\n onOpenSession &&\n (active === 'all' || active === 'canvases') &&\n !boards.some((b) => b.channelId === currentSessionId)\n ? currentSessionId\n : null;\n const lead: GridItem[] = useMemo(\n () => [\n { kind: 'new', id: '__new__' },\n ...(startSession ? [{ kind: 'start' as const, id: '__start__', sessionId: startSession }] : []),\n ],\n [startSession],\n );\n const collapsedCount = collapsedWorkCount(2);\n const totalTiles = lead.length + shown.length;\n const tiles = useMemo<GridItem[]>(() => {\n const limit = expanded ? visible : Math.max(0, collapsedCount - lead.length);\n return [\n ...lead,\n ...shown\n .slice(0, limit)\n .map((entry) => ({ kind: 'work' as const, id: `${entry.type}:${entry.id}`, work: entry })),\n ];\n }, [lead, shown, visible, expanded, collapsedCount]);\n const toggleExpanded = useCallback(() => {\n setExpanded((was) => {\n onExpandWork?.(!was);\n return !was;\n });\n setVisible(CANVAS_BOARD_PAGE_SIZE);\n }, [onExpandWork]);\n\n // ── Playback governor: one clip at a time, the region nearest mid-screen ──\n const { height: windowHeight } = useWindowDimensions();\n const regions = useRef<Record<PlayRegion, { top: number; height: number }>>({\n hero: { top: 0, height: 0 },\n showcase: { top: 0, height: 0 },\n });\n const viewport = useRef({ top: 0, height: windowHeight });\n const [playing, setPlaying] = useState<PlayRegion | null>(null);\n const [showcaseIndex, setShowcaseIndex] = useState(0);\n const govern = useCallback(() => {\n const next = pickPlayingRegion(\n (Object.keys(regions.current) as PlayRegion[]).map((id) => ({ id, ...regions.current[id] })),\n viewport.current.top,\n viewport.current.height,\n ) as PlayRegion | null;\n setPlaying((prev) => (prev === next ? prev : next));\n }, []);\n const measure = (id: PlayRegion) => (e: LayoutChangeEvent) => {\n const { y, height } = e.nativeEvent.layout;\n // Header children sit below the list's top padding.\n regions.current[id] = { top: y + SPACE.sm, height };\n govern();\n };\n const onListScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, layoutMeasurement } = e.nativeEvent;\n viewport.current = { top: contentOffset.y, height: layoutMeasurement.height };\n govern();\n },\n [govern],\n );\n const onShowcaseScroll = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, layoutMeasurement } = e.nativeEvent;\n const next = centredIndex(\n contentOffset.x,\n layoutMeasurement.width,\n SHOWCASE_WIDTH,\n SPACE.sm,\n GUTTER,\n showcase.length,\n );\n setShowcaseIndex((prev) => (prev === next ? prev : next));\n };\n // A look open full screen plays its own clip; home holds still underneath.\n const playingNow = lookIndex >= 0 ? null : playing;\n\n const rows = useMemo(() => {\n const chunked: GridItem[][] = [];\n for (let i = 0; i < tiles.length; i += 2) chunked.push(tiles.slice(i, i + 2));\n return chunked;\n }, [tiles]);\n\n const loadMore = useCallback(() => {\n if (!expanded) return;\n setVisible((count) => (count >= shown.length ? count : Math.min(count + CANVAS_BOARD_PAGE_SIZE, shown.length)));\n }, [shown.length, expanded]);\n\n const group = (id: string) => createGroups.find((g) => g.id === id);\n const generate = group('generate');\n const edit = group('edit');\n const designGroup = group('design');\n\n const lane = (tile: VisibleTile) => {\n const hue = LANE_HUES[tile.id];\n const [wash, ink] = hue ? (theme.isDark ? hue.dark : hue.light) : [theme.card, theme.foreground];\n return (\n <Pressable\n key={tile.id}\n onPress={() => onCreate?.(tile.action, tile.id)}\n style={({ pressed }) => [\n styles.lane,\n { width: laneWidth, backgroundColor: wash },\n pressedStyle(pressed),\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <MaterialCommunityIcons name={tile.icon as IconName} size={24} color={ink} />\n <Text style={[styles.laneLabel, { color: theme.isDark ? theme.foreground : ink }]} numberOfLines={2}>\n {tile.label}\n </Text>\n </Pressable>\n );\n };\n\n const header = (\n <View style={styles.header}>\n <View style={styles.titleRow}>\n <Text style={styles.title} accessibilityRole=\"header\">\n Create\n </Text>\n <View style={styles.titleActions}>\n {onAskAgent && onStartWithPrompt ? (\n // The hero is the prompt box; AI Chat stays one tap away without a second box.\n <Pressable\n onPress={onAskAgent}\n style={({ pressed }) => [styles.toggle, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open AI Chat\"\n >\n <MaterialCommunityIcons name=\"creation\" size={20} color={theme.foreground} />\n </Pressable>\n ) : null}\n <CanvasThemeToggle size={20} style={styles.toggle} />\n </View>\n </View>\n\n {onAskAgent && !onStartWithPrompt ? (\n <Pressable\n onPress={onAskAgent}\n style={({ pressed }) => [styles.prompt, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Ask AI Chat to make something\"\n >\n <MaterialCommunityIcons name=\"creation\" size={20} color={theme.mutedForeground} />\n <Text style={styles.promptText} numberOfLines={1}>\n Describe what you want to make\n </Text>\n <View style={styles.promptGo}>\n <MaterialCommunityIcons name=\"arrow-up\" size={18} color={theme.primaryForeground} />\n </View>\n </Pressable>\n ) : null}\n\n {onStartWithPrompt ? (\n <View onLayout={measure('hero')}>\n <HeroComposer\n featuredLooks={featuredLooks}\n showcase={showcase}\n playing={playingNow === 'hero'}\n onStartWithPrompt={onStartWithPrompt}\n onPickReference={onPickReference}\n onBrowseTemplates={onBrowseTemplates}\n />\n </View>\n ) : null}\n\n {onCreate && generate ? (\n <View style={styles.section}>\n <SectionHeader title=\"Generate with AI\" />\n <View style={styles.lanes}>{generate.tiles.map(lane)}</View>\n </View>\n ) : null}\n\n {onCreate && designGroup ? (\n <View style={styles.section}>\n <SectionHeader title=\"Design\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {designGroup.tiles.map((tile) => (\n <FormatTile\n key={tile.id}\n tile={tile}\n onPress={() => {\n if (!onOpenCategory?.(tile.id)) onCreate(tile.action, tile.id);\n }}\n />\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {onCreate && edit ? (\n <View style={styles.section}>\n <SectionHeader title=\"Edit & produce\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {edit.tiles.map((tile) => (\n <Pressable\n key={tile.id}\n onPress={() => onCreate(tile.action, tile.id)}\n style={({ pressed }) => [styles.tool, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <MaterialCommunityIcons\n name={tile.icon as IconName}\n size={18}\n color={theme.foreground}\n />\n <Text style={styles.toolLabel}>{tile.label}</Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {featuredLooks.length > 0 && onRecreateLook ? (\n <View style={styles.section}>\n <SectionHeader title=\"Looks\" detail=\"Recreate a studio style\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {featuredLooks.map((look, i) => (\n <Pressable\n key={look.id}\n onPress={() => setLookIndex(i)}\n style={({ pressed }) => [styles.look, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open look ${look.name}`}\n >\n {look.cover ? (\n <Image\n source={{ uri: look.cover }}\n style={StyleSheet.absoluteFill}\n contentFit=\"cover\"\n />\n ) : (\n <View style={[styles.fill, styles.centered]}>\n <MaterialCommunityIcons\n name=\"movie-open-outline\"\n size={22}\n color={theme.mutedForeground}\n />\n </View>\n )}\n <View style={styles.lookCaption}>\n <Text style={styles.lookName} numberOfLines={2}>\n {look.name}\n </Text>\n </View>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {templateRails && onOpenTemplate ? (\n <TemplateRails\n state={templateRails}\n onOpenTemplate={onOpenTemplate}\n onSeeAll={onSeeAllTemplates}\n onRetry={onRetryTemplates}\n />\n ) : null}\n\n {showcase.length > 0 && onUseShowcasePrompt ? (\n <View style={styles.section} onLayout={measure('showcase')}>\n <SectionHeader title=\"Made with Seedance 2.0\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n onScroll={onShowcaseScroll}\n scrollEventThrottle={100}\n >\n {showcase.map((clip, i) => (\n <ShowcaseTile\n key={clip.id}\n clip={clip}\n playing={playingNow === 'showcase' && i === showcaseIndex}\n onUse={() => onUseShowcasePrompt(clip)}\n />\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n <View style={styles.workHead}>\n <SectionHeader\n title=\"Your work\"\n detail={work.length > 0 ? String(work.length) : undefined}\n style={styles.noMargin}\n />\n {filters.length > 0 ? (\n <Segmented\n options={WORK_FILTERS.filter((f) => filters.includes(f.id))}\n value={active}\n onChange={setFilter}\n style={styles.segmented}\n />\n ) : null}\n </View>\n {studioError ? (\n <View style={styles.railError} accessibilityRole=\"alert\">\n <Text style={styles.railErrorText}>Couldn't load your designs.</Text>\n {onRetryStudioDesigns ? (\n <Pressable\n onPress={onRetryStudioDesigns}\n hitSlop={8}\n style={({ pressed }) => [styles.retry, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"refresh\" size={16} color={theme.foreground} />\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n ) : null}\n </View>\n ) : null}\n </View>\n );\n\n const footer =\n totalTiles > collapsedCount || expanded ? (\n <View style={styles.workFooter}>\n <Pressable\n onPress={toggleExpanded}\n style={({ pressed }) => [styles.showAll, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityState={{ expanded }}\n testID=\"your-work-show-all\"\n >\n <Text style={styles.retryLabel}>\n {expanded ? 'Show less' : showAllLabel(shown.length, studioMore)}\n </Text>\n </Pressable>\n {expanded && studioMore ? (\n <Text style={styles.workNote}>\n {`Showing your ${WORK_ARTIFACTS.expanded} most recent designs of each kind.`}\n </Text>\n ) : null}\n </View>\n ) : null;\n\n const renderTile = (item: GridItem) => {\n if (item.kind === 'new') {\n return (\n <Pressable\n onPress={onNewCanvas}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"New canvas\"\n >\n <View style={[styles.cover, styles.coverNew]}>\n <View style={styles.newPlus}>\n <MaterialCommunityIcons name=\"plus\" size={24} color={theme.primaryForeground} />\n </View>\n </View>\n <Text style={styles.workTitle}>New canvas</Text>\n <Text style={styles.workMeta}>Start blank</Text>\n </Pressable>\n );\n }\n if (item.kind === 'start') {\n return (\n <Pressable\n onPress={() => onOpenSession?.(item.sessionId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open this chat's canvas\"\n >\n <View style={[styles.cover, styles.coverNew]}>\n <MaterialCommunityIcons name=\"image-outline\" size={26} color={theme.mutedForeground} />\n </View>\n <Text style={styles.workTitle}>This chat's canvas</Text>\n <Text style={styles.workMeta}>Canvas · Start creating here</Text>\n </Pressable>\n );\n }\n const { work: entry } = item;\n if (entry.type === 'doc') {\n const title = entry.doc.title?.trim() || 'Untitled doc';\n return (\n <Pressable\n onPress={() => onOpenDoc?.(entry.doc.id)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open doc ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n <DocPaper blocks={entry.doc.doc.blocks} title={title} height={tileWidth - SPACE.lg * 2} />\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {`Doc · ${relativeTime(entry.doc.updatedAt)}`}\n </Text>\n </Pressable>\n );\n }\n if (entry.type === 'studio') {\n const { doc, title } = entry.studio;\n const page = doc.pages[0];\n const frame = tileWidth - SPACE.xl * 2;\n const ratio = doc.pageHeight / doc.pageWidth;\n const pageW = ratio > 1 ? frame / ratio : frame;\n // Docs never land here: `doc:` rows are their own work items, drawn by DocPaper.\n const noun = studioNoun(entry.studio);\n const meta = [\n noun,\n doc.pages.length > 1 ? `${doc.pages.length} pages` : '',\n relativeTime(entry.studio.updatedAt),\n ]\n .filter(Boolean)\n .join(' · ');\n return (\n <Pressable\n onPress={() => onOpenStudioDesign?.(entry.studio.id)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${noun.toLowerCase()} ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n {page ? <DesignPageView doc={doc} page={page} width={pageW} /> : null}\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title || 'Untitled design'}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {meta}\n </Text>\n </Pressable>\n );\n }\n if (entry.type === 'design') {\n const { design } = entry;\n const noun = designNoun(design.doc);\n const title = design.title?.trim() || `Untitled ${noun.toLowerCase()}`;\n const meta = [noun, pageCount(design.doc), relativeTime(design.savedAt)].filter(Boolean).join(' · ');\n return (\n <Pressable\n onPress={() => onOpenDesign?.(design.channelId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${noun.toLowerCase()} ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n <DesignThumb\n doc={design.doc}\n maxWidth={tileWidth - SPACE.xl * 2}\n maxHeight={tileWidth - SPACE.xl * 2}\n />\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {meta}\n </Text>\n </Pressable>\n );\n }\n const { board } = entry;\n const cover = boardCover(board.board.items);\n const title = !isUnsetBoardTitle(board.title)\n ? board.title\n : board.board.items.find((it) => it.generatedAssetName)?.generatedAssetName || 'Untitled canvas';\n return (\n <Pressable\n onPress={() => onOpen(board.channelId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open canvas ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n {cover ? (\n <BoardCover\n key={cover.src}\n item={cover}\n seed={board.channelId}\n runAction={runAction}\n renew={renew}\n />\n ) : (\n <CoverPlaceholder seed={board.channelId} icon=\"image-multiple-outline\" />\n )}\n {board.itemCount > 1 ? (\n <View style={styles.countBadge} pointerEvents=\"none\">\n <Text style={styles.countBadgeText}>{board.itemCount}</Text>\n </View>\n ) : null}\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {`Canvas · ${relativeTime(board.savedAt)}`}\n </Text>\n </Pressable>\n );\n };\n\n return (\n <View style={styles.plane}>\n {work.length === 0 ? (\n <ScrollView\n contentContainerStyle={styles.list}\n showsVerticalScrollIndicator={false}\n onScroll={onListScroll}\n scrollEventThrottle={100}\n >\n {header}\n <View style={styles.empty}>\n <View style={styles.emptyIcon}>\n <MaterialCommunityIcons name=\"image-multiple-outline\" size={26} color={theme.foreground} />\n </View>\n <Text style={styles.emptyTitle}>Nothing here yet</Text>\n <Text style={styles.emptyDetail}>\n Every chat gets its own canvas. Generate an image, video or audio and it lands here.\n </Text>\n <Pressable\n onPress={onNewCanvas}\n style={({ pressed }) => [styles.emptyCta, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"plus\" size={18} color={theme.primaryForeground} />\n <Text style={styles.emptyCtaLabel}>New canvas</Text>\n </Pressable>\n </View>\n </ScrollView>\n ) : (\n <FlatList\n data={rows}\n keyExtractor={(pair) => pair.map((item) => item.id).join(':')}\n contentContainerStyle={styles.list}\n showsVerticalScrollIndicator={false}\n onEndReached={loadMore}\n onEndReachedThreshold={0.4}\n onScroll={onListScroll}\n scrollEventThrottle={100}\n ListHeaderComponent={header}\n ListFooterComponent={footer}\n renderItem={({ item: pair }) => (\n <View style={styles.row}>\n {pair.map((entry) => (\n <View key={entry.id}>{renderTile(entry)}</View>\n ))}\n {pair.length < 2 ? <View style={{ width: tileWidth }} /> : null}\n </View>\n )}\n />\n )}\n {onRecreateLook ? (\n <LookDetail\n looks={featuredLooks}\n index={lookIndex}\n onIndexChange={setLookIndex}\n onRecreate={(look) => {\n setLookIndex(-1);\n onRecreateLook(look);\n }}\n onClose={() => setLookIndex(-1)}\n />\n ) : null}\n </View>\n );\n}\n\n/**\n * Web TemplateRails on a phone: one heading, two swipeable rows of covers at\n * their own page shape (176 high), skeletons while the catalog reads.\n */\nfunction TemplateRails({\n state,\n onOpenTemplate,\n onSeeAll,\n onRetry,\n}: {\n state: TemplateRailsState;\n onOpenTemplate: (templateId: string) => void;\n onSeeAll?: () => void;\n onRetry?: () => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const count = state.rows[0].length + state.rows[1].length;\n const pending = state.status === 'loading';\n if (state.status === 'ready' && count === 0) return null;\n return (\n <View style={styles.section}>\n <SectionHeader title=\"Templates for you\" action={onSeeAll ? 'See all' : undefined} onAction={onSeeAll} />\n {state.status === 'failed' ? (\n <View style={styles.railError}>\n <Text style={styles.railErrorText}>\n {count ? \"Some templates couldn't load.\" : \"Templates couldn't load.\"}\n </Text>\n {onRetry ? (\n <Pressable\n onPress={onRetry}\n hitSlop={8}\n style={({ pressed }) => [styles.retry, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"refresh\" size={16} color={theme.foreground} />\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n ) : null}\n </View>\n ) : null}\n {state.rows.map((row, index) =>\n row.length || pending ? (\n <ScrollView\n key={index}\n horizontal\n showsHorizontalScrollIndicator={false}\n style={[styles.bleed, index === 0 && styles.templateRowGap]}\n contentContainerStyle={styles.railContent}\n >\n {row.map((card) => (\n <TemplateCover key={card.id} card={card} onPress={() => onOpenTemplate(card.id)} />\n ))}\n {pending\n ? Array.from({ length: row.length ? 2 : 4 }, (_, i) => (\n <Skeleton\n key={`skeleton-${i}`}\n radius={RADIUS.md}\n style={{\n width: Math.round(\n TEMPLATE_HEIGHT *\n TEMPLATE_SKELETON_RATIOS[\n (i + index) % TEMPLATE_SKELETON_RATIOS.length\n ],\n ),\n height: TEMPLATE_HEIGHT,\n }}\n />\n ))\n : null}\n </ScrollView>\n ) : null,\n )}\n </View>\n );\n}\n\nfunction TemplateCover({ card, onPress }: { card: DesignCatalogCard; onPress: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const [loaded, setLoaded] = useState(false);\n // A web banner (728 x 90) would run off the screen; cap it like a wide slide.\n const width = Math.min(Math.round((TEMPLATE_HEIGHT * card.pageWidth) / card.pageHeight), TEMPLATE_HEIGHT * 2);\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.templateCover, { width, height: TEMPLATE_HEIGHT }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Use template ${card.title}`}\n >\n {loaded ? null : <Skeleton />}\n <Image\n source={{ uri: card.coverUrl }}\n style={StyleSheet.absoluteFill}\n contentFit=\"contain\"\n transition={150}\n onLoad={() => setLoaded(true)}\n />\n </Pressable>\n );\n}\n\n/**\n * A Seedance community clip: its poster, its title, the credit its CC-BY\n * licence requires (tap opens the original post) and its prompt one tap away.\n */\nfunction ShowcaseTile({ clip, playing, onUse }: { clip: ShowcaseClip; playing: boolean; onUse: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const openSource = () => {\n void Linking.openURL(clip.sourceUrl).catch(() => undefined);\n };\n return (\n <View style={styles.showcase}>\n <Pressable\n onPress={onUse}\n style={({ pressed }) => [styles.showcasePoster, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Use the prompt from ${clip.title}`}\n >\n <CoverPlaceholder seed={clip.id} icon=\"play\" />\n {/* The centred tile loops its clip (governed: one player on home); the rest hold their poster. */}\n <LoopingVideo src={clip.hls} poster={clip.poster} playing={playing} />\n {playing ? null : (\n <View style={styles.playBadge} pointerEvents=\"none\">\n <MaterialCommunityIcons name=\"play\" size={16} color=\"#fafafa\" />\n </View>\n )}\n </Pressable>\n <Text style={styles.workTitle} numberOfLines={1}>\n {clip.title}\n </Text>\n <Pressable\n onPress={openSource}\n hitSlop={6}\n style={styles.credit}\n accessibilityRole=\"link\"\n accessibilityLabel={`By ${clip.author}, ${clip.license}. Open the original post`}\n >\n <Text style={styles.creditText} numberOfLines={1}>\n {`By ${clip.author} · CC BY 4.0`}\n </Text>\n <MaterialCommunityIcons name=\"open-in-new\" size={12} color={theme.mutedForeground} />\n </Pressable>\n <Pressable\n onPress={onUse}\n style={({ pressed }) => [styles.usePrompt, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"creation\" size={14} color={theme.foreground} />\n <Text style={styles.usePromptLabel}>Use this prompt</Text>\n </Pressable>\n </View>\n );\n}\n\n/** A design format, drawn at its own proportions on a neutral well. */\nfunction FormatTile({ tile, onPress }: { tile: VisibleTile; onPress: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const shape = FORMAT_SHAPE[tile.id] ?? { w: 1, h: 1 };\n const box = 56;\n const scale = box / Math.max(shape.w, shape.h);\n const pageW = shape.w * scale;\n const pageH = shape.h * scale;\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.format, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <View style={styles.formatWell}>\n {shape.stack ? (\n <View style={[styles.formatPage, styles.formatPageBack, { width: pageW, height: pageH }]} />\n ) : null}\n <View\n style={[\n styles.formatPage,\n { width: pageW, height: pageH },\n shape.round && { borderRadius: pageW / 2 },\n ]}\n >\n <MaterialCommunityIcons name={tile.icon as IconName} size={18} color={theme.mutedForeground} />\n </View>\n </View>\n <Text style={styles.formatLabel} numberOfLines={1}>\n {tile.label}\n </Text>\n </Pressable>\n );\n}\n\n/**\n * A board's cover: the image itself, renewed once if its link died, or for a\n * video-only board a real frame fetched once per clip (connector THUMBNAIL,\n * cached in memory). A cover that cannot load shows a quiet glyph.\n */\nfunction BoardCover({\n item,\n seed,\n runAction,\n renew,\n}: {\n item: CanvasItem;\n /** Stable per board, so its fallback colour never changes. */\n seed: string;\n runAction?: RunMediaAction;\n renew: (url: string) => Promise<string>;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const isVideo = item.type === 'video';\n const [frame, setFrame] = useState<string | null | undefined>(isVideo ? undefined : item.src);\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n if (!isVideo) return undefined;\n if (!runAction) {\n setFrame(null);\n return undefined;\n }\n let live = true;\n void videoCoverFrame(unwrapProxyUrl(item.src), runAction, (result) =>\n resultUrl(result, 'YANTRA_VIDEO_EDIT_THUMBNAIL'),\n ).then((url) => {\n if (live) setFrame(url);\n });\n return () => {\n live = false;\n };\n }, [item.src, isVideo, runAction]);\n\n const media = useMediaSource(frame ?? '', 'image', renew);\n const [stalled, setStalled] = useState(false);\n useEffect(() => {\n setLoaded(false);\n setStalled(false);\n // A request that neither paints nor fails must not pulse forever.\n const timer = setTimeout(() => setStalled(true), COVER_STALL_MS);\n return () => clearTimeout(timer);\n }, [media.key]);\n\n // No picture to be had: a tinted cover that says what the board holds.\n if (frame === null || media.phase === 'broken') {\n return (\n <CoverPlaceholder\n seed={seed}\n icon={isVideo ? 'play' : 'image-outline'}\n label={isVideo ? 'Video' : undefined}\n />\n );\n }\n return (\n <>\n {/* Until the picture paints (or while its link is renewed) the cover breathes instead of sitting blank. */}\n {loaded && media.phase === 'ok' ? null : stalled ? (\n <CoverPlaceholder seed={seed} icon={isVideo ? 'play' : 'image-outline'} />\n ) : (\n <Skeleton />\n )}\n {frame ? (\n <Image\n key={media.key}\n source={{ uri: media.src }}\n style={StyleSheet.absoluteFill}\n contentFit=\"cover\"\n transition={200}\n onLoad={() => setLoaded(true)}\n onError={media.onError}\n />\n ) : null}\n {isVideo && loaded ? (\n <View style={styles.playBadge} pointerEvents=\"none\">\n <MaterialCommunityIcons name=\"play\" size={16} color=\"#fafafa\" />\n </View>\n ) : null}\n </>\n );\n}\n\n/** A design's first page, scaled into the tile: fill, shapes, images and text as laid out. */\nfunction DesignThumb({ doc, maxWidth, maxHeight }: { doc: PersistedDesignDoc; maxWidth: number; maxHeight: number }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const page = doc.pages[0];\n if (!page || !(page.width > 0) || !(page.height > 0)) {\n return <MaterialCommunityIcons name=\"shape-outline\" size={28} color={theme.mutedForeground} />;\n }\n const scale = Math.min(maxWidth / page.width, maxHeight / page.height);\n const layers = [...page.layers].sort((a, b) => a.zIndex - b.zIndex);\n return (\n <View\n style={[\n styles.designPage,\n {\n width: page.width * scale,\n height: page.height * scale,\n backgroundColor: page.background || '#ffffff',\n },\n ]}\n pointerEvents=\"none\"\n >\n {layers.length === 0 ? (\n // An untouched page: a faint layout sketch (title, lines, picture) instead of a blank sheet.\n <View style={styles.sketch}>\n <View style={[styles.sketchBar, { width: '62%', height: '9%' }]} />\n <View style={[styles.sketchBar, { width: '86%', height: '5%' }]} />\n <View style={[styles.sketchBar, { width: '70%', height: '5%' }]} />\n <View style={[styles.sketchBar, styles.sketchBlock]}>\n <MaterialCommunityIcons name=\"image-outline\" size={16} color=\"#b4b4bb\" />\n </View>\n <Text style={styles.blankPage}>{designNoun(doc)}</Text>\n </View>\n ) : (\n layers.map((layer) => <DesignThumbLayer key={layer.id} layer={layer} scale={scale} />)\n )}\n </View>\n );\n}\n\nfunction DesignThumbLayer({ layer, scale }: { layer: DesignLayer; scale: number }) {\n const box = {\n position: 'absolute' as const,\n left: layer.x * scale,\n top: layer.y * scale,\n width: layer.width * scale,\n height: layer.height * scale,\n opacity: layer.opacity,\n };\n if (layer.type === 'image') {\n return <Image source={{ uri: layer.src }} style={box} contentFit=\"cover\" />;\n }\n if (layer.type === 'shape') {\n return <View style={[box, { backgroundColor: layer.fill, borderRadius: layer.cornerRadius * scale }]} />;\n }\n return (\n <Text\n style={[\n box,\n {\n color: layer.color,\n fontSize: Math.max(4, layer.fontSize * scale),\n lineHeight: Math.max(5, layer.fontSize * scale * 1.15),\n fontWeight: layer.bold ? '700' : '400',\n textAlign: layer.align,\n },\n ]}\n numberOfLines={3}\n >\n {layer.text}\n </Text>\n );\n}\n\n/** The top of a doc's first page: a sheet of paper with its opening lines (web YourWork `DocPage`). */\nfunction DocPaper({ blocks, title, height }: { blocks: unknown; title: string; height: number }) {\n const lines = docPreviewLines(blocks, 7);\n const width = Math.round((height * 8.5) / 11);\n return (\n <View style={[docPaperStyles.page, { width, height }]} pointerEvents=\"none\">\n <Text style={docPaperStyles.title} numberOfLines={1}>\n {title}\n </Text>\n {lines.length\n ? lines.map((line, i) => (\n <Text\n key={i}\n style={line.heading ? docPaperStyles.heading : docPaperStyles.line}\n numberOfLines={2}\n >\n {line.text}\n </Text>\n ))\n : // A new doc has no words yet; ruled lines say \"page\" without inventing text.\n [92, 100, 84, 96, 70].map((w, i) => (\n <View key={i} style={[docPaperStyles.rule, { width: `${w}%` }]} />\n ))}\n </View>\n );\n}\n\n// Paper is white in both themes, as web's doc tile: it is a picture of the page.\nconst docPaperStyles = StyleSheet.create({\n page: {\n backgroundColor: '#ffffff',\n borderRadius: 3,\n padding: 10,\n gap: 5,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOpacity: 0.12,\n shadowRadius: 4,\n shadowOffset: { width: 0, height: 1 },\n elevation: 2,\n },\n title: { fontSize: 10, lineHeight: 13, fontWeight: '700', color: '#171717' },\n heading: { fontSize: 8, lineHeight: 11, fontWeight: '600', color: '#262626' },\n line: { fontSize: 8, lineHeight: 11, color: '#525252' },\n rule: { height: 4, borderRadius: 2, backgroundColor: '#e5e5e5', marginTop: 4 },\n});\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n plane: { flex: 1, backgroundColor: theme.background },\n list: { paddingHorizontal: GUTTER, paddingTop: SPACE.sm, paddingBottom: SPACE.xxl },\n header: { alignSelf: 'stretch', width: '100%' },\n titleRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: SPACE.md,\n },\n title: { ...TYPE.display, color: theme.foreground },\n titleActions: { flexDirection: 'row', alignItems: 'center', gap: SPACE.sm },\n toggle: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.card,\n },\n prompt: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.md,\n minHeight: 56,\n paddingLeft: SPACE.lg,\n paddingRight: SPACE.sm,\n borderRadius: RADIUS.xl,\n backgroundColor: theme.card,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n marginBottom: SPACE.xl,\n },\n promptText: { ...TYPE.body, flex: 1, color: theme.mutedForeground },\n promptGo: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n section: { marginBottom: SPACE.xl },\n // flexGrow 0: a horizontal ScrollView otherwise swells into any spare height.\n bleed: { flexGrow: 0, marginHorizontal: -GUTTER },\n railContent: { paddingHorizontal: GUTTER, gap: SPACE.sm },\n lanes: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACE.sm },\n lane: {\n height: 92,\n borderRadius: RADIUS.lg,\n padding: SPACE.md,\n justifyContent: 'space-between',\n },\n laneLabel: { ...TYPE.label, lineHeight: 17 },\n format: { width: 84, alignItems: 'center', gap: SPACE.sm },\n formatWell: {\n width: 84,\n height: 84,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.card,\n alignItems: 'center',\n justifyContent: 'center',\n },\n formatPage: {\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n backgroundColor: theme.isDark ? theme.secondary : theme.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.borderStrong,\n },\n formatPageBack: { position: 'absolute', transform: [{ translateX: 6 }, { translateY: -6 }], opacity: 0.6 },\n formatLabel: { ...TYPE.caption, color: theme.foreground },\n tool: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.sm,\n minHeight: 44,\n paddingHorizontal: SPACE.lg - 2,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n toolLabel: { ...TYPE.label, color: theme.foreground },\n look: {\n width: 136,\n height: 176,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n },\n lookCaption: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n paddingHorizontal: SPACE.md - 2,\n paddingVertical: SPACE.sm + 2,\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n lookName: { ...TYPE.label, color: '#fafafa' },\n templateRowGap: { marginBottom: SPACE.md },\n templateCover: {\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n backgroundColor: theme.card,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n },\n railError: {\n flexDirection: 'row',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: SPACE.md,\n marginBottom: SPACE.md,\n },\n railErrorText: { ...TYPE.body, fontSize: 14, color: theme.mutedForeground },\n retry: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.xs + 2,\n minHeight: 36,\n paddingHorizontal: SPACE.md,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n retryLabel: { ...TYPE.label, color: theme.foreground },\n showcase: { width: SHOWCASE_WIDTH },\n showcasePoster: {\n width: SHOWCASE_WIDTH,\n height: Math.round((SHOWCASE_WIDTH * 9) / 16),\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n marginBottom: SPACE.sm,\n },\n credit: { flexDirection: 'row', alignItems: 'center', gap: SPACE.xs, marginTop: 1, alignSelf: 'flex-start' },\n creditText: { ...TYPE.caption, flexShrink: 1, color: theme.mutedForeground, textDecorationLine: 'underline' },\n usePrompt: {\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n gap: SPACE.xs + 2,\n minHeight: 36,\n marginTop: SPACE.sm,\n paddingHorizontal: SPACE.md,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n usePromptLabel: { ...TYPE.label, color: theme.foreground },\n workHead: { gap: SPACE.md, marginBottom: SPACE.lg },\n workFooter: { alignItems: 'center', gap: SPACE.sm, marginTop: SPACE.xs },\n showAll: {\n minHeight: 40,\n justifyContent: 'center',\n paddingHorizontal: SPACE.lg,\n borderRadius: RADIUS.md,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.borderStrong,\n },\n workNote: { ...TYPE.caption, color: theme.mutedForeground, textAlign: 'center' },\n noMargin: { marginBottom: 0 },\n segmented: { flexGrow: 0, alignSelf: 'flex-start' },\n row: { flexDirection: 'row', gap: GUTTER, marginBottom: SPACE.xl - 4 },\n cover: {\n aspectRatio: 1,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n marginBottom: SPACE.sm,\n },\n coverNew: {\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1.5,\n borderStyle: 'dashed',\n borderColor: theme.borderStrong,\n backgroundColor: 'transparent',\n },\n newPlus: {\n width: 48,\n height: 48,\n borderRadius: 24,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n centered: { alignItems: 'center', justifyContent: 'center' },\n fill: { ...StyleSheet.absoluteFillObject },\n workTitle: { ...TYPE.label, fontSize: 14, color: theme.foreground },\n workMeta: { ...TYPE.caption, marginTop: 1, color: theme.mutedForeground },\n countBadge: {\n position: 'absolute',\n top: SPACE.sm,\n right: SPACE.sm,\n minWidth: 24,\n height: 24,\n paddingHorizontal: 7,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n countBadgeText: { fontSize: 12, fontWeight: '600', color: '#fafafa' },\n playBadge: {\n position: 'absolute',\n left: SPACE.sm,\n bottom: SPACE.sm,\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n designPage: {\n overflow: 'hidden',\n borderRadius: 3,\n shadowColor: '#000',\n shadowOpacity: theme.isDark ? 0 : 0.1,\n shadowRadius: 6,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n // The sketch sits on the design's own (usually white) page, so its ink is fixed, not themed.\n sketch: { ...StyleSheet.absoluteFillObject, padding: '10%', gap: 6 },\n sketchBar: { borderRadius: 3, backgroundColor: '#ececef' },\n sketchBlock: { flex: 1, width: '100%', marginTop: 4, alignItems: 'center', justifyContent: 'center' },\n blankPage: { fontSize: 10, fontWeight: '600', color: '#a1a1aa', textAlign: 'center' },\n empty: {\n alignItems: 'center',\n paddingVertical: SPACE.xxl,\n paddingHorizontal: SPACE.xl,\n borderRadius: RADIUS.xl,\n backgroundColor: theme.card,\n },\n emptyIcon: {\n width: 52,\n height: 52,\n borderRadius: 26,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.background,\n marginBottom: SPACE.md,\n },\n emptyTitle: { ...TYPE.title, color: theme.foreground, textAlign: 'center' },\n emptyDetail: {\n ...TYPE.body,\n fontSize: 14,\n marginTop: SPACE.xs,\n color: theme.mutedForeground,\n textAlign: 'center',\n maxWidth: 300,\n },\n emptyCta: {\n marginTop: SPACE.lg + 2,\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.sm,\n minHeight: 44,\n paddingHorizontal: SPACE.xl - 4,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.primary,\n },\n emptyCtaLabel: { ...TYPE.label, fontSize: 15, color: theme.primaryForeground },\n }),\n);\n"],"names":["title"],"mappings":"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"}
1
+ {"version":3,"file":"CanvasBoardsGrid.js","sources":["../../../src/features/canvas/CanvasBoardsGrid.tsx"],"sourcesContent":["/**\n * Canvas home - native twin of canvas-surface screen one (`CreateStrip` + `YourWork`),\n * laid out for a phone: start something in one tap, then get back to recent work.\n *\n * Create title + theme toggle, the prompt bar (opens AI Chat)\n * Hero \"Direct the shot\": the looping monitor and the shot composer\n * Generate the AI lanes as a 3-up grid of tinted tiles\n * Design formats drawn at their own proportions\n * Tools editors and studios as one scrolling row of pills\n * Looks featured studio looks, cover-first\n * Templates \"Templates for you\": flyers and slides interleaved over two rows, at their own shapes\n * Seedance \"Made with Seedance 2.0\": community clips (credited), their prompt one tap away\n * Your work boards and designs merged newest first, filtered by kind\n *\n * Web puts Templates and Seedance after Your work; here Your work is the long\n * paged list, so both sit above it, still in the list header.\n *\n * Your work pages 20 tiles at a time: scrolling near the end (or \"Load more\")\n * shows the next 20, and once everything read is shown the host reads the next\n * step of designs from the index, so a long history never loads all at once.\n *\n * One clip plays at a time: the hero monitor or the centred Seedance tile,\n * whichever is nearer the middle of the screen (`pickPlayingRegion`).\n */\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n FlatList,\n Linking,\n ScrollView,\n StyleSheet,\n Text,\n useWindowDimensions,\n View,\n type LayoutChangeEvent,\n type NativeScrollEvent,\n type NativeSyntheticEvent,\n} from 'react-native';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Image } from 'expo-image';\nimport type { CanvasBoardSummary } from './surfaceIndex';\nimport type { DesignDocSummary } from '../design/designIndex';\nimport type { DesignLayer, PersistedDesignDoc } from '../design/designCore';\nimport type { DesignArtifact } from '../design/doc/artifacts';\nimport type { DocArtifact } from '../docs/docArtifacts';\nimport { DesignPageView } from '../design/render/DesignPageView';\nimport { isUnsetBoardTitle, type CanvasItem } from './canvasCore';\nimport type { StudioLook } from './studioLooks';\nimport type { CreateAction, visibleCreateGroups } from './createTiles';\nimport type { DesignCatalogCard } from './designCatalog';\nimport type { ShowcaseClip } from './seedanceShowcase';\nimport {\n WORK_PAGE,\n WORK_FILTERS,\n availableFilters,\n boardCover,\n designNoun,\n docPreviewLines,\n matchesFilter,\n mergeWork,\n pageCount,\n studioNoun,\n videoCoverFrame,\n type WorkFilter,\n type WorkItem,\n} from './homeWork';\nimport { HeroComposer } from './home/HeroComposer';\nimport { LookDetail } from './home/LookDetail';\nimport { LoopingVideo } from './home/LoopingVideo';\nimport { centredIndex, pickPlayingRegion, type HeroSettings } from './home/heroShots';\nimport { resultUrl, type RunMediaAction } from './videoEditor/mediaActions';\nimport { unwrapProxyUrl } from './videoEditor/remoteMediaClient';\nimport { renewMediaUrl, useMediaSource } from './useMediaSource';\nimport { CanvasThemeToggle, useCanvasTheme, themedStyles, type CanvasPalette } from './canvasTheme';\nimport {\n CoverPlaceholder,\n Pressable,\n RADIUS,\n SPACE,\n SectionHeader,\n Segmented,\n Skeleton,\n TYPE,\n pressedStyle,\n} from './canvasUi';\n\ntype IconName = React.ComponentProps<typeof MaterialCommunityIcons>['name'];\ntype VisibleGroup = ReturnType<typeof visibleCreateGroups>[number];\ntype VisibleTile = VisibleGroup['tiles'][number];\n\nconst MINUTE = 60_000;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst GUTTER = SPACE.lg;\n/** How long a cover may load before the skeleton gives way to its tinted placeholder (the image keeps loading). */\nconst COVER_STALL_MS = 12_000;\n\nfunction relativeTime(ts: number): string {\n const diff = Date.now() - ts;\n if (diff < HOUR) return `${Math.max(1, Math.round(diff / MINUTE))}m ago`;\n if (diff < DAY) return `${Math.round(diff / HOUR)}h ago`;\n if (diff < 30 * DAY) return `${Math.round(diff / DAY)}d ago`;\n return new Date(ts).toLocaleDateString(undefined, { month: 'short', day: 'numeric' });\n}\n\n/**\n * Each AI lane keeps one hue so it is found by colour as well as by name.\n * Light: a pale wash with the 700 step as ink; dark: a low-alpha wash with the 300 step.\n */\nconst LANE_HUES: Record<string, { light: [string, string]; dark: [string, string] }> = {\n image: { light: ['#fef3c7', '#b45309'], dark: ['rgba(251,191,36,0.14)', '#fcd34d'] },\n video: { light: ['#ffe4e6', '#be123c'], dark: ['rgba(251,113,133,0.14)', '#fda4af'] },\n audio: { light: ['#e0f2fe', '#0369a1'], dark: ['rgba(56,189,248,0.14)', '#7dd3fc'] },\n slides: { light: ['#ede9fe', '#6d28d9'], dark: ['rgba(167,139,250,0.16)', '#c4b5fd'] },\n clips: { light: ['#d1fae5', '#047857'], dark: ['rgba(52,211,153,0.14)', '#6ee7b7'] },\n promo: { light: ['#ffedd5', '#c2410c'], dark: ['rgba(251,146,60,0.14)', '#fdba74'] },\n};\n\n/** Design formats drawn at their real proportions (w:h), so the row reads as \"what shape\". */\nconst FORMAT_SHAPE: Record<string, { w: number; h: number; stack?: boolean; round?: boolean }> = {\n presentation: { w: 16, h: 9, stack: true },\n social: { w: 1, h: 1 },\n carousel: { w: 4, h: 5, stack: true },\n flyer: { w: 3, h: 4 },\n 'business-card': { w: 7, h: 4, stack: true },\n logo: { w: 1, h: 1, round: true },\n banner: { w: 3, h: 1 },\n brochure: { w: 11, h: 8.5, stack: true },\n branding: { w: 8.5, h: 11 },\n doc: { w: 8.5, h: 11 },\n custom: { w: 5, h: 4 },\n tshirt: { w: 5, h: 6 },\n};\n\n/** Phone height of a \"Templates for you\" cover (web TemplateRails `compact`). */\nconst TEMPLATE_HEIGHT = 176;\n/** Loading stand-ins: an A4 sheet and a 16:9 slide, alternating, like web. */\nconst TEMPLATE_SKELETON_RATIOS = [210 / 297, 16 / 9];\nconst SHOWCASE_WIDTH = 248;\n\n/** \"Templates for you\", already split into its two rows. */\nexport type TemplateRailsState =\n | { status: 'loading'; rows: [DesignCatalogCard[], DesignCatalogCard[]] }\n | { status: 'ready'; rows: [DesignCatalogCard[], DesignCatalogCard[]] }\n | { status: 'failed'; rows: [DesignCatalogCard[], DesignCatalogCard[]] };\n\ntype GridItem =\n | { kind: 'new'; id: string }\n | { kind: 'start'; id: string; sessionId: string }\n | { kind: 'work'; id: string; work: WorkItem };\n\n/** Regions the playback governor weighs, measured inside the list header. */\ntype PlayRegion = 'hero' | 'showcase';\n\nexport function CanvasBoardsGrid({\n boards,\n onOpen,\n onNewCanvas,\n designs = [],\n onOpenDesign,\n studioDesigns = [],\n onOpenStudioDesign,\n docs = [],\n onOpenDoc,\n onAskAgent,\n createGroups = [],\n onCreate,\n featuredLooks = [],\n onRecreateLook,\n onOpenCategory,\n templateRails,\n onOpenTemplate,\n onSeeAllTemplates,\n onRetryTemplates,\n showcase = [],\n onUseShowcasePrompt,\n runAction,\n onStartWithPrompt,\n onPickReference,\n onBrowseTemplates,\n studioMore = false,\n studioError = null,\n onRetryStudioDesigns,\n onLoadMoreWork,\n currentSessionId,\n onOpenSession,\n}: {\n boards: CanvasBoardSummary[];\n onOpen: (channelId: string) => void;\n onNewCanvas: () => void;\n designs?: DesignDocSummary[];\n onOpenDesign?: (channelId: string) => void;\n /** Design studio designs (phone and web alike), drawn from their first page. */\n studioDesigns?: DesignArtifact[];\n onOpenStudioDesign?: (artifactId: string) => void;\n /** Rich-text docs (`doc:` rows, phone and web alike), drawn as a sheet of paper. */\n docs?: DocArtifact[];\n onOpenDoc?: (docId: string) => void;\n onAskAgent?: () => void;\n /** Screen one's Create rows (web CreateStrip), already narrowed to what this host runs. */\n createGroups?: ReturnType<typeof visibleCreateGroups>;\n onCreate?: (action: CreateAction, tileId: string) => void;\n /** Web Featured Looks rail on home. */\n featuredLooks?: StudioLook[];\n onRecreateLook?: (look: StudioLook) => void;\n /**\n * A Design & write tile with a category gallery (flyer, business card...):\n * answers true when it opened one, else the tile runs its own action.\n */\n onOpenCategory?: (tileId: string) => boolean;\n /** Web \"Templates for you\". Absent: templates cannot open on this host, the section hides. */\n templateRails?: TemplateRailsState;\n onOpenTemplate?: (templateId: string) => void;\n onSeeAllTemplates?: () => void;\n onRetryTemplates?: () => void;\n /** Web \"Made with Seedance 2.0\" (CC-BY clips, credited on the tile). */\n showcase?: readonly ShowcaseClip[];\n onUseShowcasePrompt?: (clip: ShowcaseClip) => void;\n /** Connector runner - renews dead cover links and fetches a real frame for a video-only board. */\n runAction?: RunMediaAction;\n /** Web hero \"Direct the shot\": a fresh canvas, the generator seeded. Absent: no hero. */\n onStartWithPrompt?: (prompt: string, settings: HeroSettings) => void;\n /** Hero Product chip: pick a device image, answer its uploaded URL. */\n onPickReference?: () => Promise<string | null>;\n /** Hero \"Start from a template\": the templates gallery on its Video source. */\n onBrowseTemplates?: () => void;\n /** The design index had rows past the read limit (web `listing.more`). */\n studioMore?: boolean;\n /** The design index read failed; Your work offers Retry. */\n studioError?: string | null;\n onRetryStudioDesigns?: () => void;\n /** Paging: ask the host to read more designs from the index (it has `studioMore`). */\n onLoadMoreWork?: () => void;\n /** The chat this canvas is scoped to; a \"This chat's canvas\" card while it has no board. */\n currentSessionId?: string;\n onOpenSession?: (sessionId: string) => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const { width } = useWindowDimensions();\n const tileWidth = Math.max(140, (width - GUTTER * 3) / 2);\n const laneWidth = (width - GUTTER * 2 - SPACE.sm * 2) / 3;\n const [visible, setVisible] = useState(WORK_PAGE);\n const [filter, setFilter] = useState<WorkFilter>('all');\n const [lookIndex, setLookIndex] = useState(-1);\n const renew = useMemo(() => renewMediaUrl(runAction), [runAction]);\n\n const work = useMemo(() => mergeWork(boards, designs, studioDesigns, docs), [boards, designs, studioDesigns, docs]);\n const filters = useMemo(() => availableFilters(work), [work]);\n // A chosen kind that is gone (its last design deleted) falls back to everything.\n const active = filters.includes(filter) ? filter : 'all';\n const shown = useMemo(() => work.filter((item) => matchesFilter(item, active)), [work, active]);\n\n // A new filter starts from its first page; new rows (a refresh, a read step) keep the page.\n useEffect(() => {\n setVisible(WORK_PAGE);\n }, [active]);\n\n // Web: only a real chat session gets a \"this chat\" card, and only while it has no board.\n const startSession =\n currentSessionId &&\n onOpenSession &&\n (active === 'all' || active === 'canvases') &&\n !boards.some((b) => b.channelId === currentSessionId)\n ? currentSessionId\n : null;\n const lead: GridItem[] = useMemo(\n () => [\n { kind: 'new', id: '__new__' },\n ...(startSession ? [{ kind: 'start' as const, id: '__start__', sessionId: startSession }] : []),\n ],\n [startSession],\n );\n // Pages of WORK_PAGE tiles: the list grows as it nears its end (or on \"Load more\"),\n // and asks the host to read more designs once it has shown everything read so far.\n const tiles = useMemo<GridItem[]>(\n () => [\n ...lead,\n ...shown\n .slice(0, visible)\n .map((entry) => ({ kind: 'work' as const, id: `${entry.type}:${entry.id}`, work: entry })),\n ],\n [lead, shown, visible],\n );\n const hasMore = visible < shown.length || studioMore;\n\n // ── Playback governor: one clip at a time, the region nearest mid-screen ──\n const { height: windowHeight } = useWindowDimensions();\n const regions = useRef<Record<PlayRegion, { top: number; height: number }>>({\n hero: { top: 0, height: 0 },\n showcase: { top: 0, height: 0 },\n });\n const viewport = useRef({ top: 0, height: windowHeight });\n const [playing, setPlaying] = useState<PlayRegion | null>(null);\n const [showcaseIndex, setShowcaseIndex] = useState(0);\n const govern = useCallback(() => {\n const next = pickPlayingRegion(\n (Object.keys(regions.current) as PlayRegion[]).map((id) => ({ id, ...regions.current[id] })),\n viewport.current.top,\n viewport.current.height,\n ) as PlayRegion | null;\n setPlaying((prev) => (prev === next ? prev : next));\n }, []);\n const measure = (id: PlayRegion) => (e: LayoutChangeEvent) => {\n const { y, height } = e.nativeEvent.layout;\n // Header children sit below the list's top padding.\n regions.current[id] = { top: y + SPACE.sm, height };\n govern();\n };\n const onListScroll = useCallback(\n (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, layoutMeasurement } = e.nativeEvent;\n viewport.current = { top: contentOffset.y, height: layoutMeasurement.height };\n govern();\n },\n [govern],\n );\n const onShowcaseScroll = (e: NativeSyntheticEvent<NativeScrollEvent>) => {\n const { contentOffset, layoutMeasurement } = e.nativeEvent;\n const next = centredIndex(\n contentOffset.x,\n layoutMeasurement.width,\n SHOWCASE_WIDTH,\n SPACE.sm,\n GUTTER,\n showcase.length,\n );\n setShowcaseIndex((prev) => (prev === next ? prev : next));\n };\n // A look open full screen plays its own clip; home holds still underneath.\n const playingNow = lookIndex >= 0 ? null : playing;\n\n const rows = useMemo(() => {\n const chunked: GridItem[][] = [];\n for (let i = 0; i < tiles.length; i += 2) chunked.push(tiles.slice(i, i + 2));\n return chunked;\n }, [tiles]);\n\n const loadMore = useCallback(() => {\n if (visible < shown.length) {\n setVisible((count) => Math.min(count + WORK_PAGE, shown.length));\n return;\n }\n // Everything read is on screen: read the next step from the index.\n if (studioMore) onLoadMoreWork?.();\n }, [visible, shown.length, studioMore, onLoadMoreWork]);\n\n const group = (id: string) => createGroups.find((g) => g.id === id);\n const generate = group('generate');\n const edit = group('edit');\n const designGroup = group('design');\n\n const lane = (tile: VisibleTile) => {\n const hue = LANE_HUES[tile.id];\n const [wash, ink] = hue ? (theme.isDark ? hue.dark : hue.light) : [theme.card, theme.foreground];\n return (\n <Pressable\n key={tile.id}\n onPress={() => onCreate?.(tile.action, tile.id)}\n style={({ pressed }) => [\n styles.lane,\n { width: laneWidth, backgroundColor: wash },\n pressedStyle(pressed),\n ]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <MaterialCommunityIcons name={tile.icon as IconName} size={24} color={ink} />\n <Text style={[styles.laneLabel, { color: theme.isDark ? theme.foreground : ink }]} numberOfLines={2}>\n {tile.label}\n </Text>\n </Pressable>\n );\n };\n\n const header = (\n <View style={styles.header}>\n {onStartWithPrompt ? null : (\n // Without the hero (no generator seam) home keeps a plain title row.\n <View style={styles.titleRow}>\n <Text style={styles.title} accessibilityRole=\"header\">\n Create\n </Text>\n <CanvasThemeToggle size={20} style={styles.toggle} />\n </View>\n )}\n\n {onAskAgent && !onStartWithPrompt ? (\n <Pressable\n onPress={onAskAgent}\n style={({ pressed }) => [styles.prompt, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Ask AI Chat to make something\"\n >\n <MaterialCommunityIcons name=\"creation\" size={20} color={theme.mutedForeground} />\n <Text style={styles.promptText} numberOfLines={1}>\n Describe what you want to make\n </Text>\n <View style={styles.promptGo}>\n <MaterialCommunityIcons name=\"arrow-up\" size={18} color={theme.primaryForeground} />\n </View>\n </Pressable>\n ) : null}\n\n {onStartWithPrompt ? (\n <View onLayout={measure('hero')}>\n <HeroComposer\n featuredLooks={featuredLooks}\n showcase={showcase}\n playing={playingNow === 'hero'}\n onStartWithPrompt={onStartWithPrompt}\n onPickReference={onPickReference}\n onBrowseTemplates={onBrowseTemplates}\n headerActions={\n <>\n {onAskAgent ? (\n <Pressable\n onPress={onAskAgent}\n style={({ pressed }) => [styles.toggle, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open AI Chat\"\n >\n <MaterialCommunityIcons name=\"creation\" size={20} color={theme.foreground} />\n </Pressable>\n ) : null}\n <CanvasThemeToggle size={20} style={styles.toggle} />\n </>\n }\n />\n </View>\n ) : null}\n\n {onStartWithPrompt && onCreate ? (\n // Web home: the hero, then a \"Create\" heading over the tool groups.\n <View style={styles.createHead}>\n <Text style={styles.createTitle} accessibilityRole=\"header\">\n Create\n </Text>\n <Text style={styles.createSub}>Generate, edit, or start a blank design.</Text>\n </View>\n ) : null}\n\n {onCreate && generate ? (\n <View style={styles.section}>\n <SectionHeader title=\"Generate with AI\" />\n <View style={styles.lanes}>{generate.tiles.map(lane)}</View>\n </View>\n ) : null}\n\n {onCreate && designGroup ? (\n <View style={styles.section}>\n <SectionHeader title=\"Design\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {designGroup.tiles.map((tile) => (\n <FormatTile\n key={tile.id}\n tile={tile}\n onPress={() => {\n if (!onOpenCategory?.(tile.id)) onCreate(tile.action, tile.id);\n }}\n />\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {onCreate && edit ? (\n <View style={styles.section}>\n <SectionHeader title=\"Edit & produce\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {edit.tiles.map((tile) => (\n <Pressable\n key={tile.id}\n onPress={() => onCreate(tile.action, tile.id)}\n style={({ pressed }) => [styles.tool, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <MaterialCommunityIcons\n name={tile.icon as IconName}\n size={18}\n color={theme.foreground}\n />\n <Text style={styles.toolLabel}>{tile.label}</Text>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {featuredLooks.length > 0 && onRecreateLook ? (\n <View style={styles.section}>\n <SectionHeader title=\"Looks\" detail=\"Recreate a studio style\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n >\n {featuredLooks.map((look, i) => (\n <Pressable\n key={look.id}\n onPress={() => setLookIndex(i)}\n style={({ pressed }) => [styles.look, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open look ${look.name}`}\n >\n {look.cover ? (\n <Image\n source={{ uri: look.cover }}\n style={StyleSheet.absoluteFill}\n contentFit=\"cover\"\n />\n ) : (\n <View style={[styles.fill, styles.centered]}>\n <MaterialCommunityIcons\n name=\"movie-open-outline\"\n size={22}\n color={theme.mutedForeground}\n />\n </View>\n )}\n <View style={styles.lookCaption}>\n <Text style={styles.lookName} numberOfLines={2}>\n {look.name}\n </Text>\n </View>\n </Pressable>\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n {templateRails && onOpenTemplate ? (\n <TemplateRails\n state={templateRails}\n onOpenTemplate={onOpenTemplate}\n onSeeAll={onSeeAllTemplates}\n onRetry={onRetryTemplates}\n />\n ) : null}\n\n {showcase.length > 0 && onUseShowcasePrompt ? (\n <View style={styles.section} onLayout={measure('showcase')}>\n <SectionHeader title=\"Made with Seedance 2.0\" />\n <ScrollView\n horizontal\n showsHorizontalScrollIndicator={false}\n style={styles.bleed}\n contentContainerStyle={styles.railContent}\n onScroll={onShowcaseScroll}\n scrollEventThrottle={100}\n >\n {showcase.map((clip, i) => (\n <ShowcaseTile\n key={clip.id}\n clip={clip}\n playing={playingNow === 'showcase' && i === showcaseIndex}\n onUse={() => onUseShowcasePrompt(clip)}\n />\n ))}\n </ScrollView>\n </View>\n ) : null}\n\n <View style={styles.workHead}>\n <SectionHeader\n title=\"Your work\"\n detail={work.length > 0 ? String(work.length) : undefined}\n style={styles.noMargin}\n />\n {filters.length > 0 ? (\n <Segmented\n options={WORK_FILTERS.filter((f) => filters.includes(f.id))}\n value={active}\n onChange={setFilter}\n style={styles.segmented}\n />\n ) : null}\n </View>\n {studioError ? (\n <View style={styles.railError} accessibilityRole=\"alert\">\n <Text style={styles.railErrorText}>Couldn't load your designs.</Text>\n {onRetryStudioDesigns ? (\n <Pressable\n onPress={onRetryStudioDesigns}\n hitSlop={8}\n style={({ pressed }) => [styles.retry, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"refresh\" size={16} color={theme.foreground} />\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n ) : null}\n </View>\n ) : null}\n </View>\n );\n\n const footer = hasMore ? (\n <View style={styles.workFooter}>\n <Pressable\n onPress={loadMore}\n style={({ pressed }) => [styles.showAll, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n testID=\"your-work-load-more\"\n >\n <Text style={styles.retryLabel}>Load more</Text>\n </Pressable>\n </View>\n ) : null;\n\n const renderTile = (item: GridItem) => {\n if (item.kind === 'new') {\n return (\n <Pressable\n onPress={onNewCanvas}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"New canvas\"\n >\n <View style={[styles.cover, styles.coverNew]}>\n <View style={styles.newPlus}>\n <MaterialCommunityIcons name=\"plus\" size={24} color={theme.primaryForeground} />\n </View>\n </View>\n <Text style={styles.workTitle}>New canvas</Text>\n <Text style={styles.workMeta}>Start blank</Text>\n </Pressable>\n );\n }\n if (item.kind === 'start') {\n return (\n <Pressable\n onPress={() => onOpenSession?.(item.sessionId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel=\"Open this chat's canvas\"\n >\n <View style={[styles.cover, styles.coverNew]}>\n <MaterialCommunityIcons name=\"image-outline\" size={26} color={theme.mutedForeground} />\n </View>\n <Text style={styles.workTitle}>This chat's canvas</Text>\n <Text style={styles.workMeta}>Canvas · Start creating here</Text>\n </Pressable>\n );\n }\n const { work: entry } = item;\n if (entry.type === 'doc') {\n const title = entry.doc.title?.trim() || 'Untitled doc';\n return (\n <Pressable\n onPress={() => onOpenDoc?.(entry.doc.id)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open doc ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n <DocPaper blocks={entry.doc.doc.blocks} title={title} height={tileWidth - SPACE.lg * 2} />\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {`Doc · ${relativeTime(entry.doc.updatedAt)}`}\n </Text>\n </Pressable>\n );\n }\n if (entry.type === 'studio') {\n const { doc, title } = entry.studio;\n const page = doc.pages[0];\n const frame = tileWidth - SPACE.xl * 2;\n const ratio = doc.pageHeight / doc.pageWidth;\n const pageW = ratio > 1 ? frame / ratio : frame;\n // Docs never land here: `doc:` rows are their own work items, drawn by DocPaper.\n const noun = studioNoun(entry.studio);\n const meta = [\n noun,\n doc.pages.length > 1 ? `${doc.pages.length} pages` : '',\n relativeTime(entry.studio.updatedAt),\n ]\n .filter(Boolean)\n .join(' · ');\n return (\n <Pressable\n onPress={() => onOpenStudioDesign?.(entry.studio.id)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${noun.toLowerCase()} ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n {page ? <DesignPageView doc={doc} page={page} width={pageW} /> : null}\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title || 'Untitled design'}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {meta}\n </Text>\n </Pressable>\n );\n }\n if (entry.type === 'design') {\n const { design } = entry;\n const noun = designNoun(design.doc);\n const title = design.title?.trim() || `Untitled ${noun.toLowerCase()}`;\n const meta = [noun, pageCount(design.doc), relativeTime(design.savedAt)].filter(Boolean).join(' · ');\n return (\n <Pressable\n onPress={() => onOpenDesign?.(design.channelId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open ${noun.toLowerCase()} ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n <DesignThumb\n doc={design.doc}\n maxWidth={tileWidth - SPACE.xl * 2}\n maxHeight={tileWidth - SPACE.xl * 2}\n />\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {meta}\n </Text>\n </Pressable>\n );\n }\n const { board } = entry;\n const cover = boardCover(board.board.items);\n const title = !isUnsetBoardTitle(board.title)\n ? board.title\n : board.board.items.find((it) => it.generatedAssetName)?.generatedAssetName || 'Untitled canvas';\n return (\n <Pressable\n onPress={() => onOpen(board.channelId)}\n style={({ pressed }) => [{ width: tileWidth }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Open canvas ${title}`}\n >\n <View style={[styles.cover, styles.centered]}>\n {cover ? (\n <BoardCover\n key={cover.src}\n item={cover}\n seed={board.channelId}\n runAction={runAction}\n renew={renew}\n />\n ) : (\n <CoverPlaceholder seed={board.channelId} icon=\"image-multiple-outline\" />\n )}\n {board.itemCount > 1 ? (\n <View style={styles.countBadge} pointerEvents=\"none\">\n <Text style={styles.countBadgeText}>{board.itemCount}</Text>\n </View>\n ) : null}\n </View>\n <Text style={styles.workTitle} numberOfLines={1}>\n {title}\n </Text>\n <Text style={styles.workMeta} numberOfLines={1}>\n {`Canvas · ${relativeTime(board.savedAt)}`}\n </Text>\n </Pressable>\n );\n };\n\n return (\n <View style={styles.plane}>\n {work.length === 0 ? (\n <ScrollView\n contentContainerStyle={styles.list}\n showsVerticalScrollIndicator={false}\n onScroll={onListScroll}\n scrollEventThrottle={100}\n >\n {header}\n <View style={styles.empty}>\n <View style={styles.emptyIcon}>\n <MaterialCommunityIcons name=\"image-multiple-outline\" size={26} color={theme.foreground} />\n </View>\n <Text style={styles.emptyTitle}>Nothing here yet</Text>\n <Text style={styles.emptyDetail}>\n Every chat gets its own canvas. Generate an image, video or audio and it lands here.\n </Text>\n <Pressable\n onPress={onNewCanvas}\n style={({ pressed }) => [styles.emptyCta, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"plus\" size={18} color={theme.primaryForeground} />\n <Text style={styles.emptyCtaLabel}>New canvas</Text>\n </Pressable>\n </View>\n </ScrollView>\n ) : (\n <FlatList\n data={rows}\n keyExtractor={(pair) => pair.map((item) => item.id).join(':')}\n contentContainerStyle={styles.list}\n showsVerticalScrollIndicator={false}\n onEndReached={loadMore}\n onEndReachedThreshold={0.4}\n onScroll={onListScroll}\n scrollEventThrottle={100}\n ListHeaderComponent={header}\n ListFooterComponent={footer}\n renderItem={({ item: pair }) => (\n <View style={styles.row}>\n {pair.map((entry) => (\n <View key={entry.id}>{renderTile(entry)}</View>\n ))}\n {pair.length < 2 ? <View style={{ width: tileWidth }} /> : null}\n </View>\n )}\n />\n )}\n {onRecreateLook ? (\n <LookDetail\n looks={featuredLooks}\n index={lookIndex}\n onIndexChange={setLookIndex}\n onRecreate={(look) => {\n setLookIndex(-1);\n onRecreateLook(look);\n }}\n onClose={() => setLookIndex(-1)}\n />\n ) : null}\n </View>\n );\n}\n\n/**\n * Web TemplateRails on a phone: one heading, two swipeable rows of covers at\n * their own page shape (176 high), skeletons while the catalog reads.\n */\nfunction TemplateRails({\n state,\n onOpenTemplate,\n onSeeAll,\n onRetry,\n}: {\n state: TemplateRailsState;\n onOpenTemplate: (templateId: string) => void;\n onSeeAll?: () => void;\n onRetry?: () => void;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const count = state.rows[0].length + state.rows[1].length;\n const pending = state.status === 'loading';\n if (state.status === 'ready' && count === 0) return null;\n return (\n <View style={styles.section}>\n <SectionHeader title=\"Templates for you\" action={onSeeAll ? 'See all' : undefined} onAction={onSeeAll} />\n {state.status === 'failed' ? (\n <View style={styles.railError}>\n <Text style={styles.railErrorText}>\n {count ? \"Some templates couldn't load.\" : \"Templates couldn't load.\"}\n </Text>\n {onRetry ? (\n <Pressable\n onPress={onRetry}\n hitSlop={8}\n style={({ pressed }) => [styles.retry, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"refresh\" size={16} color={theme.foreground} />\n <Text style={styles.retryLabel}>Retry</Text>\n </Pressable>\n ) : null}\n </View>\n ) : null}\n {state.rows.map((row, index) =>\n row.length || pending ? (\n <ScrollView\n key={index}\n horizontal\n showsHorizontalScrollIndicator={false}\n style={[styles.bleed, index === 0 && styles.templateRowGap]}\n contentContainerStyle={styles.railContent}\n >\n {row.map((card) => (\n <TemplateCover key={card.id} card={card} onPress={() => onOpenTemplate(card.id)} />\n ))}\n {pending\n ? Array.from({ length: row.length ? 2 : 4 }, (_, i) => (\n <Skeleton\n key={`skeleton-${i}`}\n radius={RADIUS.md}\n style={{\n width: Math.round(\n TEMPLATE_HEIGHT *\n TEMPLATE_SKELETON_RATIOS[\n (i + index) % TEMPLATE_SKELETON_RATIOS.length\n ],\n ),\n height: TEMPLATE_HEIGHT,\n }}\n />\n ))\n : null}\n </ScrollView>\n ) : null,\n )}\n </View>\n );\n}\n\nfunction TemplateCover({ card, onPress }: { card: DesignCatalogCard; onPress: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const [loaded, setLoaded] = useState(false);\n // A web banner (728 x 90) would run off the screen; cap it like a wide slide.\n const width = Math.min(Math.round((TEMPLATE_HEIGHT * card.pageWidth) / card.pageHeight), TEMPLATE_HEIGHT * 2);\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.templateCover, { width, height: TEMPLATE_HEIGHT }, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Use template ${card.title}`}\n >\n {loaded ? null : <Skeleton />}\n <Image\n source={{ uri: card.coverUrl }}\n style={StyleSheet.absoluteFill}\n contentFit=\"contain\"\n transition={150}\n onLoad={() => setLoaded(true)}\n />\n </Pressable>\n );\n}\n\n/**\n * A Seedance community clip: its poster, its title, the credit its CC-BY\n * licence requires (tap opens the original post) and its prompt one tap away.\n */\nfunction ShowcaseTile({ clip, playing, onUse }: { clip: ShowcaseClip; playing: boolean; onUse: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const openSource = () => {\n void Linking.openURL(clip.sourceUrl).catch(() => undefined);\n };\n return (\n <View style={styles.showcase}>\n <Pressable\n onPress={onUse}\n style={({ pressed }) => [styles.showcasePoster, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`Use the prompt from ${clip.title}`}\n >\n <CoverPlaceholder seed={clip.id} icon=\"play\" />\n {/* The centred tile loops its clip (governed: one player on home); the rest hold their poster. */}\n <LoopingVideo src={clip.hls} poster={clip.poster} playing={playing} />\n {playing ? null : (\n <View style={styles.playBadge} pointerEvents=\"none\">\n <MaterialCommunityIcons name=\"play\" size={16} color=\"#fafafa\" />\n </View>\n )}\n </Pressable>\n <Text style={styles.workTitle} numberOfLines={1}>\n {clip.title}\n </Text>\n <Pressable\n onPress={openSource}\n hitSlop={6}\n style={styles.credit}\n accessibilityRole=\"link\"\n accessibilityLabel={`By ${clip.author}, ${clip.license}. Open the original post`}\n >\n <Text style={styles.creditText} numberOfLines={1}>\n {`By ${clip.author} · CC BY 4.0`}\n </Text>\n <MaterialCommunityIcons name=\"open-in-new\" size={12} color={theme.mutedForeground} />\n </Pressable>\n <Pressable\n onPress={onUse}\n style={({ pressed }) => [styles.usePrompt, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n >\n <MaterialCommunityIcons name=\"creation\" size={14} color={theme.foreground} />\n <Text style={styles.usePromptLabel}>Use this prompt</Text>\n </Pressable>\n </View>\n );\n}\n\n/** A design format, drawn at its own proportions on a neutral well. */\nfunction FormatTile({ tile, onPress }: { tile: VisibleTile; onPress: () => void }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const shape = FORMAT_SHAPE[tile.id] ?? { w: 1, h: 1 };\n const box = 56;\n const scale = box / Math.max(shape.w, shape.h);\n const pageW = shape.w * scale;\n const pageH = shape.h * scale;\n return (\n <Pressable\n onPress={onPress}\n style={({ pressed }) => [styles.format, pressedStyle(pressed)]}\n accessibilityRole=\"button\"\n accessibilityLabel={`${tile.label}: ${tile.hint}`}\n testID={`create-tile-${tile.id}`}\n >\n <View style={styles.formatWell}>\n {shape.stack ? (\n <View style={[styles.formatPage, styles.formatPageBack, { width: pageW, height: pageH }]} />\n ) : null}\n <View\n style={[\n styles.formatPage,\n { width: pageW, height: pageH },\n shape.round && { borderRadius: pageW / 2 },\n ]}\n >\n <MaterialCommunityIcons name={tile.icon as IconName} size={18} color={theme.mutedForeground} />\n </View>\n </View>\n <Text style={styles.formatLabel} numberOfLines={1}>\n {tile.label}\n </Text>\n </Pressable>\n );\n}\n\n/**\n * A board's cover: the image itself, renewed once if its link died, or for a\n * video-only board a real frame fetched once per clip (connector THUMBNAIL,\n * cached in memory). A cover that cannot load shows a quiet glyph.\n */\nfunction BoardCover({\n item,\n seed,\n runAction,\n renew,\n}: {\n item: CanvasItem;\n /** Stable per board, so its fallback colour never changes. */\n seed: string;\n runAction?: RunMediaAction;\n renew: (url: string) => Promise<string>;\n}) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const isVideo = item.type === 'video';\n const [frame, setFrame] = useState<string | null | undefined>(isVideo ? undefined : item.src);\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n if (!isVideo) return undefined;\n if (!runAction) {\n setFrame(null);\n return undefined;\n }\n let live = true;\n void videoCoverFrame(unwrapProxyUrl(item.src), runAction, (result) =>\n resultUrl(result, 'YANTRA_VIDEO_EDIT_THUMBNAIL'),\n ).then((url) => {\n if (live) setFrame(url);\n });\n return () => {\n live = false;\n };\n }, [item.src, isVideo, runAction]);\n\n const media = useMediaSource(frame ?? '', 'image', renew);\n const [stalled, setStalled] = useState(false);\n useEffect(() => {\n setLoaded(false);\n setStalled(false);\n // A request that neither paints nor fails must not pulse forever.\n const timer = setTimeout(() => setStalled(true), COVER_STALL_MS);\n return () => clearTimeout(timer);\n }, [media.key]);\n\n // No picture to be had: a tinted cover that says what the board holds.\n if (frame === null || media.phase === 'broken') {\n return (\n <CoverPlaceholder\n seed={seed}\n icon={isVideo ? 'play' : 'image-outline'}\n label={isVideo ? 'Video' : undefined}\n />\n );\n }\n return (\n <>\n {/* Until the picture paints (or while its link is renewed) the cover breathes instead of sitting blank. */}\n {loaded && media.phase === 'ok' ? null : stalled ? (\n <CoverPlaceholder seed={seed} icon={isVideo ? 'play' : 'image-outline'} />\n ) : (\n <Skeleton />\n )}\n {frame ? (\n <Image\n key={media.key}\n source={{ uri: media.src }}\n style={StyleSheet.absoluteFill}\n contentFit=\"cover\"\n transition={200}\n onLoad={() => setLoaded(true)}\n onError={media.onError}\n />\n ) : null}\n {isVideo && loaded ? (\n <View style={styles.playBadge} pointerEvents=\"none\">\n <MaterialCommunityIcons name=\"play\" size={16} color=\"#fafafa\" />\n </View>\n ) : null}\n </>\n );\n}\n\n/** A design's first page, scaled into the tile: fill, shapes, images and text as laid out. */\nfunction DesignThumb({ doc, maxWidth, maxHeight }: { doc: PersistedDesignDoc; maxWidth: number; maxHeight: number }) {\n const theme = useCanvasTheme();\n const styles = makeStyles(theme);\n const page = doc.pages[0];\n if (!page || !(page.width > 0) || !(page.height > 0)) {\n return <MaterialCommunityIcons name=\"shape-outline\" size={28} color={theme.mutedForeground} />;\n }\n const scale = Math.min(maxWidth / page.width, maxHeight / page.height);\n const layers = [...page.layers].sort((a, b) => a.zIndex - b.zIndex);\n return (\n <View\n style={[\n styles.designPage,\n {\n width: page.width * scale,\n height: page.height * scale,\n backgroundColor: page.background || '#ffffff',\n },\n ]}\n pointerEvents=\"none\"\n >\n {layers.length === 0 ? (\n // An untouched page: a faint layout sketch (title, lines, picture) instead of a blank sheet.\n <View style={styles.sketch}>\n <View style={[styles.sketchBar, { width: '62%', height: '9%' }]} />\n <View style={[styles.sketchBar, { width: '86%', height: '5%' }]} />\n <View style={[styles.sketchBar, { width: '70%', height: '5%' }]} />\n <View style={[styles.sketchBar, styles.sketchBlock]}>\n <MaterialCommunityIcons name=\"image-outline\" size={16} color=\"#b4b4bb\" />\n </View>\n <Text style={styles.blankPage}>{designNoun(doc)}</Text>\n </View>\n ) : (\n layers.map((layer) => <DesignThumbLayer key={layer.id} layer={layer} scale={scale} />)\n )}\n </View>\n );\n}\n\nfunction DesignThumbLayer({ layer, scale }: { layer: DesignLayer; scale: number }) {\n const box = {\n position: 'absolute' as const,\n left: layer.x * scale,\n top: layer.y * scale,\n width: layer.width * scale,\n height: layer.height * scale,\n opacity: layer.opacity,\n };\n if (layer.type === 'image') {\n return <Image source={{ uri: layer.src }} style={box} contentFit=\"cover\" />;\n }\n if (layer.type === 'shape') {\n return <View style={[box, { backgroundColor: layer.fill, borderRadius: layer.cornerRadius * scale }]} />;\n }\n return (\n <Text\n style={[\n box,\n {\n color: layer.color,\n fontSize: Math.max(4, layer.fontSize * scale),\n lineHeight: Math.max(5, layer.fontSize * scale * 1.15),\n fontWeight: layer.bold ? '700' : '400',\n textAlign: layer.align,\n },\n ]}\n numberOfLines={3}\n >\n {layer.text}\n </Text>\n );\n}\n\n/** The top of a doc's first page: a sheet of paper with its opening lines (web YourWork `DocPage`). */\nfunction DocPaper({ blocks, title, height }: { blocks: unknown; title: string; height: number }) {\n const lines = docPreviewLines(blocks, 7);\n const width = Math.round((height * 8.5) / 11);\n return (\n <View style={[docPaperStyles.page, { width, height }]} pointerEvents=\"none\">\n <Text style={docPaperStyles.title} numberOfLines={1}>\n {title}\n </Text>\n {lines.length\n ? lines.map((line, i) => (\n <Text\n key={i}\n style={line.heading ? docPaperStyles.heading : docPaperStyles.line}\n numberOfLines={2}\n >\n {line.text}\n </Text>\n ))\n : // A new doc has no words yet; ruled lines say \"page\" without inventing text.\n [92, 100, 84, 96, 70].map((w, i) => (\n <View key={i} style={[docPaperStyles.rule, { width: `${w}%` }]} />\n ))}\n </View>\n );\n}\n\n// Paper is white in both themes, as web's doc tile: it is a picture of the page.\nconst docPaperStyles = StyleSheet.create({\n page: {\n backgroundColor: '#ffffff',\n borderRadius: 3,\n padding: 10,\n gap: 5,\n overflow: 'hidden',\n shadowColor: '#000',\n shadowOpacity: 0.12,\n shadowRadius: 4,\n shadowOffset: { width: 0, height: 1 },\n elevation: 2,\n },\n title: { fontSize: 10, lineHeight: 13, fontWeight: '700', color: '#171717' },\n heading: { fontSize: 8, lineHeight: 11, fontWeight: '600', color: '#262626' },\n line: { fontSize: 8, lineHeight: 11, color: '#525252' },\n rule: { height: 4, borderRadius: 2, backgroundColor: '#e5e5e5', marginTop: 4 },\n});\n\nconst makeStyles = themedStyles((theme: CanvasPalette) =>\n StyleSheet.create({\n plane: { flex: 1, backgroundColor: theme.background },\n list: { paddingHorizontal: GUTTER, paddingTop: SPACE.sm, paddingBottom: SPACE.xxl },\n header: { alignSelf: 'stretch', width: '100%' },\n titleRow: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: SPACE.md,\n },\n title: { ...TYPE.display, color: theme.foreground },\n createHead: { marginBottom: SPACE.lg, gap: SPACE.xs },\n createTitle: { ...TYPE.heading, fontSize: 26, lineHeight: 32, color: theme.foreground },\n createSub: { ...TYPE.body, color: theme.mutedForeground },\n toggle: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.card,\n },\n prompt: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.md,\n minHeight: 56,\n paddingLeft: SPACE.lg,\n paddingRight: SPACE.sm,\n borderRadius: RADIUS.xl,\n backgroundColor: theme.card,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n marginBottom: SPACE.xl,\n },\n promptText: { ...TYPE.body, flex: 1, color: theme.mutedForeground },\n promptGo: {\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n section: { marginBottom: SPACE.xl },\n // flexGrow 0: a horizontal ScrollView otherwise swells into any spare height.\n bleed: { flexGrow: 0, marginHorizontal: -GUTTER },\n railContent: { paddingHorizontal: GUTTER, gap: SPACE.sm },\n lanes: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACE.sm },\n lane: {\n height: 92,\n borderRadius: RADIUS.lg,\n padding: SPACE.md,\n justifyContent: 'space-between',\n },\n laneLabel: { ...TYPE.label, lineHeight: 17 },\n format: { width: 84, alignItems: 'center', gap: SPACE.sm },\n formatWell: {\n width: 84,\n height: 84,\n borderRadius: RADIUS.lg,\n backgroundColor: theme.card,\n alignItems: 'center',\n justifyContent: 'center',\n },\n formatPage: {\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n backgroundColor: theme.isDark ? theme.secondary : theme.surface,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.borderStrong,\n },\n formatPageBack: { position: 'absolute', transform: [{ translateX: 6 }, { translateY: -6 }], opacity: 0.6 },\n formatLabel: { ...TYPE.caption, color: theme.foreground },\n tool: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.sm,\n minHeight: 44,\n paddingHorizontal: SPACE.lg - 2,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n toolLabel: { ...TYPE.label, color: theme.foreground },\n look: {\n width: 136,\n height: 176,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n },\n lookCaption: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n paddingHorizontal: SPACE.md - 2,\n paddingVertical: SPACE.sm + 2,\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n lookName: { ...TYPE.label, color: '#fafafa' },\n templateRowGap: { marginBottom: SPACE.md },\n templateCover: {\n borderRadius: RADIUS.md,\n overflow: 'hidden',\n backgroundColor: theme.card,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.border,\n },\n railError: {\n flexDirection: 'row',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: SPACE.md,\n marginBottom: SPACE.md,\n },\n railErrorText: { ...TYPE.body, fontSize: 14, color: theme.mutedForeground },\n retry: {\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.xs + 2,\n minHeight: 36,\n paddingHorizontal: SPACE.md,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n retryLabel: { ...TYPE.label, color: theme.foreground },\n showcase: { width: SHOWCASE_WIDTH },\n showcasePoster: {\n width: SHOWCASE_WIDTH,\n height: Math.round((SHOWCASE_WIDTH * 9) / 16),\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n marginBottom: SPACE.sm,\n },\n credit: { flexDirection: 'row', alignItems: 'center', gap: SPACE.xs, marginTop: 1, alignSelf: 'flex-start' },\n creditText: { ...TYPE.caption, flexShrink: 1, color: theme.mutedForeground, textDecorationLine: 'underline' },\n usePrompt: {\n flexDirection: 'row',\n alignItems: 'center',\n alignSelf: 'flex-start',\n gap: SPACE.xs + 2,\n minHeight: 36,\n marginTop: SPACE.sm,\n paddingHorizontal: SPACE.md,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.card,\n },\n usePromptLabel: { ...TYPE.label, color: theme.foreground },\n workHead: { gap: SPACE.md, marginBottom: SPACE.lg },\n workFooter: { alignItems: 'center', gap: SPACE.sm, marginTop: SPACE.xs },\n showAll: {\n minHeight: 40,\n justifyContent: 'center',\n paddingHorizontal: SPACE.lg,\n borderRadius: RADIUS.md,\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: theme.borderStrong,\n },\n workNote: { ...TYPE.caption, color: theme.mutedForeground, textAlign: 'center' },\n noMargin: { marginBottom: 0 },\n segmented: { flexGrow: 0, alignSelf: 'flex-start' },\n row: { flexDirection: 'row', gap: GUTTER, marginBottom: SPACE.xl - 4 },\n cover: {\n aspectRatio: 1,\n borderRadius: RADIUS.lg,\n overflow: 'hidden',\n backgroundColor: theme.card,\n marginBottom: SPACE.sm,\n },\n coverNew: {\n alignItems: 'center',\n justifyContent: 'center',\n borderWidth: 1.5,\n borderStyle: 'dashed',\n borderColor: theme.borderStrong,\n backgroundColor: 'transparent',\n },\n newPlus: {\n width: 48,\n height: 48,\n borderRadius: 24,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.primary,\n },\n centered: { alignItems: 'center', justifyContent: 'center' },\n fill: { ...StyleSheet.absoluteFillObject },\n workTitle: { ...TYPE.label, fontSize: 14, color: theme.foreground },\n workMeta: { ...TYPE.caption, marginTop: 1, color: theme.mutedForeground },\n countBadge: {\n position: 'absolute',\n top: SPACE.sm,\n right: SPACE.sm,\n minWidth: 24,\n height: 24,\n paddingHorizontal: 7,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n countBadgeText: { fontSize: 12, fontWeight: '600', color: '#fafafa' },\n playBadge: {\n position: 'absolute',\n left: SPACE.sm,\n bottom: SPACE.sm,\n width: 28,\n height: 28,\n borderRadius: 14,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(10,10,10,0.55)',\n },\n designPage: {\n overflow: 'hidden',\n borderRadius: 3,\n shadowColor: '#000',\n shadowOpacity: theme.isDark ? 0 : 0.1,\n shadowRadius: 6,\n shadowOffset: { width: 0, height: 2 },\n elevation: 2,\n },\n // The sketch sits on the design's own (usually white) page, so its ink is fixed, not themed.\n sketch: { ...StyleSheet.absoluteFillObject, padding: '10%', gap: 6 },\n sketchBar: { borderRadius: 3, backgroundColor: '#ececef' },\n sketchBlock: { flex: 1, width: '100%', marginTop: 4, alignItems: 'center', justifyContent: 'center' },\n blankPage: { fontSize: 10, fontWeight: '600', color: '#a1a1aa', textAlign: 'center' },\n empty: {\n alignItems: 'center',\n paddingVertical: SPACE.xxl,\n paddingHorizontal: SPACE.xl,\n borderRadius: RADIUS.xl,\n backgroundColor: theme.card,\n },\n emptyIcon: {\n width: 52,\n height: 52,\n borderRadius: 26,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: theme.background,\n marginBottom: SPACE.md,\n },\n emptyTitle: { ...TYPE.title, color: theme.foreground, textAlign: 'center' },\n emptyDetail: {\n ...TYPE.body,\n fontSize: 14,\n marginTop: SPACE.xs,\n color: theme.mutedForeground,\n textAlign: 'center',\n maxWidth: 300,\n },\n emptyCta: {\n marginTop: SPACE.lg + 2,\n flexDirection: 'row',\n alignItems: 'center',\n gap: SPACE.sm,\n minHeight: 44,\n paddingHorizontal: SPACE.xl - 4,\n borderRadius: RADIUS.pill,\n backgroundColor: theme.primary,\n },\n emptyCtaLabel: { ...TYPE.label, fontSize: 15, color: theme.primaryForeground },\n }),\n);\n"],"names":["title"],"mappings":"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"}