.
├── app
│   ├── (modules)
│   │   ├── (landing)
│   │   │   └── components
│   │   │       ├── catalog-section
│   │   │       ├── hero-section
│   │   │       ├── layout
│   │   │       ├── mapset-card.tsx
│   │   │       ├── news-section
│   │   │       ├── organization-section
│   │   │       └── statistic-section.tsx
│   │   ├── admin
│   │   │   ├── components
│   │   │   │   ├── data-table.tsx
│   │   │   │   ├── footer.tsx
│   │   │   │   ├── header.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   └── sidebar.tsx
│   │   │   ├── dashboard
│   │   │   │   └── page.tsx
│   │   │   ├── layout.tsx
│   │   │   ├── page.tsx
│   │   │   ├── state
│   │   │   │   └── action-type.ts
│   │   │   └── users
│   │   │       ├── components
│   │   │       ├── create
│   │   │       ├── detail
│   │   │       ├── edit
│   │   │       ├── hooks
│   │   │       └── page.tsx
│   │   ├── auth
│   │   │   └── admin
│   │   │       └── login
│   │   └── maps
│   │       ├── components
│   │       │   ├── cesium-map.tsx
│   │       │   ├── feature-information
│   │       │   ├── layer-manager.tsx
│   │       │   ├── leaflet-map
│   │       │   ├── map-component.tsx
│   │       │   ├── map-settings.tsx
│   │       │   ├── mapset-dialog
│   │       │   └── sidebar
│   │       ├── config
│   │       │   ├── basemap-config.ts
│   │       │   └── map-config.ts
│   │       ├── factories
│   │       │   └── cesium-provider.ts
│   │       ├── hooks
│   │       │   ├── useCesiumMap.tsx
│   │       │   └── useLayerToggle.tsx
│   │       ├── page.tsx
│   │       ├── state
│   │       │   ├── active-basemap.ts
│   │       │   ├── active-layers.ts
│   │       │   ├── feature-information.ts
│   │       │   ├── leaflet-layer-instances.ts
│   │       │   ├── map-settings.ts
│   │       │   ├── map-type.ts
│   │       │   ├── map.ts
│   │       │   └── mapset-dialog.ts
│   │       ├── types
│   │       │   ├── basemap-config.ts
│   │       │   └── map-config.ts
│   │       └── utils
│   │           ├── cesium.ts
│   │           ├── colors.ts
│   │           ├── feature-information.ts
│   │           ├── theme.ts
│   │           └── wms.ts
│   ├── api
│   │   ├── auth
│   │   │   └── [...nextauth]
│   │   │       └── route.ts
│   │   └── mapsets
│   │       └── route.ts
│   ├── favicon.ico
│   ├── globals.css
│   ├── layout.tsx
│   ├── page.tsx
│   └── styles
├── auth.ts
├── bun.lock
├── components.json
├── eslint.config.mjs
├── middleware.ts
├── next-env.d.ts
├── next.config.ts
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── public
│   ├── dark-thumb.png
│   ├── file.svg
│   ├── globe.svg
│   ├── illustration-map.png
│   ├── light-thumb.png
│   ├── logo_.svg
│   ├── logo-white_.png
│   ├── logo-white.png
│   ├── logo.svg
│   ├── next.svg
│   ├── osm-thumb.png
│   ├── pattern-01.png
│   ├── satellite-thumb.png
│   ├── template-news-2.png
│   ├── template-news.png
│   ├── template-organization.png
│   ├── terrain-thumb.png
│   ├── vercel.svg
│   └── window.svg
├── README.md
├── shared
│   ├── config
│   ├── components
│   │   ├── auth
│   │   │   └── admin-route-guard.tsx
│   │   ├── client-wrapper.tsx
│   │   ├── ds
│   │   │   ├── badge.tsx
│   │   │   ├── button.tsx
│   │   │   ├── card.tsx
│   │   │   ├── input.tsx
│   │   │   └── success-dialog.tsx
│   │   ├── form-input.tsx
│   │   ├── form-organization-select.tsx
│   │   ├── form-topic-select.tsx
│   │   ├── header.tsx
│   │   ├── preview-map.tsx
│   │   ├── search-input.tsx
│   │   └── ui
│   │       ├── accordion.tsx
│   │       ├── alert-dialog.tsx
│   │       ├── avatar.tsx
│   │       ├── badge.tsx
│   │       ├── breadcrumb.tsx
│   │       ├── button.tsx
│   │       ├── card.tsx
│   │       ├── command.tsx
│   │       ├── dialog.tsx
│   │       ├── dropdown-menu.tsx
│   │       ├── form.tsx
│   │       ├── input.tsx
│   │       ├── label.tsx
│   │       ├── popover.tsx
│   │       ├── scroll-area.tsx
│   │       ├── select.tsx
│   │       ├── separator.tsx
│   │       ├── sheet.tsx
│   │       ├── sidebar.tsx
│   │       ├── skeleton.tsx
│   │       ├── slider.tsx
│   │       ├── sonner.tsx
│   │       ├── switch.tsx
│   │       ├── table.tsx
│   │       └── tooltip.tsx
│   ├── enums
│   │   └── role.ts
│   ├── hooks
│   │   ├── use-mobile.ts
│   │   ├── use-session.ts
│   │   └── use-success-dialog.ts
│   ├── providers
│   │   ├── global-dialog-provider.tsx
│   │   ├── index.tsx
│   │   └── theme-provider.tsx
│   ├── services
│   │   ├── api.ts
│   │   ├── mapset.ts
│   │   ├── organization.ts
│   │   ├── topic.ts
│   │   └── user.ts
│   ├── state
│   │   ├── dialog.ts
│   │   ├── theme.ts
│   │   └── user.ts
│   ├── types
│   │   ├── api-response.ts
│   │   ├── attribute-kugi.ts
│   │   ├── auth-user.ts
│   │   ├── auth.d.ts
│   │   ├── global.d.ts
│   │   ├── history-draft.ts
│   │   ├── mapset-source.ts
│   │   ├── mapset-type.ts
│   │   ├── mapset.ts
│   │   ├── organization.ts
│   │   ├── topic.ts
│   │   ├── user.ts
│   │   └── wilayah.ts
│   └── utils
│       ├── auth-transform.ts
│       ├── create-theme.ts
│       ├── dialog.ts
│       ├── mapsets.ts
│       ├── query-client.ts
│       └── utils.ts
├── structure.txt
└── tsconfig.json

88 directories, 325 files
