@thewhatmatters/wmds 0.4.4 → 0.4.6

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.
Files changed (150) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/colors.css +3 -0
  3. package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
  4. package/dist/components/atoms/TextArea/TextArea.js +72 -72
  5. package/dist/components/atoms/TextArea/textareaShellStyles.d.ts +5 -0
  6. package/dist/components/atoms/TextArea/textareaShellStyles.d.ts.map +1 -1
  7. package/dist/components/atoms/TextArea/textareaShellStyles.js +2 -2
  8. package/dist/components/molecules/IntakeForm/IntakeForm.d.ts +14 -2
  9. package/dist/components/molecules/IntakeForm/IntakeForm.d.ts.map +1 -1
  10. package/dist/components/molecules/IntakeForm/IntakeForm.js +25 -25
  11. package/dist/components/organisms/ChatDock/ChatDockGate.d.ts +2 -1
  12. package/dist/components/organisms/ChatDock/ChatDockGate.d.ts.map +1 -1
  13. package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts +4 -3
  14. package/dist/components/organisms/ChatDock/chatDockGateStyles.d.ts.map +1 -1
  15. package/dist/components/organisms/ChatDock/chatDockGateStyles.js +1 -1
  16. package/dist/lib/shadows.d.ts.map +1 -1
  17. package/dist/styles.css +1 -1
  18. package/dist/theme.css +1 -0
  19. package/docs/component-contracts.md +1 -1
  20. package/docs/components.md +3 -3
  21. package/docs/exports.json +3 -2
  22. package/docs/patterns/components-accordion--flush.tsx +1 -1
  23. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  24. package/docs/patterns/components-badge--outline-tags.tsx +1 -1
  25. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  26. package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
  27. package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
  28. package/docs/patterns/components-breadcrumb--path.tsx +1 -1
  29. package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
  30. package/docs/patterns/components-button-button--copy-button.tsx +1 -1
  31. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  32. package/docs/patterns/components-button-button--external-link.tsx +1 -1
  33. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  34. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  35. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  36. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  37. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  38. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  39. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  40. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  41. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  42. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  43. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  44. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  45. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  46. package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
  47. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  48. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  49. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  50. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  51. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  52. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  53. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  54. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  55. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  56. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  57. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  58. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  59. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
  60. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +3 -2
  61. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  62. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  63. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
  64. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  65. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  66. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
  67. package/docs/patterns/components-descriptionlist--details.tsx +1 -1
  68. package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
  69. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  70. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  71. package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
  72. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  73. package/docs/patterns/components-field--horizontal-input.tsx +1 -1
  74. package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
  75. package/docs/patterns/components-field--multi-control.tsx +1 -1
  76. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
  77. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  78. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
  79. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  80. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
  81. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  82. package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
  83. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
  84. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  85. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
  86. package/docs/patterns/components-indexlist--post-index.tsx +1 -1
  87. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  88. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  89. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  90. package/docs/patterns/components-intakeform--short-form-pattern.tsx +12 -0
  91. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  92. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  93. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  94. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  95. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  96. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  97. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  98. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  99. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  100. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  101. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  102. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  103. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  104. package/docs/patterns/components-prose--article-body.tsx +1 -1
  105. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  106. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  107. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  108. package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
  109. package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
  110. package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
  111. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  112. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  113. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  114. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  115. package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
  116. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  117. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  118. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  119. package/docs/patterns/components-switch--default.tsx +1 -1
  120. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  121. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  122. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  123. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  124. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  125. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  126. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  127. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  128. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  129. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  130. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  131. package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
  132. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  133. package/docs/patterns/components-textsequence--default.tsx +1 -1
  134. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  135. package/docs/patterns/components-textsequence--shapes.tsx +1 -1
  136. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  137. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  138. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  139. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  140. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  141. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  142. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  143. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  144. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  145. package/docs/patterns/guides-filter-panel--filtered-index.tsx +1 -1
  146. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
  147. package/docs/patterns/guides-post-page--post-page.tsx +1 -1
  148. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
  149. package/docs/patterns/index.json +9 -1
  150. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,31 @@ 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.6
11
+
12
+ **TextArea shows one focus ring.** A focused **TextArea** drew two: the ring on its shell, and the browser's own outline on the field inside it.
13
+
14
+ - **TextArea** — the field inside the shell drops its outline, so the shell's ring is the only focus indicator. This was visible on every **TextArea** without a status message, including Project details in **IntakeForm** and the Start a project gate. **PromptBar** and a **TextArea** with a `message` were already correct.
15
+
16
+ ### Consumer actions
17
+
18
+ None. If an app added its own outline reset for this, remove it.
19
+
20
+ ## 0.4.5
21
+
22
+ **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**.
23
+
24
+ - **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**.
25
+ - **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.
26
+ - **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.
27
+ - **`--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.
28
+
29
+ ### Consumer actions
30
+
31
+ 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.
32
+ 2. **The gate's new look: nothing to do.** It comes with the upgrade.
33
+ 3. Other apps: none. `company`, `link`, and `shadow-inset-well` are new and optional.
34
+
10
35
  ## 0.4.4
11
36
 
12
37
  **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**.
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
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/TextArea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAKvE,OAAO,EAoBL,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1G,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACjE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAqBD;;;GAGG;AACH,eAAO,MAAM,QAAQ,+GAuJnB,CAAC"}
1
+ {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/TextArea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,sBAAsB,EAAE,MAAM,OAAO,CAAC;AAKvE,OAAO,EAqBL,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE1G,sEAAsE;AACtE,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACjE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAqBD;;;GAGG;AACH,eAAO,MAAM,QAAQ,+GAuJnB,CAAC"}
@@ -4,112 +4,112 @@ import { typographyClass as t } from "../../../lib/typography.js";
4
4
  import { inputAttachedFieldClasses as n, inputCompoundShellClassesFor as r, inputControlStackClasses as i, inputDisabledClasses as a, inputFieldStackClasses as o, inputStatusGapClasses as s } from "../Input/inputShellStyles.js";
5
5
  import { InputStatusBanner as c } from "../inputShared/InputStatusBanner.js";
6
6
  import { InputTrailingAffordance as l } from "../inputShared/InputTrailingAffordance.js";
7
- import { textareaBaseClasses as u, textareaCompoundFieldPaddingClasses as d, textareaCompoundInnerFieldClassesFor as f, textareaFixedPaddingClasses as ee, textareaInlineClasses as p, textareaMinHeightClasses as m, textareaResizeClasses as h, textareaResizes as g, textareaSoloShellClassesFor as _, textareaStatusBannerClassesFor as v, textareaTrailingInsetClasses as y, textareaTrailingInsetPositionClasses as b } from "./textareaShellStyles.js";
8
- import { forwardRef as x, useId as S } from "react";
9
- import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
7
+ import { textareaBaseClasses as u, textareaCompoundFieldPaddingClasses as ee, textareaCompoundInnerFieldClassesFor as d, textareaFixedPaddingClasses as f, textareaInlineClasses as p, textareaMinHeightClasses as m, textareaResizeClasses as h, textareaResizes as g, textareaShellFieldClasses as _, textareaSoloShellClassesFor as v, textareaStatusBannerClassesFor as y, textareaTrailingInsetClasses as b, textareaTrailingInsetPositionClasses as x } from "./textareaShellStyles.js";
8
+ import { forwardRef as S, useId as C } from "react";
9
+ import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
10
10
  //#region src/components/atoms/TextArea/TextArea.tsx
11
- function E(e) {
11
+ function D(e) {
12
12
  e.label == null && e["aria-label"] == null && e["aria-labelledby"] == null && console.warn("[WMDS TextArea] Provide `label`, `aria-label`, or `aria-labelledby`.");
13
13
  }
14
- function D(e) {
14
+ function O(e) {
15
15
  e.message != null && e.status == null && console.warn("[WMDS TextArea] `message` requires `status`."), e.inline && (e.label != null || e.description != null || e.status != null || e.message != null) && console.warn("[WMDS TextArea] `inline` is for PromptBar only — omit label, description, and validation.");
16
16
  }
17
- var O = x(function({ size: c = "md", label: g, description: v, status: x, message: O, messagePosition: k = "bottom", loading: A = !1, rows: j = 4, resize: M = "vertical", inline: N = !1, className: P, disabled: F, id: I, "aria-describedby": L, ...R }, z) {
18
- let B = S(), V = I ?? B;
19
- E({
17
+ var k = S(function({ size: c = "md", label: g, description: y, status: S, message: k, messagePosition: A = "bottom", loading: j = !1, rows: M = 4, resize: N = "vertical", inline: P = !1, className: F, disabled: I, id: L, "aria-describedby": R, ...z }, B) {
18
+ let V = C(), H = L ?? V;
19
+ D({
20
20
  label: g,
21
- "aria-label": R["aria-label"],
22
- "aria-labelledby": R["aria-labelledby"]
23
- }), D({
24
- status: x,
25
- message: O,
26
- inline: N,
21
+ "aria-label": z["aria-label"],
22
+ "aria-labelledby": z["aria-labelledby"]
23
+ }), O({
24
+ status: S,
25
+ message: k,
26
+ inline: P,
27
27
  label: g,
28
- description: v
28
+ description: y
29
29
  });
30
- let H = O != null && O.length > 0 && x != null, U = !H && (A || x != null), W = v != null && !H ? `${V}-description` : void 0, G = H ? `${V}-message` : void 0, K = [
31
- L,
32
- W,
33
- G
30
+ let U = k != null && k.length > 0 && S != null, W = !U && (j || S != null), G = y != null && !U ? `${H}-description` : void 0, K = U ? `${H}-message` : void 0, q = [
31
+ R,
32
+ G,
33
+ K
34
34
  ].filter(Boolean).join(" ") || void 0;
35
- if (N) return /* @__PURE__ */ w("textarea", {
36
- ...R,
37
- ref: z,
38
- id: V,
39
- rows: j,
40
- disabled: F,
41
- "aria-invalid": x === "error" || void 0,
42
- "aria-describedby": K,
43
- className: e(a, p, P)
35
+ if (P) return /* @__PURE__ */ T("textarea", {
36
+ ...z,
37
+ ref: B,
38
+ id: H,
39
+ rows: M,
40
+ disabled: I,
41
+ "aria-invalid": S === "error" || void 0,
42
+ "aria-describedby": q,
43
+ className: e(a, p, F)
44
44
  });
45
- let q = /* @__PURE__ */ w("textarea", {
46
- ...R,
47
- ref: z,
48
- id: V,
49
- rows: j,
50
- disabled: F,
51
- "aria-invalid": x === "error" || void 0,
52
- "aria-describedby": K,
53
- className: e(a, h[M], u, ee[c], m[c], "w-full border-0 bg-transparent shadow-none", U && s[c], H && e(n, "rounded-none border-0 shadow-none focus-visible:outline-none focus-visible:ring-0", "rounded-none"))
54
- }), J = U ? /* @__PURE__ */ w("span", {
55
- className: e(y, b[c]),
56
- children: /* @__PURE__ */ w(l, {
45
+ let J = /* @__PURE__ */ T("textarea", {
46
+ ...z,
47
+ ref: B,
48
+ id: H,
49
+ rows: M,
50
+ disabled: I,
51
+ "aria-invalid": S === "error" || void 0,
52
+ "aria-describedby": q,
53
+ className: e(a, h[N], u, f[c], m[c], _, W && s[c], U && e(n, "rounded-none border-0 shadow-none focus-visible:outline-none focus-visible:ring-0", "rounded-none"))
54
+ }), Y = W ? /* @__PURE__ */ T("span", {
55
+ className: e(b, x[c]),
56
+ children: /* @__PURE__ */ T(l, {
57
57
  size: c,
58
- status: A ? void 0 : x,
59
- loading: A
58
+ status: j ? void 0 : S,
59
+ loading: j
60
60
  })
61
- }) : null, Y = /* @__PURE__ */ T(C, { children: [q, J] }), X = /* @__PURE__ */ w("div", {
62
- className: e(_(c, x, M), P),
63
- children: Y
64
- }), Z = /* @__PURE__ */ w("div", {
65
- className: e("relative w-full", d(M, c)),
66
- children: Y
67
- }), Q = H && x != null && G != null ? /* @__PURE__ */ w(te, {
68
- status: x,
69
- message: O,
70
- messageId: G,
61
+ }) : null, X = /* @__PURE__ */ E(w, { children: [J, Y] }), Z = /* @__PURE__ */ T("div", {
62
+ className: e(v(c, S, N), F),
63
+ children: X
64
+ }), ne = /* @__PURE__ */ T("div", {
65
+ className: e("relative w-full", ee(N, c)),
66
+ children: X
67
+ }), Q = U && S != null && K != null ? /* @__PURE__ */ T(te, {
68
+ status: S,
69
+ message: k,
70
+ messageId: K,
71
71
  size: c,
72
- messagePosition: k
73
- }) : null, $ = H && x != null ? /* @__PURE__ */ T("div", {
74
- className: r(c, x),
72
+ messagePosition: A
73
+ }) : null, $ = U && S != null ? /* @__PURE__ */ E("div", {
74
+ className: r(c, S),
75
75
  children: [
76
- k === "top" ? Q : null,
77
- /* @__PURE__ */ w("div", {
78
- className: f(c, x, k),
79
- children: Z
76
+ A === "top" ? Q : null,
77
+ /* @__PURE__ */ T("div", {
78
+ className: d(c, S, A),
79
+ children: ne
80
80
  }),
81
- k === "bottom" ? Q : null
81
+ A === "bottom" ? Q : null
82
82
  ]
83
- }) : /* @__PURE__ */ w("div", {
83
+ }) : /* @__PURE__ */ T("div", {
84
84
  className: i,
85
- children: X
85
+ children: Z
86
86
  });
87
- return g == null && v == null ? $ : /* @__PURE__ */ T("div", {
87
+ return g == null && y == null ? $ : /* @__PURE__ */ E("div", {
88
88
  className: o,
89
89
  children: [
90
- g == null ? null : /* @__PURE__ */ w("label", {
91
- htmlFor: V,
92
- className: e(t("ui-label"), F && "opacity-50"),
90
+ g == null ? null : /* @__PURE__ */ T("label", {
91
+ htmlFor: H,
92
+ className: e(t("ui-label"), I && "opacity-50"),
93
93
  children: g
94
94
  }),
95
95
  $,
96
- W == null ? null : /* @__PURE__ */ w("p", {
97
- id: W,
96
+ G == null ? null : /* @__PURE__ */ T("p", {
97
+ id: G,
98
98
  className: t("caption"),
99
- children: v
99
+ children: y
100
100
  })
101
101
  ]
102
102
  });
103
103
  });
104
104
  function te({ status: e, message: t, messageId: n, size: r, messagePosition: i }) {
105
- return /* @__PURE__ */ w(c, {
105
+ return /* @__PURE__ */ T(c, {
106
106
  status: e,
107
107
  message: t,
108
108
  messageId: n,
109
109
  size: r,
110
110
  messagePosition: i,
111
- bannerClassName: v(e, r, i)
111
+ bannerClassName: y(e, r, i)
112
112
  });
113
113
  }
114
114
  //#endregion
115
- export { O as TextArea, g as textareaResizes };
115
+ export { k as TextArea, g as textareaResizes };
@@ -32,6 +32,11 @@ export declare const textareaTrailingInsetClasses = "pointer-events-none absolut
32
32
  export declare function textareaCompoundInnerFieldClassesFor(size: InputSize, status: InputStatus, messagePosition: InputMessagePosition): string;
33
33
  export declare function textareaStatusBannerClassesFor(status: InputStatus, size: InputSize, messagePosition: InputMessagePosition): string;
34
34
  export declare const textareaBaseClasses: string;
35
+ /**
36
+ * Field inside the bordered shell — the shell owns border, fill, and the
37
+ * `focus-within` ring, so the field drops its own outline and ring.
38
+ */
39
+ export declare const textareaShellFieldClasses = "w-full border-0 bg-transparent shadow-none focus-visible:outline-none focus-visible:ring-0";
35
40
  /**
36
41
  * Inside **PromptBar** — the parent pill owns border, radius, and focus ring.
37
42
  * No element shell, no min-height, no resize grip.
@@ -1 +1 @@
1
- {"version":3,"file":"textareaShellStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/TextArea/textareaShellStyles.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EAEzB,4BAA4B,EAE5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EAItB,6BAA6B,EAC7B,8BAA8B,EAE9B,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE7F,eAAO,MAAM,eAAe,uCAAwC,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIhE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvE,CAAC;AAEF,eAAO,MAAM,iCAAiC,2GAC4D,CAAC;AAE3G,eAAO,MAAM,kCAAkC;;;;;CAKrC,CAAC;AAEX,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,cAAc,GACrB,MAAM,CAgBR;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,SAAS,GACd,MAAM,GAAG,SAAS,CAEpB;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1D,CAAC;AAEF,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIhF,CAAC;AAEF,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIhF,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI5E,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1E,CAAC;AAEF,eAAO,MAAM,4BAA4B,2DACiB,CAAC;AAE3D,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,oBAAoB,GACpC,MAAM,CASR;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,oBAAoB,GACpC,MAAM,CAgBR;AAED,eAAO,MAAM,mBAAmB,QAA+C,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAE2C,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,GACxB,CAAC"}
1
+ {"version":3,"file":"textareaShellStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/atoms/TextArea/textareaShellStyles.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EAEzB,4BAA4B,EAE5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EAItB,6BAA6B,EAC7B,8BAA8B,EAE9B,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE7F,eAAO,MAAM,eAAe,uCAAwC,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI/D,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAIhE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIvE,CAAC;AAEF,eAAO,MAAM,iCAAiC,2GAC4D,CAAC;AAE3G,eAAO,MAAM,kCAAkC;;;;;CAKrC,CAAC;AAEX,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,cAAc,GACrB,MAAM,CAgBR;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,SAAS,GACd,MAAM,GAAG,SAAS,CAEpB;AAED,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1D,CAAC;AAEF,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIhF,CAAC;AAEF,eAAO,MAAM,0CAA0C,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAIhF,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI5E,CAAC;AAEF,eAAO,MAAM,oCAAoC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAI1E,CAAC;AAEF,eAAO,MAAM,4BAA4B,2DACiB,CAAC;AAE3D,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,oBAAoB,GACpC,MAAM,CASR;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,oBAAoB,GACpC,MAAM,CAgBR;AAED,eAAO,MAAM,mBAAmB,QAA+C,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,+FACwD,CAAC;AAE/F;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAE2C,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,GACxB,CAAC"}
@@ -66,6 +66,6 @@ function M(t, n, r) {
66
66
  function N(t, n, r) {
67
67
  return r === "bottom" ? e("relative z-0 flex w-full items-center gap-2 px-3 pb-3 leading-snug", D[n], "rounded-b-[1.375rem]", p[t]) : e("relative z-0 flex w-full items-center gap-2 px-3 pt-2.5 leading-snug", O[n], "rounded-t-[1.375rem]", p[t]);
68
68
  }
69
- var P = e(r, "block leading-normal"), F = "block w-full min-w-0 resize-none rounded-none border-0 bg-transparent font-sans font-normal tracking-normal text-fg shadow-none placeholder:text-disabled focus-visible:outline-none focus-visible:ring-0";
69
+ var P = e(r, "block leading-normal"), F = "w-full border-0 bg-transparent shadow-none focus-visible:outline-none focus-visible:ring-0", I = "block w-full min-w-0 resize-none rounded-none border-0 bg-transparent font-sans font-normal tracking-normal text-fg shadow-none placeholder:text-disabled focus-visible:outline-none focus-visible:ring-0";
70
70
  //#endregion
71
- export { t as inputAttachedFieldClasses, n as inputAttachedInputClasses, i as inputCompoundShellClassesFor, o as inputControlStackClasses, s as inputDisabledClasses, c as inputDisabledLabelClasses, l as inputFieldStackClasses, m as inputStatusGapClasses, h as inputStatusShellClasses, P as textareaBaseClasses, D as textareaCompoundBannerOverlapBottomClasses, O as textareaCompoundBannerOverlapTopPadClasses, k as textareaCompoundFieldOverlapTopClasses, T as textareaCompoundFieldPaddingClasses, M as textareaCompoundInnerFieldClassesFor, b as textareaFixedPaddingClasses, F as textareaInlineClasses, y as textareaMinHeightClasses, v as textareaResizeClasses, g as textareaResizes, E as textareaShellClasses, S as textareaShellFocusRingBaseClasses, C as textareaShellFocusRingColorClasses, x as textareaShellResizePaddingClasses, _ as textareaSoloRadiusClasses, w as textareaSoloShellClassesFor, N as textareaStatusBannerClassesFor, j as textareaTrailingInsetClasses, A as textareaTrailingInsetPositionClasses };
71
+ export { t as inputAttachedFieldClasses, n as inputAttachedInputClasses, i as inputCompoundShellClassesFor, o as inputControlStackClasses, s as inputDisabledClasses, c as inputDisabledLabelClasses, l as inputFieldStackClasses, m as inputStatusGapClasses, h as inputStatusShellClasses, P as textareaBaseClasses, D as textareaCompoundBannerOverlapBottomClasses, O as textareaCompoundBannerOverlapTopPadClasses, k as textareaCompoundFieldOverlapTopClasses, T as textareaCompoundFieldPaddingClasses, M as textareaCompoundInnerFieldClassesFor, b as textareaFixedPaddingClasses, I as textareaInlineClasses, y as textareaMinHeightClasses, v as textareaResizeClasses, g as textareaResizes, E as textareaShellClasses, F as textareaShellFieldClasses, S as textareaShellFocusRingBaseClasses, C as textareaShellFocusRingColorClasses, x as textareaShellResizePaddingClasses, _ as textareaSoloRadiusClasses, w as textareaSoloShellClassesFor, N as textareaStatusBannerClassesFor, j as textareaTrailingInsetClasses, A as textareaTrailingInsetPositionClasses };
@@ -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. The details description is the character counter.
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;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,UAA6B,EAC7B,SAAS,GACV,EAAE,eAAe,+BAoFjB"}
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, className: d }) {
38
- let [f, m] = o({});
39
- function h(e) {
40
- m((t) => t[e] ? t : {
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 g(e) {
46
- if (f[e]) return p(e, i, u);
45
+ function v(e) {
46
+ if (h[e]) return p(e, i, u);
47
47
  }
48
- let _ = g("name"), v = g("email"), y = g("url"), b = g("details");
48
+ let y = v("name"), b = v("email"), x = v("url"), S = v("details");
49
49
  return /* @__PURE__ */ c("div", {
50
- className: e(a, d),
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: _ == null ? void 0 : "error",
59
- message: _,
60
- onBlur: () => h("name"),
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: v == null ? void 0 : "error",
75
- message: v,
76
- onBlur: () => h("email"),
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: y == null ? void 0 : "error",
107
- message: y,
108
- onBlur: () => h("url"),
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: b == null ? `${i.details.length} / ${u}` : void 0,
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: b == null ? void 0 : "error",
125
- message: b,
126
- onBlur: () => h("details"),
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
@@ -54,7 +54,8 @@ export interface ChatDockGateProps {
54
54
  }
55
55
  /**
56
56
  * A multi-step form in the conversation — pass it as **ChatDock**'s `gate`. It sits under the latest
57
- * message, flat on the window surface under a hairline: the step's title and subtitle with previous,
57
+ * message, set into the conversation as a well (hairline border, page floor, inset shade — embedded,
58
+ * not raised): the step's title and subtitle with previous,
58
59
  * progress, and next; the step; Cancel and the primary action under a second hairline. It has no close
59
60
  * of its own and never scrolls on its own — the window grows to fit it, and past that the conversation
60
61
  * scrolls.
@@ -1 +1 @@
1
- {"version":3,"file":"ChatDockGate.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/ChatDockGate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAwBf,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,uHAAuH;IACvH,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACvD;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAQvC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0IAA0I;IAC1I,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oIAAoI;IACpI,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,qEAAqE;IACrE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,8GAoKvB,CAAC"}
1
+ {"version":3,"file":"ChatDockGate.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/ChatDockGate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAwBf,MAAM,WAAW,kBAAkB;IACjC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,uHAAuH;IACvH,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACvD;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAQvC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,sEAAsE;IACtE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0IAA0I;IAC1I,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oIAAoI;IACpI,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,qEAAqE;IACrE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,8GAoKvB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * The gate — flat on the window surface, set off from the message above by a hairline, and as wide as
3
- * the conversation's turns. Focusable: ChatDock moves focus here.
2
+ * The gate — a well set into the conversation: a hairline border at the card body radius, the page
3
+ * floor inside, and an inset shade under its top edge, so it reads as embedded rather than raised. As
4
+ * wide as the conversation's turns. Focusable: ChatDock moves focus here; the ring sits inside.
4
5
  */
5
- export declare const chatDockGateClasses = "flex flex-col gap-3 border-t border-border pt-4 outline-none";
6
+ export declare const chatDockGateClasses: string;
6
7
  /** The step's title and subtitle, with previous, progress, and next at the end. */
7
8
  export declare const chatDockGateHeaderClasses = "flex items-start justify-between gap-3";
8
9
  /** Title and subtitle, one block. */
@@ -1 +1 @@
1
- {"version":3,"file":"chatDockGateStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/chatDockGateStyles.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iEAAiE,CAAC;AAElG,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,2CAA2C,CAAC;AAElF,qCAAqC;AACrC,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AAEzE,gCAAgC;AAChC,eAAO,MAAM,2BAA2B,2CAA2C,CAAC;AAEpF,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,4CAA4C;AAC5C,eAAO,MAAM,2BAA2B,QAAiE,CAAC;AAE1G,wFAAwF;AACxF,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AAErE,gCAAgC;AAChC,eAAO,MAAM,6BAA6B,mDAAmD,CAAC;AAE9F,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,iDAAiD,CAAC;AAE3F,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,oCAAoC,CAAC;AAElF,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,QAAoD,CAAC;AAE5F,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,QAAoD,CAAC"}
1
+ {"version":3,"file":"chatDockGateStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/ChatDock/chatDockGateStyles.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAG/B,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,yBAAyB,2CAA2C,CAAC;AAElF,qCAAqC;AACrC,eAAO,MAAM,0BAA0B,iCAAiC,CAAC;AAEzE,gCAAgC;AAChC,eAAO,MAAM,2BAA2B,2CAA2C,CAAC;AAEpF,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,4CAA4C;AAC5C,eAAO,MAAM,2BAA2B,QAAiE,CAAC;AAE1G,wFAAwF;AACxF,eAAO,MAAM,8BAA8B,yBAAyB,CAAC;AAErE,gCAAgC;AAChC,eAAO,MAAM,6BAA6B,mDAAmD,CAAC;AAE9F,sFAAsF;AACtF,eAAO,MAAM,4BAA4B,iDAAiD,CAAC;AAE3F,+DAA+D;AAC/D,eAAO,MAAM,gCAAgC,oCAAoC,CAAC;AAElF,qEAAqE;AACrE,eAAO,MAAM,0BAA0B,QAAoD,CAAC;AAE5F,iEAAiE;AACjE,eAAO,MAAM,wBAAwB,QAAoD,CAAC"}
@@ -2,6 +2,6 @@
2
2
  import { cn as e } from "../../../lib/cn.js";
3
3
  import { typographyClass as t } from "../../../lib/typography.js";
4
4
  //#region src/components/organisms/ChatDock/chatDockGateStyles.ts
5
- var n = "flex flex-col gap-3 border-t border-border pt-4 outline-none", r = "flex items-start justify-between gap-3", i = "flex min-w-0 flex-1 flex-col", a = "-me-2 flex shrink-0 items-center gap-1", o = "flex flex-col gap-3", s = e(t("caption"), "px-1 text-muted tabular-nums"), c = "flex w-full flex-col", l = "m-0 w-full border-0 border-t border-border p-0", u = "flex items-center justify-between gap-3 pt-3", d = "ml-auto flex items-center gap-2", f = e(t("caption"), "pt-3 text-muted"), p = e(t("caption"), "pt-3 text-error");
5
+ var n = e("flex flex-col gap-3 rounded-[var(--radius-card-body)] border border-border bg-body px-4 py-3 shadow-inset-well", "outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-focus-ring"), r = "flex items-start justify-between gap-3", i = "flex min-w-0 flex-1 flex-col", a = "-me-2 flex shrink-0 items-center gap-1", o = "flex flex-col gap-3", s = e(t("caption"), "px-1 text-muted tabular-nums"), c = "flex w-full flex-col", l = "m-0 w-full border-0 border-t border-border p-0", u = "flex items-center justify-between gap-3 pt-3", d = "ml-auto flex items-center gap-2", f = e(t("caption"), "pt-3 text-muted"), p = e(t("caption"), "pt-3 text-error");
6
6
  //#endregion
7
7
  export { n as chatDockGateClasses, a as chatDockGateControlsClasses, p as chatDockGateErrorClasses, d as chatDockGateFooterActionsClasses, c as chatDockGateFooterBlockClasses, u as chatDockGateFooterRowClasses, l as chatDockGateFooterRuleClasses, r as chatDockGateHeaderClasses, i as chatDockGateHeadingClasses, f as chatDockGatePendingClasses, s as chatDockGateProgressClasses, o as chatDockGateStepClasses };
@@ -1 +1 @@
1
- {"version":3,"file":"shadows.d.ts","sourceRoot":"","sources":["../../src/lib/shadows.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,EA2CzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAAW,EA4CzC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKlE,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAEvE"}
1
+ {"version":3,"file":"shadows.d.ts","sourceRoot":"","sources":["../../src/lib/shadows.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAmDzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,WAAW,EA4CzC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAKlE,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAEvE"}