@thewhatmatters/wmds 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/CONSUMING.md +1 -1
- package/dist/colors.css +3 -0
- package/dist/components/molecules/IntakeForm/IntakeForm.d.ts +14 -2
- package/dist/components/molecules/IntakeForm/IntakeForm.d.ts.map +1 -1
- package/dist/components/molecules/IntakeForm/IntakeForm.js +25 -25
- package/dist/components/organisms/ChatDock/ChatDock.d.ts +25 -10
- package/dist/components/organisms/ChatDock/ChatDock.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/ChatDock.js +423 -428
- package/dist/components/organisms/ChatDock/ChatDockGate.d.ts +12 -10
- package/dist/components/organisms/ChatDock/ChatDockGate.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/ChatDockGate.js +130 -153
- package/dist/components/organisms/ChatDock/chatDockGateContext.d.ts +7 -6
- package/dist/components/organisms/ChatDock/chatDockGateContext.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts +19 -11
- package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/chatDockGateStyles.js +2 -3
- package/dist/components/organisms/ChatDock/chatDockStyles.d.ts +6 -12
- package/dist/components/organisms/ChatDock/chatDockStyles.d.ts.map +1 -1
- package/dist/components/organisms/ChatDock/chatDockStyles.js +6 -9
- package/dist/components/organisms/Dialog/Dialog.js +34 -34
- package/dist/components/organisms/Sheet/Sheet.js +38 -38
- package/dist/lib/dialogOverlay.d.ts +0 -5
- package/dist/lib/dialogOverlay.d.ts.map +1 -1
- package/dist/lib/dialogOverlay.js +1 -12
- package/dist/lib/shadows.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme.css +1 -0
- package/docs/component-contracts.md +2 -2
- package/docs/components.md +3 -3
- package/docs/exports.json +3 -2
- package/docs/patterns/components-accordion--flush.tsx +1 -1
- package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
- package/docs/patterns/components-badge--outline-tags.tsx +1 -1
- package/docs/patterns/components-badge--with-avatar.tsx +1 -1
- package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
- package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
- package/docs/patterns/components-button-button--copy-button.tsx +1 -1
- package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
- package/docs/patterns/components-button-button--external-link.tsx +1 -1
- package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
- package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
- package/docs/patterns/components-button-button--link-render.tsx +1 -1
- package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
- package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
- package/docs/patterns/components-button-button--primary-action.tsx +1 -1
- package/docs/patterns/components-button-button--row-hug.tsx +1 -1
- package/docs/patterns/components-button-button--row-layout.tsx +1 -1
- package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
- package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
- package/docs/patterns/components-button-button--with-count.tsx +1 -1
- package/docs/patterns/components-button-button--with-icon.tsx +1 -1
- package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
- package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
- package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
- package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
- package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
- package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
- package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
- package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
- package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
- package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
- package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
- package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +3 -2
- package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +4 -3
- package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
- package/docs/patterns/components-descriptionlist--details.tsx +1 -1
- package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
- package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
- package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
- package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
- package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
- package/docs/patterns/components-field--horizontal-input.tsx +1 -1
- package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
- package/docs/patterns/components-field--multi-control.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
- package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-indexlist--post-index.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--short-form-pattern.tsx +12 -0
- package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
- package/docs/patterns/components-kbd--command-row.tsx +1 -1
- package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
- package/docs/patterns/components-kbd--shortcut.tsx +1 -1
- package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
- package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
- package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
- package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
- package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
- package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
- package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
- package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
- package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
- package/docs/patterns/components-prose--article-body.tsx +1 -1
- package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
- package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
- package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
- package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
- package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
- package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
- package/docs/patterns/components-sitenav--compact.tsx +1 -1
- package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
- package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
- package/docs/patterns/components-stat--insights-row.tsx +1 -1
- package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
- package/docs/patterns/components-switch--default.tsx +1 -1
- package/docs/patterns/components-switch--settings-row.tsx +1 -1
- package/docs/patterns/components-tab--settings-pages.tsx +1 -1
- package/docs/patterns/components-taskrows--action-details.tsx +1 -1
- package/docs/patterns/components-taskrows--capsules.tsx +1 -1
- package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
- package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
- package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
- package/docs/patterns/components-taskrows--status-list.tsx +1 -1
- package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
- package/docs/patterns/components-textlink--external-destination.tsx +1 -1
- package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
- package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
- package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
- package/docs/patterns/components-textsequence--default.tsx +1 -1
- package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
- package/docs/patterns/components-textsequence--shapes.tsx +1 -1
- package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
- package/docs/patterns/components-tooltip--controlled.tsx +1 -1
- package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
- package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
- package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
- package/docs/patterns/components-tooltip--placement.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
- package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-index.tsx +1 -1
- package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
- package/docs/patterns/guides-post-page--post-page.tsx +1 -1
- package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
- package/docs/patterns/index.json +9 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,45 @@ Every release of `@thewhatmatters/wmds` is listed here, newest first.
|
|
|
7
7
|
- **Pasted patterns:** when a release changes a **Pattern — …** story's Show code, it is named under Consumer actions so apps re-copy it.
|
|
8
8
|
- **How to add an entry** (contributors): add your change to the top entry. If that version is already on npm (`npm view @thewhatmatters/wmds versions`), start a new entry above it and bump `version` in `package.json` to match. `npm run check:changelog` enforces the format.
|
|
9
9
|
|
|
10
|
+
## 0.4.5
|
|
11
|
+
|
|
12
|
+
**The Start a project form is shorter and set into the conversation.** **IntakeForm** can leave out its optional fields, **Pattern — start a project gate** uses the short form, and **ChatDock.Gate** reads as embedded in the chat. See the amendments to **ADR-0038** and **ADR-0039**.
|
|
13
|
+
|
|
14
|
+
- **IntakeForm** `company` and `link` (new, both default `true`) — `false` leaves the field out; the form closes up with no gap. A left-out field keeps its value in `IntakeAboutValues` (empty), so `isIntakeAboutValid` and the app's submit code don't change. New **Components/IntakeForm → Pattern — short form**.
|
|
15
|
+
- **Components/ChatDock → Pattern — start a project gate** — step 3 is the short form: name, email, and project details (`company={false}` `link={false}`), two rows shorter. Drop those two props to ask for a company and a link again.
|
|
16
|
+
- **ChatDock.Gate** — set into the conversation as a well: a hairline border at the card body radius, the page floor inside, and an inset shade under its top edge. Before, it was flat under a hairline. At 1280×900, step 1 still shows all seven services with the reply above it.
|
|
17
|
+
- **`--shadow-inset-well`** (new token, `shadow-inset-well`) — a well set into a surface: an inset shade under its top edge (light and dark values). **Foundations → Shadows** lists it.
|
|
18
|
+
|
|
19
|
+
### Consumer actions
|
|
20
|
+
|
|
21
|
+
1. **WhatMatters site: re-copy Components/ChatDock → Pattern — start a project gate** (`node_modules/@thewhatmatters/wmds/docs/patterns/components-chatdock--pattern-start-project-gate.tsx`) over `components/start-project-gate.tsx` and re-apply only your services, budgets, step copy, and calendar. The change is step 3: `<IntakeForm values={about} onChange={setAbout} company={false} link={false} />`. If you'd rather not re-copy, add those two props by hand. Your `onSubmit` and its server code need no change: `company` and `url` arrive empty.
|
|
22
|
+
2. **The gate's new look: nothing to do.** It comes with the upgrade.
|
|
23
|
+
3. Other apps: none. `company`, `link`, and `shadow-inset-well` are new and optional.
|
|
24
|
+
|
|
25
|
+
## 0.4.4
|
|
26
|
+
|
|
27
|
+
**ChatDock: the Start a project form sits in the conversation.** Having seen 0.4.3 live, the form goes back inside the chat window instead of replacing it — as a component in the conversation, without the 0.4.2 problems (no card inside a card, one header and one close, no gap above the form, no cap that clips the step). See the second 2026-10-05 amendment to **ADR-0039**.
|
|
28
|
+
|
|
29
|
+
- **ChatDock `gate`** — the form is the last item in the conversation, under the latest message, where a reply would go. The window keeps its header and its close. The composer stays in place but is off, with the placeholder "Finish or cancel the form to keep chatting" (new label `gatePlaceholder`); suggestion rows, follow-ups, and the rows under replies (Copy, thumbs, score) step aside until the form goes. The disclaimer stays.
|
|
30
|
+
- **The window stays non-modal.** No scrim; the page behind stays usable, and focus is not held in the window.
|
|
31
|
+
- **The step is never clipped.** The form never scrolls on its own. From `md` the window grows to fit the conversation and the form — up to the viewport less 7rem — and eases back after; at 1280×900, step 1 shows all seven services with the reply above it. Past that the conversation scrolls, and each step is brought into view: the whole form when it fits, else its top.
|
|
32
|
+
- **`gateSubtitle`** (new) — the window's subtitle while a gate is up, for example "Start a project". Without it the subtitle is hidden while the gate is up.
|
|
33
|
+
- **ChatDock.Gate** — flat on the window surface under a hairline, and as wide as the conversation's turns. Its header is the step's title (now an `h3`), subtitle, previous, "2 of 4", and next; it has **no close of its own** — the window's close and Escape fold the window and keep the form, and Cancel leaves it. `pending` and `error` are unchanged. `labels.close` is unused and deprecated.
|
|
34
|
+
- **Unchanged from 0.4.3:** closing the window keeps the form and its answers, and reopening brings it back at the same step; `onSubmit` returns a promise, with "Sending…", the error, and Try again; the Toaster and reduced-motion hydration fixes, the post page and filtered index options, and the `wmds-check` changes.
|
|
35
|
+
- **Components/ChatDock → Pattern — chat dock** passes `gateSubtitle="Start a project"`. **Pattern — start a project gate**: only its `close` description changed. New stories: **Start a project — after a long conversation** at 1280 and 390; the step stories now show the reply above the form.
|
|
36
|
+
- **Fix:** the conversation stays at its end while the window changes size, so the confirmation a finished form leaves is in view.
|
|
37
|
+
|
|
38
|
+
### Consumer actions
|
|
39
|
+
|
|
40
|
+
1. **WhatMatters site: re-copy Components/ChatDock → Pattern — chat dock** (`node_modules/@thewhatmatters/wmds/docs/patterns/components-chatdock--pattern-chat-dock.tsx`) over your ask component, and re-apply only your content, data, and handlers. It adds `gateSubtitle="Start a project"` to **ChatDock**. If you'd rather not re-copy, add that one prop by hand.
|
|
41
|
+
2. **WhatMatters site: re-copy Components/ChatDock → Pattern — start a project gate** (`node_modules/@thewhatmatters/wmds/docs/patterns/components-chatdock--pattern-start-project-gate.tsx`) over `components/start-project-gate.tsx` and re-apply only your services, budgets, step copy, and calendar. Only a comment changed, so `npx wmds-check` reports nothing either way; re-copy to keep the header at 0.4.4.
|
|
42
|
+
3. **The form in the conversation: nothing else to do.** It comes with the upgrade, and your `onSubmit`, `renderCalendar`, and the 0.4.3 wiring stay as they are. Check your tests:
|
|
43
|
+
- The page is no longer blocked while the form is up: a test that closed the window before clicking the page no longer needs to.
|
|
44
|
+
- The form has no close: a test that pressed the gate's close should press the window's (**Close chat**) or Escape — both still keep the form — or **Cancel** to leave it.
|
|
45
|
+
- The composer is disabled while the form is up, not hidden: a test that expected no textbox should expect a disabled one.
|
|
46
|
+
- The step's title is an `h3`.
|
|
47
|
+
4. Other apps: step 3 only, if they render a ChatDock `gate`. `gateSubtitle` is optional.
|
|
48
|
+
|
|
10
49
|
## 0.4.3
|
|
11
50
|
|
|
12
51
|
**ChatDock: the gate takes over the window.** Start a project no longer sits as a card inside the chat. While a `gate` is up the window is the form: one header, the step, and the footer on the window's bottom edge, and the window is modal. Also: two hydration fixes, a promise-based send for the gate pattern, options for the post page and filtered index patterns, and fewer false positives in `wmds-check`. See the amendments to **ADR-0039**, **ADR-0040**, and **ADR-0041**.
|
package/CONSUMING.md
CHANGED
|
@@ -265,7 +265,7 @@ import {
|
|
|
265
265
|
| `Input` | `label`, `description`, `status`, `message`, `loading`, `endBadge`, `icon`, `size` | Components/Input — pill shell; Required via `endBadge={<Badge>…</Badge>}` |
|
|
266
266
|
| `Search` | `size`, `placeholder`, `onSubmit` | Components/Search — inline input + button row |
|
|
267
267
|
| `PromptBar` | `value`, `onValueChange`, `onSend`, `placeholder` (default Ask anything…), `start`, `end` | Components/PromptBar — **Pattern — prompt bar**. Wide pill, inline field (one line empty, up to 3 lines, then scroll), inset **IconButton** send. Muted until there is text, then `--color-brand` (`#011272`). Enter sends. `start` takes the brand mark; `end` takes extra inset controls. Voice and attachments are not part of this version. |
|
|
268
|
-
| `ChatDock` | `title`, `subtitle`, `mark`, `greeting`, `messages` (replies may carry `copyText`, `meta`, `feedback`), `thinking`, `suggestions`, `followUps`, `followUpsPlacement`, `onSend`, `onSuggestionSelect`, `onMessageFeedback`, `gate` (**ChatDock.Gate**), `disclaimer` | Components/ChatDock — **Pattern — chat dock**. The site assistant: a pinned **PromptBar** with suggested-question pills on hover that opens into a non-modal chat window (full screen on phones). The app owns the conversation and the request, and passes `followUps` for the latest reply when it has them (shown under the reply by default). Finished replies get Copy, thumbs, and a score row from `copyText`, `onMessageFeedback` with `feedback`, and `meta`. Start a project runs as a `gate`
|
|
268
|
+
| `ChatDock` | `title`, `subtitle`, `mark`, `greeting`, `messages` (replies may carry `copyText`, `meta`, `feedback`), `thinking`, `suggestions`, `followUps`, `followUpsPlacement`, `onSend`, `onSuggestionSelect`, `onMessageFeedback`, `gate` (**ChatDock.Gate**), `gateSubtitle`, `disclaimer` | Components/ChatDock — **Pattern — chat dock**. The site assistant: a pinned **PromptBar** with suggested-question pills on hover that opens into a non-modal chat window (full screen on phones). The app owns the conversation and the request, and passes `followUps` for the latest reply when it has them (shown under the reply by default). Finished replies get Copy, thumbs, and a score row from `copyText`, `onMessageFeedback` with `feedback`, and `meta`. Start a project runs as a `gate` in the conversation, under the latest message, with the composer off until it finishes — **Pattern — start a project gate**. Replaces the separate ask page. |
|
|
269
269
|
| `Card` | `variant`, `shape`, `padding` | Components/Card/Card — `Card.Header` (`start` | `end`), **`Card.Body` slot** (no default fill), `Card.Footer` |
|
|
270
270
|
| `Accordion` | `variant`, `flush` (plain), `Accordion.Item` `leading` / `label` / `trailing` / `open` | Components/Accordion — FAQ, settings sections; **Pattern — flush** for filter groups. Closed panels leave the tab order |
|
|
271
271
|
| `Breadcrumb` | `items` (`{ label, href }`, current page last), `maxItems`, `separator` (`chevron` \| `slash`), `variant` (`sans` \| `mono`), `renderLink`, `labels` | Components/Breadcrumb — **Pattern — path**, **long path**, **router links**, **editorial** |
|
package/dist/colors.css
CHANGED
|
@@ -147,6 +147,8 @@
|
|
|
147
147
|
0 16px 32px -12px rgb(26 26 24 / 10%);
|
|
148
148
|
--shadow-drop-sm: 0 2px 4px rgb(35 30 24 / 3%);
|
|
149
149
|
--shadow-drop-lg: 0 2px 4px rgb(35 30 24 / 4%), 0 12px 40px -12px rgb(35 30 24 / 16%);
|
|
150
|
+
/* A well set into a surface — shade under its top edge, so it reads as recessed, not raised. */
|
|
151
|
+
--shadow-inset-well: inset 0 1px 3px rgb(26 26 24 / 7%);
|
|
150
152
|
|
|
151
153
|
/* Above Dialog / Sheet / Panel (100) and Toast (70). Theme-independent. ADR-0031. */
|
|
152
154
|
--z-confetti: 110;
|
|
@@ -251,6 +253,7 @@
|
|
|
251
253
|
0 16px 32px -12px rgb(0 0 0 / 28%);
|
|
252
254
|
--shadow-drop-sm: 0 2px 4px rgb(0 0 0 / 18%);
|
|
253
255
|
--shadow-drop-lg: 0 4px 8px rgb(0 0 0 / 20%), 0 16px 48px -12px rgb(0 0 0 / 36%);
|
|
256
|
+
--shadow-inset-well: inset 0 1px 3px rgb(0 0 0 / 32%);
|
|
254
257
|
}
|
|
255
258
|
|
|
256
259
|
/**
|
|
@@ -15,6 +15,17 @@ export interface IntakeFormProps {
|
|
|
15
15
|
onChange: (values: IntakeAboutValues) => void;
|
|
16
16
|
/** Character ceiling for project details. Default 400. */
|
|
17
17
|
detailsMax?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Shows the optional Company field. Default `true`. Left out, the form closes up and
|
|
20
|
+
* `values.company` keeps its value (empty), so `isIntakeAboutValid` and the app's submit code are
|
|
21
|
+
* unchanged.
|
|
22
|
+
*/
|
|
23
|
+
company?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Shows the optional Link field. Default `true`. Left out, the form closes up and `values.url`
|
|
26
|
+
* keeps its value (empty, which is valid).
|
|
27
|
+
*/
|
|
28
|
+
link?: boolean;
|
|
18
29
|
className?: IntakeFormLayoutClassName;
|
|
19
30
|
}
|
|
20
31
|
/** Empty link is fine. A filled value must be an http(s) URL. */
|
|
@@ -24,7 +35,8 @@ export declare function isIntakeAboutValid(values: IntakeAboutValues, detailsMax
|
|
|
24
35
|
/**
|
|
25
36
|
* About-you step — **Field** rows for name, email, company, link, and project details.
|
|
26
37
|
* Required fields show **Input** / **TextArea** `status` + `message` on blur when invalid.
|
|
27
|
-
* Company and link stay optional
|
|
38
|
+
* Company and link stay optional; `company={false}` and `link={false}` leave them out (the short
|
|
39
|
+
* form: name, email, details). The details description is the character counter.
|
|
28
40
|
*/
|
|
29
|
-
export declare function IntakeForm({ values, onChange, detailsMax, className, }: IntakeFormProps): import("react").JSX.Element;
|
|
41
|
+
export declare function IntakeForm({ values, onChange, detailsMax, company, link, className, }: IntakeFormProps): import("react").JSX.Element;
|
|
30
42
|
//# sourceMappingURL=IntakeForm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntakeForm.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/IntakeForm/IntakeForm.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAM9B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAMD,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAW1E;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,MAAyB,GACpC,OAAO,CAQT;AA8BD
|
|
1
|
+
{"version":3,"file":"IntakeForm.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/IntakeForm/IntakeForm.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAM9B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAMD,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAW1E;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,UAAU,GAAE,MAAyB,GACpC,OAAO,CAQT;AA8BD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,UAA6B,EAC7B,OAAc,EACd,IAAW,EACX,SAAS,GACV,EAAE,eAAe,+BAwFjB"}
|
|
@@ -34,20 +34,20 @@ function p(e, t, n) {
|
|
|
34
34
|
if (t.details.trim().length === 0) return "Tell us a bit about the project.";
|
|
35
35
|
if (t.details.length > n) return `Keep project details to ${n} characters.`;
|
|
36
36
|
}
|
|
37
|
-
function m({ values: i, onChange: l, detailsMax: u = 400,
|
|
38
|
-
let [
|
|
39
|
-
function
|
|
40
|
-
|
|
37
|
+
function m({ values: i, onChange: l, detailsMax: u = 400, company: d = !0, link: f = !0, className: m }) {
|
|
38
|
+
let [h, g] = o({});
|
|
39
|
+
function _(e) {
|
|
40
|
+
g((t) => t[e] ? t : {
|
|
41
41
|
...t,
|
|
42
42
|
[e]: !0
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
function
|
|
46
|
-
if (
|
|
45
|
+
function v(e) {
|
|
46
|
+
if (h[e]) return p(e, i, u);
|
|
47
47
|
}
|
|
48
|
-
let
|
|
48
|
+
let y = v("name"), b = v("email"), x = v("url"), S = v("details");
|
|
49
49
|
return /* @__PURE__ */ c("div", {
|
|
50
|
-
className: e(a,
|
|
50
|
+
className: e(a, m),
|
|
51
51
|
children: [
|
|
52
52
|
/* @__PURE__ */ s(r, {
|
|
53
53
|
label: "Name",
|
|
@@ -55,9 +55,9 @@ function m({ values: i, onChange: l, detailsMax: u = 400, className: d }) {
|
|
|
55
55
|
"aria-label": "Name",
|
|
56
56
|
autoComplete: "name",
|
|
57
57
|
value: i.name,
|
|
58
|
-
status:
|
|
59
|
-
message:
|
|
60
|
-
onBlur: () =>
|
|
58
|
+
status: y == null ? void 0 : "error",
|
|
59
|
+
message: y,
|
|
60
|
+
onBlur: () => _("name"),
|
|
61
61
|
onChange: (e) => l({
|
|
62
62
|
...i,
|
|
63
63
|
name: e.target.value
|
|
@@ -71,16 +71,16 @@ function m({ values: i, onChange: l, detailsMax: u = 400, className: d }) {
|
|
|
71
71
|
type: "email",
|
|
72
72
|
autoComplete: "email",
|
|
73
73
|
value: i.email,
|
|
74
|
-
status:
|
|
75
|
-
message:
|
|
76
|
-
onBlur: () =>
|
|
74
|
+
status: b == null ? void 0 : "error",
|
|
75
|
+
message: b,
|
|
76
|
+
onBlur: () => _("email"),
|
|
77
77
|
onChange: (e) => l({
|
|
78
78
|
...i,
|
|
79
79
|
email: e.target.value
|
|
80
80
|
})
|
|
81
81
|
})
|
|
82
82
|
}),
|
|
83
|
-
/* @__PURE__ */ s(r, {
|
|
83
|
+
d ? /* @__PURE__ */ s(r, {
|
|
84
84
|
label: "Company",
|
|
85
85
|
description: "Optional",
|
|
86
86
|
children: /* @__PURE__ */ s(t, {
|
|
@@ -92,8 +92,8 @@ function m({ values: i, onChange: l, detailsMax: u = 400, className: d }) {
|
|
|
92
92
|
company: e.target.value
|
|
93
93
|
})
|
|
94
94
|
})
|
|
95
|
-
}),
|
|
96
|
-
/* @__PURE__ */ s(r, {
|
|
95
|
+
}) : null,
|
|
96
|
+
f ? /* @__PURE__ */ s(r, {
|
|
97
97
|
label: "Link",
|
|
98
98
|
description: "Optional",
|
|
99
99
|
children: /* @__PURE__ */ s(t, {
|
|
@@ -103,27 +103,27 @@ function m({ values: i, onChange: l, detailsMax: u = 400, className: d }) {
|
|
|
103
103
|
autoComplete: "url",
|
|
104
104
|
placeholder: "https://",
|
|
105
105
|
value: i.url,
|
|
106
|
-
status:
|
|
107
|
-
message:
|
|
108
|
-
onBlur: () =>
|
|
106
|
+
status: x == null ? void 0 : "error",
|
|
107
|
+
message: x,
|
|
108
|
+
onBlur: () => _("url"),
|
|
109
109
|
onChange: (e) => l({
|
|
110
110
|
...i,
|
|
111
111
|
url: e.target.value
|
|
112
112
|
})
|
|
113
113
|
})
|
|
114
|
-
}),
|
|
114
|
+
}) : null,
|
|
115
115
|
/* @__PURE__ */ s(r, {
|
|
116
116
|
label: "Project details",
|
|
117
|
-
description:
|
|
117
|
+
description: S == null ? `${i.details.length} / ${u}` : void 0,
|
|
118
118
|
children: /* @__PURE__ */ s(n, {
|
|
119
119
|
"aria-label": "Project details",
|
|
120
120
|
rows: 5,
|
|
121
121
|
maxLength: u,
|
|
122
122
|
value: i.details,
|
|
123
123
|
placeholder: "What should feel different when this work is done?",
|
|
124
|
-
status:
|
|
125
|
-
message:
|
|
126
|
-
onBlur: () =>
|
|
124
|
+
status: S == null ? void 0 : "error",
|
|
125
|
+
message: S,
|
|
126
|
+
onBlur: () => _("details"),
|
|
127
127
|
onChange: (e) => l({
|
|
128
128
|
...i,
|
|
129
129
|
details: e.target.value
|
|
@@ -64,6 +64,8 @@ export interface ChatDockLabels {
|
|
|
64
64
|
helpful: string;
|
|
65
65
|
/** Thumbs down under a reply. Default: "Mark this reply not helpful". */
|
|
66
66
|
notHelpful: string;
|
|
67
|
+
/** The field's placeholder while a `gate` is up and the composer is off. Default: "Finish or cancel the form to keep chatting". */
|
|
68
|
+
gatePlaceholder: string;
|
|
67
69
|
}
|
|
68
70
|
export declare const chatDockDefaultLabels: ChatDockLabels;
|
|
69
71
|
export declare const chatDockFollowUpsPlacements: readonly ["inline", "composer"];
|
|
@@ -110,15 +112,20 @@ export interface ChatDockProps {
|
|
|
110
112
|
*/
|
|
111
113
|
onMessageFeedback?: (message: ChatDockMessage, value: ChatDockFeedback) => void;
|
|
112
114
|
/**
|
|
113
|
-
* A form
|
|
114
|
-
*
|
|
115
|
-
* the composer
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
*
|
|
115
|
+
* A form in the conversation — usually **ChatDock.Gate** with the steps of Start a project. While
|
|
116
|
+
* it is set it sits under the latest message, where a reply would, and the window keeps its
|
|
117
|
+
* header: the composer stays in place but is off, and the suggestion rows and follow-ups step aside.
|
|
118
|
+
* Setting it opens the window and moves focus into it; clearing it brings the composer back with
|
|
119
|
+
* focus. The window grows to fit the form, up to the viewport, and the conversation scrolls past
|
|
120
|
+
* that. Closing the window keeps the gate, with its progress, for when it reopens. The window stays
|
|
121
|
+
* non-modal.
|
|
120
122
|
*/
|
|
121
123
|
gate?: ReactNode;
|
|
124
|
+
/**
|
|
125
|
+
* The window's subtitle while `gate` is set — the form's name, for example "Start a project".
|
|
126
|
+
* Without it the subtitle is hidden while the gate is up.
|
|
127
|
+
*/
|
|
128
|
+
gateSubtitle?: string;
|
|
122
129
|
/** Controlled open state. */
|
|
123
130
|
open?: boolean;
|
|
124
131
|
defaultOpen?: boolean;
|
|
@@ -169,6 +176,15 @@ export declare function chatDockReplyRow({ message, isLatest, thinking, takesVot
|
|
|
169
176
|
* 7rem when that is shorter. Inline specimens are 32rem.
|
|
170
177
|
*/
|
|
171
178
|
export declare function chatDockOpenHeight(placement: ChatDockPlacement, viewportHeight: number, remPx: number): number;
|
|
179
|
+
/**
|
|
180
|
+
* The window's height while a gate is up, in px: tall enough for the conversation and the form
|
|
181
|
+
* (`needed`), never below its usual height (`normal`), and never past `max` (the viewport less 7rem).
|
|
182
|
+
*/
|
|
183
|
+
export declare function chatDockGateWindowHeight({ normal, needed, max }: {
|
|
184
|
+
normal: number;
|
|
185
|
+
needed: number;
|
|
186
|
+
max: number;
|
|
187
|
+
}): number;
|
|
172
188
|
/**
|
|
173
189
|
* How the window moves. `grow` (from `md`, and inline): it sits on the composer's bottom edge and
|
|
174
190
|
* grows up and out of it. `rise`: on phones it fills the screen and rises from the bottom edge.
|
|
@@ -178,10 +194,9 @@ export type ChatDockWindowMotion = "grow" | "rise";
|
|
|
178
194
|
* Pinned prompt that opens into a chat window. At rest it is a **PromptBar** with the brand
|
|
179
195
|
* mark; hovering shows suggestion pills above it. Focusing or typing opens a non-modal window
|
|
180
196
|
* around the same composer — header, conversation, suggestion rows, and an optional disclaimer.
|
|
181
|
-
* Escape or Close folds it back into the bar. The page behind stays usable
|
|
182
|
-
* fills the window.
|
|
197
|
+
* Escape or Close folds it back into the bar. The page behind stays usable.
|
|
183
198
|
*/
|
|
184
|
-
declare function ChatDockRoot({ title, subtitle, mark, greeting, messages, thinking, suggestions, onSend, onSuggestionSelect, followUps, followUpsPlacement, onMessageFeedback, gate, open: openProp, defaultOpen, onOpenChange, placeholder, disclaimer, labels: labelsProp, placement, className, }: ChatDockProps): import("react").JSX.Element;
|
|
199
|
+
declare function ChatDockRoot({ title, subtitle, mark, greeting, messages, thinking, suggestions, onSend, onSuggestionSelect, followUps, followUpsPlacement, onMessageFeedback, gate, gateSubtitle, open: openProp, defaultOpen, onOpenChange, placeholder, disclaimer, labels: labelsProp, placement, className, }: ChatDockProps): import("react").JSX.Element;
|
|
185
200
|
/**
|
|
186
201
|
* Pinned prompt that opens into a chat window. At rest it is a **PromptBar** with the brand
|
|
187
202
|
* mark; hovering shows suggestion pills above it. Focusing or typing opens a non-modal window
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatDock.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/ChatDock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA8Bf,OAAO,
|
|
1
|
+
{"version":3,"file":"ChatDock.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/ChatDock.tsx"],"names":[],"mappings":"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"}
|