PageSourceSearch

https://www.uplero.ai/assets/CanvasSlideStudioRoute-XHWNJu1r.js

js uplero.ai collected 2026-10-05 15:56:43 UTC 53,536 bytes, 1 lines download raw bytes

1import{r,j as s,p as K,m as $,a as B}from"./react-vendor-D6ayQBDm.js";import{u as O}from"./OsFeaturePanelContext-BCn799QU.js";import{C as P}from"./index-BZT-iXgy.js";import{d as _}from"./slideInventory-Dhwoo8Zl.js";import"./useWorkspaceRoute-B1kI-15P.js";import"./supabase-vendor-CtzU2HKK.js";import"./radix-vendor-DaLysdXC.js";import"./icons-vendor-B2fu3RZw.js";import"./query-vendor-0N7hVbdK.js";import"./editor-tools-CCoOzlli.js";import"./workspaceShellFixture-FVpjXx04.js";function j(e){return e.map((l,t)=>({...l,key:"slide-".concat(t+1),index:t+1}))}const T={deckId:"deck_8f21c4e7",status:"draft",slides:j([{type:"cover",title:"UPLERO",subtitle:"Nền tảng AI điều hành doanh nghiệp",note:"Mở đầu bằng logo + slogan, giữ tinh thần tá»± tin.",stats:[{label:"Series A",value:"$8M"}]},{type:"agenda",title:"Nội dung",subtitle:"Điều bạn sẽ thấy hôm nay",note:"Liệt kê 6 phần chính, ngắn gọn.",bullets:["Vấn đề","Giải pháp","Thị trường","Traction","Tài chính","Hỏi vốn"]},{type:"content",title:"Vấn đề",subtitle:"Vận hành rời rạc, tốn 40% thời gian",note:"Nhấn mạnh nỗi đau cá»§a doanh nghiệp.",bullets:["Nhiều công cụ không liên kết","Báo cáo thá»§ công, chậm trễ","Thiếu góc nhìn toàn diện"]},{type:"content",title:"Giải pháp",subtitle:"Một nền tảng hợp nhất vận hành",note:"Giới thiệu sản phẩm và giá trị khác biệt.",bullets:["Tá»± động hoá quy trình","Báo cáo realtime","AI agents hỗ trợ"]},{type:"stats",title:"Thị trường",subtitle:"Quy mô & cÆ¡ hội",note:"Dùng TAM/SAM/SOM để chứng minh tiềm năng.",stats:[{label:"TAM",value:"$80B"},{label:"SAM",value:"$12B"},{label:"SOM",value:"$1.2B"}]},{type:"stats",title:"Traction",subtitle:"Tăng trưởng 18 tháng",note:"Số liệu là trọng tâm, giữ biểu đồ sạch.",stats:[{label:"MRR",value:"$128k"},{label:"Khách hàng",value:"2.4k"},{label:"Retention",value:"96%"}]},{type:"content",title:"Mô hình kinh doanh",subtitle:"Subscription theo bậc",note:"Giải thích nguồn doanh thu rõ ràng.",bullets:["Starter: $0","Pro: $49/tháng","Scale: $149/tháng","Enterprise: tuỳ chỉnh"]},{type:"content",title:"Cạnh tranh",subtitle:"Vị thế cá»§a UPLERO",note:"So sánh ngắn, tập trung khác biệt.",bullets:["Hợp nhất nhiều module","AI-first từ đầu","Dễ triển khai"]},{type:"quote",title:"“UPLERO giúp chúng tôi tiết kiệm 40% thời gian vận hành.”",subtitle:"CEO · Acme Inc.",note:"Lời chứng thá»±c từ khách hàng lớn."},{type:"stats",title:"Dá»± phóng tài chính",subtitle:"3 năm tới",note:"Dá»± phóng ARR với giả định rõ ràng.",stats:[{label:"Năm 1",value:"$1.5M"},{label:"Năm 2",value:"$6M"},{label:"Năm 3",value:"$18M"}]},{type:"content",title:"Hỏi vốn (Ask)",subtitle:"$8M Series A",note:"Nêu rõ mục đích dùng vốn.",bullets:["Mở rộng đội ngÅ© (40%)","Phát triển sản phẩm (35%)","Marketing & bán hàng (25%)"]},{type:"closing",title:"Cùng xây dá»±ng tương lai vận hành",subtitle:"Cảm Æ¡n · [email protected]",note:"Kết bằng lời cảm Æ¡n + thông tin liên hệ."}]),thread:[{id:"s1",kind:"request",time:"10:02",text:'thêm slide "đội ngÅ© sáng lập" vào giữa slide traction và mô hình kinh doanh',slide:"",approval:""},{id:"s2",kind:"result",time:"10:03",text:'Đã chèn slide "Đội ngÅ© sáng lập" (slide 8) với 3 thành viên kèm chức danh và kinh nghiệm. Deck giờ có 13 slide.',slide:"slide-8",approval:""},{id:"s3",kind:"request",time:"10:06",text:"đổi màu nhấn cá»§a toàn bộ deck sang xanh lá",slide:"",approval:""},{id:"s4",kind:"result",time:"10:07",text:"Đã cập nhật màu accent toàn deck sang tông xanh lá, đồng bộ cả biểu đồ và điểm nhấn.",slide:"",approval:""},{id:"s5",kind:"request",time:"10:11",text:"thêm speaker notes cho slide traction",slide:"",approval:""},{id:"s6",kind:"result",time:"10:12",text:"Đã soạn ghi chú diễn giả cho slide Traction: nhấn mạnh tốc độ tăng trưởng MRR và tỉ lệ giữ chân 96%.",slide:"slide-6",approval:"chờ bạn duyệt"}],trySaying:["Thêm slide đội ngÅ© sáng lập","Đổi màu chá»§ đề sang xanh lá","Soạn speaker notes cho slide traction","Rút gọn deck còn 10 slide"],share:{url:"uplero.io/s/deck-8f21c4e7",enabled:!0,permission:"view",requireEmail:!1,totalViews:47,totalViewers:31,avgCompletion:78},viewers:[{id:"v1",name:"Minh Tran",email:"[email protected]",lastSlide:12,duration:"4 phút 12 giây",lastViewed:"2 phút trước",device:"Desktop · Chrome",online:!0,status:"completed"}
1,{id:"v2",name:"Sarah Nguyen",email:"[email protected]",lastSlide:9,duration:"3 phút 05 giây",lastViewed:"18 phút trước",device:"Desktop · Safari",online:!1,status:"viewing"},{id:"v3",name:"David Park",email:"[email protected]",lastSlide:12,duration:"5 phút 40 giây",lastViewed:"1 giờ trước",device:"Mobile · iOS",online:!1,status:"completed"},{id:"v4",name:"Linh Pham",email:"[email protected]",lastSlide:6,duration:"1 phút 58 giây",lastViewed:"3 giờ trước",device:"Desktop · Firefox",online:!1,status:"partial"},{id:"v5",name:"Alex Chen",email:"[email protected]",lastSlide:12,duration:"6 phút 03 giây",lastViewed:"5 giờ trước",device:"Desktop · Edge",online:!1,status:"completed"},{id:"v6",name:"Mai Hoang",email:"[email protected]",lastSlide:4,duration:"52 giây",lastViewed:"1 ngày trước",device:"Mobile · Android",online:!1,status:"partial"},{id:"v7",name:"James Lee",email:"[email protected]",lastSlide:11,duration:"4 phút 48 giây",lastViewed:"1 ngày trước",device:"Desktop · Chrome",online:!1,status:"viewing"}]},M={deckId:"deck_3b09d1a2",slides:j([{type:"cover",title:"Báo cáo KPI Q3",subtitle:"Kết quả vận hành quý 3 · 2026",note:"Mở đầu bằng con số tăng trưởng doanh thu cá»§a quý.",stats:[{label:"Doanh thu Q3",value:"+18%"}]},{type:"agenda",title:"Chương trình báo cáo",subtitle:"Sáu phần trong 20 phút",note:"Đi nhanh qua sáu phần, dành thời gian cho kế hoạch Q4.",bullets:["Tổng quan quý","Doanh thu","Khách hàng","Hiệu suất","Rá»§i ro","Kế hoạch Q4"]},{type:"stats",title:"Tổng quan quý",subtitle:"So với Q2 · 2026",note:"Ba chỉ số chính, so sánh trá»±c tiếp với quý trước.",stats:[{label:"Doanh thu",value:"$2.1M"},{label:"Biên LN",value:"24%"},{label:"NPS",value:"62"}]},{type:"content",title:"Điểm nổi bật Q3",subtitle:"Những gì đã làm tốt",note:"Chọn ba kết quả tiêu biểu, mỗi ý một câu.",bullets:["Vượt mục tiêu doanh thu 6%","Rút ngắn thời gian xá»­ lý đơn 22%","Ra mắt gói dịch vụ doanh nghiệp"]},{type:"stats",title:"Doanh thu theo kênh",subtitle:"Số liệu chốt tháng 9",note:"Kênh online dẫn đầu; nêu lý do kênh đại lý chững lại.",stats:[{label:"Online",value:"$1.2M"},{label:"Đại lý",value:"$0.6M"},{label:"Doanh nghiệp",value:"$0.3M"}]},{type:"stats",title:"Khách hàng",subtitle:"Tăng trưởng & giữ chân",note:"Giải thích tỉ lệ rời bỏ 3,1% và nhóm khách hàng bị ảnh hưởng.",stats:[{label:"Khách mới",value:"480"},{label:"Rời bỏ",value:"3.1%"},{label:"LTV",value:"$1.9k"}]},{type:"content",title:"Hiệu suất đội ngÅ©",subtitle:"Năng suất theo phòng ban",note:"Nêu tên phòng ban có cải thiện rõ nhất.",bullets:["CSKH: phản hồi trong 2 giờ","Kho vận: 98% đơn giao đúng hẹn","Kinh doanh: 31 hợp đồng mới"]},{type:"content",title:"Rá»§i ro cần xá»­ lý",subtitle:"Ba điểm cần quyết định",note:"Mỗi rá»§i ro đi kèm người phụ trách và hạn xá»­ lý.",bullets:["Chi phí quảng cáo tăng 15%","Tồn kho mùa cao điểm","Thiếu nhân sá»± CSKH ca tối"]},{type:"content",title:"Kế hoạch Q4",subtitle:"Ưu tiên cho quý cuối năm",note:"Chốt ba ưu tiên, xin phê duyệt ngân sách ngay trong buổi.",bullets:["Chiến dịch cuối năm","Tá»± động hoá báo cáo tuần","Tuyển thêm 4 nhân sá»± CSKH"]},{type:"closing",title:"Hỏi đáp",subtitle:"Phòng Vận hành · báo cáo quý 3",note:"Mời câu hỏi, ghi lại các việc cần theo dõi."}]),thread:[{id:"k1",kind:"request",time:"08:40",text:"cập nhật slide doanh thu theo kênh với số liệu chốt tháng 9",slide:"",approval:""},{id:"k2",kind:"result",time:"08:41",text:'Đã cập nhật slide "Doanh thu theo kênh" (slide 5) với số liệu chốt tháng 9.',slide:"slide-5",approval:""},{id:"k3",kind:"request",time:"08:45",text:"soạn ghi chú diễn giả cho slide khách hàng",slide:"",approval:""},{id:"k4",kind:"result",time:"08:46",text:"Đã soạn ghi chú cho slide Khách hàng: giải thích tỉ lệ rời bỏ 3,1% và nhóm khách hàng bị ảnh hưởng.",slide:"slide-6",approval:"chờ bạn duyệt"}],trySaying:["Thêm biểu đồ doanh thu theo tháng","So sánh KPI với cùng kỳ năm trước","Rút gọn phần rá»§i ro còn 2 ý"],share:{url:"uplero.io/s/deck-3b09d1a2",enabled:!0,permission:"comment",requireEmail:!0,totalViews:12,totalViewers:4,avgCompletion:85},viewers:[{id:"k-v1",name:"Thu Nguyen",email:"[email protected]",lastSlide:10,duration:"6 phút 20 giây",lastViewed:"1 giờ trước",device:"Desktop · Chrome",online:!1,status:"completed"},{id:"k-v2",name:"Quang Dang",email:"[email protected]",lastSlide:10,duration:"4 phút 55 giây",lastViewed:"3 giờ trước",device:"Desktop · Edge",online:!1,status:"completed"},{id:"k-v3",name:"Hanh Bui",email:"[email protected]",lastSlide:7,duration:"3 phút 10 giây",lastViewed:"5 giờ trước",device:"Mobile · iOS",online:!1,status:"viewing"},{id:"k-v4",name:"Tuan Do",email:"[email protected]",lastSlide:3,duration:"48 giây",lastViewed:"1 ngày trước",device:"Mobile · Android",online:!1,status:"partial"}]},q={deckId:"deck_7c44e8f0",slides:j([{type:"cover",title:"Acme Corp",subtitle:"Phần mềm vận hành cho doanh nghiệp vừa và nhỏ",note:"Chào hỏi, giới thiệu tên công ty và lÄ©nh vá»±c trong một câu.",stats:[{label:"Thành lập",value:"2016"}]},{type:"agenda",title:"Hồ sÆ¡ năng lá»±c",subtitle:"Những điều đối tác cần biết",note:"Sáu phần, mỗi phần không quá một phút.",bullets:["Về chúng tôi","Sứ mệnh","Sản phẩm","Khách hàng","Đá»
1™i ngÅ©","Liên hệ"]},{type:"content",title:"Về chúng tôi",subtitle:"Mười năm đồng hành cùng doanh nghiệp Việt",note:"Kể ngắn câu chuyện thành lập.",bullets:["Trụ sở tại TP. Hồ Chí Minh","Chi nhánh Hà Nội và Đà Nẵng","Đối tác chiến lược cá»§a nhiều chuỗi bán lẻ"]},{type:"content",title:"Sứ mệnh & giá trị",subtitle:"Điều chúng tôi theo đuổi",note:"Đọc chậm phần sứ mệnh, lướt nhanh các giá trị.",bullets:["Đơn giản hoá công việc hằng ngày","Minh bạch với khách hàng","Hỗ trợ tận tâm sau bán hàng"]},{type:"content",title:"Sản phẩm & dịch vụ",subtitle:"Ba nhóm giải pháp chính",note:"Mỗi sản phẩm một ví dụ khách hàng đang dùng.",bullets:["Quản lý bán hàng đa kênh","Kho vận và giao nhận","Tư vấn chuyển đổi số"]},{type:"stats",title:"Acme qua các con số",subtitle:"Cập nhật 2026",note:"Để các con số tá»± nói, không đọc lại từng ô.",stats:[{label:"Nhân sá»±",value:"120"},{label:"Khách hàng",value:"850"},{label:"Tỉnh thành",value:"18"}]},{type:"quote",title:"“Acme đồng hành cùng chúng tôi suốt 5 năm mở rộng chuỗi cá»­a hàng.”",subtitle:"Giám đốc điều hành · chuỗi bán lẻ",note:"Dừng một nhịp sau lời chứng thá»±c."},{type:"content",title:"Khách hàng tiêu biểu",subtitle:"Bán lẻ · F&B · phân phối",note:"Chỉ nêu lÄ©nh vá»±c nếu chưa có sá»± đồng ý công bố tên khách hàng.",bullets:["Chuỗi bán lẻ 60 cá»­a hàng","Thương hiệu F&B 25 điểm bán","Nhà phân phối hàng tiêu dùng"]},{type:"content",title:"Văn phòng & đội ngÅ©",subtitle:"Con người phía sau sản phẩm",note:"Giới thiệu ban điều hành và các khối chức năng.",bullets:["Khối sản phẩm & kỹ thuật","Khối triển khai & đào tạo","Khối chăm sóc khách hàng"]},{type:"closing",title:"Kết nối với Acme",subtitle:"Cảm Æ¡n quý đối tác · acme.example",note:"Mời trao đổi tiếp và để lại thông tin liên hệ."}]),thread:[{id:"c1",kind:"request",time:"09:30",text:"tạo deck giới thiệu công ty 10 slide, phong cách Corporate · Clean",slide:"",approval:""},{id:"c2",kind:"result",time:"09:31",text:"Đã dá»±ng khung 10 slide và đang sinh nội dung chi tiết cho từng phần, bắt đầu từ slide bìa.",slide:"slide-1",approval:""},{id:"c3",kind:"request",time:"09:34",text:"thêm một lời chứng thá»±c cá»§a khách hàng bán lẻ",slide:"",approval:""},{id:"c4",kind:"result",time:"09:35",text:"Đã thêm slide trích dẫn (slide 7) từ khách hàng chuỗi bán lẻ.",slide:"slide-7",approval:"chờ bạn duyệt"}],trySaying:["Thêm slide sÆ¡ đồ tổ chức","Làm nổi bật con số khách hàng","Viết lại sứ mệnh ngắn hÆ¡n"],share:{url:"uplero.io/s/deck-7c44e8f0",enabled:!1,permission:"view",requireEmail:!1,totalViews:0,totalViewers:0,avgCompletion:0},viewers:[]},E={deckId:"deck_2f91a3b6",slides:j([{type:"cover",title:"Bài giảng RevOps",subtitle:"Vận hành doanh thu cho đội Sales, Marketing & CS",note:"Làm quen với học viên, hỏi nhanh ai đã từng nghe về RevOps.",stats:[{label:"Thời lượng",value:"90 phút"}]},{type:"agenda",title:"Lộ trình buổi học",subtitle:"Sáu chặng trong 90 phút",note:"Cho học viên biết khi nào có phần thá»±c hành.",bullets:["Khái niệm RevOps","Phễu doanh thu","Dữ liệu & CRM","Chỉ số","Quy trình","Thá»±c hành"]}
1,{type:"content",title:"RevOps là gì?",subtitle:"Một đội vận hành cho toàn bộ doanh thu",note:"Định nghÄ©a bằng một câu, rồi đưa ví dụ.",bullets:["Gộp vận hành Sales, Marketing và CS","Một bộ số liệu chung","Một quy trình xuyên suốt"]},{type:"content",title:"Vì sao cần RevOps",subtitle:"Dấu hiệu tổ chức đang thiếu",note:"Mời học viên kể một tình huống tương tá»± ở công ty mình.",bullets:["Mỗi phòng một con số khác nhau","Khách hàng rÆ¡i rụng khi bàn giao","Dá»± báo doanh thu thiếu chính xác"]},{type:"content",title:"Phễu doanh thu thống nhất",subtitle:"Từ khách tiềm năng đến gia hạn",note:"Vẽ phễu lên bảng trắng nếu có.",bullets:["Thu hút","Chuyển đổi","Chốt hợp đồng","Mở rộng & gia hạn"]},{type:"stats",title:"Chỉ số cốt lõi",subtitle:"Ba con số cần theo dõi hằng tuần",note:"Giải thích cách tính từng chỉ số.",stats:[{label:"Win rate",value:"27%"},{label:"Chu kỳ bán",value:"34 ngày"},{label:"NRR",value:"112%"}]},{type:"content",title:"Dữ liệu & CRM một nguồn",subtitle:"Nền móng cá»§a RevOps",note:"Nhấn mạnh quy tắc nhập liệu chung.",bullets:["Một định nghÄ©a cho mỗi trạng thái","Trường dữ liệu bắt buộc","Rà soát chất lượng dữ liệu hằng tháng"]},{type:"content",title:"Quy trình bàn giao Sales → CS",subtitle:"Không để khách hàng rÆ¡i giữa hai đội",note:"Đưa checklist bàn giao mẫu.",bullets:["Checklist bàn giao chuẩn","Buổi kick-off trong 48 giờ","Chỉ tiêu chung cho hai đội"]},{type:"quote",title:"“Không có dữ liệu chung thì không có vận hành doanh thu.”",subtitle:"Nguyên tắc RevOps",note:"Dừng lại, hỏi học viên có đồng ý không."},{type:"content",title:"Bài tập thá»±c hành",subtitle:"Làm việc theo nhóm 20 phút",note:"Chia nhóm 4 người, phát mẫu phễu trống.",bullets:["Vẽ phễu doanh thu cá»§a công ty bạn","Chọn 3 chỉ số theo dõi","Đề xuất một cải tiến bàn giao"]},{type:"content",title:"Tóm tắt bài học",subtitle:"Ba điều cần nhớ",note:"Nhắc lại ba ý, gắn với bài tập vừa làm.",bullets:["Một phễu, một bộ số liệu","CRM là nguồn sá»± thật duy nhất","Bàn giao có chá»§ đích"]},{type:"closing",title:"Hỏi & đáp cuối buổi",subtitle:"Tài liệu gá»­i kèm sau buổi học",note:"Thu phiếu đánh giá trước khi kết thúc."}]),thread:[{id:"r1",kind:"request",time:"14:05",text:"thêm bài tập thá»±c hành theo nhóm trước phần tóm tắt",slide:"",approval:""},{id:"r2",kind:"result",time:"14:06",text:'Đã soạn slide "Bài tập thá»±c hành" (slide 10) với ba nhiệm vụ cho nhóm 4 người.',slide:"slide-10",approval:"chờ bạn duyệt"}],trySaying:["Thêm câu hỏi trắc nghiệm cuối bài","Đơn giản hoá slide chỉ số cốt lõi","Soạn ghi chú cho phần thá»±c hành"],share:{url:"uplero.io/s/deck-2f91a3b6",enabled:!1,permission:"view",requireEmail:!1,totalViews:0,totalViewers:0,avgCompletion:0},viewers:[]},R={deckId:"deck_9e05c7d4",slides:j([{type:"cover",title:"Chiến dịch Mùa hè",subtitle:"Sale hè rá»±c rỡ · 01/06 – 31/08",note:"Mở màn năng lượng, giới thiệu thời gian chạy chiến dịch.",stats:[{label:"Ngân sách",value:"1,2 tá»·"}]},{type:"agenda",title:"Tổng quan chiến dịch",subtitle:"Sáu phần chính",note:"Đi nhanh, dành thời gian cho kết quả giữa kỳ.",bullets:["Mục tiêu","Chân dung khách hàng","Thông điệp","Kênh","Lịch chạy","Đo lường"]},{type:"stats",title:"Mục tiêu chiến dịch",subtitle:"Cam kết cho mùa hè",note:"Nói rõ mục tiêu nào là bắt buộc, mục tiêu nào là kỳ vọng.",stats:[{label:"Doanh số",value:"+35%"},{label:"Khách mới",value:"12k"},{label:"ROAS",value:"4.5x"}]},{type:"content",title:"Chân dung khách hàng",subtitle:"Ai sẽ mua trong mùa hè",note:"Mô tả hai nhóm khách hàng chính bằng ví dụ cụ thể.",bullets:["Gia đình trẻ đi du lịch","Sinh viên nghỉ hè","Nhân viên văn phòng mua sắm online"]},{type:"content",title:"Thông điệp chá»§ đạo",subtitle:"Một câu cho mọi điểm chạm",note:"Đọc tagline to, rõ.",bullets:["Tận hưởng trọn mùa hè","Ưu đãi mỗi tuần","Giao nhanh trong ngày"]},{type:"content",title:"Kênh truyền thông",subtitle:"Phân bổ ngân sách theo kênh",note:"Giải thích vì sao ưu tiên video ngắn.",bullets:["Video ngắn: 40%","Mạng xã hội: 30%","Email & tin nhắn: 15%","KOL địa phương: 15%"]},{type:"content",title:"Lịch triển khai",subtitle:"Ba đợt trong 12 tuần",note:"Nhấn mạnh má
1»‘c giữa kỳ để đánh giá lại ngân sách.",bullets:["Đợt 1: khởi động 01/06","Đợt 2: cao điểm 01/07","Đợt 3: về đích 01/08"]},{type:"content",title:"Ưu đãi & khuyến mãi",subtitle:"CÆ¡ chế giá cho từng đợt",note:"Kiểm tra lại biên lợi nhuận cá»§a từng ưu đãi.",bullets:["Giảm 20% đơn đầu tiên","Mua 2 tặng 1 cuối tuần","Freeship đơn từ 300k"]},{type:"stats",title:"Kết quả giữa kỳ",subtitle:"Số liệu đến 15/07",note:"So với mục tiêu, nêu kênh đang vượt kỳ vọng.",stats:[{label:"Tiếp cận",value:"2.8M"},{label:"Chuyển đổi",value:"3.2%"},{label:"Đơn hàng",value:"18k"}]},{type:"quote",title:"“Mùa hè này, mua sắm là để tận hưởng.”",subtitle:"Tagline chiến dịch",note:"Để khán giả tá»± đọc tagline."},{type:"closing",title:"Sẵn sàng bùng nổ mùa hè",subtitle:"Đội Marketing · cập nhật hằng tuần",note:"Chốt lại các đầu việc và người phụ trách."}]),thread:[{id:"m1",kind:"request",time:"16:20",text:"cập nhật slide kết quả giữa kỳ với số liệu đến 15/07",slide:"",approval:""},{id:"m2",kind:"result",time:"16:21",text:'Đã cập nhật slide "Kết quả giữa kỳ" (slide 9): 2.8M lượt tiếp cận, chuyển đổi 3.2%, 18k đơn hàng.',slide:"slide-9",approval:""},{id:"m3",kind:"request",time:"16:25",text:"đổi tagline cho ngắn gọn hÆ¡n",slide:"",approval:""},{id:"m4",kind:"result",time:"16:26",text:"Đã đề xuất tagline mới cho slide trích dẫn (slide 10).",slide:"slide-10",approval:"chờ bạn duyệt"}],trySaying:["Thêm slide ngân sách theo tuần","Làm nổi bật mục tiêu doanh số","Tạo phiên bản ngắn 5 slide"],share:{url:"uplero.io/s/deck-9e05c7d4",enabled:!0,permission:"view",requireEmail:!1,totalViews:26,totalViewers:9,avgCompletion:71},viewers:[{id:"m-v1",name:"Phuong Tran",email:"[email protected]",lastSlide:11,duration:"3 phút 40 giây",lastViewed:"30 phút trước",device:"Desktop · Chrome",online:!0,status:"completed"},{id:"m-v2",name:"Khoa Vu",email:"[email protected]",lastSlide:8,duration:"2 phút 15 giây",lastViewed:"2 giờ trước",device:"Mobile · iOS",online:!1,status:"viewing"},{id:"m-v3",name:"Ngoc Ly",email:"[email protected]",lastSlide:11,duration:"4 phút 02 giây",lastViewed:"1 ngày trước",device:"Desktop · Safari",online:!1,status:"completed"},{id:"m-v4",name:"Bao Ha",email:"[email protected]",lastSlide:2,duration:"35 giây",lastViewed:"2 ngày trước",device:"Mobile · Android",online:!1,status:"partial"}]},V={deckId:"deck_5c62b8e9",slides:j([{type:"cover",title:"Roadmap 2026",subtitle:"Kế hoạch sản phẩm theo quý",note:"Nêu mục tiêu cá»§a buổi: thống nhất ưu tiên cả năm.",stats:[{label:"Mốc chính",value:"4 quý"}]},{type:"agenda",title:"Các phần cá»§a lộ trình",subtitle:"Từ tầm nhìn đến nguồn lá»±c",note:"Mỗi quý một slide, cuối cùng là nguồn lá»±c.",bullets:["Tầm nhìn","Quý 1","Quý 2","Quý 3","Quý 4","Nguồn lá»±c"]},{type:"content",title:"Tầm nhìn 2026",subtitle:"Sản phẩm tá»± vận hành cho khách hàng",note:"Một câu tầm nhìn, ba kết quả đo được.",bullets:["Giảm 50% thao tác thá»§ công","Mọi dữ liệu trên một màn hình","Mở nền tảng cho đối tác"]},{type:"content",title:"Q1 · Nền tảng dữ liệu",subtitle:"Tháng 1 – 3",note:"Q1 là điều kiện tiên quyết cho các quý sau.",bullets:["Chuẩn hoá mô hình dữ liệu","Đồng bộ dữ liệu thời gian thá»±c","Bảng điều khiển mới"]},{type:"content",title:"Q2 · Tá»± động hoá",subtitle:"Tháng 4 – 6",note:"Đưa ví dụ một quy trình được tá»± động hoá hoàn toàn.",bullets:["Trình tạo quy trình kéo thả","Thông báo theo sá»± kiện","Mẫu quy trình theo ngành"]},{type:"content",title:"Q3 · Mở rộng tích hợp",subtitle:"Tháng 7 – 9",note:"Liệt kê tích hợp theo mức độ khách hàng yêu cầu.",bullets:["Kết nối kế toán","Kết nối sàn thương mại điện tá»­","API công khai phiên bản 1"]},{type:"content",title:"Q4 · Hệ sinh thái đối tác",subtitle:"Tháng 10 – 12",note:"Nói rõ tiêu chí chọn đối tác đầu tiên.",bullets:["Chợ ứng dụng cho đối tác","Chương trình chứng nhận","Chia sẻ doanh thu"]}
1,{type:"stats",title:"Nguồn lực cần thiết",subtitle:"Cho cả năm 2026",note:"Ngân sách chi tiết nằm ở phụ lục.",stats:[{label:"Kỹ sư",value:"+14"},{label:"Sprint",value:"26"},{label:"Bản phát hành",value:"12"}]},{type:"content",title:"Rủi ro & phụ thuộc",subtitle:"Cần theo dõi từng quý",note:"Mỗi rủi ro có phương án dự phòng.",bullets:["Tuyển dụng kỹ sư chậm","Phụ thuộc đối tác tích hợp","Thay đổi quy định dữ liệu"]},{type:"closing",title:"Cùng thống nhất lộ trình",subtitle:"Góp ý trước 30/11",note:"Mời các trưởng nhóm góp ý bằng văn bản."}]),thread:[{id:"p1",kind:"request",time:"11:10",text:"tách lộ trình thành 4 slide theo quý",slide:"",approval:""},{id:"p2",kind:"result",time:"11:11",text:"Đã chia lộ trình thành 4 slide từ Q1 đến Q4, bắt đầu với nền tảng dữ liệu ở slide 4.",slide:"slide-4",approval:""},{id:"p3",kind:"request",time:"11:14",text:"thêm slide rủi ro và phụ thuộc",slide:"",approval:""},{id:"p4",kind:"result",time:"11:15",text:'Đang cập nhật slide "Rủi ro & phụ thuộc" (slide 9) với ba rủi ro chính.',slide:"slide-9",approval:"chờ bạn duyệt"}],trySaying:["Thêm mốc phát hành cho từng quý","Rút gọn phần tầm nhìn","Đổi slide nguồn lực sang dạng bảng"],share:{url:"uplero.io/s/deck-5c62b8e9",enabled:!1,permission:"view",requireEmail:!1,totalViews:0,totalViewers:0,avgCompletion:0},viewers:[]},Q={[T.deckId]:T,[M.deckId]:M,[q.deckId]:q,[E.deckId]:E,[R.deckId]:R,[V.deckId]:V};function H(e){var l;return(l=Q[e])!=null?l:{deckId:e,slides:[],thread:[],trySaying:[],share:{url:"",enabled:!1,permission:"view",requireEmail:!1,totalViews:0,totalViewers:0,avgCompletion:0},viewers:[]}}const F="Chưa kết nối backend Slides — link này là minh hoạ, chưa được xuất bản và không trỏ tới đâu.",G="Chưa kết nối backend Slides — không thể bật/tắt link chia sẻ từ đây.",L="Chưa kết nối backend Slides — không thể đổi quyền xem từ đây.",U="Chưa kết nối backend Slides — không thể yêu cầu email người xem từ đây.";function X({share:e,onOpenViewers:l}){const[t,a]=r.useState(!1),n=r.useRef(null);return r.useEffect(()=>{if(!t)return;const u=o=>{n.current&&!n.current.contains(o.target)&&a(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[t]),s.jsxs("div",{className:"os-ds-share",ref:n,children:[s.jsx("button",{type:"button",title:"Chia sẻ link slide","aria-label":"Chia sẻ link slide","aria-expanded":t,onClick:()=>a(u=>!u),className:"os-ds-share-trigger".concat(t?" is-open":""),children:s.jsx("i",{className:"ri-share-forward-line os-ds-i16"})}),t&&s.jsxs("div",{className:"os-ds-share-menu",children:[s.jsxs("div",{className:"os-ds-share-head",children:[s.jsx("div",{className:"os-ds-label os-ds-mb8",children:"// chia sẻ link"}),s.jsx("div",{className:"os-ds-share-title",children:"Chia sẻ slide cho khách hàng"})]}),s.jsxs("div",{className:"os-ds-share-body",children:[s.jsxs("div",{children:[s.jsxs("div",{className:"os-ds-share-linkrow",children:[s.jsxs("div",{className:"os-ds-share-link",children:[s.jsx("i",{className:"ri-link os-ds-i14 os-ds-c-f400 os-ds-share-linkicon"}),s.jsx("span",{className:"os-ds-share-url",title:"Link minh hoạ — chưa xuất bản, không mở được",children:e.url})]}),s.jsxs("button",{type:"button","aria-disabled":!0,title:F,className:"os-ds-share-copy",children:[s.jsx("i",{className:"ri-file-copy-line os-ds-i14"}),"Copy"]})]}),"            "]}),s.jsxs("div",{className:"os-ds-share-row",children:[s.jsxs("div",{children:[s.jsx("div",{className:"os-ds-share-rowlabel",children:"Bật link chia sẻ"}),s.jsx("div",{className:"os-ds-share-rowsub",children:e.enabled?"Mọi người có link đều xem được":"Link đang tắt, không ai xem được"})]}),s.jsx("button",{type:"button",role:"switch","aria-checked":e.enabled,"aria-label":"Bật link chia sẻ","aria-disabled":!0,title:G,className:"os-ds-switch".concat(e.enabled?" is-on":""),children:s.jsx("span",{className:"os-ds-switch-knob"})})]}),s.jsxs("div",{children:[s.jsx("div",{className:"os-ds-label os-ds-mb6",children:"// quyền xem"}),s.jsxs("div",{className:"os-ds-seg",children:[s.jsx("button",{type:"button","aria-disabled":!0,title:L,"aria-pressed":e.permission==="view",className:"os-ds-perm".concat(e.permission==="view"?" is-active":""),children:"Chỉ xem"}),s.jsx("button",{type:"button","aria-disabled":!0,title:L,"aria-pressed":e.permission==="comment",className:"os-ds-perm".concat(e.permission==="comment"?" is-active":""),children:"Cho bình luận"})]})]}),s.jsxs("div",{className:"os-ds-share-row",children:[s.jsxs("div",{children:[s.jsx("div",{className:"os-ds-share-rowlabel",children:"Yêu cầu email để xem"}),s.jsx("div",{className:"os-ds-share-rowsub",children:"Thu thập email người xem"})]}),s.jsx("button",{type:"button",role:"switch","aria-checked":e.requireEmail,"aria-label":"Yêu cầu email để xem","aria-disabled":!0,title:U,className:"os-ds-switch".concat(e.requireEmail?" is-on":""),children:s.jsx("span",{className:"os-ds-switch-knob"})})]})]}),s.jsxs("button",{type:"button",onClick:()=>{a(!1),l()},className:"os-ds-share-stats",children:[s.jsxs("span",{className:"os-ds-share-statsl",children:[s.jsx("i",{className:"ri-bar-chart-2-line os-ds-i14 os-ds-c-f500"}),"Xem thống kê người xem"]}),s.jsxs("span",{className:"os-ds-share-statsr",children:[e.totalViewers," người",s.jsx("i",{className:"ri-arrow-right-s-line os-ds-i14"})]})]})]})]})}
1const Y="Bản trình bày tham chiếu: slide, speaker notes, hội thoại, link chia sẻ và thống kê người xem là dữ liệu minh hoạ. Chưa có backend Slides — không có gì được lưu, chia sẻ hay xuất bản từ đây.";function J({deck:e,status:l,slideCount:t,share:a,presenting:n,onPresent:u,assistantOpen:o,onToggleAssistant:m,onBack:p,onOpenViewers:h}){return s.jsxs("header",{className:"os-ds-top",children:[s.jsx("button",{type:"button",title:"Về console",onClick:p,className:"os-ds-top-back",children:s.jsx("i",{className:"ri-arrow-left-line os-ds-i18"})}),s.jsxs("div",{className:"os-ds-ident",children:[s.jsx("div",{className:"os-ds-ident-tile",children:s.jsx("i",{className:"".concat(e.icon," os-ds-i18")})}),s.jsxs("div",{className:"os-ds-ident-text",children:[s.jsxs("div",{className:"os-ds-ident-row",children:[s.jsx("span",{className:"os-ds-ident-name",children:e.name}),s.jsxs("span",{className:"os-ds-ident-pill",children:[s.jsx("span",{className:"os-ds-ident-dot"}),s.jsxs("span",{className:"os-ds-ident-pilltext",children:[l," · ",t," slide"]})]})]}),s.jsxs("div",{className:"os-ds-ident-sub",children:[e.id," · slide studio"]})]})]}),s.jsxs("div",{className:"os-ds-top-center",children:[s.jsx("span",{className:"os-acct-ref os-ds-top-ref",title:Y,children:"Reference"}),s.jsxs("span",{className:"os-ds-theme",children:[s.jsx("i",{className:"ri-brush-line os-ds-i12 os-ds-c-f500"}),s.jsxs("span",{className:"os-ds-theme-text",children:["theme · ",e.theme]})]})]}),s.jsxs("div",{className:"os-ds-top-right",children:[s.jsxs("button",{type:"button",onClick:u,"aria-pressed":n,className:"os-ds-present",children:[s.jsx("i",{className:"".concat(n?"ri-close-line":"ri-play-circle-line"," os-ds-i16")}),s.jsx("span",{className:"os-ds-present-label",children:n?"Thoát trình chiếu":"Trình chiếu"})]}),s.jsx(X,{share:a,onOpenViewers:h}),s.jsx("button",{type:"button",onClick:m,title:o?"Đóng trợ lý UPLERO":"Mở trợ lý UPLERO","aria-label":o?"Đóng trợ lý UPLERO":"Mở trợ lý UPLERO","aria-pressed":o,className:"os-ds-top-toggle".concat(o?" is-active":""),children:s.jsx("i",{className:o?"ri-close-line os-ds-i16":"ri-sparkling-2-line os-ds-i14"})})]})]})}const W="16:9 · tự động lưu",z={cover:"Bìa",agenda:"Mục lục",content:"Nội dung",stats:"Số liệu",quote:"Trích dẫn",closing:"Kết"};function Z({slides:e,activeSlide:l,onSlideChange:t}){const[a,n]=r.useState(""),[u,o]=r.useState(!1),m=a.trim().toLowerCase(),p=r.useMemo(()=>e.filter(h=>h.title.toLowerCase().includes(m)),[e,m]);return s.jsxs("aside",{className:"os-ds-rail",children:[s.jsx("div",{className:"os-ds-rail-search",children:s.jsxs("div",{className:"os-ds-rail-searchbox",children:[s.jsx("i",{className:"ri-search-line os-ds-i14 os-ds-rail-searchicon"}),s.jsx("input",{value:a,onChange:h=>n(h.target.value),placeholder:"Tìm slide...",className:"os-ds-input os-ds-rail-input"})]})}),s.jsxs("div",{className:"os-ds-rail-scroll",children:[s.jsxs("div",{className:"os-ds-rail-head",children:[s.jsxs("span",{className:"os-ds-label os-ds-rail-count",children:["// ",p.length," slide"]}),s.jsx("button",{type:"button",title:u?"Mở rộng":"Thu gọn",onClick:()=>o(h=>!h),className:"os-ds-rail-collapse",children:s.jsx("i",{className:"".concat(u?"ri-arrow-down-s-line":"ri-arrow-up-s-line"," os-ds-i14")})})]}),!u&&s.jsxs("div",{className:"os-ds-rail-list",children:[p.map(h=>{const d=l===h.key;return s.jsxs("button",{type:"button",onClick:()=>t(h.key),"aria-current":d?"true":void 0,className:"os-ds-rail-row".concat(d?" is-active":""),children:[s.jsx("div",{className:"os-ds-thumb",children:h.type==="stats"&&h.stats?s.jsx("div",{className:"os-ds-thumb-stats",children:h.stats.slice(0,3).map(g=>s.jsx("div",{className:"os-ds-center",children:s.jsx("div",{className:"os-ds-thumb-value",children:g.value})},g.label))}):s.jsx("div",{className:"os-ds-thumb-title",children:h.title})}),s.jsxs("div",{className:"os-ds-rail-text",children:[s.jsxs("div",{className:"os-ds-rail-title",children:[s.jsxs("span",{className:"os-ds-rail-index",children:[h.index,"."]}),h.title]}),s.jsx("div",{className:"os-ds-rail-type",children:z[h.type]})]})]},h.key)}),p.length===0&&s.jsx("div",{className:"os-ds-rail-empty",children:"Không có slide khớp"})]})]}),s.jsx("div",{className:"os-ds-rail-foot",children:s.jsxs("div",{className:"os-ds-rail-footrow",children:[s.jsx("span",{className:"os-ds-dot6 os-ds-pulse"}),W]})})]})}function ss({slides:e,activeSlide:l,presenting:t}){var n;const a=(n=e.find(u=>u.key===l))!=null?n:e[0];return a?t?s.jsx("div",{className:"os-ds-present-layer","data-testid":"slide-present",children:s.jsx("div",{className:"os-ds-present-inner",children:s.jsx(D,{slide:a,total:e.length})})}):s.jsxs("div",{className:"os-ds-canvas",children:[s.jsxs("div",{className:"os-ds-canvas-bar",children:[s.jsxs("div",{className:"os-ds-canvas-crumb",children:["slide ",a.index,"/",e.length," · ",a.type]}),s.jsx("div",{className:"os-ds-canvas-zoom",children:"100%"})]}),s.jsx("div",{className:"os-ds-canvas-scroll",children:s.jsxs("div",{className:"os-ds-canvas-inner",children:[s.jsx("div",{className:"os-ds-canvas-frame",children:s.jsx(D,{slide:a,total:e.length})}),s.jsxs("div",{className:"os-ds-notes",children:[s.jsxs("div",{className:"os-ds-notes-head",children:[s.jsx("i",{className:"ri-sticky-note-line os-ds-i14 os-ds-c-f500"}),s.jsx("span",{className:"os-ds-label",children:"// speaker notes"})]}),s.jsx("p",{className:"os-ds-notes-text",children:a.note})]})]})})]}):s.jsxs("div",{className:"os-ds-canvas",children:[s.jsx("div",{className:"os-ds-canvas-bar",children:s.jsx("div",{className:"os-ds-canvas-crumb",children:"slide 0/0"})}),s.jsx("div",{className:"os-ds-canvas-empty",children:"Bộ slide này chưa có slide nào."})]})}function D({slide:e,total:l}){return s.jsxs("div",{className:"os-ds-sv is-".concat(e.type),children:[s.jsxs("div",{className:"os-ds-sv-main",children:[e.type==="cover"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub is-lead",children:e.subt
1itle}),e.stats&&s.jsxs("div",{className:"os-ds-sv-chip",children:[s.jsx("span",{className:"os-ds-sv-chiplabel",children:e.stats[0].label}),s.jsx("span",{className:"os-ds-sv-chipvalue",children:e.stats[0].value})]})]}),e.type==="agenda"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub",children:e.subtitle}),e.bullets&&s.jsx("div",{className:"os-ds-sv-agenda",children:e.bullets.map((t,a)=>s.jsxs("div",{className:"os-ds-sv-agendaitem",children:[s.jsx("span",{className:"os-ds-sv-agendanum",children:a+1}),s.jsx("span",{className:"os-ds-sv-agendatext",children:t})]},t))})]}),e.type==="content"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub",children:e.subtitle}),e.bullets&&s.jsx("div",{className:"os-ds-sv-bullets",children:e.bullets.map(t=>s.jsxs("div",{className:"os-ds-sv-bullet",children:[s.jsx("i",{className:"ri-checkbox-circle-line os-ds-i18 os-ds-c-a500 os-ds-noshrink"}),s.jsx("span",{className:"os-ds-sv-bullettext",children:t})]},t))})]}),e.type==="stats"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub",children:e.subt
1itle}),e.stats&&s.jsx("div",{className:"os-ds-sv-stats",children:e.stats.map(t=>s.jsxs("div",{className:"os-ds-sv-stat",children:[s.jsx("div",{className:"os-ds-sv-statvalue",children:t.value}),s.jsx("div",{className:"os-ds-sv-statlabel",children:t.label})]},t.label))})]}),e.type==="quote"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-sv-quotemark",children:s.jsx("i",{className:"ri-double-quotes-l"})}),s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub",children:e.subtitle})]}),e.type==="closing"&&s.jsxs("div",{className:"os-ds-center",children:[s.jsx("div",{className:"os-ds-sv-title",children:e.title}),e.subtitle&&s.jsx("div",{className:"os-ds-sv-sub is-lead",children:e.subtitle})]})]}),s.jsxs("div",{className:"os-ds-sv-foot",children:[s.jsx("span",{className:"os-ds-sv-footmark",children:"UPLERO"}),s.jsxs("span",{className:"os-ds-sv-footmark",children:[e.index," / ",l]})]})]})}const es="Chưa kết nối backend Slides — yêu cầu chưa thể được gửi hay thực hiện.",y=[{name:"Vein 2.1",note:"Nhanh · nhẹ, phù hợp chỉnh sửa nhỏ"},{name:"Obsidian 4.8",note:"Cân bằng giữa tốc độ và độ sâu"},{name:"Core 5.0",note:"Mạnh nhất, xử lý yêu cầu phức tạp"}],ts=[{key:"github",label:"GitHub",icon:"ri-github-line"},{key:"figma",label:"Figma",icon:"ri-palette-line"},{key:"drive",label:"Google Drive",icon:"ri-hard-drive-2-line"},{key:"dataset",label:"Bộ dữ liệu",icon:"ri-database-2-line"}];function is({value:e,onChange:l,onStartVoice:t}){const[a,n]=r.useState(!1),[u,o]=r.useState("main"),[m,p]=r.useState(2),[h,d]=r.useState([]),[g,c]=r.useState(""),b=r.useRef(null),N=r.useRef(null),w=r.useRef(null);r.useEffect(()=>{if(!a)return;const i=x=>{b.current&&!b.current.contains(x.target)&&n(!1)},v=x=>{x.key==="Escape"&&n(!1)};return document.addEventListener("mousedown",i),document.addEventListener("keydown",v),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("keydown",v)}},[a]);const I=()=>{o("main"),n(i=>!i)},f=i=>{if(!i||i.length===0)return;const v=Array.from(i).map(x=>x.name);d(x=>[...x,...v].slice(0,6)),n(!1)},S=()=>{const i=g.trim();i&&(d(v=>[...v,i].slice(0,6)),c(""),n(!1))},k=y[m],C=m/(y.length-1)*100;return s.jsxs("div",{ref:b,className:"os-ds-cmp",children:[a&&s.jsxs("div",{className:"os-ds-cmp-menu",children:[u==="main"&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"os-ds-cmp-menuhead",children:s.jsx("span",{className:"os-ds-cmp-menulabel",children:"Thêm vào chat"})}),s.jsxs("div",{className:"os-ds-cmp-group",children:[s.jsxs("button",{type:"button",onClick:()=>{var i;return(i=N.current)==null?void 0:i.click()},className:"os-ds-cmp-item",children:[s.jsx("i",{className:"ri-upload-2-line os-ds-i16 os-ds-c-f500"}),"Tải tệp lên"]}),s.jsxs("button",{type:"button",onClick:()=>{var i;return(i=w.current)==null?void 0:i.click()},className:"os-ds-cmp-item",children:[s.jsx("i",{className:"ri-image-add-line os-ds-i16 os-ds-c-f500"}),"Tải ảnh lên"]}),s.jsxs("button",{type:"button",onClick:()=>o("url"),className:"os-ds-cmp-item",children:[s.jsx("i",{className:"ri-link os-ds-i16 os-ds-c-f500"}),"Nhập từ URL"]})]}),s.jsx("div",{className:"os-ds-cmp-sep"}),s.jsx("div",{className:"os-ds-cmp-group",children:ts.map(i=>s.jsxs("div",{className:"os-ds-cmp-item is-soon",children:[s.jsx("i",{className:"".concat(i.icon," os-ds-i16")}),s.jsx("span",{children:i.label}),s.jsx("span",{className:"os-ds-cmp-soon",children:"sắp có"})]},i.key))}),s.jsx("div",{className:"os-ds-cmp-sep"}),s.jsx("div",{className:"os-ds-cmp-group",children:s.jsxs("button",{type:"button",onClick:()=>o("model"),className:"os-ds-cmp-item",children:[s.jsx("i",{className:"ri-cpu-line os-ds-i16 os-ds-c-f500"}),s.jsx("span",{children:"Mô hình AI"}),s.jsx("span",{className:"os-ds-cmp-modelname",children:k.name}),s.jsx("i",{className:"ri-arrow-right-s-line os-ds-i16 os-ds-c-f500"})]})})]}),u==="model"&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"os-ds-cmp-subhead",children:[s.jsx("button",{type:"button",onClick:()=>o("main"),title:"Quay lại",className:"os-ds-cmp-mini",children:s.jsx("i",{className:"ri-arrow-left-s-line os-ds-i18"})}),s.jsx("span",{className:"os-ds-cmp-menulabel",children:"Mức độ điều hành"}),s.jsx("button",{type:"button",onClick:()=>n(!1),title:"Đóng",className:"os-ds-cmp-mini is-end",children:s.jsx("i",{className:"ri-close-line os-ds-i16"})})]}),s.jsxs("div",{className:"os-ds-cmp-model",children:[s.jsx("div",{className:"os-ds-cmp-modeltitle",children:k.name}),s.jsxs("div",{className:"os-ds-cmp-track",children:[s.jsx("div",{className:"os-ds-cmp-trackfill",style:{width:"".concat(C,"%")}}),s.jsx("div",{className:"os-ds-cmp-thumb",style:{left:"".concat(C,"%")}})]}),s.jsx("div",{className:"os-ds-cmp-models",children:y.map((i,v)=>s.jsx("button",{type:"button",onClick:()=>p(v),className:"os-ds-cmp-modelbtn".concat(v===m?" is-active":""),children:i.name},i.name))}),s.jsx("div",{className:"os-ds-cmp-modelnote",children:k.note})]})]}),u==="url"&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"os-ds-cmp-subhead",children:[s.jsx("button",{type:"button",onClick:()=>o("main"),title:"Quay lại",className:"os-ds-cmp-mini",children:s.jsx("i",{className:"ri-arrow-left-s-line os-ds-i18"})}),s.jsx("span",{className:"os-ds-cmp-menulabel",children:"Nhập từ URL"})]}),s.jsxs("div",{className:"os-ds-cmp-url",children:[s.jsx("input",{value:g,onChange:i=>c(i.target.value),onKeyDown:i=>{i.key==="Enter"&&S()},placeholder:"https://...",className:"os-ds-cmp-urlinput"}),s.jsx("button",{type:"button",onClick:S,disabled:!g.trim(),className:"os-ds-cmp-urladd".concat(g.trim()?" is-ready":""),children:"Thêm nguồn"})]})]})]}),h.length>0&&s.jsx("div",{className:"os-ds-cmp-chips",children:h.map((i,v)=>s.jsxs("span",{className:"os-ds-cmp-chip",children:[s.jsx("i",{className:"ri-attachment-2 os-ds-i12 os-ds-c-f500"}),s.jsx("span",{className:"os-ds-cmp-chipname",children:i}),s.jsx("button",{type:"button",title:"Xoá",onClick:()=>d(x=>x.filter((ms,A)=>A!==v)),className:"os-ds-cmp-chipx",children:s.jsx("i",{className:"ri-close-line os-ds-i12"})})]},"".concat(i,"-").concat(v)))}),s.jsxs("div",{className:"os-ds-cmp-shell",children:[s.jsx("button",{type:"button",title:"Thêm nội dung hoặc đổi mô hình","aria-label":"Thêm nội dung hoặc đổi mô hình",onClick:I,className:"os-ds-cmp-plus".concat(a?" is-open":""),children:s.jsx("i",{className:"ri-add-line os-ds-i18"})}),s.jsx("button",{type:"button",title:"Nói bằng giọng nói","aria-label":"Nói bằng giọng nói",onClick:t,className:"os-ds-cmp-mic",children:s.jsx("i",{className:"ri-mic-line os-ds-i16"})}
1),s.jsx("input",{value:e,onChange:i=>l(i.target.value),placeholder:"Bạn muốn AI làm gì?",className:"os-ds-cmp-input"}),s.jsx("button",{type:"button","aria-disabled":!0,title:es,"aria-label":"Gửi",className:"os-ds-cmp-send",children:s.jsx("i",{className:"ri-arrow-up-line os-ds-i16"})})]}),s.jsx("input",{ref:N,type:"file",multiple:!0,className:"os-ds-hidden",onChange:i=>{f(i.target.files),i.target.value=""}}),s.jsx("input",{ref:w,type:"file",accept:"image/*",multiple:!0,className:"os-ds-hidden",onChange:i=>{f(i.target.files),i.target.value=""}})]})}const ns="Chưa kết nối backend Slides — thay đổi này chưa thể được duyệt hay áp dụng.",as="Chưa kết nối backend Slides — chưa có bản nháp nào để mở.";function ls({fixture:e,open:l,onClose:t,onJumpToSlide:a}){const[n,u]=r.useState("thread"),[o,m]=r.useState(!1),[p,h]=r.useState(""),d=e.thread,g=r.useRef(null);return r.useEffect(()=>{var c,b;(b=(c=g.current)==null?void 0:c.scrollIntoView)==null||b.call(c,{behavior:"smooth",block:"end"})},[d.length]),s.jsx("aside",{className:"os-ds-panel".concat(l?" is-open":""),"aria-label":"Trợ lý UPLERO",children:s.jsxs("div",{className:"os-ds-panel-inner",children:[s.jsxs("div",{className:"os-ds-panel-head",children:[s.jsxs("div",{className:"os-ds-seg",children:[s.jsx("button",{type:"button",onClick:()=>u("voice"),"aria-pressed":n==="voice",className:"os-ds-seg-btn".concat(n==="voice"?" is-active":""),children:"Voice"}),s.jsx("button",{type:"button",onClick:()=>u("thread"),"aria-pressed":n==="thread",className:"os-ds-seg-btn".concat(n==="thread"?" is-active":""),children:"Thread"})]}),s.jsx("button",{type:"button",title:"Đóng trợ lý",onClick:t,className:"os-ds-iconbtn32 is-end",children:s.jsx("i",{className:"ri-close-line os-ds-i18"})})]}),n==="voice"?s.jsxs("div",{className:"os-ds-voice",children:[s.jsxs("div",{className:"os-ds-voice-stage",children:[s.jsx("div",{className:"os-ds-voice-glow"}),s.jsxs("div",{className:"os-ds-voice-rings",children:[s.jsx("div",{className:"os-ds-voice-dash".concat(o?" is-on":"")}),s.jsx("div",{className:"os-ds-voice-ring"}),s.jsxs("button",{type:"button","aria-label":"Bật/tắt giọng nói","aria-pressed":o,onClick:()=>m(c=>!c),className:"os-ds-voice-orb",children:[s.jsx("span",{className:"os-ds-voice-orbline"}),s.jsx("span",{className:"os-ds-voice-u",children:"U"})]})]})]}),s.jsxs("div",{className:"os-ds-voice-status",children:[s.jsx("div",{className:"os-ds-voice-state",children:o?"// voice link active":"// voice link idle"}),s.jsx("div",{className:"os-ds-voice-cue",children:o?"Đang lắng nghe...":"Bấm để bắt đầu nói"})]}),s.jsxs("div",{className:"os-ds-voice-try",children:[s.jsx("div",{className:"os-ds-label os-ds-mb8 os-ds-center",children:"// thử nói"}),s.jsx("div",{className:"os-ds-voice-chips",children:e.trySaying.map(c=>s.jsx("button",{type:"button",onClick:()=>{h(c),u("thread")},className:"os-ds-voice-chip",children:c},c))})]})]}):s.jsx("div",{className:"os-ds-tx",children:s.jsxs("div",{className:"os-ds-stack24",children:[d.map(c=>s.jsxs("div",{className:"os-ds-tx-msg",children:[s.jsxs("div",{className:"os-ds-tx-head",children:[s.jsx("span",{className:"os-ds-tx-kind",children:c.kind==="request"?"yêu cầu":"kết quả"}),s.jsx("span",{className:"os-ds-tx-time",children:c.time})]}),s.jsx("p",{className:"os-ds-tx-text",children:c.text}),c.slide&&s.jsxs("button",{type:"button",onClick:()=>a(c.slide),title:"Mở slide liên quan",className:"os-ds-tx-jump",children:[s.jsx("i",{className:"ri-slideshow-3-line os-ds-i12"}),c.slide]}),c.approval&&s.jsxs("div",{className:"os-ds-tx-approval",children:[s.jsxs("span",{className:"os-ds-tx-approvalstate",children:[s.jsx("span",{className:"os-ds-dot6 os-ds-pulse"}),s.jsx("span",{className:"os-ds-tx-approvallabel",children:c.approval})]}),s.jsx("button",{type:"button","aria-disabled":!0,title:ns,className:"os-ds-btn-primary",children:"Duyệt & áp dụng"}),s.jsx("button",{type:"button","aria-disabled":!0,title:as,className:"os-ds-btn-outline",children:"Xem bản nháp"})]})]},c.id)),s.jsx("div",{ref:g})]})}),s.jsxs("div",{className:"os-ds-panel-composer",children:[s.jsx(is,{value:p,onChange:h,onStartVoice:()=>{u("voice"),m(c=>!c)}}),s.jsxs("div",{className:"os-ds-panel-note",children:[s.jsx("i",{className:"ri-information-line os-ds-f10"}),s.jsx("span",{children:"UPLERO có thể mắc lỗi · kiểm tra slide trước khi trình chiếu"})]})]})]})})}const cs="Dữ liệu tham chiếu: lượt xem, người xem, email và thời lượng là số liệu minh hoạ, không phải người xem thật. Chưa có link chia sẻ nào được xuất bản.",hs={completed:{label:"Đã xem hết",tone:"is-completed"},viewing:{label:"Đang xem dở",tone:"is-viewing"},partial:{label:"Chỉ xem một phần",tone:"is-partial"}};function ds({fixture:e,slideCount:l,open:t,onClose:a}){const[n,u]=r.useState(""),{share:o,viewers:m}=e,p=n.trim().toLowerCase(),h=r.useMemo(()=>m.filter(d=>d.name.toLowerCase().includes(p)||d.email.toLowerCase().includes(p)),[m,p]);return s.jsxs("div",{className:"os-ds-vw".concat(t?" is-open":""),"aria-hidden":!t,children:[s.jsx("div",{className:"os-ds-vw-backdrop",onClick:a}),s.jsxs("div",{className:"os-ds-vw-sheet",role:"dialog","aria-label":"Thống kê người xem",children:[s.jsx("div",{className:"os-ds-vw-handle",children:s.jsx("span",{className:"os-ds-vw-handlebar"})}),s.jsxs("div",{className:"os-ds-vw-head",children:[s.jsxs("div",{className:"os-ds-vw-headrow",children:[s.jsx("div",{className:"os-ds-ident-tile",children:s.jsx("i",{className:"ri-bar-chart-2-line os-ds-i18"})}
1),s.jsxs("div",{className:"os-ds-minw0",children:[s.jsxs("div",{className:"os-ds-vw-titlerow",children:[s.jsx("span",{className:"os-ds-vw-title",children:"Thống kê người xem"}),s.jsx("span",{className:"os-acct-ref os-ds-vw-ref",title:cs,children:"Reference"})]}),s.jsxs("div",{className:"os-ds-vw-sub",children:["// ",o.url]})]}),s.jsx("button",{type:"button",title:"Đóng",onClick:a,className:"os-ds-iconbtn32 is-end",children:s.jsx("i",{className:"ri-close-line os-ds-i18"})})]}),s.jsxs("div",{className:"os-ds-vw-overview",children:[s.jsxs("div",{className:"os-ds-vw-card",children:[s.jsx("div",{className:"os-ds-vw-cardvalue",children:o.totalViews}),s.jsx("div",{className:"os-ds-vw-cardlabel",children:"Lượt xem"})]}),s.jsxs("div",{className:"os-ds-vw-card",children:[s.jsx("div",{className:"os-ds-vw-cardvalue",children:o.totalViewers}),s.jsx("div",{className:"os-ds-vw-cardlabel",children:"Người xem"})]}),s.jsxs("div",{className:"os-ds-vw-card",children:[s.jsxs("div",{className:"os-ds-vw-cardvalue",children:[o.avgCompletion,"%"]}),s.jsx("div",{className:"os-ds-vw-cardlabel",children:"Tỉ lệ xem hết"})]})]})]}),s.jsx("div",{className:"os-ds-vw-search",children:s.jsxs("div",{className:"os-ds-rail-searchbox",children:[s.jsx("i",{className:"ri-search-line os-ds-i14 os-ds-rail-searchicon"}),s.jsx("input",{value:n,onChange:d=>u(d.target.value),placeholder:"Tìm theo tên hoặc email...",className:"os-ds-input os-ds-vw-input"})]})}),s.jsxs("div",{className:"os-ds-vw-list",children:[s.jsx("div",{className:"os-ds-vw-grid",children:h.map(d=>{const g=hs[d.status],c=l>0?Math.round(d.lastSlide/l*100):0;return s.jsxs("div",{className:"os-ds-vw-viewer",children:[s.jsxs("div",{className:"os-ds-vw-row",children:[s.jsxs("div",{className:"os-ds-vw-avatar",children:[d.name.charAt(0).toUpperCase(),d.online&&s.jsx("span",{className:"os-ds-vw-online"})]}),s.jsxs("div",{className:"os-ds-vw-main",children:[s.jsxs("div",{className:"os-ds-vw-namerow",children:[s.jsx("span",{className:"os-ds-vw-name",children:d.name}),s.jsxs("span",{className:"os-ds-vw-badge ".concat(g.tone),children:[s.jsx("span",{className:"os-ds-vw-badgedot"}),g.label]})]}),s.jsxs("div",{className:"os-ds-vw-email",children:[d.email," · ",d.device]})]}),s.jsxs("div",{className:"os-ds-vw-right",children:[s.jsxs("div",{className:"os-ds-vw-slides",children:[d.lastSlide,"/",l," slide"]}),s.jsx("div",{className:"os-ds-vw-when",children:d.lastViewed})]})]}),s.jsxs("div",{className:"os-ds-vw-progress",children:[s.jsx("div",{className:"os-ds-vw-track",children:s.jsx("div",{className:"os-ds-vw-fill",style:{width:"".concat(c,"%")}})}),s.jsxs("span",{className:"os-ds-vw-pct",children:[c,"%"]}),s.jsx("span",{className:"os-ds-vw-duration",children:d.duration})]})]},d.id)})}),h.length===0&&s.jsx("div",{className:"os-ds-vw-empty",children:"Không có người xem khớp"})]})]})]})}function os({deck:e,onBack:l}){return s.jsx(rs,{deck:e,onBack:l},e.id)}function rs({deck:e,onBack:l}){var g,c,b;const t=r.useMemo(()=>H(e.id),[e.id]),[a,n]=r.useState((c=(g=t.slides[0])==null?void 0:g.key)!=null?c:"slide-1"),[u,o]=r.useState(!1),[m,p]=r.useState(!0),[h,d]=r.useState(!1);return s.jsxs("div",{className:"os-ds-root",role:"region","aria-label":"Slide Studio · ".concat(e.name),children:[s.jsx(J,{deck:e,status:(b=t.status)!=null?b:e.status,slideCount:t.slides.length,share:t.share,presenting:u,onPresent:()=>o(N=>!N),assistantOpen:m,onToggleAssistant:()=>p(N=>!N),onBack:l,onOpenViewers:()=>d(!0)}),s.jsxs("div",{className:"os-ds-body",children:[s.jsx(Z,{slides:t.slides,activeSlide:a,onSlideChange:n}),s.jsx(ss,{slides:t.slides,activeSlide:a,presenting:u}),s.jsx(ls,{fixture:t,open:m,onClose:()=>p(!1),onJumpToSlide:N=>{n(N),o(!1)}})]}),s.jsx(ds,{fixture:t,slideCount:t.slides.length,open:h,onClose:()=>d(!1)})]})}function Ss(){const{slide_id:e}=K(),l=$(),{select:t}=O(),a=r.useCallback(()=>{l(P.home),t("slides")},[l,t]),n=_(e);return B.createPortal(n?s.jsx(os,{deck:n,onBack:a}):s.jsx(us,{slideId:e,onBack:a}),document.body)}function us({slideId:e,onBack:l}){return s.jsx("div",{className:"os-ds-missing",role:"alert","data-testid":"slide-studio-missing",children:s.jsxs("div",{className:"os-ds-m
1issing-card",children:[s.jsx("span",{className:"os-ds-missing-icon","aria-hidden":!0,children:s.jsx("i",{className:"ri-slideshow-3-line"})}),s.jsx("div",{className:"os-ds-missing-title",children:"Không tìm thấy bộ slide"}),s.jsxs("p",{className:"os-ds-missing-body",children:["Không có bộ slide nào mang mã ",s.jsx("code",{children:e||"—"})," trong workspace này."]}),s.jsxs("button",{type:"button",className:"os-ds-missing-back",onClick:l,children:[s.jsx("i",{className:"ri-arrow-left-line","aria-hidden":!0}),"Về danh sách Slides"]})]})})}export{Ss as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.