Fix Table Admin Preview Desktop
Seeder Menu Kesehatan
This commit is contained in:
@@ -926,5 +926,194 @@
|
|||||||
"mimeType": "image/webp",
|
"mimeType": "image/webp",
|
||||||
"link": "/api/fileStorage/findUnique/TDQReg1lQ73s39crXW0ra-desktop.webp",
|
"link": "/api/fileStorage/findUnique/TDQReg1lQ73s39crXW0ra-desktop.webp",
|
||||||
"category": "image"
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkao2zm90007vntzxqkjy5mt",
|
||||||
|
"name": "d6hJgycQawWN3VEcHaqtR-desktop.webp",
|
||||||
|
"realName": "puskesmas.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/d6hJgycQawWN3VEcHaqtR-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkatoru10000vny38y0wxd6s",
|
||||||
|
"name": "cg78Sb_QzZFlli9s2FPVc-desktop.webp",
|
||||||
|
"realName": "puskesmas2.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/cg78Sb_QzZFlli9s2FPVc-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkay1e590010vn6y24pgaa1r",
|
||||||
|
"name": "hLeF0GRFZqDUngZnDMAAk-desktop.webp",
|
||||||
|
"realName": "pk1.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/hLeF0GRFZqDUngZnDMAAk-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkay6hob0011vn6ybjwejcej",
|
||||||
|
"name": "hyyTFi8EApjzFEZ9EvJgB-desktop.webp",
|
||||||
|
"realName": "pk2.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/hyyTFi8EApjzFEZ9EvJgB-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkay8vmd0012vn6ylsk2vzfo",
|
||||||
|
"name": "l4qsUEw2JiclGAkkrXp9g-desktop.webp",
|
||||||
|
"realName": "pk3.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/l4qsUEw2JiclGAkkrXp9g-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkayd8o90013vn6ye7n8805q",
|
||||||
|
"name": "Gc79mlIlGuoRQuTqskFj--desktop.webp",
|
||||||
|
"realName": "pk-4.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/Gc79mlIlGuoRQuTqskFj--desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkayi0x90016vn6ykddxqyq3",
|
||||||
|
"name": "OsMY3AYPyGC_CoN1xUjOn-desktop.webp",
|
||||||
|
"realName": "posyandu1.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/OsMY3AYPyGC_CoN1xUjOn-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkaykipf0019vn6yknjno3k1",
|
||||||
|
"name": "M9QlgVKIEfCdY3g4F_tRZ-desktop.webp",
|
||||||
|
"realName": "pk6.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/M9QlgVKIEfCdY3g4F_tRZ-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkayz2h8001cvn6yrb7uptjs",
|
||||||
|
"name": "Gi8EX3pBmT719AfzXirDS-desktop.webp",
|
||||||
|
"realName": "pd1.jpg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/Gi8EX3pBmT719AfzXirDS-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawq38m0009vn6yi7evbhap",
|
||||||
|
"name": "v7Ac2xQvTiJy-HYh1AxF4-desktop.webp",
|
||||||
|
"realName": "posko-siaga.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/v7Ac2xQvTiJy-HYh1AxF4-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawso29000cvn6y879ahra0",
|
||||||
|
"name": "jYxEXspWH5g6eTTVqK72c-desktop.webp",
|
||||||
|
"realName": "ambulance.jpg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/jYxEXspWH5g6eTTVqK72c-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawu7qj000fvn6yubhimyiv",
|
||||||
|
"name": "3tNQ9J8I3Ewq5H8CWuqvp-desktop.webp",
|
||||||
|
"realName": "penanganan darurat.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/3tNQ9J8I3Ewq5H8CWuqvp-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkb6488i001fvn6ylkddch1j",
|
||||||
|
"name": "g4ICsRrmOaIqS_yqlQLZK-desktop.webp",
|
||||||
|
"realName": "puskesmas2.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/g4ICsRrmOaIqS_yqlQLZK-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkb681og001gvn6ykb5uasln",
|
||||||
|
"name": "1NkzPzQailqE5yNOiUjB9-desktop.webp",
|
||||||
|
"realName": "puskesmas.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/1NkzPzQailqE5yNOiUjB9-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkb6brrf0000vn14u8c7wnox",
|
||||||
|
"name": "NBPAqjPXn7GQmYTDBI5hu-desktop.webp",
|
||||||
|
"realName": "kd3.webp",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/NBPAqjPXn7GQmYTDBI5hu-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkb6ehpi0001vn14hjp4tdye",
|
||||||
|
"name": "EcQIGOF6LW1dIKE53vmba-desktop.webp",
|
||||||
|
"realName": "kd4.jpeg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/EcQIGOF6LW1dIKE53vmba-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkbynxxo0000vn67wi2nsyl3",
|
||||||
|
"name": "pps1ZgzJxDb4VZxEvtZeu-desktop.webp",
|
||||||
|
"realName": "infowp-1.jpg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/pps1ZgzJxDb4VZxEvtZeu-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkbyr3mk0003vn673xrqv8xv",
|
||||||
|
"name": "JhJigMo269K1TFGzSB1OS-desktop.webp",
|
||||||
|
"realName": "infowp-2.jpg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/JhJigMo269K1TFGzSB1OS-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkax3o8g000rvn6ygqpmo1nb",
|
||||||
|
"name": "5giLSHSnWEFoZoMEcjhL7-desktop.webp",
|
||||||
|
"realName": "diare.webp",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/5giLSHSnWEFoZoMEcjhL7-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkax5ukz000uvn6yho3aj2nf",
|
||||||
|
"name": "3faPo-1wjhVDVU6S7S8sS-desktop.webp",
|
||||||
|
"realName": "tbc.png",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/3faPo-1wjhVDVU6S7S8sS-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkax72nw000xvn6ymcuvlzom",
|
||||||
|
"name": "DyX82oztXbHfu6HEvbrpt-desktop.webp",
|
||||||
|
"realName": "dbd.jpg",
|
||||||
|
"path": "uploads/images",
|
||||||
|
"mimeType": "image/webp",
|
||||||
|
"link": "/api/fileStorage/findUnique/DyX82oztXbHfu6HEvbrpt-desktop.webp",
|
||||||
|
"category": "image"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkax3ptc000tvn6ytq1lpb2z",
|
||||||
|
"name": "Diare dan Kolera",
|
||||||
|
"deskripsiSingkat": "<p>Apa itu Diare dan Kolera penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan Diare dan Kolera yang efektif untuk melindungi keluarga anda.</p>",
|
||||||
|
"deskripsiLengkap": "<p>Apa itu Diare dan Kolera penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan Diare dan Kolera yang efektif untuk melindungi keluarga anda.</p><ul><li><p>Penyebab: Bakteri Vibrio cholerae (Kolera) atau Escherichia coli (diare) akibat makanan/minuman yang terkontaminasi.</p></li><li><p>Gejala: Buang air besar cair terus-menerus, dehidrasi, dan lemas. Pencegahan: Menjaga kebersihan makanan dan air, serta mencuci tangan dengan sabun.</p></li></ul>",
|
||||||
|
"imageId": "cmkax3o8g000rvn6ygqpmo1nb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkax5urc000wvn6yxfw0970w",
|
||||||
|
"name": "TBC (Tuberkulosis)",
|
||||||
|
"deskripsiSingkat": "<p>Apa itu TBC penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan TBC yang efektif untuk melindungi keluarga anda.</p>",
|
||||||
|
"deskripsiLengkap": "<p>Apa itu TBC penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan TBC yang efektif untuk melindungi keluarga anda.</p><p>Penyebab: Bakteri Mycobacterium tuberculosis yang menyebar melalui udara.</p><p>Gejala: Batuk lebih dari 2 minggu, berkeringat di malam hari, dan berat badan turun.</p><p>Pencegahan: Vaksin BCG, pola hidup sehat, dan pengobatan bagi penderita agar tidak menular.</p>",
|
||||||
|
"imageId": "cmkax5ukz000uvn6yho3aj2nf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkax72s7000zvn6yz3nmvrry",
|
||||||
|
"name": "Demam Berdarah Dengue (DBD)",
|
||||||
|
"deskripsiSingkat": "<p>Yuk Kenali gelaja dan cara penanganan DBD yang efektif untuk melindungi keluarga anda selama musim hujan.</p>",
|
||||||
|
"deskripsiLengkap": "<p>Apa itu DBD penyebab, gejala dan cara penanganannya?</p><p>Yuk Kenali gelaja dan cara penanganan DBD yang efektif untuk melindungi keluarga anda selama musim hujan.</p><p>Penyebab: Virus dengue yang ditularkan oleh nyamuk Aedes aegypti.</p><p>Gejala: Demam tinggi, nyeri sendi, ruam kulit, dan pendarahan ringan.</p><p>Pencegahan: Menguras tempat air, menutup wadah air, fogging, dan menggunakan lotion anti-nyamuk.</p>",
|
||||||
|
"imageId": "cmkax72nw000xvn6ymcuvlzom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkbyny4f0002vn67kmjmjrpl",
|
||||||
|
"name": "Fogging sebagai Pencegah DBD di Br. Umahanyar Desa Darmasaba",
|
||||||
|
"deskripsiSingkat": "<p>Pemerintah Desa Darmasaba melaksanakan fogging di wilayah Br. Umahanyar sebagai upaya pencegahan DBD di Desa Darmasaba.</p>",
|
||||||
|
"deskripsiLengkap": "<p>Pemerintah Desa Darmasaba melaksanakan fogging (pengasapan) di wilayah Br. Umahanyar Desa Darmasaba Kecamatan Abiansemal Kabupaten Badung dari tanggal 12 sampai dengan 13 April 2023.</p><p>Fogging ini merupakan salah satu metode yang dilakukan oleh Pemdes Darmasaba dalam pencegahan penyakit Demam Berdarah Dengue (DBD) dengan menargetkan nyamuk Aedes aegypti sebagai vektor penyebabnya.</p>",
|
||||||
|
"imageId": "cmkbynxxo0000vn67wi2nsyl3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkbyr3rx0005vn674uhycsxc",
|
||||||
|
"name": "Gerakan Serentak Penyemprotan Pencegahan PMK di Desa Darmasaba",
|
||||||
|
"deskripsiSingkat": "<p>Penyemprotan serentak dilakukan di Desa Darmasaba untuk mencegah Penyakit Mulut dan Kaki (PMK) pada hewan ternak.</p>",
|
||||||
|
"deskripsiLengkap": "<p>Setelah dilakukan vaksinasi Penyakit Mulut dan Kaki (PMK) pada hewan ternak yaitu sapi di wilayah Desa Darmasaba, Pemerintah Desa Darmasaba melaksanakan gerakan serentak penyemprotan pencegahan PMK pada hari Rabu (20/7/2022) di seputaran wilayah Desa Darmasaba.</p><p>Upaya ini dilakukan sebagai bentuk pencegahan terhadap penyebaran PMK dan menjaga kesehatan hewan ternak di desa.</p>",
|
||||||
|
"imageId": "cmkbyr3mk0003vn673xrqv8xv"
|
||||||
|
}
|
||||||
|
]
|
||||||
30
prisma/data/kesehatan/kontak-darurat/kontak-darurat.json
Normal file
30
prisma/data/kesehatan/kontak-darurat/kontak-darurat.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkax1vks000qvn6yyxuvfsi8",
|
||||||
|
"name": "Puskesmas Pembantu Darmasaba",
|
||||||
|
"deskripsi": "<p>Puskesmas Pembantu Darmasaba merupakan fasilitas kesehatan tingkat pertama yang berada di Desa Darmasaba, melayani berbagai layanan kesehatan masyarakat termasuk pemeriksaan umum dan imunisasi.</p>",
|
||||||
|
"imageId": "cmkb6488i001fvn6ylkddch1j",
|
||||||
|
"whatsapp": "089647037430"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawzrvg000nvn6ywyx529em",
|
||||||
|
"name": "UPTD Puskesmas Abiansemal III (melayani Darmasaba)",
|
||||||
|
"deskripsi": "<p>Puskesmas Abiansemal III adalah fasilitas kesehatan utama di kecamatan Abiansemal yang melayani wilayah Desa Darmasaba dan sekitarnya. Puskesmas ini memiliki layanan 24 jam serta pelayanan darurat kesehatan dasar.</p>",
|
||||||
|
"imageId": "cmkb681og001gvn6ykb5uasln",
|
||||||
|
"whatsapp": "03618463263"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawy5in000kvn6yza82pkkg",
|
||||||
|
"name": "UPTD Puskesmas Abiansemal I",
|
||||||
|
"deskripsi": "<p>Puskesmas Abiansemal I melayani masyarakat di wilayah kecamatan Abiansemal, termasuk pelayanan kesehatan darurat dan program kesehatan masyarakat.</p>",
|
||||||
|
"imageId": "cmkb6brrf0000vn14u8c7wnox",
|
||||||
|
"whatsapp": "087858367111"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkb6ehu20003vn14ca4xr057",
|
||||||
|
"name": "Kantor Desa Darmasaba (Kontak Informasi Kesehatan)",
|
||||||
|
"deskripsi": "<p>Kantor Pemerintahan Desa Darmasaba dapat menjadi saluran kontak awal untuk rujukan layanan kesehatan darurat atau informasi lebih lanjut mengenai fasilitas kesehatan di wilayah desa.</p>",
|
||||||
|
"imageId": "cmkb6ehpi0001vn14hjp4tdye",
|
||||||
|
"whatsapp": "081239580000"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkawso7y000evn6ygob15cqb",
|
||||||
|
"name": "Rembug Stunting di Desa Darmasaba",
|
||||||
|
"deskripsi": "<p>Pemerintah Desa Darmasaba melaksanakan kegiatan rembug stunting dengan melibatkan bidan desa, kader posyandu, dan tokoh masyarakat. Tujuan kegiatan ini adalah untuk memperkuat upaya pencegahan kekerdilan (stunting) melalui koordinasi layanan kesehatan, edukasi gizi, serta percepatan penanganan gizi buruk di lingkungan desa sebagai bagian dari respons terhadap kondisi kesehatan yang mendesak.</p>",
|
||||||
|
"imageId": "cmkayz2h8001cvn6yrb7uptjs"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawq3ef000bvn6y387vub0y",
|
||||||
|
"name": "Posko Kesehatan Darurat dan Bencana",
|
||||||
|
"deskripsi": "<p>Posko Kesehatan Darurat dan Bencana Desa Darmasaba dibentuk sebagai pusat koordinasi dan pertolongan bagi warga yang terdampak situasi darurat seperti banjir, tanah longsor, atau wabah penyakit. Posko ini dilengkapi dengan tenaga medis, obat-obatan dasar, serta dukungan logistik untuk memastikan penanganan cepat dan tepat sasaran. Kegiatan ini juga melibatkan kader kesehatan desa dan karang taruna sebagai relawan lapangan.</p>",
|
||||||
|
"imageId": "cmkawq38m0009vn6yi7evbhap"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawso7y000evn6ygob14bpa",
|
||||||
|
"name": "Layanan Ambulans Desa Darmasaba",
|
||||||
|
"deskripsi": "<p>Layanan Ambulans Desa Darmasaba disiapkan untuk membantu masyarakat yang membutuhkan transportasi medis darurat ke fasilitas kesehatan terdekat. Layanan ini beroperasi 24 jam dan dapat dihubungi melalui nomor darurat desa. Tim ambulans terdiri dari relawan terlatih dan tenaga medis yang siap memberikan pertolongan pertama di lokasi kejadian sebelum dirujuk ke rumah sakit atau puskesmas.</p>",
|
||||||
|
"imageId": "cmkawso29000cvn6y879ahra0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawu7te000hvn6yh3pdnv4w",
|
||||||
|
"name": "Penanganan Darurat Sosial & Kesehatan Desa Darmasaba",
|
||||||
|
"deskripsi": "<p>Program Penanganan Darurat Sosial & Kesehatan Desa Darmasaba bertujuan memberikan respon cepat terhadap situasi darurat seperti warga sakit mendadak, kecelakaan, bencana alam, maupun kondisi sosial yang membutuhkan bantuan segera. Tim Siaga Desa Darmasaba berkoordinasi dengan Puskesmas Abiansemal dan BPBD untuk memastikan penanganan yang cepat, tepat, dan manusiawi. Program ini juga mencakup layanan ambulans desa, posko kesehatan darurat, serta bantuan logistik bagi warga terdampak.</p>",
|
||||||
|
"imageId": "cmkawu7qj000fvn6yubhimyiv"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkawkji50002vn6yzyrlqhh1",
|
||||||
|
"name": "Gerakan Kulkul PKK dan Posyandu Desa Darmasaba",
|
||||||
|
"deskripsiSingkat": "<p>Kegiatan bersama PKK dan Posyandu untuk meningkatkan pelayanan kesehatan masyarakat.</p>",
|
||||||
|
"deskripsi": "<p>Pada hari Minggu, 11 Januari 2025, Pemerintah Desa Darmasaba melalui TP PKK dan TP Posyandu melaksanakan kegiatan Gerakan Kulkul PKK dan Posyandu yang berlangsung serentak di seluruh wilayah Desa Darmasaba untuk memperkuat pelayanan kesehatan dasar dan peningkatan partisipasi masyarakat dalam program Posyandu.</p>",
|
||||||
|
"imageId": "cmkay1e590010vn6y24pgaa1r"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawmlg40005vn6yja2xiev0",
|
||||||
|
"name": "Pendampingan Kunjungan Rumah oleh Puskesmas Abiansemal 3",
|
||||||
|
"deskripsiSingkat": "<p>Pendataan kesehatan penyandang disabilitas lewat kunjungan rumah di Desa Darmasaba.</p>",
|
||||||
|
"deskripsi": "<p>Pemerintah Desa Darmasaba bersama Kelian Banjar Dinas dan kader kesehatan mendampingi kegiatan kunjungan rumah yang dilaksanakan oleh Puskesmas Abiansemal 3 pada 21 Juli 2025, difokuskan pada pendataan dan pemantauan kondisi kesehatan penyandang disabilitas di Banjar Bersih, Desa Darmasaba.</p>",
|
||||||
|
"imageId": "cmkay6hob0011vn6ybjwejcej"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawnr9k0008vn6ymwv0foiv",
|
||||||
|
"name": "Kegiatan Aksi Sosial Tim Penggerak Posyandu Provinsi Bali di Desa Darmasaba",
|
||||||
|
"deskripsiSingkat": "<p>Aksi sosial TP Posyandu Bali untuk memperkuat pelayanan posyandu di desa.</p>",
|
||||||
|
"deskripsi": "<p>Pada 10 Desember 2025, Desa Darmasaba menjadi lokasi pelaksanaan Aksi Sosial Tim Penggerak Posyandu Provinsi Bali yang bertujuan memperkuat pelayanan Posyandu serta meningkatkan kesejahteraan masyarakat, khususnya keluarga dan balita.</p>",
|
||||||
|
"imageId": "cmkay8vmd0012vn6ylsk2vzfo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawnr9k0008vn6ymwv0dpjw",
|
||||||
|
"name": "Inovasi BAJRA dalam Penanggulangan Rabies",
|
||||||
|
"deskripsiSingkat": "<p>Program BAJRA untuk penanggulangan rabies di Desa Darmasaba.</p>",
|
||||||
|
"deskripsi": "<p>Desa Darmasaba mengembangkan inovasi BAJRA (Bersama Jaga Rabies), sebuah program berbasis komunitas untuk penanggulangan rabies yang mengintegrasikan pelaporan cepat masyarakat, edukasi berkelanjutan dan koordinasi lintas sektor antara kesehatan hewan, manusia, dan pemerintahan desa.</p>",
|
||||||
|
"imageId": "cmkayd8o90013vn6ye7n8805q"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawnr9k0008vn6ymwv0eqkx",
|
||||||
|
"name": "Posyandu Pudak Amara Berkompetisi",
|
||||||
|
"deskripsiSingkat": "<p>Partisipasi Posyandu Pudak Amara dalam lomba prestasi Posyandu tingkat provinsi.</p>",
|
||||||
|
"deskripsi": "<p>Kader Posyandu Pudak Amara Br. Cabe mendapat pendampingan dari Perbekel Darmasaba, Dinas Kesehatan Kab. Badung, Puskesmas Abiansemal III, dan Pustu Desa Darmasaba dalam ajang lomba kader dan Posyandu berprestasi tingkat Provinsi Bali tahun 2025.</p>",
|
||||||
|
"imageId": "cmkayi0x90016vn6ykddxqyq3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkawnr9k0008vn6ymwv1frly",
|
||||||
|
"name": "Outbound Kader Posyandu Darmasaba",
|
||||||
|
"deskripsiSingkat": "<p>Program pembinaan dan pengembangan kapasitas kader Posyandu.</p>",
|
||||||
|
"deskripsi": "<p>Pemdes Darmasaba melaksanakan kegiatan Outbound Posyandu untuk meningkatkan kapasitas dan wawasan Kader Posyandu se-Desa Darmasaba sebagai bagian dari upaya peningkatan kualitas pelayanan kesehatan dasar di masyarakat.</p>",
|
||||||
|
"imageId": "cmkaykipf0019vn6yknjno3k1"
|
||||||
|
}
|
||||||
|
]
|
||||||
14
prisma/data/kesehatan/puskesmas/jam-puskesmas/jam.json
Normal file
14
prisma/data/kesehatan/puskesmas/jam-puskesmas/jam.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkao2zwx0008vntzmvqdsdzo",
|
||||||
|
"workDays": "09:00",
|
||||||
|
"weekDays": "17:00",
|
||||||
|
"holiday": "08:00 - 16:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkao2zwx0008vntzmvqdseal",
|
||||||
|
"workDays": "08:00",
|
||||||
|
"weekDays": "12:00",
|
||||||
|
"holiday": "–"
|
||||||
|
}
|
||||||
|
]
|
||||||
16
prisma/data/kesehatan/puskesmas/kontak-puskesmas/kontak.json
Normal file
16
prisma/data/kesehatan/puskesmas/kontak-puskesmas/kontak.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkao2zxc0009vntz00kev051",
|
||||||
|
"kontakPuskesmas": "(0361) 8463263",
|
||||||
|
"email": "puskesmas@gmail.com",
|
||||||
|
"facebook": "puskesmas@gmail.com",
|
||||||
|
"kontakUGD": "(0361) 8463263"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkao2zxc0009vntz00kev162",
|
||||||
|
"kontakPuskesmas": "–",
|
||||||
|
"email": "–",
|
||||||
|
"facebook": "–",
|
||||||
|
"kontakUGD": "–"
|
||||||
|
}
|
||||||
|
]
|
||||||
18
prisma/data/kesehatan/puskesmas/puskesmas.json
Normal file
18
prisma/data/kesehatan/puskesmas/puskesmas.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "cmkao2zxk000bvntzbavkbg6p",
|
||||||
|
"name": "Puskesmas Abiansemal III",
|
||||||
|
"alamat": "Jl. Ratna, Sibang Kaja, Abiansemal, Badung, Bali 80352",
|
||||||
|
"jamId": "cmkao2zwx0008vntzmvqdsdzo",
|
||||||
|
"imageId": "cmkao2zm90007vntzxqkjy5mt",
|
||||||
|
"kontakId": "cmkao2zxc0009vntz00kev051"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cmkao2zxk000bvntzbavkbh7q",
|
||||||
|
"name": "Puskesmas Pembantu Darmasaba",
|
||||||
|
"alamat": "Desa Darmasaba, Kecamatan Abiansemal, Kabupaten Badung, Bali",
|
||||||
|
"jamId": "cmkao2zwx0008vntzmvqdseal",
|
||||||
|
"imageId": "cmkatoru10000vny38y0wxd6s",
|
||||||
|
"kontakId": "cmkao2zxc0009vntz00kev162"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -1118,8 +1118,8 @@ model Posyandu {
|
|||||||
nomor String
|
nomor String
|
||||||
deskripsi String
|
deskripsi String
|
||||||
jadwalPelayanan String
|
jadwalPelayanan String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
@@ -1133,12 +1133,12 @@ model Puskesmas {
|
|||||||
alamat String
|
alamat String
|
||||||
jam JamOperasional @relation(fields: [jamId], references: [id])
|
jam JamOperasional @relation(fields: [jamId], references: [id])
|
||||||
jamId String
|
jamId String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
kontak KontakPuskesmas @relation(fields: [kontakId], references: [id])
|
kontak KontakPuskesmas @relation(fields: [kontakId], references: [id])
|
||||||
kontakId String
|
kontakId String
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
isActive Boolean @default(true)
|
isActive Boolean @default(true)
|
||||||
}
|
}
|
||||||
@@ -1174,8 +1174,8 @@ model ProgramKesehatan {
|
|||||||
name String
|
name String
|
||||||
deskripsiSingkat String
|
deskripsiSingkat String
|
||||||
deskripsi String
|
deskripsi String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
@@ -1187,8 +1187,8 @@ model PenangananDarurat {
|
|||||||
id String @id @default(cuid())
|
id String @id @default(cuid())
|
||||||
name String
|
name String
|
||||||
deskripsi String
|
deskripsi String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
@@ -1200,8 +1200,8 @@ model KontakDarurat {
|
|||||||
id String @id @default(cuid())
|
id String @id @default(cuid())
|
||||||
name String
|
name String
|
||||||
deskripsi String
|
deskripsi String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
whatsapp String
|
whatsapp String
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
@@ -1215,8 +1215,8 @@ model InfoWabahPenyakit {
|
|||||||
name String
|
name String
|
||||||
deskripsiSingkat String
|
deskripsiSingkat String
|
||||||
deskripsiLengkap String
|
deskripsiLengkap String
|
||||||
image FileStorage @relation(fields: [imageId], references: [id])
|
image FileStorage? @relation(fields: [imageId], references: [id])
|
||||||
imageId String
|
imageId String?
|
||||||
createdAt DateTime @default(now())
|
createdAt DateTime @default(now())
|
||||||
updatedAt DateTime @updatedAt
|
updatedAt DateTime @updatedAt
|
||||||
deletedAt DateTime @default(now())
|
deletedAt DateTime @default(now())
|
||||||
|
|||||||
1172
prisma/seed.ts
1172
prisma/seed.ts
File diff suppressed because it is too large
Load Diff
@@ -45,7 +45,7 @@ export default async function seedAssets() {
|
|||||||
|
|
||||||
// 1. Download zip
|
// 1. Download zip
|
||||||
const url =
|
const url =
|
||||||
"https://cld-dkr-makuro-seafile.wibudev.com/f/bc437c719af64c0bb7f2/?dl=1";
|
"https://cld-dkr-makuro-seafile.wibudev.com/f/1d6104cdf2b849f89533/?dl=1";
|
||||||
const res = await fetchWithRetry(url, 3, 20000);
|
const res = await fetchWithRetry(url, 3, 20000);
|
||||||
|
|
||||||
// Validasi content-type
|
// Validasi content-type
|
||||||
|
|||||||
@@ -102,8 +102,10 @@ function ListKategoriBerita({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="50%">
|
<TableTh w="50%">
|
||||||
|
|||||||
@@ -79,8 +79,10 @@ function ListBerita({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="50%">Judul</TableTh>
|
<TableTh w="50%">Judul</TableTh>
|
||||||
|
|||||||
@@ -85,8 +85,10 @@ function ListFoto({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Judul Foto</TableTh>
|
<TableTh>Judul Foto</TableTh>
|
||||||
|
|||||||
@@ -87,66 +87,66 @@ function ListVideo({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Table highlightOnHover
|
||||||
<Table highlightOnHover striped verticalSpacing="sm">
|
layout="fixed" // 🔥 PENTING
|
||||||
<TableThead>
|
withColumnBorders={false} striped verticalSpacing="sm">
|
||||||
<TableTr>
|
<TableThead>
|
||||||
<TableTh>Judul Video</TableTh>
|
<TableTr>
|
||||||
<TableTh>Tanggal</TableTh>
|
<TableTh>Judul Video</TableTh>
|
||||||
<TableTh>Deskripsi</TableTh>
|
<TableTh>Tanggal</TableTh>
|
||||||
<TableTh>Aksi</TableTh>
|
<TableTh>Deskripsi</TableTh>
|
||||||
</TableTr>
|
<TableTh>Aksi</TableTh>
|
||||||
</TableThead>
|
</TableTr>
|
||||||
<TableTbody>
|
</TableThead>
|
||||||
{filteredData.length > 0 ? (
|
<TableTbody>
|
||||||
filteredData.map((item) => (
|
{filteredData.length > 0 ? (
|
||||||
<TableTr key={item.id}>
|
filteredData.map((item) => (
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
<TableTr key={item.id}>
|
||||||
<Text fz="md" fw={500} lh={1.45} truncate="end" lineClamp={1}>
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
{item.name}
|
<Text fz="md" fw={500} lh={1.45} truncate="end" lineClamp={1}>
|
||||||
</Text>
|
{item.name}
|
||||||
</TableTd>
|
</Text>
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
</TableTd>
|
||||||
<Text fz="sm" c="dimmed" lh={1.45}>
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
{new Date(item.createdAt).toLocaleDateString('id-ID', {
|
<Text fz="sm" c="dimmed" lh={1.45}>
|
||||||
day: 'numeric',
|
{new Date(item.createdAt).toLocaleDateString('id-ID', {
|
||||||
month: 'long',
|
day: 'numeric',
|
||||||
year: 'numeric',
|
month: 'long',
|
||||||
})}
|
year: 'numeric',
|
||||||
</Text>
|
})}
|
||||||
</TableTd>
|
</Text>
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
</TableTd>
|
||||||
<Text fz="sm" lh={1.45} truncate="end" lineClamp={1} dangerouslySetInnerHTML={{ __html: item.deskripsi }} />
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
</TableTd>
|
<Text fz="sm" lh={1.45} truncate="end" lineClamp={1} dangerouslySetInnerHTML={{ __html: item.deskripsi }} />
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
</TableTd>
|
||||||
<Button
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
variant="light"
|
<Button
|
||||||
color="blue"
|
variant="light"
|
||||||
onClick={() => router.push(`/admin/desa/gallery/video/${item.id}`)}
|
color="blue"
|
||||||
fz="sm"
|
onClick={() => router.push(`/admin/desa/gallery/video/${item.id}`)}
|
||||||
px="xs"
|
fz="sm"
|
||||||
>
|
px="xs"
|
||||||
<IconDeviceImac size={18} />
|
>
|
||||||
<Text ml={5}>Detail</Text>
|
<IconDeviceImac size={18} />
|
||||||
</Button>
|
<Text ml={5}>Detail</Text>
|
||||||
</TableTd>
|
</Button>
|
||||||
</TableTr>
|
|
||||||
))
|
|
||||||
) : (
|
|
||||||
<TableTr>
|
|
||||||
<TableTd colSpan={4}>
|
|
||||||
<Center py={24}>
|
|
||||||
<Text c="dimmed" fz="sm" lh={1.4}>
|
|
||||||
Tidak ada video yang cocok
|
|
||||||
</Text>
|
|
||||||
</Center>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
)}
|
))
|
||||||
</TableTbody>
|
) : (
|
||||||
</Table>
|
<TableTr>
|
||||||
</Box>
|
<TableTd colSpan={4}>
|
||||||
|
<Center py={24}>
|
||||||
|
<Text c="dimmed" fz="sm" lh={1.4}>
|
||||||
|
Tidak ada video yang cocok
|
||||||
|
</Text>
|
||||||
|
</Center>
|
||||||
|
</TableTd>
|
||||||
|
</TableTr>
|
||||||
|
)}
|
||||||
|
</TableTbody>
|
||||||
|
</Table>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
{/* Mobile Cards */}
|
{/* Mobile Cards */}
|
||||||
|
|||||||
@@ -76,8 +76,10 @@ function ListAjukanPermohonan({ search }: { search: string }) {
|
|||||||
</Title>
|
</Title>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} lh={1.4}>Nama</TableTh>
|
<TableTh fz="sm" fw={600} lh={1.4}>Nama</TableTh>
|
||||||
|
|||||||
@@ -99,7 +99,9 @@ function ListSuratKeterangan({ search }: { search: string }) {
|
|||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="left">
|
<TableTh fz="sm" fw={600} ta="left">
|
||||||
|
|||||||
@@ -85,8 +85,10 @@ function ListPelayananTelunjukSakti({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="left" c="gray.8" w="30%">
|
<TableTh fz="sm" fw={600} ta="left" c="gray.8" w="30%">
|
||||||
|
|||||||
@@ -81,8 +81,10 @@ function ListPenghargaan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="35%">Nama</TableTh>
|
<TableTh w="35%">Nama</TableTh>
|
||||||
|
|||||||
@@ -116,8 +116,10 @@ function ListKategoriPengumuman({ search }: { search: string }) {
|
|||||||
</Stack>
|
</Stack>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover striped withRowBorders>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} striped withRowBorders>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="60%">
|
<TableTh w="60%">
|
||||||
|
|||||||
@@ -83,8 +83,10 @@ function ListPengumuman({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="left">
|
<TableTh fz="sm" fw={600} ta="left">
|
||||||
|
|||||||
@@ -96,8 +96,10 @@ function ListKategoriPotensi({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover striped withRowBorders miw={700}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} striped withRowBorders miw={700}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="60%">
|
<TableTh w="60%">
|
||||||
|
|||||||
@@ -90,8 +90,10 @@ function ListPotensi({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={700}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={700}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh w="20%">
|
<TableTh w="20%">
|
||||||
|
|||||||
@@ -80,8 +80,10 @@ function ListPerbekelDariMasaKeMasa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="left" c="dark.9">Nama Perbekel</TableTh>
|
<TableTh fz="sm" fw={600} ta="left" c="dark.9">Nama Perbekel</TableTh>
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ function ListAPBDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ function ListBelanja({ search }: { search: string }) {
|
|||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ function ListPembiayaan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
striped
|
striped
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ function ListPendapatan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ function ListPegawaiBumdes({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop: Table */}
|
{/* Desktop: Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ function ListPosisiOrganisasiBumDes({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ function ListDemografiPekerjaan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ function ListJumlahPendudukMiskin({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ function ListGrafikBerdasarkanPendidikan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ function ListGrafikBerdasarkanUsiaKerjaYangMenganggur({ search }: { search: stri
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ function ListDetailDataPengangguran({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ function ListLowonganKerjaLokal({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ function ListKategoriProduk({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ function ListPasarDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ function ListProgramKemiskinan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ function ListSektorUnggulanDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -73,7 +73,9 @@ function ListAjukanIdeInovatif({ search }: { search: string }) {
|
|||||||
<Paper withBorder bg={colors['white-1']} p="lg" shadow="md" radius="md">
|
<Paper withBorder bg={colors['white-1']} p="lg" shadow="md" radius="md">
|
||||||
<Title order={4}>Daftar Ide Inovatif</Title>
|
<Title order={4}>Daftar Ide Inovatif</Title>
|
||||||
<Box style={{ overflowX: "auto" }}>
|
<Box style={{ overflowX: "auto" }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '20%' }}>Nama</TableTh>
|
<TableTh style={{ width: '20%' }}>Nama</TableTh>
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ function ListInfoTeknologiTepatGuna({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ function ListKolaborasiInovasi({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ function ListMitraKolaborasi({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ function ListAdministrasiOnline({ search }: { search: string }) {
|
|||||||
</Title>
|
</Title>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ function ListJenisLayanan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ function ListJenisPengaduan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ function ListPengaduanMasyarakat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ function ListProgramKreatifDesa({ search }: { search: string }) {
|
|||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -93,8 +93,10 @@ function ListKeamananLingkungan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}
|
||||||
miw={0}
|
miw={0}
|
||||||
style={{ tableLayout: 'fixed', width: '100%' }}>
|
style={{ tableLayout: 'fixed', width: '100%' }}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ function ListKontakItem({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop: Table */}
|
{/* Desktop: Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ function ListLaporanPublik({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ function ListPencegahanKriminalitas({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function ListPolsekTerdekat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ function ListTipsKeamanan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ function ListArtikelKesehatan({ search }: { search: string }) {
|
|||||||
|
|
||||||
{/* Tabel */}
|
{/* Tabel */}
|
||||||
<Box style={{ overflowX: "auto" }}>
|
<Box style={{ overflowX: "auto" }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ minWidth: 200 }}>Judul</TableTh>
|
<TableTh style={{ minWidth: 200 }}>Judul</TableTh>
|
||||||
|
|||||||
@@ -81,8 +81,10 @@ function ListDokterTenagaMedis({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh><Text fz="sm" fw={600} lh={1.4}>Nama Dokter</Text></TableTh>
|
<TableTh><Text fz="sm" fw={600} lh={1.4}>Nama Dokter</Text></TableTh>
|
||||||
|
|||||||
@@ -170,8 +170,10 @@ function ListFasilitasKesehatan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Fasilitas Kesehatan</TableTh>
|
<TableTh>Fasilitas Kesehatan</TableTh>
|
||||||
|
|||||||
@@ -94,8 +94,10 @@ function ListTarifLayanan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>
|
<TableTh>
|
||||||
|
|||||||
@@ -85,8 +85,10 @@ function ListJadwalKegiatan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} lh={1.2}>Nama</TableTh>
|
<TableTh fz="sm" fw={600} lh={1.2}>Nama</TableTh>
|
||||||
|
|||||||
@@ -147,8 +147,10 @@ function ListGrafikHasilKepuasanMasyarakat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Nama</TableTh>
|
<TableTh>Nama</TableTh>
|
||||||
|
|||||||
@@ -99,8 +99,10 @@ function ListKelahiran({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover fz="md">
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} fz="md">
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh><Text fz="sm" fw={600} lh={1.4}>Nama</Text></TableTh>
|
<TableTh><Text fz="sm" fw={600} lh={1.4}>Nama</Text></TableTh>
|
||||||
|
|||||||
@@ -95,8 +95,10 @@ function ListKematian({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Tabel untuk desktop */}
|
{/* Tabel untuk desktop */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh><Text fz="sm" fw={600} lh={1.2}>Nama</Text></TableTh>
|
<TableTh><Text fz="sm" fw={600} lh={1.2}>Nama</Text></TableTh>
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ function GrafikPersentaseKelahiranKematian() {
|
|||||||
|
|
||||||
|
|
||||||
{/* Desktop: Table */}
|
{/* Desktop: Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table striped withTableBorder highlightOnHover>
|
<Table striped withTableBorder highlightOnHover>
|
||||||
<Table.Thead>
|
<Table.Thead>
|
||||||
<Table.Tr>
|
<Table.Tr>
|
||||||
|
|||||||
@@ -93,7 +93,9 @@ function ListInfoWabahPenyakit({ search }: { search: string }) {
|
|||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Judul</TableTh>
|
<TableTh>Judul</TableTh>
|
||||||
|
|||||||
@@ -159,8 +159,8 @@ function EditKontakDarurat() {
|
|||||||
<TextInput
|
<TextInput
|
||||||
value={formData.whatsapp}
|
value={formData.whatsapp}
|
||||||
onChange={(e) => setFormData(prev => ({ ...prev, whatsapp: e.target.value }))}
|
onChange={(e) => setFormData(prev => ({ ...prev, whatsapp: e.target.value }))}
|
||||||
label="Whatsapp"
|
label="Telepon"
|
||||||
placeholder="Masukkan whatsapp"
|
placeholder="Masukkan telepon"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ function DetailKontakDarurat() {
|
|||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<Text fz="lg" fw="bold">Whatsapp</Text>
|
<Text fz="lg" fw="bold">Telepon</Text>
|
||||||
<Text fz="md" c="dimmed">{data.whatsapp || '-'}</Text>
|
<Text fz="md" c="dimmed">{data.whatsapp || '-'}</Text>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
|
|||||||
@@ -120,8 +120,8 @@ function CreateKontakDarurat() {
|
|||||||
onChange={(val) => {
|
onChange={(val) => {
|
||||||
kontakDaruratState.create.form.whatsapp = val.target.value;
|
kontakDaruratState.create.form.whatsapp = val.target.value;
|
||||||
}}
|
}}
|
||||||
label={<Text fz="sm" fw="bold">Whatsapp</Text>}
|
label={<Text fz="sm" fw="bold">Telepon</Text>}
|
||||||
placeholder="Masukkan whatsapp"
|
placeholder="Masukkan telepon"
|
||||||
required
|
required
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -83,8 +83,10 @@ function ListKontakDarurat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Judul</TableTh>
|
<TableTh>Judul</TableTh>
|
||||||
|
|||||||
@@ -87,8 +87,10 @@ function ListPenangananDarurat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} lh={1.4}>Judul</TableTh>
|
<TableTh fz="sm" fw={600} lh={1.4}>Judul</TableTh>
|
||||||
|
|||||||
@@ -87,31 +87,34 @@ function ListPosyandu({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}
|
||||||
|
>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="left" lh={1.4}>Nama Posyandu</TableTh>
|
<TableTh w={220} fz="sm" fw={600} ta="left" lh={1.4}>Nama Posyandu</TableTh>
|
||||||
<TableTh fz="sm" fw={600} ta="left" lh={1.4}>Nomor Posyandu</TableTh>
|
<TableTh w={220} fz="sm" fw={600} ta="left" lh={1.4}>Nomor Posyandu</TableTh>
|
||||||
<TableTh fz="sm" fw={600} ta="left" lh={1.4}>Deskripsi</TableTh>
|
<TableTh w={220} fz="sm" fw={600} ta="left" lh={1.4}>Deskripsi</TableTh>
|
||||||
<TableTh fz="sm" fw={600} ta="left" lh={1.4}>Aksi</TableTh>
|
<TableTh w={150} fz="sm" fw={600} ta="left" lh={1.4}>Aksi</TableTh>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
</TableThead>
|
</TableThead>
|
||||||
<TableTbody>
|
<TableTbody>
|
||||||
{filteredData.length > 0 ? (
|
{filteredData.length > 0 ? (
|
||||||
filteredData.map((item) => (
|
filteredData.map((item) => (
|
||||||
<TableTr key={item.id}>
|
<TableTr key={item.id}>
|
||||||
<TableTd>
|
<TableTd w={220}>
|
||||||
<Text fz="md" fw={500} lh={1.5} truncate="end" lineClamp={1}>
|
<Text fz="md" fw={500} lh={1.5} truncate="end" lineClamp={1}>
|
||||||
{item.name}
|
{item.name}
|
||||||
</Text>
|
</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd w={220}>
|
||||||
<Text fz="sm" c="dimmed" lh={1.5}>
|
<Text fz="sm" c="dimmed" lh={1.5}>
|
||||||
{item.nomor || '-'}
|
{item.nomor || '-'}
|
||||||
</Text>
|
</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd w={220}>
|
||||||
<Text
|
<Text
|
||||||
fz="sm"
|
fz="sm"
|
||||||
lh={1.5}
|
lh={1.5}
|
||||||
@@ -120,7 +123,7 @@ function ListPosyandu({ search }: { search: string }) {
|
|||||||
dangerouslySetInnerHTML={{ __html: item.deskripsi }}
|
dangerouslySetInnerHTML={{ __html: item.deskripsi }}
|
||||||
/>
|
/>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd w={220}>
|
||||||
<Button
|
<Button
|
||||||
size="xs"
|
size="xs"
|
||||||
radius="md"
|
radius="md"
|
||||||
|
|||||||
@@ -83,8 +83,10 @@ function ListProgramKesehatan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>
|
<TableTh>
|
||||||
|
|||||||
@@ -82,8 +82,10 @@ function ListPuskesmas({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>
|
<TableTh>
|
||||||
|
|||||||
@@ -74,8 +74,10 @@ function ListSdgsDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover striped verticalSpacing="sm">
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} striped verticalSpacing="sm">
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '60%' }}>
|
<TableTh style={{ width: '60%' }}>
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ function ListAPBDes({ search }: { search: string }) {
|
|||||||
return (
|
return (
|
||||||
<Box py={{ base: 'md', md: 'lg' }}>
|
<Box py={{ base: 'md', md: 'lg' }}>
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Paper withBorder bg={colors['white-1']} p="lg" shadow="md" radius="md">
|
<Paper withBorder bg={colors['white-1']} p="lg" shadow="md" radius="md">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4} size="lg" lh={1.2}>
|
<Title order={4} size="lg" lh={1.2}>
|
||||||
@@ -83,7 +83,9 @@ function ListAPBDes({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<Table highlightOnHover miw={0}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="md" fw={600} ta="left" w="25%">
|
<TableTh fz="md" fw={600} ta="left" w="25%">
|
||||||
|
|||||||
@@ -123,7 +123,9 @@ function ListKategoriKegiatan({ search }: { search: string }) {
|
|||||||
// Desktop table
|
// Desktop table
|
||||||
const renderDesktopTable = () => (
|
const renderDesktopTable = () => (
|
||||||
<Box>
|
<Box>
|
||||||
<Table highlightOnHover striped verticalSpacing="sm" miw={300}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} striped verticalSpacing="sm" miw={300}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>
|
<TableTh>
|
||||||
@@ -208,7 +210,7 @@ function ListKategoriKegiatan({ search }: { search: string }) {
|
|||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box visibleFrom="md">{renderDesktopTable()}</Box>
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>{renderDesktopTable()}</Box>
|
||||||
<Box hiddenFrom="md">{renderMobileCards()}</Box>
|
<Box hiddenFrom="md">{renderMobileCards()}</Box>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ function ListDesaAntiKorupsi({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
striped
|
striped
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ function ListResponden({ search }: ListRespondenProps) {
|
|||||||
<Box>
|
<Box>
|
||||||
<Stack gap={'lg'}>
|
<Stack gap={'lg'}>
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Paper p="lg" radius="lg" shadow="md" withBorder>
|
<Paper p="lg" radius="lg" shadow="md" withBorder>
|
||||||
<Title order={4} size="lg" mb="md" lh={1.2}>
|
<Title order={4} size="lg" mb="md" lh={1.2}>
|
||||||
Daftar Responden
|
Daftar Responden
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ function ListKategoriPrestasi({ search }: { search: string }) {
|
|||||||
Tambah Baru
|
Tambah Baru
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table verticalSpacing="sm" highlightOnHover>
|
<Table verticalSpacing="sm" highlightOnHover>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
|
|||||||
@@ -73,7 +73,9 @@ function ListPrestasi({ search }: { search: string }) {
|
|||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover striped verticalSpacing="sm" miw={800}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} striped verticalSpacing="sm" miw={800}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Nama Prestasi</TableTh>
|
<TableTh>Nama Prestasi</TableTh>
|
||||||
|
|||||||
@@ -100,8 +100,10 @@ function ListMediaSosial({ search }: { search: string }) {
|
|||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
{/* Desktop: Table | Mobile: Card-based vertical layout */}
|
{/* Desktop: Table | Mobile: Card-based vertical layout */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '25%' }}>
|
<TableTh style={{ width: '25%' }}>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ function ProgramInovasi() {
|
|||||||
const [search, setSearch] = useState("");
|
const [search, setSearch] = useState("");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box px={{base: 0, md: "md"}} py="lg">
|
<Box px={{ base: 0, md: "md" }} py="lg">
|
||||||
<HeaderSearch
|
<HeaderSearch
|
||||||
title="Program Inovasi"
|
title="Program Inovasi"
|
||||||
placeholder="Cari program inovasi..."
|
placeholder="Cari program inovasi..."
|
||||||
@@ -34,8 +34,8 @@ function ListProgramInovasi({ search }: { search: string }) {
|
|||||||
const { data, page, totalPages, loading, load } = stateProgramInovasi.findMany;
|
const { data, page, totalPages, loading, load } = stateProgramInovasi.findMany;
|
||||||
|
|
||||||
useShallowEffect(() => {
|
useShallowEffect(() => {
|
||||||
load(page, 10, debouncedSearch);
|
load(page, 10, debouncedSearch);
|
||||||
}, [page, debouncedSearch]);
|
}, [page, debouncedSearch]);
|
||||||
|
|
||||||
const filteredData = data || [];
|
const filteredData = data || [];
|
||||||
|
|
||||||
@@ -62,67 +62,67 @@ function ListProgramInovasi({ search }: { search: string }) {
|
|||||||
Tambah Program
|
Tambah Program
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
<Box visibleFrom='md'>
|
<Box visibleFrom='md' style={{ overflowX: 'auto' }}>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Table highlightOnHover
|
||||||
<Table highlightOnHover striped verticalSpacing="sm">
|
layout="fixed" // 🔥 PENTING
|
||||||
<TableThead>
|
withColumnBorders={false} striped verticalSpacing="sm">
|
||||||
|
<TableThead>
|
||||||
|
<TableTr>
|
||||||
|
<TableTh>Nama Program</TableTh>
|
||||||
|
<TableTh>Deskripsi</TableTh>
|
||||||
|
<TableTh>Link</TableTh>
|
||||||
|
<TableTh>Aksi</TableTh>
|
||||||
|
</TableTr>
|
||||||
|
</TableThead>
|
||||||
|
<TableTbody>
|
||||||
|
{filteredData.length === 0 ? (
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh>Nama Program</TableTh>
|
<TableTd colSpan={4}>
|
||||||
<TableTh>Deskripsi</TableTh>
|
<Center py={20}>
|
||||||
<TableTh>Link</TableTh>
|
<Text color="dimmed">Belum ada data program inovasi</Text>
|
||||||
<TableTh>Aksi</TableTh>
|
</Center>
|
||||||
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
</TableThead>
|
) : (
|
||||||
<TableTbody>
|
filteredData.map((item) => (
|
||||||
{filteredData.length === 0 ? (
|
<TableTr key={item.id}>
|
||||||
<TableTr>
|
<TableTd>
|
||||||
<TableTd colSpan={4}>
|
<Text fw={500}>{item.name}</Text>
|
||||||
<Center py={20}>
|
</TableTd>
|
||||||
<Text color="dimmed">Belum ada data program inovasi</Text>
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
</Center>
|
<Text fz="sm" lineClamp={1} dangerouslySetInnerHTML={{ __html: item.description || '-' }}></Text>
|
||||||
|
</TableTd>
|
||||||
|
<TableTd style={{ maxWidth: 250 }}>
|
||||||
|
<Tooltip label="Buka tautan program" position="top" withArrow>
|
||||||
|
<a
|
||||||
|
href={item.link}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
style={{ color: colors['blue-button'], textDecoration: 'underline' }}
|
||||||
|
>
|
||||||
|
<Text truncate fz="sm">{item.link}</Text>
|
||||||
|
</a>
|
||||||
|
</Tooltip>
|
||||||
|
</TableTd>
|
||||||
|
<TableTd>
|
||||||
|
<Button
|
||||||
|
size="xs"
|
||||||
|
radius="md"
|
||||||
|
variant="light"
|
||||||
|
color="blue"
|
||||||
|
leftSection={<IconDeviceImacCog size={16} />}
|
||||||
|
onClick={() =>
|
||||||
|
router.push(`/admin/landing-page/profil/program-inovasi/${item.id}`)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
Detail
|
||||||
|
</Button>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
) : (
|
))
|
||||||
filteredData.map((item) => (
|
)}
|
||||||
<TableTr key={item.id}>
|
</TableTbody>
|
||||||
<TableTd>
|
</Table>
|
||||||
<Text fw={500}>{item.name}</Text>
|
|
||||||
</TableTd>
|
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
|
||||||
<Text fz="sm" lineClamp={1} dangerouslySetInnerHTML={{ __html: item.description || '-' }}></Text>
|
|
||||||
</TableTd>
|
|
||||||
<TableTd style={{ maxWidth: 250 }}>
|
|
||||||
<Tooltip label="Buka tautan program" position="top" withArrow>
|
|
||||||
<a
|
|
||||||
href={item.link}
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
style={{ color: colors['blue-button'], textDecoration: 'underline' }}
|
|
||||||
>
|
|
||||||
<Text truncate fz="sm">{item.link}</Text>
|
|
||||||
</a>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
|
||||||
<TableTd>
|
|
||||||
<Button
|
|
||||||
size="xs"
|
|
||||||
radius="md"
|
|
||||||
variant="light"
|
|
||||||
color="blue"
|
|
||||||
leftSection={<IconDeviceImacCog size={16} />}
|
|
||||||
onClick={() =>
|
|
||||||
router.push(`/admin/landing-page/profil/program-inovasi/${item.id}`)
|
|
||||||
}
|
|
||||||
>
|
|
||||||
Detail
|
|
||||||
</Button>
|
|
||||||
</TableTd>
|
|
||||||
</TableTr>
|
|
||||||
))
|
|
||||||
)}
|
|
||||||
</TableTbody>
|
|
||||||
</Table>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
</Box>
|
||||||
<Box hiddenFrom="md" pt={20}>
|
<Box hiddenFrom="md" pt={20}>
|
||||||
<Stack gap="sm">
|
<Stack gap="sm">
|
||||||
|
|||||||
@@ -139,8 +139,10 @@ function ListDataLingkunganDesa({ search }: { search: string }) {
|
|||||||
Tambah Baru
|
Tambah Baru
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0} style={{ tableLayout: 'fixed', width: '100%' }}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0} style={{ tableLayout: 'fixed', width: '100%' }}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '5%', textAlign: 'center' }}>No</TableTh>
|
<TableTh style={{ width: '5%', textAlign: 'center' }}>No</TableTh>
|
||||||
@@ -181,8 +183,10 @@ function ListDataLingkunganDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover miw={0} style={{ tableLayout: 'fixed', width: '100%' }}>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false} miw={0} style={{ tableLayout: 'fixed', width: '100%' }}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '5%', textAlign: 'center' }}>No</TableTh>
|
<TableTh style={{ width: '5%', textAlign: 'center' }}>No</TableTh>
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ function ListKategoriKegiatan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function ListKegiatanDesa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop: Table */}
|
{/* Desktop: Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ function ListKeteranganBankSampahTerdekat({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ function ListPengelolaanSampahBankSampah({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ function ListBeasiswaPendaftar({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop: Table */}
|
{/* Desktop: Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ function ListKeunggulanProgram({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ function ListJenjangPendidikan() {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function ListLembaga({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ function ListPengajar({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ function ListSiswa({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ function ListDataPerpustakaan({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
striped
|
striped
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ function ListKategoriBuku({ search }: { search: string }) {
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function ListPeminjamBuku({ search }: { search: string }) {
|
|||||||
</Title>
|
</Title>
|
||||||
|
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table
|
<Table
|
||||||
highlightOnHover
|
highlightOnHover
|
||||||
miw={0}
|
miw={0}
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ function ListResponden({ search }: ListRespondenProps) {
|
|||||||
<Box>
|
<Box>
|
||||||
<Stack gap={'lg'}>
|
<Stack gap={'lg'}>
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Paper p="lg" radius="lg" shadow="md" withBorder>
|
<Paper p="lg" radius="lg" shadow="md" withBorder>
|
||||||
<Title order={4} size="lg" mb="md" lh={1.2}>
|
<Title order={4} size="lg" mb="md" lh={1.2}>
|
||||||
Daftar Responden
|
Daftar Responden
|
||||||
|
|||||||
@@ -128,8 +128,10 @@ function Page() {
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} ta="center" w={60}>
|
<TableTh fz="sm" fw={600} ta="center" w={60}>
|
||||||
|
|||||||
@@ -127,8 +127,10 @@ function Page() {
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
{/* Desktop Table */}
|
{/* Desktop Table */}
|
||||||
<Box visibleFrom="md">
|
<Box visibleFrom="md" style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover
|
||||||
|
layout="fixed" // 🔥 PENTING
|
||||||
|
withColumnBorders={false}>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh fz="sm" fw={600} lh={1.4} ta="center">
|
<TableTh fz="sm" fw={600} lh={1.4} ta="center">
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user