Parsewise UI library

01FOR DEVELOPERS · UI LIBRARY

The component library

A skill interface is assembled from ready-made blocks. Cards, switches, galleries and forms — right inside the chat. Every block is a data attribute: mark it up in drawer.html and the widget assembles the component itself.

01

Components
cards, selection, input, media

02

Events
on the drawer host

03

Lines of CSS
only Tailwind and data attributes

04

Observer
MutationObserver catches dynamic markup

02CATALOGUE · COMPONENTS

Components out of the box

Mark it up and the widget assembles it. Components are declared with data attributes and processed through a MutationObserver: they work in static markup and when created from JS. User events arrive on the drawer host.

data-card · data-card-horizontal

Cards

Vertical with a photo on top, or horizontal in the app-store style: a heading, text and a round or rounded icon.

data-radio-switch

Radio switch

A pill with an animated marker across N options. Disabled with the radio-switch--disabled class.

data-select-grid

Selection grid

Clickable cells in two or three columns: a label, a value and a caption. One active at a time.

data-select-list

Selection list

Rows with a heading and a description — for mutually exclusive options in a single column.

data-suggest-input

Autosuggest

A field with dropdown suggestions through the backend suggest proxy. The list sits in the flow and pushes the content down.

input-wrapper · input-field

Input and table

Ready-made input classes and a Tailwind results grid — the gap creates the visual separators.

data-emoji-rate

Emoji rating

Three animated faces — poor, fine, great. For quick feedback and reviews.

data-action

Action buttons

A link with an automatic brand icon (Telegram, WhatsApp, a call) or a callback with an icon from the Heroicons set.

data-gallery

Gallery

A grid of previews with a Fancybox lightbox. Links are direct or through the bundle assets {{asset:…}}.

data-detail-list

Detail list

A summary card: “label → value” rows with separators. For confirming a request before it is sent.

data-file-upload

File upload

A dropzone for photos and video that uploads to object storage over a presigned URL.

03LIBRARY · IN NUMBERS

Aligned across the system

The styles are isolated in the Shadow DOM. You write only Tailwind, the brand colour arrives through the skill-primary utilities, and the heights of fields and switches are already tuned to match each other.

01

skill-primary utilities
text, bg, ring, border, fill

02

Control height
input and selection are aligned

03

Asset limit
PNG, JPG, WebP, SVG, GIF

04

Files in a bundle
uploaded to storage automatically

06SANDBOX · RULES

Skills live in a sandbox

Isolation
Styles in the Shadow DOM
Tailwind only
No CSS of your own
Drawer arguments
DOM, data, parameters
API helpers
Languages, submissions, e-mail
Unsafe JS
Rejected by the validator
Outbound calls
Through the widget proxy
07FAQ · FOR DEVELOPERS

Developer questions

With a data attribute in drawer.html: <div data-radio-switch data-options="…">. The widget processes it through a MutationObserver — it works both in static markup and when created from JS.

GET STARTED

Test it on your own data

Upload your own documents and catalogue — then ask the assistant the questions people ask you. That is the only test that means anything.