diff --git a/lang/en/posts.php b/lang/en/posts.php index b078650f..b38b845d 100644 --- a/lang/en/posts.php +++ b/lang/en/posts.php @@ -484,6 +484,10 @@ 'label' => 'Post', 'description' => 'Text post with optional media', ], + 'telegram_post' => [ + 'label' => 'Post', + 'description' => 'Text post with optional media', + ], ], 'platforms' => [ @@ -586,6 +590,7 @@ 'bluesky_post' => 'Bluesky Post', 'threads_post' => 'Threads Post', 'mastodon_post' => 'Mastodon Post', + 'telegram_post' => 'Telegram Post', 'facebook_post' => 'Facebook Post', 'pinterest_pin' => 'Pinterest Pin', 'instagram_story' => 'Instagram Story', diff --git a/lang/es/posts.php b/lang/es/posts.php index e04c19e0..220880f2 100644 --- a/lang/es/posts.php +++ b/lang/es/posts.php @@ -484,6 +484,10 @@ 'label' => 'Post', 'description' => 'Post de texto con multimedia opcional', ], + 'telegram_post' => [ + 'label' => 'Post', + 'description' => 'Post de texto con multimedia opcional', + ], ], 'platforms' => [ @@ -587,6 +591,7 @@ 'bluesky_post' => 'Post en Bluesky', 'threads_post' => 'Post en Threads', 'mastodon_post' => 'Post en Mastodon', + 'telegram_post' => 'Post en Telegram', 'facebook_post' => 'Post en Facebook', 'pinterest_pin' => 'Pin de Pinterest', 'instagram_story' => 'Story de Instagram', diff --git a/lang/pt-BR/posts.php b/lang/pt-BR/posts.php index 299bcfcc..e3311e02 100644 --- a/lang/pt-BR/posts.php +++ b/lang/pt-BR/posts.php @@ -484,6 +484,10 @@ 'label' => 'Post', 'description' => 'Post de texto com mídia opcional', ], + 'telegram_post' => [ + 'label' => 'Post', + 'description' => 'Post de texto com mídia opcional', + ], ], 'platforms' => [ @@ -586,6 +590,7 @@ 'bluesky_post' => 'Post no Bluesky', 'threads_post' => 'Post no Threads', 'mastodon_post' => 'Post no Mastodon', + 'telegram_post' => 'Post no Telegram', 'facebook_post' => 'Post no Facebook', 'pinterest_pin' => 'Pin no Pinterest', 'instagram_story' => 'Story do Instagram', diff --git a/resources/js/components/SocialAccountsGrid.vue b/resources/js/components/SocialAccountsGrid.vue index cc3be23f..40b54a9e 100644 --- a/resources/js/components/SocialAccountsGrid.vue +++ b/resources/js/components/SocialAccountsGrid.vue @@ -121,6 +121,7 @@ const getProfileUrl = (platform: string, username: string | null, platformUserId 'threads': `https://threads.net/@${username}`, 'bluesky': `https://bsky.app/profile/${username}`, 'pinterest': `https://pinterest.com/${username}`, + 'telegram': `https://t.me/${username}`, }; return urls[platform] || null; }; diff --git a/resources/js/components/posts/previews/PlatformPreview.vue b/resources/js/components/posts/previews/PlatformPreview.vue index 42cacc39..565521ac 100644 --- a/resources/js/components/posts/previews/PlatformPreview.vue +++ b/resources/js/components/posts/previews/PlatformPreview.vue @@ -9,6 +9,7 @@ import InstagramPreview from './InstagramPreview.vue'; import LinkedInPreview from './LinkedInPreview.vue'; import MastodonPreview from './MastodonPreview.vue'; import PinterestPreview from './PinterestPreview.vue'; +import TelegramPreview from './TelegramPreview.vue'; import ThreadsPreview from './ThreadsPreview.vue'; import TikTokPreview from './TikTokPreview.vue'; import XPreview from './XPreview.vue'; @@ -65,6 +66,8 @@ const previewComponent = computed(() => { return BlueskyPreview; case 'mastodon': return MastodonPreview; + case 'telegram': + return TelegramPreview; default: return LinkedInPreview; } diff --git a/resources/js/components/posts/previews/TelegramPreview.vue b/resources/js/components/posts/previews/TelegramPreview.vue new file mode 100644 index 00000000..96ea9e6a --- /dev/null +++ b/resources/js/components/posts/previews/TelegramPreview.vue @@ -0,0 +1,130 @@ + + + + + + + + + {{ socialAccount.display_name?.charAt(0) }} + + + + {{ socialAccount.display_name || 'Channel' }} + + + channel + + + + + + + + + + + + + + + +{{ media.length - 4 }} + + + + + + + + + {{ content }} + + + + + + + 0 + 4:30 PM + + + + + + diff --git a/resources/js/composables/usePlatformLogo.ts b/resources/js/composables/usePlatformLogo.ts index dc46ee93..317278f0 100644 --- a/resources/js/composables/usePlatformLogo.ts +++ b/resources/js/composables/usePlatformLogo.ts @@ -11,6 +11,7 @@ const PLATFORM_LOGOS: Record = { bluesky: '/images/accounts/bluesky.png', pinterest: '/images/accounts/pinterest.png', mastodon: '/images/accounts/mastodon.png', + telegram: '/images/accounts/telegram.svg', }; const PLATFORM_LABELS: Record = { @@ -26,6 +27,7 @@ const PLATFORM_LABELS: Record = { bluesky: 'Bluesky', pinterest: 'Pinterest', mastodon: 'Mastodon', + telegram: 'Telegram', }; const PLATFORM_CONTENT_TYPES: Record = { @@ -41,6 +43,7 @@ const PLATFORM_CONTENT_TYPES: Record = { pinterest: ['pinterest_pin', 'pinterest_video_pin', 'pinterest_carousel'], bluesky: ['bluesky_post'], mastodon: ['mastodon_post'], + telegram: ['telegram_post'], }; export interface ContentTypeOption { diff --git a/resources/js/types/content-type.ts b/resources/js/types/content-type.ts index 3d8a22bb..8db617ca 100644 --- a/resources/js/types/content-type.ts +++ b/resources/js/types/content-type.ts @@ -19,6 +19,7 @@ export const ContentType = { PinterestCarousel: 'pinterest_carousel', BlueskyPost: 'bluesky_post', MastodonPost: 'mastodon_post', + TelegramPost: 'telegram_post', } as const; export type ContentTypeValue = (typeof ContentType)[keyof typeof ContentType]; diff --git a/resources/js/types/platform.ts b/resources/js/types/platform.ts index ec785f19..56d29781 100644 --- a/resources/js/types/platform.ts +++ b/resources/js/types/platform.ts @@ -11,6 +11,7 @@ export const Platform = { Pinterest: 'pinterest', Bluesky: 'bluesky', Mastodon: 'mastodon', + Telegram: 'telegram', } as const; export type PlatformValue = (typeof Platform)[keyof typeof Platform];