From 789ca9261967b5e06a7d699ef6bf3fe13911dbbd Mon Sep 17 00:00:00 2001 From: Cesar Mendivil Date: Sun, 9 Nov 2025 15:47:59 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20actualizar=20importaciones=20de=20tipos?= =?UTF-8?q?=20compartidos=20y=20agregar=20nuevos=20tipos=20en=20el=20m?= =?UTF-8?q?=C3=B3dulo=20compartido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/NewTransmissionModal.tsx | 2 +- .../src/components/PageContainer.tsx | 2 +- .../src/components/TransmissionsTable.tsx | 2 +- packages/broadcast-panel/tsconfig.json | 2 ++ packages/studio-panel/src/hooks/useAssets.ts | 3 +- packages/studio-panel/src/hooks/useChat.ts | 3 +- packages/studio-panel/src/hooks/usePeople.ts | 3 +- packages/studio-panel/src/hooks/useScene.ts | 2 +- packages/studio-panel/src/hooks/useStyle.ts | 3 +- shared/components/NewTransmissionModal.tsx | 2 +- shared/types/index.ts | 31 +++++++++++++++++++ tsconfig.json | 1 + types/media.d.ts | 11 +++++++ 13 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 types/media.d.ts diff --git a/packages/broadcast-panel/src/components/NewTransmissionModal.tsx b/packages/broadcast-panel/src/components/NewTransmissionModal.tsx index 1ec0aec..c2b44ba 100644 --- a/packages/broadcast-panel/src/components/NewTransmissionModal.tsx +++ b/packages/broadcast-panel/src/components/NewTransmissionModal.tsx @@ -19,7 +19,7 @@ import { FaYoutube, FaFacebook, FaLinkedin, FaTwitch, FaInstagram, FaKickstarter import { FaXTwitter } from 'react-icons/fa6' import { BsInfoCircle } from 'react-icons/bs' import styles from './NewTransmissionModal.module.css' -import type { Transmission } from '../types' +import type { Transmission } from '@shared/types' interface Props { open: boolean diff --git a/packages/broadcast-panel/src/components/PageContainer.tsx b/packages/broadcast-panel/src/components/PageContainer.tsx index 389e0b4..36eae1b 100644 --- a/packages/broadcast-panel/src/components/PageContainer.tsx +++ b/packages/broadcast-panel/src/components/PageContainer.tsx @@ -9,7 +9,7 @@ import Header from './Header' import TransmissionsTable from './TransmissionsTable' import { NewTransmissionModal } from '@shared/components' import Studio from './Studio' -import type { Transmission } from '../types' +import type { Transmission } from '@shared/types' const STORAGE_KEY = 'broadcast_transmissions' diff --git a/packages/broadcast-panel/src/components/TransmissionsTable.tsx b/packages/broadcast-panel/src/components/TransmissionsTable.tsx index d6af868..775f13e 100644 --- a/packages/broadcast-panel/src/components/TransmissionsTable.tsx +++ b/packages/broadcast-panel/src/components/TransmissionsTable.tsx @@ -6,7 +6,7 @@ import { SkeletonTable } from './Skeleton' import styles from './TransmissionsTable.module.css' import InviteGuestsModal from './InviteGuestsModal' import { NewTransmissionModal } from '@shared/components' -import type { Transmission } from '../types' +import type { Transmission } from '@shared/types' interface Props { transmissions: Transmission[] diff --git a/packages/broadcast-panel/tsconfig.json b/packages/broadcast-panel/tsconfig.json index e5f85ff..446549f 100644 --- a/packages/broadcast-panel/tsconfig.json +++ b/packages/broadcast-panel/tsconfig.json @@ -1,6 +1,8 @@ { "extends": "../../tsconfig.json", "compilerOptions": { + "ignoreDeprecations": "6.0", + "lib": ["ES2020", "DOM", "DOM.Iterable"], "outDir": "dist", "tsBuildInfoFile": "node_modules/.cache/broadcast-panel.tsbuildinfo", "baseUrl": "../..", diff --git a/packages/studio-panel/src/hooks/useAssets.ts b/packages/studio-panel/src/hooks/useAssets.ts index 6b2bf3c..a53b702 100644 --- a/packages/studio-panel/src/hooks/useAssets.ts +++ b/packages/studio-panel/src/hooks/useAssets.ts @@ -1,6 +1,5 @@ import { useState, useEffect } from 'react' - -export type Asset = { id: string; name: string; type: 'image' | 'video' } +import type { Asset } from '@shared/types' export function useAssets() { const [assets, setAssets] = useState([]) diff --git a/packages/studio-panel/src/hooks/useChat.ts b/packages/studio-panel/src/hooks/useChat.ts index 46b4a3c..e7a64bf 100644 --- a/packages/studio-panel/src/hooks/useChat.ts +++ b/packages/studio-panel/src/hooks/useChat.ts @@ -1,6 +1,5 @@ import { useState, useEffect } from 'react' - -export type ChatMessage = { id: string; user: string; text: string } +import type { ChatMessage } from '@shared/types' export function useChat() { const [messages, setMessages] = useState([]) diff --git a/packages/studio-panel/src/hooks/usePeople.ts b/packages/studio-panel/src/hooks/usePeople.ts index f69af92..3867b43 100644 --- a/packages/studio-panel/src/hooks/usePeople.ts +++ b/packages/studio-panel/src/hooks/usePeople.ts @@ -1,6 +1,5 @@ import { useState, useEffect } from 'react' - -export type Person = { id: string; name: string; role?: string } +import type { Person } from '@shared/types' export function usePeople() { const [people, setPeople] = useState([]) diff --git a/packages/studio-panel/src/hooks/useScene.ts b/packages/studio-panel/src/hooks/useScene.ts index c101cb9..a620d25 100644 --- a/packages/studio-panel/src/hooks/useScene.ts +++ b/packages/studio-panel/src/hooks/useScene.ts @@ -1,6 +1,6 @@ // Hook minimal de ejemplo para exponer la escena (interface ligera) import { useState } from 'react' -import type { SceneConfig } from '../types' +import type { SceneConfig } from '@shared/types' export function useScene() { const [sceneConfig, setSceneConfig] = useState({ diff --git a/packages/studio-panel/src/hooks/useStyle.ts b/packages/studio-panel/src/hooks/useStyle.ts index aef8f9f..e4d3910 100644 --- a/packages/studio-panel/src/hooks/useStyle.ts +++ b/packages/studio-panel/src/hooks/useStyle.ts @@ -1,6 +1,5 @@ import { useState } from 'react' - -export type StyleConfig = { themeColor: string; showLogo: boolean } +import type { StyleConfig } from '@shared/types' export function useStyle() { const [style, setStyle] = useState({ themeColor: '#2563eb', showLogo: true }) diff --git a/shared/components/NewTransmissionModal.tsx b/shared/components/NewTransmissionModal.tsx index 370bde7..071b35a 100644 --- a/shared/components/NewTransmissionModal.tsx +++ b/shared/components/NewTransmissionModal.tsx @@ -19,7 +19,7 @@ import { FaYoutube, FaFacebook, FaLinkedin, FaTwitch, FaInstagram, FaKickstarter import { FaXTwitter } from 'react-icons/fa6' import { BsInfoCircle } from 'react-icons/bs' import styles from './NewTransmissionModal.module.css' -import type { Transmission, Destination } from '../types' +import type { Transmission, Destination } from '@shared/types' interface Props { open: boolean diff --git a/shared/types/index.ts b/shared/types/index.ts index 846b443..e958b79 100644 --- a/shared/types/index.ts +++ b/shared/types/index.ts @@ -1,3 +1,5 @@ +/// + export interface Transmission { id: string title: string @@ -158,6 +160,35 @@ export interface BackgroundSource { value: string; } +// SceneConfig moved from studio-panel to shared types +export type ParticipantLayoutType = 'single_speaker' | 'side_by_side' | 'grid_4' | 'grid_6' | 'focus_side' | 'presentation' + +export type MediaSourceType = + | { type: 'screen'; stream: MediaStream } + | { type: 'file'; url: string } + | null + +// Lightweight common types moved from studio-panel hooks +export type Asset = { id: string; name: string; type: 'image' | 'video' } + +export type Person = { id: string; name: string; role?: string } + +export type StyleConfig = { themeColor: string; showLogo: boolean } + +export type ChatMessage = { id: string; user: string; text: string } + +export type OverlayConfig = { + showLogo: boolean + showLowerThird: boolean + lowerThirdText?: string +} + +export type SceneConfig = { + participantLayout: ParticipantLayoutType + mediaSource: MediaSourceType + overlays: OverlayConfig +} + // Guest types export interface Guest { id: string; diff --git a/tsconfig.json b/tsconfig.json index ee31f93..3389970 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "ignoreDeprecations": "6.0", "target": "ES2021", "useDefineForClassFields": true, "lib": ["DOM", "ESNext"], diff --git a/types/media.d.ts b/types/media.d.ts new file mode 100644 index 0000000..3ce5d6a --- /dev/null +++ b/types/media.d.ts @@ -0,0 +1,11 @@ +// Minimal MediaStream shim so packages can compile in isolated container environments +// This avoids requiring the full DOM lib in every package tsconfig. +declare global { + // Keep minimal surface area — expand if you rely on more MediaStream APIs + interface MediaStream { + id?: string + getTracks?: () => any[] + } +} + +export {}