@thewhatmatters/wmds 0.4.6 → 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.
- package/CHANGELOG.md +52 -0
- package/CONSUMING.md +4 -0
- package/README.md +2 -2
- package/dist/components/molecules/LinkTile/LinkTile.d.ts +45 -0
- package/dist/components/molecules/LinkTile/LinkTile.d.ts.map +1 -0
- package/dist/components/molecules/LinkTile/LinkTile.js +115 -0
- package/dist/components/molecules/LinkTile/linkTileStyles.d.ts +31 -0
- package/dist/components/molecules/LinkTile/linkTileStyles.d.ts.map +1 -0
- package/dist/components/molecules/LinkTile/linkTileStyles.js +8 -0
- package/dist/components/molecules/TileGrid/TileGrid.d.ts +42 -0
- package/dist/components/molecules/TileGrid/TileGrid.d.ts.map +1 -0
- package/dist/components/molecules/TileGrid/TileGrid.js +94 -0
- package/dist/components/molecules/TileGrid/tileGridMath.d.ts +8 -0
- package/dist/components/molecules/TileGrid/tileGridMath.d.ts.map +1 -0
- package/dist/components/molecules/TileGrid/tileGridMath.js +20 -0
- package/dist/components/molecules/TileGrid/tileGridStyles.d.ts +33 -0
- package/dist/components/molecules/TileGrid/tileGridStyles.d.ts.map +1 -0
- package/dist/components/molecules/TileGrid/tileGridStyles.js +16 -0
- package/dist/components/organisms/Carousel/Carousel.d.ts +58 -0
- package/dist/components/organisms/Carousel/Carousel.d.ts.map +1 -0
- package/dist/components/organisms/Carousel/Carousel.js +310 -0
- package/dist/components/organisms/Carousel/carouselMath.d.ts +39 -0
- package/dist/components/organisms/Carousel/carouselMath.d.ts.map +1 -0
- package/dist/components/organisms/Carousel/carouselMath.js +47 -0
- package/dist/components/organisms/Carousel/carouselStyles.d.ts +49 -0
- package/dist/components/organisms/Carousel/carouselStyles.d.ts.map +1 -0
- package/dist/components/organisms/Carousel/carouselStyles.js +25 -0
- package/dist/components/organisms/Dialog/Dialog.d.ts +12 -2
- package/dist/components/organisms/Dialog/Dialog.d.ts.map +1 -1
- package/dist/components/organisms/Dialog/Dialog.js +46 -44
- package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts +3 -1
- package/dist/components/organisms/Dialog/OverlayPanelHeader.d.ts.map +1 -1
- package/dist/components/organisms/Dialog/OverlayPanelHeader.js +20 -17
- package/dist/components/organisms/Dialog/dialogStyles.d.ts +5 -1
- package/dist/components/organisms/Dialog/dialogStyles.d.ts.map +1 -1
- package/dist/components/organisms/Dialog/dialogStyles.js +13 -11
- package/dist/components/organisms/FilterPanel/FilterPanel.d.ts +54 -0
- package/dist/components/organisms/FilterPanel/FilterPanel.d.ts.map +1 -0
- package/dist/components/organisms/FilterPanel/FilterPanel.js +137 -0
- package/dist/components/organisms/FilterPanel/filterSelection.d.ts +44 -0
- package/dist/components/organisms/FilterPanel/filterSelection.d.ts.map +1 -0
- package/dist/components/organisms/FilterPanel/filterSelection.js +35 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -65
- package/dist/lib/compositionAudit.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/docs/components.md +8 -4
- package/docs/exports.json +56 -3
- package/docs/patterns/components-accordion--flush.tsx +1 -1
- package/docs/patterns/components-avatar--dropdown-row.tsx +1 -1
- package/docs/patterns/components-badge--outline-tags.tsx +1 -1
- package/docs/patterns/components-badge--with-avatar.tsx +1 -1
- package/docs/patterns/components-breadcrumb--editorial.tsx +1 -1
- package/docs/patterns/components-breadcrumb--long-path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--path.tsx +1 -1
- package/docs/patterns/components-breadcrumb--router-links.tsx +1 -1
- package/docs/patterns/components-button-button--copy-button.tsx +1 -1
- package/docs/patterns/components-button-button--destructive-action.tsx +1 -1
- package/docs/patterns/components-button-button--external-link.tsx +1 -1
- package/docs/patterns/components-button-button--ghost-action.tsx +1 -1
- package/docs/patterns/components-button-button--inverse-action.tsx +1 -1
- package/docs/patterns/components-button-button--link-render.tsx +1 -1
- package/docs/patterns/components-button-button--multi-state-badge.tsx +1 -1
- package/docs/patterns/components-button-button--outline-mono.tsx +1 -1
- package/docs/patterns/components-button-button--primary-action.tsx +1 -1
- package/docs/patterns/components-button-button--row-hug.tsx +1 -1
- package/docs/patterns/components-button-button--row-layout.tsx +1 -1
- package/docs/patterns/components-button-button--secondary-action.tsx +1 -1
- package/docs/patterns/components-button-button--suggestion-pills.tsx +1 -1
- package/docs/patterns/components-button-button--with-count.tsx +1 -1
- package/docs/patterns/components-button-button--with-icon.tsx +1 -1
- package/docs/patterns/components-button-floatingactionbutton--vertical-actions.tsx +1 -1
- package/docs/patterns/components-calembed--pattern-skip-in-footer.tsx +1 -1
- package/docs/patterns/components-card-card--body-slot-occupancy-history.tsx +1 -1
- package/docs/patterns/components-card-card--headerless-media.tsx +1 -1
- package/docs/patterns/components-card-card--outlined-layout.tsx +1 -1
- package/docs/patterns/components-card-card--pinned-height.tsx +1 -1
- package/docs/patterns/components-card-selectablecard--selectable-cards-pattern.tsx +1 -1
- package/docs/patterns/components-carousel--image-carousel.tsx +30 -0
- package/docs/patterns/components-chart--audience-activity-heatmap.tsx +1 -1
- package/docs/patterns/components-chart--cartesian-no-data-gaps.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-history-in-card.tsx +1 -1
- package/docs/patterns/components-chart--occupancy-in-card.tsx +1 -1
- package/docs/patterns/components-chart--post-reach-distribution.tsx +1 -1
- package/docs/patterns/components-chart--ranked-audience-breakdown.tsx +1 -1
- package/docs/patterns/components-chart--unit-grid-composition.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-chat-dock.tsx +1 -1
- package/docs/patterns/components-chatdock--pattern-start-project-gate.tsx +1 -1
- package/docs/patterns/components-chatqa--pattern-qa-with-reply.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-count.tsx +1 -1
- package/docs/patterns/components-checkbox-checkbox--with-description.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--default.tsx +1 -1
- package/docs/patterns/components-checkbox-checkboxgroup--option-counts.tsx +1 -1
- package/docs/patterns/components-descriptionlist--details.tsx +1 -1
- package/docs/patterns/components-descriptionlist--post-metadata.tsx +1 -1
- package/docs/patterns/components-dialog--alert-dialog-destructive.tsx +1 -1
- package/docs/patterns/components-dialog--default-dialog.tsx +1 -1
- package/docs/patterns/components-dialog--form-dialog.tsx +1 -1
- package/docs/patterns/components-displaycontrols--page-utilities.tsx +1 -1
- package/docs/patterns/components-field--horizontal-input.tsx +1 -1
- package/docs/patterns/components-field--horizontal-text-area.tsx +1 -1
- package/docs/patterns/components-field--multi-control.tsx +1 -1
- package/docs/patterns/components-filterpanel--panel.tsx +55 -0
- package/docs/patterns/components-footerreveal--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-ruled-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-footerreveal--marketing-page-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--ruled-grid-footer-pattern.tsx +1 -1
- package/docs/patterns/components-footerreveal--sequenced-marketing-hero.tsx +1 -1
- package/docs/patterns/components-herointro--two-line-intro.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-pattern.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-text-sequence.tsx +1 -1
- package/docs/patterns/components-herotilestack--marketing-hero-with-gallery-intro.tsx +1 -1
- package/docs/patterns/components-indexlist--post-index.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--booked-pattern.tsx +1 -1
- package/docs/patterns/components-intakeconfirmation--emailed-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--about-you-pattern.tsx +1 -1
- package/docs/patterns/components-intakeform--short-form-pattern.tsx +1 -1
- package/docs/patterns/components-intakemodal--intake-modal-pattern.tsx +1 -1
- package/docs/patterns/components-kbd--command-row.tsx +1 -1
- package/docs/patterns/components-kbd--numbered-choices.tsx +1 -1
- package/docs/patterns/components-kbd--shortcut.tsx +1 -1
- package/docs/patterns/components-linktile--resource-tile.tsx +33 -0
- package/docs/patterns/components-linktile--router-link.tsx +25 -0
- package/docs/patterns/components-moremenu--action-menu.tsx +1 -1
- package/docs/patterns/components-moremenu--in-card-header.tsx +1 -1
- package/docs/patterns/components-navlist--side-nav-settings.tsx +1 -1
- package/docs/patterns/components-pageheader--app-header-pattern.tsx +1 -1
- package/docs/patterns/components-pageheader--page-section-header.tsx +1 -1
- package/docs/patterns/components-pageheader--toolbar-header.tsx +1 -1
- package/docs/patterns/components-panel--end-detail-rail.tsx +1 -1
- package/docs/patterns/components-pillgroup--pill-group-pattern.tsx +1 -1
- package/docs/patterns/components-promptbar--pattern-prompt-bar.tsx +1 -1
- package/docs/patterns/components-prose--article-body.tsx +1 -1
- package/docs/patterns/components-radio-radiogroup--default.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--project-gallery-pattern.tsx +1 -1
- package/docs/patterns/components-scrollhorizontal--with-intro.tsx +1 -1
- package/docs/patterns/components-sectioncaption--column-caption.tsx +1 -1
- package/docs/patterns/components-sectioncaption--with-action.tsx +1 -1
- package/docs/patterns/components-sheet--bottom-sheet.tsx +1 -1
- package/docs/patterns/components-sheet--end-sheet.tsx +1 -1
- package/docs/patterns/components-sitenav--brand-and-cta.tsx +1 -1
- package/docs/patterns/components-sitenav--centered-links.tsx +1 -1
- package/docs/patterns/components-sitenav--compact.tsx +1 -1
- package/docs/patterns/components-sitenav--marketing-header.tsx +1 -1
- package/docs/patterns/components-sitenav--mega-menu.tsx +1 -1
- package/docs/patterns/components-stat--insights-row.tsx +1 -1
- package/docs/patterns/components-stepprogress--step-progress-pattern.tsx +1 -1
- package/docs/patterns/components-switch--default.tsx +1 -1
- package/docs/patterns/components-switch--settings-row.tsx +1 -1
- package/docs/patterns/components-tab--settings-pages.tsx +1 -1
- package/docs/patterns/components-taskrows--action-details.tsx +1 -1
- package/docs/patterns/components-taskrows--capsules.tsx +1 -1
- package/docs/patterns/components-taskrows--card-with-status-rows.tsx +1 -1
- package/docs/patterns/components-taskrows--controlled-expand.tsx +1 -1
- package/docs/patterns/components-taskrows--custom-slots.tsx +1 -1
- package/docs/patterns/components-taskrows--status-list.tsx +1 -1
- package/docs/patterns/components-taskrows--tag-chips.tsx +1 -1
- package/docs/patterns/components-textlink--external-destination.tsx +1 -1
- package/docs/patterns/components-textlink--inline-prose.tsx +1 -1
- package/docs/patterns/components-textlink--quiet-title.tsx +1 -1
- package/docs/patterns/components-textlink--supporting-copy.tsx +1 -1
- package/docs/patterns/components-textsequence--default.tsx +1 -1
- package/docs/patterns/components-textsequence--reduced-motion.tsx +1 -1
- package/docs/patterns/components-textsequence--shapes.tsx +1 -1
- package/docs/patterns/components-tilegrid--masonry.tsx +44 -0
- package/docs/patterns/components-toast--stacked-notifications.tsx +1 -1
- package/docs/patterns/components-tooltip--controlled.tsx +1 -1
- package/docs/patterns/components-tooltip--disabled-control.tsx +1 -1
- package/docs/patterns/components-tooltip--icon-action.tsx +1 -1
- package/docs/patterns/components-tooltip--keyboard-shortcut.tsx +1 -1
- package/docs/patterns/components-tooltip--placement.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--horizontal-rail.tsx +1 -1
- package/docs/patterns/foundations-scroll-fade--overflowing-list.tsx +1 -1
- package/docs/patterns/guides-chart-explorations--comparison-gallery.tsx +1 -1
- package/docs/patterns/guides-filter-panel--filtered-grid.tsx +182 -0
- package/docs/patterns/guides-filter-panel--filtered-index.tsx +64 -153
- package/docs/patterns/guides-overlay-flows--notification-preferences.tsx +1 -1
- package/docs/patterns/guides-post-page--post-page.tsx +98 -54
- package/docs/patterns/guides-profile-typography--editorial-profile.tsx +1 -1
- package/docs/patterns/guides-resource-detail--detail.tsx +261 -0
- package/docs/patterns/index.json +57 -1
- 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:
|
|
15
|
-
let { open:
|
|
16
|
-
|
|
17
|
-
}, [
|
|
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 (!
|
|
20
|
-
|
|
21
|
-
let e = m(), t =
|
|
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,
|
|
23
|
+
p(t, s);
|
|
24
24
|
})), () => {
|
|
25
|
-
n(), e(),
|
|
25
|
+
n(), e(), O.current?.focus?.();
|
|
26
26
|
};
|
|
27
27
|
}, [
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
s,
|
|
29
|
+
u,
|
|
30
|
+
v
|
|
31
31
|
]), b(() => {
|
|
32
|
-
if (!
|
|
32
|
+
if (!u || !g) return;
|
|
33
33
|
function e(e) {
|
|
34
|
-
e.key === "Escape" && (e.preventDefault(),
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
k,
|
|
41
|
+
g,
|
|
42
|
+
u
|
|
43
43
|
]);
|
|
44
|
-
function
|
|
45
|
-
if (!
|
|
44
|
+
function A(e) {
|
|
45
|
+
if (!f) return;
|
|
46
46
|
let t = e.target;
|
|
47
|
-
|
|
47
|
+
D.current?.contains(t) || k();
|
|
48
48
|
}
|
|
49
|
-
return typeof document > "u" ? null : E(/* @__PURE__ */ S(w, { children:
|
|
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:
|
|
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:
|
|
61
|
-
className: "relative z-[1] flex w-full justify-center",
|
|
62
|
-
role:
|
|
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":
|
|
65
|
-
"aria-describedby":
|
|
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:
|
|
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,
|
|
117
|
-
let { titleId:
|
|
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":
|
|
121
|
-
"aria-describedby":
|
|
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:
|
|
125
|
-
className: e(o[
|
|
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:
|
|
129
|
-
descriptionId:
|
|
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: () =>
|
|
137
|
+
onClose: () => w(!1)
|
|
136
138
|
}),
|
|
137
|
-
|
|
139
|
+
A ? /* @__PURE__ */ C("div", {
|
|
138
140
|
className: l,
|
|
139
|
-
children: [!
|
|
140
|
-
id:
|
|
141
|
+
children: [!T && E ? /* @__PURE__ */ S("p", {
|
|
142
|
+
id: x,
|
|
141
143
|
className: "text-muted",
|
|
142
144
|
children: r
|
|
143
|
-
}) : null,
|
|
145
|
+
}) : null, y]
|
|
144
146
|
}) : null,
|
|
145
|
-
|
|
147
|
+
k ? /* @__PURE__ */ S("footer", {
|
|
146
148
|
className: u,
|
|
147
|
-
children:
|
|
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,
|
|
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,
|
|
11
|
-
let
|
|
12
|
-
if (!
|
|
13
|
-
let
|
|
14
|
-
className: e(a,
|
|
15
|
-
start: y != null ||
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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__ */
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
|
44
|
+
return w ? /* @__PURE__ */ f("div", {
|
|
42
45
|
className: e(a, "w-full"),
|
|
43
|
-
children: [
|
|
46
|
+
children: [O, /* @__PURE__ */ d("hr", {
|
|
44
47
|
className: s,
|
|
45
48
|
"aria-hidden": "true"
|
|
46
49
|
})]
|
|
47
|
-
}) :
|
|
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,
|
|
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
|
-
|
|
16
|
-
e(
|
|
17
|
-
|
|
18
|
-
e(b, x);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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 {
|
|
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,8 @@ 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";
|
|
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";
|
|
50
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";
|
|
51
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";
|
|
52
55
|
export { ConfettiProvider, confettiDefaultColors, confettiDefaults, useConfetti, useConfettiOnMount, type ConfettiFireOptions, type ConfettiOrigin, type ConfettiProviderProps, } from "./components/organisms/Confetti/Confetti";
|
|
@@ -57,6 +60,7 @@ export { dialogFooterActionsClasses, dialogFooterClasses, } from "./components/o
|
|
|
57
60
|
export { Panel, panelSides, panelSizes, type PanelContentProps, type PanelLayoutClassName, type PanelProps, type PanelSide, type PanelSize, } from "./components/organisms/Panel/Panel";
|
|
58
61
|
export { Sheet, sheetSides, sheetSizes, type SheetContentProps, type SheetLayoutClassName, type SheetProps, type SheetSide, type SheetSize, } from "./components/organisms/Sheet/Sheet";
|
|
59
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";
|
|
60
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";
|
|
61
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";
|
|
62
66
|
export { IntakeConfirmation, intakeConfirmationCopy, intakeConfirmationVariants, intakeConfettiColors, type IntakeConfirmationLayoutClassName, type IntakeConfirmationProps, type IntakeConfirmationVariant, } from "./components/organisms/IntakeConfirmation/IntakeConfirmation";
|