@thewhatmatters/wmds 0.4.30 → 0.4.32

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 (235) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/bin/wmds-check.mjs +38 -0
  3. package/dist/components/atoms/Checkbox/Checkbox.d.ts.map +1 -1
  4. package/dist/components/atoms/Checkbox/Checkbox.js +73 -72
  5. package/dist/components/atoms/Input/Input.d.ts.map +1 -1
  6. package/dist/components/atoms/Input/Input.js +44 -49
  7. package/dist/components/atoms/Input/inputShellStyles.js +2 -2
  8. package/dist/components/atoms/Radio/Radio.d.ts.map +1 -1
  9. package/dist/components/atoms/Radio/Radio.js +61 -60
  10. package/dist/components/atoms/Switch/Switch.d.ts.map +1 -1
  11. package/dist/components/atoms/Switch/Switch.js +31 -30
  12. package/dist/components/atoms/TextArea/TextArea.d.ts.map +1 -1
  13. package/dist/components/atoms/TextArea/TextArea.js +56 -55
  14. package/dist/components/atoms/TextArea/textareaShellStyles.js +2 -2
  15. package/dist/components/atoms/inputShared/InputStatusBanner.d.ts +5 -0
  16. package/dist/components/atoms/inputShared/InputStatusBanner.d.ts.map +1 -1
  17. package/dist/components/atoms/inputShared/InputStatusBanner.js +15 -4
  18. package/dist/components/molecules/Breadcrumb/breadcrumbStyles.d.ts +1 -1
  19. package/dist/components/molecules/Breadcrumb/breadcrumbStyles.js +2 -2
  20. package/dist/components/molecules/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  21. package/dist/components/molecules/CheckboxGroup/CheckboxGroup.js +53 -53
  22. package/dist/components/molecules/CopyField/copyFieldStyles.d.ts.map +1 -1
  23. package/dist/components/molecules/CopyField/copyFieldStyles.js +1 -1
  24. package/dist/components/molecules/ErrorSummary/ErrorSummary.d.ts +32 -0
  25. package/dist/components/molecules/ErrorSummary/ErrorSummary.d.ts.map +1 -0
  26. package/dist/components/molecules/ErrorSummary/ErrorSummary.js +37 -0
  27. package/dist/components/molecules/ErrorSummary/errorSummaryStyles.d.ts +12 -0
  28. package/dist/components/molecules/ErrorSummary/errorSummaryStyles.d.ts.map +1 -0
  29. package/dist/components/molecules/ErrorSummary/errorSummaryStyles.js +5 -0
  30. package/dist/components/molecules/Field/fieldStyles.d.ts +1 -1
  31. package/dist/components/molecules/Field/fieldStyles.js +1 -1
  32. package/dist/components/molecules/HeroIntro/HeroIntro.d.ts +8 -2
  33. package/dist/components/molecules/HeroIntro/HeroIntro.d.ts.map +1 -1
  34. package/dist/components/molecules/HeroIntro/HeroIntro.js +30 -22
  35. package/dist/components/molecules/HeroIntro/heroIntroStyles.d.ts +9 -2
  36. package/dist/components/molecules/HeroIntro/heroIntroStyles.d.ts.map +1 -1
  37. package/dist/components/molecules/HeroIntro/heroIntroStyles.js +2 -2
  38. package/dist/components/molecules/IntakeForm/IntakeForm.d.ts.map +1 -1
  39. package/dist/components/molecules/IntakeForm/IntakeForm.js +4 -6
  40. package/dist/components/molecules/PromptBar/promptBarStyles.d.ts +3 -2
  41. package/dist/components/molecules/PromptBar/promptBarStyles.d.ts.map +1 -1
  42. package/dist/components/molecules/PromptBar/promptBarStyles.js +2 -2
  43. package/dist/components/molecules/RadioGroup/RadioGroup.d.ts.map +1 -1
  44. package/dist/components/molecules/RadioGroup/RadioGroup.js +53 -53
  45. package/dist/components/molecules/Search/Search.d.ts +5 -0
  46. package/dist/components/molecules/Search/Search.d.ts.map +1 -1
  47. package/dist/components/molecules/Search/Search.js +14 -13
  48. package/dist/components/molecules/Search/searchStyles.d.ts +2 -1
  49. package/dist/components/molecules/Search/searchStyles.d.ts.map +1 -1
  50. package/dist/components/molecules/Search/searchStyles.js +4 -4
  51. package/dist/components/molecules/TileGrid/tileGridStyles.js +1 -1
  52. package/dist/components/organisms/Carousel/carouselStyles.js +3 -3
  53. package/dist/components/organisms/ChatDock/chatDockStyles.d.ts +4 -0
  54. package/dist/components/organisms/ChatDock/chatDockStyles.d.ts.map +1 -1
  55. package/dist/components/organisms/FooterReveal/footerRevealStyles.js +1 -1
  56. package/dist/components/organisms/SiteNav/SiteNav.d.ts +13 -6
  57. package/dist/components/organisms/SiteNav/SiteNav.d.ts.map +1 -1
  58. package/dist/components/organisms/SiteNav/SiteNav.js +305 -252
  59. package/dist/components/organisms/SiteNav/siteNavStyles.d.ts +33 -5
  60. package/dist/components/organisms/SiteNav/siteNavStyles.d.ts.map +1 -1
  61. package/dist/components/organisms/SiteNav/siteNavStyles.js +3 -3
  62. package/dist/components/organisms/SiteNav/useSiteNavMobileMenu.d.ts +17 -0
  63. package/dist/components/organisms/SiteNav/useSiteNavMobileMenu.d.ts.map +1 -0
  64. package/dist/components/organisms/SiteNav/useSiteNavMobileMenu.js +47 -0
  65. package/dist/index.d.ts +1 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +3 -1
  68. package/dist/lib/dialogOverlay.d.ts +8 -0
  69. package/dist/lib/dialogOverlay.d.ts.map +1 -1
  70. package/dist/lib/dialogOverlay.js +45 -26
  71. package/dist/styles.css +1 -1
  72. package/docs/components.md +3 -2
  73. package/docs/exports.json +16 -2
  74. package/docs/patterns/components-accordion--flush.tsx +1 -1
  75. package/docs/patterns/components-appshell--portal-dashboard-pattern.tsx +1 -1
  76. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  77. package/docs/patterns/components-badge--outline-tags.tsx +1 -1
  78. package/docs/patterns/components-badge--status-pill.tsx +1 -1
  79. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  80. package/docs/patterns/components-band--page-in-bands.tsx +1 -1
  81. package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
  82. package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
  83. package/docs/patterns/components-breadcrumb--path.tsx +1 -1
  84. package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
  85. package/docs/patterns/components-button-button--copy-button.tsx +1 -1
  86. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  87. package/docs/patterns/components-button-button--external-link.tsx +1 -1
  88. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  89. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  90. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  91. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  92. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  93. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  94. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  95. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  96. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  97. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  98. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  99. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  100. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  101. package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
  102. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  103. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  104. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  105. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  106. package/docs/patterns/components-card-card--terminal-frame.tsx +1 -1
  107. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  108. package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
  109. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  110. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  111. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  112. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  113. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  114. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  115. package/docs/patterns/components-chart--revenue-by-line.tsx +1 -1
  116. package/docs/patterns/components-chart--segmented-ring-pattern.tsx +1 -1
  117. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  118. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
  119. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
  120. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  121. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  122. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
  123. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  124. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  125. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
  126. package/docs/patterns/components-copyfield--clipboard-blocked.tsx +1 -1
  127. package/docs/patterns/components-copyfield--copied.tsx +1 -1
  128. package/docs/patterns/components-copyfield--copy-key.tsx +1 -1
  129. package/docs/patterns/components-copyfield--on-navy.tsx +1 -1
  130. package/docs/patterns/components-descriptionlist--details.tsx +1 -1
  131. package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
  132. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  133. package/docs/patterns/components-dialog--alert-dialog-typed-confirmation.tsx +1 -1
  134. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  135. package/docs/patterns/components-dialog--form-dialog.tsx +3 -3
  136. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  137. package/docs/patterns/components-displaycontrols--theme-switch.tsx +1 -1
  138. package/docs/patterns/components-errorsummary--contact-form.tsx +35 -0
  139. package/docs/patterns/components-field--horizontal-input.tsx +2 -2
  140. package/docs/patterns/components-field--horizontal-text-area.tsx +2 -2
  141. package/docs/patterns/components-field--multi-control.tsx +2 -2
  142. package/docs/patterns/components-filterpanel--panel.tsx +1 -1
  143. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +2 -2
  144. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  145. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +2 -2
  146. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  147. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +2 -2
  148. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  149. package/docs/patterns/components-herointro--two-line-intro.tsx +2 -2
  150. package/docs/patterns/components-herointro--with-actions.tsx +22 -0
  151. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +2 -2
  152. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  153. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +2 -2
  154. package/docs/patterns/components-indexlist--post-index.tsx +1 -1
  155. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  156. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  157. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  158. package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
  159. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  160. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  161. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  162. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  163. package/docs/patterns/components-linktile--resource-tile.tsx +1 -1
  164. package/docs/patterns/components-linktile--router-link.tsx +1 -1
  165. package/docs/patterns/components-logview--detail-pane.tsx +1 -1
  166. package/docs/patterns/components-logview--log-viewer.tsx +1 -1
  167. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  168. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  169. package/docs/patterns/components-navlist--app-sidebar.tsx +1 -1
  170. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  171. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  172. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  173. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  174. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  175. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  176. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  177. package/docs/patterns/components-prose--article-body.tsx +1 -1
  178. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  179. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  180. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  181. package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
  182. package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
  183. package/docs/patterns/components-sheet--bottom-sheet.tsx +3 -3
  184. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  185. package/docs/patterns/components-sheet--side-sheet-header-actions.tsx +1 -1
  186. package/docs/patterns/components-sheet--side-sheet-url-deep-link.tsx +1 -1
  187. package/docs/patterns/components-sheet--side-sheet.tsx +1 -1
  188. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  189. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  190. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  191. package/docs/patterns/components-sitenav--marketing-header.tsx +2 -1
  192. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  193. package/docs/patterns/components-stat--hero-stat.tsx +1 -1
  194. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  195. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  196. package/docs/patterns/components-switch--default.tsx +1 -1
  197. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  198. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  199. package/docs/patterns/components-table--approvals-with-sheet.tsx +1 -1
  200. package/docs/patterns/components-table--approvals.tsx +3 -3
  201. package/docs/patterns/components-table--basic.tsx +1 -1
  202. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  203. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  204. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  205. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  206. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  207. package/docs/patterns/components-taskrows--needs-you-table.tsx +1 -1
  208. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  209. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  210. package/docs/patterns/components-textarea--save-status.tsx +1 -1
  211. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  212. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  213. package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
  214. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  215. package/docs/patterns/components-textsequence--default.tsx +1 -1
  216. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  217. package/docs/patterns/components-textsequence--shapes.tsx +2 -2
  218. package/docs/patterns/components-tilegrid--masonry.tsx +1 -1
  219. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  220. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  221. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  222. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  223. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  224. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  225. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  226. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  227. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  228. package/docs/patterns/guides-filter-panel--filtered-grid.tsx +3 -3
  229. package/docs/patterns/guides-filter-panel--filtered-index.tsx +3 -3
  230. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +3 -3
  231. package/docs/patterns/guides-post-page--post-page.tsx +3 -3
  232. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +6 -6
  233. package/docs/patterns/guides-resource-detail--detail.tsx +2 -2
  234. package/docs/patterns/index.json +17 -1
  235. package/package.json +1 -1
@@ -1,76 +1,76 @@
1
1
  "use client";
2
2
  import { cn as e } from "../../../lib/cn.js";
3
- import { InputStatusBanner as t } from "../../atoms/inputShared/InputStatusBanner.js";
4
- import { checkboxStatusBannerClassesFor as n } from "../../atoms/Checkbox/checkboxStyles.js";
5
- import { checkboxGroupDescriptionClasses as r, checkboxGroupDescriptionSpacingClasses as i, checkboxGroupFieldStackClasses as a, checkboxGroupItemsClasses as o, checkboxGroupLabelClassesFor as s, checkboxGroupLegendLabelOnlySpacingClasses as c, checkboxGroupLegendWithDescriptionSpacingClasses as l, checkboxGroupMessageTopSpacingClasses as u, checkboxGroupOrientations as d } from "./checkboxGroupStyles.js";
6
- import { CheckboxGroupProvider as f } from "./CheckboxGroupContext.js";
7
- import { CheckboxGroupItem as p } from "./CheckboxGroupItem.js";
8
- import { useId as m, useMemo as h } from "react";
9
- import { jsx as g, jsxs as _ } from "react/jsx-runtime";
3
+ import { InputStatusBanner as t, warnStatusWithoutMessage as n } from "../../atoms/inputShared/InputStatusBanner.js";
4
+ import { checkboxStatusBannerClassesFor as r } from "../../atoms/Checkbox/checkboxStyles.js";
5
+ import { checkboxGroupDescriptionClasses as i, checkboxGroupDescriptionSpacingClasses as a, checkboxGroupFieldStackClasses as o, checkboxGroupItemsClasses as s, checkboxGroupLabelClassesFor as c, checkboxGroupLegendLabelOnlySpacingClasses as l, checkboxGroupLegendWithDescriptionSpacingClasses as u, checkboxGroupMessageTopSpacingClasses as d, checkboxGroupOrientations as f } from "./checkboxGroupStyles.js";
6
+ import { CheckboxGroupProvider as p } from "./CheckboxGroupContext.js";
7
+ import { CheckboxGroupItem as m } from "./CheckboxGroupItem.js";
8
+ import { useId as h, useMemo as g } from "react";
9
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
10
10
  //#region src/components/molecules/CheckboxGroup/CheckboxGroup.tsx
11
- var v = {
11
+ var y = {
12
12
  sm: "sm",
13
13
  md: "md"
14
14
  };
15
- function y(e) {
15
+ function b(e) {
16
16
  e.message != null && e.status == null && console.warn("[WMDS CheckboxGroup] `message` requires `status`."), e.values != null != (e.onValuesChange != null) && console.warn("[WMDS CheckboxGroup] `values` and `onValuesChange` must be used together.");
17
17
  }
18
- function b({ label: d, labelHidden: p = !1, description: b, values: x, onValuesChange: S, orientation: C = "vertical", size: w = "md", disabled: T = !1, status: E, message: D, children: O, className: k }) {
19
- let A = m();
20
- y({
21
- status: E,
22
- message: D,
23
- values: x,
24
- onValuesChange: S
25
- });
26
- let j = d == null ? void 0 : `${A}-legend`, M = b == null ? void 0 : `${A}-description`, N = D != null && E != null ? `${A}-message` : void 0, P = [M, N].filter(Boolean).join(" ") || void 0, F = h(() => ({
27
- values: x,
28
- onValuesChange: S,
29
- disabled: T,
30
- size: w
18
+ function x({ label: f, labelHidden: m = !1, description: x, values: S, onValuesChange: C, orientation: w = "vertical", size: T = "md", disabled: E = !1, status: D, message: O, children: k, className: A }) {
19
+ let j = h();
20
+ b({
21
+ status: D,
22
+ message: O,
23
+ values: S,
24
+ onValuesChange: C
25
+ }), n("CheckboxGroup", D, O);
26
+ let M = f == null ? void 0 : `${j}-legend`, N = x == null ? void 0 : `${j}-description`, P = O != null && D != null ? `${j}-message` : void 0, F = [N, P].filter(Boolean).join(" ") || void 0, I = g(() => ({
27
+ values: S,
28
+ onValuesChange: C,
29
+ disabled: E,
30
+ size: T
31
31
  }), [
32
- x,
33
32
  S,
34
- T,
35
- w
33
+ C,
34
+ E,
35
+ T
36
36
  ]);
37
- return /* @__PURE__ */ _("fieldset", {
38
- disabled: T,
39
- className: e(a, "min-w-0 border-0 p-0", k),
37
+ return /* @__PURE__ */ v("fieldset", {
38
+ disabled: E,
39
+ className: e(o, "min-w-0 border-0 p-0", A),
40
40
  children: [
41
- d == null ? null : /* @__PURE__ */ g("legend", {
42
- id: j,
43
- className: e(s(T), p && "sr-only", b == null ? c : l),
44
- children: d
45
- }),
46
- b == null ? null : /* @__PURE__ */ g("p", {
41
+ f == null ? null : /* @__PURE__ */ _("legend", {
47
42
  id: M,
48
- className: e(r, i),
49
- children: b
43
+ className: e(c(E), m && "sr-only", x == null ? l : u),
44
+ children: f
45
+ }),
46
+ x == null ? null : /* @__PURE__ */ _("p", {
47
+ id: N,
48
+ className: e(i, a),
49
+ children: x
50
50
  }),
51
- /* @__PURE__ */ g("div", {
51
+ /* @__PURE__ */ _("div", {
52
52
  role: "group",
53
- "aria-labelledby": j,
54
- "aria-describedby": P,
55
- "aria-invalid": E === "error" || void 0,
56
- "aria-disabled": T || void 0,
57
- className: o[C],
58
- children: /* @__PURE__ */ g(f, {
59
- value: F,
60
- children: O
53
+ "aria-labelledby": M,
54
+ "aria-describedby": F,
55
+ "aria-invalid": D === "error" || void 0,
56
+ "aria-disabled": E || void 0,
57
+ className: s[w],
58
+ children: /* @__PURE__ */ _(p, {
59
+ value: I,
60
+ children: k
61
61
  })
62
62
  }),
63
- D != null && E != null && N != null ? /* @__PURE__ */ g(t, {
64
- status: E,
65
- message: D,
66
- messageId: N,
67
- size: v[w],
63
+ O != null && D != null && P != null ? /* @__PURE__ */ _(t, {
64
+ status: D,
65
+ message: O,
66
+ messageId: P,
67
+ size: y[T],
68
68
  messagePosition: "bottom",
69
- bannerClassName: e(n(E), u)
69
+ bannerClassName: e(r(D), d)
70
70
  }) : null
71
71
  ]
72
72
  });
73
73
  }
74
- var x = Object.assign(b, { Item: p });
74
+ var S = Object.assign(x, { Item: m });
75
75
  //#endregion
76
- export { x as CheckboxGroup, d as checkboxGroupOrientations };
76
+ export { S as CheckboxGroup, f as checkboxGroupOrientations };
@@ -1 +1 @@
1
- {"version":3,"file":"copyFieldStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CopyField/copyFieldStyles.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,uCAAuC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAiE,CAAC;AAEpG;;;GAGG;AACH,eAAO,MAAM,qBAAqB,yDAAyD,CAAC;AAE5F;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAuC,CAAC;AAE3E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
1
+ {"version":3,"file":"copyFieldStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/CopyField/copyFieldStyles.ts"],"names":[],"mappings":"AAOA,mDAAmD;AACnD,eAAO,MAAM,gBAAgB,uCAAuC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAiE,CAAC;AAEpG;;;GAGG;AACH,eAAO,MAAM,qBAAqB,yDAAyD,CAAC;AAE5F;;;GAGG;AAEH,eAAO,MAAM,sBAAsB,QAAuE,CAAC;AAE3G;;;GAGG;AACH,eAAO,MAAM,oBAAoB,oBAAoB,CAAC"}
@@ -2,6 +2,6 @@
2
2
  import { cn as e } from "../../../lib/cn.js";
3
3
  import { promptBarSendClasses as t, promptBarShellClasses as n, promptBarShellStartPadClasses as r } from "../PromptBar/promptBarStyles.js";
4
4
  //#region src/components/molecules/CopyField/copyFieldStyles.ts
5
- var i = "flex w-full min-w-0 flex-col gap-2", a = "type-label", o = e(n, r.field), s = "h-9 min-h-9 w-full min-w-0 flex-1 truncate px-0 py-0", c = e(t, "shrink-0"), l = "type-supporting";
5
+ var i = "flex w-full min-w-0 flex-col gap-2", a = "type-label", o = e(n, r.field), s = "h-9 min-h-9 w-full min-w-0 flex-1 truncate px-0 py-0", c = e(t, "shrink-0 pointer-coarse:overflow-visible"), l = "type-supporting";
6
6
  //#endregion
7
7
  export { c as copyFieldButtonClasses, i as copyFieldClasses, l as copyFieldHintClasses, a as copyFieldLabelClasses, o as copyFieldShellClasses, s as copyFieldValueClasses };
@@ -0,0 +1,32 @@
1
+ import { type ReactNode } from "react";
2
+ import { type ErrorSummaryHeadingLevel } from "./errorSummaryStyles";
3
+ export { errorSummaryHeadingLevels, type ErrorSummaryHeadingLevel } from "./errorSummaryStyles";
4
+ /** Layout-only — margin or grid placement. */
5
+ export type ErrorSummaryLayoutClassName = string;
6
+ export interface ErrorSummaryItem {
7
+ /** The `id` of the field with the error; its link moves focus there. */
8
+ field: string;
9
+ /** The same words as the field's own message ("Enter your email address"). */
10
+ message: ReactNode;
11
+ }
12
+ export interface ErrorSummaryProps {
13
+ /** One line per error, in the order the fields appear. Renders nothing when empty. */
14
+ errors: ErrorSummaryItem[];
15
+ /** Default: "There's a problem". */
16
+ title?: ReactNode;
17
+ /** Its heading level in the page outline. Default `h2`. */
18
+ as?: ErrorSummaryHeadingLevel;
19
+ /**
20
+ * Move focus to the summary when its errors change, so a screen reader starts here after a failed
21
+ * submit. Default `true`.
22
+ */
23
+ focusOnShow?: boolean;
24
+ className?: ErrorSummaryLayoutClassName;
25
+ }
26
+ /**
27
+ * The summary at the top of a form after a failed submit (Errors and validation V5): "There's a problem",
28
+ * then one link per error, worded like the field's own message. It takes focus when it appears, and each
29
+ * link moves focus to its field. The fields keep their inline messages too.
30
+ */
31
+ export declare function ErrorSummary({ errors, title, as: Heading, focusOnShow, className }: ErrorSummaryProps): import("react").JSX.Element | null;
32
+ //# sourceMappingURL=ErrorSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorSummary.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ErrorSummary/ErrorSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjE,OAAO,EAKL,KAAK,wBAAwB,EAC9B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,yBAAyB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEhG,8CAA8C;AAC9C,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,EAAE,CAAC,EAAE,wBAAwB,CAAC;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,KAA2B,EAAE,EAAE,EAAE,OAAc,EAAE,WAAkB,EAAE,SAAS,EAAE,EAAE,iBAAiB,sCA4CzI"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { cn as e } from "../../../lib/cn.js";
3
+ import { errorSummaryClasses as t, errorSummaryHeadingLevels as n, errorSummaryLinkClasses as r, errorSummaryListClasses as i, errorSummaryTitleClasses as a } from "./errorSummaryStyles.js";
4
+ import { useEffect as o, useId as s, useRef as c } from "react";
5
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
6
+ //#region src/components/molecules/ErrorSummary/ErrorSummary.tsx
7
+ function d({ errors: n, title: d = "There's a problem", as: f = "h2", focusOnShow: p = !0, className: m }) {
8
+ let h = c(null), g = s(), _ = n.map((e) => e.field).join("|");
9
+ return o(() => {
10
+ p && _ !== "" && h.current?.focus();
11
+ }, [p, _]), n.length === 0 ? null : /* @__PURE__ */ u("div", {
12
+ ref: h,
13
+ role: "alert",
14
+ "aria-labelledby": g,
15
+ tabIndex: -1,
16
+ className: e(t, m),
17
+ "data-error-summary": "",
18
+ children: [/* @__PURE__ */ l(f, {
19
+ id: g,
20
+ className: a,
21
+ children: d
22
+ }), /* @__PURE__ */ l("ul", {
23
+ className: i,
24
+ children: n.map((e) => /* @__PURE__ */ l("li", { children: /* @__PURE__ */ l("a", {
25
+ href: `#${e.field}`,
26
+ className: r,
27
+ onClick: (t) => {
28
+ let n = document.getElementById(e.field);
29
+ n != null && (t.preventDefault(), n.scrollIntoView({ block: "center" }), n.focus({ preventScroll: !0 }));
30
+ },
31
+ children: e.message
32
+ }) }, e.field))
33
+ })]
34
+ });
35
+ }
36
+ //#endregion
37
+ export { d as ErrorSummary, n as errorSummaryHeadingLevels };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Errors and validation V5: the summary at the top of a form after a failed submit. A heavy error
3
+ * edge so it reads as the place to start, the page surface inside, error-coloured links (7:1 light,
4
+ * 12:1 dark on the page).
5
+ */
6
+ export declare const errorSummaryClasses = "flex flex-col gap-3 rounded-[var(--radius-surface-md)] border-2 border-error bg-surface p-4 outline-none focus-visible:ring-2 focus-visible:ring-error-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-body md:p-5";
7
+ export declare const errorSummaryTitleClasses = "type-heading-3 text-fg";
8
+ export declare const errorSummaryListClasses = "flex flex-col gap-2";
9
+ export declare const errorSummaryLinkClasses = "type-body font-medium text-error underline decoration-solid underline-offset-4 hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface";
10
+ export declare const errorSummaryHeadingLevels: readonly ["h2", "h3"];
11
+ export type ErrorSummaryHeadingLevel = (typeof errorSummaryHeadingLevels)[number];
12
+ //# sourceMappingURL=errorSummaryStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorSummaryStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/ErrorSummary/errorSummaryStyles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,wOACuM,CAAC;AAExO,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,2QACsO,CAAC;AAE3Q,eAAO,MAAM,yBAAyB,uBAAwB,CAAC;AAC/D,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ //#region src/components/molecules/ErrorSummary/errorSummaryStyles.ts
3
+ var e = "flex flex-col gap-3 rounded-[var(--radius-surface-md)] border-2 border-error bg-surface p-4 outline-none focus-visible:ring-2 focus-visible:ring-error-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-body md:p-5", t = "type-heading-3 text-fg", n = "flex flex-col gap-2", r = "type-body font-medium text-error underline decoration-solid underline-offset-4 hover:decoration-2 focus-visible:rounded-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring focus-visible:ring-offset-2 focus-visible:ring-offset-surface", i = ["h2", "h3"];
4
+ //#endregion
5
+ export { e as errorSummaryClasses, i as errorSummaryHeadingLevels, r as errorSummaryLinkClasses, n as errorSummaryListClasses, t as errorSummaryTitleClasses };
@@ -5,7 +5,7 @@ export declare const fieldVerticalStackClasses = "flex w-full flex-col gap-1.5";
5
5
  /** Label beside control — Stripe-style two-column row. */
6
6
  export declare const fieldHorizontalStackClasses = "flex w-full items-start gap-4";
7
7
  /** Left label column — fixed band; control column flexes. */
8
- export declare const fieldHorizontalLabelColumnClasses = "w-[7.5rem] shrink-0 pt-2.5 sm:w-32";
8
+ export declare const fieldHorizontalLabelColumnClasses = "w-[7.5rem] shrink-0 pt-2.5 md:w-32";
9
9
  /** Right control column in horizontal layout. */
10
10
  export declare const fieldHorizontalControlColumnClasses = "flex min-w-0 flex-1 flex-col gap-1.5";
11
11
  /** Gap between multiple controls under one label. */
@@ -3,7 +3,7 @@ import { cn as e } from "../../../lib/cn.js";
3
3
  import { typographyClass as t } from "../../../lib/typography.js";
4
4
  import "../../atoms/Input/inputShellStyles.js";
5
5
  //#region src/components/molecules/Field/fieldStyles.ts
6
- var n = ["vertical", "horizontal"], r = "flex w-full flex-col gap-1.5", i = "flex w-full items-start gap-4", a = "w-[7.5rem] shrink-0 pt-2.5 sm:w-32", o = "flex min-w-0 flex-1 flex-col gap-1.5", s = "flex w-full flex-col gap-2", c = t("ui-label"), l = t("caption");
6
+ var n = ["vertical", "horizontal"], r = "flex w-full flex-col gap-1.5", i = "flex w-full items-start gap-4", a = "w-[7.5rem] shrink-0 pt-2.5 md:w-32", o = "flex min-w-0 flex-1 flex-col gap-1.5", s = "flex w-full flex-col gap-2", c = t("ui-label"), l = t("caption");
7
7
  function u(t) {
8
8
  return e(c, t && "opacity-50");
9
9
  }
@@ -22,6 +22,11 @@ export interface HeroIntroProps {
22
22
  * sentences that summarise the page.
23
23
  */
24
24
  description?: ReactNode;
25
+ /**
26
+ * Optional CTA row under the heading (and the description): one primary **Button** and an optional
27
+ * secondary, usually `role="outline"` (Hero rule R2). Left on phones, centred from `md`.
28
+ */
29
+ actions?: ReactNode;
25
30
  /**
26
31
  * `large` — `type-display-2` at normal weight, columns 4–9 from `lg`. The default hero.
27
32
  * `display` — the same size, full width of the page grid. The sequenced hero.
@@ -33,8 +38,9 @@ export interface HeroIntroProps {
33
38
  }
34
39
  /**
35
40
  * Marketing hero heading. `firstLine` is the first line. `children`, when passed, is the next line.
36
- * `description`, when passed, is a lead paragraph under the heading. The component owns the break.
41
+ * `description`, when passed, is a lead paragraph under the heading, and `actions` the CTA row under that.
42
+ * The component owns the break.
37
43
  * This is the page `h1`.
38
44
  */
39
- export declare function HeroIntro({ firstLine, lead, children, description, step, className }: HeroIntroProps): import("react").JSX.Element;
45
+ export declare function HeroIntro({ firstLine, lead, children, description, actions, step, className }: HeroIntroProps): import("react").JSX.Element;
40
46
  //# sourceMappingURL=HeroIntro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeroIntro.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/HeroIntro/HeroIntro.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAavC,kFAAkF;AAClF,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE9C,qHAAqH;AACrH,eAAO,MAAM,cAAc,+BAAgC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,0GAA0G;IAC1G,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,sCAAsC;IACtC,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAc,EAAE,SAAS,EAAE,EAAE,cAAc,+BAgB9G"}
1
+ {"version":3,"file":"HeroIntro.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/HeroIntro/HeroIntro.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAcvC,kFAAkF;AAClF,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE9C,qHAAqH;AACrH,eAAO,MAAM,cAAc,+BAAgC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,0GAA0G;IAC1G,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,sCAAsC;IACtC,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAc,EAAE,SAAS,EAAE,EAAE,cAAc,+BAqBvH"}
@@ -1,28 +1,36 @@
1
1
  "use client";
2
2
  import { cn as e } from "../../../lib/cn.js";
3
- import { heroIntroCopyClasses as t, heroIntroDescriptionClasses as n, heroIntroDisplayCopyClasses as r, heroIntroDisplayDescriptionClasses as i, heroIntroDisplayLeadClasses as a, heroIntroLeadClasses as o, heroIntroPageClasses as s, heroIntroRestClasses as c } from "./heroIntroStyles.js";
4
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
3
+ import { heroIntroActionsClasses as t, heroIntroCopyClasses as n, heroIntroDescriptionClasses as r, heroIntroDisplayCopyClasses as i, heroIntroDisplayDescriptionClasses as a, heroIntroDisplayLeadClasses as o, heroIntroLeadClasses as s, heroIntroPageClasses as c, heroIntroRestClasses as l } from "./heroIntroStyles.js";
4
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
5
5
  //#region src/components/molecules/HeroIntro/HeroIntro.tsx
6
- var d = ["large", "display"];
7
- function f({ firstLine: d, lead: f, children: p, description: m, step: h = "large", className: g }) {
8
- f !== void 0 && d === void 0 && typeof process < "u" && process.env.NODE_ENV !== "production" && console.warn("[WMDS HeroIntro] `lead` is renamed to `firstLine` (0.4.30); `lead` still works for now.");
9
- let _ = d ?? f, v = h === "display", y = p != null && p !== !1;
10
- return /* @__PURE__ */ u("div", {
11
- className: e(s, g),
12
- children: [/* @__PURE__ */ u("h1", {
13
- className: v ? r : t,
14
- children: [/* @__PURE__ */ l("span", {
15
- className: v ? a : o,
16
- children: _
17
- }), y ? /* @__PURE__ */ l("span", {
18
- className: c,
19
- children: p
20
- }) : null]
21
- }), m == null ? null : /* @__PURE__ */ l("p", {
22
- className: v ? i : n,
23
- children: m
24
- })]
6
+ var f = ["large", "display"];
7
+ function p({ firstLine: f, lead: p, children: m, description: h, actions: g, step: _ = "large", className: v }) {
8
+ p !== void 0 && f === void 0 && typeof process < "u" && process.env.NODE_ENV !== "production" && console.warn("[WMDS HeroIntro] `lead` is renamed to `firstLine` (0.4.30); `lead` still works for now.");
9
+ let y = f ?? p, b = _ === "display", x = m != null && m !== !1;
10
+ return /* @__PURE__ */ d("div", {
11
+ className: e(c, v),
12
+ children: [
13
+ /* @__PURE__ */ d("h1", {
14
+ className: b ? i : n,
15
+ children: [/* @__PURE__ */ u("span", {
16
+ className: b ? o : s,
17
+ children: y
18
+ }), x ? /* @__PURE__ */ u("span", {
19
+ className: l,
20
+ children: m
21
+ }) : null]
22
+ }),
23
+ h == null ? null : /* @__PURE__ */ u("p", {
24
+ className: b ? a : r,
25
+ children: h
26
+ }),
27
+ g == null ? null : /* @__PURE__ */ u("div", {
28
+ className: t,
29
+ "data-slot": "actions",
30
+ children: g
31
+ })
32
+ ]
25
33
  });
26
34
  }
27
35
  //#endregion
28
- export { f as HeroIntro, d as heroIntroSteps };
36
+ export { p as HeroIntro, f as heroIntroSteps };
@@ -33,7 +33,14 @@ export declare const heroIntroDisplayLeadClasses = "block min-w-0";
33
33
  * Optional lead paragraph under the heading: `type-lead` (18px phone to 21px, regular, 1.45) in ink, at the
34
34
  * 42rem measure, centred under the heading on the same columns (Lead rules L7, L8).
35
35
  */
36
- export declare const heroIntroDescriptionClasses = "col-span-full mt-6 min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10";
36
+ /** Heading → lead is the page grid's 24px row gap (no extra margin; Spacing S2). */
37
+ export declare const heroIntroDescriptionClasses = "col-span-full min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10";
37
38
  /** The description under the display step: the same 6-column measure, left on phones, centred from `md`. */
38
- export declare const heroIntroDisplayDescriptionClasses = "col-span-full mt-6 min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10";
39
+ export declare const heroIntroDisplayDescriptionClasses = "col-span-full min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10";
40
+ /**
41
+ * The CTA row under the heading (or the description): one primary and an optional secondary (Hero rule R2).
42
+ * Left on phones and centred from `md`, like the heading. 32px below the text above it: the grid's 24px row
43
+ * gap plus 8.
44
+ */
45
+ export declare const heroIntroActionsClasses = "col-span-full mt-2 flex min-w-0 flex-wrap items-center justify-start gap-3 md:justify-center";
39
46
  //# sourceMappingURL=heroIntroStyles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"heroIntroStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/HeroIntro/heroIntroStyles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAGtB,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAG7B,CAAC;AAEZ,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,+IACsG,CAAC;AAE/I,4GAA4G;AAC5G,eAAO,MAAM,kCAAkC,+IAA8B,CAAC"}
1
+ {"version":3,"file":"heroIntroStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/HeroIntro/heroIntroStyles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wFAAwF;AACxF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC;AAE7D;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAGtB,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAG7B,CAAC;AAEZ,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D;;;GAGG;AACH,oFAAoF;AACpF,eAAO,MAAM,2BAA2B,0IACiG,CAAC;AAE1I,4GAA4G;AAC5G,eAAO,MAAM,kCAAkC,0IAA8B,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iGAC4D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
2
  //#region src/components/molecules/HeroIntro/heroIntroStyles.ts
3
- var e = "grid-page w-full !py-0", t = ["type-display-2 !font-normal text-balance", "col-span-full min-w-0 text-left text-muted md:text-center lg:col-start-2 lg:col-end-12"].join(" "), n = "block min-w-0", r = "block", i = ["type-display-2 !font-normal text-balance", "col-span-full min-w-0 text-left text-muted md:text-center"].join(" "), a = "block min-w-0", o = "col-span-full mt-6 min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10", s = o;
3
+ var e = "grid-page w-full !py-0", t = ["type-display-2 !font-normal text-balance", "col-span-full min-w-0 text-left text-muted md:text-center lg:col-start-2 lg:col-end-12"].join(" "), n = "block min-w-0", r = "block", i = ["type-display-2 !font-normal text-balance", "col-span-full min-w-0 text-left text-muted md:text-center"].join(" "), a = "block min-w-0", o = "col-span-full min-w-0 text-pretty text-left type-lead text-fg md:mx-auto md:max-w-[42rem] md:text-center lg:col-start-4 lg:col-end-10", s = o, c = "col-span-full mt-2 flex min-w-0 flex-wrap items-center justify-start gap-3 md:justify-center";
4
4
  //#endregion
5
- export { t as heroIntroCopyClasses, o as heroIntroDescriptionClasses, i as heroIntroDisplayCopyClasses, s as heroIntroDisplayDescriptionClasses, a as heroIntroDisplayLeadClasses, n as heroIntroLeadClasses, e as heroIntroPageClasses, r as heroIntroRestClasses };
5
+ export { c as heroIntroActionsClasses, t as heroIntroCopyClasses, o as heroIntroDescriptionClasses, i as heroIntroDisplayCopyClasses, s as heroIntroDisplayDescriptionClasses, a as heroIntroDisplayLeadClasses, n as heroIntroLeadClasses, e as heroIntroPageClasses, r as heroIntroRestClasses };
@@ -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;;;;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"}
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;AA+BD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,UAA6B,EAC7B,OAAc,EACd,IAAW,EACX,SAAS,GACV,EAAE,eAAe,+BAuFjB"}
@@ -29,8 +29,8 @@ function f(e, t = 400) {
29
29
  }
30
30
  function p(e, t, n) {
31
31
  if (e === "name") return t.name.trim().length === 0 ? "Enter your name." : void 0;
32
- if (e === "email") return t.email.trim().length === 0 ? "Please enter a valid email address." : u.test(t.email.trim()) ? void 0 : "Please enter a valid email address.";
33
- if (e === "url") return d(t.url) ? void 0 : "Please enter a valid URL.";
32
+ if (e === "email") return t.email.trim().length === 0 ? "Enter your email address." : u.test(t.email.trim()) ? void 0 : "Enter an email address like name@example.com.";
33
+ if (e === "url") return d(t.url) ? void 0 : "Enter a website address like example.com.";
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
  }
@@ -101,7 +101,6 @@ function m({ values: i, onChange: l, detailsMax: u = 400, company: d = !0, link:
101
101
  type: "url",
102
102
  inputMode: "url",
103
103
  autoComplete: "url",
104
- placeholder: "https://",
105
104
  value: i.url,
106
105
  status: x == null ? void 0 : "error",
107
106
  message: x,
@@ -113,14 +112,13 @@ function m({ values: i, onChange: l, detailsMax: u = 400, company: d = !0, link:
113
112
  })
114
113
  }) : null,
115
114
  /* @__PURE__ */ s(r, {
116
- label: "Project details",
115
+ label: "What should feel different when this work is done?",
117
116
  description: S == null ? `${i.details.length} / ${u}` : void 0,
118
117
  children: /* @__PURE__ */ s(n, {
119
- "aria-label": "Project details",
118
+ "aria-label": "What should feel different when this work is done?",
120
119
  rows: 5,
121
120
  maxLength: u,
122
121
  value: i.details,
123
- placeholder: "What should feel different when this work is done?",
124
122
  status: S == null ? void 0 : "error",
125
123
  message: S,
126
124
  onBlur: () => _("details"),
@@ -27,9 +27,10 @@ export declare const promptBarEndSlotClasses = "flex shrink-0 items-end gap-2";
27
27
  */
28
28
  export declare const promptBarFieldClasses: string;
29
29
  /**
30
- * No focus ring on the circle. IconButton's ring-offset would sit on the pill border.
30
+ * The send circle shows its own ring, hugging it (no offset, which would sit on the pill border), and
31
+ * takes a 44px tap area on touch screens (F10).
31
32
  */
32
- export declare const promptBarSendClasses = "focus-visible:!ring-0 focus-visible:!ring-offset-0 focus-visible:!shadow-none";
33
+ export declare const promptBarSendClasses = "relative focus-visible:!ring-offset-0 pointer-coarse:after:absolute pointer-coarse:after:-inset-1 pointer-coarse:after:content-['']";
33
34
  /** Enabled send — existing brand navy, not a new blue. */
34
35
  export declare const promptBarSendReadyClasses = "!bg-brand !text-on-brand hover:!bg-brand active:!bg-brand";
35
36
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"promptBarStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/promptBarStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAGN,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;CAGhC,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uDAAuD,CAAC;AAE9F,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAEf,CAAC;AAEpB;;GAEG;AACH,eAAO,MAAM,oBAAoB,kFACgD,CAAC;AAElF,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,8DAA8D,CAAC;AAErG;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qDAAqD,CAAC"}
1
+ {"version":3,"file":"promptBarStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/PromptBar/promptBarStyles.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAMN,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;CAGhC,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uDAAuD,CAAC;AAE9F,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAEf,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,oBAAoB,wIACsG,CAAC;AAExI,0DAA0D;AAC1D,eAAO,MAAM,yBAAyB,8DAA8D,CAAC;AAErG;;;GAGG;AACH,eAAO,MAAM,yBAAyB,qDAAqD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { focusRingTransitionClasses as e } from "../../../lib/motion.js";
3
3
  //#region src/components/molecules/PromptBar/promptBarStyles.ts
4
- var t = "flex w-full items-end gap-2 rounded-[1.625rem] border border-border-control bg-surface p-2 focus-within:outline-none focus-within:ring-2 focus-within:ring-inset focus-within:ring-focus-ring " + e, n = {
4
+ var t = "flex w-full items-end gap-2 rounded-[1.625rem] border border-border-control bg-surface p-2 has-[textarea:focus-visible]:outline-none has-[textarea:focus-visible]:ring-2 has-[textarea:focus-visible]:ring-inset has-[textarea:focus-visible]:ring-focus-ring has-[input:focus-visible]:outline-none has-[input:focus-visible]:ring-2 has-[input:focus-visible]:ring-inset has-[input:focus-visible]:ring-focus-ring " + e, n = {
5
5
  field: "pl-5",
6
6
  slot: "pl-2"
7
- }, r = "mr-1 flex h-9 shrink-0 items-center justify-center", i = "flex shrink-0 items-end gap-2", a = "min-h-9 min-w-0 flex-1 overflow-y-auto py-2 type-body [field-sizing:content] max-h-[4.75rem]", o = "focus-visible:!ring-0 focus-visible:!ring-offset-0 focus-visible:!shadow-none", s = "!bg-brand !text-on-brand hover:!bg-brand active:!bg-brand", c = "!bg-neutral !text-disabled disabled:!opacity-100";
7
+ }, r = "mr-1 flex h-9 shrink-0 items-center justify-center", i = "flex shrink-0 items-end gap-2", a = "min-h-9 min-w-0 flex-1 overflow-y-auto py-2 type-body pointer-coarse:text-base [field-sizing:content] max-h-[4.75rem]", o = "relative focus-visible:!ring-offset-0 pointer-coarse:after:absolute pointer-coarse:after:-inset-1 pointer-coarse:after:content-['']", s = "!bg-brand !text-on-brand hover:!bg-brand active:!bg-brand", c = "!bg-neutral !text-disabled disabled:!opacity-100";
8
8
  //#endregion
9
9
  export { i as promptBarEndSlotClasses, a as promptBarFieldClasses, o as promptBarSendClasses, c as promptBarSendMutedClasses, s as promptBarSendReadyClasses, t as promptBarShellClasses, n as promptBarShellStartPadClasses, r as promptBarStartSlotClasses };
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAUL,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qDAAqD;AACrD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAaD,iBAAS,cAAc,CAAC,EACtB,KAAK,EACL,WAAmB,EACnB,WAAW,EACX,KAAK,EACL,aAAa,EACb,IAAI,EACJ,WAAwB,EACxB,IAAW,EACX,QAAgB,EAChB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,+BA6EjB;AAED,eAAO,MAAM,UAAU;;CAErB,CAAC"}
1
+ {"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/molecules/RadioGroup/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjF,OAAO,EAUL,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,qDAAqD;AACrD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC;AAaD,iBAAS,cAAc,CAAC,EACtB,KAAK,EACL,WAAmB,EACnB,WAAW,EACX,KAAK,EACL,aAAa,EACb,IAAI,EACJ,WAAwB,EACxB,IAAW,EACX,QAAgB,EAChB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,+BA8EjB;AAED,eAAO,MAAM,UAAU;;CAErB,CAAC"}