import React from "react";
import { Link } from "react-router-dom";
import styled from "styled-components";
import AdminConfig from "@appsmith/pages/AdminSettings/config";
import type { Category } from "@appsmith/pages/AdminSettings/config/types";
import { adminSettingsCategoryUrl } from "RouteBuilder";
import { useParams } from "react-router";
import { createMessage, UPGRADE } from "@appsmith/constants/messages";
import AnalyticsUtil from "utils/AnalyticsUtil";
import { Icon, Text } from "design-system";
export const Wrapper = styled.div`
flex-basis: ${(props) => props.theme.sidebarWidth};
overflow-y: auto;
border-right: 1px solid var(--ads-v2-color-border);
flex-shrink: 0;
&::-webkit-scrollbar {
display: none;
}
> div:not(:first-child) {
border-top: 1px solid var(--ads-v2-color-border);
}
`;
export const HeaderContainer = styled.div`
padding: 20px 0;
margin: 0 16px;
`;
export const StyledHeader = styled(Text)`
height: 20px;
margin: 8px 16px 8px;
color: var(--ads-v2-color-fg-emphasis);
`;
export const CategoryList = styled.ul`
margin: 0;
list-style-type: none;
`;
export const CategoryItem = styled.li`
/* width: 90%; */
`;
export const StyledLink = styled(Link)<{ $active: boolean }>`
height: 38px;
padding: 8px 16px;
border-radius: var(--ads-v2-border-radius);
background-color: ${(props) =>
props.$active ? `var(--ads-v2-color-bg-muted)` : ""};
display: flex;
gap: 12px;
&& {
color: var(--ads-v2-color-fg);
}
&:hover {
text-decoration: none;
}
&:hover:not(.active) {
background-color: var(--ads-v2-color-bg-subtle);
}
`;
export const SettingName = styled(Text)<{ active?: boolean }>`
color: ${(props) =>
props.active
? "var(--ads-v2-color-fg-emphasis-plus)"
: "var(--ads-v2-color-fg)"};
font-weight: 400;
`;
export function getSettingsCategory() {
return Array.from(AdminConfig.categories);
}
export function Categories({
categories,
currentCategory,
currentSubCategory,
parentCategory,
showSubCategory,
}: {
categories?: Category[];
parentCategory?: Category;
currentCategory: string;
currentSubCategory?: string;
showSubCategory?: boolean;
}) {
return (
{categories?.map((config) => {
const active =
!!currentSubCategory && showSubCategory
? currentSubCategory == config.slug
: currentCategory == config.slug;
return (
{config?.icon && }
{config.title}
{showSubCategory && (
)}
);
})}
);
}
export default function LeftPane() {
const categories = getSettingsCategory();
const { category, selected: subCategory } = useParams() as any;
function triggerAnalytics(source: string) {
AnalyticsUtil.logEvent("ADMIN_SETTINGS_CLICK", {
source,
});
}
return (
Admin settings
Business
Access control
triggerAnalytics("AuditLogs")}
to="/settings/audit-logs"
>
Audit logs
triggerAnalytics("BusinessEdition")}
to="/settings/business-edition"
>
{createMessage(UPGRADE)}
);
}