Skip to content

Support kit

The Support kit (@qazana/strata/support) is the helpdesk surface — where customers file tickets and agents work them. It’s standalone on base.css (the form controls and .form-field groups come from base), scoped under .support.

It stays on the generic side of the boundary: a contact form, a ticket list, and a ticket-detail conversation thread. No SLA timers, agent routing, live send, or ticketing backend — those are per-product/helpdesk concerns. Zero new behavior JS (the canned-reply picker is a native <details> dropdown).

A contact/ticket form that reuses the base form controls, with an attachment dropzone and a confirmation state:

Open “Support — contact” in a new tab ↗

A ticket-list table with status badges and priority indicators:

Open “Support — tickets” in a new tab ↗

A conversation thread of stacked message cards (customer / agent / internal note), a reply composer, and a canned-reply picker:

Open “Support — ticket detail” in a new tab ↗
ComponentClass / hookNotes
Contact form.support-formreuses base .form-field + controls
Attachment.attachdashed dropzone
Confirmation.support-senticon + .ref ticket number
Status badge.badge.open/.pending/.solved/.closedinfo/warning/primary/muted
Priority.prio.low/.normal/.high/.urgentleading dot, semantic tokens
Ticket list.ticket-listrows link to ticket
Ticket header.ticket-headtitle + meta + actions
Thread.thread > .msgstacked cards
Message variants.msg.agent · .msg.noteagent + internal note
Composer.composertextarea + toolbar
Macros.macros (<details>)canned replies; insertion app-side
<!-- support / helpdesk page -->
<link rel="stylesheet" href="@qazana/strata/support">
<script type="module" src="@qazana/strata"></script>
<body class="support">
<!-- all support components live inside .support -->
</body>