diff --git a/app/(prowler)/providers/page.tsx b/app/(prowler)/providers/page.tsx
index b999671859..a2553da2ba 100644
--- a/app/(prowler)/providers/page.tsx
+++ b/app/(prowler)/providers/page.tsx
@@ -2,7 +2,7 @@ import { Spacer } from "@nextui-org/react";
import { Suspense } from "react";
import { getProviders } from "@/actions/providers";
-import { FilterControls, filtersProviders } from "@/components/filters";
+import { FilterControls, filterProviders } from "@/components/filters";
import { AddProvider } from "@/components/providers";
import {
ColumnsProvider,
@@ -24,7 +24,7 @@ export default async function Providers({
-
+
@@ -43,7 +43,7 @@ const SSRDataTable = async ({
searchParams: SearchParamsProps;
}) => {
const page = parseInt(searchParams.page?.toString() || "1", 10);
- const sort = searchParams.sort?.toString() || "-inserted_at";
+ const sort = searchParams.sort?.toString();
// Extract all filter parameters
const filters = Object.fromEntries(
diff --git a/app/(prowler)/scan/page.tsx b/app/(prowler)/scan/page.tsx
new file mode 100644
index 0000000000..e87b094ec5
--- /dev/null
+++ b/app/(prowler)/scan/page.tsx
@@ -0,0 +1,61 @@
+import { Spacer } from "@nextui-org/react";
+import { Suspense } from "react";
+
+// import { getProviders } from "@/actions/providers";
+import { FilterControls, filterScans } from "@/components/filters";
+import {
+ // ColumnsProvider,
+ // DataTableProvider,
+ SkeletonTableProvider,
+} from "@/components/providers/table";
+import { Header } from "@/components/ui";
+import { SearchParamsProps } from "@/types";
+
+export default async function Scan({
+ searchParams,
+}: {
+ searchParams: SearchParamsProps;
+}) {
+ const searchParamsKey = JSON.stringify(searchParams || {});
+
+ return (
+ <>
+
+
+
+
+
+
+ }>
+ {/* */}
+
+ >
+ );
+}
+
+// const SSRDataTable = async ({
+// searchParams,
+// }: {
+// searchParams: SearchParamsProps;
+// }) => {
+// const page = parseInt(searchParams.page?.toString() || "1", 10);
+// const sort = searchParams.sort?.toString();
+
+// // Extract all filter parameters
+// const filters = Object.fromEntries(
+// Object.entries(searchParams).filter(([key]) => key.startsWith("filter[")),
+// );
+
+// // Extract query from filters
+// const query = (filters["filter[search]"] as string) || "";
+
+// const providersData = await getProviders({ query, page, sort, filters });
+
+// return (
+//
+// );
+// };
diff --git a/components/auth/oss/auth-form.tsx b/components/auth/oss/auth-form.tsx
index 451e043c0b..2f4e3700a7 100644
--- a/components/auth/oss/auth-form.tsx
+++ b/components/auth/oss/auth-form.tsx
@@ -116,7 +116,7 @@ export const AuthForm = ({ type }: { type: string }) => {
{/* Background Pattern */}
-
+
{/* Prowler Logo */}
diff --git a/components/filters/data-filters.ts b/components/filters/data-filters.ts
index df1e01cea0..ca01c9b509 100644
--- a/components/filters/data-filters.ts
+++ b/components/filters/data-filters.ts
@@ -1,4 +1,13 @@
-export const filtersProviders = [
+export const filterProviders = [
+ {
+ key: "connected",
+ labelCheckboxGroup: "Connection",
+ values: ["false", "true"],
+ },
+ // Add more filter categories as needed
+];
+
+export const filterScans = [
{
key: "connected",
labelCheckboxGroup: "Connection",
diff --git a/components/icons/prowler/ProwlerIcons.tsx b/components/icons/prowler/ProwlerIcons.tsx
index 425788e88b..ae0b989e6b 100644
--- a/components/icons/prowler/ProwlerIcons.tsx
+++ b/components/icons/prowler/ProwlerIcons.tsx
@@ -4,7 +4,7 @@ import { IconSvgProps } from "../../../types/index";
export const ProwlerExtended: React.FC
= ({
size,
- width = 164,
+ width = 216,
height,
...props
}) => {
diff --git a/components/providers/forms/add-form.tsx b/components/providers/forms/add-form.tsx
index 4c063c7aef..c721a709c0 100644
--- a/components/providers/forms/add-form.tsx
+++ b/components/providers/forms/add-form.tsx
@@ -67,7 +67,10 @@ export const AddForm = ({
onSubmit={form.handleSubmit(onSubmitClient)}
className="flex flex-col space-y-4"
>
-
+
= (props) => {
const {
Component,
children,
- description,
+ // description,
getBaseProps,
getWrapperProps,
getInputProps,
@@ -37,7 +37,7 @@ export const CustomRadio: React.FC = (props) => {
className={cn(
"group inline-flex flex-row-reverse items-center justify-between tap-highlight-transparent hover:opacity-70 active:opacity-50",
"max-w-full cursor-pointer gap-4 rounded-lg border-2 border-default p-4",
- "data-[selected=true]:border-primary",
+ "data-[selected=true]:border-primar w-full",
)}
>
@@ -48,11 +48,11 @@ export const CustomRadio: React.FC = (props) => {
{children && {children}}
- {description && (
+ {/* {description && (
{description}
- )}
+ )} */}
);
@@ -60,10 +60,12 @@ export const CustomRadio: React.FC = (props) => {
interface RadioGroupProviderProps {
control: Control>;
+ isInvalid: boolean;
}
export const RadioGroupProvider: React.FC = ({
control,
+ isInvalid,
}) => {
return (
= ({
control={control}
render={({ field }) => (
<>
-
-
-
-
-
-
-
- GCP
-
-
-
-
-
-
-
-
- Kubernetes
-
-
+
+
+
+
+
+
+
+
+ GCP
+
+
+
+
+
+
+
+
+ Kubernetes
+
+
+
>
diff --git a/components/ui/sidebar/index.ts b/components/ui/sidebar/index.ts
index ec61cb2f3b..04abc63cc4 100644
--- a/components/ui/sidebar/index.ts
+++ b/components/ui/sidebar/index.ts
@@ -1,5 +1,5 @@
-export * from "./Sidebar";
-export * from "./SidebarItems";
-export * from "./SidebarWrap";
-export * from "./TeamAvatar";
-export * from "./UserAvatar";
+export * from "./sidebar";
+export * from "./sidebar-items";
+export * from "./sidebar-wrap";
+export * from "./team-avatar";
+export * from "./user-avatar";
diff --git a/components/ui/sidebar/SidebarItems.tsx b/components/ui/sidebar/sidebar-items.tsx
similarity index 95%
rename from components/ui/sidebar/SidebarItems.tsx
rename to components/ui/sidebar/sidebar-items.tsx
index 497d29544a..7aa97ace94 100644
--- a/components/ui/sidebar/SidebarItems.tsx
+++ b/components/ui/sidebar/sidebar-items.tsx
@@ -1,8 +1,8 @@
import { Icon } from "@iconify/react";
import { Chip } from "@nextui-org/react";
-import { SidebarItem, SidebarItemType } from "./Sidebar";
-import { TeamAvatar } from "./TeamAvatar";
+import { SidebarItem, SidebarItemType } from "./sidebar";
+import { TeamAvatar } from "./team-avatar";
/**
* Please check the https://nextui.org/docs/guide/routing to have a seamless router integration
@@ -119,34 +119,17 @@ export const sectionItems: SidebarItem[] = [
key: "scan",
title: "Scan",
items: [
+ {
+ key: "scan",
+ href: "/scan",
+ icon: "lucide:scan-search",
+ title: "Scanners",
+ },
{
key: "findings",
href: "/findings",
title: "Findings",
icon: "ph:list-checks-duotone",
- items: [
- {
- key: "shareholders",
- href: "#",
- title: "Shareholders",
- },
- {
- key: "note_holders",
- href: "#",
- title: "Note Holders",
- },
- {
- key: "transactions_log",
- href: "#",
- title: "Transactions Log",
- },
- ],
- },
- {
- key: "tasks",
- href: "#",
- icon: "solar:checklist-minimalistic-outline",
- title: "Tasks",
},
],
},
@@ -206,6 +189,12 @@ export const sectionItemsWithTeams: SidebarItem[] = [
title: "Users",
icon: "ci:users",
},
+ {
+ key: "tasks",
+ href: "#",
+ icon: "solar:checklist-minimalistic-outline",
+ title: "Tasks",
+ },
// {
// key: "memberships",
// href: "#",
diff --git a/components/ui/sidebar/SidebarWrap.tsx b/components/ui/sidebar/sidebar-wrap.tsx
similarity index 86%
rename from components/ui/sidebar/SidebarWrap.tsx
rename to components/ui/sidebar/sidebar-wrap.tsx
index 08204b3392..52434a6e1b 100644
--- a/components/ui/sidebar/SidebarWrap.tsx
+++ b/components/ui/sidebar/sidebar-wrap.tsx
@@ -10,6 +10,7 @@ import React, { Suspense, useCallback } from "react";
import { useMediaQuery } from "usehooks-ts";
import { logOut } from "@/actions/auth";
+import { AddIcon } from "@/components/icons";
import { useUIStore } from "@/store";
import {
@@ -17,9 +18,10 @@ import {
ProwlerShort,
} from "../../icons/prowler/ProwlerIcons";
import { ThemeSwitch } from "../../ThemeSwitch";
-import Sidebar from "./Sidebar";
-import { sectionItemsWithTeams } from "./SidebarItems";
-import { UserAvatar } from "./UserAvatar";
+import { CustomButton } from "../custom";
+import Sidebar from "./sidebar";
+import { sectionItemsWithTeams } from "./sidebar-items";
+import { UserAvatar } from "./user-avatar";
export const SidebarWrap = () => {
const pathname = usePathname();
@@ -50,9 +52,12 @@ export const SidebarWrap = () => {
)}
>
{
+
+
Loading...}>
+
+
+
+
+
+
+ }
+ >
+ Launch Scan
+
+
+
-
-
-
Loading...}>
-
-
-
-
-
+