fix(ui): use native collapsible integration cards
This commit is contained in:
@@ -12,7 +12,7 @@ import {
|
|||||||
import { toast } from '@/components/ui';
|
import { toast } from '@/components/ui';
|
||||||
import { Icon } from '@/components/icon/Icon';
|
import { Icon } from '@/components/icon/Icon';
|
||||||
import { SettingsSection } from '@/components/sections/shared/SettingsSection';
|
import { SettingsSection } from '@/components/sections/shared/SettingsSection';
|
||||||
import { Collapsible, CollapsibleContent } from '@/components/ui/collapsible';
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';
|
||||||
import { useI18n } from '@/lib/i18n';
|
import { useI18n } from '@/lib/i18n';
|
||||||
import { openExternalUrl } from '@/lib/url';
|
import { openExternalUrl } from '@/lib/url';
|
||||||
import { cn } from '@/lib/utils';
|
import { cn } from '@/lib/utils';
|
||||||
@@ -323,10 +323,7 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
|||||||
data-settings-item={`integrations.third-party.${plugin.id}`}
|
data-settings-item={`integrations.third-party.${plugin.id}`}
|
||||||
className="overflow-hidden rounded-xl border border-[var(--interactive-border)] bg-[var(--surface-elevated)]"
|
className="overflow-hidden rounded-xl border border-[var(--interactive-border)] bg-[var(--surface-elevated)]"
|
||||||
>
|
>
|
||||||
<button
|
<CollapsibleTrigger
|
||||||
type="button"
|
|
||||||
aria-expanded={open}
|
|
||||||
onClick={() => setPluginOpen(plugin.id, !open)}
|
|
||||||
className="flex w-full min-w-0 items-center gap-3 px-4 py-3 text-left hover:bg-[var(--interactive-hover)]/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--interactive-focus-ring)]"
|
className="flex w-full min-w-0 items-center gap-3 px-4 py-3 text-left hover:bg-[var(--interactive-hover)]/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-[var(--interactive-focus-ring)]"
|
||||||
>
|
>
|
||||||
<div className="flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-[var(--surface-muted)]">
|
<div className="flex size-10 shrink-0 items-center justify-center rounded-[10px] bg-[var(--surface-muted)]">
|
||||||
@@ -348,10 +345,13 @@ export const ThirdPartyIntegrationsSection: React.FC<ThirdPartyIntegrationsSecti
|
|||||||
{status}
|
{status}
|
||||||
</span>
|
</span>
|
||||||
<Icon
|
<Icon
|
||||||
name={open ? 'arrow-up-s' : 'arrow-down-s'}
|
name="arrow-down-s"
|
||||||
className="size-4 shrink-0 text-muted-foreground"
|
className={cn(
|
||||||
|
'size-4 shrink-0 text-muted-foreground transition-transform duration-150 ease-out motion-reduce:transition-none',
|
||||||
|
open && 'rotate-180',
|
||||||
|
)}
|
||||||
/>
|
/>
|
||||||
</button>
|
</CollapsibleTrigger>
|
||||||
<CollapsibleContent className="border-t border-[var(--interactive-border)] px-4 py-4">
|
<CollapsibleContent className="border-t border-[var(--interactive-border)] px-4 py-4">
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
{state.projectEntries.length > 0 ? (
|
{state.projectEntries.length > 0 ? (
|
||||||
|
|||||||
@@ -39,7 +39,12 @@ const CollapsibleContent = ({
|
|||||||
...props
|
...props
|
||||||
}: React.ComponentProps<typeof BaseCollapsible.Panel>) => (
|
}: React.ComponentProps<typeof BaseCollapsible.Panel>) => (
|
||||||
<BaseCollapsible.Panel
|
<BaseCollapsible.Panel
|
||||||
className={cn("overflow-hidden data-[closed]:animate-collapsible-up data-[open]:animate-collapsible-down", className)}
|
className={cn(
|
||||||
|
"transition-opacity duration-100 ease-out",
|
||||||
|
"data-[starting-style]:opacity-0 data-[ending-style]:opacity-0",
|
||||||
|
"motion-reduce:transition-none",
|
||||||
|
className,
|
||||||
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user