From f18cebfb35ae72fd7e55a5ab15c3423008eef2f5 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 23:00:48 +0000 Subject: [PATCH 1/3] Remove device status bar (clock, signal, battery) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_019FRT7Fy7zGJNj5VX3FTL1K --- src/App.jsx | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 28ead85..a120c2c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,7 +3,7 @@ import { Send, Menu, X, ChevronLeft, ChevronRight, Bot, User, Paperclip, Camera, Video, MessageSquare, Newspaper, FileText, CheckCircle2, Circle, AlertTriangle, Info, Plus, LogOut, UploadCloud, Image as ImageIcon, ShieldCheck, - Sparkles, Signal, Wifi, BatteryFull + Sparkles } from 'lucide-react'; const NEWS_ITEMS = [ @@ -124,13 +124,6 @@ export default function App() { // State for Admin/Contributor Popup const [showInfoPopup, setShowInfoPopup] = useState(false); - // Live clock for the device status bar - const [clock, setClock] = useState(new Date()); - useEffect(() => { - const t = setInterval(() => setClock(new Date()), 30000); - return () => clearInterval(t); - }, []); - const chatContainerRef = useRef(null); useEffect(() => { @@ -292,20 +285,6 @@ export default function App() { setActiveTab('news'); }; - const clockLabel = clock.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); - - // ---- Device status bar (top of the phone frame) ---- - const StatusBar = ({ dark = false }) => ( -
- {clockLabel} -
- - - -
-
- ); - // ---- Login ---- const LoginView = () => (
@@ -796,9 +775,6 @@ export default function App() { return (
- {/* Device status bar */} - - {/* Main Content Area */}
{activeTab === 'chat' && ChatView()} @@ -809,7 +785,6 @@ export default function App() { {/* Global News Create Modal */} {showNewsModal && (
-
From 5bc2e304fba0bdc4e8d206b213f9fa0cc365f3e1 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 23:03:56 +0000 Subject: [PATCH 2/3] Fix bottom nav sticking to bottom using dynamic viewport height Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_019FRT7Fy7zGJNj5VX3FTL1K --- src/App.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index a120c2c..2ca6f8e 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -764,7 +764,7 @@ export default function App() { if (!isLoggedIn) { return ( -
+
{LoginView()}
@@ -773,7 +773,7 @@ export default function App() { } return ( -
+
{/* Main Content Area */}
From 2d56f452e953567aafd35838a3c6c2953dead8eb Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 23 Jun 2026 23:13:19 +0000 Subject: [PATCH 3/3] Rename bot to HSSE Bot, drop contributor panel label, add reliable header images for news Co-Authored-By: Claude Sonnet 4.6 Claude-Session: https://claude.ai/code/session_019FRT7Fy7zGJNj5VX3FTL1K --- src/App.jsx | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 2ca6f8e..985d70f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -6,6 +6,28 @@ import { Sparkles } from 'lucide-react'; +// Branded gradient + icon header images, generated inline so news always +// shows a header image without depending on an external image host. +const newsImg = (from, to, icon) => `data:image/svg+xml,${encodeURIComponent( + `` + + `` + + `` + + `` + + `` + + `` + + icon + + `` +)}`; + +const NEWS_IMG_APD = newsImg('#fbbf24', '#d97706', + ''); +const NEWS_IMG_FIRE = newsImg('#38bdf8', '#0369a1', + ''); +const NEWS_IMG_AWARD = newsImg('#34d399', '#0d9488', + ''); +const NEWS_IMG_DEFAULT = newsImg('#10b981', '#047857', + ''); + const NEWS_ITEMS = [ { id: 1, @@ -15,10 +37,10 @@ const NEWS_ITEMS = [ type: "warning", summary: "Kewajiban penggunaan helm keselamatan (Safety Helmet) Kelas E terbaru.", content: "Berdasarkan evaluasi keselamatan semester pertama, manajemen menetapkan bahwa mulai 1 Juli 2026, seluruh personel yang memasuki area operasional zona kuning dan merah wajib menggunakan Helm Keselamatan (Safety Helmet) Kelas E dengan pelindung benturan samping.\n\nPedoman lengkap telah diperbarui dalam dokumen Sistem Manajemen HSSE. Harap seluruh pekerja dan kontraktor menyesuaikan dengan standar terbaru ini. Inspeksi akan diperketat mulai bulan depan.", - image: "https://images.unsplash.com/photo-1541888081-3642eb657736?auto=format&fit=crop&q=80&w=400&h=200", + image: NEWS_IMG_APD, carousel: [ - { url: "https://images.unsplash.com/photo-1504328345606-18bbc8c9d7d1?auto=format&fit=crop&q=80&w=400&h=300", caption: "Helm standar kelas E" }, - { url: "https://images.unsplash.com/photo-1581092160562-40aa08e78837?auto=format&fit=crop&q=80&w=400&h=300", caption: "Inspeksi kepatuhan di lapangan" } + { url: NEWS_IMG_APD, caption: "Helm standar kelas E" }, + { url: NEWS_IMG_APD, caption: "Inspeksi kepatuhan di lapangan" } ] }, { @@ -29,9 +51,9 @@ const NEWS_ITEMS = [ type: "info", summary: "Jadwal dan rute evakuasi untuk simulasi hari Jumat.", content: "Sebagai bagian dari kesiapsiagaan tanggap darurat, simulasi evakuasi kebakaran (Fire Drill) akan dilaksanakan pada:\n\nHari/Tanggal: Jumat, 26 Juni 2026\nWaktu: 09.00 WIB - Selesai\nLokasi: Seluruh area Gedung Utama dan Fasilitas Produksi A\n\nMohon seluruh personel berpartisipasi aktif dan mengikuti arahan dari Floor Warden di masing-masing lantai.", - image: "https://images.unsplash.com/photo-1614064506922-442cd26588a5?auto=format&fit=crop&q=80&w=400&h=200", + image: NEWS_IMG_FIRE, carousel: [ - { url: "https://images.unsplash.com/photo-1542385151-efd9000785a0?auto=format&fit=crop&q=80&w=400&h=300", caption: "Rute dan titik kumpul evakuasi" } + { url: NEWS_IMG_FIRE, caption: "Rute dan titik kumpul evakuasi" } ] }, { @@ -42,9 +64,9 @@ const NEWS_ITEMS = [ type: "success", summary: "Fasilitas Produksi B berhasil mencapai 1 juta jam kerja aman.", content: "Apresiasi setinggi-tingginya kepada seluruh tim di Fasilitas Produksi B atas pencapaian luar biasa: 1 Juta Jam Kerja Tanpa Kecelakaan Kerja (Zero LTI) yang tercapai pada pertengahan tahun 2026 ini.\n\nPencapaian ini adalah bukti komitmen kita bersama terhadap budaya HSSE 'Safety First'. Mari kita pertahankan dan tingkatkan kinerja keselamatan di seluruh area operasi.", - image: "https://images.unsplash.com/photo-1581092580497-e0d23cbdf1dc?auto=format&fit=crop&q=80&w=400&h=200", + image: NEWS_IMG_AWARD, carousel: [ - { url: "https://images.unsplash.com/photo-1504917595217-d4dc5ebe6122?auto=format&fit=crop&q=80&w=400&h=300", caption: "Penghargaan Tim Produksi B" } + { url: NEWS_IMG_AWARD, caption: "Penghargaan Tim Produksi B" } ] } ]; @@ -275,7 +297,7 @@ export default function App() { type: newsType, summary: newsForm.summary, content: newsForm.summary, - image: newsForm.headerImage || "https://images.unsplash.com/photo-1504917595217-d4dc5ebe6122?auto=format&fit=crop&q=80&w=400&h=200", + image: newsForm.headerImage || NEWS_IMG_DEFAULT, carousel: newsForm.carousel.filter(item => item.url) // Hanya simpan lampiran yang telah diisi foto }; @@ -352,7 +374,7 @@ export default function App() {
-

Bot K3 Pertamina

+

HSSE Bot

Online · Selalu aktif @@ -664,7 +686,7 @@ export default function App() {

Tabah Darma · Security

-

Contributor Panel • HSSE Shipping & Marine

+

HSSE Shipping & Marine