License Key Required
No license key entered.
Enter or update your key with php artisan news:license <key>,
or purchase one at scriptgain.com.
Expunge Button
components.records.expunge-button
Compiled PHP
What Blade turns your template into. This is what the syntax check parses.
Loading…
Available Variables And Components
A guide to what this template can use, derived from the shipped source. Click any item to insert it at your cursor. It is a helpful reference, not a runtime guarantee.
Always Available
- Validation error bag. Always present. Pairs with @error('field').
In This Template
- Action.
- Dispatch.
- El.
- Name.
- Reference.
- Trigger.
Drop any of these in. Click to insert the opening tag at your cursor.
General
Admin Panel
Layouts
Records
Site (Public)
Common Blade
- Print a value, safely escaped. The default choice.
- Print raw HTML. Only for content you trust.
- Show something conditionally.
- Loop over a collection.
- Loop, with a fallback when the collection is empty.
- Show a validation message for a field.
- A small block of PHP. Never on line 1. Keep logic out of templates.
- A comment that never reaches the browser.
Civic Helpers
- Build a URL to a named route, e.g. a department page.
- Link to a single news post.
- Turn a stored upload path into a public URL.
- A cache-busted URL for a bundled asset.
- Read a config value, e.g. the site width class.
- Build an absolute URL to a path.
No History Yet
Every save, revert, and reset of this template is recorded here, with a one-click way back to any of them.
The Template That Shipped With The Product
Read only. This is what Reset To Default puts back.
@props(['name', 'action', 'reference' => null, 'trigger' => 'icon'])
{{-- Expungement, deliberately NOT the delete button.
Delete means "this was entered wrong". Expunge means "a court ordered this
destroyed", so the modal asks who ordered it before it will proceed, and
the confirmation text spells out that this is permanent and that a
compliance entry is written. Tooltip is a fixed-position node teleported
to <body>, never a CSS pseudo-element. --}}
<span class="inline-flex" x-data="{ tip: false, tx: 0, ty: 0 }"
@mouseenter="const r = $el.getBoundingClientRect(); tx = r.left + r.width / 2; ty = r.top - 8; tip = true"
@mouseleave="tip = false">
@if ($trigger === 'button')
<x-button type="button" variant="secondary" icon="scale"
x-on:click="$dispatch('open-modal', '{{ $name }}')">Expunge This Record</x-button>
@else
<button type="button" @click="$dispatch('open-modal', '{{ $name }}')"
aria-label="Expunge Under A Court Order"
class="inline-flex h-9 w-9 items-center justify-center rounded-lg bg-white text-amber-600 ring-1 ring-inset ring-amber-200 transition hover:bg-amber-50 hover:ring-amber-300">
<x-icon name="scale" class="w-4 h-4" aria-hidden="true" />
</button>
@endif
<template x-teleport="body">
<div x-show="tip" x-cloak :style="`left:${tx}px;top:${ty}px`"
class="fixed -translate-x-1/2 -translate-y-full pointer-events-none z-[100] whitespace-nowrap rounded-md bg-slate-900 px-2 py-1 text-xs font-medium text-white shadow-lg">
Expunge Under A Court Order
</div>
</template>
</span>
<x-modal :name="$name" title="Carry Out An Expungement Order?" tone="warn" icon="scale" maxWidth="max-w-lg"
:subtitle="$reference ? 'Record ' . $reference : null">
<form method="POST" action="{{ $action }}" id="expunge-{{ $name }}" class="space-y-4">
@csrf
@method('DELETE')
<p>
This permanently destroys the record, its charges, and its booking photograph.
It is not an unpublish and it cannot be undone. A compliance entry recording
that the order was carried out, by whom, and on what date is written to the
Expungement Log and the audit log. That entry does not keep the subject's name.
</p>
<x-field label="Ordered By" :for="'ordered-by-' . $name" required
hint="The court or authority that issued the sealing or expungement order.">
<x-input :id="'ordered-by-' . $name" name="ordered_by" required
placeholder="Yavapai County Superior Court" />
</x-field>
<x-field label="Order Reference" :for="'order-ref-' . $name"
hint="Docket or order number, if the order carries one.">
<x-input :id="'order-ref-' . $name" name="order_reference" placeholder="CR-2026-000000" />
</x-field>
<x-field label="Notes" for="order-reason-{{ $name }}"
hint="Optional. Kept in the compliance log.">
<textarea id="order-reason-{{ $name }}" name="reason" rows="3"
class="block w-full rounded-lg border-0 py-2 px-3 text-sm text-slate-900 ring-1 ring-inset ring-slate-300 focus:ring-2 focus:ring-brand-600"></textarea>
</x-field>
</form>
<x-slot:footer>
<x-button variant="secondary" size="sm" x-on:click="$dispatch('close-modal', '{{ $name }}')">Cancel</x-button>
<x-button variant="danger" size="sm" icon="scale" type="submit" form="expunge-{{ $name }}">Expunge Permanently</x-button>
</x-slot:footer>
</x-modal>
Blade In One Screen
The directives you will use most.
- Print a value, escaped. Safe by default.
- Print raw HTML. Only for content you trust.
- Show something conditionally.
- Loop over a collection.
- Use a shared component. Every component in Shared Components is available.
- A comment that never reaches the browser.
{{ $variable }}
{!! $html !!}
@if / @else / @endif
@foreach / @endforeach
<x-card>
{{-- comment --}}
House Rules
Follow these and your edits will survive updates.
-
Never start line 1 with
@php. Blade mis-parses it and the page fails. The editor refuses to save it. - Keep logic out of templates. If you need a calculation, it belongs in a composer or component class, not here.
- The shipped file is never modified. Reset To Default always gets you back.
- Every save is versioned. You can revert to any earlier version in one click.
- Press Tab inside the editor to indent rather than jump to the next field.