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)} ); }