next.js/test/e2e/app-dir/interception-dynamic-segment/app/page.client.tsx
page.client.tsx95 lines2.2 KB
'use client'

import Link from 'next/link'
import { useState } from 'react'

export function LinkAccordion({ href }: { href: string }) {
  const [isOpen, setIsOpen] = useState(false)

  return (
    <div
      data-testid="link-accordion"
      data-href={href}
      style={{
        border: '1px solid #e5e7eb',
        borderRadius: '12px',
        padding: '16px',
        margin: '12px 0',
        backgroundColor: 'white',
        boxShadow:
          '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',
        transition: 'all 0.2s ease',
        cursor: 'pointer',
      }}
    >
      <div
        style={{
          display: 'flex',
          justifyContent: 'space-between',
          alignItems: 'center',
          gap: '12px',
        }}
      >
        <div
          style={{
            fontFamily: 'monospace',
            fontSize: '14px',
            color: '#374151',
            fontWeight: '500',
            flex: 1,
          }}
        >
          {href}
        </div>
        {!isOpen && (
          <button
            onClick={() => setIsOpen(true)}
            style={{
              padding: '8px 16px',
              borderRadius: '8px',
              border: 'none',
              backgroundColor: '#3b82f6',
              color: 'white',
              fontSize: '14px',
              fontWeight: '600',
              cursor: 'pointer',
              transition: 'all 0.2s ease',
              display: 'flex',
              alignItems: 'center',
              gap: '6px',
            }}
          >
            <span>▶</span>
            Open
          </button>
        )}
      </div>
      {isOpen && (
        <div
          style={{
            marginTop: '16px',
            paddingTop: '16px',
            borderTop: '1px solid #e5e7eb',
          }}
        >
          <Link
            href={href}
            style={{
              display: 'inline-block',
              padding: '10px 20px',
              backgroundColor: '#10b981',
              color: 'white',
              textDecoration: 'none',
              borderRadius: '8px',
              fontSize: '14px',
              fontWeight: '600',
            }}
          >
            Navigate to {href}
          </Link>
        </div>
      )}
    </div>
  )
}
Quest for Codev2.0.0
/
SIGN IN