Skip to content

feat: add App zum Doc branding and chat components#283

Open
felixevers wants to merge 8 commits into
mainfrom
claude/app-zum-doc-components-ci9x0k
Open

feat: add App zum Doc branding and chat components#283
felixevers wants to merge 8 commits into
mainfrom
claude/app-zum-doc-components-ci9x0k

Conversation

@felixevers

@felixevers felixevers commented Jul 6, 2026

Copy link
Copy Markdown
Member

Summary

Adds the App zum Doc specific components from the chat design handoff, built on hightide's existing primitives and theming (semantic colors, class-based CSS with className forwarding on every component, dark mode support).

Branding

  • AppZumDocLogo — the official App zum Doc logo as an inline SVG with configurable frontColor, backColor, size (sm / md / lg), and an animate prop: loading fills both logo parts clockwise (each part drawn as a clipped stroke, timed so the front part sweeps through the back part's opening at the center left exactly when the back part's tip arrives there), plus pulse and bounce
  • AppZumDocBadge — logo + wordmark badge mirroring HelpwaveBadge

Chat widgets (all standalone)

  • ChatMessageBubble — incoming/outgoing bubbles with asymmetric radii, inline timestamp, and optional read receipt row
  • ChatMessageCard — structured message card (appointment proposal, prescription request, referral) with icon tile, title, subtitle, status badge, body, and action footer
  • ChatAttachmentCard — file icon, filename, metadata; download button rendered only when onDownload is set
  • ChatComposer — controlled/uncontrolled input with enter-to-send and round send button; camera and attachment buttons rendered only when onCamera / onAttachment are set
  • ChatQuickReplyChip — outlined pill button with active state
  • ChatSystemLine — centered confirmation line with icon
  • ChatDateDivider — centered date pill
  • ChatConversationRowAvatarWithStatus presence, timestamp, preview, sent indicator, unread count pill, selected/unread states
  • ChatConversationList — optional title, optional create button (onCreate), toggleable built-in SearchBar (hasSearch, onSearch), and header/footer slots around a scrollable row area
  • ChatThreadHeader — avatar presence, title, subtitle; back/call/add-contact buttons rendered only when onBack / onCall / onAddContact are set, plus leading/trailing slots

ChatLayout

  • ChatLayout — two-pane layout (conversation list + open thread) designed to be nested into AppPage; no default border or rounding (style via className); listPosition option (left/right); responsive: single pane below the tablet breakpoint driven by isConversationOpen, fixed-width sidebar at tablet and desktop widths
  • ChatThread — thread column with header and footer slots around a scrollable ChatMessageList (with optional auto scroll)

Supporting changes

  • TimeDisplay gains a time mode rendering only the localized time, used for chat timestamps
  • Merged current main (0.14.4); version bumped to 0.15.0

Stories & tests

  • Stories for every new component under Branding and Chat, including a fully interactive ChatLayout composition (conversation switching, sending messages, mobile back navigation, list position control) and logo loading-animation stories
  • Unit tests covering all chat components and the App zum Doc branding components (rendering, prop handling, optional buttons, controlled/uncontrolled composer, callbacks)

Verification

  • npm run build, npm run lint (no new warnings), and npm run test (198 passing) are green
  • Storybook builds successfully; stories were rendered headless and visually checked at desktop and mobile widths, including left/right list positions and paused animation frames verifying the clockwise fill and the center-left meeting point

🤖 Generated with Claude Code

https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s

Add AppZumDocLogo and AppZumDocBadge branding components alongside a
standalone chat widget set: ChatLayout, ChatThread, ChatConversationList,
ChatConversationRow, ChatThreadHeader, ChatMessageList, ChatMessageBubble,
ChatMessageCard, ChatAttachmentCard, ChatComposer, ChatQuickReplyChip,
ChatSystemLine and ChatDateDivider, with stories for each.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 6, 2026

Copy link
Copy Markdown

Deploying hightide with  Cloudflare Pages  Cloudflare Pages

Latest commit: 72cb89d
Status: ✅  Deploy successful!
Preview URL: https://a4eabf74.hightide-7id.pages.dev
Branch Preview URL: https://claude-app-zum-doc-component.hightide-7id.pages.dev

View logs

claude added 3 commits July 6, 2026 12:34
Style chat components via class names with className forwarding, drop the
default border and rounding on ChatLayout, and render action buttons only
when their handler is provided (onBack/onCall/onAddContact on
ChatThreadHeader, onCamera/onAttachment on ChatComposer, onCreate and the
toggleable built-in SearchBar on ChatConversationList). ChatLayout gains a
listPosition option and tablet/desktop responsive sidebar widths.
AppZumDocLogo gains a loading animation that fills both logo parts
clockwise. TimeDisplay gains a time-only mode used for chat timestamps.
Add unit tests for the chat and App zum Doc branding components.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Keep version 0.15.0 and stack the 0.15.0 changelog entry on top of the
0.14.3/0.14.4 entries from main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Remove the stray dot at the hidden front stroke's path end by widening the
dash gap and holding the offset past the dash boundary. Switch both fills
to ease-in and retime the front window (33%-73%) so the front part sweeps
through the teal opening at the center left exactly when the back part's
tip arrives there. Restore the -webkit- prefixed wave keyframes from main
alongside prefixed azd fill keyframes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
@felixevers felixevers requested a review from DasProffi July 6, 2026 13:34
Comment thread src/style/utitlity/animation.css Outdated
claude added 4 commits July 6, 2026 15:29
Autoprefixer generates the -webkit- prefixed keyframes and animation
declarations in the published CSS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Keep version 0.15.0 and import chat.css alongside the new date picker
theme files.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Autoprefixer generates all -webkit- keyframes and animation declarations
in the published CSS, so the source keyframes stay plain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Drop the slow and fast loading-animation story variants for the helpwave
and App zum Doc logos.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AqYGuFVGFH73aWaiCkuj6s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants