Repository navigation
feat(web): dForms rebrand of the admin; published forms keep their look - #208
Merged
Merged
Conversation
listForms now returns hasDraft, true while a form holds unpublished changes. It is computed in SQL from draft_config IS NOT NULL, so the list never reads the draft itself. GET /v1/forms documents the field. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
…ms brand Tokens are rewritten around paper, ink and Signal Green, with purple for score and amber for work that is not live yet. The icon font is replaced by a generated icons.css built from lucide-static. The forms list becomes one table with a publish state chip and the submissions and completion figures as links. The editor gets a single top bar with Build, Logic, Design and Connect as tabs, compact question rows, a flat settings panel, a narrow Design panel beside a larger preview, and Connect in two columns. No control was removed. QR codes carry the dForms mark in their centre on the Dapta brand, and the fallback wordmark on a public form no longer appends a period. Known red: 13 tests in legacy-markup.spec.tsx and og-card.spec.ts still pin the dark default canvas, pending the decision on that default. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
SubmissionFilter takes search, a case-insensitive substring matched against the form's text, contact and URL answers. The API reads it as ?search= on the submissions, export and summary routes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
…e search One header for a form's screens, a sheet-like submissions table with a Select mode, a search box on the page and in the full-screen sheet, Summary cards that preview contact answers and whose panel can delete, and Analytics with Trends above the drop-off list in Signal Green. The attribution badge reads Made with dForms. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
withNewFormBranding writes a white ground, ink text and Signal Green into the config of a form made from nothing, filling only what the caller left out. POST /v1/forms (after the brand kit) and the onboarding wizard call it; duplicating a form does not, so a copy keeps its original's look. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
An absent colour keeps its old meaning (dark ground, Program Lime), so forms published before the rebrand render unchanged: the default accent and canvas return to their old values, an unbranded public form is pinned dark again, and public-form.css owns the dark palette instead of following the app's tokens. The form's name no longer gets a trailing full stop, for every form. Remove font-mono and the JetBrains Mono face. Say dForms in invitation emails, the webhook note, the onboarding logo and the HubSpot mirror suffix; a build is Dapta's own when NEXT_PUBLIC_PRODUCT_NAME is dForms or the old Dapta Forms. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
…n inbox Home: drop the two shortcuts that repeat the rail and set the two that lead somewhere new as a band under the list. Account settings: a two-line statement header, settings as rows instead of nested cards, a workspace page with its tile, id and flat tables, a brand kit whose preview shows how a new form would look, notifications with the email preview beside the fields. The member and invitation tables no longer make the page scroll sideways on a narrow screen. The email preview gets an expand button that opens a mock of an inbox with the message drawn as the HTML email draws it, answers table included. The first-run wizard wears the dForms colours inline, since a public form now owns the dark palette it had before the rebrand. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
- Applying a brand kit that sets only a background (or only a foreground) now drops the form's stored other half, so the renderer derives readable text instead of keeping the dForms ink against a dark kit ground. Matches the brand kit preview. - Forms on a light ground get the light-palette error and hint colours (#c2261c, #586470), which clear 4.5:1 on white; the legacy dark values stay for dark and unbranded forms. - Deleting a response from the Summary panel shows an error toast when the delete fails instead of silently re-enabling the button. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Josue Hernandez <josue@daptatech.com>
This was referenced Oct 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The dForms rebrand of the admin, done screen by screen against the dForms design system and only with features the app really has. Forms that are already published keep the look they were designed on.
Screens restyled
hasDraftfield onGET /v1/forms).?search=, web page and the full-screen sheet).Existing forms do not change
A form published before this stored no colours, and an absent colour keeps its old meaning (dark ground, Program Lime). So
DEFAULT_ACCENTandDEFAULT_CANVASkeep their old values, an unbranded public form is still pinned dark, andpublic-form.cssowns that dark palette instead of following the app's new tokens. Thelegacy-markupsnapshots confirm it: the only differences in the rendered markup are the attribution text ("Made with dForms") and the full stop that used to follow a logo-less form's name.New forms are born with the dForms look
withNewFormBranding(@quill/engine) writes white, ink and Signal Green into the config of a form created from nothing (dashboard andPOST /v1/forms, and the onboarding wizard), filling only what the caller left out. Duplicating a form does not call it, so a copy keeps its original's look.Other changes
IS_DAPTA_BRANDacceptsdFormsand the oldDapta Forms, so a build is Dapta's own either way and showsdForms.sr-onlycell sat outside its scroll container).icons.cssinstead ofprimeicons.Needs attention
NEXT_PUBLIC_PRODUCT_NAMEandMAIL_FROM_NAMEare set there. The code accepts both spellings of the name, so merging first is safe.revalidatePathlaunched from the Summary page leaves the router transition hung. The cause is not found; the Summary deletes through a non-revalidating action and refreshes by hand. Verified 8 of 8 in Chromium and WebKit.Test plan
pnpm test: web 1160, api 683, db 343, engine 435, shared 68, notifications 57, destinations 120, types 59pnpm typecheck,pnpm lint(no new warnings),bash scripts/dash-check.sh origin/developqa/e2e suite (not run locally; the specs'data-testids and headings were kept)LIKEover joined answer text)DCO sign-off on every commit; changeset in
.changeset/dforms-reskin.md.🤖 Generated with Claude Code