import type { Component } from 'solid-js';
import { createSignal, For, Show } from 'solid-js';
import { ChevronDown, ChevronRight, AlertCircle } from 'lucide-solid';

interface IgnoredLinesListProps {
    lines: string[][];
}

const IgnoredLinesList: Component<IgnoredLinesListProps> = (props) => {
    const [isOpen, setIsOpen] = createSignal(false);

    return (
        <div class="bg-card rounded-3xl shadow-premium border border-border overflow-hidden transition-all hover:shadow-elevated">
            <button
                onClick={() => setIsOpen(!isOpen())}
                class="w-full flex items-center justify-between p-6 hover:bg-muted/30 transition-colors text-left"
            >
                <div class="flex items-center gap-4">
                    <div class="p-3 bg-muted rounded-2xl shadow-sm">
                        <AlertCircle class="w-6 h-6 text-primary" />
                    </div>
                    <div>
                        <h3 class="font-black text-lg text-foreground tracking-tight">Ignored CSV Rows ({props.lines.length})</h3>
                        <p class="text-[10px] font-bold text-muted-foreground uppercase tracking-wider mt-0.5">Lines that didn't match the extraction rules</p>
                    </div>
                </div>
                <div class="text-muted-foreground/40">
                    <Show when={isOpen()} fallback={<ChevronRight class="w-5 h-5" />}>
                        <ChevronDown class="w-5 h-5 transition-transform duration-300 rotate-180" />
                    </Show>
                </div>
            </button>

            <Show when={isOpen()}>
                <div class="border-t border-border bg-muted/20 p-6 max-h-[500px] overflow-y-auto custom-scrollbar">
                    <table class="w-full text-left border-collapse">
                        <thead>
                            <tr class="text-[10px] font-black uppercase tracking-[0.2em] text-muted-foreground/60 border-b border-border/60">
                                <th class="pb-3 px-3">Line</th>
                                <th class="pb-3 px-3">Raw Data</th>
                            </tr>
                        </thead>
                        <tbody class="text-xs text-foreground font-medium">
                            <For each={props.lines}>
                                {(row, index) => (
                                    <tr class="border-b border-border/40 last:border-0 hover:bg-card/50 transition-colors group">
                                        <td class="py-3 px-3 font-mono text-muted-foreground/40 w-16 text-[10px]">{index() + 1}</td>
                                        <td class="py-3 px-3 font-mono break-all leading-relaxed text-muted-foreground group-hover:text-foreground">
                                            {row.join(' | ')}
                                        </td>
                                    </tr>
                                )}
                            </For>
                        </tbody>
                    </table>
                    <div class="mt-6 flex items-center gap-3 justify-center px-4 py-3 bg-card/50 rounded-2xl border border-border/40 shadow-inner">
                        <AlertCircle class="w-4 h-4 text-muted-foreground/40" />
                        <p class="text-[10px] font-bold text-muted-foreground/60 uppercase tracking-wider italic">
                            These lines were skipped because they don't follow the "Item : Description (Qty)" or "Item : Description" pattern.
                        </p>
                    </div>
                </div>
            </Show>
        </div>
    );
};

export default IgnoredLinesList;
