Deploy Ladill Events / deploy (push) Successful in 31s
Shared Alpine helper and Blade component with clipboard API fallback for one-click copy feedback. Co-authored-by: Cursor <cursoragent@cursor.com>
30 lines
1.2 KiB
PHP
30 lines
1.2 KiB
PHP
@props([
|
|
'text' => '',
|
|
'label' => 'Copy',
|
|
'copiedLabel' => 'Copied!',
|
|
'icon' => false,
|
|
'copiedClass' => '',
|
|
])
|
|
|
|
<button
|
|
type="button"
|
|
x-data="copyButton(@js($text))"
|
|
@click="copy()"
|
|
:title="copied ? @js($copiedLabel) : @js($icon ? 'Copy' : $label)"
|
|
:class="copied ? @js($copiedClass) : ''"
|
|
{{ $attributes->class($icon ? 'inline-flex shrink-0 items-center justify-center' : '') }}
|
|
>
|
|
@if ($icon)
|
|
<svg x-show="!copied" class="h-4 w-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/>
|
|
</svg>
|
|
<svg x-show="copied" x-cloak class="h-4 w-4 text-emerald-600" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"/>
|
|
</svg>
|
|
@elseif ($slot->isNotEmpty())
|
|
{{ $slot }}
|
|
@else
|
|
<span x-text="copied ? @js($copiedLabel) : @js($label)"></span>
|
|
@endif
|
|
</button>
|