Semua tooltips di admin sudah dihilangkan
This commit is contained in:
@@ -3,9 +3,9 @@
|
|||||||
"version": "0.1.5",
|
"version": "0.1.5",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "bun --bun next dev",
|
"dev": "next dev",
|
||||||
"build": "bun --bun next build",
|
"build": "next build",
|
||||||
"start": "bun --bun next start"
|
"start": "next start"
|
||||||
},
|
},
|
||||||
"prisma": {
|
"prisma": {
|
||||||
"seed": "bun run prisma/seed.ts"
|
"seed": "bun run prisma/seed.ts"
|
||||||
|
|||||||
@@ -93,6 +93,34 @@ const sdgsDesa = proxy({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
findManyAll: {
|
||||||
|
data: null as any[] | null,
|
||||||
|
loading: false,
|
||||||
|
load: async () => { // Change to arrow function
|
||||||
|
sdgsDesa.findManyAll.loading = true; // Use the full path to access the property
|
||||||
|
try {
|
||||||
|
const query: any = {};
|
||||||
|
|
||||||
|
const res = await ApiFetch.api.landingpage.sdgsdesa[
|
||||||
|
"findManyAll"
|
||||||
|
].get({
|
||||||
|
query,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.status === 200 && res.data?.success) {
|
||||||
|
sdgsDesa.findManyAll.data = res.data.data || [];
|
||||||
|
} else {
|
||||||
|
console.error("Failed to load media sosial:", res.data?.message);
|
||||||
|
sdgsDesa.findManyAll.data = [];
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error loading media sosial:", error);
|
||||||
|
sdgsDesa.findManyAll.data = [];
|
||||||
|
} finally {
|
||||||
|
sdgsDesa.findManyAll.loading = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
findUnique: {
|
findUnique: {
|
||||||
data: null as Prisma.SdgsDesaGetPayload<{
|
data: null as Prisma.SdgsDesaGetPayload<{
|
||||||
include: {
|
include: {
|
||||||
|
|||||||
@@ -2,23 +2,22 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
|
ScrollArea,
|
||||||
Stack,
|
Stack,
|
||||||
Tabs,
|
Tabs,
|
||||||
TabsList,
|
TabsList,
|
||||||
TabsPanel,
|
TabsPanel,
|
||||||
TabsTab,
|
TabsTab,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
ScrollArea,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
|
||||||
import React, { useEffect, useState } from 'react';
|
|
||||||
import {
|
import {
|
||||||
IconFileAnalytics,
|
|
||||||
IconCoins,
|
IconCoins,
|
||||||
|
IconFileAnalytics,
|
||||||
IconShoppingCart,
|
IconShoppingCart,
|
||||||
IconWallet,
|
IconWallet,
|
||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
|
||||||
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -29,29 +28,25 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
label: "APB Desa",
|
label: "APB Desa",
|
||||||
value: "apbdesa",
|
value: "apbdesa",
|
||||||
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa",
|
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa",
|
||||||
icon: <IconFileAnalytics size={18} stroke={1.8} />,
|
icon: <IconFileAnalytics size={18} stroke={1.8} />
|
||||||
tooltip: "Lihat ringkasan Anggaran Pendapatan dan Belanja Desa",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Pendapatan",
|
label: "Pendapatan",
|
||||||
value: "pendapatan",
|
value: "pendapatan",
|
||||||
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/pendapatan",
|
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/pendapatan",
|
||||||
icon: <IconCoins size={18} stroke={1.8} />,
|
icon: <IconCoins size={18} stroke={1.8} />,
|
||||||
tooltip: "Kelola data pendapatan desa",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Belanja",
|
label: "Belanja",
|
||||||
value: "belanja",
|
value: "belanja",
|
||||||
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja",
|
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja",
|
||||||
icon: <IconShoppingCart size={18} stroke={1.8} />,
|
icon: <IconShoppingCart size={18} stroke={1.8} />,
|
||||||
tooltip: "Atur data belanja desa",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Pembiayaan",
|
label: "Pembiayaan",
|
||||||
value: "pembiayaan",
|
value: "pembiayaan",
|
||||||
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/pembiayaan",
|
href: "/admin/ekonomi/PADesa-pendapatan-asli-desa/pembiayaan",
|
||||||
icon: <IconWallet size={18} stroke={1.8} />,
|
icon: <IconWallet size={18} stroke={1.8} />,
|
||||||
tooltip: "Kelola data pembiayaan desa",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -104,26 +99,19 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: "pop", duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
flexShrink: 0,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
flexShrink: 0,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -6,15 +6,14 @@ import colors from '@/con/colors';
|
|||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
|
Group,
|
||||||
MultiSelect,
|
MultiSelect,
|
||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
Group,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
@@ -88,16 +87,14 @@ function EditAPBDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit APB Desa
|
Edit APB Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -159,36 +158,32 @@ function DetailAPBDesa() {
|
|||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Group gap="sm" mt={10}>
|
<Group gap="sm" mt={10}>
|
||||||
<Tooltip label="Hapus APB Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit APB Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/${data.id}/edit`
|
||||||
`/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/${data.id}/edit`
|
)
|
||||||
)
|
}
|
||||||
}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
@@ -43,11 +42,9 @@ function CreateAPBDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah APB Desa
|
Tambah APB Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import {
|
|||||||
Button,
|
Button,
|
||||||
Center,
|
Center,
|
||||||
Group,
|
Group,
|
||||||
Paper,
|
|
||||||
Pagination,
|
Pagination,
|
||||||
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Table,
|
Table,
|
||||||
@@ -15,8 +15,7 @@ import {
|
|||||||
TableTh,
|
TableTh,
|
||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImacCog, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImacCog, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -82,20 +81,18 @@ function ListAPBDesa({ search }: { search: string }) {
|
|||||||
<Text fw={600} fz="lg">
|
<Text fw={600} fz="lg">
|
||||||
List APB Desa
|
List APB Desa
|
||||||
</Text>
|
</Text>
|
||||||
<Tooltip label="Tambah APB Desa" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
"/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/create"
|
||||||
"/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/create"
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: "auto" }}>
|
<Box style={{ overflowX: "auto" }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
@@ -138,20 +135,18 @@ function ListAPBDesa({ search }: { search: string }) {
|
|||||||
)}
|
)}
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Lihat Detail" withArrow>
|
<Button
|
||||||
<Button
|
variant="light"
|
||||||
variant="light"
|
color="green"
|
||||||
color="green"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/${item.id}`
|
||||||
`/admin/ekonomi/PADesa-pendapatan-asli-desa/apbdesa/${item.id}`
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
<IconDeviceImacCog size={20} />
|
||||||
<IconDeviceImacCog size={20} />
|
<Text ml={5}>Detail</Text>
|
||||||
<Text ml={5}>Detail</Text>
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -90,16 +89,14 @@ function EditBelanja() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jenis Belanja
|
Edit Jenis Belanja
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -10,13 +10,12 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function CreateBelanja() {
|
function CreateBelanja() {
|
||||||
const belanjaState = useProxy(PendapatanAsliDesa.belanja);
|
const belanjaState = useProxy(PendapatanAsliDesa.belanja);
|
||||||
@@ -57,16 +56,14 @@ function CreateBelanja() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan back button */}
|
{/* Header dengan back button */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jenis Belanja
|
Tambah Jenis Belanja
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -96,18 +95,16 @@ function ListBelanja({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Belanja</Title>
|
<Title order={4}>Daftar Belanja</Title>
|
||||||
<Tooltip label="Tambah Belanja" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja/create')
|
||||||
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
@@ -138,34 +135,30 @@ function ListBelanja({ search }: { search: string }) {
|
|||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Group gap="xs">
|
<Group gap="xs">
|
||||||
<Tooltip label="Edit" withArrow>
|
<Button
|
||||||
<Button
|
size="xs"
|
||||||
size="xs"
|
variant="light"
|
||||||
variant="light"
|
color="green"
|
||||||
color="green"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja/${item.id}`
|
||||||
`/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja/${item.id}`
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
<IconEdit size={16} />
|
||||||
<IconEdit size={16} />
|
</Button>
|
||||||
</Button>
|
<Button
|
||||||
</Tooltip>
|
size="xs"
|
||||||
<Tooltip label="Hapus" withArrow>
|
variant="light"
|
||||||
<Button
|
color="red"
|
||||||
size="xs"
|
disabled={belanjaState.delete.loading}
|
||||||
variant="light"
|
onClick={() => {
|
||||||
color="red"
|
setSelectedId(item.id);
|
||||||
disabled={belanjaState.delete.loading}
|
setModalHapus(true);
|
||||||
onClick={() => {
|
}}
|
||||||
setSelectedId(item.id);
|
>
|
||||||
setModalHapus(true);
|
<IconTrash size={16} />
|
||||||
}}
|
</Button>
|
||||||
>
|
|
||||||
<IconTrash size={16} />
|
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -87,16 +86,14 @@ function EditPembiayaan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jenis Pembiayaan
|
Edit Jenis Pembiayaan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import React from 'react';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa';
|
import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa';
|
||||||
import { useRouter } from 'next/navigation';
|
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
@@ -10,13 +7,14 @@ import {
|
|||||||
Group,
|
Group,
|
||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
Title,
|
|
||||||
TextInput,
|
|
||||||
Text,
|
Text,
|
||||||
Tooltip,
|
TextInput,
|
||||||
|
Title
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
|
import { useRouter } from 'next/navigation';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function CreatePembiayaan() {
|
function CreatePembiayaan() {
|
||||||
const pembiayaanState = useProxy(PendapatanAsliDesa.pembiayaan);
|
const pembiayaanState = useProxy(PendapatanAsliDesa.pembiayaan);
|
||||||
@@ -57,16 +55,14 @@ function CreatePembiayaan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jenis Pembiayaan
|
Tambah Jenis Pembiayaan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Center,
|
Center,
|
||||||
Group,
|
Group,
|
||||||
|
Pagination,
|
||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
@@ -14,19 +16,16 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
Pagination,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import React, { useState } from 'react';
|
|
||||||
import HeaderSearch from '../../../_com/header';
|
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
|
||||||
import PendapatanAsliDesa from '../../../_state/ekonomi/PADesa';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { useRouter } from 'next/navigation';
|
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import colors from '@/con/colors';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
|
import { useRouter } from 'next/navigation';
|
||||||
|
import { useState } from 'react';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import HeaderSearch from '../../../_com/header';
|
||||||
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
||||||
|
import PendapatanAsliDesa from '../../../_state/ekonomi/PADesa';
|
||||||
|
|
||||||
function Pembiayaan() {
|
function Pembiayaan() {
|
||||||
const [search, setSearch] = useState("");
|
const [search, setSearch] = useState("");
|
||||||
@@ -95,18 +94,16 @@ function ListPembiayaan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Pembiayaan</Title>
|
<Title order={4}>Daftar Pembiayaan</Title>
|
||||||
<Tooltip label="Tambah Pembiayaan" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pembiayaan/create')
|
||||||
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pembiayaan/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -94,16 +93,14 @@ function EditPendapatan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header with Back Button */}
|
{/* Header with Back Button */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jenis Pendapatan
|
Edit Jenis Pendapatan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -49,16 +48,14 @@ function CreatePendapatan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol back + judul */}
|
{/* Header dengan tombol back + judul */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jenis Pendapatan
|
Tambah Jenis Pendapatan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -96,18 +95,16 @@ function ListPendapatan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Pendapatan</Title>
|
<Title order={4}>Daftar Pendapatan</Title>
|
||||||
<Tooltip label="Tambah Pendapatan Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pendapatan/create')
|
||||||
router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pendapatan/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -9,12 +9,11 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState, useCallback } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import demografiPekerjaan from '../../../_state/ekonomi/demografi-pekerjaan';
|
import demografiPekerjaan from '../../../_state/ekonomi/demografi-pekerjaan';
|
||||||
@@ -96,16 +95,14 @@ export default function EditDemografiPekerjaan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Demografi Pekerjaan
|
Edit Demografi Pekerjaan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -49,16 +48,14 @@ function CreateDemografiPekerjaan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Demografi Pekerjaan
|
Tambah Demografi Pekerjaan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ import {
|
|||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Center,
|
Center,
|
||||||
|
Flex,
|
||||||
Group,
|
Group,
|
||||||
|
Pagination,
|
||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
@@ -17,10 +19,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
Pagination,
|
|
||||||
Flex,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -111,16 +110,14 @@ function ListDemografiPekerjaan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>List Demografi Pekerjaan</Title>
|
<Title order={4}>List Demografi Pekerjaan</Title>
|
||||||
<Tooltip label="Tambah Data Pekerjaan" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/ekonomi/demografi-pekerjaan/create')}
|
||||||
onClick={() => router.push('/admin/ekonomi/demografi-pekerjaan/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -6,18 +6,17 @@ import colors from '@/con/colors';
|
|||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
|
Group,
|
||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Group,
|
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function EditJumlahPendudukMiskin() {
|
function EditJumlahPendudukMiskin() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -82,16 +81,14 @@ function EditJumlahPendudukMiskin() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jumlah Penduduk Miskin
|
Edit Jumlah Penduduk Miskin
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
'use client';
|
'use client';
|
||||||
import { Box, Button, Group, Paper, Stack, TextInput, Title, Tooltip } from '@mantine/core';
|
import colors from '@/con/colors';
|
||||||
|
import { Box, Button, Group, Paper, Stack, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import colors from '@/con/colors';
|
|
||||||
import jumlahPendudukMiskin from '../../../_state/ekonomi/jumlah-penduduk-miskin';
|
import jumlahPendudukMiskin from '../../../_state/ekonomi/jumlah-penduduk-miskin';
|
||||||
|
|
||||||
export default function CreateJumlahPendudukMiskin() {
|
export default function CreateJumlahPendudukMiskin() {
|
||||||
@@ -38,11 +38,9 @@ export default function CreateJumlahPendudukMiskin() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jumlah Penduduk Miskin
|
Tambah Jumlah Penduduk Miskin
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,11 +16,10 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconSearch, IconTrash, IconPlus } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
@@ -101,18 +100,16 @@ function ListJumlahPendudukMiskin({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Jumlah Penduduk Miskin</Title>
|
<Title order={4}>Daftar Jumlah Penduduk Miskin</Title>
|
||||||
<Tooltip label="Tambah Data" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/ekonomi/jumlah-penduduk-miskin/create')
|
||||||
router.push('/admin/ekonomi/jumlah-penduduk-miskin/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -2,18 +2,17 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
|
ScrollArea,
|
||||||
Stack,
|
Stack,
|
||||||
Tabs,
|
Tabs,
|
||||||
TabsList,
|
TabsList,
|
||||||
TabsPanel,
|
TabsPanel,
|
||||||
TabsTab,
|
TabsTab,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
ScrollArea,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
|
import { IconSchool, IconUsers } from '@tabler/icons-react';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { IconUsers, IconSchool } from '@tabler/icons-react';
|
|
||||||
|
|
||||||
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -24,15 +23,13 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
label: "Pengangguran Berdasarkan Usia",
|
label: "Pengangguran Berdasarkan Usia",
|
||||||
value: "pengangguranberdasarkanusia",
|
value: "pengangguranberdasarkanusia",
|
||||||
href: "/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_usia",
|
href: "/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_usia",
|
||||||
icon: <IconUsers size={18} stroke={1.8} />,
|
icon: <IconUsers size={18} stroke={1.8} />
|
||||||
tooltip: "Data pengangguran menurut kelompok usia",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Pengangguran Berdasarkan Pendidikan",
|
label: "Pengangguran Berdasarkan Pendidikan",
|
||||||
value: "pengangguranberdasarkanpendidikan",
|
value: "pengangguranberdasarkanpendidikan",
|
||||||
href: "/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan",
|
href: "/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan",
|
||||||
icon: <IconSchool size={18} stroke={1.8} />,
|
icon: <IconSchool size={18} stroke={1.8} />
|
||||||
tooltip: "Data pengangguran menurut tingkat pendidikan",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -78,26 +75,19 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: "pop", duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
flexShrink: 0,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
flexShrink: 0,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Stack, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
@@ -60,16 +60,14 @@ function EditGrafikBerdasarkanPendidikan() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Grafik Pengangguran Berdasarkan Pendidikan
|
Edit Grafik Pengangguran Berdasarkan Pendidikan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
'use client';
|
'use client';
|
||||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import React from 'react';
|
|
||||||
import { useRouter } from 'next/navigation';
|
|
||||||
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { useState } from 'react';
|
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Paper, Stack, Title, TextInput, Group, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
|
import { useRouter } from 'next/navigation';
|
||||||
|
import { useState } from 'react';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function CreateGrafikBerdasarkanPendidikan() {
|
function CreateGrafikBerdasarkanPendidikan() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -44,11 +43,9 @@ function CreateGrafikBerdasarkanPendidikan() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Data Pengangguran Berdasarkan Pendidikan
|
Tambah Data Pengangguran Berdasarkan Pendidikan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
|
import { DonutChart } from '@mantine/charts';
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
@@ -17,15 +18,13 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import { DonutChart } from '@mantine/charts';
|
|
||||||
import HeaderSearch from '../../../_com/header';
|
import HeaderSearch from '../../../_com/header';
|
||||||
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
||||||
import grafikNganggur from '../../../_state/ekonomi/usia-kerja-nganggur';
|
import grafikNganggur from '../../../_state/ekonomi/usia-kerja-nganggur';
|
||||||
@@ -116,20 +115,18 @@ function ListGrafikBerdasarkanPendidikan({ 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">
|
||||||
<Flex justify="space-between" align="center" mb="md">
|
<Flex justify="space-between" align="center" mb="md">
|
||||||
<Title order={4}>List Pengangguran Berdasarkan Pendidikan</Title>
|
<Title order={4}>List Pengangguran Berdasarkan Pendidikan</Title>
|
||||||
<Tooltip label="Tambah Data" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan/create',
|
||||||
'/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan/create',
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
@@ -165,34 +162,30 @@ function ListGrafikBerdasarkanPendidikan({ search }: { search: string }) {
|
|||||||
<TableTd>{item.D3}</TableTd>
|
<TableTd>{item.D3}</TableTd>
|
||||||
<TableTd>{item.S1}</TableTd>
|
<TableTd>{item.S1}</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Edit Data" withArrow>
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan/${item.id}`,
|
||||||
`/admin/ekonomi/jumlah-penduduk-usia-kerja-yang-menganggur/pengangguran_berdasarkan_pendidikan/${item.id}`,
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
<IconEdit size={18} />
|
||||||
<IconEdit size={18} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Hapus Data" withArrow>
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
variant="light"
|
||||||
variant="light"
|
disabled={stategrafik.delete.loading}
|
||||||
disabled={stategrafik.delete.loading}
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(item.id);
|
||||||
setSelectedId(item.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<IconTrash size={18} />
|
||||||
<IconTrash size={18} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -5,18 +5,17 @@ import colors from '@/con/colors';
|
|||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
|
Group,
|
||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Group,
|
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function EditGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
function EditGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -79,16 +78,14 @@ function EditGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Grafik Pengangguran Berdasarkan Usia Kerja
|
Edit Grafik Pengangguran Berdasarkan Usia Kerja
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import React, { useState } from 'react';
|
|
||||||
import { useRouter } from 'next/navigation';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
import grafikNganggur from '@/app/admin/(dashboard)/_state/ekonomi/usia-kerja-nganggur';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Paper, Stack, Title, TextInput, Group, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
|
import { useRouter } from 'next/navigation';
|
||||||
|
import { useState } from 'react';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function CreateGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
function CreateGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -42,11 +42,9 @@ function CreateGrafikBerdasarkanUsiaKerjaYangMenganggur() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Data Pengangguran Berdasarkan Usia
|
Tambah Data Pengangguran Berdasarkan Usia
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
||||||
import jumlahPengangguranState from '@/app/admin/(dashboard)/_state/ekonomi/jumlah-pengangguran';
|
import jumlahPengangguranState from '@/app/admin/(dashboard)/_state/ekonomi/jumlah-pengangguran';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Flex, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Flex, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconX } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -103,32 +103,28 @@ function DetailJumlahPengangguran() {
|
|||||||
|
|
||||||
{/* Tombol Edit & Hapus */}
|
{/* Tombol Edit & Hapus */}
|
||||||
<Flex gap="sm">
|
<Flex gap="sm">
|
||||||
<Tooltip label="Hapus Data Pengangguran" withArrow position="top">
|
<Button
|
||||||
<Button
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
color="red"
|
||||||
color="red"
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconX size={20} />
|
||||||
<IconX size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Data Pengangguran" withArrow position="top">
|
<Button
|
||||||
<Button
|
onClick={() => router.push(`/admin/ekonomi/jumlah-pengangguran/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/jumlah-pengangguran/${data.id}/edit`)}
|
color="green"
|
||||||
color="green"
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Flex>
|
</Flex>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -7,13 +7,12 @@ import {
|
|||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Group,
|
Group,
|
||||||
|
NumberInput,
|
||||||
Paper,
|
Paper,
|
||||||
|
Select,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
NumberInput,
|
Title
|
||||||
Title,
|
|
||||||
Select,
|
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -89,16 +88,14 @@ function CreateJumlahPengangguran() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Data Pengangguran
|
Tambah Data Pengangguran
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
|
import { BarChart } from '@mantine/charts';
|
||||||
import {
|
import {
|
||||||
Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack,
|
Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack,
|
||||||
Table, TableTbody, TableTd, TableTh, TableThead, TableTr,
|
Table, TableTbody, TableTd, TableTh, TableThead, TableTr,
|
||||||
Text, Title, Tooltip
|
Text, Title
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import { BarChart } from '@mantine/charts';
|
|
||||||
|
|
||||||
import HeaderSearch from '../../_com/header';
|
import HeaderSearch from '../../_com/header';
|
||||||
import jumlahPengangguranState from '../../_state/ekonomi/jumlah-pengangguran';
|
import jumlahPengangguranState from '../../_state/ekonomi/jumlah-pengangguran';
|
||||||
@@ -85,16 +85,14 @@ function ListDetailDataPengangguran({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Detail Data Pengangguran</Title>
|
<Title order={4}>Daftar Detail Data Pengangguran</Title>
|
||||||
<Tooltip label="Tambah Data Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/ekonomi/jumlah-pengangguran/create')}
|
||||||
onClick={() => router.push('/admin/ekonomi/jumlah-pengangguran/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -88,13 +87,10 @@ function EditLowonganKerja() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol back */}
|
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Lowongan Kerja Lokal
|
Edit Lowongan Kerja Lokal
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { Box, Button, Group, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -108,32 +108,28 @@ function DetailLowonganKerjaLokal() {
|
|||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Group gap="sm" mt="sm">
|
<Group gap="sm" mt="sm">
|
||||||
<Tooltip label="Hapus Lowongan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Lowongan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/ekonomi/lowongan-kerja-lokal/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/lowongan-kerja-lokal/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -42,18 +41,15 @@ function CreateLowonganKerja() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol kembali */}
|
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Lowongan Kerja Lokal
|
Tambah Lowongan Kerja Lokal
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -69,7 +68,6 @@ function ListLowonganKerjaLokal({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Lowongan Kerja Lokal</Title>
|
<Title order={4}>Daftar Lowongan Kerja Lokal</Title>
|
||||||
<Tooltip label="Tambah Lowongan Kerja" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
leftSection={<IconPlus size={18} />}
|
leftSection={<IconPlus size={18} />}
|
||||||
color="blue"
|
color="blue"
|
||||||
@@ -80,7 +78,6 @@ function ListLowonganKerjaLokal({ search }: { search: string }) {
|
|||||||
>
|
>
|
||||||
Tambah Baru
|
Tambah Baru
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -2,18 +2,17 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
|
ScrollArea,
|
||||||
Stack,
|
Stack,
|
||||||
Tabs,
|
Tabs,
|
||||||
TabsList,
|
TabsList,
|
||||||
TabsPanel,
|
TabsPanel,
|
||||||
TabsTab,
|
TabsTab,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
ScrollArea,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
|
import { IconCategory, IconShoppingBag } from '@tabler/icons-react';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { IconShoppingBag, IconCategory } from '@tabler/icons-react';
|
|
||||||
|
|
||||||
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -30,8 +29,7 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
label: "Kategori Produk",
|
label: "Kategori Produk",
|
||||||
value: "kategoriproduk",
|
value: "kategoriproduk",
|
||||||
href: "/admin/ekonomi/pasar-desa/kategori-produk",
|
href: "/admin/ekonomi/pasar-desa/kategori-produk",
|
||||||
icon: <IconCategory size={18} stroke={1.8} />,
|
icon: <IconCategory size={18} stroke={1.8} />
|
||||||
tooltip: "Atur kategori produk pasar desa",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -84,26 +82,19 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: "pop", duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
flexShrink: 0,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
flexShrink: 0,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import React, { useEffect, useState } from 'react';
|
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import pasarDesaState from '../../../../_state/ekonomi/pasar-desa/pasar-desa';
|
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
@@ -11,13 +7,16 @@ import {
|
|||||||
Group,
|
Group,
|
||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
Title,
|
|
||||||
TextInput,
|
|
||||||
Tooltip,
|
|
||||||
Text,
|
Text,
|
||||||
|
TextInput,
|
||||||
|
Title
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import pasarDesaState from '../../../../_state/ekonomi/pasar-desa/pasar-desa';
|
||||||
|
|
||||||
function EditKategoriProduk() {
|
function EditKategoriProduk() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -93,16 +92,14 @@ function EditKategoriProduk() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol back */}
|
{/* Header dengan tombol back */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Kategori Produk
|
Edit Kategori Produk
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -46,7 +45,6 @@ function CreateKategoriProduk() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol kembali */}
|
{/* Header dengan tombol kembali */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
variant="subtle"
|
variant="subtle"
|
||||||
onClick={() => router.back()}
|
onClick={() => router.back()}
|
||||||
@@ -55,7 +53,6 @@ function CreateKategoriProduk() {
|
|||||||
>
|
>
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Kategori Produk
|
Tambah Kategori Produk
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconX } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -68,7 +68,6 @@ function ListKategoriProduk({ search2 }: { search2: 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Kategori Produk</Title>
|
<Title order={4}>Daftar Kategori Produk</Title>
|
||||||
<Tooltip label="Tambah Kategori Produk" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
leftSection={<IconPlus size={18} />}
|
leftSection={<IconPlus size={18} />}
|
||||||
color="blue"
|
color="blue"
|
||||||
@@ -77,7 +76,6 @@ function ListKategoriProduk({ search2 }: { search2: string }) {
|
|||||||
>
|
>
|
||||||
Tambah Baru
|
Tambah Baru
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
@@ -99,7 +97,6 @@ function ListKategoriProduk({ search2 }: { search2: string }) {
|
|||||||
</Text>
|
</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Edit Kategori Produk" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
color="green"
|
color="green"
|
||||||
variant="light"
|
variant="light"
|
||||||
@@ -107,10 +104,8 @@ function ListKategoriProduk({ search2 }: { search2: string }) {
|
|||||||
>
|
>
|
||||||
<IconEdit size={18} />
|
<IconEdit size={18} />
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Hapus Kategori Produk" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
color="red"
|
color="red"
|
||||||
variant="light"
|
variant="light"
|
||||||
@@ -121,8 +116,7 @@ function ListKategoriProduk({ search2 }: { search2: string }) {
|
|||||||
>
|
>
|
||||||
<IconX size={18} />
|
<IconX size={18} />
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
</TableTd>
|
||||||
</TableTd>
|
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -117,11 +116,9 @@ function EditPasarDesa() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Pasar Desa
|
Edit Pasar Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Paper, Stack, Text, Image, Skeleton, Group, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { IconArrowBack, IconTrash, IconEdit } from '@tabler/icons-react';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { useRouter, useParams } from 'next/navigation';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import React, { useState } from 'react';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
|
import { useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import pasarDesaState from '../../../../_state/ekonomi/pasar-desa/pasar-desa';
|
import pasarDesaState from '../../../../_state/ekonomi/pasar-desa/pasar-desa';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
|
||||||
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
|
||||||
|
|
||||||
function DetailPasarDesa() {
|
function DetailPasarDesa() {
|
||||||
const statePasar = useProxy(pasarDesaState);
|
const statePasar = useProxy(pasarDesaState);
|
||||||
@@ -123,32 +123,28 @@ function DetailPasarDesa() {
|
|||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Group gap="sm">
|
<Group gap="sm">
|
||||||
<Tooltip label="Hapus Produk" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Produk" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/ekonomi/pasar-desa/produk-pasar-desa/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/pasar-desa/produk-pasar-desa/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -73,11 +72,9 @@ export default function CreatePasarDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol kembali */}
|
{/* Header dengan tombol kembali */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Produk Pasar Desa
|
Tambah Produk Pasar Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -68,18 +67,16 @@ function ListPasarDesa({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Produk Pasar Desa</Title>
|
<Title order={4}>Daftar Produk Pasar Desa</Title>
|
||||||
<Tooltip label="Tambah Produk Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/ekonomi/pasar-desa/produk-pasar-desa/create')
|
||||||
router.push('/admin/ekonomi/pasar-desa/produk-pasar-desa/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -13,14 +13,13 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState, useCallback } from 'react';
|
import { useCallback, useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
type Statistik = {
|
type Statistik = {
|
||||||
tahun: string;
|
tahun: string;
|
||||||
@@ -118,16 +117,14 @@ function EditProgramKemiskinan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Program Kemiskinan
|
Edit Program Kemiskinan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -8,17 +8,16 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import { IconKey, IconMapper } from '../../../_com/iconMap';
|
||||||
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
||||||
import programKemiskinanState from '../../../_state/ekonomi/program-kemiskinan';
|
import programKemiskinanState from '../../../_state/ekonomi/program-kemiskinan';
|
||||||
import { IconKey, IconMapper } from '../../../_com/iconMap';
|
|
||||||
|
|
||||||
function DetailProgramKemiskinan() {
|
function DetailProgramKemiskinan() {
|
||||||
const programState = useProxy(programKemiskinanState);
|
const programState = useProxy(programKemiskinanState);
|
||||||
@@ -123,33 +122,29 @@ function DetailProgramKemiskinan() {
|
|||||||
|
|
||||||
{/* Action Buttons */}
|
{/* Action Buttons */}
|
||||||
<Group gap="sm" mt="sm">
|
<Group gap="sm" mt="sm">
|
||||||
<Tooltip label="Hapus Program" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={programState.delete.loading}
|
||||||
disabled={programState.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Program" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/ekonomi/program-kemiskinan/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/program-kemiskinan/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -11,17 +11,16 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import programKemiskinanState from '../../../_state/ekonomi/program-kemiskinan';
|
|
||||||
import CreateEditor from '../../../_com/createEditor';
|
|
||||||
import SelectIconProgram from '../../../_com/selectIcon';
|
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import CreateEditor from '../../../_com/createEditor';
|
||||||
|
import SelectIconProgram from '../../../_com/selectIcon';
|
||||||
|
import programKemiskinanState from '../../../_state/ekonomi/program-kemiskinan';
|
||||||
|
|
||||||
function CreateProgramKemiskinan() {
|
function CreateProgramKemiskinan() {
|
||||||
const programState = useProxy(programKemiskinanState);
|
const programState = useProxy(programKemiskinanState);
|
||||||
@@ -65,16 +64,14 @@ function CreateProgramKemiskinan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol back */}
|
{/* Header dengan tombol back */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Program Kemiskinan
|
Tambah Program Kemiskinan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client'
|
'use client'
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -69,11 +69,9 @@ function ListProgramKemiskinan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Program Kemiskinan</Title>
|
<Title order={4}>Daftar Program Kemiskinan</Title>
|
||||||
<Tooltip label="Tambah Program Kemiskinan" withArrow>
|
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/ekonomi/program-kemiskinan/create')}>
|
||||||
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/ekonomi/program-kemiskinan/create')}>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
|
import EditEditor from '@/app/admin/(dashboard)/_com/editEditor';
|
||||||
import grafikSektorUnggulan from '@/app/admin/(dashboard)/_state/ekonomi/sektor-unggulan-desa';
|
import grafikSektorUnggulan from '@/app/admin/(dashboard)/_state/ekonomi/sektor-unggulan-desa';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import {
|
import {
|
||||||
@@ -11,15 +12,13 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import EditEditor from '@/app/admin/(dashboard)/_com/editEditor';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
function EditSektorUnggulanDesa() {
|
function EditSektorUnggulanDesa() {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -59,10 +58,10 @@ function EditSektorUnggulanDesa() {
|
|||||||
|
|
||||||
const handleChange =
|
const handleChange =
|
||||||
(field: keyof typeof formData) =>
|
(field: keyof typeof formData) =>
|
||||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
const value = field === 'value' ? Number(e.currentTarget.value) : e.currentTarget.value;
|
const value = field === 'value' ? Number(e.currentTarget.value) : e.currentTarget.value;
|
||||||
setFormData((prev) => ({ ...prev, [field]: value }));
|
setFormData((prev) => ({ ...prev, [field]: value }));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
try {
|
try {
|
||||||
@@ -80,16 +79,14 @@ function EditSektorUnggulanDesa() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={22} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={22} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Sektor Unggulan Desa
|
Edit Sektor Unggulan Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -92,36 +91,32 @@ function DetailSektorUnggulanDesa() {
|
|||||||
|
|
||||||
{/* Tombol Aksi */}
|
{/* Tombol Aksi */}
|
||||||
<Group gap="sm">
|
<Group gap="sm">
|
||||||
<Tooltip label="Hapus Sektor Unggulan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Sektor Unggulan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/ekonomi/sektor-unggulan-desa/${data.id}/edit`
|
||||||
`/admin/ekonomi/sektor-unggulan-desa/${data.id}/edit`
|
)
|
||||||
)
|
}
|
||||||
}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -10,15 +10,14 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import grafikSektorUnggulan from '../../../_state/ekonomi/sektor-unggulan-desa';
|
|
||||||
import CreateEditor from '../../../_com/createEditor';
|
import CreateEditor from '../../../_com/createEditor';
|
||||||
|
import grafikSektorUnggulan from '../../../_state/ekonomi/sektor-unggulan-desa';
|
||||||
|
|
||||||
function CreateSektorUnggulanDesa() {
|
function CreateSektorUnggulanDesa() {
|
||||||
const stateGrafik = useProxy(grafikSektorUnggulan);
|
const stateGrafik = useProxy(grafikSektorUnggulan);
|
||||||
@@ -50,16 +49,14 @@ function CreateSektorUnggulanDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan back button */}
|
{/* Header dengan back button */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Sektor Unggulan Desa
|
Tambah Sektor Unggulan Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -92,11 +91,9 @@ function ListSektorUnggulanDesa({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>List Sektor Unggulan Desa</Title>
|
<Title order={4}>List Sektor Unggulan Desa</Title>
|
||||||
<Tooltip label="Tambah Sektor Unggulan Desa" withArrow>
|
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/ekonomi/sektor-unggulan-desa/create')}>
|
||||||
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/ekonomi/sektor-unggulan-desa/create')}>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
{loading ? (
|
{loading ? (
|
||||||
<Skeleton height={300} radius="md" />
|
<Skeleton height={300} radius="md" />
|
||||||
@@ -127,16 +124,14 @@ function ListSektorUnggulanDesa({ search }: { search: string }) {
|
|||||||
</Box>
|
</Box>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Lihat detail sektor" withArrow>
|
<Button
|
||||||
<Button
|
variant="light"
|
||||||
variant="light"
|
color="blue"
|
||||||
color="blue"
|
onClick={() => router.push(`/admin/ekonomi/sektor-unggulan-desa/${item.id}`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/sektor-unggulan-desa/${item.id}`)}
|
>
|
||||||
>
|
<IconDeviceImac size={20} />
|
||||||
<IconDeviceImac size={20} />
|
<Text ml={6}>Detail</Text>
|
||||||
<Text ml={6}>Detail</Text>
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
TabsList,
|
TabsList,
|
||||||
TabsPanel,
|
TabsPanel,
|
||||||
TabsTab,
|
TabsTab,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import {
|
import {
|
||||||
IconBuildingCommunity,
|
IconBuildingCommunity,
|
||||||
@@ -28,22 +27,19 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
label: "Pegawai",
|
label: "Pegawai",
|
||||||
value: "pegawai",
|
value: "pegawai",
|
||||||
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai",
|
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai",
|
||||||
icon: <IconUsers size={18} stroke={1.8} />,
|
icon: <IconUsers size={18} stroke={1.8} />
|
||||||
tooltip: "Kelola data pegawai BUMDesa",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Posisi Organisasi",
|
label: "Posisi Organisasi",
|
||||||
value: "posisiorganisasi",
|
value: "posisiorganisasi",
|
||||||
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi",
|
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi",
|
||||||
icon: <IconHierarchy size={18} stroke={1.8} />,
|
icon: <IconHierarchy size={18} stroke={1.8} />
|
||||||
tooltip: "Kelola daftar posisi organisasi",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Struktur Organisasi",
|
label: "Struktur Organisasi",
|
||||||
value: "strukturorganisasi",
|
value: "strukturorganisasi",
|
||||||
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/struktur-organisasi",
|
href: "/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/struktur-organisasi",
|
||||||
icon: <IconBuildingCommunity size={18} stroke={1.8} />,
|
icon: <IconBuildingCommunity size={18} stroke={1.8} />
|
||||||
tooltip: "Kelola struktur organisasi BUMDesa"
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -96,26 +92,19 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: "pop", duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
flexShrink: 0,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
flexShrink: 0,
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
@@ -135,7 +124,7 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
</TabsPanel>
|
</TabsPanel>
|
||||||
))}
|
))}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Stack>
|
</Stack >
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -110,11 +109,9 @@ export default function EditPegawaiBumDes() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">Edit Data Pegawai PPID</Title>
|
<Title order={4} ml="sm" c="dark">Edit Data Pegawai PPID</Title>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirma
|
|||||||
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
||||||
|
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -150,32 +150,28 @@ function DetailPegawai() {
|
|||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Group gap="sm" mt="md">
|
<Group gap="sm" mt="md">
|
||||||
<Tooltip label="Hapus Pegawai" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id || null);
|
||||||
setSelectedId(data.id || null);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Pegawai" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import ApiFetch from '@/lib/api-fetch';
|
import ApiFetch from '@/lib/api-fetch';
|
||||||
import { Box, Button, Group, Image, Paper, Select, Stack, Text, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Image, Paper, Select, Stack, Text, TextInput, Title } from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -75,11 +75,9 @@ function CreatePegawaiBumDes() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Pegawai BUMDesa
|
Tambah Pegawai BUMDesa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Badge, Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, ThemeIcon, Title, Tooltip } from '@mantine/core';
|
import { Badge, Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, ThemeIcon, Title } from '@mantine/core';
|
||||||
import { IconCheck, IconDeviceImacCog, IconPlus, IconSearch, IconX } from '@tabler/icons-react';
|
import { IconCheck, IconDeviceImacCog, IconPlus, IconSearch, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
@@ -59,16 +59,14 @@ function ListPegawaiBumdes({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Pegawai BUMDesa</Title>
|
<Title order={4}>Daftar Pegawai BUMDesa</Title>
|
||||||
<Tooltip label="Tambah Pegawai Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/create')}
|
||||||
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Center py="xl">
|
<Center py="xl">
|
||||||
<Text c="dimmed">Tidak ada data pegawai yang ditemukan</Text>
|
<Text c="dimmed">Tidak ada data pegawai yang ditemukan</Text>
|
||||||
@@ -82,16 +80,14 @@ function ListPegawaiBumdes({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Pegawai BUMDesa</Title>
|
<Title order={4}>Daftar Pegawai BUMDesa</Title>
|
||||||
<Tooltip label="Tambah Pegawai Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/create')}
|
||||||
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/pegawai/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: "auto" }}>
|
<Box style={{ overflowX: "auto" }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
import EditEditor from '@/app/admin/(dashboard)/_com/editEditor';
|
import EditEditor from '@/app/admin/(dashboard)/_com/editEditor';
|
||||||
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
@@ -84,11 +84,9 @@ function EditPosisiOrganisasiBumDes() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Posisi Organisasi BUMDes
|
Edit Posisi Organisasi BUMDes
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import CreateEditor from '@/app/admin/(dashboard)/_com/createEditor';
|
import CreateEditor from '@/app/admin/(dashboard)/_com/createEditor';
|
||||||
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
import stateStrukturBumDes from '@/app/admin/(dashboard)/_state/ekonomi/struktur-organisasi/struktur-organisasi';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
@@ -51,11 +51,9 @@ function CreatePosisiOrganisasiBumDes() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Posisi Organisasi BUMDes
|
Tambah Posisi Organisasi BUMDes
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text, Title } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -68,16 +68,14 @@ function ListPosisiOrganisasiBumDes({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Posisi Organisasi BumDes</Title>
|
<Title order={4}>Daftar Posisi Organisasi BumDes</Title>
|
||||||
<Tooltip label="Tambah Posisi Organisasi" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi/create')}
|
||||||
onClick={() => router.push('/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
@@ -106,19 +104,16 @@ function ListPosisiOrganisasiBumDes({ search }: { search: string }) {
|
|||||||
<Text>{item.hierarki || '-'}</Text>
|
<Text>{item.hierarki || '-'}</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd style={{ width: '20%' }}>
|
<TableTd style={{ width: '20%' }}>
|
||||||
<Tooltip label="Edit" withArrow>
|
<Button
|
||||||
<Button
|
variant="light"
|
||||||
variant="light"
|
color="green"
|
||||||
color="green"
|
size="sm"
|
||||||
size="sm"
|
onClick={() => router.push(`/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi/${item.id}`)}
|
||||||
onClick={() => router.push(`/admin/ekonomi/struktur-organisasi-dan-sk-pengurus-bumdesa/posisi-organisasi/${item.id}`)}
|
>
|
||||||
>
|
<IconEdit size={18} />
|
||||||
<IconEdit size={18} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd style={{ width: '20%' }}>
|
<TableTd style={{ width: '20%' }}>
|
||||||
<Tooltip label="Hapus" withArrow>
|
|
||||||
<Button
|
<Button
|
||||||
variant="light"
|
variant="light"
|
||||||
color="red"
|
color="red"
|
||||||
@@ -130,7 +125,6 @@ function ListPosisiOrganisasiBumDes({ search }: { search: string }) {
|
|||||||
>
|
>
|
||||||
<IconTrash size={18} />
|
<IconTrash size={18} />
|
||||||
</Button>
|
</Button>
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import { Box, Center, Image, Loader, Paper, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Center, Image, Loader, Paper, Stack, Text } from '@mantine/core';
|
||||||
import { IconUsers } from '@tabler/icons-react';
|
import { IconUsers } from '@tabler/icons-react';
|
||||||
import { OrganizationChart } from 'primereact/organizationchart';
|
import { OrganizationChart } from 'primereact/organizationchart';
|
||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
@@ -110,20 +110,18 @@ function nodeTemplate(node: any) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack align="center" gap={6} p="sm" style={{ minWidth: 160 }}>
|
<Stack align="center" gap={6} p="sm" style={{ minWidth: 160 }}>
|
||||||
<Tooltip label={name} position="top" withArrow>
|
<Image
|
||||||
<Image
|
src={imageSrc}
|
||||||
src={imageSrc}
|
alt={name}
|
||||||
alt={name}
|
radius="xl"
|
||||||
radius="xl"
|
w={100}
|
||||||
w={100}
|
h={100}
|
||||||
h={100}
|
fit="cover"
|
||||||
fit="cover"
|
style={{
|
||||||
style={{
|
border: '1px solid #D3D1D1FF',
|
||||||
border: '1px solid #D3D1D1FF',
|
}}
|
||||||
}}
|
loading='lazy'
|
||||||
loading='lazy'
|
/>
|
||||||
/>
|
|
||||||
</Tooltip>
|
|
||||||
<Text fw={600} ta="center" size="sm">{name}</Text>
|
<Text fw={600} ta="center" size="sm">{name}</Text>
|
||||||
<Text size="xs" c="dimmed" ta="center">{status}</Text>
|
<Text size="xs" c="dimmed" ta="center">{status}</Text>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Flex, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Flex, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -67,21 +67,19 @@ function DetailAjukanIdeInofativDesa() {
|
|||||||
Detail Ajukan Ide Inovatif Desa
|
Detail Ajukan Ide Inovatif Desa
|
||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
<Tooltip label="Hapus Ide Inovatif" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={state.delete.loading}
|
||||||
disabled={state.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
{/* Detail Data */}
|
{/* Detail Data */}
|
||||||
@@ -104,7 +102,7 @@ function DetailAjukanIdeInofativDesa() {
|
|||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<Text fz="lg" fw="bold">Deskripsi</Text>
|
<Text fz="lg" fw="bold">Deskripsi</Text>
|
||||||
<Text fz="md" c="dimmed" style={{ wordBreak: "break-word", whiteSpace: "normal" }} dangerouslySetInnerHTML={{ __html: data?.deskripsi || '-' }} />
|
<Text fz="md" c="dimmed" style={{ wordBreak: "break-word", whiteSpace: "normal" }} dangerouslySetInnerHTML={{ __html: data?.deskripsi || '-' }} />
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -87,11 +86,9 @@ function EditDigitalSmartVillage() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Desa Digital Smart Village
|
Edit Desa Digital Smart Village
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -112,32 +111,28 @@ function DetailDesaDigital() {
|
|||||||
|
|
||||||
{/* Tombol Aksi */}
|
{/* Tombol Aksi */}
|
||||||
<Group gap="sm">
|
<Group gap="sm">
|
||||||
<Tooltip label="Hapus Data" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Data" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/inovasi/desa-digital-smart-village/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/inovasi/desa-digital-smart-village/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -9,18 +9,17 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
import ExifOrientationImg from 'react-exif-orientation-img';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import CreateEditor from '../../../_com/createEditor';
|
import CreateEditor from '../../../_com/createEditor';
|
||||||
import desaDigitalState from '../../../_state/inovasi/desa-digital';
|
import desaDigitalState from '../../../_state/inovasi/desa-digital';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
|
||||||
import ExifOrientationImg from 'react-exif-orientation-img';
|
|
||||||
|
|
||||||
export default function CreateDesaDigital() {
|
export default function CreateDesaDigital() {
|
||||||
const stateDesaDigital = useProxy(desaDigitalState);
|
const stateDesaDigital = useProxy(desaDigitalState);
|
||||||
@@ -71,17 +70,15 @@ export default function CreateDesaDigital() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol kembali */}
|
{/* Header dengan tombol kembali */}
|
||||||
<Group mb="md" align="center">
|
<Group mb="md" align="center">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
style={{ transition: 'background 0.2s ease' }}
|
||||||
style={{ transition: 'background 0.2s ease' }}
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Desa Digital Smart Village
|
Tambah Desa Digital Smart Village
|
||||||
</Title>
|
</Title>
|
||||||
@@ -174,15 +171,15 @@ export default function CreateDesaDigital() {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<ExifOrientationImg
|
<ExifOrientationImg
|
||||||
src={previewImage}
|
src={previewImage}
|
||||||
alt="Preview"
|
alt="Preview"
|
||||||
style={{
|
style={{
|
||||||
maxHeight: 220,
|
maxHeight: 220,
|
||||||
objectFit: 'cover',
|
objectFit: 'cover',
|
||||||
border: '1px solid #e0e0e0',
|
border: '1px solid #e0e0e0',
|
||||||
borderRadius: 12,
|
borderRadius: 12,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -68,18 +67,16 @@ function ListDesaDigitalSmartVillage({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>List Desa Digital Smart Village</Title>
|
<Title order={4}>List Desa Digital Smart Village</Title>
|
||||||
<Tooltip label="Tambah Inovasi" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/inovasi/desa-digital-smart-village/create')
|
||||||
router.push('/admin/inovasi/desa-digital-smart-village/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -100,11 +99,9 @@ function EditInfoTeknologiTepatGuna() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Tombol back + title */}
|
{/* Tombol back + title */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Info Teknologi Tepat Guna
|
Edit Info Teknologi Tepat Guna
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -101,35 +101,31 @@ function DetailInfoTeknologiTepatGuna() {
|
|||||||
|
|
||||||
{/* Action Buttons */}
|
{/* Action Buttons */}
|
||||||
<Group gap="sm" mt={10}>
|
<Group gap="sm" mt={10}>
|
||||||
<Tooltip label="Hapus Info Teknologi" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={stateInfoTekno.delete.loading}
|
||||||
disabled={stateInfoTekno.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Info Teknologi" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(`/admin/inovasi/info-teknologi-tepat-guna/${data.id}/edit`)
|
||||||
router.push(`/admin/inovasi/info-teknologi-tepat-guna/${data.id}/edit`)
|
}
|
||||||
}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
@@ -20,7 +20,6 @@ import { toast } from 'react-toastify';
|
|||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import CreateEditor from '../../../_com/createEditor';
|
import CreateEditor from '../../../_com/createEditor';
|
||||||
import infoTeknoState from '../../../_state/inovasi/info-tekno';
|
import infoTeknoState from '../../../_state/inovasi/info-tekno';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
|
||||||
|
|
||||||
function CreateInfoTeknologiTepatGuna() {
|
function CreateInfoTeknologiTepatGuna() {
|
||||||
const stateInfoTekno = useProxy(infoTeknoState);
|
const stateInfoTekno = useProxy(infoTeknoState);
|
||||||
@@ -72,11 +71,9 @@ function CreateInfoTeknologiTepatGuna() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Info Teknologi Tepat Guna
|
Tambah Info Teknologi Tepat Guna
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {
|
|||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
Center,
|
Center,
|
||||||
|
Group,
|
||||||
Pagination,
|
Pagination,
|
||||||
Paper,
|
Paper,
|
||||||
Skeleton,
|
Skeleton,
|
||||||
@@ -15,9 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Group,
|
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -68,18 +67,16 @@ function ListInfoTeknologiTepatGuna({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Info Teknologi Tepat Guna</Title>
|
<Title order={4}>Daftar Info Teknologi Tepat Guna</Title>
|
||||||
<Tooltip label="Tambah Info Teknologi" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push('/admin/inovasi/info-teknologi-tepat-guna/create')
|
||||||
router.push('/admin/inovasi/info-teknologi-tepat-guna/create')
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title, Tooltip } from '@mantine/core';
|
import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title } from '@mantine/core';
|
||||||
|
import { IconListDetails, IconUsers } from '@tabler/icons-react';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { IconListDetails, IconUsers } from '@tabler/icons-react';
|
|
||||||
|
|
||||||
function LayoutTabsKolaborasi({ children }: { children: React.ReactNode }) {
|
function LayoutTabsKolaborasi({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -15,14 +15,12 @@ function LayoutTabsKolaborasi({ children }: { children: React.ReactNode }) {
|
|||||||
label: "List Kolaborasi Inovasi",
|
label: "List Kolaborasi Inovasi",
|
||||||
value: "listkolaborasiinovasi",
|
value: "listkolaborasiinovasi",
|
||||||
href: "/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi",
|
href: "/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi",
|
||||||
tooltip: "Lihat daftar kolaborasi inovasi",
|
|
||||||
icon: <IconListDetails size={18} stroke={1.8} />,
|
icon: <IconListDetails size={18} stroke={1.8} />,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Mitra Kolaborasi",
|
label: "Mitra Kolaborasi",
|
||||||
value: "mitarakolaborasi",
|
value: "mitarakolaborasi",
|
||||||
href: "/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi",
|
href: "/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi",
|
||||||
tooltip: "Kelola mitra kolaborasi",
|
|
||||||
icon: <IconUsers size={18} stroke={1.8} />,
|
icon: <IconUsers size={18} stroke={1.8} />,
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -73,25 +71,18 @@ function LayoutTabsKolaborasi({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: 'pop', duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from "@mantine/core";
|
} from "@mantine/core";
|
||||||
import { IconArrowBack } from "@tabler/icons-react";
|
import { IconArrowBack } from "@tabler/icons-react";
|
||||||
import { useParams, useRouter } from "next/navigation";
|
import { useParams, useRouter } from "next/navigation";
|
||||||
@@ -89,11 +88,9 @@ function EditKolaborasiInovasi() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: "sm", md: "lg" }} py="md">
|
<Box px={{ base: "sm", md: "lg" }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors["blue-button"]} size={24} />
|
||||||
<IconArrowBack color={colors["blue-button"]} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Kolaborasi Inovasi
|
Edit Kolaborasi Inovasi
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import { Box, Button, Group, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -96,33 +96,29 @@ function DetailKolaborasiInovasi() {
|
|||||||
|
|
||||||
{/* Tombol aksi */}
|
{/* Tombol aksi */}
|
||||||
<Group gap="sm">
|
<Group gap="sm">
|
||||||
<Tooltip label="Hapus Kolaborasi Inovasi" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={kolaborasiState.delete.loading}
|
||||||
disabled={kolaborasiState.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Kolaborasi Inovasi" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import CreateEditor from '@/app/admin/(dashboard)/_com/createEditor';
|
import CreateEditor from '@/app/admin/(dashboard)/_com/createEditor';
|
||||||
import kolaborasiInovasiState from '@/app/admin/(dashboard)/_state/inovasi/kolaborasi-inovasi';
|
import kolaborasiInovasiState from '@/app/admin/(dashboard)/_state/inovasi/kolaborasi-inovasi';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core';
|
||||||
import { YearPickerInput } from '@mantine/dates';
|
import { YearPickerInput } from '@mantine/dates';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -54,11 +54,9 @@ function CreateProgramKreatifDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Back Button */}
|
{/* Back Button */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Kolaborasi Inovasi
|
Tambah Kolaborasi Inovasi
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -17,15 +17,14 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
import HeaderSearch from '../../../_com/header';
|
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import kolaborasiInovasiState from '../../../_state/inovasi/kolaborasi-inovasi';
|
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
|
import HeaderSearch from '../../../_com/header';
|
||||||
|
import kolaborasiInovasiState from '../../../_state/inovasi/kolaborasi-inovasi';
|
||||||
|
|
||||||
function KolaborasiInovasi() {
|
function KolaborasiInovasi() {
|
||||||
const [search, setSearch] = useState('');
|
const [search, setSearch] = useState('');
|
||||||
@@ -68,16 +67,14 @@ function ListKolaborasiInovasi({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Kolaborasi Inovasi</Title>
|
<Title order={4}>Daftar Kolaborasi Inovasi</Title>
|
||||||
<Tooltip label="Tambah Kolaborasi Inovasi" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() => router.push('/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi/create')}
|
||||||
onClick={() => router.push('/admin/inovasi/kolaborasi-inovasi/list-kolaborasi-inovasi/create')}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -13,8 +13,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import {
|
import {
|
||||||
@@ -113,11 +112,9 @@ function EditMitraKolaborasi() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Mitra
|
Edit Mitra
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { Dropzone } from '@mantine/dropzone';
|
import { Dropzone } from '@mantine/dropzone';
|
||||||
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
import { IconArrowBack, IconPhoto, IconUpload, IconX } from '@tabler/icons-react';
|
||||||
@@ -61,11 +60,9 @@ function CreateMitraKolaborasi() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Back Button + Title */}
|
{/* Back Button + Title */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Mitra Kolaborasi
|
Tambah Mitra Kolaborasi
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -18,16 +18,15 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconEdit, IconSearch, IconX, IconPlus } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconX } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import HeaderSearch from '../../../_com/header';
|
import HeaderSearch from '../../../_com/header';
|
||||||
import mitraKolaborasi from '../../../_state/inovasi/mitra-kolaborasi';
|
|
||||||
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '../../../_com/modalKonfirmasiHapus';
|
||||||
|
import mitraKolaborasi from '../../../_state/inovasi/mitra-kolaborasi';
|
||||||
|
|
||||||
function MitraKolaborasi() {
|
function MitraKolaborasi() {
|
||||||
const [search, setSearch] = useState('');
|
const [search, setSearch] = useState('');
|
||||||
@@ -81,20 +80,18 @@ function ListMitraKolaborasi({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Mitra Kolaborasi</Title>
|
<Title order={4}>Daftar Mitra Kolaborasi</Title>
|
||||||
<Tooltip label="Tambah Mitra Baru" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi/create'
|
||||||
'/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi/create'
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
@@ -135,39 +132,35 @@ function ListMitraKolaborasi({ search }: { search: string }) {
|
|||||||
</Box>
|
</Box>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Hapus Mitra" withArrow>
|
<Button
|
||||||
<Button
|
size="xs"
|
||||||
size="xs"
|
radius="md"
|
||||||
radius="md"
|
variant="light"
|
||||||
variant="light"
|
color="red"
|
||||||
color="red"
|
disabled={mitraKolaborasi.delete.loading || !item}
|
||||||
disabled={mitraKolaborasi.delete.loading || !item}
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(item.id);
|
||||||
setSelectedId(item.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
>
|
||||||
>
|
<IconX size={16} />
|
||||||
<IconX size={16} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd>
|
||||||
<Tooltip label="Edit Mitra" withArrow>
|
<Button
|
||||||
<Button
|
size="xs"
|
||||||
size="xs"
|
radius="md"
|
||||||
radius="md"
|
variant="light"
|
||||||
variant="light"
|
color="green"
|
||||||
color="green"
|
disabled={!item}
|
||||||
disabled={!item}
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
`/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi/${item.id}`
|
||||||
`/admin/inovasi/kolaborasi-inovasi/mitra-kolaborasi/${item.id}`
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
<IconEdit size={16} />
|
||||||
<IconEdit size={16} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -8,17 +8,16 @@ import {
|
|||||||
TabsList,
|
TabsList,
|
||||||
TabsPanel,
|
TabsPanel,
|
||||||
TabsTab,
|
TabsTab,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
|
||||||
import React, { useEffect, useState } from 'react';
|
|
||||||
import {
|
import {
|
||||||
|
IconAlertCircle,
|
||||||
IconFileText,
|
IconFileText,
|
||||||
IconListDetails,
|
IconListDetails,
|
||||||
IconMessage,
|
IconMessage
|
||||||
IconAlertCircle
|
|
||||||
} from '@tabler/icons-react';
|
} from '@tabler/icons-react';
|
||||||
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
|
import React, { useEffect, useState } from 'react';
|
||||||
|
|
||||||
function LayoutTabsLayananOnlineDesa({ children }: { children: React.ReactNode }) {
|
function LayoutTabsLayananOnlineDesa({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -30,29 +29,25 @@ function LayoutTabsLayananOnlineDesa({ children }: { children: React.ReactNode }
|
|||||||
label: "Administrasi Online",
|
label: "Administrasi Online",
|
||||||
value: "administrasionline",
|
value: "administrasionline",
|
||||||
href: "/admin/inovasi/layanan-online-desa/administrasi-online",
|
href: "/admin/inovasi/layanan-online-desa/administrasi-online",
|
||||||
icon: <IconFileText size={18} stroke={1.8} />,
|
icon: <IconFileText size={18} stroke={1.8} />
|
||||||
tooltip: "Kelola administrasi online desa"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Jenis Layanan",
|
label: "Jenis Layanan",
|
||||||
value: "jenislayanan",
|
value: "jenislayanan",
|
||||||
href: "/admin/inovasi/layanan-online-desa/jenis-layanan",
|
href: "/admin/inovasi/layanan-online-desa/jenis-layanan",
|
||||||
icon: <IconListDetails size={18} stroke={1.8} />,
|
icon: <IconListDetails size={18} stroke={1.8} />
|
||||||
tooltip: "Daftar jenis layanan desa"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Pengaduan Masyarakat",
|
label: "Pengaduan Masyarakat",
|
||||||
value: "pengaduanmasyarakat",
|
value: "pengaduanmasyarakat",
|
||||||
href: "/admin/inovasi/layanan-online-desa/pengaduan-masyarakat",
|
href: "/admin/inovasi/layanan-online-desa/pengaduan-masyarakat",
|
||||||
icon: <IconMessage size={18} stroke={1.8} />,
|
icon: <IconMessage size={18} stroke={1.8} />
|
||||||
tooltip: "Laporan pengaduan masyarakat"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Jenis Pengaduan",
|
label: "Jenis Pengaduan",
|
||||||
value: "jenispengaduan",
|
value: "jenispengaduan",
|
||||||
href: "/admin/inovasi/layanan-online-desa/jenis-pengaduan",
|
href: "/admin/inovasi/layanan-online-desa/jenis-pengaduan",
|
||||||
icon: <IconAlertCircle size={18} stroke={1.8} />,
|
icon: <IconAlertCircle size={18} stroke={1.8} />
|
||||||
tooltip: "Kategori/jenis pengaduan masyarakat"
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -103,25 +98,18 @@ function LayoutTabsLayananOnlineDesa({ children }: { children: React.ReactNode }
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: 'pop', duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
|
|
||||||
import { Box, Button, Group, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -53,20 +53,18 @@ function DetailAdministrasiOnline() {
|
|||||||
Kembali
|
Kembali
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Tooltip label="Hapus Data" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
{/* Konten Detail */}
|
{/* Konten Detail */}
|
||||||
<Paper
|
<Paper
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -72,16 +71,14 @@ function EditJenisLayanan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jenis Layanan
|
Edit Jenis Layanan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
||||||
import layananonlineDesa from '@/app/admin/(dashboard)/_state/inovasi/layanan-online-desa';
|
import layananonlineDesa from '@/app/admin/(dashboard)/_state/inovasi/layanan-online-desa';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -85,33 +85,29 @@ function DetailJenisLayanan() {
|
|||||||
|
|
||||||
{/* Tombol aksi */}
|
{/* Tombol aksi */}
|
||||||
<Group gap="sm" mt="sm">
|
<Group gap="sm" mt="sm">
|
||||||
<Tooltip label="Hapus Jenis Layanan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id)
|
||||||
setSelectedId(data.id)
|
setModalHapus(true)
|
||||||
setModalHapus(true)
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={state.delete.loading}
|
||||||
disabled={state.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Jenis Layanan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/inovasi/layanan-online-desa/jenis-layanan/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/inovasi/layanan-online-desa/jenis-layanan/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -10,8 +10,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -43,16 +42,14 @@ function CreateJenisLayanan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header dengan tombol back */}
|
{/* Header dengan tombol back */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jenis Layanan
|
Tambah Jenis Layanan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconPlus, IconSearch } from '@tabler/icons-react';
|
||||||
@@ -68,20 +67,18 @@ function ListJenisLayanan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Jenis Layanan</Title>
|
<Title order={4}>Daftar Jenis Layanan</Title>
|
||||||
<Tooltip label="Tambah Jenis Layanan" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/inovasi/layanan-online-desa/jenis-layanan/create'
|
||||||
'/admin/inovasi/layanan-online-desa/jenis-layanan/create'
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -90,16 +89,14 @@ function EditJenisPengaduan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Jenis Pengaduan
|
Edit Jenis Pengaduan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -9,8 +9,7 @@ import {
|
|||||||
Paper,
|
Paper,
|
||||||
Stack,
|
Stack,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -41,11 +40,9 @@ function CreateJenisPengaduan() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Jenis Pengaduan
|
Tambah Jenis Pengaduan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
import { IconEdit, IconPlus, IconSearch, IconTrash } from '@tabler/icons-react';
|
||||||
@@ -79,20 +78,18 @@ function ListJenisPengaduan({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Jenis Pengaduan</Title>
|
<Title order={4}>Daftar Jenis Pengaduan</Title>
|
||||||
<Tooltip label="Tambah Jenis Pengaduan" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/inovasi/layanan-online-desa/jenis-pengaduan/create'
|
||||||
'/admin/inovasi/layanan-online-desa/jenis-pengaduan/create'
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import { useProxy } from 'valtio/utils';
|
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { Box, Button, Group, Image, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
import { useProxy } from 'valtio/utils';
|
||||||
|
|
||||||
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
import { ModalKonfirmasiHapus } from '@/app/admin/(dashboard)/_com/modalKonfirmasiHapus';
|
||||||
import layananonlineDesa from '@/app/admin/(dashboard)/_state/inovasi/layanan-online-desa';
|
import layananonlineDesa from '@/app/admin/(dashboard)/_state/inovasi/layanan-online-desa';
|
||||||
@@ -129,21 +129,19 @@ function DetailPengaduanMasyarakat() {
|
|||||||
|
|
||||||
{/* Action Button */}
|
{/* Action Button */}
|
||||||
<Group gap="sm">
|
<Group gap="sm">
|
||||||
<Tooltip label="Hapus Pengaduan" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
disabled={pengaduanState.pengaduanMasyarakat.delete.loading}
|
||||||
disabled={pengaduanState.pengaduanMasyarakat.delete.loading}
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconDeviceImac, IconSearch } from '@tabler/icons-react';
|
import { IconDeviceImac, IconSearch } from '@tabler/icons-react';
|
||||||
|
|
||||||
@@ -99,18 +98,16 @@ function ListPengaduanMasyarakat({ search }: { search: string }) {
|
|||||||
<Text fz="sm" c="dimmed" truncate lineClamp={1}>{item.nomorTelepon}</Text>
|
<Text fz="sm" c="dimmed" truncate lineClamp={1}>{item.nomorTelepon}</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd style={{ width: '15%' }}>
|
<TableTd style={{ width: '15%' }}>
|
||||||
<Tooltip label="Lihat detail pengaduan" withArrow>
|
<Button
|
||||||
<Button
|
size="xs"
|
||||||
size="xs"
|
radius="md"
|
||||||
radius="md"
|
variant="light"
|
||||||
variant="light"
|
color="blue"
|
||||||
color="blue"
|
leftSection={<IconDeviceImac size={16} />}
|
||||||
leftSection={<IconDeviceImac size={16} />}
|
onClick={() => router.push(`/admin/inovasi/layanan-online-desa/pengaduan-masyarakat/${item.id}`)}
|
||||||
onClick={() => router.push(`/admin/inovasi/layanan-online-desa/pengaduan-masyarakat/${item.id}`)}
|
>
|
||||||
>
|
Detail
|
||||||
Detail
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Flex, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Flex, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
import { IconArrowBack, IconEdit, IconTrash } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -95,40 +95,36 @@ function DetailProgramKreatifDesa() {
|
|||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Flex gap="sm" mt={10}>
|
<Flex gap="sm" mt={10}>
|
||||||
<Tooltip label="Hapus Program Kreatif Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
if (data) {
|
||||||
if (data) {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}
|
||||||
}
|
}}
|
||||||
}}
|
disabled={stateProgramKreatif.delete.loading || !data}
|
||||||
disabled={stateProgramKreatif.delete.loading || !data}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Program Kreatif Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => {
|
||||||
onClick={() => {
|
if (data) {
|
||||||
if (data) {
|
router.push(`/admin/inovasi/program-kreatif-desa/${data.id}/edit`);
|
||||||
router.push(`/admin/inovasi/program-kreatif-desa/${data.id}/edit`);
|
}
|
||||||
}
|
}}
|
||||||
}}
|
disabled={!data}
|
||||||
disabled={!data}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Flex>
|
</Flex>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -8,15 +8,14 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import { useProxy } from 'valtio/utils';
|
import { useProxy } from 'valtio/utils';
|
||||||
import CreateEditor from '../../../_com/createEditor';
|
import CreateEditor from '../../../_com/createEditor';
|
||||||
import programKreatifState from '../../../_state/inovasi/program-kreatif';
|
|
||||||
import SelectIconProgram from '../../../_com/selectIcon';
|
import SelectIconProgram from '../../../_com/selectIcon';
|
||||||
|
import programKreatifState from '../../../_state/inovasi/program-kreatif';
|
||||||
|
|
||||||
function CreateProgramKreatifDesa() {
|
function CreateProgramKreatifDesa() {
|
||||||
const stateCreate = useProxy(programKreatifState);
|
const stateCreate = useProxy(programKreatifState);
|
||||||
@@ -45,11 +44,9 @@ function CreateProgramKreatifDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Tombol kembali */}
|
{/* Tombol kembali */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Program Kreatif Desa
|
Tambah Program Kreatif Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ import {
|
|||||||
TableThead,
|
TableThead,
|
||||||
TableTr,
|
TableTr,
|
||||||
Text,
|
Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import {
|
import {
|
||||||
IconCash,
|
IconCash,
|
||||||
@@ -117,20 +116,18 @@ function ListProgramKreatifDesa({ search }: { search: string }) {
|
|||||||
<Stack>
|
<Stack>
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Program Kreatif Desa</Title>
|
<Title order={4}>Daftar Program Kreatif Desa</Title>
|
||||||
<Tooltip label="Tambah Program Kreatif Desa" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/inovasi/program-kreatif-desa/create'
|
||||||
'/admin/inovasi/program-kreatif-desa/create'
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Table highlightOnHover striped>
|
<Table highlightOnHover striped>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
@@ -164,20 +161,18 @@ function ListProgramKreatifDesa({ search }: { search: string }) {
|
|||||||
>
|
>
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Program Kreatif Desa</Title>
|
<Title order={4}>Daftar Program Kreatif Desa</Title>
|
||||||
<Tooltip label="Tambah Program Kreatif Desa" withArrow>
|
<Button
|
||||||
<Button
|
leftSection={<IconPlus size={18} />}
|
||||||
leftSection={<IconPlus size={18} />}
|
color="blue"
|
||||||
color="blue"
|
variant="light"
|
||||||
variant="light"
|
onClick={() =>
|
||||||
onClick={() =>
|
router.push(
|
||||||
router.push(
|
'/admin/inovasi/program-kreatif-desa/create'
|
||||||
'/admin/inovasi/program-kreatif-desa/create'
|
)
|
||||||
)
|
}
|
||||||
}
|
>
|
||||||
>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowY: 'auto' }}>
|
<Box style={{ overflowY: 'auto' }}>
|
||||||
<Table highlightOnHover striped >
|
<Table highlightOnHover striped >
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ function CreateAPBDes() {
|
|||||||
/>
|
/>
|
||||||
<TextInput
|
<TextInput
|
||||||
label="Jumlah Anggaran"
|
label="Jumlah Anggaran"
|
||||||
placeholder="Masukkan jumlah anggaran"
|
placeholder="14 M / 1 T / 200 JT / 900 RB"
|
||||||
defaultValue={stateAPBDes.create.form.jumlah || ''}
|
defaultValue={stateAPBDes.create.form.jumlah || ''}
|
||||||
onChange={(e) => (stateAPBDes.create.form.jumlah = e.target.value)}
|
onChange={(e) => (stateAPBDes.create.form.jumlah = e.target.value)}
|
||||||
required
|
required
|
||||||
|
|||||||
@@ -57,57 +57,60 @@ function ListAPBDes({ 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">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar APBDes</Title>
|
<Title order={4}>Daftar APBDes</Title>
|
||||||
<Button
|
<Button
|
||||||
leftSection={<IconPlus size={18} />}
|
leftSection={<IconPlus size={18} />}
|
||||||
color="blue"
|
color="blue"
|
||||||
variant="light"
|
variant="light"
|
||||||
onClick={() => router.push('/admin/landing-page/apbdes/create')}
|
onClick={() => router.push('/admin/landing-page/apbdes/create')}
|
||||||
>
|
>
|
||||||
Tambah Baru
|
Tambah Baru
|
||||||
</Button>
|
</Button>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
<TableTr>
|
<TableTr>
|
||||||
<TableTh style={{ width: '30%' }}>Nama APBDes</TableTh>
|
<TableTh style={{ width: '30%'}}>Nama APBDes</TableTh>
|
||||||
<TableTh style={{ width: '25%' }}>Jumlah</TableTh>
|
<TableTh style={{ width: '30%' }}>Jumlah</TableTh>
|
||||||
<TableTh style={{ width: '25%' }}>Dokumen</TableTh>
|
<TableTh style={{ width: '25%' }}>Dokumen</TableTh>
|
||||||
<TableTh style={{ width: '20%' }}>Aksi</TableTh>
|
<TableTh style={{ width: '25%' }}>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 style={{ width: '30%' }}>
|
||||||
<Text fw={500} truncate="end">{item.name}</Text>
|
<Text fw={500} truncate="end">{item.name}</Text>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd style={{ width: '30%' }}>
|
||||||
<Box w={150}>
|
<Box w={150}>
|
||||||
<Text>Rp. {item.jumlah}</Text>
|
<Text>Rp. {item.jumlah}</Text>
|
||||||
</Box>
|
</Box>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd style={{ width: '25%' }}>
|
||||||
{item.file?.link ? (
|
<Box w={150}>
|
||||||
<Button
|
{item.file?.link ? (
|
||||||
component="a"
|
<Button
|
||||||
href={item.file.link}
|
component="a"
|
||||||
target="_blank"
|
href={item.file.link}
|
||||||
rel="noopener noreferrer"
|
target="_blank"
|
||||||
variant="light"
|
rel="noopener noreferrer"
|
||||||
leftSection={<IconFile size={18} />}
|
variant="light"
|
||||||
size="sm"
|
leftSection={<IconFile size={18} />}
|
||||||
>
|
size="sm"
|
||||||
Lihat Dokumen
|
>
|
||||||
</Button>
|
Lihat Dokumen
|
||||||
) : (
|
</Button>
|
||||||
<Text c="dimmed" fz="sm">Tidak ada dokumen</Text>
|
) : (
|
||||||
)}
|
<Text c="dimmed" fz="sm">Tidak ada dokumen</Text>
|
||||||
|
)}
|
||||||
|
</Box>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
<TableTd>
|
<TableTd style={{ width: '25%' }}>
|
||||||
<Button
|
<Box w={80}>
|
||||||
|
<Button
|
||||||
size="xs"
|
size="xs"
|
||||||
radius="md"
|
radius="md"
|
||||||
variant="light"
|
variant="light"
|
||||||
@@ -118,6 +121,7 @@ function ListAPBDes({ search }: { search: string }) {
|
|||||||
>
|
>
|
||||||
Detail
|
Detail
|
||||||
</Button>
|
</Button>
|
||||||
|
</Box>
|
||||||
</TableTd>
|
</TableTd>
|
||||||
</TableTr>
|
</TableTr>
|
||||||
))
|
))
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
@@ -107,11 +106,9 @@ export default function EditDataLingkunganDesa() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
||||||
<Button variant="subtle" onClick={() => router.back()} p="xs" radius="md">
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Data Lingkungan Desa
|
Edit Data Lingkungan Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Skeleton, Stack, Text, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Skeleton, Stack, Text } from '@mantine/core';
|
||||||
import { useShallowEffect } from '@mantine/hooks';
|
import { useShallowEffect } from '@mantine/hooks';
|
||||||
import {
|
import {
|
||||||
IconArrowBack,
|
IconArrowBack,
|
||||||
@@ -136,32 +136,28 @@ function DetailDataLingkunganDesa() {
|
|||||||
|
|
||||||
{/* Action Buttons */}
|
{/* Action Buttons */}
|
||||||
<Group gap="sm" mt="sm">
|
<Group gap="sm" mt="sm">
|
||||||
<Tooltip label="Hapus Data Lingkungan Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="red"
|
||||||
color="red"
|
onClick={() => {
|
||||||
onClick={() => {
|
setSelectedId(data.id);
|
||||||
setSelectedId(data.id);
|
setModalHapus(true);
|
||||||
setModalHapus(true);
|
}}
|
||||||
}}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconTrash size={20} />
|
||||||
<IconTrash size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
|
|
||||||
<Tooltip label="Edit Data Lingkungan Desa" withArrow position="top">
|
<Button
|
||||||
<Button
|
color="green"
|
||||||
color="green"
|
onClick={() => router.push(`/admin/lingkungan/data-lingkungan-desa/${data.id}/edit`)}
|
||||||
onClick={() => router.push(`/admin/lingkungan/data-lingkungan-desa/${data.id}/edit`)}
|
variant="light"
|
||||||
variant="light"
|
radius="md"
|
||||||
radius="md"
|
size="md"
|
||||||
size="md"
|
>
|
||||||
>
|
<IconEdit size={20} />
|
||||||
<IconEdit size={20} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
TextInput,
|
TextInput,
|
||||||
Title,
|
Title
|
||||||
Tooltip,
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
@@ -41,16 +40,14 @@ function CreateDataLingkunganDesa() {
|
|||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<Group mb="md">
|
<Group mb="md">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button
|
||||||
<Button
|
variant="subtle"
|
||||||
variant="subtle"
|
onClick={() => router.back()}
|
||||||
onClick={() => router.back()}
|
p="xs"
|
||||||
p="xs"
|
radius="md"
|
||||||
radius="md"
|
>
|
||||||
>
|
<IconArrowBack color={colors['blue-button']} size={22} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={22} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Tambah Data Lingkungan Desa
|
Tambah Data Lingkungan Desa
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ import colors from '@/con/colors';
|
|||||||
import {
|
import {
|
||||||
Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack,
|
Box, Button, Center, Group, Pagination, Paper, Skeleton, Stack,
|
||||||
Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text,
|
Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text,
|
||||||
Title,
|
Title
|
||||||
Tooltip
|
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
import {
|
import {
|
||||||
IconChartLine, IconChristmasTreeFilled, IconClipboardTextFilled,
|
IconChartLine, IconChristmasTreeFilled, IconClipboardTextFilled,
|
||||||
@@ -83,11 +82,9 @@ function ListDataLingkunganDesa({ search }: { search: string }) {
|
|||||||
<Stack>
|
<Stack>
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Data Lingkungan Desa</Title>
|
<Title order={4}>Daftar Data Lingkungan Desa</Title>
|
||||||
<Tooltip label="Tambah Data Lingkungan Desa" withArrow>
|
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/lingkungan/data-lingkungan-desa/create')}>
|
||||||
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/lingkungan/data-lingkungan-desa/create')}>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
<TableThead>
|
<TableThead>
|
||||||
@@ -114,11 +111,9 @@ function ListDataLingkunganDesa({ search }: { search: string }) {
|
|||||||
<Paper withBorder shadow="md" radius="md" bg={colors['white-1']} p="lg">
|
<Paper withBorder shadow="md" radius="md" bg={colors['white-1']} p="lg">
|
||||||
<Group justify="space-between" mb="md">
|
<Group justify="space-between" mb="md">
|
||||||
<Title order={4}>Daftar Data Lingkungan Desa</Title>
|
<Title order={4}>Daftar Data Lingkungan Desa</Title>
|
||||||
<Tooltip label="Tambah Data Lingkungan Desa" withArrow>
|
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/lingkungan/data-lingkungan-desa/create')}>
|
||||||
<Button leftSection={<IconPlus size={18} />} color="blue" variant="light" onClick={() => router.push('/admin/lingkungan/data-lingkungan-desa/create')}>
|
Tambah Baru
|
||||||
Tambah Baru
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Box style={{ overflowX: 'auto' }}>
|
<Box style={{ overflowX: 'auto' }}>
|
||||||
<Table highlightOnHover>
|
<Table highlightOnHover>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title, Tooltip } from '@mantine/core';
|
import { Box, ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title } from '@mantine/core';
|
||||||
import { IconBook, IconLeaf, IconSchool } from '@tabler/icons-react';
|
import { IconBook, IconLeaf, IconSchool } from '@tabler/icons-react';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
@@ -15,21 +15,18 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
label: "Tujuan Edukasi Lingkungan",
|
label: "Tujuan Edukasi Lingkungan",
|
||||||
value: "tujuanedukasilingkungan",
|
value: "tujuanedukasilingkungan",
|
||||||
href: "/admin/lingkungan/edukasi-lingkungan/tujuan-edukasi-lingkungan",
|
href: "/admin/lingkungan/edukasi-lingkungan/tujuan-edukasi-lingkungan",
|
||||||
tooltip: "Lihat tujuan edukasi lingkungan",
|
|
||||||
icon: <IconLeaf size={18} stroke={1.8} />
|
icon: <IconLeaf size={18} stroke={1.8} />
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Materi Edukasi Yang Diberikan",
|
label: "Materi Edukasi Yang Diberikan",
|
||||||
value: "materiedukasiyangdiberikan",
|
value: "materiedukasiyangdiberikan",
|
||||||
href: "/admin/lingkungan/edukasi-lingkungan/materi-edukasi-yang-diberikan",
|
href: "/admin/lingkungan/edukasi-lingkungan/materi-edukasi-yang-diberikan",
|
||||||
tooltip: "Kelola materi edukasi yang diberikan",
|
|
||||||
icon: <IconBook size={18} stroke={1.8} />
|
icon: <IconBook size={18} stroke={1.8} />
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Contoh Kegiatan Di Desa Darmasaba",
|
label: "Contoh Kegiatan Di Desa Darmasaba",
|
||||||
value: "contohkegiatan",
|
value: "contohkegiatan",
|
||||||
href: "/admin/lingkungan/edukasi-lingkungan/contoh-kegiatan-desa-darmasaba",
|
href: "/admin/lingkungan/edukasi-lingkungan/contoh-kegiatan-desa-darmasaba",
|
||||||
tooltip: "Lihat contoh kegiatan desa Darmasaba",
|
|
||||||
icon: <IconSchool size={18} stroke={1.8} />
|
icon: <IconSchool size={18} stroke={1.8} />
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@@ -76,27 +73,26 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip key={i} label={tab.tooltip} position="bottom" withArrow transitionProps={{ transition: 'pop', duration: 200 }}>
|
<TabsTab
|
||||||
<TabsTab
|
key={i}
|
||||||
value={tab.value}
|
value={tab.value}
|
||||||
leftSection={tab.icon}
|
leftSection={tab.icon}
|
||||||
style={{
|
style={{
|
||||||
fontWeight: 600,
|
fontWeight: 600,
|
||||||
fontSize: "0.9rem",
|
fontSize: "0.9rem",
|
||||||
whiteSpace: "nowrap",
|
whiteSpace: "nowrap",
|
||||||
transition: "all 0.2s ease",
|
transition: "all 0.2s ease",
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span style={{
|
<span style={{
|
||||||
display: "inline-block",
|
display: "inline-block",
|
||||||
maxWidth: "200px",
|
maxWidth: "200px",
|
||||||
overflow: "hidden",
|
overflow: "hidden",
|
||||||
textOverflow: "ellipsis"
|
textOverflow: "ellipsis"
|
||||||
}}>
|
}}>
|
||||||
{tab.label}
|
{tab.label}
|
||||||
</span>
|
</span>
|
||||||
</TabsTab>
|
</TabsTab>
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
@@ -109,7 +105,7 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
</TabsPanel>
|
</TabsPanel>
|
||||||
))}
|
))}
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</Stack>
|
</Stack >
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
/* eslint-disable react-hooks/exhaustive-deps */
|
/* eslint-disable react-hooks/exhaustive-deps */
|
||||||
'use client'
|
'use client'
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title, Tooltip } from '@mantine/core';
|
import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title } from '@mantine/core';
|
||||||
|
import { IconClipboardList, IconTags } from '@tabler/icons-react';
|
||||||
import { usePathname, useRouter } from 'next/navigation';
|
import { usePathname, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { IconClipboardList, IconTags } from '@tabler/icons-react';
|
|
||||||
|
|
||||||
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
function LayoutTabs({ children }: { children: React.ReactNode }) {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -16,14 +16,12 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
value: "kegiatanDesa",
|
value: "kegiatanDesa",
|
||||||
href: "/admin/lingkungan/gotong-royong/kegiatan-desa",
|
href: "/admin/lingkungan/gotong-royong/kegiatan-desa",
|
||||||
icon: <IconClipboardList size={18} stroke={1.8} />,
|
icon: <IconClipboardList size={18} stroke={1.8} />,
|
||||||
tooltip: "Lihat dan kelola kegiatan desa",
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Kategori Kegiatan",
|
label: "Kategori Kegiatan",
|
||||||
value: "kategoriKegiatan",
|
value: "kategoriKegiatan",
|
||||||
href: "/admin/lingkungan/gotong-royong/kategori-kegiatan",
|
href: "/admin/lingkungan/gotong-royong/kategori-kegiatan",
|
||||||
icon: <IconTags size={18} stroke={1.8} />,
|
icon: <IconTags size={18} stroke={1.8} />,
|
||||||
tooltip: "Kelola kategori kegiatan desa",
|
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -75,25 +73,18 @@ function LayoutTabs({ children }: { children: React.ReactNode }) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tabs.map((tab, i) => (
|
{tabs.map((tab, i) => (
|
||||||
<Tooltip
|
<TabsTab
|
||||||
key={i}
|
key={i}
|
||||||
label={tab.tooltip}
|
value={tab.value}
|
||||||
position="bottom"
|
leftSection={tab.icon}
|
||||||
withArrow
|
style={{
|
||||||
transitionProps={{ transition: 'pop', duration: 200 }}
|
fontWeight: 600,
|
||||||
|
fontSize: "0.9rem",
|
||||||
|
transition: "all 0.2s ease",
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<TabsTab
|
{tab.label}
|
||||||
value={tab.value}
|
</TabsTab>
|
||||||
leftSection={tab.icon}
|
|
||||||
style={{
|
|
||||||
fontWeight: 600,
|
|
||||||
fontSize: "0.9rem",
|
|
||||||
transition: "all 0.2s ease",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{tab.label}
|
|
||||||
</TabsTab>
|
|
||||||
</Tooltip>
|
|
||||||
))}
|
))}
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</ScrollArea>
|
</ScrollArea>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import gotongRoyongState from '@/app/admin/(dashboard)/_state/lingkungan/gotong-royong';
|
import gotongRoyongState from '@/app/admin/(dashboard)/_state/lingkungan/gotong-royong';
|
||||||
import colors from '@/con/colors';
|
import colors from '@/con/colors';
|
||||||
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title, Tooltip } from '@mantine/core';
|
import { Box, Button, Group, Paper, Stack, Text, TextInput, Title } from '@mantine/core';
|
||||||
import { IconArrowBack } from '@tabler/icons-react';
|
import { IconArrowBack } from '@tabler/icons-react';
|
||||||
import { useParams, useRouter } from 'next/navigation';
|
import { useParams, useRouter } from 'next/navigation';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
@@ -72,11 +72,9 @@ function EditKategoriKegiatan() {
|
|||||||
return (
|
return (
|
||||||
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
<Box px={{ base: 'sm', md: 'lg' }} py="md">
|
||||||
<Group mb="md" align="center">
|
<Group mb="md" align="center">
|
||||||
<Tooltip label="Kembali ke halaman sebelumnya" withArrow>
|
<Button variant="subtle" p="xs" radius="md" onClick={() => router.back()}>
|
||||||
<Button variant="subtle" p="xs" radius="md" onClick={() => router.back()}>
|
<IconArrowBack color={colors['blue-button']} size={24} />
|
||||||
<IconArrowBack color={colors['blue-button']} size={24} />
|
</Button>
|
||||||
</Button>
|
|
||||||
</Tooltip>
|
|
||||||
<Title order={4} ml="sm" c="dark">
|
<Title order={4} ml="sm" c="dark">
|
||||||
Edit Kategori Kegiatan
|
Edit Kategori Kegiatan
|
||||||
</Title>
|
</Title>
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user