About this set
A floating support chat for any website, shown in two forms. The help widget opens on a panel with a gradient header, a stack of team initials, a reply-time promise, a welcome message and three quick-reply chips such as Where is my order?. The labelled launcher is the closed state: a pill that reads Questions? Chat with us, a red badge for one unread message and a teaser card that previews that message. The launcher is a button with aria-expanded and aria-controls; opening the panel moves focus into the message field and removes the badge, while Esc or the close button shuts it and returns focus to the launcher. Sending, or picking a quick reply, appends your message, shows a typing indicator and then a canned reply chosen by keyword, so the demo feels live without a server. The dock is absolutely positioned inside the demo stage; switch it to position: fixed to pin it to the corner of a real page. The Bootstrap version builds the panel from .card with .btn-close, .btn chips and .form-control.
What’s included
- Launcher button with aria-expanded and an unread badge
- Esc and the close button return focus to the launcher
- Quick-reply chips and a teaser card for the closed state
- Typing indicator that holds still under reduced motion
- Canned demo replies; nothing leaves the page
Accessibility
The launcher is a real button with aria-expanded and aria-controls pointing at the panel, and its unread badge carries hidden text. Opening moves focus to the labelled textarea, Esc anywhere in the widget closes it and focus returns to the launcher. The message list is a role="log" region with aria-live="polite", the typing indicator is written as text, and the panel entrance and typing dots are switched off under prefers-reduced-motion.
Customise it
Change --hw-accent, --hw-accent-dark and --hw-in on .hw, and the right and bottom offsets of .hw to move the dock. In Tailwind edit the --color-hw-* theme colours and the inset-x-5 and bottom-5 utilities; in Bootstrap the same --hw-* variables sit on the dock.






