feat: Implement settings dropdown and page components
Some checks failed
container-scan / Container Scan (pull_request) Failing after 1m17s
docker-build / docker (pull_request) Failing after 1m4s
tests / Tests (pull_request) Failing after 3m9s

- Added `SettingsDropdown` component for selecting settings sections with icons and descriptions.
- Created `SettingsPage` component to manage user settings, including account details, notifications, calendar availability, privacy, and appearance.
- Introduced `SettingsSwitcher` for selecting options within settings.
- Integrated command and dialog components for improved user interaction.
- Updated `UserDropdown` to include links for settings and logout.
- Refactored button styles and card footer layout for consistency.
- Added popover functionality for dropdown menus.
- Updated dependencies in `yarn.lock` for new components.
This commit is contained in:
Maximilian Liebmann 2025-06-30 23:33:36 +02:00
parent 53cc8cb2b7
commit 8ffe7850ad
25 changed files with 1471 additions and 552 deletions

View file

@ -1,19 +1,20 @@
import { Button } from '@/components/ui/button';
import { IconProp } from '@fortawesome/fontawesome-svg-core';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { LucideProps } from 'lucide-react';
import React, { ForwardRefExoticComponent, RefAttributes } from 'react';
export function IconButton({
icon,
children,
...props
}: {
icon: IconProp;
children: React.ReactNode;
icon?: ForwardRefExoticComponent<
Omit<LucideProps, 'ref'> & RefAttributes<SVGSVGElement>
>;
children?: React.ReactNode;
} & React.ComponentProps<typeof Button>) {
return (
<Button type='button' variant='secondary' {...props}>
<FontAwesomeIcon icon={icon} className='mr-2' />
{icon && React.createElement(icon, { className: 'mr-2' })}
{children}
</Button>
);