@thewhatmatters/wmds 0.4.7 → 0.4.8

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 (175) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONSUMING.md +3 -0
  3. package/dist/components/molecules/LinkTile/LinkTile.d.ts +45 -0
  4. package/dist/components/molecules/LinkTile/LinkTile.d.ts.map +1 -0
  5. package/dist/components/molecules/LinkTile/LinkTile.js +115 -0
  6. package/dist/components/molecules/LinkTile/linkTileStyles.d.ts +31 -0
  7. package/dist/components/molecules/LinkTile/linkTileStyles.d.ts.map +1 -0
  8. package/dist/components/molecules/LinkTile/linkTileStyles.js +8 -0
  9. package/dist/components/molecules/TileGrid/TileGrid.d.ts +42 -0
  10. package/dist/components/molecules/TileGrid/TileGrid.d.ts.map +1 -0
  11. package/dist/components/molecules/TileGrid/TileGrid.js +94 -0
  12. package/dist/components/molecules/TileGrid/tileGridMath.d.ts +8 -0
  13. package/dist/components/molecules/TileGrid/tileGridMath.d.ts.map +1 -0
  14. package/dist/components/molecules/TileGrid/tileGridMath.js +20 -0
  15. package/dist/components/molecules/TileGrid/tileGridStyles.d.ts +33 -0
  16. package/dist/components/molecules/TileGrid/tileGridStyles.d.ts.map +1 -0
  17. package/dist/components/molecules/TileGrid/tileGridStyles.js +16 -0
  18. package/dist/components/organisms/Dialog/Dialog.d.ts +12 -2
  19. package/dist/components/organisms/Dialog/Dialog.d.ts.map +1 -1
  20. package/dist/components/organisms/Dialog/Dialog.js +46 -44
  21. package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts +3 -1
  22. package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts.map +1 -1
  23. package/dist/components/organisms/Dialog/OverlayPanelHeader.js +20 -17
  24. package/dist/components/organisms/Dialog/dialogStyles.d.ts +5 -1
  25. package/dist/components/organisms/Dialog/dialogStyles.d.ts.map +1 -1
  26. package/dist/components/organisms/Dialog/dialogStyles.js +13 -11
  27. package/dist/components/organisms/FilterPanel/FilterPanel.d.ts +54 -0
  28. package/dist/components/organisms/FilterPanel/FilterPanel.d.ts.map +1 -0
  29. package/dist/components/organisms/FilterPanel/FilterPanel.js +137 -0
  30. package/dist/components/organisms/FilterPanel/filterSelection.d.ts +44 -0
  31. package/dist/components/organisms/FilterPanel/filterSelection.d.ts.map +1 -0
  32. package/dist/components/organisms/FilterPanel/filterSelection.js +35 -0
  33. package/dist/index.d.ts +3 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +73 -67
  36. package/dist/lib/compositionAudit.d.ts.map +1 -1
  37. package/dist/styles.css +1 -1
  38. package/docs/components.md +7 -4
  39. package/docs/exports.json +43 -2
  40. package/docs/patterns/components-accordion--flush.tsx +1 -1
  41. package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
  42. package/docs/patterns/components-badge--outline-tags.tsx +1 -1
  43. package/docs/patterns/components-badge--with-avatar.tsx +1 -1
  44. package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
  45. package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
  46. package/docs/patterns/components-breadcrumb--path.tsx +1 -1
  47. package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
  48. package/docs/patterns/components-button-button--copy-button.tsx +1 -1
  49. package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
  50. package/docs/patterns/components-button-button--external-link.tsx +1 -1
  51. package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
  52. package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
  53. package/docs/patterns/components-button-button--link-render.tsx +1 -1
  54. package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
  55. package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
  56. package/docs/patterns/components-button-button--primary-action.tsx +1 -1
  57. package/docs/patterns/components-button-button--row-hug.tsx +1 -1
  58. package/docs/patterns/components-button-button--row-layout.tsx +1 -1
  59. package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
  60. package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
  61. package/docs/patterns/components-button-button--with-count.tsx +1 -1
  62. package/docs/patterns/components-button-button--with-icon.tsx +1 -1
  63. package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
  64. package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
  65. package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
  66. package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
  67. package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
  68. package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
  69. package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
  70. package/docs/patterns/components-carousel--image-carousel.tsx +1 -1
  71. package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
  72. package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
  73. package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
  74. package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
  75. package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
  76. package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
  77. package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
  78. package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
  79. package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
  80. package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
  81. package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
  82. package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
  83. package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
  84. package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
  85. package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
  86. package/docs/patterns/components-descriptionlist--details.tsx +1 -1
  87. package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
  88. package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
  89. package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
  90. package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
  91. package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
  92. package/docs/patterns/components-field--horizontal-input.tsx +1 -1
  93. package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
  94. package/docs/patterns/components-field--multi-control.tsx +1 -1
  95. package/docs/patterns/components-filterpanel--panel.tsx +55 -0
  96. package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
  97. package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
  98. package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
  99. package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
  100. package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
  101. package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
  102. package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
  103. package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
  104. package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
  105. package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
  106. package/docs/patterns/components-indexlist--post-index.tsx +1 -1
  107. package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
  108. package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
  109. package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
  110. package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
  111. package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
  112. package/docs/patterns/components-kbd--command-row.tsx +1 -1
  113. package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
  114. package/docs/patterns/components-kbd--shortcut.tsx +1 -1
  115. package/docs/patterns/components-linktile--resource-tile.tsx +33 -0
  116. package/docs/patterns/components-linktile--router-link.tsx +25 -0
  117. package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
  118. package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
  119. package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
  120. package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
  121. package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
  122. package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
  123. package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
  124. package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
  125. package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
  126. package/docs/patterns/components-prose--article-body.tsx +1 -1
  127. package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
  128. package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
  129. package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
  130. package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
  131. package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
  132. package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
  133. package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
  134. package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
  135. package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
  136. package/docs/patterns/components-sitenav--compact.tsx +1 -1
  137. package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
  138. package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
  139. package/docs/patterns/components-stat--insights-row.tsx +1 -1
  140. package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
  141. package/docs/patterns/components-switch--default.tsx +1 -1
  142. package/docs/patterns/components-switch--settings-row.tsx +1 -1
  143. package/docs/patterns/components-tab--settings-pages.tsx +1 -1
  144. package/docs/patterns/components-taskrows--action-details.tsx +1 -1
  145. package/docs/patterns/components-taskrows--capsules.tsx +1 -1
  146. package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
  147. package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
  148. package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
  149. package/docs/patterns/components-taskrows--status-list.tsx +1 -1
  150. package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
  151. package/docs/patterns/components-textlink--external-destination.tsx +1 -1
  152. package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
  153. package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
  154. package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
  155. package/docs/patterns/components-textsequence--default.tsx +1 -1
  156. package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
  157. package/docs/patterns/components-textsequence--shapes.tsx +1 -1
  158. package/docs/patterns/components-tilegrid--masonry.tsx +44 -0
  159. package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
  160. package/docs/patterns/components-tooltip--controlled.tsx +1 -1
  161. package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
  162. package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
  163. package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
  164. package/docs/patterns/components-tooltip--placement.tsx +1 -1
  165. package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
  166. package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
  167. package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
  168. package/docs/patterns/guides-filter-panel--filtered-grid.tsx +182 -0
  169. package/docs/patterns/guides-filter-panel--filtered-index.tsx +64 -153
  170. package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
  171. package/docs/patterns/guides-post-page--post-page.tsx +98 -54
  172. package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
  173. package/docs/patterns/guides-resource-detail--detail.tsx +261 -0
  174. package/docs/patterns/index.json +49 -1
  175. package/package.json +1 -1
@@ -11,58 +11,58 @@ import { jsx as S, jsxs as C } from "react/jsx-runtime";
11
11
  import { AnimatePresence as w, motion as T } from "motion/react";
12
12
  import { createPortal as E } from "react-dom";
13
13
  //#region src/components/organisms/Dialog/Dialog.tsx
14
- function D({ role: e, "aria-labelledby": n, "aria-describedby": a, initialFocusSelector: o, children: s }) {
15
- let { open: c, onOpenChange: l, dismissOnBackdrop: u, dismissOnEscape: d, triggerRef: f } = _("DialogPortal"), g = x(null), v = x(null), D = y(() => {
16
- l(!1);
17
- }, [l]);
14
+ function D({ role: n, "aria-labelledby": a, "aria-describedby": o, initialFocusSelector: s, fill: c = !1, children: l }) {
15
+ let { open: u, onOpenChange: d, dismissOnBackdrop: f, dismissOnEscape: g, triggerRef: v } = _("DialogPortal"), D = x(null), O = x(null), k = y(() => {
16
+ d(!1);
17
+ }, [d]);
18
18
  b(() => {
19
- if (!c) return;
20
- v.current = f.current ?? document.activeElement;
21
- let e = m(), t = g.current, n = () => {};
19
+ if (!u) return;
20
+ O.current = v.current ?? document.activeElement;
21
+ let e = m(), t = D.current, n = () => {};
22
22
  return t != null && (n = h(t), window.requestAnimationFrame(() => {
23
- p(t, o);
23
+ p(t, s);
24
24
  })), () => {
25
- n(), e(), v.current?.focus?.();
25
+ n(), e(), O.current?.focus?.();
26
26
  };
27
27
  }, [
28
- o,
29
- c,
30
- f
28
+ s,
29
+ u,
30
+ v
31
31
  ]), b(() => {
32
- if (!c || !d) return;
32
+ if (!u || !g) return;
33
33
  function e(e) {
34
- e.key === "Escape" && (e.preventDefault(), D());
34
+ e.key === "Escape" && (e.preventDefault(), k());
35
35
  }
36
36
  return document.addEventListener("keydown", e), () => {
37
37
  document.removeEventListener("keydown", e);
38
38
  };
39
39
  }, [
40
- D,
41
- d,
42
- c
40
+ k,
41
+ g,
42
+ u
43
43
  ]);
44
- function O(e) {
45
- if (!u) return;
44
+ function A(e) {
45
+ if (!f) return;
46
46
  let t = e.target;
47
- g.current?.contains(t) || D();
47
+ D.current?.contains(t) || k();
48
48
  }
49
- return typeof document > "u" ? null : E(/* @__PURE__ */ S(w, { children: c ? /* @__PURE__ */ C(T.div, {
50
- className: i,
49
+ return typeof document > "u" ? null : E(/* @__PURE__ */ S(w, { children: u ? /* @__PURE__ */ C(T.div, {
50
+ className: e(i, c && "max-md:p-0 md:p-6"),
51
51
  initial: { opacity: 0 },
52
52
  animate: { opacity: 1 },
53
53
  exit: { opacity: 0 },
54
54
  transition: t("medium"),
55
- onMouseDown: O,
55
+ onMouseDown: A,
56
56
  children: [/* @__PURE__ */ S("div", {
57
57
  className: r,
58
58
  "aria-hidden": "true"
59
59
  }), /* @__PURE__ */ S(T.div, {
60
- ref: g,
61
- className: "relative z-[1] flex w-full justify-center",
62
- role: e,
60
+ ref: D,
61
+ className: e("relative z-[1] flex w-full justify-center", c && "h-full items-center"),
62
+ role: n,
63
63
  "aria-modal": "true",
64
- "aria-labelledby": n,
65
- "aria-describedby": a,
64
+ "aria-labelledby": a,
65
+ "aria-describedby": o,
66
66
  initial: {
67
67
  opacity: 0,
68
68
  scale: .96,
@@ -82,7 +82,7 @@ function D({ role: e, "aria-labelledby": n, "aria-describedby": a, initialFocusS
82
82
  onMouseDown: (e) => {
83
83
  e.stopPropagation();
84
84
  },
85
- children: s
85
+ children: l
86
86
  })]
87
87
  }) : null }), document.body);
88
88
  }
@@ -113,38 +113,40 @@ function k({ children: e, className: t }) {
113
113
  children: e
114
114
  });
115
115
  }
116
- function A({ title: t, description: r, headerStart: i, showClose: s = !0, footer: p, size: m = "md", className: h, children: g }) {
117
- let { titleId: v, descriptionId: y, onOpenChange: b } = _("Dialog.Content"), x = t != null, w = r != null, T = g != null || !x && w, E = p != null, O = T || E;
116
+ function A({ title: t, description: r, headerStart: i, showClose: s = !0, headerEnd: p, footer: m, size: h = "md", "aria-labelledby": g, className: v, children: y }) {
117
+ let { titleId: b, descriptionId: x, onOpenChange: w } = _("Dialog.Content"), T = t != null, E = r != null, O = y != null || !T && E, k = m != null, A = O || k;
118
118
  return /* @__PURE__ */ S(D, {
119
119
  role: "dialog",
120
- "aria-labelledby": x ? v : void 0,
121
- "aria-describedby": w ? y : void 0,
120
+ "aria-labelledby": T ? b : g,
121
+ "aria-describedby": E ? x : void 0,
122
+ fill: h === "full",
122
123
  children: /* @__PURE__ */ C(n, {
123
124
  padding: "none",
124
- bodyTerminal: p == null,
125
- className: e(o[m], c, d, a, h),
125
+ bodyTerminal: m == null,
126
+ className: e(o[h], c, h === "full" ? void 0 : d, a, v),
126
127
  children: [
127
128
  /* @__PURE__ */ S(f, {
128
- titleId: v,
129
- descriptionId: y,
129
+ titleId: b,
130
+ descriptionId: x,
130
131
  title: t,
131
132
  description: r,
132
133
  headerStart: i,
134
+ headerEnd: p,
133
135
  showClose: s,
134
136
  closeLabel: "Close dialog",
135
- onClose: () => b(!1)
137
+ onClose: () => w(!1)
136
138
  }),
137
- O ? /* @__PURE__ */ C("div", {
139
+ A ? /* @__PURE__ */ C("div", {
138
140
  className: l,
139
- children: [!x && w ? /* @__PURE__ */ S("p", {
140
- id: y,
141
+ children: [!T && E ? /* @__PURE__ */ S("p", {
142
+ id: x,
141
143
  className: "text-muted",
142
144
  children: r
143
- }) : null, g]
145
+ }) : null, y]
144
146
  }) : null,
145
- E ? /* @__PURE__ */ S("footer", {
147
+ k ? /* @__PURE__ */ S("footer", {
146
148
  className: u,
147
- children: p
149
+ children: m
148
150
  }) : null
149
151
  ]
150
152
  })
@@ -10,6 +10,8 @@ export interface OverlayPanelHeaderProps {
10
10
  descriptionClassName?: string;
11
11
  /** Leading slot — Lucide glyph, **Badge**, **Status**; same role as **Card.Header** `start`. */
12
12
  headerStart?: ReactNode;
13
+ /** Actions before the close — **IconButton** `size="sm"`, for example previous and next. */
14
+ headerEnd?: ReactNode;
13
15
  showClose?: boolean;
14
16
  closeLabel?: string;
15
17
  onClose?: () => void;
@@ -17,5 +19,5 @@ export interface OverlayPanelHeaderProps {
17
19
  delineated?: boolean;
18
20
  className?: string;
19
21
  }
20
- export declare function OverlayPanelHeader({ titleId, descriptionId, title, description, titleClassName, descriptionClassName, headerStart, showClose, closeLabel, onClose, delineated, className, }: OverlayPanelHeaderProps): import("react").JSX.Element | null;
22
+ export declare function OverlayPanelHeader({ titleId, descriptionId, title, description, titleClassName, descriptionClassName, headerStart, headerEnd, showClose, closeLabel, onClose, delineated, className, }: OverlayPanelHeaderProps): import("react").JSX.Element | null;
21
23
  //# sourceMappingURL=OverlayPanelHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayPanelHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Dialog/OverlayPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBvC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gGAAgG;IAChG,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,aAAa,EACb,KAAK,EACL,WAAW,EACX,cAAiC,EACjC,oBAA0C,EAC1C,WAAW,EACX,SAAgB,EAChB,UAAoB,EACpB,OAAO,EACP,UAAkB,EAClB,SAAS,GACV,EAAE,uBAAuB,sCA4DzB"}
1
+ {"version":3,"file":"OverlayPanelHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Dialog/OverlayPanelHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBvC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gGAAgG;IAChG,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,aAAa,EACb,KAAK,EACL,WAAW,EACX,cAAiC,EACjC,oBAA0C,EAC1C,WAAW,EACX,SAAS,EACT,SAAgB,EAChB,UAAoB,EACpB,OAAO,EACP,UAAkB,EAClB,SAAS,GACV,EAAE,uBAAuB,sCAiEzB"}
@@ -7,44 +7,47 @@ import { overlayPanelHeaderClasses as a, overlayPanelHeaderDelineatedInnerClasse
7
7
  import { X as u } from "lucide-react";
8
8
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
9
  //#region src/components/organisms/Dialog/OverlayPanelHeader.tsx
10
- function p({ titleId: p, descriptionId: m, title: h, description: g, titleClassName: _ = r, descriptionClassName: v = n, headerStart: y, showClose: b = !0, closeLabel: x = "Close", onClose: S, delineated: C = !1, className: w }) {
11
- let T = h != null, E = g != null;
12
- if (!T && !b && y == null) return null;
13
- let D = /* @__PURE__ */ d(i.Header, {
14
- className: e(a, C ? o : void 0, w),
15
- start: y != null || T ? /* @__PURE__ */ f("div", {
10
+ function p({ titleId: p, descriptionId: m, title: h, description: g, titleClassName: _ = r, descriptionClassName: v = n, headerStart: y, headerEnd: b, showClose: x = !0, closeLabel: S = "Close", onClose: C, delineated: w = !1, className: T }) {
11
+ let E = h != null, D = g != null;
12
+ if (!E && !x && y == null && b == null) return null;
13
+ let O = /* @__PURE__ */ d(i.Header, {
14
+ className: e(a, w ? o : void 0, T),
15
+ start: y != null || E ? /* @__PURE__ */ f("div", {
16
16
  className: c,
17
17
  children: [y == null ? null : /* @__PURE__ */ d("div", {
18
18
  className: l,
19
19
  children: y
20
- }), T ? /* @__PURE__ */ f("div", {
20
+ }), E ? /* @__PURE__ */ f("div", {
21
21
  className: "flex min-w-0 flex-col gap-0",
22
22
  children: [/* @__PURE__ */ d("h2", {
23
23
  id: p,
24
24
  className: _,
25
25
  children: h
26
- }), E ? /* @__PURE__ */ d("p", {
26
+ }), D ? /* @__PURE__ */ d("p", {
27
27
  id: m,
28
28
  className: v,
29
29
  children: g
30
30
  }) : null]
31
31
  }) : null]
32
32
  }) : null,
33
- end: b ? /* @__PURE__ */ d(t, {
34
- size: "sm",
35
- role: "ghost",
36
- icon: /* @__PURE__ */ d(u, { strokeWidth: 2 }),
37
- "aria-label": x,
38
- onClick: () => S?.()
33
+ end: x || b != null ? /* @__PURE__ */ f("div", {
34
+ className: "flex items-center gap-1",
35
+ children: [b, x ? /* @__PURE__ */ d(t, {
36
+ size: "sm",
37
+ role: "ghost",
38
+ icon: /* @__PURE__ */ d(u, { strokeWidth: 2 }),
39
+ "aria-label": S,
40
+ onClick: () => C?.()
41
+ }) : null]
39
42
  }) : null
40
43
  });
41
- return C ? /* @__PURE__ */ f("div", {
44
+ return w ? /* @__PURE__ */ f("div", {
42
45
  className: e(a, "w-full"),
43
- children: [D, /* @__PURE__ */ d("hr", {
46
+ children: [O, /* @__PURE__ */ d("hr", {
44
47
  className: s,
45
48
  "aria-hidden": "true"
46
49
  })]
47
- }) : D;
50
+ }) : O;
48
51
  }
49
52
  //#endregion
50
53
  export { p as OverlayPanelHeader };
@@ -1,4 +1,4 @@
1
- export declare const dialogSizes: readonly ["sm", "md", "lg"];
1
+ export declare const dialogSizes: readonly ["sm", "md", "lg", "full"];
2
2
  export type DialogSize = (typeof dialogSizes)[number];
3
3
  /** Full-viewport stack — backdrop + centered panel. */
4
4
  export declare const dialogOverlayRootClasses = "fixed inset-0 z-[100] flex items-center justify-center p-4";
@@ -6,6 +6,10 @@ export declare const dialogOverlayRootClasses = "fixed inset-0 z-[100] flex item
6
6
  export declare const dialogBackdropClasses: string;
7
7
  /** Centered panel width — layout-only on the Card shell. */
8
8
  export declare const dialogPanelSizeClasses: Record<DialogSize, string>;
9
+ /** `size="full"` — no margin around the panel on phones, a wider one from tablet up. */
10
+ export declare const dialogOverlayRootFullClasses = "max-md:p-0 md:p-6";
11
+ /** `size="full"` — the panel's box fills the overlay, so the Card inside can take its height. */
12
+ export declare const dialogPanelBoxFullClasses = "h-full items-center";
9
13
  /** Dialog body copy — typography only; horizontal inset comes from section stack / header. */
10
14
  export declare const dialogBodyCopyClasses: string;
11
15
  /** Muted copy in the dialog body slot — shared by **Dialog** and **AlertDialog**. */
@@ -1 +1 @@
1
- {"version":3,"file":"dialogStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Dialog/dialogStyles.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,6BAA8B,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,uDAAuD;AACvD,eAAO,MAAM,wBAAwB,+DAA+D,CAAC;AAErG,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,QAIjC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAI7D,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,QAAyC,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,QAA0C,CAAC;AAE9E,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AAExD,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,QAAoC,CAAC;AAEnE,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAG/B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,QAAsB,CAAC;AAE5D,4CAA4C;AAC5C,eAAO,MAAM,0BAA0B,iDAAiD,CAAC;AAEzF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAEpD,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,mDAAmD,CAAC;AAE5F,eAAO,MAAM,iCAAiC,QAA8C,CAAC;AAE7F,eAAO,MAAM,iCAAiC,QAA8C,CAAC;AAE7F,iGAAiG;AACjG,eAAO,MAAM,wCAAwC,QAGpD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,wCAAwC,SAAS,CAAC;AAE/D,uGAAuG;AACvG,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,qCAAqC,0CACT,CAAC;AAE1C,qDAAqD;AACrD,eAAO,MAAM,kCAAkC,wGACwD,CAAC;AAExG,qDAAqD;AACrD,eAAO,MAAM,wBAAwB,QAA+C,CAAC;AAErF,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AAEtE,eAAO,MAAM,+BAA+B,QAAyC,CAAC;AAEtF,eAAO,MAAM,6BAA6B,QAIzC,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAsC,CAAC;AAE7E,2GAA2G;AAC3G,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,kFAAkF;AAClF,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,+BAA+B,QAAwC,CAAC;AAErF,2DAA2D;AAC3D,eAAO,MAAM,wCAAwC,oBAAoB,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,wCAAwC,QAGpD,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,8BAA8B,QAG1C,CAAC"}
1
+ {"version":3,"file":"dialogStyles.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/Dialog/dialogStyles.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,qCAAsC,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,uDAAuD;AACvD,eAAO,MAAM,wBAAwB,+DAA+D,CAAC;AAErG,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,QAIjC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAM7D,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,sBAAsB,CAAC;AAEhE,iGAAiG;AACjG,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,QAAyC,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,sBAAsB,QAA0C,CAAC;AAE9E,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AAExD,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,QAAoC,CAAC;AAEnE,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,QAG/B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,QAAsB,CAAC;AAE5D,4CAA4C;AAC5C,eAAO,MAAM,0BAA0B,iDAAiD,CAAC;AAEzF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF,qEAAqE;AACrE,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,eAAO,MAAM,yBAAyB,aAAa,CAAC;AAEpD,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,mDAAmD,CAAC;AAE5F,eAAO,MAAM,iCAAiC,QAA8C,CAAC;AAE7F,eAAO,MAAM,iCAAiC,QAA8C,CAAC;AAE7F,iGAAiG;AACjG,eAAO,MAAM,wCAAwC,QAGpD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,wCAAwC,SAAS,CAAC;AAE/D,uGAAuG;AACvG,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,qCAAqC,0CACT,CAAC;AAE1C,qDAAqD;AACrD,eAAO,MAAM,kCAAkC,wGACwD,CAAC;AAExG,qDAAqD;AACrD,eAAO,MAAM,wBAAwB,QAA+C,CAAC;AAErF,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AAEtE,eAAO,MAAM,+BAA+B,QAAyC,CAAC;AAEtF,eAAO,MAAM,6BAA6B,QAIzC,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAsC,CAAC;AAE7E,2GAA2G;AAC3G,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C,kFAAkF;AAClF,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,+BAA+B,QAAwC,CAAC;AAErF,2DAA2D;AAC3D,eAAO,MAAM,wCAAwC,oBAAoB,CAAC;AAE1E,+DAA+D;AAC/D,eAAO,MAAM,wCAAwC,QAGpD,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,mCAAmC,QAG/C,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,8BAA8B,QAG1C,CAAC"}
@@ -7,18 +7,20 @@ import { cardLayoutSectionInsetXClasses as r, cardTitleClasses as i } from "../.
7
7
  var a = [
8
8
  "sm",
9
9
  "md",
10
- "lg"
10
+ "lg",
11
+ "full"
11
12
  ], o = "fixed inset-0 z-[100] flex items-center justify-center p-4", s = e("absolute inset-0 bg-overlay", "transition-opacity", n("medium")), c = {
12
13
  sm: "w-full max-w-sm",
13
14
  md: "w-full max-w-lg",
14
- lg: "w-full max-w-2xl"
15
- }, l = e(t("body"), "text-fg"), u = e(l, "text-muted"), d = i;
16
- e(l, "px-4");
17
- var f = e(r, "flex w-full items-center justify-end gap-2"), p = "flex shrink-0 items-center justify-end gap-2", m = "flex min-h-0 flex-col overflow-hidden", h = "max-h-[min(85vh,100%)]", g = "shrink-0", _ = "m-0 w-full shrink-0 border-0 border-border p-0", v = e(_, "border-b"), y = e(_, "border-t"), b = e(g, "border-b border-border"), x = "pb-3";
18
- e(b, x);
19
- var S = "flex min-w-0 flex-1 items-start gap-3", C = "flex shrink-0 items-center pt-0.5 text-muted [&>svg]:size-5 [&>svg]:shrink-0 [&>svg]:stroke-current";
20
- e(l, "pt-1 text-muted");
21
- var w = "flex min-h-0 flex-col gap-3", T = e(w, "h-full"), E = e(l, r, "min-h-0 flex-1 overflow-y-auto overscroll-contain"), D = e(f, "shrink-0"), O = "gap-4", k = e(E, "py-1"), A = e(D, "pt-2"), j = "shrink-0 w-full", M = e(f, "pt-3 pb-4"), N = e(j, "border-t border-border pt-3");
22
- e(N, "pb-4");
15
+ lg: "w-full max-w-2xl",
16
+ full: "h-full w-full max-w-[90rem] max-md:rounded-none md:max-h-[60rem]"
17
+ }, l = "max-md:p-0 md:p-6", u = "h-full items-center", d = e(t("body"), "text-fg"), f = e(d, "text-muted"), p = i;
18
+ e(d, "px-4");
19
+ var m = e(r, "flex w-full items-center justify-end gap-2"), h = "flex shrink-0 items-center justify-end gap-2", g = "flex min-h-0 flex-col overflow-hidden", _ = "max-h-[min(85vh,100%)]", v = "shrink-0", y = "m-0 w-full shrink-0 border-0 border-border p-0", b = e(y, "border-b"), x = e(y, "border-t"), S = e(v, "border-b border-border"), C = "pb-3";
20
+ e(S, C);
21
+ var w = "flex min-w-0 flex-1 items-start gap-3", T = "flex shrink-0 items-center pt-0.5 text-muted [&>svg]:size-5 [&>svg]:shrink-0 [&>svg]:stroke-current";
22
+ e(d, "pt-1 text-muted");
23
+ var E = "flex min-h-0 flex-col gap-3", D = e(E, "h-full"), O = e(d, r, "min-h-0 flex-1 overflow-y-auto overscroll-contain"), k = e(m, "shrink-0"), A = "gap-4", j = e(O, "py-1"), M = e(k, "pt-2"), N = "shrink-0 w-full", P = e(m, "pt-3 pb-4"), F = e(N, "border-t border-border pt-3");
24
+ e(F, "pb-4");
23
25
  //#endregion
24
- export { d as alertDialogTitleClasses, s as dialogBackdropClasses, l as dialogBodyCopyClasses, u as dialogBodyMutedClasses, p as dialogFooterActionsClasses, f as dialogFooterClasses, o as dialogOverlayRootClasses, O as dialogPanelShellClasses, c as dialogPanelSizeClasses, a as dialogSizes, E as overlayPanelBodyScrollClasses, m as overlayPanelChromeClasses, k as overlayPanelDialogBodyScrollClasses, A as overlayPanelDialogFooterClasses, D as overlayPanelFooterClasses, N as overlayPanelFooterDelineatedClasses, M as overlayPanelFooterDelineatedInnerClasses, j as overlayPanelFooterDelineatedShellClasses, y as overlayPanelFooterHairlineClasses, _ as overlayPanelHairlineClasses, g as overlayPanelHeaderClasses, x as overlayPanelHeaderDelineatedInnerClasses, b as overlayPanelHeaderDelineatedShellClasses, v as overlayPanelHeaderHairlineClasses, S as overlayPanelHeaderStartClusterClasses, C as overlayPanelHeaderStartSlotClasses, h as overlayPanelMaxHeightClasses, T as overlayPanelSectionStackClasses, w as overlayPanelStackClasses };
26
+ export { p as alertDialogTitleClasses, s as dialogBackdropClasses, d as dialogBodyCopyClasses, f as dialogBodyMutedClasses, h as dialogFooterActionsClasses, m as dialogFooterClasses, o as dialogOverlayRootClasses, l as dialogOverlayRootFullClasses, u as dialogPanelBoxFullClasses, A as dialogPanelShellClasses, c as dialogPanelSizeClasses, a as dialogSizes, O as overlayPanelBodyScrollClasses, g as overlayPanelChromeClasses, j as overlayPanelDialogBodyScrollClasses, M as overlayPanelDialogFooterClasses, k as overlayPanelFooterClasses, F as overlayPanelFooterDelineatedClasses, P as overlayPanelFooterDelineatedInnerClasses, N as overlayPanelFooterDelineatedShellClasses, x as overlayPanelFooterHairlineClasses, y as overlayPanelHairlineClasses, v as overlayPanelHeaderClasses, C as overlayPanelHeaderDelineatedInnerClasses, S as overlayPanelHeaderDelineatedShellClasses, b as overlayPanelHeaderHairlineClasses, w as overlayPanelHeaderStartClusterClasses, T as overlayPanelHeaderStartSlotClasses, _ as overlayPanelMaxHeightClasses, D as overlayPanelSectionStackClasses, E as overlayPanelStackClasses };
@@ -0,0 +1,54 @@
1
+ import { type ReactElement, type ReactNode } from "react";
2
+ import { type FilterPanelGroup, type FilterSelection } from "./filterSelection";
3
+ export { countFilterOptions, filterFacetValues, filterSelectionCount, matchesFilterSelection, useFilterSelection, type FilterFacets, type FilterPanelGroup, type FilterPanelOption, type FilterSelection, type UseFilterSelectionOptions, } from "./filterSelection";
4
+ /** Layout-only — grid placement and which breakpoints show the part. */
5
+ export type FilterPanelLayoutClassName = string;
6
+ export interface FilterPanelLabels {
7
+ /** The panel's caption, the Sheet's title, and the trigger's label. Default: "Filters". */
8
+ title: string;
9
+ /** Default: "Clear all". */
10
+ clear: string;
11
+ /** The Sheet's closing button, from `resultsLabel`. Default: "Show 3 posts". */
12
+ show: (resultsLabel: string) => string;
13
+ }
14
+ export interface FilterPanelProps {
15
+ /** The filter groups, each with its options. `countFilterOptions` adds the counts. */
16
+ groups: FilterPanelGroup[];
17
+ /** The options on in each group. Hold it with `useFilterSelection`. */
18
+ selection: FilterSelection;
19
+ /** Every change: an option on or off, or Clear all (an empty selection). */
20
+ onSelectionChange: (selection: FilterSelection) => void;
21
+ /** What is showing, for the Sheet's closing button — "3 posts" reads "Show 3 posts". */
22
+ resultsLabel: string;
23
+ labels?: Partial<FilterPanelLabels>;
24
+ /** The page: **FilterPanel.Trigger**, **FilterPanel.Rail**, and **FilterPanel.Sheet** go anywhere inside. */
25
+ children?: ReactNode;
26
+ }
27
+ export interface FilterPanelRailProps {
28
+ /** Placement, and where it shows — for example `"hidden md:col-span-3 md:block"`. */
29
+ className?: FilterPanelLayoutClassName;
30
+ }
31
+ export interface FilterPanelTriggerProps {
32
+ /** Replaces the leading icon. */
33
+ icon?: ReactElement;
34
+ /** Placement, and where it shows — for example `"md:hidden"`. */
35
+ className?: FilterPanelLayoutClassName;
36
+ }
37
+ /**
38
+ * Checkbox filters for an index page — a side rail from tablet up and the same groups in a bottom
39
+ * **Sheet** on phones, over one selection. It renders no element of its own: place its parts on
40
+ * the page grid.
41
+ */
42
+ declare function FilterPanelRoot({ groups, selection, onSelectionChange, resultsLabel, labels, children }: FilterPanelProps): import("react").JSX.Element;
43
+ /** The side rail: the caption with Clear all at its end, over the groups. */
44
+ declare function FilterPanelRail({ className }: FilterPanelRailProps): import("react").JSX.Element;
45
+ /** Opens the Sheet. Its count is how many options are on. */
46
+ declare function FilterPanelTrigger({ icon, className }: FilterPanelTriggerProps): import("react").JSX.Element;
47
+ /** The same groups in a bottom Sheet, with Clear all and a button that closes it on the results. */
48
+ declare function FilterPanelSheet(): import("react").JSX.Element;
49
+ export declare const FilterPanel: typeof FilterPanelRoot & {
50
+ Rail: typeof FilterPanelRail;
51
+ Trigger: typeof FilterPanelTrigger;
52
+ Sheet: typeof FilterPanelSheet;
53
+ };
54
+ //# sourceMappingURL=FilterPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/FilterPanel/FilterPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAO/G,OAAO,EAAwB,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtG,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,yBAAyB,GAC/B,MAAM,mBAAmB,CAAC;AAE3B,wEAAwE;AACxE,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,sFAAsF;IACtF,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,uEAAuE;IACvE,SAAS,EAAE,eAAe,CAAC;IAC3B,4EAA4E;IAC5E,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACxD,wFAAwF;IACxF,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,6GAA6G;IAC7G,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,qFAAqF;IACrF,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,iEAAiE;IACjE,SAAS,CAAC,EAAE,0BAA0B,CAAC;CACxC;AA2BD;;;;GAIG;AACH,iBAAS,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,+BAiBlH;AAiCD,6EAA6E;AAC7E,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,EAAE,oBAAoB,+BAmB3D;AAED,6DAA6D;AAC7D,iBAAS,kBAAkB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAcvE;AAED,oGAAoG;AACpG,iBAAS,gBAAgB,gCAuBxB;AAED,eAAO,MAAM,WAAW;;;;CAItB,CAAC"}
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { Button as e } from "../../atoms/Button/Button.js";
3
+ import { SectionCaption as t } from "../../atoms/SectionCaption/SectionCaption.js";
4
+ import { Accordion as n } from "../../molecules/Accordion/Accordion.js";
5
+ import { CheckboxGroup as r } from "../../molecules/CheckboxGroup/CheckboxGroup.js";
6
+ import { Sheet as i } from "../Sheet/Sheet.js";
7
+ import { countFilterOptions as a, filterFacetValues as o, filterSelectionCount as s, matchesFilterSelection as c, useFilterSelection as l } from "./filterSelection.js";
8
+ import { createContext as u, useContext as d, useId as f, useMemo as p, useState as m } from "react";
9
+ import { SlidersHorizontal as h } from "lucide-react";
10
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
11
+ //#region src/components/organisms/FilterPanel/FilterPanel.tsx
12
+ var v = {
13
+ title: "Filters",
14
+ clear: "Clear all",
15
+ show: (e) => `Show ${e}`
16
+ }, y = u(null);
17
+ function b(e) {
18
+ let t = d(y);
19
+ if (t == null) throw Error(`[WMDS FilterPanel] ${e} must be inside <FilterPanel>.`);
20
+ return t;
21
+ }
22
+ function x({ groups: e, selection: t, onSelectionChange: n, resultsLabel: r, labels: i, children: a }) {
23
+ let [o, c] = m(!1), l = p(() => ({
24
+ groups: e,
25
+ selection: t,
26
+ onSelectionChange: n,
27
+ resultsLabel: r,
28
+ labels: {
29
+ ...v,
30
+ ...i
31
+ },
32
+ activeCount: s(t),
33
+ sheetOpen: o,
34
+ setSheetOpen: c
35
+ }), [
36
+ e,
37
+ t,
38
+ n,
39
+ r,
40
+ i,
41
+ o
42
+ ]);
43
+ return /* @__PURE__ */ g(y.Provider, {
44
+ value: l,
45
+ children: a
46
+ });
47
+ }
48
+ function S() {
49
+ let { groups: e, selection: t, onSelectionChange: i } = b("FilterPanel.Groups");
50
+ return /* @__PURE__ */ g(n, {
51
+ variant: "plain",
52
+ flush: !0,
53
+ children: e.map((e) => /* @__PURE__ */ g(n.Item, {
54
+ label: e.label,
55
+ defaultOpen: !0,
56
+ children: /* @__PURE__ */ g(r, {
57
+ label: e.label,
58
+ labelHidden: !0,
59
+ size: "sm",
60
+ values: t[e.id] ?? [],
61
+ onValuesChange: (n) => i({
62
+ ...t,
63
+ [e.id]: n
64
+ }),
65
+ children: e.options.map((e) => /* @__PURE__ */ g(r.Item, {
66
+ value: e.value,
67
+ label: e.label,
68
+ count: e.count,
69
+ countLabel: e.countLabel
70
+ }, e.value))
71
+ })
72
+ }, e.id))
73
+ });
74
+ }
75
+ function C({ className: n }) {
76
+ let { labels: r, activeCount: i, onSelectionChange: a } = b("FilterPanel.Rail"), o = f();
77
+ return /* @__PURE__ */ _("aside", {
78
+ "aria-labelledby": o,
79
+ className: n,
80
+ "data-filter-panel-rail": "",
81
+ children: [/* @__PURE__ */ g(t, {
82
+ id: o,
83
+ end: /* @__PURE__ */ g(e, {
84
+ role: "ghost",
85
+ size: "xs",
86
+ disabled: i === 0,
87
+ onClick: () => a({}),
88
+ children: r.clear
89
+ }),
90
+ children: r.title
91
+ }), /* @__PURE__ */ g(S, {})]
92
+ });
93
+ }
94
+ function w({ icon: t, className: n }) {
95
+ let { labels: r, activeCount: i, setSheetOpen: a } = b("FilterPanel.Trigger");
96
+ return /* @__PURE__ */ g(e, {
97
+ role: "secondary",
98
+ icon: t ?? /* @__PURE__ */ g(h, {}),
99
+ count: i > 0 ? i : void 0,
100
+ className: n,
101
+ onClick: () => a(!0),
102
+ children: r.title
103
+ });
104
+ }
105
+ function T() {
106
+ let { labels: t, activeCount: n, onSelectionChange: r, resultsLabel: a, sheetOpen: o, setSheetOpen: s } = b("FilterPanel.Sheet");
107
+ return /* @__PURE__ */ g(i, {
108
+ open: o,
109
+ onOpenChange: s,
110
+ children: /* @__PURE__ */ g(i.Content, {
111
+ title: t.title,
112
+ footer: /* @__PURE__ */ _("div", {
113
+ className: "flex items-center justify-end gap-2",
114
+ children: [/* @__PURE__ */ g(e, {
115
+ role: "secondary",
116
+ size: "sm",
117
+ disabled: n === 0,
118
+ onClick: () => r({}),
119
+ children: t.clear
120
+ }), /* @__PURE__ */ g(e, {
121
+ role: "primary",
122
+ size: "sm",
123
+ onClick: () => s(!1),
124
+ children: t.show(a)
125
+ })]
126
+ }),
127
+ children: /* @__PURE__ */ g(S, {})
128
+ })
129
+ });
130
+ }
131
+ var E = Object.assign(x, {
132
+ Rail: C,
133
+ Trigger: w,
134
+ Sheet: T
135
+ });
136
+ //#endregion
137
+ export { E as FilterPanel, a as countFilterOptions, o as filterFacetValues, s as filterSelectionCount, c as matchesFilterSelection, l as useFilterSelection };
@@ -0,0 +1,44 @@
1
+ /** An item's options in each filter group, by group id — one or several, for example `{ topic: ["guides", "brand"] }`. */
2
+ export type FilterFacets = Record<string, string | string[]>;
3
+ /** The options on in each group, by group id — for example `{ topic: ["guides"] }`. */
4
+ export type FilterSelection = Record<string, string[]>;
5
+ export interface FilterPanelOption {
6
+ value: string;
7
+ label: string;
8
+ /** How many items carry this option — a muted number at the row's end. `countFilterOptions` fills it. */
9
+ count?: number;
10
+ /** What the count counts, for screen readers — "2 posts". */
11
+ countLabel?: string;
12
+ }
13
+ export interface FilterPanelGroup {
14
+ id: string;
15
+ label: string;
16
+ options: FilterPanelOption[];
17
+ }
18
+ /** An item's options in one group, as a list. */
19
+ export declare function filterFacetValues(facets: FilterFacets, groupId: string): string[];
20
+ /**
21
+ * Whether an item shows: in every group with options on, it has at least one of them. Within a
22
+ * group the options are alternatives; across groups they combine.
23
+ */
24
+ export declare function matchesFilterSelection(facets: FilterFacets, selection: FilterSelection): boolean;
25
+ /** How many options are on, across all groups. */
26
+ export declare function filterSelectionCount(selection: FilterSelection): number;
27
+ /**
28
+ * The groups with each option's `count` over all items (not only the ones showing), and its
29
+ * `countLabel` when `label` is passed — `countFilterOptions(groups, posts, (n) => n === 1 ? "1 post" : n + " posts")`.
30
+ */
31
+ export declare function countFilterOptions(groups: FilterPanelGroup[], items: {
32
+ facets: FilterFacets;
33
+ }[], label?: (count: number) => string): FilterPanelGroup[];
34
+ export interface UseFilterSelectionOptions {
35
+ /** The filters on when the page opens — for example `{ topic: ["guides"] }` from /blog?topic=guides. */
36
+ defaultSelection?: FilterSelection;
37
+ /** The filters on, when the app holds them — for example in the URL. Pass with `onSelectionChange`. */
38
+ selection?: FilterSelection;
39
+ /** Every change: an option on or off, or Clear all. */
40
+ onSelectionChange?: (selection: FilterSelection) => void;
41
+ }
42
+ /** The page's filter state: its own (from `defaultSelection`), or the app's (`selection` + `onSelectionChange`). */
43
+ export declare function useFilterSelection({ defaultSelection, selection: selectionProp, onSelectionChange, }?: UseFilterSelectionOptions): [FilterSelection, (selection: FilterSelection) => void];
44
+ //# sourceMappingURL=filterSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterSelection.d.ts","sourceRoot":"","sources":["../../../../src/components/organisms/FilterPanel/filterSelection.ts"],"names":[],"mappings":"AAEA,0HAA0H;AAC1H,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;AAE7D,uFAAuF;AACvF,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAGjF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAKhG;AAED,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAEvE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,KAAK,EAAE;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,EAAE,EACjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAChC,gBAAgB,EAAE,CAQpB;AAED,MAAM,WAAW,yBAAyB;IACxC,wGAAwG;IACxG,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,uGAAuG;IACvG,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;CAC1D;AAED,oHAAoH;AACpH,wBAAgB,kBAAkB,CAAC,EACjC,gBAAgB,EAChB,SAAS,EAAE,aAAa,EACxB,iBAAiB,GAClB,GAAE,yBAA8B,GAAG,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC,CAS1F"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { useState as e } from "react";
3
+ //#region src/components/organisms/FilterPanel/filterSelection.ts
4
+ function t(e, t) {
5
+ let n = e[t];
6
+ return n == null ? [] : Array.isArray(n) ? n : [n];
7
+ }
8
+ function n(e, n) {
9
+ return Object.entries(n).every(([n, r]) => r.length === 0 || t(e, n).some((e) => r.includes(e)));
10
+ }
11
+ function r(e) {
12
+ return Object.values(e).reduce((e, t) => e + t.length, 0);
13
+ }
14
+ function i(e, n, r) {
15
+ return e.map((e) => ({
16
+ ...e,
17
+ options: e.options.map((i) => {
18
+ let a = n.filter((n) => t(n.facets, e.id).includes(i.value)).length;
19
+ return {
20
+ ...i,
21
+ count: a,
22
+ countLabel: r?.(a) ?? i.countLabel
23
+ };
24
+ })
25
+ }));
26
+ }
27
+ function a({ defaultSelection: t, selection: n, onSelectionChange: r } = {}) {
28
+ let [i, a] = e(t ?? {});
29
+ function o(e) {
30
+ n ?? a(e), r?.(e);
31
+ }
32
+ return [n ?? i, o];
33
+ }
34
+ //#endregion
35
+ export { i as countFilterOptions, t as filterFacetValues, r as filterSelectionCount, n as matchesFilterSelection, a as useFilterSelection };
package/dist/index.d.ts CHANGED
@@ -34,6 +34,7 @@ export { FloatingActionButton, type FloatingActionButtonItem, type FloatingActio
34
34
  export { HeroIntro, heroIntroSteps, type HeroIntroLayoutClassName, type HeroIntroProps, type HeroIntroStep, } from "./components/molecules/HeroIntro/HeroIntro";
35
35
  export { IndexList, indexListSizes, indexListTitleElements, type IndexListCaptions, type IndexListItemProps, type IndexListLayoutClassName, type IndexListProps, type IndexListSize, type IndexListTitleElement, } from "./components/molecules/IndexList/IndexList";
36
36
  export { IntakeForm, intakeAboutEmpty, intakeDetailsMax, isIntakeAboutValid, isIntakeUrlValid, type IntakeAboutValues, type IntakeFormLayoutClassName, type IntakeFormProps, } from "./components/molecules/IntakeForm/IntakeForm";
37
+ export { LinkTile, linkTileLoadingRatio, type LinkTileLayoutClassName, type LinkTileProps, } from "./components/molecules/LinkTile/LinkTile";
37
38
  export { NavList, navListLabelAlignments, type NavListIcon, type NavListItemDef, type NavListItemProps, type NavListLabelAlignment, type NavListLayoutClassName, type NavListProps, type NavListSectionDef, type NavListSectionProps, } from "./components/molecules/NavList/NavList";
38
39
  export { PageHeader, pageHeaderAppBandHeightClasses, pageHeaderVariants, type PageHeaderLayoutClassName, type PageHeaderProps, type PageHeaderVariant, } from "./components/molecules/PageHeader/PageHeader";
39
40
  export { PillGroup, pillGroupEmphases, type PillGroupEmphasis, type PillGroupItemProps, type PillGroupLayoutClassName, type PillGroupProps, } from "./components/molecules/PillGroup/PillGroup";
@@ -47,6 +48,7 @@ export { Stat, statGroupColumns, statGroupGridClasses, statSizes, statTrendDirec
47
48
  export { StepProgress, isStepProgressSegmentFilled, stepProgressLabel, type StepProgressLayoutClassName, type StepProgressProps, } from "./components/molecules/StepProgress/StepProgress";
48
49
  export { TaskRows, taskRowStatuses, taskRowsDetailLayouts, taskRowsDetailVariants, taskRowsVariants, type TaskRowStatus, type TaskRowsDetailLayout, type TaskRowsDetailProps, type TaskRowsDetailVariant, type TaskRowsItemProps, type TaskRowsLabels, type TaskRowsLayoutClassName, type TaskRowsProps, type TaskRowsVariant, } from "./components/molecules/TaskRows/TaskRows";
49
50
  export { TextSequence, sequencePlainText, textSequenceDefaultDelay, textSequenceDefaultStagger, textSequenceEmphases, textSequenceShapeTones, textSequenceShapeVariants, textSequenceTriggers, type TextSequenceEmphasis, type TextSequenceLayoutClassName, type TextSequenceProps, type TextSequenceShapeLayoutClassName, type TextSequenceShapeProps, type TextSequenceShapeTone, type TextSequenceShapeVariant, type TextSequenceTrigger, } from "./components/molecules/TextSequence/TextSequence";
51
+ export { TileGrid, tileGridBreakpoints, tileGridDefaultColumns, tileGridLayouts, type TileGridBreakpoint, type TileGridColumns, type TileGridItemProps, type TileGridLayout, type TileGridLayoutClassName, type TileGridProps, } from "./components/molecules/TileGrid/TileGrid";
50
52
  export { Carousel, carouselBreakpoints, carouselDefaultItemWidth, carouselProgressPlacements, type CarouselBreakpoint, type CarouselItemProps, type CarouselItemWidth, type CarouselLabels, type CarouselLayoutClassName, type CarouselProgressPlacement, type CarouselProps, } from "./components/organisms/Carousel/Carousel";
51
53
  export { Chart, ChartCartesian, ChartCartesianNoData, ChartDistributionStrip, ChartHeatmap, ChartLoading, ChartLegend, ChartRankedBars, ChartTooltipContent, ChartUnitGrid, chartCartesianDefinedSegments, chartCartesianGapBands, chartCartesianGapRuns, chartCartesianHasPlottableValues, chartCartesianNoDataLabelDefault, chartFormatPercent, isChartCartesianNumber, isChartCartesianSeriesDefined, resolveChartCartesianGapKeys, resolveChartCartesianNoData, chartKpiHeroRowClasses, chartKpiHeroValueClasses, chartKpiTrendLabelClasses, chartKpiTrendRowClasses, chartKpiTrendValueClasses, chartMaxTicksForWidth, chartSegmentBarWidth, chartSegmentFillVariants, chartSegmentPresets, chartSegmentTickSpec, resolveCapacityBarLayout, resolveSegmentBarConfig, type ChartLayoutClassName, type ChartDistributionItem, type ChartDistributionReference, type ChartDistributionStripLayoutClassName, type ChartDistributionStripProps, type ChartHeatmapAxisItem, type ChartHeatmapCell, type ChartHeatmapLayoutClassName, type ChartHeatmapProps, type ChartRankedBarItem, type ChartRankedBarsAnimate, type ChartRankedBarsLayoutClassName, type ChartRankedBarsProps, type ChartSegmentFillVariant, type ChartSegmentPreset, type ChartSegmentedBarProps, type ChartTone, type ChartUnitGridLayoutClassName, type ChartUnitGridPart, type ChartUnitGridProps, } from "./components/organisms/Chart/Chart";
52
54
  export { ChatDock, ChatDockGate, chatDockDefaultLabels, chatDockFollowUpsPlacements, chatDockGateDefaultLabels, chatDockPlacements, type ChatDockFeedback, type ChatDockFollowUpsPlacement, type ChatDockGateLabels, type ChatDockGateProps, type ChatDockLabels, type ChatDockLayoutClassName, type ChatDockMessage, type ChatDockMessageMeta, type ChatDockPlacement, type ChatDockProps, type ChatDockSuggestion, } from "./components/organisms/ChatDock/ChatDock";
@@ -58,6 +60,7 @@ export { dialogFooterActionsClasses, dialogFooterClasses, } from "./components/o
58
60
  export { Panel, panelSides, panelSizes, type PanelContentProps, type PanelLayoutClassName, type PanelProps, type PanelSide, type PanelSize, } from "./components/organisms/Panel/Panel";
59
61
  export { Sheet, sheetSides, sheetSizes, type SheetContentProps, type SheetLayoutClassName, type SheetProps, type SheetSide, type SheetSize, } from "./components/organisms/Sheet/Sheet";
60
62
  export { SiteNav, siteNavCompactLayouts, siteNavDefaultCollapseAt, siteNavDefaultCollapseRatio, siteNavExpandedHeightClasses, siteNavMenuReadRowClasses, siteNavMenuReadThumbClasses, siteNavPlacements, siteNavStates, type SiteNavBrandProps, type SiteNavCompactLayout, type SiteNavFeaturedProps, type SiteNavLinkProps, type SiteNavLinksProps, type SiteNavMenuLinkProps, type SiteNavMenuMediaProps, type SiteNavMenuProps, type SiteNavMenuSectionProps, type SiteNavMobileLinkProps, type SiteNavPlacement, type SiteNavProps, type SiteNavReadRowProps, type SiteNavState, } from "./components/organisms/SiteNav/SiteNav";
63
+ export { FilterPanel, countFilterOptions, filterFacetValues, filterSelectionCount, matchesFilterSelection, useFilterSelection, type FilterFacets, type FilterPanelGroup, type FilterPanelLabels, type FilterPanelLayoutClassName, type FilterPanelOption, type FilterPanelProps, type FilterPanelRailProps, type FilterPanelTriggerProps, type FilterSelection, type UseFilterSelectionOptions, } from "./components/organisms/FilterPanel/FilterPanel";
61
64
  export { FooterReveal, useFooterRevealProgress, footerRevealFieldClasses, footerRevealFieldLinkClasses, footerRevealRuledEmailHref, footerRevealRuledFieldClasses, type FooterRevealBrandProps, type FooterRevealContentProps, type FooterRevealFooterProps, type FooterRevealLayoutClassName, type FooterRevealProps, type FooterRevealRuledLink, type FooterRevealRuledProps, type FooterRevealSocialLink, } from "./components/organisms/FooterReveal/FooterReveal";
62
65
  export { HeroTileStack, heroTileRepel, heroTileRestingLayout, heroTileStackDefaultFalloff, heroTileStackDefaultMaxVertical, heroTileStackDefaultSpring, heroTileStackDefaultStrength, heroTileStackDefaultTileSize, heroTileStackDefaultVelocityFactor, heroTileStackReferenceSize, heroTileStackSizeScale, heroTileStackTapHoldMs, heroTileStackVelocityXShare, heroTileVelocityY, type HeroTileRepel, type HeroTileRepelInput, type HeroTileRestingLayout, type HeroTileStackLayoutClassName, type HeroTileStackProps, type HeroTileStackSpring, type HeroTileStackTile, type HeroTileVelocityInput, } from "./components/organisms/HeroTileStack/HeroTileStack";
63
66
  export { IntakeConfirmation, intakeConfirmationCopy, intakeConfirmationVariants, intakeConfettiColors, type IntakeConfirmationLayoutClassName, type IntakeConfirmationProps, type IntakeConfirmationVariant, } from "./components/organisms/IntakeConfirmation/IntakeConfirmation";